var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __commonJS = (cb, mod) => function __require() {
  return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
};
var __copyProps = (to, from, except, desc) => {
  if (from && typeof from === "object" || typeof from === "function") {
    for (let key of __getOwnPropNames(from))
      if (!__hasOwnProp.call(to, key) && key !== except)
        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
  }
  return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
  // If the importer is in node compatibility mode or this is not an ESM
  // file that has been converted to a CommonJS file using a Babel-
  // compatible transform (i.e. "__esModule" has not been set), then set
  // "default" to the CommonJS "module.exports" for node compatibility.
  isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
  mod
));

// node_modules/react/cjs/react.development.js
var require_react_development = __commonJS({
  "node_modules/react/cjs/react.development.js"(exports2, module2) {
    "use strict";
    if (true) {
      (function() {
        "use strict";
        if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== "undefined" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart === "function") {
          __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());
        }
        var ReactVersion = "18.3.1";
        var REACT_ELEMENT_TYPE = Symbol.for("react.element");
        var REACT_PORTAL_TYPE = Symbol.for("react.portal");
        var REACT_FRAGMENT_TYPE = Symbol.for("react.fragment");
        var REACT_STRICT_MODE_TYPE = Symbol.for("react.strict_mode");
        var REACT_PROFILER_TYPE = Symbol.for("react.profiler");
        var REACT_PROVIDER_TYPE = Symbol.for("react.provider");
        var REACT_CONTEXT_TYPE = Symbol.for("react.context");
        var REACT_FORWARD_REF_TYPE = Symbol.for("react.forward_ref");
        var REACT_SUSPENSE_TYPE = Symbol.for("react.suspense");
        var REACT_SUSPENSE_LIST_TYPE = Symbol.for("react.suspense_list");
        var REACT_MEMO_TYPE = Symbol.for("react.memo");
        var REACT_LAZY_TYPE = Symbol.for("react.lazy");
        var REACT_OFFSCREEN_TYPE = Symbol.for("react.offscreen");
        var MAYBE_ITERATOR_SYMBOL = Symbol.iterator;
        var FAUX_ITERATOR_SYMBOL = "@@iterator";
        function getIteratorFn(maybeIterable) {
          if (maybeIterable === null || typeof maybeIterable !== "object") {
            return null;
          }
          var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];
          if (typeof maybeIterator === "function") {
            return maybeIterator;
          }
          return null;
        }
        var ReactCurrentDispatcher = {
          /**
           * @internal
           * @type {ReactComponent}
           */
          current: null
        };
        var ReactCurrentBatchConfig = {
          transition: null
        };
        var ReactCurrentActQueue = {
          current: null,
          // Used to reproduce behavior of `batchedUpdates` in legacy mode.
          isBatchingLegacy: false,
          didScheduleLegacyUpdate: false
        };
        var ReactCurrentOwner = {
          /**
           * @internal
           * @type {ReactComponent}
           */
          current: null
        };
        var ReactDebugCurrentFrame = {};
        var currentExtraStackFrame = null;
        function setExtraStackFrame(stack) {
          {
            currentExtraStackFrame = stack;
          }
        }
        {
          ReactDebugCurrentFrame.setExtraStackFrame = function(stack) {
            {
              currentExtraStackFrame = stack;
            }
          };
          ReactDebugCurrentFrame.getCurrentStack = null;
          ReactDebugCurrentFrame.getStackAddendum = function() {
            var stack = "";
            if (currentExtraStackFrame) {
              stack += currentExtraStackFrame;
            }
            var impl = ReactDebugCurrentFrame.getCurrentStack;
            if (impl) {
              stack += impl() || "";
            }
            return stack;
          };
        }
        var enableScopeAPI = false;
        var enableCacheElement = false;
        var enableTransitionTracing = false;
        var enableLegacyHidden = false;
        var enableDebugTracing = false;
        var ReactSharedInternals = {
          ReactCurrentDispatcher,
          ReactCurrentBatchConfig,
          ReactCurrentOwner
        };
        {
          ReactSharedInternals.ReactDebugCurrentFrame = ReactDebugCurrentFrame;
          ReactSharedInternals.ReactCurrentActQueue = ReactCurrentActQueue;
        }
        function warn(format) {
          {
            {
              for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
                args[_key - 1] = arguments[_key];
              }
              printWarning("warn", format, args);
            }
          }
        }
        function error(format) {
          {
            {
              for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
                args[_key2 - 1] = arguments[_key2];
              }
              printWarning("error", format, args);
            }
          }
        }
        function printWarning(level, format, args) {
          {
            var ReactDebugCurrentFrame2 = ReactSharedInternals.ReactDebugCurrentFrame;
            var stack = ReactDebugCurrentFrame2.getStackAddendum();
            if (stack !== "") {
              format += "%s";
              args = args.concat([stack]);
            }
            var argsWithFormat = args.map(function(item) {
              return String(item);
            });
            argsWithFormat.unshift("Warning: " + format);
            Function.prototype.apply.call(console[level], console, argsWithFormat);
          }
        }
        var didWarnStateUpdateForUnmountedComponent = {};
        function warnNoop(publicInstance, callerName) {
          {
            var _constructor = publicInstance.constructor;
            var componentName = _constructor && (_constructor.displayName || _constructor.name) || "ReactClass";
            var warningKey = componentName + "." + callerName;
            if (didWarnStateUpdateForUnmountedComponent[warningKey]) {
              return;
            }
            error("Can't call %s on a component that is not yet mounted. This is a no-op, but it might indicate a bug in your application. Instead, assign to `this.state` directly or define a `state = {};` class property with the desired state in the %s component.", callerName, componentName);
            didWarnStateUpdateForUnmountedComponent[warningKey] = true;
          }
        }
        var ReactNoopUpdateQueue = {
          /**
           * Checks whether or not this composite component is mounted.
           * @param {ReactClass} publicInstance The instance we want to test.
           * @return {boolean} True if mounted, false otherwise.
           * @protected
           * @final
           */
          isMounted: function(publicInstance) {
            return false;
          },
          /**
           * Forces an update. This should only be invoked when it is known with
           * certainty that we are **not** in a DOM transaction.
           *
           * You may want to call this when you know that some deeper aspect of the
           * component's state has changed but `setState` was not called.
           *
           * This will not invoke `shouldComponentUpdate`, but it will invoke
           * `componentWillUpdate` and `componentDidUpdate`.
           *
           * @param {ReactClass} publicInstance The instance that should rerender.
           * @param {?function} callback Called after component is updated.
           * @param {?string} callerName name of the calling function in the public API.
           * @internal
           */
          enqueueForceUpdate: function(publicInstance, callback, callerName) {
            warnNoop(publicInstance, "forceUpdate");
          },
          /**
           * Replaces all of the state. Always use this or `setState` to mutate state.
           * You should treat `this.state` as immutable.
           *
           * There is no guarantee that `this.state` will be immediately updated, so
           * accessing `this.state` after calling this method may return the old value.
           *
           * @param {ReactClass} publicInstance The instance that should rerender.
           * @param {object} completeState Next state.
           * @param {?function} callback Called after component is updated.
           * @param {?string} callerName name of the calling function in the public API.
           * @internal
           */
          enqueueReplaceState: function(publicInstance, completeState, callback, callerName) {
            warnNoop(publicInstance, "replaceState");
          },
          /**
           * Sets a subset of the state. This only exists because _pendingState is
           * internal. This provides a merging strategy that is not available to deep
           * properties which is confusing. TODO: Expose pendingState or don't use it
           * during the merge.
           *
           * @param {ReactClass} publicInstance The instance that should rerender.
           * @param {object} partialState Next partial state to be merged with state.
           * @param {?function} callback Called after component is updated.
           * @param {?string} Name of the calling function in the public API.
           * @internal
           */
          enqueueSetState: function(publicInstance, partialState, callback, callerName) {
            warnNoop(publicInstance, "setState");
          }
        };
        var assign = Object.assign;
        var emptyObject = {};
        {
          Object.freeze(emptyObject);
        }
        function Component(props, context, updater) {
          this.props = props;
          this.context = context;
          this.refs = emptyObject;
          this.updater = updater || ReactNoopUpdateQueue;
        }
        Component.prototype.isReactComponent = {};
        Component.prototype.setState = function(partialState, callback) {
          if (typeof partialState !== "object" && typeof partialState !== "function" && partialState != null) {
            throw new Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");
          }
          this.updater.enqueueSetState(this, partialState, callback, "setState");
        };
        Component.prototype.forceUpdate = function(callback) {
          this.updater.enqueueForceUpdate(this, callback, "forceUpdate");
        };
        {
          var deprecatedAPIs = {
            isMounted: ["isMounted", "Instead, make sure to clean up subscriptions and pending requests in componentWillUnmount to prevent memory leaks."],
            replaceState: ["replaceState", "Refactor your code to use setState instead (see https://github.com/facebook/react/issues/3236)."]
          };
          var defineDeprecationWarning = function(methodName, info) {
            Object.defineProperty(Component.prototype, methodName, {
              get: function() {
                warn("%s(...) is deprecated in plain JavaScript React classes. %s", info[0], info[1]);
                return void 0;
              }
            });
          };
          for (var fnName in deprecatedAPIs) {
            if (deprecatedAPIs.hasOwnProperty(fnName)) {
              defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);
            }
          }
        }
        function ComponentDummy() {
        }
        ComponentDummy.prototype = Component.prototype;
        function PureComponent(props, context, updater) {
          this.props = props;
          this.context = context;
          this.refs = emptyObject;
          this.updater = updater || ReactNoopUpdateQueue;
        }
        var pureComponentPrototype = PureComponent.prototype = new ComponentDummy();
        pureComponentPrototype.constructor = PureComponent;
        assign(pureComponentPrototype, Component.prototype);
        pureComponentPrototype.isPureReactComponent = true;
        function createRef() {
          var refObject = {
            current: null
          };
          {
            Object.seal(refObject);
          }
          return refObject;
        }
        var isArrayImpl = Array.isArray;
        function isArray(a) {
          return isArrayImpl(a);
        }
        function typeName(value) {
          {
            var hasToStringTag = typeof Symbol === "function" && Symbol.toStringTag;
            var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || "Object";
            return type;
          }
        }
        function willCoercionThrow(value) {
          {
            try {
              testStringCoercion(value);
              return false;
            } catch (e) {
              return true;
            }
          }
        }
        function testStringCoercion(value) {
          return "" + value;
        }
        function checkKeyStringCoercion(value) {
          {
            if (willCoercionThrow(value)) {
              error("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.", typeName(value));
              return testStringCoercion(value);
            }
          }
        }
        function getWrappedName(outerType, innerType, wrapperName) {
          var displayName = outerType.displayName;
          if (displayName) {
            return displayName;
          }
          var functionName = innerType.displayName || innerType.name || "";
          return functionName !== "" ? wrapperName + "(" + functionName + ")" : wrapperName;
        }
        function getContextName(type) {
          return type.displayName || "Context";
        }
        function getComponentNameFromType(type) {
          if (type == null) {
            return null;
          }
          {
            if (typeof type.tag === "number") {
              error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.");
            }
          }
          if (typeof type === "function") {
            return type.displayName || type.name || null;
          }
          if (typeof type === "string") {
            return type;
          }
          switch (type) {
            case REACT_FRAGMENT_TYPE:
              return "Fragment";
            case REACT_PORTAL_TYPE:
              return "Portal";
            case REACT_PROFILER_TYPE:
              return "Profiler";
            case REACT_STRICT_MODE_TYPE:
              return "StrictMode";
            case REACT_SUSPENSE_TYPE:
              return "Suspense";
            case REACT_SUSPENSE_LIST_TYPE:
              return "SuspenseList";
          }
          if (typeof type === "object") {
            switch (type.$$typeof) {
              case REACT_CONTEXT_TYPE:
                var context = type;
                return getContextName(context) + ".Consumer";
              case REACT_PROVIDER_TYPE:
                var provider = type;
                return getContextName(provider._context) + ".Provider";
              case REACT_FORWARD_REF_TYPE:
                return getWrappedName(type, type.render, "ForwardRef");
              case REACT_MEMO_TYPE:
                var outerName = type.displayName || null;
                if (outerName !== null) {
                  return outerName;
                }
                return getComponentNameFromType(type.type) || "Memo";
              case REACT_LAZY_TYPE: {
                var lazyComponent = type;
                var payload = lazyComponent._payload;
                var init = lazyComponent._init;
                try {
                  return getComponentNameFromType(init(payload));
                } catch (x) {
                  return null;
                }
              }
            }
          }
          return null;
        }
        var hasOwnProperty = Object.prototype.hasOwnProperty;
        var RESERVED_PROPS = {
          key: true,
          ref: true,
          __self: true,
          __source: true
        };
        var specialPropKeyWarningShown, specialPropRefWarningShown, didWarnAboutStringRefs;
        {
          didWarnAboutStringRefs = {};
        }
        function hasValidRef(config) {
          {
            if (hasOwnProperty.call(config, "ref")) {
              var getter = Object.getOwnPropertyDescriptor(config, "ref").get;
              if (getter && getter.isReactWarning) {
                return false;
              }
            }
          }
          return config.ref !== void 0;
        }
        function hasValidKey(config) {
          {
            if (hasOwnProperty.call(config, "key")) {
              var getter = Object.getOwnPropertyDescriptor(config, "key").get;
              if (getter && getter.isReactWarning) {
                return false;
              }
            }
          }
          return config.key !== void 0;
        }
        function defineKeyPropWarningGetter(props, displayName) {
          var warnAboutAccessingKey = function() {
            {
              if (!specialPropKeyWarningShown) {
                specialPropKeyWarningShown = true;
                error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)", displayName);
              }
            }
          };
          warnAboutAccessingKey.isReactWarning = true;
          Object.defineProperty(props, "key", {
            get: warnAboutAccessingKey,
            configurable: true
          });
        }
        function defineRefPropWarningGetter(props, displayName) {
          var warnAboutAccessingRef = function() {
            {
              if (!specialPropRefWarningShown) {
                specialPropRefWarningShown = true;
                error("%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)", displayName);
              }
            }
          };
          warnAboutAccessingRef.isReactWarning = true;
          Object.defineProperty(props, "ref", {
            get: warnAboutAccessingRef,
            configurable: true
          });
        }
        function warnIfStringRefCannotBeAutoConverted(config) {
          {
            if (typeof config.ref === "string" && ReactCurrentOwner.current && config.__self && ReactCurrentOwner.current.stateNode !== config.__self) {
              var componentName = getComponentNameFromType(ReactCurrentOwner.current.type);
              if (!didWarnAboutStringRefs[componentName]) {
                error('Component "%s" contains the string ref "%s". Support for string refs will be removed in a future major release. This case cannot be automatically converted to an arrow function. We ask you to manually fix this case by using useRef() or createRef() instead. Learn more about using refs safely here: https://reactjs.org/link/strict-mode-string-ref', componentName, config.ref);
                didWarnAboutStringRefs[componentName] = true;
              }
            }
          }
        }
        var ReactElement = function(type, key, ref, self2, source, owner, props) {
          var element = {
            // This tag allows us to uniquely identify this as a React Element
            $$typeof: REACT_ELEMENT_TYPE,
            // Built-in properties that belong on the element
            type,
            key,
            ref,
            props,
            // Record the component responsible for creating this element.
            _owner: owner
          };
          {
            element._store = {};
            Object.defineProperty(element._store, "validated", {
              configurable: false,
              enumerable: false,
              writable: true,
              value: false
            });
            Object.defineProperty(element, "_self", {
              configurable: false,
              enumerable: false,
              writable: false,
              value: self2
            });
            Object.defineProperty(element, "_source", {
              configurable: false,
              enumerable: false,
              writable: false,
              value: source
            });
            if (Object.freeze) {
              Object.freeze(element.props);
              Object.freeze(element);
            }
          }
          return element;
        };
        function createElement2(type, config, children) {
          var propName;
          var props = {};
          var key = null;
          var ref = null;
          var self2 = null;
          var source = null;
          if (config != null) {
            if (hasValidRef(config)) {
              ref = config.ref;
              {
                warnIfStringRefCannotBeAutoConverted(config);
              }
            }
            if (hasValidKey(config)) {
              {
                checkKeyStringCoercion(config.key);
              }
              key = "" + config.key;
            }
            self2 = config.__self === void 0 ? null : config.__self;
            source = config.__source === void 0 ? null : config.__source;
            for (propName in config) {
              if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {
                props[propName] = config[propName];
              }
            }
          }
          var childrenLength = arguments.length - 2;
          if (childrenLength === 1) {
            props.children = children;
          } else if (childrenLength > 1) {
            var childArray = Array(childrenLength);
            for (var i = 0; i < childrenLength; i++) {
              childArray[i] = arguments[i + 2];
            }
            {
              if (Object.freeze) {
                Object.freeze(childArray);
              }
            }
            props.children = childArray;
          }
          if (type && type.defaultProps) {
            var defaultProps = type.defaultProps;
            for (propName in defaultProps) {
              if (props[propName] === void 0) {
                props[propName] = defaultProps[propName];
              }
            }
          }
          {
            if (key || ref) {
              var displayName = typeof type === "function" ? type.displayName || type.name || "Unknown" : type;
              if (key) {
                defineKeyPropWarningGetter(props, displayName);
              }
              if (ref) {
                defineRefPropWarningGetter(props, displayName);
              }
            }
          }
          return ReactElement(type, key, ref, self2, source, ReactCurrentOwner.current, props);
        }
        function cloneAndReplaceKey(oldElement, newKey) {
          var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props);
          return newElement;
        }
        function cloneElement(element, config, children) {
          if (element === null || element === void 0) {
            throw new Error("React.cloneElement(...): The argument must be a React element, but you passed " + element + ".");
          }
          var propName;
          var props = assign({}, element.props);
          var key = element.key;
          var ref = element.ref;
          var self2 = element._self;
          var source = element._source;
          var owner = element._owner;
          if (config != null) {
            if (hasValidRef(config)) {
              ref = config.ref;
              owner = ReactCurrentOwner.current;
            }
            if (hasValidKey(config)) {
              {
                checkKeyStringCoercion(config.key);
              }
              key = "" + config.key;
            }
            var defaultProps;
            if (element.type && element.type.defaultProps) {
              defaultProps = element.type.defaultProps;
            }
            for (propName in config) {
              if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {
                if (config[propName] === void 0 && defaultProps !== void 0) {
                  props[propName] = defaultProps[propName];
                } else {
                  props[propName] = config[propName];
                }
              }
            }
          }
          var childrenLength = arguments.length - 2;
          if (childrenLength === 1) {
            props.children = children;
          } else if (childrenLength > 1) {
            var childArray = Array(childrenLength);
            for (var i = 0; i < childrenLength; i++) {
              childArray[i] = arguments[i + 2];
            }
            props.children = childArray;
          }
          return ReactElement(element.type, key, ref, self2, source, owner, props);
        }
        function isValidElement(object) {
          return typeof object === "object" && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;
        }
        var SEPARATOR = ".";
        var SUBSEPARATOR = ":";
        function escape(key) {
          var escapeRegex = /[=:]/g;
          var escaperLookup = {
            "=": "=0",
            ":": "=2"
          };
          var escapedString = key.replace(escapeRegex, function(match) {
            return escaperLookup[match];
          });
          return "$" + escapedString;
        }
        var didWarnAboutMaps = false;
        var userProvidedKeyEscapeRegex = /\/+/g;
        function escapeUserProvidedKey(text) {
          return text.replace(userProvidedKeyEscapeRegex, "$&/");
        }
        function getElementKey(element, index) {
          if (typeof element === "object" && element !== null && element.key != null) {
            {
              checkKeyStringCoercion(element.key);
            }
            return escape("" + element.key);
          }
          return index.toString(36);
        }
        function mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {
          var type = typeof children;
          if (type === "undefined" || type === "boolean") {
            children = null;
          }
          var invokeCallback = false;
          if (children === null) {
            invokeCallback = true;
          } else {
            switch (type) {
              case "string":
              case "number":
                invokeCallback = true;
                break;
              case "object":
                switch (children.$$typeof) {
                  case REACT_ELEMENT_TYPE:
                  case REACT_PORTAL_TYPE:
                    invokeCallback = true;
                }
            }
          }
          if (invokeCallback) {
            var _child = children;
            var mappedChild = callback(_child);
            var childKey = nameSoFar === "" ? SEPARATOR + getElementKey(_child, 0) : nameSoFar;
            if (isArray(mappedChild)) {
              var escapedChildKey = "";
              if (childKey != null) {
                escapedChildKey = escapeUserProvidedKey(childKey) + "/";
              }
              mapIntoArray(mappedChild, array, escapedChildKey, "", function(c) {
                return c;
              });
            } else if (mappedChild != null) {
              if (isValidElement(mappedChild)) {
                {
                  if (mappedChild.key && (!_child || _child.key !== mappedChild.key)) {
                    checkKeyStringCoercion(mappedChild.key);
                  }
                }
                mappedChild = cloneAndReplaceKey(
                  mappedChild,
                  // Keep both the (mapped) and old keys if they differ, just as
                  // traverseAllChildren used to do for objects as children
                  escapedPrefix + // $FlowFixMe Flow incorrectly thinks React.Portal doesn't have a key
                  (mappedChild.key && (!_child || _child.key !== mappedChild.key) ? (
                    // $FlowFixMe Flow incorrectly thinks existing element's key can be a number
                    // eslint-disable-next-line react-internal/safe-string-coercion
                    escapeUserProvidedKey("" + mappedChild.key) + "/"
                  ) : "") + childKey
                );
              }
              array.push(mappedChild);
            }
            return 1;
          }
          var child;
          var nextName;
          var subtreeCount = 0;
          var nextNamePrefix = nameSoFar === "" ? SEPARATOR : nameSoFar + SUBSEPARATOR;
          if (isArray(children)) {
            for (var i = 0; i < children.length; i++) {
              child = children[i];
              nextName = nextNamePrefix + getElementKey(child, i);
              subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback);
            }
          } else {
            var iteratorFn = getIteratorFn(children);
            if (typeof iteratorFn === "function") {
              var iterableChildren = children;
              {
                if (iteratorFn === iterableChildren.entries) {
                  if (!didWarnAboutMaps) {
                    warn("Using Maps as children is not supported. Use an array of keyed ReactElements instead.");
                  }
                  didWarnAboutMaps = true;
                }
              }
              var iterator = iteratorFn.call(iterableChildren);
              var step;
              var ii = 0;
              while (!(step = iterator.next()).done) {
                child = step.value;
                nextName = nextNamePrefix + getElementKey(child, ii++);
                subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback);
              }
            } else if (type === "object") {
              var childrenString = String(children);
              throw new Error("Objects are not valid as a React child (found: " + (childrenString === "[object Object]" ? "object with keys {" + Object.keys(children).join(", ") + "}" : childrenString) + "). If you meant to render a collection of children, use an array instead.");
            }
          }
          return subtreeCount;
        }
        function mapChildren(children, func, context) {
          if (children == null) {
            return children;
          }
          var result = [];
          var count = 0;
          mapIntoArray(children, result, "", "", function(child) {
            return func.call(context, child, count++);
          });
          return result;
        }
        function countChildren(children) {
          var n = 0;
          mapChildren(children, function() {
            n++;
          });
          return n;
        }
        function forEachChildren(children, forEachFunc, forEachContext) {
          mapChildren(children, function() {
            forEachFunc.apply(this, arguments);
          }, forEachContext);
        }
        function toArray(children) {
          return mapChildren(children, function(child) {
            return child;
          }) || [];
        }
        function onlyChild(children) {
          if (!isValidElement(children)) {
            throw new Error("React.Children.only expected to receive a single React element child.");
          }
          return children;
        }
        function createContext(defaultValue) {
          var context = {
            $$typeof: REACT_CONTEXT_TYPE,
            // As a workaround to support multiple concurrent renderers, we categorize
            // some renderers as primary and others as secondary. We only expect
            // there to be two concurrent renderers at most: React Native (primary) and
            // Fabric (secondary); React DOM (primary) and React ART (secondary).
            // Secondary renderers store their context values on separate fields.
            _currentValue: defaultValue,
            _currentValue2: defaultValue,
            // Used to track how many concurrent renderers this context currently
            // supports within in a single renderer. Such as parallel server rendering.
            _threadCount: 0,
            // These are circular
            Provider: null,
            Consumer: null,
            // Add these to use same hidden class in VM as ServerContext
            _defaultValue: null,
            _globalName: null
          };
          context.Provider = {
            $$typeof: REACT_PROVIDER_TYPE,
            _context: context
          };
          var hasWarnedAboutUsingNestedContextConsumers = false;
          var hasWarnedAboutUsingConsumerProvider = false;
          var hasWarnedAboutDisplayNameOnConsumer = false;
          {
            var Consumer = {
              $$typeof: REACT_CONTEXT_TYPE,
              _context: context
            };
            Object.defineProperties(Consumer, {
              Provider: {
                get: function() {
                  if (!hasWarnedAboutUsingConsumerProvider) {
                    hasWarnedAboutUsingConsumerProvider = true;
                    error("Rendering <Context.Consumer.Provider> is not supported and will be removed in a future major release. Did you mean to render <Context.Provider> instead?");
                  }
                  return context.Provider;
                },
                set: function(_Provider) {
                  context.Provider = _Provider;
                }
              },
              _currentValue: {
                get: function() {
                  return context._currentValue;
                },
                set: function(_currentValue) {
                  context._currentValue = _currentValue;
                }
              },
              _currentValue2: {
                get: function() {
                  return context._currentValue2;
                },
                set: function(_currentValue2) {
                  context._currentValue2 = _currentValue2;
                }
              },
              _threadCount: {
                get: function() {
                  return context._threadCount;
                },
                set: function(_threadCount) {
                  context._threadCount = _threadCount;
                }
              },
              Consumer: {
                get: function() {
                  if (!hasWarnedAboutUsingNestedContextConsumers) {
                    hasWarnedAboutUsingNestedContextConsumers = true;
                    error("Rendering <Context.Consumer.Consumer> is not supported and will be removed in a future major release. Did you mean to render <Context.Consumer> instead?");
                  }
                  return context.Consumer;
                }
              },
              displayName: {
                get: function() {
                  return context.displayName;
                },
                set: function(displayName) {
                  if (!hasWarnedAboutDisplayNameOnConsumer) {
                    warn("Setting `displayName` on Context.Consumer has no effect. You should set it directly on the context with Context.displayName = '%s'.", displayName);
                    hasWarnedAboutDisplayNameOnConsumer = true;
                  }
                }
              }
            });
            context.Consumer = Consumer;
          }
          {
            context._currentRenderer = null;
            context._currentRenderer2 = null;
          }
          return context;
        }
        var Uninitialized = -1;
        var Pending = 0;
        var Resolved = 1;
        var Rejected = 2;
        function lazyInitializer(payload) {
          if (payload._status === Uninitialized) {
            var ctor = payload._result;
            var thenable = ctor();
            thenable.then(function(moduleObject2) {
              if (payload._status === Pending || payload._status === Uninitialized) {
                var resolved = payload;
                resolved._status = Resolved;
                resolved._result = moduleObject2;
              }
            }, function(error2) {
              if (payload._status === Pending || payload._status === Uninitialized) {
                var rejected = payload;
                rejected._status = Rejected;
                rejected._result = error2;
              }
            });
            if (payload._status === Uninitialized) {
              var pending = payload;
              pending._status = Pending;
              pending._result = thenable;
            }
          }
          if (payload._status === Resolved) {
            var moduleObject = payload._result;
            {
              if (moduleObject === void 0) {
                error("lazy: Expected the result of a dynamic import() call. Instead received: %s\n\nYour code should look like: \n  const MyComponent = lazy(() => import('./MyComponent'))\n\nDid you accidentally put curly braces around the import?", moduleObject);
              }
            }
            {
              if (!("default" in moduleObject)) {
                error("lazy: Expected the result of a dynamic import() call. Instead received: %s\n\nYour code should look like: \n  const MyComponent = lazy(() => import('./MyComponent'))", moduleObject);
              }
            }
            return moduleObject.default;
          } else {
            throw payload._result;
          }
        }
        function lazy(ctor) {
          var payload = {
            // We use these fields to store the result.
            _status: Uninitialized,
            _result: ctor
          };
          var lazyType = {
            $$typeof: REACT_LAZY_TYPE,
            _payload: payload,
            _init: lazyInitializer
          };
          {
            var defaultProps;
            var propTypes;
            Object.defineProperties(lazyType, {
              defaultProps: {
                configurable: true,
                get: function() {
                  return defaultProps;
                },
                set: function(newDefaultProps) {
                  error("React.lazy(...): It is not supported to assign `defaultProps` to a lazy component import. Either specify them where the component is defined, or create a wrapping component around it.");
                  defaultProps = newDefaultProps;
                  Object.defineProperty(lazyType, "defaultProps", {
                    enumerable: true
                  });
                }
              },
              propTypes: {
                configurable: true,
                get: function() {
                  return propTypes;
                },
                set: function(newPropTypes) {
                  error("React.lazy(...): It is not supported to assign `propTypes` to a lazy component import. Either specify them where the component is defined, or create a wrapping component around it.");
                  propTypes = newPropTypes;
                  Object.defineProperty(lazyType, "propTypes", {
                    enumerable: true
                  });
                }
              }
            });
          }
          return lazyType;
        }
        function forwardRef(render) {
          {
            if (render != null && render.$$typeof === REACT_MEMO_TYPE) {
              error("forwardRef requires a render function but received a `memo` component. Instead of forwardRef(memo(...)), use memo(forwardRef(...)).");
            } else if (typeof render !== "function") {
              error("forwardRef requires a render function but was given %s.", render === null ? "null" : typeof render);
            } else {
              if (render.length !== 0 && render.length !== 2) {
                error("forwardRef render functions accept exactly two parameters: props and ref. %s", render.length === 1 ? "Did you forget to use the ref parameter?" : "Any additional parameter will be undefined.");
              }
            }
            if (render != null) {
              if (render.defaultProps != null || render.propTypes != null) {
                error("forwardRef render functions do not support propTypes or defaultProps. Did you accidentally pass a React component?");
              }
            }
          }
          var elementType = {
            $$typeof: REACT_FORWARD_REF_TYPE,
            render
          };
          {
            var ownName;
            Object.defineProperty(elementType, "displayName", {
              enumerable: false,
              configurable: true,
              get: function() {
                return ownName;
              },
              set: function(name) {
                ownName = name;
                if (!render.name && !render.displayName) {
                  render.displayName = name;
                }
              }
            });
          }
          return elementType;
        }
        var REACT_MODULE_REFERENCE;
        {
          REACT_MODULE_REFERENCE = Symbol.for("react.module.reference");
        }
        function isValidElementType(type) {
          if (typeof type === "string" || typeof type === "function") {
            return true;
          }
          if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing) {
            return true;
          }
          if (typeof type === "object" && type !== null) {
            if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object
            // types supported by any Flight configuration anywhere since
            // we don't know which Flight build this will end up being used
            // with.
            type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== void 0) {
              return true;
            }
          }
          return false;
        }
        function memo(type, compare) {
          {
            if (!isValidElementType(type)) {
              error("memo: The first argument must be a component. Instead received: %s", type === null ? "null" : typeof type);
            }
          }
          var elementType = {
            $$typeof: REACT_MEMO_TYPE,
            type,
            compare: compare === void 0 ? null : compare
          };
          {
            var ownName;
            Object.defineProperty(elementType, "displayName", {
              enumerable: false,
              configurable: true,
              get: function() {
                return ownName;
              },
              set: function(name) {
                ownName = name;
                if (!type.name && !type.displayName) {
                  type.displayName = name;
                }
              }
            });
          }
          return elementType;
        }
        function resolveDispatcher() {
          var dispatcher = ReactCurrentDispatcher.current;
          {
            if (dispatcher === null) {
              error("Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\n1. You might have mismatching versions of React and the renderer (such as React DOM)\n2. You might be breaking the Rules of Hooks\n3. You might have more than one copy of React in the same app\nSee https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.");
            }
          }
          return dispatcher;
        }
        function useContext(Context) {
          var dispatcher = resolveDispatcher();
          {
            if (Context._context !== void 0) {
              var realContext = Context._context;
              if (realContext.Consumer === Context) {
                error("Calling useContext(Context.Consumer) is not supported, may cause bugs, and will be removed in a future major release. Did you mean to call useContext(Context) instead?");
              } else if (realContext.Provider === Context) {
                error("Calling useContext(Context.Provider) is not supported. Did you mean to call useContext(Context) instead?");
              }
            }
          }
          return dispatcher.useContext(Context);
        }
        function useState(initialState) {
          var dispatcher = resolveDispatcher();
          return dispatcher.useState(initialState);
        }
        function useReducer(reducer, initialArg, init) {
          var dispatcher = resolveDispatcher();
          return dispatcher.useReducer(reducer, initialArg, init);
        }
        function useRef(initialValue) {
          var dispatcher = resolveDispatcher();
          return dispatcher.useRef(initialValue);
        }
        function useEffect(create, deps) {
          var dispatcher = resolveDispatcher();
          return dispatcher.useEffect(create, deps);
        }
        function useInsertionEffect(create, deps) {
          var dispatcher = resolveDispatcher();
          return dispatcher.useInsertionEffect(create, deps);
        }
        function useLayoutEffect(create, deps) {
          var dispatcher = resolveDispatcher();
          return dispatcher.useLayoutEffect(create, deps);
        }
        function useCallback(callback, deps) {
          var dispatcher = resolveDispatcher();
          return dispatcher.useCallback(callback, deps);
        }
        function useMemo(create, deps) {
          var dispatcher = resolveDispatcher();
          return dispatcher.useMemo(create, deps);
        }
        function useImperativeHandle(ref, create, deps) {
          var dispatcher = resolveDispatcher();
          return dispatcher.useImperativeHandle(ref, create, deps);
        }
        function useDebugValue(value, formatterFn) {
          {
            var dispatcher = resolveDispatcher();
            return dispatcher.useDebugValue(value, formatterFn);
          }
        }
        function useTransition() {
          var dispatcher = resolveDispatcher();
          return dispatcher.useTransition();
        }
        function useDeferredValue(value) {
          var dispatcher = resolveDispatcher();
          return dispatcher.useDeferredValue(value);
        }
        function useId() {
          var dispatcher = resolveDispatcher();
          return dispatcher.useId();
        }
        function useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {
          var dispatcher = resolveDispatcher();
          return dispatcher.useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
        }
        var disabledDepth = 0;
        var prevLog;
        var prevInfo;
        var prevWarn;
        var prevError;
        var prevGroup;
        var prevGroupCollapsed;
        var prevGroupEnd;
        function disabledLog() {
        }
        disabledLog.__reactDisabledLog = true;
        function disableLogs() {
          {
            if (disabledDepth === 0) {
              prevLog = console.log;
              prevInfo = console.info;
              prevWarn = console.warn;
              prevError = console.error;
              prevGroup = console.group;
              prevGroupCollapsed = console.groupCollapsed;
              prevGroupEnd = console.groupEnd;
              var props = {
                configurable: true,
                enumerable: true,
                value: disabledLog,
                writable: true
              };
              Object.defineProperties(console, {
                info: props,
                log: props,
                warn: props,
                error: props,
                group: props,
                groupCollapsed: props,
                groupEnd: props
              });
            }
            disabledDepth++;
          }
        }
        function reenableLogs() {
          {
            disabledDepth--;
            if (disabledDepth === 0) {
              var props = {
                configurable: true,
                enumerable: true,
                writable: true
              };
              Object.defineProperties(console, {
                log: assign({}, props, {
                  value: prevLog
                }),
                info: assign({}, props, {
                  value: prevInfo
                }),
                warn: assign({}, props, {
                  value: prevWarn
                }),
                error: assign({}, props, {
                  value: prevError
                }),
                group: assign({}, props, {
                  value: prevGroup
                }),
                groupCollapsed: assign({}, props, {
                  value: prevGroupCollapsed
                }),
                groupEnd: assign({}, props, {
                  value: prevGroupEnd
                })
              });
            }
            if (disabledDepth < 0) {
              error("disabledDepth fell below zero. This is a bug in React. Please file an issue.");
            }
          }
        }
        var ReactCurrentDispatcher$1 = ReactSharedInternals.ReactCurrentDispatcher;
        var prefix;
        function describeBuiltInComponentFrame(name, source, ownerFn) {
          {
            if (prefix === void 0) {
              try {
                throw Error();
              } catch (x) {
                var match = x.stack.trim().match(/\n( *(at )?)/);
                prefix = match && match[1] || "";
              }
            }
            return "\n" + prefix + name;
          }
        }
        var reentry = false;
        var componentFrameCache;
        {
          var PossiblyWeakMap = typeof WeakMap === "function" ? WeakMap : Map;
          componentFrameCache = new PossiblyWeakMap();
        }
        function describeNativeComponentFrame(fn, construct) {
          if (!fn || reentry) {
            return "";
          }
          {
            var frame = componentFrameCache.get(fn);
            if (frame !== void 0) {
              return frame;
            }
          }
          var control;
          reentry = true;
          var previousPrepareStackTrace = Error.prepareStackTrace;
          Error.prepareStackTrace = void 0;
          var previousDispatcher;
          {
            previousDispatcher = ReactCurrentDispatcher$1.current;
            ReactCurrentDispatcher$1.current = null;
            disableLogs();
          }
          try {
            if (construct) {
              var Fake = function() {
                throw Error();
              };
              Object.defineProperty(Fake.prototype, "props", {
                set: function() {
                  throw Error();
                }
              });
              if (typeof Reflect === "object" && Reflect.construct) {
                try {
                  Reflect.construct(Fake, []);
                } catch (x) {
                  control = x;
                }
                Reflect.construct(fn, [], Fake);
              } else {
                try {
                  Fake.call();
                } catch (x) {
                  control = x;
                }
                fn.call(Fake.prototype);
              }
            } else {
              try {
                throw Error();
              } catch (x) {
                control = x;
              }
              fn();
            }
          } catch (sample) {
            if (sample && control && typeof sample.stack === "string") {
              var sampleLines = sample.stack.split("\n");
              var controlLines = control.stack.split("\n");
              var s = sampleLines.length - 1;
              var c = controlLines.length - 1;
              while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {
                c--;
              }
              for (; s >= 1 && c >= 0; s--, c--) {
                if (sampleLines[s] !== controlLines[c]) {
                  if (s !== 1 || c !== 1) {
                    do {
                      s--;
                      c--;
                      if (c < 0 || sampleLines[s] !== controlLines[c]) {
                        var _frame = "\n" + sampleLines[s].replace(" at new ", " at ");
                        if (fn.displayName && _frame.includes("<anonymous>")) {
                          _frame = _frame.replace("<anonymous>", fn.displayName);
                        }
                        {
                          if (typeof fn === "function") {
                            componentFrameCache.set(fn, _frame);
                          }
                        }
                        return _frame;
                      }
                    } while (s >= 1 && c >= 0);
                  }
                  break;
                }
              }
            }
          } finally {
            reentry = false;
            {
              ReactCurrentDispatcher$1.current = previousDispatcher;
              reenableLogs();
            }
            Error.prepareStackTrace = previousPrepareStackTrace;
          }
          var name = fn ? fn.displayName || fn.name : "";
          var syntheticFrame = name ? describeBuiltInComponentFrame(name) : "";
          {
            if (typeof fn === "function") {
              componentFrameCache.set(fn, syntheticFrame);
            }
          }
          return syntheticFrame;
        }
        function describeFunctionComponentFrame(fn, source, ownerFn) {
          {
            return describeNativeComponentFrame(fn, false);
          }
        }
        function shouldConstruct(Component2) {
          var prototype = Component2.prototype;
          return !!(prototype && prototype.isReactComponent);
        }
        function describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {
          if (type == null) {
            return "";
          }
          if (typeof type === "function") {
            {
              return describeNativeComponentFrame(type, shouldConstruct(type));
            }
          }
          if (typeof type === "string") {
            return describeBuiltInComponentFrame(type);
          }
          switch (type) {
            case REACT_SUSPENSE_TYPE:
              return describeBuiltInComponentFrame("Suspense");
            case REACT_SUSPENSE_LIST_TYPE:
              return describeBuiltInComponentFrame("SuspenseList");
          }
          if (typeof type === "object") {
            switch (type.$$typeof) {
              case REACT_FORWARD_REF_TYPE:
                return describeFunctionComponentFrame(type.render);
              case REACT_MEMO_TYPE:
                return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);
              case REACT_LAZY_TYPE: {
                var lazyComponent = type;
                var payload = lazyComponent._payload;
                var init = lazyComponent._init;
                try {
                  return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);
                } catch (x) {
                }
              }
            }
          }
          return "";
        }
        var loggedTypeFailures = {};
        var ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;
        function setCurrentlyValidatingElement(element) {
          {
            if (element) {
              var owner = element._owner;
              var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);
              ReactDebugCurrentFrame$1.setExtraStackFrame(stack);
            } else {
              ReactDebugCurrentFrame$1.setExtraStackFrame(null);
            }
          }
        }
        function checkPropTypes(typeSpecs, values, location, componentName, element) {
          {
            var has = Function.call.bind(hasOwnProperty);
            for (var typeSpecName in typeSpecs) {
              if (has(typeSpecs, typeSpecName)) {
                var error$1 = void 0;
                try {
                  if (typeof typeSpecs[typeSpecName] !== "function") {
                    var err = Error((componentName || "React class") + ": " + location + " type `" + typeSpecName + "` is invalid; it must be a function, usually from the `prop-types` package, but received `" + typeof typeSpecs[typeSpecName] + "`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");
                    err.name = "Invariant Violation";
                    throw err;
                  }
                  error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, "SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED");
                } catch (ex) {
                  error$1 = ex;
                }
                if (error$1 && !(error$1 instanceof Error)) {
                  setCurrentlyValidatingElement(element);
                  error("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).", componentName || "React class", location, typeSpecName, typeof error$1);
                  setCurrentlyValidatingElement(null);
                }
                if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {
                  loggedTypeFailures[error$1.message] = true;
                  setCurrentlyValidatingElement(element);
                  error("Failed %s type: %s", location, error$1.message);
                  setCurrentlyValidatingElement(null);
                }
              }
            }
          }
        }
        function setCurrentlyValidatingElement$1(element) {
          {
            if (element) {
              var owner = element._owner;
              var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);
              setExtraStackFrame(stack);
            } else {
              setExtraStackFrame(null);
            }
          }
        }
        var propTypesMisspellWarningShown;
        {
          propTypesMisspellWarningShown = false;
        }
        function getDeclarationErrorAddendum() {
          if (ReactCurrentOwner.current) {
            var name = getComponentNameFromType(ReactCurrentOwner.current.type);
            if (name) {
              return "\n\nCheck the render method of `" + name + "`.";
            }
          }
          return "";
        }
        function getSourceInfoErrorAddendum(source) {
          if (source !== void 0) {
            var fileName = source.fileName.replace(/^.*[\\\/]/, "");
            var lineNumber = source.lineNumber;
            return "\n\nCheck your code at " + fileName + ":" + lineNumber + ".";
          }
          return "";
        }
        function getSourceInfoErrorAddendumForProps(elementProps) {
          if (elementProps !== null && elementProps !== void 0) {
            return getSourceInfoErrorAddendum(elementProps.__source);
          }
          return "";
        }
        var ownerHasKeyUseWarning = {};
        function getCurrentComponentErrorInfo(parentType) {
          var info = getDeclarationErrorAddendum();
          if (!info) {
            var parentName = typeof parentType === "string" ? parentType : parentType.displayName || parentType.name;
            if (parentName) {
              info = "\n\nCheck the top-level render call using <" + parentName + ">.";
            }
          }
          return info;
        }
        function validateExplicitKey(element, parentType) {
          if (!element._store || element._store.validated || element.key != null) {
            return;
          }
          element._store.validated = true;
          var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);
          if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {
            return;
          }
          ownerHasKeyUseWarning[currentComponentErrorInfo] = true;
          var childOwner = "";
          if (element && element._owner && element._owner !== ReactCurrentOwner.current) {
            childOwner = " It was passed a child from " + getComponentNameFromType(element._owner.type) + ".";
          }
          {
            setCurrentlyValidatingElement$1(element);
            error('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner);
            setCurrentlyValidatingElement$1(null);
          }
        }
        function validateChildKeys(node, parentType) {
          if (typeof node !== "object") {
            return;
          }
          if (isArray(node)) {
            for (var i = 0; i < node.length; i++) {
              var child = node[i];
              if (isValidElement(child)) {
                validateExplicitKey(child, parentType);
              }
            }
          } else if (isValidElement(node)) {
            if (node._store) {
              node._store.validated = true;
            }
          } else if (node) {
            var iteratorFn = getIteratorFn(node);
            if (typeof iteratorFn === "function") {
              if (iteratorFn !== node.entries) {
                var iterator = iteratorFn.call(node);
                var step;
                while (!(step = iterator.next()).done) {
                  if (isValidElement(step.value)) {
                    validateExplicitKey(step.value, parentType);
                  }
                }
              }
            }
          }
        }
        function validatePropTypes(element) {
          {
            var type = element.type;
            if (type === null || type === void 0 || typeof type === "string") {
              return;
            }
            var propTypes;
            if (typeof type === "function") {
              propTypes = type.propTypes;
            } else if (typeof type === "object" && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.
            // Inner props are checked in the reconciler.
            type.$$typeof === REACT_MEMO_TYPE)) {
              propTypes = type.propTypes;
            } else {
              return;
            }
            if (propTypes) {
              var name = getComponentNameFromType(type);
              checkPropTypes(propTypes, element.props, "prop", name, element);
            } else if (type.PropTypes !== void 0 && !propTypesMisspellWarningShown) {
              propTypesMisspellWarningShown = true;
              var _name = getComponentNameFromType(type);
              error("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?", _name || "Unknown");
            }
            if (typeof type.getDefaultProps === "function" && !type.getDefaultProps.isReactClassApproved) {
              error("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.");
            }
          }
        }
        function validateFragmentProps(fragment) {
          {
            var keys = Object.keys(fragment.props);
            for (var i = 0; i < keys.length; i++) {
              var key = keys[i];
              if (key !== "children" && key !== "key") {
                setCurrentlyValidatingElement$1(fragment);
                error("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.", key);
                setCurrentlyValidatingElement$1(null);
                break;
              }
            }
            if (fragment.ref !== null) {
              setCurrentlyValidatingElement$1(fragment);
              error("Invalid attribute `ref` supplied to `React.Fragment`.");
              setCurrentlyValidatingElement$1(null);
            }
          }
        }
        function createElementWithValidation(type, props, children) {
          var validType = isValidElementType(type);
          if (!validType) {
            var info = "";
            if (type === void 0 || typeof type === "object" && type !== null && Object.keys(type).length === 0) {
              info += " You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.";
            }
            var sourceInfo = getSourceInfoErrorAddendumForProps(props);
            if (sourceInfo) {
              info += sourceInfo;
            } else {
              info += getDeclarationErrorAddendum();
            }
            var typeString;
            if (type === null) {
              typeString = "null";
            } else if (isArray(type)) {
              typeString = "array";
            } else if (type !== void 0 && type.$$typeof === REACT_ELEMENT_TYPE) {
              typeString = "<" + (getComponentNameFromType(type.type) || "Unknown") + " />";
              info = " Did you accidentally export a JSX literal instead of a component?";
            } else {
              typeString = typeof type;
            }
            {
              error("React.createElement: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s", typeString, info);
            }
          }
          var element = createElement2.apply(this, arguments);
          if (element == null) {
            return element;
          }
          if (validType) {
            for (var i = 2; i < arguments.length; i++) {
              validateChildKeys(arguments[i], type);
            }
          }
          if (type === REACT_FRAGMENT_TYPE) {
            validateFragmentProps(element);
          } else {
            validatePropTypes(element);
          }
          return element;
        }
        var didWarnAboutDeprecatedCreateFactory = false;
        function createFactoryWithValidation(type) {
          var validatedFactory = createElementWithValidation.bind(null, type);
          validatedFactory.type = type;
          {
            if (!didWarnAboutDeprecatedCreateFactory) {
              didWarnAboutDeprecatedCreateFactory = true;
              warn("React.createFactory() is deprecated and will be removed in a future major release. Consider using JSX or use React.createElement() directly instead.");
            }
            Object.defineProperty(validatedFactory, "type", {
              enumerable: false,
              get: function() {
                warn("Factory.type is deprecated. Access the class directly before passing it to createFactory.");
                Object.defineProperty(this, "type", {
                  value: type
                });
                return type;
              }
            });
          }
          return validatedFactory;
        }
        function cloneElementWithValidation(element, props, children) {
          var newElement = cloneElement.apply(this, arguments);
          for (var i = 2; i < arguments.length; i++) {
            validateChildKeys(arguments[i], newElement.type);
          }
          validatePropTypes(newElement);
          return newElement;
        }
        function startTransition(scope, options) {
          var prevTransition = ReactCurrentBatchConfig.transition;
          ReactCurrentBatchConfig.transition = {};
          var currentTransition = ReactCurrentBatchConfig.transition;
          {
            ReactCurrentBatchConfig.transition._updatedFibers = /* @__PURE__ */ new Set();
          }
          try {
            scope();
          } finally {
            ReactCurrentBatchConfig.transition = prevTransition;
            {
              if (prevTransition === null && currentTransition._updatedFibers) {
                var updatedFibersCount = currentTransition._updatedFibers.size;
                if (updatedFibersCount > 10) {
                  warn("Detected a large number of updates inside startTransition. If this is due to a subscription please re-write it to use React provided hooks. Otherwise concurrent mode guarantees are off the table.");
                }
                currentTransition._updatedFibers.clear();
              }
            }
          }
        }
        var didWarnAboutMessageChannel = false;
        var enqueueTaskImpl = null;
        function enqueueTask(task) {
          if (enqueueTaskImpl === null) {
            try {
              var requireString = ("require" + Math.random()).slice(0, 7);
              var nodeRequire = module2 && module2[requireString];
              enqueueTaskImpl = nodeRequire.call(module2, "timers").setImmediate;
            } catch (_err) {
              enqueueTaskImpl = function(callback) {
                {
                  if (didWarnAboutMessageChannel === false) {
                    didWarnAboutMessageChannel = true;
                    if (typeof MessageChannel === "undefined") {
                      error("This browser does not have a MessageChannel implementation, so enqueuing tasks via await act(async () => ...) will fail. Please file an issue at https://github.com/facebook/react/issues if you encounter this warning.");
                    }
                  }
                }
                var channel = new MessageChannel();
                channel.port1.onmessage = callback;
                channel.port2.postMessage(void 0);
              };
            }
          }
          return enqueueTaskImpl(task);
        }
        var actScopeDepth = 0;
        var didWarnNoAwaitAct = false;
        function act(callback) {
          {
            var prevActScopeDepth = actScopeDepth;
            actScopeDepth++;
            if (ReactCurrentActQueue.current === null) {
              ReactCurrentActQueue.current = [];
            }
            var prevIsBatchingLegacy = ReactCurrentActQueue.isBatchingLegacy;
            var result;
            try {
              ReactCurrentActQueue.isBatchingLegacy = true;
              result = callback();
              if (!prevIsBatchingLegacy && ReactCurrentActQueue.didScheduleLegacyUpdate) {
                var queue = ReactCurrentActQueue.current;
                if (queue !== null) {
                  ReactCurrentActQueue.didScheduleLegacyUpdate = false;
                  flushActQueue(queue);
                }
              }
            } catch (error2) {
              popActScope(prevActScopeDepth);
              throw error2;
            } finally {
              ReactCurrentActQueue.isBatchingLegacy = prevIsBatchingLegacy;
            }
            if (result !== null && typeof result === "object" && typeof result.then === "function") {
              var thenableResult = result;
              var wasAwaited = false;
              var thenable = {
                then: function(resolve, reject) {
                  wasAwaited = true;
                  thenableResult.then(function(returnValue2) {
                    popActScope(prevActScopeDepth);
                    if (actScopeDepth === 0) {
                      recursivelyFlushAsyncActWork(returnValue2, resolve, reject);
                    } else {
                      resolve(returnValue2);
                    }
                  }, function(error2) {
                    popActScope(prevActScopeDepth);
                    reject(error2);
                  });
                }
              };
              {
                if (!didWarnNoAwaitAct && typeof Promise !== "undefined") {
                  Promise.resolve().then(function() {
                  }).then(function() {
                    if (!wasAwaited) {
                      didWarnNoAwaitAct = true;
                      error("You called act(async () => ...) without await. This could lead to unexpected testing behaviour, interleaving multiple act calls and mixing their scopes. You should - await act(async () => ...);");
                    }
                  });
                }
              }
              return thenable;
            } else {
              var returnValue = result;
              popActScope(prevActScopeDepth);
              if (actScopeDepth === 0) {
                var _queue = ReactCurrentActQueue.current;
                if (_queue !== null) {
                  flushActQueue(_queue);
                  ReactCurrentActQueue.current = null;
                }
                var _thenable = {
                  then: function(resolve, reject) {
                    if (ReactCurrentActQueue.current === null) {
                      ReactCurrentActQueue.current = [];
                      recursivelyFlushAsyncActWork(returnValue, resolve, reject);
                    } else {
                      resolve(returnValue);
                    }
                  }
                };
                return _thenable;
              } else {
                var _thenable2 = {
                  then: function(resolve, reject) {
                    resolve(returnValue);
                  }
                };
                return _thenable2;
              }
            }
          }
        }
        function popActScope(prevActScopeDepth) {
          {
            if (prevActScopeDepth !== actScopeDepth - 1) {
              error("You seem to have overlapping act() calls, this is not supported. Be sure to await previous act() calls before making a new one. ");
            }
            actScopeDepth = prevActScopeDepth;
          }
        }
        function recursivelyFlushAsyncActWork(returnValue, resolve, reject) {
          {
            var queue = ReactCurrentActQueue.current;
            if (queue !== null) {
              try {
                flushActQueue(queue);
                enqueueTask(function() {
                  if (queue.length === 0) {
                    ReactCurrentActQueue.current = null;
                    resolve(returnValue);
                  } else {
                    recursivelyFlushAsyncActWork(returnValue, resolve, reject);
                  }
                });
              } catch (error2) {
                reject(error2);
              }
            } else {
              resolve(returnValue);
            }
          }
        }
        var isFlushing = false;
        function flushActQueue(queue) {
          {
            if (!isFlushing) {
              isFlushing = true;
              var i = 0;
              try {
                for (; i < queue.length; i++) {
                  var callback = queue[i];
                  do {
                    callback = callback(true);
                  } while (callback !== null);
                }
                queue.length = 0;
              } catch (error2) {
                queue = queue.slice(i + 1);
                throw error2;
              } finally {
                isFlushing = false;
              }
            }
          }
        }
        var createElement$1 = createElementWithValidation;
        var cloneElement$1 = cloneElementWithValidation;
        var createFactory = createFactoryWithValidation;
        var Children = {
          map: mapChildren,
          forEach: forEachChildren,
          count: countChildren,
          toArray,
          only: onlyChild
        };
        exports2.Children = Children;
        exports2.Component = Component;
        exports2.Fragment = REACT_FRAGMENT_TYPE;
        exports2.Profiler = REACT_PROFILER_TYPE;
        exports2.PureComponent = PureComponent;
        exports2.StrictMode = REACT_STRICT_MODE_TYPE;
        exports2.Suspense = REACT_SUSPENSE_TYPE;
        exports2.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = ReactSharedInternals;
        exports2.act = act;
        exports2.cloneElement = cloneElement$1;
        exports2.createContext = createContext;
        exports2.createElement = createElement$1;
        exports2.createFactory = createFactory;
        exports2.createRef = createRef;
        exports2.forwardRef = forwardRef;
        exports2.isValidElement = isValidElement;
        exports2.lazy = lazy;
        exports2.memo = memo;
        exports2.startTransition = startTransition;
        exports2.unstable_act = act;
        exports2.useCallback = useCallback;
        exports2.useContext = useContext;
        exports2.useDebugValue = useDebugValue;
        exports2.useDeferredValue = useDeferredValue;
        exports2.useEffect = useEffect;
        exports2.useId = useId;
        exports2.useImperativeHandle = useImperativeHandle;
        exports2.useInsertionEffect = useInsertionEffect;
        exports2.useLayoutEffect = useLayoutEffect;
        exports2.useMemo = useMemo;
        exports2.useReducer = useReducer;
        exports2.useRef = useRef;
        exports2.useState = useState;
        exports2.useSyncExternalStore = useSyncExternalStore;
        exports2.useTransition = useTransition;
        exports2.version = ReactVersion;
        if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== "undefined" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop === "function") {
          __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());
        }
      })();
    }
  }
});

// node_modules/react/index.js
var require_react = __commonJS({
  "node_modules/react/index.js"(exports2, module2) {
    "use strict";
    if (false) {
      module2.exports = null;
    } else {
      module2.exports = require_react_development();
    }
  }
});

// node_modules/react/cjs/react-jsx-runtime.development.js
var require_react_jsx_runtime_development = __commonJS({
  "node_modules/react/cjs/react-jsx-runtime.development.js"(exports2) {
    "use strict";
    if (true) {
      (function() {
        "use strict";
        var React2 = require_react();
        var REACT_ELEMENT_TYPE = Symbol.for("react.element");
        var REACT_PORTAL_TYPE = Symbol.for("react.portal");
        var REACT_FRAGMENT_TYPE = Symbol.for("react.fragment");
        var REACT_STRICT_MODE_TYPE = Symbol.for("react.strict_mode");
        var REACT_PROFILER_TYPE = Symbol.for("react.profiler");
        var REACT_PROVIDER_TYPE = Symbol.for("react.provider");
        var REACT_CONTEXT_TYPE = Symbol.for("react.context");
        var REACT_FORWARD_REF_TYPE = Symbol.for("react.forward_ref");
        var REACT_SUSPENSE_TYPE = Symbol.for("react.suspense");
        var REACT_SUSPENSE_LIST_TYPE = Symbol.for("react.suspense_list");
        var REACT_MEMO_TYPE = Symbol.for("react.memo");
        var REACT_LAZY_TYPE = Symbol.for("react.lazy");
        var REACT_OFFSCREEN_TYPE = Symbol.for("react.offscreen");
        var MAYBE_ITERATOR_SYMBOL = Symbol.iterator;
        var FAUX_ITERATOR_SYMBOL = "@@iterator";
        function getIteratorFn(maybeIterable) {
          if (maybeIterable === null || typeof maybeIterable !== "object") {
            return null;
          }
          var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];
          if (typeof maybeIterator === "function") {
            return maybeIterator;
          }
          return null;
        }
        var ReactSharedInternals = React2.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
        function error(format) {
          {
            {
              for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
                args[_key2 - 1] = arguments[_key2];
              }
              printWarning("error", format, args);
            }
          }
        }
        function printWarning(level, format, args) {
          {
            var ReactDebugCurrentFrame2 = ReactSharedInternals.ReactDebugCurrentFrame;
            var stack = ReactDebugCurrentFrame2.getStackAddendum();
            if (stack !== "") {
              format += "%s";
              args = args.concat([stack]);
            }
            var argsWithFormat = args.map(function(item) {
              return String(item);
            });
            argsWithFormat.unshift("Warning: " + format);
            Function.prototype.apply.call(console[level], console, argsWithFormat);
          }
        }
        var enableScopeAPI = false;
        var enableCacheElement = false;
        var enableTransitionTracing = false;
        var enableLegacyHidden = false;
        var enableDebugTracing = false;
        var REACT_MODULE_REFERENCE;
        {
          REACT_MODULE_REFERENCE = Symbol.for("react.module.reference");
        }
        function isValidElementType(type) {
          if (typeof type === "string" || typeof type === "function") {
            return true;
          }
          if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing) {
            return true;
          }
          if (typeof type === "object" && type !== null) {
            if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object
            // types supported by any Flight configuration anywhere since
            // we don't know which Flight build this will end up being used
            // with.
            type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== void 0) {
              return true;
            }
          }
          return false;
        }
        function getWrappedName(outerType, innerType, wrapperName) {
          var displayName = outerType.displayName;
          if (displayName) {
            return displayName;
          }
          var functionName = innerType.displayName || innerType.name || "";
          return functionName !== "" ? wrapperName + "(" + functionName + ")" : wrapperName;
        }
        function getContextName(type) {
          return type.displayName || "Context";
        }
        function getComponentNameFromType(type) {
          if (type == null) {
            return null;
          }
          {
            if (typeof type.tag === "number") {
              error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.");
            }
          }
          if (typeof type === "function") {
            return type.displayName || type.name || null;
          }
          if (typeof type === "string") {
            return type;
          }
          switch (type) {
            case REACT_FRAGMENT_TYPE:
              return "Fragment";
            case REACT_PORTAL_TYPE:
              return "Portal";
            case REACT_PROFILER_TYPE:
              return "Profiler";
            case REACT_STRICT_MODE_TYPE:
              return "StrictMode";
            case REACT_SUSPENSE_TYPE:
              return "Suspense";
            case REACT_SUSPENSE_LIST_TYPE:
              return "SuspenseList";
          }
          if (typeof type === "object") {
            switch (type.$$typeof) {
              case REACT_CONTEXT_TYPE:
                var context = type;
                return getContextName(context) + ".Consumer";
              case REACT_PROVIDER_TYPE:
                var provider = type;
                return getContextName(provider._context) + ".Provider";
              case REACT_FORWARD_REF_TYPE:
                return getWrappedName(type, type.render, "ForwardRef");
              case REACT_MEMO_TYPE:
                var outerName = type.displayName || null;
                if (outerName !== null) {
                  return outerName;
                }
                return getComponentNameFromType(type.type) || "Memo";
              case REACT_LAZY_TYPE: {
                var lazyComponent = type;
                var payload = lazyComponent._payload;
                var init = lazyComponent._init;
                try {
                  return getComponentNameFromType(init(payload));
                } catch (x) {
                  return null;
                }
              }
            }
          }
          return null;
        }
        var assign = Object.assign;
        var disabledDepth = 0;
        var prevLog;
        var prevInfo;
        var prevWarn;
        var prevError;
        var prevGroup;
        var prevGroupCollapsed;
        var prevGroupEnd;
        function disabledLog() {
        }
        disabledLog.__reactDisabledLog = true;
        function disableLogs() {
          {
            if (disabledDepth === 0) {
              prevLog = console.log;
              prevInfo = console.info;
              prevWarn = console.warn;
              prevError = console.error;
              prevGroup = console.group;
              prevGroupCollapsed = console.groupCollapsed;
              prevGroupEnd = console.groupEnd;
              var props = {
                configurable: true,
                enumerable: true,
                value: disabledLog,
                writable: true
              };
              Object.defineProperties(console, {
                info: props,
                log: props,
                warn: props,
                error: props,
                group: props,
                groupCollapsed: props,
                groupEnd: props
              });
            }
            disabledDepth++;
          }
        }
        function reenableLogs() {
          {
            disabledDepth--;
            if (disabledDepth === 0) {
              var props = {
                configurable: true,
                enumerable: true,
                writable: true
              };
              Object.defineProperties(console, {
                log: assign({}, props, {
                  value: prevLog
                }),
                info: assign({}, props, {
                  value: prevInfo
                }),
                warn: assign({}, props, {
                  value: prevWarn
                }),
                error: assign({}, props, {
                  value: prevError
                }),
                group: assign({}, props, {
                  value: prevGroup
                }),
                groupCollapsed: assign({}, props, {
                  value: prevGroupCollapsed
                }),
                groupEnd: assign({}, props, {
                  value: prevGroupEnd
                })
              });
            }
            if (disabledDepth < 0) {
              error("disabledDepth fell below zero. This is a bug in React. Please file an issue.");
            }
          }
        }
        var ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;
        var prefix;
        function describeBuiltInComponentFrame(name, source, ownerFn) {
          {
            if (prefix === void 0) {
              try {
                throw Error();
              } catch (x) {
                var match = x.stack.trim().match(/\n( *(at )?)/);
                prefix = match && match[1] || "";
              }
            }
            return "\n" + prefix + name;
          }
        }
        var reentry = false;
        var componentFrameCache;
        {
          var PossiblyWeakMap = typeof WeakMap === "function" ? WeakMap : Map;
          componentFrameCache = new PossiblyWeakMap();
        }
        function describeNativeComponentFrame(fn, construct) {
          if (!fn || reentry) {
            return "";
          }
          {
            var frame = componentFrameCache.get(fn);
            if (frame !== void 0) {
              return frame;
            }
          }
          var control;
          reentry = true;
          var previousPrepareStackTrace = Error.prepareStackTrace;
          Error.prepareStackTrace = void 0;
          var previousDispatcher;
          {
            previousDispatcher = ReactCurrentDispatcher.current;
            ReactCurrentDispatcher.current = null;
            disableLogs();
          }
          try {
            if (construct) {
              var Fake = function() {
                throw Error();
              };
              Object.defineProperty(Fake.prototype, "props", {
                set: function() {
                  throw Error();
                }
              });
              if (typeof Reflect === "object" && Reflect.construct) {
                try {
                  Reflect.construct(Fake, []);
                } catch (x) {
                  control = x;
                }
                Reflect.construct(fn, [], Fake);
              } else {
                try {
                  Fake.call();
                } catch (x) {
                  control = x;
                }
                fn.call(Fake.prototype);
              }
            } else {
              try {
                throw Error();
              } catch (x) {
                control = x;
              }
              fn();
            }
          } catch (sample) {
            if (sample && control && typeof sample.stack === "string") {
              var sampleLines = sample.stack.split("\n");
              var controlLines = control.stack.split("\n");
              var s = sampleLines.length - 1;
              var c = controlLines.length - 1;
              while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {
                c--;
              }
              for (; s >= 1 && c >= 0; s--, c--) {
                if (sampleLines[s] !== controlLines[c]) {
                  if (s !== 1 || c !== 1) {
                    do {
                      s--;
                      c--;
                      if (c < 0 || sampleLines[s] !== controlLines[c]) {
                        var _frame = "\n" + sampleLines[s].replace(" at new ", " at ");
                        if (fn.displayName && _frame.includes("<anonymous>")) {
                          _frame = _frame.replace("<anonymous>", fn.displayName);
                        }
                        {
                          if (typeof fn === "function") {
                            componentFrameCache.set(fn, _frame);
                          }
                        }
                        return _frame;
                      }
                    } while (s >= 1 && c >= 0);
                  }
                  break;
                }
              }
            }
          } finally {
            reentry = false;
            {
              ReactCurrentDispatcher.current = previousDispatcher;
              reenableLogs();
            }
            Error.prepareStackTrace = previousPrepareStackTrace;
          }
          var name = fn ? fn.displayName || fn.name : "";
          var syntheticFrame = name ? describeBuiltInComponentFrame(name) : "";
          {
            if (typeof fn === "function") {
              componentFrameCache.set(fn, syntheticFrame);
            }
          }
          return syntheticFrame;
        }
        function describeFunctionComponentFrame(fn, source, ownerFn) {
          {
            return describeNativeComponentFrame(fn, false);
          }
        }
        function shouldConstruct(Component) {
          var prototype = Component.prototype;
          return !!(prototype && prototype.isReactComponent);
        }
        function describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {
          if (type == null) {
            return "";
          }
          if (typeof type === "function") {
            {
              return describeNativeComponentFrame(type, shouldConstruct(type));
            }
          }
          if (typeof type === "string") {
            return describeBuiltInComponentFrame(type);
          }
          switch (type) {
            case REACT_SUSPENSE_TYPE:
              return describeBuiltInComponentFrame("Suspense");
            case REACT_SUSPENSE_LIST_TYPE:
              return describeBuiltInComponentFrame("SuspenseList");
          }
          if (typeof type === "object") {
            switch (type.$$typeof) {
              case REACT_FORWARD_REF_TYPE:
                return describeFunctionComponentFrame(type.render);
              case REACT_MEMO_TYPE:
                return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);
              case REACT_LAZY_TYPE: {
                var lazyComponent = type;
                var payload = lazyComponent._payload;
                var init = lazyComponent._init;
                try {
                  return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);
                } catch (x) {
                }
              }
            }
          }
          return "";
        }
        var hasOwnProperty = Object.prototype.hasOwnProperty;
        var loggedTypeFailures = {};
        var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;
        function setCurrentlyValidatingElement(element) {
          {
            if (element) {
              var owner = element._owner;
              var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);
              ReactDebugCurrentFrame.setExtraStackFrame(stack);
            } else {
              ReactDebugCurrentFrame.setExtraStackFrame(null);
            }
          }
        }
        function checkPropTypes(typeSpecs, values, location, componentName, element) {
          {
            var has = Function.call.bind(hasOwnProperty);
            for (var typeSpecName in typeSpecs) {
              if (has(typeSpecs, typeSpecName)) {
                var error$1 = void 0;
                try {
                  if (typeof typeSpecs[typeSpecName] !== "function") {
                    var err = Error((componentName || "React class") + ": " + location + " type `" + typeSpecName + "` is invalid; it must be a function, usually from the `prop-types` package, but received `" + typeof typeSpecs[typeSpecName] + "`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");
                    err.name = "Invariant Violation";
                    throw err;
                  }
                  error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, "SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED");
                } catch (ex) {
                  error$1 = ex;
                }
                if (error$1 && !(error$1 instanceof Error)) {
                  setCurrentlyValidatingElement(element);
                  error("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).", componentName || "React class", location, typeSpecName, typeof error$1);
                  setCurrentlyValidatingElement(null);
                }
                if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {
                  loggedTypeFailures[error$1.message] = true;
                  setCurrentlyValidatingElement(element);
                  error("Failed %s type: %s", location, error$1.message);
                  setCurrentlyValidatingElement(null);
                }
              }
            }
          }
        }
        var isArrayImpl = Array.isArray;
        function isArray(a) {
          return isArrayImpl(a);
        }
        function typeName(value) {
          {
            var hasToStringTag = typeof Symbol === "function" && Symbol.toStringTag;
            var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || "Object";
            return type;
          }
        }
        function willCoercionThrow(value) {
          {
            try {
              testStringCoercion(value);
              return false;
            } catch (e) {
              return true;
            }
          }
        }
        function testStringCoercion(value) {
          return "" + value;
        }
        function checkKeyStringCoercion(value) {
          {
            if (willCoercionThrow(value)) {
              error("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.", typeName(value));
              return testStringCoercion(value);
            }
          }
        }
        var ReactCurrentOwner = ReactSharedInternals.ReactCurrentOwner;
        var RESERVED_PROPS = {
          key: true,
          ref: true,
          __self: true,
          __source: true
        };
        var specialPropKeyWarningShown;
        var specialPropRefWarningShown;
        var didWarnAboutStringRefs;
        {
          didWarnAboutStringRefs = {};
        }
        function hasValidRef(config) {
          {
            if (hasOwnProperty.call(config, "ref")) {
              var getter = Object.getOwnPropertyDescriptor(config, "ref").get;
              if (getter && getter.isReactWarning) {
                return false;
              }
            }
          }
          return config.ref !== void 0;
        }
        function hasValidKey(config) {
          {
            if (hasOwnProperty.call(config, "key")) {
              var getter = Object.getOwnPropertyDescriptor(config, "key").get;
              if (getter && getter.isReactWarning) {
                return false;
              }
            }
          }
          return config.key !== void 0;
        }
        function warnIfStringRefCannotBeAutoConverted(config, self2) {
          {
            if (typeof config.ref === "string" && ReactCurrentOwner.current && self2 && ReactCurrentOwner.current.stateNode !== self2) {
              var componentName = getComponentNameFromType(ReactCurrentOwner.current.type);
              if (!didWarnAboutStringRefs[componentName]) {
                error('Component "%s" contains the string ref "%s". Support for string refs will be removed in a future major release. This case cannot be automatically converted to an arrow function. We ask you to manually fix this case by using useRef() or createRef() instead. Learn more about using refs safely here: https://reactjs.org/link/strict-mode-string-ref', getComponentNameFromType(ReactCurrentOwner.current.type), config.ref);
                didWarnAboutStringRefs[componentName] = true;
              }
            }
          }
        }
        function defineKeyPropWarningGetter(props, displayName) {
          {
            var warnAboutAccessingKey = function() {
              if (!specialPropKeyWarningShown) {
                specialPropKeyWarningShown = true;
                error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)", displayName);
              }
            };
            warnAboutAccessingKey.isReactWarning = true;
            Object.defineProperty(props, "key", {
              get: warnAboutAccessingKey,
              configurable: true
            });
          }
        }
        function defineRefPropWarningGetter(props, displayName) {
          {
            var warnAboutAccessingRef = function() {
              if (!specialPropRefWarningShown) {
                specialPropRefWarningShown = true;
                error("%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)", displayName);
              }
            };
            warnAboutAccessingRef.isReactWarning = true;
            Object.defineProperty(props, "ref", {
              get: warnAboutAccessingRef,
              configurable: true
            });
          }
        }
        var ReactElement = function(type, key, ref, self2, source, owner, props) {
          var element = {
            // This tag allows us to uniquely identify this as a React Element
            $$typeof: REACT_ELEMENT_TYPE,
            // Built-in properties that belong on the element
            type,
            key,
            ref,
            props,
            // Record the component responsible for creating this element.
            _owner: owner
          };
          {
            element._store = {};
            Object.defineProperty(element._store, "validated", {
              configurable: false,
              enumerable: false,
              writable: true,
              value: false
            });
            Object.defineProperty(element, "_self", {
              configurable: false,
              enumerable: false,
              writable: false,
              value: self2
            });
            Object.defineProperty(element, "_source", {
              configurable: false,
              enumerable: false,
              writable: false,
              value: source
            });
            if (Object.freeze) {
              Object.freeze(element.props);
              Object.freeze(element);
            }
          }
          return element;
        };
        function jsxDEV(type, config, maybeKey, source, self2) {
          {
            var propName;
            var props = {};
            var key = null;
            var ref = null;
            if (maybeKey !== void 0) {
              {
                checkKeyStringCoercion(maybeKey);
              }
              key = "" + maybeKey;
            }
            if (hasValidKey(config)) {
              {
                checkKeyStringCoercion(config.key);
              }
              key = "" + config.key;
            }
            if (hasValidRef(config)) {
              ref = config.ref;
              warnIfStringRefCannotBeAutoConverted(config, self2);
            }
            for (propName in config) {
              if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {
                props[propName] = config[propName];
              }
            }
            if (type && type.defaultProps) {
              var defaultProps = type.defaultProps;
              for (propName in defaultProps) {
                if (props[propName] === void 0) {
                  props[propName] = defaultProps[propName];
                }
              }
            }
            if (key || ref) {
              var displayName = typeof type === "function" ? type.displayName || type.name || "Unknown" : type;
              if (key) {
                defineKeyPropWarningGetter(props, displayName);
              }
              if (ref) {
                defineRefPropWarningGetter(props, displayName);
              }
            }
            return ReactElement(type, key, ref, self2, source, ReactCurrentOwner.current, props);
          }
        }
        var ReactCurrentOwner$1 = ReactSharedInternals.ReactCurrentOwner;
        var ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;
        function setCurrentlyValidatingElement$1(element) {
          {
            if (element) {
              var owner = element._owner;
              var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);
              ReactDebugCurrentFrame$1.setExtraStackFrame(stack);
            } else {
              ReactDebugCurrentFrame$1.setExtraStackFrame(null);
            }
          }
        }
        var propTypesMisspellWarningShown;
        {
          propTypesMisspellWarningShown = false;
        }
        function isValidElement(object) {
          {
            return typeof object === "object" && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;
          }
        }
        function getDeclarationErrorAddendum() {
          {
            if (ReactCurrentOwner$1.current) {
              var name = getComponentNameFromType(ReactCurrentOwner$1.current.type);
              if (name) {
                return "\n\nCheck the render method of `" + name + "`.";
              }
            }
            return "";
          }
        }
        function getSourceInfoErrorAddendum(source) {
          {
            if (source !== void 0) {
              var fileName = source.fileName.replace(/^.*[\\\/]/, "");
              var lineNumber = source.lineNumber;
              return "\n\nCheck your code at " + fileName + ":" + lineNumber + ".";
            }
            return "";
          }
        }
        var ownerHasKeyUseWarning = {};
        function getCurrentComponentErrorInfo(parentType) {
          {
            var info = getDeclarationErrorAddendum();
            if (!info) {
              var parentName = typeof parentType === "string" ? parentType : parentType.displayName || parentType.name;
              if (parentName) {
                info = "\n\nCheck the top-level render call using <" + parentName + ">.";
              }
            }
            return info;
          }
        }
        function validateExplicitKey(element, parentType) {
          {
            if (!element._store || element._store.validated || element.key != null) {
              return;
            }
            element._store.validated = true;
            var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);
            if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {
              return;
            }
            ownerHasKeyUseWarning[currentComponentErrorInfo] = true;
            var childOwner = "";
            if (element && element._owner && element._owner !== ReactCurrentOwner$1.current) {
              childOwner = " It was passed a child from " + getComponentNameFromType(element._owner.type) + ".";
            }
            setCurrentlyValidatingElement$1(element);
            error('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner);
            setCurrentlyValidatingElement$1(null);
          }
        }
        function validateChildKeys(node, parentType) {
          {
            if (typeof node !== "object") {
              return;
            }
            if (isArray(node)) {
              for (var i = 0; i < node.length; i++) {
                var child = node[i];
                if (isValidElement(child)) {
                  validateExplicitKey(child, parentType);
                }
              }
            } else if (isValidElement(node)) {
              if (node._store) {
                node._store.validated = true;
              }
            } else if (node) {
              var iteratorFn = getIteratorFn(node);
              if (typeof iteratorFn === "function") {
                if (iteratorFn !== node.entries) {
                  var iterator = iteratorFn.call(node);
                  var step;
                  while (!(step = iterator.next()).done) {
                    if (isValidElement(step.value)) {
                      validateExplicitKey(step.value, parentType);
                    }
                  }
                }
              }
            }
          }
        }
        function validatePropTypes(element) {
          {
            var type = element.type;
            if (type === null || type === void 0 || typeof type === "string") {
              return;
            }
            var propTypes;
            if (typeof type === "function") {
              propTypes = type.propTypes;
            } else if (typeof type === "object" && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.
            // Inner props are checked in the reconciler.
            type.$$typeof === REACT_MEMO_TYPE)) {
              propTypes = type.propTypes;
            } else {
              return;
            }
            if (propTypes) {
              var name = getComponentNameFromType(type);
              checkPropTypes(propTypes, element.props, "prop", name, element);
            } else if (type.PropTypes !== void 0 && !propTypesMisspellWarningShown) {
              propTypesMisspellWarningShown = true;
              var _name = getComponentNameFromType(type);
              error("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?", _name || "Unknown");
            }
            if (typeof type.getDefaultProps === "function" && !type.getDefaultProps.isReactClassApproved) {
              error("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.");
            }
          }
        }
        function validateFragmentProps(fragment) {
          {
            var keys = Object.keys(fragment.props);
            for (var i = 0; i < keys.length; i++) {
              var key = keys[i];
              if (key !== "children" && key !== "key") {
                setCurrentlyValidatingElement$1(fragment);
                error("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.", key);
                setCurrentlyValidatingElement$1(null);
                break;
              }
            }
            if (fragment.ref !== null) {
              setCurrentlyValidatingElement$1(fragment);
              error("Invalid attribute `ref` supplied to `React.Fragment`.");
              setCurrentlyValidatingElement$1(null);
            }
          }
        }
        var didWarnAboutKeySpread = {};
        function jsxWithValidation(type, props, key, isStaticChildren, source, self2) {
          {
            var validType = isValidElementType(type);
            if (!validType) {
              var info = "";
              if (type === void 0 || typeof type === "object" && type !== null && Object.keys(type).length === 0) {
                info += " You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.";
              }
              var sourceInfo = getSourceInfoErrorAddendum(source);
              if (sourceInfo) {
                info += sourceInfo;
              } else {
                info += getDeclarationErrorAddendum();
              }
              var typeString;
              if (type === null) {
                typeString = "null";
              } else if (isArray(type)) {
                typeString = "array";
              } else if (type !== void 0 && type.$$typeof === REACT_ELEMENT_TYPE) {
                typeString = "<" + (getComponentNameFromType(type.type) || "Unknown") + " />";
                info = " Did you accidentally export a JSX literal instead of a component?";
              } else {
                typeString = typeof type;
              }
              error("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s", typeString, info);
            }
            var element = jsxDEV(type, props, key, source, self2);
            if (element == null) {
              return element;
            }
            if (validType) {
              var children = props.children;
              if (children !== void 0) {
                if (isStaticChildren) {
                  if (isArray(children)) {
                    for (var i = 0; i < children.length; i++) {
                      validateChildKeys(children[i], type);
                    }
                    if (Object.freeze) {
                      Object.freeze(children);
                    }
                  } else {
                    error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");
                  }
                } else {
                  validateChildKeys(children, type);
                }
              }
            }
            {
              if (hasOwnProperty.call(props, "key")) {
                var componentName = getComponentNameFromType(type);
                var keys = Object.keys(props).filter(function(k) {
                  return k !== "key";
                });
                var beforeExample = keys.length > 0 ? "{key: someKey, " + keys.join(": ..., ") + ": ...}" : "{key: someKey}";
                if (!didWarnAboutKeySpread[componentName + beforeExample]) {
                  var afterExample = keys.length > 0 ? "{" + keys.join(": ..., ") + ": ...}" : "{}";
                  error('A props object containing a "key" prop is being spread into JSX:\n  let props = %s;\n  <%s {...props} />\nReact keys must be passed directly to JSX without using spread:\n  let props = %s;\n  <%s key={someKey} {...props} />', beforeExample, componentName, afterExample, componentName);
                  didWarnAboutKeySpread[componentName + beforeExample] = true;
                }
              }
            }
            if (type === REACT_FRAGMENT_TYPE) {
              validateFragmentProps(element);
            } else {
              validatePropTypes(element);
            }
            return element;
          }
        }
        function jsxWithValidationStatic(type, props, key) {
          {
            return jsxWithValidation(type, props, key, true);
          }
        }
        function jsxWithValidationDynamic(type, props, key) {
          {
            return jsxWithValidation(type, props, key, false);
          }
        }
        var jsx = jsxWithValidationDynamic;
        var jsxs = jsxWithValidationStatic;
        exports2.Fragment = REACT_FRAGMENT_TYPE;
        exports2.jsx = jsx;
        exports2.jsxs = jsxs;
      })();
    }
  }
});

// node_modules/react/jsx-runtime.js
var require_jsx_runtime = __commonJS({
  "node_modules/react/jsx-runtime.js"(exports2, module2) {
    "use strict";
    if (false) {
      module2.exports = null;
    } else {
      module2.exports = require_react_jsx_runtime_development();
    }
  }
});

// node_modules/scheduler/cjs/scheduler.development.js
var require_scheduler_development = __commonJS({
  "node_modules/scheduler/cjs/scheduler.development.js"(exports2) {
    "use strict";
    if (true) {
      (function() {
        "use strict";
        if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== "undefined" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart === "function") {
          __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());
        }
        var enableSchedulerDebugging = false;
        var enableProfiling = false;
        var frameYieldMs = 5;
        function push(heap, node) {
          var index = heap.length;
          heap.push(node);
          siftUp(heap, node, index);
        }
        function peek(heap) {
          return heap.length === 0 ? null : heap[0];
        }
        function pop(heap) {
          if (heap.length === 0) {
            return null;
          }
          var first = heap[0];
          var last = heap.pop();
          if (last !== first) {
            heap[0] = last;
            siftDown(heap, last, 0);
          }
          return first;
        }
        function siftUp(heap, node, i) {
          var index = i;
          while (index > 0) {
            var parentIndex = index - 1 >>> 1;
            var parent = heap[parentIndex];
            if (compare(parent, node) > 0) {
              heap[parentIndex] = node;
              heap[index] = parent;
              index = parentIndex;
            } else {
              return;
            }
          }
        }
        function siftDown(heap, node, i) {
          var index = i;
          var length = heap.length;
          var halfLength = length >>> 1;
          while (index < halfLength) {
            var leftIndex = (index + 1) * 2 - 1;
            var left = heap[leftIndex];
            var rightIndex = leftIndex + 1;
            var right = heap[rightIndex];
            if (compare(left, node) < 0) {
              if (rightIndex < length && compare(right, left) < 0) {
                heap[index] = right;
                heap[rightIndex] = node;
                index = rightIndex;
              } else {
                heap[index] = left;
                heap[leftIndex] = node;
                index = leftIndex;
              }
            } else if (rightIndex < length && compare(right, node) < 0) {
              heap[index] = right;
              heap[rightIndex] = node;
              index = rightIndex;
            } else {
              return;
            }
          }
        }
        function compare(a, b) {
          var diff = a.sortIndex - b.sortIndex;
          return diff !== 0 ? diff : a.id - b.id;
        }
        var ImmediatePriority = 1;
        var UserBlockingPriority = 2;
        var NormalPriority = 3;
        var LowPriority = 4;
        var IdlePriority = 5;
        function markTaskErrored(task, ms) {
        }
        var hasPerformanceNow = typeof performance === "object" && typeof performance.now === "function";
        if (hasPerformanceNow) {
          var localPerformance = performance;
          exports2.unstable_now = function() {
            return localPerformance.now();
          };
        } else {
          var localDate = Date;
          var initialTime = localDate.now();
          exports2.unstable_now = function() {
            return localDate.now() - initialTime;
          };
        }
        var maxSigned31BitInt = 1073741823;
        var IMMEDIATE_PRIORITY_TIMEOUT = -1;
        var USER_BLOCKING_PRIORITY_TIMEOUT = 250;
        var NORMAL_PRIORITY_TIMEOUT = 5e3;
        var LOW_PRIORITY_TIMEOUT = 1e4;
        var IDLE_PRIORITY_TIMEOUT = maxSigned31BitInt;
        var taskQueue = [];
        var timerQueue = [];
        var taskIdCounter = 1;
        var currentTask = null;
        var currentPriorityLevel = NormalPriority;
        var isPerformingWork = false;
        var isHostCallbackScheduled = false;
        var isHostTimeoutScheduled = false;
        var localSetTimeout = typeof setTimeout === "function" ? setTimeout : null;
        var localClearTimeout = typeof clearTimeout === "function" ? clearTimeout : null;
        var localSetImmediate = typeof setImmediate !== "undefined" ? setImmediate : null;
        var isInputPending = typeof navigator !== "undefined" && navigator.scheduling !== void 0 && navigator.scheduling.isInputPending !== void 0 ? navigator.scheduling.isInputPending.bind(navigator.scheduling) : null;
        function advanceTimers(currentTime) {
          var timer = peek(timerQueue);
          while (timer !== null) {
            if (timer.callback === null) {
              pop(timerQueue);
            } else if (timer.startTime <= currentTime) {
              pop(timerQueue);
              timer.sortIndex = timer.expirationTime;
              push(taskQueue, timer);
            } else {
              return;
            }
            timer = peek(timerQueue);
          }
        }
        function handleTimeout(currentTime) {
          isHostTimeoutScheduled = false;
          advanceTimers(currentTime);
          if (!isHostCallbackScheduled) {
            if (peek(taskQueue) !== null) {
              isHostCallbackScheduled = true;
              requestHostCallback(flushWork);
            } else {
              var firstTimer = peek(timerQueue);
              if (firstTimer !== null) {
                requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);
              }
            }
          }
        }
        function flushWork(hasTimeRemaining, initialTime2) {
          isHostCallbackScheduled = false;
          if (isHostTimeoutScheduled) {
            isHostTimeoutScheduled = false;
            cancelHostTimeout();
          }
          isPerformingWork = true;
          var previousPriorityLevel = currentPriorityLevel;
          try {
            if (enableProfiling) {
              try {
                return workLoop(hasTimeRemaining, initialTime2);
              } catch (error) {
                if (currentTask !== null) {
                  var currentTime = exports2.unstable_now();
                  markTaskErrored(currentTask, currentTime);
                  currentTask.isQueued = false;
                }
                throw error;
              }
            } else {
              return workLoop(hasTimeRemaining, initialTime2);
            }
          } finally {
            currentTask = null;
            currentPriorityLevel = previousPriorityLevel;
            isPerformingWork = false;
          }
        }
        function workLoop(hasTimeRemaining, initialTime2) {
          var currentTime = initialTime2;
          advanceTimers(currentTime);
          currentTask = peek(taskQueue);
          while (currentTask !== null && !enableSchedulerDebugging) {
            if (currentTask.expirationTime > currentTime && (!hasTimeRemaining || shouldYieldToHost())) {
              break;
            }
            var callback = currentTask.callback;
            if (typeof callback === "function") {
              currentTask.callback = null;
              currentPriorityLevel = currentTask.priorityLevel;
              var didUserCallbackTimeout = currentTask.expirationTime <= currentTime;
              var continuationCallback = callback(didUserCallbackTimeout);
              currentTime = exports2.unstable_now();
              if (typeof continuationCallback === "function") {
                currentTask.callback = continuationCallback;
              } else {
                if (currentTask === peek(taskQueue)) {
                  pop(taskQueue);
                }
              }
              advanceTimers(currentTime);
            } else {
              pop(taskQueue);
            }
            currentTask = peek(taskQueue);
          }
          if (currentTask !== null) {
            return true;
          } else {
            var firstTimer = peek(timerQueue);
            if (firstTimer !== null) {
              requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);
            }
            return false;
          }
        }
        function unstable_runWithPriority(priorityLevel, eventHandler) {
          switch (priorityLevel) {
            case ImmediatePriority:
            case UserBlockingPriority:
            case NormalPriority:
            case LowPriority:
            case IdlePriority:
              break;
            default:
              priorityLevel = NormalPriority;
          }
          var previousPriorityLevel = currentPriorityLevel;
          currentPriorityLevel = priorityLevel;
          try {
            return eventHandler();
          } finally {
            currentPriorityLevel = previousPriorityLevel;
          }
        }
        function unstable_next(eventHandler) {
          var priorityLevel;
          switch (currentPriorityLevel) {
            case ImmediatePriority:
            case UserBlockingPriority:
            case NormalPriority:
              priorityLevel = NormalPriority;
              break;
            default:
              priorityLevel = currentPriorityLevel;
              break;
          }
          var previousPriorityLevel = currentPriorityLevel;
          currentPriorityLevel = priorityLevel;
          try {
            return eventHandler();
          } finally {
            currentPriorityLevel = previousPriorityLevel;
          }
        }
        function unstable_wrapCallback(callback) {
          var parentPriorityLevel = currentPriorityLevel;
          return function() {
            var previousPriorityLevel = currentPriorityLevel;
            currentPriorityLevel = parentPriorityLevel;
            try {
              return callback.apply(this, arguments);
            } finally {
              currentPriorityLevel = previousPriorityLevel;
            }
          };
        }
        function unstable_scheduleCallback(priorityLevel, callback, options) {
          var currentTime = exports2.unstable_now();
          var startTime2;
          if (typeof options === "object" && options !== null) {
            var delay = options.delay;
            if (typeof delay === "number" && delay > 0) {
              startTime2 = currentTime + delay;
            } else {
              startTime2 = currentTime;
            }
          } else {
            startTime2 = currentTime;
          }
          var timeout;
          switch (priorityLevel) {
            case ImmediatePriority:
              timeout = IMMEDIATE_PRIORITY_TIMEOUT;
              break;
            case UserBlockingPriority:
              timeout = USER_BLOCKING_PRIORITY_TIMEOUT;
              break;
            case IdlePriority:
              timeout = IDLE_PRIORITY_TIMEOUT;
              break;
            case LowPriority:
              timeout = LOW_PRIORITY_TIMEOUT;
              break;
            case NormalPriority:
            default:
              timeout = NORMAL_PRIORITY_TIMEOUT;
              break;
          }
          var expirationTime = startTime2 + timeout;
          var newTask = {
            id: taskIdCounter++,
            callback,
            priorityLevel,
            startTime: startTime2,
            expirationTime,
            sortIndex: -1
          };
          if (startTime2 > currentTime) {
            newTask.sortIndex = startTime2;
            push(timerQueue, newTask);
            if (peek(taskQueue) === null && newTask === peek(timerQueue)) {
              if (isHostTimeoutScheduled) {
                cancelHostTimeout();
              } else {
                isHostTimeoutScheduled = true;
              }
              requestHostTimeout(handleTimeout, startTime2 - currentTime);
            }
          } else {
            newTask.sortIndex = expirationTime;
            push(taskQueue, newTask);
            if (!isHostCallbackScheduled && !isPerformingWork) {
              isHostCallbackScheduled = true;
              requestHostCallback(flushWork);
            }
          }
          return newTask;
        }
        function unstable_pauseExecution() {
        }
        function unstable_continueExecution() {
          if (!isHostCallbackScheduled && !isPerformingWork) {
            isHostCallbackScheduled = true;
            requestHostCallback(flushWork);
          }
        }
        function unstable_getFirstCallbackNode() {
          return peek(taskQueue);
        }
        function unstable_cancelCallback(task) {
          task.callback = null;
        }
        function unstable_getCurrentPriorityLevel() {
          return currentPriorityLevel;
        }
        var isMessageLoopRunning = false;
        var scheduledHostCallback = null;
        var taskTimeoutID = -1;
        var frameInterval = frameYieldMs;
        var startTime = -1;
        function shouldYieldToHost() {
          var timeElapsed = exports2.unstable_now() - startTime;
          if (timeElapsed < frameInterval) {
            return false;
          }
          return true;
        }
        function requestPaint() {
        }
        function forceFrameRate(fps) {
          if (fps < 0 || fps > 125) {
            console["error"]("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported");
            return;
          }
          if (fps > 0) {
            frameInterval = Math.floor(1e3 / fps);
          } else {
            frameInterval = frameYieldMs;
          }
        }
        var performWorkUntilDeadline = function() {
          if (scheduledHostCallback !== null) {
            var currentTime = exports2.unstable_now();
            startTime = currentTime;
            var hasTimeRemaining = true;
            var hasMoreWork = true;
            try {
              hasMoreWork = scheduledHostCallback(hasTimeRemaining, currentTime);
            } finally {
              if (hasMoreWork) {
                schedulePerformWorkUntilDeadline();
              } else {
                isMessageLoopRunning = false;
                scheduledHostCallback = null;
              }
            }
          } else {
            isMessageLoopRunning = false;
          }
        };
        var schedulePerformWorkUntilDeadline;
        if (typeof localSetImmediate === "function") {
          schedulePerformWorkUntilDeadline = function() {
            localSetImmediate(performWorkUntilDeadline);
          };
        } else if (typeof MessageChannel !== "undefined") {
          var channel = new MessageChannel();
          var port = channel.port2;
          channel.port1.onmessage = performWorkUntilDeadline;
          schedulePerformWorkUntilDeadline = function() {
            port.postMessage(null);
          };
        } else {
          schedulePerformWorkUntilDeadline = function() {
            localSetTimeout(performWorkUntilDeadline, 0);
          };
        }
        function requestHostCallback(callback) {
          scheduledHostCallback = callback;
          if (!isMessageLoopRunning) {
            isMessageLoopRunning = true;
            schedulePerformWorkUntilDeadline();
          }
        }
        function requestHostTimeout(callback, ms) {
          taskTimeoutID = localSetTimeout(function() {
            callback(exports2.unstable_now());
          }, ms);
        }
        function cancelHostTimeout() {
          localClearTimeout(taskTimeoutID);
          taskTimeoutID = -1;
        }
        var unstable_requestPaint = requestPaint;
        var unstable_Profiling = null;
        exports2.unstable_IdlePriority = IdlePriority;
        exports2.unstable_ImmediatePriority = ImmediatePriority;
        exports2.unstable_LowPriority = LowPriority;
        exports2.unstable_NormalPriority = NormalPriority;
        exports2.unstable_Profiling = unstable_Profiling;
        exports2.unstable_UserBlockingPriority = UserBlockingPriority;
        exports2.unstable_cancelCallback = unstable_cancelCallback;
        exports2.unstable_continueExecution = unstable_continueExecution;
        exports2.unstable_forceFrameRate = forceFrameRate;
        exports2.unstable_getCurrentPriorityLevel = unstable_getCurrentPriorityLevel;
        exports2.unstable_getFirstCallbackNode = unstable_getFirstCallbackNode;
        exports2.unstable_next = unstable_next;
        exports2.unstable_pauseExecution = unstable_pauseExecution;
        exports2.unstable_requestPaint = unstable_requestPaint;
        exports2.unstable_runWithPriority = unstable_runWithPriority;
        exports2.unstable_scheduleCallback = unstable_scheduleCallback;
        exports2.unstable_shouldYield = shouldYieldToHost;
        exports2.unstable_wrapCallback = unstable_wrapCallback;
        if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== "undefined" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop === "function") {
          __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());
        }
      })();
    }
  }
});

// node_modules/scheduler/index.js
var require_scheduler = __commonJS({
  "node_modules/scheduler/index.js"(exports2, module2) {
    "use strict";
    if (false) {
      module2.exports = null;
    } else {
      module2.exports = require_scheduler_development();
    }
  }
});

// node_modules/react-dom/cjs/react-dom.development.js
var require_react_dom_development = __commonJS({
  "node_modules/react-dom/cjs/react-dom.development.js"(exports2) {
    "use strict";
    if (true) {
      (function() {
        "use strict";
        if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== "undefined" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart === "function") {
          __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());
        }
        var React2 = require_react();
        var Scheduler = require_scheduler();
        var ReactSharedInternals = React2.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
        var suppressWarning = false;
        function setSuppressWarning(newSuppressWarning) {
          {
            suppressWarning = newSuppressWarning;
          }
        }
        function warn(format) {
          {
            if (!suppressWarning) {
              for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
                args[_key - 1] = arguments[_key];
              }
              printWarning("warn", format, args);
            }
          }
        }
        function error(format) {
          {
            if (!suppressWarning) {
              for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
                args[_key2 - 1] = arguments[_key2];
              }
              printWarning("error", format, args);
            }
          }
        }
        function printWarning(level, format, args) {
          {
            var ReactDebugCurrentFrame2 = ReactSharedInternals.ReactDebugCurrentFrame;
            var stack = ReactDebugCurrentFrame2.getStackAddendum();
            if (stack !== "") {
              format += "%s";
              args = args.concat([stack]);
            }
            var argsWithFormat = args.map(function(item) {
              return String(item);
            });
            argsWithFormat.unshift("Warning: " + format);
            Function.prototype.apply.call(console[level], console, argsWithFormat);
          }
        }
        var FunctionComponent = 0;
        var ClassComponent = 1;
        var IndeterminateComponent = 2;
        var HostRoot = 3;
        var HostPortal = 4;
        var HostComponent = 5;
        var HostText = 6;
        var Fragment2 = 7;
        var Mode = 8;
        var ContextConsumer = 9;
        var ContextProvider = 10;
        var ForwardRef = 11;
        var Profiler = 12;
        var SuspenseComponent = 13;
        var MemoComponent = 14;
        var SimpleMemoComponent = 15;
        var LazyComponent = 16;
        var IncompleteClassComponent = 17;
        var DehydratedFragment = 18;
        var SuspenseListComponent = 19;
        var ScopeComponent = 21;
        var OffscreenComponent = 22;
        var LegacyHiddenComponent = 23;
        var CacheComponent = 24;
        var TracingMarkerComponent = 25;
        var enableClientRenderFallbackOnTextMismatch = true;
        var enableNewReconciler = false;
        var enableLazyContextPropagation = false;
        var enableLegacyHidden = false;
        var enableSuspenseAvoidThisFallback = false;
        var disableCommentsAsDOMContainers = true;
        var enableCustomElementPropertySupport = false;
        var warnAboutStringRefs = true;
        var enableSchedulingProfiler = true;
        var enableProfilerTimer = true;
        var enableProfilerCommitHooks = true;
        var allNativeEvents = /* @__PURE__ */ new Set();
        var registrationNameDependencies = {};
        var possibleRegistrationNames = {};
        function registerTwoPhaseEvent(registrationName, dependencies) {
          registerDirectEvent(registrationName, dependencies);
          registerDirectEvent(registrationName + "Capture", dependencies);
        }
        function registerDirectEvent(registrationName, dependencies) {
          {
            if (registrationNameDependencies[registrationName]) {
              error("EventRegistry: More than one plugin attempted to publish the same registration name, `%s`.", registrationName);
            }
          }
          registrationNameDependencies[registrationName] = dependencies;
          {
            var lowerCasedName = registrationName.toLowerCase();
            possibleRegistrationNames[lowerCasedName] = registrationName;
            if (registrationName === "onDoubleClick") {
              possibleRegistrationNames.ondblclick = registrationName;
            }
          }
          for (var i = 0; i < dependencies.length; i++) {
            allNativeEvents.add(dependencies[i]);
          }
        }
        var canUseDOM = !!(typeof window !== "undefined" && typeof window.document !== "undefined" && typeof window.document.createElement !== "undefined");
        var hasOwnProperty = Object.prototype.hasOwnProperty;
        function typeName(value) {
          {
            var hasToStringTag = typeof Symbol === "function" && Symbol.toStringTag;
            var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || "Object";
            return type;
          }
        }
        function willCoercionThrow(value) {
          {
            try {
              testStringCoercion(value);
              return false;
            } catch (e) {
              return true;
            }
          }
        }
        function testStringCoercion(value) {
          return "" + value;
        }
        function checkAttributeStringCoercion(value, attributeName) {
          {
            if (willCoercionThrow(value)) {
              error("The provided `%s` attribute is an unsupported type %s. This value must be coerced to a string before before using it here.", attributeName, typeName(value));
              return testStringCoercion(value);
            }
          }
        }
        function checkKeyStringCoercion(value) {
          {
            if (willCoercionThrow(value)) {
              error("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.", typeName(value));
              return testStringCoercion(value);
            }
          }
        }
        function checkPropStringCoercion(value, propName) {
          {
            if (willCoercionThrow(value)) {
              error("The provided `%s` prop is an unsupported type %s. This value must be coerced to a string before before using it here.", propName, typeName(value));
              return testStringCoercion(value);
            }
          }
        }
        function checkCSSPropertyStringCoercion(value, propName) {
          {
            if (willCoercionThrow(value)) {
              error("The provided `%s` CSS property is an unsupported type %s. This value must be coerced to a string before before using it here.", propName, typeName(value));
              return testStringCoercion(value);
            }
          }
        }
        function checkHtmlStringCoercion(value) {
          {
            if (willCoercionThrow(value)) {
              error("The provided HTML markup uses a value of unsupported type %s. This value must be coerced to a string before before using it here.", typeName(value));
              return testStringCoercion(value);
            }
          }
        }
        function checkFormFieldValueStringCoercion(value) {
          {
            if (willCoercionThrow(value)) {
              error("Form field values (value, checked, defaultValue, or defaultChecked props) must be strings, not %s. This value must be coerced to a string before before using it here.", typeName(value));
              return testStringCoercion(value);
            }
          }
        }
        var RESERVED = 0;
        var STRING = 1;
        var BOOLEANISH_STRING = 2;
        var BOOLEAN = 3;
        var OVERLOADED_BOOLEAN = 4;
        var NUMERIC = 5;
        var POSITIVE_NUMERIC = 6;
        var ATTRIBUTE_NAME_START_CHAR = ":A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD";
        var ATTRIBUTE_NAME_CHAR = ATTRIBUTE_NAME_START_CHAR + "\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040";
        var VALID_ATTRIBUTE_NAME_REGEX = new RegExp("^[" + ATTRIBUTE_NAME_START_CHAR + "][" + ATTRIBUTE_NAME_CHAR + "]*$");
        var illegalAttributeNameCache = {};
        var validatedAttributeNameCache = {};
        function isAttributeNameSafe(attributeName) {
          if (hasOwnProperty.call(validatedAttributeNameCache, attributeName)) {
            return true;
          }
          if (hasOwnProperty.call(illegalAttributeNameCache, attributeName)) {
            return false;
          }
          if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName)) {
            validatedAttributeNameCache[attributeName] = true;
            return true;
          }
          illegalAttributeNameCache[attributeName] = true;
          {
            error("Invalid attribute name: `%s`", attributeName);
          }
          return false;
        }
        function shouldIgnoreAttribute(name, propertyInfo, isCustomComponentTag) {
          if (propertyInfo !== null) {
            return propertyInfo.type === RESERVED;
          }
          if (isCustomComponentTag) {
            return false;
          }
          if (name.length > 2 && (name[0] === "o" || name[0] === "O") && (name[1] === "n" || name[1] === "N")) {
            return true;
          }
          return false;
        }
        function shouldRemoveAttributeWithWarning(name, value, propertyInfo, isCustomComponentTag) {
          if (propertyInfo !== null && propertyInfo.type === RESERVED) {
            return false;
          }
          switch (typeof value) {
            case "function":
            // $FlowIssue symbol is perfectly valid here
            case "symbol":
              return true;
            case "boolean": {
              if (isCustomComponentTag) {
                return false;
              }
              if (propertyInfo !== null) {
                return !propertyInfo.acceptsBooleans;
              } else {
                var prefix2 = name.toLowerCase().slice(0, 5);
                return prefix2 !== "data-" && prefix2 !== "aria-";
              }
            }
            default:
              return false;
          }
        }
        function shouldRemoveAttribute(name, value, propertyInfo, isCustomComponentTag) {
          if (value === null || typeof value === "undefined") {
            return true;
          }
          if (shouldRemoveAttributeWithWarning(name, value, propertyInfo, isCustomComponentTag)) {
            return true;
          }
          if (isCustomComponentTag) {
            return false;
          }
          if (propertyInfo !== null) {
            switch (propertyInfo.type) {
              case BOOLEAN:
                return !value;
              case OVERLOADED_BOOLEAN:
                return value === false;
              case NUMERIC:
                return isNaN(value);
              case POSITIVE_NUMERIC:
                return isNaN(value) || value < 1;
            }
          }
          return false;
        }
        function getPropertyInfo(name) {
          return properties.hasOwnProperty(name) ? properties[name] : null;
        }
        function PropertyInfoRecord(name, type, mustUseProperty, attributeName, attributeNamespace, sanitizeURL2, removeEmptyString) {
          this.acceptsBooleans = type === BOOLEANISH_STRING || type === BOOLEAN || type === OVERLOADED_BOOLEAN;
          this.attributeName = attributeName;
          this.attributeNamespace = attributeNamespace;
          this.mustUseProperty = mustUseProperty;
          this.propertyName = name;
          this.type = type;
          this.sanitizeURL = sanitizeURL2;
          this.removeEmptyString = removeEmptyString;
        }
        var properties = {};
        var reservedProps = [
          "children",
          "dangerouslySetInnerHTML",
          // TODO: This prevents the assignment of defaultValue to regular
          // elements (not just inputs). Now that ReactDOMInput assigns to the
          // defaultValue property -- do we need this?
          "defaultValue",
          "defaultChecked",
          "innerHTML",
          "suppressContentEditableWarning",
          "suppressHydrationWarning",
          "style"
        ];
        reservedProps.forEach(function(name) {
          properties[name] = new PropertyInfoRecord(
            name,
            RESERVED,
            false,
            // mustUseProperty
            name,
            // attributeName
            null,
            // attributeNamespace
            false,
            // sanitizeURL
            false
          );
        });
        [["acceptCharset", "accept-charset"], ["className", "class"], ["htmlFor", "for"], ["httpEquiv", "http-equiv"]].forEach(function(_ref) {
          var name = _ref[0], attributeName = _ref[1];
          properties[name] = new PropertyInfoRecord(
            name,
            STRING,
            false,
            // mustUseProperty
            attributeName,
            // attributeName
            null,
            // attributeNamespace
            false,
            // sanitizeURL
            false
          );
        });
        ["contentEditable", "draggable", "spellCheck", "value"].forEach(function(name) {
          properties[name] = new PropertyInfoRecord(
            name,
            BOOLEANISH_STRING,
            false,
            // mustUseProperty
            name.toLowerCase(),
            // attributeName
            null,
            // attributeNamespace
            false,
            // sanitizeURL
            false
          );
        });
        ["autoReverse", "externalResourcesRequired", "focusable", "preserveAlpha"].forEach(function(name) {
          properties[name] = new PropertyInfoRecord(
            name,
            BOOLEANISH_STRING,
            false,
            // mustUseProperty
            name,
            // attributeName
            null,
            // attributeNamespace
            false,
            // sanitizeURL
            false
          );
        });
        [
          "allowFullScreen",
          "async",
          // Note: there is a special case that prevents it from being written to the DOM
          // on the client side because the browsers are inconsistent. Instead we call focus().
          "autoFocus",
          "autoPlay",
          "controls",
          "default",
          "defer",
          "disabled",
          "disablePictureInPicture",
          "disableRemotePlayback",
          "formNoValidate",
          "hidden",
          "loop",
          "noModule",
          "noValidate",
          "open",
          "playsInline",
          "readOnly",
          "required",
          "reversed",
          "scoped",
          "seamless",
          // Microdata
          "itemScope"
        ].forEach(function(name) {
          properties[name] = new PropertyInfoRecord(
            name,
            BOOLEAN,
            false,
            // mustUseProperty
            name.toLowerCase(),
            // attributeName
            null,
            // attributeNamespace
            false,
            // sanitizeURL
            false
          );
        });
        [
          "checked",
          // Note: `option.selected` is not updated if `select.multiple` is
          // disabled with `removeAttribute`. We have special logic for handling this.
          "multiple",
          "muted",
          "selected"
          // NOTE: if you add a camelCased prop to this list,
          // you'll need to set attributeName to name.toLowerCase()
          // instead in the assignment below.
        ].forEach(function(name) {
          properties[name] = new PropertyInfoRecord(
            name,
            BOOLEAN,
            true,
            // mustUseProperty
            name,
            // attributeName
            null,
            // attributeNamespace
            false,
            // sanitizeURL
            false
          );
        });
        [
          "capture",
          "download"
          // NOTE: if you add a camelCased prop to this list,
          // you'll need to set attributeName to name.toLowerCase()
          // instead in the assignment below.
        ].forEach(function(name) {
          properties[name] = new PropertyInfoRecord(
            name,
            OVERLOADED_BOOLEAN,
            false,
            // mustUseProperty
            name,
            // attributeName
            null,
            // attributeNamespace
            false,
            // sanitizeURL
            false
          );
        });
        [
          "cols",
          "rows",
          "size",
          "span"
          // NOTE: if you add a camelCased prop to this list,
          // you'll need to set attributeName to name.toLowerCase()
          // instead in the assignment below.
        ].forEach(function(name) {
          properties[name] = new PropertyInfoRecord(
            name,
            POSITIVE_NUMERIC,
            false,
            // mustUseProperty
            name,
            // attributeName
            null,
            // attributeNamespace
            false,
            // sanitizeURL
            false
          );
        });
        ["rowSpan", "start"].forEach(function(name) {
          properties[name] = new PropertyInfoRecord(
            name,
            NUMERIC,
            false,
            // mustUseProperty
            name.toLowerCase(),
            // attributeName
            null,
            // attributeNamespace
            false,
            // sanitizeURL
            false
          );
        });
        var CAMELIZE = /[\-\:]([a-z])/g;
        var capitalize = function(token) {
          return token[1].toUpperCase();
        };
        [
          "accent-height",
          "alignment-baseline",
          "arabic-form",
          "baseline-shift",
          "cap-height",
          "clip-path",
          "clip-rule",
          "color-interpolation",
          "color-interpolation-filters",
          "color-profile",
          "color-rendering",
          "dominant-baseline",
          "enable-background",
          "fill-opacity",
          "fill-rule",
          "flood-color",
          "flood-opacity",
          "font-family",
          "font-size",
          "font-size-adjust",
          "font-stretch",
          "font-style",
          "font-variant",
          "font-weight",
          "glyph-name",
          "glyph-orientation-horizontal",
          "glyph-orientation-vertical",
          "horiz-adv-x",
          "horiz-origin-x",
          "image-rendering",
          "letter-spacing",
          "lighting-color",
          "marker-end",
          "marker-mid",
          "marker-start",
          "overline-position",
          "overline-thickness",
          "paint-order",
          "panose-1",
          "pointer-events",
          "rendering-intent",
          "shape-rendering",
          "stop-color",
          "stop-opacity",
          "strikethrough-position",
          "strikethrough-thickness",
          "stroke-dasharray",
          "stroke-dashoffset",
          "stroke-linecap",
          "stroke-linejoin",
          "stroke-miterlimit",
          "stroke-opacity",
          "stroke-width",
          "text-anchor",
          "text-decoration",
          "text-rendering",
          "underline-position",
          "underline-thickness",
          "unicode-bidi",
          "unicode-range",
          "units-per-em",
          "v-alphabetic",
          "v-hanging",
          "v-ideographic",
          "v-mathematical",
          "vector-effect",
          "vert-adv-y",
          "vert-origin-x",
          "vert-origin-y",
          "word-spacing",
          "writing-mode",
          "xmlns:xlink",
          "x-height"
          // NOTE: if you add a camelCased prop to this list,
          // you'll need to set attributeName to name.toLowerCase()
          // instead in the assignment below.
        ].forEach(function(attributeName) {
          var name = attributeName.replace(CAMELIZE, capitalize);
          properties[name] = new PropertyInfoRecord(
            name,
            STRING,
            false,
            // mustUseProperty
            attributeName,
            null,
            // attributeNamespace
            false,
            // sanitizeURL
            false
          );
        });
        [
          "xlink:actuate",
          "xlink:arcrole",
          "xlink:role",
          "xlink:show",
          "xlink:title",
          "xlink:type"
          // NOTE: if you add a camelCased prop to this list,
          // you'll need to set attributeName to name.toLowerCase()
          // instead in the assignment below.
        ].forEach(function(attributeName) {
          var name = attributeName.replace(CAMELIZE, capitalize);
          properties[name] = new PropertyInfoRecord(
            name,
            STRING,
            false,
            // mustUseProperty
            attributeName,
            "http://www.w3.org/1999/xlink",
            false,
            // sanitizeURL
            false
          );
        });
        [
          "xml:base",
          "xml:lang",
          "xml:space"
          // NOTE: if you add a camelCased prop to this list,
          // you'll need to set attributeName to name.toLowerCase()
          // instead in the assignment below.
        ].forEach(function(attributeName) {
          var name = attributeName.replace(CAMELIZE, capitalize);
          properties[name] = new PropertyInfoRecord(
            name,
            STRING,
            false,
            // mustUseProperty
            attributeName,
            "http://www.w3.org/XML/1998/namespace",
            false,
            // sanitizeURL
            false
          );
        });
        ["tabIndex", "crossOrigin"].forEach(function(attributeName) {
          properties[attributeName] = new PropertyInfoRecord(
            attributeName,
            STRING,
            false,
            // mustUseProperty
            attributeName.toLowerCase(),
            // attributeName
            null,
            // attributeNamespace
            false,
            // sanitizeURL
            false
          );
        });
        var xlinkHref = "xlinkHref";
        properties[xlinkHref] = new PropertyInfoRecord(
          "xlinkHref",
          STRING,
          false,
          // mustUseProperty
          "xlink:href",
          "http://www.w3.org/1999/xlink",
          true,
          // sanitizeURL
          false
        );
        ["src", "href", "action", "formAction"].forEach(function(attributeName) {
          properties[attributeName] = new PropertyInfoRecord(
            attributeName,
            STRING,
            false,
            // mustUseProperty
            attributeName.toLowerCase(),
            // attributeName
            null,
            // attributeNamespace
            true,
            // sanitizeURL
            true
          );
        });
        var isJavaScriptProtocol = /^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*\:/i;
        var didWarn = false;
        function sanitizeURL(url) {
          {
            if (!didWarn && isJavaScriptProtocol.test(url)) {
              didWarn = true;
              error("A future version of React will block javascript: URLs as a security precaution. Use event handlers instead if you can. If you need to generate unsafe HTML try using dangerouslySetInnerHTML instead. React was passed %s.", JSON.stringify(url));
            }
          }
        }
        function getValueForProperty(node, name, expected, propertyInfo) {
          {
            if (propertyInfo.mustUseProperty) {
              var propertyName = propertyInfo.propertyName;
              return node[propertyName];
            } else {
              {
                checkAttributeStringCoercion(expected, name);
              }
              if (propertyInfo.sanitizeURL) {
                sanitizeURL("" + expected);
              }
              var attributeName = propertyInfo.attributeName;
              var stringValue = null;
              if (propertyInfo.type === OVERLOADED_BOOLEAN) {
                if (node.hasAttribute(attributeName)) {
                  var value = node.getAttribute(attributeName);
                  if (value === "") {
                    return true;
                  }
                  if (shouldRemoveAttribute(name, expected, propertyInfo, false)) {
                    return value;
                  }
                  if (value === "" + expected) {
                    return expected;
                  }
                  return value;
                }
              } else if (node.hasAttribute(attributeName)) {
                if (shouldRemoveAttribute(name, expected, propertyInfo, false)) {
                  return node.getAttribute(attributeName);
                }
                if (propertyInfo.type === BOOLEAN) {
                  return expected;
                }
                stringValue = node.getAttribute(attributeName);
              }
              if (shouldRemoveAttribute(name, expected, propertyInfo, false)) {
                return stringValue === null ? expected : stringValue;
              } else if (stringValue === "" + expected) {
                return expected;
              } else {
                return stringValue;
              }
            }
          }
        }
        function getValueForAttribute(node, name, expected, isCustomComponentTag) {
          {
            if (!isAttributeNameSafe(name)) {
              return;
            }
            if (!node.hasAttribute(name)) {
              return expected === void 0 ? void 0 : null;
            }
            var value = node.getAttribute(name);
            {
              checkAttributeStringCoercion(expected, name);
            }
            if (value === "" + expected) {
              return expected;
            }
            return value;
          }
        }
        function setValueForProperty(node, name, value, isCustomComponentTag) {
          var propertyInfo = getPropertyInfo(name);
          if (shouldIgnoreAttribute(name, propertyInfo, isCustomComponentTag)) {
            return;
          }
          if (shouldRemoveAttribute(name, value, propertyInfo, isCustomComponentTag)) {
            value = null;
          }
          if (isCustomComponentTag || propertyInfo === null) {
            if (isAttributeNameSafe(name)) {
              var _attributeName = name;
              if (value === null) {
                node.removeAttribute(_attributeName);
              } else {
                {
                  checkAttributeStringCoercion(value, name);
                }
                node.setAttribute(_attributeName, "" + value);
              }
            }
            return;
          }
          var mustUseProperty = propertyInfo.mustUseProperty;
          if (mustUseProperty) {
            var propertyName = propertyInfo.propertyName;
            if (value === null) {
              var type = propertyInfo.type;
              node[propertyName] = type === BOOLEAN ? false : "";
            } else {
              node[propertyName] = value;
            }
            return;
          }
          var attributeName = propertyInfo.attributeName, attributeNamespace = propertyInfo.attributeNamespace;
          if (value === null) {
            node.removeAttribute(attributeName);
          } else {
            var _type = propertyInfo.type;
            var attributeValue;
            if (_type === BOOLEAN || _type === OVERLOADED_BOOLEAN && value === true) {
              attributeValue = "";
            } else {
              {
                {
                  checkAttributeStringCoercion(value, attributeName);
                }
                attributeValue = "" + value;
              }
              if (propertyInfo.sanitizeURL) {
                sanitizeURL(attributeValue.toString());
              }
            }
            if (attributeNamespace) {
              node.setAttributeNS(attributeNamespace, attributeName, attributeValue);
            } else {
              node.setAttribute(attributeName, attributeValue);
            }
          }
        }
        var REACT_ELEMENT_TYPE = Symbol.for("react.element");
        var REACT_PORTAL_TYPE = Symbol.for("react.portal");
        var REACT_FRAGMENT_TYPE = Symbol.for("react.fragment");
        var REACT_STRICT_MODE_TYPE = Symbol.for("react.strict_mode");
        var REACT_PROFILER_TYPE = Symbol.for("react.profiler");
        var REACT_PROVIDER_TYPE = Symbol.for("react.provider");
        var REACT_CONTEXT_TYPE = Symbol.for("react.context");
        var REACT_FORWARD_REF_TYPE = Symbol.for("react.forward_ref");
        var REACT_SUSPENSE_TYPE = Symbol.for("react.suspense");
        var REACT_SUSPENSE_LIST_TYPE = Symbol.for("react.suspense_list");
        var REACT_MEMO_TYPE = Symbol.for("react.memo");
        var REACT_LAZY_TYPE = Symbol.for("react.lazy");
        var REACT_SCOPE_TYPE = Symbol.for("react.scope");
        var REACT_DEBUG_TRACING_MODE_TYPE = Symbol.for("react.debug_trace_mode");
        var REACT_OFFSCREEN_TYPE = Symbol.for("react.offscreen");
        var REACT_LEGACY_HIDDEN_TYPE = Symbol.for("react.legacy_hidden");
        var REACT_CACHE_TYPE = Symbol.for("react.cache");
        var REACT_TRACING_MARKER_TYPE = Symbol.for("react.tracing_marker");
        var MAYBE_ITERATOR_SYMBOL = Symbol.iterator;
        var FAUX_ITERATOR_SYMBOL = "@@iterator";
        function getIteratorFn(maybeIterable) {
          if (maybeIterable === null || typeof maybeIterable !== "object") {
            return null;
          }
          var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];
          if (typeof maybeIterator === "function") {
            return maybeIterator;
          }
          return null;
        }
        var assign = Object.assign;
        var disabledDepth = 0;
        var prevLog;
        var prevInfo;
        var prevWarn;
        var prevError;
        var prevGroup;
        var prevGroupCollapsed;
        var prevGroupEnd;
        function disabledLog() {
        }
        disabledLog.__reactDisabledLog = true;
        function disableLogs() {
          {
            if (disabledDepth === 0) {
              prevLog = console.log;
              prevInfo = console.info;
              prevWarn = console.warn;
              prevError = console.error;
              prevGroup = console.group;
              prevGroupCollapsed = console.groupCollapsed;
              prevGroupEnd = console.groupEnd;
              var props = {
                configurable: true,
                enumerable: true,
                value: disabledLog,
                writable: true
              };
              Object.defineProperties(console, {
                info: props,
                log: props,
                warn: props,
                error: props,
                group: props,
                groupCollapsed: props,
                groupEnd: props
              });
            }
            disabledDepth++;
          }
        }
        function reenableLogs() {
          {
            disabledDepth--;
            if (disabledDepth === 0) {
              var props = {
                configurable: true,
                enumerable: true,
                writable: true
              };
              Object.defineProperties(console, {
                log: assign({}, props, {
                  value: prevLog
                }),
                info: assign({}, props, {
                  value: prevInfo
                }),
                warn: assign({}, props, {
                  value: prevWarn
                }),
                error: assign({}, props, {
                  value: prevError
                }),
                group: assign({}, props, {
                  value: prevGroup
                }),
                groupCollapsed: assign({}, props, {
                  value: prevGroupCollapsed
                }),
                groupEnd: assign({}, props, {
                  value: prevGroupEnd
                })
              });
            }
            if (disabledDepth < 0) {
              error("disabledDepth fell below zero. This is a bug in React. Please file an issue.");
            }
          }
        }
        var ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;
        var prefix;
        function describeBuiltInComponentFrame(name, source, ownerFn) {
          {
            if (prefix === void 0) {
              try {
                throw Error();
              } catch (x) {
                var match = x.stack.trim().match(/\n( *(at )?)/);
                prefix = match && match[1] || "";
              }
            }
            return "\n" + prefix + name;
          }
        }
        var reentry = false;
        var componentFrameCache;
        {
          var PossiblyWeakMap = typeof WeakMap === "function" ? WeakMap : Map;
          componentFrameCache = new PossiblyWeakMap();
        }
        function describeNativeComponentFrame(fn, construct) {
          if (!fn || reentry) {
            return "";
          }
          {
            var frame = componentFrameCache.get(fn);
            if (frame !== void 0) {
              return frame;
            }
          }
          var control;
          reentry = true;
          var previousPrepareStackTrace = Error.prepareStackTrace;
          Error.prepareStackTrace = void 0;
          var previousDispatcher;
          {
            previousDispatcher = ReactCurrentDispatcher.current;
            ReactCurrentDispatcher.current = null;
            disableLogs();
          }
          try {
            if (construct) {
              var Fake = function() {
                throw Error();
              };
              Object.defineProperty(Fake.prototype, "props", {
                set: function() {
                  throw Error();
                }
              });
              if (typeof Reflect === "object" && Reflect.construct) {
                try {
                  Reflect.construct(Fake, []);
                } catch (x) {
                  control = x;
                }
                Reflect.construct(fn, [], Fake);
              } else {
                try {
                  Fake.call();
                } catch (x) {
                  control = x;
                }
                fn.call(Fake.prototype);
              }
            } else {
              try {
                throw Error();
              } catch (x) {
                control = x;
              }
              fn();
            }
          } catch (sample) {
            if (sample && control && typeof sample.stack === "string") {
              var sampleLines = sample.stack.split("\n");
              var controlLines = control.stack.split("\n");
              var s = sampleLines.length - 1;
              var c = controlLines.length - 1;
              while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {
                c--;
              }
              for (; s >= 1 && c >= 0; s--, c--) {
                if (sampleLines[s] !== controlLines[c]) {
                  if (s !== 1 || c !== 1) {
                    do {
                      s--;
                      c--;
                      if (c < 0 || sampleLines[s] !== controlLines[c]) {
                        var _frame = "\n" + sampleLines[s].replace(" at new ", " at ");
                        if (fn.displayName && _frame.includes("<anonymous>")) {
                          _frame = _frame.replace("<anonymous>", fn.displayName);
                        }
                        {
                          if (typeof fn === "function") {
                            componentFrameCache.set(fn, _frame);
                          }
                        }
                        return _frame;
                      }
                    } while (s >= 1 && c >= 0);
                  }
                  break;
                }
              }
            }
          } finally {
            reentry = false;
            {
              ReactCurrentDispatcher.current = previousDispatcher;
              reenableLogs();
            }
            Error.prepareStackTrace = previousPrepareStackTrace;
          }
          var name = fn ? fn.displayName || fn.name : "";
          var syntheticFrame = name ? describeBuiltInComponentFrame(name) : "";
          {
            if (typeof fn === "function") {
              componentFrameCache.set(fn, syntheticFrame);
            }
          }
          return syntheticFrame;
        }
        function describeClassComponentFrame(ctor, source, ownerFn) {
          {
            return describeNativeComponentFrame(ctor, true);
          }
        }
        function describeFunctionComponentFrame(fn, source, ownerFn) {
          {
            return describeNativeComponentFrame(fn, false);
          }
        }
        function shouldConstruct(Component) {
          var prototype = Component.prototype;
          return !!(prototype && prototype.isReactComponent);
        }
        function describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {
          if (type == null) {
            return "";
          }
          if (typeof type === "function") {
            {
              return describeNativeComponentFrame(type, shouldConstruct(type));
            }
          }
          if (typeof type === "string") {
            return describeBuiltInComponentFrame(type);
          }
          switch (type) {
            case REACT_SUSPENSE_TYPE:
              return describeBuiltInComponentFrame("Suspense");
            case REACT_SUSPENSE_LIST_TYPE:
              return describeBuiltInComponentFrame("SuspenseList");
          }
          if (typeof type === "object") {
            switch (type.$$typeof) {
              case REACT_FORWARD_REF_TYPE:
                return describeFunctionComponentFrame(type.render);
              case REACT_MEMO_TYPE:
                return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);
              case REACT_LAZY_TYPE: {
                var lazyComponent = type;
                var payload = lazyComponent._payload;
                var init = lazyComponent._init;
                try {
                  return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);
                } catch (x) {
                }
              }
            }
          }
          return "";
        }
        function describeFiber(fiber) {
          var owner = fiber._debugOwner ? fiber._debugOwner.type : null;
          var source = fiber._debugSource;
          switch (fiber.tag) {
            case HostComponent:
              return describeBuiltInComponentFrame(fiber.type);
            case LazyComponent:
              return describeBuiltInComponentFrame("Lazy");
            case SuspenseComponent:
              return describeBuiltInComponentFrame("Suspense");
            case SuspenseListComponent:
              return describeBuiltInComponentFrame("SuspenseList");
            case FunctionComponent:
            case IndeterminateComponent:
            case SimpleMemoComponent:
              return describeFunctionComponentFrame(fiber.type);
            case ForwardRef:
              return describeFunctionComponentFrame(fiber.type.render);
            case ClassComponent:
              return describeClassComponentFrame(fiber.type);
            default:
              return "";
          }
        }
        function getStackByFiberInDevAndProd(workInProgress2) {
          try {
            var info = "";
            var node = workInProgress2;
            do {
              info += describeFiber(node);
              node = node.return;
            } while (node);
            return info;
          } catch (x) {
            return "\nError generating stack: " + x.message + "\n" + x.stack;
          }
        }
        function getWrappedName(outerType, innerType, wrapperName) {
          var displayName = outerType.displayName;
          if (displayName) {
            return displayName;
          }
          var functionName = innerType.displayName || innerType.name || "";
          return functionName !== "" ? wrapperName + "(" + functionName + ")" : wrapperName;
        }
        function getContextName(type) {
          return type.displayName || "Context";
        }
        function getComponentNameFromType(type) {
          if (type == null) {
            return null;
          }
          {
            if (typeof type.tag === "number") {
              error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.");
            }
          }
          if (typeof type === "function") {
            return type.displayName || type.name || null;
          }
          if (typeof type === "string") {
            return type;
          }
          switch (type) {
            case REACT_FRAGMENT_TYPE:
              return "Fragment";
            case REACT_PORTAL_TYPE:
              return "Portal";
            case REACT_PROFILER_TYPE:
              return "Profiler";
            case REACT_STRICT_MODE_TYPE:
              return "StrictMode";
            case REACT_SUSPENSE_TYPE:
              return "Suspense";
            case REACT_SUSPENSE_LIST_TYPE:
              return "SuspenseList";
          }
          if (typeof type === "object") {
            switch (type.$$typeof) {
              case REACT_CONTEXT_TYPE:
                var context = type;
                return getContextName(context) + ".Consumer";
              case REACT_PROVIDER_TYPE:
                var provider = type;
                return getContextName(provider._context) + ".Provider";
              case REACT_FORWARD_REF_TYPE:
                return getWrappedName(type, type.render, "ForwardRef");
              case REACT_MEMO_TYPE:
                var outerName = type.displayName || null;
                if (outerName !== null) {
                  return outerName;
                }
                return getComponentNameFromType(type.type) || "Memo";
              case REACT_LAZY_TYPE: {
                var lazyComponent = type;
                var payload = lazyComponent._payload;
                var init = lazyComponent._init;
                try {
                  return getComponentNameFromType(init(payload));
                } catch (x) {
                  return null;
                }
              }
            }
          }
          return null;
        }
        function getWrappedName$1(outerType, innerType, wrapperName) {
          var functionName = innerType.displayName || innerType.name || "";
          return outerType.displayName || (functionName !== "" ? wrapperName + "(" + functionName + ")" : wrapperName);
        }
        function getContextName$1(type) {
          return type.displayName || "Context";
        }
        function getComponentNameFromFiber(fiber) {
          var tag = fiber.tag, type = fiber.type;
          switch (tag) {
            case CacheComponent:
              return "Cache";
            case ContextConsumer:
              var context = type;
              return getContextName$1(context) + ".Consumer";
            case ContextProvider:
              var provider = type;
              return getContextName$1(provider._context) + ".Provider";
            case DehydratedFragment:
              return "DehydratedFragment";
            case ForwardRef:
              return getWrappedName$1(type, type.render, "ForwardRef");
            case Fragment2:
              return "Fragment";
            case HostComponent:
              return type;
            case HostPortal:
              return "Portal";
            case HostRoot:
              return "Root";
            case HostText:
              return "Text";
            case LazyComponent:
              return getComponentNameFromType(type);
            case Mode:
              if (type === REACT_STRICT_MODE_TYPE) {
                return "StrictMode";
              }
              return "Mode";
            case OffscreenComponent:
              return "Offscreen";
            case Profiler:
              return "Profiler";
            case ScopeComponent:
              return "Scope";
            case SuspenseComponent:
              return "Suspense";
            case SuspenseListComponent:
              return "SuspenseList";
            case TracingMarkerComponent:
              return "TracingMarker";
            // The display name for this tags come from the user-provided type:
            case ClassComponent:
            case FunctionComponent:
            case IncompleteClassComponent:
            case IndeterminateComponent:
            case MemoComponent:
            case SimpleMemoComponent:
              if (typeof type === "function") {
                return type.displayName || type.name || null;
              }
              if (typeof type === "string") {
                return type;
              }
              break;
          }
          return null;
        }
        var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;
        var current = null;
        var isRendering = false;
        function getCurrentFiberOwnerNameInDevOrNull() {
          {
            if (current === null) {
              return null;
            }
            var owner = current._debugOwner;
            if (owner !== null && typeof owner !== "undefined") {
              return getComponentNameFromFiber(owner);
            }
          }
          return null;
        }
        function getCurrentFiberStackInDev() {
          {
            if (current === null) {
              return "";
            }
            return getStackByFiberInDevAndProd(current);
          }
        }
        function resetCurrentFiber() {
          {
            ReactDebugCurrentFrame.getCurrentStack = null;
            current = null;
            isRendering = false;
          }
        }
        function setCurrentFiber(fiber) {
          {
            ReactDebugCurrentFrame.getCurrentStack = fiber === null ? null : getCurrentFiberStackInDev;
            current = fiber;
            isRendering = false;
          }
        }
        function getCurrentFiber() {
          {
            return current;
          }
        }
        function setIsRendering(rendering) {
          {
            isRendering = rendering;
          }
        }
        function toString(value) {
          return "" + value;
        }
        function getToStringValue(value) {
          switch (typeof value) {
            case "boolean":
            case "number":
            case "string":
            case "undefined":
              return value;
            case "object":
              {
                checkFormFieldValueStringCoercion(value);
              }
              return value;
            default:
              return "";
          }
        }
        var hasReadOnlyValue = {
          button: true,
          checkbox: true,
          image: true,
          hidden: true,
          radio: true,
          reset: true,
          submit: true
        };
        function checkControlledValueProps(tagName, props) {
          {
            if (!(hasReadOnlyValue[props.type] || props.onChange || props.onInput || props.readOnly || props.disabled || props.value == null)) {
              error("You provided a `value` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultValue`. Otherwise, set either `onChange` or `readOnly`.");
            }
            if (!(props.onChange || props.readOnly || props.disabled || props.checked == null)) {
              error("You provided a `checked` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultChecked`. Otherwise, set either `onChange` or `readOnly`.");
            }
          }
        }
        function isCheckable(elem) {
          var type = elem.type;
          var nodeName = elem.nodeName;
          return nodeName && nodeName.toLowerCase() === "input" && (type === "checkbox" || type === "radio");
        }
        function getTracker(node) {
          return node._valueTracker;
        }
        function detachTracker(node) {
          node._valueTracker = null;
        }
        function getValueFromNode(node) {
          var value = "";
          if (!node) {
            return value;
          }
          if (isCheckable(node)) {
            value = node.checked ? "true" : "false";
          } else {
            value = node.value;
          }
          return value;
        }
        function trackValueOnNode(node) {
          var valueField = isCheckable(node) ? "checked" : "value";
          var descriptor = Object.getOwnPropertyDescriptor(node.constructor.prototype, valueField);
          {
            checkFormFieldValueStringCoercion(node[valueField]);
          }
          var currentValue = "" + node[valueField];
          if (node.hasOwnProperty(valueField) || typeof descriptor === "undefined" || typeof descriptor.get !== "function" || typeof descriptor.set !== "function") {
            return;
          }
          var get2 = descriptor.get, set2 = descriptor.set;
          Object.defineProperty(node, valueField, {
            configurable: true,
            get: function() {
              return get2.call(this);
            },
            set: function(value) {
              {
                checkFormFieldValueStringCoercion(value);
              }
              currentValue = "" + value;
              set2.call(this, value);
            }
          });
          Object.defineProperty(node, valueField, {
            enumerable: descriptor.enumerable
          });
          var tracker = {
            getValue: function() {
              return currentValue;
            },
            setValue: function(value) {
              {
                checkFormFieldValueStringCoercion(value);
              }
              currentValue = "" + value;
            },
            stopTracking: function() {
              detachTracker(node);
              delete node[valueField];
            }
          };
          return tracker;
        }
        function track(node) {
          if (getTracker(node)) {
            return;
          }
          node._valueTracker = trackValueOnNode(node);
        }
        function updateValueIfChanged(node) {
          if (!node) {
            return false;
          }
          var tracker = getTracker(node);
          if (!tracker) {
            return true;
          }
          var lastValue = tracker.getValue();
          var nextValue = getValueFromNode(node);
          if (nextValue !== lastValue) {
            tracker.setValue(nextValue);
            return true;
          }
          return false;
        }
        function getActiveElement(doc) {
          doc = doc || (typeof document !== "undefined" ? document : void 0);
          if (typeof doc === "undefined") {
            return null;
          }
          try {
            return doc.activeElement || doc.body;
          } catch (e) {
            return doc.body;
          }
        }
        var didWarnValueDefaultValue = false;
        var didWarnCheckedDefaultChecked = false;
        var didWarnControlledToUncontrolled = false;
        var didWarnUncontrolledToControlled = false;
        function isControlled(props) {
          var usesChecked = props.type === "checkbox" || props.type === "radio";
          return usesChecked ? props.checked != null : props.value != null;
        }
        function getHostProps(element, props) {
          var node = element;
          var checked = props.checked;
          var hostProps = assign({}, props, {
            defaultChecked: void 0,
            defaultValue: void 0,
            value: void 0,
            checked: checked != null ? checked : node._wrapperState.initialChecked
          });
          return hostProps;
        }
        function initWrapperState(element, props) {
          {
            checkControlledValueProps("input", props);
            if (props.checked !== void 0 && props.defaultChecked !== void 0 && !didWarnCheckedDefaultChecked) {
              error("%s contains an input of type %s with both checked and defaultChecked props. Input elements must be either controlled or uncontrolled (specify either the checked prop, or the defaultChecked prop, but not both). Decide between using a controlled or uncontrolled input element and remove one of these props. More info: https://reactjs.org/link/controlled-components", getCurrentFiberOwnerNameInDevOrNull() || "A component", props.type);
              didWarnCheckedDefaultChecked = true;
            }
            if (props.value !== void 0 && props.defaultValue !== void 0 && !didWarnValueDefaultValue) {
              error("%s contains an input of type %s with both value and defaultValue props. Input elements must be either controlled or uncontrolled (specify either the value prop, or the defaultValue prop, but not both). Decide between using a controlled or uncontrolled input element and remove one of these props. More info: https://reactjs.org/link/controlled-components", getCurrentFiberOwnerNameInDevOrNull() || "A component", props.type);
              didWarnValueDefaultValue = true;
            }
          }
          var node = element;
          var defaultValue = props.defaultValue == null ? "" : props.defaultValue;
          node._wrapperState = {
            initialChecked: props.checked != null ? props.checked : props.defaultChecked,
            initialValue: getToStringValue(props.value != null ? props.value : defaultValue),
            controlled: isControlled(props)
          };
        }
        function updateChecked(element, props) {
          var node = element;
          var checked = props.checked;
          if (checked != null) {
            setValueForProperty(node, "checked", checked, false);
          }
        }
        function updateWrapper(element, props) {
          var node = element;
          {
            var controlled = isControlled(props);
            if (!node._wrapperState.controlled && controlled && !didWarnUncontrolledToControlled) {
              error("A component is changing an uncontrolled input to be controlled. This is likely caused by the value changing from undefined to a defined value, which should not happen. Decide between using a controlled or uncontrolled input element for the lifetime of the component. More info: https://reactjs.org/link/controlled-components");
              didWarnUncontrolledToControlled = true;
            }
            if (node._wrapperState.controlled && !controlled && !didWarnControlledToUncontrolled) {
              error("A component is changing a controlled input to be uncontrolled. This is likely caused by the value changing from a defined to undefined, which should not happen. Decide between using a controlled or uncontrolled input element for the lifetime of the component. More info: https://reactjs.org/link/controlled-components");
              didWarnControlledToUncontrolled = true;
            }
          }
          updateChecked(element, props);
          var value = getToStringValue(props.value);
          var type = props.type;
          if (value != null) {
            if (type === "number") {
              if (value === 0 && node.value === "" || // We explicitly want to coerce to number here if possible.
              // eslint-disable-next-line
              node.value != value) {
                node.value = toString(value);
              }
            } else if (node.value !== toString(value)) {
              node.value = toString(value);
            }
          } else if (type === "submit" || type === "reset") {
            node.removeAttribute("value");
            return;
          }
          {
            if (props.hasOwnProperty("value")) {
              setDefaultValue(node, props.type, value);
            } else if (props.hasOwnProperty("defaultValue")) {
              setDefaultValue(node, props.type, getToStringValue(props.defaultValue));
            }
          }
          {
            if (props.checked == null && props.defaultChecked != null) {
              node.defaultChecked = !!props.defaultChecked;
            }
          }
        }
        function postMountWrapper(element, props, isHydrating2) {
          var node = element;
          if (props.hasOwnProperty("value") || props.hasOwnProperty("defaultValue")) {
            var type = props.type;
            var isButton = type === "submit" || type === "reset";
            if (isButton && (props.value === void 0 || props.value === null)) {
              return;
            }
            var initialValue = toString(node._wrapperState.initialValue);
            if (!isHydrating2) {
              {
                if (initialValue !== node.value) {
                  node.value = initialValue;
                }
              }
            }
            {
              node.defaultValue = initialValue;
            }
          }
          var name = node.name;
          if (name !== "") {
            node.name = "";
          }
          {
            node.defaultChecked = !node.defaultChecked;
            node.defaultChecked = !!node._wrapperState.initialChecked;
          }
          if (name !== "") {
            node.name = name;
          }
        }
        function restoreControlledState(element, props) {
          var node = element;
          updateWrapper(node, props);
          updateNamedCousins(node, props);
        }
        function updateNamedCousins(rootNode, props) {
          var name = props.name;
          if (props.type === "radio" && name != null) {
            var queryRoot = rootNode;
            while (queryRoot.parentNode) {
              queryRoot = queryRoot.parentNode;
            }
            {
              checkAttributeStringCoercion(name, "name");
            }
            var group = queryRoot.querySelectorAll("input[name=" + JSON.stringify("" + name) + '][type="radio"]');
            for (var i = 0; i < group.length; i++) {
              var otherNode = group[i];
              if (otherNode === rootNode || otherNode.form !== rootNode.form) {
                continue;
              }
              var otherProps = getFiberCurrentPropsFromNode(otherNode);
              if (!otherProps) {
                throw new Error("ReactDOMInput: Mixing React and non-React radio inputs with the same `name` is not supported.");
              }
              updateValueIfChanged(otherNode);
              updateWrapper(otherNode, otherProps);
            }
          }
        }
        function setDefaultValue(node, type, value) {
          if (
            // Focused number inputs synchronize on blur. See ChangeEventPlugin.js
            type !== "number" || getActiveElement(node.ownerDocument) !== node
          ) {
            if (value == null) {
              node.defaultValue = toString(node._wrapperState.initialValue);
            } else if (node.defaultValue !== toString(value)) {
              node.defaultValue = toString(value);
            }
          }
        }
        var didWarnSelectedSetOnOption = false;
        var didWarnInvalidChild = false;
        var didWarnInvalidInnerHTML = false;
        function validateProps(element, props) {
          {
            if (props.value == null) {
              if (typeof props.children === "object" && props.children !== null) {
                React2.Children.forEach(props.children, function(child) {
                  if (child == null) {
                    return;
                  }
                  if (typeof child === "string" || typeof child === "number") {
                    return;
                  }
                  if (!didWarnInvalidChild) {
                    didWarnInvalidChild = true;
                    error("Cannot infer the option value of complex children. Pass a `value` prop or use a plain string as children to <option>.");
                  }
                });
              } else if (props.dangerouslySetInnerHTML != null) {
                if (!didWarnInvalidInnerHTML) {
                  didWarnInvalidInnerHTML = true;
                  error("Pass a `value` prop if you set dangerouslyInnerHTML so React knows which value should be selected.");
                }
              }
            }
            if (props.selected != null && !didWarnSelectedSetOnOption) {
              error("Use the `defaultValue` or `value` props on <select> instead of setting `selected` on <option>.");
              didWarnSelectedSetOnOption = true;
            }
          }
        }
        function postMountWrapper$1(element, props) {
          if (props.value != null) {
            element.setAttribute("value", toString(getToStringValue(props.value)));
          }
        }
        var isArrayImpl = Array.isArray;
        function isArray(a) {
          return isArrayImpl(a);
        }
        var didWarnValueDefaultValue$1;
        {
          didWarnValueDefaultValue$1 = false;
        }
        function getDeclarationErrorAddendum() {
          var ownerName = getCurrentFiberOwnerNameInDevOrNull();
          if (ownerName) {
            return "\n\nCheck the render method of `" + ownerName + "`.";
          }
          return "";
        }
        var valuePropNames = ["value", "defaultValue"];
        function checkSelectPropTypes(props) {
          {
            checkControlledValueProps("select", props);
            for (var i = 0; i < valuePropNames.length; i++) {
              var propName = valuePropNames[i];
              if (props[propName] == null) {
                continue;
              }
              var propNameIsArray = isArray(props[propName]);
              if (props.multiple && !propNameIsArray) {
                error("The `%s` prop supplied to <select> must be an array if `multiple` is true.%s", propName, getDeclarationErrorAddendum());
              } else if (!props.multiple && propNameIsArray) {
                error("The `%s` prop supplied to <select> must be a scalar value if `multiple` is false.%s", propName, getDeclarationErrorAddendum());
              }
            }
          }
        }
        function updateOptions(node, multiple, propValue, setDefaultSelected) {
          var options2 = node.options;
          if (multiple) {
            var selectedValues = propValue;
            var selectedValue = {};
            for (var i = 0; i < selectedValues.length; i++) {
              selectedValue["$" + selectedValues[i]] = true;
            }
            for (var _i = 0; _i < options2.length; _i++) {
              var selected = selectedValue.hasOwnProperty("$" + options2[_i].value);
              if (options2[_i].selected !== selected) {
                options2[_i].selected = selected;
              }
              if (selected && setDefaultSelected) {
                options2[_i].defaultSelected = true;
              }
            }
          } else {
            var _selectedValue = toString(getToStringValue(propValue));
            var defaultSelected = null;
            for (var _i2 = 0; _i2 < options2.length; _i2++) {
              if (options2[_i2].value === _selectedValue) {
                options2[_i2].selected = true;
                if (setDefaultSelected) {
                  options2[_i2].defaultSelected = true;
                }
                return;
              }
              if (defaultSelected === null && !options2[_i2].disabled) {
                defaultSelected = options2[_i2];
              }
            }
            if (defaultSelected !== null) {
              defaultSelected.selected = true;
            }
          }
        }
        function getHostProps$1(element, props) {
          return assign({}, props, {
            value: void 0
          });
        }
        function initWrapperState$1(element, props) {
          var node = element;
          {
            checkSelectPropTypes(props);
          }
          node._wrapperState = {
            wasMultiple: !!props.multiple
          };
          {
            if (props.value !== void 0 && props.defaultValue !== void 0 && !didWarnValueDefaultValue$1) {
              error("Select elements must be either controlled or uncontrolled (specify either the value prop, or the defaultValue prop, but not both). Decide between using a controlled or uncontrolled select element and remove one of these props. More info: https://reactjs.org/link/controlled-components");
              didWarnValueDefaultValue$1 = true;
            }
          }
        }
        function postMountWrapper$2(element, props) {
          var node = element;
          node.multiple = !!props.multiple;
          var value = props.value;
          if (value != null) {
            updateOptions(node, !!props.multiple, value, false);
          } else if (props.defaultValue != null) {
            updateOptions(node, !!props.multiple, props.defaultValue, true);
          }
        }
        function postUpdateWrapper(element, props) {
          var node = element;
          var wasMultiple = node._wrapperState.wasMultiple;
          node._wrapperState.wasMultiple = !!props.multiple;
          var value = props.value;
          if (value != null) {
            updateOptions(node, !!props.multiple, value, false);
          } else if (wasMultiple !== !!props.multiple) {
            if (props.defaultValue != null) {
              updateOptions(node, !!props.multiple, props.defaultValue, true);
            } else {
              updateOptions(node, !!props.multiple, props.multiple ? [] : "", false);
            }
          }
        }
        function restoreControlledState$1(element, props) {
          var node = element;
          var value = props.value;
          if (value != null) {
            updateOptions(node, !!props.multiple, value, false);
          }
        }
        var didWarnValDefaultVal = false;
        function getHostProps$2(element, props) {
          var node = element;
          if (props.dangerouslySetInnerHTML != null) {
            throw new Error("`dangerouslySetInnerHTML` does not make sense on <textarea>.");
          }
          var hostProps = assign({}, props, {
            value: void 0,
            defaultValue: void 0,
            children: toString(node._wrapperState.initialValue)
          });
          return hostProps;
        }
        function initWrapperState$2(element, props) {
          var node = element;
          {
            checkControlledValueProps("textarea", props);
            if (props.value !== void 0 && props.defaultValue !== void 0 && !didWarnValDefaultVal) {
              error("%s contains a textarea with both value and defaultValue props. Textarea elements must be either controlled or uncontrolled (specify either the value prop, or the defaultValue prop, but not both). Decide between using a controlled or uncontrolled textarea and remove one of these props. More info: https://reactjs.org/link/controlled-components", getCurrentFiberOwnerNameInDevOrNull() || "A component");
              didWarnValDefaultVal = true;
            }
          }
          var initialValue = props.value;
          if (initialValue == null) {
            var children = props.children, defaultValue = props.defaultValue;
            if (children != null) {
              {
                error("Use the `defaultValue` or `value` props instead of setting children on <textarea>.");
              }
              {
                if (defaultValue != null) {
                  throw new Error("If you supply `defaultValue` on a <textarea>, do not pass children.");
                }
                if (isArray(children)) {
                  if (children.length > 1) {
                    throw new Error("<textarea> can only have at most one child.");
                  }
                  children = children[0];
                }
                defaultValue = children;
              }
            }
            if (defaultValue == null) {
              defaultValue = "";
            }
            initialValue = defaultValue;
          }
          node._wrapperState = {
            initialValue: getToStringValue(initialValue)
          };
        }
        function updateWrapper$1(element, props) {
          var node = element;
          var value = getToStringValue(props.value);
          var defaultValue = getToStringValue(props.defaultValue);
          if (value != null) {
            var newValue = toString(value);
            if (newValue !== node.value) {
              node.value = newValue;
            }
            if (props.defaultValue == null && node.defaultValue !== newValue) {
              node.defaultValue = newValue;
            }
          }
          if (defaultValue != null) {
            node.defaultValue = toString(defaultValue);
          }
        }
        function postMountWrapper$3(element, props) {
          var node = element;
          var textContent = node.textContent;
          if (textContent === node._wrapperState.initialValue) {
            if (textContent !== "" && textContent !== null) {
              node.value = textContent;
            }
          }
        }
        function restoreControlledState$2(element, props) {
          updateWrapper$1(element, props);
        }
        var HTML_NAMESPACE = "http://www.w3.org/1999/xhtml";
        var MATH_NAMESPACE = "http://www.w3.org/1998/Math/MathML";
        var SVG_NAMESPACE = "http://www.w3.org/2000/svg";
        function getIntrinsicNamespace(type) {
          switch (type) {
            case "svg":
              return SVG_NAMESPACE;
            case "math":
              return MATH_NAMESPACE;
            default:
              return HTML_NAMESPACE;
          }
        }
        function getChildNamespace(parentNamespace, type) {
          if (parentNamespace == null || parentNamespace === HTML_NAMESPACE) {
            return getIntrinsicNamespace(type);
          }
          if (parentNamespace === SVG_NAMESPACE && type === "foreignObject") {
            return HTML_NAMESPACE;
          }
          return parentNamespace;
        }
        var createMicrosoftUnsafeLocalFunction = function(func) {
          if (typeof MSApp !== "undefined" && MSApp.execUnsafeLocalFunction) {
            return function(arg0, arg1, arg2, arg3) {
              MSApp.execUnsafeLocalFunction(function() {
                return func(arg0, arg1, arg2, arg3);
              });
            };
          } else {
            return func;
          }
        };
        var reusableSVGContainer;
        var setInnerHTML = createMicrosoftUnsafeLocalFunction(function(node, html) {
          if (node.namespaceURI === SVG_NAMESPACE) {
            if (!("innerHTML" in node)) {
              reusableSVGContainer = reusableSVGContainer || document.createElement("div");
              reusableSVGContainer.innerHTML = "<svg>" + html.valueOf().toString() + "</svg>";
              var svgNode = reusableSVGContainer.firstChild;
              while (node.firstChild) {
                node.removeChild(node.firstChild);
              }
              while (svgNode.firstChild) {
                node.appendChild(svgNode.firstChild);
              }
              return;
            }
          }
          node.innerHTML = html;
        });
        var ELEMENT_NODE = 1;
        var TEXT_NODE = 3;
        var COMMENT_NODE = 8;
        var DOCUMENT_NODE = 9;
        var DOCUMENT_FRAGMENT_NODE = 11;
        var setTextContent = function(node, text) {
          if (text) {
            var firstChild = node.firstChild;
            if (firstChild && firstChild === node.lastChild && firstChild.nodeType === TEXT_NODE) {
              firstChild.nodeValue = text;
              return;
            }
          }
          node.textContent = text;
        };
        var shorthandToLonghand = {
          animation: ["animationDelay", "animationDirection", "animationDuration", "animationFillMode", "animationIterationCount", "animationName", "animationPlayState", "animationTimingFunction"],
          background: ["backgroundAttachment", "backgroundClip", "backgroundColor", "backgroundImage", "backgroundOrigin", "backgroundPositionX", "backgroundPositionY", "backgroundRepeat", "backgroundSize"],
          backgroundPosition: ["backgroundPositionX", "backgroundPositionY"],
          border: ["borderBottomColor", "borderBottomStyle", "borderBottomWidth", "borderImageOutset", "borderImageRepeat", "borderImageSlice", "borderImageSource", "borderImageWidth", "borderLeftColor", "borderLeftStyle", "borderLeftWidth", "borderRightColor", "borderRightStyle", "borderRightWidth", "borderTopColor", "borderTopStyle", "borderTopWidth"],
          borderBlockEnd: ["borderBlockEndColor", "borderBlockEndStyle", "borderBlockEndWidth"],
          borderBlockStart: ["borderBlockStartColor", "borderBlockStartStyle", "borderBlockStartWidth"],
          borderBottom: ["borderBottomColor", "borderBottomStyle", "borderBottomWidth"],
          borderColor: ["borderBottomColor", "borderLeftColor", "borderRightColor", "borderTopColor"],
          borderImage: ["borderImageOutset", "borderImageRepeat", "borderImageSlice", "borderImageSource", "borderImageWidth"],
          borderInlineEnd: ["borderInlineEndColor", "borderInlineEndStyle", "borderInlineEndWidth"],
          borderInlineStart: ["borderInlineStartColor", "borderInlineStartStyle", "borderInlineStartWidth"],
          borderLeft: ["borderLeftColor", "borderLeftStyle", "borderLeftWidth"],
          borderRadius: ["borderBottomLeftRadius", "borderBottomRightRadius", "borderTopLeftRadius", "borderTopRightRadius"],
          borderRight: ["borderRightColor", "borderRightStyle", "borderRightWidth"],
          borderStyle: ["borderBottomStyle", "borderLeftStyle", "borderRightStyle", "borderTopStyle"],
          borderTop: ["borderTopColor", "borderTopStyle", "borderTopWidth"],
          borderWidth: ["borderBottomWidth", "borderLeftWidth", "borderRightWidth", "borderTopWidth"],
          columnRule: ["columnRuleColor", "columnRuleStyle", "columnRuleWidth"],
          columns: ["columnCount", "columnWidth"],
          flex: ["flexBasis", "flexGrow", "flexShrink"],
          flexFlow: ["flexDirection", "flexWrap"],
          font: ["fontFamily", "fontFeatureSettings", "fontKerning", "fontLanguageOverride", "fontSize", "fontSizeAdjust", "fontStretch", "fontStyle", "fontVariant", "fontVariantAlternates", "fontVariantCaps", "fontVariantEastAsian", "fontVariantLigatures", "fontVariantNumeric", "fontVariantPosition", "fontWeight", "lineHeight"],
          fontVariant: ["fontVariantAlternates", "fontVariantCaps", "fontVariantEastAsian", "fontVariantLigatures", "fontVariantNumeric", "fontVariantPosition"],
          gap: ["columnGap", "rowGap"],
          grid: ["gridAutoColumns", "gridAutoFlow", "gridAutoRows", "gridTemplateAreas", "gridTemplateColumns", "gridTemplateRows"],
          gridArea: ["gridColumnEnd", "gridColumnStart", "gridRowEnd", "gridRowStart"],
          gridColumn: ["gridColumnEnd", "gridColumnStart"],
          gridColumnGap: ["columnGap"],
          gridGap: ["columnGap", "rowGap"],
          gridRow: ["gridRowEnd", "gridRowStart"],
          gridRowGap: ["rowGap"],
          gridTemplate: ["gridTemplateAreas", "gridTemplateColumns", "gridTemplateRows"],
          listStyle: ["listStyleImage", "listStylePosition", "listStyleType"],
          margin: ["marginBottom", "marginLeft", "marginRight", "marginTop"],
          marker: ["markerEnd", "markerMid", "markerStart"],
          mask: ["maskClip", "maskComposite", "maskImage", "maskMode", "maskOrigin", "maskPositionX", "maskPositionY", "maskRepeat", "maskSize"],
          maskPosition: ["maskPositionX", "maskPositionY"],
          outline: ["outlineColor", "outlineStyle", "outlineWidth"],
          overflow: ["overflowX", "overflowY"],
          padding: ["paddingBottom", "paddingLeft", "paddingRight", "paddingTop"],
          placeContent: ["alignContent", "justifyContent"],
          placeItems: ["alignItems", "justifyItems"],
          placeSelf: ["alignSelf", "justifySelf"],
          textDecoration: ["textDecorationColor", "textDecorationLine", "textDecorationStyle"],
          textEmphasis: ["textEmphasisColor", "textEmphasisStyle"],
          transition: ["transitionDelay", "transitionDuration", "transitionProperty", "transitionTimingFunction"],
          wordWrap: ["overflowWrap"]
        };
        var isUnitlessNumber = {
          animationIterationCount: true,
          aspectRatio: true,
          borderImageOutset: true,
          borderImageSlice: true,
          borderImageWidth: true,
          boxFlex: true,
          boxFlexGroup: true,
          boxOrdinalGroup: true,
          columnCount: true,
          columns: true,
          flex: true,
          flexGrow: true,
          flexPositive: true,
          flexShrink: true,
          flexNegative: true,
          flexOrder: true,
          gridArea: true,
          gridRow: true,
          gridRowEnd: true,
          gridRowSpan: true,
          gridRowStart: true,
          gridColumn: true,
          gridColumnEnd: true,
          gridColumnSpan: true,
          gridColumnStart: true,
          fontWeight: true,
          lineClamp: true,
          lineHeight: true,
          opacity: true,
          order: true,
          orphans: true,
          tabSize: true,
          widows: true,
          zIndex: true,
          zoom: true,
          // SVG-related properties
          fillOpacity: true,
          floodOpacity: true,
          stopOpacity: true,
          strokeDasharray: true,
          strokeDashoffset: true,
          strokeMiterlimit: true,
          strokeOpacity: true,
          strokeWidth: true
        };
        function prefixKey(prefix2, key) {
          return prefix2 + key.charAt(0).toUpperCase() + key.substring(1);
        }
        var prefixes = ["Webkit", "ms", "Moz", "O"];
        Object.keys(isUnitlessNumber).forEach(function(prop) {
          prefixes.forEach(function(prefix2) {
            isUnitlessNumber[prefixKey(prefix2, prop)] = isUnitlessNumber[prop];
          });
        });
        function dangerousStyleValue(name, value, isCustomProperty) {
          var isEmpty = value == null || typeof value === "boolean" || value === "";
          if (isEmpty) {
            return "";
          }
          if (!isCustomProperty && typeof value === "number" && value !== 0 && !(isUnitlessNumber.hasOwnProperty(name) && isUnitlessNumber[name])) {
            return value + "px";
          }
          {
            checkCSSPropertyStringCoercion(value, name);
          }
          return ("" + value).trim();
        }
        var uppercasePattern = /([A-Z])/g;
        var msPattern = /^ms-/;
        function hyphenateStyleName(name) {
          return name.replace(uppercasePattern, "-$1").toLowerCase().replace(msPattern, "-ms-");
        }
        var warnValidStyle = function() {
        };
        {
          var badVendoredStyleNamePattern = /^(?:webkit|moz|o)[A-Z]/;
          var msPattern$1 = /^-ms-/;
          var hyphenPattern = /-(.)/g;
          var badStyleValueWithSemicolonPattern = /;\s*$/;
          var warnedStyleNames = {};
          var warnedStyleValues = {};
          var warnedForNaNValue = false;
          var warnedForInfinityValue = false;
          var camelize = function(string) {
            return string.replace(hyphenPattern, function(_, character) {
              return character.toUpperCase();
            });
          };
          var warnHyphenatedStyleName = function(name) {
            if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {
              return;
            }
            warnedStyleNames[name] = true;
            error(
              "Unsupported style property %s. Did you mean %s?",
              name,
              // As Andi Smith suggests
              // (http://www.andismith.com/blog/2012/02/modernizr-prefixed/), an `-ms` prefix
              // is converted to lowercase `ms`.
              camelize(name.replace(msPattern$1, "ms-"))
            );
          };
          var warnBadVendoredStyleName = function(name) {
            if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {
              return;
            }
            warnedStyleNames[name] = true;
            error("Unsupported vendor-prefixed style property %s. Did you mean %s?", name, name.charAt(0).toUpperCase() + name.slice(1));
          };
          var warnStyleValueWithSemicolon = function(name, value) {
            if (warnedStyleValues.hasOwnProperty(value) && warnedStyleValues[value]) {
              return;
            }
            warnedStyleValues[value] = true;
            error(`Style property values shouldn't contain a semicolon. Try "%s: %s" instead.`, name, value.replace(badStyleValueWithSemicolonPattern, ""));
          };
          var warnStyleValueIsNaN = function(name, value) {
            if (warnedForNaNValue) {
              return;
            }
            warnedForNaNValue = true;
            error("`NaN` is an invalid value for the `%s` css style property.", name);
          };
          var warnStyleValueIsInfinity = function(name, value) {
            if (warnedForInfinityValue) {
              return;
            }
            warnedForInfinityValue = true;
            error("`Infinity` is an invalid value for the `%s` css style property.", name);
          };
          warnValidStyle = function(name, value) {
            if (name.indexOf("-") > -1) {
              warnHyphenatedStyleName(name);
            } else if (badVendoredStyleNamePattern.test(name)) {
              warnBadVendoredStyleName(name);
            } else if (badStyleValueWithSemicolonPattern.test(value)) {
              warnStyleValueWithSemicolon(name, value);
            }
            if (typeof value === "number") {
              if (isNaN(value)) {
                warnStyleValueIsNaN(name, value);
              } else if (!isFinite(value)) {
                warnStyleValueIsInfinity(name, value);
              }
            }
          };
        }
        var warnValidStyle$1 = warnValidStyle;
        function createDangerousStringForStyles(styles) {
          {
            var serialized = "";
            var delimiter = "";
            for (var styleName in styles) {
              if (!styles.hasOwnProperty(styleName)) {
                continue;
              }
              var styleValue = styles[styleName];
              if (styleValue != null) {
                var isCustomProperty = styleName.indexOf("--") === 0;
                serialized += delimiter + (isCustomProperty ? styleName : hyphenateStyleName(styleName)) + ":";
                serialized += dangerousStyleValue(styleName, styleValue, isCustomProperty);
                delimiter = ";";
              }
            }
            return serialized || null;
          }
        }
        function setValueForStyles(node, styles) {
          var style2 = node.style;
          for (var styleName in styles) {
            if (!styles.hasOwnProperty(styleName)) {
              continue;
            }
            var isCustomProperty = styleName.indexOf("--") === 0;
            {
              if (!isCustomProperty) {
                warnValidStyle$1(styleName, styles[styleName]);
              }
            }
            var styleValue = dangerousStyleValue(styleName, styles[styleName], isCustomProperty);
            if (styleName === "float") {
              styleName = "cssFloat";
            }
            if (isCustomProperty) {
              style2.setProperty(styleName, styleValue);
            } else {
              style2[styleName] = styleValue;
            }
          }
        }
        function isValueEmpty(value) {
          return value == null || typeof value === "boolean" || value === "";
        }
        function expandShorthandMap(styles) {
          var expanded = {};
          for (var key in styles) {
            var longhands = shorthandToLonghand[key] || [key];
            for (var i = 0; i < longhands.length; i++) {
              expanded[longhands[i]] = key;
            }
          }
          return expanded;
        }
        function validateShorthandPropertyCollisionInDev(styleUpdates, nextStyles) {
          {
            if (!nextStyles) {
              return;
            }
            var expandedUpdates = expandShorthandMap(styleUpdates);
            var expandedStyles = expandShorthandMap(nextStyles);
            var warnedAbout = {};
            for (var key in expandedUpdates) {
              var originalKey = expandedUpdates[key];
              var correctOriginalKey = expandedStyles[key];
              if (correctOriginalKey && originalKey !== correctOriginalKey) {
                var warningKey = originalKey + "," + correctOriginalKey;
                if (warnedAbout[warningKey]) {
                  continue;
                }
                warnedAbout[warningKey] = true;
                error("%s a style property during rerender (%s) when a conflicting property is set (%s) can lead to styling bugs. To avoid this, don't mix shorthand and non-shorthand properties for the same value; instead, replace the shorthand with separate values.", isValueEmpty(styleUpdates[originalKey]) ? "Removing" : "Updating", originalKey, correctOriginalKey);
              }
            }
          }
        }
        var omittedCloseTags = {
          area: true,
          base: true,
          br: true,
          col: true,
          embed: true,
          hr: true,
          img: true,
          input: true,
          keygen: true,
          link: true,
          meta: true,
          param: true,
          source: true,
          track: true,
          wbr: true
          // NOTE: menuitem's close tag should be omitted, but that causes problems.
        };
        var voidElementTags = assign({
          menuitem: true
        }, omittedCloseTags);
        var HTML = "__html";
        function assertValidProps(tag, props) {
          if (!props) {
            return;
          }
          if (voidElementTags[tag]) {
            if (props.children != null || props.dangerouslySetInnerHTML != null) {
              throw new Error(tag + " is a void element tag and must neither have `children` nor use `dangerouslySetInnerHTML`.");
            }
          }
          if (props.dangerouslySetInnerHTML != null) {
            if (props.children != null) {
              throw new Error("Can only set one of `children` or `props.dangerouslySetInnerHTML`.");
            }
            if (typeof props.dangerouslySetInnerHTML !== "object" || !(HTML in props.dangerouslySetInnerHTML)) {
              throw new Error("`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. Please visit https://reactjs.org/link/dangerously-set-inner-html for more information.");
            }
          }
          {
            if (!props.suppressContentEditableWarning && props.contentEditable && props.children != null) {
              error("A component is `contentEditable` and contains `children` managed by React. It is now your responsibility to guarantee that none of those nodes are unexpectedly modified or duplicated. This is probably not intentional.");
            }
          }
          if (props.style != null && typeof props.style !== "object") {
            throw new Error("The `style` prop expects a mapping from style properties to values, not a string. For example, style={{marginRight: spacing + 'em'}} when using JSX.");
          }
        }
        function isCustomComponent(tagName, props) {
          if (tagName.indexOf("-") === -1) {
            return typeof props.is === "string";
          }
          switch (tagName) {
            // These are reserved SVG and MathML elements.
            // We don't mind this list too much because we expect it to never grow.
            // The alternative is to track the namespace in a few places which is convoluted.
            // https://w3c.github.io/webcomponents/spec/custom/#custom-elements-core-concepts
            case "annotation-xml":
            case "color-profile":
            case "font-face":
            case "font-face-src":
            case "font-face-uri":
            case "font-face-format":
            case "font-face-name":
            case "missing-glyph":
              return false;
            default:
              return true;
          }
        }
        var possibleStandardNames = {
          // HTML
          accept: "accept",
          acceptcharset: "acceptCharset",
          "accept-charset": "acceptCharset",
          accesskey: "accessKey",
          action: "action",
          allowfullscreen: "allowFullScreen",
          alt: "alt",
          as: "as",
          async: "async",
          autocapitalize: "autoCapitalize",
          autocomplete: "autoComplete",
          autocorrect: "autoCorrect",
          autofocus: "autoFocus",
          autoplay: "autoPlay",
          autosave: "autoSave",
          capture: "capture",
          cellpadding: "cellPadding",
          cellspacing: "cellSpacing",
          challenge: "challenge",
          charset: "charSet",
          checked: "checked",
          children: "children",
          cite: "cite",
          class: "className",
          classid: "classID",
          classname: "className",
          cols: "cols",
          colspan: "colSpan",
          content: "content",
          contenteditable: "contentEditable",
          contextmenu: "contextMenu",
          controls: "controls",
          controlslist: "controlsList",
          coords: "coords",
          crossorigin: "crossOrigin",
          dangerouslysetinnerhtml: "dangerouslySetInnerHTML",
          data: "data",
          datetime: "dateTime",
          default: "default",
          defaultchecked: "defaultChecked",
          defaultvalue: "defaultValue",
          defer: "defer",
          dir: "dir",
          disabled: "disabled",
          disablepictureinpicture: "disablePictureInPicture",
          disableremoteplayback: "disableRemotePlayback",
          download: "download",
          draggable: "draggable",
          enctype: "encType",
          enterkeyhint: "enterKeyHint",
          for: "htmlFor",
          form: "form",
          formmethod: "formMethod",
          formaction: "formAction",
          formenctype: "formEncType",
          formnovalidate: "formNoValidate",
          formtarget: "formTarget",
          frameborder: "frameBorder",
          headers: "headers",
          height: "height",
          hidden: "hidden",
          high: "high",
          href: "href",
          hreflang: "hrefLang",
          htmlfor: "htmlFor",
          httpequiv: "httpEquiv",
          "http-equiv": "httpEquiv",
          icon: "icon",
          id: "id",
          imagesizes: "imageSizes",
          imagesrcset: "imageSrcSet",
          innerhtml: "innerHTML",
          inputmode: "inputMode",
          integrity: "integrity",
          is: "is",
          itemid: "itemID",
          itemprop: "itemProp",
          itemref: "itemRef",
          itemscope: "itemScope",
          itemtype: "itemType",
          keyparams: "keyParams",
          keytype: "keyType",
          kind: "kind",
          label: "label",
          lang: "lang",
          list: "list",
          loop: "loop",
          low: "low",
          manifest: "manifest",
          marginwidth: "marginWidth",
          marginheight: "marginHeight",
          max: "max",
          maxlength: "maxLength",
          media: "media",
          mediagroup: "mediaGroup",
          method: "method",
          min: "min",
          minlength: "minLength",
          multiple: "multiple",
          muted: "muted",
          name: "name",
          nomodule: "noModule",
          nonce: "nonce",
          novalidate: "noValidate",
          open: "open",
          optimum: "optimum",
          pattern: "pattern",
          placeholder: "placeholder",
          playsinline: "playsInline",
          poster: "poster",
          preload: "preload",
          profile: "profile",
          radiogroup: "radioGroup",
          readonly: "readOnly",
          referrerpolicy: "referrerPolicy",
          rel: "rel",
          required: "required",
          reversed: "reversed",
          role: "role",
          rows: "rows",
          rowspan: "rowSpan",
          sandbox: "sandbox",
          scope: "scope",
          scoped: "scoped",
          scrolling: "scrolling",
          seamless: "seamless",
          selected: "selected",
          shape: "shape",
          size: "size",
          sizes: "sizes",
          span: "span",
          spellcheck: "spellCheck",
          src: "src",
          srcdoc: "srcDoc",
          srclang: "srcLang",
          srcset: "srcSet",
          start: "start",
          step: "step",
          style: "style",
          summary: "summary",
          tabindex: "tabIndex",
          target: "target",
          title: "title",
          type: "type",
          usemap: "useMap",
          value: "value",
          width: "width",
          wmode: "wmode",
          wrap: "wrap",
          // SVG
          about: "about",
          accentheight: "accentHeight",
          "accent-height": "accentHeight",
          accumulate: "accumulate",
          additive: "additive",
          alignmentbaseline: "alignmentBaseline",
          "alignment-baseline": "alignmentBaseline",
          allowreorder: "allowReorder",
          alphabetic: "alphabetic",
          amplitude: "amplitude",
          arabicform: "arabicForm",
          "arabic-form": "arabicForm",
          ascent: "ascent",
          attributename: "attributeName",
          attributetype: "attributeType",
          autoreverse: "autoReverse",
          azimuth: "azimuth",
          basefrequency: "baseFrequency",
          baselineshift: "baselineShift",
          "baseline-shift": "baselineShift",
          baseprofile: "baseProfile",
          bbox: "bbox",
          begin: "begin",
          bias: "bias",
          by: "by",
          calcmode: "calcMode",
          capheight: "capHeight",
          "cap-height": "capHeight",
          clip: "clip",
          clippath: "clipPath",
          "clip-path": "clipPath",
          clippathunits: "clipPathUnits",
          cliprule: "clipRule",
          "clip-rule": "clipRule",
          color: "color",
          colorinterpolation: "colorInterpolation",
          "color-interpolation": "colorInterpolation",
          colorinterpolationfilters: "colorInterpolationFilters",
          "color-interpolation-filters": "colorInterpolationFilters",
          colorprofile: "colorProfile",
          "color-profile": "colorProfile",
          colorrendering: "colorRendering",
          "color-rendering": "colorRendering",
          contentscripttype: "contentScriptType",
          contentstyletype: "contentStyleType",
          cursor: "cursor",
          cx: "cx",
          cy: "cy",
          d: "d",
          datatype: "datatype",
          decelerate: "decelerate",
          descent: "descent",
          diffuseconstant: "diffuseConstant",
          direction: "direction",
          display: "display",
          divisor: "divisor",
          dominantbaseline: "dominantBaseline",
          "dominant-baseline": "dominantBaseline",
          dur: "dur",
          dx: "dx",
          dy: "dy",
          edgemode: "edgeMode",
          elevation: "elevation",
          enablebackground: "enableBackground",
          "enable-background": "enableBackground",
          end: "end",
          exponent: "exponent",
          externalresourcesrequired: "externalResourcesRequired",
          fill: "fill",
          fillopacity: "fillOpacity",
          "fill-opacity": "fillOpacity",
          fillrule: "fillRule",
          "fill-rule": "fillRule",
          filter: "filter",
          filterres: "filterRes",
          filterunits: "filterUnits",
          floodopacity: "floodOpacity",
          "flood-opacity": "floodOpacity",
          floodcolor: "floodColor",
          "flood-color": "floodColor",
          focusable: "focusable",
          fontfamily: "fontFamily",
          "font-family": "fontFamily",
          fontsize: "fontSize",
          "font-size": "fontSize",
          fontsizeadjust: "fontSizeAdjust",
          "font-size-adjust": "fontSizeAdjust",
          fontstretch: "fontStretch",
          "font-stretch": "fontStretch",
          fontstyle: "fontStyle",
          "font-style": "fontStyle",
          fontvariant: "fontVariant",
          "font-variant": "fontVariant",
          fontweight: "fontWeight",
          "font-weight": "fontWeight",
          format: "format",
          from: "from",
          fx: "fx",
          fy: "fy",
          g1: "g1",
          g2: "g2",
          glyphname: "glyphName",
          "glyph-name": "glyphName",
          glyphorientationhorizontal: "glyphOrientationHorizontal",
          "glyph-orientation-horizontal": "glyphOrientationHorizontal",
          glyphorientationvertical: "glyphOrientationVertical",
          "glyph-orientation-vertical": "glyphOrientationVertical",
          glyphref: "glyphRef",
          gradienttransform: "gradientTransform",
          gradientunits: "gradientUnits",
          hanging: "hanging",
          horizadvx: "horizAdvX",
          "horiz-adv-x": "horizAdvX",
          horizoriginx: "horizOriginX",
          "horiz-origin-x": "horizOriginX",
          ideographic: "ideographic",
          imagerendering: "imageRendering",
          "image-rendering": "imageRendering",
          in2: "in2",
          in: "in",
          inlist: "inlist",
          intercept: "intercept",
          k1: "k1",
          k2: "k2",
          k3: "k3",
          k4: "k4",
          k: "k",
          kernelmatrix: "kernelMatrix",
          kernelunitlength: "kernelUnitLength",
          kerning: "kerning",
          keypoints: "keyPoints",
          keysplines: "keySplines",
          keytimes: "keyTimes",
          lengthadjust: "lengthAdjust",
          letterspacing: "letterSpacing",
          "letter-spacing": "letterSpacing",
          lightingcolor: "lightingColor",
          "lighting-color": "lightingColor",
          limitingconeangle: "limitingConeAngle",
          local: "local",
          markerend: "markerEnd",
          "marker-end": "markerEnd",
          markerheight: "markerHeight",
          markermid: "markerMid",
          "marker-mid": "markerMid",
          markerstart: "markerStart",
          "marker-start": "markerStart",
          markerunits: "markerUnits",
          markerwidth: "markerWidth",
          mask: "mask",
          maskcontentunits: "maskContentUnits",
          maskunits: "maskUnits",
          mathematical: "mathematical",
          mode: "mode",
          numoctaves: "numOctaves",
          offset: "offset",
          opacity: "opacity",
          operator: "operator",
          order: "order",
          orient: "orient",
          orientation: "orientation",
          origin: "origin",
          overflow: "overflow",
          overlineposition: "overlinePosition",
          "overline-position": "overlinePosition",
          overlinethickness: "overlineThickness",
          "overline-thickness": "overlineThickness",
          paintorder: "paintOrder",
          "paint-order": "paintOrder",
          panose1: "panose1",
          "panose-1": "panose1",
          pathlength: "pathLength",
          patterncontentunits: "patternContentUnits",
          patterntransform: "patternTransform",
          patternunits: "patternUnits",
          pointerevents: "pointerEvents",
          "pointer-events": "pointerEvents",
          points: "points",
          pointsatx: "pointsAtX",
          pointsaty: "pointsAtY",
          pointsatz: "pointsAtZ",
          prefix: "prefix",
          preservealpha: "preserveAlpha",
          preserveaspectratio: "preserveAspectRatio",
          primitiveunits: "primitiveUnits",
          property: "property",
          r: "r",
          radius: "radius",
          refx: "refX",
          refy: "refY",
          renderingintent: "renderingIntent",
          "rendering-intent": "renderingIntent",
          repeatcount: "repeatCount",
          repeatdur: "repeatDur",
          requiredextensions: "requiredExtensions",
          requiredfeatures: "requiredFeatures",
          resource: "resource",
          restart: "restart",
          result: "result",
          results: "results",
          rotate: "rotate",
          rx: "rx",
          ry: "ry",
          scale: "scale",
          security: "security",
          seed: "seed",
          shaperendering: "shapeRendering",
          "shape-rendering": "shapeRendering",
          slope: "slope",
          spacing: "spacing",
          specularconstant: "specularConstant",
          specularexponent: "specularExponent",
          speed: "speed",
          spreadmethod: "spreadMethod",
          startoffset: "startOffset",
          stddeviation: "stdDeviation",
          stemh: "stemh",
          stemv: "stemv",
          stitchtiles: "stitchTiles",
          stopcolor: "stopColor",
          "stop-color": "stopColor",
          stopopacity: "stopOpacity",
          "stop-opacity": "stopOpacity",
          strikethroughposition: "strikethroughPosition",
          "strikethrough-position": "strikethroughPosition",
          strikethroughthickness: "strikethroughThickness",
          "strikethrough-thickness": "strikethroughThickness",
          string: "string",
          stroke: "stroke",
          strokedasharray: "strokeDasharray",
          "stroke-dasharray": "strokeDasharray",
          strokedashoffset: "strokeDashoffset",
          "stroke-dashoffset": "strokeDashoffset",
          strokelinecap: "strokeLinecap",
          "stroke-linecap": "strokeLinecap",
          strokelinejoin: "strokeLinejoin",
          "stroke-linejoin": "strokeLinejoin",
          strokemiterlimit: "strokeMiterlimit",
          "stroke-miterlimit": "strokeMiterlimit",
          strokewidth: "strokeWidth",
          "stroke-width": "strokeWidth",
          strokeopacity: "strokeOpacity",
          "stroke-opacity": "strokeOpacity",
          suppresscontenteditablewarning: "suppressContentEditableWarning",
          suppresshydrationwarning: "suppressHydrationWarning",
          surfacescale: "surfaceScale",
          systemlanguage: "systemLanguage",
          tablevalues: "tableValues",
          targetx: "targetX",
          targety: "targetY",
          textanchor: "textAnchor",
          "text-anchor": "textAnchor",
          textdecoration: "textDecoration",
          "text-decoration": "textDecoration",
          textlength: "textLength",
          textrendering: "textRendering",
          "text-rendering": "textRendering",
          to: "to",
          transform: "transform",
          typeof: "typeof",
          u1: "u1",
          u2: "u2",
          underlineposition: "underlinePosition",
          "underline-position": "underlinePosition",
          underlinethickness: "underlineThickness",
          "underline-thickness": "underlineThickness",
          unicode: "unicode",
          unicodebidi: "unicodeBidi",
          "unicode-bidi": "unicodeBidi",
          unicoderange: "unicodeRange",
          "unicode-range": "unicodeRange",
          unitsperem: "unitsPerEm",
          "units-per-em": "unitsPerEm",
          unselectable: "unselectable",
          valphabetic: "vAlphabetic",
          "v-alphabetic": "vAlphabetic",
          values: "values",
          vectoreffect: "vectorEffect",
          "vector-effect": "vectorEffect",
          version: "version",
          vertadvy: "vertAdvY",
          "vert-adv-y": "vertAdvY",
          vertoriginx: "vertOriginX",
          "vert-origin-x": "vertOriginX",
          vertoriginy: "vertOriginY",
          "vert-origin-y": "vertOriginY",
          vhanging: "vHanging",
          "v-hanging": "vHanging",
          videographic: "vIdeographic",
          "v-ideographic": "vIdeographic",
          viewbox: "viewBox",
          viewtarget: "viewTarget",
          visibility: "visibility",
          vmathematical: "vMathematical",
          "v-mathematical": "vMathematical",
          vocab: "vocab",
          widths: "widths",
          wordspacing: "wordSpacing",
          "word-spacing": "wordSpacing",
          writingmode: "writingMode",
          "writing-mode": "writingMode",
          x1: "x1",
          x2: "x2",
          x: "x",
          xchannelselector: "xChannelSelector",
          xheight: "xHeight",
          "x-height": "xHeight",
          xlinkactuate: "xlinkActuate",
          "xlink:actuate": "xlinkActuate",
          xlinkarcrole: "xlinkArcrole",
          "xlink:arcrole": "xlinkArcrole",
          xlinkhref: "xlinkHref",
          "xlink:href": "xlinkHref",
          xlinkrole: "xlinkRole",
          "xlink:role": "xlinkRole",
          xlinkshow: "xlinkShow",
          "xlink:show": "xlinkShow",
          xlinktitle: "xlinkTitle",
          "xlink:title": "xlinkTitle",
          xlinktype: "xlinkType",
          "xlink:type": "xlinkType",
          xmlbase: "xmlBase",
          "xml:base": "xmlBase",
          xmllang: "xmlLang",
          "xml:lang": "xmlLang",
          xmlns: "xmlns",
          "xml:space": "xmlSpace",
          xmlnsxlink: "xmlnsXlink",
          "xmlns:xlink": "xmlnsXlink",
          xmlspace: "xmlSpace",
          y1: "y1",
          y2: "y2",
          y: "y",
          ychannelselector: "yChannelSelector",
          z: "z",
          zoomandpan: "zoomAndPan"
        };
        var ariaProperties = {
          "aria-current": 0,
          // state
          "aria-description": 0,
          "aria-details": 0,
          "aria-disabled": 0,
          // state
          "aria-hidden": 0,
          // state
          "aria-invalid": 0,
          // state
          "aria-keyshortcuts": 0,
          "aria-label": 0,
          "aria-roledescription": 0,
          // Widget Attributes
          "aria-autocomplete": 0,
          "aria-checked": 0,
          "aria-expanded": 0,
          "aria-haspopup": 0,
          "aria-level": 0,
          "aria-modal": 0,
          "aria-multiline": 0,
          "aria-multiselectable": 0,
          "aria-orientation": 0,
          "aria-placeholder": 0,
          "aria-pressed": 0,
          "aria-readonly": 0,
          "aria-required": 0,
          "aria-selected": 0,
          "aria-sort": 0,
          "aria-valuemax": 0,
          "aria-valuemin": 0,
          "aria-valuenow": 0,
          "aria-valuetext": 0,
          // Live Region Attributes
          "aria-atomic": 0,
          "aria-busy": 0,
          "aria-live": 0,
          "aria-relevant": 0,
          // Drag-and-Drop Attributes
          "aria-dropeffect": 0,
          "aria-grabbed": 0,
          // Relationship Attributes
          "aria-activedescendant": 0,
          "aria-colcount": 0,
          "aria-colindex": 0,
          "aria-colspan": 0,
          "aria-controls": 0,
          "aria-describedby": 0,
          "aria-errormessage": 0,
          "aria-flowto": 0,
          "aria-labelledby": 0,
          "aria-owns": 0,
          "aria-posinset": 0,
          "aria-rowcount": 0,
          "aria-rowindex": 0,
          "aria-rowspan": 0,
          "aria-setsize": 0
        };
        var warnedProperties = {};
        var rARIA = new RegExp("^(aria)-[" + ATTRIBUTE_NAME_CHAR + "]*$");
        var rARIACamel = new RegExp("^(aria)[A-Z][" + ATTRIBUTE_NAME_CHAR + "]*$");
        function validateProperty(tagName, name) {
          {
            if (hasOwnProperty.call(warnedProperties, name) && warnedProperties[name]) {
              return true;
            }
            if (rARIACamel.test(name)) {
              var ariaName = "aria-" + name.slice(4).toLowerCase();
              var correctName = ariaProperties.hasOwnProperty(ariaName) ? ariaName : null;
              if (correctName == null) {
                error("Invalid ARIA attribute `%s`. ARIA attributes follow the pattern aria-* and must be lowercase.", name);
                warnedProperties[name] = true;
                return true;
              }
              if (name !== correctName) {
                error("Invalid ARIA attribute `%s`. Did you mean `%s`?", name, correctName);
                warnedProperties[name] = true;
                return true;
              }
            }
            if (rARIA.test(name)) {
              var lowerCasedName = name.toLowerCase();
              var standardName = ariaProperties.hasOwnProperty(lowerCasedName) ? lowerCasedName : null;
              if (standardName == null) {
                warnedProperties[name] = true;
                return false;
              }
              if (name !== standardName) {
                error("Unknown ARIA attribute `%s`. Did you mean `%s`?", name, standardName);
                warnedProperties[name] = true;
                return true;
              }
            }
          }
          return true;
        }
        function warnInvalidARIAProps(type, props) {
          {
            var invalidProps = [];
            for (var key in props) {
              var isValid = validateProperty(type, key);
              if (!isValid) {
                invalidProps.push(key);
              }
            }
            var unknownPropString = invalidProps.map(function(prop) {
              return "`" + prop + "`";
            }).join(", ");
            if (invalidProps.length === 1) {
              error("Invalid aria prop %s on <%s> tag. For details, see https://reactjs.org/link/invalid-aria-props", unknownPropString, type);
            } else if (invalidProps.length > 1) {
              error("Invalid aria props %s on <%s> tag. For details, see https://reactjs.org/link/invalid-aria-props", unknownPropString, type);
            }
          }
        }
        function validateProperties(type, props) {
          if (isCustomComponent(type, props)) {
            return;
          }
          warnInvalidARIAProps(type, props);
        }
        var didWarnValueNull = false;
        function validateProperties$1(type, props) {
          {
            if (type !== "input" && type !== "textarea" && type !== "select") {
              return;
            }
            if (props != null && props.value === null && !didWarnValueNull) {
              didWarnValueNull = true;
              if (type === "select" && props.multiple) {
                error("`value` prop on `%s` should not be null. Consider using an empty array when `multiple` is set to `true` to clear the component or `undefined` for uncontrolled components.", type);
              } else {
                error("`value` prop on `%s` should not be null. Consider using an empty string to clear the component or `undefined` for uncontrolled components.", type);
              }
            }
          }
        }
        var validateProperty$1 = function() {
        };
        {
          var warnedProperties$1 = {};
          var EVENT_NAME_REGEX = /^on./;
          var INVALID_EVENT_NAME_REGEX = /^on[^A-Z]/;
          var rARIA$1 = new RegExp("^(aria)-[" + ATTRIBUTE_NAME_CHAR + "]*$");
          var rARIACamel$1 = new RegExp("^(aria)[A-Z][" + ATTRIBUTE_NAME_CHAR + "]*$");
          validateProperty$1 = function(tagName, name, value, eventRegistry) {
            if (hasOwnProperty.call(warnedProperties$1, name) && warnedProperties$1[name]) {
              return true;
            }
            var lowerCasedName = name.toLowerCase();
            if (lowerCasedName === "onfocusin" || lowerCasedName === "onfocusout") {
              error("React uses onFocus and onBlur instead of onFocusIn and onFocusOut. All React events are normalized to bubble, so onFocusIn and onFocusOut are not needed/supported by React.");
              warnedProperties$1[name] = true;
              return true;
            }
            if (eventRegistry != null) {
              var registrationNameDependencies2 = eventRegistry.registrationNameDependencies, possibleRegistrationNames2 = eventRegistry.possibleRegistrationNames;
              if (registrationNameDependencies2.hasOwnProperty(name)) {
                return true;
              }
              var registrationName = possibleRegistrationNames2.hasOwnProperty(lowerCasedName) ? possibleRegistrationNames2[lowerCasedName] : null;
              if (registrationName != null) {
                error("Invalid event handler property `%s`. Did you mean `%s`?", name, registrationName);
                warnedProperties$1[name] = true;
                return true;
              }
              if (EVENT_NAME_REGEX.test(name)) {
                error("Unknown event handler property `%s`. It will be ignored.", name);
                warnedProperties$1[name] = true;
                return true;
              }
            } else if (EVENT_NAME_REGEX.test(name)) {
              if (INVALID_EVENT_NAME_REGEX.test(name)) {
                error("Invalid event handler property `%s`. React events use the camelCase naming convention, for example `onClick`.", name);
              }
              warnedProperties$1[name] = true;
              return true;
            }
            if (rARIA$1.test(name) || rARIACamel$1.test(name)) {
              return true;
            }
            if (lowerCasedName === "innerhtml") {
              error("Directly setting property `innerHTML` is not permitted. For more information, lookup documentation on `dangerouslySetInnerHTML`.");
              warnedProperties$1[name] = true;
              return true;
            }
            if (lowerCasedName === "aria") {
              error("The `aria` attribute is reserved for future use in React. Pass individual `aria-` attributes instead.");
              warnedProperties$1[name] = true;
              return true;
            }
            if (lowerCasedName === "is" && value !== null && value !== void 0 && typeof value !== "string") {
              error("Received a `%s` for a string attribute `is`. If this is expected, cast the value to a string.", typeof value);
              warnedProperties$1[name] = true;
              return true;
            }
            if (typeof value === "number" && isNaN(value)) {
              error("Received NaN for the `%s` attribute. If this is expected, cast the value to a string.", name);
              warnedProperties$1[name] = true;
              return true;
            }
            var propertyInfo = getPropertyInfo(name);
            var isReserved = propertyInfo !== null && propertyInfo.type === RESERVED;
            if (possibleStandardNames.hasOwnProperty(lowerCasedName)) {
              var standardName = possibleStandardNames[lowerCasedName];
              if (standardName !== name) {
                error("Invalid DOM property `%s`. Did you mean `%s`?", name, standardName);
                warnedProperties$1[name] = true;
                return true;
              }
            } else if (!isReserved && name !== lowerCasedName) {
              error("React does not recognize the `%s` prop on a DOM element. If you intentionally want it to appear in the DOM as a custom attribute, spell it as lowercase `%s` instead. If you accidentally passed it from a parent component, remove it from the DOM element.", name, lowerCasedName);
              warnedProperties$1[name] = true;
              return true;
            }
            if (typeof value === "boolean" && shouldRemoveAttributeWithWarning(name, value, propertyInfo, false)) {
              if (value) {
                error('Received `%s` for a non-boolean attribute `%s`.\n\nIf you want to write it to the DOM, pass a string instead: %s="%s" or %s={value.toString()}.', value, name, name, value, name);
              } else {
                error('Received `%s` for a non-boolean attribute `%s`.\n\nIf you want to write it to the DOM, pass a string instead: %s="%s" or %s={value.toString()}.\n\nIf you used to conditionally omit it with %s={condition && value}, pass %s={condition ? value : undefined} instead.', value, name, name, value, name, name, name);
              }
              warnedProperties$1[name] = true;
              return true;
            }
            if (isReserved) {
              return true;
            }
            if (shouldRemoveAttributeWithWarning(name, value, propertyInfo, false)) {
              warnedProperties$1[name] = true;
              return false;
            }
            if ((value === "false" || value === "true") && propertyInfo !== null && propertyInfo.type === BOOLEAN) {
              error("Received the string `%s` for the boolean attribute `%s`. %s Did you mean %s={%s}?", value, name, value === "false" ? "The browser will interpret it as a truthy value." : 'Although this works, it will not work as expected if you pass the string "false".', name, value);
              warnedProperties$1[name] = true;
              return true;
            }
            return true;
          };
        }
        var warnUnknownProperties = function(type, props, eventRegistry) {
          {
            var unknownProps = [];
            for (var key in props) {
              var isValid = validateProperty$1(type, key, props[key], eventRegistry);
              if (!isValid) {
                unknownProps.push(key);
              }
            }
            var unknownPropString = unknownProps.map(function(prop) {
              return "`" + prop + "`";
            }).join(", ");
            if (unknownProps.length === 1) {
              error("Invalid value for prop %s on <%s> tag. Either remove it from the element, or pass a string or number value to keep it in the DOM. For details, see https://reactjs.org/link/attribute-behavior ", unknownPropString, type);
            } else if (unknownProps.length > 1) {
              error("Invalid values for props %s on <%s> tag. Either remove them from the element, or pass a string or number value to keep them in the DOM. For details, see https://reactjs.org/link/attribute-behavior ", unknownPropString, type);
            }
          }
        };
        function validateProperties$2(type, props, eventRegistry) {
          if (isCustomComponent(type, props)) {
            return;
          }
          warnUnknownProperties(type, props, eventRegistry);
        }
        var IS_EVENT_HANDLE_NON_MANAGED_NODE = 1;
        var IS_NON_DELEGATED = 1 << 1;
        var IS_CAPTURE_PHASE = 1 << 2;
        var SHOULD_NOT_PROCESS_POLYFILL_EVENT_PLUGINS = IS_EVENT_HANDLE_NON_MANAGED_NODE | IS_NON_DELEGATED | IS_CAPTURE_PHASE;
        var currentReplayingEvent = null;
        function setReplayingEvent(event) {
          {
            if (currentReplayingEvent !== null) {
              error("Expected currently replaying event to be null. This error is likely caused by a bug in React. Please file an issue.");
            }
          }
          currentReplayingEvent = event;
        }
        function resetReplayingEvent() {
          {
            if (currentReplayingEvent === null) {
              error("Expected currently replaying event to not be null. This error is likely caused by a bug in React. Please file an issue.");
            }
          }
          currentReplayingEvent = null;
        }
        function isReplayingEvent(event) {
          return event === currentReplayingEvent;
        }
        function getEventTarget(nativeEvent) {
          var target = nativeEvent.target || nativeEvent.srcElement || window;
          if (target.correspondingUseElement) {
            target = target.correspondingUseElement;
          }
          return target.nodeType === TEXT_NODE ? target.parentNode : target;
        }
        var restoreImpl = null;
        var restoreTarget = null;
        var restoreQueue = null;
        function restoreStateOfTarget(target) {
          var internalInstance = getInstanceFromNode(target);
          if (!internalInstance) {
            return;
          }
          if (typeof restoreImpl !== "function") {
            throw new Error("setRestoreImplementation() needs to be called to handle a target for controlled events. This error is likely caused by a bug in React. Please file an issue.");
          }
          var stateNode = internalInstance.stateNode;
          if (stateNode) {
            var _props = getFiberCurrentPropsFromNode(stateNode);
            restoreImpl(internalInstance.stateNode, internalInstance.type, _props);
          }
        }
        function setRestoreImplementation(impl) {
          restoreImpl = impl;
        }
        function enqueueStateRestore(target) {
          if (restoreTarget) {
            if (restoreQueue) {
              restoreQueue.push(target);
            } else {
              restoreQueue = [target];
            }
          } else {
            restoreTarget = target;
          }
        }
        function needsStateRestore() {
          return restoreTarget !== null || restoreQueue !== null;
        }
        function restoreStateIfNeeded() {
          if (!restoreTarget) {
            return;
          }
          var target = restoreTarget;
          var queuedTargets = restoreQueue;
          restoreTarget = null;
          restoreQueue = null;
          restoreStateOfTarget(target);
          if (queuedTargets) {
            for (var i = 0; i < queuedTargets.length; i++) {
              restoreStateOfTarget(queuedTargets[i]);
            }
          }
        }
        var batchedUpdatesImpl = function(fn, bookkeeping) {
          return fn(bookkeeping);
        };
        var flushSyncImpl = function() {
        };
        var isInsideEventHandler = false;
        function finishEventHandler() {
          var controlledComponentsHavePendingUpdates = needsStateRestore();
          if (controlledComponentsHavePendingUpdates) {
            flushSyncImpl();
            restoreStateIfNeeded();
          }
        }
        function batchedUpdates(fn, a, b) {
          if (isInsideEventHandler) {
            return fn(a, b);
          }
          isInsideEventHandler = true;
          try {
            return batchedUpdatesImpl(fn, a, b);
          } finally {
            isInsideEventHandler = false;
            finishEventHandler();
          }
        }
        function setBatchingImplementation(_batchedUpdatesImpl, _discreteUpdatesImpl, _flushSyncImpl) {
          batchedUpdatesImpl = _batchedUpdatesImpl;
          flushSyncImpl = _flushSyncImpl;
        }
        function isInteractive(tag) {
          return tag === "button" || tag === "input" || tag === "select" || tag === "textarea";
        }
        function shouldPreventMouseEvent(name, type, props) {
          switch (name) {
            case "onClick":
            case "onClickCapture":
            case "onDoubleClick":
            case "onDoubleClickCapture":
            case "onMouseDown":
            case "onMouseDownCapture":
            case "onMouseMove":
            case "onMouseMoveCapture":
            case "onMouseUp":
            case "onMouseUpCapture":
            case "onMouseEnter":
              return !!(props.disabled && isInteractive(type));
            default:
              return false;
          }
        }
        function getListener(inst, registrationName) {
          var stateNode = inst.stateNode;
          if (stateNode === null) {
            return null;
          }
          var props = getFiberCurrentPropsFromNode(stateNode);
          if (props === null) {
            return null;
          }
          var listener = props[registrationName];
          if (shouldPreventMouseEvent(registrationName, inst.type, props)) {
            return null;
          }
          if (listener && typeof listener !== "function") {
            throw new Error("Expected `" + registrationName + "` listener to be a function, instead got a value of `" + typeof listener + "` type.");
          }
          return listener;
        }
        var passiveBrowserEventsSupported = false;
        if (canUseDOM) {
          try {
            var options = {};
            Object.defineProperty(options, "passive", {
              get: function() {
                passiveBrowserEventsSupported = true;
              }
            });
            window.addEventListener("test", options, options);
            window.removeEventListener("test", options, options);
          } catch (e) {
            passiveBrowserEventsSupported = false;
          }
        }
        function invokeGuardedCallbackProd(name, func, context, a, b, c, d, e, f) {
          var funcArgs = Array.prototype.slice.call(arguments, 3);
          try {
            func.apply(context, funcArgs);
          } catch (error2) {
            this.onError(error2);
          }
        }
        var invokeGuardedCallbackImpl = invokeGuardedCallbackProd;
        {
          if (typeof window !== "undefined" && typeof window.dispatchEvent === "function" && typeof document !== "undefined" && typeof document.createEvent === "function") {
            var fakeNode = document.createElement("react");
            invokeGuardedCallbackImpl = function invokeGuardedCallbackDev(name, func, context, a, b, c, d, e, f) {
              if (typeof document === "undefined" || document === null) {
                throw new Error("The `document` global was defined when React was initialized, but is not defined anymore. This can happen in a test environment if a component schedules an update from an asynchronous callback, but the test has already finished running. To solve this, you can either unmount the component at the end of your test (and ensure that any asynchronous operations get canceled in `componentWillUnmount`), or you can change the test itself to be asynchronous.");
              }
              var evt = document.createEvent("Event");
              var didCall = false;
              var didError = true;
              var windowEvent = window.event;
              var windowEventDescriptor = Object.getOwnPropertyDescriptor(window, "event");
              function restoreAfterDispatch() {
                fakeNode.removeEventListener(evtType, callCallback2, false);
                if (typeof window.event !== "undefined" && window.hasOwnProperty("event")) {
                  window.event = windowEvent;
                }
              }
              var funcArgs = Array.prototype.slice.call(arguments, 3);
              function callCallback2() {
                didCall = true;
                restoreAfterDispatch();
                func.apply(context, funcArgs);
                didError = false;
              }
              var error2;
              var didSetError = false;
              var isCrossOriginError = false;
              function handleWindowError(event) {
                error2 = event.error;
                didSetError = true;
                if (error2 === null && event.colno === 0 && event.lineno === 0) {
                  isCrossOriginError = true;
                }
                if (event.defaultPrevented) {
                  if (error2 != null && typeof error2 === "object") {
                    try {
                      error2._suppressLogging = true;
                    } catch (inner) {
                    }
                  }
                }
              }
              var evtType = "react-" + (name ? name : "invokeguardedcallback");
              window.addEventListener("error", handleWindowError);
              fakeNode.addEventListener(evtType, callCallback2, false);
              evt.initEvent(evtType, false, false);
              fakeNode.dispatchEvent(evt);
              if (windowEventDescriptor) {
                Object.defineProperty(window, "event", windowEventDescriptor);
              }
              if (didCall && didError) {
                if (!didSetError) {
                  error2 = new Error(`An error was thrown inside one of your components, but React doesn't know what it was. This is likely due to browser flakiness. React does its best to preserve the "Pause on exceptions" behavior of the DevTools, which requires some DEV-mode only tricks. It's possible that these don't work in your browser. Try triggering the error in production mode, or switching to a modern browser. If you suspect that this is actually an issue with React, please file an issue.`);
                } else if (isCrossOriginError) {
                  error2 = new Error("A cross-origin error was thrown. React doesn't have access to the actual error object in development. See https://reactjs.org/link/crossorigin-error for more information.");
                }
                this.onError(error2);
              }
              window.removeEventListener("error", handleWindowError);
              if (!didCall) {
                restoreAfterDispatch();
                return invokeGuardedCallbackProd.apply(this, arguments);
              }
            };
          }
        }
        var invokeGuardedCallbackImpl$1 = invokeGuardedCallbackImpl;
        var hasError = false;
        var caughtError = null;
        var hasRethrowError = false;
        var rethrowError = null;
        var reporter = {
          onError: function(error2) {
            hasError = true;
            caughtError = error2;
          }
        };
        function invokeGuardedCallback(name, func, context, a, b, c, d, e, f) {
          hasError = false;
          caughtError = null;
          invokeGuardedCallbackImpl$1.apply(reporter, arguments);
        }
        function invokeGuardedCallbackAndCatchFirstError(name, func, context, a, b, c, d, e, f) {
          invokeGuardedCallback.apply(this, arguments);
          if (hasError) {
            var error2 = clearCaughtError();
            if (!hasRethrowError) {
              hasRethrowError = true;
              rethrowError = error2;
            }
          }
        }
        function rethrowCaughtError() {
          if (hasRethrowError) {
            var error2 = rethrowError;
            hasRethrowError = false;
            rethrowError = null;
            throw error2;
          }
        }
        function hasCaughtError() {
          return hasError;
        }
        function clearCaughtError() {
          if (hasError) {
            var error2 = caughtError;
            hasError = false;
            caughtError = null;
            return error2;
          } else {
            throw new Error("clearCaughtError was called but no error was captured. This error is likely caused by a bug in React. Please file an issue.");
          }
        }
        function get(key) {
          return key._reactInternals;
        }
        function has(key) {
          return key._reactInternals !== void 0;
        }
        function set(key, value) {
          key._reactInternals = value;
        }
        var NoFlags = (
          /*                      */
          0
        );
        var PerformedWork = (
          /*                */
          1
        );
        var Placement = (
          /*                    */
          2
        );
        var Update = (
          /*                       */
          4
        );
        var ChildDeletion = (
          /*                */
          16
        );
        var ContentReset = (
          /*                 */
          32
        );
        var Callback = (
          /*                     */
          64
        );
        var DidCapture = (
          /*                   */
          128
        );
        var ForceClientRender = (
          /*            */
          256
        );
        var Ref = (
          /*                          */
          512
        );
        var Snapshot = (
          /*                     */
          1024
        );
        var Passive = (
          /*                      */
          2048
        );
        var Hydrating = (
          /*                    */
          4096
        );
        var Visibility = (
          /*                   */
          8192
        );
        var StoreConsistency = (
          /*             */
          16384
        );
        var LifecycleEffectMask = Passive | Update | Callback | Ref | Snapshot | StoreConsistency;
        var HostEffectMask = (
          /*               */
          32767
        );
        var Incomplete = (
          /*                   */
          32768
        );
        var ShouldCapture = (
          /*                */
          65536
        );
        var ForceUpdateForLegacySuspense = (
          /* */
          131072
        );
        var Forked = (
          /*                       */
          1048576
        );
        var RefStatic = (
          /*                    */
          2097152
        );
        var LayoutStatic = (
          /*                 */
          4194304
        );
        var PassiveStatic = (
          /*                */
          8388608
        );
        var MountLayoutDev = (
          /*               */
          16777216
        );
        var MountPassiveDev = (
          /*              */
          33554432
        );
        var BeforeMutationMask = (
          // TODO: Remove Update flag from before mutation phase by re-landing Visibility
          // flag logic (see #20043)
          Update | Snapshot | 0
        );
        var MutationMask = Placement | Update | ChildDeletion | ContentReset | Ref | Hydrating | Visibility;
        var LayoutMask = Update | Callback | Ref | Visibility;
        var PassiveMask = Passive | ChildDeletion;
        var StaticMask = LayoutStatic | PassiveStatic | RefStatic;
        var ReactCurrentOwner = ReactSharedInternals.ReactCurrentOwner;
        function getNearestMountedFiber(fiber) {
          var node = fiber;
          var nearestMounted = fiber;
          if (!fiber.alternate) {
            var nextNode = node;
            do {
              node = nextNode;
              if ((node.flags & (Placement | Hydrating)) !== NoFlags) {
                nearestMounted = node.return;
              }
              nextNode = node.return;
            } while (nextNode);
          } else {
            while (node.return) {
              node = node.return;
            }
          }
          if (node.tag === HostRoot) {
            return nearestMounted;
          }
          return null;
        }
        function getSuspenseInstanceFromFiber(fiber) {
          if (fiber.tag === SuspenseComponent) {
            var suspenseState = fiber.memoizedState;
            if (suspenseState === null) {
              var current2 = fiber.alternate;
              if (current2 !== null) {
                suspenseState = current2.memoizedState;
              }
            }
            if (suspenseState !== null) {
              return suspenseState.dehydrated;
            }
          }
          return null;
        }
        function getContainerFromFiber(fiber) {
          return fiber.tag === HostRoot ? fiber.stateNode.containerInfo : null;
        }
        function isFiberMounted(fiber) {
          return getNearestMountedFiber(fiber) === fiber;
        }
        function isMounted(component) {
          {
            var owner = ReactCurrentOwner.current;
            if (owner !== null && owner.tag === ClassComponent) {
              var ownerFiber = owner;
              var instance = ownerFiber.stateNode;
              if (!instance._warnedAboutRefsInRender) {
                error("%s is accessing isMounted inside its render() function. render() should be a pure function of props and state. It should never access something that requires stale data from the previous render, such as refs. Move this logic to componentDidMount and componentDidUpdate instead.", getComponentNameFromFiber(ownerFiber) || "A component");
              }
              instance._warnedAboutRefsInRender = true;
            }
          }
          var fiber = get(component);
          if (!fiber) {
            return false;
          }
          return getNearestMountedFiber(fiber) === fiber;
        }
        function assertIsMounted(fiber) {
          if (getNearestMountedFiber(fiber) !== fiber) {
            throw new Error("Unable to find node on an unmounted component.");
          }
        }
        function findCurrentFiberUsingSlowPath(fiber) {
          var alternate = fiber.alternate;
          if (!alternate) {
            var nearestMounted = getNearestMountedFiber(fiber);
            if (nearestMounted === null) {
              throw new Error("Unable to find node on an unmounted component.");
            }
            if (nearestMounted !== fiber) {
              return null;
            }
            return fiber;
          }
          var a = fiber;
          var b = alternate;
          while (true) {
            var parentA = a.return;
            if (parentA === null) {
              break;
            }
            var parentB = parentA.alternate;
            if (parentB === null) {
              var nextParent = parentA.return;
              if (nextParent !== null) {
                a = b = nextParent;
                continue;
              }
              break;
            }
            if (parentA.child === parentB.child) {
              var child = parentA.child;
              while (child) {
                if (child === a) {
                  assertIsMounted(parentA);
                  return fiber;
                }
                if (child === b) {
                  assertIsMounted(parentA);
                  return alternate;
                }
                child = child.sibling;
              }
              throw new Error("Unable to find node on an unmounted component.");
            }
            if (a.return !== b.return) {
              a = parentA;
              b = parentB;
            } else {
              var didFindChild = false;
              var _child = parentA.child;
              while (_child) {
                if (_child === a) {
                  didFindChild = true;
                  a = parentA;
                  b = parentB;
                  break;
                }
                if (_child === b) {
                  didFindChild = true;
                  b = parentA;
                  a = parentB;
                  break;
                }
                _child = _child.sibling;
              }
              if (!didFindChild) {
                _child = parentB.child;
                while (_child) {
                  if (_child === a) {
                    didFindChild = true;
                    a = parentB;
                    b = parentA;
                    break;
                  }
                  if (_child === b) {
                    didFindChild = true;
                    b = parentB;
                    a = parentA;
                    break;
                  }
                  _child = _child.sibling;
                }
                if (!didFindChild) {
                  throw new Error("Child was not found in either parent set. This indicates a bug in React related to the return pointer. Please file an issue.");
                }
              }
            }
            if (a.alternate !== b) {
              throw new Error("Return fibers should always be each others' alternates. This error is likely caused by a bug in React. Please file an issue.");
            }
          }
          if (a.tag !== HostRoot) {
            throw new Error("Unable to find node on an unmounted component.");
          }
          if (a.stateNode.current === a) {
            return fiber;
          }
          return alternate;
        }
        function findCurrentHostFiber(parent) {
          var currentParent = findCurrentFiberUsingSlowPath(parent);
          return currentParent !== null ? findCurrentHostFiberImpl(currentParent) : null;
        }
        function findCurrentHostFiberImpl(node) {
          if (node.tag === HostComponent || node.tag === HostText) {
            return node;
          }
          var child = node.child;
          while (child !== null) {
            var match = findCurrentHostFiberImpl(child);
            if (match !== null) {
              return match;
            }
            child = child.sibling;
          }
          return null;
        }
        function findCurrentHostFiberWithNoPortals(parent) {
          var currentParent = findCurrentFiberUsingSlowPath(parent);
          return currentParent !== null ? findCurrentHostFiberWithNoPortalsImpl(currentParent) : null;
        }
        function findCurrentHostFiberWithNoPortalsImpl(node) {
          if (node.tag === HostComponent || node.tag === HostText) {
            return node;
          }
          var child = node.child;
          while (child !== null) {
            if (child.tag !== HostPortal) {
              var match = findCurrentHostFiberWithNoPortalsImpl(child);
              if (match !== null) {
                return match;
              }
            }
            child = child.sibling;
          }
          return null;
        }
        var scheduleCallback = Scheduler.unstable_scheduleCallback;
        var cancelCallback = Scheduler.unstable_cancelCallback;
        var shouldYield = Scheduler.unstable_shouldYield;
        var requestPaint = Scheduler.unstable_requestPaint;
        var now = Scheduler.unstable_now;
        var getCurrentPriorityLevel = Scheduler.unstable_getCurrentPriorityLevel;
        var ImmediatePriority = Scheduler.unstable_ImmediatePriority;
        var UserBlockingPriority = Scheduler.unstable_UserBlockingPriority;
        var NormalPriority = Scheduler.unstable_NormalPriority;
        var LowPriority = Scheduler.unstable_LowPriority;
        var IdlePriority = Scheduler.unstable_IdlePriority;
        var unstable_yieldValue = Scheduler.unstable_yieldValue;
        var unstable_setDisableYieldValue = Scheduler.unstable_setDisableYieldValue;
        var rendererID = null;
        var injectedHook = null;
        var injectedProfilingHooks = null;
        var hasLoggedError = false;
        var isDevToolsPresent = typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== "undefined";
        function injectInternals(internals) {
          if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === "undefined") {
            return false;
          }
          var hook = __REACT_DEVTOOLS_GLOBAL_HOOK__;
          if (hook.isDisabled) {
            return true;
          }
          if (!hook.supportsFiber) {
            {
              error("The installed version of React DevTools is too old and will not work with the current version of React. Please update React DevTools. https://reactjs.org/link/react-devtools");
            }
            return true;
          }
          try {
            if (enableSchedulingProfiler) {
              internals = assign({}, internals, {
                getLaneLabelMap,
                injectProfilingHooks
              });
            }
            rendererID = hook.inject(internals);
            injectedHook = hook;
          } catch (err) {
            {
              error("React instrumentation encountered an error: %s.", err);
            }
          }
          if (hook.checkDCE) {
            return true;
          } else {
            return false;
          }
        }
        function onScheduleRoot(root2, children) {
          {
            if (injectedHook && typeof injectedHook.onScheduleFiberRoot === "function") {
              try {
                injectedHook.onScheduleFiberRoot(rendererID, root2, children);
              } catch (err) {
                if (!hasLoggedError) {
                  hasLoggedError = true;
                  error("React instrumentation encountered an error: %s", err);
                }
              }
            }
          }
        }
        function onCommitRoot(root2, eventPriority) {
          if (injectedHook && typeof injectedHook.onCommitFiberRoot === "function") {
            try {
              var didError = (root2.current.flags & DidCapture) === DidCapture;
              if (enableProfilerTimer) {
                var schedulerPriority;
                switch (eventPriority) {
                  case DiscreteEventPriority:
                    schedulerPriority = ImmediatePriority;
                    break;
                  case ContinuousEventPriority:
                    schedulerPriority = UserBlockingPriority;
                    break;
                  case DefaultEventPriority:
                    schedulerPriority = NormalPriority;
                    break;
                  case IdleEventPriority:
                    schedulerPriority = IdlePriority;
                    break;
                  default:
                    schedulerPriority = NormalPriority;
                    break;
                }
                injectedHook.onCommitFiberRoot(rendererID, root2, schedulerPriority, didError);
              } else {
                injectedHook.onCommitFiberRoot(rendererID, root2, void 0, didError);
              }
            } catch (err) {
              {
                if (!hasLoggedError) {
                  hasLoggedError = true;
                  error("React instrumentation encountered an error: %s", err);
                }
              }
            }
          }
        }
        function onPostCommitRoot(root2) {
          if (injectedHook && typeof injectedHook.onPostCommitFiberRoot === "function") {
            try {
              injectedHook.onPostCommitFiberRoot(rendererID, root2);
            } catch (err) {
              {
                if (!hasLoggedError) {
                  hasLoggedError = true;
                  error("React instrumentation encountered an error: %s", err);
                }
              }
            }
          }
        }
        function onCommitUnmount(fiber) {
          if (injectedHook && typeof injectedHook.onCommitFiberUnmount === "function") {
            try {
              injectedHook.onCommitFiberUnmount(rendererID, fiber);
            } catch (err) {
              {
                if (!hasLoggedError) {
                  hasLoggedError = true;
                  error("React instrumentation encountered an error: %s", err);
                }
              }
            }
          }
        }
        function setIsStrictModeForDevtools(newIsStrictMode) {
          {
            if (typeof unstable_yieldValue === "function") {
              unstable_setDisableYieldValue(newIsStrictMode);
              setSuppressWarning(newIsStrictMode);
            }
            if (injectedHook && typeof injectedHook.setStrictMode === "function") {
              try {
                injectedHook.setStrictMode(rendererID, newIsStrictMode);
              } catch (err) {
                {
                  if (!hasLoggedError) {
                    hasLoggedError = true;
                    error("React instrumentation encountered an error: %s", err);
                  }
                }
              }
            }
          }
        }
        function injectProfilingHooks(profilingHooks) {
          injectedProfilingHooks = profilingHooks;
        }
        function getLaneLabelMap() {
          {
            var map = /* @__PURE__ */ new Map();
            var lane = 1;
            for (var index2 = 0; index2 < TotalLanes; index2++) {
              var label = getLabelForLane(lane);
              map.set(lane, label);
              lane *= 2;
            }
            return map;
          }
        }
        function markCommitStarted(lanes) {
          {
            if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markCommitStarted === "function") {
              injectedProfilingHooks.markCommitStarted(lanes);
            }
          }
        }
        function markCommitStopped() {
          {
            if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markCommitStopped === "function") {
              injectedProfilingHooks.markCommitStopped();
            }
          }
        }
        function markComponentRenderStarted(fiber) {
          {
            if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentRenderStarted === "function") {
              injectedProfilingHooks.markComponentRenderStarted(fiber);
            }
          }
        }
        function markComponentRenderStopped() {
          {
            if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentRenderStopped === "function") {
              injectedProfilingHooks.markComponentRenderStopped();
            }
          }
        }
        function markComponentPassiveEffectMountStarted(fiber) {
          {
            if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentPassiveEffectMountStarted === "function") {
              injectedProfilingHooks.markComponentPassiveEffectMountStarted(fiber);
            }
          }
        }
        function markComponentPassiveEffectMountStopped() {
          {
            if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentPassiveEffectMountStopped === "function") {
              injectedProfilingHooks.markComponentPassiveEffectMountStopped();
            }
          }
        }
        function markComponentPassiveEffectUnmountStarted(fiber) {
          {
            if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentPassiveEffectUnmountStarted === "function") {
              injectedProfilingHooks.markComponentPassiveEffectUnmountStarted(fiber);
            }
          }
        }
        function markComponentPassiveEffectUnmountStopped() {
          {
            if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentPassiveEffectUnmountStopped === "function") {
              injectedProfilingHooks.markComponentPassiveEffectUnmountStopped();
            }
          }
        }
        function markComponentLayoutEffectMountStarted(fiber) {
          {
            if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentLayoutEffectMountStarted === "function") {
              injectedProfilingHooks.markComponentLayoutEffectMountStarted(fiber);
            }
          }
        }
        function markComponentLayoutEffectMountStopped() {
          {
            if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentLayoutEffectMountStopped === "function") {
              injectedProfilingHooks.markComponentLayoutEffectMountStopped();
            }
          }
        }
        function markComponentLayoutEffectUnmountStarted(fiber) {
          {
            if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentLayoutEffectUnmountStarted === "function") {
              injectedProfilingHooks.markComponentLayoutEffectUnmountStarted(fiber);
            }
          }
        }
        function markComponentLayoutEffectUnmountStopped() {
          {
            if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentLayoutEffectUnmountStopped === "function") {
              injectedProfilingHooks.markComponentLayoutEffectUnmountStopped();
            }
          }
        }
        function markComponentErrored(fiber, thrownValue, lanes) {
          {
            if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentErrored === "function") {
              injectedProfilingHooks.markComponentErrored(fiber, thrownValue, lanes);
            }
          }
        }
        function markComponentSuspended(fiber, wakeable, lanes) {
          {
            if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentSuspended === "function") {
              injectedProfilingHooks.markComponentSuspended(fiber, wakeable, lanes);
            }
          }
        }
        function markLayoutEffectsStarted(lanes) {
          {
            if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markLayoutEffectsStarted === "function") {
              injectedProfilingHooks.markLayoutEffectsStarted(lanes);
            }
          }
        }
        function markLayoutEffectsStopped() {
          {
            if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markLayoutEffectsStopped === "function") {
              injectedProfilingHooks.markLayoutEffectsStopped();
            }
          }
        }
        function markPassiveEffectsStarted(lanes) {
          {
            if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markPassiveEffectsStarted === "function") {
              injectedProfilingHooks.markPassiveEffectsStarted(lanes);
            }
          }
        }
        function markPassiveEffectsStopped() {
          {
            if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markPassiveEffectsStopped === "function") {
              injectedProfilingHooks.markPassiveEffectsStopped();
            }
          }
        }
        function markRenderStarted(lanes) {
          {
            if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markRenderStarted === "function") {
              injectedProfilingHooks.markRenderStarted(lanes);
            }
          }
        }
        function markRenderYielded() {
          {
            if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markRenderYielded === "function") {
              injectedProfilingHooks.markRenderYielded();
            }
          }
        }
        function markRenderStopped() {
          {
            if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markRenderStopped === "function") {
              injectedProfilingHooks.markRenderStopped();
            }
          }
        }
        function markRenderScheduled(lane) {
          {
            if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markRenderScheduled === "function") {
              injectedProfilingHooks.markRenderScheduled(lane);
            }
          }
        }
        function markForceUpdateScheduled(fiber, lane) {
          {
            if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markForceUpdateScheduled === "function") {
              injectedProfilingHooks.markForceUpdateScheduled(fiber, lane);
            }
          }
        }
        function markStateUpdateScheduled(fiber, lane) {
          {
            if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markStateUpdateScheduled === "function") {
              injectedProfilingHooks.markStateUpdateScheduled(fiber, lane);
            }
          }
        }
        var NoMode = (
          /*                         */
          0
        );
        var ConcurrentMode = (
          /*                 */
          1
        );
        var ProfileMode = (
          /*                    */
          2
        );
        var StrictLegacyMode = (
          /*               */
          8
        );
        var StrictEffectsMode = (
          /*              */
          16
        );
        var clz32 = Math.clz32 ? Math.clz32 : clz32Fallback;
        var log = Math.log;
        var LN2 = Math.LN2;
        function clz32Fallback(x) {
          var asUint = x >>> 0;
          if (asUint === 0) {
            return 32;
          }
          return 31 - (log(asUint) / LN2 | 0) | 0;
        }
        var TotalLanes = 31;
        var NoLanes = (
          /*                        */
          0
        );
        var NoLane = (
          /*                          */
          0
        );
        var SyncLane = (
          /*                        */
          1
        );
        var InputContinuousHydrationLane = (
          /*    */
          2
        );
        var InputContinuousLane = (
          /*             */
          4
        );
        var DefaultHydrationLane = (
          /*            */
          8
        );
        var DefaultLane = (
          /*                     */
          16
        );
        var TransitionHydrationLane = (
          /*                */
          32
        );
        var TransitionLanes = (
          /*                       */
          4194240
        );
        var TransitionLane1 = (
          /*                        */
          64
        );
        var TransitionLane2 = (
          /*                        */
          128
        );
        var TransitionLane3 = (
          /*                        */
          256
        );
        var TransitionLane4 = (
          /*                        */
          512
        );
        var TransitionLane5 = (
          /*                        */
          1024
        );
        var TransitionLane6 = (
          /*                        */
          2048
        );
        var TransitionLane7 = (
          /*                        */
          4096
        );
        var TransitionLane8 = (
          /*                        */
          8192
        );
        var TransitionLane9 = (
          /*                        */
          16384
        );
        var TransitionLane10 = (
          /*                       */
          32768
        );
        var TransitionLane11 = (
          /*                       */
          65536
        );
        var TransitionLane12 = (
          /*                       */
          131072
        );
        var TransitionLane13 = (
          /*                       */
          262144
        );
        var TransitionLane14 = (
          /*                       */
          524288
        );
        var TransitionLane15 = (
          /*                       */
          1048576
        );
        var TransitionLane16 = (
          /*                       */
          2097152
        );
        var RetryLanes = (
          /*                            */
          130023424
        );
        var RetryLane1 = (
          /*                             */
          4194304
        );
        var RetryLane2 = (
          /*                             */
          8388608
        );
        var RetryLane3 = (
          /*                             */
          16777216
        );
        var RetryLane4 = (
          /*                             */
          33554432
        );
        var RetryLane5 = (
          /*                             */
          67108864
        );
        var SomeRetryLane = RetryLane1;
        var SelectiveHydrationLane = (
          /*          */
          134217728
        );
        var NonIdleLanes = (
          /*                          */
          268435455
        );
        var IdleHydrationLane = (
          /*               */
          268435456
        );
        var IdleLane = (
          /*                        */
          536870912
        );
        var OffscreenLane = (
          /*                   */
          1073741824
        );
        function getLabelForLane(lane) {
          {
            if (lane & SyncLane) {
              return "Sync";
            }
            if (lane & InputContinuousHydrationLane) {
              return "InputContinuousHydration";
            }
            if (lane & InputContinuousLane) {
              return "InputContinuous";
            }
            if (lane & DefaultHydrationLane) {
              return "DefaultHydration";
            }
            if (lane & DefaultLane) {
              return "Default";
            }
            if (lane & TransitionHydrationLane) {
              return "TransitionHydration";
            }
            if (lane & TransitionLanes) {
              return "Transition";
            }
            if (lane & RetryLanes) {
              return "Retry";
            }
            if (lane & SelectiveHydrationLane) {
              return "SelectiveHydration";
            }
            if (lane & IdleHydrationLane) {
              return "IdleHydration";
            }
            if (lane & IdleLane) {
              return "Idle";
            }
            if (lane & OffscreenLane) {
              return "Offscreen";
            }
          }
        }
        var NoTimestamp = -1;
        var nextTransitionLane = TransitionLane1;
        var nextRetryLane = RetryLane1;
        function getHighestPriorityLanes(lanes) {
          switch (getHighestPriorityLane(lanes)) {
            case SyncLane:
              return SyncLane;
            case InputContinuousHydrationLane:
              return InputContinuousHydrationLane;
            case InputContinuousLane:
              return InputContinuousLane;
            case DefaultHydrationLane:
              return DefaultHydrationLane;
            case DefaultLane:
              return DefaultLane;
            case TransitionHydrationLane:
              return TransitionHydrationLane;
            case TransitionLane1:
            case TransitionLane2:
            case TransitionLane3:
            case TransitionLane4:
            case TransitionLane5:
            case TransitionLane6:
            case TransitionLane7:
            case TransitionLane8:
            case TransitionLane9:
            case TransitionLane10:
            case TransitionLane11:
            case TransitionLane12:
            case TransitionLane13:
            case TransitionLane14:
            case TransitionLane15:
            case TransitionLane16:
              return lanes & TransitionLanes;
            case RetryLane1:
            case RetryLane2:
            case RetryLane3:
            case RetryLane4:
            case RetryLane5:
              return lanes & RetryLanes;
            case SelectiveHydrationLane:
              return SelectiveHydrationLane;
            case IdleHydrationLane:
              return IdleHydrationLane;
            case IdleLane:
              return IdleLane;
            case OffscreenLane:
              return OffscreenLane;
            default:
              {
                error("Should have found matching lanes. This is a bug in React.");
              }
              return lanes;
          }
        }
        function getNextLanes(root2, wipLanes) {
          var pendingLanes = root2.pendingLanes;
          if (pendingLanes === NoLanes) {
            return NoLanes;
          }
          var nextLanes = NoLanes;
          var suspendedLanes = root2.suspendedLanes;
          var pingedLanes = root2.pingedLanes;
          var nonIdlePendingLanes = pendingLanes & NonIdleLanes;
          if (nonIdlePendingLanes !== NoLanes) {
            var nonIdleUnblockedLanes = nonIdlePendingLanes & ~suspendedLanes;
            if (nonIdleUnblockedLanes !== NoLanes) {
              nextLanes = getHighestPriorityLanes(nonIdleUnblockedLanes);
            } else {
              var nonIdlePingedLanes = nonIdlePendingLanes & pingedLanes;
              if (nonIdlePingedLanes !== NoLanes) {
                nextLanes = getHighestPriorityLanes(nonIdlePingedLanes);
              }
            }
          } else {
            var unblockedLanes = pendingLanes & ~suspendedLanes;
            if (unblockedLanes !== NoLanes) {
              nextLanes = getHighestPriorityLanes(unblockedLanes);
            } else {
              if (pingedLanes !== NoLanes) {
                nextLanes = getHighestPriorityLanes(pingedLanes);
              }
            }
          }
          if (nextLanes === NoLanes) {
            return NoLanes;
          }
          if (wipLanes !== NoLanes && wipLanes !== nextLanes && // If we already suspended with a delay, then interrupting is fine. Don't
          // bother waiting until the root is complete.
          (wipLanes & suspendedLanes) === NoLanes) {
            var nextLane = getHighestPriorityLane(nextLanes);
            var wipLane = getHighestPriorityLane(wipLanes);
            if (
              // Tests whether the next lane is equal or lower priority than the wip
              // one. This works because the bits decrease in priority as you go left.
              nextLane >= wipLane || // Default priority updates should not interrupt transition updates. The
              // only difference between default updates and transition updates is that
              // default updates do not support refresh transitions.
              nextLane === DefaultLane && (wipLane & TransitionLanes) !== NoLanes
            ) {
              return wipLanes;
            }
          }
          if ((nextLanes & InputContinuousLane) !== NoLanes) {
            nextLanes |= pendingLanes & DefaultLane;
          }
          var entangledLanes = root2.entangledLanes;
          if (entangledLanes !== NoLanes) {
            var entanglements = root2.entanglements;
            var lanes = nextLanes & entangledLanes;
            while (lanes > 0) {
              var index2 = pickArbitraryLaneIndex(lanes);
              var lane = 1 << index2;
              nextLanes |= entanglements[index2];
              lanes &= ~lane;
            }
          }
          return nextLanes;
        }
        function getMostRecentEventTime(root2, lanes) {
          var eventTimes = root2.eventTimes;
          var mostRecentEventTime = NoTimestamp;
          while (lanes > 0) {
            var index2 = pickArbitraryLaneIndex(lanes);
            var lane = 1 << index2;
            var eventTime = eventTimes[index2];
            if (eventTime > mostRecentEventTime) {
              mostRecentEventTime = eventTime;
            }
            lanes &= ~lane;
          }
          return mostRecentEventTime;
        }
        function computeExpirationTime(lane, currentTime) {
          switch (lane) {
            case SyncLane:
            case InputContinuousHydrationLane:
            case InputContinuousLane:
              return currentTime + 250;
            case DefaultHydrationLane:
            case DefaultLane:
            case TransitionHydrationLane:
            case TransitionLane1:
            case TransitionLane2:
            case TransitionLane3:
            case TransitionLane4:
            case TransitionLane5:
            case TransitionLane6:
            case TransitionLane7:
            case TransitionLane8:
            case TransitionLane9:
            case TransitionLane10:
            case TransitionLane11:
            case TransitionLane12:
            case TransitionLane13:
            case TransitionLane14:
            case TransitionLane15:
            case TransitionLane16:
              return currentTime + 5e3;
            case RetryLane1:
            case RetryLane2:
            case RetryLane3:
            case RetryLane4:
            case RetryLane5:
              return NoTimestamp;
            case SelectiveHydrationLane:
            case IdleHydrationLane:
            case IdleLane:
            case OffscreenLane:
              return NoTimestamp;
            default:
              {
                error("Should have found matching lanes. This is a bug in React.");
              }
              return NoTimestamp;
          }
        }
        function markStarvedLanesAsExpired(root2, currentTime) {
          var pendingLanes = root2.pendingLanes;
          var suspendedLanes = root2.suspendedLanes;
          var pingedLanes = root2.pingedLanes;
          var expirationTimes = root2.expirationTimes;
          var lanes = pendingLanes;
          while (lanes > 0) {
            var index2 = pickArbitraryLaneIndex(lanes);
            var lane = 1 << index2;
            var expirationTime = expirationTimes[index2];
            if (expirationTime === NoTimestamp) {
              if ((lane & suspendedLanes) === NoLanes || (lane & pingedLanes) !== NoLanes) {
                expirationTimes[index2] = computeExpirationTime(lane, currentTime);
              }
            } else if (expirationTime <= currentTime) {
              root2.expiredLanes |= lane;
            }
            lanes &= ~lane;
          }
        }
        function getHighestPriorityPendingLanes(root2) {
          return getHighestPriorityLanes(root2.pendingLanes);
        }
        function getLanesToRetrySynchronouslyOnError(root2) {
          var everythingButOffscreen = root2.pendingLanes & ~OffscreenLane;
          if (everythingButOffscreen !== NoLanes) {
            return everythingButOffscreen;
          }
          if (everythingButOffscreen & OffscreenLane) {
            return OffscreenLane;
          }
          return NoLanes;
        }
        function includesSyncLane(lanes) {
          return (lanes & SyncLane) !== NoLanes;
        }
        function includesNonIdleWork(lanes) {
          return (lanes & NonIdleLanes) !== NoLanes;
        }
        function includesOnlyRetries(lanes) {
          return (lanes & RetryLanes) === lanes;
        }
        function includesOnlyNonUrgentLanes(lanes) {
          var UrgentLanes = SyncLane | InputContinuousLane | DefaultLane;
          return (lanes & UrgentLanes) === NoLanes;
        }
        function includesOnlyTransitions(lanes) {
          return (lanes & TransitionLanes) === lanes;
        }
        function includesBlockingLane(root2, lanes) {
          var SyncDefaultLanes = InputContinuousHydrationLane | InputContinuousLane | DefaultHydrationLane | DefaultLane;
          return (lanes & SyncDefaultLanes) !== NoLanes;
        }
        function includesExpiredLane(root2, lanes) {
          return (lanes & root2.expiredLanes) !== NoLanes;
        }
        function isTransitionLane(lane) {
          return (lane & TransitionLanes) !== NoLanes;
        }
        function claimNextTransitionLane() {
          var lane = nextTransitionLane;
          nextTransitionLane <<= 1;
          if ((nextTransitionLane & TransitionLanes) === NoLanes) {
            nextTransitionLane = TransitionLane1;
          }
          return lane;
        }
        function claimNextRetryLane() {
          var lane = nextRetryLane;
          nextRetryLane <<= 1;
          if ((nextRetryLane & RetryLanes) === NoLanes) {
            nextRetryLane = RetryLane1;
          }
          return lane;
        }
        function getHighestPriorityLane(lanes) {
          return lanes & -lanes;
        }
        function pickArbitraryLane(lanes) {
          return getHighestPriorityLane(lanes);
        }
        function pickArbitraryLaneIndex(lanes) {
          return 31 - clz32(lanes);
        }
        function laneToIndex(lane) {
          return pickArbitraryLaneIndex(lane);
        }
        function includesSomeLane(a, b) {
          return (a & b) !== NoLanes;
        }
        function isSubsetOfLanes(set2, subset) {
          return (set2 & subset) === subset;
        }
        function mergeLanes(a, b) {
          return a | b;
        }
        function removeLanes(set2, subset) {
          return set2 & ~subset;
        }
        function intersectLanes(a, b) {
          return a & b;
        }
        function laneToLanes(lane) {
          return lane;
        }
        function higherPriorityLane(a, b) {
          return a !== NoLane && a < b ? a : b;
        }
        function createLaneMap(initial) {
          var laneMap = [];
          for (var i = 0; i < TotalLanes; i++) {
            laneMap.push(initial);
          }
          return laneMap;
        }
        function markRootUpdated(root2, updateLane, eventTime) {
          root2.pendingLanes |= updateLane;
          if (updateLane !== IdleLane) {
            root2.suspendedLanes = NoLanes;
            root2.pingedLanes = NoLanes;
          }
          var eventTimes = root2.eventTimes;
          var index2 = laneToIndex(updateLane);
          eventTimes[index2] = eventTime;
        }
        function markRootSuspended(root2, suspendedLanes) {
          root2.suspendedLanes |= suspendedLanes;
          root2.pingedLanes &= ~suspendedLanes;
          var expirationTimes = root2.expirationTimes;
          var lanes = suspendedLanes;
          while (lanes > 0) {
            var index2 = pickArbitraryLaneIndex(lanes);
            var lane = 1 << index2;
            expirationTimes[index2] = NoTimestamp;
            lanes &= ~lane;
          }
        }
        function markRootPinged(root2, pingedLanes, eventTime) {
          root2.pingedLanes |= root2.suspendedLanes & pingedLanes;
        }
        function markRootFinished(root2, remainingLanes) {
          var noLongerPendingLanes = root2.pendingLanes & ~remainingLanes;
          root2.pendingLanes = remainingLanes;
          root2.suspendedLanes = NoLanes;
          root2.pingedLanes = NoLanes;
          root2.expiredLanes &= remainingLanes;
          root2.mutableReadLanes &= remainingLanes;
          root2.entangledLanes &= remainingLanes;
          var entanglements = root2.entanglements;
          var eventTimes = root2.eventTimes;
          var expirationTimes = root2.expirationTimes;
          var lanes = noLongerPendingLanes;
          while (lanes > 0) {
            var index2 = pickArbitraryLaneIndex(lanes);
            var lane = 1 << index2;
            entanglements[index2] = NoLanes;
            eventTimes[index2] = NoTimestamp;
            expirationTimes[index2] = NoTimestamp;
            lanes &= ~lane;
          }
        }
        function markRootEntangled(root2, entangledLanes) {
          var rootEntangledLanes = root2.entangledLanes |= entangledLanes;
          var entanglements = root2.entanglements;
          var lanes = rootEntangledLanes;
          while (lanes) {
            var index2 = pickArbitraryLaneIndex(lanes);
            var lane = 1 << index2;
            if (
              // Is this one of the newly entangled lanes?
              lane & entangledLanes | // Is this lane transitively entangled with the newly entangled lanes?
              entanglements[index2] & entangledLanes
            ) {
              entanglements[index2] |= entangledLanes;
            }
            lanes &= ~lane;
          }
        }
        function getBumpedLaneForHydration(root2, renderLanes2) {
          var renderLane = getHighestPriorityLane(renderLanes2);
          var lane;
          switch (renderLane) {
            case InputContinuousLane:
              lane = InputContinuousHydrationLane;
              break;
            case DefaultLane:
              lane = DefaultHydrationLane;
              break;
            case TransitionLane1:
            case TransitionLane2:
            case TransitionLane3:
            case TransitionLane4:
            case TransitionLane5:
            case TransitionLane6:
            case TransitionLane7:
            case TransitionLane8:
            case TransitionLane9:
            case TransitionLane10:
            case TransitionLane11:
            case TransitionLane12:
            case TransitionLane13:
            case TransitionLane14:
            case TransitionLane15:
            case TransitionLane16:
            case RetryLane1:
            case RetryLane2:
            case RetryLane3:
            case RetryLane4:
            case RetryLane5:
              lane = TransitionHydrationLane;
              break;
            case IdleLane:
              lane = IdleHydrationLane;
              break;
            default:
              lane = NoLane;
              break;
          }
          if ((lane & (root2.suspendedLanes | renderLanes2)) !== NoLane) {
            return NoLane;
          }
          return lane;
        }
        function addFiberToLanesMap(root2, fiber, lanes) {
          if (!isDevToolsPresent) {
            return;
          }
          var pendingUpdatersLaneMap = root2.pendingUpdatersLaneMap;
          while (lanes > 0) {
            var index2 = laneToIndex(lanes);
            var lane = 1 << index2;
            var updaters = pendingUpdatersLaneMap[index2];
            updaters.add(fiber);
            lanes &= ~lane;
          }
        }
        function movePendingFibersToMemoized(root2, lanes) {
          if (!isDevToolsPresent) {
            return;
          }
          var pendingUpdatersLaneMap = root2.pendingUpdatersLaneMap;
          var memoizedUpdaters = root2.memoizedUpdaters;
          while (lanes > 0) {
            var index2 = laneToIndex(lanes);
            var lane = 1 << index2;
            var updaters = pendingUpdatersLaneMap[index2];
            if (updaters.size > 0) {
              updaters.forEach(function(fiber) {
                var alternate = fiber.alternate;
                if (alternate === null || !memoizedUpdaters.has(alternate)) {
                  memoizedUpdaters.add(fiber);
                }
              });
              updaters.clear();
            }
            lanes &= ~lane;
          }
        }
        function getTransitionsForLanes(root2, lanes) {
          {
            return null;
          }
        }
        var DiscreteEventPriority = SyncLane;
        var ContinuousEventPriority = InputContinuousLane;
        var DefaultEventPriority = DefaultLane;
        var IdleEventPriority = IdleLane;
        var currentUpdatePriority = NoLane;
        function getCurrentUpdatePriority() {
          return currentUpdatePriority;
        }
        function setCurrentUpdatePriority(newPriority) {
          currentUpdatePriority = newPriority;
        }
        function runWithPriority(priority, fn) {
          var previousPriority = currentUpdatePriority;
          try {
            currentUpdatePriority = priority;
            return fn();
          } finally {
            currentUpdatePriority = previousPriority;
          }
        }
        function higherEventPriority(a, b) {
          return a !== 0 && a < b ? a : b;
        }
        function lowerEventPriority(a, b) {
          return a === 0 || a > b ? a : b;
        }
        function isHigherEventPriority(a, b) {
          return a !== 0 && a < b;
        }
        function lanesToEventPriority(lanes) {
          var lane = getHighestPriorityLane(lanes);
          if (!isHigherEventPriority(DiscreteEventPriority, lane)) {
            return DiscreteEventPriority;
          }
          if (!isHigherEventPriority(ContinuousEventPriority, lane)) {
            return ContinuousEventPriority;
          }
          if (includesNonIdleWork(lane)) {
            return DefaultEventPriority;
          }
          return IdleEventPriority;
        }
        function isRootDehydrated(root2) {
          var currentState = root2.current.memoizedState;
          return currentState.isDehydrated;
        }
        var _attemptSynchronousHydration;
        function setAttemptSynchronousHydration(fn) {
          _attemptSynchronousHydration = fn;
        }
        function attemptSynchronousHydration(fiber) {
          _attemptSynchronousHydration(fiber);
        }
        var attemptContinuousHydration;
        function setAttemptContinuousHydration(fn) {
          attemptContinuousHydration = fn;
        }
        var attemptHydrationAtCurrentPriority;
        function setAttemptHydrationAtCurrentPriority(fn) {
          attemptHydrationAtCurrentPriority = fn;
        }
        var getCurrentUpdatePriority$1;
        function setGetCurrentUpdatePriority(fn) {
          getCurrentUpdatePriority$1 = fn;
        }
        var attemptHydrationAtPriority;
        function setAttemptHydrationAtPriority(fn) {
          attemptHydrationAtPriority = fn;
        }
        var hasScheduledReplayAttempt = false;
        var queuedDiscreteEvents = [];
        var queuedFocus = null;
        var queuedDrag = null;
        var queuedMouse = null;
        var queuedPointers = /* @__PURE__ */ new Map();
        var queuedPointerCaptures = /* @__PURE__ */ new Map();
        var queuedExplicitHydrationTargets = [];
        var discreteReplayableEvents = [
          "mousedown",
          "mouseup",
          "touchcancel",
          "touchend",
          "touchstart",
          "auxclick",
          "dblclick",
          "pointercancel",
          "pointerdown",
          "pointerup",
          "dragend",
          "dragstart",
          "drop",
          "compositionend",
          "compositionstart",
          "keydown",
          "keypress",
          "keyup",
          "input",
          "textInput",
          // Intentionally camelCase
          "copy",
          "cut",
          "paste",
          "click",
          "change",
          "contextmenu",
          "reset",
          "submit"
        ];
        function isDiscreteEventThatRequiresHydration(eventType) {
          return discreteReplayableEvents.indexOf(eventType) > -1;
        }
        function createQueuedReplayableEvent(blockedOn, domEventName, eventSystemFlags, targetContainer, nativeEvent) {
          return {
            blockedOn,
            domEventName,
            eventSystemFlags,
            nativeEvent,
            targetContainers: [targetContainer]
          };
        }
        function clearIfContinuousEvent(domEventName, nativeEvent) {
          switch (domEventName) {
            case "focusin":
            case "focusout":
              queuedFocus = null;
              break;
            case "dragenter":
            case "dragleave":
              queuedDrag = null;
              break;
            case "mouseover":
            case "mouseout":
              queuedMouse = null;
              break;
            case "pointerover":
            case "pointerout": {
              var pointerId = nativeEvent.pointerId;
              queuedPointers.delete(pointerId);
              break;
            }
            case "gotpointercapture":
            case "lostpointercapture": {
              var _pointerId = nativeEvent.pointerId;
              queuedPointerCaptures.delete(_pointerId);
              break;
            }
          }
        }
        function accumulateOrCreateContinuousQueuedReplayableEvent(existingQueuedEvent, blockedOn, domEventName, eventSystemFlags, targetContainer, nativeEvent) {
          if (existingQueuedEvent === null || existingQueuedEvent.nativeEvent !== nativeEvent) {
            var queuedEvent = createQueuedReplayableEvent(blockedOn, domEventName, eventSystemFlags, targetContainer, nativeEvent);
            if (blockedOn !== null) {
              var _fiber2 = getInstanceFromNode(blockedOn);
              if (_fiber2 !== null) {
                attemptContinuousHydration(_fiber2);
              }
            }
            return queuedEvent;
          }
          existingQueuedEvent.eventSystemFlags |= eventSystemFlags;
          var targetContainers = existingQueuedEvent.targetContainers;
          if (targetContainer !== null && targetContainers.indexOf(targetContainer) === -1) {
            targetContainers.push(targetContainer);
          }
          return existingQueuedEvent;
        }
        function queueIfContinuousEvent(blockedOn, domEventName, eventSystemFlags, targetContainer, nativeEvent) {
          switch (domEventName) {
            case "focusin": {
              var focusEvent = nativeEvent;
              queuedFocus = accumulateOrCreateContinuousQueuedReplayableEvent(queuedFocus, blockedOn, domEventName, eventSystemFlags, targetContainer, focusEvent);
              return true;
            }
            case "dragenter": {
              var dragEvent = nativeEvent;
              queuedDrag = accumulateOrCreateContinuousQueuedReplayableEvent(queuedDrag, blockedOn, domEventName, eventSystemFlags, targetContainer, dragEvent);
              return true;
            }
            case "mouseover": {
              var mouseEvent = nativeEvent;
              queuedMouse = accumulateOrCreateContinuousQueuedReplayableEvent(queuedMouse, blockedOn, domEventName, eventSystemFlags, targetContainer, mouseEvent);
              return true;
            }
            case "pointerover": {
              var pointerEvent = nativeEvent;
              var pointerId = pointerEvent.pointerId;
              queuedPointers.set(pointerId, accumulateOrCreateContinuousQueuedReplayableEvent(queuedPointers.get(pointerId) || null, blockedOn, domEventName, eventSystemFlags, targetContainer, pointerEvent));
              return true;
            }
            case "gotpointercapture": {
              var _pointerEvent = nativeEvent;
              var _pointerId2 = _pointerEvent.pointerId;
              queuedPointerCaptures.set(_pointerId2, accumulateOrCreateContinuousQueuedReplayableEvent(queuedPointerCaptures.get(_pointerId2) || null, blockedOn, domEventName, eventSystemFlags, targetContainer, _pointerEvent));
              return true;
            }
          }
          return false;
        }
        function attemptExplicitHydrationTarget(queuedTarget) {
          var targetInst = getClosestInstanceFromNode(queuedTarget.target);
          if (targetInst !== null) {
            var nearestMounted = getNearestMountedFiber(targetInst);
            if (nearestMounted !== null) {
              var tag = nearestMounted.tag;
              if (tag === SuspenseComponent) {
                var instance = getSuspenseInstanceFromFiber(nearestMounted);
                if (instance !== null) {
                  queuedTarget.blockedOn = instance;
                  attemptHydrationAtPriority(queuedTarget.priority, function() {
                    attemptHydrationAtCurrentPriority(nearestMounted);
                  });
                  return;
                }
              } else if (tag === HostRoot) {
                var root2 = nearestMounted.stateNode;
                if (isRootDehydrated(root2)) {
                  queuedTarget.blockedOn = getContainerFromFiber(nearestMounted);
                  return;
                }
              }
            }
          }
          queuedTarget.blockedOn = null;
        }
        function queueExplicitHydrationTarget(target) {
          var updatePriority = getCurrentUpdatePriority$1();
          var queuedTarget = {
            blockedOn: null,
            target,
            priority: updatePriority
          };
          var i = 0;
          for (; i < queuedExplicitHydrationTargets.length; i++) {
            if (!isHigherEventPriority(updatePriority, queuedExplicitHydrationTargets[i].priority)) {
              break;
            }
          }
          queuedExplicitHydrationTargets.splice(i, 0, queuedTarget);
          if (i === 0) {
            attemptExplicitHydrationTarget(queuedTarget);
          }
        }
        function attemptReplayContinuousQueuedEvent(queuedEvent) {
          if (queuedEvent.blockedOn !== null) {
            return false;
          }
          var targetContainers = queuedEvent.targetContainers;
          while (targetContainers.length > 0) {
            var targetContainer = targetContainers[0];
            var nextBlockedOn = findInstanceBlockingEvent(queuedEvent.domEventName, queuedEvent.eventSystemFlags, targetContainer, queuedEvent.nativeEvent);
            if (nextBlockedOn === null) {
              {
                var nativeEvent = queuedEvent.nativeEvent;
                var nativeEventClone = new nativeEvent.constructor(nativeEvent.type, nativeEvent);
                setReplayingEvent(nativeEventClone);
                nativeEvent.target.dispatchEvent(nativeEventClone);
                resetReplayingEvent();
              }
            } else {
              var _fiber3 = getInstanceFromNode(nextBlockedOn);
              if (_fiber3 !== null) {
                attemptContinuousHydration(_fiber3);
              }
              queuedEvent.blockedOn = nextBlockedOn;
              return false;
            }
            targetContainers.shift();
          }
          return true;
        }
        function attemptReplayContinuousQueuedEventInMap(queuedEvent, key, map) {
          if (attemptReplayContinuousQueuedEvent(queuedEvent)) {
            map.delete(key);
          }
        }
        function replayUnblockedEvents() {
          hasScheduledReplayAttempt = false;
          if (queuedFocus !== null && attemptReplayContinuousQueuedEvent(queuedFocus)) {
            queuedFocus = null;
          }
          if (queuedDrag !== null && attemptReplayContinuousQueuedEvent(queuedDrag)) {
            queuedDrag = null;
          }
          if (queuedMouse !== null && attemptReplayContinuousQueuedEvent(queuedMouse)) {
            queuedMouse = null;
          }
          queuedPointers.forEach(attemptReplayContinuousQueuedEventInMap);
          queuedPointerCaptures.forEach(attemptReplayContinuousQueuedEventInMap);
        }
        function scheduleCallbackIfUnblocked(queuedEvent, unblocked) {
          if (queuedEvent.blockedOn === unblocked) {
            queuedEvent.blockedOn = null;
            if (!hasScheduledReplayAttempt) {
              hasScheduledReplayAttempt = true;
              Scheduler.unstable_scheduleCallback(Scheduler.unstable_NormalPriority, replayUnblockedEvents);
            }
          }
        }
        function retryIfBlockedOn(unblocked) {
          if (queuedDiscreteEvents.length > 0) {
            scheduleCallbackIfUnblocked(queuedDiscreteEvents[0], unblocked);
            for (var i = 1; i < queuedDiscreteEvents.length; i++) {
              var queuedEvent = queuedDiscreteEvents[i];
              if (queuedEvent.blockedOn === unblocked) {
                queuedEvent.blockedOn = null;
              }
            }
          }
          if (queuedFocus !== null) {
            scheduleCallbackIfUnblocked(queuedFocus, unblocked);
          }
          if (queuedDrag !== null) {
            scheduleCallbackIfUnblocked(queuedDrag, unblocked);
          }
          if (queuedMouse !== null) {
            scheduleCallbackIfUnblocked(queuedMouse, unblocked);
          }
          var unblock = function(queuedEvent2) {
            return scheduleCallbackIfUnblocked(queuedEvent2, unblocked);
          };
          queuedPointers.forEach(unblock);
          queuedPointerCaptures.forEach(unblock);
          for (var _i = 0; _i < queuedExplicitHydrationTargets.length; _i++) {
            var queuedTarget = queuedExplicitHydrationTargets[_i];
            if (queuedTarget.blockedOn === unblocked) {
              queuedTarget.blockedOn = null;
            }
          }
          while (queuedExplicitHydrationTargets.length > 0) {
            var nextExplicitTarget = queuedExplicitHydrationTargets[0];
            if (nextExplicitTarget.blockedOn !== null) {
              break;
            } else {
              attemptExplicitHydrationTarget(nextExplicitTarget);
              if (nextExplicitTarget.blockedOn === null) {
                queuedExplicitHydrationTargets.shift();
              }
            }
          }
        }
        var ReactCurrentBatchConfig = ReactSharedInternals.ReactCurrentBatchConfig;
        var _enabled = true;
        function setEnabled(enabled) {
          _enabled = !!enabled;
        }
        function isEnabled() {
          return _enabled;
        }
        function createEventListenerWrapperWithPriority(targetContainer, domEventName, eventSystemFlags) {
          var eventPriority = getEventPriority(domEventName);
          var listenerWrapper;
          switch (eventPriority) {
            case DiscreteEventPriority:
              listenerWrapper = dispatchDiscreteEvent;
              break;
            case ContinuousEventPriority:
              listenerWrapper = dispatchContinuousEvent;
              break;
            case DefaultEventPriority:
            default:
              listenerWrapper = dispatchEvent;
              break;
          }
          return listenerWrapper.bind(null, domEventName, eventSystemFlags, targetContainer);
        }
        function dispatchDiscreteEvent(domEventName, eventSystemFlags, container, nativeEvent) {
          var previousPriority = getCurrentUpdatePriority();
          var prevTransition = ReactCurrentBatchConfig.transition;
          ReactCurrentBatchConfig.transition = null;
          try {
            setCurrentUpdatePriority(DiscreteEventPriority);
            dispatchEvent(domEventName, eventSystemFlags, container, nativeEvent);
          } finally {
            setCurrentUpdatePriority(previousPriority);
            ReactCurrentBatchConfig.transition = prevTransition;
          }
        }
        function dispatchContinuousEvent(domEventName, eventSystemFlags, container, nativeEvent) {
          var previousPriority = getCurrentUpdatePriority();
          var prevTransition = ReactCurrentBatchConfig.transition;
          ReactCurrentBatchConfig.transition = null;
          try {
            setCurrentUpdatePriority(ContinuousEventPriority);
            dispatchEvent(domEventName, eventSystemFlags, container, nativeEvent);
          } finally {
            setCurrentUpdatePriority(previousPriority);
            ReactCurrentBatchConfig.transition = prevTransition;
          }
        }
        function dispatchEvent(domEventName, eventSystemFlags, targetContainer, nativeEvent) {
          if (!_enabled) {
            return;
          }
          {
            dispatchEventWithEnableCapturePhaseSelectiveHydrationWithoutDiscreteEventReplay(domEventName, eventSystemFlags, targetContainer, nativeEvent);
          }
        }
        function dispatchEventWithEnableCapturePhaseSelectiveHydrationWithoutDiscreteEventReplay(domEventName, eventSystemFlags, targetContainer, nativeEvent) {
          var blockedOn = findInstanceBlockingEvent(domEventName, eventSystemFlags, targetContainer, nativeEvent);
          if (blockedOn === null) {
            dispatchEventForPluginEventSystem(domEventName, eventSystemFlags, nativeEvent, return_targetInst, targetContainer);
            clearIfContinuousEvent(domEventName, nativeEvent);
            return;
          }
          if (queueIfContinuousEvent(blockedOn, domEventName, eventSystemFlags, targetContainer, nativeEvent)) {
            nativeEvent.stopPropagation();
            return;
          }
          clearIfContinuousEvent(domEventName, nativeEvent);
          if (eventSystemFlags & IS_CAPTURE_PHASE && isDiscreteEventThatRequiresHydration(domEventName)) {
            while (blockedOn !== null) {
              var fiber = getInstanceFromNode(blockedOn);
              if (fiber !== null) {
                attemptSynchronousHydration(fiber);
              }
              var nextBlockedOn = findInstanceBlockingEvent(domEventName, eventSystemFlags, targetContainer, nativeEvent);
              if (nextBlockedOn === null) {
                dispatchEventForPluginEventSystem(domEventName, eventSystemFlags, nativeEvent, return_targetInst, targetContainer);
              }
              if (nextBlockedOn === blockedOn) {
                break;
              }
              blockedOn = nextBlockedOn;
            }
            if (blockedOn !== null) {
              nativeEvent.stopPropagation();
            }
            return;
          }
          dispatchEventForPluginEventSystem(domEventName, eventSystemFlags, nativeEvent, null, targetContainer);
        }
        var return_targetInst = null;
        function findInstanceBlockingEvent(domEventName, eventSystemFlags, targetContainer, nativeEvent) {
          return_targetInst = null;
          var nativeEventTarget = getEventTarget(nativeEvent);
          var targetInst = getClosestInstanceFromNode(nativeEventTarget);
          if (targetInst !== null) {
            var nearestMounted = getNearestMountedFiber(targetInst);
            if (nearestMounted === null) {
              targetInst = null;
            } else {
              var tag = nearestMounted.tag;
              if (tag === SuspenseComponent) {
                var instance = getSuspenseInstanceFromFiber(nearestMounted);
                if (instance !== null) {
                  return instance;
                }
                targetInst = null;
              } else if (tag === HostRoot) {
                var root2 = nearestMounted.stateNode;
                if (isRootDehydrated(root2)) {
                  return getContainerFromFiber(nearestMounted);
                }
                targetInst = null;
              } else if (nearestMounted !== targetInst) {
                targetInst = null;
              }
            }
          }
          return_targetInst = targetInst;
          return null;
        }
        function getEventPriority(domEventName) {
          switch (domEventName) {
            // Used by SimpleEventPlugin:
            case "cancel":
            case "click":
            case "close":
            case "contextmenu":
            case "copy":
            case "cut":
            case "auxclick":
            case "dblclick":
            case "dragend":
            case "dragstart":
            case "drop":
            case "focusin":
            case "focusout":
            case "input":
            case "invalid":
            case "keydown":
            case "keypress":
            case "keyup":
            case "mousedown":
            case "mouseup":
            case "paste":
            case "pause":
            case "play":
            case "pointercancel":
            case "pointerdown":
            case "pointerup":
            case "ratechange":
            case "reset":
            case "resize":
            case "seeked":
            case "submit":
            case "touchcancel":
            case "touchend":
            case "touchstart":
            case "volumechange":
            // Used by polyfills:
            // eslint-disable-next-line no-fallthrough
            case "change":
            case "selectionchange":
            case "textInput":
            case "compositionstart":
            case "compositionend":
            case "compositionupdate":
            // Only enableCreateEventHandleAPI:
            // eslint-disable-next-line no-fallthrough
            case "beforeblur":
            case "afterblur":
            // Not used by React but could be by user code:
            // eslint-disable-next-line no-fallthrough
            case "beforeinput":
            case "blur":
            case "fullscreenchange":
            case "focus":
            case "hashchange":
            case "popstate":
            case "select":
            case "selectstart":
              return DiscreteEventPriority;
            case "drag":
            case "dragenter":
            case "dragexit":
            case "dragleave":
            case "dragover":
            case "mousemove":
            case "mouseout":
            case "mouseover":
            case "pointermove":
            case "pointerout":
            case "pointerover":
            case "scroll":
            case "toggle":
            case "touchmove":
            case "wheel":
            // Not used by React but could be by user code:
            // eslint-disable-next-line no-fallthrough
            case "mouseenter":
            case "mouseleave":
            case "pointerenter":
            case "pointerleave":
              return ContinuousEventPriority;
            case "message": {
              var schedulerPriority = getCurrentPriorityLevel();
              switch (schedulerPriority) {
                case ImmediatePriority:
                  return DiscreteEventPriority;
                case UserBlockingPriority:
                  return ContinuousEventPriority;
                case NormalPriority:
                case LowPriority:
                  return DefaultEventPriority;
                case IdlePriority:
                  return IdleEventPriority;
                default:
                  return DefaultEventPriority;
              }
            }
            default:
              return DefaultEventPriority;
          }
        }
        function addEventBubbleListener(target, eventType, listener) {
          target.addEventListener(eventType, listener, false);
          return listener;
        }
        function addEventCaptureListener(target, eventType, listener) {
          target.addEventListener(eventType, listener, true);
          return listener;
        }
        function addEventCaptureListenerWithPassiveFlag(target, eventType, listener, passive) {
          target.addEventListener(eventType, listener, {
            capture: true,
            passive
          });
          return listener;
        }
        function addEventBubbleListenerWithPassiveFlag(target, eventType, listener, passive) {
          target.addEventListener(eventType, listener, {
            passive
          });
          return listener;
        }
        var root = null;
        var startText = null;
        var fallbackText = null;
        function initialize(nativeEventTarget) {
          root = nativeEventTarget;
          startText = getText();
          return true;
        }
        function reset() {
          root = null;
          startText = null;
          fallbackText = null;
        }
        function getData() {
          if (fallbackText) {
            return fallbackText;
          }
          var start;
          var startValue = startText;
          var startLength = startValue.length;
          var end;
          var endValue = getText();
          var endLength = endValue.length;
          for (start = 0; start < startLength; start++) {
            if (startValue[start] !== endValue[start]) {
              break;
            }
          }
          var minEnd = startLength - start;
          for (end = 1; end <= minEnd; end++) {
            if (startValue[startLength - end] !== endValue[endLength - end]) {
              break;
            }
          }
          var sliceTail = end > 1 ? 1 - end : void 0;
          fallbackText = endValue.slice(start, sliceTail);
          return fallbackText;
        }
        function getText() {
          if ("value" in root) {
            return root.value;
          }
          return root.textContent;
        }
        function getEventCharCode(nativeEvent) {
          var charCode;
          var keyCode = nativeEvent.keyCode;
          if ("charCode" in nativeEvent) {
            charCode = nativeEvent.charCode;
            if (charCode === 0 && keyCode === 13) {
              charCode = 13;
            }
          } else {
            charCode = keyCode;
          }
          if (charCode === 10) {
            charCode = 13;
          }
          if (charCode >= 32 || charCode === 13) {
            return charCode;
          }
          return 0;
        }
        function functionThatReturnsTrue() {
          return true;
        }
        function functionThatReturnsFalse() {
          return false;
        }
        function createSyntheticEvent(Interface) {
          function SyntheticBaseEvent(reactName, reactEventType, targetInst, nativeEvent, nativeEventTarget) {
            this._reactName = reactName;
            this._targetInst = targetInst;
            this.type = reactEventType;
            this.nativeEvent = nativeEvent;
            this.target = nativeEventTarget;
            this.currentTarget = null;
            for (var _propName in Interface) {
              if (!Interface.hasOwnProperty(_propName)) {
                continue;
              }
              var normalize = Interface[_propName];
              if (normalize) {
                this[_propName] = normalize(nativeEvent);
              } else {
                this[_propName] = nativeEvent[_propName];
              }
            }
            var defaultPrevented = nativeEvent.defaultPrevented != null ? nativeEvent.defaultPrevented : nativeEvent.returnValue === false;
            if (defaultPrevented) {
              this.isDefaultPrevented = functionThatReturnsTrue;
            } else {
              this.isDefaultPrevented = functionThatReturnsFalse;
            }
            this.isPropagationStopped = functionThatReturnsFalse;
            return this;
          }
          assign(SyntheticBaseEvent.prototype, {
            preventDefault: function() {
              this.defaultPrevented = true;
              var event = this.nativeEvent;
              if (!event) {
                return;
              }
              if (event.preventDefault) {
                event.preventDefault();
              } else if (typeof event.returnValue !== "unknown") {
                event.returnValue = false;
              }
              this.isDefaultPrevented = functionThatReturnsTrue;
            },
            stopPropagation: function() {
              var event = this.nativeEvent;
              if (!event) {
                return;
              }
              if (event.stopPropagation) {
                event.stopPropagation();
              } else if (typeof event.cancelBubble !== "unknown") {
                event.cancelBubble = true;
              }
              this.isPropagationStopped = functionThatReturnsTrue;
            },
            /**
             * We release all dispatched `SyntheticEvent`s after each event loop, adding
             * them back into the pool. This allows a way to hold onto a reference that
             * won't be added back into the pool.
             */
            persist: function() {
            },
            /**
             * Checks if this event should be released back into the pool.
             *
             * @return {boolean} True if this should not be released, false otherwise.
             */
            isPersistent: functionThatReturnsTrue
          });
          return SyntheticBaseEvent;
        }
        var EventInterface = {
          eventPhase: 0,
          bubbles: 0,
          cancelable: 0,
          timeStamp: function(event) {
            return event.timeStamp || Date.now();
          },
          defaultPrevented: 0,
          isTrusted: 0
        };
        var SyntheticEvent = createSyntheticEvent(EventInterface);
        var UIEventInterface = assign({}, EventInterface, {
          view: 0,
          detail: 0
        });
        var SyntheticUIEvent = createSyntheticEvent(UIEventInterface);
        var lastMovementX;
        var lastMovementY;
        var lastMouseEvent;
        function updateMouseMovementPolyfillState(event) {
          if (event !== lastMouseEvent) {
            if (lastMouseEvent && event.type === "mousemove") {
              lastMovementX = event.screenX - lastMouseEvent.screenX;
              lastMovementY = event.screenY - lastMouseEvent.screenY;
            } else {
              lastMovementX = 0;
              lastMovementY = 0;
            }
            lastMouseEvent = event;
          }
        }
        var MouseEventInterface = assign({}, UIEventInterface, {
          screenX: 0,
          screenY: 0,
          clientX: 0,
          clientY: 0,
          pageX: 0,
          pageY: 0,
          ctrlKey: 0,
          shiftKey: 0,
          altKey: 0,
          metaKey: 0,
          getModifierState: getEventModifierState,
          button: 0,
          buttons: 0,
          relatedTarget: function(event) {
            if (event.relatedTarget === void 0) return event.fromElement === event.srcElement ? event.toElement : event.fromElement;
            return event.relatedTarget;
          },
          movementX: function(event) {
            if ("movementX" in event) {
              return event.movementX;
            }
            updateMouseMovementPolyfillState(event);
            return lastMovementX;
          },
          movementY: function(event) {
            if ("movementY" in event) {
              return event.movementY;
            }
            return lastMovementY;
          }
        });
        var SyntheticMouseEvent = createSyntheticEvent(MouseEventInterface);
        var DragEventInterface = assign({}, MouseEventInterface, {
          dataTransfer: 0
        });
        var SyntheticDragEvent = createSyntheticEvent(DragEventInterface);
        var FocusEventInterface = assign({}, UIEventInterface, {
          relatedTarget: 0
        });
        var SyntheticFocusEvent = createSyntheticEvent(FocusEventInterface);
        var AnimationEventInterface = assign({}, EventInterface, {
          animationName: 0,
          elapsedTime: 0,
          pseudoElement: 0
        });
        var SyntheticAnimationEvent = createSyntheticEvent(AnimationEventInterface);
        var ClipboardEventInterface = assign({}, EventInterface, {
          clipboardData: function(event) {
            return "clipboardData" in event ? event.clipboardData : window.clipboardData;
          }
        });
        var SyntheticClipboardEvent = createSyntheticEvent(ClipboardEventInterface);
        var CompositionEventInterface = assign({}, EventInterface, {
          data: 0
        });
        var SyntheticCompositionEvent = createSyntheticEvent(CompositionEventInterface);
        var SyntheticInputEvent = SyntheticCompositionEvent;
        var normalizeKey = {
          Esc: "Escape",
          Spacebar: " ",
          Left: "ArrowLeft",
          Up: "ArrowUp",
          Right: "ArrowRight",
          Down: "ArrowDown",
          Del: "Delete",
          Win: "OS",
          Menu: "ContextMenu",
          Apps: "ContextMenu",
          Scroll: "ScrollLock",
          MozPrintableKey: "Unidentified"
        };
        var translateToKey = {
          "8": "Backspace",
          "9": "Tab",
          "12": "Clear",
          "13": "Enter",
          "16": "Shift",
          "17": "Control",
          "18": "Alt",
          "19": "Pause",
          "20": "CapsLock",
          "27": "Escape",
          "32": " ",
          "33": "PageUp",
          "34": "PageDown",
          "35": "End",
          "36": "Home",
          "37": "ArrowLeft",
          "38": "ArrowUp",
          "39": "ArrowRight",
          "40": "ArrowDown",
          "45": "Insert",
          "46": "Delete",
          "112": "F1",
          "113": "F2",
          "114": "F3",
          "115": "F4",
          "116": "F5",
          "117": "F6",
          "118": "F7",
          "119": "F8",
          "120": "F9",
          "121": "F10",
          "122": "F11",
          "123": "F12",
          "144": "NumLock",
          "145": "ScrollLock",
          "224": "Meta"
        };
        function getEventKey(nativeEvent) {
          if (nativeEvent.key) {
            var key = normalizeKey[nativeEvent.key] || nativeEvent.key;
            if (key !== "Unidentified") {
              return key;
            }
          }
          if (nativeEvent.type === "keypress") {
            var charCode = getEventCharCode(nativeEvent);
            return charCode === 13 ? "Enter" : String.fromCharCode(charCode);
          }
          if (nativeEvent.type === "keydown" || nativeEvent.type === "keyup") {
            return translateToKey[nativeEvent.keyCode] || "Unidentified";
          }
          return "";
        }
        var modifierKeyToProp = {
          Alt: "altKey",
          Control: "ctrlKey",
          Meta: "metaKey",
          Shift: "shiftKey"
        };
        function modifierStateGetter(keyArg) {
          var syntheticEvent = this;
          var nativeEvent = syntheticEvent.nativeEvent;
          if (nativeEvent.getModifierState) {
            return nativeEvent.getModifierState(keyArg);
          }
          var keyProp = modifierKeyToProp[keyArg];
          return keyProp ? !!nativeEvent[keyProp] : false;
        }
        function getEventModifierState(nativeEvent) {
          return modifierStateGetter;
        }
        var KeyboardEventInterface = assign({}, UIEventInterface, {
          key: getEventKey,
          code: 0,
          location: 0,
          ctrlKey: 0,
          shiftKey: 0,
          altKey: 0,
          metaKey: 0,
          repeat: 0,
          locale: 0,
          getModifierState: getEventModifierState,
          // Legacy Interface
          charCode: function(event) {
            if (event.type === "keypress") {
              return getEventCharCode(event);
            }
            return 0;
          },
          keyCode: function(event) {
            if (event.type === "keydown" || event.type === "keyup") {
              return event.keyCode;
            }
            return 0;
          },
          which: function(event) {
            if (event.type === "keypress") {
              return getEventCharCode(event);
            }
            if (event.type === "keydown" || event.type === "keyup") {
              return event.keyCode;
            }
            return 0;
          }
        });
        var SyntheticKeyboardEvent = createSyntheticEvent(KeyboardEventInterface);
        var PointerEventInterface = assign({}, MouseEventInterface, {
          pointerId: 0,
          width: 0,
          height: 0,
          pressure: 0,
          tangentialPressure: 0,
          tiltX: 0,
          tiltY: 0,
          twist: 0,
          pointerType: 0,
          isPrimary: 0
        });
        var SyntheticPointerEvent = createSyntheticEvent(PointerEventInterface);
        var TouchEventInterface = assign({}, UIEventInterface, {
          touches: 0,
          targetTouches: 0,
          changedTouches: 0,
          altKey: 0,
          metaKey: 0,
          ctrlKey: 0,
          shiftKey: 0,
          getModifierState: getEventModifierState
        });
        var SyntheticTouchEvent = createSyntheticEvent(TouchEventInterface);
        var TransitionEventInterface = assign({}, EventInterface, {
          propertyName: 0,
          elapsedTime: 0,
          pseudoElement: 0
        });
        var SyntheticTransitionEvent = createSyntheticEvent(TransitionEventInterface);
        var WheelEventInterface = assign({}, MouseEventInterface, {
          deltaX: function(event) {
            return "deltaX" in event ? event.deltaX : (
              // Fallback to `wheelDeltaX` for Webkit and normalize (right is positive).
              "wheelDeltaX" in event ? -event.wheelDeltaX : 0
            );
          },
          deltaY: function(event) {
            return "deltaY" in event ? event.deltaY : (
              // Fallback to `wheelDeltaY` for Webkit and normalize (down is positive).
              "wheelDeltaY" in event ? -event.wheelDeltaY : (
                // Fallback to `wheelDelta` for IE<9 and normalize (down is positive).
                "wheelDelta" in event ? -event.wheelDelta : 0
              )
            );
          },
          deltaZ: 0,
          // Browsers without "deltaMode" is reporting in raw wheel delta where one
          // notch on the scroll is always +/- 120, roughly equivalent to pixels.
          // A good approximation of DOM_DELTA_LINE (1) is 5% of viewport size or
          // ~40 pixels, for DOM_DELTA_SCREEN (2) it is 87.5% of viewport size.
          deltaMode: 0
        });
        var SyntheticWheelEvent = createSyntheticEvent(WheelEventInterface);
        var END_KEYCODES = [9, 13, 27, 32];
        var START_KEYCODE = 229;
        var canUseCompositionEvent = canUseDOM && "CompositionEvent" in window;
        var documentMode = null;
        if (canUseDOM && "documentMode" in document) {
          documentMode = document.documentMode;
        }
        var canUseTextInputEvent = canUseDOM && "TextEvent" in window && !documentMode;
        var useFallbackCompositionData = canUseDOM && (!canUseCompositionEvent || documentMode && documentMode > 8 && documentMode <= 11);
        var SPACEBAR_CODE = 32;
        var SPACEBAR_CHAR = String.fromCharCode(SPACEBAR_CODE);
        function registerEvents() {
          registerTwoPhaseEvent("onBeforeInput", ["compositionend", "keypress", "textInput", "paste"]);
          registerTwoPhaseEvent("onCompositionEnd", ["compositionend", "focusout", "keydown", "keypress", "keyup", "mousedown"]);
          registerTwoPhaseEvent("onCompositionStart", ["compositionstart", "focusout", "keydown", "keypress", "keyup", "mousedown"]);
          registerTwoPhaseEvent("onCompositionUpdate", ["compositionupdate", "focusout", "keydown", "keypress", "keyup", "mousedown"]);
        }
        var hasSpaceKeypress = false;
        function isKeypressCommand(nativeEvent) {
          return (nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) && // ctrlKey && altKey is equivalent to AltGr, and is not a command.
          !(nativeEvent.ctrlKey && nativeEvent.altKey);
        }
        function getCompositionEventType(domEventName) {
          switch (domEventName) {
            case "compositionstart":
              return "onCompositionStart";
            case "compositionend":
              return "onCompositionEnd";
            case "compositionupdate":
              return "onCompositionUpdate";
          }
        }
        function isFallbackCompositionStart(domEventName, nativeEvent) {
          return domEventName === "keydown" && nativeEvent.keyCode === START_KEYCODE;
        }
        function isFallbackCompositionEnd(domEventName, nativeEvent) {
          switch (domEventName) {
            case "keyup":
              return END_KEYCODES.indexOf(nativeEvent.keyCode) !== -1;
            case "keydown":
              return nativeEvent.keyCode !== START_KEYCODE;
            case "keypress":
            case "mousedown":
            case "focusout":
              return true;
            default:
              return false;
          }
        }
        function getDataFromCustomEvent(nativeEvent) {
          var detail = nativeEvent.detail;
          if (typeof detail === "object" && "data" in detail) {
            return detail.data;
          }
          return null;
        }
        function isUsingKoreanIME(nativeEvent) {
          return nativeEvent.locale === "ko";
        }
        var isComposing = false;
        function extractCompositionEvent(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget) {
          var eventType;
          var fallbackData;
          if (canUseCompositionEvent) {
            eventType = getCompositionEventType(domEventName);
          } else if (!isComposing) {
            if (isFallbackCompositionStart(domEventName, nativeEvent)) {
              eventType = "onCompositionStart";
            }
          } else if (isFallbackCompositionEnd(domEventName, nativeEvent)) {
            eventType = "onCompositionEnd";
          }
          if (!eventType) {
            return null;
          }
          if (useFallbackCompositionData && !isUsingKoreanIME(nativeEvent)) {
            if (!isComposing && eventType === "onCompositionStart") {
              isComposing = initialize(nativeEventTarget);
            } else if (eventType === "onCompositionEnd") {
              if (isComposing) {
                fallbackData = getData();
              }
            }
          }
          var listeners = accumulateTwoPhaseListeners(targetInst, eventType);
          if (listeners.length > 0) {
            var event = new SyntheticCompositionEvent(eventType, domEventName, null, nativeEvent, nativeEventTarget);
            dispatchQueue.push({
              event,
              listeners
            });
            if (fallbackData) {
              event.data = fallbackData;
            } else {
              var customData = getDataFromCustomEvent(nativeEvent);
              if (customData !== null) {
                event.data = customData;
              }
            }
          }
        }
        function getNativeBeforeInputChars(domEventName, nativeEvent) {
          switch (domEventName) {
            case "compositionend":
              return getDataFromCustomEvent(nativeEvent);
            case "keypress":
              var which = nativeEvent.which;
              if (which !== SPACEBAR_CODE) {
                return null;
              }
              hasSpaceKeypress = true;
              return SPACEBAR_CHAR;
            case "textInput":
              var chars = nativeEvent.data;
              if (chars === SPACEBAR_CHAR && hasSpaceKeypress) {
                return null;
              }
              return chars;
            default:
              return null;
          }
        }
        function getFallbackBeforeInputChars(domEventName, nativeEvent) {
          if (isComposing) {
            if (domEventName === "compositionend" || !canUseCompositionEvent && isFallbackCompositionEnd(domEventName, nativeEvent)) {
              var chars = getData();
              reset();
              isComposing = false;
              return chars;
            }
            return null;
          }
          switch (domEventName) {
            case "paste":
              return null;
            case "keypress":
              if (!isKeypressCommand(nativeEvent)) {
                if (nativeEvent.char && nativeEvent.char.length > 1) {
                  return nativeEvent.char;
                } else if (nativeEvent.which) {
                  return String.fromCharCode(nativeEvent.which);
                }
              }
              return null;
            case "compositionend":
              return useFallbackCompositionData && !isUsingKoreanIME(nativeEvent) ? null : nativeEvent.data;
            default:
              return null;
          }
        }
        function extractBeforeInputEvent(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget) {
          var chars;
          if (canUseTextInputEvent) {
            chars = getNativeBeforeInputChars(domEventName, nativeEvent);
          } else {
            chars = getFallbackBeforeInputChars(domEventName, nativeEvent);
          }
          if (!chars) {
            return null;
          }
          var listeners = accumulateTwoPhaseListeners(targetInst, "onBeforeInput");
          if (listeners.length > 0) {
            var event = new SyntheticInputEvent("onBeforeInput", "beforeinput", null, nativeEvent, nativeEventTarget);
            dispatchQueue.push({
              event,
              listeners
            });
            event.data = chars;
          }
        }
        function extractEvents(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags, targetContainer) {
          extractCompositionEvent(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget);
          extractBeforeInputEvent(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget);
        }
        var supportedInputTypes = {
          color: true,
          date: true,
          datetime: true,
          "datetime-local": true,
          email: true,
          month: true,
          number: true,
          password: true,
          range: true,
          search: true,
          tel: true,
          text: true,
          time: true,
          url: true,
          week: true
        };
        function isTextInputElement(elem) {
          var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();
          if (nodeName === "input") {
            return !!supportedInputTypes[elem.type];
          }
          if (nodeName === "textarea") {
            return true;
          }
          return false;
        }
        function isEventSupported(eventNameSuffix) {
          if (!canUseDOM) {
            return false;
          }
          var eventName = "on" + eventNameSuffix;
          var isSupported = eventName in document;
          if (!isSupported) {
            var element = document.createElement("div");
            element.setAttribute(eventName, "return;");
            isSupported = typeof element[eventName] === "function";
          }
          return isSupported;
        }
        function registerEvents$1() {
          registerTwoPhaseEvent("onChange", ["change", "click", "focusin", "focusout", "input", "keydown", "keyup", "selectionchange"]);
        }
        function createAndAccumulateChangeEvent(dispatchQueue, inst, nativeEvent, target) {
          enqueueStateRestore(target);
          var listeners = accumulateTwoPhaseListeners(inst, "onChange");
          if (listeners.length > 0) {
            var event = new SyntheticEvent("onChange", "change", null, nativeEvent, target);
            dispatchQueue.push({
              event,
              listeners
            });
          }
        }
        var activeElement = null;
        var activeElementInst = null;
        function shouldUseChangeEvent(elem) {
          var nodeName = elem.nodeName && elem.nodeName.toLowerCase();
          return nodeName === "select" || nodeName === "input" && elem.type === "file";
        }
        function manualDispatchChangeEvent(nativeEvent) {
          var dispatchQueue = [];
          createAndAccumulateChangeEvent(dispatchQueue, activeElementInst, nativeEvent, getEventTarget(nativeEvent));
          batchedUpdates(runEventInBatch, dispatchQueue);
        }
        function runEventInBatch(dispatchQueue) {
          processDispatchQueue(dispatchQueue, 0);
        }
        function getInstIfValueChanged(targetInst) {
          var targetNode = getNodeFromInstance(targetInst);
          if (updateValueIfChanged(targetNode)) {
            return targetInst;
          }
        }
        function getTargetInstForChangeEvent(domEventName, targetInst) {
          if (domEventName === "change") {
            return targetInst;
          }
        }
        var isInputEventSupported = false;
        if (canUseDOM) {
          isInputEventSupported = isEventSupported("input") && (!document.documentMode || document.documentMode > 9);
        }
        function startWatchingForValueChange(target, targetInst) {
          activeElement = target;
          activeElementInst = targetInst;
          activeElement.attachEvent("onpropertychange", handlePropertyChange);
        }
        function stopWatchingForValueChange() {
          if (!activeElement) {
            return;
          }
          activeElement.detachEvent("onpropertychange", handlePropertyChange);
          activeElement = null;
          activeElementInst = null;
        }
        function handlePropertyChange(nativeEvent) {
          if (nativeEvent.propertyName !== "value") {
            return;
          }
          if (getInstIfValueChanged(activeElementInst)) {
            manualDispatchChangeEvent(nativeEvent);
          }
        }
        function handleEventsForInputEventPolyfill(domEventName, target, targetInst) {
          if (domEventName === "focusin") {
            stopWatchingForValueChange();
            startWatchingForValueChange(target, targetInst);
          } else if (domEventName === "focusout") {
            stopWatchingForValueChange();
          }
        }
        function getTargetInstForInputEventPolyfill(domEventName, targetInst) {
          if (domEventName === "selectionchange" || domEventName === "keyup" || domEventName === "keydown") {
            return getInstIfValueChanged(activeElementInst);
          }
        }
        function shouldUseClickEvent(elem) {
          var nodeName = elem.nodeName;
          return nodeName && nodeName.toLowerCase() === "input" && (elem.type === "checkbox" || elem.type === "radio");
        }
        function getTargetInstForClickEvent(domEventName, targetInst) {
          if (domEventName === "click") {
            return getInstIfValueChanged(targetInst);
          }
        }
        function getTargetInstForInputOrChangeEvent(domEventName, targetInst) {
          if (domEventName === "input" || domEventName === "change") {
            return getInstIfValueChanged(targetInst);
          }
        }
        function handleControlledInputBlur(node) {
          var state = node._wrapperState;
          if (!state || !state.controlled || node.type !== "number") {
            return;
          }
          {
            setDefaultValue(node, "number", node.value);
          }
        }
        function extractEvents$1(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags, targetContainer) {
          var targetNode = targetInst ? getNodeFromInstance(targetInst) : window;
          var getTargetInstFunc, handleEventFunc;
          if (shouldUseChangeEvent(targetNode)) {
            getTargetInstFunc = getTargetInstForChangeEvent;
          } else if (isTextInputElement(targetNode)) {
            if (isInputEventSupported) {
              getTargetInstFunc = getTargetInstForInputOrChangeEvent;
            } else {
              getTargetInstFunc = getTargetInstForInputEventPolyfill;
              handleEventFunc = handleEventsForInputEventPolyfill;
            }
          } else if (shouldUseClickEvent(targetNode)) {
            getTargetInstFunc = getTargetInstForClickEvent;
          }
          if (getTargetInstFunc) {
            var inst = getTargetInstFunc(domEventName, targetInst);
            if (inst) {
              createAndAccumulateChangeEvent(dispatchQueue, inst, nativeEvent, nativeEventTarget);
              return;
            }
          }
          if (handleEventFunc) {
            handleEventFunc(domEventName, targetNode, targetInst);
          }
          if (domEventName === "focusout") {
            handleControlledInputBlur(targetNode);
          }
        }
        function registerEvents$2() {
          registerDirectEvent("onMouseEnter", ["mouseout", "mouseover"]);
          registerDirectEvent("onMouseLeave", ["mouseout", "mouseover"]);
          registerDirectEvent("onPointerEnter", ["pointerout", "pointerover"]);
          registerDirectEvent("onPointerLeave", ["pointerout", "pointerover"]);
        }
        function extractEvents$2(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags, targetContainer) {
          var isOverEvent = domEventName === "mouseover" || domEventName === "pointerover";
          var isOutEvent = domEventName === "mouseout" || domEventName === "pointerout";
          if (isOverEvent && !isReplayingEvent(nativeEvent)) {
            var related = nativeEvent.relatedTarget || nativeEvent.fromElement;
            if (related) {
              if (getClosestInstanceFromNode(related) || isContainerMarkedAsRoot(related)) {
                return;
              }
            }
          }
          if (!isOutEvent && !isOverEvent) {
            return;
          }
          var win;
          if (nativeEventTarget.window === nativeEventTarget) {
            win = nativeEventTarget;
          } else {
            var doc = nativeEventTarget.ownerDocument;
            if (doc) {
              win = doc.defaultView || doc.parentWindow;
            } else {
              win = window;
            }
          }
          var from;
          var to;
          if (isOutEvent) {
            var _related = nativeEvent.relatedTarget || nativeEvent.toElement;
            from = targetInst;
            to = _related ? getClosestInstanceFromNode(_related) : null;
            if (to !== null) {
              var nearestMounted = getNearestMountedFiber(to);
              if (to !== nearestMounted || to.tag !== HostComponent && to.tag !== HostText) {
                to = null;
              }
            }
          } else {
            from = null;
            to = targetInst;
          }
          if (from === to) {
            return;
          }
          var SyntheticEventCtor = SyntheticMouseEvent;
          var leaveEventType = "onMouseLeave";
          var enterEventType = "onMouseEnter";
          var eventTypePrefix = "mouse";
          if (domEventName === "pointerout" || domEventName === "pointerover") {
            SyntheticEventCtor = SyntheticPointerEvent;
            leaveEventType = "onPointerLeave";
            enterEventType = "onPointerEnter";
            eventTypePrefix = "pointer";
          }
          var fromNode = from == null ? win : getNodeFromInstance(from);
          var toNode = to == null ? win : getNodeFromInstance(to);
          var leave = new SyntheticEventCtor(leaveEventType, eventTypePrefix + "leave", from, nativeEvent, nativeEventTarget);
          leave.target = fromNode;
          leave.relatedTarget = toNode;
          var enter = null;
          var nativeTargetInst = getClosestInstanceFromNode(nativeEventTarget);
          if (nativeTargetInst === targetInst) {
            var enterEvent = new SyntheticEventCtor(enterEventType, eventTypePrefix + "enter", to, nativeEvent, nativeEventTarget);
            enterEvent.target = toNode;
            enterEvent.relatedTarget = fromNode;
            enter = enterEvent;
          }
          accumulateEnterLeaveTwoPhaseListeners(dispatchQueue, leave, enter, from, to);
        }
        function is(x, y) {
          return x === y && (x !== 0 || 1 / x === 1 / y) || x !== x && y !== y;
        }
        var objectIs = typeof Object.is === "function" ? Object.is : is;
        function shallowEqual(objA, objB) {
          if (objectIs(objA, objB)) {
            return true;
          }
          if (typeof objA !== "object" || objA === null || typeof objB !== "object" || objB === null) {
            return false;
          }
          var keysA = Object.keys(objA);
          var keysB = Object.keys(objB);
          if (keysA.length !== keysB.length) {
            return false;
          }
          for (var i = 0; i < keysA.length; i++) {
            var currentKey = keysA[i];
            if (!hasOwnProperty.call(objB, currentKey) || !objectIs(objA[currentKey], objB[currentKey])) {
              return false;
            }
          }
          return true;
        }
        function getLeafNode(node) {
          while (node && node.firstChild) {
            node = node.firstChild;
          }
          return node;
        }
        function getSiblingNode(node) {
          while (node) {
            if (node.nextSibling) {
              return node.nextSibling;
            }
            node = node.parentNode;
          }
        }
        function getNodeForCharacterOffset(root2, offset) {
          var node = getLeafNode(root2);
          var nodeStart = 0;
          var nodeEnd = 0;
          while (node) {
            if (node.nodeType === TEXT_NODE) {
              nodeEnd = nodeStart + node.textContent.length;
              if (nodeStart <= offset && nodeEnd >= offset) {
                return {
                  node,
                  offset: offset - nodeStart
                };
              }
              nodeStart = nodeEnd;
            }
            node = getLeafNode(getSiblingNode(node));
          }
        }
        function getOffsets(outerNode) {
          var ownerDocument = outerNode.ownerDocument;
          var win = ownerDocument && ownerDocument.defaultView || window;
          var selection = win.getSelection && win.getSelection();
          if (!selection || selection.rangeCount === 0) {
            return null;
          }
          var anchorNode = selection.anchorNode, anchorOffset = selection.anchorOffset, focusNode = selection.focusNode, focusOffset = selection.focusOffset;
          try {
            anchorNode.nodeType;
            focusNode.nodeType;
          } catch (e) {
            return null;
          }
          return getModernOffsetsFromPoints(outerNode, anchorNode, anchorOffset, focusNode, focusOffset);
        }
        function getModernOffsetsFromPoints(outerNode, anchorNode, anchorOffset, focusNode, focusOffset) {
          var length = 0;
          var start = -1;
          var end = -1;
          var indexWithinAnchor = 0;
          var indexWithinFocus = 0;
          var node = outerNode;
          var parentNode = null;
          outer: while (true) {
            var next = null;
            while (true) {
              if (node === anchorNode && (anchorOffset === 0 || node.nodeType === TEXT_NODE)) {
                start = length + anchorOffset;
              }
              if (node === focusNode && (focusOffset === 0 || node.nodeType === TEXT_NODE)) {
                end = length + focusOffset;
              }
              if (node.nodeType === TEXT_NODE) {
                length += node.nodeValue.length;
              }
              if ((next = node.firstChild) === null) {
                break;
              }
              parentNode = node;
              node = next;
            }
            while (true) {
              if (node === outerNode) {
                break outer;
              }
              if (parentNode === anchorNode && ++indexWithinAnchor === anchorOffset) {
                start = length;
              }
              if (parentNode === focusNode && ++indexWithinFocus === focusOffset) {
                end = length;
              }
              if ((next = node.nextSibling) !== null) {
                break;
              }
              node = parentNode;
              parentNode = node.parentNode;
            }
            node = next;
          }
          if (start === -1 || end === -1) {
            return null;
          }
          return {
            start,
            end
          };
        }
        function setOffsets(node, offsets) {
          var doc = node.ownerDocument || document;
          var win = doc && doc.defaultView || window;
          if (!win.getSelection) {
            return;
          }
          var selection = win.getSelection();
          var length = node.textContent.length;
          var start = Math.min(offsets.start, length);
          var end = offsets.end === void 0 ? start : Math.min(offsets.end, length);
          if (!selection.extend && start > end) {
            var temp = end;
            end = start;
            start = temp;
          }
          var startMarker = getNodeForCharacterOffset(node, start);
          var endMarker = getNodeForCharacterOffset(node, end);
          if (startMarker && endMarker) {
            if (selection.rangeCount === 1 && selection.anchorNode === startMarker.node && selection.anchorOffset === startMarker.offset && selection.focusNode === endMarker.node && selection.focusOffset === endMarker.offset) {
              return;
            }
            var range = doc.createRange();
            range.setStart(startMarker.node, startMarker.offset);
            selection.removeAllRanges();
            if (start > end) {
              selection.addRange(range);
              selection.extend(endMarker.node, endMarker.offset);
            } else {
              range.setEnd(endMarker.node, endMarker.offset);
              selection.addRange(range);
            }
          }
        }
        function isTextNode(node) {
          return node && node.nodeType === TEXT_NODE;
        }
        function containsNode(outerNode, innerNode) {
          if (!outerNode || !innerNode) {
            return false;
          } else if (outerNode === innerNode) {
            return true;
          } else if (isTextNode(outerNode)) {
            return false;
          } else if (isTextNode(innerNode)) {
            return containsNode(outerNode, innerNode.parentNode);
          } else if ("contains" in outerNode) {
            return outerNode.contains(innerNode);
          } else if (outerNode.compareDocumentPosition) {
            return !!(outerNode.compareDocumentPosition(innerNode) & 16);
          } else {
            return false;
          }
        }
        function isInDocument(node) {
          return node && node.ownerDocument && containsNode(node.ownerDocument.documentElement, node);
        }
        function isSameOriginFrame(iframe) {
          try {
            return typeof iframe.contentWindow.location.href === "string";
          } catch (err) {
            return false;
          }
        }
        function getActiveElementDeep() {
          var win = window;
          var element = getActiveElement();
          while (element instanceof win.HTMLIFrameElement) {
            if (isSameOriginFrame(element)) {
              win = element.contentWindow;
            } else {
              return element;
            }
            element = getActiveElement(win.document);
          }
          return element;
        }
        function hasSelectionCapabilities(elem) {
          var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();
          return nodeName && (nodeName === "input" && (elem.type === "text" || elem.type === "search" || elem.type === "tel" || elem.type === "url" || elem.type === "password") || nodeName === "textarea" || elem.contentEditable === "true");
        }
        function getSelectionInformation() {
          var focusedElem = getActiveElementDeep();
          return {
            focusedElem,
            selectionRange: hasSelectionCapabilities(focusedElem) ? getSelection(focusedElem) : null
          };
        }
        function restoreSelection(priorSelectionInformation) {
          var curFocusedElem = getActiveElementDeep();
          var priorFocusedElem = priorSelectionInformation.focusedElem;
          var priorSelectionRange = priorSelectionInformation.selectionRange;
          if (curFocusedElem !== priorFocusedElem && isInDocument(priorFocusedElem)) {
            if (priorSelectionRange !== null && hasSelectionCapabilities(priorFocusedElem)) {
              setSelection(priorFocusedElem, priorSelectionRange);
            }
            var ancestors = [];
            var ancestor = priorFocusedElem;
            while (ancestor = ancestor.parentNode) {
              if (ancestor.nodeType === ELEMENT_NODE) {
                ancestors.push({
                  element: ancestor,
                  left: ancestor.scrollLeft,
                  top: ancestor.scrollTop
                });
              }
            }
            if (typeof priorFocusedElem.focus === "function") {
              priorFocusedElem.focus();
            }
            for (var i = 0; i < ancestors.length; i++) {
              var info = ancestors[i];
              info.element.scrollLeft = info.left;
              info.element.scrollTop = info.top;
            }
          }
        }
        function getSelection(input) {
          var selection;
          if ("selectionStart" in input) {
            selection = {
              start: input.selectionStart,
              end: input.selectionEnd
            };
          } else {
            selection = getOffsets(input);
          }
          return selection || {
            start: 0,
            end: 0
          };
        }
        function setSelection(input, offsets) {
          var start = offsets.start;
          var end = offsets.end;
          if (end === void 0) {
            end = start;
          }
          if ("selectionStart" in input) {
            input.selectionStart = start;
            input.selectionEnd = Math.min(end, input.value.length);
          } else {
            setOffsets(input, offsets);
          }
        }
        var skipSelectionChangeEvent = canUseDOM && "documentMode" in document && document.documentMode <= 11;
        function registerEvents$3() {
          registerTwoPhaseEvent("onSelect", ["focusout", "contextmenu", "dragend", "focusin", "keydown", "keyup", "mousedown", "mouseup", "selectionchange"]);
        }
        var activeElement$1 = null;
        var activeElementInst$1 = null;
        var lastSelection = null;
        var mouseDown = false;
        function getSelection$1(node) {
          if ("selectionStart" in node && hasSelectionCapabilities(node)) {
            return {
              start: node.selectionStart,
              end: node.selectionEnd
            };
          } else {
            var win = node.ownerDocument && node.ownerDocument.defaultView || window;
            var selection = win.getSelection();
            return {
              anchorNode: selection.anchorNode,
              anchorOffset: selection.anchorOffset,
              focusNode: selection.focusNode,
              focusOffset: selection.focusOffset
            };
          }
        }
        function getEventTargetDocument(eventTarget) {
          return eventTarget.window === eventTarget ? eventTarget.document : eventTarget.nodeType === DOCUMENT_NODE ? eventTarget : eventTarget.ownerDocument;
        }
        function constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget) {
          var doc = getEventTargetDocument(nativeEventTarget);
          if (mouseDown || activeElement$1 == null || activeElement$1 !== getActiveElement(doc)) {
            return;
          }
          var currentSelection = getSelection$1(activeElement$1);
          if (!lastSelection || !shallowEqual(lastSelection, currentSelection)) {
            lastSelection = currentSelection;
            var listeners = accumulateTwoPhaseListeners(activeElementInst$1, "onSelect");
            if (listeners.length > 0) {
              var event = new SyntheticEvent("onSelect", "select", null, nativeEvent, nativeEventTarget);
              dispatchQueue.push({
                event,
                listeners
              });
              event.target = activeElement$1;
            }
          }
        }
        function extractEvents$3(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags, targetContainer) {
          var targetNode = targetInst ? getNodeFromInstance(targetInst) : window;
          switch (domEventName) {
            // Track the input node that has focus.
            case "focusin":
              if (isTextInputElement(targetNode) || targetNode.contentEditable === "true") {
                activeElement$1 = targetNode;
                activeElementInst$1 = targetInst;
                lastSelection = null;
              }
              break;
            case "focusout":
              activeElement$1 = null;
              activeElementInst$1 = null;
              lastSelection = null;
              break;
            // Don't fire the event while the user is dragging. This matches the
            // semantics of the native select event.
            case "mousedown":
              mouseDown = true;
              break;
            case "contextmenu":
            case "mouseup":
            case "dragend":
              mouseDown = false;
              constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget);
              break;
            // Chrome and IE fire non-standard event when selection is changed (and
            // sometimes when it hasn't). IE's event fires out of order with respect
            // to key and input events on deletion, so we discard it.
            //
            // Firefox doesn't support selectionchange, so check selection status
            // after each key entry. The selection changes after keydown and before
            // keyup, but we check on keydown as well in the case of holding down a
            // key, when multiple keydown events are fired but only one keyup is.
            // This is also our approach for IE handling, for the reason above.
            case "selectionchange":
              if (skipSelectionChangeEvent) {
                break;
              }
            // falls through
            case "keydown":
            case "keyup":
              constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget);
          }
        }
        function makePrefixMap(styleProp, eventName) {
          var prefixes2 = {};
          prefixes2[styleProp.toLowerCase()] = eventName.toLowerCase();
          prefixes2["Webkit" + styleProp] = "webkit" + eventName;
          prefixes2["Moz" + styleProp] = "moz" + eventName;
          return prefixes2;
        }
        var vendorPrefixes = {
          animationend: makePrefixMap("Animation", "AnimationEnd"),
          animationiteration: makePrefixMap("Animation", "AnimationIteration"),
          animationstart: makePrefixMap("Animation", "AnimationStart"),
          transitionend: makePrefixMap("Transition", "TransitionEnd")
        };
        var prefixedEventNames = {};
        var style = {};
        if (canUseDOM) {
          style = document.createElement("div").style;
          if (!("AnimationEvent" in window)) {
            delete vendorPrefixes.animationend.animation;
            delete vendorPrefixes.animationiteration.animation;
            delete vendorPrefixes.animationstart.animation;
          }
          if (!("TransitionEvent" in window)) {
            delete vendorPrefixes.transitionend.transition;
          }
        }
        function getVendorPrefixedEventName(eventName) {
          if (prefixedEventNames[eventName]) {
            return prefixedEventNames[eventName];
          } else if (!vendorPrefixes[eventName]) {
            return eventName;
          }
          var prefixMap = vendorPrefixes[eventName];
          for (var styleProp in prefixMap) {
            if (prefixMap.hasOwnProperty(styleProp) && styleProp in style) {
              return prefixedEventNames[eventName] = prefixMap[styleProp];
            }
          }
          return eventName;
        }
        var ANIMATION_END = getVendorPrefixedEventName("animationend");
        var ANIMATION_ITERATION = getVendorPrefixedEventName("animationiteration");
        var ANIMATION_START = getVendorPrefixedEventName("animationstart");
        var TRANSITION_END = getVendorPrefixedEventName("transitionend");
        var topLevelEventsToReactNames = /* @__PURE__ */ new Map();
        var simpleEventPluginEvents = ["abort", "auxClick", "cancel", "canPlay", "canPlayThrough", "click", "close", "contextMenu", "copy", "cut", "drag", "dragEnd", "dragEnter", "dragExit", "dragLeave", "dragOver", "dragStart", "drop", "durationChange", "emptied", "encrypted", "ended", "error", "gotPointerCapture", "input", "invalid", "keyDown", "keyPress", "keyUp", "load", "loadedData", "loadedMetadata", "loadStart", "lostPointerCapture", "mouseDown", "mouseMove", "mouseOut", "mouseOver", "mouseUp", "paste", "pause", "play", "playing", "pointerCancel", "pointerDown", "pointerMove", "pointerOut", "pointerOver", "pointerUp", "progress", "rateChange", "reset", "resize", "seeked", "seeking", "stalled", "submit", "suspend", "timeUpdate", "touchCancel", "touchEnd", "touchStart", "volumeChange", "scroll", "toggle", "touchMove", "waiting", "wheel"];
        function registerSimpleEvent(domEventName, reactName) {
          topLevelEventsToReactNames.set(domEventName, reactName);
          registerTwoPhaseEvent(reactName, [domEventName]);
        }
        function registerSimpleEvents() {
          for (var i = 0; i < simpleEventPluginEvents.length; i++) {
            var eventName = simpleEventPluginEvents[i];
            var domEventName = eventName.toLowerCase();
            var capitalizedEvent = eventName[0].toUpperCase() + eventName.slice(1);
            registerSimpleEvent(domEventName, "on" + capitalizedEvent);
          }
          registerSimpleEvent(ANIMATION_END, "onAnimationEnd");
          registerSimpleEvent(ANIMATION_ITERATION, "onAnimationIteration");
          registerSimpleEvent(ANIMATION_START, "onAnimationStart");
          registerSimpleEvent("dblclick", "onDoubleClick");
          registerSimpleEvent("focusin", "onFocus");
          registerSimpleEvent("focusout", "onBlur");
          registerSimpleEvent(TRANSITION_END, "onTransitionEnd");
        }
        function extractEvents$4(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags, targetContainer) {
          var reactName = topLevelEventsToReactNames.get(domEventName);
          if (reactName === void 0) {
            return;
          }
          var SyntheticEventCtor = SyntheticEvent;
          var reactEventType = domEventName;
          switch (domEventName) {
            case "keypress":
              if (getEventCharCode(nativeEvent) === 0) {
                return;
              }
            /* falls through */
            case "keydown":
            case "keyup":
              SyntheticEventCtor = SyntheticKeyboardEvent;
              break;
            case "focusin":
              reactEventType = "focus";
              SyntheticEventCtor = SyntheticFocusEvent;
              break;
            case "focusout":
              reactEventType = "blur";
              SyntheticEventCtor = SyntheticFocusEvent;
              break;
            case "beforeblur":
            case "afterblur":
              SyntheticEventCtor = SyntheticFocusEvent;
              break;
            case "click":
              if (nativeEvent.button === 2) {
                return;
              }
            /* falls through */
            case "auxclick":
            case "dblclick":
            case "mousedown":
            case "mousemove":
            case "mouseup":
            // TODO: Disabled elements should not respond to mouse events
            /* falls through */
            case "mouseout":
            case "mouseover":
            case "contextmenu":
              SyntheticEventCtor = SyntheticMouseEvent;
              break;
            case "drag":
            case "dragend":
            case "dragenter":
            case "dragexit":
            case "dragleave":
            case "dragover":
            case "dragstart":
            case "drop":
              SyntheticEventCtor = SyntheticDragEvent;
              break;
            case "touchcancel":
            case "touchend":
            case "touchmove":
            case "touchstart":
              SyntheticEventCtor = SyntheticTouchEvent;
              break;
            case ANIMATION_END:
            case ANIMATION_ITERATION:
            case ANIMATION_START:
              SyntheticEventCtor = SyntheticAnimationEvent;
              break;
            case TRANSITION_END:
              SyntheticEventCtor = SyntheticTransitionEvent;
              break;
            case "scroll":
              SyntheticEventCtor = SyntheticUIEvent;
              break;
            case "wheel":
              SyntheticEventCtor = SyntheticWheelEvent;
              break;
            case "copy":
            case "cut":
            case "paste":
              SyntheticEventCtor = SyntheticClipboardEvent;
              break;
            case "gotpointercapture":
            case "lostpointercapture":
            case "pointercancel":
            case "pointerdown":
            case "pointermove":
            case "pointerout":
            case "pointerover":
            case "pointerup":
              SyntheticEventCtor = SyntheticPointerEvent;
              break;
          }
          var inCapturePhase = (eventSystemFlags & IS_CAPTURE_PHASE) !== 0;
          {
            var accumulateTargetOnly = !inCapturePhase && // TODO: ideally, we'd eventually add all events from
            // nonDelegatedEvents list in DOMPluginEventSystem.
            // Then we can remove this special list.
            // This is a breaking change that can wait until React 18.
            domEventName === "scroll";
            var _listeners = accumulateSinglePhaseListeners(targetInst, reactName, nativeEvent.type, inCapturePhase, accumulateTargetOnly);
            if (_listeners.length > 0) {
              var _event = new SyntheticEventCtor(reactName, reactEventType, null, nativeEvent, nativeEventTarget);
              dispatchQueue.push({
                event: _event,
                listeners: _listeners
              });
            }
          }
        }
        registerSimpleEvents();
        registerEvents$2();
        registerEvents$1();
        registerEvents$3();
        registerEvents();
        function extractEvents$5(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags, targetContainer) {
          extractEvents$4(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags);
          var shouldProcessPolyfillPlugins = (eventSystemFlags & SHOULD_NOT_PROCESS_POLYFILL_EVENT_PLUGINS) === 0;
          if (shouldProcessPolyfillPlugins) {
            extractEvents$2(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget);
            extractEvents$1(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget);
            extractEvents$3(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget);
            extractEvents(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget);
          }
        }
        var mediaEventTypes = ["abort", "canplay", "canplaythrough", "durationchange", "emptied", "encrypted", "ended", "error", "loadeddata", "loadedmetadata", "loadstart", "pause", "play", "playing", "progress", "ratechange", "resize", "seeked", "seeking", "stalled", "suspend", "timeupdate", "volumechange", "waiting"];
        var nonDelegatedEvents = new Set(["cancel", "close", "invalid", "load", "scroll", "toggle"].concat(mediaEventTypes));
        function executeDispatch(event, listener, currentTarget) {
          var type = event.type || "unknown-event";
          event.currentTarget = currentTarget;
          invokeGuardedCallbackAndCatchFirstError(type, listener, void 0, event);
          event.currentTarget = null;
        }
        function processDispatchQueueItemsInOrder(event, dispatchListeners, inCapturePhase) {
          var previousInstance;
          if (inCapturePhase) {
            for (var i = dispatchListeners.length - 1; i >= 0; i--) {
              var _dispatchListeners$i = dispatchListeners[i], instance = _dispatchListeners$i.instance, currentTarget = _dispatchListeners$i.currentTarget, listener = _dispatchListeners$i.listener;
              if (instance !== previousInstance && event.isPropagationStopped()) {
                return;
              }
              executeDispatch(event, listener, currentTarget);
              previousInstance = instance;
            }
          } else {
            for (var _i = 0; _i < dispatchListeners.length; _i++) {
              var _dispatchListeners$_i = dispatchListeners[_i], _instance = _dispatchListeners$_i.instance, _currentTarget = _dispatchListeners$_i.currentTarget, _listener = _dispatchListeners$_i.listener;
              if (_instance !== previousInstance && event.isPropagationStopped()) {
                return;
              }
              executeDispatch(event, _listener, _currentTarget);
              previousInstance = _instance;
            }
          }
        }
        function processDispatchQueue(dispatchQueue, eventSystemFlags) {
          var inCapturePhase = (eventSystemFlags & IS_CAPTURE_PHASE) !== 0;
          for (var i = 0; i < dispatchQueue.length; i++) {
            var _dispatchQueue$i = dispatchQueue[i], event = _dispatchQueue$i.event, listeners = _dispatchQueue$i.listeners;
            processDispatchQueueItemsInOrder(event, listeners, inCapturePhase);
          }
          rethrowCaughtError();
        }
        function dispatchEventsForPlugins(domEventName, eventSystemFlags, nativeEvent, targetInst, targetContainer) {
          var nativeEventTarget = getEventTarget(nativeEvent);
          var dispatchQueue = [];
          extractEvents$5(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags);
          processDispatchQueue(dispatchQueue, eventSystemFlags);
        }
        function listenToNonDelegatedEvent(domEventName, targetElement) {
          {
            if (!nonDelegatedEvents.has(domEventName)) {
              error('Did not expect a listenToNonDelegatedEvent() call for "%s". This is a bug in React. Please file an issue.', domEventName);
            }
          }
          var isCapturePhaseListener = false;
          var listenerSet = getEventListenerSet(targetElement);
          var listenerSetKey = getListenerSetKey(domEventName, isCapturePhaseListener);
          if (!listenerSet.has(listenerSetKey)) {
            addTrappedEventListener(targetElement, domEventName, IS_NON_DELEGATED, isCapturePhaseListener);
            listenerSet.add(listenerSetKey);
          }
        }
        function listenToNativeEvent(domEventName, isCapturePhaseListener, target) {
          {
            if (nonDelegatedEvents.has(domEventName) && !isCapturePhaseListener) {
              error('Did not expect a listenToNativeEvent() call for "%s" in the bubble phase. This is a bug in React. Please file an issue.', domEventName);
            }
          }
          var eventSystemFlags = 0;
          if (isCapturePhaseListener) {
            eventSystemFlags |= IS_CAPTURE_PHASE;
          }
          addTrappedEventListener(target, domEventName, eventSystemFlags, isCapturePhaseListener);
        }
        var listeningMarker = "_reactListening" + Math.random().toString(36).slice(2);
        function listenToAllSupportedEvents(rootContainerElement) {
          if (!rootContainerElement[listeningMarker]) {
            rootContainerElement[listeningMarker] = true;
            allNativeEvents.forEach(function(domEventName) {
              if (domEventName !== "selectionchange") {
                if (!nonDelegatedEvents.has(domEventName)) {
                  listenToNativeEvent(domEventName, false, rootContainerElement);
                }
                listenToNativeEvent(domEventName, true, rootContainerElement);
              }
            });
            var ownerDocument = rootContainerElement.nodeType === DOCUMENT_NODE ? rootContainerElement : rootContainerElement.ownerDocument;
            if (ownerDocument !== null) {
              if (!ownerDocument[listeningMarker]) {
                ownerDocument[listeningMarker] = true;
                listenToNativeEvent("selectionchange", false, ownerDocument);
              }
            }
          }
        }
        function addTrappedEventListener(targetContainer, domEventName, eventSystemFlags, isCapturePhaseListener, isDeferredListenerForLegacyFBSupport) {
          var listener = createEventListenerWrapperWithPriority(targetContainer, domEventName, eventSystemFlags);
          var isPassiveListener = void 0;
          if (passiveBrowserEventsSupported) {
            if (domEventName === "touchstart" || domEventName === "touchmove" || domEventName === "wheel") {
              isPassiveListener = true;
            }
          }
          targetContainer = targetContainer;
          var unsubscribeListener;
          if (isCapturePhaseListener) {
            if (isPassiveListener !== void 0) {
              unsubscribeListener = addEventCaptureListenerWithPassiveFlag(targetContainer, domEventName, listener, isPassiveListener);
            } else {
              unsubscribeListener = addEventCaptureListener(targetContainer, domEventName, listener);
            }
          } else {
            if (isPassiveListener !== void 0) {
              unsubscribeListener = addEventBubbleListenerWithPassiveFlag(targetContainer, domEventName, listener, isPassiveListener);
            } else {
              unsubscribeListener = addEventBubbleListener(targetContainer, domEventName, listener);
            }
          }
        }
        function isMatchingRootContainer(grandContainer, targetContainer) {
          return grandContainer === targetContainer || grandContainer.nodeType === COMMENT_NODE && grandContainer.parentNode === targetContainer;
        }
        function dispatchEventForPluginEventSystem(domEventName, eventSystemFlags, nativeEvent, targetInst, targetContainer) {
          var ancestorInst = targetInst;
          if ((eventSystemFlags & IS_EVENT_HANDLE_NON_MANAGED_NODE) === 0 && (eventSystemFlags & IS_NON_DELEGATED) === 0) {
            var targetContainerNode = targetContainer;
            if (targetInst !== null) {
              var node = targetInst;
              mainLoop: while (true) {
                if (node === null) {
                  return;
                }
                var nodeTag = node.tag;
                if (nodeTag === HostRoot || nodeTag === HostPortal) {
                  var container = node.stateNode.containerInfo;
                  if (isMatchingRootContainer(container, targetContainerNode)) {
                    break;
                  }
                  if (nodeTag === HostPortal) {
                    var grandNode = node.return;
                    while (grandNode !== null) {
                      var grandTag = grandNode.tag;
                      if (grandTag === HostRoot || grandTag === HostPortal) {
                        var grandContainer = grandNode.stateNode.containerInfo;
                        if (isMatchingRootContainer(grandContainer, targetContainerNode)) {
                          return;
                        }
                      }
                      grandNode = grandNode.return;
                    }
                  }
                  while (container !== null) {
                    var parentNode = getClosestInstanceFromNode(container);
                    if (parentNode === null) {
                      return;
                    }
                    var parentTag = parentNode.tag;
                    if (parentTag === HostComponent || parentTag === HostText) {
                      node = ancestorInst = parentNode;
                      continue mainLoop;
                    }
                    container = container.parentNode;
                  }
                }
                node = node.return;
              }
            }
          }
          batchedUpdates(function() {
            return dispatchEventsForPlugins(domEventName, eventSystemFlags, nativeEvent, ancestorInst);
          });
        }
        function createDispatchListener(instance, listener, currentTarget) {
          return {
            instance,
            listener,
            currentTarget
          };
        }
        function accumulateSinglePhaseListeners(targetFiber, reactName, nativeEventType, inCapturePhase, accumulateTargetOnly, nativeEvent) {
          var captureName = reactName !== null ? reactName + "Capture" : null;
          var reactEventName = inCapturePhase ? captureName : reactName;
          var listeners = [];
          var instance = targetFiber;
          var lastHostComponent = null;
          while (instance !== null) {
            var _instance2 = instance, stateNode = _instance2.stateNode, tag = _instance2.tag;
            if (tag === HostComponent && stateNode !== null) {
              lastHostComponent = stateNode;
              if (reactEventName !== null) {
                var listener = getListener(instance, reactEventName);
                if (listener != null) {
                  listeners.push(createDispatchListener(instance, listener, lastHostComponent));
                }
              }
            }
            if (accumulateTargetOnly) {
              break;
            }
            instance = instance.return;
          }
          return listeners;
        }
        function accumulateTwoPhaseListeners(targetFiber, reactName) {
          var captureName = reactName + "Capture";
          var listeners = [];
          var instance = targetFiber;
          while (instance !== null) {
            var _instance3 = instance, stateNode = _instance3.stateNode, tag = _instance3.tag;
            if (tag === HostComponent && stateNode !== null) {
              var currentTarget = stateNode;
              var captureListener = getListener(instance, captureName);
              if (captureListener != null) {
                listeners.unshift(createDispatchListener(instance, captureListener, currentTarget));
              }
              var bubbleListener = getListener(instance, reactName);
              if (bubbleListener != null) {
                listeners.push(createDispatchListener(instance, bubbleListener, currentTarget));
              }
            }
            instance = instance.return;
          }
          return listeners;
        }
        function getParent(inst) {
          if (inst === null) {
            return null;
          }
          do {
            inst = inst.return;
          } while (inst && inst.tag !== HostComponent);
          if (inst) {
            return inst;
          }
          return null;
        }
        function getLowestCommonAncestor(instA, instB) {
          var nodeA = instA;
          var nodeB = instB;
          var depthA = 0;
          for (var tempA = nodeA; tempA; tempA = getParent(tempA)) {
            depthA++;
          }
          var depthB = 0;
          for (var tempB = nodeB; tempB; tempB = getParent(tempB)) {
            depthB++;
          }
          while (depthA - depthB > 0) {
            nodeA = getParent(nodeA);
            depthA--;
          }
          while (depthB - depthA > 0) {
            nodeB = getParent(nodeB);
            depthB--;
          }
          var depth = depthA;
          while (depth--) {
            if (nodeA === nodeB || nodeB !== null && nodeA === nodeB.alternate) {
              return nodeA;
            }
            nodeA = getParent(nodeA);
            nodeB = getParent(nodeB);
          }
          return null;
        }
        function accumulateEnterLeaveListenersForEvent(dispatchQueue, event, target, common, inCapturePhase) {
          var registrationName = event._reactName;
          var listeners = [];
          var instance = target;
          while (instance !== null) {
            if (instance === common) {
              break;
            }
            var _instance4 = instance, alternate = _instance4.alternate, stateNode = _instance4.stateNode, tag = _instance4.tag;
            if (alternate !== null && alternate === common) {
              break;
            }
            if (tag === HostComponent && stateNode !== null) {
              var currentTarget = stateNode;
              if (inCapturePhase) {
                var captureListener = getListener(instance, registrationName);
                if (captureListener != null) {
                  listeners.unshift(createDispatchListener(instance, captureListener, currentTarget));
                }
              } else if (!inCapturePhase) {
                var bubbleListener = getListener(instance, registrationName);
                if (bubbleListener != null) {
                  listeners.push(createDispatchListener(instance, bubbleListener, currentTarget));
                }
              }
            }
            instance = instance.return;
          }
          if (listeners.length !== 0) {
            dispatchQueue.push({
              event,
              listeners
            });
          }
        }
        function accumulateEnterLeaveTwoPhaseListeners(dispatchQueue, leaveEvent, enterEvent, from, to) {
          var common = from && to ? getLowestCommonAncestor(from, to) : null;
          if (from !== null) {
            accumulateEnterLeaveListenersForEvent(dispatchQueue, leaveEvent, from, common, false);
          }
          if (to !== null && enterEvent !== null) {
            accumulateEnterLeaveListenersForEvent(dispatchQueue, enterEvent, to, common, true);
          }
        }
        function getListenerSetKey(domEventName, capture) {
          return domEventName + "__" + (capture ? "capture" : "bubble");
        }
        var didWarnInvalidHydration = false;
        var DANGEROUSLY_SET_INNER_HTML = "dangerouslySetInnerHTML";
        var SUPPRESS_CONTENT_EDITABLE_WARNING = "suppressContentEditableWarning";
        var SUPPRESS_HYDRATION_WARNING = "suppressHydrationWarning";
        var AUTOFOCUS = "autoFocus";
        var CHILDREN = "children";
        var STYLE = "style";
        var HTML$1 = "__html";
        var warnedUnknownTags;
        var validatePropertiesInDevelopment;
        var warnForPropDifference;
        var warnForExtraAttributes;
        var warnForInvalidEventListener;
        var canDiffStyleForHydrationWarning;
        var normalizeHTML;
        {
          warnedUnknownTags = {
            // There are working polyfills for <dialog>. Let people use it.
            dialog: true,
            // Electron ships a custom <webview> tag to display external web content in
            // an isolated frame and process.
            // This tag is not present in non Electron environments such as JSDom which
            // is often used for testing purposes.
            // @see https://electronjs.org/docs/api/webview-tag
            webview: true
          };
          validatePropertiesInDevelopment = function(type, props) {
            validateProperties(type, props);
            validateProperties$1(type, props);
            validateProperties$2(type, props, {
              registrationNameDependencies,
              possibleRegistrationNames
            });
          };
          canDiffStyleForHydrationWarning = canUseDOM && !document.documentMode;
          warnForPropDifference = function(propName, serverValue, clientValue) {
            if (didWarnInvalidHydration) {
              return;
            }
            var normalizedClientValue = normalizeMarkupForTextOrAttribute(clientValue);
            var normalizedServerValue = normalizeMarkupForTextOrAttribute(serverValue);
            if (normalizedServerValue === normalizedClientValue) {
              return;
            }
            didWarnInvalidHydration = true;
            error("Prop `%s` did not match. Server: %s Client: %s", propName, JSON.stringify(normalizedServerValue), JSON.stringify(normalizedClientValue));
          };
          warnForExtraAttributes = function(attributeNames) {
            if (didWarnInvalidHydration) {
              return;
            }
            didWarnInvalidHydration = true;
            var names = [];
            attributeNames.forEach(function(name) {
              names.push(name);
            });
            error("Extra attributes from the server: %s", names);
          };
          warnForInvalidEventListener = function(registrationName, listener) {
            if (listener === false) {
              error("Expected `%s` listener to be a function, instead got `false`.\n\nIf you used to conditionally omit it with %s={condition && value}, pass %s={condition ? value : undefined} instead.", registrationName, registrationName, registrationName);
            } else {
              error("Expected `%s` listener to be a function, instead got a value of `%s` type.", registrationName, typeof listener);
            }
          };
          normalizeHTML = function(parent, html) {
            var testElement = parent.namespaceURI === HTML_NAMESPACE ? parent.ownerDocument.createElement(parent.tagName) : parent.ownerDocument.createElementNS(parent.namespaceURI, parent.tagName);
            testElement.innerHTML = html;
            return testElement.innerHTML;
          };
        }
        var NORMALIZE_NEWLINES_REGEX = /\r\n?/g;
        var NORMALIZE_NULL_AND_REPLACEMENT_REGEX = /\u0000|\uFFFD/g;
        function normalizeMarkupForTextOrAttribute(markup) {
          {
            checkHtmlStringCoercion(markup);
          }
          var markupString = typeof markup === "string" ? markup : "" + markup;
          return markupString.replace(NORMALIZE_NEWLINES_REGEX, "\n").replace(NORMALIZE_NULL_AND_REPLACEMENT_REGEX, "");
        }
        function checkForUnmatchedText(serverText, clientText, isConcurrentMode, shouldWarnDev) {
          var normalizedClientText = normalizeMarkupForTextOrAttribute(clientText);
          var normalizedServerText = normalizeMarkupForTextOrAttribute(serverText);
          if (normalizedServerText === normalizedClientText) {
            return;
          }
          if (shouldWarnDev) {
            {
              if (!didWarnInvalidHydration) {
                didWarnInvalidHydration = true;
                error('Text content did not match. Server: "%s" Client: "%s"', normalizedServerText, normalizedClientText);
              }
            }
          }
          if (isConcurrentMode && enableClientRenderFallbackOnTextMismatch) {
            throw new Error("Text content does not match server-rendered HTML.");
          }
        }
        function getOwnerDocumentFromRootContainer(rootContainerElement) {
          return rootContainerElement.nodeType === DOCUMENT_NODE ? rootContainerElement : rootContainerElement.ownerDocument;
        }
        function noop() {
        }
        function trapClickOnNonInteractiveElement(node) {
          node.onclick = noop;
        }
        function setInitialDOMProperties(tag, domElement, rootContainerElement, nextProps, isCustomComponentTag) {
          for (var propKey in nextProps) {
            if (!nextProps.hasOwnProperty(propKey)) {
              continue;
            }
            var nextProp = nextProps[propKey];
            if (propKey === STYLE) {
              {
                if (nextProp) {
                  Object.freeze(nextProp);
                }
              }
              setValueForStyles(domElement, nextProp);
            } else if (propKey === DANGEROUSLY_SET_INNER_HTML) {
              var nextHtml = nextProp ? nextProp[HTML$1] : void 0;
              if (nextHtml != null) {
                setInnerHTML(domElement, nextHtml);
              }
            } else if (propKey === CHILDREN) {
              if (typeof nextProp === "string") {
                var canSetTextContent = tag !== "textarea" || nextProp !== "";
                if (canSetTextContent) {
                  setTextContent(domElement, nextProp);
                }
              } else if (typeof nextProp === "number") {
                setTextContent(domElement, "" + nextProp);
              }
            } else if (propKey === SUPPRESS_CONTENT_EDITABLE_WARNING || propKey === SUPPRESS_HYDRATION_WARNING) ;
            else if (propKey === AUTOFOCUS) ;
            else if (registrationNameDependencies.hasOwnProperty(propKey)) {
              if (nextProp != null) {
                if (typeof nextProp !== "function") {
                  warnForInvalidEventListener(propKey, nextProp);
                }
                if (propKey === "onScroll") {
                  listenToNonDelegatedEvent("scroll", domElement);
                }
              }
            } else if (nextProp != null) {
              setValueForProperty(domElement, propKey, nextProp, isCustomComponentTag);
            }
          }
        }
        function updateDOMProperties(domElement, updatePayload, wasCustomComponentTag, isCustomComponentTag) {
          for (var i = 0; i < updatePayload.length; i += 2) {
            var propKey = updatePayload[i];
            var propValue = updatePayload[i + 1];
            if (propKey === STYLE) {
              setValueForStyles(domElement, propValue);
            } else if (propKey === DANGEROUSLY_SET_INNER_HTML) {
              setInnerHTML(domElement, propValue);
            } else if (propKey === CHILDREN) {
              setTextContent(domElement, propValue);
            } else {
              setValueForProperty(domElement, propKey, propValue, isCustomComponentTag);
            }
          }
        }
        function createElement2(type, props, rootContainerElement, parentNamespace) {
          var isCustomComponentTag;
          var ownerDocument = getOwnerDocumentFromRootContainer(rootContainerElement);
          var domElement;
          var namespaceURI = parentNamespace;
          if (namespaceURI === HTML_NAMESPACE) {
            namespaceURI = getIntrinsicNamespace(type);
          }
          if (namespaceURI === HTML_NAMESPACE) {
            {
              isCustomComponentTag = isCustomComponent(type, props);
              if (!isCustomComponentTag && type !== type.toLowerCase()) {
                error("<%s /> is using incorrect casing. Use PascalCase for React components, or lowercase for HTML elements.", type);
              }
            }
            if (type === "script") {
              var div = ownerDocument.createElement("div");
              div.innerHTML = "<script><\/script>";
              var firstChild = div.firstChild;
              domElement = div.removeChild(firstChild);
            } else if (typeof props.is === "string") {
              domElement = ownerDocument.createElement(type, {
                is: props.is
              });
            } else {
              domElement = ownerDocument.createElement(type);
              if (type === "select") {
                var node = domElement;
                if (props.multiple) {
                  node.multiple = true;
                } else if (props.size) {
                  node.size = props.size;
                }
              }
            }
          } else {
            domElement = ownerDocument.createElementNS(namespaceURI, type);
          }
          {
            if (namespaceURI === HTML_NAMESPACE) {
              if (!isCustomComponentTag && Object.prototype.toString.call(domElement) === "[object HTMLUnknownElement]" && !hasOwnProperty.call(warnedUnknownTags, type)) {
                warnedUnknownTags[type] = true;
                error("The tag <%s> is unrecognized in this browser. If you meant to render a React component, start its name with an uppercase letter.", type);
              }
            }
          }
          return domElement;
        }
        function createTextNode(text, rootContainerElement) {
          return getOwnerDocumentFromRootContainer(rootContainerElement).createTextNode(text);
        }
        function setInitialProperties(domElement, tag, rawProps, rootContainerElement) {
          var isCustomComponentTag = isCustomComponent(tag, rawProps);
          {
            validatePropertiesInDevelopment(tag, rawProps);
          }
          var props;
          switch (tag) {
            case "dialog":
              listenToNonDelegatedEvent("cancel", domElement);
              listenToNonDelegatedEvent("close", domElement);
              props = rawProps;
              break;
            case "iframe":
            case "object":
            case "embed":
              listenToNonDelegatedEvent("load", domElement);
              props = rawProps;
              break;
            case "video":
            case "audio":
              for (var i = 0; i < mediaEventTypes.length; i++) {
                listenToNonDelegatedEvent(mediaEventTypes[i], domElement);
              }
              props = rawProps;
              break;
            case "source":
              listenToNonDelegatedEvent("error", domElement);
              props = rawProps;
              break;
            case "img":
            case "image":
            case "link":
              listenToNonDelegatedEvent("error", domElement);
              listenToNonDelegatedEvent("load", domElement);
              props = rawProps;
              break;
            case "details":
              listenToNonDelegatedEvent("toggle", domElement);
              props = rawProps;
              break;
            case "input":
              initWrapperState(domElement, rawProps);
              props = getHostProps(domElement, rawProps);
              listenToNonDelegatedEvent("invalid", domElement);
              break;
            case "option":
              validateProps(domElement, rawProps);
              props = rawProps;
              break;
            case "select":
              initWrapperState$1(domElement, rawProps);
              props = getHostProps$1(domElement, rawProps);
              listenToNonDelegatedEvent("invalid", domElement);
              break;
            case "textarea":
              initWrapperState$2(domElement, rawProps);
              props = getHostProps$2(domElement, rawProps);
              listenToNonDelegatedEvent("invalid", domElement);
              break;
            default:
              props = rawProps;
          }
          assertValidProps(tag, props);
          setInitialDOMProperties(tag, domElement, rootContainerElement, props, isCustomComponentTag);
          switch (tag) {
            case "input":
              track(domElement);
              postMountWrapper(domElement, rawProps, false);
              break;
            case "textarea":
              track(domElement);
              postMountWrapper$3(domElement);
              break;
            case "option":
              postMountWrapper$1(domElement, rawProps);
              break;
            case "select":
              postMountWrapper$2(domElement, rawProps);
              break;
            default:
              if (typeof props.onClick === "function") {
                trapClickOnNonInteractiveElement(domElement);
              }
              break;
          }
        }
        function diffProperties(domElement, tag, lastRawProps, nextRawProps, rootContainerElement) {
          {
            validatePropertiesInDevelopment(tag, nextRawProps);
          }
          var updatePayload = null;
          var lastProps;
          var nextProps;
          switch (tag) {
            case "input":
              lastProps = getHostProps(domElement, lastRawProps);
              nextProps = getHostProps(domElement, nextRawProps);
              updatePayload = [];
              break;
            case "select":
              lastProps = getHostProps$1(domElement, lastRawProps);
              nextProps = getHostProps$1(domElement, nextRawProps);
              updatePayload = [];
              break;
            case "textarea":
              lastProps = getHostProps$2(domElement, lastRawProps);
              nextProps = getHostProps$2(domElement, nextRawProps);
              updatePayload = [];
              break;
            default:
              lastProps = lastRawProps;
              nextProps = nextRawProps;
              if (typeof lastProps.onClick !== "function" && typeof nextProps.onClick === "function") {
                trapClickOnNonInteractiveElement(domElement);
              }
              break;
          }
          assertValidProps(tag, nextProps);
          var propKey;
          var styleName;
          var styleUpdates = null;
          for (propKey in lastProps) {
            if (nextProps.hasOwnProperty(propKey) || !lastProps.hasOwnProperty(propKey) || lastProps[propKey] == null) {
              continue;
            }
            if (propKey === STYLE) {
              var lastStyle = lastProps[propKey];
              for (styleName in lastStyle) {
                if (lastStyle.hasOwnProperty(styleName)) {
                  if (!styleUpdates) {
                    styleUpdates = {};
                  }
                  styleUpdates[styleName] = "";
                }
              }
            } else if (propKey === DANGEROUSLY_SET_INNER_HTML || propKey === CHILDREN) ;
            else if (propKey === SUPPRESS_CONTENT_EDITABLE_WARNING || propKey === SUPPRESS_HYDRATION_WARNING) ;
            else if (propKey === AUTOFOCUS) ;
            else if (registrationNameDependencies.hasOwnProperty(propKey)) {
              if (!updatePayload) {
                updatePayload = [];
              }
            } else {
              (updatePayload = updatePayload || []).push(propKey, null);
            }
          }
          for (propKey in nextProps) {
            var nextProp = nextProps[propKey];
            var lastProp = lastProps != null ? lastProps[propKey] : void 0;
            if (!nextProps.hasOwnProperty(propKey) || nextProp === lastProp || nextProp == null && lastProp == null) {
              continue;
            }
            if (propKey === STYLE) {
              {
                if (nextProp) {
                  Object.freeze(nextProp);
                }
              }
              if (lastProp) {
                for (styleName in lastProp) {
                  if (lastProp.hasOwnProperty(styleName) && (!nextProp || !nextProp.hasOwnProperty(styleName))) {
                    if (!styleUpdates) {
                      styleUpdates = {};
                    }
                    styleUpdates[styleName] = "";
                  }
                }
                for (styleName in nextProp) {
                  if (nextProp.hasOwnProperty(styleName) && lastProp[styleName] !== nextProp[styleName]) {
                    if (!styleUpdates) {
                      styleUpdates = {};
                    }
                    styleUpdates[styleName] = nextProp[styleName];
                  }
                }
              } else {
                if (!styleUpdates) {
                  if (!updatePayload) {
                    updatePayload = [];
                  }
                  updatePayload.push(propKey, styleUpdates);
                }
                styleUpdates = nextProp;
              }
            } else if (propKey === DANGEROUSLY_SET_INNER_HTML) {
              var nextHtml = nextProp ? nextProp[HTML$1] : void 0;
              var lastHtml = lastProp ? lastProp[HTML$1] : void 0;
              if (nextHtml != null) {
                if (lastHtml !== nextHtml) {
                  (updatePayload = updatePayload || []).push(propKey, nextHtml);
                }
              }
            } else if (propKey === CHILDREN) {
              if (typeof nextProp === "string" || typeof nextProp === "number") {
                (updatePayload = updatePayload || []).push(propKey, "" + nextProp);
              }
            } else if (propKey === SUPPRESS_CONTENT_EDITABLE_WARNING || propKey === SUPPRESS_HYDRATION_WARNING) ;
            else if (registrationNameDependencies.hasOwnProperty(propKey)) {
              if (nextProp != null) {
                if (typeof nextProp !== "function") {
                  warnForInvalidEventListener(propKey, nextProp);
                }
                if (propKey === "onScroll") {
                  listenToNonDelegatedEvent("scroll", domElement);
                }
              }
              if (!updatePayload && lastProp !== nextProp) {
                updatePayload = [];
              }
            } else {
              (updatePayload = updatePayload || []).push(propKey, nextProp);
            }
          }
          if (styleUpdates) {
            {
              validateShorthandPropertyCollisionInDev(styleUpdates, nextProps[STYLE]);
            }
            (updatePayload = updatePayload || []).push(STYLE, styleUpdates);
          }
          return updatePayload;
        }
        function updateProperties(domElement, updatePayload, tag, lastRawProps, nextRawProps) {
          if (tag === "input" && nextRawProps.type === "radio" && nextRawProps.name != null) {
            updateChecked(domElement, nextRawProps);
          }
          var wasCustomComponentTag = isCustomComponent(tag, lastRawProps);
          var isCustomComponentTag = isCustomComponent(tag, nextRawProps);
          updateDOMProperties(domElement, updatePayload, wasCustomComponentTag, isCustomComponentTag);
          switch (tag) {
            case "input":
              updateWrapper(domElement, nextRawProps);
              break;
            case "textarea":
              updateWrapper$1(domElement, nextRawProps);
              break;
            case "select":
              postUpdateWrapper(domElement, nextRawProps);
              break;
          }
        }
        function getPossibleStandardName(propName) {
          {
            var lowerCasedName = propName.toLowerCase();
            if (!possibleStandardNames.hasOwnProperty(lowerCasedName)) {
              return null;
            }
            return possibleStandardNames[lowerCasedName] || null;
          }
        }
        function diffHydratedProperties(domElement, tag, rawProps, parentNamespace, rootContainerElement, isConcurrentMode, shouldWarnDev) {
          var isCustomComponentTag;
          var extraAttributeNames;
          {
            isCustomComponentTag = isCustomComponent(tag, rawProps);
            validatePropertiesInDevelopment(tag, rawProps);
          }
          switch (tag) {
            case "dialog":
              listenToNonDelegatedEvent("cancel", domElement);
              listenToNonDelegatedEvent("close", domElement);
              break;
            case "iframe":
            case "object":
            case "embed":
              listenToNonDelegatedEvent("load", domElement);
              break;
            case "video":
            case "audio":
              for (var i = 0; i < mediaEventTypes.length; i++) {
                listenToNonDelegatedEvent(mediaEventTypes[i], domElement);
              }
              break;
            case "source":
              listenToNonDelegatedEvent("error", domElement);
              break;
            case "img":
            case "image":
            case "link":
              listenToNonDelegatedEvent("error", domElement);
              listenToNonDelegatedEvent("load", domElement);
              break;
            case "details":
              listenToNonDelegatedEvent("toggle", domElement);
              break;
            case "input":
              initWrapperState(domElement, rawProps);
              listenToNonDelegatedEvent("invalid", domElement);
              break;
            case "option":
              validateProps(domElement, rawProps);
              break;
            case "select":
              initWrapperState$1(domElement, rawProps);
              listenToNonDelegatedEvent("invalid", domElement);
              break;
            case "textarea":
              initWrapperState$2(domElement, rawProps);
              listenToNonDelegatedEvent("invalid", domElement);
              break;
          }
          assertValidProps(tag, rawProps);
          {
            extraAttributeNames = /* @__PURE__ */ new Set();
            var attributes = domElement.attributes;
            for (var _i = 0; _i < attributes.length; _i++) {
              var name = attributes[_i].name.toLowerCase();
              switch (name) {
                // Controlled attributes are not validated
                // TODO: Only ignore them on controlled tags.
                case "value":
                  break;
                case "checked":
                  break;
                case "selected":
                  break;
                default:
                  extraAttributeNames.add(attributes[_i].name);
              }
            }
          }
          var updatePayload = null;
          for (var propKey in rawProps) {
            if (!rawProps.hasOwnProperty(propKey)) {
              continue;
            }
            var nextProp = rawProps[propKey];
            if (propKey === CHILDREN) {
              if (typeof nextProp === "string") {
                if (domElement.textContent !== nextProp) {
                  if (rawProps[SUPPRESS_HYDRATION_WARNING] !== true) {
                    checkForUnmatchedText(domElement.textContent, nextProp, isConcurrentMode, shouldWarnDev);
                  }
                  updatePayload = [CHILDREN, nextProp];
                }
              } else if (typeof nextProp === "number") {
                if (domElement.textContent !== "" + nextProp) {
                  if (rawProps[SUPPRESS_HYDRATION_WARNING] !== true) {
                    checkForUnmatchedText(domElement.textContent, nextProp, isConcurrentMode, shouldWarnDev);
                  }
                  updatePayload = [CHILDREN, "" + nextProp];
                }
              }
            } else if (registrationNameDependencies.hasOwnProperty(propKey)) {
              if (nextProp != null) {
                if (typeof nextProp !== "function") {
                  warnForInvalidEventListener(propKey, nextProp);
                }
                if (propKey === "onScroll") {
                  listenToNonDelegatedEvent("scroll", domElement);
                }
              }
            } else if (shouldWarnDev && true && // Convince Flow we've calculated it (it's DEV-only in this method.)
            typeof isCustomComponentTag === "boolean") {
              var serverValue = void 0;
              var propertyInfo = isCustomComponentTag && enableCustomElementPropertySupport ? null : getPropertyInfo(propKey);
              if (rawProps[SUPPRESS_HYDRATION_WARNING] === true) ;
              else if (propKey === SUPPRESS_CONTENT_EDITABLE_WARNING || propKey === SUPPRESS_HYDRATION_WARNING || // Controlled attributes are not validated
              // TODO: Only ignore them on controlled tags.
              propKey === "value" || propKey === "checked" || propKey === "selected") ;
              else if (propKey === DANGEROUSLY_SET_INNER_HTML) {
                var serverHTML = domElement.innerHTML;
                var nextHtml = nextProp ? nextProp[HTML$1] : void 0;
                if (nextHtml != null) {
                  var expectedHTML = normalizeHTML(domElement, nextHtml);
                  if (expectedHTML !== serverHTML) {
                    warnForPropDifference(propKey, serverHTML, expectedHTML);
                  }
                }
              } else if (propKey === STYLE) {
                extraAttributeNames.delete(propKey);
                if (canDiffStyleForHydrationWarning) {
                  var expectedStyle = createDangerousStringForStyles(nextProp);
                  serverValue = domElement.getAttribute("style");
                  if (expectedStyle !== serverValue) {
                    warnForPropDifference(propKey, serverValue, expectedStyle);
                  }
                }
              } else if (isCustomComponentTag && !enableCustomElementPropertySupport) {
                extraAttributeNames.delete(propKey.toLowerCase());
                serverValue = getValueForAttribute(domElement, propKey, nextProp);
                if (nextProp !== serverValue) {
                  warnForPropDifference(propKey, serverValue, nextProp);
                }
              } else if (!shouldIgnoreAttribute(propKey, propertyInfo, isCustomComponentTag) && !shouldRemoveAttribute(propKey, nextProp, propertyInfo, isCustomComponentTag)) {
                var isMismatchDueToBadCasing = false;
                if (propertyInfo !== null) {
                  extraAttributeNames.delete(propertyInfo.attributeName);
                  serverValue = getValueForProperty(domElement, propKey, nextProp, propertyInfo);
                } else {
                  var ownNamespace = parentNamespace;
                  if (ownNamespace === HTML_NAMESPACE) {
                    ownNamespace = getIntrinsicNamespace(tag);
                  }
                  if (ownNamespace === HTML_NAMESPACE) {
                    extraAttributeNames.delete(propKey.toLowerCase());
                  } else {
                    var standardName = getPossibleStandardName(propKey);
                    if (standardName !== null && standardName !== propKey) {
                      isMismatchDueToBadCasing = true;
                      extraAttributeNames.delete(standardName);
                    }
                    extraAttributeNames.delete(propKey);
                  }
                  serverValue = getValueForAttribute(domElement, propKey, nextProp);
                }
                var dontWarnCustomElement = enableCustomElementPropertySupport;
                if (!dontWarnCustomElement && nextProp !== serverValue && !isMismatchDueToBadCasing) {
                  warnForPropDifference(propKey, serverValue, nextProp);
                }
              }
            }
          }
          {
            if (shouldWarnDev) {
              if (
                // $FlowFixMe - Should be inferred as not undefined.
                extraAttributeNames.size > 0 && rawProps[SUPPRESS_HYDRATION_WARNING] !== true
              ) {
                warnForExtraAttributes(extraAttributeNames);
              }
            }
          }
          switch (tag) {
            case "input":
              track(domElement);
              postMountWrapper(domElement, rawProps, true);
              break;
            case "textarea":
              track(domElement);
              postMountWrapper$3(domElement);
              break;
            case "select":
            case "option":
              break;
            default:
              if (typeof rawProps.onClick === "function") {
                trapClickOnNonInteractiveElement(domElement);
              }
              break;
          }
          return updatePayload;
        }
        function diffHydratedText(textNode, text, isConcurrentMode) {
          var isDifferent = textNode.nodeValue !== text;
          return isDifferent;
        }
        function warnForDeletedHydratableElement(parentNode, child) {
          {
            if (didWarnInvalidHydration) {
              return;
            }
            didWarnInvalidHydration = true;
            error("Did not expect server HTML to contain a <%s> in <%s>.", child.nodeName.toLowerCase(), parentNode.nodeName.toLowerCase());
          }
        }
        function warnForDeletedHydratableText(parentNode, child) {
          {
            if (didWarnInvalidHydration) {
              return;
            }
            didWarnInvalidHydration = true;
            error('Did not expect server HTML to contain the text node "%s" in <%s>.', child.nodeValue, parentNode.nodeName.toLowerCase());
          }
        }
        function warnForInsertedHydratedElement(parentNode, tag, props) {
          {
            if (didWarnInvalidHydration) {
              return;
            }
            didWarnInvalidHydration = true;
            error("Expected server HTML to contain a matching <%s> in <%s>.", tag, parentNode.nodeName.toLowerCase());
          }
        }
        function warnForInsertedHydratedText(parentNode, text) {
          {
            if (text === "") {
              return;
            }
            if (didWarnInvalidHydration) {
              return;
            }
            didWarnInvalidHydration = true;
            error('Expected server HTML to contain a matching text node for "%s" in <%s>.', text, parentNode.nodeName.toLowerCase());
          }
        }
        function restoreControlledState$3(domElement, tag, props) {
          switch (tag) {
            case "input":
              restoreControlledState(domElement, props);
              return;
            case "textarea":
              restoreControlledState$2(domElement, props);
              return;
            case "select":
              restoreControlledState$1(domElement, props);
              return;
          }
        }
        var validateDOMNesting = function() {
        };
        var updatedAncestorInfo = function() {
        };
        {
          var specialTags = ["address", "applet", "area", "article", "aside", "base", "basefont", "bgsound", "blockquote", "body", "br", "button", "caption", "center", "col", "colgroup", "dd", "details", "dir", "div", "dl", "dt", "embed", "fieldset", "figcaption", "figure", "footer", "form", "frame", "frameset", "h1", "h2", "h3", "h4", "h5", "h6", "head", "header", "hgroup", "hr", "html", "iframe", "img", "input", "isindex", "li", "link", "listing", "main", "marquee", "menu", "menuitem", "meta", "nav", "noembed", "noframes", "noscript", "object", "ol", "p", "param", "plaintext", "pre", "script", "section", "select", "source", "style", "summary", "table", "tbody", "td", "template", "textarea", "tfoot", "th", "thead", "title", "tr", "track", "ul", "wbr", "xmp"];
          var inScopeTags = [
            "applet",
            "caption",
            "html",
            "table",
            "td",
            "th",
            "marquee",
            "object",
            "template",
            // https://html.spec.whatwg.org/multipage/syntax.html#html-integration-point
            // TODO: Distinguish by namespace here -- for <title>, including it here
            // errs on the side of fewer warnings
            "foreignObject",
            "desc",
            "title"
          ];
          var buttonScopeTags = inScopeTags.concat(["button"]);
          var impliedEndTags = ["dd", "dt", "li", "option", "optgroup", "p", "rp", "rt"];
          var emptyAncestorInfo = {
            current: null,
            formTag: null,
            aTagInScope: null,
            buttonTagInScope: null,
            nobrTagInScope: null,
            pTagInButtonScope: null,
            listItemTagAutoclosing: null,
            dlItemTagAutoclosing: null
          };
          updatedAncestorInfo = function(oldInfo, tag) {
            var ancestorInfo = assign({}, oldInfo || emptyAncestorInfo);
            var info = {
              tag
            };
            if (inScopeTags.indexOf(tag) !== -1) {
              ancestorInfo.aTagInScope = null;
              ancestorInfo.buttonTagInScope = null;
              ancestorInfo.nobrTagInScope = null;
            }
            if (buttonScopeTags.indexOf(tag) !== -1) {
              ancestorInfo.pTagInButtonScope = null;
            }
            if (specialTags.indexOf(tag) !== -1 && tag !== "address" && tag !== "div" && tag !== "p") {
              ancestorInfo.listItemTagAutoclosing = null;
              ancestorInfo.dlItemTagAutoclosing = null;
            }
            ancestorInfo.current = info;
            if (tag === "form") {
              ancestorInfo.formTag = info;
            }
            if (tag === "a") {
              ancestorInfo.aTagInScope = info;
            }
            if (tag === "button") {
              ancestorInfo.buttonTagInScope = info;
            }
            if (tag === "nobr") {
              ancestorInfo.nobrTagInScope = info;
            }
            if (tag === "p") {
              ancestorInfo.pTagInButtonScope = info;
            }
            if (tag === "li") {
              ancestorInfo.listItemTagAutoclosing = info;
            }
            if (tag === "dd" || tag === "dt") {
              ancestorInfo.dlItemTagAutoclosing = info;
            }
            return ancestorInfo;
          };
          var isTagValidWithParent = function(tag, parentTag) {
            switch (parentTag) {
              // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inselect
              case "select":
                return tag === "option" || tag === "optgroup" || tag === "#text";
              case "optgroup":
                return tag === "option" || tag === "#text";
              // Strictly speaking, seeing an <option> doesn't mean we're in a <select>
              // but
              case "option":
                return tag === "#text";
              // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intd
              // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incaption
              // No special behavior since these rules fall back to "in body" mode for
              // all except special table nodes which cause bad parsing behavior anyway.
              // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intr
              case "tr":
                return tag === "th" || tag === "td" || tag === "style" || tag === "script" || tag === "template";
              // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intbody
              case "tbody":
              case "thead":
              case "tfoot":
                return tag === "tr" || tag === "style" || tag === "script" || tag === "template";
              // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incolgroup
              case "colgroup":
                return tag === "col" || tag === "template";
              // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intable
              case "table":
                return tag === "caption" || tag === "colgroup" || tag === "tbody" || tag === "tfoot" || tag === "thead" || tag === "style" || tag === "script" || tag === "template";
              // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inhead
              case "head":
                return tag === "base" || tag === "basefont" || tag === "bgsound" || tag === "link" || tag === "meta" || tag === "title" || tag === "noscript" || tag === "noframes" || tag === "style" || tag === "script" || tag === "template";
              // https://html.spec.whatwg.org/multipage/semantics.html#the-html-element
              case "html":
                return tag === "head" || tag === "body" || tag === "frameset";
              case "frameset":
                return tag === "frame";
              case "#document":
                return tag === "html";
            }
            switch (tag) {
              case "h1":
              case "h2":
              case "h3":
              case "h4":
              case "h5":
              case "h6":
                return parentTag !== "h1" && parentTag !== "h2" && parentTag !== "h3" && parentTag !== "h4" && parentTag !== "h5" && parentTag !== "h6";
              case "rp":
              case "rt":
                return impliedEndTags.indexOf(parentTag) === -1;
              case "body":
              case "caption":
              case "col":
              case "colgroup":
              case "frameset":
              case "frame":
              case "head":
              case "html":
              case "tbody":
              case "td":
              case "tfoot":
              case "th":
              case "thead":
              case "tr":
                return parentTag == null;
            }
            return true;
          };
          var findInvalidAncestorForTag = function(tag, ancestorInfo) {
            switch (tag) {
              case "address":
              case "article":
              case "aside":
              case "blockquote":
              case "center":
              case "details":
              case "dialog":
              case "dir":
              case "div":
              case "dl":
              case "fieldset":
              case "figcaption":
              case "figure":
              case "footer":
              case "header":
              case "hgroup":
              case "main":
              case "menu":
              case "nav":
              case "ol":
              case "p":
              case "section":
              case "summary":
              case "ul":
              case "pre":
              case "listing":
              case "table":
              case "hr":
              case "xmp":
              case "h1":
              case "h2":
              case "h3":
              case "h4":
              case "h5":
              case "h6":
                return ancestorInfo.pTagInButtonScope;
              case "form":
                return ancestorInfo.formTag || ancestorInfo.pTagInButtonScope;
              case "li":
                return ancestorInfo.listItemTagAutoclosing;
              case "dd":
              case "dt":
                return ancestorInfo.dlItemTagAutoclosing;
              case "button":
                return ancestorInfo.buttonTagInScope;
              case "a":
                return ancestorInfo.aTagInScope;
              case "nobr":
                return ancestorInfo.nobrTagInScope;
            }
            return null;
          };
          var didWarn$1 = {};
          validateDOMNesting = function(childTag, childText, ancestorInfo) {
            ancestorInfo = ancestorInfo || emptyAncestorInfo;
            var parentInfo = ancestorInfo.current;
            var parentTag = parentInfo && parentInfo.tag;
            if (childText != null) {
              if (childTag != null) {
                error("validateDOMNesting: when childText is passed, childTag should be null");
              }
              childTag = "#text";
            }
            var invalidParent = isTagValidWithParent(childTag, parentTag) ? null : parentInfo;
            var invalidAncestor = invalidParent ? null : findInvalidAncestorForTag(childTag, ancestorInfo);
            var invalidParentOrAncestor = invalidParent || invalidAncestor;
            if (!invalidParentOrAncestor) {
              return;
            }
            var ancestorTag = invalidParentOrAncestor.tag;
            var warnKey = !!invalidParent + "|" + childTag + "|" + ancestorTag;
            if (didWarn$1[warnKey]) {
              return;
            }
            didWarn$1[warnKey] = true;
            var tagDisplayName = childTag;
            var whitespaceInfo = "";
            if (childTag === "#text") {
              if (/\S/.test(childText)) {
                tagDisplayName = "Text nodes";
              } else {
                tagDisplayName = "Whitespace text nodes";
                whitespaceInfo = " Make sure you don't have any extra whitespace between tags on each line of your source code.";
              }
            } else {
              tagDisplayName = "<" + childTag + ">";
            }
            if (invalidParent) {
              var info = "";
              if (ancestorTag === "table" && childTag === "tr") {
                info += " Add a <tbody>, <thead> or <tfoot> to your code to match the DOM tree generated by the browser.";
              }
              error("validateDOMNesting(...): %s cannot appear as a child of <%s>.%s%s", tagDisplayName, ancestorTag, whitespaceInfo, info);
            } else {
              error("validateDOMNesting(...): %s cannot appear as a descendant of <%s>.", tagDisplayName, ancestorTag);
            }
          };
        }
        var SUPPRESS_HYDRATION_WARNING$1 = "suppressHydrationWarning";
        var SUSPENSE_START_DATA = "$";
        var SUSPENSE_END_DATA = "/$";
        var SUSPENSE_PENDING_START_DATA = "$?";
        var SUSPENSE_FALLBACK_START_DATA = "$!";
        var STYLE$1 = "style";
        var eventsEnabled = null;
        var selectionInformation = null;
        function getRootHostContext(rootContainerInstance) {
          var type;
          var namespace;
          var nodeType = rootContainerInstance.nodeType;
          switch (nodeType) {
            case DOCUMENT_NODE:
            case DOCUMENT_FRAGMENT_NODE: {
              type = nodeType === DOCUMENT_NODE ? "#document" : "#fragment";
              var root2 = rootContainerInstance.documentElement;
              namespace = root2 ? root2.namespaceURI : getChildNamespace(null, "");
              break;
            }
            default: {
              var container = nodeType === COMMENT_NODE ? rootContainerInstance.parentNode : rootContainerInstance;
              var ownNamespace = container.namespaceURI || null;
              type = container.tagName;
              namespace = getChildNamespace(ownNamespace, type);
              break;
            }
          }
          {
            var validatedTag = type.toLowerCase();
            var ancestorInfo = updatedAncestorInfo(null, validatedTag);
            return {
              namespace,
              ancestorInfo
            };
          }
        }
        function getChildHostContext(parentHostContext, type, rootContainerInstance) {
          {
            var parentHostContextDev = parentHostContext;
            var namespace = getChildNamespace(parentHostContextDev.namespace, type);
            var ancestorInfo = updatedAncestorInfo(parentHostContextDev.ancestorInfo, type);
            return {
              namespace,
              ancestorInfo
            };
          }
        }
        function getPublicInstance(instance) {
          return instance;
        }
        function prepareForCommit(containerInfo) {
          eventsEnabled = isEnabled();
          selectionInformation = getSelectionInformation();
          var activeInstance = null;
          setEnabled(false);
          return activeInstance;
        }
        function resetAfterCommit(containerInfo) {
          restoreSelection(selectionInformation);
          setEnabled(eventsEnabled);
          eventsEnabled = null;
          selectionInformation = null;
        }
        function createInstance(type, props, rootContainerInstance, hostContext, internalInstanceHandle) {
          var parentNamespace;
          {
            var hostContextDev = hostContext;
            validateDOMNesting(type, null, hostContextDev.ancestorInfo);
            if (typeof props.children === "string" || typeof props.children === "number") {
              var string = "" + props.children;
              var ownAncestorInfo = updatedAncestorInfo(hostContextDev.ancestorInfo, type);
              validateDOMNesting(null, string, ownAncestorInfo);
            }
            parentNamespace = hostContextDev.namespace;
          }
          var domElement = createElement2(type, props, rootContainerInstance, parentNamespace);
          precacheFiberNode(internalInstanceHandle, domElement);
          updateFiberProps(domElement, props);
          return domElement;
        }
        function appendInitialChild(parentInstance, child) {
          parentInstance.appendChild(child);
        }
        function finalizeInitialChildren(domElement, type, props, rootContainerInstance, hostContext) {
          setInitialProperties(domElement, type, props, rootContainerInstance);
          switch (type) {
            case "button":
            case "input":
            case "select":
            case "textarea":
              return !!props.autoFocus;
            case "img":
              return true;
            default:
              return false;
          }
        }
        function prepareUpdate(domElement, type, oldProps, newProps, rootContainerInstance, hostContext) {
          {
            var hostContextDev = hostContext;
            if (typeof newProps.children !== typeof oldProps.children && (typeof newProps.children === "string" || typeof newProps.children === "number")) {
              var string = "" + newProps.children;
              var ownAncestorInfo = updatedAncestorInfo(hostContextDev.ancestorInfo, type);
              validateDOMNesting(null, string, ownAncestorInfo);
            }
          }
          return diffProperties(domElement, type, oldProps, newProps);
        }
        function shouldSetTextContent(type, props) {
          return type === "textarea" || type === "noscript" || typeof props.children === "string" || typeof props.children === "number" || typeof props.dangerouslySetInnerHTML === "object" && props.dangerouslySetInnerHTML !== null && props.dangerouslySetInnerHTML.__html != null;
        }
        function createTextInstance(text, rootContainerInstance, hostContext, internalInstanceHandle) {
          {
            var hostContextDev = hostContext;
            validateDOMNesting(null, text, hostContextDev.ancestorInfo);
          }
          var textNode = createTextNode(text, rootContainerInstance);
          precacheFiberNode(internalInstanceHandle, textNode);
          return textNode;
        }
        function getCurrentEventPriority() {
          var currentEvent = window.event;
          if (currentEvent === void 0) {
            return DefaultEventPriority;
          }
          return getEventPriority(currentEvent.type);
        }
        var scheduleTimeout = typeof setTimeout === "function" ? setTimeout : void 0;
        var cancelTimeout = typeof clearTimeout === "function" ? clearTimeout : void 0;
        var noTimeout = -1;
        var localPromise = typeof Promise === "function" ? Promise : void 0;
        var scheduleMicrotask = typeof queueMicrotask === "function" ? queueMicrotask : typeof localPromise !== "undefined" ? function(callback) {
          return localPromise.resolve(null).then(callback).catch(handleErrorInNextTick);
        } : scheduleTimeout;
        function handleErrorInNextTick(error2) {
          setTimeout(function() {
            throw error2;
          });
        }
        function commitMount(domElement, type, newProps, internalInstanceHandle) {
          switch (type) {
            case "button":
            case "input":
            case "select":
            case "textarea":
              if (newProps.autoFocus) {
                domElement.focus();
              }
              return;
            case "img": {
              if (newProps.src) {
                domElement.src = newProps.src;
              }
              return;
            }
          }
        }
        function commitUpdate(domElement, updatePayload, type, oldProps, newProps, internalInstanceHandle) {
          updateProperties(domElement, updatePayload, type, oldProps, newProps);
          updateFiberProps(domElement, newProps);
        }
        function resetTextContent(domElement) {
          setTextContent(domElement, "");
        }
        function commitTextUpdate(textInstance, oldText, newText) {
          textInstance.nodeValue = newText;
        }
        function appendChild(parentInstance, child) {
          parentInstance.appendChild(child);
        }
        function appendChildToContainer(container, child) {
          var parentNode;
          if (container.nodeType === COMMENT_NODE) {
            parentNode = container.parentNode;
            parentNode.insertBefore(child, container);
          } else {
            parentNode = container;
            parentNode.appendChild(child);
          }
          var reactRootContainer = container._reactRootContainer;
          if ((reactRootContainer === null || reactRootContainer === void 0) && parentNode.onclick === null) {
            trapClickOnNonInteractiveElement(parentNode);
          }
        }
        function insertBefore(parentInstance, child, beforeChild) {
          parentInstance.insertBefore(child, beforeChild);
        }
        function insertInContainerBefore(container, child, beforeChild) {
          if (container.nodeType === COMMENT_NODE) {
            container.parentNode.insertBefore(child, beforeChild);
          } else {
            container.insertBefore(child, beforeChild);
          }
        }
        function removeChild(parentInstance, child) {
          parentInstance.removeChild(child);
        }
        function removeChildFromContainer(container, child) {
          if (container.nodeType === COMMENT_NODE) {
            container.parentNode.removeChild(child);
          } else {
            container.removeChild(child);
          }
        }
        function clearSuspenseBoundary(parentInstance, suspenseInstance) {
          var node = suspenseInstance;
          var depth = 0;
          do {
            var nextNode = node.nextSibling;
            parentInstance.removeChild(node);
            if (nextNode && nextNode.nodeType === COMMENT_NODE) {
              var data = nextNode.data;
              if (data === SUSPENSE_END_DATA) {
                if (depth === 0) {
                  parentInstance.removeChild(nextNode);
                  retryIfBlockedOn(suspenseInstance);
                  return;
                } else {
                  depth--;
                }
              } else if (data === SUSPENSE_START_DATA || data === SUSPENSE_PENDING_START_DATA || data === SUSPENSE_FALLBACK_START_DATA) {
                depth++;
              }
            }
            node = nextNode;
          } while (node);
          retryIfBlockedOn(suspenseInstance);
        }
        function clearSuspenseBoundaryFromContainer(container, suspenseInstance) {
          if (container.nodeType === COMMENT_NODE) {
            clearSuspenseBoundary(container.parentNode, suspenseInstance);
          } else if (container.nodeType === ELEMENT_NODE) {
            clearSuspenseBoundary(container, suspenseInstance);
          }
          retryIfBlockedOn(container);
        }
        function hideInstance(instance) {
          instance = instance;
          var style2 = instance.style;
          if (typeof style2.setProperty === "function") {
            style2.setProperty("display", "none", "important");
          } else {
            style2.display = "none";
          }
        }
        function hideTextInstance(textInstance) {
          textInstance.nodeValue = "";
        }
        function unhideInstance(instance, props) {
          instance = instance;
          var styleProp = props[STYLE$1];
          var display = styleProp !== void 0 && styleProp !== null && styleProp.hasOwnProperty("display") ? styleProp.display : null;
          instance.style.display = dangerousStyleValue("display", display);
        }
        function unhideTextInstance(textInstance, text) {
          textInstance.nodeValue = text;
        }
        function clearContainer(container) {
          if (container.nodeType === ELEMENT_NODE) {
            container.textContent = "";
          } else if (container.nodeType === DOCUMENT_NODE) {
            if (container.documentElement) {
              container.removeChild(container.documentElement);
            }
          }
        }
        function canHydrateInstance(instance, type, props) {
          if (instance.nodeType !== ELEMENT_NODE || type.toLowerCase() !== instance.nodeName.toLowerCase()) {
            return null;
          }
          return instance;
        }
        function canHydrateTextInstance(instance, text) {
          if (text === "" || instance.nodeType !== TEXT_NODE) {
            return null;
          }
          return instance;
        }
        function canHydrateSuspenseInstance(instance) {
          if (instance.nodeType !== COMMENT_NODE) {
            return null;
          }
          return instance;
        }
        function isSuspenseInstancePending(instance) {
          return instance.data === SUSPENSE_PENDING_START_DATA;
        }
        function isSuspenseInstanceFallback(instance) {
          return instance.data === SUSPENSE_FALLBACK_START_DATA;
        }
        function getSuspenseInstanceFallbackErrorDetails(instance) {
          var dataset = instance.nextSibling && instance.nextSibling.dataset;
          var digest, message, stack;
          if (dataset) {
            digest = dataset.dgst;
            {
              message = dataset.msg;
              stack = dataset.stck;
            }
          }
          {
            return {
              message,
              digest,
              stack
            };
          }
        }
        function registerSuspenseInstanceRetry(instance, callback) {
          instance._reactRetry = callback;
        }
        function getNextHydratable(node) {
          for (; node != null; node = node.nextSibling) {
            var nodeType = node.nodeType;
            if (nodeType === ELEMENT_NODE || nodeType === TEXT_NODE) {
              break;
            }
            if (nodeType === COMMENT_NODE) {
              var nodeData = node.data;
              if (nodeData === SUSPENSE_START_DATA || nodeData === SUSPENSE_FALLBACK_START_DATA || nodeData === SUSPENSE_PENDING_START_DATA) {
                break;
              }
              if (nodeData === SUSPENSE_END_DATA) {
                return null;
              }
            }
          }
          return node;
        }
        function getNextHydratableSibling(instance) {
          return getNextHydratable(instance.nextSibling);
        }
        function getFirstHydratableChild(parentInstance) {
          return getNextHydratable(parentInstance.firstChild);
        }
        function getFirstHydratableChildWithinContainer(parentContainer) {
          return getNextHydratable(parentContainer.firstChild);
        }
        function getFirstHydratableChildWithinSuspenseInstance(parentInstance) {
          return getNextHydratable(parentInstance.nextSibling);
        }
        function hydrateInstance(instance, type, props, rootContainerInstance, hostContext, internalInstanceHandle, shouldWarnDev) {
          precacheFiberNode(internalInstanceHandle, instance);
          updateFiberProps(instance, props);
          var parentNamespace;
          {
            var hostContextDev = hostContext;
            parentNamespace = hostContextDev.namespace;
          }
          var isConcurrentMode = (internalInstanceHandle.mode & ConcurrentMode) !== NoMode;
          return diffHydratedProperties(instance, type, props, parentNamespace, rootContainerInstance, isConcurrentMode, shouldWarnDev);
        }
        function hydrateTextInstance(textInstance, text, internalInstanceHandle, shouldWarnDev) {
          precacheFiberNode(internalInstanceHandle, textInstance);
          var isConcurrentMode = (internalInstanceHandle.mode & ConcurrentMode) !== NoMode;
          return diffHydratedText(textInstance, text);
        }
        function hydrateSuspenseInstance(suspenseInstance, internalInstanceHandle) {
          precacheFiberNode(internalInstanceHandle, suspenseInstance);
        }
        function getNextHydratableInstanceAfterSuspenseInstance(suspenseInstance) {
          var node = suspenseInstance.nextSibling;
          var depth = 0;
          while (node) {
            if (node.nodeType === COMMENT_NODE) {
              var data = node.data;
              if (data === SUSPENSE_END_DATA) {
                if (depth === 0) {
                  return getNextHydratableSibling(node);
                } else {
                  depth--;
                }
              } else if (data === SUSPENSE_START_DATA || data === SUSPENSE_FALLBACK_START_DATA || data === SUSPENSE_PENDING_START_DATA) {
                depth++;
              }
            }
            node = node.nextSibling;
          }
          return null;
        }
        function getParentSuspenseInstance(targetInstance) {
          var node = targetInstance.previousSibling;
          var depth = 0;
          while (node) {
            if (node.nodeType === COMMENT_NODE) {
              var data = node.data;
              if (data === SUSPENSE_START_DATA || data === SUSPENSE_FALLBACK_START_DATA || data === SUSPENSE_PENDING_START_DATA) {
                if (depth === 0) {
                  return node;
                } else {
                  depth--;
                }
              } else if (data === SUSPENSE_END_DATA) {
                depth++;
              }
            }
            node = node.previousSibling;
          }
          return null;
        }
        function commitHydratedContainer(container) {
          retryIfBlockedOn(container);
        }
        function commitHydratedSuspenseInstance(suspenseInstance) {
          retryIfBlockedOn(suspenseInstance);
        }
        function shouldDeleteUnhydratedTailInstances(parentType) {
          return parentType !== "head" && parentType !== "body";
        }
        function didNotMatchHydratedContainerTextInstance(parentContainer, textInstance, text, isConcurrentMode) {
          var shouldWarnDev = true;
          checkForUnmatchedText(textInstance.nodeValue, text, isConcurrentMode, shouldWarnDev);
        }
        function didNotMatchHydratedTextInstance(parentType, parentProps, parentInstance, textInstance, text, isConcurrentMode) {
          if (parentProps[SUPPRESS_HYDRATION_WARNING$1] !== true) {
            var shouldWarnDev = true;
            checkForUnmatchedText(textInstance.nodeValue, text, isConcurrentMode, shouldWarnDev);
          }
        }
        function didNotHydrateInstanceWithinContainer(parentContainer, instance) {
          {
            if (instance.nodeType === ELEMENT_NODE) {
              warnForDeletedHydratableElement(parentContainer, instance);
            } else if (instance.nodeType === COMMENT_NODE) ;
            else {
              warnForDeletedHydratableText(parentContainer, instance);
            }
          }
        }
        function didNotHydrateInstanceWithinSuspenseInstance(parentInstance, instance) {
          {
            var parentNode = parentInstance.parentNode;
            if (parentNode !== null) {
              if (instance.nodeType === ELEMENT_NODE) {
                warnForDeletedHydratableElement(parentNode, instance);
              } else if (instance.nodeType === COMMENT_NODE) ;
              else {
                warnForDeletedHydratableText(parentNode, instance);
              }
            }
          }
        }
        function didNotHydrateInstance(parentType, parentProps, parentInstance, instance, isConcurrentMode) {
          {
            if (isConcurrentMode || parentProps[SUPPRESS_HYDRATION_WARNING$1] !== true) {
              if (instance.nodeType === ELEMENT_NODE) {
                warnForDeletedHydratableElement(parentInstance, instance);
              } else if (instance.nodeType === COMMENT_NODE) ;
              else {
                warnForDeletedHydratableText(parentInstance, instance);
              }
            }
          }
        }
        function didNotFindHydratableInstanceWithinContainer(parentContainer, type, props) {
          {
            warnForInsertedHydratedElement(parentContainer, type);
          }
        }
        function didNotFindHydratableTextInstanceWithinContainer(parentContainer, text) {
          {
            warnForInsertedHydratedText(parentContainer, text);
          }
        }
        function didNotFindHydratableInstanceWithinSuspenseInstance(parentInstance, type, props) {
          {
            var parentNode = parentInstance.parentNode;
            if (parentNode !== null) warnForInsertedHydratedElement(parentNode, type);
          }
        }
        function didNotFindHydratableTextInstanceWithinSuspenseInstance(parentInstance, text) {
          {
            var parentNode = parentInstance.parentNode;
            if (parentNode !== null) warnForInsertedHydratedText(parentNode, text);
          }
        }
        function didNotFindHydratableInstance(parentType, parentProps, parentInstance, type, props, isConcurrentMode) {
          {
            if (isConcurrentMode || parentProps[SUPPRESS_HYDRATION_WARNING$1] !== true) {
              warnForInsertedHydratedElement(parentInstance, type);
            }
          }
        }
        function didNotFindHydratableTextInstance(parentType, parentProps, parentInstance, text, isConcurrentMode) {
          {
            if (isConcurrentMode || parentProps[SUPPRESS_HYDRATION_WARNING$1] !== true) {
              warnForInsertedHydratedText(parentInstance, text);
            }
          }
        }
        function errorHydratingContainer(parentContainer) {
          {
            error("An error occurred during hydration. The server HTML was replaced with client content in <%s>.", parentContainer.nodeName.toLowerCase());
          }
        }
        function preparePortalMount(portalInstance) {
          listenToAllSupportedEvents(portalInstance);
        }
        var randomKey = Math.random().toString(36).slice(2);
        var internalInstanceKey = "__reactFiber$" + randomKey;
        var internalPropsKey = "__reactProps$" + randomKey;
        var internalContainerInstanceKey = "__reactContainer$" + randomKey;
        var internalEventHandlersKey = "__reactEvents$" + randomKey;
        var internalEventHandlerListenersKey = "__reactListeners$" + randomKey;
        var internalEventHandlesSetKey = "__reactHandles$" + randomKey;
        function detachDeletedInstance(node) {
          delete node[internalInstanceKey];
          delete node[internalPropsKey];
          delete node[internalEventHandlersKey];
          delete node[internalEventHandlerListenersKey];
          delete node[internalEventHandlesSetKey];
        }
        function precacheFiberNode(hostInst, node) {
          node[internalInstanceKey] = hostInst;
        }
        function markContainerAsRoot(hostRoot, node) {
          node[internalContainerInstanceKey] = hostRoot;
        }
        function unmarkContainerAsRoot(node) {
          node[internalContainerInstanceKey] = null;
        }
        function isContainerMarkedAsRoot(node) {
          return !!node[internalContainerInstanceKey];
        }
        function getClosestInstanceFromNode(targetNode) {
          var targetInst = targetNode[internalInstanceKey];
          if (targetInst) {
            return targetInst;
          }
          var parentNode = targetNode.parentNode;
          while (parentNode) {
            targetInst = parentNode[internalContainerInstanceKey] || parentNode[internalInstanceKey];
            if (targetInst) {
              var alternate = targetInst.alternate;
              if (targetInst.child !== null || alternate !== null && alternate.child !== null) {
                var suspenseInstance = getParentSuspenseInstance(targetNode);
                while (suspenseInstance !== null) {
                  var targetSuspenseInst = suspenseInstance[internalInstanceKey];
                  if (targetSuspenseInst) {
                    return targetSuspenseInst;
                  }
                  suspenseInstance = getParentSuspenseInstance(suspenseInstance);
                }
              }
              return targetInst;
            }
            targetNode = parentNode;
            parentNode = targetNode.parentNode;
          }
          return null;
        }
        function getInstanceFromNode(node) {
          var inst = node[internalInstanceKey] || node[internalContainerInstanceKey];
          if (inst) {
            if (inst.tag === HostComponent || inst.tag === HostText || inst.tag === SuspenseComponent || inst.tag === HostRoot) {
              return inst;
            } else {
              return null;
            }
          }
          return null;
        }
        function getNodeFromInstance(inst) {
          if (inst.tag === HostComponent || inst.tag === HostText) {
            return inst.stateNode;
          }
          throw new Error("getNodeFromInstance: Invalid argument.");
        }
        function getFiberCurrentPropsFromNode(node) {
          return node[internalPropsKey] || null;
        }
        function updateFiberProps(node, props) {
          node[internalPropsKey] = props;
        }
        function getEventListenerSet(node) {
          var elementListenerSet = node[internalEventHandlersKey];
          if (elementListenerSet === void 0) {
            elementListenerSet = node[internalEventHandlersKey] = /* @__PURE__ */ new Set();
          }
          return elementListenerSet;
        }
        var loggedTypeFailures = {};
        var ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;
        function setCurrentlyValidatingElement(element) {
          {
            if (element) {
              var owner = element._owner;
              var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);
              ReactDebugCurrentFrame$1.setExtraStackFrame(stack);
            } else {
              ReactDebugCurrentFrame$1.setExtraStackFrame(null);
            }
          }
        }
        function checkPropTypes(typeSpecs, values, location, componentName, element) {
          {
            var has2 = Function.call.bind(hasOwnProperty);
            for (var typeSpecName in typeSpecs) {
              if (has2(typeSpecs, typeSpecName)) {
                var error$1 = void 0;
                try {
                  if (typeof typeSpecs[typeSpecName] !== "function") {
                    var err = Error((componentName || "React class") + ": " + location + " type `" + typeSpecName + "` is invalid; it must be a function, usually from the `prop-types` package, but received `" + typeof typeSpecs[typeSpecName] + "`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");
                    err.name = "Invariant Violation";
                    throw err;
                  }
                  error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, "SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED");
                } catch (ex) {
                  error$1 = ex;
                }
                if (error$1 && !(error$1 instanceof Error)) {
                  setCurrentlyValidatingElement(element);
                  error("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).", componentName || "React class", location, typeSpecName, typeof error$1);
                  setCurrentlyValidatingElement(null);
                }
                if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {
                  loggedTypeFailures[error$1.message] = true;
                  setCurrentlyValidatingElement(element);
                  error("Failed %s type: %s", location, error$1.message);
                  setCurrentlyValidatingElement(null);
                }
              }
            }
          }
        }
        var valueStack = [];
        var fiberStack;
        {
          fiberStack = [];
        }
        var index = -1;
        function createCursor(defaultValue) {
          return {
            current: defaultValue
          };
        }
        function pop(cursor, fiber) {
          if (index < 0) {
            {
              error("Unexpected pop.");
            }
            return;
          }
          {
            if (fiber !== fiberStack[index]) {
              error("Unexpected Fiber popped.");
            }
          }
          cursor.current = valueStack[index];
          valueStack[index] = null;
          {
            fiberStack[index] = null;
          }
          index--;
        }
        function push(cursor, value, fiber) {
          index++;
          valueStack[index] = cursor.current;
          {
            fiberStack[index] = fiber;
          }
          cursor.current = value;
        }
        var warnedAboutMissingGetChildContext;
        {
          warnedAboutMissingGetChildContext = {};
        }
        var emptyContextObject = {};
        {
          Object.freeze(emptyContextObject);
        }
        var contextStackCursor = createCursor(emptyContextObject);
        var didPerformWorkStackCursor = createCursor(false);
        var previousContext = emptyContextObject;
        function getUnmaskedContext(workInProgress2, Component, didPushOwnContextIfProvider) {
          {
            if (didPushOwnContextIfProvider && isContextProvider(Component)) {
              return previousContext;
            }
            return contextStackCursor.current;
          }
        }
        function cacheContext(workInProgress2, unmaskedContext, maskedContext) {
          {
            var instance = workInProgress2.stateNode;
            instance.__reactInternalMemoizedUnmaskedChildContext = unmaskedContext;
            instance.__reactInternalMemoizedMaskedChildContext = maskedContext;
          }
        }
        function getMaskedContext(workInProgress2, unmaskedContext) {
          {
            var type = workInProgress2.type;
            var contextTypes = type.contextTypes;
            if (!contextTypes) {
              return emptyContextObject;
            }
            var instance = workInProgress2.stateNode;
            if (instance && instance.__reactInternalMemoizedUnmaskedChildContext === unmaskedContext) {
              return instance.__reactInternalMemoizedMaskedChildContext;
            }
            var context = {};
            for (var key in contextTypes) {
              context[key] = unmaskedContext[key];
            }
            {
              var name = getComponentNameFromFiber(workInProgress2) || "Unknown";
              checkPropTypes(contextTypes, context, "context", name);
            }
            if (instance) {
              cacheContext(workInProgress2, unmaskedContext, context);
            }
            return context;
          }
        }
        function hasContextChanged() {
          {
            return didPerformWorkStackCursor.current;
          }
        }
        function isContextProvider(type) {
          {
            var childContextTypes = type.childContextTypes;
            return childContextTypes !== null && childContextTypes !== void 0;
          }
        }
        function popContext(fiber) {
          {
            pop(didPerformWorkStackCursor, fiber);
            pop(contextStackCursor, fiber);
          }
        }
        function popTopLevelContextObject(fiber) {
          {
            pop(didPerformWorkStackCursor, fiber);
            pop(contextStackCursor, fiber);
          }
        }
        function pushTopLevelContextObject(fiber, context, didChange) {
          {
            if (contextStackCursor.current !== emptyContextObject) {
              throw new Error("Unexpected context found on stack. This error is likely caused by a bug in React. Please file an issue.");
            }
            push(contextStackCursor, context, fiber);
            push(didPerformWorkStackCursor, didChange, fiber);
          }
        }
        function processChildContext(fiber, type, parentContext) {
          {
            var instance = fiber.stateNode;
            var childContextTypes = type.childContextTypes;
            if (typeof instance.getChildContext !== "function") {
              {
                var componentName = getComponentNameFromFiber(fiber) || "Unknown";
                if (!warnedAboutMissingGetChildContext[componentName]) {
                  warnedAboutMissingGetChildContext[componentName] = true;
                  error("%s.childContextTypes is specified but there is no getChildContext() method on the instance. You can either define getChildContext() on %s or remove childContextTypes from it.", componentName, componentName);
                }
              }
              return parentContext;
            }
            var childContext = instance.getChildContext();
            for (var contextKey in childContext) {
              if (!(contextKey in childContextTypes)) {
                throw new Error((getComponentNameFromFiber(fiber) || "Unknown") + '.getChildContext(): key "' + contextKey + '" is not defined in childContextTypes.');
              }
            }
            {
              var name = getComponentNameFromFiber(fiber) || "Unknown";
              checkPropTypes(childContextTypes, childContext, "child context", name);
            }
            return assign({}, parentContext, childContext);
          }
        }
        function pushContextProvider(workInProgress2) {
          {
            var instance = workInProgress2.stateNode;
            var memoizedMergedChildContext = instance && instance.__reactInternalMemoizedMergedChildContext || emptyContextObject;
            previousContext = contextStackCursor.current;
            push(contextStackCursor, memoizedMergedChildContext, workInProgress2);
            push(didPerformWorkStackCursor, didPerformWorkStackCursor.current, workInProgress2);
            return true;
          }
        }
        function invalidateContextProvider(workInProgress2, type, didChange) {
          {
            var instance = workInProgress2.stateNode;
            if (!instance) {
              throw new Error("Expected to have an instance by this point. This error is likely caused by a bug in React. Please file an issue.");
            }
            if (didChange) {
              var mergedContext = processChildContext(workInProgress2, type, previousContext);
              instance.__reactInternalMemoizedMergedChildContext = mergedContext;
              pop(didPerformWorkStackCursor, workInProgress2);
              pop(contextStackCursor, workInProgress2);
              push(contextStackCursor, mergedContext, workInProgress2);
              push(didPerformWorkStackCursor, didChange, workInProgress2);
            } else {
              pop(didPerformWorkStackCursor, workInProgress2);
              push(didPerformWorkStackCursor, didChange, workInProgress2);
            }
          }
        }
        function findCurrentUnmaskedContext(fiber) {
          {
            if (!isFiberMounted(fiber) || fiber.tag !== ClassComponent) {
              throw new Error("Expected subtree parent to be a mounted class component. This error is likely caused by a bug in React. Please file an issue.");
            }
            var node = fiber;
            do {
              switch (node.tag) {
                case HostRoot:
                  return node.stateNode.context;
                case ClassComponent: {
                  var Component = node.type;
                  if (isContextProvider(Component)) {
                    return node.stateNode.__reactInternalMemoizedMergedChildContext;
                  }
                  break;
                }
              }
              node = node.return;
            } while (node !== null);
            throw new Error("Found unexpected detached subtree parent. This error is likely caused by a bug in React. Please file an issue.");
          }
        }
        var LegacyRoot = 0;
        var ConcurrentRoot = 1;
        var syncQueue = null;
        var includesLegacySyncCallbacks = false;
        var isFlushingSyncQueue = false;
        function scheduleSyncCallback(callback) {
          if (syncQueue === null) {
            syncQueue = [callback];
          } else {
            syncQueue.push(callback);
          }
        }
        function scheduleLegacySyncCallback(callback) {
          includesLegacySyncCallbacks = true;
          scheduleSyncCallback(callback);
        }
        function flushSyncCallbacksOnlyInLegacyMode() {
          if (includesLegacySyncCallbacks) {
            flushSyncCallbacks();
          }
        }
        function flushSyncCallbacks() {
          if (!isFlushingSyncQueue && syncQueue !== null) {
            isFlushingSyncQueue = true;
            var i = 0;
            var previousUpdatePriority = getCurrentUpdatePriority();
            try {
              var isSync = true;
              var queue = syncQueue;
              setCurrentUpdatePriority(DiscreteEventPriority);
              for (; i < queue.length; i++) {
                var callback = queue[i];
                do {
                  callback = callback(isSync);
                } while (callback !== null);
              }
              syncQueue = null;
              includesLegacySyncCallbacks = false;
            } catch (error2) {
              if (syncQueue !== null) {
                syncQueue = syncQueue.slice(i + 1);
              }
              scheduleCallback(ImmediatePriority, flushSyncCallbacks);
              throw error2;
            } finally {
              setCurrentUpdatePriority(previousUpdatePriority);
              isFlushingSyncQueue = false;
            }
          }
          return null;
        }
        var forkStack = [];
        var forkStackIndex = 0;
        var treeForkProvider = null;
        var treeForkCount = 0;
        var idStack = [];
        var idStackIndex = 0;
        var treeContextProvider = null;
        var treeContextId = 1;
        var treeContextOverflow = "";
        function isForkedChild(workInProgress2) {
          warnIfNotHydrating();
          return (workInProgress2.flags & Forked) !== NoFlags;
        }
        function getForksAtLevel(workInProgress2) {
          warnIfNotHydrating();
          return treeForkCount;
        }
        function getTreeId() {
          var overflow = treeContextOverflow;
          var idWithLeadingBit = treeContextId;
          var id = idWithLeadingBit & ~getLeadingBit(idWithLeadingBit);
          return id.toString(32) + overflow;
        }
        function pushTreeFork(workInProgress2, totalChildren) {
          warnIfNotHydrating();
          forkStack[forkStackIndex++] = treeForkCount;
          forkStack[forkStackIndex++] = treeForkProvider;
          treeForkProvider = workInProgress2;
          treeForkCount = totalChildren;
        }
        function pushTreeId(workInProgress2, totalChildren, index2) {
          warnIfNotHydrating();
          idStack[idStackIndex++] = treeContextId;
          idStack[idStackIndex++] = treeContextOverflow;
          idStack[idStackIndex++] = treeContextProvider;
          treeContextProvider = workInProgress2;
          var baseIdWithLeadingBit = treeContextId;
          var baseOverflow = treeContextOverflow;
          var baseLength = getBitLength(baseIdWithLeadingBit) - 1;
          var baseId = baseIdWithLeadingBit & ~(1 << baseLength);
          var slot = index2 + 1;
          var length = getBitLength(totalChildren) + baseLength;
          if (length > 30) {
            var numberOfOverflowBits = baseLength - baseLength % 5;
            var newOverflowBits = (1 << numberOfOverflowBits) - 1;
            var newOverflow = (baseId & newOverflowBits).toString(32);
            var restOfBaseId = baseId >> numberOfOverflowBits;
            var restOfBaseLength = baseLength - numberOfOverflowBits;
            var restOfLength = getBitLength(totalChildren) + restOfBaseLength;
            var restOfNewBits = slot << restOfBaseLength;
            var id = restOfNewBits | restOfBaseId;
            var overflow = newOverflow + baseOverflow;
            treeContextId = 1 << restOfLength | id;
            treeContextOverflow = overflow;
          } else {
            var newBits = slot << baseLength;
            var _id = newBits | baseId;
            var _overflow = baseOverflow;
            treeContextId = 1 << length | _id;
            treeContextOverflow = _overflow;
          }
        }
        function pushMaterializedTreeId(workInProgress2) {
          warnIfNotHydrating();
          var returnFiber = workInProgress2.return;
          if (returnFiber !== null) {
            var numberOfForks = 1;
            var slotIndex = 0;
            pushTreeFork(workInProgress2, numberOfForks);
            pushTreeId(workInProgress2, numberOfForks, slotIndex);
          }
        }
        function getBitLength(number) {
          return 32 - clz32(number);
        }
        function getLeadingBit(id) {
          return 1 << getBitLength(id) - 1;
        }
        function popTreeContext(workInProgress2) {
          while (workInProgress2 === treeForkProvider) {
            treeForkProvider = forkStack[--forkStackIndex];
            forkStack[forkStackIndex] = null;
            treeForkCount = forkStack[--forkStackIndex];
            forkStack[forkStackIndex] = null;
          }
          while (workInProgress2 === treeContextProvider) {
            treeContextProvider = idStack[--idStackIndex];
            idStack[idStackIndex] = null;
            treeContextOverflow = idStack[--idStackIndex];
            idStack[idStackIndex] = null;
            treeContextId = idStack[--idStackIndex];
            idStack[idStackIndex] = null;
          }
        }
        function getSuspendedTreeContext() {
          warnIfNotHydrating();
          if (treeContextProvider !== null) {
            return {
              id: treeContextId,
              overflow: treeContextOverflow
            };
          } else {
            return null;
          }
        }
        function restoreSuspendedTreeContext(workInProgress2, suspendedContext) {
          warnIfNotHydrating();
          idStack[idStackIndex++] = treeContextId;
          idStack[idStackIndex++] = treeContextOverflow;
          idStack[idStackIndex++] = treeContextProvider;
          treeContextId = suspendedContext.id;
          treeContextOverflow = suspendedContext.overflow;
          treeContextProvider = workInProgress2;
        }
        function warnIfNotHydrating() {
          {
            if (!getIsHydrating()) {
              error("Expected to be hydrating. This is a bug in React. Please file an issue.");
            }
          }
        }
        var hydrationParentFiber = null;
        var nextHydratableInstance = null;
        var isHydrating = false;
        var didSuspendOrErrorDEV = false;
        var hydrationErrors = null;
        function warnIfHydrating() {
          {
            if (isHydrating) {
              error("We should not be hydrating here. This is a bug in React. Please file a bug.");
            }
          }
        }
        function markDidThrowWhileHydratingDEV() {
          {
            didSuspendOrErrorDEV = true;
          }
        }
        function didSuspendOrErrorWhileHydratingDEV() {
          {
            return didSuspendOrErrorDEV;
          }
        }
        function enterHydrationState(fiber) {
          var parentInstance = fiber.stateNode.containerInfo;
          nextHydratableInstance = getFirstHydratableChildWithinContainer(parentInstance);
          hydrationParentFiber = fiber;
          isHydrating = true;
          hydrationErrors = null;
          didSuspendOrErrorDEV = false;
          return true;
        }
        function reenterHydrationStateFromDehydratedSuspenseInstance(fiber, suspenseInstance, treeContext) {
          nextHydratableInstance = getFirstHydratableChildWithinSuspenseInstance(suspenseInstance);
          hydrationParentFiber = fiber;
          isHydrating = true;
          hydrationErrors = null;
          didSuspendOrErrorDEV = false;
          if (treeContext !== null) {
            restoreSuspendedTreeContext(fiber, treeContext);
          }
          return true;
        }
        function warnUnhydratedInstance(returnFiber, instance) {
          {
            switch (returnFiber.tag) {
              case HostRoot: {
                didNotHydrateInstanceWithinContainer(returnFiber.stateNode.containerInfo, instance);
                break;
              }
              case HostComponent: {
                var isConcurrentMode = (returnFiber.mode & ConcurrentMode) !== NoMode;
                didNotHydrateInstance(
                  returnFiber.type,
                  returnFiber.memoizedProps,
                  returnFiber.stateNode,
                  instance,
                  // TODO: Delete this argument when we remove the legacy root API.
                  isConcurrentMode
                );
                break;
              }
              case SuspenseComponent: {
                var suspenseState = returnFiber.memoizedState;
                if (suspenseState.dehydrated !== null) didNotHydrateInstanceWithinSuspenseInstance(suspenseState.dehydrated, instance);
                break;
              }
            }
          }
        }
        function deleteHydratableInstance(returnFiber, instance) {
          warnUnhydratedInstance(returnFiber, instance);
          var childToDelete = createFiberFromHostInstanceForDeletion();
          childToDelete.stateNode = instance;
          childToDelete.return = returnFiber;
          var deletions = returnFiber.deletions;
          if (deletions === null) {
            returnFiber.deletions = [childToDelete];
            returnFiber.flags |= ChildDeletion;
          } else {
            deletions.push(childToDelete);
          }
        }
        function warnNonhydratedInstance(returnFiber, fiber) {
          {
            if (didSuspendOrErrorDEV) {
              return;
            }
            switch (returnFiber.tag) {
              case HostRoot: {
                var parentContainer = returnFiber.stateNode.containerInfo;
                switch (fiber.tag) {
                  case HostComponent:
                    var type = fiber.type;
                    var props = fiber.pendingProps;
                    didNotFindHydratableInstanceWithinContainer(parentContainer, type);
                    break;
                  case HostText:
                    var text = fiber.pendingProps;
                    didNotFindHydratableTextInstanceWithinContainer(parentContainer, text);
                    break;
                }
                break;
              }
              case HostComponent: {
                var parentType = returnFiber.type;
                var parentProps = returnFiber.memoizedProps;
                var parentInstance = returnFiber.stateNode;
                switch (fiber.tag) {
                  case HostComponent: {
                    var _type = fiber.type;
                    var _props = fiber.pendingProps;
                    var isConcurrentMode = (returnFiber.mode & ConcurrentMode) !== NoMode;
                    didNotFindHydratableInstance(
                      parentType,
                      parentProps,
                      parentInstance,
                      _type,
                      _props,
                      // TODO: Delete this argument when we remove the legacy root API.
                      isConcurrentMode
                    );
                    break;
                  }
                  case HostText: {
                    var _text = fiber.pendingProps;
                    var _isConcurrentMode = (returnFiber.mode & ConcurrentMode) !== NoMode;
                    didNotFindHydratableTextInstance(
                      parentType,
                      parentProps,
                      parentInstance,
                      _text,
                      // TODO: Delete this argument when we remove the legacy root API.
                      _isConcurrentMode
                    );
                    break;
                  }
                }
                break;
              }
              case SuspenseComponent: {
                var suspenseState = returnFiber.memoizedState;
                var _parentInstance = suspenseState.dehydrated;
                if (_parentInstance !== null) switch (fiber.tag) {
                  case HostComponent:
                    var _type2 = fiber.type;
                    var _props2 = fiber.pendingProps;
                    didNotFindHydratableInstanceWithinSuspenseInstance(_parentInstance, _type2);
                    break;
                  case HostText:
                    var _text2 = fiber.pendingProps;
                    didNotFindHydratableTextInstanceWithinSuspenseInstance(_parentInstance, _text2);
                    break;
                }
                break;
              }
              default:
                return;
            }
          }
        }
        function insertNonHydratedInstance(returnFiber, fiber) {
          fiber.flags = fiber.flags & ~Hydrating | Placement;
          warnNonhydratedInstance(returnFiber, fiber);
        }
        function tryHydrate(fiber, nextInstance) {
          switch (fiber.tag) {
            case HostComponent: {
              var type = fiber.type;
              var props = fiber.pendingProps;
              var instance = canHydrateInstance(nextInstance, type);
              if (instance !== null) {
                fiber.stateNode = instance;
                hydrationParentFiber = fiber;
                nextHydratableInstance = getFirstHydratableChild(instance);
                return true;
              }
              return false;
            }
            case HostText: {
              var text = fiber.pendingProps;
              var textInstance = canHydrateTextInstance(nextInstance, text);
              if (textInstance !== null) {
                fiber.stateNode = textInstance;
                hydrationParentFiber = fiber;
                nextHydratableInstance = null;
                return true;
              }
              return false;
            }
            case SuspenseComponent: {
              var suspenseInstance = canHydrateSuspenseInstance(nextInstance);
              if (suspenseInstance !== null) {
                var suspenseState = {
                  dehydrated: suspenseInstance,
                  treeContext: getSuspendedTreeContext(),
                  retryLane: OffscreenLane
                };
                fiber.memoizedState = suspenseState;
                var dehydratedFragment = createFiberFromDehydratedFragment(suspenseInstance);
                dehydratedFragment.return = fiber;
                fiber.child = dehydratedFragment;
                hydrationParentFiber = fiber;
                nextHydratableInstance = null;
                return true;
              }
              return false;
            }
            default:
              return false;
          }
        }
        function shouldClientRenderOnMismatch(fiber) {
          return (fiber.mode & ConcurrentMode) !== NoMode && (fiber.flags & DidCapture) === NoFlags;
        }
        function throwOnHydrationMismatch(fiber) {
          throw new Error("Hydration failed because the initial UI does not match what was rendered on the server.");
        }
        function tryToClaimNextHydratableInstance(fiber) {
          if (!isHydrating) {
            return;
          }
          var nextInstance = nextHydratableInstance;
          if (!nextInstance) {
            if (shouldClientRenderOnMismatch(fiber)) {
              warnNonhydratedInstance(hydrationParentFiber, fiber);
              throwOnHydrationMismatch();
            }
            insertNonHydratedInstance(hydrationParentFiber, fiber);
            isHydrating = false;
            hydrationParentFiber = fiber;
            return;
          }
          var firstAttemptedInstance = nextInstance;
          if (!tryHydrate(fiber, nextInstance)) {
            if (shouldClientRenderOnMismatch(fiber)) {
              warnNonhydratedInstance(hydrationParentFiber, fiber);
              throwOnHydrationMismatch();
            }
            nextInstance = getNextHydratableSibling(firstAttemptedInstance);
            var prevHydrationParentFiber = hydrationParentFiber;
            if (!nextInstance || !tryHydrate(fiber, nextInstance)) {
              insertNonHydratedInstance(hydrationParentFiber, fiber);
              isHydrating = false;
              hydrationParentFiber = fiber;
              return;
            }
            deleteHydratableInstance(prevHydrationParentFiber, firstAttemptedInstance);
          }
        }
        function prepareToHydrateHostInstance(fiber, rootContainerInstance, hostContext) {
          var instance = fiber.stateNode;
          var shouldWarnIfMismatchDev = !didSuspendOrErrorDEV;
          var updatePayload = hydrateInstance(instance, fiber.type, fiber.memoizedProps, rootContainerInstance, hostContext, fiber, shouldWarnIfMismatchDev);
          fiber.updateQueue = updatePayload;
          if (updatePayload !== null) {
            return true;
          }
          return false;
        }
        function prepareToHydrateHostTextInstance(fiber) {
          var textInstance = fiber.stateNode;
          var textContent = fiber.memoizedProps;
          var shouldUpdate = hydrateTextInstance(textInstance, textContent, fiber);
          if (shouldUpdate) {
            var returnFiber = hydrationParentFiber;
            if (returnFiber !== null) {
              switch (returnFiber.tag) {
                case HostRoot: {
                  var parentContainer = returnFiber.stateNode.containerInfo;
                  var isConcurrentMode = (returnFiber.mode & ConcurrentMode) !== NoMode;
                  didNotMatchHydratedContainerTextInstance(
                    parentContainer,
                    textInstance,
                    textContent,
                    // TODO: Delete this argument when we remove the legacy root API.
                    isConcurrentMode
                  );
                  break;
                }
                case HostComponent: {
                  var parentType = returnFiber.type;
                  var parentProps = returnFiber.memoizedProps;
                  var parentInstance = returnFiber.stateNode;
                  var _isConcurrentMode2 = (returnFiber.mode & ConcurrentMode) !== NoMode;
                  didNotMatchHydratedTextInstance(
                    parentType,
                    parentProps,
                    parentInstance,
                    textInstance,
                    textContent,
                    // TODO: Delete this argument when we remove the legacy root API.
                    _isConcurrentMode2
                  );
                  break;
                }
              }
            }
          }
          return shouldUpdate;
        }
        function prepareToHydrateHostSuspenseInstance(fiber) {
          var suspenseState = fiber.memoizedState;
          var suspenseInstance = suspenseState !== null ? suspenseState.dehydrated : null;
          if (!suspenseInstance) {
            throw new Error("Expected to have a hydrated suspense instance. This error is likely caused by a bug in React. Please file an issue.");
          }
          hydrateSuspenseInstance(suspenseInstance, fiber);
        }
        function skipPastDehydratedSuspenseInstance(fiber) {
          var suspenseState = fiber.memoizedState;
          var suspenseInstance = suspenseState !== null ? suspenseState.dehydrated : null;
          if (!suspenseInstance) {
            throw new Error("Expected to have a hydrated suspense instance. This error is likely caused by a bug in React. Please file an issue.");
          }
          return getNextHydratableInstanceAfterSuspenseInstance(suspenseInstance);
        }
        function popToNextHostParent(fiber) {
          var parent = fiber.return;
          while (parent !== null && parent.tag !== HostComponent && parent.tag !== HostRoot && parent.tag !== SuspenseComponent) {
            parent = parent.return;
          }
          hydrationParentFiber = parent;
        }
        function popHydrationState(fiber) {
          if (fiber !== hydrationParentFiber) {
            return false;
          }
          if (!isHydrating) {
            popToNextHostParent(fiber);
            isHydrating = true;
            return false;
          }
          if (fiber.tag !== HostRoot && (fiber.tag !== HostComponent || shouldDeleteUnhydratedTailInstances(fiber.type) && !shouldSetTextContent(fiber.type, fiber.memoizedProps))) {
            var nextInstance = nextHydratableInstance;
            if (nextInstance) {
              if (shouldClientRenderOnMismatch(fiber)) {
                warnIfUnhydratedTailNodes(fiber);
                throwOnHydrationMismatch();
              } else {
                while (nextInstance) {
                  deleteHydratableInstance(fiber, nextInstance);
                  nextInstance = getNextHydratableSibling(nextInstance);
                }
              }
            }
          }
          popToNextHostParent(fiber);
          if (fiber.tag === SuspenseComponent) {
            nextHydratableInstance = skipPastDehydratedSuspenseInstance(fiber);
          } else {
            nextHydratableInstance = hydrationParentFiber ? getNextHydratableSibling(fiber.stateNode) : null;
          }
          return true;
        }
        function hasUnhydratedTailNodes() {
          return isHydrating && nextHydratableInstance !== null;
        }
        function warnIfUnhydratedTailNodes(fiber) {
          var nextInstance = nextHydratableInstance;
          while (nextInstance) {
            warnUnhydratedInstance(fiber, nextInstance);
            nextInstance = getNextHydratableSibling(nextInstance);
          }
        }
        function resetHydrationState() {
          hydrationParentFiber = null;
          nextHydratableInstance = null;
          isHydrating = false;
          didSuspendOrErrorDEV = false;
        }
        function upgradeHydrationErrorsToRecoverable() {
          if (hydrationErrors !== null) {
            queueRecoverableErrors(hydrationErrors);
            hydrationErrors = null;
          }
        }
        function getIsHydrating() {
          return isHydrating;
        }
        function queueHydrationError(error2) {
          if (hydrationErrors === null) {
            hydrationErrors = [error2];
          } else {
            hydrationErrors.push(error2);
          }
        }
        var ReactCurrentBatchConfig$1 = ReactSharedInternals.ReactCurrentBatchConfig;
        var NoTransition = null;
        function requestCurrentTransition() {
          return ReactCurrentBatchConfig$1.transition;
        }
        var ReactStrictModeWarnings = {
          recordUnsafeLifecycleWarnings: function(fiber, instance) {
          },
          flushPendingUnsafeLifecycleWarnings: function() {
          },
          recordLegacyContextWarning: function(fiber, instance) {
          },
          flushLegacyContextWarning: function() {
          },
          discardPendingWarnings: function() {
          }
        };
        {
          var findStrictRoot = function(fiber) {
            var maybeStrictRoot = null;
            var node = fiber;
            while (node !== null) {
              if (node.mode & StrictLegacyMode) {
                maybeStrictRoot = node;
              }
              node = node.return;
            }
            return maybeStrictRoot;
          };
          var setToSortedString = function(set2) {
            var array = [];
            set2.forEach(function(value) {
              array.push(value);
            });
            return array.sort().join(", ");
          };
          var pendingComponentWillMountWarnings = [];
          var pendingUNSAFE_ComponentWillMountWarnings = [];
          var pendingComponentWillReceivePropsWarnings = [];
          var pendingUNSAFE_ComponentWillReceivePropsWarnings = [];
          var pendingComponentWillUpdateWarnings = [];
          var pendingUNSAFE_ComponentWillUpdateWarnings = [];
          var didWarnAboutUnsafeLifecycles = /* @__PURE__ */ new Set();
          ReactStrictModeWarnings.recordUnsafeLifecycleWarnings = function(fiber, instance) {
            if (didWarnAboutUnsafeLifecycles.has(fiber.type)) {
              return;
            }
            if (typeof instance.componentWillMount === "function" && // Don't warn about react-lifecycles-compat polyfilled components.
            instance.componentWillMount.__suppressDeprecationWarning !== true) {
              pendingComponentWillMountWarnings.push(fiber);
            }
            if (fiber.mode & StrictLegacyMode && typeof instance.UNSAFE_componentWillMount === "function") {
              pendingUNSAFE_ComponentWillMountWarnings.push(fiber);
            }
            if (typeof instance.componentWillReceiveProps === "function" && instance.componentWillReceiveProps.__suppressDeprecationWarning !== true) {
              pendingComponentWillReceivePropsWarnings.push(fiber);
            }
            if (fiber.mode & StrictLegacyMode && typeof instance.UNSAFE_componentWillReceiveProps === "function") {
              pendingUNSAFE_ComponentWillReceivePropsWarnings.push(fiber);
            }
            if (typeof instance.componentWillUpdate === "function" && instance.componentWillUpdate.__suppressDeprecationWarning !== true) {
              pendingComponentWillUpdateWarnings.push(fiber);
            }
            if (fiber.mode & StrictLegacyMode && typeof instance.UNSAFE_componentWillUpdate === "function") {
              pendingUNSAFE_ComponentWillUpdateWarnings.push(fiber);
            }
          };
          ReactStrictModeWarnings.flushPendingUnsafeLifecycleWarnings = function() {
            var componentWillMountUniqueNames = /* @__PURE__ */ new Set();
            if (pendingComponentWillMountWarnings.length > 0) {
              pendingComponentWillMountWarnings.forEach(function(fiber) {
                componentWillMountUniqueNames.add(getComponentNameFromFiber(fiber) || "Component");
                didWarnAboutUnsafeLifecycles.add(fiber.type);
              });
              pendingComponentWillMountWarnings = [];
            }
            var UNSAFE_componentWillMountUniqueNames = /* @__PURE__ */ new Set();
            if (pendingUNSAFE_ComponentWillMountWarnings.length > 0) {
              pendingUNSAFE_ComponentWillMountWarnings.forEach(function(fiber) {
                UNSAFE_componentWillMountUniqueNames.add(getComponentNameFromFiber(fiber) || "Component");
                didWarnAboutUnsafeLifecycles.add(fiber.type);
              });
              pendingUNSAFE_ComponentWillMountWarnings = [];
            }
            var componentWillReceivePropsUniqueNames = /* @__PURE__ */ new Set();
            if (pendingComponentWillReceivePropsWarnings.length > 0) {
              pendingComponentWillReceivePropsWarnings.forEach(function(fiber) {
                componentWillReceivePropsUniqueNames.add(getComponentNameFromFiber(fiber) || "Component");
                didWarnAboutUnsafeLifecycles.add(fiber.type);
              });
              pendingComponentWillReceivePropsWarnings = [];
            }
            var UNSAFE_componentWillReceivePropsUniqueNames = /* @__PURE__ */ new Set();
            if (pendingUNSAFE_ComponentWillReceivePropsWarnings.length > 0) {
              pendingUNSAFE_ComponentWillReceivePropsWarnings.forEach(function(fiber) {
                UNSAFE_componentWillReceivePropsUniqueNames.add(getComponentNameFromFiber(fiber) || "Component");
                didWarnAboutUnsafeLifecycles.add(fiber.type);
              });
              pendingUNSAFE_ComponentWillReceivePropsWarnings = [];
            }
            var componentWillUpdateUniqueNames = /* @__PURE__ */ new Set();
            if (pendingComponentWillUpdateWarnings.length > 0) {
              pendingComponentWillUpdateWarnings.forEach(function(fiber) {
                componentWillUpdateUniqueNames.add(getComponentNameFromFiber(fiber) || "Component");
                didWarnAboutUnsafeLifecycles.add(fiber.type);
              });
              pendingComponentWillUpdateWarnings = [];
            }
            var UNSAFE_componentWillUpdateUniqueNames = /* @__PURE__ */ new Set();
            if (pendingUNSAFE_ComponentWillUpdateWarnings.length > 0) {
              pendingUNSAFE_ComponentWillUpdateWarnings.forEach(function(fiber) {
                UNSAFE_componentWillUpdateUniqueNames.add(getComponentNameFromFiber(fiber) || "Component");
                didWarnAboutUnsafeLifecycles.add(fiber.type);
              });
              pendingUNSAFE_ComponentWillUpdateWarnings = [];
            }
            if (UNSAFE_componentWillMountUniqueNames.size > 0) {
              var sortedNames = setToSortedString(UNSAFE_componentWillMountUniqueNames);
              error("Using UNSAFE_componentWillMount in strict mode is not recommended and may indicate bugs in your code. See https://reactjs.org/link/unsafe-component-lifecycles for details.\n\n* Move code with side effects to componentDidMount, and set initial state in the constructor.\n\nPlease update the following components: %s", sortedNames);
            }
            if (UNSAFE_componentWillReceivePropsUniqueNames.size > 0) {
              var _sortedNames = setToSortedString(UNSAFE_componentWillReceivePropsUniqueNames);
              error("Using UNSAFE_componentWillReceiveProps in strict mode is not recommended and may indicate bugs in your code. See https://reactjs.org/link/unsafe-component-lifecycles for details.\n\n* Move data fetching code or side effects to componentDidUpdate.\n* If you're updating state whenever props change, refactor your code to use memoization techniques or move it to static getDerivedStateFromProps. Learn more at: https://reactjs.org/link/derived-state\n\nPlease update the following components: %s", _sortedNames);
            }
            if (UNSAFE_componentWillUpdateUniqueNames.size > 0) {
              var _sortedNames2 = setToSortedString(UNSAFE_componentWillUpdateUniqueNames);
              error("Using UNSAFE_componentWillUpdate in strict mode is not recommended and may indicate bugs in your code. See https://reactjs.org/link/unsafe-component-lifecycles for details.\n\n* Move data fetching code or side effects to componentDidUpdate.\n\nPlease update the following components: %s", _sortedNames2);
            }
            if (componentWillMountUniqueNames.size > 0) {
              var _sortedNames3 = setToSortedString(componentWillMountUniqueNames);
              warn("componentWillMount has been renamed, and is not recommended for use. See https://reactjs.org/link/unsafe-component-lifecycles for details.\n\n* Move code with side effects to componentDidMount, and set initial state in the constructor.\n* Rename componentWillMount to UNSAFE_componentWillMount to suppress this warning in non-strict mode. In React 18.x, only the UNSAFE_ name will work. To rename all deprecated lifecycles to their new names, you can run `npx react-codemod rename-unsafe-lifecycles` in your project source folder.\n\nPlease update the following components: %s", _sortedNames3);
            }
            if (componentWillReceivePropsUniqueNames.size > 0) {
              var _sortedNames4 = setToSortedString(componentWillReceivePropsUniqueNames);
              warn("componentWillReceiveProps has been renamed, and is not recommended for use. See https://reactjs.org/link/unsafe-component-lifecycles for details.\n\n* Move data fetching code or side effects to componentDidUpdate.\n* If you're updating state whenever props change, refactor your code to use memoization techniques or move it to static getDerivedStateFromProps. Learn more at: https://reactjs.org/link/derived-state\n* Rename componentWillReceiveProps to UNSAFE_componentWillReceiveProps to suppress this warning in non-strict mode. In React 18.x, only the UNSAFE_ name will work. To rename all deprecated lifecycles to their new names, you can run `npx react-codemod rename-unsafe-lifecycles` in your project source folder.\n\nPlease update the following components: %s", _sortedNames4);
            }
            if (componentWillUpdateUniqueNames.size > 0) {
              var _sortedNames5 = setToSortedString(componentWillUpdateUniqueNames);
              warn("componentWillUpdate has been renamed, and is not recommended for use. See https://reactjs.org/link/unsafe-component-lifecycles for details.\n\n* Move data fetching code or side effects to componentDidUpdate.\n* Rename componentWillUpdate to UNSAFE_componentWillUpdate to suppress this warning in non-strict mode. In React 18.x, only the UNSAFE_ name will work. To rename all deprecated lifecycles to their new names, you can run `npx react-codemod rename-unsafe-lifecycles` in your project source folder.\n\nPlease update the following components: %s", _sortedNames5);
            }
          };
          var pendingLegacyContextWarning = /* @__PURE__ */ new Map();
          var didWarnAboutLegacyContext = /* @__PURE__ */ new Set();
          ReactStrictModeWarnings.recordLegacyContextWarning = function(fiber, instance) {
            var strictRoot = findStrictRoot(fiber);
            if (strictRoot === null) {
              error("Expected to find a StrictMode component in a strict mode tree. This error is likely caused by a bug in React. Please file an issue.");
              return;
            }
            if (didWarnAboutLegacyContext.has(fiber.type)) {
              return;
            }
            var warningsForRoot = pendingLegacyContextWarning.get(strictRoot);
            if (fiber.type.contextTypes != null || fiber.type.childContextTypes != null || instance !== null && typeof instance.getChildContext === "function") {
              if (warningsForRoot === void 0) {
                warningsForRoot = [];
                pendingLegacyContextWarning.set(strictRoot, warningsForRoot);
              }
              warningsForRoot.push(fiber);
            }
          };
          ReactStrictModeWarnings.flushLegacyContextWarning = function() {
            pendingLegacyContextWarning.forEach(function(fiberArray, strictRoot) {
              if (fiberArray.length === 0) {
                return;
              }
              var firstFiber = fiberArray[0];
              var uniqueNames = /* @__PURE__ */ new Set();
              fiberArray.forEach(function(fiber) {
                uniqueNames.add(getComponentNameFromFiber(fiber) || "Component");
                didWarnAboutLegacyContext.add(fiber.type);
              });
              var sortedNames = setToSortedString(uniqueNames);
              try {
                setCurrentFiber(firstFiber);
                error("Legacy context API has been detected within a strict-mode tree.\n\nThe old API will be supported in all 16.x releases, but applications using it should migrate to the new version.\n\nPlease update the following components: %s\n\nLearn more about this warning here: https://reactjs.org/link/legacy-context", sortedNames);
              } finally {
                resetCurrentFiber();
              }
            });
          };
          ReactStrictModeWarnings.discardPendingWarnings = function() {
            pendingComponentWillMountWarnings = [];
            pendingUNSAFE_ComponentWillMountWarnings = [];
            pendingComponentWillReceivePropsWarnings = [];
            pendingUNSAFE_ComponentWillReceivePropsWarnings = [];
            pendingComponentWillUpdateWarnings = [];
            pendingUNSAFE_ComponentWillUpdateWarnings = [];
            pendingLegacyContextWarning = /* @__PURE__ */ new Map();
          };
        }
        var didWarnAboutMaps;
        var didWarnAboutGenerators;
        var didWarnAboutStringRefs;
        var ownerHasKeyUseWarning;
        var ownerHasFunctionTypeWarning;
        var warnForMissingKey = function(child, returnFiber) {
        };
        {
          didWarnAboutMaps = false;
          didWarnAboutGenerators = false;
          didWarnAboutStringRefs = {};
          ownerHasKeyUseWarning = {};
          ownerHasFunctionTypeWarning = {};
          warnForMissingKey = function(child, returnFiber) {
            if (child === null || typeof child !== "object") {
              return;
            }
            if (!child._store || child._store.validated || child.key != null) {
              return;
            }
            if (typeof child._store !== "object") {
              throw new Error("React Component in warnForMissingKey should have a _store. This error is likely caused by a bug in React. Please file an issue.");
            }
            child._store.validated = true;
            var componentName = getComponentNameFromFiber(returnFiber) || "Component";
            if (ownerHasKeyUseWarning[componentName]) {
              return;
            }
            ownerHasKeyUseWarning[componentName] = true;
            error('Each child in a list should have a unique "key" prop. See https://reactjs.org/link/warning-keys for more information.');
          };
        }
        function isReactClass(type) {
          return type.prototype && type.prototype.isReactComponent;
        }
        function coerceRef(returnFiber, current2, element) {
          var mixedRef = element.ref;
          if (mixedRef !== null && typeof mixedRef !== "function" && typeof mixedRef !== "object") {
            {
              if ((returnFiber.mode & StrictLegacyMode || warnAboutStringRefs) && // We warn in ReactElement.js if owner and self are equal for string refs
              // because these cannot be automatically converted to an arrow function
              // using a codemod. Therefore, we don't have to warn about string refs again.
              !(element._owner && element._self && element._owner.stateNode !== element._self) && // Will already throw with "Function components cannot have string refs"
              !(element._owner && element._owner.tag !== ClassComponent) && // Will already warn with "Function components cannot be given refs"
              !(typeof element.type === "function" && !isReactClass(element.type)) && // Will already throw with "Element ref was specified as a string (someStringRef) but no owner was set"
              element._owner) {
                var componentName = getComponentNameFromFiber(returnFiber) || "Component";
                if (!didWarnAboutStringRefs[componentName]) {
                  {
                    error('Component "%s" contains the string ref "%s". Support for string refs will be removed in a future major release. We recommend using useRef() or createRef() instead. Learn more about using refs safely here: https://reactjs.org/link/strict-mode-string-ref', componentName, mixedRef);
                  }
                  didWarnAboutStringRefs[componentName] = true;
                }
              }
            }
            if (element._owner) {
              var owner = element._owner;
              var inst;
              if (owner) {
                var ownerFiber = owner;
                if (ownerFiber.tag !== ClassComponent) {
                  throw new Error("Function components cannot have string refs. We recommend using useRef() instead. Learn more about using refs safely here: https://reactjs.org/link/strict-mode-string-ref");
                }
                inst = ownerFiber.stateNode;
              }
              if (!inst) {
                throw new Error("Missing owner for string ref " + mixedRef + ". This error is likely caused by a bug in React. Please file an issue.");
              }
              var resolvedInst = inst;
              {
                checkPropStringCoercion(mixedRef, "ref");
              }
              var stringRef = "" + mixedRef;
              if (current2 !== null && current2.ref !== null && typeof current2.ref === "function" && current2.ref._stringRef === stringRef) {
                return current2.ref;
              }
              var ref = function(value) {
                var refs = resolvedInst.refs;
                if (value === null) {
                  delete refs[stringRef];
                } else {
                  refs[stringRef] = value;
                }
              };
              ref._stringRef = stringRef;
              return ref;
            } else {
              if (typeof mixedRef !== "string") {
                throw new Error("Expected ref to be a function, a string, an object returned by React.createRef(), or null.");
              }
              if (!element._owner) {
                throw new Error("Element ref was specified as a string (" + mixedRef + ") but no owner was set. This could happen for one of the following reasons:\n1. You may be adding a ref to a function component\n2. You may be adding a ref to a component that was not created inside a component's render method\n3. You have multiple copies of React loaded\nSee https://reactjs.org/link/refs-must-have-owner for more information.");
              }
            }
          }
          return mixedRef;
        }
        function throwOnInvalidObjectType(returnFiber, newChild) {
          var childString = Object.prototype.toString.call(newChild);
          throw new Error("Objects are not valid as a React child (found: " + (childString === "[object Object]" ? "object with keys {" + Object.keys(newChild).join(", ") + "}" : childString) + "). If you meant to render a collection of children, use an array instead.");
        }
        function warnOnFunctionType(returnFiber) {
          {
            var componentName = getComponentNameFromFiber(returnFiber) || "Component";
            if (ownerHasFunctionTypeWarning[componentName]) {
              return;
            }
            ownerHasFunctionTypeWarning[componentName] = true;
            error("Functions are not valid as a React child. This may happen if you return a Component instead of <Component /> from render. Or maybe you meant to call this function rather than return it.");
          }
        }
        function resolveLazy(lazyType) {
          var payload = lazyType._payload;
          var init = lazyType._init;
          return init(payload);
        }
        function ChildReconciler(shouldTrackSideEffects) {
          function deleteChild(returnFiber, childToDelete) {
            if (!shouldTrackSideEffects) {
              return;
            }
            var deletions = returnFiber.deletions;
            if (deletions === null) {
              returnFiber.deletions = [childToDelete];
              returnFiber.flags |= ChildDeletion;
            } else {
              deletions.push(childToDelete);
            }
          }
          function deleteRemainingChildren(returnFiber, currentFirstChild) {
            if (!shouldTrackSideEffects) {
              return null;
            }
            var childToDelete = currentFirstChild;
            while (childToDelete !== null) {
              deleteChild(returnFiber, childToDelete);
              childToDelete = childToDelete.sibling;
            }
            return null;
          }
          function mapRemainingChildren(returnFiber, currentFirstChild) {
            var existingChildren = /* @__PURE__ */ new Map();
            var existingChild = currentFirstChild;
            while (existingChild !== null) {
              if (existingChild.key !== null) {
                existingChildren.set(existingChild.key, existingChild);
              } else {
                existingChildren.set(existingChild.index, existingChild);
              }
              existingChild = existingChild.sibling;
            }
            return existingChildren;
          }
          function useFiber(fiber, pendingProps) {
            var clone = createWorkInProgress(fiber, pendingProps);
            clone.index = 0;
            clone.sibling = null;
            return clone;
          }
          function placeChild(newFiber, lastPlacedIndex, newIndex) {
            newFiber.index = newIndex;
            if (!shouldTrackSideEffects) {
              newFiber.flags |= Forked;
              return lastPlacedIndex;
            }
            var current2 = newFiber.alternate;
            if (current2 !== null) {
              var oldIndex = current2.index;
              if (oldIndex < lastPlacedIndex) {
                newFiber.flags |= Placement;
                return lastPlacedIndex;
              } else {
                return oldIndex;
              }
            } else {
              newFiber.flags |= Placement;
              return lastPlacedIndex;
            }
          }
          function placeSingleChild(newFiber) {
            if (shouldTrackSideEffects && newFiber.alternate === null) {
              newFiber.flags |= Placement;
            }
            return newFiber;
          }
          function updateTextNode(returnFiber, current2, textContent, lanes) {
            if (current2 === null || current2.tag !== HostText) {
              var created = createFiberFromText(textContent, returnFiber.mode, lanes);
              created.return = returnFiber;
              return created;
            } else {
              var existing = useFiber(current2, textContent);
              existing.return = returnFiber;
              return existing;
            }
          }
          function updateElement(returnFiber, current2, element, lanes) {
            var elementType = element.type;
            if (elementType === REACT_FRAGMENT_TYPE) {
              return updateFragment2(returnFiber, current2, element.props.children, lanes, element.key);
            }
            if (current2 !== null) {
              if (current2.elementType === elementType || // Keep this check inline so it only runs on the false path:
              isCompatibleFamilyForHotReloading(current2, element) || // Lazy types should reconcile their resolved type.
              // We need to do this after the Hot Reloading check above,
              // because hot reloading has different semantics than prod because
              // it doesn't resuspend. So we can't let the call below suspend.
              typeof elementType === "object" && elementType !== null && elementType.$$typeof === REACT_LAZY_TYPE && resolveLazy(elementType) === current2.type) {
                var existing = useFiber(current2, element.props);
                existing.ref = coerceRef(returnFiber, current2, element);
                existing.return = returnFiber;
                {
                  existing._debugSource = element._source;
                  existing._debugOwner = element._owner;
                }
                return existing;
              }
            }
            var created = createFiberFromElement(element, returnFiber.mode, lanes);
            created.ref = coerceRef(returnFiber, current2, element);
            created.return = returnFiber;
            return created;
          }
          function updatePortal(returnFiber, current2, portal, lanes) {
            if (current2 === null || current2.tag !== HostPortal || current2.stateNode.containerInfo !== portal.containerInfo || current2.stateNode.implementation !== portal.implementation) {
              var created = createFiberFromPortal(portal, returnFiber.mode, lanes);
              created.return = returnFiber;
              return created;
            } else {
              var existing = useFiber(current2, portal.children || []);
              existing.return = returnFiber;
              return existing;
            }
          }
          function updateFragment2(returnFiber, current2, fragment, lanes, key) {
            if (current2 === null || current2.tag !== Fragment2) {
              var created = createFiberFromFragment(fragment, returnFiber.mode, lanes, key);
              created.return = returnFiber;
              return created;
            } else {
              var existing = useFiber(current2, fragment);
              existing.return = returnFiber;
              return existing;
            }
          }
          function createChild(returnFiber, newChild, lanes) {
            if (typeof newChild === "string" && newChild !== "" || typeof newChild === "number") {
              var created = createFiberFromText("" + newChild, returnFiber.mode, lanes);
              created.return = returnFiber;
              return created;
            }
            if (typeof newChild === "object" && newChild !== null) {
              switch (newChild.$$typeof) {
                case REACT_ELEMENT_TYPE: {
                  var _created = createFiberFromElement(newChild, returnFiber.mode, lanes);
                  _created.ref = coerceRef(returnFiber, null, newChild);
                  _created.return = returnFiber;
                  return _created;
                }
                case REACT_PORTAL_TYPE: {
                  var _created2 = createFiberFromPortal(newChild, returnFiber.mode, lanes);
                  _created2.return = returnFiber;
                  return _created2;
                }
                case REACT_LAZY_TYPE: {
                  var payload = newChild._payload;
                  var init = newChild._init;
                  return createChild(returnFiber, init(payload), lanes);
                }
              }
              if (isArray(newChild) || getIteratorFn(newChild)) {
                var _created3 = createFiberFromFragment(newChild, returnFiber.mode, lanes, null);
                _created3.return = returnFiber;
                return _created3;
              }
              throwOnInvalidObjectType(returnFiber, newChild);
            }
            {
              if (typeof newChild === "function") {
                warnOnFunctionType(returnFiber);
              }
            }
            return null;
          }
          function updateSlot(returnFiber, oldFiber, newChild, lanes) {
            var key = oldFiber !== null ? oldFiber.key : null;
            if (typeof newChild === "string" && newChild !== "" || typeof newChild === "number") {
              if (key !== null) {
                return null;
              }
              return updateTextNode(returnFiber, oldFiber, "" + newChild, lanes);
            }
            if (typeof newChild === "object" && newChild !== null) {
              switch (newChild.$$typeof) {
                case REACT_ELEMENT_TYPE: {
                  if (newChild.key === key) {
                    return updateElement(returnFiber, oldFiber, newChild, lanes);
                  } else {
                    return null;
                  }
                }
                case REACT_PORTAL_TYPE: {
                  if (newChild.key === key) {
                    return updatePortal(returnFiber, oldFiber, newChild, lanes);
                  } else {
                    return null;
                  }
                }
                case REACT_LAZY_TYPE: {
                  var payload = newChild._payload;
                  var init = newChild._init;
                  return updateSlot(returnFiber, oldFiber, init(payload), lanes);
                }
              }
              if (isArray(newChild) || getIteratorFn(newChild)) {
                if (key !== null) {
                  return null;
                }
                return updateFragment2(returnFiber, oldFiber, newChild, lanes, null);
              }
              throwOnInvalidObjectType(returnFiber, newChild);
            }
            {
              if (typeof newChild === "function") {
                warnOnFunctionType(returnFiber);
              }
            }
            return null;
          }
          function updateFromMap(existingChildren, returnFiber, newIdx, newChild, lanes) {
            if (typeof newChild === "string" && newChild !== "" || typeof newChild === "number") {
              var matchedFiber = existingChildren.get(newIdx) || null;
              return updateTextNode(returnFiber, matchedFiber, "" + newChild, lanes);
            }
            if (typeof newChild === "object" && newChild !== null) {
              switch (newChild.$$typeof) {
                case REACT_ELEMENT_TYPE: {
                  var _matchedFiber = existingChildren.get(newChild.key === null ? newIdx : newChild.key) || null;
                  return updateElement(returnFiber, _matchedFiber, newChild, lanes);
                }
                case REACT_PORTAL_TYPE: {
                  var _matchedFiber2 = existingChildren.get(newChild.key === null ? newIdx : newChild.key) || null;
                  return updatePortal(returnFiber, _matchedFiber2, newChild, lanes);
                }
                case REACT_LAZY_TYPE:
                  var payload = newChild._payload;
                  var init = newChild._init;
                  return updateFromMap(existingChildren, returnFiber, newIdx, init(payload), lanes);
              }
              if (isArray(newChild) || getIteratorFn(newChild)) {
                var _matchedFiber3 = existingChildren.get(newIdx) || null;
                return updateFragment2(returnFiber, _matchedFiber3, newChild, lanes, null);
              }
              throwOnInvalidObjectType(returnFiber, newChild);
            }
            {
              if (typeof newChild === "function") {
                warnOnFunctionType(returnFiber);
              }
            }
            return null;
          }
          function warnOnInvalidKey(child, knownKeys, returnFiber) {
            {
              if (typeof child !== "object" || child === null) {
                return knownKeys;
              }
              switch (child.$$typeof) {
                case REACT_ELEMENT_TYPE:
                case REACT_PORTAL_TYPE:
                  warnForMissingKey(child, returnFiber);
                  var key = child.key;
                  if (typeof key !== "string") {
                    break;
                  }
                  if (knownKeys === null) {
                    knownKeys = /* @__PURE__ */ new Set();
                    knownKeys.add(key);
                    break;
                  }
                  if (!knownKeys.has(key)) {
                    knownKeys.add(key);
                    break;
                  }
                  error("Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted \u2014 the behavior is unsupported and could change in a future version.", key);
                  break;
                case REACT_LAZY_TYPE:
                  var payload = child._payload;
                  var init = child._init;
                  warnOnInvalidKey(init(payload), knownKeys, returnFiber);
                  break;
              }
            }
            return knownKeys;
          }
          function reconcileChildrenArray(returnFiber, currentFirstChild, newChildren, lanes) {
            {
              var knownKeys = null;
              for (var i = 0; i < newChildren.length; i++) {
                var child = newChildren[i];
                knownKeys = warnOnInvalidKey(child, knownKeys, returnFiber);
              }
            }
            var resultingFirstChild = null;
            var previousNewFiber = null;
            var oldFiber = currentFirstChild;
            var lastPlacedIndex = 0;
            var newIdx = 0;
            var nextOldFiber = null;
            for (; oldFiber !== null && newIdx < newChildren.length; newIdx++) {
              if (oldFiber.index > newIdx) {
                nextOldFiber = oldFiber;
                oldFiber = null;
              } else {
                nextOldFiber = oldFiber.sibling;
              }
              var newFiber = updateSlot(returnFiber, oldFiber, newChildren[newIdx], lanes);
              if (newFiber === null) {
                if (oldFiber === null) {
                  oldFiber = nextOldFiber;
                }
                break;
              }
              if (shouldTrackSideEffects) {
                if (oldFiber && newFiber.alternate === null) {
                  deleteChild(returnFiber, oldFiber);
                }
              }
              lastPlacedIndex = placeChild(newFiber, lastPlacedIndex, newIdx);
              if (previousNewFiber === null) {
                resultingFirstChild = newFiber;
              } else {
                previousNewFiber.sibling = newFiber;
              }
              previousNewFiber = newFiber;
              oldFiber = nextOldFiber;
            }
            if (newIdx === newChildren.length) {
              deleteRemainingChildren(returnFiber, oldFiber);
              if (getIsHydrating()) {
                var numberOfForks = newIdx;
                pushTreeFork(returnFiber, numberOfForks);
              }
              return resultingFirstChild;
            }
            if (oldFiber === null) {
              for (; newIdx < newChildren.length; newIdx++) {
                var _newFiber = createChild(returnFiber, newChildren[newIdx], lanes);
                if (_newFiber === null) {
                  continue;
                }
                lastPlacedIndex = placeChild(_newFiber, lastPlacedIndex, newIdx);
                if (previousNewFiber === null) {
                  resultingFirstChild = _newFiber;
                } else {
                  previousNewFiber.sibling = _newFiber;
                }
                previousNewFiber = _newFiber;
              }
              if (getIsHydrating()) {
                var _numberOfForks = newIdx;
                pushTreeFork(returnFiber, _numberOfForks);
              }
              return resultingFirstChild;
            }
            var existingChildren = mapRemainingChildren(returnFiber, oldFiber);
            for (; newIdx < newChildren.length; newIdx++) {
              var _newFiber2 = updateFromMap(existingChildren, returnFiber, newIdx, newChildren[newIdx], lanes);
              if (_newFiber2 !== null) {
                if (shouldTrackSideEffects) {
                  if (_newFiber2.alternate !== null) {
                    existingChildren.delete(_newFiber2.key === null ? newIdx : _newFiber2.key);
                  }
                }
                lastPlacedIndex = placeChild(_newFiber2, lastPlacedIndex, newIdx);
                if (previousNewFiber === null) {
                  resultingFirstChild = _newFiber2;
                } else {
                  previousNewFiber.sibling = _newFiber2;
                }
                previousNewFiber = _newFiber2;
              }
            }
            if (shouldTrackSideEffects) {
              existingChildren.forEach(function(child2) {
                return deleteChild(returnFiber, child2);
              });
            }
            if (getIsHydrating()) {
              var _numberOfForks2 = newIdx;
              pushTreeFork(returnFiber, _numberOfForks2);
            }
            return resultingFirstChild;
          }
          function reconcileChildrenIterator(returnFiber, currentFirstChild, newChildrenIterable, lanes) {
            var iteratorFn = getIteratorFn(newChildrenIterable);
            if (typeof iteratorFn !== "function") {
              throw new Error("An object is not an iterable. This error is likely caused by a bug in React. Please file an issue.");
            }
            {
              if (typeof Symbol === "function" && // $FlowFixMe Flow doesn't know about toStringTag
              newChildrenIterable[Symbol.toStringTag] === "Generator") {
                if (!didWarnAboutGenerators) {
                  error("Using Generators as children is unsupported and will likely yield unexpected results because enumerating a generator mutates it. You may convert it to an array with `Array.from()` or the `[...spread]` operator before rendering. Keep in mind you might need to polyfill these features for older browsers.");
                }
                didWarnAboutGenerators = true;
              }
              if (newChildrenIterable.entries === iteratorFn) {
                if (!didWarnAboutMaps) {
                  error("Using Maps as children is not supported. Use an array of keyed ReactElements instead.");
                }
                didWarnAboutMaps = true;
              }
              var _newChildren = iteratorFn.call(newChildrenIterable);
              if (_newChildren) {
                var knownKeys = null;
                var _step = _newChildren.next();
                for (; !_step.done; _step = _newChildren.next()) {
                  var child = _step.value;
                  knownKeys = warnOnInvalidKey(child, knownKeys, returnFiber);
                }
              }
            }
            var newChildren = iteratorFn.call(newChildrenIterable);
            if (newChildren == null) {
              throw new Error("An iterable object provided no iterator.");
            }
            var resultingFirstChild = null;
            var previousNewFiber = null;
            var oldFiber = currentFirstChild;
            var lastPlacedIndex = 0;
            var newIdx = 0;
            var nextOldFiber = null;
            var step = newChildren.next();
            for (; oldFiber !== null && !step.done; newIdx++, step = newChildren.next()) {
              if (oldFiber.index > newIdx) {
                nextOldFiber = oldFiber;
                oldFiber = null;
              } else {
                nextOldFiber = oldFiber.sibling;
              }
              var newFiber = updateSlot(returnFiber, oldFiber, step.value, lanes);
              if (newFiber === null) {
                if (oldFiber === null) {
                  oldFiber = nextOldFiber;
                }
                break;
              }
              if (shouldTrackSideEffects) {
                if (oldFiber && newFiber.alternate === null) {
                  deleteChild(returnFiber, oldFiber);
                }
              }
              lastPlacedIndex = placeChild(newFiber, lastPlacedIndex, newIdx);
              if (previousNewFiber === null) {
                resultingFirstChild = newFiber;
              } else {
                previousNewFiber.sibling = newFiber;
              }
              previousNewFiber = newFiber;
              oldFiber = nextOldFiber;
            }
            if (step.done) {
              deleteRemainingChildren(returnFiber, oldFiber);
              if (getIsHydrating()) {
                var numberOfForks = newIdx;
                pushTreeFork(returnFiber, numberOfForks);
              }
              return resultingFirstChild;
            }
            if (oldFiber === null) {
              for (; !step.done; newIdx++, step = newChildren.next()) {
                var _newFiber3 = createChild(returnFiber, step.value, lanes);
                if (_newFiber3 === null) {
                  continue;
                }
                lastPlacedIndex = placeChild(_newFiber3, lastPlacedIndex, newIdx);
                if (previousNewFiber === null) {
                  resultingFirstChild = _newFiber3;
                } else {
                  previousNewFiber.sibling = _newFiber3;
                }
                previousNewFiber = _newFiber3;
              }
              if (getIsHydrating()) {
                var _numberOfForks3 = newIdx;
                pushTreeFork(returnFiber, _numberOfForks3);
              }
              return resultingFirstChild;
            }
            var existingChildren = mapRemainingChildren(returnFiber, oldFiber);
            for (; !step.done; newIdx++, step = newChildren.next()) {
              var _newFiber4 = updateFromMap(existingChildren, returnFiber, newIdx, step.value, lanes);
              if (_newFiber4 !== null) {
                if (shouldTrackSideEffects) {
                  if (_newFiber4.alternate !== null) {
                    existingChildren.delete(_newFiber4.key === null ? newIdx : _newFiber4.key);
                  }
                }
                lastPlacedIndex = placeChild(_newFiber4, lastPlacedIndex, newIdx);
                if (previousNewFiber === null) {
                  resultingFirstChild = _newFiber4;
                } else {
                  previousNewFiber.sibling = _newFiber4;
                }
                previousNewFiber = _newFiber4;
              }
            }
            if (shouldTrackSideEffects) {
              existingChildren.forEach(function(child2) {
                return deleteChild(returnFiber, child2);
              });
            }
            if (getIsHydrating()) {
              var _numberOfForks4 = newIdx;
              pushTreeFork(returnFiber, _numberOfForks4);
            }
            return resultingFirstChild;
          }
          function reconcileSingleTextNode(returnFiber, currentFirstChild, textContent, lanes) {
            if (currentFirstChild !== null && currentFirstChild.tag === HostText) {
              deleteRemainingChildren(returnFiber, currentFirstChild.sibling);
              var existing = useFiber(currentFirstChild, textContent);
              existing.return = returnFiber;
              return existing;
            }
            deleteRemainingChildren(returnFiber, currentFirstChild);
            var created = createFiberFromText(textContent, returnFiber.mode, lanes);
            created.return = returnFiber;
            return created;
          }
          function reconcileSingleElement(returnFiber, currentFirstChild, element, lanes) {
            var key = element.key;
            var child = currentFirstChild;
            while (child !== null) {
              if (child.key === key) {
                var elementType = element.type;
                if (elementType === REACT_FRAGMENT_TYPE) {
                  if (child.tag === Fragment2) {
                    deleteRemainingChildren(returnFiber, child.sibling);
                    var existing = useFiber(child, element.props.children);
                    existing.return = returnFiber;
                    {
                      existing._debugSource = element._source;
                      existing._debugOwner = element._owner;
                    }
                    return existing;
                  }
                } else {
                  if (child.elementType === elementType || // Keep this check inline so it only runs on the false path:
                  isCompatibleFamilyForHotReloading(child, element) || // Lazy types should reconcile their resolved type.
                  // We need to do this after the Hot Reloading check above,
                  // because hot reloading has different semantics than prod because
                  // it doesn't resuspend. So we can't let the call below suspend.
                  typeof elementType === "object" && elementType !== null && elementType.$$typeof === REACT_LAZY_TYPE && resolveLazy(elementType) === child.type) {
                    deleteRemainingChildren(returnFiber, child.sibling);
                    var _existing = useFiber(child, element.props);
                    _existing.ref = coerceRef(returnFiber, child, element);
                    _existing.return = returnFiber;
                    {
                      _existing._debugSource = element._source;
                      _existing._debugOwner = element._owner;
                    }
                    return _existing;
                  }
                }
                deleteRemainingChildren(returnFiber, child);
                break;
              } else {
                deleteChild(returnFiber, child);
              }
              child = child.sibling;
            }
            if (element.type === REACT_FRAGMENT_TYPE) {
              var created = createFiberFromFragment(element.props.children, returnFiber.mode, lanes, element.key);
              created.return = returnFiber;
              return created;
            } else {
              var _created4 = createFiberFromElement(element, returnFiber.mode, lanes);
              _created4.ref = coerceRef(returnFiber, currentFirstChild, element);
              _created4.return = returnFiber;
              return _created4;
            }
          }
          function reconcileSinglePortal(returnFiber, currentFirstChild, portal, lanes) {
            var key = portal.key;
            var child = currentFirstChild;
            while (child !== null) {
              if (child.key === key) {
                if (child.tag === HostPortal && child.stateNode.containerInfo === portal.containerInfo && child.stateNode.implementation === portal.implementation) {
                  deleteRemainingChildren(returnFiber, child.sibling);
                  var existing = useFiber(child, portal.children || []);
                  existing.return = returnFiber;
                  return existing;
                } else {
                  deleteRemainingChildren(returnFiber, child);
                  break;
                }
              } else {
                deleteChild(returnFiber, child);
              }
              child = child.sibling;
            }
            var created = createFiberFromPortal(portal, returnFiber.mode, lanes);
            created.return = returnFiber;
            return created;
          }
          function reconcileChildFibers2(returnFiber, currentFirstChild, newChild, lanes) {
            var isUnkeyedTopLevelFragment = typeof newChild === "object" && newChild !== null && newChild.type === REACT_FRAGMENT_TYPE && newChild.key === null;
            if (isUnkeyedTopLevelFragment) {
              newChild = newChild.props.children;
            }
            if (typeof newChild === "object" && newChild !== null) {
              switch (newChild.$$typeof) {
                case REACT_ELEMENT_TYPE:
                  return placeSingleChild(reconcileSingleElement(returnFiber, currentFirstChild, newChild, lanes));
                case REACT_PORTAL_TYPE:
                  return placeSingleChild(reconcileSinglePortal(returnFiber, currentFirstChild, newChild, lanes));
                case REACT_LAZY_TYPE:
                  var payload = newChild._payload;
                  var init = newChild._init;
                  return reconcileChildFibers2(returnFiber, currentFirstChild, init(payload), lanes);
              }
              if (isArray(newChild)) {
                return reconcileChildrenArray(returnFiber, currentFirstChild, newChild, lanes);
              }
              if (getIteratorFn(newChild)) {
                return reconcileChildrenIterator(returnFiber, currentFirstChild, newChild, lanes);
              }
              throwOnInvalidObjectType(returnFiber, newChild);
            }
            if (typeof newChild === "string" && newChild !== "" || typeof newChild === "number") {
              return placeSingleChild(reconcileSingleTextNode(returnFiber, currentFirstChild, "" + newChild, lanes));
            }
            {
              if (typeof newChild === "function") {
                warnOnFunctionType(returnFiber);
              }
            }
            return deleteRemainingChildren(returnFiber, currentFirstChild);
          }
          return reconcileChildFibers2;
        }
        var reconcileChildFibers = ChildReconciler(true);
        var mountChildFibers = ChildReconciler(false);
        function cloneChildFibers(current2, workInProgress2) {
          if (current2 !== null && workInProgress2.child !== current2.child) {
            throw new Error("Resuming work not yet implemented.");
          }
          if (workInProgress2.child === null) {
            return;
          }
          var currentChild = workInProgress2.child;
          var newChild = createWorkInProgress(currentChild, currentChild.pendingProps);
          workInProgress2.child = newChild;
          newChild.return = workInProgress2;
          while (currentChild.sibling !== null) {
            currentChild = currentChild.sibling;
            newChild = newChild.sibling = createWorkInProgress(currentChild, currentChild.pendingProps);
            newChild.return = workInProgress2;
          }
          newChild.sibling = null;
        }
        function resetChildFibers(workInProgress2, lanes) {
          var child = workInProgress2.child;
          while (child !== null) {
            resetWorkInProgress(child, lanes);
            child = child.sibling;
          }
        }
        var valueCursor = createCursor(null);
        var rendererSigil;
        {
          rendererSigil = {};
        }
        var currentlyRenderingFiber = null;
        var lastContextDependency = null;
        var lastFullyObservedContext = null;
        var isDisallowedContextReadInDEV = false;
        function resetContextDependencies() {
          currentlyRenderingFiber = null;
          lastContextDependency = null;
          lastFullyObservedContext = null;
          {
            isDisallowedContextReadInDEV = false;
          }
        }
        function enterDisallowedContextReadInDEV() {
          {
            isDisallowedContextReadInDEV = true;
          }
        }
        function exitDisallowedContextReadInDEV() {
          {
            isDisallowedContextReadInDEV = false;
          }
        }
        function pushProvider(providerFiber, context, nextValue) {
          {
            push(valueCursor, context._currentValue, providerFiber);
            context._currentValue = nextValue;
            {
              if (context._currentRenderer !== void 0 && context._currentRenderer !== null && context._currentRenderer !== rendererSigil) {
                error("Detected multiple renderers concurrently rendering the same context provider. This is currently unsupported.");
              }
              context._currentRenderer = rendererSigil;
            }
          }
        }
        function popProvider(context, providerFiber) {
          var currentValue = valueCursor.current;
          pop(valueCursor, providerFiber);
          {
            {
              context._currentValue = currentValue;
            }
          }
        }
        function scheduleContextWorkOnParentPath(parent, renderLanes2, propagationRoot) {
          var node = parent;
          while (node !== null) {
            var alternate = node.alternate;
            if (!isSubsetOfLanes(node.childLanes, renderLanes2)) {
              node.childLanes = mergeLanes(node.childLanes, renderLanes2);
              if (alternate !== null) {
                alternate.childLanes = mergeLanes(alternate.childLanes, renderLanes2);
              }
            } else if (alternate !== null && !isSubsetOfLanes(alternate.childLanes, renderLanes2)) {
              alternate.childLanes = mergeLanes(alternate.childLanes, renderLanes2);
            }
            if (node === propagationRoot) {
              break;
            }
            node = node.return;
          }
          {
            if (node !== propagationRoot) {
              error("Expected to find the propagation root when scheduling context work. This error is likely caused by a bug in React. Please file an issue.");
            }
          }
        }
        function propagateContextChange(workInProgress2, context, renderLanes2) {
          {
            propagateContextChange_eager(workInProgress2, context, renderLanes2);
          }
        }
        function propagateContextChange_eager(workInProgress2, context, renderLanes2) {
          var fiber = workInProgress2.child;
          if (fiber !== null) {
            fiber.return = workInProgress2;
          }
          while (fiber !== null) {
            var nextFiber = void 0;
            var list = fiber.dependencies;
            if (list !== null) {
              nextFiber = fiber.child;
              var dependency = list.firstContext;
              while (dependency !== null) {
                if (dependency.context === context) {
                  if (fiber.tag === ClassComponent) {
                    var lane = pickArbitraryLane(renderLanes2);
                    var update = createUpdate(NoTimestamp, lane);
                    update.tag = ForceUpdate;
                    var updateQueue = fiber.updateQueue;
                    if (updateQueue === null) ;
                    else {
                      var sharedQueue = updateQueue.shared;
                      var pending = sharedQueue.pending;
                      if (pending === null) {
                        update.next = update;
                      } else {
                        update.next = pending.next;
                        pending.next = update;
                      }
                      sharedQueue.pending = update;
                    }
                  }
                  fiber.lanes = mergeLanes(fiber.lanes, renderLanes2);
                  var alternate = fiber.alternate;
                  if (alternate !== null) {
                    alternate.lanes = mergeLanes(alternate.lanes, renderLanes2);
                  }
                  scheduleContextWorkOnParentPath(fiber.return, renderLanes2, workInProgress2);
                  list.lanes = mergeLanes(list.lanes, renderLanes2);
                  break;
                }
                dependency = dependency.next;
              }
            } else if (fiber.tag === ContextProvider) {
              nextFiber = fiber.type === workInProgress2.type ? null : fiber.child;
            } else if (fiber.tag === DehydratedFragment) {
              var parentSuspense = fiber.return;
              if (parentSuspense === null) {
                throw new Error("We just came from a parent so we must have had a parent. This is a bug in React.");
              }
              parentSuspense.lanes = mergeLanes(parentSuspense.lanes, renderLanes2);
              var _alternate = parentSuspense.alternate;
              if (_alternate !== null) {
                _alternate.lanes = mergeLanes(_alternate.lanes, renderLanes2);
              }
              scheduleContextWorkOnParentPath(parentSuspense, renderLanes2, workInProgress2);
              nextFiber = fiber.sibling;
            } else {
              nextFiber = fiber.child;
            }
            if (nextFiber !== null) {
              nextFiber.return = fiber;
            } else {
              nextFiber = fiber;
              while (nextFiber !== null) {
                if (nextFiber === workInProgress2) {
                  nextFiber = null;
                  break;
                }
                var sibling = nextFiber.sibling;
                if (sibling !== null) {
                  sibling.return = nextFiber.return;
                  nextFiber = sibling;
                  break;
                }
                nextFiber = nextFiber.return;
              }
            }
            fiber = nextFiber;
          }
        }
        function prepareToReadContext(workInProgress2, renderLanes2) {
          currentlyRenderingFiber = workInProgress2;
          lastContextDependency = null;
          lastFullyObservedContext = null;
          var dependencies = workInProgress2.dependencies;
          if (dependencies !== null) {
            {
              var firstContext = dependencies.firstContext;
              if (firstContext !== null) {
                if (includesSomeLane(dependencies.lanes, renderLanes2)) {
                  markWorkInProgressReceivedUpdate();
                }
                dependencies.firstContext = null;
              }
            }
          }
        }
        function readContext(context) {
          {
            if (isDisallowedContextReadInDEV) {
              error("Context can only be read while React is rendering. In classes, you can read it in the render method or getDerivedStateFromProps. In function components, you can read it directly in the function body, but not inside Hooks like useReducer() or useMemo().");
            }
          }
          var value = context._currentValue;
          if (lastFullyObservedContext === context) ;
          else {
            var contextItem = {
              context,
              memoizedValue: value,
              next: null
            };
            if (lastContextDependency === null) {
              if (currentlyRenderingFiber === null) {
                throw new Error("Context can only be read while React is rendering. In classes, you can read it in the render method or getDerivedStateFromProps. In function components, you can read it directly in the function body, but not inside Hooks like useReducer() or useMemo().");
              }
              lastContextDependency = contextItem;
              currentlyRenderingFiber.dependencies = {
                lanes: NoLanes,
                firstContext: contextItem
              };
            } else {
              lastContextDependency = lastContextDependency.next = contextItem;
            }
          }
          return value;
        }
        var concurrentQueues = null;
        function pushConcurrentUpdateQueue(queue) {
          if (concurrentQueues === null) {
            concurrentQueues = [queue];
          } else {
            concurrentQueues.push(queue);
          }
        }
        function finishQueueingConcurrentUpdates() {
          if (concurrentQueues !== null) {
            for (var i = 0; i < concurrentQueues.length; i++) {
              var queue = concurrentQueues[i];
              var lastInterleavedUpdate = queue.interleaved;
              if (lastInterleavedUpdate !== null) {
                queue.interleaved = null;
                var firstInterleavedUpdate = lastInterleavedUpdate.next;
                var lastPendingUpdate = queue.pending;
                if (lastPendingUpdate !== null) {
                  var firstPendingUpdate = lastPendingUpdate.next;
                  lastPendingUpdate.next = firstInterleavedUpdate;
                  lastInterleavedUpdate.next = firstPendingUpdate;
                }
                queue.pending = lastInterleavedUpdate;
              }
            }
            concurrentQueues = null;
          }
        }
        function enqueueConcurrentHookUpdate(fiber, queue, update, lane) {
          var interleaved = queue.interleaved;
          if (interleaved === null) {
            update.next = update;
            pushConcurrentUpdateQueue(queue);
          } else {
            update.next = interleaved.next;
            interleaved.next = update;
          }
          queue.interleaved = update;
          return markUpdateLaneFromFiberToRoot(fiber, lane);
        }
        function enqueueConcurrentHookUpdateAndEagerlyBailout(fiber, queue, update, lane) {
          var interleaved = queue.interleaved;
          if (interleaved === null) {
            update.next = update;
            pushConcurrentUpdateQueue(queue);
          } else {
            update.next = interleaved.next;
            interleaved.next = update;
          }
          queue.interleaved = update;
        }
        function enqueueConcurrentClassUpdate(fiber, queue, update, lane) {
          var interleaved = queue.interleaved;
          if (interleaved === null) {
            update.next = update;
            pushConcurrentUpdateQueue(queue);
          } else {
            update.next = interleaved.next;
            interleaved.next = update;
          }
          queue.interleaved = update;
          return markUpdateLaneFromFiberToRoot(fiber, lane);
        }
        function enqueueConcurrentRenderForLane(fiber, lane) {
          return markUpdateLaneFromFiberToRoot(fiber, lane);
        }
        var unsafe_markUpdateLaneFromFiberToRoot = markUpdateLaneFromFiberToRoot;
        function markUpdateLaneFromFiberToRoot(sourceFiber, lane) {
          sourceFiber.lanes = mergeLanes(sourceFiber.lanes, lane);
          var alternate = sourceFiber.alternate;
          if (alternate !== null) {
            alternate.lanes = mergeLanes(alternate.lanes, lane);
          }
          {
            if (alternate === null && (sourceFiber.flags & (Placement | Hydrating)) !== NoFlags) {
              warnAboutUpdateOnNotYetMountedFiberInDEV(sourceFiber);
            }
          }
          var node = sourceFiber;
          var parent = sourceFiber.return;
          while (parent !== null) {
            parent.childLanes = mergeLanes(parent.childLanes, lane);
            alternate = parent.alternate;
            if (alternate !== null) {
              alternate.childLanes = mergeLanes(alternate.childLanes, lane);
            } else {
              {
                if ((parent.flags & (Placement | Hydrating)) !== NoFlags) {
                  warnAboutUpdateOnNotYetMountedFiberInDEV(sourceFiber);
                }
              }
            }
            node = parent;
            parent = parent.return;
          }
          if (node.tag === HostRoot) {
            var root2 = node.stateNode;
            return root2;
          } else {
            return null;
          }
        }
        var UpdateState = 0;
        var ReplaceState = 1;
        var ForceUpdate = 2;
        var CaptureUpdate = 3;
        var hasForceUpdate = false;
        var didWarnUpdateInsideUpdate;
        var currentlyProcessingQueue;
        {
          didWarnUpdateInsideUpdate = false;
          currentlyProcessingQueue = null;
        }
        function initializeUpdateQueue(fiber) {
          var queue = {
            baseState: fiber.memoizedState,
            firstBaseUpdate: null,
            lastBaseUpdate: null,
            shared: {
              pending: null,
              interleaved: null,
              lanes: NoLanes
            },
            effects: null
          };
          fiber.updateQueue = queue;
        }
        function cloneUpdateQueue(current2, workInProgress2) {
          var queue = workInProgress2.updateQueue;
          var currentQueue = current2.updateQueue;
          if (queue === currentQueue) {
            var clone = {
              baseState: currentQueue.baseState,
              firstBaseUpdate: currentQueue.firstBaseUpdate,
              lastBaseUpdate: currentQueue.lastBaseUpdate,
              shared: currentQueue.shared,
              effects: currentQueue.effects
            };
            workInProgress2.updateQueue = clone;
          }
        }
        function createUpdate(eventTime, lane) {
          var update = {
            eventTime,
            lane,
            tag: UpdateState,
            payload: null,
            callback: null,
            next: null
          };
          return update;
        }
        function enqueueUpdate(fiber, update, lane) {
          var updateQueue = fiber.updateQueue;
          if (updateQueue === null) {
            return null;
          }
          var sharedQueue = updateQueue.shared;
          {
            if (currentlyProcessingQueue === sharedQueue && !didWarnUpdateInsideUpdate) {
              error("An update (setState, replaceState, or forceUpdate) was scheduled from inside an update function. Update functions should be pure, with zero side-effects. Consider using componentDidUpdate or a callback.");
              didWarnUpdateInsideUpdate = true;
            }
          }
          if (isUnsafeClassRenderPhaseUpdate()) {
            var pending = sharedQueue.pending;
            if (pending === null) {
              update.next = update;
            } else {
              update.next = pending.next;
              pending.next = update;
            }
            sharedQueue.pending = update;
            return unsafe_markUpdateLaneFromFiberToRoot(fiber, lane);
          } else {
            return enqueueConcurrentClassUpdate(fiber, sharedQueue, update, lane);
          }
        }
        function entangleTransitions(root2, fiber, lane) {
          var updateQueue = fiber.updateQueue;
          if (updateQueue === null) {
            return;
          }
          var sharedQueue = updateQueue.shared;
          if (isTransitionLane(lane)) {
            var queueLanes = sharedQueue.lanes;
            queueLanes = intersectLanes(queueLanes, root2.pendingLanes);
            var newQueueLanes = mergeLanes(queueLanes, lane);
            sharedQueue.lanes = newQueueLanes;
            markRootEntangled(root2, newQueueLanes);
          }
        }
        function enqueueCapturedUpdate(workInProgress2, capturedUpdate) {
          var queue = workInProgress2.updateQueue;
          var current2 = workInProgress2.alternate;
          if (current2 !== null) {
            var currentQueue = current2.updateQueue;
            if (queue === currentQueue) {
              var newFirst = null;
              var newLast = null;
              var firstBaseUpdate = queue.firstBaseUpdate;
              if (firstBaseUpdate !== null) {
                var update = firstBaseUpdate;
                do {
                  var clone = {
                    eventTime: update.eventTime,
                    lane: update.lane,
                    tag: update.tag,
                    payload: update.payload,
                    callback: update.callback,
                    next: null
                  };
                  if (newLast === null) {
                    newFirst = newLast = clone;
                  } else {
                    newLast.next = clone;
                    newLast = clone;
                  }
                  update = update.next;
                } while (update !== null);
                if (newLast === null) {
                  newFirst = newLast = capturedUpdate;
                } else {
                  newLast.next = capturedUpdate;
                  newLast = capturedUpdate;
                }
              } else {
                newFirst = newLast = capturedUpdate;
              }
              queue = {
                baseState: currentQueue.baseState,
                firstBaseUpdate: newFirst,
                lastBaseUpdate: newLast,
                shared: currentQueue.shared,
                effects: currentQueue.effects
              };
              workInProgress2.updateQueue = queue;
              return;
            }
          }
          var lastBaseUpdate = queue.lastBaseUpdate;
          if (lastBaseUpdate === null) {
            queue.firstBaseUpdate = capturedUpdate;
          } else {
            lastBaseUpdate.next = capturedUpdate;
          }
          queue.lastBaseUpdate = capturedUpdate;
        }
        function getStateFromUpdate(workInProgress2, queue, update, prevState, nextProps, instance) {
          switch (update.tag) {
            case ReplaceState: {
              var payload = update.payload;
              if (typeof payload === "function") {
                {
                  enterDisallowedContextReadInDEV();
                }
                var nextState = payload.call(instance, prevState, nextProps);
                {
                  if (workInProgress2.mode & StrictLegacyMode) {
                    setIsStrictModeForDevtools(true);
                    try {
                      payload.call(instance, prevState, nextProps);
                    } finally {
                      setIsStrictModeForDevtools(false);
                    }
                  }
                  exitDisallowedContextReadInDEV();
                }
                return nextState;
              }
              return payload;
            }
            case CaptureUpdate: {
              workInProgress2.flags = workInProgress2.flags & ~ShouldCapture | DidCapture;
            }
            // Intentional fallthrough
            case UpdateState: {
              var _payload = update.payload;
              var partialState;
              if (typeof _payload === "function") {
                {
                  enterDisallowedContextReadInDEV();
                }
                partialState = _payload.call(instance, prevState, nextProps);
                {
                  if (workInProgress2.mode & StrictLegacyMode) {
                    setIsStrictModeForDevtools(true);
                    try {
                      _payload.call(instance, prevState, nextProps);
                    } finally {
                      setIsStrictModeForDevtools(false);
                    }
                  }
                  exitDisallowedContextReadInDEV();
                }
              } else {
                partialState = _payload;
              }
              if (partialState === null || partialState === void 0) {
                return prevState;
              }
              return assign({}, prevState, partialState);
            }
            case ForceUpdate: {
              hasForceUpdate = true;
              return prevState;
            }
          }
          return prevState;
        }
        function processUpdateQueue(workInProgress2, props, instance, renderLanes2) {
          var queue = workInProgress2.updateQueue;
          hasForceUpdate = false;
          {
            currentlyProcessingQueue = queue.shared;
          }
          var firstBaseUpdate = queue.firstBaseUpdate;
          var lastBaseUpdate = queue.lastBaseUpdate;
          var pendingQueue = queue.shared.pending;
          if (pendingQueue !== null) {
            queue.shared.pending = null;
            var lastPendingUpdate = pendingQueue;
            var firstPendingUpdate = lastPendingUpdate.next;
            lastPendingUpdate.next = null;
            if (lastBaseUpdate === null) {
              firstBaseUpdate = firstPendingUpdate;
            } else {
              lastBaseUpdate.next = firstPendingUpdate;
            }
            lastBaseUpdate = lastPendingUpdate;
            var current2 = workInProgress2.alternate;
            if (current2 !== null) {
              var currentQueue = current2.updateQueue;
              var currentLastBaseUpdate = currentQueue.lastBaseUpdate;
              if (currentLastBaseUpdate !== lastBaseUpdate) {
                if (currentLastBaseUpdate === null) {
                  currentQueue.firstBaseUpdate = firstPendingUpdate;
                } else {
                  currentLastBaseUpdate.next = firstPendingUpdate;
                }
                currentQueue.lastBaseUpdate = lastPendingUpdate;
              }
            }
          }
          if (firstBaseUpdate !== null) {
            var newState = queue.baseState;
            var newLanes = NoLanes;
            var newBaseState = null;
            var newFirstBaseUpdate = null;
            var newLastBaseUpdate = null;
            var update = firstBaseUpdate;
            do {
              var updateLane = update.lane;
              var updateEventTime = update.eventTime;
              if (!isSubsetOfLanes(renderLanes2, updateLane)) {
                var clone = {
                  eventTime: updateEventTime,
                  lane: updateLane,
                  tag: update.tag,
                  payload: update.payload,
                  callback: update.callback,
                  next: null
                };
                if (newLastBaseUpdate === null) {
                  newFirstBaseUpdate = newLastBaseUpdate = clone;
                  newBaseState = newState;
                } else {
                  newLastBaseUpdate = newLastBaseUpdate.next = clone;
                }
                newLanes = mergeLanes(newLanes, updateLane);
              } else {
                if (newLastBaseUpdate !== null) {
                  var _clone = {
                    eventTime: updateEventTime,
                    // This update is going to be committed so we never want uncommit
                    // it. Using NoLane works because 0 is a subset of all bitmasks, so
                    // this will never be skipped by the check above.
                    lane: NoLane,
                    tag: update.tag,
                    payload: update.payload,
                    callback: update.callback,
                    next: null
                  };
                  newLastBaseUpdate = newLastBaseUpdate.next = _clone;
                }
                newState = getStateFromUpdate(workInProgress2, queue, update, newState, props, instance);
                var callback = update.callback;
                if (callback !== null && // If the update was already committed, we should not queue its
                // callback again.
                update.lane !== NoLane) {
                  workInProgress2.flags |= Callback;
                  var effects = queue.effects;
                  if (effects === null) {
                    queue.effects = [update];
                  } else {
                    effects.push(update);
                  }
                }
              }
              update = update.next;
              if (update === null) {
                pendingQueue = queue.shared.pending;
                if (pendingQueue === null) {
                  break;
                } else {
                  var _lastPendingUpdate = pendingQueue;
                  var _firstPendingUpdate = _lastPendingUpdate.next;
                  _lastPendingUpdate.next = null;
                  update = _firstPendingUpdate;
                  queue.lastBaseUpdate = _lastPendingUpdate;
                  queue.shared.pending = null;
                }
              }
            } while (true);
            if (newLastBaseUpdate === null) {
              newBaseState = newState;
            }
            queue.baseState = newBaseState;
            queue.firstBaseUpdate = newFirstBaseUpdate;
            queue.lastBaseUpdate = newLastBaseUpdate;
            var lastInterleaved = queue.shared.interleaved;
            if (lastInterleaved !== null) {
              var interleaved = lastInterleaved;
              do {
                newLanes = mergeLanes(newLanes, interleaved.lane);
                interleaved = interleaved.next;
              } while (interleaved !== lastInterleaved);
            } else if (firstBaseUpdate === null) {
              queue.shared.lanes = NoLanes;
            }
            markSkippedUpdateLanes(newLanes);
            workInProgress2.lanes = newLanes;
            workInProgress2.memoizedState = newState;
          }
          {
            currentlyProcessingQueue = null;
          }
        }
        function callCallback(callback, context) {
          if (typeof callback !== "function") {
            throw new Error("Invalid argument passed as callback. Expected a function. Instead " + ("received: " + callback));
          }
          callback.call(context);
        }
        function resetHasForceUpdateBeforeProcessing() {
          hasForceUpdate = false;
        }
        function checkHasForceUpdateAfterProcessing() {
          return hasForceUpdate;
        }
        function commitUpdateQueue(finishedWork, finishedQueue, instance) {
          var effects = finishedQueue.effects;
          finishedQueue.effects = null;
          if (effects !== null) {
            for (var i = 0; i < effects.length; i++) {
              var effect = effects[i];
              var callback = effect.callback;
              if (callback !== null) {
                effect.callback = null;
                callCallback(callback, instance);
              }
            }
          }
        }
        var NO_CONTEXT = {};
        var contextStackCursor$1 = createCursor(NO_CONTEXT);
        var contextFiberStackCursor = createCursor(NO_CONTEXT);
        var rootInstanceStackCursor = createCursor(NO_CONTEXT);
        function requiredContext(c) {
          if (c === NO_CONTEXT) {
            throw new Error("Expected host context to exist. This error is likely caused by a bug in React. Please file an issue.");
          }
          return c;
        }
        function getRootHostContainer() {
          var rootInstance = requiredContext(rootInstanceStackCursor.current);
          return rootInstance;
        }
        function pushHostContainer(fiber, nextRootInstance) {
          push(rootInstanceStackCursor, nextRootInstance, fiber);
          push(contextFiberStackCursor, fiber, fiber);
          push(contextStackCursor$1, NO_CONTEXT, fiber);
          var nextRootContext = getRootHostContext(nextRootInstance);
          pop(contextStackCursor$1, fiber);
          push(contextStackCursor$1, nextRootContext, fiber);
        }
        function popHostContainer(fiber) {
          pop(contextStackCursor$1, fiber);
          pop(contextFiberStackCursor, fiber);
          pop(rootInstanceStackCursor, fiber);
        }
        function getHostContext() {
          var context = requiredContext(contextStackCursor$1.current);
          return context;
        }
        function pushHostContext(fiber) {
          var rootInstance = requiredContext(rootInstanceStackCursor.current);
          var context = requiredContext(contextStackCursor$1.current);
          var nextContext = getChildHostContext(context, fiber.type);
          if (context === nextContext) {
            return;
          }
          push(contextFiberStackCursor, fiber, fiber);
          push(contextStackCursor$1, nextContext, fiber);
        }
        function popHostContext(fiber) {
          if (contextFiberStackCursor.current !== fiber) {
            return;
          }
          pop(contextStackCursor$1, fiber);
          pop(contextFiberStackCursor, fiber);
        }
        var DefaultSuspenseContext = 0;
        var SubtreeSuspenseContextMask = 1;
        var InvisibleParentSuspenseContext = 1;
        var ForceSuspenseFallback = 2;
        var suspenseStackCursor = createCursor(DefaultSuspenseContext);
        function hasSuspenseContext(parentContext, flag) {
          return (parentContext & flag) !== 0;
        }
        function setDefaultShallowSuspenseContext(parentContext) {
          return parentContext & SubtreeSuspenseContextMask;
        }
        function setShallowSuspenseContext(parentContext, shallowContext) {
          return parentContext & SubtreeSuspenseContextMask | shallowContext;
        }
        function addSubtreeSuspenseContext(parentContext, subtreeContext) {
          return parentContext | subtreeContext;
        }
        function pushSuspenseContext(fiber, newContext) {
          push(suspenseStackCursor, newContext, fiber);
        }
        function popSuspenseContext(fiber) {
          pop(suspenseStackCursor, fiber);
        }
        function shouldCaptureSuspense(workInProgress2, hasInvisibleParent) {
          var nextState = workInProgress2.memoizedState;
          if (nextState !== null) {
            if (nextState.dehydrated !== null) {
              return true;
            }
            return false;
          }
          var props = workInProgress2.memoizedProps;
          {
            return true;
          }
        }
        function findFirstSuspended(row) {
          var node = row;
          while (node !== null) {
            if (node.tag === SuspenseComponent) {
              var state = node.memoizedState;
              if (state !== null) {
                var dehydrated = state.dehydrated;
                if (dehydrated === null || isSuspenseInstancePending(dehydrated) || isSuspenseInstanceFallback(dehydrated)) {
                  return node;
                }
              }
            } else if (node.tag === SuspenseListComponent && // revealOrder undefined can't be trusted because it don't
            // keep track of whether it suspended or not.
            node.memoizedProps.revealOrder !== void 0) {
              var didSuspend = (node.flags & DidCapture) !== NoFlags;
              if (didSuspend) {
                return node;
              }
            } else if (node.child !== null) {
              node.child.return = node;
              node = node.child;
              continue;
            }
            if (node === row) {
              return null;
            }
            while (node.sibling === null) {
              if (node.return === null || node.return === row) {
                return null;
              }
              node = node.return;
            }
            node.sibling.return = node.return;
            node = node.sibling;
          }
          return null;
        }
        var NoFlags$1 = (
          /*   */
          0
        );
        var HasEffect = (
          /* */
          1
        );
        var Insertion = (
          /*  */
          2
        );
        var Layout = (
          /*    */
          4
        );
        var Passive$1 = (
          /*   */
          8
        );
        var workInProgressSources = [];
        function resetWorkInProgressVersions() {
          for (var i = 0; i < workInProgressSources.length; i++) {
            var mutableSource = workInProgressSources[i];
            {
              mutableSource._workInProgressVersionPrimary = null;
            }
          }
          workInProgressSources.length = 0;
        }
        function registerMutableSourceForHydration(root2, mutableSource) {
          var getVersion = mutableSource._getVersion;
          var version = getVersion(mutableSource._source);
          if (root2.mutableSourceEagerHydrationData == null) {
            root2.mutableSourceEagerHydrationData = [mutableSource, version];
          } else {
            root2.mutableSourceEagerHydrationData.push(mutableSource, version);
          }
        }
        var ReactCurrentDispatcher$1 = ReactSharedInternals.ReactCurrentDispatcher, ReactCurrentBatchConfig$2 = ReactSharedInternals.ReactCurrentBatchConfig;
        var didWarnAboutMismatchedHooksForComponent;
        var didWarnUncachedGetSnapshot;
        {
          didWarnAboutMismatchedHooksForComponent = /* @__PURE__ */ new Set();
        }
        var renderLanes = NoLanes;
        var currentlyRenderingFiber$1 = null;
        var currentHook = null;
        var workInProgressHook = null;
        var didScheduleRenderPhaseUpdate = false;
        var didScheduleRenderPhaseUpdateDuringThisPass = false;
        var localIdCounter = 0;
        var globalClientIdCounter = 0;
        var RE_RENDER_LIMIT = 25;
        var currentHookNameInDev = null;
        var hookTypesDev = null;
        var hookTypesUpdateIndexDev = -1;
        var ignorePreviousDependencies = false;
        function mountHookTypesDev() {
          {
            var hookName = currentHookNameInDev;
            if (hookTypesDev === null) {
              hookTypesDev = [hookName];
            } else {
              hookTypesDev.push(hookName);
            }
          }
        }
        function updateHookTypesDev() {
          {
            var hookName = currentHookNameInDev;
            if (hookTypesDev !== null) {
              hookTypesUpdateIndexDev++;
              if (hookTypesDev[hookTypesUpdateIndexDev] !== hookName) {
                warnOnHookMismatchInDev(hookName);
              }
            }
          }
        }
        function checkDepsAreArrayDev(deps) {
          {
            if (deps !== void 0 && deps !== null && !isArray(deps)) {
              error("%s received a final argument that is not an array (instead, received `%s`). When specified, the final argument must be an array.", currentHookNameInDev, typeof deps);
            }
          }
        }
        function warnOnHookMismatchInDev(currentHookName) {
          {
            var componentName = getComponentNameFromFiber(currentlyRenderingFiber$1);
            if (!didWarnAboutMismatchedHooksForComponent.has(componentName)) {
              didWarnAboutMismatchedHooksForComponent.add(componentName);
              if (hookTypesDev !== null) {
                var table = "";
                var secondColumnStart = 30;
                for (var i = 0; i <= hookTypesUpdateIndexDev; i++) {
                  var oldHookName = hookTypesDev[i];
                  var newHookName = i === hookTypesUpdateIndexDev ? currentHookName : oldHookName;
                  var row = i + 1 + ". " + oldHookName;
                  while (row.length < secondColumnStart) {
                    row += " ";
                  }
                  row += newHookName + "\n";
                  table += row;
                }
                error("React has detected a change in the order of Hooks called by %s. This will lead to bugs and errors if not fixed. For more information, read the Rules of Hooks: https://reactjs.org/link/rules-of-hooks\n\n   Previous render            Next render\n   ------------------------------------------------------\n%s   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", componentName, table);
              }
            }
          }
        }
        function throwInvalidHookError() {
          throw new Error("Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\n1. You might have mismatching versions of React and the renderer (such as React DOM)\n2. You might be breaking the Rules of Hooks\n3. You might have more than one copy of React in the same app\nSee https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.");
        }
        function areHookInputsEqual(nextDeps, prevDeps) {
          {
            if (ignorePreviousDependencies) {
              return false;
            }
          }
          if (prevDeps === null) {
            {
              error("%s received a final argument during this render, but not during the previous render. Even though the final argument is optional, its type cannot change between renders.", currentHookNameInDev);
            }
            return false;
          }
          {
            if (nextDeps.length !== prevDeps.length) {
              error("The final argument passed to %s changed size between renders. The order and size of this array must remain constant.\n\nPrevious: %s\nIncoming: %s", currentHookNameInDev, "[" + prevDeps.join(", ") + "]", "[" + nextDeps.join(", ") + "]");
            }
          }
          for (var i = 0; i < prevDeps.length && i < nextDeps.length; i++) {
            if (objectIs(nextDeps[i], prevDeps[i])) {
              continue;
            }
            return false;
          }
          return true;
        }
        function renderWithHooks(current2, workInProgress2, Component, props, secondArg, nextRenderLanes) {
          renderLanes = nextRenderLanes;
          currentlyRenderingFiber$1 = workInProgress2;
          {
            hookTypesDev = current2 !== null ? current2._debugHookTypes : null;
            hookTypesUpdateIndexDev = -1;
            ignorePreviousDependencies = current2 !== null && current2.type !== workInProgress2.type;
          }
          workInProgress2.memoizedState = null;
          workInProgress2.updateQueue = null;
          workInProgress2.lanes = NoLanes;
          {
            if (current2 !== null && current2.memoizedState !== null) {
              ReactCurrentDispatcher$1.current = HooksDispatcherOnUpdateInDEV;
            } else if (hookTypesDev !== null) {
              ReactCurrentDispatcher$1.current = HooksDispatcherOnMountWithHookTypesInDEV;
            } else {
              ReactCurrentDispatcher$1.current = HooksDispatcherOnMountInDEV;
            }
          }
          var children = Component(props, secondArg);
          if (didScheduleRenderPhaseUpdateDuringThisPass) {
            var numberOfReRenders = 0;
            do {
              didScheduleRenderPhaseUpdateDuringThisPass = false;
              localIdCounter = 0;
              if (numberOfReRenders >= RE_RENDER_LIMIT) {
                throw new Error("Too many re-renders. React limits the number of renders to prevent an infinite loop.");
              }
              numberOfReRenders += 1;
              {
                ignorePreviousDependencies = false;
              }
              currentHook = null;
              workInProgressHook = null;
              workInProgress2.updateQueue = null;
              {
                hookTypesUpdateIndexDev = -1;
              }
              ReactCurrentDispatcher$1.current = HooksDispatcherOnRerenderInDEV;
              children = Component(props, secondArg);
            } while (didScheduleRenderPhaseUpdateDuringThisPass);
          }
          ReactCurrentDispatcher$1.current = ContextOnlyDispatcher;
          {
            workInProgress2._debugHookTypes = hookTypesDev;
          }
          var didRenderTooFewHooks = currentHook !== null && currentHook.next !== null;
          renderLanes = NoLanes;
          currentlyRenderingFiber$1 = null;
          currentHook = null;
          workInProgressHook = null;
          {
            currentHookNameInDev = null;
            hookTypesDev = null;
            hookTypesUpdateIndexDev = -1;
            if (current2 !== null && (current2.flags & StaticMask) !== (workInProgress2.flags & StaticMask) && // Disable this warning in legacy mode, because legacy Suspense is weird
            // and creates false positives. To make this work in legacy mode, we'd
            // need to mark fibers that commit in an incomplete state, somehow. For
            // now I'll disable the warning that most of the bugs that would trigger
            // it are either exclusive to concurrent mode or exist in both.
            (current2.mode & ConcurrentMode) !== NoMode) {
              error("Internal React error: Expected static flag was missing. Please notify the React team.");
            }
          }
          didScheduleRenderPhaseUpdate = false;
          if (didRenderTooFewHooks) {
            throw new Error("Rendered fewer hooks than expected. This may be caused by an accidental early return statement.");
          }
          return children;
        }
        function checkDidRenderIdHook() {
          var didRenderIdHook = localIdCounter !== 0;
          localIdCounter = 0;
          return didRenderIdHook;
        }
        function bailoutHooks(current2, workInProgress2, lanes) {
          workInProgress2.updateQueue = current2.updateQueue;
          if ((workInProgress2.mode & StrictEffectsMode) !== NoMode) {
            workInProgress2.flags &= ~(MountPassiveDev | MountLayoutDev | Passive | Update);
          } else {
            workInProgress2.flags &= ~(Passive | Update);
          }
          current2.lanes = removeLanes(current2.lanes, lanes);
        }
        function resetHooksAfterThrow() {
          ReactCurrentDispatcher$1.current = ContextOnlyDispatcher;
          if (didScheduleRenderPhaseUpdate) {
            var hook = currentlyRenderingFiber$1.memoizedState;
            while (hook !== null) {
              var queue = hook.queue;
              if (queue !== null) {
                queue.pending = null;
              }
              hook = hook.next;
            }
            didScheduleRenderPhaseUpdate = false;
          }
          renderLanes = NoLanes;
          currentlyRenderingFiber$1 = null;
          currentHook = null;
          workInProgressHook = null;
          {
            hookTypesDev = null;
            hookTypesUpdateIndexDev = -1;
            currentHookNameInDev = null;
            isUpdatingOpaqueValueInRenderPhase = false;
          }
          didScheduleRenderPhaseUpdateDuringThisPass = false;
          localIdCounter = 0;
        }
        function mountWorkInProgressHook() {
          var hook = {
            memoizedState: null,
            baseState: null,
            baseQueue: null,
            queue: null,
            next: null
          };
          if (workInProgressHook === null) {
            currentlyRenderingFiber$1.memoizedState = workInProgressHook = hook;
          } else {
            workInProgressHook = workInProgressHook.next = hook;
          }
          return workInProgressHook;
        }
        function updateWorkInProgressHook() {
          var nextCurrentHook;
          if (currentHook === null) {
            var current2 = currentlyRenderingFiber$1.alternate;
            if (current2 !== null) {
              nextCurrentHook = current2.memoizedState;
            } else {
              nextCurrentHook = null;
            }
          } else {
            nextCurrentHook = currentHook.next;
          }
          var nextWorkInProgressHook;
          if (workInProgressHook === null) {
            nextWorkInProgressHook = currentlyRenderingFiber$1.memoizedState;
          } else {
            nextWorkInProgressHook = workInProgressHook.next;
          }
          if (nextWorkInProgressHook !== null) {
            workInProgressHook = nextWorkInProgressHook;
            nextWorkInProgressHook = workInProgressHook.next;
            currentHook = nextCurrentHook;
          } else {
            if (nextCurrentHook === null) {
              throw new Error("Rendered more hooks than during the previous render.");
            }
            currentHook = nextCurrentHook;
            var newHook = {
              memoizedState: currentHook.memoizedState,
              baseState: currentHook.baseState,
              baseQueue: currentHook.baseQueue,
              queue: currentHook.queue,
              next: null
            };
            if (workInProgressHook === null) {
              currentlyRenderingFiber$1.memoizedState = workInProgressHook = newHook;
            } else {
              workInProgressHook = workInProgressHook.next = newHook;
            }
          }
          return workInProgressHook;
        }
        function createFunctionComponentUpdateQueue() {
          return {
            lastEffect: null,
            stores: null
          };
        }
        function basicStateReducer(state, action) {
          return typeof action === "function" ? action(state) : action;
        }
        function mountReducer(reducer, initialArg, init) {
          var hook = mountWorkInProgressHook();
          var initialState;
          if (init !== void 0) {
            initialState = init(initialArg);
          } else {
            initialState = initialArg;
          }
          hook.memoizedState = hook.baseState = initialState;
          var queue = {
            pending: null,
            interleaved: null,
            lanes: NoLanes,
            dispatch: null,
            lastRenderedReducer: reducer,
            lastRenderedState: initialState
          };
          hook.queue = queue;
          var dispatch = queue.dispatch = dispatchReducerAction.bind(null, currentlyRenderingFiber$1, queue);
          return [hook.memoizedState, dispatch];
        }
        function updateReducer(reducer, initialArg, init) {
          var hook = updateWorkInProgressHook();
          var queue = hook.queue;
          if (queue === null) {
            throw new Error("Should have a queue. This is likely a bug in React. Please file an issue.");
          }
          queue.lastRenderedReducer = reducer;
          var current2 = currentHook;
          var baseQueue = current2.baseQueue;
          var pendingQueue = queue.pending;
          if (pendingQueue !== null) {
            if (baseQueue !== null) {
              var baseFirst = baseQueue.next;
              var pendingFirst = pendingQueue.next;
              baseQueue.next = pendingFirst;
              pendingQueue.next = baseFirst;
            }
            {
              if (current2.baseQueue !== baseQueue) {
                error("Internal error: Expected work-in-progress queue to be a clone. This is a bug in React.");
              }
            }
            current2.baseQueue = baseQueue = pendingQueue;
            queue.pending = null;
          }
          if (baseQueue !== null) {
            var first = baseQueue.next;
            var newState = current2.baseState;
            var newBaseState = null;
            var newBaseQueueFirst = null;
            var newBaseQueueLast = null;
            var update = first;
            do {
              var updateLane = update.lane;
              if (!isSubsetOfLanes(renderLanes, updateLane)) {
                var clone = {
                  lane: updateLane,
                  action: update.action,
                  hasEagerState: update.hasEagerState,
                  eagerState: update.eagerState,
                  next: null
                };
                if (newBaseQueueLast === null) {
                  newBaseQueueFirst = newBaseQueueLast = clone;
                  newBaseState = newState;
                } else {
                  newBaseQueueLast = newBaseQueueLast.next = clone;
                }
                currentlyRenderingFiber$1.lanes = mergeLanes(currentlyRenderingFiber$1.lanes, updateLane);
                markSkippedUpdateLanes(updateLane);
              } else {
                if (newBaseQueueLast !== null) {
                  var _clone = {
                    // This update is going to be committed so we never want uncommit
                    // it. Using NoLane works because 0 is a subset of all bitmasks, so
                    // this will never be skipped by the check above.
                    lane: NoLane,
                    action: update.action,
                    hasEagerState: update.hasEagerState,
                    eagerState: update.eagerState,
                    next: null
                  };
                  newBaseQueueLast = newBaseQueueLast.next = _clone;
                }
                if (update.hasEagerState) {
                  newState = update.eagerState;
                } else {
                  var action = update.action;
                  newState = reducer(newState, action);
                }
              }
              update = update.next;
            } while (update !== null && update !== first);
            if (newBaseQueueLast === null) {
              newBaseState = newState;
            } else {
              newBaseQueueLast.next = newBaseQueueFirst;
            }
            if (!objectIs(newState, hook.memoizedState)) {
              markWorkInProgressReceivedUpdate();
            }
            hook.memoizedState = newState;
            hook.baseState = newBaseState;
            hook.baseQueue = newBaseQueueLast;
            queue.lastRenderedState = newState;
          }
          var lastInterleaved = queue.interleaved;
          if (lastInterleaved !== null) {
            var interleaved = lastInterleaved;
            do {
              var interleavedLane = interleaved.lane;
              currentlyRenderingFiber$1.lanes = mergeLanes(currentlyRenderingFiber$1.lanes, interleavedLane);
              markSkippedUpdateLanes(interleavedLane);
              interleaved = interleaved.next;
            } while (interleaved !== lastInterleaved);
          } else if (baseQueue === null) {
            queue.lanes = NoLanes;
          }
          var dispatch = queue.dispatch;
          return [hook.memoizedState, dispatch];
        }
        function rerenderReducer(reducer, initialArg, init) {
          var hook = updateWorkInProgressHook();
          var queue = hook.queue;
          if (queue === null) {
            throw new Error("Should have a queue. This is likely a bug in React. Please file an issue.");
          }
          queue.lastRenderedReducer = reducer;
          var dispatch = queue.dispatch;
          var lastRenderPhaseUpdate = queue.pending;
          var newState = hook.memoizedState;
          if (lastRenderPhaseUpdate !== null) {
            queue.pending = null;
            var firstRenderPhaseUpdate = lastRenderPhaseUpdate.next;
            var update = firstRenderPhaseUpdate;
            do {
              var action = update.action;
              newState = reducer(newState, action);
              update = update.next;
            } while (update !== firstRenderPhaseUpdate);
            if (!objectIs(newState, hook.memoizedState)) {
              markWorkInProgressReceivedUpdate();
            }
            hook.memoizedState = newState;
            if (hook.baseQueue === null) {
              hook.baseState = newState;
            }
            queue.lastRenderedState = newState;
          }
          return [newState, dispatch];
        }
        function mountMutableSource(source, getSnapshot, subscribe) {
          {
            return void 0;
          }
        }
        function updateMutableSource(source, getSnapshot, subscribe) {
          {
            return void 0;
          }
        }
        function mountSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {
          var fiber = currentlyRenderingFiber$1;
          var hook = mountWorkInProgressHook();
          var nextSnapshot;
          var isHydrating2 = getIsHydrating();
          if (isHydrating2) {
            if (getServerSnapshot === void 0) {
              throw new Error("Missing getServerSnapshot, which is required for server-rendered content. Will revert to client rendering.");
            }
            nextSnapshot = getServerSnapshot();
            {
              if (!didWarnUncachedGetSnapshot) {
                if (nextSnapshot !== getServerSnapshot()) {
                  error("The result of getServerSnapshot should be cached to avoid an infinite loop");
                  didWarnUncachedGetSnapshot = true;
                }
              }
            }
          } else {
            nextSnapshot = getSnapshot();
            {
              if (!didWarnUncachedGetSnapshot) {
                var cachedSnapshot = getSnapshot();
                if (!objectIs(nextSnapshot, cachedSnapshot)) {
                  error("The result of getSnapshot should be cached to avoid an infinite loop");
                  didWarnUncachedGetSnapshot = true;
                }
              }
            }
            var root2 = getWorkInProgressRoot();
            if (root2 === null) {
              throw new Error("Expected a work-in-progress root. This is a bug in React. Please file an issue.");
            }
            if (!includesBlockingLane(root2, renderLanes)) {
              pushStoreConsistencyCheck(fiber, getSnapshot, nextSnapshot);
            }
          }
          hook.memoizedState = nextSnapshot;
          var inst = {
            value: nextSnapshot,
            getSnapshot
          };
          hook.queue = inst;
          mountEffect(subscribeToStore.bind(null, fiber, inst, subscribe), [subscribe]);
          fiber.flags |= Passive;
          pushEffect(HasEffect | Passive$1, updateStoreInstance.bind(null, fiber, inst, nextSnapshot, getSnapshot), void 0, null);
          return nextSnapshot;
        }
        function updateSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {
          var fiber = currentlyRenderingFiber$1;
          var hook = updateWorkInProgressHook();
          var nextSnapshot = getSnapshot();
          {
            if (!didWarnUncachedGetSnapshot) {
              var cachedSnapshot = getSnapshot();
              if (!objectIs(nextSnapshot, cachedSnapshot)) {
                error("The result of getSnapshot should be cached to avoid an infinite loop");
                didWarnUncachedGetSnapshot = true;
              }
            }
          }
          var prevSnapshot = hook.memoizedState;
          var snapshotChanged = !objectIs(prevSnapshot, nextSnapshot);
          if (snapshotChanged) {
            hook.memoizedState = nextSnapshot;
            markWorkInProgressReceivedUpdate();
          }
          var inst = hook.queue;
          updateEffect(subscribeToStore.bind(null, fiber, inst, subscribe), [subscribe]);
          if (inst.getSnapshot !== getSnapshot || snapshotChanged || // Check if the susbcribe function changed. We can save some memory by
          // checking whether we scheduled a subscription effect above.
          workInProgressHook !== null && workInProgressHook.memoizedState.tag & HasEffect) {
            fiber.flags |= Passive;
            pushEffect(HasEffect | Passive$1, updateStoreInstance.bind(null, fiber, inst, nextSnapshot, getSnapshot), void 0, null);
            var root2 = getWorkInProgressRoot();
            if (root2 === null) {
              throw new Error("Expected a work-in-progress root. This is a bug in React. Please file an issue.");
            }
            if (!includesBlockingLane(root2, renderLanes)) {
              pushStoreConsistencyCheck(fiber, getSnapshot, nextSnapshot);
            }
          }
          return nextSnapshot;
        }
        function pushStoreConsistencyCheck(fiber, getSnapshot, renderedSnapshot) {
          fiber.flags |= StoreConsistency;
          var check = {
            getSnapshot,
            value: renderedSnapshot
          };
          var componentUpdateQueue = currentlyRenderingFiber$1.updateQueue;
          if (componentUpdateQueue === null) {
            componentUpdateQueue = createFunctionComponentUpdateQueue();
            currentlyRenderingFiber$1.updateQueue = componentUpdateQueue;
            componentUpdateQueue.stores = [check];
          } else {
            var stores = componentUpdateQueue.stores;
            if (stores === null) {
              componentUpdateQueue.stores = [check];
            } else {
              stores.push(check);
            }
          }
        }
        function updateStoreInstance(fiber, inst, nextSnapshot, getSnapshot) {
          inst.value = nextSnapshot;
          inst.getSnapshot = getSnapshot;
          if (checkIfSnapshotChanged(inst)) {
            forceStoreRerender(fiber);
          }
        }
        function subscribeToStore(fiber, inst, subscribe) {
          var handleStoreChange = function() {
            if (checkIfSnapshotChanged(inst)) {
              forceStoreRerender(fiber);
            }
          };
          return subscribe(handleStoreChange);
        }
        function checkIfSnapshotChanged(inst) {
          var latestGetSnapshot = inst.getSnapshot;
          var prevValue = inst.value;
          try {
            var nextValue = latestGetSnapshot();
            return !objectIs(prevValue, nextValue);
          } catch (error2) {
            return true;
          }
        }
        function forceStoreRerender(fiber) {
          var root2 = enqueueConcurrentRenderForLane(fiber, SyncLane);
          if (root2 !== null) {
            scheduleUpdateOnFiber(root2, fiber, SyncLane, NoTimestamp);
          }
        }
        function mountState(initialState) {
          var hook = mountWorkInProgressHook();
          if (typeof initialState === "function") {
            initialState = initialState();
          }
          hook.memoizedState = hook.baseState = initialState;
          var queue = {
            pending: null,
            interleaved: null,
            lanes: NoLanes,
            dispatch: null,
            lastRenderedReducer: basicStateReducer,
            lastRenderedState: initialState
          };
          hook.queue = queue;
          var dispatch = queue.dispatch = dispatchSetState.bind(null, currentlyRenderingFiber$1, queue);
          return [hook.memoizedState, dispatch];
        }
        function updateState(initialState) {
          return updateReducer(basicStateReducer);
        }
        function rerenderState(initialState) {
          return rerenderReducer(basicStateReducer);
        }
        function pushEffect(tag, create, destroy, deps) {
          var effect = {
            tag,
            create,
            destroy,
            deps,
            // Circular
            next: null
          };
          var componentUpdateQueue = currentlyRenderingFiber$1.updateQueue;
          if (componentUpdateQueue === null) {
            componentUpdateQueue = createFunctionComponentUpdateQueue();
            currentlyRenderingFiber$1.updateQueue = componentUpdateQueue;
            componentUpdateQueue.lastEffect = effect.next = effect;
          } else {
            var lastEffect = componentUpdateQueue.lastEffect;
            if (lastEffect === null) {
              componentUpdateQueue.lastEffect = effect.next = effect;
            } else {
              var firstEffect = lastEffect.next;
              lastEffect.next = effect;
              effect.next = firstEffect;
              componentUpdateQueue.lastEffect = effect;
            }
          }
          return effect;
        }
        function mountRef(initialValue) {
          var hook = mountWorkInProgressHook();
          {
            var _ref2 = {
              current: initialValue
            };
            hook.memoizedState = _ref2;
            return _ref2;
          }
        }
        function updateRef(initialValue) {
          var hook = updateWorkInProgressHook();
          return hook.memoizedState;
        }
        function mountEffectImpl(fiberFlags, hookFlags, create, deps) {
          var hook = mountWorkInProgressHook();
          var nextDeps = deps === void 0 ? null : deps;
          currentlyRenderingFiber$1.flags |= fiberFlags;
          hook.memoizedState = pushEffect(HasEffect | hookFlags, create, void 0, nextDeps);
        }
        function updateEffectImpl(fiberFlags, hookFlags, create, deps) {
          var hook = updateWorkInProgressHook();
          var nextDeps = deps === void 0 ? null : deps;
          var destroy = void 0;
          if (currentHook !== null) {
            var prevEffect = currentHook.memoizedState;
            destroy = prevEffect.destroy;
            if (nextDeps !== null) {
              var prevDeps = prevEffect.deps;
              if (areHookInputsEqual(nextDeps, prevDeps)) {
                hook.memoizedState = pushEffect(hookFlags, create, destroy, nextDeps);
                return;
              }
            }
          }
          currentlyRenderingFiber$1.flags |= fiberFlags;
          hook.memoizedState = pushEffect(HasEffect | hookFlags, create, destroy, nextDeps);
        }
        function mountEffect(create, deps) {
          if ((currentlyRenderingFiber$1.mode & StrictEffectsMode) !== NoMode) {
            return mountEffectImpl(MountPassiveDev | Passive | PassiveStatic, Passive$1, create, deps);
          } else {
            return mountEffectImpl(Passive | PassiveStatic, Passive$1, create, deps);
          }
        }
        function updateEffect(create, deps) {
          return updateEffectImpl(Passive, Passive$1, create, deps);
        }
        function mountInsertionEffect(create, deps) {
          return mountEffectImpl(Update, Insertion, create, deps);
        }
        function updateInsertionEffect(create, deps) {
          return updateEffectImpl(Update, Insertion, create, deps);
        }
        function mountLayoutEffect(create, deps) {
          var fiberFlags = Update;
          {
            fiberFlags |= LayoutStatic;
          }
          if ((currentlyRenderingFiber$1.mode & StrictEffectsMode) !== NoMode) {
            fiberFlags |= MountLayoutDev;
          }
          return mountEffectImpl(fiberFlags, Layout, create, deps);
        }
        function updateLayoutEffect(create, deps) {
          return updateEffectImpl(Update, Layout, create, deps);
        }
        function imperativeHandleEffect(create, ref) {
          if (typeof ref === "function") {
            var refCallback = ref;
            var _inst = create();
            refCallback(_inst);
            return function() {
              refCallback(null);
            };
          } else if (ref !== null && ref !== void 0) {
            var refObject = ref;
            {
              if (!refObject.hasOwnProperty("current")) {
                error("Expected useImperativeHandle() first argument to either be a ref callback or React.createRef() object. Instead received: %s.", "an object with keys {" + Object.keys(refObject).join(", ") + "}");
              }
            }
            var _inst2 = create();
            refObject.current = _inst2;
            return function() {
              refObject.current = null;
            };
          }
        }
        function mountImperativeHandle(ref, create, deps) {
          {
            if (typeof create !== "function") {
              error("Expected useImperativeHandle() second argument to be a function that creates a handle. Instead received: %s.", create !== null ? typeof create : "null");
            }
          }
          var effectDeps = deps !== null && deps !== void 0 ? deps.concat([ref]) : null;
          var fiberFlags = Update;
          {
            fiberFlags |= LayoutStatic;
          }
          if ((currentlyRenderingFiber$1.mode & StrictEffectsMode) !== NoMode) {
            fiberFlags |= MountLayoutDev;
          }
          return mountEffectImpl(fiberFlags, Layout, imperativeHandleEffect.bind(null, create, ref), effectDeps);
        }
        function updateImperativeHandle(ref, create, deps) {
          {
            if (typeof create !== "function") {
              error("Expected useImperativeHandle() second argument to be a function that creates a handle. Instead received: %s.", create !== null ? typeof create : "null");
            }
          }
          var effectDeps = deps !== null && deps !== void 0 ? deps.concat([ref]) : null;
          return updateEffectImpl(Update, Layout, imperativeHandleEffect.bind(null, create, ref), effectDeps);
        }
        function mountDebugValue(value, formatterFn) {
        }
        var updateDebugValue = mountDebugValue;
        function mountCallback(callback, deps) {
          var hook = mountWorkInProgressHook();
          var nextDeps = deps === void 0 ? null : deps;
          hook.memoizedState = [callback, nextDeps];
          return callback;
        }
        function updateCallback(callback, deps) {
          var hook = updateWorkInProgressHook();
          var nextDeps = deps === void 0 ? null : deps;
          var prevState = hook.memoizedState;
          if (prevState !== null) {
            if (nextDeps !== null) {
              var prevDeps = prevState[1];
              if (areHookInputsEqual(nextDeps, prevDeps)) {
                return prevState[0];
              }
            }
          }
          hook.memoizedState = [callback, nextDeps];
          return callback;
        }
        function mountMemo(nextCreate, deps) {
          var hook = mountWorkInProgressHook();
          var nextDeps = deps === void 0 ? null : deps;
          var nextValue = nextCreate();
          hook.memoizedState = [nextValue, nextDeps];
          return nextValue;
        }
        function updateMemo(nextCreate, deps) {
          var hook = updateWorkInProgressHook();
          var nextDeps = deps === void 0 ? null : deps;
          var prevState = hook.memoizedState;
          if (prevState !== null) {
            if (nextDeps !== null) {
              var prevDeps = prevState[1];
              if (areHookInputsEqual(nextDeps, prevDeps)) {
                return prevState[0];
              }
            }
          }
          var nextValue = nextCreate();
          hook.memoizedState = [nextValue, nextDeps];
          return nextValue;
        }
        function mountDeferredValue(value) {
          var hook = mountWorkInProgressHook();
          hook.memoizedState = value;
          return value;
        }
        function updateDeferredValue(value) {
          var hook = updateWorkInProgressHook();
          var resolvedCurrentHook = currentHook;
          var prevValue = resolvedCurrentHook.memoizedState;
          return updateDeferredValueImpl(hook, prevValue, value);
        }
        function rerenderDeferredValue(value) {
          var hook = updateWorkInProgressHook();
          if (currentHook === null) {
            hook.memoizedState = value;
            return value;
          } else {
            var prevValue = currentHook.memoizedState;
            return updateDeferredValueImpl(hook, prevValue, value);
          }
        }
        function updateDeferredValueImpl(hook, prevValue, value) {
          var shouldDeferValue = !includesOnlyNonUrgentLanes(renderLanes);
          if (shouldDeferValue) {
            if (!objectIs(value, prevValue)) {
              var deferredLane = claimNextTransitionLane();
              currentlyRenderingFiber$1.lanes = mergeLanes(currentlyRenderingFiber$1.lanes, deferredLane);
              markSkippedUpdateLanes(deferredLane);
              hook.baseState = true;
            }
            return prevValue;
          } else {
            if (hook.baseState) {
              hook.baseState = false;
              markWorkInProgressReceivedUpdate();
            }
            hook.memoizedState = value;
            return value;
          }
        }
        function startTransition(setPending, callback, options2) {
          var previousPriority = getCurrentUpdatePriority();
          setCurrentUpdatePriority(higherEventPriority(previousPriority, ContinuousEventPriority));
          setPending(true);
          var prevTransition = ReactCurrentBatchConfig$2.transition;
          ReactCurrentBatchConfig$2.transition = {};
          var currentTransition = ReactCurrentBatchConfig$2.transition;
          {
            ReactCurrentBatchConfig$2.transition._updatedFibers = /* @__PURE__ */ new Set();
          }
          try {
            setPending(false);
            callback();
          } finally {
            setCurrentUpdatePriority(previousPriority);
            ReactCurrentBatchConfig$2.transition = prevTransition;
            {
              if (prevTransition === null && currentTransition._updatedFibers) {
                var updatedFibersCount = currentTransition._updatedFibers.size;
                if (updatedFibersCount > 10) {
                  warn("Detected a large number of updates inside startTransition. If this is due to a subscription please re-write it to use React provided hooks. Otherwise concurrent mode guarantees are off the table.");
                }
                currentTransition._updatedFibers.clear();
              }
            }
          }
        }
        function mountTransition() {
          var _mountState = mountState(false), isPending = _mountState[0], setPending = _mountState[1];
          var start = startTransition.bind(null, setPending);
          var hook = mountWorkInProgressHook();
          hook.memoizedState = start;
          return [isPending, start];
        }
        function updateTransition() {
          var _updateState = updateState(), isPending = _updateState[0];
          var hook = updateWorkInProgressHook();
          var start = hook.memoizedState;
          return [isPending, start];
        }
        function rerenderTransition() {
          var _rerenderState = rerenderState(), isPending = _rerenderState[0];
          var hook = updateWorkInProgressHook();
          var start = hook.memoizedState;
          return [isPending, start];
        }
        var isUpdatingOpaqueValueInRenderPhase = false;
        function getIsUpdatingOpaqueValueInRenderPhaseInDEV() {
          {
            return isUpdatingOpaqueValueInRenderPhase;
          }
        }
        function mountId() {
          var hook = mountWorkInProgressHook();
          var root2 = getWorkInProgressRoot();
          var identifierPrefix = root2.identifierPrefix;
          var id;
          if (getIsHydrating()) {
            var treeId = getTreeId();
            id = ":" + identifierPrefix + "R" + treeId;
            var localId = localIdCounter++;
            if (localId > 0) {
              id += "H" + localId.toString(32);
            }
            id += ":";
          } else {
            var globalClientId = globalClientIdCounter++;
            id = ":" + identifierPrefix + "r" + globalClientId.toString(32) + ":";
          }
          hook.memoizedState = id;
          return id;
        }
        function updateId() {
          var hook = updateWorkInProgressHook();
          var id = hook.memoizedState;
          return id;
        }
        function dispatchReducerAction(fiber, queue, action) {
          {
            if (typeof arguments[3] === "function") {
              error("State updates from the useState() and useReducer() Hooks don't support the second callback argument. To execute a side effect after rendering, declare it in the component body with useEffect().");
            }
          }
          var lane = requestUpdateLane(fiber);
          var update = {
            lane,
            action,
            hasEagerState: false,
            eagerState: null,
            next: null
          };
          if (isRenderPhaseUpdate(fiber)) {
            enqueueRenderPhaseUpdate(queue, update);
          } else {
            var root2 = enqueueConcurrentHookUpdate(fiber, queue, update, lane);
            if (root2 !== null) {
              var eventTime = requestEventTime();
              scheduleUpdateOnFiber(root2, fiber, lane, eventTime);
              entangleTransitionUpdate(root2, queue, lane);
            }
          }
          markUpdateInDevTools(fiber, lane);
        }
        function dispatchSetState(fiber, queue, action) {
          {
            if (typeof arguments[3] === "function") {
              error("State updates from the useState() and useReducer() Hooks don't support the second callback argument. To execute a side effect after rendering, declare it in the component body with useEffect().");
            }
          }
          var lane = requestUpdateLane(fiber);
          var update = {
            lane,
            action,
            hasEagerState: false,
            eagerState: null,
            next: null
          };
          if (isRenderPhaseUpdate(fiber)) {
            enqueueRenderPhaseUpdate(queue, update);
          } else {
            var alternate = fiber.alternate;
            if (fiber.lanes === NoLanes && (alternate === null || alternate.lanes === NoLanes)) {
              var lastRenderedReducer = queue.lastRenderedReducer;
              if (lastRenderedReducer !== null) {
                var prevDispatcher;
                {
                  prevDispatcher = ReactCurrentDispatcher$1.current;
                  ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
                }
                try {
                  var currentState = queue.lastRenderedState;
                  var eagerState = lastRenderedReducer(currentState, action);
                  update.hasEagerState = true;
                  update.eagerState = eagerState;
                  if (objectIs(eagerState, currentState)) {
                    enqueueConcurrentHookUpdateAndEagerlyBailout(fiber, queue, update, lane);
                    return;
                  }
                } catch (error2) {
                } finally {
                  {
                    ReactCurrentDispatcher$1.current = prevDispatcher;
                  }
                }
              }
            }
            var root2 = enqueueConcurrentHookUpdate(fiber, queue, update, lane);
            if (root2 !== null) {
              var eventTime = requestEventTime();
              scheduleUpdateOnFiber(root2, fiber, lane, eventTime);
              entangleTransitionUpdate(root2, queue, lane);
            }
          }
          markUpdateInDevTools(fiber, lane);
        }
        function isRenderPhaseUpdate(fiber) {
          var alternate = fiber.alternate;
          return fiber === currentlyRenderingFiber$1 || alternate !== null && alternate === currentlyRenderingFiber$1;
        }
        function enqueueRenderPhaseUpdate(queue, update) {
          didScheduleRenderPhaseUpdateDuringThisPass = didScheduleRenderPhaseUpdate = true;
          var pending = queue.pending;
          if (pending === null) {
            update.next = update;
          } else {
            update.next = pending.next;
            pending.next = update;
          }
          queue.pending = update;
        }
        function entangleTransitionUpdate(root2, queue, lane) {
          if (isTransitionLane(lane)) {
            var queueLanes = queue.lanes;
            queueLanes = intersectLanes(queueLanes, root2.pendingLanes);
            var newQueueLanes = mergeLanes(queueLanes, lane);
            queue.lanes = newQueueLanes;
            markRootEntangled(root2, newQueueLanes);
          }
        }
        function markUpdateInDevTools(fiber, lane, action) {
          {
            markStateUpdateScheduled(fiber, lane);
          }
        }
        var ContextOnlyDispatcher = {
          readContext,
          useCallback: throwInvalidHookError,
          useContext: throwInvalidHookError,
          useEffect: throwInvalidHookError,
          useImperativeHandle: throwInvalidHookError,
          useInsertionEffect: throwInvalidHookError,
          useLayoutEffect: throwInvalidHookError,
          useMemo: throwInvalidHookError,
          useReducer: throwInvalidHookError,
          useRef: throwInvalidHookError,
          useState: throwInvalidHookError,
          useDebugValue: throwInvalidHookError,
          useDeferredValue: throwInvalidHookError,
          useTransition: throwInvalidHookError,
          useMutableSource: throwInvalidHookError,
          useSyncExternalStore: throwInvalidHookError,
          useId: throwInvalidHookError,
          unstable_isNewReconciler: enableNewReconciler
        };
        var HooksDispatcherOnMountInDEV = null;
        var HooksDispatcherOnMountWithHookTypesInDEV = null;
        var HooksDispatcherOnUpdateInDEV = null;
        var HooksDispatcherOnRerenderInDEV = null;
        var InvalidNestedHooksDispatcherOnMountInDEV = null;
        var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
        var InvalidNestedHooksDispatcherOnRerenderInDEV = null;
        {
          var warnInvalidContextAccess = function() {
            error("Context can only be read while React is rendering. In classes, you can read it in the render method or getDerivedStateFromProps. In function components, you can read it directly in the function body, but not inside Hooks like useReducer() or useMemo().");
          };
          var warnInvalidHookAccess = function() {
            error("Do not call Hooks inside useEffect(...), useMemo(...), or other built-in Hooks. You can only call Hooks at the top level of your React function. For more information, see https://reactjs.org/link/rules-of-hooks");
          };
          HooksDispatcherOnMountInDEV = {
            readContext: function(context) {
              return readContext(context);
            },
            useCallback: function(callback, deps) {
              currentHookNameInDev = "useCallback";
              mountHookTypesDev();
              checkDepsAreArrayDev(deps);
              return mountCallback(callback, deps);
            },
            useContext: function(context) {
              currentHookNameInDev = "useContext";
              mountHookTypesDev();
              return readContext(context);
            },
            useEffect: function(create, deps) {
              currentHookNameInDev = "useEffect";
              mountHookTypesDev();
              checkDepsAreArrayDev(deps);
              return mountEffect(create, deps);
            },
            useImperativeHandle: function(ref, create, deps) {
              currentHookNameInDev = "useImperativeHandle";
              mountHookTypesDev();
              checkDepsAreArrayDev(deps);
              return mountImperativeHandle(ref, create, deps);
            },
            useInsertionEffect: function(create, deps) {
              currentHookNameInDev = "useInsertionEffect";
              mountHookTypesDev();
              checkDepsAreArrayDev(deps);
              return mountInsertionEffect(create, deps);
            },
            useLayoutEffect: function(create, deps) {
              currentHookNameInDev = "useLayoutEffect";
              mountHookTypesDev();
              checkDepsAreArrayDev(deps);
              return mountLayoutEffect(create, deps);
            },
            useMemo: function(create, deps) {
              currentHookNameInDev = "useMemo";
              mountHookTypesDev();
              checkDepsAreArrayDev(deps);
              var prevDispatcher = ReactCurrentDispatcher$1.current;
              ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
              try {
                return mountMemo(create, deps);
              } finally {
                ReactCurrentDispatcher$1.current = prevDispatcher;
              }
            },
            useReducer: function(reducer, initialArg, init) {
              currentHookNameInDev = "useReducer";
              mountHookTypesDev();
              var prevDispatcher = ReactCurrentDispatcher$1.current;
              ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
              try {
                return mountReducer(reducer, initialArg, init);
              } finally {
                ReactCurrentDispatcher$1.current = prevDispatcher;
              }
            },
            useRef: function(initialValue) {
              currentHookNameInDev = "useRef";
              mountHookTypesDev();
              return mountRef(initialValue);
            },
            useState: function(initialState) {
              currentHookNameInDev = "useState";
              mountHookTypesDev();
              var prevDispatcher = ReactCurrentDispatcher$1.current;
              ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
              try {
                return mountState(initialState);
              } finally {
                ReactCurrentDispatcher$1.current = prevDispatcher;
              }
            },
            useDebugValue: function(value, formatterFn) {
              currentHookNameInDev = "useDebugValue";
              mountHookTypesDev();
              return mountDebugValue();
            },
            useDeferredValue: function(value) {
              currentHookNameInDev = "useDeferredValue";
              mountHookTypesDev();
              return mountDeferredValue(value);
            },
            useTransition: function() {
              currentHookNameInDev = "useTransition";
              mountHookTypesDev();
              return mountTransition();
            },
            useMutableSource: function(source, getSnapshot, subscribe) {
              currentHookNameInDev = "useMutableSource";
              mountHookTypesDev();
              return mountMutableSource();
            },
            useSyncExternalStore: function(subscribe, getSnapshot, getServerSnapshot) {
              currentHookNameInDev = "useSyncExternalStore";
              mountHookTypesDev();
              return mountSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
            },
            useId: function() {
              currentHookNameInDev = "useId";
              mountHookTypesDev();
              return mountId();
            },
            unstable_isNewReconciler: enableNewReconciler
          };
          HooksDispatcherOnMountWithHookTypesInDEV = {
            readContext: function(context) {
              return readContext(context);
            },
            useCallback: function(callback, deps) {
              currentHookNameInDev = "useCallback";
              updateHookTypesDev();
              return mountCallback(callback, deps);
            },
            useContext: function(context) {
              currentHookNameInDev = "useContext";
              updateHookTypesDev();
              return readContext(context);
            },
            useEffect: function(create, deps) {
              currentHookNameInDev = "useEffect";
              updateHookTypesDev();
              return mountEffect(create, deps);
            },
            useImperativeHandle: function(ref, create, deps) {
              currentHookNameInDev = "useImperativeHandle";
              updateHookTypesDev();
              return mountImperativeHandle(ref, create, deps);
            },
            useInsertionEffect: function(create, deps) {
              currentHookNameInDev = "useInsertionEffect";
              updateHookTypesDev();
              return mountInsertionEffect(create, deps);
            },
            useLayoutEffect: function(create, deps) {
              currentHookNameInDev = "useLayoutEffect";
              updateHookTypesDev();
              return mountLayoutEffect(create, deps);
            },
            useMemo: function(create, deps) {
              currentHookNameInDev = "useMemo";
              updateHookTypesDev();
              var prevDispatcher = ReactCurrentDispatcher$1.current;
              ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
              try {
                return mountMemo(create, deps);
              } finally {
                ReactCurrentDispatcher$1.current = prevDispatcher;
              }
            },
            useReducer: function(reducer, initialArg, init) {
              currentHookNameInDev = "useReducer";
              updateHookTypesDev();
              var prevDispatcher = ReactCurrentDispatcher$1.current;
              ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
              try {
                return mountReducer(reducer, initialArg, init);
              } finally {
                ReactCurrentDispatcher$1.current = prevDispatcher;
              }
            },
            useRef: function(initialValue) {
              currentHookNameInDev = "useRef";
              updateHookTypesDev();
              return mountRef(initialValue);
            },
            useState: function(initialState) {
              currentHookNameInDev = "useState";
              updateHookTypesDev();
              var prevDispatcher = ReactCurrentDispatcher$1.current;
              ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
              try {
                return mountState(initialState);
              } finally {
                ReactCurrentDispatcher$1.current = prevDispatcher;
              }
            },
            useDebugValue: function(value, formatterFn) {
              currentHookNameInDev = "useDebugValue";
              updateHookTypesDev();
              return mountDebugValue();
            },
            useDeferredValue: function(value) {
              currentHookNameInDev = "useDeferredValue";
              updateHookTypesDev();
              return mountDeferredValue(value);
            },
            useTransition: function() {
              currentHookNameInDev = "useTransition";
              updateHookTypesDev();
              return mountTransition();
            },
            useMutableSource: function(source, getSnapshot, subscribe) {
              currentHookNameInDev = "useMutableSource";
              updateHookTypesDev();
              return mountMutableSource();
            },
            useSyncExternalStore: function(subscribe, getSnapshot, getServerSnapshot) {
              currentHookNameInDev = "useSyncExternalStore";
              updateHookTypesDev();
              return mountSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
            },
            useId: function() {
              currentHookNameInDev = "useId";
              updateHookTypesDev();
              return mountId();
            },
            unstable_isNewReconciler: enableNewReconciler
          };
          HooksDispatcherOnUpdateInDEV = {
            readContext: function(context) {
              return readContext(context);
            },
            useCallback: function(callback, deps) {
              currentHookNameInDev = "useCallback";
              updateHookTypesDev();
              return updateCallback(callback, deps);
            },
            useContext: function(context) {
              currentHookNameInDev = "useContext";
              updateHookTypesDev();
              return readContext(context);
            },
            useEffect: function(create, deps) {
              currentHookNameInDev = "useEffect";
              updateHookTypesDev();
              return updateEffect(create, deps);
            },
            useImperativeHandle: function(ref, create, deps) {
              currentHookNameInDev = "useImperativeHandle";
              updateHookTypesDev();
              return updateImperativeHandle(ref, create, deps);
            },
            useInsertionEffect: function(create, deps) {
              currentHookNameInDev = "useInsertionEffect";
              updateHookTypesDev();
              return updateInsertionEffect(create, deps);
            },
            useLayoutEffect: function(create, deps) {
              currentHookNameInDev = "useLayoutEffect";
              updateHookTypesDev();
              return updateLayoutEffect(create, deps);
            },
            useMemo: function(create, deps) {
              currentHookNameInDev = "useMemo";
              updateHookTypesDev();
              var prevDispatcher = ReactCurrentDispatcher$1.current;
              ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
              try {
                return updateMemo(create, deps);
              } finally {
                ReactCurrentDispatcher$1.current = prevDispatcher;
              }
            },
            useReducer: function(reducer, initialArg, init) {
              currentHookNameInDev = "useReducer";
              updateHookTypesDev();
              var prevDispatcher = ReactCurrentDispatcher$1.current;
              ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
              try {
                return updateReducer(reducer, initialArg, init);
              } finally {
                ReactCurrentDispatcher$1.current = prevDispatcher;
              }
            },
            useRef: function(initialValue) {
              currentHookNameInDev = "useRef";
              updateHookTypesDev();
              return updateRef();
            },
            useState: function(initialState) {
              currentHookNameInDev = "useState";
              updateHookTypesDev();
              var prevDispatcher = ReactCurrentDispatcher$1.current;
              ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
              try {
                return updateState(initialState);
              } finally {
                ReactCurrentDispatcher$1.current = prevDispatcher;
              }
            },
            useDebugValue: function(value, formatterFn) {
              currentHookNameInDev = "useDebugValue";
              updateHookTypesDev();
              return updateDebugValue();
            },
            useDeferredValue: function(value) {
              currentHookNameInDev = "useDeferredValue";
              updateHookTypesDev();
              return updateDeferredValue(value);
            },
            useTransition: function() {
              currentHookNameInDev = "useTransition";
              updateHookTypesDev();
              return updateTransition();
            },
            useMutableSource: function(source, getSnapshot, subscribe) {
              currentHookNameInDev = "useMutableSource";
              updateHookTypesDev();
              return updateMutableSource();
            },
            useSyncExternalStore: function(subscribe, getSnapshot, getServerSnapshot) {
              currentHookNameInDev = "useSyncExternalStore";
              updateHookTypesDev();
              return updateSyncExternalStore(subscribe, getSnapshot);
            },
            useId: function() {
              currentHookNameInDev = "useId";
              updateHookTypesDev();
              return updateId();
            },
            unstable_isNewReconciler: enableNewReconciler
          };
          HooksDispatcherOnRerenderInDEV = {
            readContext: function(context) {
              return readContext(context);
            },
            useCallback: function(callback, deps) {
              currentHookNameInDev = "useCallback";
              updateHookTypesDev();
              return updateCallback(callback, deps);
            },
            useContext: function(context) {
              currentHookNameInDev = "useContext";
              updateHookTypesDev();
              return readContext(context);
            },
            useEffect: function(create, deps) {
              currentHookNameInDev = "useEffect";
              updateHookTypesDev();
              return updateEffect(create, deps);
            },
            useImperativeHandle: function(ref, create, deps) {
              currentHookNameInDev = "useImperativeHandle";
              updateHookTypesDev();
              return updateImperativeHandle(ref, create, deps);
            },
            useInsertionEffect: function(create, deps) {
              currentHookNameInDev = "useInsertionEffect";
              updateHookTypesDev();
              return updateInsertionEffect(create, deps);
            },
            useLayoutEffect: function(create, deps) {
              currentHookNameInDev = "useLayoutEffect";
              updateHookTypesDev();
              return updateLayoutEffect(create, deps);
            },
            useMemo: function(create, deps) {
              currentHookNameInDev = "useMemo";
              updateHookTypesDev();
              var prevDispatcher = ReactCurrentDispatcher$1.current;
              ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnRerenderInDEV;
              try {
                return updateMemo(create, deps);
              } finally {
                ReactCurrentDispatcher$1.current = prevDispatcher;
              }
            },
            useReducer: function(reducer, initialArg, init) {
              currentHookNameInDev = "useReducer";
              updateHookTypesDev();
              var prevDispatcher = ReactCurrentDispatcher$1.current;
              ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnRerenderInDEV;
              try {
                return rerenderReducer(reducer, initialArg, init);
              } finally {
                ReactCurrentDispatcher$1.current = prevDispatcher;
              }
            },
            useRef: function(initialValue) {
              currentHookNameInDev = "useRef";
              updateHookTypesDev();
              return updateRef();
            },
            useState: function(initialState) {
              currentHookNameInDev = "useState";
              updateHookTypesDev();
              var prevDispatcher = ReactCurrentDispatcher$1.current;
              ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnRerenderInDEV;
              try {
                return rerenderState(initialState);
              } finally {
                ReactCurrentDispatcher$1.current = prevDispatcher;
              }
            },
            useDebugValue: function(value, formatterFn) {
              currentHookNameInDev = "useDebugValue";
              updateHookTypesDev();
              return updateDebugValue();
            },
            useDeferredValue: function(value) {
              currentHookNameInDev = "useDeferredValue";
              updateHookTypesDev();
              return rerenderDeferredValue(value);
            },
            useTransition: function() {
              currentHookNameInDev = "useTransition";
              updateHookTypesDev();
              return rerenderTransition();
            },
            useMutableSource: function(source, getSnapshot, subscribe) {
              currentHookNameInDev = "useMutableSource";
              updateHookTypesDev();
              return updateMutableSource();
            },
            useSyncExternalStore: function(subscribe, getSnapshot, getServerSnapshot) {
              currentHookNameInDev = "useSyncExternalStore";
              updateHookTypesDev();
              return updateSyncExternalStore(subscribe, getSnapshot);
            },
            useId: function() {
              currentHookNameInDev = "useId";
              updateHookTypesDev();
              return updateId();
            },
            unstable_isNewReconciler: enableNewReconciler
          };
          InvalidNestedHooksDispatcherOnMountInDEV = {
            readContext: function(context) {
              warnInvalidContextAccess();
              return readContext(context);
            },
            useCallback: function(callback, deps) {
              currentHookNameInDev = "useCallback";
              warnInvalidHookAccess();
              mountHookTypesDev();
              return mountCallback(callback, deps);
            },
            useContext: function(context) {
              currentHookNameInDev = "useContext";
              warnInvalidHookAccess();
              mountHookTypesDev();
              return readContext(context);
            },
            useEffect: function(create, deps) {
              currentHookNameInDev = "useEffect";
              warnInvalidHookAccess();
              mountHookTypesDev();
              return mountEffect(create, deps);
            },
            useImperativeHandle: function(ref, create, deps) {
              currentHookNameInDev = "useImperativeHandle";
              warnInvalidHookAccess();
              mountHookTypesDev();
              return mountImperativeHandle(ref, create, deps);
            },
            useInsertionEffect: function(create, deps) {
              currentHookNameInDev = "useInsertionEffect";
              warnInvalidHookAccess();
              mountHookTypesDev();
              return mountInsertionEffect(create, deps);
            },
            useLayoutEffect: function(create, deps) {
              currentHookNameInDev = "useLayoutEffect";
              warnInvalidHookAccess();
              mountHookTypesDev();
              return mountLayoutEffect(create, deps);
            },
            useMemo: function(create, deps) {
              currentHookNameInDev = "useMemo";
              warnInvalidHookAccess();
              mountHookTypesDev();
              var prevDispatcher = ReactCurrentDispatcher$1.current;
              ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
              try {
                return mountMemo(create, deps);
              } finally {
                ReactCurrentDispatcher$1.current = prevDispatcher;
              }
            },
            useReducer: function(reducer, initialArg, init) {
              currentHookNameInDev = "useReducer";
              warnInvalidHookAccess();
              mountHookTypesDev();
              var prevDispatcher = ReactCurrentDispatcher$1.current;
              ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
              try {
                return mountReducer(reducer, initialArg, init);
              } finally {
                ReactCurrentDispatcher$1.current = prevDispatcher;
              }
            },
            useRef: function(initialValue) {
              currentHookNameInDev = "useRef";
              warnInvalidHookAccess();
              mountHookTypesDev();
              return mountRef(initialValue);
            },
            useState: function(initialState) {
              currentHookNameInDev = "useState";
              warnInvalidHookAccess();
              mountHookTypesDev();
              var prevDispatcher = ReactCurrentDispatcher$1.current;
              ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
              try {
                return mountState(initialState);
              } finally {
                ReactCurrentDispatcher$1.current = prevDispatcher;
              }
            },
            useDebugValue: function(value, formatterFn) {
              currentHookNameInDev = "useDebugValue";
              warnInvalidHookAccess();
              mountHookTypesDev();
              return mountDebugValue();
            },
            useDeferredValue: function(value) {
              currentHookNameInDev = "useDeferredValue";
              warnInvalidHookAccess();
              mountHookTypesDev();
              return mountDeferredValue(value);
            },
            useTransition: function() {
              currentHookNameInDev = "useTransition";
              warnInvalidHookAccess();
              mountHookTypesDev();
              return mountTransition();
            },
            useMutableSource: function(source, getSnapshot, subscribe) {
              currentHookNameInDev = "useMutableSource";
              warnInvalidHookAccess();
              mountHookTypesDev();
              return mountMutableSource();
            },
            useSyncExternalStore: function(subscribe, getSnapshot, getServerSnapshot) {
              currentHookNameInDev = "useSyncExternalStore";
              warnInvalidHookAccess();
              mountHookTypesDev();
              return mountSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
            },
            useId: function() {
              currentHookNameInDev = "useId";
              warnInvalidHookAccess();
              mountHookTypesDev();
              return mountId();
            },
            unstable_isNewReconciler: enableNewReconciler
          };
          InvalidNestedHooksDispatcherOnUpdateInDEV = {
            readContext: function(context) {
              warnInvalidContextAccess();
              return readContext(context);
            },
            useCallback: function(callback, deps) {
              currentHookNameInDev = "useCallback";
              warnInvalidHookAccess();
              updateHookTypesDev();
              return updateCallback(callback, deps);
            },
            useContext: function(context) {
              currentHookNameInDev = "useContext";
              warnInvalidHookAccess();
              updateHookTypesDev();
              return readContext(context);
            },
            useEffect: function(create, deps) {
              currentHookNameInDev = "useEffect";
              warnInvalidHookAccess();
              updateHookTypesDev();
              return updateEffect(create, deps);
            },
            useImperativeHandle: function(ref, create, deps) {
              currentHookNameInDev = "useImperativeHandle";
              warnInvalidHookAccess();
              updateHookTypesDev();
              return updateImperativeHandle(ref, create, deps);
            },
            useInsertionEffect: function(create, deps) {
              currentHookNameInDev = "useInsertionEffect";
              warnInvalidHookAccess();
              updateHookTypesDev();
              return updateInsertionEffect(create, deps);
            },
            useLayoutEffect: function(create, deps) {
              currentHookNameInDev = "useLayoutEffect";
              warnInvalidHookAccess();
              updateHookTypesDev();
              return updateLayoutEffect(create, deps);
            },
            useMemo: function(create, deps) {
              currentHookNameInDev = "useMemo";
              warnInvalidHookAccess();
              updateHookTypesDev();
              var prevDispatcher = ReactCurrentDispatcher$1.current;
              ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
              try {
                return updateMemo(create, deps);
              } finally {
                ReactCurrentDispatcher$1.current = prevDispatcher;
              }
            },
            useReducer: function(reducer, initialArg, init) {
              currentHookNameInDev = "useReducer";
              warnInvalidHookAccess();
              updateHookTypesDev();
              var prevDispatcher = ReactCurrentDispatcher$1.current;
              ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
              try {
                return updateReducer(reducer, initialArg, init);
              } finally {
                ReactCurrentDispatcher$1.current = prevDispatcher;
              }
            },
            useRef: function(initialValue) {
              currentHookNameInDev = "useRef";
              warnInvalidHookAccess();
              updateHookTypesDev();
              return updateRef();
            },
            useState: function(initialState) {
              currentHookNameInDev = "useState";
              warnInvalidHookAccess();
              updateHookTypesDev();
              var prevDispatcher = ReactCurrentDispatcher$1.current;
              ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
              try {
                return updateState(initialState);
              } finally {
                ReactCurrentDispatcher$1.current = prevDispatcher;
              }
            },
            useDebugValue: function(value, formatterFn) {
              currentHookNameInDev = "useDebugValue";
              warnInvalidHookAccess();
              updateHookTypesDev();
              return updateDebugValue();
            },
            useDeferredValue: function(value) {
              currentHookNameInDev = "useDeferredValue";
              warnInvalidHookAccess();
              updateHookTypesDev();
              return updateDeferredValue(value);
            },
            useTransition: function() {
              currentHookNameInDev = "useTransition";
              warnInvalidHookAccess();
              updateHookTypesDev();
              return updateTransition();
            },
            useMutableSource: function(source, getSnapshot, subscribe) {
              currentHookNameInDev = "useMutableSource";
              warnInvalidHookAccess();
              updateHookTypesDev();
              return updateMutableSource();
            },
            useSyncExternalStore: function(subscribe, getSnapshot, getServerSnapshot) {
              currentHookNameInDev = "useSyncExternalStore";
              warnInvalidHookAccess();
              updateHookTypesDev();
              return updateSyncExternalStore(subscribe, getSnapshot);
            },
            useId: function() {
              currentHookNameInDev = "useId";
              warnInvalidHookAccess();
              updateHookTypesDev();
              return updateId();
            },
            unstable_isNewReconciler: enableNewReconciler
          };
          InvalidNestedHooksDispatcherOnRerenderInDEV = {
            readContext: function(context) {
              warnInvalidContextAccess();
              return readContext(context);
            },
            useCallback: function(callback, deps) {
              currentHookNameInDev = "useCallback";
              warnInvalidHookAccess();
              updateHookTypesDev();
              return updateCallback(callback, deps);
            },
            useContext: function(context) {
              currentHookNameInDev = "useContext";
              warnInvalidHookAccess();
              updateHookTypesDev();
              return readContext(context);
            },
            useEffect: function(create, deps) {
              currentHookNameInDev = "useEffect";
              warnInvalidHookAccess();
              updateHookTypesDev();
              return updateEffect(create, deps);
            },
            useImperativeHandle: function(ref, create, deps) {
              currentHookNameInDev = "useImperativeHandle";
              warnInvalidHookAccess();
              updateHookTypesDev();
              return updateImperativeHandle(ref, create, deps);
            },
            useInsertionEffect: function(create, deps) {
              currentHookNameInDev = "useInsertionEffect";
              warnInvalidHookAccess();
              updateHookTypesDev();
              return updateInsertionEffect(create, deps);
            },
            useLayoutEffect: function(create, deps) {
              currentHookNameInDev = "useLayoutEffect";
              warnInvalidHookAccess();
              updateHookTypesDev();
              return updateLayoutEffect(create, deps);
            },
            useMemo: function(create, deps) {
              currentHookNameInDev = "useMemo";
              warnInvalidHookAccess();
              updateHookTypesDev();
              var prevDispatcher = ReactCurrentDispatcher$1.current;
              ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
              try {
                return updateMemo(create, deps);
              } finally {
                ReactCurrentDispatcher$1.current = prevDispatcher;
              }
            },
            useReducer: function(reducer, initialArg, init) {
              currentHookNameInDev = "useReducer";
              warnInvalidHookAccess();
              updateHookTypesDev();
              var prevDispatcher = ReactCurrentDispatcher$1.current;
              ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
              try {
                return rerenderReducer(reducer, initialArg, init);
              } finally {
                ReactCurrentDispatcher$1.current = prevDispatcher;
              }
            },
            useRef: function(initialValue) {
              currentHookNameInDev = "useRef";
              warnInvalidHookAccess();
              updateHookTypesDev();
              return updateRef();
            },
            useState: function(initialState) {
              currentHookNameInDev = "useState";
              warnInvalidHookAccess();
              updateHookTypesDev();
              var prevDispatcher = ReactCurrentDispatcher$1.current;
              ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
              try {
                return rerenderState(initialState);
              } finally {
                ReactCurrentDispatcher$1.current = prevDispatcher;
              }
            },
            useDebugValue: function(value, formatterFn) {
              currentHookNameInDev = "useDebugValue";
              warnInvalidHookAccess();
              updateHookTypesDev();
              return updateDebugValue();
            },
            useDeferredValue: function(value) {
              currentHookNameInDev = "useDeferredValue";
              warnInvalidHookAccess();
              updateHookTypesDev();
              return rerenderDeferredValue(value);
            },
            useTransition: function() {
              currentHookNameInDev = "useTransition";
              warnInvalidHookAccess();
              updateHookTypesDev();
              return rerenderTransition();
            },
            useMutableSource: function(source, getSnapshot, subscribe) {
              currentHookNameInDev = "useMutableSource";
              warnInvalidHookAccess();
              updateHookTypesDev();
              return updateMutableSource();
            },
            useSyncExternalStore: function(subscribe, getSnapshot, getServerSnapshot) {
              currentHookNameInDev = "useSyncExternalStore";
              warnInvalidHookAccess();
              updateHookTypesDev();
              return updateSyncExternalStore(subscribe, getSnapshot);
            },
            useId: function() {
              currentHookNameInDev = "useId";
              warnInvalidHookAccess();
              updateHookTypesDev();
              return updateId();
            },
            unstable_isNewReconciler: enableNewReconciler
          };
        }
        var now$1 = Scheduler.unstable_now;
        var commitTime = 0;
        var layoutEffectStartTime = -1;
        var profilerStartTime = -1;
        var passiveEffectStartTime = -1;
        var currentUpdateIsNested = false;
        var nestedUpdateScheduled = false;
        function isCurrentUpdateNested() {
          return currentUpdateIsNested;
        }
        function markNestedUpdateScheduled() {
          {
            nestedUpdateScheduled = true;
          }
        }
        function resetNestedUpdateFlag() {
          {
            currentUpdateIsNested = false;
            nestedUpdateScheduled = false;
          }
        }
        function syncNestedUpdateFlag() {
          {
            currentUpdateIsNested = nestedUpdateScheduled;
            nestedUpdateScheduled = false;
          }
        }
        function getCommitTime() {
          return commitTime;
        }
        function recordCommitTime() {
          commitTime = now$1();
        }
        function startProfilerTimer(fiber) {
          profilerStartTime = now$1();
          if (fiber.actualStartTime < 0) {
            fiber.actualStartTime = now$1();
          }
        }
        function stopProfilerTimerIfRunning(fiber) {
          profilerStartTime = -1;
        }
        function stopProfilerTimerIfRunningAndRecordDelta(fiber, overrideBaseTime) {
          if (profilerStartTime >= 0) {
            var elapsedTime = now$1() - profilerStartTime;
            fiber.actualDuration += elapsedTime;
            if (overrideBaseTime) {
              fiber.selfBaseDuration = elapsedTime;
            }
            profilerStartTime = -1;
          }
        }
        function recordLayoutEffectDuration(fiber) {
          if (layoutEffectStartTime >= 0) {
            var elapsedTime = now$1() - layoutEffectStartTime;
            layoutEffectStartTime = -1;
            var parentFiber = fiber.return;
            while (parentFiber !== null) {
              switch (parentFiber.tag) {
                case HostRoot:
                  var root2 = parentFiber.stateNode;
                  root2.effectDuration += elapsedTime;
                  return;
                case Profiler:
                  var parentStateNode = parentFiber.stateNode;
                  parentStateNode.effectDuration += elapsedTime;
                  return;
              }
              parentFiber = parentFiber.return;
            }
          }
        }
        function recordPassiveEffectDuration(fiber) {
          if (passiveEffectStartTime >= 0) {
            var elapsedTime = now$1() - passiveEffectStartTime;
            passiveEffectStartTime = -1;
            var parentFiber = fiber.return;
            while (parentFiber !== null) {
              switch (parentFiber.tag) {
                case HostRoot:
                  var root2 = parentFiber.stateNode;
                  if (root2 !== null) {
                    root2.passiveEffectDuration += elapsedTime;
                  }
                  return;
                case Profiler:
                  var parentStateNode = parentFiber.stateNode;
                  if (parentStateNode !== null) {
                    parentStateNode.passiveEffectDuration += elapsedTime;
                  }
                  return;
              }
              parentFiber = parentFiber.return;
            }
          }
        }
        function startLayoutEffectTimer() {
          layoutEffectStartTime = now$1();
        }
        function startPassiveEffectTimer() {
          passiveEffectStartTime = now$1();
        }
        function transferActualDuration(fiber) {
          var child = fiber.child;
          while (child) {
            fiber.actualDuration += child.actualDuration;
            child = child.sibling;
          }
        }
        function resolveDefaultProps(Component, baseProps) {
          if (Component && Component.defaultProps) {
            var props = assign({}, baseProps);
            var defaultProps = Component.defaultProps;
            for (var propName in defaultProps) {
              if (props[propName] === void 0) {
                props[propName] = defaultProps[propName];
              }
            }
            return props;
          }
          return baseProps;
        }
        var fakeInternalInstance = {};
        var didWarnAboutStateAssignmentForComponent;
        var didWarnAboutUninitializedState;
        var didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate;
        var didWarnAboutLegacyLifecyclesAndDerivedState;
        var didWarnAboutUndefinedDerivedState;
        var warnOnUndefinedDerivedState;
        var warnOnInvalidCallback;
        var didWarnAboutDirectlyAssigningPropsToState;
        var didWarnAboutContextTypeAndContextTypes;
        var didWarnAboutInvalidateContextType;
        var didWarnAboutLegacyContext$1;
        {
          didWarnAboutStateAssignmentForComponent = /* @__PURE__ */ new Set();
          didWarnAboutUninitializedState = /* @__PURE__ */ new Set();
          didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate = /* @__PURE__ */ new Set();
          didWarnAboutLegacyLifecyclesAndDerivedState = /* @__PURE__ */ new Set();
          didWarnAboutDirectlyAssigningPropsToState = /* @__PURE__ */ new Set();
          didWarnAboutUndefinedDerivedState = /* @__PURE__ */ new Set();
          didWarnAboutContextTypeAndContextTypes = /* @__PURE__ */ new Set();
          didWarnAboutInvalidateContextType = /* @__PURE__ */ new Set();
          didWarnAboutLegacyContext$1 = /* @__PURE__ */ new Set();
          var didWarnOnInvalidCallback = /* @__PURE__ */ new Set();
          warnOnInvalidCallback = function(callback, callerName) {
            if (callback === null || typeof callback === "function") {
              return;
            }
            var key = callerName + "_" + callback;
            if (!didWarnOnInvalidCallback.has(key)) {
              didWarnOnInvalidCallback.add(key);
              error("%s(...): Expected the last optional `callback` argument to be a function. Instead received: %s.", callerName, callback);
            }
          };
          warnOnUndefinedDerivedState = function(type, partialState) {
            if (partialState === void 0) {
              var componentName = getComponentNameFromType(type) || "Component";
              if (!didWarnAboutUndefinedDerivedState.has(componentName)) {
                didWarnAboutUndefinedDerivedState.add(componentName);
                error("%s.getDerivedStateFromProps(): A valid state object (or null) must be returned. You have returned undefined.", componentName);
              }
            }
          };
          Object.defineProperty(fakeInternalInstance, "_processChildContext", {
            enumerable: false,
            value: function() {
              throw new Error("_processChildContext is not available in React 16+. This likely means you have multiple copies of React and are attempting to nest a React 15 tree inside a React 16 tree using unstable_renderSubtreeIntoContainer, which isn't supported. Try to make sure you have only one copy of React (and ideally, switch to ReactDOM.createPortal).");
            }
          });
          Object.freeze(fakeInternalInstance);
        }
        function applyDerivedStateFromProps(workInProgress2, ctor, getDerivedStateFromProps, nextProps) {
          var prevState = workInProgress2.memoizedState;
          var partialState = getDerivedStateFromProps(nextProps, prevState);
          {
            if (workInProgress2.mode & StrictLegacyMode) {
              setIsStrictModeForDevtools(true);
              try {
                partialState = getDerivedStateFromProps(nextProps, prevState);
              } finally {
                setIsStrictModeForDevtools(false);
              }
            }
            warnOnUndefinedDerivedState(ctor, partialState);
          }
          var memoizedState = partialState === null || partialState === void 0 ? prevState : assign({}, prevState, partialState);
          workInProgress2.memoizedState = memoizedState;
          if (workInProgress2.lanes === NoLanes) {
            var updateQueue = workInProgress2.updateQueue;
            updateQueue.baseState = memoizedState;
          }
        }
        var classComponentUpdater = {
          isMounted,
          enqueueSetState: function(inst, payload, callback) {
            var fiber = get(inst);
            var eventTime = requestEventTime();
            var lane = requestUpdateLane(fiber);
            var update = createUpdate(eventTime, lane);
            update.payload = payload;
            if (callback !== void 0 && callback !== null) {
              {
                warnOnInvalidCallback(callback, "setState");
              }
              update.callback = callback;
            }
            var root2 = enqueueUpdate(fiber, update, lane);
            if (root2 !== null) {
              scheduleUpdateOnFiber(root2, fiber, lane, eventTime);
              entangleTransitions(root2, fiber, lane);
            }
            {
              markStateUpdateScheduled(fiber, lane);
            }
          },
          enqueueReplaceState: function(inst, payload, callback) {
            var fiber = get(inst);
            var eventTime = requestEventTime();
            var lane = requestUpdateLane(fiber);
            var update = createUpdate(eventTime, lane);
            update.tag = ReplaceState;
            update.payload = payload;
            if (callback !== void 0 && callback !== null) {
              {
                warnOnInvalidCallback(callback, "replaceState");
              }
              update.callback = callback;
            }
            var root2 = enqueueUpdate(fiber, update, lane);
            if (root2 !== null) {
              scheduleUpdateOnFiber(root2, fiber, lane, eventTime);
              entangleTransitions(root2, fiber, lane);
            }
            {
              markStateUpdateScheduled(fiber, lane);
            }
          },
          enqueueForceUpdate: function(inst, callback) {
            var fiber = get(inst);
            var eventTime = requestEventTime();
            var lane = requestUpdateLane(fiber);
            var update = createUpdate(eventTime, lane);
            update.tag = ForceUpdate;
            if (callback !== void 0 && callback !== null) {
              {
                warnOnInvalidCallback(callback, "forceUpdate");
              }
              update.callback = callback;
            }
            var root2 = enqueueUpdate(fiber, update, lane);
            if (root2 !== null) {
              scheduleUpdateOnFiber(root2, fiber, lane, eventTime);
              entangleTransitions(root2, fiber, lane);
            }
            {
              markForceUpdateScheduled(fiber, lane);
            }
          }
        };
        function checkShouldComponentUpdate(workInProgress2, ctor, oldProps, newProps, oldState, newState, nextContext) {
          var instance = workInProgress2.stateNode;
          if (typeof instance.shouldComponentUpdate === "function") {
            var shouldUpdate = instance.shouldComponentUpdate(newProps, newState, nextContext);
            {
              if (workInProgress2.mode & StrictLegacyMode) {
                setIsStrictModeForDevtools(true);
                try {
                  shouldUpdate = instance.shouldComponentUpdate(newProps, newState, nextContext);
                } finally {
                  setIsStrictModeForDevtools(false);
                }
              }
              if (shouldUpdate === void 0) {
                error("%s.shouldComponentUpdate(): Returned undefined instead of a boolean value. Make sure to return true or false.", getComponentNameFromType(ctor) || "Component");
              }
            }
            return shouldUpdate;
          }
          if (ctor.prototype && ctor.prototype.isPureReactComponent) {
            return !shallowEqual(oldProps, newProps) || !shallowEqual(oldState, newState);
          }
          return true;
        }
        function checkClassInstance(workInProgress2, ctor, newProps) {
          var instance = workInProgress2.stateNode;
          {
            var name = getComponentNameFromType(ctor) || "Component";
            var renderPresent = instance.render;
            if (!renderPresent) {
              if (ctor.prototype && typeof ctor.prototype.render === "function") {
                error("%s(...): No `render` method found on the returned component instance: did you accidentally return an object from the constructor?", name);
              } else {
                error("%s(...): No `render` method found on the returned component instance: you may have forgotten to define `render`.", name);
              }
            }
            if (instance.getInitialState && !instance.getInitialState.isReactClassApproved && !instance.state) {
              error("getInitialState was defined on %s, a plain JavaScript class. This is only supported for classes created using React.createClass. Did you mean to define a state property instead?", name);
            }
            if (instance.getDefaultProps && !instance.getDefaultProps.isReactClassApproved) {
              error("getDefaultProps was defined on %s, a plain JavaScript class. This is only supported for classes created using React.createClass. Use a static property to define defaultProps instead.", name);
            }
            if (instance.propTypes) {
              error("propTypes was defined as an instance property on %s. Use a static property to define propTypes instead.", name);
            }
            if (instance.contextType) {
              error("contextType was defined as an instance property on %s. Use a static property to define contextType instead.", name);
            }
            {
              if (ctor.childContextTypes && !didWarnAboutLegacyContext$1.has(ctor) && // Strict Mode has its own warning for legacy context, so we can skip
              // this one.
              (workInProgress2.mode & StrictLegacyMode) === NoMode) {
                didWarnAboutLegacyContext$1.add(ctor);
                error("%s uses the legacy childContextTypes API which is no longer supported and will be removed in the next major release. Use React.createContext() instead\n\n.Learn more about this warning here: https://reactjs.org/link/legacy-context", name);
              }
              if (ctor.contextTypes && !didWarnAboutLegacyContext$1.has(ctor) && // Strict Mode has its own warning for legacy context, so we can skip
              // this one.
              (workInProgress2.mode & StrictLegacyMode) === NoMode) {
                didWarnAboutLegacyContext$1.add(ctor);
                error("%s uses the legacy contextTypes API which is no longer supported and will be removed in the next major release. Use React.createContext() with static contextType instead.\n\nLearn more about this warning here: https://reactjs.org/link/legacy-context", name);
              }
              if (instance.contextTypes) {
                error("contextTypes was defined as an instance property on %s. Use a static property to define contextTypes instead.", name);
              }
              if (ctor.contextType && ctor.contextTypes && !didWarnAboutContextTypeAndContextTypes.has(ctor)) {
                didWarnAboutContextTypeAndContextTypes.add(ctor);
                error("%s declares both contextTypes and contextType static properties. The legacy contextTypes property will be ignored.", name);
              }
            }
            if (typeof instance.componentShouldUpdate === "function") {
              error("%s has a method called componentShouldUpdate(). Did you mean shouldComponentUpdate()? The name is phrased as a question because the function is expected to return a value.", name);
            }
            if (ctor.prototype && ctor.prototype.isPureReactComponent && typeof instance.shouldComponentUpdate !== "undefined") {
              error("%s has a method called shouldComponentUpdate(). shouldComponentUpdate should not be used when extending React.PureComponent. Please extend React.Component if shouldComponentUpdate is used.", getComponentNameFromType(ctor) || "A pure component");
            }
            if (typeof instance.componentDidUnmount === "function") {
              error("%s has a method called componentDidUnmount(). But there is no such lifecycle method. Did you mean componentWillUnmount()?", name);
            }
            if (typeof instance.componentDidReceiveProps === "function") {
              error("%s has a method called componentDidReceiveProps(). But there is no such lifecycle method. If you meant to update the state in response to changing props, use componentWillReceiveProps(). If you meant to fetch data or run side-effects or mutations after React has updated the UI, use componentDidUpdate().", name);
            }
            if (typeof instance.componentWillRecieveProps === "function") {
              error("%s has a method called componentWillRecieveProps(). Did you mean componentWillReceiveProps()?", name);
            }
            if (typeof instance.UNSAFE_componentWillRecieveProps === "function") {
              error("%s has a method called UNSAFE_componentWillRecieveProps(). Did you mean UNSAFE_componentWillReceiveProps()?", name);
            }
            var hasMutatedProps = instance.props !== newProps;
            if (instance.props !== void 0 && hasMutatedProps) {
              error("%s(...): When calling super() in `%s`, make sure to pass up the same props that your component's constructor was passed.", name, name);
            }
            if (instance.defaultProps) {
              error("Setting defaultProps as an instance property on %s is not supported and will be ignored. Instead, define defaultProps as a static property on %s.", name, name);
            }
            if (typeof instance.getSnapshotBeforeUpdate === "function" && typeof instance.componentDidUpdate !== "function" && !didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate.has(ctor)) {
              didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate.add(ctor);
              error("%s: getSnapshotBeforeUpdate() should be used with componentDidUpdate(). This component defines getSnapshotBeforeUpdate() only.", getComponentNameFromType(ctor));
            }
            if (typeof instance.getDerivedStateFromProps === "function") {
              error("%s: getDerivedStateFromProps() is defined as an instance method and will be ignored. Instead, declare it as a static method.", name);
            }
            if (typeof instance.getDerivedStateFromError === "function") {
              error("%s: getDerivedStateFromError() is defined as an instance method and will be ignored. Instead, declare it as a static method.", name);
            }
            if (typeof ctor.getSnapshotBeforeUpdate === "function") {
              error("%s: getSnapshotBeforeUpdate() is defined as a static method and will be ignored. Instead, declare it as an instance method.", name);
            }
            var _state = instance.state;
            if (_state && (typeof _state !== "object" || isArray(_state))) {
              error("%s.state: must be set to an object or null", name);
            }
            if (typeof instance.getChildContext === "function" && typeof ctor.childContextTypes !== "object") {
              error("%s.getChildContext(): childContextTypes must be defined in order to use getChildContext().", name);
            }
          }
        }
        function adoptClassInstance(workInProgress2, instance) {
          instance.updater = classComponentUpdater;
          workInProgress2.stateNode = instance;
          set(instance, workInProgress2);
          {
            instance._reactInternalInstance = fakeInternalInstance;
          }
        }
        function constructClassInstance(workInProgress2, ctor, props) {
          var isLegacyContextConsumer = false;
          var unmaskedContext = emptyContextObject;
          var context = emptyContextObject;
          var contextType = ctor.contextType;
          {
            if ("contextType" in ctor) {
              var isValid = (
                // Allow null for conditional declaration
                contextType === null || contextType !== void 0 && contextType.$$typeof === REACT_CONTEXT_TYPE && contextType._context === void 0
              );
              if (!isValid && !didWarnAboutInvalidateContextType.has(ctor)) {
                didWarnAboutInvalidateContextType.add(ctor);
                var addendum = "";
                if (contextType === void 0) {
                  addendum = " However, it is set to undefined. This can be caused by a typo or by mixing up named and default imports. This can also happen due to a circular dependency, so try moving the createContext() call to a separate file.";
                } else if (typeof contextType !== "object") {
                  addendum = " However, it is set to a " + typeof contextType + ".";
                } else if (contextType.$$typeof === REACT_PROVIDER_TYPE) {
                  addendum = " Did you accidentally pass the Context.Provider instead?";
                } else if (contextType._context !== void 0) {
                  addendum = " Did you accidentally pass the Context.Consumer instead?";
                } else {
                  addendum = " However, it is set to an object with keys {" + Object.keys(contextType).join(", ") + "}.";
                }
                error("%s defines an invalid contextType. contextType should point to the Context object returned by React.createContext().%s", getComponentNameFromType(ctor) || "Component", addendum);
              }
            }
          }
          if (typeof contextType === "object" && contextType !== null) {
            context = readContext(contextType);
          } else {
            unmaskedContext = getUnmaskedContext(workInProgress2, ctor, true);
            var contextTypes = ctor.contextTypes;
            isLegacyContextConsumer = contextTypes !== null && contextTypes !== void 0;
            context = isLegacyContextConsumer ? getMaskedContext(workInProgress2, unmaskedContext) : emptyContextObject;
          }
          var instance = new ctor(props, context);
          {
            if (workInProgress2.mode & StrictLegacyMode) {
              setIsStrictModeForDevtools(true);
              try {
                instance = new ctor(props, context);
              } finally {
                setIsStrictModeForDevtools(false);
              }
            }
          }
          var state = workInProgress2.memoizedState = instance.state !== null && instance.state !== void 0 ? instance.state : null;
          adoptClassInstance(workInProgress2, instance);
          {
            if (typeof ctor.getDerivedStateFromProps === "function" && state === null) {
              var componentName = getComponentNameFromType(ctor) || "Component";
              if (!didWarnAboutUninitializedState.has(componentName)) {
                didWarnAboutUninitializedState.add(componentName);
                error("`%s` uses `getDerivedStateFromProps` but its initial state is %s. This is not recommended. Instead, define the initial state by assigning an object to `this.state` in the constructor of `%s`. This ensures that `getDerivedStateFromProps` arguments have a consistent shape.", componentName, instance.state === null ? "null" : "undefined", componentName);
              }
            }
            if (typeof ctor.getDerivedStateFromProps === "function" || typeof instance.getSnapshotBeforeUpdate === "function") {
              var foundWillMountName = null;
              var foundWillReceivePropsName = null;
              var foundWillUpdateName = null;
              if (typeof instance.componentWillMount === "function" && instance.componentWillMount.__suppressDeprecationWarning !== true) {
                foundWillMountName = "componentWillMount";
              } else if (typeof instance.UNSAFE_componentWillMount === "function") {
                foundWillMountName = "UNSAFE_componentWillMount";
              }
              if (typeof instance.componentWillReceiveProps === "function" && instance.componentWillReceiveProps.__suppressDeprecationWarning !== true) {
                foundWillReceivePropsName = "componentWillReceiveProps";
              } else if (typeof instance.UNSAFE_componentWillReceiveProps === "function") {
                foundWillReceivePropsName = "UNSAFE_componentWillReceiveProps";
              }
              if (typeof instance.componentWillUpdate === "function" && instance.componentWillUpdate.__suppressDeprecationWarning !== true) {
                foundWillUpdateName = "componentWillUpdate";
              } else if (typeof instance.UNSAFE_componentWillUpdate === "function") {
                foundWillUpdateName = "UNSAFE_componentWillUpdate";
              }
              if (foundWillMountName !== null || foundWillReceivePropsName !== null || foundWillUpdateName !== null) {
                var _componentName = getComponentNameFromType(ctor) || "Component";
                var newApiName = typeof ctor.getDerivedStateFromProps === "function" ? "getDerivedStateFromProps()" : "getSnapshotBeforeUpdate()";
                if (!didWarnAboutLegacyLifecyclesAndDerivedState.has(_componentName)) {
                  didWarnAboutLegacyLifecyclesAndDerivedState.add(_componentName);
                  error("Unsafe legacy lifecycles will not be called for components using new component APIs.\n\n%s uses %s but also contains the following legacy lifecycles:%s%s%s\n\nThe above lifecycles should be removed. Learn more about this warning here:\nhttps://reactjs.org/link/unsafe-component-lifecycles", _componentName, newApiName, foundWillMountName !== null ? "\n  " + foundWillMountName : "", foundWillReceivePropsName !== null ? "\n  " + foundWillReceivePropsName : "", foundWillUpdateName !== null ? "\n  " + foundWillUpdateName : "");
                }
              }
            }
          }
          if (isLegacyContextConsumer) {
            cacheContext(workInProgress2, unmaskedContext, context);
          }
          return instance;
        }
        function callComponentWillMount(workInProgress2, instance) {
          var oldState = instance.state;
          if (typeof instance.componentWillMount === "function") {
            instance.componentWillMount();
          }
          if (typeof instance.UNSAFE_componentWillMount === "function") {
            instance.UNSAFE_componentWillMount();
          }
          if (oldState !== instance.state) {
            {
              error("%s.componentWillMount(): Assigning directly to this.state is deprecated (except inside a component's constructor). Use setState instead.", getComponentNameFromFiber(workInProgress2) || "Component");
            }
            classComponentUpdater.enqueueReplaceState(instance, instance.state, null);
          }
        }
        function callComponentWillReceiveProps(workInProgress2, instance, newProps, nextContext) {
          var oldState = instance.state;
          if (typeof instance.componentWillReceiveProps === "function") {
            instance.componentWillReceiveProps(newProps, nextContext);
          }
          if (typeof instance.UNSAFE_componentWillReceiveProps === "function") {
            instance.UNSAFE_componentWillReceiveProps(newProps, nextContext);
          }
          if (instance.state !== oldState) {
            {
              var componentName = getComponentNameFromFiber(workInProgress2) || "Component";
              if (!didWarnAboutStateAssignmentForComponent.has(componentName)) {
                didWarnAboutStateAssignmentForComponent.add(componentName);
                error("%s.componentWillReceiveProps(): Assigning directly to this.state is deprecated (except inside a component's constructor). Use setState instead.", componentName);
              }
            }
            classComponentUpdater.enqueueReplaceState(instance, instance.state, null);
          }
        }
        function mountClassInstance(workInProgress2, ctor, newProps, renderLanes2) {
          {
            checkClassInstance(workInProgress2, ctor, newProps);
          }
          var instance = workInProgress2.stateNode;
          instance.props = newProps;
          instance.state = workInProgress2.memoizedState;
          instance.refs = {};
          initializeUpdateQueue(workInProgress2);
          var contextType = ctor.contextType;
          if (typeof contextType === "object" && contextType !== null) {
            instance.context = readContext(contextType);
          } else {
            var unmaskedContext = getUnmaskedContext(workInProgress2, ctor, true);
            instance.context = getMaskedContext(workInProgress2, unmaskedContext);
          }
          {
            if (instance.state === newProps) {
              var componentName = getComponentNameFromType(ctor) || "Component";
              if (!didWarnAboutDirectlyAssigningPropsToState.has(componentName)) {
                didWarnAboutDirectlyAssigningPropsToState.add(componentName);
                error("%s: It is not recommended to assign props directly to state because updates to props won't be reflected in state. In most cases, it is better to use props directly.", componentName);
              }
            }
            if (workInProgress2.mode & StrictLegacyMode) {
              ReactStrictModeWarnings.recordLegacyContextWarning(workInProgress2, instance);
            }
            {
              ReactStrictModeWarnings.recordUnsafeLifecycleWarnings(workInProgress2, instance);
            }
          }
          instance.state = workInProgress2.memoizedState;
          var getDerivedStateFromProps = ctor.getDerivedStateFromProps;
          if (typeof getDerivedStateFromProps === "function") {
            applyDerivedStateFromProps(workInProgress2, ctor, getDerivedStateFromProps, newProps);
            instance.state = workInProgress2.memoizedState;
          }
          if (typeof ctor.getDerivedStateFromProps !== "function" && typeof instance.getSnapshotBeforeUpdate !== "function" && (typeof instance.UNSAFE_componentWillMount === "function" || typeof instance.componentWillMount === "function")) {
            callComponentWillMount(workInProgress2, instance);
            processUpdateQueue(workInProgress2, newProps, instance, renderLanes2);
            instance.state = workInProgress2.memoizedState;
          }
          if (typeof instance.componentDidMount === "function") {
            var fiberFlags = Update;
            {
              fiberFlags |= LayoutStatic;
            }
            if ((workInProgress2.mode & StrictEffectsMode) !== NoMode) {
              fiberFlags |= MountLayoutDev;
            }
            workInProgress2.flags |= fiberFlags;
          }
        }
        function resumeMountClassInstance(workInProgress2, ctor, newProps, renderLanes2) {
          var instance = workInProgress2.stateNode;
          var oldProps = workInProgress2.memoizedProps;
          instance.props = oldProps;
          var oldContext = instance.context;
          var contextType = ctor.contextType;
          var nextContext = emptyContextObject;
          if (typeof contextType === "object" && contextType !== null) {
            nextContext = readContext(contextType);
          } else {
            var nextLegacyUnmaskedContext = getUnmaskedContext(workInProgress2, ctor, true);
            nextContext = getMaskedContext(workInProgress2, nextLegacyUnmaskedContext);
          }
          var getDerivedStateFromProps = ctor.getDerivedStateFromProps;
          var hasNewLifecycles = typeof getDerivedStateFromProps === "function" || typeof instance.getSnapshotBeforeUpdate === "function";
          if (!hasNewLifecycles && (typeof instance.UNSAFE_componentWillReceiveProps === "function" || typeof instance.componentWillReceiveProps === "function")) {
            if (oldProps !== newProps || oldContext !== nextContext) {
              callComponentWillReceiveProps(workInProgress2, instance, newProps, nextContext);
            }
          }
          resetHasForceUpdateBeforeProcessing();
          var oldState = workInProgress2.memoizedState;
          var newState = instance.state = oldState;
          processUpdateQueue(workInProgress2, newProps, instance, renderLanes2);
          newState = workInProgress2.memoizedState;
          if (oldProps === newProps && oldState === newState && !hasContextChanged() && !checkHasForceUpdateAfterProcessing()) {
            if (typeof instance.componentDidMount === "function") {
              var fiberFlags = Update;
              {
                fiberFlags |= LayoutStatic;
              }
              if ((workInProgress2.mode & StrictEffectsMode) !== NoMode) {
                fiberFlags |= MountLayoutDev;
              }
              workInProgress2.flags |= fiberFlags;
            }
            return false;
          }
          if (typeof getDerivedStateFromProps === "function") {
            applyDerivedStateFromProps(workInProgress2, ctor, getDerivedStateFromProps, newProps);
            newState = workInProgress2.memoizedState;
          }
          var shouldUpdate = checkHasForceUpdateAfterProcessing() || checkShouldComponentUpdate(workInProgress2, ctor, oldProps, newProps, oldState, newState, nextContext);
          if (shouldUpdate) {
            if (!hasNewLifecycles && (typeof instance.UNSAFE_componentWillMount === "function" || typeof instance.componentWillMount === "function")) {
              if (typeof instance.componentWillMount === "function") {
                instance.componentWillMount();
              }
              if (typeof instance.UNSAFE_componentWillMount === "function") {
                instance.UNSAFE_componentWillMount();
              }
            }
            if (typeof instance.componentDidMount === "function") {
              var _fiberFlags = Update;
              {
                _fiberFlags |= LayoutStatic;
              }
              if ((workInProgress2.mode & StrictEffectsMode) !== NoMode) {
                _fiberFlags |= MountLayoutDev;
              }
              workInProgress2.flags |= _fiberFlags;
            }
          } else {
            if (typeof instance.componentDidMount === "function") {
              var _fiberFlags2 = Update;
              {
                _fiberFlags2 |= LayoutStatic;
              }
              if ((workInProgress2.mode & StrictEffectsMode) !== NoMode) {
                _fiberFlags2 |= MountLayoutDev;
              }
              workInProgress2.flags |= _fiberFlags2;
            }
            workInProgress2.memoizedProps = newProps;
            workInProgress2.memoizedState = newState;
          }
          instance.props = newProps;
          instance.state = newState;
          instance.context = nextContext;
          return shouldUpdate;
        }
        function updateClassInstance(current2, workInProgress2, ctor, newProps, renderLanes2) {
          var instance = workInProgress2.stateNode;
          cloneUpdateQueue(current2, workInProgress2);
          var unresolvedOldProps = workInProgress2.memoizedProps;
          var oldProps = workInProgress2.type === workInProgress2.elementType ? unresolvedOldProps : resolveDefaultProps(workInProgress2.type, unresolvedOldProps);
          instance.props = oldProps;
          var unresolvedNewProps = workInProgress2.pendingProps;
          var oldContext = instance.context;
          var contextType = ctor.contextType;
          var nextContext = emptyContextObject;
          if (typeof contextType === "object" && contextType !== null) {
            nextContext = readContext(contextType);
          } else {
            var nextUnmaskedContext = getUnmaskedContext(workInProgress2, ctor, true);
            nextContext = getMaskedContext(workInProgress2, nextUnmaskedContext);
          }
          var getDerivedStateFromProps = ctor.getDerivedStateFromProps;
          var hasNewLifecycles = typeof getDerivedStateFromProps === "function" || typeof instance.getSnapshotBeforeUpdate === "function";
          if (!hasNewLifecycles && (typeof instance.UNSAFE_componentWillReceiveProps === "function" || typeof instance.componentWillReceiveProps === "function")) {
            if (unresolvedOldProps !== unresolvedNewProps || oldContext !== nextContext) {
              callComponentWillReceiveProps(workInProgress2, instance, newProps, nextContext);
            }
          }
          resetHasForceUpdateBeforeProcessing();
          var oldState = workInProgress2.memoizedState;
          var newState = instance.state = oldState;
          processUpdateQueue(workInProgress2, newProps, instance, renderLanes2);
          newState = workInProgress2.memoizedState;
          if (unresolvedOldProps === unresolvedNewProps && oldState === newState && !hasContextChanged() && !checkHasForceUpdateAfterProcessing() && !enableLazyContextPropagation) {
            if (typeof instance.componentDidUpdate === "function") {
              if (unresolvedOldProps !== current2.memoizedProps || oldState !== current2.memoizedState) {
                workInProgress2.flags |= Update;
              }
            }
            if (typeof instance.getSnapshotBeforeUpdate === "function") {
              if (unresolvedOldProps !== current2.memoizedProps || oldState !== current2.memoizedState) {
                workInProgress2.flags |= Snapshot;
              }
            }
            return false;
          }
          if (typeof getDerivedStateFromProps === "function") {
            applyDerivedStateFromProps(workInProgress2, ctor, getDerivedStateFromProps, newProps);
            newState = workInProgress2.memoizedState;
          }
          var shouldUpdate = checkHasForceUpdateAfterProcessing() || checkShouldComponentUpdate(workInProgress2, ctor, oldProps, newProps, oldState, newState, nextContext) || // TODO: In some cases, we'll end up checking if context has changed twice,
          // both before and after `shouldComponentUpdate` has been called. Not ideal,
          // but I'm loath to refactor this function. This only happens for memoized
          // components so it's not that common.
          enableLazyContextPropagation;
          if (shouldUpdate) {
            if (!hasNewLifecycles && (typeof instance.UNSAFE_componentWillUpdate === "function" || typeof instance.componentWillUpdate === "function")) {
              if (typeof instance.componentWillUpdate === "function") {
                instance.componentWillUpdate(newProps, newState, nextContext);
              }
              if (typeof instance.UNSAFE_componentWillUpdate === "function") {
                instance.UNSAFE_componentWillUpdate(newProps, newState, nextContext);
              }
            }
            if (typeof instance.componentDidUpdate === "function") {
              workInProgress2.flags |= Update;
            }
            if (typeof instance.getSnapshotBeforeUpdate === "function") {
              workInProgress2.flags |= Snapshot;
            }
          } else {
            if (typeof instance.componentDidUpdate === "function") {
              if (unresolvedOldProps !== current2.memoizedProps || oldState !== current2.memoizedState) {
                workInProgress2.flags |= Update;
              }
            }
            if (typeof instance.getSnapshotBeforeUpdate === "function") {
              if (unresolvedOldProps !== current2.memoizedProps || oldState !== current2.memoizedState) {
                workInProgress2.flags |= Snapshot;
              }
            }
            workInProgress2.memoizedProps = newProps;
            workInProgress2.memoizedState = newState;
          }
          instance.props = newProps;
          instance.state = newState;
          instance.context = nextContext;
          return shouldUpdate;
        }
        function createCapturedValueAtFiber(value, source) {
          return {
            value,
            source,
            stack: getStackByFiberInDevAndProd(source),
            digest: null
          };
        }
        function createCapturedValue(value, digest, stack) {
          return {
            value,
            source: null,
            stack: stack != null ? stack : null,
            digest: digest != null ? digest : null
          };
        }
        function showErrorDialog(boundary, errorInfo) {
          return true;
        }
        function logCapturedError(boundary, errorInfo) {
          try {
            var logError = showErrorDialog(boundary, errorInfo);
            if (logError === false) {
              return;
            }
            var error2 = errorInfo.value;
            if (true) {
              var source = errorInfo.source;
              var stack = errorInfo.stack;
              var componentStack = stack !== null ? stack : "";
              if (error2 != null && error2._suppressLogging) {
                if (boundary.tag === ClassComponent) {
                  return;
                }
                console["error"](error2);
              }
              var componentName = source ? getComponentNameFromFiber(source) : null;
              var componentNameMessage = componentName ? "The above error occurred in the <" + componentName + "> component:" : "The above error occurred in one of your React components:";
              var errorBoundaryMessage;
              if (boundary.tag === HostRoot) {
                errorBoundaryMessage = "Consider adding an error boundary to your tree to customize error handling behavior.\nVisit https://reactjs.org/link/error-boundaries to learn more about error boundaries.";
              } else {
                var errorBoundaryName = getComponentNameFromFiber(boundary) || "Anonymous";
                errorBoundaryMessage = "React will try to recreate this component tree from scratch " + ("using the error boundary you provided, " + errorBoundaryName + ".");
              }
              var combinedMessage = componentNameMessage + "\n" + componentStack + "\n\n" + ("" + errorBoundaryMessage);
              console["error"](combinedMessage);
            } else {
              console["error"](error2);
            }
          } catch (e) {
            setTimeout(function() {
              throw e;
            });
          }
        }
        var PossiblyWeakMap$1 = typeof WeakMap === "function" ? WeakMap : Map;
        function createRootErrorUpdate(fiber, errorInfo, lane) {
          var update = createUpdate(NoTimestamp, lane);
          update.tag = CaptureUpdate;
          update.payload = {
            element: null
          };
          var error2 = errorInfo.value;
          update.callback = function() {
            onUncaughtError(error2);
            logCapturedError(fiber, errorInfo);
          };
          return update;
        }
        function createClassErrorUpdate(fiber, errorInfo, lane) {
          var update = createUpdate(NoTimestamp, lane);
          update.tag = CaptureUpdate;
          var getDerivedStateFromError = fiber.type.getDerivedStateFromError;
          if (typeof getDerivedStateFromError === "function") {
            var error$1 = errorInfo.value;
            update.payload = function() {
              return getDerivedStateFromError(error$1);
            };
            update.callback = function() {
              {
                markFailedErrorBoundaryForHotReloading(fiber);
              }
              logCapturedError(fiber, errorInfo);
            };
          }
          var inst = fiber.stateNode;
          if (inst !== null && typeof inst.componentDidCatch === "function") {
            update.callback = function callback() {
              {
                markFailedErrorBoundaryForHotReloading(fiber);
              }
              logCapturedError(fiber, errorInfo);
              if (typeof getDerivedStateFromError !== "function") {
                markLegacyErrorBoundaryAsFailed(this);
              }
              var error$12 = errorInfo.value;
              var stack = errorInfo.stack;
              this.componentDidCatch(error$12, {
                componentStack: stack !== null ? stack : ""
              });
              {
                if (typeof getDerivedStateFromError !== "function") {
                  if (!includesSomeLane(fiber.lanes, SyncLane)) {
                    error("%s: Error boundaries should implement getDerivedStateFromError(). In that method, return a state update to display an error message or fallback UI.", getComponentNameFromFiber(fiber) || "Unknown");
                  }
                }
              }
            };
          }
          return update;
        }
        function attachPingListener(root2, wakeable, lanes) {
          var pingCache = root2.pingCache;
          var threadIDs;
          if (pingCache === null) {
            pingCache = root2.pingCache = new PossiblyWeakMap$1();
            threadIDs = /* @__PURE__ */ new Set();
            pingCache.set(wakeable, threadIDs);
          } else {
            threadIDs = pingCache.get(wakeable);
            if (threadIDs === void 0) {
              threadIDs = /* @__PURE__ */ new Set();
              pingCache.set(wakeable, threadIDs);
            }
          }
          if (!threadIDs.has(lanes)) {
            threadIDs.add(lanes);
            var ping = pingSuspendedRoot.bind(null, root2, wakeable, lanes);
            {
              if (isDevToolsPresent) {
                restorePendingUpdaters(root2, lanes);
              }
            }
            wakeable.then(ping, ping);
          }
        }
        function attachRetryListener(suspenseBoundary, root2, wakeable, lanes) {
          var wakeables = suspenseBoundary.updateQueue;
          if (wakeables === null) {
            var updateQueue = /* @__PURE__ */ new Set();
            updateQueue.add(wakeable);
            suspenseBoundary.updateQueue = updateQueue;
          } else {
            wakeables.add(wakeable);
          }
        }
        function resetSuspendedComponent(sourceFiber, rootRenderLanes) {
          var tag = sourceFiber.tag;
          if ((sourceFiber.mode & ConcurrentMode) === NoMode && (tag === FunctionComponent || tag === ForwardRef || tag === SimpleMemoComponent)) {
            var currentSource = sourceFiber.alternate;
            if (currentSource) {
              sourceFiber.updateQueue = currentSource.updateQueue;
              sourceFiber.memoizedState = currentSource.memoizedState;
              sourceFiber.lanes = currentSource.lanes;
            } else {
              sourceFiber.updateQueue = null;
              sourceFiber.memoizedState = null;
            }
          }
        }
        function getNearestSuspenseBoundaryToCapture(returnFiber) {
          var node = returnFiber;
          do {
            if (node.tag === SuspenseComponent && shouldCaptureSuspense(node)) {
              return node;
            }
            node = node.return;
          } while (node !== null);
          return null;
        }
        function markSuspenseBoundaryShouldCapture(suspenseBoundary, returnFiber, sourceFiber, root2, rootRenderLanes) {
          if ((suspenseBoundary.mode & ConcurrentMode) === NoMode) {
            if (suspenseBoundary === returnFiber) {
              suspenseBoundary.flags |= ShouldCapture;
            } else {
              suspenseBoundary.flags |= DidCapture;
              sourceFiber.flags |= ForceUpdateForLegacySuspense;
              sourceFiber.flags &= ~(LifecycleEffectMask | Incomplete);
              if (sourceFiber.tag === ClassComponent) {
                var currentSourceFiber = sourceFiber.alternate;
                if (currentSourceFiber === null) {
                  sourceFiber.tag = IncompleteClassComponent;
                } else {
                  var update = createUpdate(NoTimestamp, SyncLane);
                  update.tag = ForceUpdate;
                  enqueueUpdate(sourceFiber, update, SyncLane);
                }
              }
              sourceFiber.lanes = mergeLanes(sourceFiber.lanes, SyncLane);
            }
            return suspenseBoundary;
          }
          suspenseBoundary.flags |= ShouldCapture;
          suspenseBoundary.lanes = rootRenderLanes;
          return suspenseBoundary;
        }
        function throwException(root2, returnFiber, sourceFiber, value, rootRenderLanes) {
          sourceFiber.flags |= Incomplete;
          {
            if (isDevToolsPresent) {
              restorePendingUpdaters(root2, rootRenderLanes);
            }
          }
          if (value !== null && typeof value === "object" && typeof value.then === "function") {
            var wakeable = value;
            resetSuspendedComponent(sourceFiber);
            {
              if (getIsHydrating() && sourceFiber.mode & ConcurrentMode) {
                markDidThrowWhileHydratingDEV();
              }
            }
            var suspenseBoundary = getNearestSuspenseBoundaryToCapture(returnFiber);
            if (suspenseBoundary !== null) {
              suspenseBoundary.flags &= ~ForceClientRender;
              markSuspenseBoundaryShouldCapture(suspenseBoundary, returnFiber, sourceFiber, root2, rootRenderLanes);
              if (suspenseBoundary.mode & ConcurrentMode) {
                attachPingListener(root2, wakeable, rootRenderLanes);
              }
              attachRetryListener(suspenseBoundary, root2, wakeable);
              return;
            } else {
              if (!includesSyncLane(rootRenderLanes)) {
                attachPingListener(root2, wakeable, rootRenderLanes);
                renderDidSuspendDelayIfPossible();
                return;
              }
              var uncaughtSuspenseError = new Error("A component suspended while responding to synchronous input. This will cause the UI to be replaced with a loading indicator. To fix, updates that suspend should be wrapped with startTransition.");
              value = uncaughtSuspenseError;
            }
          } else {
            if (getIsHydrating() && sourceFiber.mode & ConcurrentMode) {
              markDidThrowWhileHydratingDEV();
              var _suspenseBoundary = getNearestSuspenseBoundaryToCapture(returnFiber);
              if (_suspenseBoundary !== null) {
                if ((_suspenseBoundary.flags & ShouldCapture) === NoFlags) {
                  _suspenseBoundary.flags |= ForceClientRender;
                }
                markSuspenseBoundaryShouldCapture(_suspenseBoundary, returnFiber, sourceFiber, root2, rootRenderLanes);
                queueHydrationError(createCapturedValueAtFiber(value, sourceFiber));
                return;
              }
            }
          }
          value = createCapturedValueAtFiber(value, sourceFiber);
          renderDidError(value);
          var workInProgress2 = returnFiber;
          do {
            switch (workInProgress2.tag) {
              case HostRoot: {
                var _errorInfo = value;
                workInProgress2.flags |= ShouldCapture;
                var lane = pickArbitraryLane(rootRenderLanes);
                workInProgress2.lanes = mergeLanes(workInProgress2.lanes, lane);
                var update = createRootErrorUpdate(workInProgress2, _errorInfo, lane);
                enqueueCapturedUpdate(workInProgress2, update);
                return;
              }
              case ClassComponent:
                var errorInfo = value;
                var ctor = workInProgress2.type;
                var instance = workInProgress2.stateNode;
                if ((workInProgress2.flags & DidCapture) === NoFlags && (typeof ctor.getDerivedStateFromError === "function" || instance !== null && typeof instance.componentDidCatch === "function" && !isAlreadyFailedLegacyErrorBoundary(instance))) {
                  workInProgress2.flags |= ShouldCapture;
                  var _lane = pickArbitraryLane(rootRenderLanes);
                  workInProgress2.lanes = mergeLanes(workInProgress2.lanes, _lane);
                  var _update = createClassErrorUpdate(workInProgress2, errorInfo, _lane);
                  enqueueCapturedUpdate(workInProgress2, _update);
                  return;
                }
                break;
            }
            workInProgress2 = workInProgress2.return;
          } while (workInProgress2 !== null);
        }
        function getSuspendedCache() {
          {
            return null;
          }
        }
        var ReactCurrentOwner$1 = ReactSharedInternals.ReactCurrentOwner;
        var didReceiveUpdate = false;
        var didWarnAboutBadClass;
        var didWarnAboutModulePatternComponent;
        var didWarnAboutContextTypeOnFunctionComponent;
        var didWarnAboutGetDerivedStateOnFunctionComponent;
        var didWarnAboutFunctionRefs;
        var didWarnAboutReassigningProps;
        var didWarnAboutRevealOrder;
        var didWarnAboutTailOptions;
        var didWarnAboutDefaultPropsOnFunctionComponent;
        {
          didWarnAboutBadClass = {};
          didWarnAboutModulePatternComponent = {};
          didWarnAboutContextTypeOnFunctionComponent = {};
          didWarnAboutGetDerivedStateOnFunctionComponent = {};
          didWarnAboutFunctionRefs = {};
          didWarnAboutReassigningProps = false;
          didWarnAboutRevealOrder = {};
          didWarnAboutTailOptions = {};
          didWarnAboutDefaultPropsOnFunctionComponent = {};
        }
        function reconcileChildren(current2, workInProgress2, nextChildren, renderLanes2) {
          if (current2 === null) {
            workInProgress2.child = mountChildFibers(workInProgress2, null, nextChildren, renderLanes2);
          } else {
            workInProgress2.child = reconcileChildFibers(workInProgress2, current2.child, nextChildren, renderLanes2);
          }
        }
        function forceUnmountCurrentAndReconcile(current2, workInProgress2, nextChildren, renderLanes2) {
          workInProgress2.child = reconcileChildFibers(workInProgress2, current2.child, null, renderLanes2);
          workInProgress2.child = reconcileChildFibers(workInProgress2, null, nextChildren, renderLanes2);
        }
        function updateForwardRef(current2, workInProgress2, Component, nextProps, renderLanes2) {
          {
            if (workInProgress2.type !== workInProgress2.elementType) {
              var innerPropTypes = Component.propTypes;
              if (innerPropTypes) {
                checkPropTypes(
                  innerPropTypes,
                  nextProps,
                  // Resolved props
                  "prop",
                  getComponentNameFromType(Component)
                );
              }
            }
          }
          var render2 = Component.render;
          var ref = workInProgress2.ref;
          var nextChildren;
          var hasId;
          prepareToReadContext(workInProgress2, renderLanes2);
          {
            markComponentRenderStarted(workInProgress2);
          }
          {
            ReactCurrentOwner$1.current = workInProgress2;
            setIsRendering(true);
            nextChildren = renderWithHooks(current2, workInProgress2, render2, nextProps, ref, renderLanes2);
            hasId = checkDidRenderIdHook();
            if (workInProgress2.mode & StrictLegacyMode) {
              setIsStrictModeForDevtools(true);
              try {
                nextChildren = renderWithHooks(current2, workInProgress2, render2, nextProps, ref, renderLanes2);
                hasId = checkDidRenderIdHook();
              } finally {
                setIsStrictModeForDevtools(false);
              }
            }
            setIsRendering(false);
          }
          {
            markComponentRenderStopped();
          }
          if (current2 !== null && !didReceiveUpdate) {
            bailoutHooks(current2, workInProgress2, renderLanes2);
            return bailoutOnAlreadyFinishedWork(current2, workInProgress2, renderLanes2);
          }
          if (getIsHydrating() && hasId) {
            pushMaterializedTreeId(workInProgress2);
          }
          workInProgress2.flags |= PerformedWork;
          reconcileChildren(current2, workInProgress2, nextChildren, renderLanes2);
          return workInProgress2.child;
        }
        function updateMemoComponent(current2, workInProgress2, Component, nextProps, renderLanes2) {
          if (current2 === null) {
            var type = Component.type;
            if (isSimpleFunctionComponent(type) && Component.compare === null && // SimpleMemoComponent codepath doesn't resolve outer props either.
            Component.defaultProps === void 0) {
              var resolvedType = type;
              {
                resolvedType = resolveFunctionForHotReloading(type);
              }
              workInProgress2.tag = SimpleMemoComponent;
              workInProgress2.type = resolvedType;
              {
                validateFunctionComponentInDev(workInProgress2, type);
              }
              return updateSimpleMemoComponent(current2, workInProgress2, resolvedType, nextProps, renderLanes2);
            }
            {
              var innerPropTypes = type.propTypes;
              if (innerPropTypes) {
                checkPropTypes(
                  innerPropTypes,
                  nextProps,
                  // Resolved props
                  "prop",
                  getComponentNameFromType(type)
                );
              }
              if (Component.defaultProps !== void 0) {
                var componentName = getComponentNameFromType(type) || "Unknown";
                if (!didWarnAboutDefaultPropsOnFunctionComponent[componentName]) {
                  error("%s: Support for defaultProps will be removed from memo components in a future major release. Use JavaScript default parameters instead.", componentName);
                  didWarnAboutDefaultPropsOnFunctionComponent[componentName] = true;
                }
              }
            }
            var child = createFiberFromTypeAndProps(Component.type, null, nextProps, workInProgress2, workInProgress2.mode, renderLanes2);
            child.ref = workInProgress2.ref;
            child.return = workInProgress2;
            workInProgress2.child = child;
            return child;
          }
          {
            var _type = Component.type;
            var _innerPropTypes = _type.propTypes;
            if (_innerPropTypes) {
              checkPropTypes(
                _innerPropTypes,
                nextProps,
                // Resolved props
                "prop",
                getComponentNameFromType(_type)
              );
            }
          }
          var currentChild = current2.child;
          var hasScheduledUpdateOrContext = checkScheduledUpdateOrContext(current2, renderLanes2);
          if (!hasScheduledUpdateOrContext) {
            var prevProps = currentChild.memoizedProps;
            var compare = Component.compare;
            compare = compare !== null ? compare : shallowEqual;
            if (compare(prevProps, nextProps) && current2.ref === workInProgress2.ref) {
              return bailoutOnAlreadyFinishedWork(current2, workInProgress2, renderLanes2);
            }
          }
          workInProgress2.flags |= PerformedWork;
          var newChild = createWorkInProgress(currentChild, nextProps);
          newChild.ref = workInProgress2.ref;
          newChild.return = workInProgress2;
          workInProgress2.child = newChild;
          return newChild;
        }
        function updateSimpleMemoComponent(current2, workInProgress2, Component, nextProps, renderLanes2) {
          {
            if (workInProgress2.type !== workInProgress2.elementType) {
              var outerMemoType = workInProgress2.elementType;
              if (outerMemoType.$$typeof === REACT_LAZY_TYPE) {
                var lazyComponent = outerMemoType;
                var payload = lazyComponent._payload;
                var init = lazyComponent._init;
                try {
                  outerMemoType = init(payload);
                } catch (x) {
                  outerMemoType = null;
                }
                var outerPropTypes = outerMemoType && outerMemoType.propTypes;
                if (outerPropTypes) {
                  checkPropTypes(
                    outerPropTypes,
                    nextProps,
                    // Resolved (SimpleMemoComponent has no defaultProps)
                    "prop",
                    getComponentNameFromType(outerMemoType)
                  );
                }
              }
            }
          }
          if (current2 !== null) {
            var prevProps = current2.memoizedProps;
            if (shallowEqual(prevProps, nextProps) && current2.ref === workInProgress2.ref && // Prevent bailout if the implementation changed due to hot reload.
            workInProgress2.type === current2.type) {
              didReceiveUpdate = false;
              workInProgress2.pendingProps = nextProps = prevProps;
              if (!checkScheduledUpdateOrContext(current2, renderLanes2)) {
                workInProgress2.lanes = current2.lanes;
                return bailoutOnAlreadyFinishedWork(current2, workInProgress2, renderLanes2);
              } else if ((current2.flags & ForceUpdateForLegacySuspense) !== NoFlags) {
                didReceiveUpdate = true;
              }
            }
          }
          return updateFunctionComponent(current2, workInProgress2, Component, nextProps, renderLanes2);
        }
        function updateOffscreenComponent(current2, workInProgress2, renderLanes2) {
          var nextProps = workInProgress2.pendingProps;
          var nextChildren = nextProps.children;
          var prevState = current2 !== null ? current2.memoizedState : null;
          if (nextProps.mode === "hidden" || enableLegacyHidden) {
            if ((workInProgress2.mode & ConcurrentMode) === NoMode) {
              var nextState = {
                baseLanes: NoLanes,
                cachePool: null,
                transitions: null
              };
              workInProgress2.memoizedState = nextState;
              pushRenderLanes(workInProgress2, renderLanes2);
            } else if (!includesSomeLane(renderLanes2, OffscreenLane)) {
              var spawnedCachePool = null;
              var nextBaseLanes;
              if (prevState !== null) {
                var prevBaseLanes = prevState.baseLanes;
                nextBaseLanes = mergeLanes(prevBaseLanes, renderLanes2);
              } else {
                nextBaseLanes = renderLanes2;
              }
              workInProgress2.lanes = workInProgress2.childLanes = laneToLanes(OffscreenLane);
              var _nextState = {
                baseLanes: nextBaseLanes,
                cachePool: spawnedCachePool,
                transitions: null
              };
              workInProgress2.memoizedState = _nextState;
              workInProgress2.updateQueue = null;
              pushRenderLanes(workInProgress2, nextBaseLanes);
              return null;
            } else {
              var _nextState2 = {
                baseLanes: NoLanes,
                cachePool: null,
                transitions: null
              };
              workInProgress2.memoizedState = _nextState2;
              var subtreeRenderLanes2 = prevState !== null ? prevState.baseLanes : renderLanes2;
              pushRenderLanes(workInProgress2, subtreeRenderLanes2);
            }
          } else {
            var _subtreeRenderLanes;
            if (prevState !== null) {
              _subtreeRenderLanes = mergeLanes(prevState.baseLanes, renderLanes2);
              workInProgress2.memoizedState = null;
            } else {
              _subtreeRenderLanes = renderLanes2;
            }
            pushRenderLanes(workInProgress2, _subtreeRenderLanes);
          }
          reconcileChildren(current2, workInProgress2, nextChildren, renderLanes2);
          return workInProgress2.child;
        }
        function updateFragment(current2, workInProgress2, renderLanes2) {
          var nextChildren = workInProgress2.pendingProps;
          reconcileChildren(current2, workInProgress2, nextChildren, renderLanes2);
          return workInProgress2.child;
        }
        function updateMode(current2, workInProgress2, renderLanes2) {
          var nextChildren = workInProgress2.pendingProps.children;
          reconcileChildren(current2, workInProgress2, nextChildren, renderLanes2);
          return workInProgress2.child;
        }
        function updateProfiler(current2, workInProgress2, renderLanes2) {
          {
            workInProgress2.flags |= Update;
            {
              var stateNode = workInProgress2.stateNode;
              stateNode.effectDuration = 0;
              stateNode.passiveEffectDuration = 0;
            }
          }
          var nextProps = workInProgress2.pendingProps;
          var nextChildren = nextProps.children;
          reconcileChildren(current2, workInProgress2, nextChildren, renderLanes2);
          return workInProgress2.child;
        }
        function markRef(current2, workInProgress2) {
          var ref = workInProgress2.ref;
          if (current2 === null && ref !== null || current2 !== null && current2.ref !== ref) {
            workInProgress2.flags |= Ref;
            {
              workInProgress2.flags |= RefStatic;
            }
          }
        }
        function updateFunctionComponent(current2, workInProgress2, Component, nextProps, renderLanes2) {
          {
            if (workInProgress2.type !== workInProgress2.elementType) {
              var innerPropTypes = Component.propTypes;
              if (innerPropTypes) {
                checkPropTypes(
                  innerPropTypes,
                  nextProps,
                  // Resolved props
                  "prop",
                  getComponentNameFromType(Component)
                );
              }
            }
          }
          var context;
          {
            var unmaskedContext = getUnmaskedContext(workInProgress2, Component, true);
            context = getMaskedContext(workInProgress2, unmaskedContext);
          }
          var nextChildren;
          var hasId;
          prepareToReadContext(workInProgress2, renderLanes2);
          {
            markComponentRenderStarted(workInProgress2);
          }
          {
            ReactCurrentOwner$1.current = workInProgress2;
            setIsRendering(true);
            nextChildren = renderWithHooks(current2, workInProgress2, Component, nextProps, context, renderLanes2);
            hasId = checkDidRenderIdHook();
            if (workInProgress2.mode & StrictLegacyMode) {
              setIsStrictModeForDevtools(true);
              try {
                nextChildren = renderWithHooks(current2, workInProgress2, Component, nextProps, context, renderLanes2);
                hasId = checkDidRenderIdHook();
              } finally {
                setIsStrictModeForDevtools(false);
              }
            }
            setIsRendering(false);
          }
          {
            markComponentRenderStopped();
          }
          if (current2 !== null && !didReceiveUpdate) {
            bailoutHooks(current2, workInProgress2, renderLanes2);
            return bailoutOnAlreadyFinishedWork(current2, workInProgress2, renderLanes2);
          }
          if (getIsHydrating() && hasId) {
            pushMaterializedTreeId(workInProgress2);
          }
          workInProgress2.flags |= PerformedWork;
          reconcileChildren(current2, workInProgress2, nextChildren, renderLanes2);
          return workInProgress2.child;
        }
        function updateClassComponent(current2, workInProgress2, Component, nextProps, renderLanes2) {
          {
            switch (shouldError(workInProgress2)) {
              case false: {
                var _instance = workInProgress2.stateNode;
                var ctor = workInProgress2.type;
                var tempInstance = new ctor(workInProgress2.memoizedProps, _instance.context);
                var state = tempInstance.state;
                _instance.updater.enqueueSetState(_instance, state, null);
                break;
              }
              case true: {
                workInProgress2.flags |= DidCapture;
                workInProgress2.flags |= ShouldCapture;
                var error$1 = new Error("Simulated error coming from DevTools");
                var lane = pickArbitraryLane(renderLanes2);
                workInProgress2.lanes = mergeLanes(workInProgress2.lanes, lane);
                var update = createClassErrorUpdate(workInProgress2, createCapturedValueAtFiber(error$1, workInProgress2), lane);
                enqueueCapturedUpdate(workInProgress2, update);
                break;
              }
            }
            if (workInProgress2.type !== workInProgress2.elementType) {
              var innerPropTypes = Component.propTypes;
              if (innerPropTypes) {
                checkPropTypes(
                  innerPropTypes,
                  nextProps,
                  // Resolved props
                  "prop",
                  getComponentNameFromType(Component)
                );
              }
            }
          }
          var hasContext;
          if (isContextProvider(Component)) {
            hasContext = true;
            pushContextProvider(workInProgress2);
          } else {
            hasContext = false;
          }
          prepareToReadContext(workInProgress2, renderLanes2);
          var instance = workInProgress2.stateNode;
          var shouldUpdate;
          if (instance === null) {
            resetSuspendedCurrentOnMountInLegacyMode(current2, workInProgress2);
            constructClassInstance(workInProgress2, Component, nextProps);
            mountClassInstance(workInProgress2, Component, nextProps, renderLanes2);
            shouldUpdate = true;
          } else if (current2 === null) {
            shouldUpdate = resumeMountClassInstance(workInProgress2, Component, nextProps, renderLanes2);
          } else {
            shouldUpdate = updateClassInstance(current2, workInProgress2, Component, nextProps, renderLanes2);
          }
          var nextUnitOfWork = finishClassComponent(current2, workInProgress2, Component, shouldUpdate, hasContext, renderLanes2);
          {
            var inst = workInProgress2.stateNode;
            if (shouldUpdate && inst.props !== nextProps) {
              if (!didWarnAboutReassigningProps) {
                error("It looks like %s is reassigning its own `this.props` while rendering. This is not supported and can lead to confusing bugs.", getComponentNameFromFiber(workInProgress2) || "a component");
              }
              didWarnAboutReassigningProps = true;
            }
          }
          return nextUnitOfWork;
        }
        function finishClassComponent(current2, workInProgress2, Component, shouldUpdate, hasContext, renderLanes2) {
          markRef(current2, workInProgress2);
          var didCaptureError = (workInProgress2.flags & DidCapture) !== NoFlags;
          if (!shouldUpdate && !didCaptureError) {
            if (hasContext) {
              invalidateContextProvider(workInProgress2, Component, false);
            }
            return bailoutOnAlreadyFinishedWork(current2, workInProgress2, renderLanes2);
          }
          var instance = workInProgress2.stateNode;
          ReactCurrentOwner$1.current = workInProgress2;
          var nextChildren;
          if (didCaptureError && typeof Component.getDerivedStateFromError !== "function") {
            nextChildren = null;
            {
              stopProfilerTimerIfRunning();
            }
          } else {
            {
              markComponentRenderStarted(workInProgress2);
            }
            {
              setIsRendering(true);
              nextChildren = instance.render();
              if (workInProgress2.mode & StrictLegacyMode) {
                setIsStrictModeForDevtools(true);
                try {
                  instance.render();
                } finally {
                  setIsStrictModeForDevtools(false);
                }
              }
              setIsRendering(false);
            }
            {
              markComponentRenderStopped();
            }
          }
          workInProgress2.flags |= PerformedWork;
          if (current2 !== null && didCaptureError) {
            forceUnmountCurrentAndReconcile(current2, workInProgress2, nextChildren, renderLanes2);
          } else {
            reconcileChildren(current2, workInProgress2, nextChildren, renderLanes2);
          }
          workInProgress2.memoizedState = instance.state;
          if (hasContext) {
            invalidateContextProvider(workInProgress2, Component, true);
          }
          return workInProgress2.child;
        }
        function pushHostRootContext(workInProgress2) {
          var root2 = workInProgress2.stateNode;
          if (root2.pendingContext) {
            pushTopLevelContextObject(workInProgress2, root2.pendingContext, root2.pendingContext !== root2.context);
          } else if (root2.context) {
            pushTopLevelContextObject(workInProgress2, root2.context, false);
          }
          pushHostContainer(workInProgress2, root2.containerInfo);
        }
        function updateHostRoot(current2, workInProgress2, renderLanes2) {
          pushHostRootContext(workInProgress2);
          if (current2 === null) {
            throw new Error("Should have a current fiber. This is a bug in React.");
          }
          var nextProps = workInProgress2.pendingProps;
          var prevState = workInProgress2.memoizedState;
          var prevChildren = prevState.element;
          cloneUpdateQueue(current2, workInProgress2);
          processUpdateQueue(workInProgress2, nextProps, null, renderLanes2);
          var nextState = workInProgress2.memoizedState;
          var root2 = workInProgress2.stateNode;
          var nextChildren = nextState.element;
          if (prevState.isDehydrated) {
            var overrideState = {
              element: nextChildren,
              isDehydrated: false,
              cache: nextState.cache,
              pendingSuspenseBoundaries: nextState.pendingSuspenseBoundaries,
              transitions: nextState.transitions
            };
            var updateQueue = workInProgress2.updateQueue;
            updateQueue.baseState = overrideState;
            workInProgress2.memoizedState = overrideState;
            if (workInProgress2.flags & ForceClientRender) {
              var recoverableError = createCapturedValueAtFiber(new Error("There was an error while hydrating. Because the error happened outside of a Suspense boundary, the entire root will switch to client rendering."), workInProgress2);
              return mountHostRootWithoutHydrating(current2, workInProgress2, nextChildren, renderLanes2, recoverableError);
            } else if (nextChildren !== prevChildren) {
              var _recoverableError = createCapturedValueAtFiber(new Error("This root received an early update, before anything was able hydrate. Switched the entire root to client rendering."), workInProgress2);
              return mountHostRootWithoutHydrating(current2, workInProgress2, nextChildren, renderLanes2, _recoverableError);
            } else {
              enterHydrationState(workInProgress2);
              var child = mountChildFibers(workInProgress2, null, nextChildren, renderLanes2);
              workInProgress2.child = child;
              var node = child;
              while (node) {
                node.flags = node.flags & ~Placement | Hydrating;
                node = node.sibling;
              }
            }
          } else {
            resetHydrationState();
            if (nextChildren === prevChildren) {
              return bailoutOnAlreadyFinishedWork(current2, workInProgress2, renderLanes2);
            }
            reconcileChildren(current2, workInProgress2, nextChildren, renderLanes2);
          }
          return workInProgress2.child;
        }
        function mountHostRootWithoutHydrating(current2, workInProgress2, nextChildren, renderLanes2, recoverableError) {
          resetHydrationState();
          queueHydrationError(recoverableError);
          workInProgress2.flags |= ForceClientRender;
          reconcileChildren(current2, workInProgress2, nextChildren, renderLanes2);
          return workInProgress2.child;
        }
        function updateHostComponent(current2, workInProgress2, renderLanes2) {
          pushHostContext(workInProgress2);
          if (current2 === null) {
            tryToClaimNextHydratableInstance(workInProgress2);
          }
          var type = workInProgress2.type;
          var nextProps = workInProgress2.pendingProps;
          var prevProps = current2 !== null ? current2.memoizedProps : null;
          var nextChildren = nextProps.children;
          var isDirectTextChild = shouldSetTextContent(type, nextProps);
          if (isDirectTextChild) {
            nextChildren = null;
          } else if (prevProps !== null && shouldSetTextContent(type, prevProps)) {
            workInProgress2.flags |= ContentReset;
          }
          markRef(current2, workInProgress2);
          reconcileChildren(current2, workInProgress2, nextChildren, renderLanes2);
          return workInProgress2.child;
        }
        function updateHostText(current2, workInProgress2) {
          if (current2 === null) {
            tryToClaimNextHydratableInstance(workInProgress2);
          }
          return null;
        }
        function mountLazyComponent(_current, workInProgress2, elementType, renderLanes2) {
          resetSuspendedCurrentOnMountInLegacyMode(_current, workInProgress2);
          var props = workInProgress2.pendingProps;
          var lazyComponent = elementType;
          var payload = lazyComponent._payload;
          var init = lazyComponent._init;
          var Component = init(payload);
          workInProgress2.type = Component;
          var resolvedTag = workInProgress2.tag = resolveLazyComponentTag(Component);
          var resolvedProps = resolveDefaultProps(Component, props);
          var child;
          switch (resolvedTag) {
            case FunctionComponent: {
              {
                validateFunctionComponentInDev(workInProgress2, Component);
                workInProgress2.type = Component = resolveFunctionForHotReloading(Component);
              }
              child = updateFunctionComponent(null, workInProgress2, Component, resolvedProps, renderLanes2);
              return child;
            }
            case ClassComponent: {
              {
                workInProgress2.type = Component = resolveClassForHotReloading(Component);
              }
              child = updateClassComponent(null, workInProgress2, Component, resolvedProps, renderLanes2);
              return child;
            }
            case ForwardRef: {
              {
                workInProgress2.type = Component = resolveForwardRefForHotReloading(Component);
              }
              child = updateForwardRef(null, workInProgress2, Component, resolvedProps, renderLanes2);
              return child;
            }
            case MemoComponent: {
              {
                if (workInProgress2.type !== workInProgress2.elementType) {
                  var outerPropTypes = Component.propTypes;
                  if (outerPropTypes) {
                    checkPropTypes(
                      outerPropTypes,
                      resolvedProps,
                      // Resolved for outer only
                      "prop",
                      getComponentNameFromType(Component)
                    );
                  }
                }
              }
              child = updateMemoComponent(
                null,
                workInProgress2,
                Component,
                resolveDefaultProps(Component.type, resolvedProps),
                // The inner type can have defaults too
                renderLanes2
              );
              return child;
            }
          }
          var hint = "";
          {
            if (Component !== null && typeof Component === "object" && Component.$$typeof === REACT_LAZY_TYPE) {
              hint = " Did you wrap a component in React.lazy() more than once?";
            }
          }
          throw new Error("Element type is invalid. Received a promise that resolves to: " + Component + ". " + ("Lazy element type must resolve to a class or function." + hint));
        }
        function mountIncompleteClassComponent(_current, workInProgress2, Component, nextProps, renderLanes2) {
          resetSuspendedCurrentOnMountInLegacyMode(_current, workInProgress2);
          workInProgress2.tag = ClassComponent;
          var hasContext;
          if (isContextProvider(Component)) {
            hasContext = true;
            pushContextProvider(workInProgress2);
          } else {
            hasContext = false;
          }
          prepareToReadContext(workInProgress2, renderLanes2);
          constructClassInstance(workInProgress2, Component, nextProps);
          mountClassInstance(workInProgress2, Component, nextProps, renderLanes2);
          return finishClassComponent(null, workInProgress2, Component, true, hasContext, renderLanes2);
        }
        function mountIndeterminateComponent(_current, workInProgress2, Component, renderLanes2) {
          resetSuspendedCurrentOnMountInLegacyMode(_current, workInProgress2);
          var props = workInProgress2.pendingProps;
          var context;
          {
            var unmaskedContext = getUnmaskedContext(workInProgress2, Component, false);
            context = getMaskedContext(workInProgress2, unmaskedContext);
          }
          prepareToReadContext(workInProgress2, renderLanes2);
          var value;
          var hasId;
          {
            markComponentRenderStarted(workInProgress2);
          }
          {
            if (Component.prototype && typeof Component.prototype.render === "function") {
              var componentName = getComponentNameFromType(Component) || "Unknown";
              if (!didWarnAboutBadClass[componentName]) {
                error("The <%s /> component appears to have a render method, but doesn't extend React.Component. This is likely to cause errors. Change %s to extend React.Component instead.", componentName, componentName);
                didWarnAboutBadClass[componentName] = true;
              }
            }
            if (workInProgress2.mode & StrictLegacyMode) {
              ReactStrictModeWarnings.recordLegacyContextWarning(workInProgress2, null);
            }
            setIsRendering(true);
            ReactCurrentOwner$1.current = workInProgress2;
            value = renderWithHooks(null, workInProgress2, Component, props, context, renderLanes2);
            hasId = checkDidRenderIdHook();
            setIsRendering(false);
          }
          {
            markComponentRenderStopped();
          }
          workInProgress2.flags |= PerformedWork;
          {
            if (typeof value === "object" && value !== null && typeof value.render === "function" && value.$$typeof === void 0) {
              var _componentName = getComponentNameFromType(Component) || "Unknown";
              if (!didWarnAboutModulePatternComponent[_componentName]) {
                error("The <%s /> component appears to be a function component that returns a class instance. Change %s to a class that extends React.Component instead. If you can't use a class try assigning the prototype on the function as a workaround. `%s.prototype = React.Component.prototype`. Don't use an arrow function since it cannot be called with `new` by React.", _componentName, _componentName, _componentName);
                didWarnAboutModulePatternComponent[_componentName] = true;
              }
            }
          }
          if (
            // Run these checks in production only if the flag is off.
            // Eventually we'll delete this branch altogether.
            typeof value === "object" && value !== null && typeof value.render === "function" && value.$$typeof === void 0
          ) {
            {
              var _componentName2 = getComponentNameFromType(Component) || "Unknown";
              if (!didWarnAboutModulePatternComponent[_componentName2]) {
                error("The <%s /> component appears to be a function component that returns a class instance. Change %s to a class that extends React.Component instead. If you can't use a class try assigning the prototype on the function as a workaround. `%s.prototype = React.Component.prototype`. Don't use an arrow function since it cannot be called with `new` by React.", _componentName2, _componentName2, _componentName2);
                didWarnAboutModulePatternComponent[_componentName2] = true;
              }
            }
            workInProgress2.tag = ClassComponent;
            workInProgress2.memoizedState = null;
            workInProgress2.updateQueue = null;
            var hasContext = false;
            if (isContextProvider(Component)) {
              hasContext = true;
              pushContextProvider(workInProgress2);
            } else {
              hasContext = false;
            }
            workInProgress2.memoizedState = value.state !== null && value.state !== void 0 ? value.state : null;
            initializeUpdateQueue(workInProgress2);
            adoptClassInstance(workInProgress2, value);
            mountClassInstance(workInProgress2, Component, props, renderLanes2);
            return finishClassComponent(null, workInProgress2, Component, true, hasContext, renderLanes2);
          } else {
            workInProgress2.tag = FunctionComponent;
            {
              if (workInProgress2.mode & StrictLegacyMode) {
                setIsStrictModeForDevtools(true);
                try {
                  value = renderWithHooks(null, workInProgress2, Component, props, context, renderLanes2);
                  hasId = checkDidRenderIdHook();
                } finally {
                  setIsStrictModeForDevtools(false);
                }
              }
            }
            if (getIsHydrating() && hasId) {
              pushMaterializedTreeId(workInProgress2);
            }
            reconcileChildren(null, workInProgress2, value, renderLanes2);
            {
              validateFunctionComponentInDev(workInProgress2, Component);
            }
            return workInProgress2.child;
          }
        }
        function validateFunctionComponentInDev(workInProgress2, Component) {
          {
            if (Component) {
              if (Component.childContextTypes) {
                error("%s(...): childContextTypes cannot be defined on a function component.", Component.displayName || Component.name || "Component");
              }
            }
            if (workInProgress2.ref !== null) {
              var info = "";
              var ownerName = getCurrentFiberOwnerNameInDevOrNull();
              if (ownerName) {
                info += "\n\nCheck the render method of `" + ownerName + "`.";
              }
              var warningKey = ownerName || "";
              var debugSource = workInProgress2._debugSource;
              if (debugSource) {
                warningKey = debugSource.fileName + ":" + debugSource.lineNumber;
              }
              if (!didWarnAboutFunctionRefs[warningKey]) {
                didWarnAboutFunctionRefs[warningKey] = true;
                error("Function components cannot be given refs. Attempts to access this ref will fail. Did you mean to use React.forwardRef()?%s", info);
              }
            }
            if (Component.defaultProps !== void 0) {
              var componentName = getComponentNameFromType(Component) || "Unknown";
              if (!didWarnAboutDefaultPropsOnFunctionComponent[componentName]) {
                error("%s: Support for defaultProps will be removed from function components in a future major release. Use JavaScript default parameters instead.", componentName);
                didWarnAboutDefaultPropsOnFunctionComponent[componentName] = true;
              }
            }
            if (typeof Component.getDerivedStateFromProps === "function") {
              var _componentName3 = getComponentNameFromType(Component) || "Unknown";
              if (!didWarnAboutGetDerivedStateOnFunctionComponent[_componentName3]) {
                error("%s: Function components do not support getDerivedStateFromProps.", _componentName3);
                didWarnAboutGetDerivedStateOnFunctionComponent[_componentName3] = true;
              }
            }
            if (typeof Component.contextType === "object" && Component.contextType !== null) {
              var _componentName4 = getComponentNameFromType(Component) || "Unknown";
              if (!didWarnAboutContextTypeOnFunctionComponent[_componentName4]) {
                error("%s: Function components do not support contextType.", _componentName4);
                didWarnAboutContextTypeOnFunctionComponent[_componentName4] = true;
              }
            }
          }
        }
        var SUSPENDED_MARKER = {
          dehydrated: null,
          treeContext: null,
          retryLane: NoLane
        };
        function mountSuspenseOffscreenState(renderLanes2) {
          return {
            baseLanes: renderLanes2,
            cachePool: getSuspendedCache(),
            transitions: null
          };
        }
        function updateSuspenseOffscreenState(prevOffscreenState, renderLanes2) {
          var cachePool = null;
          return {
            baseLanes: mergeLanes(prevOffscreenState.baseLanes, renderLanes2),
            cachePool,
            transitions: prevOffscreenState.transitions
          };
        }
        function shouldRemainOnFallback(suspenseContext, current2, workInProgress2, renderLanes2) {
          if (current2 !== null) {
            var suspenseState = current2.memoizedState;
            if (suspenseState === null) {
              return false;
            }
          }
          return hasSuspenseContext(suspenseContext, ForceSuspenseFallback);
        }
        function getRemainingWorkInPrimaryTree(current2, renderLanes2) {
          return removeLanes(current2.childLanes, renderLanes2);
        }
        function updateSuspenseComponent(current2, workInProgress2, renderLanes2) {
          var nextProps = workInProgress2.pendingProps;
          {
            if (shouldSuspend(workInProgress2)) {
              workInProgress2.flags |= DidCapture;
            }
          }
          var suspenseContext = suspenseStackCursor.current;
          var showFallback = false;
          var didSuspend = (workInProgress2.flags & DidCapture) !== NoFlags;
          if (didSuspend || shouldRemainOnFallback(suspenseContext, current2)) {
            showFallback = true;
            workInProgress2.flags &= ~DidCapture;
          } else {
            if (current2 === null || current2.memoizedState !== null) {
              {
                suspenseContext = addSubtreeSuspenseContext(suspenseContext, InvisibleParentSuspenseContext);
              }
            }
          }
          suspenseContext = setDefaultShallowSuspenseContext(suspenseContext);
          pushSuspenseContext(workInProgress2, suspenseContext);
          if (current2 === null) {
            tryToClaimNextHydratableInstance(workInProgress2);
            var suspenseState = workInProgress2.memoizedState;
            if (suspenseState !== null) {
              var dehydrated = suspenseState.dehydrated;
              if (dehydrated !== null) {
                return mountDehydratedSuspenseComponent(workInProgress2, dehydrated);
              }
            }
            var nextPrimaryChildren = nextProps.children;
            var nextFallbackChildren = nextProps.fallback;
            if (showFallback) {
              var fallbackFragment = mountSuspenseFallbackChildren(workInProgress2, nextPrimaryChildren, nextFallbackChildren, renderLanes2);
              var primaryChildFragment = workInProgress2.child;
              primaryChildFragment.memoizedState = mountSuspenseOffscreenState(renderLanes2);
              workInProgress2.memoizedState = SUSPENDED_MARKER;
              return fallbackFragment;
            } else {
              return mountSuspensePrimaryChildren(workInProgress2, nextPrimaryChildren);
            }
          } else {
            var prevState = current2.memoizedState;
            if (prevState !== null) {
              var _dehydrated = prevState.dehydrated;
              if (_dehydrated !== null) {
                return updateDehydratedSuspenseComponent(current2, workInProgress2, didSuspend, nextProps, _dehydrated, prevState, renderLanes2);
              }
            }
            if (showFallback) {
              var _nextFallbackChildren = nextProps.fallback;
              var _nextPrimaryChildren = nextProps.children;
              var fallbackChildFragment = updateSuspenseFallbackChildren(current2, workInProgress2, _nextPrimaryChildren, _nextFallbackChildren, renderLanes2);
              var _primaryChildFragment2 = workInProgress2.child;
              var prevOffscreenState = current2.child.memoizedState;
              _primaryChildFragment2.memoizedState = prevOffscreenState === null ? mountSuspenseOffscreenState(renderLanes2) : updateSuspenseOffscreenState(prevOffscreenState, renderLanes2);
              _primaryChildFragment2.childLanes = getRemainingWorkInPrimaryTree(current2, renderLanes2);
              workInProgress2.memoizedState = SUSPENDED_MARKER;
              return fallbackChildFragment;
            } else {
              var _nextPrimaryChildren2 = nextProps.children;
              var _primaryChildFragment3 = updateSuspensePrimaryChildren(current2, workInProgress2, _nextPrimaryChildren2, renderLanes2);
              workInProgress2.memoizedState = null;
              return _primaryChildFragment3;
            }
          }
        }
        function mountSuspensePrimaryChildren(workInProgress2, primaryChildren, renderLanes2) {
          var mode = workInProgress2.mode;
          var primaryChildProps = {
            mode: "visible",
            children: primaryChildren
          };
          var primaryChildFragment = mountWorkInProgressOffscreenFiber(primaryChildProps, mode);
          primaryChildFragment.return = workInProgress2;
          workInProgress2.child = primaryChildFragment;
          return primaryChildFragment;
        }
        function mountSuspenseFallbackChildren(workInProgress2, primaryChildren, fallbackChildren, renderLanes2) {
          var mode = workInProgress2.mode;
          var progressedPrimaryFragment = workInProgress2.child;
          var primaryChildProps = {
            mode: "hidden",
            children: primaryChildren
          };
          var primaryChildFragment;
          var fallbackChildFragment;
          if ((mode & ConcurrentMode) === NoMode && progressedPrimaryFragment !== null) {
            primaryChildFragment = progressedPrimaryFragment;
            primaryChildFragment.childLanes = NoLanes;
            primaryChildFragment.pendingProps = primaryChildProps;
            if (workInProgress2.mode & ProfileMode) {
              primaryChildFragment.actualDuration = 0;
              primaryChildFragment.actualStartTime = -1;
              primaryChildFragment.selfBaseDuration = 0;
              primaryChildFragment.treeBaseDuration = 0;
            }
            fallbackChildFragment = createFiberFromFragment(fallbackChildren, mode, renderLanes2, null);
          } else {
            primaryChildFragment = mountWorkInProgressOffscreenFiber(primaryChildProps, mode);
            fallbackChildFragment = createFiberFromFragment(fallbackChildren, mode, renderLanes2, null);
          }
          primaryChildFragment.return = workInProgress2;
          fallbackChildFragment.return = workInProgress2;
          primaryChildFragment.sibling = fallbackChildFragment;
          workInProgress2.child = primaryChildFragment;
          return fallbackChildFragment;
        }
        function mountWorkInProgressOffscreenFiber(offscreenProps, mode, renderLanes2) {
          return createFiberFromOffscreen(offscreenProps, mode, NoLanes, null);
        }
        function updateWorkInProgressOffscreenFiber(current2, offscreenProps) {
          return createWorkInProgress(current2, offscreenProps);
        }
        function updateSuspensePrimaryChildren(current2, workInProgress2, primaryChildren, renderLanes2) {
          var currentPrimaryChildFragment = current2.child;
          var currentFallbackChildFragment = currentPrimaryChildFragment.sibling;
          var primaryChildFragment = updateWorkInProgressOffscreenFiber(currentPrimaryChildFragment, {
            mode: "visible",
            children: primaryChildren
          });
          if ((workInProgress2.mode & ConcurrentMode) === NoMode) {
            primaryChildFragment.lanes = renderLanes2;
          }
          primaryChildFragment.return = workInProgress2;
          primaryChildFragment.sibling = null;
          if (currentFallbackChildFragment !== null) {
            var deletions = workInProgress2.deletions;
            if (deletions === null) {
              workInProgress2.deletions = [currentFallbackChildFragment];
              workInProgress2.flags |= ChildDeletion;
            } else {
              deletions.push(currentFallbackChildFragment);
            }
          }
          workInProgress2.child = primaryChildFragment;
          return primaryChildFragment;
        }
        function updateSuspenseFallbackChildren(current2, workInProgress2, primaryChildren, fallbackChildren, renderLanes2) {
          var mode = workInProgress2.mode;
          var currentPrimaryChildFragment = current2.child;
          var currentFallbackChildFragment = currentPrimaryChildFragment.sibling;
          var primaryChildProps = {
            mode: "hidden",
            children: primaryChildren
          };
          var primaryChildFragment;
          if (
            // In legacy mode, we commit the primary tree as if it successfully
            // completed, even though it's in an inconsistent state.
            (mode & ConcurrentMode) === NoMode && // Make sure we're on the second pass, i.e. the primary child fragment was
            // already cloned. In legacy mode, the only case where this isn't true is
            // when DevTools forces us to display a fallback; we skip the first render
            // pass entirely and go straight to rendering the fallback. (In Concurrent
            // Mode, SuspenseList can also trigger this scenario, but this is a legacy-
            // only codepath.)
            workInProgress2.child !== currentPrimaryChildFragment
          ) {
            var progressedPrimaryFragment = workInProgress2.child;
            primaryChildFragment = progressedPrimaryFragment;
            primaryChildFragment.childLanes = NoLanes;
            primaryChildFragment.pendingProps = primaryChildProps;
            if (workInProgress2.mode & ProfileMode) {
              primaryChildFragment.actualDuration = 0;
              primaryChildFragment.actualStartTime = -1;
              primaryChildFragment.selfBaseDuration = currentPrimaryChildFragment.selfBaseDuration;
              primaryChildFragment.treeBaseDuration = currentPrimaryChildFragment.treeBaseDuration;
            }
            workInProgress2.deletions = null;
          } else {
            primaryChildFragment = updateWorkInProgressOffscreenFiber(currentPrimaryChildFragment, primaryChildProps);
            primaryChildFragment.subtreeFlags = currentPrimaryChildFragment.subtreeFlags & StaticMask;
          }
          var fallbackChildFragment;
          if (currentFallbackChildFragment !== null) {
            fallbackChildFragment = createWorkInProgress(currentFallbackChildFragment, fallbackChildren);
          } else {
            fallbackChildFragment = createFiberFromFragment(fallbackChildren, mode, renderLanes2, null);
            fallbackChildFragment.flags |= Placement;
          }
          fallbackChildFragment.return = workInProgress2;
          primaryChildFragment.return = workInProgress2;
          primaryChildFragment.sibling = fallbackChildFragment;
          workInProgress2.child = primaryChildFragment;
          return fallbackChildFragment;
        }
        function retrySuspenseComponentWithoutHydrating(current2, workInProgress2, renderLanes2, recoverableError) {
          if (recoverableError !== null) {
            queueHydrationError(recoverableError);
          }
          reconcileChildFibers(workInProgress2, current2.child, null, renderLanes2);
          var nextProps = workInProgress2.pendingProps;
          var primaryChildren = nextProps.children;
          var primaryChildFragment = mountSuspensePrimaryChildren(workInProgress2, primaryChildren);
          primaryChildFragment.flags |= Placement;
          workInProgress2.memoizedState = null;
          return primaryChildFragment;
        }
        function mountSuspenseFallbackAfterRetryWithoutHydrating(current2, workInProgress2, primaryChildren, fallbackChildren, renderLanes2) {
          var fiberMode = workInProgress2.mode;
          var primaryChildProps = {
            mode: "visible",
            children: primaryChildren
          };
          var primaryChildFragment = mountWorkInProgressOffscreenFiber(primaryChildProps, fiberMode);
          var fallbackChildFragment = createFiberFromFragment(fallbackChildren, fiberMode, renderLanes2, null);
          fallbackChildFragment.flags |= Placement;
          primaryChildFragment.return = workInProgress2;
          fallbackChildFragment.return = workInProgress2;
          primaryChildFragment.sibling = fallbackChildFragment;
          workInProgress2.child = primaryChildFragment;
          if ((workInProgress2.mode & ConcurrentMode) !== NoMode) {
            reconcileChildFibers(workInProgress2, current2.child, null, renderLanes2);
          }
          return fallbackChildFragment;
        }
        function mountDehydratedSuspenseComponent(workInProgress2, suspenseInstance, renderLanes2) {
          if ((workInProgress2.mode & ConcurrentMode) === NoMode) {
            {
              error("Cannot hydrate Suspense in legacy mode. Switch from ReactDOM.hydrate(element, container) to ReactDOMClient.hydrateRoot(container, <App />).render(element) or remove the Suspense components from the server rendered components.");
            }
            workInProgress2.lanes = laneToLanes(SyncLane);
          } else if (isSuspenseInstanceFallback(suspenseInstance)) {
            workInProgress2.lanes = laneToLanes(DefaultHydrationLane);
          } else {
            workInProgress2.lanes = laneToLanes(OffscreenLane);
          }
          return null;
        }
        function updateDehydratedSuspenseComponent(current2, workInProgress2, didSuspend, nextProps, suspenseInstance, suspenseState, renderLanes2) {
          if (!didSuspend) {
            warnIfHydrating();
            if ((workInProgress2.mode & ConcurrentMode) === NoMode) {
              return retrySuspenseComponentWithoutHydrating(
                current2,
                workInProgress2,
                renderLanes2,
                // TODO: When we delete legacy mode, we should make this error argument
                // required — every concurrent mode path that causes hydration to
                // de-opt to client rendering should have an error message.
                null
              );
            }
            if (isSuspenseInstanceFallback(suspenseInstance)) {
              var digest, message, stack;
              {
                var _getSuspenseInstanceF = getSuspenseInstanceFallbackErrorDetails(suspenseInstance);
                digest = _getSuspenseInstanceF.digest;
                message = _getSuspenseInstanceF.message;
                stack = _getSuspenseInstanceF.stack;
              }
              var error2;
              if (message) {
                error2 = new Error(message);
              } else {
                error2 = new Error("The server could not finish this Suspense boundary, likely due to an error during server rendering. Switched to client rendering.");
              }
              var capturedValue = createCapturedValue(error2, digest, stack);
              return retrySuspenseComponentWithoutHydrating(current2, workInProgress2, renderLanes2, capturedValue);
            }
            var hasContextChanged2 = includesSomeLane(renderLanes2, current2.childLanes);
            if (didReceiveUpdate || hasContextChanged2) {
              var root2 = getWorkInProgressRoot();
              if (root2 !== null) {
                var attemptHydrationAtLane = getBumpedLaneForHydration(root2, renderLanes2);
                if (attemptHydrationAtLane !== NoLane && attemptHydrationAtLane !== suspenseState.retryLane) {
                  suspenseState.retryLane = attemptHydrationAtLane;
                  var eventTime = NoTimestamp;
                  enqueueConcurrentRenderForLane(current2, attemptHydrationAtLane);
                  scheduleUpdateOnFiber(root2, current2, attemptHydrationAtLane, eventTime);
                }
              }
              renderDidSuspendDelayIfPossible();
              var _capturedValue = createCapturedValue(new Error("This Suspense boundary received an update before it finished hydrating. This caused the boundary to switch to client rendering. The usual way to fix this is to wrap the original update in startTransition."));
              return retrySuspenseComponentWithoutHydrating(current2, workInProgress2, renderLanes2, _capturedValue);
            } else if (isSuspenseInstancePending(suspenseInstance)) {
              workInProgress2.flags |= DidCapture;
              workInProgress2.child = current2.child;
              var retry = retryDehydratedSuspenseBoundary.bind(null, current2);
              registerSuspenseInstanceRetry(suspenseInstance, retry);
              return null;
            } else {
              reenterHydrationStateFromDehydratedSuspenseInstance(workInProgress2, suspenseInstance, suspenseState.treeContext);
              var primaryChildren = nextProps.children;
              var primaryChildFragment = mountSuspensePrimaryChildren(workInProgress2, primaryChildren);
              primaryChildFragment.flags |= Hydrating;
              return primaryChildFragment;
            }
          } else {
            if (workInProgress2.flags & ForceClientRender) {
              workInProgress2.flags &= ~ForceClientRender;
              var _capturedValue2 = createCapturedValue(new Error("There was an error while hydrating this Suspense boundary. Switched to client rendering."));
              return retrySuspenseComponentWithoutHydrating(current2, workInProgress2, renderLanes2, _capturedValue2);
            } else if (workInProgress2.memoizedState !== null) {
              workInProgress2.child = current2.child;
              workInProgress2.flags |= DidCapture;
              return null;
            } else {
              var nextPrimaryChildren = nextProps.children;
              var nextFallbackChildren = nextProps.fallback;
              var fallbackChildFragment = mountSuspenseFallbackAfterRetryWithoutHydrating(current2, workInProgress2, nextPrimaryChildren, nextFallbackChildren, renderLanes2);
              var _primaryChildFragment4 = workInProgress2.child;
              _primaryChildFragment4.memoizedState = mountSuspenseOffscreenState(renderLanes2);
              workInProgress2.memoizedState = SUSPENDED_MARKER;
              return fallbackChildFragment;
            }
          }
        }
        function scheduleSuspenseWorkOnFiber(fiber, renderLanes2, propagationRoot) {
          fiber.lanes = mergeLanes(fiber.lanes, renderLanes2);
          var alternate = fiber.alternate;
          if (alternate !== null) {
            alternate.lanes = mergeLanes(alternate.lanes, renderLanes2);
          }
          scheduleContextWorkOnParentPath(fiber.return, renderLanes2, propagationRoot);
        }
        function propagateSuspenseContextChange(workInProgress2, firstChild, renderLanes2) {
          var node = firstChild;
          while (node !== null) {
            if (node.tag === SuspenseComponent) {
              var state = node.memoizedState;
              if (state !== null) {
                scheduleSuspenseWorkOnFiber(node, renderLanes2, workInProgress2);
              }
            } else if (node.tag === SuspenseListComponent) {
              scheduleSuspenseWorkOnFiber(node, renderLanes2, workInProgress2);
            } else if (node.child !== null) {
              node.child.return = node;
              node = node.child;
              continue;
            }
            if (node === workInProgress2) {
              return;
            }
            while (node.sibling === null) {
              if (node.return === null || node.return === workInProgress2) {
                return;
              }
              node = node.return;
            }
            node.sibling.return = node.return;
            node = node.sibling;
          }
        }
        function findLastContentRow(firstChild) {
          var row = firstChild;
          var lastContentRow = null;
          while (row !== null) {
            var currentRow = row.alternate;
            if (currentRow !== null && findFirstSuspended(currentRow) === null) {
              lastContentRow = row;
            }
            row = row.sibling;
          }
          return lastContentRow;
        }
        function validateRevealOrder(revealOrder) {
          {
            if (revealOrder !== void 0 && revealOrder !== "forwards" && revealOrder !== "backwards" && revealOrder !== "together" && !didWarnAboutRevealOrder[revealOrder]) {
              didWarnAboutRevealOrder[revealOrder] = true;
              if (typeof revealOrder === "string") {
                switch (revealOrder.toLowerCase()) {
                  case "together":
                  case "forwards":
                  case "backwards": {
                    error('"%s" is not a valid value for revealOrder on <SuspenseList />. Use lowercase "%s" instead.', revealOrder, revealOrder.toLowerCase());
                    break;
                  }
                  case "forward":
                  case "backward": {
                    error('"%s" is not a valid value for revealOrder on <SuspenseList />. React uses the -s suffix in the spelling. Use "%ss" instead.', revealOrder, revealOrder.toLowerCase());
                    break;
                  }
                  default:
                    error('"%s" is not a supported revealOrder on <SuspenseList />. Did you mean "together", "forwards" or "backwards"?', revealOrder);
                    break;
                }
              } else {
                error('%s is not a supported value for revealOrder on <SuspenseList />. Did you mean "together", "forwards" or "backwards"?', revealOrder);
              }
            }
          }
        }
        function validateTailOptions(tailMode, revealOrder) {
          {
            if (tailMode !== void 0 && !didWarnAboutTailOptions[tailMode]) {
              if (tailMode !== "collapsed" && tailMode !== "hidden") {
                didWarnAboutTailOptions[tailMode] = true;
                error('"%s" is not a supported value for tail on <SuspenseList />. Did you mean "collapsed" or "hidden"?', tailMode);
              } else if (revealOrder !== "forwards" && revealOrder !== "backwards") {
                didWarnAboutTailOptions[tailMode] = true;
                error('<SuspenseList tail="%s" /> is only valid if revealOrder is "forwards" or "backwards". Did you mean to specify revealOrder="forwards"?', tailMode);
              }
            }
          }
        }
        function validateSuspenseListNestedChild(childSlot, index2) {
          {
            var isAnArray = isArray(childSlot);
            var isIterable = !isAnArray && typeof getIteratorFn(childSlot) === "function";
            if (isAnArray || isIterable) {
              var type = isAnArray ? "array" : "iterable";
              error("A nested %s was passed to row #%s in <SuspenseList />. Wrap it in an additional SuspenseList to configure its revealOrder: <SuspenseList revealOrder=...> ... <SuspenseList revealOrder=...>{%s}</SuspenseList> ... </SuspenseList>", type, index2, type);
              return false;
            }
          }
          return true;
        }
        function validateSuspenseListChildren(children, revealOrder) {
          {
            if ((revealOrder === "forwards" || revealOrder === "backwards") && children !== void 0 && children !== null && children !== false) {
              if (isArray(children)) {
                for (var i = 0; i < children.length; i++) {
                  if (!validateSuspenseListNestedChild(children[i], i)) {
                    return;
                  }
                }
              } else {
                var iteratorFn = getIteratorFn(children);
                if (typeof iteratorFn === "function") {
                  var childrenIterator = iteratorFn.call(children);
                  if (childrenIterator) {
                    var step = childrenIterator.next();
                    var _i = 0;
                    for (; !step.done; step = childrenIterator.next()) {
                      if (!validateSuspenseListNestedChild(step.value, _i)) {
                        return;
                      }
                      _i++;
                    }
                  }
                } else {
                  error('A single row was passed to a <SuspenseList revealOrder="%s" />. This is not useful since it needs multiple rows. Did you mean to pass multiple children or an array?', revealOrder);
                }
              }
            }
          }
        }
        function initSuspenseListRenderState(workInProgress2, isBackwards, tail, lastContentRow, tailMode) {
          var renderState = workInProgress2.memoizedState;
          if (renderState === null) {
            workInProgress2.memoizedState = {
              isBackwards,
              rendering: null,
              renderingStartTime: 0,
              last: lastContentRow,
              tail,
              tailMode
            };
          } else {
            renderState.isBackwards = isBackwards;
            renderState.rendering = null;
            renderState.renderingStartTime = 0;
            renderState.last = lastContentRow;
            renderState.tail = tail;
            renderState.tailMode = tailMode;
          }
        }
        function updateSuspenseListComponent(current2, workInProgress2, renderLanes2) {
          var nextProps = workInProgress2.pendingProps;
          var revealOrder = nextProps.revealOrder;
          var tailMode = nextProps.tail;
          var newChildren = nextProps.children;
          validateRevealOrder(revealOrder);
          validateTailOptions(tailMode, revealOrder);
          validateSuspenseListChildren(newChildren, revealOrder);
          reconcileChildren(current2, workInProgress2, newChildren, renderLanes2);
          var suspenseContext = suspenseStackCursor.current;
          var shouldForceFallback = hasSuspenseContext(suspenseContext, ForceSuspenseFallback);
          if (shouldForceFallback) {
            suspenseContext = setShallowSuspenseContext(suspenseContext, ForceSuspenseFallback);
            workInProgress2.flags |= DidCapture;
          } else {
            var didSuspendBefore = current2 !== null && (current2.flags & DidCapture) !== NoFlags;
            if (didSuspendBefore) {
              propagateSuspenseContextChange(workInProgress2, workInProgress2.child, renderLanes2);
            }
            suspenseContext = setDefaultShallowSuspenseContext(suspenseContext);
          }
          pushSuspenseContext(workInProgress2, suspenseContext);
          if ((workInProgress2.mode & ConcurrentMode) === NoMode) {
            workInProgress2.memoizedState = null;
          } else {
            switch (revealOrder) {
              case "forwards": {
                var lastContentRow = findLastContentRow(workInProgress2.child);
                var tail;
                if (lastContentRow === null) {
                  tail = workInProgress2.child;
                  workInProgress2.child = null;
                } else {
                  tail = lastContentRow.sibling;
                  lastContentRow.sibling = null;
                }
                initSuspenseListRenderState(
                  workInProgress2,
                  false,
                  // isBackwards
                  tail,
                  lastContentRow,
                  tailMode
                );
                break;
              }
              case "backwards": {
                var _tail = null;
                var row = workInProgress2.child;
                workInProgress2.child = null;
                while (row !== null) {
                  var currentRow = row.alternate;
                  if (currentRow !== null && findFirstSuspended(currentRow) === null) {
                    workInProgress2.child = row;
                    break;
                  }
                  var nextRow = row.sibling;
                  row.sibling = _tail;
                  _tail = row;
                  row = nextRow;
                }
                initSuspenseListRenderState(
                  workInProgress2,
                  true,
                  // isBackwards
                  _tail,
                  null,
                  // last
                  tailMode
                );
                break;
              }
              case "together": {
                initSuspenseListRenderState(
                  workInProgress2,
                  false,
                  // isBackwards
                  null,
                  // tail
                  null,
                  // last
                  void 0
                );
                break;
              }
              default: {
                workInProgress2.memoizedState = null;
              }
            }
          }
          return workInProgress2.child;
        }
        function updatePortalComponent(current2, workInProgress2, renderLanes2) {
          pushHostContainer(workInProgress2, workInProgress2.stateNode.containerInfo);
          var nextChildren = workInProgress2.pendingProps;
          if (current2 === null) {
            workInProgress2.child = reconcileChildFibers(workInProgress2, null, nextChildren, renderLanes2);
          } else {
            reconcileChildren(current2, workInProgress2, nextChildren, renderLanes2);
          }
          return workInProgress2.child;
        }
        var hasWarnedAboutUsingNoValuePropOnContextProvider = false;
        function updateContextProvider(current2, workInProgress2, renderLanes2) {
          var providerType = workInProgress2.type;
          var context = providerType._context;
          var newProps = workInProgress2.pendingProps;
          var oldProps = workInProgress2.memoizedProps;
          var newValue = newProps.value;
          {
            if (!("value" in newProps)) {
              if (!hasWarnedAboutUsingNoValuePropOnContextProvider) {
                hasWarnedAboutUsingNoValuePropOnContextProvider = true;
                error("The `value` prop is required for the `<Context.Provider>`. Did you misspell it or forget to pass it?");
              }
            }
            var providerPropTypes = workInProgress2.type.propTypes;
            if (providerPropTypes) {
              checkPropTypes(providerPropTypes, newProps, "prop", "Context.Provider");
            }
          }
          pushProvider(workInProgress2, context, newValue);
          {
            if (oldProps !== null) {
              var oldValue = oldProps.value;
              if (objectIs(oldValue, newValue)) {
                if (oldProps.children === newProps.children && !hasContextChanged()) {
                  return bailoutOnAlreadyFinishedWork(current2, workInProgress2, renderLanes2);
                }
              } else {
                propagateContextChange(workInProgress2, context, renderLanes2);
              }
            }
          }
          var newChildren = newProps.children;
          reconcileChildren(current2, workInProgress2, newChildren, renderLanes2);
          return workInProgress2.child;
        }
        var hasWarnedAboutUsingContextAsConsumer = false;
        function updateContextConsumer(current2, workInProgress2, renderLanes2) {
          var context = workInProgress2.type;
          {
            if (context._context === void 0) {
              if (context !== context.Consumer) {
                if (!hasWarnedAboutUsingContextAsConsumer) {
                  hasWarnedAboutUsingContextAsConsumer = true;
                  error("Rendering <Context> directly is not supported and will be removed in a future major release. Did you mean to render <Context.Consumer> instead?");
                }
              }
            } else {
              context = context._context;
            }
          }
          var newProps = workInProgress2.pendingProps;
          var render2 = newProps.children;
          {
            if (typeof render2 !== "function") {
              error("A context consumer was rendered with multiple children, or a child that isn't a function. A context consumer expects a single child that is a function. If you did pass a function, make sure there is no trailing or leading whitespace around it.");
            }
          }
          prepareToReadContext(workInProgress2, renderLanes2);
          var newValue = readContext(context);
          {
            markComponentRenderStarted(workInProgress2);
          }
          var newChildren;
          {
            ReactCurrentOwner$1.current = workInProgress2;
            setIsRendering(true);
            newChildren = render2(newValue);
            setIsRendering(false);
          }
          {
            markComponentRenderStopped();
          }
          workInProgress2.flags |= PerformedWork;
          reconcileChildren(current2, workInProgress2, newChildren, renderLanes2);
          return workInProgress2.child;
        }
        function markWorkInProgressReceivedUpdate() {
          didReceiveUpdate = true;
        }
        function resetSuspendedCurrentOnMountInLegacyMode(current2, workInProgress2) {
          if ((workInProgress2.mode & ConcurrentMode) === NoMode) {
            if (current2 !== null) {
              current2.alternate = null;
              workInProgress2.alternate = null;
              workInProgress2.flags |= Placement;
            }
          }
        }
        function bailoutOnAlreadyFinishedWork(current2, workInProgress2, renderLanes2) {
          if (current2 !== null) {
            workInProgress2.dependencies = current2.dependencies;
          }
          {
            stopProfilerTimerIfRunning();
          }
          markSkippedUpdateLanes(workInProgress2.lanes);
          if (!includesSomeLane(renderLanes2, workInProgress2.childLanes)) {
            {
              return null;
            }
          }
          cloneChildFibers(current2, workInProgress2);
          return workInProgress2.child;
        }
        function remountFiber(current2, oldWorkInProgress, newWorkInProgress) {
          {
            var returnFiber = oldWorkInProgress.return;
            if (returnFiber === null) {
              throw new Error("Cannot swap the root fiber.");
            }
            current2.alternate = null;
            oldWorkInProgress.alternate = null;
            newWorkInProgress.index = oldWorkInProgress.index;
            newWorkInProgress.sibling = oldWorkInProgress.sibling;
            newWorkInProgress.return = oldWorkInProgress.return;
            newWorkInProgress.ref = oldWorkInProgress.ref;
            if (oldWorkInProgress === returnFiber.child) {
              returnFiber.child = newWorkInProgress;
            } else {
              var prevSibling = returnFiber.child;
              if (prevSibling === null) {
                throw new Error("Expected parent to have a child.");
              }
              while (prevSibling.sibling !== oldWorkInProgress) {
                prevSibling = prevSibling.sibling;
                if (prevSibling === null) {
                  throw new Error("Expected to find the previous sibling.");
                }
              }
              prevSibling.sibling = newWorkInProgress;
            }
            var deletions = returnFiber.deletions;
            if (deletions === null) {
              returnFiber.deletions = [current2];
              returnFiber.flags |= ChildDeletion;
            } else {
              deletions.push(current2);
            }
            newWorkInProgress.flags |= Placement;
            return newWorkInProgress;
          }
        }
        function checkScheduledUpdateOrContext(current2, renderLanes2) {
          var updateLanes = current2.lanes;
          if (includesSomeLane(updateLanes, renderLanes2)) {
            return true;
          }
          return false;
        }
        function attemptEarlyBailoutIfNoScheduledUpdate(current2, workInProgress2, renderLanes2) {
          switch (workInProgress2.tag) {
            case HostRoot:
              pushHostRootContext(workInProgress2);
              var root2 = workInProgress2.stateNode;
              resetHydrationState();
              break;
            case HostComponent:
              pushHostContext(workInProgress2);
              break;
            case ClassComponent: {
              var Component = workInProgress2.type;
              if (isContextProvider(Component)) {
                pushContextProvider(workInProgress2);
              }
              break;
            }
            case HostPortal:
              pushHostContainer(workInProgress2, workInProgress2.stateNode.containerInfo);
              break;
            case ContextProvider: {
              var newValue = workInProgress2.memoizedProps.value;
              var context = workInProgress2.type._context;
              pushProvider(workInProgress2, context, newValue);
              break;
            }
            case Profiler:
              {
                var hasChildWork = includesSomeLane(renderLanes2, workInProgress2.childLanes);
                if (hasChildWork) {
                  workInProgress2.flags |= Update;
                }
                {
                  var stateNode = workInProgress2.stateNode;
                  stateNode.effectDuration = 0;
                  stateNode.passiveEffectDuration = 0;
                }
              }
              break;
            case SuspenseComponent: {
              var state = workInProgress2.memoizedState;
              if (state !== null) {
                if (state.dehydrated !== null) {
                  pushSuspenseContext(workInProgress2, setDefaultShallowSuspenseContext(suspenseStackCursor.current));
                  workInProgress2.flags |= DidCapture;
                  return null;
                }
                var primaryChildFragment = workInProgress2.child;
                var primaryChildLanes = primaryChildFragment.childLanes;
                if (includesSomeLane(renderLanes2, primaryChildLanes)) {
                  return updateSuspenseComponent(current2, workInProgress2, renderLanes2);
                } else {
                  pushSuspenseContext(workInProgress2, setDefaultShallowSuspenseContext(suspenseStackCursor.current));
                  var child = bailoutOnAlreadyFinishedWork(current2, workInProgress2, renderLanes2);
                  if (child !== null) {
                    return child.sibling;
                  } else {
                    return null;
                  }
                }
              } else {
                pushSuspenseContext(workInProgress2, setDefaultShallowSuspenseContext(suspenseStackCursor.current));
              }
              break;
            }
            case SuspenseListComponent: {
              var didSuspendBefore = (current2.flags & DidCapture) !== NoFlags;
              var _hasChildWork = includesSomeLane(renderLanes2, workInProgress2.childLanes);
              if (didSuspendBefore) {
                if (_hasChildWork) {
                  return updateSuspenseListComponent(current2, workInProgress2, renderLanes2);
                }
                workInProgress2.flags |= DidCapture;
              }
              var renderState = workInProgress2.memoizedState;
              if (renderState !== null) {
                renderState.rendering = null;
                renderState.tail = null;
                renderState.lastEffect = null;
              }
              pushSuspenseContext(workInProgress2, suspenseStackCursor.current);
              if (_hasChildWork) {
                break;
              } else {
                return null;
              }
            }
            case OffscreenComponent:
            case LegacyHiddenComponent: {
              workInProgress2.lanes = NoLanes;
              return updateOffscreenComponent(current2, workInProgress2, renderLanes2);
            }
          }
          return bailoutOnAlreadyFinishedWork(current2, workInProgress2, renderLanes2);
        }
        function beginWork(current2, workInProgress2, renderLanes2) {
          {
            if (workInProgress2._debugNeedsRemount && current2 !== null) {
              return remountFiber(current2, workInProgress2, createFiberFromTypeAndProps(workInProgress2.type, workInProgress2.key, workInProgress2.pendingProps, workInProgress2._debugOwner || null, workInProgress2.mode, workInProgress2.lanes));
            }
          }
          if (current2 !== null) {
            var oldProps = current2.memoizedProps;
            var newProps = workInProgress2.pendingProps;
            if (oldProps !== newProps || hasContextChanged() || // Force a re-render if the implementation changed due to hot reload:
            workInProgress2.type !== current2.type) {
              didReceiveUpdate = true;
            } else {
              var hasScheduledUpdateOrContext = checkScheduledUpdateOrContext(current2, renderLanes2);
              if (!hasScheduledUpdateOrContext && // If this is the second pass of an error or suspense boundary, there
              // may not be work scheduled on `current`, so we check for this flag.
              (workInProgress2.flags & DidCapture) === NoFlags) {
                didReceiveUpdate = false;
                return attemptEarlyBailoutIfNoScheduledUpdate(current2, workInProgress2, renderLanes2);
              }
              if ((current2.flags & ForceUpdateForLegacySuspense) !== NoFlags) {
                didReceiveUpdate = true;
              } else {
                didReceiveUpdate = false;
              }
            }
          } else {
            didReceiveUpdate = false;
            if (getIsHydrating() && isForkedChild(workInProgress2)) {
              var slotIndex = workInProgress2.index;
              var numberOfForks = getForksAtLevel();
              pushTreeId(workInProgress2, numberOfForks, slotIndex);
            }
          }
          workInProgress2.lanes = NoLanes;
          switch (workInProgress2.tag) {
            case IndeterminateComponent: {
              return mountIndeterminateComponent(current2, workInProgress2, workInProgress2.type, renderLanes2);
            }
            case LazyComponent: {
              var elementType = workInProgress2.elementType;
              return mountLazyComponent(current2, workInProgress2, elementType, renderLanes2);
            }
            case FunctionComponent: {
              var Component = workInProgress2.type;
              var unresolvedProps = workInProgress2.pendingProps;
              var resolvedProps = workInProgress2.elementType === Component ? unresolvedProps : resolveDefaultProps(Component, unresolvedProps);
              return updateFunctionComponent(current2, workInProgress2, Component, resolvedProps, renderLanes2);
            }
            case ClassComponent: {
              var _Component = workInProgress2.type;
              var _unresolvedProps = workInProgress2.pendingProps;
              var _resolvedProps = workInProgress2.elementType === _Component ? _unresolvedProps : resolveDefaultProps(_Component, _unresolvedProps);
              return updateClassComponent(current2, workInProgress2, _Component, _resolvedProps, renderLanes2);
            }
            case HostRoot:
              return updateHostRoot(current2, workInProgress2, renderLanes2);
            case HostComponent:
              return updateHostComponent(current2, workInProgress2, renderLanes2);
            case HostText:
              return updateHostText(current2, workInProgress2);
            case SuspenseComponent:
              return updateSuspenseComponent(current2, workInProgress2, renderLanes2);
            case HostPortal:
              return updatePortalComponent(current2, workInProgress2, renderLanes2);
            case ForwardRef: {
              var type = workInProgress2.type;
              var _unresolvedProps2 = workInProgress2.pendingProps;
              var _resolvedProps2 = workInProgress2.elementType === type ? _unresolvedProps2 : resolveDefaultProps(type, _unresolvedProps2);
              return updateForwardRef(current2, workInProgress2, type, _resolvedProps2, renderLanes2);
            }
            case Fragment2:
              return updateFragment(current2, workInProgress2, renderLanes2);
            case Mode:
              return updateMode(current2, workInProgress2, renderLanes2);
            case Profiler:
              return updateProfiler(current2, workInProgress2, renderLanes2);
            case ContextProvider:
              return updateContextProvider(current2, workInProgress2, renderLanes2);
            case ContextConsumer:
              return updateContextConsumer(current2, workInProgress2, renderLanes2);
            case MemoComponent: {
              var _type2 = workInProgress2.type;
              var _unresolvedProps3 = workInProgress2.pendingProps;
              var _resolvedProps3 = resolveDefaultProps(_type2, _unresolvedProps3);
              {
                if (workInProgress2.type !== workInProgress2.elementType) {
                  var outerPropTypes = _type2.propTypes;
                  if (outerPropTypes) {
                    checkPropTypes(
                      outerPropTypes,
                      _resolvedProps3,
                      // Resolved for outer only
                      "prop",
                      getComponentNameFromType(_type2)
                    );
                  }
                }
              }
              _resolvedProps3 = resolveDefaultProps(_type2.type, _resolvedProps3);
              return updateMemoComponent(current2, workInProgress2, _type2, _resolvedProps3, renderLanes2);
            }
            case SimpleMemoComponent: {
              return updateSimpleMemoComponent(current2, workInProgress2, workInProgress2.type, workInProgress2.pendingProps, renderLanes2);
            }
            case IncompleteClassComponent: {
              var _Component2 = workInProgress2.type;
              var _unresolvedProps4 = workInProgress2.pendingProps;
              var _resolvedProps4 = workInProgress2.elementType === _Component2 ? _unresolvedProps4 : resolveDefaultProps(_Component2, _unresolvedProps4);
              return mountIncompleteClassComponent(current2, workInProgress2, _Component2, _resolvedProps4, renderLanes2);
            }
            case SuspenseListComponent: {
              return updateSuspenseListComponent(current2, workInProgress2, renderLanes2);
            }
            case ScopeComponent: {
              break;
            }
            case OffscreenComponent: {
              return updateOffscreenComponent(current2, workInProgress2, renderLanes2);
            }
          }
          throw new Error("Unknown unit of work tag (" + workInProgress2.tag + "). This error is likely caused by a bug in React. Please file an issue.");
        }
        function markUpdate(workInProgress2) {
          workInProgress2.flags |= Update;
        }
        function markRef$1(workInProgress2) {
          workInProgress2.flags |= Ref;
          {
            workInProgress2.flags |= RefStatic;
          }
        }
        var appendAllChildren;
        var updateHostContainer;
        var updateHostComponent$1;
        var updateHostText$1;
        {
          appendAllChildren = function(parent, workInProgress2, needsVisibilityToggle, isHidden) {
            var node = workInProgress2.child;
            while (node !== null) {
              if (node.tag === HostComponent || node.tag === HostText) {
                appendInitialChild(parent, node.stateNode);
              } else if (node.tag === HostPortal) ;
              else if (node.child !== null) {
                node.child.return = node;
                node = node.child;
                continue;
              }
              if (node === workInProgress2) {
                return;
              }
              while (node.sibling === null) {
                if (node.return === null || node.return === workInProgress2) {
                  return;
                }
                node = node.return;
              }
              node.sibling.return = node.return;
              node = node.sibling;
            }
          };
          updateHostContainer = function(current2, workInProgress2) {
          };
          updateHostComponent$1 = function(current2, workInProgress2, type, newProps, rootContainerInstance) {
            var oldProps = current2.memoizedProps;
            if (oldProps === newProps) {
              return;
            }
            var instance = workInProgress2.stateNode;
            var currentHostContext = getHostContext();
            var updatePayload = prepareUpdate(instance, type, oldProps, newProps, rootContainerInstance, currentHostContext);
            workInProgress2.updateQueue = updatePayload;
            if (updatePayload) {
              markUpdate(workInProgress2);
            }
          };
          updateHostText$1 = function(current2, workInProgress2, oldText, newText) {
            if (oldText !== newText) {
              markUpdate(workInProgress2);
            }
          };
        }
        function cutOffTailIfNeeded(renderState, hasRenderedATailFallback) {
          if (getIsHydrating()) {
            return;
          }
          switch (renderState.tailMode) {
            case "hidden": {
              var tailNode = renderState.tail;
              var lastTailNode = null;
              while (tailNode !== null) {
                if (tailNode.alternate !== null) {
                  lastTailNode = tailNode;
                }
                tailNode = tailNode.sibling;
              }
              if (lastTailNode === null) {
                renderState.tail = null;
              } else {
                lastTailNode.sibling = null;
              }
              break;
            }
            case "collapsed": {
              var _tailNode = renderState.tail;
              var _lastTailNode = null;
              while (_tailNode !== null) {
                if (_tailNode.alternate !== null) {
                  _lastTailNode = _tailNode;
                }
                _tailNode = _tailNode.sibling;
              }
              if (_lastTailNode === null) {
                if (!hasRenderedATailFallback && renderState.tail !== null) {
                  renderState.tail.sibling = null;
                } else {
                  renderState.tail = null;
                }
              } else {
                _lastTailNode.sibling = null;
              }
              break;
            }
          }
        }
        function bubbleProperties(completedWork) {
          var didBailout = completedWork.alternate !== null && completedWork.alternate.child === completedWork.child;
          var newChildLanes = NoLanes;
          var subtreeFlags = NoFlags;
          if (!didBailout) {
            if ((completedWork.mode & ProfileMode) !== NoMode) {
              var actualDuration = completedWork.actualDuration;
              var treeBaseDuration = completedWork.selfBaseDuration;
              var child = completedWork.child;
              while (child !== null) {
                newChildLanes = mergeLanes(newChildLanes, mergeLanes(child.lanes, child.childLanes));
                subtreeFlags |= child.subtreeFlags;
                subtreeFlags |= child.flags;
                actualDuration += child.actualDuration;
                treeBaseDuration += child.treeBaseDuration;
                child = child.sibling;
              }
              completedWork.actualDuration = actualDuration;
              completedWork.treeBaseDuration = treeBaseDuration;
            } else {
              var _child = completedWork.child;
              while (_child !== null) {
                newChildLanes = mergeLanes(newChildLanes, mergeLanes(_child.lanes, _child.childLanes));
                subtreeFlags |= _child.subtreeFlags;
                subtreeFlags |= _child.flags;
                _child.return = completedWork;
                _child = _child.sibling;
              }
            }
            completedWork.subtreeFlags |= subtreeFlags;
          } else {
            if ((completedWork.mode & ProfileMode) !== NoMode) {
              var _treeBaseDuration = completedWork.selfBaseDuration;
              var _child2 = completedWork.child;
              while (_child2 !== null) {
                newChildLanes = mergeLanes(newChildLanes, mergeLanes(_child2.lanes, _child2.childLanes));
                subtreeFlags |= _child2.subtreeFlags & StaticMask;
                subtreeFlags |= _child2.flags & StaticMask;
                _treeBaseDuration += _child2.treeBaseDuration;
                _child2 = _child2.sibling;
              }
              completedWork.treeBaseDuration = _treeBaseDuration;
            } else {
              var _child3 = completedWork.child;
              while (_child3 !== null) {
                newChildLanes = mergeLanes(newChildLanes, mergeLanes(_child3.lanes, _child3.childLanes));
                subtreeFlags |= _child3.subtreeFlags & StaticMask;
                subtreeFlags |= _child3.flags & StaticMask;
                _child3.return = completedWork;
                _child3 = _child3.sibling;
              }
            }
            completedWork.subtreeFlags |= subtreeFlags;
          }
          completedWork.childLanes = newChildLanes;
          return didBailout;
        }
        function completeDehydratedSuspenseBoundary(current2, workInProgress2, nextState) {
          if (hasUnhydratedTailNodes() && (workInProgress2.mode & ConcurrentMode) !== NoMode && (workInProgress2.flags & DidCapture) === NoFlags) {
            warnIfUnhydratedTailNodes(workInProgress2);
            resetHydrationState();
            workInProgress2.flags |= ForceClientRender | Incomplete | ShouldCapture;
            return false;
          }
          var wasHydrated = popHydrationState(workInProgress2);
          if (nextState !== null && nextState.dehydrated !== null) {
            if (current2 === null) {
              if (!wasHydrated) {
                throw new Error("A dehydrated suspense component was completed without a hydrated node. This is probably a bug in React.");
              }
              prepareToHydrateHostSuspenseInstance(workInProgress2);
              bubbleProperties(workInProgress2);
              {
                if ((workInProgress2.mode & ProfileMode) !== NoMode) {
                  var isTimedOutSuspense = nextState !== null;
                  if (isTimedOutSuspense) {
                    var primaryChildFragment = workInProgress2.child;
                    if (primaryChildFragment !== null) {
                      workInProgress2.treeBaseDuration -= primaryChildFragment.treeBaseDuration;
                    }
                  }
                }
              }
              return false;
            } else {
              resetHydrationState();
              if ((workInProgress2.flags & DidCapture) === NoFlags) {
                workInProgress2.memoizedState = null;
              }
              workInProgress2.flags |= Update;
              bubbleProperties(workInProgress2);
              {
                if ((workInProgress2.mode & ProfileMode) !== NoMode) {
                  var _isTimedOutSuspense = nextState !== null;
                  if (_isTimedOutSuspense) {
                    var _primaryChildFragment = workInProgress2.child;
                    if (_primaryChildFragment !== null) {
                      workInProgress2.treeBaseDuration -= _primaryChildFragment.treeBaseDuration;
                    }
                  }
                }
              }
              return false;
            }
          } else {
            upgradeHydrationErrorsToRecoverable();
            return true;
          }
        }
        function completeWork(current2, workInProgress2, renderLanes2) {
          var newProps = workInProgress2.pendingProps;
          popTreeContext(workInProgress2);
          switch (workInProgress2.tag) {
            case IndeterminateComponent:
            case LazyComponent:
            case SimpleMemoComponent:
            case FunctionComponent:
            case ForwardRef:
            case Fragment2:
            case Mode:
            case Profiler:
            case ContextConsumer:
            case MemoComponent:
              bubbleProperties(workInProgress2);
              return null;
            case ClassComponent: {
              var Component = workInProgress2.type;
              if (isContextProvider(Component)) {
                popContext(workInProgress2);
              }
              bubbleProperties(workInProgress2);
              return null;
            }
            case HostRoot: {
              var fiberRoot = workInProgress2.stateNode;
              popHostContainer(workInProgress2);
              popTopLevelContextObject(workInProgress2);
              resetWorkInProgressVersions();
              if (fiberRoot.pendingContext) {
                fiberRoot.context = fiberRoot.pendingContext;
                fiberRoot.pendingContext = null;
              }
              if (current2 === null || current2.child === null) {
                var wasHydrated = popHydrationState(workInProgress2);
                if (wasHydrated) {
                  markUpdate(workInProgress2);
                } else {
                  if (current2 !== null) {
                    var prevState = current2.memoizedState;
                    if (
                      // Check if this is a client root
                      !prevState.isDehydrated || // Check if we reverted to client rendering (e.g. due to an error)
                      (workInProgress2.flags & ForceClientRender) !== NoFlags
                    ) {
                      workInProgress2.flags |= Snapshot;
                      upgradeHydrationErrorsToRecoverable();
                    }
                  }
                }
              }
              updateHostContainer(current2, workInProgress2);
              bubbleProperties(workInProgress2);
              return null;
            }
            case HostComponent: {
              popHostContext(workInProgress2);
              var rootContainerInstance = getRootHostContainer();
              var type = workInProgress2.type;
              if (current2 !== null && workInProgress2.stateNode != null) {
                updateHostComponent$1(current2, workInProgress2, type, newProps, rootContainerInstance);
                if (current2.ref !== workInProgress2.ref) {
                  markRef$1(workInProgress2);
                }
              } else {
                if (!newProps) {
                  if (workInProgress2.stateNode === null) {
                    throw new Error("We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue.");
                  }
                  bubbleProperties(workInProgress2);
                  return null;
                }
                var currentHostContext = getHostContext();
                var _wasHydrated = popHydrationState(workInProgress2);
                if (_wasHydrated) {
                  if (prepareToHydrateHostInstance(workInProgress2, rootContainerInstance, currentHostContext)) {
                    markUpdate(workInProgress2);
                  }
                } else {
                  var instance = createInstance(type, newProps, rootContainerInstance, currentHostContext, workInProgress2);
                  appendAllChildren(instance, workInProgress2, false, false);
                  workInProgress2.stateNode = instance;
                  if (finalizeInitialChildren(instance, type, newProps, rootContainerInstance)) {
                    markUpdate(workInProgress2);
                  }
                }
                if (workInProgress2.ref !== null) {
                  markRef$1(workInProgress2);
                }
              }
              bubbleProperties(workInProgress2);
              return null;
            }
            case HostText: {
              var newText = newProps;
              if (current2 && workInProgress2.stateNode != null) {
                var oldText = current2.memoizedProps;
                updateHostText$1(current2, workInProgress2, oldText, newText);
              } else {
                if (typeof newText !== "string") {
                  if (workInProgress2.stateNode === null) {
                    throw new Error("We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue.");
                  }
                }
                var _rootContainerInstance = getRootHostContainer();
                var _currentHostContext = getHostContext();
                var _wasHydrated2 = popHydrationState(workInProgress2);
                if (_wasHydrated2) {
                  if (prepareToHydrateHostTextInstance(workInProgress2)) {
                    markUpdate(workInProgress2);
                  }
                } else {
                  workInProgress2.stateNode = createTextInstance(newText, _rootContainerInstance, _currentHostContext, workInProgress2);
                }
              }
              bubbleProperties(workInProgress2);
              return null;
            }
            case SuspenseComponent: {
              popSuspenseContext(workInProgress2);
              var nextState = workInProgress2.memoizedState;
              if (current2 === null || current2.memoizedState !== null && current2.memoizedState.dehydrated !== null) {
                var fallthroughToNormalSuspensePath = completeDehydratedSuspenseBoundary(current2, workInProgress2, nextState);
                if (!fallthroughToNormalSuspensePath) {
                  if (workInProgress2.flags & ShouldCapture) {
                    return workInProgress2;
                  } else {
                    return null;
                  }
                }
              }
              if ((workInProgress2.flags & DidCapture) !== NoFlags) {
                workInProgress2.lanes = renderLanes2;
                if ((workInProgress2.mode & ProfileMode) !== NoMode) {
                  transferActualDuration(workInProgress2);
                }
                return workInProgress2;
              }
              var nextDidTimeout = nextState !== null;
              var prevDidTimeout = current2 !== null && current2.memoizedState !== null;
              if (nextDidTimeout !== prevDidTimeout) {
                if (nextDidTimeout) {
                  var _offscreenFiber2 = workInProgress2.child;
                  _offscreenFiber2.flags |= Visibility;
                  if ((workInProgress2.mode & ConcurrentMode) !== NoMode) {
                    var hasInvisibleChildContext = current2 === null && (workInProgress2.memoizedProps.unstable_avoidThisFallback !== true || !enableSuspenseAvoidThisFallback);
                    if (hasInvisibleChildContext || hasSuspenseContext(suspenseStackCursor.current, InvisibleParentSuspenseContext)) {
                      renderDidSuspend();
                    } else {
                      renderDidSuspendDelayIfPossible();
                    }
                  }
                }
              }
              var wakeables = workInProgress2.updateQueue;
              if (wakeables !== null) {
                workInProgress2.flags |= Update;
              }
              bubbleProperties(workInProgress2);
              {
                if ((workInProgress2.mode & ProfileMode) !== NoMode) {
                  if (nextDidTimeout) {
                    var primaryChildFragment = workInProgress2.child;
                    if (primaryChildFragment !== null) {
                      workInProgress2.treeBaseDuration -= primaryChildFragment.treeBaseDuration;
                    }
                  }
                }
              }
              return null;
            }
            case HostPortal:
              popHostContainer(workInProgress2);
              updateHostContainer(current2, workInProgress2);
              if (current2 === null) {
                preparePortalMount(workInProgress2.stateNode.containerInfo);
              }
              bubbleProperties(workInProgress2);
              return null;
            case ContextProvider:
              var context = workInProgress2.type._context;
              popProvider(context, workInProgress2);
              bubbleProperties(workInProgress2);
              return null;
            case IncompleteClassComponent: {
              var _Component = workInProgress2.type;
              if (isContextProvider(_Component)) {
                popContext(workInProgress2);
              }
              bubbleProperties(workInProgress2);
              return null;
            }
            case SuspenseListComponent: {
              popSuspenseContext(workInProgress2);
              var renderState = workInProgress2.memoizedState;
              if (renderState === null) {
                bubbleProperties(workInProgress2);
                return null;
              }
              var didSuspendAlready = (workInProgress2.flags & DidCapture) !== NoFlags;
              var renderedTail = renderState.rendering;
              if (renderedTail === null) {
                if (!didSuspendAlready) {
                  var cannotBeSuspended = renderHasNotSuspendedYet() && (current2 === null || (current2.flags & DidCapture) === NoFlags);
                  if (!cannotBeSuspended) {
                    var row = workInProgress2.child;
                    while (row !== null) {
                      var suspended = findFirstSuspended(row);
                      if (suspended !== null) {
                        didSuspendAlready = true;
                        workInProgress2.flags |= DidCapture;
                        cutOffTailIfNeeded(renderState, false);
                        var newThenables = suspended.updateQueue;
                        if (newThenables !== null) {
                          workInProgress2.updateQueue = newThenables;
                          workInProgress2.flags |= Update;
                        }
                        workInProgress2.subtreeFlags = NoFlags;
                        resetChildFibers(workInProgress2, renderLanes2);
                        pushSuspenseContext(workInProgress2, setShallowSuspenseContext(suspenseStackCursor.current, ForceSuspenseFallback));
                        return workInProgress2.child;
                      }
                      row = row.sibling;
                    }
                  }
                  if (renderState.tail !== null && now() > getRenderTargetTime()) {
                    workInProgress2.flags |= DidCapture;
                    didSuspendAlready = true;
                    cutOffTailIfNeeded(renderState, false);
                    workInProgress2.lanes = SomeRetryLane;
                  }
                } else {
                  cutOffTailIfNeeded(renderState, false);
                }
              } else {
                if (!didSuspendAlready) {
                  var _suspended = findFirstSuspended(renderedTail);
                  if (_suspended !== null) {
                    workInProgress2.flags |= DidCapture;
                    didSuspendAlready = true;
                    var _newThenables = _suspended.updateQueue;
                    if (_newThenables !== null) {
                      workInProgress2.updateQueue = _newThenables;
                      workInProgress2.flags |= Update;
                    }
                    cutOffTailIfNeeded(renderState, true);
                    if (renderState.tail === null && renderState.tailMode === "hidden" && !renderedTail.alternate && !getIsHydrating()) {
                      bubbleProperties(workInProgress2);
                      return null;
                    }
                  } else if (
                    // The time it took to render last row is greater than the remaining
                    // time we have to render. So rendering one more row would likely
                    // exceed it.
                    now() * 2 - renderState.renderingStartTime > getRenderTargetTime() && renderLanes2 !== OffscreenLane
                  ) {
                    workInProgress2.flags |= DidCapture;
                    didSuspendAlready = true;
                    cutOffTailIfNeeded(renderState, false);
                    workInProgress2.lanes = SomeRetryLane;
                  }
                }
                if (renderState.isBackwards) {
                  renderedTail.sibling = workInProgress2.child;
                  workInProgress2.child = renderedTail;
                } else {
                  var previousSibling = renderState.last;
                  if (previousSibling !== null) {
                    previousSibling.sibling = renderedTail;
                  } else {
                    workInProgress2.child = renderedTail;
                  }
                  renderState.last = renderedTail;
                }
              }
              if (renderState.tail !== null) {
                var next = renderState.tail;
                renderState.rendering = next;
                renderState.tail = next.sibling;
                renderState.renderingStartTime = now();
                next.sibling = null;
                var suspenseContext = suspenseStackCursor.current;
                if (didSuspendAlready) {
                  suspenseContext = setShallowSuspenseContext(suspenseContext, ForceSuspenseFallback);
                } else {
                  suspenseContext = setDefaultShallowSuspenseContext(suspenseContext);
                }
                pushSuspenseContext(workInProgress2, suspenseContext);
                return next;
              }
              bubbleProperties(workInProgress2);
              return null;
            }
            case ScopeComponent: {
              break;
            }
            case OffscreenComponent:
            case LegacyHiddenComponent: {
              popRenderLanes(workInProgress2);
              var _nextState = workInProgress2.memoizedState;
              var nextIsHidden = _nextState !== null;
              if (current2 !== null) {
                var _prevState = current2.memoizedState;
                var prevIsHidden = _prevState !== null;
                if (prevIsHidden !== nextIsHidden && // LegacyHidden doesn't do any hiding — it only pre-renders.
                !enableLegacyHidden) {
                  workInProgress2.flags |= Visibility;
                }
              }
              if (!nextIsHidden || (workInProgress2.mode & ConcurrentMode) === NoMode) {
                bubbleProperties(workInProgress2);
              } else {
                if (includesSomeLane(subtreeRenderLanes, OffscreenLane)) {
                  bubbleProperties(workInProgress2);
                  {
                    if (workInProgress2.subtreeFlags & (Placement | Update)) {
                      workInProgress2.flags |= Visibility;
                    }
                  }
                }
              }
              return null;
            }
            case CacheComponent: {
              return null;
            }
            case TracingMarkerComponent: {
              return null;
            }
          }
          throw new Error("Unknown unit of work tag (" + workInProgress2.tag + "). This error is likely caused by a bug in React. Please file an issue.");
        }
        function unwindWork(current2, workInProgress2, renderLanes2) {
          popTreeContext(workInProgress2);
          switch (workInProgress2.tag) {
            case ClassComponent: {
              var Component = workInProgress2.type;
              if (isContextProvider(Component)) {
                popContext(workInProgress2);
              }
              var flags = workInProgress2.flags;
              if (flags & ShouldCapture) {
                workInProgress2.flags = flags & ~ShouldCapture | DidCapture;
                if ((workInProgress2.mode & ProfileMode) !== NoMode) {
                  transferActualDuration(workInProgress2);
                }
                return workInProgress2;
              }
              return null;
            }
            case HostRoot: {
              var root2 = workInProgress2.stateNode;
              popHostContainer(workInProgress2);
              popTopLevelContextObject(workInProgress2);
              resetWorkInProgressVersions();
              var _flags = workInProgress2.flags;
              if ((_flags & ShouldCapture) !== NoFlags && (_flags & DidCapture) === NoFlags) {
                workInProgress2.flags = _flags & ~ShouldCapture | DidCapture;
                return workInProgress2;
              }
              return null;
            }
            case HostComponent: {
              popHostContext(workInProgress2);
              return null;
            }
            case SuspenseComponent: {
              popSuspenseContext(workInProgress2);
              var suspenseState = workInProgress2.memoizedState;
              if (suspenseState !== null && suspenseState.dehydrated !== null) {
                if (workInProgress2.alternate === null) {
                  throw new Error("Threw in newly mounted dehydrated component. This is likely a bug in React. Please file an issue.");
                }
                resetHydrationState();
              }
              var _flags2 = workInProgress2.flags;
              if (_flags2 & ShouldCapture) {
                workInProgress2.flags = _flags2 & ~ShouldCapture | DidCapture;
                if ((workInProgress2.mode & ProfileMode) !== NoMode) {
                  transferActualDuration(workInProgress2);
                }
                return workInProgress2;
              }
              return null;
            }
            case SuspenseListComponent: {
              popSuspenseContext(workInProgress2);
              return null;
            }
            case HostPortal:
              popHostContainer(workInProgress2);
              return null;
            case ContextProvider:
              var context = workInProgress2.type._context;
              popProvider(context, workInProgress2);
              return null;
            case OffscreenComponent:
            case LegacyHiddenComponent:
              popRenderLanes(workInProgress2);
              return null;
            case CacheComponent:
              return null;
            default:
              return null;
          }
        }
        function unwindInterruptedWork(current2, interruptedWork, renderLanes2) {
          popTreeContext(interruptedWork);
          switch (interruptedWork.tag) {
            case ClassComponent: {
              var childContextTypes = interruptedWork.type.childContextTypes;
              if (childContextTypes !== null && childContextTypes !== void 0) {
                popContext(interruptedWork);
              }
              break;
            }
            case HostRoot: {
              var root2 = interruptedWork.stateNode;
              popHostContainer(interruptedWork);
              popTopLevelContextObject(interruptedWork);
              resetWorkInProgressVersions();
              break;
            }
            case HostComponent: {
              popHostContext(interruptedWork);
              break;
            }
            case HostPortal:
              popHostContainer(interruptedWork);
              break;
            case SuspenseComponent:
              popSuspenseContext(interruptedWork);
              break;
            case SuspenseListComponent:
              popSuspenseContext(interruptedWork);
              break;
            case ContextProvider:
              var context = interruptedWork.type._context;
              popProvider(context, interruptedWork);
              break;
            case OffscreenComponent:
            case LegacyHiddenComponent:
              popRenderLanes(interruptedWork);
              break;
          }
        }
        var didWarnAboutUndefinedSnapshotBeforeUpdate = null;
        {
          didWarnAboutUndefinedSnapshotBeforeUpdate = /* @__PURE__ */ new Set();
        }
        var offscreenSubtreeIsHidden = false;
        var offscreenSubtreeWasHidden = false;
        var PossiblyWeakSet = typeof WeakSet === "function" ? WeakSet : Set;
        var nextEffect = null;
        var inProgressLanes = null;
        var inProgressRoot = null;
        function reportUncaughtErrorInDEV(error2) {
          {
            invokeGuardedCallback(null, function() {
              throw error2;
            });
            clearCaughtError();
          }
        }
        var callComponentWillUnmountWithTimer = function(current2, instance) {
          instance.props = current2.memoizedProps;
          instance.state = current2.memoizedState;
          if (current2.mode & ProfileMode) {
            try {
              startLayoutEffectTimer();
              instance.componentWillUnmount();
            } finally {
              recordLayoutEffectDuration(current2);
            }
          } else {
            instance.componentWillUnmount();
          }
        };
        function safelyCallCommitHookLayoutEffectListMount(current2, nearestMountedAncestor) {
          try {
            commitHookEffectListMount(Layout, current2);
          } catch (error2) {
            captureCommitPhaseError(current2, nearestMountedAncestor, error2);
          }
        }
        function safelyCallComponentWillUnmount(current2, nearestMountedAncestor, instance) {
          try {
            callComponentWillUnmountWithTimer(current2, instance);
          } catch (error2) {
            captureCommitPhaseError(current2, nearestMountedAncestor, error2);
          }
        }
        function safelyCallComponentDidMount(current2, nearestMountedAncestor, instance) {
          try {
            instance.componentDidMount();
          } catch (error2) {
            captureCommitPhaseError(current2, nearestMountedAncestor, error2);
          }
        }
        function safelyAttachRef(current2, nearestMountedAncestor) {
          try {
            commitAttachRef(current2);
          } catch (error2) {
            captureCommitPhaseError(current2, nearestMountedAncestor, error2);
          }
        }
        function safelyDetachRef(current2, nearestMountedAncestor) {
          var ref = current2.ref;
          if (ref !== null) {
            if (typeof ref === "function") {
              var retVal;
              try {
                if (enableProfilerTimer && enableProfilerCommitHooks && current2.mode & ProfileMode) {
                  try {
                    startLayoutEffectTimer();
                    retVal = ref(null);
                  } finally {
                    recordLayoutEffectDuration(current2);
                  }
                } else {
                  retVal = ref(null);
                }
              } catch (error2) {
                captureCommitPhaseError(current2, nearestMountedAncestor, error2);
              }
              {
                if (typeof retVal === "function") {
                  error("Unexpected return value from a callback ref in %s. A callback ref should not return a function.", getComponentNameFromFiber(current2));
                }
              }
            } else {
              ref.current = null;
            }
          }
        }
        function safelyCallDestroy(current2, nearestMountedAncestor, destroy) {
          try {
            destroy();
          } catch (error2) {
            captureCommitPhaseError(current2, nearestMountedAncestor, error2);
          }
        }
        var focusedInstanceHandle = null;
        var shouldFireAfterActiveInstanceBlur = false;
        function commitBeforeMutationEffects(root2, firstChild) {
          focusedInstanceHandle = prepareForCommit(root2.containerInfo);
          nextEffect = firstChild;
          commitBeforeMutationEffects_begin();
          var shouldFire = shouldFireAfterActiveInstanceBlur;
          shouldFireAfterActiveInstanceBlur = false;
          focusedInstanceHandle = null;
          return shouldFire;
        }
        function commitBeforeMutationEffects_begin() {
          while (nextEffect !== null) {
            var fiber = nextEffect;
            var child = fiber.child;
            if ((fiber.subtreeFlags & BeforeMutationMask) !== NoFlags && child !== null) {
              child.return = fiber;
              nextEffect = child;
            } else {
              commitBeforeMutationEffects_complete();
            }
          }
        }
        function commitBeforeMutationEffects_complete() {
          while (nextEffect !== null) {
            var fiber = nextEffect;
            setCurrentFiber(fiber);
            try {
              commitBeforeMutationEffectsOnFiber(fiber);
            } catch (error2) {
              captureCommitPhaseError(fiber, fiber.return, error2);
            }
            resetCurrentFiber();
            var sibling = fiber.sibling;
            if (sibling !== null) {
              sibling.return = fiber.return;
              nextEffect = sibling;
              return;
            }
            nextEffect = fiber.return;
          }
        }
        function commitBeforeMutationEffectsOnFiber(finishedWork) {
          var current2 = finishedWork.alternate;
          var flags = finishedWork.flags;
          if ((flags & Snapshot) !== NoFlags) {
            setCurrentFiber(finishedWork);
            switch (finishedWork.tag) {
              case FunctionComponent:
              case ForwardRef:
              case SimpleMemoComponent: {
                break;
              }
              case ClassComponent: {
                if (current2 !== null) {
                  var prevProps = current2.memoizedProps;
                  var prevState = current2.memoizedState;
                  var instance = finishedWork.stateNode;
                  {
                    if (finishedWork.type === finishedWork.elementType && !didWarnAboutReassigningProps) {
                      if (instance.props !== finishedWork.memoizedProps) {
                        error("Expected %s props to match memoized props before getSnapshotBeforeUpdate. This might either be because of a bug in React, or because a component reassigns its own `this.props`. Please file an issue.", getComponentNameFromFiber(finishedWork) || "instance");
                      }
                      if (instance.state !== finishedWork.memoizedState) {
                        error("Expected %s state to match memoized state before getSnapshotBeforeUpdate. This might either be because of a bug in React, or because a component reassigns its own `this.state`. Please file an issue.", getComponentNameFromFiber(finishedWork) || "instance");
                      }
                    }
                  }
                  var snapshot = instance.getSnapshotBeforeUpdate(finishedWork.elementType === finishedWork.type ? prevProps : resolveDefaultProps(finishedWork.type, prevProps), prevState);
                  {
                    var didWarnSet = didWarnAboutUndefinedSnapshotBeforeUpdate;
                    if (snapshot === void 0 && !didWarnSet.has(finishedWork.type)) {
                      didWarnSet.add(finishedWork.type);
                      error("%s.getSnapshotBeforeUpdate(): A snapshot value (or null) must be returned. You have returned undefined.", getComponentNameFromFiber(finishedWork));
                    }
                  }
                  instance.__reactInternalSnapshotBeforeUpdate = snapshot;
                }
                break;
              }
              case HostRoot: {
                {
                  var root2 = finishedWork.stateNode;
                  clearContainer(root2.containerInfo);
                }
                break;
              }
              case HostComponent:
              case HostText:
              case HostPortal:
              case IncompleteClassComponent:
                break;
              default: {
                throw new Error("This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue.");
              }
            }
            resetCurrentFiber();
          }
        }
        function commitHookEffectListUnmount(flags, finishedWork, nearestMountedAncestor) {
          var updateQueue = finishedWork.updateQueue;
          var lastEffect = updateQueue !== null ? updateQueue.lastEffect : null;
          if (lastEffect !== null) {
            var firstEffect = lastEffect.next;
            var effect = firstEffect;
            do {
              if ((effect.tag & flags) === flags) {
                var destroy = effect.destroy;
                effect.destroy = void 0;
                if (destroy !== void 0) {
                  {
                    if ((flags & Passive$1) !== NoFlags$1) {
                      markComponentPassiveEffectUnmountStarted(finishedWork);
                    } else if ((flags & Layout) !== NoFlags$1) {
                      markComponentLayoutEffectUnmountStarted(finishedWork);
                    }
                  }
                  {
                    if ((flags & Insertion) !== NoFlags$1) {
                      setIsRunningInsertionEffect(true);
                    }
                  }
                  safelyCallDestroy(finishedWork, nearestMountedAncestor, destroy);
                  {
                    if ((flags & Insertion) !== NoFlags$1) {
                      setIsRunningInsertionEffect(false);
                    }
                  }
                  {
                    if ((flags & Passive$1) !== NoFlags$1) {
                      markComponentPassiveEffectUnmountStopped();
                    } else if ((flags & Layout) !== NoFlags$1) {
                      markComponentLayoutEffectUnmountStopped();
                    }
                  }
                }
              }
              effect = effect.next;
            } while (effect !== firstEffect);
          }
        }
        function commitHookEffectListMount(flags, finishedWork) {
          var updateQueue = finishedWork.updateQueue;
          var lastEffect = updateQueue !== null ? updateQueue.lastEffect : null;
          if (lastEffect !== null) {
            var firstEffect = lastEffect.next;
            var effect = firstEffect;
            do {
              if ((effect.tag & flags) === flags) {
                {
                  if ((flags & Passive$1) !== NoFlags$1) {
                    markComponentPassiveEffectMountStarted(finishedWork);
                  } else if ((flags & Layout) !== NoFlags$1) {
                    markComponentLayoutEffectMountStarted(finishedWork);
                  }
                }
                var create = effect.create;
                {
                  if ((flags & Insertion) !== NoFlags$1) {
                    setIsRunningInsertionEffect(true);
                  }
                }
                effect.destroy = create();
                {
                  if ((flags & Insertion) !== NoFlags$1) {
                    setIsRunningInsertionEffect(false);
                  }
                }
                {
                  if ((flags & Passive$1) !== NoFlags$1) {
                    markComponentPassiveEffectMountStopped();
                  } else if ((flags & Layout) !== NoFlags$1) {
                    markComponentLayoutEffectMountStopped();
                  }
                }
                {
                  var destroy = effect.destroy;
                  if (destroy !== void 0 && typeof destroy !== "function") {
                    var hookName = void 0;
                    if ((effect.tag & Layout) !== NoFlags) {
                      hookName = "useLayoutEffect";
                    } else if ((effect.tag & Insertion) !== NoFlags) {
                      hookName = "useInsertionEffect";
                    } else {
                      hookName = "useEffect";
                    }
                    var addendum = void 0;
                    if (destroy === null) {
                      addendum = " You returned null. If your effect does not require clean up, return undefined (or nothing).";
                    } else if (typeof destroy.then === "function") {
                      addendum = "\n\nIt looks like you wrote " + hookName + "(async () => ...) or returned a Promise. Instead, write the async function inside your effect and call it immediately:\n\n" + hookName + "(() => {\n  async function fetchData() {\n    // You can await here\n    const response = await MyAPI.getData(someId);\n    // ...\n  }\n  fetchData();\n}, [someId]); // Or [] if effect doesn't need props or state\n\nLearn more about data fetching with Hooks: https://reactjs.org/link/hooks-data-fetching";
                    } else {
                      addendum = " You returned: " + destroy;
                    }
                    error("%s must not return anything besides a function, which is used for clean-up.%s", hookName, addendum);
                  }
                }
              }
              effect = effect.next;
            } while (effect !== firstEffect);
          }
        }
        function commitPassiveEffectDurations(finishedRoot, finishedWork) {
          {
            if ((finishedWork.flags & Update) !== NoFlags) {
              switch (finishedWork.tag) {
                case Profiler: {
                  var passiveEffectDuration = finishedWork.stateNode.passiveEffectDuration;
                  var _finishedWork$memoize = finishedWork.memoizedProps, id = _finishedWork$memoize.id, onPostCommit = _finishedWork$memoize.onPostCommit;
                  var commitTime2 = getCommitTime();
                  var phase = finishedWork.alternate === null ? "mount" : "update";
                  {
                    if (isCurrentUpdateNested()) {
                      phase = "nested-update";
                    }
                  }
                  if (typeof onPostCommit === "function") {
                    onPostCommit(id, phase, passiveEffectDuration, commitTime2);
                  }
                  var parentFiber = finishedWork.return;
                  outer: while (parentFiber !== null) {
                    switch (parentFiber.tag) {
                      case HostRoot:
                        var root2 = parentFiber.stateNode;
                        root2.passiveEffectDuration += passiveEffectDuration;
                        break outer;
                      case Profiler:
                        var parentStateNode = parentFiber.stateNode;
                        parentStateNode.passiveEffectDuration += passiveEffectDuration;
                        break outer;
                    }
                    parentFiber = parentFiber.return;
                  }
                  break;
                }
              }
            }
          }
        }
        function commitLayoutEffectOnFiber(finishedRoot, current2, finishedWork, committedLanes) {
          if ((finishedWork.flags & LayoutMask) !== NoFlags) {
            switch (finishedWork.tag) {
              case FunctionComponent:
              case ForwardRef:
              case SimpleMemoComponent: {
                if (!offscreenSubtreeWasHidden) {
                  if (finishedWork.mode & ProfileMode) {
                    try {
                      startLayoutEffectTimer();
                      commitHookEffectListMount(Layout | HasEffect, finishedWork);
                    } finally {
                      recordLayoutEffectDuration(finishedWork);
                    }
                  } else {
                    commitHookEffectListMount(Layout | HasEffect, finishedWork);
                  }
                }
                break;
              }
              case ClassComponent: {
                var instance = finishedWork.stateNode;
                if (finishedWork.flags & Update) {
                  if (!offscreenSubtreeWasHidden) {
                    if (current2 === null) {
                      {
                        if (finishedWork.type === finishedWork.elementType && !didWarnAboutReassigningProps) {
                          if (instance.props !== finishedWork.memoizedProps) {
                            error("Expected %s props to match memoized props before componentDidMount. This might either be because of a bug in React, or because a component reassigns its own `this.props`. Please file an issue.", getComponentNameFromFiber(finishedWork) || "instance");
                          }
                          if (instance.state !== finishedWork.memoizedState) {
                            error("Expected %s state to match memoized state before componentDidMount. This might either be because of a bug in React, or because a component reassigns its own `this.state`. Please file an issue.", getComponentNameFromFiber(finishedWork) || "instance");
                          }
                        }
                      }
                      if (finishedWork.mode & ProfileMode) {
                        try {
                          startLayoutEffectTimer();
                          instance.componentDidMount();
                        } finally {
                          recordLayoutEffectDuration(finishedWork);
                        }
                      } else {
                        instance.componentDidMount();
                      }
                    } else {
                      var prevProps = finishedWork.elementType === finishedWork.type ? current2.memoizedProps : resolveDefaultProps(finishedWork.type, current2.memoizedProps);
                      var prevState = current2.memoizedState;
                      {
                        if (finishedWork.type === finishedWork.elementType && !didWarnAboutReassigningProps) {
                          if (instance.props !== finishedWork.memoizedProps) {
                            error("Expected %s props to match memoized props before componentDidUpdate. This might either be because of a bug in React, or because a component reassigns its own `this.props`. Please file an issue.", getComponentNameFromFiber(finishedWork) || "instance");
                          }
                          if (instance.state !== finishedWork.memoizedState) {
                            error("Expected %s state to match memoized state before componentDidUpdate. This might either be because of a bug in React, or because a component reassigns its own `this.state`. Please file an issue.", getComponentNameFromFiber(finishedWork) || "instance");
                          }
                        }
                      }
                      if (finishedWork.mode & ProfileMode) {
                        try {
                          startLayoutEffectTimer();
                          instance.componentDidUpdate(prevProps, prevState, instance.__reactInternalSnapshotBeforeUpdate);
                        } finally {
                          recordLayoutEffectDuration(finishedWork);
                        }
                      } else {
                        instance.componentDidUpdate(prevProps, prevState, instance.__reactInternalSnapshotBeforeUpdate);
                      }
                    }
                  }
                }
                var updateQueue = finishedWork.updateQueue;
                if (updateQueue !== null) {
                  {
                    if (finishedWork.type === finishedWork.elementType && !didWarnAboutReassigningProps) {
                      if (instance.props !== finishedWork.memoizedProps) {
                        error("Expected %s props to match memoized props before processing the update queue. This might either be because of a bug in React, or because a component reassigns its own `this.props`. Please file an issue.", getComponentNameFromFiber(finishedWork) || "instance");
                      }
                      if (instance.state !== finishedWork.memoizedState) {
                        error("Expected %s state to match memoized state before processing the update queue. This might either be because of a bug in React, or because a component reassigns its own `this.state`. Please file an issue.", getComponentNameFromFiber(finishedWork) || "instance");
                      }
                    }
                  }
                  commitUpdateQueue(finishedWork, updateQueue, instance);
                }
                break;
              }
              case HostRoot: {
                var _updateQueue = finishedWork.updateQueue;
                if (_updateQueue !== null) {
                  var _instance = null;
                  if (finishedWork.child !== null) {
                    switch (finishedWork.child.tag) {
                      case HostComponent:
                        _instance = getPublicInstance(finishedWork.child.stateNode);
                        break;
                      case ClassComponent:
                        _instance = finishedWork.child.stateNode;
                        break;
                    }
                  }
                  commitUpdateQueue(finishedWork, _updateQueue, _instance);
                }
                break;
              }
              case HostComponent: {
                var _instance2 = finishedWork.stateNode;
                if (current2 === null && finishedWork.flags & Update) {
                  var type = finishedWork.type;
                  var props = finishedWork.memoizedProps;
                  commitMount(_instance2, type, props);
                }
                break;
              }
              case HostText: {
                break;
              }
              case HostPortal: {
                break;
              }
              case Profiler: {
                {
                  var _finishedWork$memoize2 = finishedWork.memoizedProps, onCommit = _finishedWork$memoize2.onCommit, onRender = _finishedWork$memoize2.onRender;
                  var effectDuration = finishedWork.stateNode.effectDuration;
                  var commitTime2 = getCommitTime();
                  var phase = current2 === null ? "mount" : "update";
                  {
                    if (isCurrentUpdateNested()) {
                      phase = "nested-update";
                    }
                  }
                  if (typeof onRender === "function") {
                    onRender(finishedWork.memoizedProps.id, phase, finishedWork.actualDuration, finishedWork.treeBaseDuration, finishedWork.actualStartTime, commitTime2);
                  }
                  {
                    if (typeof onCommit === "function") {
                      onCommit(finishedWork.memoizedProps.id, phase, effectDuration, commitTime2);
                    }
                    enqueuePendingPassiveProfilerEffect(finishedWork);
                    var parentFiber = finishedWork.return;
                    outer: while (parentFiber !== null) {
                      switch (parentFiber.tag) {
                        case HostRoot:
                          var root2 = parentFiber.stateNode;
                          root2.effectDuration += effectDuration;
                          break outer;
                        case Profiler:
                          var parentStateNode = parentFiber.stateNode;
                          parentStateNode.effectDuration += effectDuration;
                          break outer;
                      }
                      parentFiber = parentFiber.return;
                    }
                  }
                }
                break;
              }
              case SuspenseComponent: {
                commitSuspenseHydrationCallbacks(finishedRoot, finishedWork);
                break;
              }
              case SuspenseListComponent:
              case IncompleteClassComponent:
              case ScopeComponent:
              case OffscreenComponent:
              case LegacyHiddenComponent:
              case TracingMarkerComponent: {
                break;
              }
              default:
                throw new Error("This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue.");
            }
          }
          if (!offscreenSubtreeWasHidden) {
            {
              if (finishedWork.flags & Ref) {
                commitAttachRef(finishedWork);
              }
            }
          }
        }
        function reappearLayoutEffectsOnFiber(node) {
          switch (node.tag) {
            case FunctionComponent:
            case ForwardRef:
            case SimpleMemoComponent: {
              if (node.mode & ProfileMode) {
                try {
                  startLayoutEffectTimer();
                  safelyCallCommitHookLayoutEffectListMount(node, node.return);
                } finally {
                  recordLayoutEffectDuration(node);
                }
              } else {
                safelyCallCommitHookLayoutEffectListMount(node, node.return);
              }
              break;
            }
            case ClassComponent: {
              var instance = node.stateNode;
              if (typeof instance.componentDidMount === "function") {
                safelyCallComponentDidMount(node, node.return, instance);
              }
              safelyAttachRef(node, node.return);
              break;
            }
            case HostComponent: {
              safelyAttachRef(node, node.return);
              break;
            }
          }
        }
        function hideOrUnhideAllChildren(finishedWork, isHidden) {
          var hostSubtreeRoot = null;
          {
            var node = finishedWork;
            while (true) {
              if (node.tag === HostComponent) {
                if (hostSubtreeRoot === null) {
                  hostSubtreeRoot = node;
                  try {
                    var instance = node.stateNode;
                    if (isHidden) {
                      hideInstance(instance);
                    } else {
                      unhideInstance(node.stateNode, node.memoizedProps);
                    }
                  } catch (error2) {
                    captureCommitPhaseError(finishedWork, finishedWork.return, error2);
                  }
                }
              } else if (node.tag === HostText) {
                if (hostSubtreeRoot === null) {
                  try {
                    var _instance3 = node.stateNode;
                    if (isHidden) {
                      hideTextInstance(_instance3);
                    } else {
                      unhideTextInstance(_instance3, node.memoizedProps);
                    }
                  } catch (error2) {
                    captureCommitPhaseError(finishedWork, finishedWork.return, error2);
                  }
                }
              } else if ((node.tag === OffscreenComponent || node.tag === LegacyHiddenComponent) && node.memoizedState !== null && node !== finishedWork) ;
              else if (node.child !== null) {
                node.child.return = node;
                node = node.child;
                continue;
              }
              if (node === finishedWork) {
                return;
              }
              while (node.sibling === null) {
                if (node.return === null || node.return === finishedWork) {
                  return;
                }
                if (hostSubtreeRoot === node) {
                  hostSubtreeRoot = null;
                }
                node = node.return;
              }
              if (hostSubtreeRoot === node) {
                hostSubtreeRoot = null;
              }
              node.sibling.return = node.return;
              node = node.sibling;
            }
          }
        }
        function commitAttachRef(finishedWork) {
          var ref = finishedWork.ref;
          if (ref !== null) {
            var instance = finishedWork.stateNode;
            var instanceToUse;
            switch (finishedWork.tag) {
              case HostComponent:
                instanceToUse = getPublicInstance(instance);
                break;
              default:
                instanceToUse = instance;
            }
            if (typeof ref === "function") {
              var retVal;
              if (finishedWork.mode & ProfileMode) {
                try {
                  startLayoutEffectTimer();
                  retVal = ref(instanceToUse);
                } finally {
                  recordLayoutEffectDuration(finishedWork);
                }
              } else {
                retVal = ref(instanceToUse);
              }
              {
                if (typeof retVal === "function") {
                  error("Unexpected return value from a callback ref in %s. A callback ref should not return a function.", getComponentNameFromFiber(finishedWork));
                }
              }
            } else {
              {
                if (!ref.hasOwnProperty("current")) {
                  error("Unexpected ref object provided for %s. Use either a ref-setter function or React.createRef().", getComponentNameFromFiber(finishedWork));
                }
              }
              ref.current = instanceToUse;
            }
          }
        }
        function detachFiberMutation(fiber) {
          var alternate = fiber.alternate;
          if (alternate !== null) {
            alternate.return = null;
          }
          fiber.return = null;
        }
        function detachFiberAfterEffects(fiber) {
          var alternate = fiber.alternate;
          if (alternate !== null) {
            fiber.alternate = null;
            detachFiberAfterEffects(alternate);
          }
          {
            fiber.child = null;
            fiber.deletions = null;
            fiber.sibling = null;
            if (fiber.tag === HostComponent) {
              var hostInstance = fiber.stateNode;
              if (hostInstance !== null) {
                detachDeletedInstance(hostInstance);
              }
            }
            fiber.stateNode = null;
            {
              fiber._debugOwner = null;
            }
            {
              fiber.return = null;
              fiber.dependencies = null;
              fiber.memoizedProps = null;
              fiber.memoizedState = null;
              fiber.pendingProps = null;
              fiber.stateNode = null;
              fiber.updateQueue = null;
            }
          }
        }
        function getHostParentFiber(fiber) {
          var parent = fiber.return;
          while (parent !== null) {
            if (isHostParent(parent)) {
              return parent;
            }
            parent = parent.return;
          }
          throw new Error("Expected to find a host parent. This error is likely caused by a bug in React. Please file an issue.");
        }
        function isHostParent(fiber) {
          return fiber.tag === HostComponent || fiber.tag === HostRoot || fiber.tag === HostPortal;
        }
        function getHostSibling(fiber) {
          var node = fiber;
          siblings: while (true) {
            while (node.sibling === null) {
              if (node.return === null || isHostParent(node.return)) {
                return null;
              }
              node = node.return;
            }
            node.sibling.return = node.return;
            node = node.sibling;
            while (node.tag !== HostComponent && node.tag !== HostText && node.tag !== DehydratedFragment) {
              if (node.flags & Placement) {
                continue siblings;
              }
              if (node.child === null || node.tag === HostPortal) {
                continue siblings;
              } else {
                node.child.return = node;
                node = node.child;
              }
            }
            if (!(node.flags & Placement)) {
              return node.stateNode;
            }
          }
        }
        function commitPlacement(finishedWork) {
          var parentFiber = getHostParentFiber(finishedWork);
          switch (parentFiber.tag) {
            case HostComponent: {
              var parent = parentFiber.stateNode;
              if (parentFiber.flags & ContentReset) {
                resetTextContent(parent);
                parentFiber.flags &= ~ContentReset;
              }
              var before = getHostSibling(finishedWork);
              insertOrAppendPlacementNode(finishedWork, before, parent);
              break;
            }
            case HostRoot:
            case HostPortal: {
              var _parent = parentFiber.stateNode.containerInfo;
              var _before = getHostSibling(finishedWork);
              insertOrAppendPlacementNodeIntoContainer(finishedWork, _before, _parent);
              break;
            }
            // eslint-disable-next-line-no-fallthrough
            default:
              throw new Error("Invalid host parent fiber. This error is likely caused by a bug in React. Please file an issue.");
          }
        }
        function insertOrAppendPlacementNodeIntoContainer(node, before, parent) {
          var tag = node.tag;
          var isHost = tag === HostComponent || tag === HostText;
          if (isHost) {
            var stateNode = node.stateNode;
            if (before) {
              insertInContainerBefore(parent, stateNode, before);
            } else {
              appendChildToContainer(parent, stateNode);
            }
          } else if (tag === HostPortal) ;
          else {
            var child = node.child;
            if (child !== null) {
              insertOrAppendPlacementNodeIntoContainer(child, before, parent);
              var sibling = child.sibling;
              while (sibling !== null) {
                insertOrAppendPlacementNodeIntoContainer(sibling, before, parent);
                sibling = sibling.sibling;
              }
            }
          }
        }
        function insertOrAppendPlacementNode(node, before, parent) {
          var tag = node.tag;
          var isHost = tag === HostComponent || tag === HostText;
          if (isHost) {
            var stateNode = node.stateNode;
            if (before) {
              insertBefore(parent, stateNode, before);
            } else {
              appendChild(parent, stateNode);
            }
          } else if (tag === HostPortal) ;
          else {
            var child = node.child;
            if (child !== null) {
              insertOrAppendPlacementNode(child, before, parent);
              var sibling = child.sibling;
              while (sibling !== null) {
                insertOrAppendPlacementNode(sibling, before, parent);
                sibling = sibling.sibling;
              }
            }
          }
        }
        var hostParent = null;
        var hostParentIsContainer = false;
        function commitDeletionEffects(root2, returnFiber, deletedFiber) {
          {
            var parent = returnFiber;
            findParent: while (parent !== null) {
              switch (parent.tag) {
                case HostComponent: {
                  hostParent = parent.stateNode;
                  hostParentIsContainer = false;
                  break findParent;
                }
                case HostRoot: {
                  hostParent = parent.stateNode.containerInfo;
                  hostParentIsContainer = true;
                  break findParent;
                }
                case HostPortal: {
                  hostParent = parent.stateNode.containerInfo;
                  hostParentIsContainer = true;
                  break findParent;
                }
              }
              parent = parent.return;
            }
            if (hostParent === null) {
              throw new Error("Expected to find a host parent. This error is likely caused by a bug in React. Please file an issue.");
            }
            commitDeletionEffectsOnFiber(root2, returnFiber, deletedFiber);
            hostParent = null;
            hostParentIsContainer = false;
          }
          detachFiberMutation(deletedFiber);
        }
        function recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, parent) {
          var child = parent.child;
          while (child !== null) {
            commitDeletionEffectsOnFiber(finishedRoot, nearestMountedAncestor, child);
            child = child.sibling;
          }
        }
        function commitDeletionEffectsOnFiber(finishedRoot, nearestMountedAncestor, deletedFiber) {
          onCommitUnmount(deletedFiber);
          switch (deletedFiber.tag) {
            case HostComponent: {
              if (!offscreenSubtreeWasHidden) {
                safelyDetachRef(deletedFiber, nearestMountedAncestor);
              }
            }
            // eslint-disable-next-line-no-fallthrough
            case HostText: {
              {
                var prevHostParent = hostParent;
                var prevHostParentIsContainer = hostParentIsContainer;
                hostParent = null;
                recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, deletedFiber);
                hostParent = prevHostParent;
                hostParentIsContainer = prevHostParentIsContainer;
                if (hostParent !== null) {
                  if (hostParentIsContainer) {
                    removeChildFromContainer(hostParent, deletedFiber.stateNode);
                  } else {
                    removeChild(hostParent, deletedFiber.stateNode);
                  }
                }
              }
              return;
            }
            case DehydratedFragment: {
              {
                if (hostParent !== null) {
                  if (hostParentIsContainer) {
                    clearSuspenseBoundaryFromContainer(hostParent, deletedFiber.stateNode);
                  } else {
                    clearSuspenseBoundary(hostParent, deletedFiber.stateNode);
                  }
                }
              }
              return;
            }
            case HostPortal: {
              {
                var _prevHostParent = hostParent;
                var _prevHostParentIsContainer = hostParentIsContainer;
                hostParent = deletedFiber.stateNode.containerInfo;
                hostParentIsContainer = true;
                recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, deletedFiber);
                hostParent = _prevHostParent;
                hostParentIsContainer = _prevHostParentIsContainer;
              }
              return;
            }
            case FunctionComponent:
            case ForwardRef:
            case MemoComponent:
            case SimpleMemoComponent: {
              if (!offscreenSubtreeWasHidden) {
                var updateQueue = deletedFiber.updateQueue;
                if (updateQueue !== null) {
                  var lastEffect = updateQueue.lastEffect;
                  if (lastEffect !== null) {
                    var firstEffect = lastEffect.next;
                    var effect = firstEffect;
                    do {
                      var _effect = effect, destroy = _effect.destroy, tag = _effect.tag;
                      if (destroy !== void 0) {
                        if ((tag & Insertion) !== NoFlags$1) {
                          safelyCallDestroy(deletedFiber, nearestMountedAncestor, destroy);
                        } else if ((tag & Layout) !== NoFlags$1) {
                          {
                            markComponentLayoutEffectUnmountStarted(deletedFiber);
                          }
                          if (deletedFiber.mode & ProfileMode) {
                            startLayoutEffectTimer();
                            safelyCallDestroy(deletedFiber, nearestMountedAncestor, destroy);
                            recordLayoutEffectDuration(deletedFiber);
                          } else {
                            safelyCallDestroy(deletedFiber, nearestMountedAncestor, destroy);
                          }
                          {
                            markComponentLayoutEffectUnmountStopped();
                          }
                        }
                      }
                      effect = effect.next;
                    } while (effect !== firstEffect);
                  }
                }
              }
              recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, deletedFiber);
              return;
            }
            case ClassComponent: {
              if (!offscreenSubtreeWasHidden) {
                safelyDetachRef(deletedFiber, nearestMountedAncestor);
                var instance = deletedFiber.stateNode;
                if (typeof instance.componentWillUnmount === "function") {
                  safelyCallComponentWillUnmount(deletedFiber, nearestMountedAncestor, instance);
                }
              }
              recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, deletedFiber);
              return;
            }
            case ScopeComponent: {
              recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, deletedFiber);
              return;
            }
            case OffscreenComponent: {
              if (
                // TODO: Remove this dead flag
                deletedFiber.mode & ConcurrentMode
              ) {
                var prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden;
                offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden || deletedFiber.memoizedState !== null;
                recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, deletedFiber);
                offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;
              } else {
                recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, deletedFiber);
              }
              break;
            }
            default: {
              recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, deletedFiber);
              return;
            }
          }
        }
        function commitSuspenseCallback(finishedWork) {
          var newState = finishedWork.memoizedState;
        }
        function commitSuspenseHydrationCallbacks(finishedRoot, finishedWork) {
          var newState = finishedWork.memoizedState;
          if (newState === null) {
            var current2 = finishedWork.alternate;
            if (current2 !== null) {
              var prevState = current2.memoizedState;
              if (prevState !== null) {
                var suspenseInstance = prevState.dehydrated;
                if (suspenseInstance !== null) {
                  commitHydratedSuspenseInstance(suspenseInstance);
                }
              }
            }
          }
        }
        function attachSuspenseRetryListeners(finishedWork) {
          var wakeables = finishedWork.updateQueue;
          if (wakeables !== null) {
            finishedWork.updateQueue = null;
            var retryCache = finishedWork.stateNode;
            if (retryCache === null) {
              retryCache = finishedWork.stateNode = new PossiblyWeakSet();
            }
            wakeables.forEach(function(wakeable) {
              var retry = resolveRetryWakeable.bind(null, finishedWork, wakeable);
              if (!retryCache.has(wakeable)) {
                retryCache.add(wakeable);
                {
                  if (isDevToolsPresent) {
                    if (inProgressLanes !== null && inProgressRoot !== null) {
                      restorePendingUpdaters(inProgressRoot, inProgressLanes);
                    } else {
                      throw Error("Expected finished root and lanes to be set. This is a bug in React.");
                    }
                  }
                }
                wakeable.then(retry, retry);
              }
            });
          }
        }
        function commitMutationEffects(root2, finishedWork, committedLanes) {
          inProgressLanes = committedLanes;
          inProgressRoot = root2;
          setCurrentFiber(finishedWork);
          commitMutationEffectsOnFiber(finishedWork, root2);
          setCurrentFiber(finishedWork);
          inProgressLanes = null;
          inProgressRoot = null;
        }
        function recursivelyTraverseMutationEffects(root2, parentFiber, lanes) {
          var deletions = parentFiber.deletions;
          if (deletions !== null) {
            for (var i = 0; i < deletions.length; i++) {
              var childToDelete = deletions[i];
              try {
                commitDeletionEffects(root2, parentFiber, childToDelete);
              } catch (error2) {
                captureCommitPhaseError(childToDelete, parentFiber, error2);
              }
            }
          }
          var prevDebugFiber = getCurrentFiber();
          if (parentFiber.subtreeFlags & MutationMask) {
            var child = parentFiber.child;
            while (child !== null) {
              setCurrentFiber(child);
              commitMutationEffectsOnFiber(child, root2);
              child = child.sibling;
            }
          }
          setCurrentFiber(prevDebugFiber);
        }
        function commitMutationEffectsOnFiber(finishedWork, root2, lanes) {
          var current2 = finishedWork.alternate;
          var flags = finishedWork.flags;
          switch (finishedWork.tag) {
            case FunctionComponent:
            case ForwardRef:
            case MemoComponent:
            case SimpleMemoComponent: {
              recursivelyTraverseMutationEffects(root2, finishedWork);
              commitReconciliationEffects(finishedWork);
              if (flags & Update) {
                try {
                  commitHookEffectListUnmount(Insertion | HasEffect, finishedWork, finishedWork.return);
                  commitHookEffectListMount(Insertion | HasEffect, finishedWork);
                } catch (error2) {
                  captureCommitPhaseError(finishedWork, finishedWork.return, error2);
                }
                if (finishedWork.mode & ProfileMode) {
                  try {
                    startLayoutEffectTimer();
                    commitHookEffectListUnmount(Layout | HasEffect, finishedWork, finishedWork.return);
                  } catch (error2) {
                    captureCommitPhaseError(finishedWork, finishedWork.return, error2);
                  }
                  recordLayoutEffectDuration(finishedWork);
                } else {
                  try {
                    commitHookEffectListUnmount(Layout | HasEffect, finishedWork, finishedWork.return);
                  } catch (error2) {
                    captureCommitPhaseError(finishedWork, finishedWork.return, error2);
                  }
                }
              }
              return;
            }
            case ClassComponent: {
              recursivelyTraverseMutationEffects(root2, finishedWork);
              commitReconciliationEffects(finishedWork);
              if (flags & Ref) {
                if (current2 !== null) {
                  safelyDetachRef(current2, current2.return);
                }
              }
              return;
            }
            case HostComponent: {
              recursivelyTraverseMutationEffects(root2, finishedWork);
              commitReconciliationEffects(finishedWork);
              if (flags & Ref) {
                if (current2 !== null) {
                  safelyDetachRef(current2, current2.return);
                }
              }
              {
                if (finishedWork.flags & ContentReset) {
                  var instance = finishedWork.stateNode;
                  try {
                    resetTextContent(instance);
                  } catch (error2) {
                    captureCommitPhaseError(finishedWork, finishedWork.return, error2);
                  }
                }
                if (flags & Update) {
                  var _instance4 = finishedWork.stateNode;
                  if (_instance4 != null) {
                    var newProps = finishedWork.memoizedProps;
                    var oldProps = current2 !== null ? current2.memoizedProps : newProps;
                    var type = finishedWork.type;
                    var updatePayload = finishedWork.updateQueue;
                    finishedWork.updateQueue = null;
                    if (updatePayload !== null) {
                      try {
                        commitUpdate(_instance4, updatePayload, type, oldProps, newProps, finishedWork);
                      } catch (error2) {
                        captureCommitPhaseError(finishedWork, finishedWork.return, error2);
                      }
                    }
                  }
                }
              }
              return;
            }
            case HostText: {
              recursivelyTraverseMutationEffects(root2, finishedWork);
              commitReconciliationEffects(finishedWork);
              if (flags & Update) {
                {
                  if (finishedWork.stateNode === null) {
                    throw new Error("This should have a text node initialized. This error is likely caused by a bug in React. Please file an issue.");
                  }
                  var textInstance = finishedWork.stateNode;
                  var newText = finishedWork.memoizedProps;
                  var oldText = current2 !== null ? current2.memoizedProps : newText;
                  try {
                    commitTextUpdate(textInstance, oldText, newText);
                  } catch (error2) {
                    captureCommitPhaseError(finishedWork, finishedWork.return, error2);
                  }
                }
              }
              return;
            }
            case HostRoot: {
              recursivelyTraverseMutationEffects(root2, finishedWork);
              commitReconciliationEffects(finishedWork);
              if (flags & Update) {
                {
                  if (current2 !== null) {
                    var prevRootState = current2.memoizedState;
                    if (prevRootState.isDehydrated) {
                      try {
                        commitHydratedContainer(root2.containerInfo);
                      } catch (error2) {
                        captureCommitPhaseError(finishedWork, finishedWork.return, error2);
                      }
                    }
                  }
                }
              }
              return;
            }
            case HostPortal: {
              recursivelyTraverseMutationEffects(root2, finishedWork);
              commitReconciliationEffects(finishedWork);
              return;
            }
            case SuspenseComponent: {
              recursivelyTraverseMutationEffects(root2, finishedWork);
              commitReconciliationEffects(finishedWork);
              var offscreenFiber = finishedWork.child;
              if (offscreenFiber.flags & Visibility) {
                var offscreenInstance = offscreenFiber.stateNode;
                var newState = offscreenFiber.memoizedState;
                var isHidden = newState !== null;
                offscreenInstance.isHidden = isHidden;
                if (isHidden) {
                  var wasHidden = offscreenFiber.alternate !== null && offscreenFiber.alternate.memoizedState !== null;
                  if (!wasHidden) {
                    markCommitTimeOfFallback();
                  }
                }
              }
              if (flags & Update) {
                try {
                  commitSuspenseCallback(finishedWork);
                } catch (error2) {
                  captureCommitPhaseError(finishedWork, finishedWork.return, error2);
                }
                attachSuspenseRetryListeners(finishedWork);
              }
              return;
            }
            case OffscreenComponent: {
              var _wasHidden = current2 !== null && current2.memoizedState !== null;
              if (
                // TODO: Remove this dead flag
                finishedWork.mode & ConcurrentMode
              ) {
                var prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden;
                offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden || _wasHidden;
                recursivelyTraverseMutationEffects(root2, finishedWork);
                offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;
              } else {
                recursivelyTraverseMutationEffects(root2, finishedWork);
              }
              commitReconciliationEffects(finishedWork);
              if (flags & Visibility) {
                var _offscreenInstance = finishedWork.stateNode;
                var _newState = finishedWork.memoizedState;
                var _isHidden = _newState !== null;
                var offscreenBoundary = finishedWork;
                _offscreenInstance.isHidden = _isHidden;
                {
                  if (_isHidden) {
                    if (!_wasHidden) {
                      if ((offscreenBoundary.mode & ConcurrentMode) !== NoMode) {
                        nextEffect = offscreenBoundary;
                        var offscreenChild = offscreenBoundary.child;
                        while (offscreenChild !== null) {
                          nextEffect = offscreenChild;
                          disappearLayoutEffects_begin(offscreenChild);
                          offscreenChild = offscreenChild.sibling;
                        }
                      }
                    }
                  }
                }
                {
                  hideOrUnhideAllChildren(offscreenBoundary, _isHidden);
                }
              }
              return;
            }
            case SuspenseListComponent: {
              recursivelyTraverseMutationEffects(root2, finishedWork);
              commitReconciliationEffects(finishedWork);
              if (flags & Update) {
                attachSuspenseRetryListeners(finishedWork);
              }
              return;
            }
            case ScopeComponent: {
              return;
            }
            default: {
              recursivelyTraverseMutationEffects(root2, finishedWork);
              commitReconciliationEffects(finishedWork);
              return;
            }
          }
        }
        function commitReconciliationEffects(finishedWork) {
          var flags = finishedWork.flags;
          if (flags & Placement) {
            try {
              commitPlacement(finishedWork);
            } catch (error2) {
              captureCommitPhaseError(finishedWork, finishedWork.return, error2);
            }
            finishedWork.flags &= ~Placement;
          }
          if (flags & Hydrating) {
            finishedWork.flags &= ~Hydrating;
          }
        }
        function commitLayoutEffects(finishedWork, root2, committedLanes) {
          inProgressLanes = committedLanes;
          inProgressRoot = root2;
          nextEffect = finishedWork;
          commitLayoutEffects_begin(finishedWork, root2, committedLanes);
          inProgressLanes = null;
          inProgressRoot = null;
        }
        function commitLayoutEffects_begin(subtreeRoot, root2, committedLanes) {
          var isModernRoot = (subtreeRoot.mode & ConcurrentMode) !== NoMode;
          while (nextEffect !== null) {
            var fiber = nextEffect;
            var firstChild = fiber.child;
            if (fiber.tag === OffscreenComponent && isModernRoot) {
              var isHidden = fiber.memoizedState !== null;
              var newOffscreenSubtreeIsHidden = isHidden || offscreenSubtreeIsHidden;
              if (newOffscreenSubtreeIsHidden) {
                commitLayoutMountEffects_complete(subtreeRoot, root2, committedLanes);
                continue;
              } else {
                var current2 = fiber.alternate;
                var wasHidden = current2 !== null && current2.memoizedState !== null;
                var newOffscreenSubtreeWasHidden = wasHidden || offscreenSubtreeWasHidden;
                var prevOffscreenSubtreeIsHidden = offscreenSubtreeIsHidden;
                var prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden;
                offscreenSubtreeIsHidden = newOffscreenSubtreeIsHidden;
                offscreenSubtreeWasHidden = newOffscreenSubtreeWasHidden;
                if (offscreenSubtreeWasHidden && !prevOffscreenSubtreeWasHidden) {
                  nextEffect = fiber;
                  reappearLayoutEffects_begin(fiber);
                }
                var child = firstChild;
                while (child !== null) {
                  nextEffect = child;
                  commitLayoutEffects_begin(
                    child,
                    // New root; bubble back up to here and stop.
                    root2,
                    committedLanes
                  );
                  child = child.sibling;
                }
                nextEffect = fiber;
                offscreenSubtreeIsHidden = prevOffscreenSubtreeIsHidden;
                offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;
                commitLayoutMountEffects_complete(subtreeRoot, root2, committedLanes);
                continue;
              }
            }
            if ((fiber.subtreeFlags & LayoutMask) !== NoFlags && firstChild !== null) {
              firstChild.return = fiber;
              nextEffect = firstChild;
            } else {
              commitLayoutMountEffects_complete(subtreeRoot, root2, committedLanes);
            }
          }
        }
        function commitLayoutMountEffects_complete(subtreeRoot, root2, committedLanes) {
          while (nextEffect !== null) {
            var fiber = nextEffect;
            if ((fiber.flags & LayoutMask) !== NoFlags) {
              var current2 = fiber.alternate;
              setCurrentFiber(fiber);
              try {
                commitLayoutEffectOnFiber(root2, current2, fiber, committedLanes);
              } catch (error2) {
                captureCommitPhaseError(fiber, fiber.return, error2);
              }
              resetCurrentFiber();
            }
            if (fiber === subtreeRoot) {
              nextEffect = null;
              return;
            }
            var sibling = fiber.sibling;
            if (sibling !== null) {
              sibling.return = fiber.return;
              nextEffect = sibling;
              return;
            }
            nextEffect = fiber.return;
          }
        }
        function disappearLayoutEffects_begin(subtreeRoot) {
          while (nextEffect !== null) {
            var fiber = nextEffect;
            var firstChild = fiber.child;
            switch (fiber.tag) {
              case FunctionComponent:
              case ForwardRef:
              case MemoComponent:
              case SimpleMemoComponent: {
                if (fiber.mode & ProfileMode) {
                  try {
                    startLayoutEffectTimer();
                    commitHookEffectListUnmount(Layout, fiber, fiber.return);
                  } finally {
                    recordLayoutEffectDuration(fiber);
                  }
                } else {
                  commitHookEffectListUnmount(Layout, fiber, fiber.return);
                }
                break;
              }
              case ClassComponent: {
                safelyDetachRef(fiber, fiber.return);
                var instance = fiber.stateNode;
                if (typeof instance.componentWillUnmount === "function") {
                  safelyCallComponentWillUnmount(fiber, fiber.return, instance);
                }
                break;
              }
              case HostComponent: {
                safelyDetachRef(fiber, fiber.return);
                break;
              }
              case OffscreenComponent: {
                var isHidden = fiber.memoizedState !== null;
                if (isHidden) {
                  disappearLayoutEffects_complete(subtreeRoot);
                  continue;
                }
                break;
              }
            }
            if (firstChild !== null) {
              firstChild.return = fiber;
              nextEffect = firstChild;
            } else {
              disappearLayoutEffects_complete(subtreeRoot);
            }
          }
        }
        function disappearLayoutEffects_complete(subtreeRoot) {
          while (nextEffect !== null) {
            var fiber = nextEffect;
            if (fiber === subtreeRoot) {
              nextEffect = null;
              return;
            }
            var sibling = fiber.sibling;
            if (sibling !== null) {
              sibling.return = fiber.return;
              nextEffect = sibling;
              return;
            }
            nextEffect = fiber.return;
          }
        }
        function reappearLayoutEffects_begin(subtreeRoot) {
          while (nextEffect !== null) {
            var fiber = nextEffect;
            var firstChild = fiber.child;
            if (fiber.tag === OffscreenComponent) {
              var isHidden = fiber.memoizedState !== null;
              if (isHidden) {
                reappearLayoutEffects_complete(subtreeRoot);
                continue;
              }
            }
            if (firstChild !== null) {
              firstChild.return = fiber;
              nextEffect = firstChild;
            } else {
              reappearLayoutEffects_complete(subtreeRoot);
            }
          }
        }
        function reappearLayoutEffects_complete(subtreeRoot) {
          while (nextEffect !== null) {
            var fiber = nextEffect;
            setCurrentFiber(fiber);
            try {
              reappearLayoutEffectsOnFiber(fiber);
            } catch (error2) {
              captureCommitPhaseError(fiber, fiber.return, error2);
            }
            resetCurrentFiber();
            if (fiber === subtreeRoot) {
              nextEffect = null;
              return;
            }
            var sibling = fiber.sibling;
            if (sibling !== null) {
              sibling.return = fiber.return;
              nextEffect = sibling;
              return;
            }
            nextEffect = fiber.return;
          }
        }
        function commitPassiveMountEffects(root2, finishedWork, committedLanes, committedTransitions) {
          nextEffect = finishedWork;
          commitPassiveMountEffects_begin(finishedWork, root2, committedLanes, committedTransitions);
        }
        function commitPassiveMountEffects_begin(subtreeRoot, root2, committedLanes, committedTransitions) {
          while (nextEffect !== null) {
            var fiber = nextEffect;
            var firstChild = fiber.child;
            if ((fiber.subtreeFlags & PassiveMask) !== NoFlags && firstChild !== null) {
              firstChild.return = fiber;
              nextEffect = firstChild;
            } else {
              commitPassiveMountEffects_complete(subtreeRoot, root2, committedLanes, committedTransitions);
            }
          }
        }
        function commitPassiveMountEffects_complete(subtreeRoot, root2, committedLanes, committedTransitions) {
          while (nextEffect !== null) {
            var fiber = nextEffect;
            if ((fiber.flags & Passive) !== NoFlags) {
              setCurrentFiber(fiber);
              try {
                commitPassiveMountOnFiber(root2, fiber, committedLanes, committedTransitions);
              } catch (error2) {
                captureCommitPhaseError(fiber, fiber.return, error2);
              }
              resetCurrentFiber();
            }
            if (fiber === subtreeRoot) {
              nextEffect = null;
              return;
            }
            var sibling = fiber.sibling;
            if (sibling !== null) {
              sibling.return = fiber.return;
              nextEffect = sibling;
              return;
            }
            nextEffect = fiber.return;
          }
        }
        function commitPassiveMountOnFiber(finishedRoot, finishedWork, committedLanes, committedTransitions) {
          switch (finishedWork.tag) {
            case FunctionComponent:
            case ForwardRef:
            case SimpleMemoComponent: {
              if (finishedWork.mode & ProfileMode) {
                startPassiveEffectTimer();
                try {
                  commitHookEffectListMount(Passive$1 | HasEffect, finishedWork);
                } finally {
                  recordPassiveEffectDuration(finishedWork);
                }
              } else {
                commitHookEffectListMount(Passive$1 | HasEffect, finishedWork);
              }
              break;
            }
          }
        }
        function commitPassiveUnmountEffects(firstChild) {
          nextEffect = firstChild;
          commitPassiveUnmountEffects_begin();
        }
        function commitPassiveUnmountEffects_begin() {
          while (nextEffect !== null) {
            var fiber = nextEffect;
            var child = fiber.child;
            if ((nextEffect.flags & ChildDeletion) !== NoFlags) {
              var deletions = fiber.deletions;
              if (deletions !== null) {
                for (var i = 0; i < deletions.length; i++) {
                  var fiberToDelete = deletions[i];
                  nextEffect = fiberToDelete;
                  commitPassiveUnmountEffectsInsideOfDeletedTree_begin(fiberToDelete, fiber);
                }
                {
                  var previousFiber = fiber.alternate;
                  if (previousFiber !== null) {
                    var detachedChild = previousFiber.child;
                    if (detachedChild !== null) {
                      previousFiber.child = null;
                      do {
                        var detachedSibling = detachedChild.sibling;
                        detachedChild.sibling = null;
                        detachedChild = detachedSibling;
                      } while (detachedChild !== null);
                    }
                  }
                }
                nextEffect = fiber;
              }
            }
            if ((fiber.subtreeFlags & PassiveMask) !== NoFlags && child !== null) {
              child.return = fiber;
              nextEffect = child;
            } else {
              commitPassiveUnmountEffects_complete();
            }
          }
        }
        function commitPassiveUnmountEffects_complete() {
          while (nextEffect !== null) {
            var fiber = nextEffect;
            if ((fiber.flags & Passive) !== NoFlags) {
              setCurrentFiber(fiber);
              commitPassiveUnmountOnFiber(fiber);
              resetCurrentFiber();
            }
            var sibling = fiber.sibling;
            if (sibling !== null) {
              sibling.return = fiber.return;
              nextEffect = sibling;
              return;
            }
            nextEffect = fiber.return;
          }
        }
        function commitPassiveUnmountOnFiber(finishedWork) {
          switch (finishedWork.tag) {
            case FunctionComponent:
            case ForwardRef:
            case SimpleMemoComponent: {
              if (finishedWork.mode & ProfileMode) {
                startPassiveEffectTimer();
                commitHookEffectListUnmount(Passive$1 | HasEffect, finishedWork, finishedWork.return);
                recordPassiveEffectDuration(finishedWork);
              } else {
                commitHookEffectListUnmount(Passive$1 | HasEffect, finishedWork, finishedWork.return);
              }
              break;
            }
          }
        }
        function commitPassiveUnmountEffectsInsideOfDeletedTree_begin(deletedSubtreeRoot, nearestMountedAncestor) {
          while (nextEffect !== null) {
            var fiber = nextEffect;
            setCurrentFiber(fiber);
            commitPassiveUnmountInsideDeletedTreeOnFiber(fiber, nearestMountedAncestor);
            resetCurrentFiber();
            var child = fiber.child;
            if (child !== null) {
              child.return = fiber;
              nextEffect = child;
            } else {
              commitPassiveUnmountEffectsInsideOfDeletedTree_complete(deletedSubtreeRoot);
            }
          }
        }
        function commitPassiveUnmountEffectsInsideOfDeletedTree_complete(deletedSubtreeRoot) {
          while (nextEffect !== null) {
            var fiber = nextEffect;
            var sibling = fiber.sibling;
            var returnFiber = fiber.return;
            {
              detachFiberAfterEffects(fiber);
              if (fiber === deletedSubtreeRoot) {
                nextEffect = null;
                return;
              }
            }
            if (sibling !== null) {
              sibling.return = returnFiber;
              nextEffect = sibling;
              return;
            }
            nextEffect = returnFiber;
          }
        }
        function commitPassiveUnmountInsideDeletedTreeOnFiber(current2, nearestMountedAncestor) {
          switch (current2.tag) {
            case FunctionComponent:
            case ForwardRef:
            case SimpleMemoComponent: {
              if (current2.mode & ProfileMode) {
                startPassiveEffectTimer();
                commitHookEffectListUnmount(Passive$1, current2, nearestMountedAncestor);
                recordPassiveEffectDuration(current2);
              } else {
                commitHookEffectListUnmount(Passive$1, current2, nearestMountedAncestor);
              }
              break;
            }
          }
        }
        function invokeLayoutEffectMountInDEV(fiber) {
          {
            switch (fiber.tag) {
              case FunctionComponent:
              case ForwardRef:
              case SimpleMemoComponent: {
                try {
                  commitHookEffectListMount(Layout | HasEffect, fiber);
                } catch (error2) {
                  captureCommitPhaseError(fiber, fiber.return, error2);
                }
                break;
              }
              case ClassComponent: {
                var instance = fiber.stateNode;
                try {
                  instance.componentDidMount();
                } catch (error2) {
                  captureCommitPhaseError(fiber, fiber.return, error2);
                }
                break;
              }
            }
          }
        }
        function invokePassiveEffectMountInDEV(fiber) {
          {
            switch (fiber.tag) {
              case FunctionComponent:
              case ForwardRef:
              case SimpleMemoComponent: {
                try {
                  commitHookEffectListMount(Passive$1 | HasEffect, fiber);
                } catch (error2) {
                  captureCommitPhaseError(fiber, fiber.return, error2);
                }
                break;
              }
            }
          }
        }
        function invokeLayoutEffectUnmountInDEV(fiber) {
          {
            switch (fiber.tag) {
              case FunctionComponent:
              case ForwardRef:
              case SimpleMemoComponent: {
                try {
                  commitHookEffectListUnmount(Layout | HasEffect, fiber, fiber.return);
                } catch (error2) {
                  captureCommitPhaseError(fiber, fiber.return, error2);
                }
                break;
              }
              case ClassComponent: {
                var instance = fiber.stateNode;
                if (typeof instance.componentWillUnmount === "function") {
                  safelyCallComponentWillUnmount(fiber, fiber.return, instance);
                }
                break;
              }
            }
          }
        }
        function invokePassiveEffectUnmountInDEV(fiber) {
          {
            switch (fiber.tag) {
              case FunctionComponent:
              case ForwardRef:
              case SimpleMemoComponent: {
                try {
                  commitHookEffectListUnmount(Passive$1 | HasEffect, fiber, fiber.return);
                } catch (error2) {
                  captureCommitPhaseError(fiber, fiber.return, error2);
                }
              }
            }
          }
        }
        var COMPONENT_TYPE = 0;
        var HAS_PSEUDO_CLASS_TYPE = 1;
        var ROLE_TYPE = 2;
        var TEST_NAME_TYPE = 3;
        var TEXT_TYPE = 4;
        if (typeof Symbol === "function" && Symbol.for) {
          var symbolFor = Symbol.for;
          COMPONENT_TYPE = symbolFor("selector.component");
          HAS_PSEUDO_CLASS_TYPE = symbolFor("selector.has_pseudo_class");
          ROLE_TYPE = symbolFor("selector.role");
          TEST_NAME_TYPE = symbolFor("selector.test_id");
          TEXT_TYPE = symbolFor("selector.text");
        }
        var commitHooks = [];
        function onCommitRoot$1() {
          {
            commitHooks.forEach(function(commitHook) {
              return commitHook();
            });
          }
        }
        var ReactCurrentActQueue = ReactSharedInternals.ReactCurrentActQueue;
        function isLegacyActEnvironment(fiber) {
          {
            var isReactActEnvironmentGlobal = (
              // $FlowExpectedError – Flow doesn't know about IS_REACT_ACT_ENVIRONMENT global
              typeof IS_REACT_ACT_ENVIRONMENT !== "undefined" ? IS_REACT_ACT_ENVIRONMENT : void 0
            );
            var jestIsDefined = typeof jest !== "undefined";
            return jestIsDefined && isReactActEnvironmentGlobal !== false;
          }
        }
        function isConcurrentActEnvironment() {
          {
            var isReactActEnvironmentGlobal = (
              // $FlowExpectedError – Flow doesn't know about IS_REACT_ACT_ENVIRONMENT global
              typeof IS_REACT_ACT_ENVIRONMENT !== "undefined" ? IS_REACT_ACT_ENVIRONMENT : void 0
            );
            if (!isReactActEnvironmentGlobal && ReactCurrentActQueue.current !== null) {
              error("The current testing environment is not configured to support act(...)");
            }
            return isReactActEnvironmentGlobal;
          }
        }
        var ceil = Math.ceil;
        var ReactCurrentDispatcher$2 = ReactSharedInternals.ReactCurrentDispatcher, ReactCurrentOwner$2 = ReactSharedInternals.ReactCurrentOwner, ReactCurrentBatchConfig$3 = ReactSharedInternals.ReactCurrentBatchConfig, ReactCurrentActQueue$1 = ReactSharedInternals.ReactCurrentActQueue;
        var NoContext = (
          /*             */
          0
        );
        var BatchedContext = (
          /*               */
          1
        );
        var RenderContext = (
          /*                */
          2
        );
        var CommitContext = (
          /*                */
          4
        );
        var RootInProgress = 0;
        var RootFatalErrored = 1;
        var RootErrored = 2;
        var RootSuspended = 3;
        var RootSuspendedWithDelay = 4;
        var RootCompleted = 5;
        var RootDidNotComplete = 6;
        var executionContext = NoContext;
        var workInProgressRoot = null;
        var workInProgress = null;
        var workInProgressRootRenderLanes = NoLanes;
        var subtreeRenderLanes = NoLanes;
        var subtreeRenderLanesCursor = createCursor(NoLanes);
        var workInProgressRootExitStatus = RootInProgress;
        var workInProgressRootFatalError = null;
        var workInProgressRootIncludedLanes = NoLanes;
        var workInProgressRootSkippedLanes = NoLanes;
        var workInProgressRootInterleavedUpdatedLanes = NoLanes;
        var workInProgressRootPingedLanes = NoLanes;
        var workInProgressRootConcurrentErrors = null;
        var workInProgressRootRecoverableErrors = null;
        var globalMostRecentFallbackTime = 0;
        var FALLBACK_THROTTLE_MS = 500;
        var workInProgressRootRenderTargetTime = Infinity;
        var RENDER_TIMEOUT_MS = 500;
        var workInProgressTransitions = null;
        function resetRenderTimer() {
          workInProgressRootRenderTargetTime = now() + RENDER_TIMEOUT_MS;
        }
        function getRenderTargetTime() {
          return workInProgressRootRenderTargetTime;
        }
        var hasUncaughtError = false;
        var firstUncaughtError = null;
        var legacyErrorBoundariesThatAlreadyFailed = null;
        var rootDoesHavePassiveEffects = false;
        var rootWithPendingPassiveEffects = null;
        var pendingPassiveEffectsLanes = NoLanes;
        var pendingPassiveProfilerEffects = [];
        var pendingPassiveTransitions = null;
        var NESTED_UPDATE_LIMIT = 50;
        var nestedUpdateCount = 0;
        var rootWithNestedUpdates = null;
        var isFlushingPassiveEffects = false;
        var didScheduleUpdateDuringPassiveEffects = false;
        var NESTED_PASSIVE_UPDATE_LIMIT = 50;
        var nestedPassiveUpdateCount = 0;
        var rootWithPassiveNestedUpdates = null;
        var currentEventTime = NoTimestamp;
        var currentEventTransitionLane = NoLanes;
        var isRunningInsertionEffect = false;
        function getWorkInProgressRoot() {
          return workInProgressRoot;
        }
        function requestEventTime() {
          if ((executionContext & (RenderContext | CommitContext)) !== NoContext) {
            return now();
          }
          if (currentEventTime !== NoTimestamp) {
            return currentEventTime;
          }
          currentEventTime = now();
          return currentEventTime;
        }
        function requestUpdateLane(fiber) {
          var mode = fiber.mode;
          if ((mode & ConcurrentMode) === NoMode) {
            return SyncLane;
          } else if ((executionContext & RenderContext) !== NoContext && workInProgressRootRenderLanes !== NoLanes) {
            return pickArbitraryLane(workInProgressRootRenderLanes);
          }
          var isTransition = requestCurrentTransition() !== NoTransition;
          if (isTransition) {
            if (ReactCurrentBatchConfig$3.transition !== null) {
              var transition = ReactCurrentBatchConfig$3.transition;
              if (!transition._updatedFibers) {
                transition._updatedFibers = /* @__PURE__ */ new Set();
              }
              transition._updatedFibers.add(fiber);
            }
            if (currentEventTransitionLane === NoLane) {
              currentEventTransitionLane = claimNextTransitionLane();
            }
            return currentEventTransitionLane;
          }
          var updateLane = getCurrentUpdatePriority();
          if (updateLane !== NoLane) {
            return updateLane;
          }
          var eventLane = getCurrentEventPriority();
          return eventLane;
        }
        function requestRetryLane(fiber) {
          var mode = fiber.mode;
          if ((mode & ConcurrentMode) === NoMode) {
            return SyncLane;
          }
          return claimNextRetryLane();
        }
        function scheduleUpdateOnFiber(root2, fiber, lane, eventTime) {
          checkForNestedUpdates();
          {
            if (isRunningInsertionEffect) {
              error("useInsertionEffect must not schedule updates.");
            }
          }
          {
            if (isFlushingPassiveEffects) {
              didScheduleUpdateDuringPassiveEffects = true;
            }
          }
          markRootUpdated(root2, lane, eventTime);
          if ((executionContext & RenderContext) !== NoLanes && root2 === workInProgressRoot) {
            warnAboutRenderPhaseUpdatesInDEV(fiber);
          } else {
            {
              if (isDevToolsPresent) {
                addFiberToLanesMap(root2, fiber, lane);
              }
            }
            warnIfUpdatesNotWrappedWithActDEV(fiber);
            if (root2 === workInProgressRoot) {
              if ((executionContext & RenderContext) === NoContext) {
                workInProgressRootInterleavedUpdatedLanes = mergeLanes(workInProgressRootInterleavedUpdatedLanes, lane);
              }
              if (workInProgressRootExitStatus === RootSuspendedWithDelay) {
                markRootSuspended$1(root2, workInProgressRootRenderLanes);
              }
            }
            ensureRootIsScheduled(root2, eventTime);
            if (lane === SyncLane && executionContext === NoContext && (fiber.mode & ConcurrentMode) === NoMode && // Treat `act` as if it's inside `batchedUpdates`, even in legacy mode.
            !ReactCurrentActQueue$1.isBatchingLegacy) {
              resetRenderTimer();
              flushSyncCallbacksOnlyInLegacyMode();
            }
          }
        }
        function scheduleInitialHydrationOnRoot(root2, lane, eventTime) {
          var current2 = root2.current;
          current2.lanes = lane;
          markRootUpdated(root2, lane, eventTime);
          ensureRootIsScheduled(root2, eventTime);
        }
        function isUnsafeClassRenderPhaseUpdate(fiber) {
          return (
            // TODO: Remove outdated deferRenderPhaseUpdateToNextBatch experiment. We
            // decided not to enable it.
            (executionContext & RenderContext) !== NoContext
          );
        }
        function ensureRootIsScheduled(root2, currentTime) {
          var existingCallbackNode = root2.callbackNode;
          markStarvedLanesAsExpired(root2, currentTime);
          var nextLanes = getNextLanes(root2, root2 === workInProgressRoot ? workInProgressRootRenderLanes : NoLanes);
          if (nextLanes === NoLanes) {
            if (existingCallbackNode !== null) {
              cancelCallback$1(existingCallbackNode);
            }
            root2.callbackNode = null;
            root2.callbackPriority = NoLane;
            return;
          }
          var newCallbackPriority = getHighestPriorityLane(nextLanes);
          var existingCallbackPriority = root2.callbackPriority;
          if (existingCallbackPriority === newCallbackPriority && // Special case related to `act`. If the currently scheduled task is a
          // Scheduler task, rather than an `act` task, cancel it and re-scheduled
          // on the `act` queue.
          !(ReactCurrentActQueue$1.current !== null && existingCallbackNode !== fakeActCallbackNode)) {
            {
              if (existingCallbackNode == null && existingCallbackPriority !== SyncLane) {
                error("Expected scheduled callback to exist. This error is likely caused by a bug in React. Please file an issue.");
              }
            }
            return;
          }
          if (existingCallbackNode != null) {
            cancelCallback$1(existingCallbackNode);
          }
          var newCallbackNode;
          if (newCallbackPriority === SyncLane) {
            if (root2.tag === LegacyRoot) {
              if (ReactCurrentActQueue$1.isBatchingLegacy !== null) {
                ReactCurrentActQueue$1.didScheduleLegacyUpdate = true;
              }
              scheduleLegacySyncCallback(performSyncWorkOnRoot.bind(null, root2));
            } else {
              scheduleSyncCallback(performSyncWorkOnRoot.bind(null, root2));
            }
            {
              if (ReactCurrentActQueue$1.current !== null) {
                ReactCurrentActQueue$1.current.push(flushSyncCallbacks);
              } else {
                scheduleMicrotask(function() {
                  if ((executionContext & (RenderContext | CommitContext)) === NoContext) {
                    flushSyncCallbacks();
                  }
                });
              }
            }
            newCallbackNode = null;
          } else {
            var schedulerPriorityLevel;
            switch (lanesToEventPriority(nextLanes)) {
              case DiscreteEventPriority:
                schedulerPriorityLevel = ImmediatePriority;
                break;
              case ContinuousEventPriority:
                schedulerPriorityLevel = UserBlockingPriority;
                break;
              case DefaultEventPriority:
                schedulerPriorityLevel = NormalPriority;
                break;
              case IdleEventPriority:
                schedulerPriorityLevel = IdlePriority;
                break;
              default:
                schedulerPriorityLevel = NormalPriority;
                break;
            }
            newCallbackNode = scheduleCallback$1(schedulerPriorityLevel, performConcurrentWorkOnRoot.bind(null, root2));
          }
          root2.callbackPriority = newCallbackPriority;
          root2.callbackNode = newCallbackNode;
        }
        function performConcurrentWorkOnRoot(root2, didTimeout) {
          {
            resetNestedUpdateFlag();
          }
          currentEventTime = NoTimestamp;
          currentEventTransitionLane = NoLanes;
          if ((executionContext & (RenderContext | CommitContext)) !== NoContext) {
            throw new Error("Should not already be working.");
          }
          var originalCallbackNode = root2.callbackNode;
          var didFlushPassiveEffects = flushPassiveEffects();
          if (didFlushPassiveEffects) {
            if (root2.callbackNode !== originalCallbackNode) {
              return null;
            }
          }
          var lanes = getNextLanes(root2, root2 === workInProgressRoot ? workInProgressRootRenderLanes : NoLanes);
          if (lanes === NoLanes) {
            return null;
          }
          var shouldTimeSlice = !includesBlockingLane(root2, lanes) && !includesExpiredLane(root2, lanes) && !didTimeout;
          var exitStatus = shouldTimeSlice ? renderRootConcurrent(root2, lanes) : renderRootSync(root2, lanes);
          if (exitStatus !== RootInProgress) {
            if (exitStatus === RootErrored) {
              var errorRetryLanes = getLanesToRetrySynchronouslyOnError(root2);
              if (errorRetryLanes !== NoLanes) {
                lanes = errorRetryLanes;
                exitStatus = recoverFromConcurrentError(root2, errorRetryLanes);
              }
            }
            if (exitStatus === RootFatalErrored) {
              var fatalError = workInProgressRootFatalError;
              prepareFreshStack(root2, NoLanes);
              markRootSuspended$1(root2, lanes);
              ensureRootIsScheduled(root2, now());
              throw fatalError;
            }
            if (exitStatus === RootDidNotComplete) {
              markRootSuspended$1(root2, lanes);
            } else {
              var renderWasConcurrent = !includesBlockingLane(root2, lanes);
              var finishedWork = root2.current.alternate;
              if (renderWasConcurrent && !isRenderConsistentWithExternalStores(finishedWork)) {
                exitStatus = renderRootSync(root2, lanes);
                if (exitStatus === RootErrored) {
                  var _errorRetryLanes = getLanesToRetrySynchronouslyOnError(root2);
                  if (_errorRetryLanes !== NoLanes) {
                    lanes = _errorRetryLanes;
                    exitStatus = recoverFromConcurrentError(root2, _errorRetryLanes);
                  }
                }
                if (exitStatus === RootFatalErrored) {
                  var _fatalError = workInProgressRootFatalError;
                  prepareFreshStack(root2, NoLanes);
                  markRootSuspended$1(root2, lanes);
                  ensureRootIsScheduled(root2, now());
                  throw _fatalError;
                }
              }
              root2.finishedWork = finishedWork;
              root2.finishedLanes = lanes;
              finishConcurrentRender(root2, exitStatus, lanes);
            }
          }
          ensureRootIsScheduled(root2, now());
          if (root2.callbackNode === originalCallbackNode) {
            return performConcurrentWorkOnRoot.bind(null, root2);
          }
          return null;
        }
        function recoverFromConcurrentError(root2, errorRetryLanes) {
          var errorsFromFirstAttempt = workInProgressRootConcurrentErrors;
          if (isRootDehydrated(root2)) {
            var rootWorkInProgress = prepareFreshStack(root2, errorRetryLanes);
            rootWorkInProgress.flags |= ForceClientRender;
            {
              errorHydratingContainer(root2.containerInfo);
            }
          }
          var exitStatus = renderRootSync(root2, errorRetryLanes);
          if (exitStatus !== RootErrored) {
            var errorsFromSecondAttempt = workInProgressRootRecoverableErrors;
            workInProgressRootRecoverableErrors = errorsFromFirstAttempt;
            if (errorsFromSecondAttempt !== null) {
              queueRecoverableErrors(errorsFromSecondAttempt);
            }
          }
          return exitStatus;
        }
        function queueRecoverableErrors(errors) {
          if (workInProgressRootRecoverableErrors === null) {
            workInProgressRootRecoverableErrors = errors;
          } else {
            workInProgressRootRecoverableErrors.push.apply(workInProgressRootRecoverableErrors, errors);
          }
        }
        function finishConcurrentRender(root2, exitStatus, lanes) {
          switch (exitStatus) {
            case RootInProgress:
            case RootFatalErrored: {
              throw new Error("Root did not complete. This is a bug in React.");
            }
            // Flow knows about invariant, so it complains if I add a break
            // statement, but eslint doesn't know about invariant, so it complains
            // if I do. eslint-disable-next-line no-fallthrough
            case RootErrored: {
              commitRoot(root2, workInProgressRootRecoverableErrors, workInProgressTransitions);
              break;
            }
            case RootSuspended: {
              markRootSuspended$1(root2, lanes);
              if (includesOnlyRetries(lanes) && // do not delay if we're inside an act() scope
              !shouldForceFlushFallbacksInDEV()) {
                var msUntilTimeout = globalMostRecentFallbackTime + FALLBACK_THROTTLE_MS - now();
                if (msUntilTimeout > 10) {
                  var nextLanes = getNextLanes(root2, NoLanes);
                  if (nextLanes !== NoLanes) {
                    break;
                  }
                  var suspendedLanes = root2.suspendedLanes;
                  if (!isSubsetOfLanes(suspendedLanes, lanes)) {
                    var eventTime = requestEventTime();
                    markRootPinged(root2, suspendedLanes);
                    break;
                  }
                  root2.timeoutHandle = scheduleTimeout(commitRoot.bind(null, root2, workInProgressRootRecoverableErrors, workInProgressTransitions), msUntilTimeout);
                  break;
                }
              }
              commitRoot(root2, workInProgressRootRecoverableErrors, workInProgressTransitions);
              break;
            }
            case RootSuspendedWithDelay: {
              markRootSuspended$1(root2, lanes);
              if (includesOnlyTransitions(lanes)) {
                break;
              }
              if (!shouldForceFlushFallbacksInDEV()) {
                var mostRecentEventTime = getMostRecentEventTime(root2, lanes);
                var eventTimeMs = mostRecentEventTime;
                var timeElapsedMs = now() - eventTimeMs;
                var _msUntilTimeout = jnd(timeElapsedMs) - timeElapsedMs;
                if (_msUntilTimeout > 10) {
                  root2.timeoutHandle = scheduleTimeout(commitRoot.bind(null, root2, workInProgressRootRecoverableErrors, workInProgressTransitions), _msUntilTimeout);
                  break;
                }
              }
              commitRoot(root2, workInProgressRootRecoverableErrors, workInProgressTransitions);
              break;
            }
            case RootCompleted: {
              commitRoot(root2, workInProgressRootRecoverableErrors, workInProgressTransitions);
              break;
            }
            default: {
              throw new Error("Unknown root exit status.");
            }
          }
        }
        function isRenderConsistentWithExternalStores(finishedWork) {
          var node = finishedWork;
          while (true) {
            if (node.flags & StoreConsistency) {
              var updateQueue = node.updateQueue;
              if (updateQueue !== null) {
                var checks = updateQueue.stores;
                if (checks !== null) {
                  for (var i = 0; i < checks.length; i++) {
                    var check = checks[i];
                    var getSnapshot = check.getSnapshot;
                    var renderedValue = check.value;
                    try {
                      if (!objectIs(getSnapshot(), renderedValue)) {
                        return false;
                      }
                    } catch (error2) {
                      return false;
                    }
                  }
                }
              }
            }
            var child = node.child;
            if (node.subtreeFlags & StoreConsistency && child !== null) {
              child.return = node;
              node = child;
              continue;
            }
            if (node === finishedWork) {
              return true;
            }
            while (node.sibling === null) {
              if (node.return === null || node.return === finishedWork) {
                return true;
              }
              node = node.return;
            }
            node.sibling.return = node.return;
            node = node.sibling;
          }
          return true;
        }
        function markRootSuspended$1(root2, suspendedLanes) {
          suspendedLanes = removeLanes(suspendedLanes, workInProgressRootPingedLanes);
          suspendedLanes = removeLanes(suspendedLanes, workInProgressRootInterleavedUpdatedLanes);
          markRootSuspended(root2, suspendedLanes);
        }
        function performSyncWorkOnRoot(root2) {
          {
            syncNestedUpdateFlag();
          }
          if ((executionContext & (RenderContext | CommitContext)) !== NoContext) {
            throw new Error("Should not already be working.");
          }
          flushPassiveEffects();
          var lanes = getNextLanes(root2, NoLanes);
          if (!includesSomeLane(lanes, SyncLane)) {
            ensureRootIsScheduled(root2, now());
            return null;
          }
          var exitStatus = renderRootSync(root2, lanes);
          if (root2.tag !== LegacyRoot && exitStatus === RootErrored) {
            var errorRetryLanes = getLanesToRetrySynchronouslyOnError(root2);
            if (errorRetryLanes !== NoLanes) {
              lanes = errorRetryLanes;
              exitStatus = recoverFromConcurrentError(root2, errorRetryLanes);
            }
          }
          if (exitStatus === RootFatalErrored) {
            var fatalError = workInProgressRootFatalError;
            prepareFreshStack(root2, NoLanes);
            markRootSuspended$1(root2, lanes);
            ensureRootIsScheduled(root2, now());
            throw fatalError;
          }
          if (exitStatus === RootDidNotComplete) {
            throw new Error("Root did not complete. This is a bug in React.");
          }
          var finishedWork = root2.current.alternate;
          root2.finishedWork = finishedWork;
          root2.finishedLanes = lanes;
          commitRoot(root2, workInProgressRootRecoverableErrors, workInProgressTransitions);
          ensureRootIsScheduled(root2, now());
          return null;
        }
        function flushRoot(root2, lanes) {
          if (lanes !== NoLanes) {
            markRootEntangled(root2, mergeLanes(lanes, SyncLane));
            ensureRootIsScheduled(root2, now());
            if ((executionContext & (RenderContext | CommitContext)) === NoContext) {
              resetRenderTimer();
              flushSyncCallbacks();
            }
          }
        }
        function batchedUpdates$1(fn, a) {
          var prevExecutionContext = executionContext;
          executionContext |= BatchedContext;
          try {
            return fn(a);
          } finally {
            executionContext = prevExecutionContext;
            if (executionContext === NoContext && // Treat `act` as if it's inside `batchedUpdates`, even in legacy mode.
            !ReactCurrentActQueue$1.isBatchingLegacy) {
              resetRenderTimer();
              flushSyncCallbacksOnlyInLegacyMode();
            }
          }
        }
        function discreteUpdates(fn, a, b, c, d) {
          var previousPriority = getCurrentUpdatePriority();
          var prevTransition = ReactCurrentBatchConfig$3.transition;
          try {
            ReactCurrentBatchConfig$3.transition = null;
            setCurrentUpdatePriority(DiscreteEventPriority);
            return fn(a, b, c, d);
          } finally {
            setCurrentUpdatePriority(previousPriority);
            ReactCurrentBatchConfig$3.transition = prevTransition;
            if (executionContext === NoContext) {
              resetRenderTimer();
            }
          }
        }
        function flushSync(fn) {
          if (rootWithPendingPassiveEffects !== null && rootWithPendingPassiveEffects.tag === LegacyRoot && (executionContext & (RenderContext | CommitContext)) === NoContext) {
            flushPassiveEffects();
          }
          var prevExecutionContext = executionContext;
          executionContext |= BatchedContext;
          var prevTransition = ReactCurrentBatchConfig$3.transition;
          var previousPriority = getCurrentUpdatePriority();
          try {
            ReactCurrentBatchConfig$3.transition = null;
            setCurrentUpdatePriority(DiscreteEventPriority);
            if (fn) {
              return fn();
            } else {
              return void 0;
            }
          } finally {
            setCurrentUpdatePriority(previousPriority);
            ReactCurrentBatchConfig$3.transition = prevTransition;
            executionContext = prevExecutionContext;
            if ((executionContext & (RenderContext | CommitContext)) === NoContext) {
              flushSyncCallbacks();
            }
          }
        }
        function isAlreadyRendering() {
          return (executionContext & (RenderContext | CommitContext)) !== NoContext;
        }
        function pushRenderLanes(fiber, lanes) {
          push(subtreeRenderLanesCursor, subtreeRenderLanes, fiber);
          subtreeRenderLanes = mergeLanes(subtreeRenderLanes, lanes);
          workInProgressRootIncludedLanes = mergeLanes(workInProgressRootIncludedLanes, lanes);
        }
        function popRenderLanes(fiber) {
          subtreeRenderLanes = subtreeRenderLanesCursor.current;
          pop(subtreeRenderLanesCursor, fiber);
        }
        function prepareFreshStack(root2, lanes) {
          root2.finishedWork = null;
          root2.finishedLanes = NoLanes;
          var timeoutHandle = root2.timeoutHandle;
          if (timeoutHandle !== noTimeout) {
            root2.timeoutHandle = noTimeout;
            cancelTimeout(timeoutHandle);
          }
          if (workInProgress !== null) {
            var interruptedWork = workInProgress.return;
            while (interruptedWork !== null) {
              var current2 = interruptedWork.alternate;
              unwindInterruptedWork(current2, interruptedWork);
              interruptedWork = interruptedWork.return;
            }
          }
          workInProgressRoot = root2;
          var rootWorkInProgress = createWorkInProgress(root2.current, null);
          workInProgress = rootWorkInProgress;
          workInProgressRootRenderLanes = subtreeRenderLanes = workInProgressRootIncludedLanes = lanes;
          workInProgressRootExitStatus = RootInProgress;
          workInProgressRootFatalError = null;
          workInProgressRootSkippedLanes = NoLanes;
          workInProgressRootInterleavedUpdatedLanes = NoLanes;
          workInProgressRootPingedLanes = NoLanes;
          workInProgressRootConcurrentErrors = null;
          workInProgressRootRecoverableErrors = null;
          finishQueueingConcurrentUpdates();
          {
            ReactStrictModeWarnings.discardPendingWarnings();
          }
          return rootWorkInProgress;
        }
        function handleError(root2, thrownValue) {
          do {
            var erroredWork = workInProgress;
            try {
              resetContextDependencies();
              resetHooksAfterThrow();
              resetCurrentFiber();
              ReactCurrentOwner$2.current = null;
              if (erroredWork === null || erroredWork.return === null) {
                workInProgressRootExitStatus = RootFatalErrored;
                workInProgressRootFatalError = thrownValue;
                workInProgress = null;
                return;
              }
              if (enableProfilerTimer && erroredWork.mode & ProfileMode) {
                stopProfilerTimerIfRunningAndRecordDelta(erroredWork, true);
              }
              if (enableSchedulingProfiler) {
                markComponentRenderStopped();
                if (thrownValue !== null && typeof thrownValue === "object" && typeof thrownValue.then === "function") {
                  var wakeable = thrownValue;
                  markComponentSuspended(erroredWork, wakeable, workInProgressRootRenderLanes);
                } else {
                  markComponentErrored(erroredWork, thrownValue, workInProgressRootRenderLanes);
                }
              }
              throwException(root2, erroredWork.return, erroredWork, thrownValue, workInProgressRootRenderLanes);
              completeUnitOfWork(erroredWork);
            } catch (yetAnotherThrownValue) {
              thrownValue = yetAnotherThrownValue;
              if (workInProgress === erroredWork && erroredWork !== null) {
                erroredWork = erroredWork.return;
                workInProgress = erroredWork;
              } else {
                erroredWork = workInProgress;
              }
              continue;
            }
            return;
          } while (true);
        }
        function pushDispatcher() {
          var prevDispatcher = ReactCurrentDispatcher$2.current;
          ReactCurrentDispatcher$2.current = ContextOnlyDispatcher;
          if (prevDispatcher === null) {
            return ContextOnlyDispatcher;
          } else {
            return prevDispatcher;
          }
        }
        function popDispatcher(prevDispatcher) {
          ReactCurrentDispatcher$2.current = prevDispatcher;
        }
        function markCommitTimeOfFallback() {
          globalMostRecentFallbackTime = now();
        }
        function markSkippedUpdateLanes(lane) {
          workInProgressRootSkippedLanes = mergeLanes(lane, workInProgressRootSkippedLanes);
        }
        function renderDidSuspend() {
          if (workInProgressRootExitStatus === RootInProgress) {
            workInProgressRootExitStatus = RootSuspended;
          }
        }
        function renderDidSuspendDelayIfPossible() {
          if (workInProgressRootExitStatus === RootInProgress || workInProgressRootExitStatus === RootSuspended || workInProgressRootExitStatus === RootErrored) {
            workInProgressRootExitStatus = RootSuspendedWithDelay;
          }
          if (workInProgressRoot !== null && (includesNonIdleWork(workInProgressRootSkippedLanes) || includesNonIdleWork(workInProgressRootInterleavedUpdatedLanes))) {
            markRootSuspended$1(workInProgressRoot, workInProgressRootRenderLanes);
          }
        }
        function renderDidError(error2) {
          if (workInProgressRootExitStatus !== RootSuspendedWithDelay) {
            workInProgressRootExitStatus = RootErrored;
          }
          if (workInProgressRootConcurrentErrors === null) {
            workInProgressRootConcurrentErrors = [error2];
          } else {
            workInProgressRootConcurrentErrors.push(error2);
          }
        }
        function renderHasNotSuspendedYet() {
          return workInProgressRootExitStatus === RootInProgress;
        }
        function renderRootSync(root2, lanes) {
          var prevExecutionContext = executionContext;
          executionContext |= RenderContext;
          var prevDispatcher = pushDispatcher();
          if (workInProgressRoot !== root2 || workInProgressRootRenderLanes !== lanes) {
            {
              if (isDevToolsPresent) {
                var memoizedUpdaters = root2.memoizedUpdaters;
                if (memoizedUpdaters.size > 0) {
                  restorePendingUpdaters(root2, workInProgressRootRenderLanes);
                  memoizedUpdaters.clear();
                }
                movePendingFibersToMemoized(root2, lanes);
              }
            }
            workInProgressTransitions = getTransitionsForLanes();
            prepareFreshStack(root2, lanes);
          }
          {
            markRenderStarted(lanes);
          }
          do {
            try {
              workLoopSync();
              break;
            } catch (thrownValue) {
              handleError(root2, thrownValue);
            }
          } while (true);
          resetContextDependencies();
          executionContext = prevExecutionContext;
          popDispatcher(prevDispatcher);
          if (workInProgress !== null) {
            throw new Error("Cannot commit an incomplete root. This error is likely caused by a bug in React. Please file an issue.");
          }
          {
            markRenderStopped();
          }
          workInProgressRoot = null;
          workInProgressRootRenderLanes = NoLanes;
          return workInProgressRootExitStatus;
        }
        function workLoopSync() {
          while (workInProgress !== null) {
            performUnitOfWork(workInProgress);
          }
        }
        function renderRootConcurrent(root2, lanes) {
          var prevExecutionContext = executionContext;
          executionContext |= RenderContext;
          var prevDispatcher = pushDispatcher();
          if (workInProgressRoot !== root2 || workInProgressRootRenderLanes !== lanes) {
            {
              if (isDevToolsPresent) {
                var memoizedUpdaters = root2.memoizedUpdaters;
                if (memoizedUpdaters.size > 0) {
                  restorePendingUpdaters(root2, workInProgressRootRenderLanes);
                  memoizedUpdaters.clear();
                }
                movePendingFibersToMemoized(root2, lanes);
              }
            }
            workInProgressTransitions = getTransitionsForLanes();
            resetRenderTimer();
            prepareFreshStack(root2, lanes);
          }
          {
            markRenderStarted(lanes);
          }
          do {
            try {
              workLoopConcurrent();
              break;
            } catch (thrownValue) {
              handleError(root2, thrownValue);
            }
          } while (true);
          resetContextDependencies();
          popDispatcher(prevDispatcher);
          executionContext = prevExecutionContext;
          if (workInProgress !== null) {
            {
              markRenderYielded();
            }
            return RootInProgress;
          } else {
            {
              markRenderStopped();
            }
            workInProgressRoot = null;
            workInProgressRootRenderLanes = NoLanes;
            return workInProgressRootExitStatus;
          }
        }
        function workLoopConcurrent() {
          while (workInProgress !== null && !shouldYield()) {
            performUnitOfWork(workInProgress);
          }
        }
        function performUnitOfWork(unitOfWork) {
          var current2 = unitOfWork.alternate;
          setCurrentFiber(unitOfWork);
          var next;
          if ((unitOfWork.mode & ProfileMode) !== NoMode) {
            startProfilerTimer(unitOfWork);
            next = beginWork$1(current2, unitOfWork, subtreeRenderLanes);
            stopProfilerTimerIfRunningAndRecordDelta(unitOfWork, true);
          } else {
            next = beginWork$1(current2, unitOfWork, subtreeRenderLanes);
          }
          resetCurrentFiber();
          unitOfWork.memoizedProps = unitOfWork.pendingProps;
          if (next === null) {
            completeUnitOfWork(unitOfWork);
          } else {
            workInProgress = next;
          }
          ReactCurrentOwner$2.current = null;
        }
        function completeUnitOfWork(unitOfWork) {
          var completedWork = unitOfWork;
          do {
            var current2 = completedWork.alternate;
            var returnFiber = completedWork.return;
            if ((completedWork.flags & Incomplete) === NoFlags) {
              setCurrentFiber(completedWork);
              var next = void 0;
              if ((completedWork.mode & ProfileMode) === NoMode) {
                next = completeWork(current2, completedWork, subtreeRenderLanes);
              } else {
                startProfilerTimer(completedWork);
                next = completeWork(current2, completedWork, subtreeRenderLanes);
                stopProfilerTimerIfRunningAndRecordDelta(completedWork, false);
              }
              resetCurrentFiber();
              if (next !== null) {
                workInProgress = next;
                return;
              }
            } else {
              var _next = unwindWork(current2, completedWork);
              if (_next !== null) {
                _next.flags &= HostEffectMask;
                workInProgress = _next;
                return;
              }
              if ((completedWork.mode & ProfileMode) !== NoMode) {
                stopProfilerTimerIfRunningAndRecordDelta(completedWork, false);
                var actualDuration = completedWork.actualDuration;
                var child = completedWork.child;
                while (child !== null) {
                  actualDuration += child.actualDuration;
                  child = child.sibling;
                }
                completedWork.actualDuration = actualDuration;
              }
              if (returnFiber !== null) {
                returnFiber.flags |= Incomplete;
                returnFiber.subtreeFlags = NoFlags;
                returnFiber.deletions = null;
              } else {
                workInProgressRootExitStatus = RootDidNotComplete;
                workInProgress = null;
                return;
              }
            }
            var siblingFiber = completedWork.sibling;
            if (siblingFiber !== null) {
              workInProgress = siblingFiber;
              return;
            }
            completedWork = returnFiber;
            workInProgress = completedWork;
          } while (completedWork !== null);
          if (workInProgressRootExitStatus === RootInProgress) {
            workInProgressRootExitStatus = RootCompleted;
          }
        }
        function commitRoot(root2, recoverableErrors, transitions) {
          var previousUpdateLanePriority = getCurrentUpdatePriority();
          var prevTransition = ReactCurrentBatchConfig$3.transition;
          try {
            ReactCurrentBatchConfig$3.transition = null;
            setCurrentUpdatePriority(DiscreteEventPriority);
            commitRootImpl(root2, recoverableErrors, transitions, previousUpdateLanePriority);
          } finally {
            ReactCurrentBatchConfig$3.transition = prevTransition;
            setCurrentUpdatePriority(previousUpdateLanePriority);
          }
          return null;
        }
        function commitRootImpl(root2, recoverableErrors, transitions, renderPriorityLevel) {
          do {
            flushPassiveEffects();
          } while (rootWithPendingPassiveEffects !== null);
          flushRenderPhaseStrictModeWarningsInDEV();
          if ((executionContext & (RenderContext | CommitContext)) !== NoContext) {
            throw new Error("Should not already be working.");
          }
          var finishedWork = root2.finishedWork;
          var lanes = root2.finishedLanes;
          {
            markCommitStarted(lanes);
          }
          if (finishedWork === null) {
            {
              markCommitStopped();
            }
            return null;
          } else {
            {
              if (lanes === NoLanes) {
                error("root.finishedLanes should not be empty during a commit. This is a bug in React.");
              }
            }
          }
          root2.finishedWork = null;
          root2.finishedLanes = NoLanes;
          if (finishedWork === root2.current) {
            throw new Error("Cannot commit the same tree as before. This error is likely caused by a bug in React. Please file an issue.");
          }
          root2.callbackNode = null;
          root2.callbackPriority = NoLane;
          var remainingLanes = mergeLanes(finishedWork.lanes, finishedWork.childLanes);
          markRootFinished(root2, remainingLanes);
          if (root2 === workInProgressRoot) {
            workInProgressRoot = null;
            workInProgress = null;
            workInProgressRootRenderLanes = NoLanes;
          }
          if ((finishedWork.subtreeFlags & PassiveMask) !== NoFlags || (finishedWork.flags & PassiveMask) !== NoFlags) {
            if (!rootDoesHavePassiveEffects) {
              rootDoesHavePassiveEffects = true;
              pendingPassiveTransitions = transitions;
              scheduleCallback$1(NormalPriority, function() {
                flushPassiveEffects();
                return null;
              });
            }
          }
          var subtreeHasEffects = (finishedWork.subtreeFlags & (BeforeMutationMask | MutationMask | LayoutMask | PassiveMask)) !== NoFlags;
          var rootHasEffect = (finishedWork.flags & (BeforeMutationMask | MutationMask | LayoutMask | PassiveMask)) !== NoFlags;
          if (subtreeHasEffects || rootHasEffect) {
            var prevTransition = ReactCurrentBatchConfig$3.transition;
            ReactCurrentBatchConfig$3.transition = null;
            var previousPriority = getCurrentUpdatePriority();
            setCurrentUpdatePriority(DiscreteEventPriority);
            var prevExecutionContext = executionContext;
            executionContext |= CommitContext;
            ReactCurrentOwner$2.current = null;
            var shouldFireAfterActiveInstanceBlur2 = commitBeforeMutationEffects(root2, finishedWork);
            {
              recordCommitTime();
            }
            commitMutationEffects(root2, finishedWork, lanes);
            resetAfterCommit(root2.containerInfo);
            root2.current = finishedWork;
            {
              markLayoutEffectsStarted(lanes);
            }
            commitLayoutEffects(finishedWork, root2, lanes);
            {
              markLayoutEffectsStopped();
            }
            requestPaint();
            executionContext = prevExecutionContext;
            setCurrentUpdatePriority(previousPriority);
            ReactCurrentBatchConfig$3.transition = prevTransition;
          } else {
            root2.current = finishedWork;
            {
              recordCommitTime();
            }
          }
          var rootDidHavePassiveEffects = rootDoesHavePassiveEffects;
          if (rootDoesHavePassiveEffects) {
            rootDoesHavePassiveEffects = false;
            rootWithPendingPassiveEffects = root2;
            pendingPassiveEffectsLanes = lanes;
          } else {
            {
              nestedPassiveUpdateCount = 0;
              rootWithPassiveNestedUpdates = null;
            }
          }
          remainingLanes = root2.pendingLanes;
          if (remainingLanes === NoLanes) {
            legacyErrorBoundariesThatAlreadyFailed = null;
          }
          {
            if (!rootDidHavePassiveEffects) {
              commitDoubleInvokeEffectsInDEV(root2.current, false);
            }
          }
          onCommitRoot(finishedWork.stateNode, renderPriorityLevel);
          {
            if (isDevToolsPresent) {
              root2.memoizedUpdaters.clear();
            }
          }
          {
            onCommitRoot$1();
          }
          ensureRootIsScheduled(root2, now());
          if (recoverableErrors !== null) {
            var onRecoverableError = root2.onRecoverableError;
            for (var i = 0; i < recoverableErrors.length; i++) {
              var recoverableError = recoverableErrors[i];
              var componentStack = recoverableError.stack;
              var digest = recoverableError.digest;
              onRecoverableError(recoverableError.value, {
                componentStack,
                digest
              });
            }
          }
          if (hasUncaughtError) {
            hasUncaughtError = false;
            var error$1 = firstUncaughtError;
            firstUncaughtError = null;
            throw error$1;
          }
          if (includesSomeLane(pendingPassiveEffectsLanes, SyncLane) && root2.tag !== LegacyRoot) {
            flushPassiveEffects();
          }
          remainingLanes = root2.pendingLanes;
          if (includesSomeLane(remainingLanes, SyncLane)) {
            {
              markNestedUpdateScheduled();
            }
            if (root2 === rootWithNestedUpdates) {
              nestedUpdateCount++;
            } else {
              nestedUpdateCount = 0;
              rootWithNestedUpdates = root2;
            }
          } else {
            nestedUpdateCount = 0;
          }
          flushSyncCallbacks();
          {
            markCommitStopped();
          }
          return null;
        }
        function flushPassiveEffects() {
          if (rootWithPendingPassiveEffects !== null) {
            var renderPriority = lanesToEventPriority(pendingPassiveEffectsLanes);
            var priority = lowerEventPriority(DefaultEventPriority, renderPriority);
            var prevTransition = ReactCurrentBatchConfig$3.transition;
            var previousPriority = getCurrentUpdatePriority();
            try {
              ReactCurrentBatchConfig$3.transition = null;
              setCurrentUpdatePriority(priority);
              return flushPassiveEffectsImpl();
            } finally {
              setCurrentUpdatePriority(previousPriority);
              ReactCurrentBatchConfig$3.transition = prevTransition;
            }
          }
          return false;
        }
        function enqueuePendingPassiveProfilerEffect(fiber) {
          {
            pendingPassiveProfilerEffects.push(fiber);
            if (!rootDoesHavePassiveEffects) {
              rootDoesHavePassiveEffects = true;
              scheduleCallback$1(NormalPriority, function() {
                flushPassiveEffects();
                return null;
              });
            }
          }
        }
        function flushPassiveEffectsImpl() {
          if (rootWithPendingPassiveEffects === null) {
            return false;
          }
          var transitions = pendingPassiveTransitions;
          pendingPassiveTransitions = null;
          var root2 = rootWithPendingPassiveEffects;
          var lanes = pendingPassiveEffectsLanes;
          rootWithPendingPassiveEffects = null;
          pendingPassiveEffectsLanes = NoLanes;
          if ((executionContext & (RenderContext | CommitContext)) !== NoContext) {
            throw new Error("Cannot flush passive effects while already rendering.");
          }
          {
            isFlushingPassiveEffects = true;
            didScheduleUpdateDuringPassiveEffects = false;
          }
          {
            markPassiveEffectsStarted(lanes);
          }
          var prevExecutionContext = executionContext;
          executionContext |= CommitContext;
          commitPassiveUnmountEffects(root2.current);
          commitPassiveMountEffects(root2, root2.current, lanes, transitions);
          {
            var profilerEffects = pendingPassiveProfilerEffects;
            pendingPassiveProfilerEffects = [];
            for (var i = 0; i < profilerEffects.length; i++) {
              var _fiber = profilerEffects[i];
              commitPassiveEffectDurations(root2, _fiber);
            }
          }
          {
            markPassiveEffectsStopped();
          }
          {
            commitDoubleInvokeEffectsInDEV(root2.current, true);
          }
          executionContext = prevExecutionContext;
          flushSyncCallbacks();
          {
            if (didScheduleUpdateDuringPassiveEffects) {
              if (root2 === rootWithPassiveNestedUpdates) {
                nestedPassiveUpdateCount++;
              } else {
                nestedPassiveUpdateCount = 0;
                rootWithPassiveNestedUpdates = root2;
              }
            } else {
              nestedPassiveUpdateCount = 0;
            }
            isFlushingPassiveEffects = false;
            didScheduleUpdateDuringPassiveEffects = false;
          }
          onPostCommitRoot(root2);
          {
            var stateNode = root2.current.stateNode;
            stateNode.effectDuration = 0;
            stateNode.passiveEffectDuration = 0;
          }
          return true;
        }
        function isAlreadyFailedLegacyErrorBoundary(instance) {
          return legacyErrorBoundariesThatAlreadyFailed !== null && legacyErrorBoundariesThatAlreadyFailed.has(instance);
        }
        function markLegacyErrorBoundaryAsFailed(instance) {
          if (legacyErrorBoundariesThatAlreadyFailed === null) {
            legacyErrorBoundariesThatAlreadyFailed = /* @__PURE__ */ new Set([instance]);
          } else {
            legacyErrorBoundariesThatAlreadyFailed.add(instance);
          }
        }
        function prepareToThrowUncaughtError(error2) {
          if (!hasUncaughtError) {
            hasUncaughtError = true;
            firstUncaughtError = error2;
          }
        }
        var onUncaughtError = prepareToThrowUncaughtError;
        function captureCommitPhaseErrorOnRoot(rootFiber, sourceFiber, error2) {
          var errorInfo = createCapturedValueAtFiber(error2, sourceFiber);
          var update = createRootErrorUpdate(rootFiber, errorInfo, SyncLane);
          var root2 = enqueueUpdate(rootFiber, update, SyncLane);
          var eventTime = requestEventTime();
          if (root2 !== null) {
            markRootUpdated(root2, SyncLane, eventTime);
            ensureRootIsScheduled(root2, eventTime);
          }
        }
        function captureCommitPhaseError(sourceFiber, nearestMountedAncestor, error$1) {
          {
            reportUncaughtErrorInDEV(error$1);
            setIsRunningInsertionEffect(false);
          }
          if (sourceFiber.tag === HostRoot) {
            captureCommitPhaseErrorOnRoot(sourceFiber, sourceFiber, error$1);
            return;
          }
          var fiber = null;
          {
            fiber = nearestMountedAncestor;
          }
          while (fiber !== null) {
            if (fiber.tag === HostRoot) {
              captureCommitPhaseErrorOnRoot(fiber, sourceFiber, error$1);
              return;
            } else if (fiber.tag === ClassComponent) {
              var ctor = fiber.type;
              var instance = fiber.stateNode;
              if (typeof ctor.getDerivedStateFromError === "function" || typeof instance.componentDidCatch === "function" && !isAlreadyFailedLegacyErrorBoundary(instance)) {
                var errorInfo = createCapturedValueAtFiber(error$1, sourceFiber);
                var update = createClassErrorUpdate(fiber, errorInfo, SyncLane);
                var root2 = enqueueUpdate(fiber, update, SyncLane);
                var eventTime = requestEventTime();
                if (root2 !== null) {
                  markRootUpdated(root2, SyncLane, eventTime);
                  ensureRootIsScheduled(root2, eventTime);
                }
                return;
              }
            }
            fiber = fiber.return;
          }
          {
            error("Internal React error: Attempted to capture a commit phase error inside a detached tree. This indicates a bug in React. Likely causes include deleting the same fiber more than once, committing an already-finished tree, or an inconsistent return pointer.\n\nError message:\n\n%s", error$1);
          }
        }
        function pingSuspendedRoot(root2, wakeable, pingedLanes) {
          var pingCache = root2.pingCache;
          if (pingCache !== null) {
            pingCache.delete(wakeable);
          }
          var eventTime = requestEventTime();
          markRootPinged(root2, pingedLanes);
          warnIfSuspenseResolutionNotWrappedWithActDEV(root2);
          if (workInProgressRoot === root2 && isSubsetOfLanes(workInProgressRootRenderLanes, pingedLanes)) {
            if (workInProgressRootExitStatus === RootSuspendedWithDelay || workInProgressRootExitStatus === RootSuspended && includesOnlyRetries(workInProgressRootRenderLanes) && now() - globalMostRecentFallbackTime < FALLBACK_THROTTLE_MS) {
              prepareFreshStack(root2, NoLanes);
            } else {
              workInProgressRootPingedLanes = mergeLanes(workInProgressRootPingedLanes, pingedLanes);
            }
          }
          ensureRootIsScheduled(root2, eventTime);
        }
        function retryTimedOutBoundary(boundaryFiber, retryLane) {
          if (retryLane === NoLane) {
            retryLane = requestRetryLane(boundaryFiber);
          }
          var eventTime = requestEventTime();
          var root2 = enqueueConcurrentRenderForLane(boundaryFiber, retryLane);
          if (root2 !== null) {
            markRootUpdated(root2, retryLane, eventTime);
            ensureRootIsScheduled(root2, eventTime);
          }
        }
        function retryDehydratedSuspenseBoundary(boundaryFiber) {
          var suspenseState = boundaryFiber.memoizedState;
          var retryLane = NoLane;
          if (suspenseState !== null) {
            retryLane = suspenseState.retryLane;
          }
          retryTimedOutBoundary(boundaryFiber, retryLane);
        }
        function resolveRetryWakeable(boundaryFiber, wakeable) {
          var retryLane = NoLane;
          var retryCache;
          switch (boundaryFiber.tag) {
            case SuspenseComponent:
              retryCache = boundaryFiber.stateNode;
              var suspenseState = boundaryFiber.memoizedState;
              if (suspenseState !== null) {
                retryLane = suspenseState.retryLane;
              }
              break;
            case SuspenseListComponent:
              retryCache = boundaryFiber.stateNode;
              break;
            default:
              throw new Error("Pinged unknown suspense boundary type. This is probably a bug in React.");
          }
          if (retryCache !== null) {
            retryCache.delete(wakeable);
          }
          retryTimedOutBoundary(boundaryFiber, retryLane);
        }
        function jnd(timeElapsed) {
          return timeElapsed < 120 ? 120 : timeElapsed < 480 ? 480 : timeElapsed < 1080 ? 1080 : timeElapsed < 1920 ? 1920 : timeElapsed < 3e3 ? 3e3 : timeElapsed < 4320 ? 4320 : ceil(timeElapsed / 1960) * 1960;
        }
        function checkForNestedUpdates() {
          if (nestedUpdateCount > NESTED_UPDATE_LIMIT) {
            nestedUpdateCount = 0;
            rootWithNestedUpdates = null;
            throw new Error("Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate. React limits the number of nested updates to prevent infinite loops.");
          }
          {
            if (nestedPassiveUpdateCount > NESTED_PASSIVE_UPDATE_LIMIT) {
              nestedPassiveUpdateCount = 0;
              rootWithPassiveNestedUpdates = null;
              error("Maximum update depth exceeded. This can happen when a component calls setState inside useEffect, but useEffect either doesn't have a dependency array, or one of the dependencies changes on every render.");
            }
          }
        }
        function flushRenderPhaseStrictModeWarningsInDEV() {
          {
            ReactStrictModeWarnings.flushLegacyContextWarning();
            {
              ReactStrictModeWarnings.flushPendingUnsafeLifecycleWarnings();
            }
          }
        }
        function commitDoubleInvokeEffectsInDEV(fiber, hasPassiveEffects) {
          {
            setCurrentFiber(fiber);
            invokeEffectsInDev(fiber, MountLayoutDev, invokeLayoutEffectUnmountInDEV);
            if (hasPassiveEffects) {
              invokeEffectsInDev(fiber, MountPassiveDev, invokePassiveEffectUnmountInDEV);
            }
            invokeEffectsInDev(fiber, MountLayoutDev, invokeLayoutEffectMountInDEV);
            if (hasPassiveEffects) {
              invokeEffectsInDev(fiber, MountPassiveDev, invokePassiveEffectMountInDEV);
            }
            resetCurrentFiber();
          }
        }
        function invokeEffectsInDev(firstChild, fiberFlags, invokeEffectFn) {
          {
            var current2 = firstChild;
            var subtreeRoot = null;
            while (current2 !== null) {
              var primarySubtreeFlag = current2.subtreeFlags & fiberFlags;
              if (current2 !== subtreeRoot && current2.child !== null && primarySubtreeFlag !== NoFlags) {
                current2 = current2.child;
              } else {
                if ((current2.flags & fiberFlags) !== NoFlags) {
                  invokeEffectFn(current2);
                }
                if (current2.sibling !== null) {
                  current2 = current2.sibling;
                } else {
                  current2 = subtreeRoot = current2.return;
                }
              }
            }
          }
        }
        var didWarnStateUpdateForNotYetMountedComponent = null;
        function warnAboutUpdateOnNotYetMountedFiberInDEV(fiber) {
          {
            if ((executionContext & RenderContext) !== NoContext) {
              return;
            }
            if (!(fiber.mode & ConcurrentMode)) {
              return;
            }
            var tag = fiber.tag;
            if (tag !== IndeterminateComponent && tag !== HostRoot && tag !== ClassComponent && tag !== FunctionComponent && tag !== ForwardRef && tag !== MemoComponent && tag !== SimpleMemoComponent) {
              return;
            }
            var componentName = getComponentNameFromFiber(fiber) || "ReactComponent";
            if (didWarnStateUpdateForNotYetMountedComponent !== null) {
              if (didWarnStateUpdateForNotYetMountedComponent.has(componentName)) {
                return;
              }
              didWarnStateUpdateForNotYetMountedComponent.add(componentName);
            } else {
              didWarnStateUpdateForNotYetMountedComponent = /* @__PURE__ */ new Set([componentName]);
            }
            var previousFiber = current;
            try {
              setCurrentFiber(fiber);
              error("Can't perform a React state update on a component that hasn't mounted yet. This indicates that you have a side-effect in your render function that asynchronously later calls tries to update the component. Move this work to useEffect instead.");
            } finally {
              if (previousFiber) {
                setCurrentFiber(fiber);
              } else {
                resetCurrentFiber();
              }
            }
          }
        }
        var beginWork$1;
        {
          var dummyFiber = null;
          beginWork$1 = function(current2, unitOfWork, lanes) {
            var originalWorkInProgressCopy = assignFiberPropertiesInDEV(dummyFiber, unitOfWork);
            try {
              return beginWork(current2, unitOfWork, lanes);
            } catch (originalError) {
              if (didSuspendOrErrorWhileHydratingDEV() || originalError !== null && typeof originalError === "object" && typeof originalError.then === "function") {
                throw originalError;
              }
              resetContextDependencies();
              resetHooksAfterThrow();
              unwindInterruptedWork(current2, unitOfWork);
              assignFiberPropertiesInDEV(unitOfWork, originalWorkInProgressCopy);
              if (unitOfWork.mode & ProfileMode) {
                startProfilerTimer(unitOfWork);
              }
              invokeGuardedCallback(null, beginWork, null, current2, unitOfWork, lanes);
              if (hasCaughtError()) {
                var replayError = clearCaughtError();
                if (typeof replayError === "object" && replayError !== null && replayError._suppressLogging && typeof originalError === "object" && originalError !== null && !originalError._suppressLogging) {
                  originalError._suppressLogging = true;
                }
              }
              throw originalError;
            }
          };
        }
        var didWarnAboutUpdateInRender = false;
        var didWarnAboutUpdateInRenderForAnotherComponent;
        {
          didWarnAboutUpdateInRenderForAnotherComponent = /* @__PURE__ */ new Set();
        }
        function warnAboutRenderPhaseUpdatesInDEV(fiber) {
          {
            if (isRendering && !getIsUpdatingOpaqueValueInRenderPhaseInDEV()) {
              switch (fiber.tag) {
                case FunctionComponent:
                case ForwardRef:
                case SimpleMemoComponent: {
                  var renderingComponentName = workInProgress && getComponentNameFromFiber(workInProgress) || "Unknown";
                  var dedupeKey = renderingComponentName;
                  if (!didWarnAboutUpdateInRenderForAnotherComponent.has(dedupeKey)) {
                    didWarnAboutUpdateInRenderForAnotherComponent.add(dedupeKey);
                    var setStateComponentName = getComponentNameFromFiber(fiber) || "Unknown";
                    error("Cannot update a component (`%s`) while rendering a different component (`%s`). To locate the bad setState() call inside `%s`, follow the stack trace as described in https://reactjs.org/link/setstate-in-render", setStateComponentName, renderingComponentName, renderingComponentName);
                  }
                  break;
                }
                case ClassComponent: {
                  if (!didWarnAboutUpdateInRender) {
                    error("Cannot update during an existing state transition (such as within `render`). Render methods should be a pure function of props and state.");
                    didWarnAboutUpdateInRender = true;
                  }
                  break;
                }
              }
            }
          }
        }
        function restorePendingUpdaters(root2, lanes) {
          {
            if (isDevToolsPresent) {
              var memoizedUpdaters = root2.memoizedUpdaters;
              memoizedUpdaters.forEach(function(schedulingFiber) {
                addFiberToLanesMap(root2, schedulingFiber, lanes);
              });
            }
          }
        }
        var fakeActCallbackNode = {};
        function scheduleCallback$1(priorityLevel, callback) {
          {
            var actQueue = ReactCurrentActQueue$1.current;
            if (actQueue !== null) {
              actQueue.push(callback);
              return fakeActCallbackNode;
            } else {
              return scheduleCallback(priorityLevel, callback);
            }
          }
        }
        function cancelCallback$1(callbackNode) {
          if (callbackNode === fakeActCallbackNode) {
            return;
          }
          return cancelCallback(callbackNode);
        }
        function shouldForceFlushFallbacksInDEV() {
          return ReactCurrentActQueue$1.current !== null;
        }
        function warnIfUpdatesNotWrappedWithActDEV(fiber) {
          {
            if (fiber.mode & ConcurrentMode) {
              if (!isConcurrentActEnvironment()) {
                return;
              }
            } else {
              if (!isLegacyActEnvironment()) {
                return;
              }
              if (executionContext !== NoContext) {
                return;
              }
              if (fiber.tag !== FunctionComponent && fiber.tag !== ForwardRef && fiber.tag !== SimpleMemoComponent) {
                return;
              }
            }
            if (ReactCurrentActQueue$1.current === null) {
              var previousFiber = current;
              try {
                setCurrentFiber(fiber);
                error("An update to %s inside a test was not wrapped in act(...).\n\nWhen testing, code that causes React state updates should be wrapped into act(...):\n\nact(() => {\n  /* fire events that update state */\n});\n/* assert on the output */\n\nThis ensures that you're testing the behavior the user would see in the browser. Learn more at https://reactjs.org/link/wrap-tests-with-act", getComponentNameFromFiber(fiber));
              } finally {
                if (previousFiber) {
                  setCurrentFiber(fiber);
                } else {
                  resetCurrentFiber();
                }
              }
            }
          }
        }
        function warnIfSuspenseResolutionNotWrappedWithActDEV(root2) {
          {
            if (root2.tag !== LegacyRoot && isConcurrentActEnvironment() && ReactCurrentActQueue$1.current === null) {
              error("A suspended resource finished loading inside a test, but the event was not wrapped in act(...).\n\nWhen testing, code that resolves suspended data should be wrapped into act(...):\n\nact(() => {\n  /* finish loading suspended data */\n});\n/* assert on the output */\n\nThis ensures that you're testing the behavior the user would see in the browser. Learn more at https://reactjs.org/link/wrap-tests-with-act");
            }
          }
        }
        function setIsRunningInsertionEffect(isRunning) {
          {
            isRunningInsertionEffect = isRunning;
          }
        }
        var resolveFamily = null;
        var failedBoundaries = null;
        var setRefreshHandler = function(handler) {
          {
            resolveFamily = handler;
          }
        };
        function resolveFunctionForHotReloading(type) {
          {
            if (resolveFamily === null) {
              return type;
            }
            var family = resolveFamily(type);
            if (family === void 0) {
              return type;
            }
            return family.current;
          }
        }
        function resolveClassForHotReloading(type) {
          return resolveFunctionForHotReloading(type);
        }
        function resolveForwardRefForHotReloading(type) {
          {
            if (resolveFamily === null) {
              return type;
            }
            var family = resolveFamily(type);
            if (family === void 0) {
              if (type !== null && type !== void 0 && typeof type.render === "function") {
                var currentRender = resolveFunctionForHotReloading(type.render);
                if (type.render !== currentRender) {
                  var syntheticType = {
                    $$typeof: REACT_FORWARD_REF_TYPE,
                    render: currentRender
                  };
                  if (type.displayName !== void 0) {
                    syntheticType.displayName = type.displayName;
                  }
                  return syntheticType;
                }
              }
              return type;
            }
            return family.current;
          }
        }
        function isCompatibleFamilyForHotReloading(fiber, element) {
          {
            if (resolveFamily === null) {
              return false;
            }
            var prevType = fiber.elementType;
            var nextType = element.type;
            var needsCompareFamilies = false;
            var $$typeofNextType = typeof nextType === "object" && nextType !== null ? nextType.$$typeof : null;
            switch (fiber.tag) {
              case ClassComponent: {
                if (typeof nextType === "function") {
                  needsCompareFamilies = true;
                }
                break;
              }
              case FunctionComponent: {
                if (typeof nextType === "function") {
                  needsCompareFamilies = true;
                } else if ($$typeofNextType === REACT_LAZY_TYPE) {
                  needsCompareFamilies = true;
                }
                break;
              }
              case ForwardRef: {
                if ($$typeofNextType === REACT_FORWARD_REF_TYPE) {
                  needsCompareFamilies = true;
                } else if ($$typeofNextType === REACT_LAZY_TYPE) {
                  needsCompareFamilies = true;
                }
                break;
              }
              case MemoComponent:
              case SimpleMemoComponent: {
                if ($$typeofNextType === REACT_MEMO_TYPE) {
                  needsCompareFamilies = true;
                } else if ($$typeofNextType === REACT_LAZY_TYPE) {
                  needsCompareFamilies = true;
                }
                break;
              }
              default:
                return false;
            }
            if (needsCompareFamilies) {
              var prevFamily = resolveFamily(prevType);
              if (prevFamily !== void 0 && prevFamily === resolveFamily(nextType)) {
                return true;
              }
            }
            return false;
          }
        }
        function markFailedErrorBoundaryForHotReloading(fiber) {
          {
            if (resolveFamily === null) {
              return;
            }
            if (typeof WeakSet !== "function") {
              return;
            }
            if (failedBoundaries === null) {
              failedBoundaries = /* @__PURE__ */ new WeakSet();
            }
            failedBoundaries.add(fiber);
          }
        }
        var scheduleRefresh = function(root2, update) {
          {
            if (resolveFamily === null) {
              return;
            }
            var staleFamilies = update.staleFamilies, updatedFamilies = update.updatedFamilies;
            flushPassiveEffects();
            flushSync(function() {
              scheduleFibersWithFamiliesRecursively(root2.current, updatedFamilies, staleFamilies);
            });
          }
        };
        var scheduleRoot = function(root2, element) {
          {
            if (root2.context !== emptyContextObject) {
              return;
            }
            flushPassiveEffects();
            flushSync(function() {
              updateContainer(element, root2, null, null);
            });
          }
        };
        function scheduleFibersWithFamiliesRecursively(fiber, updatedFamilies, staleFamilies) {
          {
            var alternate = fiber.alternate, child = fiber.child, sibling = fiber.sibling, tag = fiber.tag, type = fiber.type;
            var candidateType = null;
            switch (tag) {
              case FunctionComponent:
              case SimpleMemoComponent:
              case ClassComponent:
                candidateType = type;
                break;
              case ForwardRef:
                candidateType = type.render;
                break;
            }
            if (resolveFamily === null) {
              throw new Error("Expected resolveFamily to be set during hot reload.");
            }
            var needsRender = false;
            var needsRemount = false;
            if (candidateType !== null) {
              var family = resolveFamily(candidateType);
              if (family !== void 0) {
                if (staleFamilies.has(family)) {
                  needsRemount = true;
                } else if (updatedFamilies.has(family)) {
                  if (tag === ClassComponent) {
                    needsRemount = true;
                  } else {
                    needsRender = true;
                  }
                }
              }
            }
            if (failedBoundaries !== null) {
              if (failedBoundaries.has(fiber) || alternate !== null && failedBoundaries.has(alternate)) {
                needsRemount = true;
              }
            }
            if (needsRemount) {
              fiber._debugNeedsRemount = true;
            }
            if (needsRemount || needsRender) {
              var _root = enqueueConcurrentRenderForLane(fiber, SyncLane);
              if (_root !== null) {
                scheduleUpdateOnFiber(_root, fiber, SyncLane, NoTimestamp);
              }
            }
            if (child !== null && !needsRemount) {
              scheduleFibersWithFamiliesRecursively(child, updatedFamilies, staleFamilies);
            }
            if (sibling !== null) {
              scheduleFibersWithFamiliesRecursively(sibling, updatedFamilies, staleFamilies);
            }
          }
        }
        var findHostInstancesForRefresh = function(root2, families) {
          {
            var hostInstances = /* @__PURE__ */ new Set();
            var types = new Set(families.map(function(family) {
              return family.current;
            }));
            findHostInstancesForMatchingFibersRecursively(root2.current, types, hostInstances);
            return hostInstances;
          }
        };
        function findHostInstancesForMatchingFibersRecursively(fiber, types, hostInstances) {
          {
            var child = fiber.child, sibling = fiber.sibling, tag = fiber.tag, type = fiber.type;
            var candidateType = null;
            switch (tag) {
              case FunctionComponent:
              case SimpleMemoComponent:
              case ClassComponent:
                candidateType = type;
                break;
              case ForwardRef:
                candidateType = type.render;
                break;
            }
            var didMatch = false;
            if (candidateType !== null) {
              if (types.has(candidateType)) {
                didMatch = true;
              }
            }
            if (didMatch) {
              findHostInstancesForFiberShallowly(fiber, hostInstances);
            } else {
              if (child !== null) {
                findHostInstancesForMatchingFibersRecursively(child, types, hostInstances);
              }
            }
            if (sibling !== null) {
              findHostInstancesForMatchingFibersRecursively(sibling, types, hostInstances);
            }
          }
        }
        function findHostInstancesForFiberShallowly(fiber, hostInstances) {
          {
            var foundHostInstances = findChildHostInstancesForFiberShallowly(fiber, hostInstances);
            if (foundHostInstances) {
              return;
            }
            var node = fiber;
            while (true) {
              switch (node.tag) {
                case HostComponent:
                  hostInstances.add(node.stateNode);
                  return;
                case HostPortal:
                  hostInstances.add(node.stateNode.containerInfo);
                  return;
                case HostRoot:
                  hostInstances.add(node.stateNode.containerInfo);
                  return;
              }
              if (node.return === null) {
                throw new Error("Expected to reach root first.");
              }
              node = node.return;
            }
          }
        }
        function findChildHostInstancesForFiberShallowly(fiber, hostInstances) {
          {
            var node = fiber;
            var foundHostInstances = false;
            while (true) {
              if (node.tag === HostComponent) {
                foundHostInstances = true;
                hostInstances.add(node.stateNode);
              } else if (node.child !== null) {
                node.child.return = node;
                node = node.child;
                continue;
              }
              if (node === fiber) {
                return foundHostInstances;
              }
              while (node.sibling === null) {
                if (node.return === null || node.return === fiber) {
                  return foundHostInstances;
                }
                node = node.return;
              }
              node.sibling.return = node.return;
              node = node.sibling;
            }
          }
          return false;
        }
        var hasBadMapPolyfill;
        {
          hasBadMapPolyfill = false;
          try {
            var nonExtensibleObject = Object.preventExtensions({});
            /* @__PURE__ */ new Map([[nonExtensibleObject, null]]);
            /* @__PURE__ */ new Set([nonExtensibleObject]);
          } catch (e) {
            hasBadMapPolyfill = true;
          }
        }
        function FiberNode(tag, pendingProps, key, mode) {
          this.tag = tag;
          this.key = key;
          this.elementType = null;
          this.type = null;
          this.stateNode = null;
          this.return = null;
          this.child = null;
          this.sibling = null;
          this.index = 0;
          this.ref = null;
          this.pendingProps = pendingProps;
          this.memoizedProps = null;
          this.updateQueue = null;
          this.memoizedState = null;
          this.dependencies = null;
          this.mode = mode;
          this.flags = NoFlags;
          this.subtreeFlags = NoFlags;
          this.deletions = null;
          this.lanes = NoLanes;
          this.childLanes = NoLanes;
          this.alternate = null;
          {
            this.actualDuration = Number.NaN;
            this.actualStartTime = Number.NaN;
            this.selfBaseDuration = Number.NaN;
            this.treeBaseDuration = Number.NaN;
            this.actualDuration = 0;
            this.actualStartTime = -1;
            this.selfBaseDuration = 0;
            this.treeBaseDuration = 0;
          }
          {
            this._debugSource = null;
            this._debugOwner = null;
            this._debugNeedsRemount = false;
            this._debugHookTypes = null;
            if (!hasBadMapPolyfill && typeof Object.preventExtensions === "function") {
              Object.preventExtensions(this);
            }
          }
        }
        var createFiber = function(tag, pendingProps, key, mode) {
          return new FiberNode(tag, pendingProps, key, mode);
        };
        function shouldConstruct$1(Component) {
          var prototype = Component.prototype;
          return !!(prototype && prototype.isReactComponent);
        }
        function isSimpleFunctionComponent(type) {
          return typeof type === "function" && !shouldConstruct$1(type) && type.defaultProps === void 0;
        }
        function resolveLazyComponentTag(Component) {
          if (typeof Component === "function") {
            return shouldConstruct$1(Component) ? ClassComponent : FunctionComponent;
          } else if (Component !== void 0 && Component !== null) {
            var $$typeof = Component.$$typeof;
            if ($$typeof === REACT_FORWARD_REF_TYPE) {
              return ForwardRef;
            }
            if ($$typeof === REACT_MEMO_TYPE) {
              return MemoComponent;
            }
          }
          return IndeterminateComponent;
        }
        function createWorkInProgress(current2, pendingProps) {
          var workInProgress2 = current2.alternate;
          if (workInProgress2 === null) {
            workInProgress2 = createFiber(current2.tag, pendingProps, current2.key, current2.mode);
            workInProgress2.elementType = current2.elementType;
            workInProgress2.type = current2.type;
            workInProgress2.stateNode = current2.stateNode;
            {
              workInProgress2._debugSource = current2._debugSource;
              workInProgress2._debugOwner = current2._debugOwner;
              workInProgress2._debugHookTypes = current2._debugHookTypes;
            }
            workInProgress2.alternate = current2;
            current2.alternate = workInProgress2;
          } else {
            workInProgress2.pendingProps = pendingProps;
            workInProgress2.type = current2.type;
            workInProgress2.flags = NoFlags;
            workInProgress2.subtreeFlags = NoFlags;
            workInProgress2.deletions = null;
            {
              workInProgress2.actualDuration = 0;
              workInProgress2.actualStartTime = -1;
            }
          }
          workInProgress2.flags = current2.flags & StaticMask;
          workInProgress2.childLanes = current2.childLanes;
          workInProgress2.lanes = current2.lanes;
          workInProgress2.child = current2.child;
          workInProgress2.memoizedProps = current2.memoizedProps;
          workInProgress2.memoizedState = current2.memoizedState;
          workInProgress2.updateQueue = current2.updateQueue;
          var currentDependencies = current2.dependencies;
          workInProgress2.dependencies = currentDependencies === null ? null : {
            lanes: currentDependencies.lanes,
            firstContext: currentDependencies.firstContext
          };
          workInProgress2.sibling = current2.sibling;
          workInProgress2.index = current2.index;
          workInProgress2.ref = current2.ref;
          {
            workInProgress2.selfBaseDuration = current2.selfBaseDuration;
            workInProgress2.treeBaseDuration = current2.treeBaseDuration;
          }
          {
            workInProgress2._debugNeedsRemount = current2._debugNeedsRemount;
            switch (workInProgress2.tag) {
              case IndeterminateComponent:
              case FunctionComponent:
              case SimpleMemoComponent:
                workInProgress2.type = resolveFunctionForHotReloading(current2.type);
                break;
              case ClassComponent:
                workInProgress2.type = resolveClassForHotReloading(current2.type);
                break;
              case ForwardRef:
                workInProgress2.type = resolveForwardRefForHotReloading(current2.type);
                break;
            }
          }
          return workInProgress2;
        }
        function resetWorkInProgress(workInProgress2, renderLanes2) {
          workInProgress2.flags &= StaticMask | Placement;
          var current2 = workInProgress2.alternate;
          if (current2 === null) {
            workInProgress2.childLanes = NoLanes;
            workInProgress2.lanes = renderLanes2;
            workInProgress2.child = null;
            workInProgress2.subtreeFlags = NoFlags;
            workInProgress2.memoizedProps = null;
            workInProgress2.memoizedState = null;
            workInProgress2.updateQueue = null;
            workInProgress2.dependencies = null;
            workInProgress2.stateNode = null;
            {
              workInProgress2.selfBaseDuration = 0;
              workInProgress2.treeBaseDuration = 0;
            }
          } else {
            workInProgress2.childLanes = current2.childLanes;
            workInProgress2.lanes = current2.lanes;
            workInProgress2.child = current2.child;
            workInProgress2.subtreeFlags = NoFlags;
            workInProgress2.deletions = null;
            workInProgress2.memoizedProps = current2.memoizedProps;
            workInProgress2.memoizedState = current2.memoizedState;
            workInProgress2.updateQueue = current2.updateQueue;
            workInProgress2.type = current2.type;
            var currentDependencies = current2.dependencies;
            workInProgress2.dependencies = currentDependencies === null ? null : {
              lanes: currentDependencies.lanes,
              firstContext: currentDependencies.firstContext
            };
            {
              workInProgress2.selfBaseDuration = current2.selfBaseDuration;
              workInProgress2.treeBaseDuration = current2.treeBaseDuration;
            }
          }
          return workInProgress2;
        }
        function createHostRootFiber(tag, isStrictMode, concurrentUpdatesByDefaultOverride) {
          var mode;
          if (tag === ConcurrentRoot) {
            mode = ConcurrentMode;
            if (isStrictMode === true) {
              mode |= StrictLegacyMode;
              {
                mode |= StrictEffectsMode;
              }
            }
          } else {
            mode = NoMode;
          }
          if (isDevToolsPresent) {
            mode |= ProfileMode;
          }
          return createFiber(HostRoot, null, null, mode);
        }
        function createFiberFromTypeAndProps(type, key, pendingProps, owner, mode, lanes) {
          var fiberTag = IndeterminateComponent;
          var resolvedType = type;
          if (typeof type === "function") {
            if (shouldConstruct$1(type)) {
              fiberTag = ClassComponent;
              {
                resolvedType = resolveClassForHotReloading(resolvedType);
              }
            } else {
              {
                resolvedType = resolveFunctionForHotReloading(resolvedType);
              }
            }
          } else if (typeof type === "string") {
            fiberTag = HostComponent;
          } else {
            getTag: switch (type) {
              case REACT_FRAGMENT_TYPE:
                return createFiberFromFragment(pendingProps.children, mode, lanes, key);
              case REACT_STRICT_MODE_TYPE:
                fiberTag = Mode;
                mode |= StrictLegacyMode;
                if ((mode & ConcurrentMode) !== NoMode) {
                  mode |= StrictEffectsMode;
                }
                break;
              case REACT_PROFILER_TYPE:
                return createFiberFromProfiler(pendingProps, mode, lanes, key);
              case REACT_SUSPENSE_TYPE:
                return createFiberFromSuspense(pendingProps, mode, lanes, key);
              case REACT_SUSPENSE_LIST_TYPE:
                return createFiberFromSuspenseList(pendingProps, mode, lanes, key);
              case REACT_OFFSCREEN_TYPE:
                return createFiberFromOffscreen(pendingProps, mode, lanes, key);
              case REACT_LEGACY_HIDDEN_TYPE:
              // eslint-disable-next-line no-fallthrough
              case REACT_SCOPE_TYPE:
              // eslint-disable-next-line no-fallthrough
              case REACT_CACHE_TYPE:
              // eslint-disable-next-line no-fallthrough
              case REACT_TRACING_MARKER_TYPE:
              // eslint-disable-next-line no-fallthrough
              case REACT_DEBUG_TRACING_MODE_TYPE:
              // eslint-disable-next-line no-fallthrough
              default: {
                if (typeof type === "object" && type !== null) {
                  switch (type.$$typeof) {
                    case REACT_PROVIDER_TYPE:
                      fiberTag = ContextProvider;
                      break getTag;
                    case REACT_CONTEXT_TYPE:
                      fiberTag = ContextConsumer;
                      break getTag;
                    case REACT_FORWARD_REF_TYPE:
                      fiberTag = ForwardRef;
                      {
                        resolvedType = resolveForwardRefForHotReloading(resolvedType);
                      }
                      break getTag;
                    case REACT_MEMO_TYPE:
                      fiberTag = MemoComponent;
                      break getTag;
                    case REACT_LAZY_TYPE:
                      fiberTag = LazyComponent;
                      resolvedType = null;
                      break getTag;
                  }
                }
                var info = "";
                {
                  if (type === void 0 || typeof type === "object" && type !== null && Object.keys(type).length === 0) {
                    info += " You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.";
                  }
                  var ownerName = owner ? getComponentNameFromFiber(owner) : null;
                  if (ownerName) {
                    info += "\n\nCheck the render method of `" + ownerName + "`.";
                  }
                }
                throw new Error("Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) " + ("but got: " + (type == null ? type : typeof type) + "." + info));
              }
            }
          }
          var fiber = createFiber(fiberTag, pendingProps, key, mode);
          fiber.elementType = type;
          fiber.type = resolvedType;
          fiber.lanes = lanes;
          {
            fiber._debugOwner = owner;
          }
          return fiber;
        }
        function createFiberFromElement(element, mode, lanes) {
          var owner = null;
          {
            owner = element._owner;
          }
          var type = element.type;
          var key = element.key;
          var pendingProps = element.props;
          var fiber = createFiberFromTypeAndProps(type, key, pendingProps, owner, mode, lanes);
          {
            fiber._debugSource = element._source;
            fiber._debugOwner = element._owner;
          }
          return fiber;
        }
        function createFiberFromFragment(elements, mode, lanes, key) {
          var fiber = createFiber(Fragment2, elements, key, mode);
          fiber.lanes = lanes;
          return fiber;
        }
        function createFiberFromProfiler(pendingProps, mode, lanes, key) {
          {
            if (typeof pendingProps.id !== "string") {
              error('Profiler must specify an "id" of type `string` as a prop. Received the type `%s` instead.', typeof pendingProps.id);
            }
          }
          var fiber = createFiber(Profiler, pendingProps, key, mode | ProfileMode);
          fiber.elementType = REACT_PROFILER_TYPE;
          fiber.lanes = lanes;
          {
            fiber.stateNode = {
              effectDuration: 0,
              passiveEffectDuration: 0
            };
          }
          return fiber;
        }
        function createFiberFromSuspense(pendingProps, mode, lanes, key) {
          var fiber = createFiber(SuspenseComponent, pendingProps, key, mode);
          fiber.elementType = REACT_SUSPENSE_TYPE;
          fiber.lanes = lanes;
          return fiber;
        }
        function createFiberFromSuspenseList(pendingProps, mode, lanes, key) {
          var fiber = createFiber(SuspenseListComponent, pendingProps, key, mode);
          fiber.elementType = REACT_SUSPENSE_LIST_TYPE;
          fiber.lanes = lanes;
          return fiber;
        }
        function createFiberFromOffscreen(pendingProps, mode, lanes, key) {
          var fiber = createFiber(OffscreenComponent, pendingProps, key, mode);
          fiber.elementType = REACT_OFFSCREEN_TYPE;
          fiber.lanes = lanes;
          var primaryChildInstance = {
            isHidden: false
          };
          fiber.stateNode = primaryChildInstance;
          return fiber;
        }
        function createFiberFromText(content, mode, lanes) {
          var fiber = createFiber(HostText, content, null, mode);
          fiber.lanes = lanes;
          return fiber;
        }
        function createFiberFromHostInstanceForDeletion() {
          var fiber = createFiber(HostComponent, null, null, NoMode);
          fiber.elementType = "DELETED";
          return fiber;
        }
        function createFiberFromDehydratedFragment(dehydratedNode) {
          var fiber = createFiber(DehydratedFragment, null, null, NoMode);
          fiber.stateNode = dehydratedNode;
          return fiber;
        }
        function createFiberFromPortal(portal, mode, lanes) {
          var pendingProps = portal.children !== null ? portal.children : [];
          var fiber = createFiber(HostPortal, pendingProps, portal.key, mode);
          fiber.lanes = lanes;
          fiber.stateNode = {
            containerInfo: portal.containerInfo,
            pendingChildren: null,
            // Used by persistent updates
            implementation: portal.implementation
          };
          return fiber;
        }
        function assignFiberPropertiesInDEV(target, source) {
          if (target === null) {
            target = createFiber(IndeterminateComponent, null, null, NoMode);
          }
          target.tag = source.tag;
          target.key = source.key;
          target.elementType = source.elementType;
          target.type = source.type;
          target.stateNode = source.stateNode;
          target.return = source.return;
          target.child = source.child;
          target.sibling = source.sibling;
          target.index = source.index;
          target.ref = source.ref;
          target.pendingProps = source.pendingProps;
          target.memoizedProps = source.memoizedProps;
          target.updateQueue = source.updateQueue;
          target.memoizedState = source.memoizedState;
          target.dependencies = source.dependencies;
          target.mode = source.mode;
          target.flags = source.flags;
          target.subtreeFlags = source.subtreeFlags;
          target.deletions = source.deletions;
          target.lanes = source.lanes;
          target.childLanes = source.childLanes;
          target.alternate = source.alternate;
          {
            target.actualDuration = source.actualDuration;
            target.actualStartTime = source.actualStartTime;
            target.selfBaseDuration = source.selfBaseDuration;
            target.treeBaseDuration = source.treeBaseDuration;
          }
          target._debugSource = source._debugSource;
          target._debugOwner = source._debugOwner;
          target._debugNeedsRemount = source._debugNeedsRemount;
          target._debugHookTypes = source._debugHookTypes;
          return target;
        }
        function FiberRootNode(containerInfo, tag, hydrate2, identifierPrefix, onRecoverableError) {
          this.tag = tag;
          this.containerInfo = containerInfo;
          this.pendingChildren = null;
          this.current = null;
          this.pingCache = null;
          this.finishedWork = null;
          this.timeoutHandle = noTimeout;
          this.context = null;
          this.pendingContext = null;
          this.callbackNode = null;
          this.callbackPriority = NoLane;
          this.eventTimes = createLaneMap(NoLanes);
          this.expirationTimes = createLaneMap(NoTimestamp);
          this.pendingLanes = NoLanes;
          this.suspendedLanes = NoLanes;
          this.pingedLanes = NoLanes;
          this.expiredLanes = NoLanes;
          this.mutableReadLanes = NoLanes;
          this.finishedLanes = NoLanes;
          this.entangledLanes = NoLanes;
          this.entanglements = createLaneMap(NoLanes);
          this.identifierPrefix = identifierPrefix;
          this.onRecoverableError = onRecoverableError;
          {
            this.mutableSourceEagerHydrationData = null;
          }
          {
            this.effectDuration = 0;
            this.passiveEffectDuration = 0;
          }
          {
            this.memoizedUpdaters = /* @__PURE__ */ new Set();
            var pendingUpdatersLaneMap = this.pendingUpdatersLaneMap = [];
            for (var _i = 0; _i < TotalLanes; _i++) {
              pendingUpdatersLaneMap.push(/* @__PURE__ */ new Set());
            }
          }
          {
            switch (tag) {
              case ConcurrentRoot:
                this._debugRootType = hydrate2 ? "hydrateRoot()" : "createRoot()";
                break;
              case LegacyRoot:
                this._debugRootType = hydrate2 ? "hydrate()" : "render()";
                break;
            }
          }
        }
        function createFiberRoot(containerInfo, tag, hydrate2, initialChildren, hydrationCallbacks, isStrictMode, concurrentUpdatesByDefaultOverride, identifierPrefix, onRecoverableError, transitionCallbacks) {
          var root2 = new FiberRootNode(containerInfo, tag, hydrate2, identifierPrefix, onRecoverableError);
          var uninitializedFiber = createHostRootFiber(tag, isStrictMode);
          root2.current = uninitializedFiber;
          uninitializedFiber.stateNode = root2;
          {
            var _initialState = {
              element: initialChildren,
              isDehydrated: hydrate2,
              cache: null,
              // not enabled yet
              transitions: null,
              pendingSuspenseBoundaries: null
            };
            uninitializedFiber.memoizedState = _initialState;
          }
          initializeUpdateQueue(uninitializedFiber);
          return root2;
        }
        var ReactVersion = "18.3.1";
        function createPortal(children, containerInfo, implementation) {
          var key = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : null;
          {
            checkKeyStringCoercion(key);
          }
          return {
            // This tag allow us to uniquely identify this as a React Portal
            $$typeof: REACT_PORTAL_TYPE,
            key: key == null ? null : "" + key,
            children,
            containerInfo,
            implementation
          };
        }
        var didWarnAboutNestedUpdates;
        var didWarnAboutFindNodeInStrictMode;
        {
          didWarnAboutNestedUpdates = false;
          didWarnAboutFindNodeInStrictMode = {};
        }
        function getContextForSubtree(parentComponent) {
          if (!parentComponent) {
            return emptyContextObject;
          }
          var fiber = get(parentComponent);
          var parentContext = findCurrentUnmaskedContext(fiber);
          if (fiber.tag === ClassComponent) {
            var Component = fiber.type;
            if (isContextProvider(Component)) {
              return processChildContext(fiber, Component, parentContext);
            }
          }
          return parentContext;
        }
        function findHostInstanceWithWarning(component, methodName) {
          {
            var fiber = get(component);
            if (fiber === void 0) {
              if (typeof component.render === "function") {
                throw new Error("Unable to find node on an unmounted component.");
              } else {
                var keys = Object.keys(component).join(",");
                throw new Error("Argument appears to not be a ReactComponent. Keys: " + keys);
              }
            }
            var hostFiber = findCurrentHostFiber(fiber);
            if (hostFiber === null) {
              return null;
            }
            if (hostFiber.mode & StrictLegacyMode) {
              var componentName = getComponentNameFromFiber(fiber) || "Component";
              if (!didWarnAboutFindNodeInStrictMode[componentName]) {
                didWarnAboutFindNodeInStrictMode[componentName] = true;
                var previousFiber = current;
                try {
                  setCurrentFiber(hostFiber);
                  if (fiber.mode & StrictLegacyMode) {
                    error("%s is deprecated in StrictMode. %s was passed an instance of %s which is inside StrictMode. Instead, add a ref directly to the element you want to reference. Learn more about using refs safely here: https://reactjs.org/link/strict-mode-find-node", methodName, methodName, componentName);
                  } else {
                    error("%s is deprecated in StrictMode. %s was passed an instance of %s which renders StrictMode children. Instead, add a ref directly to the element you want to reference. Learn more about using refs safely here: https://reactjs.org/link/strict-mode-find-node", methodName, methodName, componentName);
                  }
                } finally {
                  if (previousFiber) {
                    setCurrentFiber(previousFiber);
                  } else {
                    resetCurrentFiber();
                  }
                }
              }
            }
            return hostFiber.stateNode;
          }
        }
        function createContainer(containerInfo, tag, hydrationCallbacks, isStrictMode, concurrentUpdatesByDefaultOverride, identifierPrefix, onRecoverableError, transitionCallbacks) {
          var hydrate2 = false;
          var initialChildren = null;
          return createFiberRoot(containerInfo, tag, hydrate2, initialChildren, hydrationCallbacks, isStrictMode, concurrentUpdatesByDefaultOverride, identifierPrefix, onRecoverableError);
        }
        function createHydrationContainer(initialChildren, callback, containerInfo, tag, hydrationCallbacks, isStrictMode, concurrentUpdatesByDefaultOverride, identifierPrefix, onRecoverableError, transitionCallbacks) {
          var hydrate2 = true;
          var root2 = createFiberRoot(containerInfo, tag, hydrate2, initialChildren, hydrationCallbacks, isStrictMode, concurrentUpdatesByDefaultOverride, identifierPrefix, onRecoverableError);
          root2.context = getContextForSubtree(null);
          var current2 = root2.current;
          var eventTime = requestEventTime();
          var lane = requestUpdateLane(current2);
          var update = createUpdate(eventTime, lane);
          update.callback = callback !== void 0 && callback !== null ? callback : null;
          enqueueUpdate(current2, update, lane);
          scheduleInitialHydrationOnRoot(root2, lane, eventTime);
          return root2;
        }
        function updateContainer(element, container, parentComponent, callback) {
          {
            onScheduleRoot(container, element);
          }
          var current$1 = container.current;
          var eventTime = requestEventTime();
          var lane = requestUpdateLane(current$1);
          {
            markRenderScheduled(lane);
          }
          var context = getContextForSubtree(parentComponent);
          if (container.context === null) {
            container.context = context;
          } else {
            container.pendingContext = context;
          }
          {
            if (isRendering && current !== null && !didWarnAboutNestedUpdates) {
              didWarnAboutNestedUpdates = true;
              error("Render methods should be a pure function of props and state; triggering nested component updates from render is not allowed. If necessary, trigger nested updates in componentDidUpdate.\n\nCheck the render method of %s.", getComponentNameFromFiber(current) || "Unknown");
            }
          }
          var update = createUpdate(eventTime, lane);
          update.payload = {
            element
          };
          callback = callback === void 0 ? null : callback;
          if (callback !== null) {
            {
              if (typeof callback !== "function") {
                error("render(...): Expected the last optional `callback` argument to be a function. Instead received: %s.", callback);
              }
            }
            update.callback = callback;
          }
          var root2 = enqueueUpdate(current$1, update, lane);
          if (root2 !== null) {
            scheduleUpdateOnFiber(root2, current$1, lane, eventTime);
            entangleTransitions(root2, current$1, lane);
          }
          return lane;
        }
        function getPublicRootInstance(container) {
          var containerFiber = container.current;
          if (!containerFiber.child) {
            return null;
          }
          switch (containerFiber.child.tag) {
            case HostComponent:
              return getPublicInstance(containerFiber.child.stateNode);
            default:
              return containerFiber.child.stateNode;
          }
        }
        function attemptSynchronousHydration$1(fiber) {
          switch (fiber.tag) {
            case HostRoot: {
              var root2 = fiber.stateNode;
              if (isRootDehydrated(root2)) {
                var lanes = getHighestPriorityPendingLanes(root2);
                flushRoot(root2, lanes);
              }
              break;
            }
            case SuspenseComponent: {
              flushSync(function() {
                var root3 = enqueueConcurrentRenderForLane(fiber, SyncLane);
                if (root3 !== null) {
                  var eventTime = requestEventTime();
                  scheduleUpdateOnFiber(root3, fiber, SyncLane, eventTime);
                }
              });
              var retryLane = SyncLane;
              markRetryLaneIfNotHydrated(fiber, retryLane);
              break;
            }
          }
        }
        function markRetryLaneImpl(fiber, retryLane) {
          var suspenseState = fiber.memoizedState;
          if (suspenseState !== null && suspenseState.dehydrated !== null) {
            suspenseState.retryLane = higherPriorityLane(suspenseState.retryLane, retryLane);
          }
        }
        function markRetryLaneIfNotHydrated(fiber, retryLane) {
          markRetryLaneImpl(fiber, retryLane);
          var alternate = fiber.alternate;
          if (alternate) {
            markRetryLaneImpl(alternate, retryLane);
          }
        }
        function attemptContinuousHydration$1(fiber) {
          if (fiber.tag !== SuspenseComponent) {
            return;
          }
          var lane = SelectiveHydrationLane;
          var root2 = enqueueConcurrentRenderForLane(fiber, lane);
          if (root2 !== null) {
            var eventTime = requestEventTime();
            scheduleUpdateOnFiber(root2, fiber, lane, eventTime);
          }
          markRetryLaneIfNotHydrated(fiber, lane);
        }
        function attemptHydrationAtCurrentPriority$1(fiber) {
          if (fiber.tag !== SuspenseComponent) {
            return;
          }
          var lane = requestUpdateLane(fiber);
          var root2 = enqueueConcurrentRenderForLane(fiber, lane);
          if (root2 !== null) {
            var eventTime = requestEventTime();
            scheduleUpdateOnFiber(root2, fiber, lane, eventTime);
          }
          markRetryLaneIfNotHydrated(fiber, lane);
        }
        function findHostInstanceWithNoPortals(fiber) {
          var hostFiber = findCurrentHostFiberWithNoPortals(fiber);
          if (hostFiber === null) {
            return null;
          }
          return hostFiber.stateNode;
        }
        var shouldErrorImpl = function(fiber) {
          return null;
        };
        function shouldError(fiber) {
          return shouldErrorImpl(fiber);
        }
        var shouldSuspendImpl = function(fiber) {
          return false;
        };
        function shouldSuspend(fiber) {
          return shouldSuspendImpl(fiber);
        }
        var overrideHookState = null;
        var overrideHookStateDeletePath = null;
        var overrideHookStateRenamePath = null;
        var overrideProps = null;
        var overridePropsDeletePath = null;
        var overridePropsRenamePath = null;
        var scheduleUpdate = null;
        var setErrorHandler = null;
        var setSuspenseHandler = null;
        {
          var copyWithDeleteImpl = function(obj, path, index2) {
            var key = path[index2];
            var updated = isArray(obj) ? obj.slice() : assign({}, obj);
            if (index2 + 1 === path.length) {
              if (isArray(updated)) {
                updated.splice(key, 1);
              } else {
                delete updated[key];
              }
              return updated;
            }
            updated[key] = copyWithDeleteImpl(obj[key], path, index2 + 1);
            return updated;
          };
          var copyWithDelete = function(obj, path) {
            return copyWithDeleteImpl(obj, path, 0);
          };
          var copyWithRenameImpl = function(obj, oldPath, newPath, index2) {
            var oldKey = oldPath[index2];
            var updated = isArray(obj) ? obj.slice() : assign({}, obj);
            if (index2 + 1 === oldPath.length) {
              var newKey = newPath[index2];
              updated[newKey] = updated[oldKey];
              if (isArray(updated)) {
                updated.splice(oldKey, 1);
              } else {
                delete updated[oldKey];
              }
            } else {
              updated[oldKey] = copyWithRenameImpl(
                // $FlowFixMe number or string is fine here
                obj[oldKey],
                oldPath,
                newPath,
                index2 + 1
              );
            }
            return updated;
          };
          var copyWithRename = function(obj, oldPath, newPath) {
            if (oldPath.length !== newPath.length) {
              warn("copyWithRename() expects paths of the same length");
              return;
            } else {
              for (var i = 0; i < newPath.length - 1; i++) {
                if (oldPath[i] !== newPath[i]) {
                  warn("copyWithRename() expects paths to be the same except for the deepest key");
                  return;
                }
              }
            }
            return copyWithRenameImpl(obj, oldPath, newPath, 0);
          };
          var copyWithSetImpl = function(obj, path, index2, value) {
            if (index2 >= path.length) {
              return value;
            }
            var key = path[index2];
            var updated = isArray(obj) ? obj.slice() : assign({}, obj);
            updated[key] = copyWithSetImpl(obj[key], path, index2 + 1, value);
            return updated;
          };
          var copyWithSet = function(obj, path, value) {
            return copyWithSetImpl(obj, path, 0, value);
          };
          var findHook = function(fiber, id) {
            var currentHook2 = fiber.memoizedState;
            while (currentHook2 !== null && id > 0) {
              currentHook2 = currentHook2.next;
              id--;
            }
            return currentHook2;
          };
          overrideHookState = function(fiber, id, path, value) {
            var hook = findHook(fiber, id);
            if (hook !== null) {
              var newState = copyWithSet(hook.memoizedState, path, value);
              hook.memoizedState = newState;
              hook.baseState = newState;
              fiber.memoizedProps = assign({}, fiber.memoizedProps);
              var root2 = enqueueConcurrentRenderForLane(fiber, SyncLane);
              if (root2 !== null) {
                scheduleUpdateOnFiber(root2, fiber, SyncLane, NoTimestamp);
              }
            }
          };
          overrideHookStateDeletePath = function(fiber, id, path) {
            var hook = findHook(fiber, id);
            if (hook !== null) {
              var newState = copyWithDelete(hook.memoizedState, path);
              hook.memoizedState = newState;
              hook.baseState = newState;
              fiber.memoizedProps = assign({}, fiber.memoizedProps);
              var root2 = enqueueConcurrentRenderForLane(fiber, SyncLane);
              if (root2 !== null) {
                scheduleUpdateOnFiber(root2, fiber, SyncLane, NoTimestamp);
              }
            }
          };
          overrideHookStateRenamePath = function(fiber, id, oldPath, newPath) {
            var hook = findHook(fiber, id);
            if (hook !== null) {
              var newState = copyWithRename(hook.memoizedState, oldPath, newPath);
              hook.memoizedState = newState;
              hook.baseState = newState;
              fiber.memoizedProps = assign({}, fiber.memoizedProps);
              var root2 = enqueueConcurrentRenderForLane(fiber, SyncLane);
              if (root2 !== null) {
                scheduleUpdateOnFiber(root2, fiber, SyncLane, NoTimestamp);
              }
            }
          };
          overrideProps = function(fiber, path, value) {
            fiber.pendingProps = copyWithSet(fiber.memoizedProps, path, value);
            if (fiber.alternate) {
              fiber.alternate.pendingProps = fiber.pendingProps;
            }
            var root2 = enqueueConcurrentRenderForLane(fiber, SyncLane);
            if (root2 !== null) {
              scheduleUpdateOnFiber(root2, fiber, SyncLane, NoTimestamp);
            }
          };
          overridePropsDeletePath = function(fiber, path) {
            fiber.pendingProps = copyWithDelete(fiber.memoizedProps, path);
            if (fiber.alternate) {
              fiber.alternate.pendingProps = fiber.pendingProps;
            }
            var root2 = enqueueConcurrentRenderForLane(fiber, SyncLane);
            if (root2 !== null) {
              scheduleUpdateOnFiber(root2, fiber, SyncLane, NoTimestamp);
            }
          };
          overridePropsRenamePath = function(fiber, oldPath, newPath) {
            fiber.pendingProps = copyWithRename(fiber.memoizedProps, oldPath, newPath);
            if (fiber.alternate) {
              fiber.alternate.pendingProps = fiber.pendingProps;
            }
            var root2 = enqueueConcurrentRenderForLane(fiber, SyncLane);
            if (root2 !== null) {
              scheduleUpdateOnFiber(root2, fiber, SyncLane, NoTimestamp);
            }
          };
          scheduleUpdate = function(fiber) {
            var root2 = enqueueConcurrentRenderForLane(fiber, SyncLane);
            if (root2 !== null) {
              scheduleUpdateOnFiber(root2, fiber, SyncLane, NoTimestamp);
            }
          };
          setErrorHandler = function(newShouldErrorImpl) {
            shouldErrorImpl = newShouldErrorImpl;
          };
          setSuspenseHandler = function(newShouldSuspendImpl) {
            shouldSuspendImpl = newShouldSuspendImpl;
          };
        }
        function findHostInstanceByFiber(fiber) {
          var hostFiber = findCurrentHostFiber(fiber);
          if (hostFiber === null) {
            return null;
          }
          return hostFiber.stateNode;
        }
        function emptyFindFiberByHostInstance(instance) {
          return null;
        }
        function getCurrentFiberForDevTools() {
          return current;
        }
        function injectIntoDevTools(devToolsConfig) {
          var findFiberByHostInstance = devToolsConfig.findFiberByHostInstance;
          var ReactCurrentDispatcher2 = ReactSharedInternals.ReactCurrentDispatcher;
          return injectInternals({
            bundleType: devToolsConfig.bundleType,
            version: devToolsConfig.version,
            rendererPackageName: devToolsConfig.rendererPackageName,
            rendererConfig: devToolsConfig.rendererConfig,
            overrideHookState,
            overrideHookStateDeletePath,
            overrideHookStateRenamePath,
            overrideProps,
            overridePropsDeletePath,
            overridePropsRenamePath,
            setErrorHandler,
            setSuspenseHandler,
            scheduleUpdate,
            currentDispatcherRef: ReactCurrentDispatcher2,
            findHostInstanceByFiber,
            findFiberByHostInstance: findFiberByHostInstance || emptyFindFiberByHostInstance,
            // React Refresh
            findHostInstancesForRefresh,
            scheduleRefresh,
            scheduleRoot,
            setRefreshHandler,
            // Enables DevTools to append owner stacks to error messages in DEV mode.
            getCurrentFiber: getCurrentFiberForDevTools,
            // Enables DevTools to detect reconciler version rather than renderer version
            // which may not match for third party renderers.
            reconcilerVersion: ReactVersion
          });
        }
        var defaultOnRecoverableError = typeof reportError === "function" ? (
          // In modern browsers, reportError will dispatch an error event,
          // emulating an uncaught JavaScript error.
          reportError
        ) : function(error2) {
          console["error"](error2);
        };
        function ReactDOMRoot(internalRoot) {
          this._internalRoot = internalRoot;
        }
        ReactDOMHydrationRoot.prototype.render = ReactDOMRoot.prototype.render = function(children) {
          var root2 = this._internalRoot;
          if (root2 === null) {
            throw new Error("Cannot update an unmounted root.");
          }
          {
            if (typeof arguments[1] === "function") {
              error("render(...): does not support the second callback argument. To execute a side effect after rendering, declare it in a component body with useEffect().");
            } else if (isValidContainer(arguments[1])) {
              error("You passed a container to the second argument of root.render(...). You don't need to pass it again since you already passed it to create the root.");
            } else if (typeof arguments[1] !== "undefined") {
              error("You passed a second argument to root.render(...) but it only accepts one argument.");
            }
            var container = root2.containerInfo;
            if (container.nodeType !== COMMENT_NODE) {
              var hostInstance = findHostInstanceWithNoPortals(root2.current);
              if (hostInstance) {
                if (hostInstance.parentNode !== container) {
                  error("render(...): It looks like the React-rendered content of the root container was removed without using React. This is not supported and will cause errors. Instead, call root.unmount() to empty a root's container.");
                }
              }
            }
          }
          updateContainer(children, root2, null, null);
        };
        ReactDOMHydrationRoot.prototype.unmount = ReactDOMRoot.prototype.unmount = function() {
          {
            if (typeof arguments[0] === "function") {
              error("unmount(...): does not support a callback argument. To execute a side effect after rendering, declare it in a component body with useEffect().");
            }
          }
          var root2 = this._internalRoot;
          if (root2 !== null) {
            this._internalRoot = null;
            var container = root2.containerInfo;
            {
              if (isAlreadyRendering()) {
                error("Attempted to synchronously unmount a root while React was already rendering. React cannot finish unmounting the root until the current render has completed, which may lead to a race condition.");
              }
            }
            flushSync(function() {
              updateContainer(null, root2, null, null);
            });
            unmarkContainerAsRoot(container);
          }
        };
        function createRoot2(container, options2) {
          if (!isValidContainer(container)) {
            throw new Error("createRoot(...): Target container is not a DOM element.");
          }
          warnIfReactDOMContainerInDEV(container);
          var isStrictMode = false;
          var concurrentUpdatesByDefaultOverride = false;
          var identifierPrefix = "";
          var onRecoverableError = defaultOnRecoverableError;
          var transitionCallbacks = null;
          if (options2 !== null && options2 !== void 0) {
            {
              if (options2.hydrate) {
                warn("hydrate through createRoot is deprecated. Use ReactDOMClient.hydrateRoot(container, <App />) instead.");
              } else {
                if (typeof options2 === "object" && options2 !== null && options2.$$typeof === REACT_ELEMENT_TYPE) {
                  error("You passed a JSX element to createRoot. You probably meant to call root.render instead. Example usage:\n\n  let root = createRoot(domContainer);\n  root.render(<App />);");
                }
              }
            }
            if (options2.unstable_strictMode === true) {
              isStrictMode = true;
            }
            if (options2.identifierPrefix !== void 0) {
              identifierPrefix = options2.identifierPrefix;
            }
            if (options2.onRecoverableError !== void 0) {
              onRecoverableError = options2.onRecoverableError;
            }
            if (options2.transitionCallbacks !== void 0) {
              transitionCallbacks = options2.transitionCallbacks;
            }
          }
          var root2 = createContainer(container, ConcurrentRoot, null, isStrictMode, concurrentUpdatesByDefaultOverride, identifierPrefix, onRecoverableError);
          markContainerAsRoot(root2.current, container);
          var rootContainerElement = container.nodeType === COMMENT_NODE ? container.parentNode : container;
          listenToAllSupportedEvents(rootContainerElement);
          return new ReactDOMRoot(root2);
        }
        function ReactDOMHydrationRoot(internalRoot) {
          this._internalRoot = internalRoot;
        }
        function scheduleHydration(target) {
          if (target) {
            queueExplicitHydrationTarget(target);
          }
        }
        ReactDOMHydrationRoot.prototype.unstable_scheduleHydration = scheduleHydration;
        function hydrateRoot(container, initialChildren, options2) {
          if (!isValidContainer(container)) {
            throw new Error("hydrateRoot(...): Target container is not a DOM element.");
          }
          warnIfReactDOMContainerInDEV(container);
          {
            if (initialChildren === void 0) {
              error("Must provide initial children as second argument to hydrateRoot. Example usage: hydrateRoot(domContainer, <App />)");
            }
          }
          var hydrationCallbacks = options2 != null ? options2 : null;
          var mutableSources = options2 != null && options2.hydratedSources || null;
          var isStrictMode = false;
          var concurrentUpdatesByDefaultOverride = false;
          var identifierPrefix = "";
          var onRecoverableError = defaultOnRecoverableError;
          if (options2 !== null && options2 !== void 0) {
            if (options2.unstable_strictMode === true) {
              isStrictMode = true;
            }
            if (options2.identifierPrefix !== void 0) {
              identifierPrefix = options2.identifierPrefix;
            }
            if (options2.onRecoverableError !== void 0) {
              onRecoverableError = options2.onRecoverableError;
            }
          }
          var root2 = createHydrationContainer(initialChildren, null, container, ConcurrentRoot, hydrationCallbacks, isStrictMode, concurrentUpdatesByDefaultOverride, identifierPrefix, onRecoverableError);
          markContainerAsRoot(root2.current, container);
          listenToAllSupportedEvents(container);
          if (mutableSources) {
            for (var i = 0; i < mutableSources.length; i++) {
              var mutableSource = mutableSources[i];
              registerMutableSourceForHydration(root2, mutableSource);
            }
          }
          return new ReactDOMHydrationRoot(root2);
        }
        function isValidContainer(node) {
          return !!(node && (node.nodeType === ELEMENT_NODE || node.nodeType === DOCUMENT_NODE || node.nodeType === DOCUMENT_FRAGMENT_NODE || !disableCommentsAsDOMContainers));
        }
        function isValidContainerLegacy(node) {
          return !!(node && (node.nodeType === ELEMENT_NODE || node.nodeType === DOCUMENT_NODE || node.nodeType === DOCUMENT_FRAGMENT_NODE || node.nodeType === COMMENT_NODE && node.nodeValue === " react-mount-point-unstable "));
        }
        function warnIfReactDOMContainerInDEV(container) {
          {
            if (container.nodeType === ELEMENT_NODE && container.tagName && container.tagName.toUpperCase() === "BODY") {
              error("createRoot(): Creating roots directly with document.body is discouraged, since its children are often manipulated by third-party scripts and browser extensions. This may lead to subtle reconciliation issues. Try using a container element created for your app.");
            }
            if (isContainerMarkedAsRoot(container)) {
              if (container._reactRootContainer) {
                error("You are calling ReactDOMClient.createRoot() on a container that was previously passed to ReactDOM.render(). This is not supported.");
              } else {
                error("You are calling ReactDOMClient.createRoot() on a container that has already been passed to createRoot() before. Instead, call root.render() on the existing root instead if you want to update it.");
              }
            }
          }
        }
        var ReactCurrentOwner$3 = ReactSharedInternals.ReactCurrentOwner;
        var topLevelUpdateWarnings;
        {
          topLevelUpdateWarnings = function(container) {
            if (container._reactRootContainer && container.nodeType !== COMMENT_NODE) {
              var hostInstance = findHostInstanceWithNoPortals(container._reactRootContainer.current);
              if (hostInstance) {
                if (hostInstance.parentNode !== container) {
                  error("render(...): It looks like the React-rendered content of this container was removed without using React. This is not supported and will cause errors. Instead, call ReactDOM.unmountComponentAtNode to empty a container.");
                }
              }
            }
            var isRootRenderedBySomeReact = !!container._reactRootContainer;
            var rootEl = getReactRootElementInContainer(container);
            var hasNonRootReactChild = !!(rootEl && getInstanceFromNode(rootEl));
            if (hasNonRootReactChild && !isRootRenderedBySomeReact) {
              error("render(...): Replacing React-rendered children with a new root component. If you intended to update the children of this node, you should instead have the existing children update their state and render the new components instead of calling ReactDOM.render.");
            }
            if (container.nodeType === ELEMENT_NODE && container.tagName && container.tagName.toUpperCase() === "BODY") {
              error("render(): Rendering components directly into document.body is discouraged, since its children are often manipulated by third-party scripts and browser extensions. This may lead to subtle reconciliation issues. Try rendering into a container element created for your app.");
            }
          };
        }
        function getReactRootElementInContainer(container) {
          if (!container) {
            return null;
          }
          if (container.nodeType === DOCUMENT_NODE) {
            return container.documentElement;
          } else {
            return container.firstChild;
          }
        }
        function noopOnRecoverableError() {
        }
        function legacyCreateRootFromDOMContainer(container, initialChildren, parentComponent, callback, isHydrationContainer) {
          if (isHydrationContainer) {
            if (typeof callback === "function") {
              var originalCallback = callback;
              callback = function() {
                var instance = getPublicRootInstance(root2);
                originalCallback.call(instance);
              };
            }
            var root2 = createHydrationContainer(
              initialChildren,
              callback,
              container,
              LegacyRoot,
              null,
              // hydrationCallbacks
              false,
              // isStrictMode
              false,
              // concurrentUpdatesByDefaultOverride,
              "",
              // identifierPrefix
              noopOnRecoverableError
            );
            container._reactRootContainer = root2;
            markContainerAsRoot(root2.current, container);
            var rootContainerElement = container.nodeType === COMMENT_NODE ? container.parentNode : container;
            listenToAllSupportedEvents(rootContainerElement);
            flushSync();
            return root2;
          } else {
            var rootSibling;
            while (rootSibling = container.lastChild) {
              container.removeChild(rootSibling);
            }
            if (typeof callback === "function") {
              var _originalCallback = callback;
              callback = function() {
                var instance = getPublicRootInstance(_root);
                _originalCallback.call(instance);
              };
            }
            var _root = createContainer(
              container,
              LegacyRoot,
              null,
              // hydrationCallbacks
              false,
              // isStrictMode
              false,
              // concurrentUpdatesByDefaultOverride,
              "",
              // identifierPrefix
              noopOnRecoverableError
            );
            container._reactRootContainer = _root;
            markContainerAsRoot(_root.current, container);
            var _rootContainerElement = container.nodeType === COMMENT_NODE ? container.parentNode : container;
            listenToAllSupportedEvents(_rootContainerElement);
            flushSync(function() {
              updateContainer(initialChildren, _root, parentComponent, callback);
            });
            return _root;
          }
        }
        function warnOnInvalidCallback$1(callback, callerName) {
          {
            if (callback !== null && typeof callback !== "function") {
              error("%s(...): Expected the last optional `callback` argument to be a function. Instead received: %s.", callerName, callback);
            }
          }
        }
        function legacyRenderSubtreeIntoContainer(parentComponent, children, container, forceHydrate, callback) {
          {
            topLevelUpdateWarnings(container);
            warnOnInvalidCallback$1(callback === void 0 ? null : callback, "render");
          }
          var maybeRoot = container._reactRootContainer;
          var root2;
          if (!maybeRoot) {
            root2 = legacyCreateRootFromDOMContainer(container, children, parentComponent, callback, forceHydrate);
          } else {
            root2 = maybeRoot;
            if (typeof callback === "function") {
              var originalCallback = callback;
              callback = function() {
                var instance = getPublicRootInstance(root2);
                originalCallback.call(instance);
              };
            }
            updateContainer(children, root2, parentComponent, callback);
          }
          return getPublicRootInstance(root2);
        }
        var didWarnAboutFindDOMNode = false;
        function findDOMNode(componentOrElement) {
          {
            if (!didWarnAboutFindDOMNode) {
              didWarnAboutFindDOMNode = true;
              error("findDOMNode is deprecated and will be removed in the next major release. Instead, add a ref directly to the element you want to reference. Learn more about using refs safely here: https://reactjs.org/link/strict-mode-find-node");
            }
            var owner = ReactCurrentOwner$3.current;
            if (owner !== null && owner.stateNode !== null) {
              var warnedAboutRefsInRender = owner.stateNode._warnedAboutRefsInRender;
              if (!warnedAboutRefsInRender) {
                error("%s is accessing findDOMNode inside its render(). render() should be a pure function of props and state. It should never access something that requires stale data from the previous render, such as refs. Move this logic to componentDidMount and componentDidUpdate instead.", getComponentNameFromType(owner.type) || "A component");
              }
              owner.stateNode._warnedAboutRefsInRender = true;
            }
          }
          if (componentOrElement == null) {
            return null;
          }
          if (componentOrElement.nodeType === ELEMENT_NODE) {
            return componentOrElement;
          }
          {
            return findHostInstanceWithWarning(componentOrElement, "findDOMNode");
          }
        }
        function hydrate(element, container, callback) {
          {
            error("ReactDOM.hydrate is no longer supported in React 18. Use hydrateRoot instead. Until you switch to the new API, your app will behave as if it's running React 17. Learn more: https://reactjs.org/link/switch-to-createroot");
          }
          if (!isValidContainerLegacy(container)) {
            throw new Error("Target container is not a DOM element.");
          }
          {
            var isModernRoot = isContainerMarkedAsRoot(container) && container._reactRootContainer === void 0;
            if (isModernRoot) {
              error("You are calling ReactDOM.hydrate() on a container that was previously passed to ReactDOMClient.createRoot(). This is not supported. Did you mean to call hydrateRoot(container, element)?");
            }
          }
          return legacyRenderSubtreeIntoContainer(null, element, container, true, callback);
        }
        function render(element, container, callback) {
          {
            error("ReactDOM.render is no longer supported in React 18. Use createRoot instead. Until you switch to the new API, your app will behave as if it's running React 17. Learn more: https://reactjs.org/link/switch-to-createroot");
          }
          if (!isValidContainerLegacy(container)) {
            throw new Error("Target container is not a DOM element.");
          }
          {
            var isModernRoot = isContainerMarkedAsRoot(container) && container._reactRootContainer === void 0;
            if (isModernRoot) {
              error("You are calling ReactDOM.render() on a container that was previously passed to ReactDOMClient.createRoot(). This is not supported. Did you mean to call root.render(element)?");
            }
          }
          return legacyRenderSubtreeIntoContainer(null, element, container, false, callback);
        }
        function unstable_renderSubtreeIntoContainer(parentComponent, element, containerNode, callback) {
          {
            error("ReactDOM.unstable_renderSubtreeIntoContainer() is no longer supported in React 18. Consider using a portal instead. Until you switch to the createRoot API, your app will behave as if it's running React 17. Learn more: https://reactjs.org/link/switch-to-createroot");
          }
          if (!isValidContainerLegacy(containerNode)) {
            throw new Error("Target container is not a DOM element.");
          }
          if (parentComponent == null || !has(parentComponent)) {
            throw new Error("parentComponent must be a valid React Component");
          }
          return legacyRenderSubtreeIntoContainer(parentComponent, element, containerNode, false, callback);
        }
        var didWarnAboutUnmountComponentAtNode = false;
        function unmountComponentAtNode(container) {
          {
            if (!didWarnAboutUnmountComponentAtNode) {
              didWarnAboutUnmountComponentAtNode = true;
              error("unmountComponentAtNode is deprecated and will be removed in the next major release. Switch to the createRoot API. Learn more: https://reactjs.org/link/switch-to-createroot");
            }
          }
          if (!isValidContainerLegacy(container)) {
            throw new Error("unmountComponentAtNode(...): Target container is not a DOM element.");
          }
          {
            var isModernRoot = isContainerMarkedAsRoot(container) && container._reactRootContainer === void 0;
            if (isModernRoot) {
              error("You are calling ReactDOM.unmountComponentAtNode() on a container that was previously passed to ReactDOMClient.createRoot(). This is not supported. Did you mean to call root.unmount()?");
            }
          }
          if (container._reactRootContainer) {
            {
              var rootEl = getReactRootElementInContainer(container);
              var renderedByDifferentReact = rootEl && !getInstanceFromNode(rootEl);
              if (renderedByDifferentReact) {
                error("unmountComponentAtNode(): The node you're attempting to unmount was rendered by another copy of React.");
              }
            }
            flushSync(function() {
              legacyRenderSubtreeIntoContainer(null, null, container, false, function() {
                container._reactRootContainer = null;
                unmarkContainerAsRoot(container);
              });
            });
            return true;
          } else {
            {
              var _rootEl = getReactRootElementInContainer(container);
              var hasNonRootReactChild = !!(_rootEl && getInstanceFromNode(_rootEl));
              var isContainerReactRoot = container.nodeType === ELEMENT_NODE && isValidContainerLegacy(container.parentNode) && !!container.parentNode._reactRootContainer;
              if (hasNonRootReactChild) {
                error("unmountComponentAtNode(): The node you're attempting to unmount was rendered by React and is not a top-level container. %s", isContainerReactRoot ? "You may have accidentally passed in a React root node instead of its container." : "Instead, have the parent component update its state and rerender in order to remove this component.");
              }
            }
            return false;
          }
        }
        setAttemptSynchronousHydration(attemptSynchronousHydration$1);
        setAttemptContinuousHydration(attemptContinuousHydration$1);
        setAttemptHydrationAtCurrentPriority(attemptHydrationAtCurrentPriority$1);
        setGetCurrentUpdatePriority(getCurrentUpdatePriority);
        setAttemptHydrationAtPriority(runWithPriority);
        {
          if (typeof Map !== "function" || // $FlowIssue Flow incorrectly thinks Map has no prototype
          Map.prototype == null || typeof Map.prototype.forEach !== "function" || typeof Set !== "function" || // $FlowIssue Flow incorrectly thinks Set has no prototype
          Set.prototype == null || typeof Set.prototype.clear !== "function" || typeof Set.prototype.forEach !== "function") {
            error("React depends on Map and Set built-in types. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills");
          }
        }
        setRestoreImplementation(restoreControlledState$3);
        setBatchingImplementation(batchedUpdates$1, discreteUpdates, flushSync);
        function createPortal$1(children, container) {
          var key = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : null;
          if (!isValidContainer(container)) {
            throw new Error("Target container is not a DOM element.");
          }
          return createPortal(children, container, null, key);
        }
        function renderSubtreeIntoContainer(parentComponent, element, containerNode, callback) {
          return unstable_renderSubtreeIntoContainer(parentComponent, element, containerNode, callback);
        }
        var Internals = {
          usingClientEntryPoint: false,
          // Keep in sync with ReactTestUtils.js.
          // This is an array for better minification.
          Events: [getInstanceFromNode, getNodeFromInstance, getFiberCurrentPropsFromNode, enqueueStateRestore, restoreStateIfNeeded, batchedUpdates$1]
        };
        function createRoot$1(container, options2) {
          {
            if (!Internals.usingClientEntryPoint && true) {
              error('You are importing createRoot from "react-dom" which is not supported. You should instead import it from "react-dom/client".');
            }
          }
          return createRoot2(container, options2);
        }
        function hydrateRoot$1(container, initialChildren, options2) {
          {
            if (!Internals.usingClientEntryPoint && true) {
              error('You are importing hydrateRoot from "react-dom" which is not supported. You should instead import it from "react-dom/client".');
            }
          }
          return hydrateRoot(container, initialChildren, options2);
        }
        function flushSync$1(fn) {
          {
            if (isAlreadyRendering()) {
              error("flushSync was called from inside a lifecycle method. React cannot flush when React is already rendering. Consider moving this call to a scheduler task or micro task.");
            }
          }
          return flushSync(fn);
        }
        var foundDevTools = injectIntoDevTools({
          findFiberByHostInstance: getClosestInstanceFromNode,
          bundleType: 1,
          version: ReactVersion,
          rendererPackageName: "react-dom"
        });
        {
          if (!foundDevTools && canUseDOM && window.top === window.self) {
            if (navigator.userAgent.indexOf("Chrome") > -1 && navigator.userAgent.indexOf("Edge") === -1 || navigator.userAgent.indexOf("Firefox") > -1) {
              var protocol = window.location.protocol;
              if (/^(https?|file):$/.test(protocol)) {
                console.info("%cDownload the React DevTools for a better development experience: https://reactjs.org/link/react-devtools" + (protocol === "file:" ? "\nYou might need to use a local HTTP server (instead of file://): https://reactjs.org/link/react-devtools-faq" : ""), "font-weight:bold");
              }
            }
          }
        }
        exports2.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = Internals;
        exports2.createPortal = createPortal$1;
        exports2.createRoot = createRoot$1;
        exports2.findDOMNode = findDOMNode;
        exports2.flushSync = flushSync$1;
        exports2.hydrate = hydrate;
        exports2.hydrateRoot = hydrateRoot$1;
        exports2.render = render;
        exports2.unmountComponentAtNode = unmountComponentAtNode;
        exports2.unstable_batchedUpdates = batchedUpdates$1;
        exports2.unstable_renderSubtreeIntoContainer = renderSubtreeIntoContainer;
        exports2.version = ReactVersion;
        if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== "undefined" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop === "function") {
          __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());
        }
      })();
    }
  }
});

// node_modules/react-dom/index.js
var require_react_dom = __commonJS({
  "node_modules/react-dom/index.js"(exports2, module2) {
    "use strict";
    if (false) {
      checkDCE();
      module2.exports = null;
    } else {
      module2.exports = require_react_dom_development();
    }
  }
});

// node_modules/@excalidraw/excalidraw/dist/excalidraw-with-preact.development.js
var require_excalidraw_with_preact_development = __commonJS({
  "node_modules/@excalidraw/excalidraw/dist/excalidraw-with-preact.development.js"(exports, module) {
    (function webpackUniversalModuleDefinition(root, factory) {
      if (typeof exports === "object" && typeof module === "object")
        module.exports = factory(require_jsx_runtime(), require_react(), require_react_dom());
      else if (typeof define === "function" && define.amd)
        define(["react/jsx-runtime", "react", "react-dom"], factory);
      else if (typeof exports === "object")
        exports["ExcalidrawLib"] = factory(require_jsx_runtime(), require_react(), require_react_dom());
      else
        root["ExcalidrawLib"] = factory(root["ReactJSXRuntime"], root["React"], root["ReactDOM"]);
    })(globalThis, (__WEBPACK_EXTERNAL_MODULE_react_jsx_runtime__, __WEBPACK_EXTERNAL_MODULE_react__, __WEBPACK_EXTERNAL_MODULE_react_dom__) => {
      return (
        /******/
        (() => {
          var __webpack_modules__ = {
            /***/
            "../../../node_modules/@braintree/sanitize-url/dist/index.js": (
              /*!*******************************************************************!*\
                !*** ../../../node_modules/@braintree/sanitize-url/dist/index.js ***!
                \*******************************************************************/
              /***/
              (__unused_webpack_module, exports) => {
                "use strict";
                eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.sanitizeUrl = void 0;\nvar invalidProtocolRegex = /^([^\\w]*)(javascript|data|vbscript)/im;\nvar htmlEntitiesRegex = /&#(\\w+)(^\\w|;)?/g;\nvar htmlCtrlEntityRegex = /&(newline|tab);/gi;\nvar ctrlCharactersRegex = /[\\u0000-\\u001F\\u007F-\\u009F\\u2000-\\u200D\\uFEFF]/gim;\nvar urlSchemeRegex = /^.+(:|&colon;)/gim;\nvar relativeFirstCharacters = [".", "/"];\nfunction isRelativeUrlWithoutProtocol(url) {\n    return relativeFirstCharacters.indexOf(url[0]) > -1;\n}\n// adapted from https://stackoverflow.com/a/29824550/2601552\nfunction decodeHtmlCharacters(str) {\n    return str.replace(htmlEntitiesRegex, function (match, dec) {\n        return String.fromCharCode(dec);\n    });\n}\nfunction sanitizeUrl(url) {\n    var sanitizedUrl = decodeHtmlCharacters(url || "")\n        .replace(htmlCtrlEntityRegex, "")\n        .replace(ctrlCharactersRegex, "")\n        .trim();\n    if (!sanitizedUrl) {\n        return "about:blank";\n    }\n    if (isRelativeUrlWithoutProtocol(sanitizedUrl)) {\n        return sanitizedUrl;\n    }\n    var urlSchemeParseResults = sanitizedUrl.match(urlSchemeRegex);\n    if (!urlSchemeParseResults) {\n        return sanitizedUrl;\n    }\n    var urlScheme = urlSchemeParseResults[0];\n    if (invalidProtocolRegex.test(urlScheme)) {\n        return "about:blank";\n    }\n    return sanitizedUrl;\n}\nexports.sanitizeUrl = sanitizeUrl;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BicmFpbnRyZWUvc2FuaXRpemUtdXJsL2Rpc3QvaW5kZXguanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkMsRUFBRSxhQUFhLEVBQUM7QUFDN0QsbUJBQW1CO0FBQ25CO0FBQ0Esc0NBQXNDO0FBQ3RDLDBDQUEwQztBQUMxQztBQUNBLG1DQUFtQztBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYnJhaW50cmVlL3Nhbml0aXplLXVybC9kaXN0L2luZGV4LmpzP2NkM2IiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLnNhbml0aXplVXJsID0gdm9pZCAwO1xudmFyIGludmFsaWRQcm90b2NvbFJlZ2V4ID0gL14oW15cXHddKikoamF2YXNjcmlwdHxkYXRhfHZic2NyaXB0KS9pbTtcbnZhciBodG1sRW50aXRpZXNSZWdleCA9IC8mIyhcXHcrKSheXFx3fDspPy9nO1xudmFyIGh0bWxDdHJsRW50aXR5UmVnZXggPSAvJihuZXdsaW5lfHRhYik7L2dpO1xudmFyIGN0cmxDaGFyYWN0ZXJzUmVnZXggPSAvW1xcdTAwMDAtXFx1MDAxRlxcdTAwN0YtXFx1MDA5RlxcdTIwMDAtXFx1MjAwRFxcdUZFRkZdL2dpbTtcbnZhciB1cmxTY2hlbWVSZWdleCA9IC9eLisoOnwmY29sb247KS9naW07XG52YXIgcmVsYXRpdmVGaXJzdENoYXJhY3RlcnMgPSBbXCIuXCIsIFwiL1wiXTtcbmZ1bmN0aW9uIGlzUmVsYXRpdmVVcmxXaXRob3V0UHJvdG9jb2wodXJsKSB7XG4gICAgcmV0dXJuIHJlbGF0aXZlRmlyc3RDaGFyYWN0ZXJzLmluZGV4T2YodXJsWzBdKSA+IC0xO1xufVxuLy8gYWRhcHRlZCBmcm9tIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8yOTgyNDU1MC8yNjAxNTUyXG5mdW5jdGlvbiBkZWNvZGVIdG1sQ2hhcmFjdGVycyhzdHIpIHtcbiAgICByZXR1cm4gc3RyLnJlcGxhY2UoaHRtbEVudGl0aWVzUmVnZXgsIGZ1bmN0aW9uIChtYXRjaCwgZGVjKSB7XG4gICAgICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGRlYyk7XG4gICAgfSk7XG59XG5mdW5jdGlvbiBzYW5pdGl6ZVVybCh1cmwpIHtcbiAgICB2YXIgc2FuaXRpemVkVXJsID0gZGVjb2RlSHRtbENoYXJhY3RlcnModXJsIHx8IFwiXCIpXG4gICAgICAgIC5yZXBsYWNlKGh0bWxDdHJsRW50aXR5UmVnZXgsIFwiXCIpXG4gICAgICAgIC5yZXBsYWNlKGN0cmxDaGFyYWN0ZXJzUmVnZXgsIFwiXCIpXG4gICAgICAgIC50cmltKCk7XG4gICAgaWYgKCFzYW5pdGl6ZWRVcmwpIHtcbiAgICAgICAgcmV0dXJuIFwiYWJvdXQ6YmxhbmtcIjtcbiAgICB9XG4gICAgaWYgKGlzUmVsYXRpdmVVcmxXaXRob3V0UHJvdG9jb2woc2FuaXRpemVkVXJsKSkge1xuICAgICAgICByZXR1cm4gc2FuaXRpemVkVXJsO1xuICAgIH1cbiAgICB2YXIgdXJsU2NoZW1lUGFyc2VSZXN1bHRzID0gc2FuaXRpemVkVXJsLm1hdGNoKHVybFNjaGVtZVJlZ2V4KTtcbiAgICBpZiAoIXVybFNjaGVtZVBhcnNlUmVzdWx0cykge1xuICAgICAgICByZXR1cm4gc2FuaXRpemVkVXJsO1xuICAgIH1cbiAgICB2YXIgdXJsU2NoZW1lID0gdXJsU2NoZW1lUGFyc2VSZXN1bHRzWzBdO1xuICAgIGlmIChpbnZhbGlkUHJvdG9jb2xSZWdleC50ZXN0KHVybFNjaGVtZSkpIHtcbiAgICAgICAgcmV0dXJuIFwiYWJvdXQ6YmxhbmtcIjtcbiAgICB9XG4gICAgcmV0dXJuIHNhbml0aXplZFVybDtcbn1cbmV4cG9ydHMuc2FuaXRpemVVcmwgPSBzYW5pdGl6ZVVybDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/@braintree/sanitize-url/dist/index.js\n');
              }
            ),
            /***/
            "../../../node_modules/@excalidraw/laser-pointer/dist/esm.js": (
              /*!*******************************************************************!*\
                !*** ../../../node_modules/@excalidraw/laser-pointer/dist/esm.js ***!
                \*******************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "LaserPointer": () => (/* binding */ $94cfa2cfccc8cc22$export$6531021b3bf36eae)\n/* harmony export */ });\nfunction $parcel$export(e, n, v, s) {\n  Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\nvar $94cfa2cfccc8cc22$exports = {};\n\n$parcel$export($94cfa2cfccc8cc22$exports, "LaserPointer", () => $94cfa2cfccc8cc22$export$6531021b3bf36eae);\nfunction $8cd7efb5af385306$export$e16d8520af44a096([ax, ay, ar], [bx, by, br]) {\n    return [\n        ax + bx,\n        ay + by,\n        ar + br\n    ];\n}\nfunction $8cd7efb5af385306$export$f93b5905241a7cca([ax, ay, ar], [bx, by, br]) {\n    return [\n        ax - bx,\n        ay - by,\n        ar - br\n    ];\n}\nfunction $8cd7efb5af385306$export$1c8884ee32bdf443([x, y, r], s) {\n    return [\n        x * s,\n        y * s,\n        r * s\n    ];\n}\nfunction $8cd7efb5af385306$export$1991ecd29cc92c6b([x, y, r]) {\n    return [\n        x / Math.sqrt(x ** 2 + y ** 2),\n        y / Math.sqrt(x ** 2 + y ** 2),\n        r\n    ];\n}\nfunction $8cd7efb5af385306$export$855df823ceb9b81b([x, y, r], rad) {\n    return [\n        Math.cos(rad) * x - Math.sin(rad) * y,\n        Math.sin(rad) * x + Math.cos(rad) * y,\n        r\n    ];\n}\nfunction $8cd7efb5af385306$export$92d8e23769117a5e(a, b, t) {\n    return $8cd7efb5af385306$export$e16d8520af44a096(a, $8cd7efb5af385306$export$1c8884ee32bdf443($8cd7efb5af385306$export$f93b5905241a7cca(b, a), t));\n}\nfunction $8cd7efb5af385306$export$3a89f8d6f6bf6c9f(a, b, t) {\n    return a + (b - a) * t;\n}\nfunction $8cd7efb5af385306$export$944b09d2ad10b378(p, p1, p2) {\n    return Math.atan2(p2[1] - p[1], p2[0] - p[0]) - Math.atan2(p1[1] - p[1], p1[0] - p[0]);\n}\nfunction $8cd7efb5af385306$export$3c05aaf71f141f73(a) {\n    return Math.atan2(Math.sin(a), Math.cos(a));\n}\nfunction $8cd7efb5af385306$export$1b9bab504faa9305([x, y]) {\n    return Math.sqrt(x ** 2 + y ** 2);\n}\nfunction $8cd7efb5af385306$export$6c4a311cc157c764([ax, ay], [bx, by]) {\n    return Math.sqrt((bx - ax) ** 2 + (by - ay) ** 2);\n}\nfunction $8cd7efb5af385306$export$46f6d3e1b4bd7c8b(point, direction, radius) {\n    return [\n        $8cd7efb5af385306$export$e16d8520af44a096(point, $8cd7efb5af385306$export$1c8884ee32bdf443($8cd7efb5af385306$export$1991ecd29cc92c6b($8cd7efb5af385306$export$855df823ceb9b81b(direction, Math.PI / 2)), radius)),\n        $8cd7efb5af385306$export$e16d8520af44a096(point, $8cd7efb5af385306$export$1c8884ee32bdf443($8cd7efb5af385306$export$1991ecd29cc92c6b($8cd7efb5af385306$export$855df823ceb9b81b(direction, -Math.PI / 2)), radius))\n    ];\n}\nfunction $8cd7efb5af385306$export$ccb1b4dfbd3f36a7(ps) {\n    if (ps.length < 2) return 0;\n    let len = 0;\n    for(let i = 1; i <= ps.length - 1; i++)len += $8cd7efb5af385306$export$6c4a311cc157c764(ps[i - 1], ps[i]);\n    len += $8cd7efb5af385306$export$6c4a311cc157c764(ps[ps.length - 2], ps[ps.length - 1]);\n    return len;\n}\nconst $8cd7efb5af385306$export$7d15b64cf5a3a4c4 = (v, min, max)=>Math.max(min, Math.min(max, v));\nfunction $8cd7efb5af385306$export$548cc43590159af6(p3, p1, p2) {\n    const sMag = $8cd7efb5af385306$export$6c4a311cc157c764(p1, p2);\n    if (sMag === 0) return $8cd7efb5af385306$export$6c4a311cc157c764(p3, p1);\n    const u = $8cd7efb5af385306$export$7d15b64cf5a3a4c4(((p3[0] - p1[0]) * (p2[0] - p1[0]) + (p3[1] - p1[1]) * (p2[1] - p1[1])) / sMag ** 2, 0, 1);\n    const pi = [\n        p1[0] + u * (p2[0] - p1[0]),\n        p1[1] + u * (p2[1] - p1[1]),\n        p3[2]\n    ];\n    return $8cd7efb5af385306$export$6c4a311cc157c764(pi, p3);\n}\n\n\n\nfunction $34bab0059f842ce6$export$ef693d1572e64fb8(points, epsilon) {\n    if (epsilon === 0) return points;\n    if (points.length <= 2) return points;\n    const first = points[0];\n    const last = points[points.length - 1];\n    const [maxDistance, maxIndex] = points.reduce(([maxDistance, maxIndex], point, index)=>{\n        const distance = (0, $8cd7efb5af385306$export$548cc43590159af6)(point, first, last);\n        return distance > maxDistance ? [\n            distance,\n            index\n        ] : [\n            maxDistance,\n            maxIndex\n        ];\n    }, [\n        0,\n        -1\n    ]);\n    if (maxDistance >= epsilon) {\n        const maxIndexPoint = points[maxIndex];\n        return [\n            ...$34bab0059f842ce6$export$ef693d1572e64fb8([\n                first,\n                ...points.slice(1, maxIndex),\n                maxIndexPoint\n            ], epsilon).slice(0, -1),\n            maxIndexPoint,\n            ...$34bab0059f842ce6$export$ef693d1572e64fb8([\n                maxIndexPoint,\n                ...points.slice(maxIndex, -1),\n                last\n            ], epsilon).slice(1)\n        ];\n    } else return [\n        first,\n        last\n    ];\n}\n\n\nclass $94cfa2cfccc8cc22$export$6531021b3bf36eae {\n    static #_ = (()=>{\n        this.defaults = {\n            size: 2,\n            streamline: 0.45,\n            simplify: 0.1,\n            simplifyPhase: "output",\n            sizeMapping: ()=>1\n        };\n    })();\n    static #_1 = (()=>{\n        this.constants = {\n            cornerDetectionMaxAngle: 120,\n            cornerDetectionVariance: (s)=>s > 35 ? 0.5 : 1,\n            maxTailLength: 50\n        };\n    })();\n    constructor(options){\n        this.originalPoints = [];\n        this.stablePoints = [];\n        this.tailPoints = [];\n        this.isFresh = true;\n        this.options = Object.assign({}, $94cfa2cfccc8cc22$export$6531021b3bf36eae.defaults, options);\n    }\n    get lastPoint() {\n        return this.tailPoints[this.tailPoints.length - 1] ?? this.stablePoints[this.stablePoints.length - 1];\n    }\n    addPoint(point) {\n        const lastPoint = this.originalPoints[this.originalPoints.length - 1];\n        if (lastPoint && lastPoint[0] === point[0] && lastPoint[1] === point[1]) return;\n        this.originalPoints.push(point);\n        if (this.isFresh) {\n            this.isFresh = false;\n            this.stablePoints.push(point);\n            return;\n        }\n        if (this.options.streamline > 0) point = $8cd7efb5af385306$export$92d8e23769117a5e(this.lastPoint, point, 1 - this.options.streamline);\n        this.tailPoints.push(point);\n        if ($8cd7efb5af385306$export$ccb1b4dfbd3f36a7(this.tailPoints) > $94cfa2cfccc8cc22$export$6531021b3bf36eae.constants.maxTailLength) this.stabilizeTail();\n    }\n    close() {\n        this.stabilizeTail();\n    }\n    stabilizeTail() {\n        if (this.options.simplify > 0 && this.options.simplifyPhase == "tail") throw new Error("Not implemented yet");\n        else {\n            this.stablePoints.push(...this.tailPoints);\n            this.tailPoints = [];\n        }\n    }\n    getSize(sizeOverride, pressure, index, totalLength, runningLength) {\n        return (sizeOverride ?? this.options.size) * this.options.sizeMapping({\n            pressure: pressure,\n            runningLength: runningLength,\n            currentIndex: index,\n            totalLength: totalLength\n        });\n    }\n    getStrokeOutline(sizeOverride) {\n        if (this.isFresh) return [];\n        let points = [\n            ...this.stablePoints,\n            ...this.tailPoints\n        ];\n        if (this.options.simplify > 0 && this.options.simplifyPhase === "input") points = (0, $34bab0059f842ce6$export$ef693d1572e64fb8)(points, this.options.simplify);\n        const len = points.length;\n        if (len === 0) return [];\n        if (len === 1) {\n            const c = points[0];\n            const ps = [];\n            for(let theta = 0; theta <= Math.PI * 2; theta += Math.PI / 16)ps.push($8cd7efb5af385306$export$e16d8520af44a096(c, $8cd7efb5af385306$export$1c8884ee32bdf443($8cd7efb5af385306$export$855df823ceb9b81b([\n                1,\n                0,\n                0\n            ], theta), this.getSize(sizeOverride, c[2], 0, len, 0))));\n            ps.push($8cd7efb5af385306$export$e16d8520af44a096(c, $8cd7efb5af385306$export$1c8884ee32bdf443([\n                1,\n                0,\n                0\n            ], this.getSize(sizeOverride, c[2], 0, len, 0))));\n            return ps;\n        }\n        if (len === 2) {\n            const c = points[0];\n            const n = points[1];\n            const ps = [];\n            const pAngle = $8cd7efb5af385306$export$944b09d2ad10b378(c, [\n                c[0],\n                c[1] - 100,\n                c[2]\n            ], n);\n            for(let theta = pAngle; theta <= Math.PI + pAngle; theta += Math.PI / 16)ps.push($8cd7efb5af385306$export$e16d8520af44a096(c, $8cd7efb5af385306$export$1c8884ee32bdf443($8cd7efb5af385306$export$855df823ceb9b81b([\n                1,\n                0,\n                0\n            ], theta), this.getSize(sizeOverride, c[2], 0, len, 0))));\n            for(let theta = Math.PI + pAngle; theta <= Math.PI * 2 + pAngle; theta += Math.PI / 16)ps.push($8cd7efb5af385306$export$e16d8520af44a096(n, $8cd7efb5af385306$export$1c8884ee32bdf443($8cd7efb5af385306$export$855df823ceb9b81b([\n                1,\n                0,\n                0\n            ], theta), this.getSize(sizeOverride, n[2], 0, len, 0))));\n            ps.push(ps[0]);\n            return ps;\n        }\n        const forwardPoints = [];\n        const backwardPoints = [];\n        let speed = 0;\n        let prevSpeed = 0;\n        let visibleStartIndex = 0;\n        let runningLength = 0;\n        for(let i = 1; i < len - 1; i++){\n            const p = points[i - 1], c = points[i], n = points[i + 1];\n            let pressure = c[2];\n            const d = $8cd7efb5af385306$export$6c4a311cc157c764(p, c);\n            runningLength += d;\n            speed = prevSpeed + (d - prevSpeed) * 0.2;\n            const cSize = this.getSize(sizeOverride, pressure, i, len, runningLength);\n            if (cSize === 0) {\n                visibleStartIndex = i + 1;\n                continue;\n            }\n            const dirPC = $8cd7efb5af385306$export$1991ecd29cc92c6b($8cd7efb5af385306$export$f93b5905241a7cca(p, c));\n            const dirNC = $8cd7efb5af385306$export$1991ecd29cc92c6b($8cd7efb5af385306$export$f93b5905241a7cca(n, c));\n            const p1dirPC = $8cd7efb5af385306$export$855df823ceb9b81b(dirPC, Math.PI / 2);\n            const p2dirPC = $8cd7efb5af385306$export$855df823ceb9b81b(dirPC, -Math.PI / 2);\n            const p1dirNC = $8cd7efb5af385306$export$855df823ceb9b81b(dirNC, Math.PI / 2);\n            const p2dirNC = $8cd7efb5af385306$export$855df823ceb9b81b(dirNC, -Math.PI / 2);\n            const p1PC = $8cd7efb5af385306$export$e16d8520af44a096(c, $8cd7efb5af385306$export$1c8884ee32bdf443(p1dirPC, cSize));\n            const p2PC = $8cd7efb5af385306$export$e16d8520af44a096(c, $8cd7efb5af385306$export$1c8884ee32bdf443(p2dirPC, cSize));\n            const p1NC = $8cd7efb5af385306$export$e16d8520af44a096(c, $8cd7efb5af385306$export$1c8884ee32bdf443(p1dirNC, cSize));\n            const p2NC = $8cd7efb5af385306$export$e16d8520af44a096(c, $8cd7efb5af385306$export$1c8884ee32bdf443(p2dirNC, cSize));\n            const ftdir = $8cd7efb5af385306$export$e16d8520af44a096(p1dirPC, p2dirNC);\n            const btdir = $8cd7efb5af385306$export$e16d8520af44a096(p2dirPC, p1dirNC);\n            const paPC = $8cd7efb5af385306$export$e16d8520af44a096(c, $8cd7efb5af385306$export$1c8884ee32bdf443($8cd7efb5af385306$export$1b9bab504faa9305(ftdir) === 0 ? dirPC : $8cd7efb5af385306$export$1991ecd29cc92c6b(ftdir), cSize));\n            const paNC = $8cd7efb5af385306$export$e16d8520af44a096(c, $8cd7efb5af385306$export$1c8884ee32bdf443($8cd7efb5af385306$export$1b9bab504faa9305(btdir) === 0 ? dirNC : $8cd7efb5af385306$export$1991ecd29cc92c6b(btdir), cSize));\n            const cAngle = $8cd7efb5af385306$export$3c05aaf71f141f73($8cd7efb5af385306$export$944b09d2ad10b378(c, p, n));\n            const D_ANGLE = $94cfa2cfccc8cc22$export$6531021b3bf36eae.constants.cornerDetectionMaxAngle / 180 * Math.PI * $94cfa2cfccc8cc22$export$6531021b3bf36eae.constants.cornerDetectionVariance(speed);\n            if (Math.abs(cAngle) < D_ANGLE) {\n                const tAngle = Math.abs($8cd7efb5af385306$export$3c05aaf71f141f73(Math.PI - cAngle)) // turn angle\n                ;\n                if (tAngle === 0) continue;\n                if (cAngle < 0) {\n                    backwardPoints.push(p2PC, paNC);\n                    for(let theta = 0; theta <= tAngle; theta += tAngle / 4)forwardPoints.push($8cd7efb5af385306$export$e16d8520af44a096(c, $8cd7efb5af385306$export$855df823ceb9b81b($8cd7efb5af385306$export$1c8884ee32bdf443(p1dirPC, cSize), theta)));\n                    for(let theta = tAngle; theta >= 0; theta -= tAngle / 4)backwardPoints.push($8cd7efb5af385306$export$e16d8520af44a096(c, $8cd7efb5af385306$export$855df823ceb9b81b($8cd7efb5af385306$export$1c8884ee32bdf443(p1dirPC, cSize), theta)));\n                    backwardPoints.push(paNC, p1NC);\n                } else {\n                    forwardPoints.push(p1PC, paPC);\n                    for(let theta = 0; theta <= tAngle; theta += tAngle / 4)backwardPoints.push($8cd7efb5af385306$export$e16d8520af44a096(c, $8cd7efb5af385306$export$855df823ceb9b81b($8cd7efb5af385306$export$1c8884ee32bdf443(p1dirPC, -cSize), -theta)));\n                    for(let theta = tAngle; theta >= 0; theta -= tAngle / 4)forwardPoints.push($8cd7efb5af385306$export$e16d8520af44a096(c, $8cd7efb5af385306$export$855df823ceb9b81b($8cd7efb5af385306$export$1c8884ee32bdf443(p1dirPC, -cSize), -theta)));\n                    forwardPoints.push(paPC, p2NC);\n                }\n            } else {\n                forwardPoints.push(paPC);\n                backwardPoints.push(paNC);\n            }\n            prevSpeed = speed;\n        }\n        const first = points[visibleStartIndex];\n        const second = points[visibleStartIndex + 1];\n        const penultimate = points[len - 2];\n        const ultimate = points[len - 1];\n        if (visibleStartIndex >= len - 2) return [];\n        const dirFS = $8cd7efb5af385306$export$1991ecd29cc92c6b($8cd7efb5af385306$export$f93b5905241a7cca(second, first));\n        const dirPU = $8cd7efb5af385306$export$1991ecd29cc92c6b($8cd7efb5af385306$export$f93b5905241a7cca(penultimate, ultimate));\n        const ppdirFS = $8cd7efb5af385306$export$855df823ceb9b81b(dirFS, -Math.PI / 2);\n        const ppdirPU = $8cd7efb5af385306$export$855df823ceb9b81b(dirPU, Math.PI / 2);\n        const startCapSize = this.getSize(sizeOverride, first[2], 0, len, 0);\n        const startCap = [];\n        const endCapSize = this.getSize(sizeOverride, penultimate[2], len - 2, len, runningLength);\n        const endCap = [];\n        for(let theta = 0; theta <= Math.PI; theta += Math.PI / 16)startCap.unshift($8cd7efb5af385306$export$e16d8520af44a096(first, $8cd7efb5af385306$export$855df823ceb9b81b($8cd7efb5af385306$export$1c8884ee32bdf443(ppdirFS, startCapSize), -theta)));\n        startCap.unshift($8cd7efb5af385306$export$e16d8520af44a096(first, $8cd7efb5af385306$export$1c8884ee32bdf443(ppdirFS, -startCapSize)));\n        for(let theta = 0; theta <= Math.PI; theta += Math.PI / 16)endCap.push($8cd7efb5af385306$export$e16d8520af44a096(ultimate, $8cd7efb5af385306$export$855df823ceb9b81b($8cd7efb5af385306$export$1c8884ee32bdf443(ppdirPU, -endCapSize), -theta)));\n        const strokeOutline = [\n            ...startCap,\n            ...forwardPoints,\n            ...endCap.reverse(),\n            ...backwardPoints.reverse()\n        ];\n        if (startCap.length > 0) strokeOutline.push(startCap[0]);\n        if (this.options.simplify > 0 && this.options.simplifyPhase === "output") return (0, $34bab0059f842ce6$export$ef693d1572e64fb8)(strokeOutline, this.options.simplify);\n        return strokeOutline;\n    }\n}\n\n\n\n\n\n//# sourceMappingURL=esm.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 23812 characters]\n//# sourceURL=webpack-internal:///../../../node_modules/@excalidraw/laser-pointer/dist/esm.js\n');
              }
            ),
            /***/
            "../../../node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.esm.js": (
              /*!**************************************************************************************!*\
                !*** ../../../node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.esm.js ***!
                \**************************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "arrow": () => (/* binding */ arrow),
/* harmony export */   "autoPlacement": () => (/* reexport safe */ _floating_ui_dom__WEBPACK_IMPORTED_MODULE_0__.autoPlacement),
/* harmony export */   "autoUpdate": () => (/* reexport safe */ _floating_ui_dom__WEBPACK_IMPORTED_MODULE_0__.autoUpdate),
/* harmony export */   "computePosition": () => (/* reexport safe */ _floating_ui_dom__WEBPACK_IMPORTED_MODULE_0__.computePosition),
/* harmony export */   "detectOverflow": () => (/* reexport safe */ _floating_ui_dom__WEBPACK_IMPORTED_MODULE_0__.detectOverflow),
/* harmony export */   "flip": () => (/* reexport safe */ _floating_ui_dom__WEBPACK_IMPORTED_MODULE_0__.flip),
/* harmony export */   "getOverflowAncestors": () => (/* reexport safe */ _floating_ui_dom__WEBPACK_IMPORTED_MODULE_0__.getOverflowAncestors),
/* harmony export */   "hide": () => (/* reexport safe */ _floating_ui_dom__WEBPACK_IMPORTED_MODULE_0__.hide),
/* harmony export */   "inline": () => (/* reexport safe */ _floating_ui_dom__WEBPACK_IMPORTED_MODULE_0__.inline),
/* harmony export */   "limitShift": () => (/* reexport safe */ _floating_ui_dom__WEBPACK_IMPORTED_MODULE_0__.limitShift),
/* harmony export */   "offset": () => (/* reexport safe */ _floating_ui_dom__WEBPACK_IMPORTED_MODULE_0__.offset),
/* harmony export */   "shift": () => (/* reexport safe */ _floating_ui_dom__WEBPACK_IMPORTED_MODULE_0__.shift),
/* harmony export */   "size": () => (/* reexport safe */ _floating_ui_dom__WEBPACK_IMPORTED_MODULE_0__.size),
/* harmony export */   "useFloating": () => (/* binding */ useFloating)
/* harmony export */ });
/* harmony import */ var _floating_ui_dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @floating-ui/dom */ "../../../node_modules/@floating-ui/dom/dist/floating-ui.dom.browser.mjs");
/* harmony import */ var _floating_ui_dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @floating-ui/dom */ "../../../node_modules/@floating-ui/core/dist/floating-ui.core.browser.mjs");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-dom */ "react-dom");
/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_2__);






var index = typeof document !== 'undefined' ? react__WEBPACK_IMPORTED_MODULE_1__.useLayoutEffect : react__WEBPACK_IMPORTED_MODULE_1__.useEffect;

// Fork of \`fast-deep-equal\` that only does the comparisons we need and compares
// functions
function deepEqual(a, b) {
  if (a === b) {
    return true;
  }

  if (typeof a !== typeof b) {
    return false;
  }

  if (typeof a === 'function' && a.toString() === b.toString()) {
    return true;
  }

  let length, i, keys;

  if (a && b && typeof a == 'object') {
    if (Array.isArray(a)) {
      length = a.length;
      if (length != b.length) return false;

      for (i = length; i-- !== 0;) {
        if (!deepEqual(a[i], b[i])) {
          return false;
        }
      }

      return true;
    }

    keys = Object.keys(a);
    length = keys.length;

    if (length !== Object.keys(b).length) {
      return false;
    }

    for (i = length; i-- !== 0;) {
      if (!Object.prototype.hasOwnProperty.call(b, keys[i])) {
        return false;
      }
    }

    for (i = length; i-- !== 0;) {
      const key = keys[i];

      if (key === '_owner' && a.$$typeof) {
        continue;
      }

      if (!deepEqual(a[key], b[key])) {
        return false;
      }
    }

    return true;
  }

  return a !== a && b !== b;
}

function useLatestRef(value) {
  const ref = react__WEBPACK_IMPORTED_MODULE_1__.useRef(value);
  index(() => {
    ref.current = value;
  });
  return ref;
}

function useFloating(_temp) {
  let {
    middleware,
    placement = 'bottom',
    strategy = 'absolute',
    whileElementsMounted
  } = _temp === void 0 ? {} : _temp;
  const reference = react__WEBPACK_IMPORTED_MODULE_1__.useRef(null);
  const floating = react__WEBPACK_IMPORTED_MODULE_1__.useRef(null);
  const whileElementsMountedRef = useLatestRef(whileElementsMounted);
  const cleanupRef = react__WEBPACK_IMPORTED_MODULE_1__.useRef(null);
  const [data, setData] = react__WEBPACK_IMPORTED_MODULE_1__.useState({
    // Setting these to \`null\` will allow the consumer to determine if
    // \`computePosition()\` has run yet
    x: null,
    y: null,
    strategy,
    placement,
    middlewareData: {}
  });
  const [latestMiddleware, setLatestMiddleware] = react__WEBPACK_IMPORTED_MODULE_1__.useState(middleware);

  if (!deepEqual(latestMiddleware == null ? void 0 : latestMiddleware.map(_ref => {
    let {
      options
    } = _ref;
    return options;
  }), middleware == null ? void 0 : middleware.map(_ref2 => {
    let {
      options
    } = _ref2;
    return options;
  }))) {
    setLatestMiddleware(middleware);
  }

  const update = react__WEBPACK_IMPORTED_MODULE_1__.useCallback(() => {
    if (!reference.current || !floating.current) {
      return;
    }

    (0,_floating_ui_dom__WEBPACK_IMPORTED_MODULE_0__.computePosition)(reference.current, floating.current, {
      middleware: latestMiddleware,
      placement,
      strategy
    }).then(data => {
      if (isMountedRef.current) {
        react_dom__WEBPACK_IMPORTED_MODULE_2__.flushSync(() => {
          setData(data);
        });
      }
    });
  }, [latestMiddleware, placement, strategy]);
  index(() => {
    // Skip first update
    if (isMountedRef.current) {
      update();
    }
  }, [update]);
  const isMountedRef = react__WEBPACK_IMPORTED_MODULE_1__.useRef(false);
  index(() => {
    isMountedRef.current = true;
    return () => {
      isMountedRef.current = false;
    };
  }, []);
  const runElementMountCallback = react__WEBPACK_IMPORTED_MODULE_1__.useCallback(() => {
    if (typeof cleanupRef.current === 'function') {
      cleanupRef.current();
      cleanupRef.current = null;
    }

    if (reference.current && floating.current) {
      if (whileElementsMountedRef.current) {
        const cleanupFn = whileElementsMountedRef.current(reference.current, floating.current, update);
        cleanupRef.current = cleanupFn;
      } else {
        update();
      }
    }
  }, [update, whileElementsMountedRef]);
  const setReference = react__WEBPACK_IMPORTED_MODULE_1__.useCallback(node => {
    reference.current = node;
    runElementMountCallback();
  }, [runElementMountCallback]);
  const setFloating = react__WEBPACK_IMPORTED_MODULE_1__.useCallback(node => {
    floating.current = node;
    runElementMountCallback();
  }, [runElementMountCallback]);
  const refs = react__WEBPACK_IMPORTED_MODULE_1__.useMemo(() => ({
    reference,
    floating
  }), []);
  return react__WEBPACK_IMPORTED_MODULE_1__.useMemo(() => ({ ...data,
    update,
    refs,
    reference: setReference,
    floating: setFloating
  }), [data, update, refs, setReference, setFloating]);
}

/**
 * Positions an inner element of the floating element such that it is centered
 * to the reference element.
 * This wraps the core \`arrow\` middleware to allow React refs as the element.
 * @see https://floating-ui.com/docs/arrow
 */

const arrow = options => {
  const {
    element,
    padding
  } = options;

  function isRef(value) {
    return Object.prototype.hasOwnProperty.call(value, 'current');
  }

  return {
    name: 'arrow',
    options,

    fn(args) {
      if (isRef(element)) {
        if (element.current != null) {
          return (0,_floating_ui_dom__WEBPACK_IMPORTED_MODULE_3__.arrow)({
            element: element.current,
            padding
          }).fn(args);
        }

        return {};
      } else if (element) {
        return (0,_floating_ui_dom__WEBPACK_IMPORTED_MODULE_3__.arrow)({
          element,
          padding
        }).fn(args);
      }

      return {};
    }

  };
};


//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 9496 characters]
//# sourceURL=webpack-internal:///../../../node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.esm.js
`);
              }
            ),
            /***/
            "../../../node_modules/@radix-ui/primitive/dist/index.module.js": (
              /*!**********************************************************************!*\
                !*** ../../../node_modules/@radix-ui/primitive/dist/index.module.js ***!
                \**********************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "composeEventHandlers": () => (/* binding */ $e42e1063c40fb3ef$export$b9ecd428b558ff10)\n/* harmony export */ });\nfunction $e42e1063c40fb3ef$export$b9ecd428b558ff10(originalEventHandler, ourEventHandler, { checkForDefaultPrevented: checkForDefaultPrevented = true  } = {}) {\n    return function handleEvent(event) {\n        originalEventHandler === null || originalEventHandler === void 0 || originalEventHandler(event);\n        if (checkForDefaultPrevented === false || !event.defaultPrevented) return ourEventHandler === null || ourEventHandler === void 0 ? void 0 : ourEventHandler(event);\n    };\n}\n\n\n\n\n\n//# sourceMappingURL=index.module.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9wcmltaXRpdmUvZGlzdC9pbmRleC5tb2R1bGUuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLDRGQUE0Riw2REFBNkQsSUFBSTtBQUM3SjtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUsyRTtBQUMzRSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3ByaW1pdGl2ZS9kaXN0L2luZGV4Lm1vZHVsZS5qcz9hNTNhIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uICRlNDJlMTA2M2M0MGZiM2VmJGV4cG9ydCRiOWVjZDQyOGI1NThmZjEwKG9yaWdpbmFsRXZlbnRIYW5kbGVyLCBvdXJFdmVudEhhbmRsZXIsIHsgY2hlY2tGb3JEZWZhdWx0UHJldmVudGVkOiBjaGVja0ZvckRlZmF1bHRQcmV2ZW50ZWQgPSB0cnVlICB9ID0ge30pIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gaGFuZGxlRXZlbnQoZXZlbnQpIHtcbiAgICAgICAgb3JpZ2luYWxFdmVudEhhbmRsZXIgPT09IG51bGwgfHwgb3JpZ2luYWxFdmVudEhhbmRsZXIgPT09IHZvaWQgMCB8fCBvcmlnaW5hbEV2ZW50SGFuZGxlcihldmVudCk7XG4gICAgICAgIGlmIChjaGVja0ZvckRlZmF1bHRQcmV2ZW50ZWQgPT09IGZhbHNlIHx8ICFldmVudC5kZWZhdWx0UHJldmVudGVkKSByZXR1cm4gb3VyRXZlbnRIYW5kbGVyID09PSBudWxsIHx8IG91ckV2ZW50SGFuZGxlciA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3VyRXZlbnRIYW5kbGVyKGV2ZW50KTtcbiAgICB9O1xufVxuXG5cblxuXG5leHBvcnQgeyRlNDJlMTA2M2M0MGZiM2VmJGV4cG9ydCRiOWVjZDQyOGI1NThmZjEwIGFzIGNvbXBvc2VFdmVudEhhbmRsZXJzfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1vZHVsZS5qcy5tYXBcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/@radix-ui/primitive/dist/index.module.js\n');
              }
            ),
            /***/
            "../../../node_modules/@radix-ui/react-arrow/dist/index.module.js": (
              /*!************************************************************************!*\
                !*** ../../../node_modules/@radix-ui/react-arrow/dist/index.module.js ***!
                \************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "Arrow": () => (/* binding */ $7e8f5cd07187803e$export$21b07c8f274aebd5),
/* harmony export */   "Root": () => (/* binding */ $7e8f5cd07187803e$export$be92b6f5f03c0fe9)
/* harmony export */ });
/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ "../../../node_modules/@babel/runtime/helpers/esm/extends.js");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @radix-ui/react-primitive */ "../../../node_modules/@radix-ui/react-primitive/dist/index.module.js");







/* -------------------------------------------------------------------------------------------------
 * Arrow
 * -----------------------------------------------------------------------------------------------*/ const $7e8f5cd07187803e$var$NAME = 'Arrow';
const $7e8f5cd07187803e$export$21b07c8f274aebd5 = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)((props, forwardedRef)=>{
    const { children: children , width: width = 10 , height: height = 5 , ...arrowProps } = props;
    return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_2__.Primitive.svg, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, arrowProps, {
        ref: forwardedRef,
        width: width,
        height: height,
        viewBox: "0 0 30 10",
        preserveAspectRatio: "none"
    }), props.asChild ? children : /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)("polygon", {
        points: "0,0 30,0 15,10"
    }));
});
/*#__PURE__*/ Object.assign($7e8f5cd07187803e$export$21b07c8f274aebd5, {
    displayName: $7e8f5cd07187803e$var$NAME
});
/* -----------------------------------------------------------------------------------------------*/ const $7e8f5cd07187803e$export$be92b6f5f03c0fe9 = $7e8f5cd07187803e$export$21b07c8f274aebd5;





//# sourceMappingURL=index.module.js.map
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC1hcnJvdy9kaXN0L2luZGV4Lm1vZHVsZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBc0Y7QUFDTztBQUNyQjs7Ozs7QUFLeEU7QUFDQTtBQUNBO0FBQ0EsZ0VBQWdFLGlEQUFpQjtBQUNqRixZQUFZLDhFQUE4RTtBQUMxRix5QkFBeUIsb0RBQW9CLENBQUMsb0VBQW9CLEVBQUUsOEVBQW9DLEdBQUc7QUFDM0c7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUssNENBQTRDLG9EQUFvQjtBQUNyRTtBQUNBLEtBQUs7QUFDTCxDQUFDO0FBQ0Q7QUFDQTtBQUNBLENBQUM7QUFDRDs7Ozs7QUFLK0c7QUFDL0ciLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC1hcnJvdy9kaXN0L2luZGV4Lm1vZHVsZS5qcz81MWUyIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAkamJuRXgkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCB7Zm9yd2FyZFJlZiBhcyAkamJuRXgkZm9yd2FyZFJlZiwgY3JlYXRlRWxlbWVudCBhcyAkamJuRXgkY3JlYXRlRWxlbWVudH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge1ByaW1pdGl2ZSBhcyAkamJuRXgkUHJpbWl0aXZlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXByaW1pdGl2ZVwiO1xuXG5cblxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBBcnJvd1xuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkN2U4ZjVjZDA3MTg3ODAzZSR2YXIkTkFNRSA9ICdBcnJvdyc7XG5jb25zdCAkN2U4ZjVjZDA3MTg3ODAzZSRleHBvcnQkMjFiMDdjOGYyNzRhZWJkNSA9IC8qI19fUFVSRV9fKi8gJGpibkV4JGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBjaGlsZHJlbjogY2hpbGRyZW4gLCB3aWR0aDogd2lkdGggPSAxMCAsIGhlaWdodDogaGVpZ2h0ID0gNSAsIC4uLmFycm93UHJvcHMgfSA9IHByb3BzO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICRqYm5FeCRjcmVhdGVFbGVtZW50KCRqYm5FeCRQcmltaXRpdmUuc3ZnLCAkamJuRXgkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIGFycm93UHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWYsXG4gICAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDMwIDEwXCIsXG4gICAgICAgIHByZXNlcnZlQXNwZWN0UmF0aW86IFwibm9uZVwiXG4gICAgfSksIHByb3BzLmFzQ2hpbGQgPyBjaGlsZHJlbiA6IC8qI19fUFVSRV9fKi8gJGpibkV4JGNyZWF0ZUVsZW1lbnQoXCJwb2x5Z29uXCIsIHtcbiAgICAgICAgcG9pbnRzOiBcIjAsMCAzMCwwIDE1LDEwXCJcbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkN2U4ZjVjZDA3MTg3ODAzZSRleHBvcnQkMjFiMDdjOGYyNzRhZWJkNSwge1xuICAgIGRpc3BsYXlOYW1lOiAkN2U4ZjVjZDA3MTg3ODAzZSR2YXIkTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ3ZThmNWNkMDcxODc4MDNlJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5ID0gJDdlOGY1Y2QwNzE4NzgwM2UkZXhwb3J0JDIxYjA3YzhmMjc0YWViZDU7XG5cblxuXG5cbmV4cG9ydCB7JDdlOGY1Y2QwNzE4NzgwM2UkZXhwb3J0JDIxYjA3YzhmMjc0YWViZDUgYXMgQXJyb3csICQ3ZThmNWNkMDcxODc4MDNlJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IGFzIFJvb3R9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubW9kdWxlLmpzLm1hcFxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9
//# sourceURL=webpack-internal:///../../../node_modules/@radix-ui/react-arrow/dist/index.module.js
`);
              }
            ),
            /***/
            "../../../node_modules/@radix-ui/react-collection/dist/index.module.js": (
              /*!*****************************************************************************!*\
                !*** ../../../node_modules/@radix-ui/react-collection/dist/index.module.js ***!
                \*****************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "createCollection": () => (/* binding */ $e02a7d9cb1dc128c$export$c74125a8e3af6bb2)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _radix_ui_react_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @radix-ui/react-context */ "../../../node_modules/@radix-ui/react-context/dist/index.module.js");
/* harmony import */ var _radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @radix-ui/react-compose-refs */ "../../../node_modules/@radix-ui/react-compose-refs/dist/index.module.js");
/* harmony import */ var _radix_ui_react_slot__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @radix-ui/react-slot */ "../../../node_modules/@radix-ui/react-slot/dist/index.module.js");









// We have resorted to returning slots directly rather than exposing primitives that can then
// be slotted like \`<CollectionItem as={Slot}>\u2026</CollectionItem>\`.
// This is because we encountered issues with generic types that cannot be statically analysed
// due to creating them dynamically via createCollection.
function $e02a7d9cb1dc128c$export$c74125a8e3af6bb2(name) {
    /* -----------------------------------------------------------------------------------------------
   * CollectionProvider
   * ---------------------------------------------------------------------------------------------*/ const PROVIDER_NAME = name + 'CollectionProvider';
    const [createCollectionContext, createCollectionScope] = (0,_radix_ui_react_context__WEBPACK_IMPORTED_MODULE_1__.createContextScope)(PROVIDER_NAME);
    const [CollectionProviderImpl, useCollectionContext] = createCollectionContext(PROVIDER_NAME, {
        collectionRef: {
            current: null
        },
        itemMap: new Map()
    });
    const CollectionProvider = (props)=>{
        const { scope: scope , children: children  } = props;
        const ref = react__WEBPACK_IMPORTED_MODULE_0___default().useRef(null);
        const itemMap = react__WEBPACK_IMPORTED_MODULE_0___default().useRef(new Map()).current;
        return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(CollectionProviderImpl, {
            scope: scope,
            itemMap: itemMap,
            collectionRef: ref
        }, children);
    };
    /*#__PURE__*/ Object.assign(CollectionProvider, {
        displayName: PROVIDER_NAME
    });
    /* -----------------------------------------------------------------------------------------------
   * CollectionSlot
   * ---------------------------------------------------------------------------------------------*/ const COLLECTION_SLOT_NAME = name + 'CollectionSlot';
    const CollectionSlot = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().forwardRef((props, forwardedRef)=>{
        const { scope: scope , children: children  } = props;
        const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);
        const composedRefs = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_2__.useComposedRefs)(forwardedRef, context.collectionRef);
        return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_slot__WEBPACK_IMPORTED_MODULE_3__.Slot, {
            ref: composedRefs
        }, children);
    });
    /*#__PURE__*/ Object.assign(CollectionSlot, {
        displayName: COLLECTION_SLOT_NAME
    });
    /* -----------------------------------------------------------------------------------------------
   * CollectionItem
   * ---------------------------------------------------------------------------------------------*/ const ITEM_SLOT_NAME = name + 'CollectionItemSlot';
    const ITEM_DATA_ATTR = 'data-radix-collection-item';
    const CollectionItemSlot = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().forwardRef((props, forwardedRef)=>{
        const { scope: scope , children: children , ...itemData } = props;
        const ref = react__WEBPACK_IMPORTED_MODULE_0___default().useRef(null);
        const composedRefs = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_2__.useComposedRefs)(forwardedRef, ref);
        const context = useCollectionContext(ITEM_SLOT_NAME, scope);
        react__WEBPACK_IMPORTED_MODULE_0___default().useEffect(()=>{
            context.itemMap.set(ref, {
                ref: ref,
                ...itemData
            });
            return ()=>void context.itemMap.delete(ref)
            ;
        });
        return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_slot__WEBPACK_IMPORTED_MODULE_3__.Slot, {
            [ITEM_DATA_ATTR]: '',
            ref: composedRefs
        }, children);
    });
    /*#__PURE__*/ Object.assign(CollectionItemSlot, {
        displayName: ITEM_SLOT_NAME
    });
    /* -----------------------------------------------------------------------------------------------
   * useCollection
   * ---------------------------------------------------------------------------------------------*/ function useCollection(scope) {
        const context = useCollectionContext(name + 'CollectionConsumer', scope);
        const getItems = react__WEBPACK_IMPORTED_MODULE_0___default().useCallback(()=>{
            const collectionNode = context.collectionRef.current;
            if (!collectionNode) return [];
            const orderedNodes = Array.from(collectionNode.querySelectorAll(\`[\${ITEM_DATA_ATTR}]\`));
            const items = Array.from(context.itemMap.values());
            const orderedItems = items.sort((a, b)=>orderedNodes.indexOf(a.ref.current) - orderedNodes.indexOf(b.ref.current)
            );
            return orderedItems;
        }, [
            context.collectionRef,
            context.itemMap
        ]);
        return getItems;
    }
    return [
        {
            Provider: CollectionProvider,
            Slot: CollectionSlot,
            ItemSlot: CollectionItemSlot
        },
        useCollection,
        createCollectionScope
    ];
}





//# sourceMappingURL=index.module.js.map
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 8396 characters]
//# sourceURL=webpack-internal:///../../../node_modules/@radix-ui/react-collection/dist/index.module.js
`);
              }
            ),
            /***/
            "../../../node_modules/@radix-ui/react-compose-refs/dist/index.module.js": (
              /*!*******************************************************************************!*\
                !*** ../../../node_modules/@radix-ui/react-compose-refs/dist/index.module.js ***!
                \*******************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "composeRefs": () => (/* binding */ $6ed0406888f73fc4$export$43e446d32b3d21af),
/* harmony export */   "useComposedRefs": () => (/* binding */ $6ed0406888f73fc4$export$c7b2cbe3552a0d05)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);



/**
 * Set a given ref to a given value
 * This utility takes care of different types of refs: callback refs and RefObject(s)
 */ function $6ed0406888f73fc4$var$setRef(ref, value) {
    if (typeof ref === 'function') ref(value);
    else if (ref !== null && ref !== undefined) ref.current = value;
}
/**
 * A utility to compose multiple refs together
 * Accepts callback refs and RefObject(s)
 */ function $6ed0406888f73fc4$export$43e446d32b3d21af(...refs) {
    return (node)=>refs.forEach((ref)=>$6ed0406888f73fc4$var$setRef(ref, node)
        )
    ;
}
/**
 * A custom hook that composes multiple refs
 * Accepts callback refs and RefObject(s)
 */ function $6ed0406888f73fc4$export$c7b2cbe3552a0d05(...refs) {
    // eslint-disable-next-line react-hooks/exhaustive-deps
    return (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)($6ed0406888f73fc4$export$43e446d32b3d21af(...refs), refs);
}





//# sourceMappingURL=index.module.js.map
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC1jb21wb3NlLXJlZnMvZGlzdC9pbmRleC5tb2R1bGUuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUF3RDs7O0FBR3hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGtEQUFrQjtBQUM3Qjs7Ozs7QUFLZ0k7QUFDaEkiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC1jb21wb3NlLXJlZnMvZGlzdC9pbmRleC5tb2R1bGUuanM/M2JiZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3VzZUNhbGxiYWNrIGFzICQzdnFtciR1c2VDYWxsYmFja30gZnJvbSBcInJlYWN0XCI7XG5cblxuLyoqXG4gKiBTZXQgYSBnaXZlbiByZWYgdG8gYSBnaXZlbiB2YWx1ZVxuICogVGhpcyB1dGlsaXR5IHRha2VzIGNhcmUgb2YgZGlmZmVyZW50IHR5cGVzIG9mIHJlZnM6IGNhbGxiYWNrIHJlZnMgYW5kIFJlZk9iamVjdChzKVxuICovIGZ1bmN0aW9uICQ2ZWQwNDA2ODg4ZjczZmM0JHZhciRzZXRSZWYocmVmLCB2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgcmVmID09PSAnZnVuY3Rpb24nKSByZWYodmFsdWUpO1xuICAgIGVsc2UgaWYgKHJlZiAhPT0gbnVsbCAmJiByZWYgIT09IHVuZGVmaW5lZCkgcmVmLmN1cnJlbnQgPSB2YWx1ZTtcbn1cbi8qKlxuICogQSB1dGlsaXR5IHRvIGNvbXBvc2UgbXVsdGlwbGUgcmVmcyB0b2dldGhlclxuICogQWNjZXB0cyBjYWxsYmFjayByZWZzIGFuZCBSZWZPYmplY3QocylcbiAqLyBmdW5jdGlvbiAkNmVkMDQwNjg4OGY3M2ZjNCRleHBvcnQkNDNlNDQ2ZDMyYjNkMjFhZiguLi5yZWZzKSB7XG4gICAgcmV0dXJuIChub2RlKT0+cmVmcy5mb3JFYWNoKChyZWYpPT4kNmVkMDQwNjg4OGY3M2ZjNCR2YXIkc2V0UmVmKHJlZiwgbm9kZSlcbiAgICAgICAgKVxuICAgIDtcbn1cbi8qKlxuICogQSBjdXN0b20gaG9vayB0aGF0IGNvbXBvc2VzIG11bHRpcGxlIHJlZnNcbiAqIEFjY2VwdHMgY2FsbGJhY2sgcmVmcyBhbmQgUmVmT2JqZWN0KHMpXG4gKi8gZnVuY3Rpb24gJDZlZDA0MDY4ODhmNzNmYzQkZXhwb3J0JGM3YjJjYmUzNTUyYTBkMDUoLi4ucmVmcykge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgICByZXR1cm4gJDN2cW1yJHVzZUNhbGxiYWNrKCQ2ZWQwNDA2ODg4ZjczZmM0JGV4cG9ydCQ0M2U0NDZkMzJiM2QyMWFmKC4uLnJlZnMpLCByZWZzKTtcbn1cblxuXG5cblxuZXhwb3J0IHskNmVkMDQwNjg4OGY3M2ZjNCRleHBvcnQkNDNlNDQ2ZDMyYjNkMjFhZiBhcyBjb21wb3NlUmVmcywgJDZlZDA0MDY4ODhmNzNmYzQkZXhwb3J0JGM3YjJjYmUzNTUyYTBkMDUgYXMgdXNlQ29tcG9zZWRSZWZzfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1vZHVsZS5qcy5tYXBcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==
//# sourceURL=webpack-internal:///../../../node_modules/@radix-ui/react-compose-refs/dist/index.module.js
`);
              }
            ),
            /***/
            "../../../node_modules/@radix-ui/react-context/dist/index.module.js": (
              /*!**************************************************************************!*\
                !*** ../../../node_modules/@radix-ui/react-context/dist/index.module.js ***!
                \**************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"createContext\": () => (/* binding */ $c512c27ab02ef895$export$fd42f52fd3ae1109),\n/* harmony export */   \"createContextScope\": () => (/* binding */ $c512c27ab02ef895$export$50c7b4e9d9f19c1)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n\n\n\nfunction $c512c27ab02ef895$export$fd42f52fd3ae1109(rootComponentName, defaultContext) {\n    const Context = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(defaultContext);\n    function Provider(props) {\n        const { children: children , ...context } = props; // Only re-memoize when prop values change\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n        const value = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>context\n        , Object.values(context));\n        return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(Context.Provider, {\n            value: value\n        }, children);\n    }\n    function useContext(consumerName) {\n        const context = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(Context);\n        if (context) return context;\n        if (defaultContext !== undefined) return defaultContext; // if a defaultContext wasn't specified, it's a required context.\n        throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n    }\n    Provider.displayName = rootComponentName + 'Provider';\n    return [\n        Provider,\n        useContext\n    ];\n}\n/* -------------------------------------------------------------------------------------------------\n * createContextScope\n * -----------------------------------------------------------------------------------------------*/ function $c512c27ab02ef895$export$50c7b4e9d9f19c1(scopeName, createContextScopeDeps = []) {\n    let defaultContexts = [];\n    /* -----------------------------------------------------------------------------------------------\n   * createContext\n   * ---------------------------------------------------------------------------------------------*/ function $c512c27ab02ef895$export$fd42f52fd3ae1109(rootComponentName, defaultContext) {\n        const BaseContext = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(defaultContext);\n        const index = defaultContexts.length;\n        defaultContexts = [\n            ...defaultContexts,\n            defaultContext\n        ];\n        function Provider(props) {\n            const { scope: scope , children: children , ...context } = props;\n            const Context = (scope === null || scope === void 0 ? void 0 : scope[scopeName][index]) || BaseContext; // Only re-memoize when prop values change\n            // eslint-disable-next-line react-hooks/exhaustive-deps\n            const value = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>context\n            , Object.values(context));\n            return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(Context.Provider, {\n                value: value\n            }, children);\n        }\n        function useContext(consumerName, scope) {\n            const Context = (scope === null || scope === void 0 ? void 0 : scope[scopeName][index]) || BaseContext;\n            const context = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(Context);\n            if (context) return context;\n            if (defaultContext !== undefined) return defaultContext; // if a defaultContext wasn't specified, it's a required context.\n            throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n        }\n        Provider.displayName = rootComponentName + 'Provider';\n        return [\n            Provider,\n            useContext\n        ];\n    }\n    /* -----------------------------------------------------------------------------------------------\n   * createScope\n   * ---------------------------------------------------------------------------------------------*/ const createScope = ()=>{\n        const scopeContexts = defaultContexts.map((defaultContext)=>{\n            return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(defaultContext);\n        });\n        return function useScope(scope) {\n            const contexts = (scope === null || scope === void 0 ? void 0 : scope[scopeName]) || scopeContexts;\n            return (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>({\n                    [`__scope${scopeName}`]: {\n                        ...scope,\n                        [scopeName]: contexts\n                    }\n                })\n            , [\n                scope,\n                contexts\n            ]);\n        };\n    };\n    createScope.scopeName = scopeName;\n    return [\n        $c512c27ab02ef895$export$fd42f52fd3ae1109,\n        $c512c27ab02ef895$var$composeContextScopes(createScope, ...createContextScopeDeps)\n    ];\n}\n/* -------------------------------------------------------------------------------------------------\n * composeContextScopes\n * -----------------------------------------------------------------------------------------------*/ function $c512c27ab02ef895$var$composeContextScopes(...scopes) {\n    const baseScope = scopes[0];\n    if (scopes.length === 1) return baseScope;\n    const createScope1 = ()=>{\n        const scopeHooks = scopes.map((createScope)=>({\n                useScope: createScope(),\n                scopeName: createScope.scopeName\n            })\n        );\n        return function useComposedScopes(overrideScopes) {\n            const nextScopes1 = scopeHooks.reduce((nextScopes, { useScope: useScope , scopeName: scopeName  })=>{\n                // We are calling a hook inside a callback which React warns against to avoid inconsistent\n                // renders, however, scoping doesn't have render side effects so we ignore the rule.\n                // eslint-disable-next-line react-hooks/rules-of-hooks\n                const scopeProps = useScope(overrideScopes);\n                const currentScope = scopeProps[`__scope${scopeName}`];\n                return {\n                    ...nextScopes,\n                    ...currentScope\n                };\n            }, {});\n            return (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>({\n                    [`__scope${baseScope.scopeName}`]: nextScopes1\n                })\n            , [\n                nextScopes1\n            ]);\n        };\n    };\n    createScope1.scopeName = baseScope.scopeName;\n    return createScope1;\n}\n\n\n\n\n\n//# sourceMappingURL=index.module.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 10020 characters]\n//# sourceURL=webpack-internal:///../../../node_modules/@radix-ui/react-context/dist/index.module.js\n");
              }
            ),
            /***/
            "../../../node_modules/@radix-ui/react-direction/dist/index.module.js": (
              /*!****************************************************************************!*\
                !*** ../../../node_modules/@radix-ui/react-direction/dist/index.module.js ***!
                \****************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "DirectionProvider": () => (/* binding */ $f631663db3294ace$export$c760c09fdd558351),
/* harmony export */   "Provider": () => (/* binding */ $f631663db3294ace$export$2881499e37b75b9a),
/* harmony export */   "useDirection": () => (/* binding */ $f631663db3294ace$export$b39126d51d94e6f3)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);



const $f631663db3294ace$var$DirectionContext = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(undefined);
/* -------------------------------------------------------------------------------------------------
 * Direction
 * -----------------------------------------------------------------------------------------------*/ const $f631663db3294ace$export$c760c09fdd558351 = (props)=>{
    const { dir: dir , children: children  } = props;
    return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)($f631663db3294ace$var$DirectionContext.Provider, {
        value: dir
    }, children);
};
/* -----------------------------------------------------------------------------------------------*/ function $f631663db3294ace$export$b39126d51d94e6f3(localDir) {
    const globalDir = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)($f631663db3294ace$var$DirectionContext);
    return localDir || globalDir || 'ltr';
}
const $f631663db3294ace$export$2881499e37b75b9a = $f631663db3294ace$export$c760c09fdd558351;





//# sourceMappingURL=index.module.js.map
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC1kaXJlY3Rpb24vZGlzdC9pbmRleC5tb2R1bGUuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBb0k7OztBQUdwSSw2REFBNkQsb0RBQW9CO0FBQ2pGO0FBQ0E7QUFDQTtBQUNBLFlBQVksaUNBQWlDO0FBQzdDLHlCQUF5QixvREFBb0I7QUFDN0M7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLHNCQUFzQixpREFBaUI7QUFDdkM7QUFDQTtBQUNBOzs7OztBQUswTDtBQUMxTCIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LWRpcmVjdGlvbi9kaXN0L2luZGV4Lm1vZHVsZS5qcz82NDFmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Y3JlYXRlQ29udGV4dCBhcyAkN0dqY2QkY3JlYXRlQ29udGV4dCwgY3JlYXRlRWxlbWVudCBhcyAkN0dqY2QkY3JlYXRlRWxlbWVudCwgdXNlQ29udGV4dCBhcyAkN0dqY2QkdXNlQ29udGV4dH0gZnJvbSBcInJlYWN0XCI7XG5cblxuY29uc3QgJGY2MzE2NjNkYjMyOTRhY2UkdmFyJERpcmVjdGlvbkNvbnRleHQgPSAvKiNfX1BVUkVfXyovICQ3R2pjZCRjcmVhdGVDb250ZXh0KHVuZGVmaW5lZCk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBEaXJlY3Rpb25cbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGY2MzE2NjNkYjMyOTRhY2UkZXhwb3J0JGM3NjBjMDlmZGQ1NTgzNTEgPSAocHJvcHMpPT57XG4gICAgY29uc3QgeyBkaXI6IGRpciAsIGNoaWxkcmVuOiBjaGlsZHJlbiAgfSA9IHByb3BzO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ3R2pjZCRjcmVhdGVFbGVtZW50KCRmNjMxNjYzZGIzMjk0YWNlJHZhciREaXJlY3Rpb25Db250ZXh0LlByb3ZpZGVyLCB7XG4gICAgICAgIHZhbHVlOiBkaXJcbiAgICB9LCBjaGlsZHJlbik7XG59O1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBmdW5jdGlvbiAkZjYzMTY2M2RiMzI5NGFjZSRleHBvcnQkYjM5MTI2ZDUxZDk0ZTZmMyhsb2NhbERpcikge1xuICAgIGNvbnN0IGdsb2JhbERpciA9ICQ3R2pjZCR1c2VDb250ZXh0KCRmNjMxNjYzZGIzMjk0YWNlJHZhciREaXJlY3Rpb25Db250ZXh0KTtcbiAgICByZXR1cm4gbG9jYWxEaXIgfHwgZ2xvYmFsRGlyIHx8ICdsdHInO1xufVxuY29uc3QgJGY2MzE2NjNkYjMyOTRhY2UkZXhwb3J0JDI4ODE0OTllMzdiNzViOWEgPSAkZjYzMTY2M2RiMzI5NGFjZSRleHBvcnQkYzc2MGMwOWZkZDU1ODM1MTtcblxuXG5cblxuZXhwb3J0IHskZjYzMTY2M2RiMzI5NGFjZSRleHBvcnQkYjM5MTI2ZDUxZDk0ZTZmMyBhcyB1c2VEaXJlY3Rpb24sICRmNjMxNjYzZGIzMjk0YWNlJGV4cG9ydCQyODgxNDk5ZTM3Yjc1YjlhIGFzIFByb3ZpZGVyLCAkZjYzMTY2M2RiMzI5NGFjZSRleHBvcnQkYzc2MGMwOWZkZDU1ODM1MSBhcyBEaXJlY3Rpb25Qcm92aWRlcn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tb2R1bGUuanMubWFwXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=
//# sourceURL=webpack-internal:///../../../node_modules/@radix-ui/react-direction/dist/index.module.js
`);
              }
            ),
            /***/
            "../../../node_modules/@radix-ui/react-dismissable-layer/dist/index.module.js": (
              /*!************************************************************************************!*\
                !*** ../../../node_modules/@radix-ui/react-dismissable-layer/dist/index.module.js ***!
                \************************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "Branch": () => (/* binding */ $5cb92bef7577960e$export$aecb2ddcb55c95be),
/* harmony export */   "DismissableLayer": () => (/* binding */ $5cb92bef7577960e$export$177fb62ff3ec1f22),
/* harmony export */   "DismissableLayerBranch": () => (/* binding */ $5cb92bef7577960e$export$4d5eb2109db14228),
/* harmony export */   "Root": () => (/* binding */ $5cb92bef7577960e$export$be92b6f5f03c0fe9)
/* harmony export */ });
/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ "../../../node_modules/@babel/runtime/helpers/esm/extends.js");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _radix_ui_primitive__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @radix-ui/primitive */ "../../../node_modules/@radix-ui/primitive/dist/index.module.js");
/* harmony import */ var _radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @radix-ui/react-primitive */ "../../../node_modules/@radix-ui/react-primitive/dist/index.module.js");
/* harmony import */ var _radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @radix-ui/react-compose-refs */ "../../../node_modules/@radix-ui/react-compose-refs/dist/index.module.js");
/* harmony import */ var _radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @radix-ui/react-use-callback-ref */ "../../../node_modules/@radix-ui/react-use-callback-ref/dist/index.module.js");
/* harmony import */ var _radix_ui_react_use_escape_keydown__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @radix-ui/react-use-escape-keydown */ "../../../node_modules/@radix-ui/react-use-escape-keydown/dist/index.module.js");















/* -------------------------------------------------------------------------------------------------
 * DismissableLayer
 * -----------------------------------------------------------------------------------------------*/ const $5cb92bef7577960e$var$DISMISSABLE_LAYER_NAME = 'DismissableLayer';
const $5cb92bef7577960e$var$CONTEXT_UPDATE = 'dismissableLayer.update';
const $5cb92bef7577960e$var$POINTER_DOWN_OUTSIDE = 'dismissableLayer.pointerDownOutside';
const $5cb92bef7577960e$var$FOCUS_OUTSIDE = 'dismissableLayer.focusOutside';
let $5cb92bef7577960e$var$originalBodyPointerEvents;
const $5cb92bef7577960e$var$DismissableLayerContext = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createContext)({
    layers: new Set(),
    layersWithOutsidePointerEventsDisabled: new Set(),
    branches: new Set()
});
const $5cb92bef7577960e$export$177fb62ff3ec1f22 = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)((props, forwardedRef)=>{
    var _node$ownerDocument;
    const { disableOutsidePointerEvents: disableOutsidePointerEvents = false , onEscapeKeyDown: onEscapeKeyDown , onPointerDownOutside: onPointerDownOutside , onFocusOutside: onFocusOutside , onInteractOutside: onInteractOutside , onDismiss: onDismiss , ...layerProps } = props;
    const context = (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)($5cb92bef7577960e$var$DismissableLayerContext);
    const [node1, setNode] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);
    const ownerDocument = (_node$ownerDocument = node1 === null || node1 === void 0 ? void 0 : node1.ownerDocument) !== null && _node$ownerDocument !== void 0 ? _node$ownerDocument : globalThis === null || globalThis === void 0 ? void 0 : globalThis.document;
    const [, force] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({});
    const composedRefs = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_2__.useComposedRefs)(forwardedRef, (node)=>setNode(node)
    );
    const layers = Array.from(context.layers);
    const [highestLayerWithOutsidePointerEventsDisabled] = [
        ...context.layersWithOutsidePointerEventsDisabled
    ].slice(-1); // prettier-ignore
    const highestLayerWithOutsidePointerEventsDisabledIndex = layers.indexOf(highestLayerWithOutsidePointerEventsDisabled); // prettier-ignore
    const index = node1 ? layers.indexOf(node1) : -1;
    const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0;
    const isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex;
    const pointerDownOutside = $5cb92bef7577960e$var$usePointerDownOutside((event)=>{
        const target = event.target;
        const isPointerDownOnBranch = [
            ...context.branches
        ].some((branch)=>branch.contains(target)
        );
        if (!isPointerEventsEnabled || isPointerDownOnBranch) return;
        onPointerDownOutside === null || onPointerDownOutside === void 0 || onPointerDownOutside(event);
        onInteractOutside === null || onInteractOutside === void 0 || onInteractOutside(event);
        if (!event.defaultPrevented) onDismiss === null || onDismiss === void 0 || onDismiss();
    }, ownerDocument);
    const focusOutside = $5cb92bef7577960e$var$useFocusOutside((event)=>{
        const target = event.target;
        const isFocusInBranch = [
            ...context.branches
        ].some((branch)=>branch.contains(target)
        );
        if (isFocusInBranch) return;
        onFocusOutside === null || onFocusOutside === void 0 || onFocusOutside(event);
        onInteractOutside === null || onInteractOutside === void 0 || onInteractOutside(event);
        if (!event.defaultPrevented) onDismiss === null || onDismiss === void 0 || onDismiss();
    }, ownerDocument);
    (0,_radix_ui_react_use_escape_keydown__WEBPACK_IMPORTED_MODULE_3__.useEscapeKeydown)((event)=>{
        const isHighestLayer = index === context.layers.size - 1;
        if (!isHighestLayer) return;
        onEscapeKeyDown === null || onEscapeKeyDown === void 0 || onEscapeKeyDown(event);
        if (!event.defaultPrevented && onDismiss) {
            event.preventDefault();
            onDismiss();
        }
    }, ownerDocument);
    (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{
        if (!node1) return;
        if (disableOutsidePointerEvents) {
            if (context.layersWithOutsidePointerEventsDisabled.size === 0) {
                $5cb92bef7577960e$var$originalBodyPointerEvents = ownerDocument.body.style.pointerEvents;
                ownerDocument.body.style.pointerEvents = 'none';
            }
            context.layersWithOutsidePointerEventsDisabled.add(node1);
        }
        context.layers.add(node1);
        $5cb92bef7577960e$var$dispatchUpdate();
        return ()=>{
            if (disableOutsidePointerEvents && context.layersWithOutsidePointerEventsDisabled.size === 1) ownerDocument.body.style.pointerEvents = $5cb92bef7577960e$var$originalBodyPointerEvents;
        };
    }, [
        node1,
        ownerDocument,
        disableOutsidePointerEvents,
        context
    ]);
    /**
   * We purposefully prevent combining this effect with the \`disableOutsidePointerEvents\` effect
   * because a change to \`disableOutsidePointerEvents\` would remove this layer from the stack
   * and add it to the end again so the layering order wouldn't be _creation order_.
   * We only want them to be removed from context stacks when unmounted.
   */ (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{
        return ()=>{
            if (!node1) return;
            context.layers.delete(node1);
            context.layersWithOutsidePointerEventsDisabled.delete(node1);
            $5cb92bef7577960e$var$dispatchUpdate();
        };
    }, [
        node1,
        context
    ]);
    (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{
        const handleUpdate = ()=>force({})
        ;
        document.addEventListener($5cb92bef7577960e$var$CONTEXT_UPDATE, handleUpdate);
        return ()=>document.removeEventListener($5cb92bef7577960e$var$CONTEXT_UPDATE, handleUpdate)
        ;
    }, []);
    return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_4__.Primitive.div, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, layerProps, {
        ref: composedRefs,
        style: {
            pointerEvents: isBodyPointerEventsDisabled ? isPointerEventsEnabled ? 'auto' : 'none' : undefined,
            ...props.style
        },
        onFocusCapture: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_5__.composeEventHandlers)(props.onFocusCapture, focusOutside.onFocusCapture),
        onBlurCapture: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_5__.composeEventHandlers)(props.onBlurCapture, focusOutside.onBlurCapture),
        onPointerDownCapture: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_5__.composeEventHandlers)(props.onPointerDownCapture, pointerDownOutside.onPointerDownCapture)
    }));
});
/*#__PURE__*/ Object.assign($5cb92bef7577960e$export$177fb62ff3ec1f22, {
    displayName: $5cb92bef7577960e$var$DISMISSABLE_LAYER_NAME
});
/* -------------------------------------------------------------------------------------------------
 * DismissableLayerBranch
 * -----------------------------------------------------------------------------------------------*/ const $5cb92bef7577960e$var$BRANCH_NAME = 'DismissableLayerBranch';
const $5cb92bef7577960e$export$4d5eb2109db14228 = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)((props, forwardedRef)=>{
    const context = (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)($5cb92bef7577960e$var$DismissableLayerContext);
    const ref = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);
    const composedRefs = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_2__.useComposedRefs)(forwardedRef, ref);
    (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{
        const node = ref.current;
        if (node) {
            context.branches.add(node);
            return ()=>{
                context.branches.delete(node);
            };
        }
    }, [
        context.branches
    ]);
    return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_4__.Primitive.div, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, props, {
        ref: composedRefs
    }));
});
/*#__PURE__*/ Object.assign($5cb92bef7577960e$export$4d5eb2109db14228, {
    displayName: $5cb92bef7577960e$var$BRANCH_NAME
});
/* -----------------------------------------------------------------------------------------------*/ /**
 * Listens for \`pointerdown\` outside a react subtree. We use \`pointerdown\` rather than \`pointerup\`
 * to mimic layer dismissing behaviour present in OS.
 * Returns props to pass to the node we want to check for outside events.
 */ function $5cb92bef7577960e$var$usePointerDownOutside(onPointerDownOutside, ownerDocument = globalThis === null || globalThis === void 0 ? void 0 : globalThis.document) {
    const handlePointerDownOutside = (0,_radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_6__.useCallbackRef)(onPointerDownOutside);
    const isPointerInsideReactTreeRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(false);
    const handleClickRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(()=>{});
    (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{
        const handlePointerDown = (event)=>{
            if (event.target && !isPointerInsideReactTreeRef.current) {
                const eventDetail = {
                    originalEvent: event
                };
                function handleAndDispatchPointerDownOutsideEvent() {
                    $5cb92bef7577960e$var$handleAndDispatchCustomEvent($5cb92bef7577960e$var$POINTER_DOWN_OUTSIDE, handlePointerDownOutside, eventDetail, {
                        discrete: true
                    });
                }
                /**
         * On touch devices, we need to wait for a click event because browsers implement
         * a ~350ms delay between the time the user stops touching the display and when the
         * browser executres events. We need to ensure we don't reactivate pointer-events within
         * this timeframe otherwise the browser may execute events that should have been prevented.
         *
         * Additionally, this also lets us deal automatically with cancellations when a click event
         * isn't raised because the page was considered scrolled/drag-scrolled, long-pressed, etc.
         *
         * This is why we also continuously remove the previous listener, because we cannot be
         * certain that it was raised, and therefore cleaned-up.
         */ if (event.pointerType === 'touch') {
                    ownerDocument.removeEventListener('click', handleClickRef.current);
                    handleClickRef.current = handleAndDispatchPointerDownOutsideEvent;
                    ownerDocument.addEventListener('click', handleClickRef.current, {
                        once: true
                    });
                } else handleAndDispatchPointerDownOutsideEvent();
            }
            isPointerInsideReactTreeRef.current = false;
        };
        /**
     * if this hook executes in a component that mounts via a \`pointerdown\` event, the event
     * would bubble up to the document and trigger a \`pointerDownOutside\` event. We avoid
     * this by delaying the event listener registration on the document.
     * This is not React specific, but rather how the DOM works, ie:
     * \`\`\`
     * button.addEventListener('pointerdown', () => {
     *   console.log('I will log');
     *   document.addEventListener('pointerdown', () => {
     *     console.log('I will also log');
     *   })
     * });
     */ const timerId = window.setTimeout(()=>{
            ownerDocument.addEventListener('pointerdown', handlePointerDown);
        }, 0);
        return ()=>{
            window.clearTimeout(timerId);
            ownerDocument.removeEventListener('pointerdown', handlePointerDown);
            ownerDocument.removeEventListener('click', handleClickRef.current);
        };
    }, [
        ownerDocument,
        handlePointerDownOutside
    ]);
    return {
        // ensures we check React component tree (not just DOM tree)
        onPointerDownCapture: ()=>isPointerInsideReactTreeRef.current = true
    };
}
/**
 * Listens for when focus happens outside a react subtree.
 * Returns props to pass to the root (node) of the subtree we want to check.
 */ function $5cb92bef7577960e$var$useFocusOutside(onFocusOutside, ownerDocument = globalThis === null || globalThis === void 0 ? void 0 : globalThis.document) {
    const handleFocusOutside = (0,_radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_6__.useCallbackRef)(onFocusOutside);
    const isFocusInsideReactTreeRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(false);
    (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{
        const handleFocus = (event)=>{
            if (event.target && !isFocusInsideReactTreeRef.current) {
                const eventDetail = {
                    originalEvent: event
                };
                $5cb92bef7577960e$var$handleAndDispatchCustomEvent($5cb92bef7577960e$var$FOCUS_OUTSIDE, handleFocusOutside, eventDetail, {
                    discrete: false
                });
            }
        };
        ownerDocument.addEventListener('focusin', handleFocus);
        return ()=>ownerDocument.removeEventListener('focusin', handleFocus)
        ;
    }, [
        ownerDocument,
        handleFocusOutside
    ]);
    return {
        onFocusCapture: ()=>isFocusInsideReactTreeRef.current = true
        ,
        onBlurCapture: ()=>isFocusInsideReactTreeRef.current = false
    };
}
function $5cb92bef7577960e$var$dispatchUpdate() {
    const event = new CustomEvent($5cb92bef7577960e$var$CONTEXT_UPDATE);
    document.dispatchEvent(event);
}
function $5cb92bef7577960e$var$handleAndDispatchCustomEvent(name, handler, detail, { discrete: discrete  }) {
    const target = detail.originalEvent.target;
    const event = new CustomEvent(name, {
        bubbles: false,
        cancelable: true,
        detail: detail
    });
    if (handler) target.addEventListener(name, handler, {
        once: true
    });
    if (discrete) (0,_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_4__.dispatchDiscreteCustomEvent)(target, event);
    else target.dispatchEvent(event);
}
const $5cb92bef7577960e$export$be92b6f5f03c0fe9 = $5cb92bef7577960e$export$177fb62ff3ec1f22;
const $5cb92bef7577960e$export$aecb2ddcb55c95be = $5cb92bef7577960e$export$4d5eb2109db14228;





//# sourceMappingURL=index.module.js.map
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 22992 characters]
//# sourceURL=webpack-internal:///../../../node_modules/@radix-ui/react-dismissable-layer/dist/index.module.js
`);
              }
            ),
            /***/
            "../../../node_modules/@radix-ui/react-focus-guards/dist/index.module.js": (
              /*!*******************************************************************************!*\
                !*** ../../../node_modules/@radix-ui/react-focus-guards/dist/index.module.js ***!
                \*******************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "FocusGuards": () => (/* binding */ $3db38b7d1fb3fe6a$export$ac5b58043b79449b),
/* harmony export */   "Root": () => (/* binding */ $3db38b7d1fb3fe6a$export$be92b6f5f03c0fe9),
/* harmony export */   "useFocusGuards": () => (/* binding */ $3db38b7d1fb3fe6a$export$b7ece24a22aeda8c)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);



/** Number of components which have requested interest to have focus guards */ let $3db38b7d1fb3fe6a$var$count = 0;
function $3db38b7d1fb3fe6a$export$ac5b58043b79449b(props) {
    $3db38b7d1fb3fe6a$export$b7ece24a22aeda8c();
    return props.children;
}
/**
 * Injects a pair of focus guards at the edges of the whole DOM tree
 * to ensure \`focusin\` & \`focusout\` events can be caught consistently.
 */ function $3db38b7d1fb3fe6a$export$b7ece24a22aeda8c() {
    (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{
        var _edgeGuards$, _edgeGuards$2;
        const edgeGuards = document.querySelectorAll('[data-radix-focus-guard]');
        document.body.insertAdjacentElement('afterbegin', (_edgeGuards$ = edgeGuards[0]) !== null && _edgeGuards$ !== void 0 ? _edgeGuards$ : $3db38b7d1fb3fe6a$var$createFocusGuard());
        document.body.insertAdjacentElement('beforeend', (_edgeGuards$2 = edgeGuards[1]) !== null && _edgeGuards$2 !== void 0 ? _edgeGuards$2 : $3db38b7d1fb3fe6a$var$createFocusGuard());
        $3db38b7d1fb3fe6a$var$count++;
        return ()=>{
            if ($3db38b7d1fb3fe6a$var$count === 1) document.querySelectorAll('[data-radix-focus-guard]').forEach((node)=>node.remove()
            );
            $3db38b7d1fb3fe6a$var$count--;
        };
    }, []);
}
function $3db38b7d1fb3fe6a$var$createFocusGuard() {
    const element = document.createElement('span');
    element.setAttribute('data-radix-focus-guard', '');
    element.tabIndex = 0;
    element.style.cssText = 'outline: none; opacity: 0; position: fixed; pointer-events: none';
    return element;
}
const $3db38b7d1fb3fe6a$export$be92b6f5f03c0fe9 = $3db38b7d1fb3fe6a$export$ac5b58043b79449b;





//# sourceMappingURL=index.module.js.map
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC1mb2N1cy1ndWFyZHMvZGlzdC9pbmRleC5tb2R1bGUuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBb0Q7OztBQUdwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLGdEQUFnQjtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNENBQTRDLFlBQVksaUJBQWlCO0FBQ3pFO0FBQ0E7QUFDQTs7Ozs7QUFLa0w7QUFDbEwiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC1mb2N1cy1ndWFyZHMvZGlzdC9pbmRleC5tb2R1bGUuanM/MTczOSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3VzZUVmZmVjdCBhcyAkMXdFcnokdXNlRWZmZWN0fSBmcm9tIFwicmVhY3RcIjtcblxuXG4vKiogTnVtYmVyIG9mIGNvbXBvbmVudHMgd2hpY2ggaGF2ZSByZXF1ZXN0ZWQgaW50ZXJlc3QgdG8gaGF2ZSBmb2N1cyBndWFyZHMgKi8gbGV0ICQzZGIzOGI3ZDFmYjNmZTZhJHZhciRjb3VudCA9IDA7XG5mdW5jdGlvbiAkM2RiMzhiN2QxZmIzZmU2YSRleHBvcnQkYWM1YjU4MDQzYjc5NDQ5Yihwcm9wcykge1xuICAgICQzZGIzOGI3ZDFmYjNmZTZhJGV4cG9ydCRiN2VjZTI0YTIyYWVkYThjKCk7XG4gICAgcmV0dXJuIHByb3BzLmNoaWxkcmVuO1xufVxuLyoqXG4gKiBJbmplY3RzIGEgcGFpciBvZiBmb2N1cyBndWFyZHMgYXQgdGhlIGVkZ2VzIG9mIHRoZSB3aG9sZSBET00gdHJlZVxuICogdG8gZW5zdXJlIGBmb2N1c2luYCAmIGBmb2N1c291dGAgZXZlbnRzIGNhbiBiZSBjYXVnaHQgY29uc2lzdGVudGx5LlxuICovIGZ1bmN0aW9uICQzZGIzOGI3ZDFmYjNmZTZhJGV4cG9ydCRiN2VjZTI0YTIyYWVkYThjKCkge1xuICAgICQxd0VyeiR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgdmFyIF9lZGdlR3VhcmRzJCwgX2VkZ2VHdWFyZHMkMjtcbiAgICAgICAgY29uc3QgZWRnZUd1YXJkcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLXJhZGl4LWZvY3VzLWd1YXJkXScpO1xuICAgICAgICBkb2N1bWVudC5ib2R5Lmluc2VydEFkamFjZW50RWxlbWVudCgnYWZ0ZXJiZWdpbicsIChfZWRnZUd1YXJkcyQgPSBlZGdlR3VhcmRzWzBdKSAhPT0gbnVsbCAmJiBfZWRnZUd1YXJkcyQgIT09IHZvaWQgMCA/IF9lZGdlR3VhcmRzJCA6ICQzZGIzOGI3ZDFmYjNmZTZhJHZhciRjcmVhdGVGb2N1c0d1YXJkKCkpO1xuICAgICAgICBkb2N1bWVudC5ib2R5Lmluc2VydEFkamFjZW50RWxlbWVudCgnYmVmb3JlZW5kJywgKF9lZGdlR3VhcmRzJDIgPSBlZGdlR3VhcmRzWzFdKSAhPT0gbnVsbCAmJiBfZWRnZUd1YXJkcyQyICE9PSB2b2lkIDAgPyBfZWRnZUd1YXJkcyQyIDogJDNkYjM4YjdkMWZiM2ZlNmEkdmFyJGNyZWF0ZUZvY3VzR3VhcmQoKSk7XG4gICAgICAgICQzZGIzOGI3ZDFmYjNmZTZhJHZhciRjb3VudCsrO1xuICAgICAgICByZXR1cm4gKCk9PntcbiAgICAgICAgICAgIGlmICgkM2RiMzhiN2QxZmIzZmU2YSR2YXIkY291bnQgPT09IDEpIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLXJhZGl4LWZvY3VzLWd1YXJkXScpLmZvckVhY2goKG5vZGUpPT5ub2RlLnJlbW92ZSgpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgJDNkYjM4YjdkMWZiM2ZlNmEkdmFyJGNvdW50LS07XG4gICAgICAgIH07XG4gICAgfSwgW10pO1xufVxuZnVuY3Rpb24gJDNkYjM4YjdkMWZiM2ZlNmEkdmFyJGNyZWF0ZUZvY3VzR3VhcmQoKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnZGF0YS1yYWRpeC1mb2N1cy1ndWFyZCcsICcnKTtcbiAgICBlbGVtZW50LnRhYkluZGV4ID0gMDtcbiAgICBlbGVtZW50LnN0eWxlLmNzc1RleHQgPSAnb3V0bGluZTogbm9uZTsgb3BhY2l0eTogMDsgcG9zaXRpb246IGZpeGVkOyBwb2ludGVyLWV2ZW50czogbm9uZSc7XG4gICAgcmV0dXJuIGVsZW1lbnQ7XG59XG5jb25zdCAkM2RiMzhiN2QxZmIzZmU2YSRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSA9ICQzZGIzOGI3ZDFmYjNmZTZhJGV4cG9ydCRhYzViNTgwNDNiNzk0NDliO1xuXG5cblxuXG5leHBvcnQgeyQzZGIzOGI3ZDFmYjNmZTZhJGV4cG9ydCRhYzViNTgwNDNiNzk0NDliIGFzIEZvY3VzR3VhcmRzLCAkM2RiMzhiN2QxZmIzZmU2YSRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSBhcyBSb290LCAkM2RiMzhiN2QxZmIzZmU2YSRleHBvcnQkYjdlY2UyNGEyMmFlZGE4YyBhcyB1c2VGb2N1c0d1YXJkc307XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tb2R1bGUuanMubWFwXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=
//# sourceURL=webpack-internal:///../../../node_modules/@radix-ui/react-focus-guards/dist/index.module.js
`);
              }
            ),
            /***/
            "../../../node_modules/@radix-ui/react-focus-scope/dist/index.module.js": (
              /*!******************************************************************************!*\
                !*** ../../../node_modules/@radix-ui/react-focus-scope/dist/index.module.js ***!
                \******************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "FocusScope": () => (/* binding */ $d3863c46a17e8a28$export$20e40289641fbbb6),
/* harmony export */   "Root": () => (/* binding */ $d3863c46a17e8a28$export$be92b6f5f03c0fe9)
/* harmony export */ });
/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ "../../../node_modules/@babel/runtime/helpers/esm/extends.js");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @radix-ui/react-compose-refs */ "../../../node_modules/@radix-ui/react-compose-refs/dist/index.module.js");
/* harmony import */ var _radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @radix-ui/react-primitive */ "../../../node_modules/@radix-ui/react-primitive/dist/index.module.js");
/* harmony import */ var _radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @radix-ui/react-use-callback-ref */ "../../../node_modules/@radix-ui/react-use-callback-ref/dist/index.module.js");











const $d3863c46a17e8a28$var$AUTOFOCUS_ON_MOUNT = 'focusScope.autoFocusOnMount';
const $d3863c46a17e8a28$var$AUTOFOCUS_ON_UNMOUNT = 'focusScope.autoFocusOnUnmount';
const $d3863c46a17e8a28$var$EVENT_OPTIONS = {
    bubbles: false,
    cancelable: true
};
/* -------------------------------------------------------------------------------------------------
 * FocusScope
 * -----------------------------------------------------------------------------------------------*/ const $d3863c46a17e8a28$var$FOCUS_SCOPE_NAME = 'FocusScope';
const $d3863c46a17e8a28$export$20e40289641fbbb6 = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)((props, forwardedRef)=>{
    const { loop: loop = false , trapped: trapped = false , onMountAutoFocus: onMountAutoFocusProp , onUnmountAutoFocus: onUnmountAutoFocusProp , ...scopeProps } = props;
    const [container1, setContainer] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);
    const onMountAutoFocus = (0,_radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_2__.useCallbackRef)(onMountAutoFocusProp);
    const onUnmountAutoFocus = (0,_radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_2__.useCallbackRef)(onUnmountAutoFocusProp);
    const lastFocusedElementRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);
    const composedRefs = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_3__.useComposedRefs)(forwardedRef, (node)=>setContainer(node)
    );
    const focusScope = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)({
        paused: false,
        pause () {
            this.paused = true;
        },
        resume () {
            this.paused = false;
        }
    }).current; // Takes care of trapping focus if focus is moved outside programmatically for example
    (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{
        if (trapped) {
            function handleFocusIn(event) {
                if (focusScope.paused || !container1) return;
                const target = event.target;
                if (container1.contains(target)) lastFocusedElementRef.current = target;
                else $d3863c46a17e8a28$var$focus(lastFocusedElementRef.current, {
                    select: true
                });
            }
            function handleFocusOut(event) {
                if (focusScope.paused || !container1) return;
                if (!container1.contains(event.relatedTarget)) $d3863c46a17e8a28$var$focus(lastFocusedElementRef.current, {
                    select: true
                });
            }
            document.addEventListener('focusin', handleFocusIn);
            document.addEventListener('focusout', handleFocusOut);
            return ()=>{
                document.removeEventListener('focusin', handleFocusIn);
                document.removeEventListener('focusout', handleFocusOut);
            };
        }
    }, [
        trapped,
        container1,
        focusScope.paused
    ]);
    (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{
        if (container1) {
            $d3863c46a17e8a28$var$focusScopesStack.add(focusScope);
            const previouslyFocusedElement = document.activeElement;
            const hasFocusedCandidate = container1.contains(previouslyFocusedElement);
            if (!hasFocusedCandidate) {
                const mountEvent = new CustomEvent($d3863c46a17e8a28$var$AUTOFOCUS_ON_MOUNT, $d3863c46a17e8a28$var$EVENT_OPTIONS);
                container1.addEventListener($d3863c46a17e8a28$var$AUTOFOCUS_ON_MOUNT, onMountAutoFocus);
                container1.dispatchEvent(mountEvent);
                if (!mountEvent.defaultPrevented) {
                    $d3863c46a17e8a28$var$focusFirst($d3863c46a17e8a28$var$removeLinks($d3863c46a17e8a28$var$getTabbableCandidates(container1)), {
                        select: true
                    });
                    if (document.activeElement === previouslyFocusedElement) $d3863c46a17e8a28$var$focus(container1);
                }
            }
            return ()=>{
                container1.removeEventListener($d3863c46a17e8a28$var$AUTOFOCUS_ON_MOUNT, onMountAutoFocus); // We hit a react bug (fixed in v17) with focusing in unmount.
                // We need to delay the focus a little to get around it for now.
                // See: https://github.com/facebook/react/issues/17894
                setTimeout(()=>{
                    const unmountEvent = new CustomEvent($d3863c46a17e8a28$var$AUTOFOCUS_ON_UNMOUNT, $d3863c46a17e8a28$var$EVENT_OPTIONS);
                    container1.addEventListener($d3863c46a17e8a28$var$AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);
                    container1.dispatchEvent(unmountEvent);
                    if (!unmountEvent.defaultPrevented) $d3863c46a17e8a28$var$focus(previouslyFocusedElement !== null && previouslyFocusedElement !== void 0 ? previouslyFocusedElement : document.body, {
                        select: true
                    });
                     // we need to remove the listener after we \`dispatchEvent\`
                    container1.removeEventListener($d3863c46a17e8a28$var$AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);
                    $d3863c46a17e8a28$var$focusScopesStack.remove(focusScope);
                }, 0);
            };
        }
    }, [
        container1,
        onMountAutoFocus,
        onUnmountAutoFocus,
        focusScope
    ]); // Takes care of looping focus (when tabbing whilst at the edges)
    const handleKeyDown = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)((event)=>{
        if (!loop && !trapped) return;
        if (focusScope.paused) return;
        const isTabKey = event.key === 'Tab' && !event.altKey && !event.ctrlKey && !event.metaKey;
        const focusedElement = document.activeElement;
        if (isTabKey && focusedElement) {
            const container = event.currentTarget;
            const [first, last] = $d3863c46a17e8a28$var$getTabbableEdges(container);
            const hasTabbableElementsInside = first && last; // we can only wrap focus if we have tabbable edges
            if (!hasTabbableElementsInside) {
                if (focusedElement === container) event.preventDefault();
            } else {
                if (!event.shiftKey && focusedElement === last) {
                    event.preventDefault();
                    if (loop) $d3863c46a17e8a28$var$focus(first, {
                        select: true
                    });
                } else if (event.shiftKey && focusedElement === first) {
                    event.preventDefault();
                    if (loop) $d3863c46a17e8a28$var$focus(last, {
                        select: true
                    });
                }
            }
        }
    }, [
        loop,
        trapped,
        focusScope.paused
    ]);
    return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_4__.Primitive.div, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({
        tabIndex: -1
    }, scopeProps, {
        ref: composedRefs,
        onKeyDown: handleKeyDown
    }));
});
/*#__PURE__*/ Object.assign($d3863c46a17e8a28$export$20e40289641fbbb6, {
    displayName: $d3863c46a17e8a28$var$FOCUS_SCOPE_NAME
});
/* -------------------------------------------------------------------------------------------------
 * Utils
 * -----------------------------------------------------------------------------------------------*/ /**
 * Attempts focusing the first element in a list of candidates.
 * Stops when focus has actually moved.
 */ function $d3863c46a17e8a28$var$focusFirst(candidates, { select: select = false  } = {}) {
    const previouslyFocusedElement = document.activeElement;
    for (const candidate of candidates){
        $d3863c46a17e8a28$var$focus(candidate, {
            select: select
        });
        if (document.activeElement !== previouslyFocusedElement) return;
    }
}
/**
 * Returns the first and last tabbable elements inside a container.
 */ function $d3863c46a17e8a28$var$getTabbableEdges(container) {
    const candidates = $d3863c46a17e8a28$var$getTabbableCandidates(container);
    const first = $d3863c46a17e8a28$var$findVisible(candidates, container);
    const last = $d3863c46a17e8a28$var$findVisible(candidates.reverse(), container);
    return [
        first,
        last
    ];
}
/**
 * Returns a list of potential tabbable candidates.
 *
 * NOTE: This is only a close approximation. For example it doesn't take into account cases like when
 * elements are not visible. This cannot be worked out easily by just reading a property, but rather
 * necessitate runtime knowledge (computed styles, etc). We deal with these cases separately.
 *
 * See: https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker
 * Credit: https://github.com/discord/focus-layers/blob/master/src/util/wrapFocus.tsx#L1
 */ function $d3863c46a17e8a28$var$getTabbableCandidates(container) {
    const nodes = [];
    const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {
        acceptNode: (node)=>{
            const isHiddenInput = node.tagName === 'INPUT' && node.type === 'hidden';
            if (node.disabled || node.hidden || isHiddenInput) return NodeFilter.FILTER_SKIP; // \`.tabIndex\` is not the same as the \`tabindex\` attribute. It works on the
            // runtime's understanding of tabbability, so this automatically accounts
            // for any kind of element that could be tabbed to.
            return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;
        }
    });
    while(walker.nextNode())nodes.push(walker.currentNode); // we do not take into account the order of nodes with positive \`tabIndex\` as it
    // hinders accessibility to have tab order different from visual order.
    return nodes;
}
/**
 * Returns the first visible element in a list.
 * NOTE: Only checks visibility up to the \`container\`.
 */ function $d3863c46a17e8a28$var$findVisible(elements, container) {
    for (const element of elements){
        // we stop checking if it's hidden at the \`container\` level (excluding)
        if (!$d3863c46a17e8a28$var$isHidden(element, {
            upTo: container
        })) return element;
    }
}
function $d3863c46a17e8a28$var$isHidden(node, { upTo: upTo  }) {
    if (getComputedStyle(node).visibility === 'hidden') return true;
    while(node){
        // we stop at \`upTo\` (excluding it)
        if (upTo !== undefined && node === upTo) return false;
        if (getComputedStyle(node).display === 'none') return true;
        node = node.parentElement;
    }
    return false;
}
function $d3863c46a17e8a28$var$isSelectableInput(element) {
    return element instanceof HTMLInputElement && 'select' in element;
}
function $d3863c46a17e8a28$var$focus(element, { select: select = false  } = {}) {
    // only focus if that element is focusable
    if (element && element.focus) {
        const previouslyFocusedElement = document.activeElement; // NOTE: we prevent scrolling on focus, to minimize jarring transitions for users
        element.focus({
            preventScroll: true
        }); // only select if its not the same element, it supports selection and we need to select
        if (element !== previouslyFocusedElement && $d3863c46a17e8a28$var$isSelectableInput(element) && select) element.select();
    }
}
/* -------------------------------------------------------------------------------------------------
 * FocusScope stack
 * -----------------------------------------------------------------------------------------------*/ const $d3863c46a17e8a28$var$focusScopesStack = $d3863c46a17e8a28$var$createFocusScopesStack();
function $d3863c46a17e8a28$var$createFocusScopesStack() {
    /** A stack of focus scopes, with the active one at the top */ let stack = [];
    return {
        add (focusScope) {
            // pause the currently active focus scope (at the top of the stack)
            const activeFocusScope = stack[0];
            if (focusScope !== activeFocusScope) activeFocusScope === null || activeFocusScope === void 0 || activeFocusScope.pause();
             // remove in case it already exists (because we'll re-add it at the top of the stack)
            stack = $d3863c46a17e8a28$var$arrayRemove(stack, focusScope);
            stack.unshift(focusScope);
        },
        remove (focusScope) {
            var _stack$;
            stack = $d3863c46a17e8a28$var$arrayRemove(stack, focusScope);
            (_stack$ = stack[0]) === null || _stack$ === void 0 || _stack$.resume();
        }
    };
}
function $d3863c46a17e8a28$var$arrayRemove(array, item) {
    const updatedArray = [
        ...array
    ];
    const index = updatedArray.indexOf(item);
    if (index !== -1) updatedArray.splice(index, 1);
    return updatedArray;
}
function $d3863c46a17e8a28$var$removeLinks(items) {
    return items.filter((item)=>item.tagName !== 'A'
    );
}
const $d3863c46a17e8a28$export$be92b6f5f03c0fe9 = $d3863c46a17e8a28$export$20e40289641fbbb6;





//# sourceMappingURL=index.module.js.map
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 20732 characters]
//# sourceURL=webpack-internal:///../../../node_modules/@radix-ui/react-focus-scope/dist/index.module.js
`);
              }
            ),
            /***/
            "../../../node_modules/@radix-ui/react-id/dist/index.module.js": (
              /*!*********************************************************************!*\
                !*** ../../../node_modules/@radix-ui/react-id/dist/index.module.js ***!
                \*********************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "useId": () => (/* binding */ $1746a345f3d73bb7$export$f680877a34711e37)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _radix_ui_react_use_layout_effect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @radix-ui/react-use-layout-effect */ "../../../node_modules/@radix-ui/react-use-layout-effect/dist/index.module.js");





const $1746a345f3d73bb7$var$useReactId = react__WEBPACK_IMPORTED_MODULE_0__['useId'.toString()] || (()=>undefined
);
let $1746a345f3d73bb7$var$count = 0;
function $1746a345f3d73bb7$export$f680877a34711e37(deterministicId) {
    const [id, setId] = react__WEBPACK_IMPORTED_MODULE_0__.useState($1746a345f3d73bb7$var$useReactId()); // React versions older than 18 will have client-side ids only.
    (0,_radix_ui_react_use_layout_effect__WEBPACK_IMPORTED_MODULE_1__.useLayoutEffect)(()=>{
        if (!deterministicId) setId((reactId)=>reactId !== null && reactId !== void 0 ? reactId : String($1746a345f3d73bb7$var$count++)
        );
    }, [
        deterministicId
    ]);
    return deterministicId || (id ? \`radix-\${id}\` : '');
}





//# sourceMappingURL=index.module.js.map
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC1pZC9kaXN0L2luZGV4Lm1vZHVsZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQXNDO0FBQ3NEOzs7O0FBSTVGLHlDQUF5QyxrQ0FBWTtBQUNyRDtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsMkNBQXFCLHNDQUFzQztBQUNuRixJQUFJLGtGQUFzQjtBQUMxQjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSw2Q0FBNkMsR0FBRztBQUNoRDs7Ozs7QUFLNEQ7QUFDNUQiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC1pZC9kaXN0L2luZGV4Lm1vZHVsZS5qcz85NWYwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzICQyQU9EeCRyZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7dXNlTGF5b3V0RWZmZWN0IGFzICQyQU9EeCR1c2VMYXlvdXRFZmZlY3R9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLWxheW91dC1lZmZlY3RcIjtcblxuXG5cbmNvbnN0ICQxNzQ2YTM0NWYzZDczYmI3JHZhciR1c2VSZWFjdElkID0gJDJBT0R4JHJlYWN0Wyd1c2VJZCcudG9TdHJpbmcoKV0gfHwgKCgpPT51bmRlZmluZWRcbik7XG5sZXQgJDE3NDZhMzQ1ZjNkNzNiYjckdmFyJGNvdW50ID0gMDtcbmZ1bmN0aW9uICQxNzQ2YTM0NWYzZDczYmI3JGV4cG9ydCRmNjgwODc3YTM0NzExZTM3KGRldGVybWluaXN0aWNJZCkge1xuICAgIGNvbnN0IFtpZCwgc2V0SWRdID0gJDJBT0R4JHJlYWN0LnVzZVN0YXRlKCQxNzQ2YTM0NWYzZDczYmI3JHZhciR1c2VSZWFjdElkKCkpOyAvLyBSZWFjdCB2ZXJzaW9ucyBvbGRlciB0aGFuIDE4IHdpbGwgaGF2ZSBjbGllbnQtc2lkZSBpZHMgb25seS5cbiAgICAkMkFPRHgkdXNlTGF5b3V0RWZmZWN0KCgpPT57XG4gICAgICAgIGlmICghZGV0ZXJtaW5pc3RpY0lkKSBzZXRJZCgocmVhY3RJZCk9PnJlYWN0SWQgIT09IG51bGwgJiYgcmVhY3RJZCAhPT0gdm9pZCAwID8gcmVhY3RJZCA6IFN0cmluZygkMTc0NmEzNDVmM2Q3M2JiNyR2YXIkY291bnQrKylcbiAgICAgICAgKTtcbiAgICB9LCBbXG4gICAgICAgIGRldGVybWluaXN0aWNJZFxuICAgIF0pO1xuICAgIHJldHVybiBkZXRlcm1pbmlzdGljSWQgfHwgKGlkID8gYHJhZGl4LSR7aWR9YCA6ICcnKTtcbn1cblxuXG5cblxuZXhwb3J0IHskMTc0NmEzNDVmM2Q3M2JiNyRleHBvcnQkZjY4MDg3N2EzNDcxMWUzNyBhcyB1c2VJZH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tb2R1bGUuanMubWFwXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=
//# sourceURL=webpack-internal:///../../../node_modules/@radix-ui/react-id/dist/index.module.js
`);
              }
            ),
            /***/
            "../../../node_modules/@radix-ui/react-popover/dist/index.module.js": (
              /*!**************************************************************************!*\
                !*** ../../../node_modules/@radix-ui/react-popover/dist/index.module.js ***!
                \**************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "Anchor": () => (/* binding */ $cb5cc270b50c6fcd$export$b688253958b8dfe7),
/* harmony export */   "Arrow": () => (/* binding */ $cb5cc270b50c6fcd$export$21b07c8f274aebd5),
/* harmony export */   "Close": () => (/* binding */ $cb5cc270b50c6fcd$export$f39c2d165cd861fe),
/* harmony export */   "Content": () => (/* binding */ $cb5cc270b50c6fcd$export$7c6e2c02157bb7d2),
/* harmony export */   "Popover": () => (/* binding */ $cb5cc270b50c6fcd$export$5b6b19405a83ff9d),
/* harmony export */   "PopoverAnchor": () => (/* binding */ $cb5cc270b50c6fcd$export$96e5381f42521a79),
/* harmony export */   "PopoverArrow": () => (/* binding */ $cb5cc270b50c6fcd$export$3152841115e061b2),
/* harmony export */   "PopoverClose": () => (/* binding */ $cb5cc270b50c6fcd$export$d6ac43ebaa40d53e),
/* harmony export */   "PopoverContent": () => (/* binding */ $cb5cc270b50c6fcd$export$d7e1f420b25549ff),
/* harmony export */   "PopoverPortal": () => (/* binding */ $cb5cc270b50c6fcd$export$dd679ffb4362d2d4),
/* harmony export */   "PopoverTrigger": () => (/* binding */ $cb5cc270b50c6fcd$export$7dacb05d26466c3),
/* harmony export */   "Portal": () => (/* binding */ $cb5cc270b50c6fcd$export$602eac185826482c),
/* harmony export */   "Root": () => (/* binding */ $cb5cc270b50c6fcd$export$be92b6f5f03c0fe9),
/* harmony export */   "Trigger": () => (/* binding */ $cb5cc270b50c6fcd$export$41fb9f06171c75f4),
/* harmony export */   "createPopoverScope": () => (/* binding */ $cb5cc270b50c6fcd$export$c8393c9e73286932)
/* harmony export */ });
/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ "../../../node_modules/@babel/runtime/helpers/esm/extends.js");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _radix_ui_primitive__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @radix-ui/primitive */ "../../../node_modules/@radix-ui/primitive/dist/index.module.js");
/* harmony import */ var _radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @radix-ui/react-compose-refs */ "../../../node_modules/@radix-ui/react-compose-refs/dist/index.module.js");
/* harmony import */ var _radix_ui_react_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @radix-ui/react-context */ "../../../node_modules/@radix-ui/react-context/dist/index.module.js");
/* harmony import */ var _radix_ui_react_dismissable_layer__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @radix-ui/react-dismissable-layer */ "../../../node_modules/@radix-ui/react-dismissable-layer/dist/index.module.js");
/* harmony import */ var _radix_ui_react_focus_guards__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @radix-ui/react-focus-guards */ "../../../node_modules/@radix-ui/react-focus-guards/dist/index.module.js");
/* harmony import */ var _radix_ui_react_focus_scope__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @radix-ui/react-focus-scope */ "../../../node_modules/@radix-ui/react-focus-scope/dist/index.module.js");
/* harmony import */ var _radix_ui_react_id__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @radix-ui/react-id */ "../../../node_modules/@radix-ui/react-id/dist/index.module.js");
/* harmony import */ var _radix_ui_react_popper__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @radix-ui/react-popper */ "../../../node_modules/@radix-ui/react-popper/dist/index.module.js");
/* harmony import */ var _radix_ui_react_portal__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @radix-ui/react-portal */ "../../../node_modules/@radix-ui/react-portal/dist/index.module.js");
/* harmony import */ var _radix_ui_react_presence__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @radix-ui/react-presence */ "../../../node_modules/@radix-ui/react-presence/dist/index.module.js");
/* harmony import */ var _radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @radix-ui/react-primitive */ "../../../node_modules/@radix-ui/react-primitive/dist/index.module.js");
/* harmony import */ var _radix_ui_react_slot__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @radix-ui/react-slot */ "../../../node_modules/@radix-ui/react-slot/dist/index.module.js");
/* harmony import */ var _radix_ui_react_use_controllable_state__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @radix-ui/react-use-controllable-state */ "../../../node_modules/@radix-ui/react-use-controllable-state/dist/index.module.js");
/* harmony import */ var aria_hidden__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! aria-hidden */ "../../../node_modules/aria-hidden/dist/es2015/index.js");
/* harmony import */ var react_remove_scroll__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! react-remove-scroll */ "../../../node_modules/react-remove-scroll/dist/es2015/Combination.js");




































/* -------------------------------------------------------------------------------------------------
 * Popover
 * -----------------------------------------------------------------------------------------------*/ const $cb5cc270b50c6fcd$var$POPOVER_NAME = 'Popover';
const [$cb5cc270b50c6fcd$var$createPopoverContext, $cb5cc270b50c6fcd$export$c8393c9e73286932] = (0,_radix_ui_react_context__WEBPACK_IMPORTED_MODULE_2__.createContextScope)($cb5cc270b50c6fcd$var$POPOVER_NAME, [
    _radix_ui_react_popper__WEBPACK_IMPORTED_MODULE_3__.createPopperScope
]);
const $cb5cc270b50c6fcd$var$usePopperScope = (0,_radix_ui_react_popper__WEBPACK_IMPORTED_MODULE_3__.createPopperScope)();
const [$cb5cc270b50c6fcd$var$PopoverProvider, $cb5cc270b50c6fcd$var$usePopoverContext] = $cb5cc270b50c6fcd$var$createPopoverContext($cb5cc270b50c6fcd$var$POPOVER_NAME);
const $cb5cc270b50c6fcd$export$5b6b19405a83ff9d = (props)=>{
    const { __scopePopover: __scopePopover , children: children , open: openProp , defaultOpen: defaultOpen , onOpenChange: onOpenChange , modal: modal = false  } = props;
    const popperScope = $cb5cc270b50c6fcd$var$usePopperScope(__scopePopover);
    const triggerRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);
    const [hasCustomAnchor, setHasCustomAnchor] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);
    const [open = false, setOpen] = (0,_radix_ui_react_use_controllable_state__WEBPACK_IMPORTED_MODULE_4__.useControllableState)({
        prop: openProp,
        defaultProp: defaultOpen,
        onChange: onOpenChange
    });
    return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_popper__WEBPACK_IMPORTED_MODULE_3__.Root, popperScope, /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)($cb5cc270b50c6fcd$var$PopoverProvider, {
        scope: __scopePopover,
        contentId: (0,_radix_ui_react_id__WEBPACK_IMPORTED_MODULE_5__.useId)(),
        triggerRef: triggerRef,
        open: open,
        onOpenChange: setOpen,
        onOpenToggle: (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(()=>setOpen((prevOpen)=>!prevOpen
            )
        , [
            setOpen
        ]),
        hasCustomAnchor: hasCustomAnchor,
        onCustomAnchorAdd: (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(()=>setHasCustomAnchor(true)
        , []),
        onCustomAnchorRemove: (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(()=>setHasCustomAnchor(false)
        , []),
        modal: modal
    }, children));
};
/*#__PURE__*/ Object.assign($cb5cc270b50c6fcd$export$5b6b19405a83ff9d, {
    displayName: $cb5cc270b50c6fcd$var$POPOVER_NAME
});
/* -------------------------------------------------------------------------------------------------
 * PopoverAnchor
 * -----------------------------------------------------------------------------------------------*/ const $cb5cc270b50c6fcd$var$ANCHOR_NAME = 'PopoverAnchor';
const $cb5cc270b50c6fcd$export$96e5381f42521a79 = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)((props, forwardedRef)=>{
    const { __scopePopover: __scopePopover , ...anchorProps } = props;
    const context = $cb5cc270b50c6fcd$var$usePopoverContext($cb5cc270b50c6fcd$var$ANCHOR_NAME, __scopePopover);
    const popperScope = $cb5cc270b50c6fcd$var$usePopperScope(__scopePopover);
    const { onCustomAnchorAdd: onCustomAnchorAdd , onCustomAnchorRemove: onCustomAnchorRemove  } = context;
    (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{
        onCustomAnchorAdd();
        return ()=>onCustomAnchorRemove()
        ;
    }, [
        onCustomAnchorAdd,
        onCustomAnchorRemove
    ]);
    return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_popper__WEBPACK_IMPORTED_MODULE_3__.Anchor, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, popperScope, anchorProps, {
        ref: forwardedRef
    }));
});
/*#__PURE__*/ Object.assign($cb5cc270b50c6fcd$export$96e5381f42521a79, {
    displayName: $cb5cc270b50c6fcd$var$ANCHOR_NAME
});
/* -------------------------------------------------------------------------------------------------
 * PopoverTrigger
 * -----------------------------------------------------------------------------------------------*/ const $cb5cc270b50c6fcd$var$TRIGGER_NAME = 'PopoverTrigger';
const $cb5cc270b50c6fcd$export$7dacb05d26466c3 = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)((props, forwardedRef)=>{
    const { __scopePopover: __scopePopover , ...triggerProps } = props;
    const context = $cb5cc270b50c6fcd$var$usePopoverContext($cb5cc270b50c6fcd$var$TRIGGER_NAME, __scopePopover);
    const popperScope = $cb5cc270b50c6fcd$var$usePopperScope(__scopePopover);
    const composedTriggerRef = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_6__.useComposedRefs)(forwardedRef, context.triggerRef);
    const trigger = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_7__.Primitive.button, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({
        type: "button",
        "aria-haspopup": "dialog",
        "aria-expanded": context.open,
        "aria-controls": context.contentId,
        "data-state": $cb5cc270b50c6fcd$var$getState(context.open)
    }, triggerProps, {
        ref: composedTriggerRef,
        onClick: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_8__.composeEventHandlers)(props.onClick, context.onOpenToggle)
    }));
    return context.hasCustomAnchor ? trigger : /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_popper__WEBPACK_IMPORTED_MODULE_3__.Anchor, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({
        asChild: true
    }, popperScope), trigger);
});
/*#__PURE__*/ Object.assign($cb5cc270b50c6fcd$export$7dacb05d26466c3, {
    displayName: $cb5cc270b50c6fcd$var$TRIGGER_NAME
});
/* -------------------------------------------------------------------------------------------------
 * PopoverPortal
 * -----------------------------------------------------------------------------------------------*/ const $cb5cc270b50c6fcd$var$PORTAL_NAME = 'PopoverPortal';
const [$cb5cc270b50c6fcd$var$PortalProvider, $cb5cc270b50c6fcd$var$usePortalContext] = $cb5cc270b50c6fcd$var$createPopoverContext($cb5cc270b50c6fcd$var$PORTAL_NAME, {
    forceMount: undefined
});
const $cb5cc270b50c6fcd$export$dd679ffb4362d2d4 = (props)=>{
    const { __scopePopover: __scopePopover , forceMount: forceMount , children: children , container: container  } = props;
    const context = $cb5cc270b50c6fcd$var$usePopoverContext($cb5cc270b50c6fcd$var$PORTAL_NAME, __scopePopover);
    return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)($cb5cc270b50c6fcd$var$PortalProvider, {
        scope: __scopePopover,
        forceMount: forceMount
    }, /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_presence__WEBPACK_IMPORTED_MODULE_9__.Presence, {
        present: forceMount || context.open
    }, /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_portal__WEBPACK_IMPORTED_MODULE_10__.Portal, {
        asChild: true,
        container: container
    }, children)));
};
/*#__PURE__*/ Object.assign($cb5cc270b50c6fcd$export$dd679ffb4362d2d4, {
    displayName: $cb5cc270b50c6fcd$var$PORTAL_NAME
});
/* -------------------------------------------------------------------------------------------------
 * PopoverContent
 * -----------------------------------------------------------------------------------------------*/ const $cb5cc270b50c6fcd$var$CONTENT_NAME = 'PopoverContent';
const $cb5cc270b50c6fcd$export$d7e1f420b25549ff = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)((props, forwardedRef)=>{
    const portalContext = $cb5cc270b50c6fcd$var$usePortalContext($cb5cc270b50c6fcd$var$CONTENT_NAME, props.__scopePopover);
    const { forceMount: forceMount = portalContext.forceMount , ...contentProps } = props;
    const context = $cb5cc270b50c6fcd$var$usePopoverContext($cb5cc270b50c6fcd$var$CONTENT_NAME, props.__scopePopover);
    return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_presence__WEBPACK_IMPORTED_MODULE_9__.Presence, {
        present: forceMount || context.open
    }, context.modal ? /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)($cb5cc270b50c6fcd$var$PopoverContentModal, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, contentProps, {
        ref: forwardedRef
    })) : /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)($cb5cc270b50c6fcd$var$PopoverContentNonModal, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, contentProps, {
        ref: forwardedRef
    })));
});
/*#__PURE__*/ Object.assign($cb5cc270b50c6fcd$export$d7e1f420b25549ff, {
    displayName: $cb5cc270b50c6fcd$var$CONTENT_NAME
});
/* -----------------------------------------------------------------------------------------------*/ const $cb5cc270b50c6fcd$var$PopoverContentModal = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)((props, forwardedRef)=>{
    const context = $cb5cc270b50c6fcd$var$usePopoverContext($cb5cc270b50c6fcd$var$CONTENT_NAME, props.__scopePopover);
    const contentRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);
    const composedRefs = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_6__.useComposedRefs)(forwardedRef, contentRef);
    const isRightClickOutsideRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(false); // aria-hide everything except the content (better supported equivalent to setting aria-modal)
    (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{
        const content = contentRef.current;
        if (content) return (0,aria_hidden__WEBPACK_IMPORTED_MODULE_11__.hideOthers)(content);
    }, []);
    return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(react_remove_scroll__WEBPACK_IMPORTED_MODULE_12__["default"], {
        as: _radix_ui_react_slot__WEBPACK_IMPORTED_MODULE_13__.Slot,
        allowPinchZoom: true
    }, /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)($cb5cc270b50c6fcd$var$PopoverContentImpl, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, props, {
        ref: composedRefs // we make sure we're not trapping once it's been closed
        ,
        trapFocus: context.open,
        disableOutsidePointerEvents: true,
        onCloseAutoFocus: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_8__.composeEventHandlers)(props.onCloseAutoFocus, (event)=>{
            var _context$triggerRef$c;
            event.preventDefault();
            if (!isRightClickOutsideRef.current) (_context$triggerRef$c = context.triggerRef.current) === null || _context$triggerRef$c === void 0 || _context$triggerRef$c.focus();
        }),
        onPointerDownOutside: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_8__.composeEventHandlers)(props.onPointerDownOutside, (event)=>{
            const originalEvent = event.detail.originalEvent;
            const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;
            const isRightClick = originalEvent.button === 2 || ctrlLeftClick;
            isRightClickOutsideRef.current = isRightClick;
        }, {
            checkForDefaultPrevented: false
        }) // When focus is trapped, a \`focusout\` event may still happen.
        ,
        onFocusOutside: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_8__.composeEventHandlers)(props.onFocusOutside, (event)=>event.preventDefault()
        , {
            checkForDefaultPrevented: false
        })
    })));
});
const $cb5cc270b50c6fcd$var$PopoverContentNonModal = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)((props, forwardedRef)=>{
    const context = $cb5cc270b50c6fcd$var$usePopoverContext($cb5cc270b50c6fcd$var$CONTENT_NAME, props.__scopePopover);
    const hasInteractedOutsideRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(false);
    return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)($cb5cc270b50c6fcd$var$PopoverContentImpl, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, props, {
        ref: forwardedRef,
        trapFocus: false,
        disableOutsidePointerEvents: false,
        onCloseAutoFocus: (event)=>{
            var _props$onCloseAutoFoc;
            (_props$onCloseAutoFoc = props.onCloseAutoFocus) === null || _props$onCloseAutoFoc === void 0 || _props$onCloseAutoFoc.call(props, event);
            if (!event.defaultPrevented) {
                var _context$triggerRef$c2;
                if (!hasInteractedOutsideRef.current) (_context$triggerRef$c2 = context.triggerRef.current) === null || _context$triggerRef$c2 === void 0 || _context$triggerRef$c2.focus(); // Always prevent auto focus because we either focus manually or want user agent focus
                event.preventDefault();
            }
            hasInteractedOutsideRef.current = false;
        },
        onInteractOutside: (event)=>{
            var _props$onInteractOuts, _context$triggerRef$c3;
            (_props$onInteractOuts = props.onInteractOutside) === null || _props$onInteractOuts === void 0 || _props$onInteractOuts.call(props, event);
            if (!event.defaultPrevented) hasInteractedOutsideRef.current = true; // Prevent dismissing when clicking the trigger.
            // As the trigger is already setup to close, without doing so would
            // cause it to close and immediately open.
            //
            // We use \`onInteractOutside\` as some browsers also
            // focus on pointer down, creating the same issue.
            const target = event.target;
            const targetIsTrigger = (_context$triggerRef$c3 = context.triggerRef.current) === null || _context$triggerRef$c3 === void 0 ? void 0 : _context$triggerRef$c3.contains(target);
            if (targetIsTrigger) event.preventDefault();
        }
    }));
});
/* -----------------------------------------------------------------------------------------------*/ const $cb5cc270b50c6fcd$var$PopoverContentImpl = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)((props, forwardedRef)=>{
    const { __scopePopover: __scopePopover , trapFocus: trapFocus , onOpenAutoFocus: onOpenAutoFocus , onCloseAutoFocus: onCloseAutoFocus , disableOutsidePointerEvents: disableOutsidePointerEvents , onEscapeKeyDown: onEscapeKeyDown , onPointerDownOutside: onPointerDownOutside , onFocusOutside: onFocusOutside , onInteractOutside: onInteractOutside , ...contentProps } = props;
    const context = $cb5cc270b50c6fcd$var$usePopoverContext($cb5cc270b50c6fcd$var$CONTENT_NAME, __scopePopover);
    const popperScope = $cb5cc270b50c6fcd$var$usePopperScope(__scopePopover); // Make sure the whole tree has focus guards as our \`Popover\` may be
    // the last element in the DOM (beacuse of the \`Portal\`)
    (0,_radix_ui_react_focus_guards__WEBPACK_IMPORTED_MODULE_14__.useFocusGuards)();
    return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_focus_scope__WEBPACK_IMPORTED_MODULE_15__.FocusScope, {
        asChild: true,
        loop: true,
        trapped: trapFocus,
        onMountAutoFocus: onOpenAutoFocus,
        onUnmountAutoFocus: onCloseAutoFocus
    }, /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_dismissable_layer__WEBPACK_IMPORTED_MODULE_16__.DismissableLayer, {
        asChild: true,
        disableOutsidePointerEvents: disableOutsidePointerEvents,
        onInteractOutside: onInteractOutside,
        onEscapeKeyDown: onEscapeKeyDown,
        onPointerDownOutside: onPointerDownOutside,
        onFocusOutside: onFocusOutside,
        onDismiss: ()=>context.onOpenChange(false)
    }, /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_popper__WEBPACK_IMPORTED_MODULE_3__.Content, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({
        "data-state": $cb5cc270b50c6fcd$var$getState(context.open),
        role: "dialog",
        id: context.contentId
    }, popperScope, contentProps, {
        ref: forwardedRef,
        style: {
            ...contentProps.style,
            // re-namespace exposed content custom property
            ['--radix-popover-content-transform-origin']: 'var(--radix-popper-transform-origin)'
        }
    }))));
});
/* -------------------------------------------------------------------------------------------------
 * PopoverClose
 * -----------------------------------------------------------------------------------------------*/ const $cb5cc270b50c6fcd$var$CLOSE_NAME = 'PopoverClose';
const $cb5cc270b50c6fcd$export$d6ac43ebaa40d53e = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)((props, forwardedRef)=>{
    const { __scopePopover: __scopePopover , ...closeProps } = props;
    const context = $cb5cc270b50c6fcd$var$usePopoverContext($cb5cc270b50c6fcd$var$CLOSE_NAME, __scopePopover);
    return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_7__.Primitive.button, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({
        type: "button"
    }, closeProps, {
        ref: forwardedRef,
        onClick: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_8__.composeEventHandlers)(props.onClick, ()=>context.onOpenChange(false)
        )
    }));
});
/*#__PURE__*/ Object.assign($cb5cc270b50c6fcd$export$d6ac43ebaa40d53e, {
    displayName: $cb5cc270b50c6fcd$var$CLOSE_NAME
});
/* -------------------------------------------------------------------------------------------------
 * PopoverArrow
 * -----------------------------------------------------------------------------------------------*/ const $cb5cc270b50c6fcd$var$ARROW_NAME = 'PopoverArrow';
const $cb5cc270b50c6fcd$export$3152841115e061b2 = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)((props, forwardedRef)=>{
    const { __scopePopover: __scopePopover , ...arrowProps } = props;
    const popperScope = $cb5cc270b50c6fcd$var$usePopperScope(__scopePopover);
    return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_popper__WEBPACK_IMPORTED_MODULE_3__.Arrow, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, popperScope, arrowProps, {
        ref: forwardedRef
    }));
});
/*#__PURE__*/ Object.assign($cb5cc270b50c6fcd$export$3152841115e061b2, {
    displayName: $cb5cc270b50c6fcd$var$ARROW_NAME
});
/* -----------------------------------------------------------------------------------------------*/ function $cb5cc270b50c6fcd$var$getState(open) {
    return open ? 'open' : 'closed';
}
const $cb5cc270b50c6fcd$export$be92b6f5f03c0fe9 = $cb5cc270b50c6fcd$export$5b6b19405a83ff9d;
const $cb5cc270b50c6fcd$export$b688253958b8dfe7 = $cb5cc270b50c6fcd$export$96e5381f42521a79;
const $cb5cc270b50c6fcd$export$41fb9f06171c75f4 = $cb5cc270b50c6fcd$export$7dacb05d26466c3;
const $cb5cc270b50c6fcd$export$602eac185826482c = $cb5cc270b50c6fcd$export$dd679ffb4362d2d4;
const $cb5cc270b50c6fcd$export$7c6e2c02157bb7d2 = $cb5cc270b50c6fcd$export$d7e1f420b25549ff;
const $cb5cc270b50c6fcd$export$f39c2d165cd861fe = $cb5cc270b50c6fcd$export$d6ac43ebaa40d53e;
const $cb5cc270b50c6fcd$export$21b07c8f274aebd5 = $cb5cc270b50c6fcd$export$3152841115e061b2;





//# sourceMappingURL=index.module.js.map
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 30300 characters]
//# sourceURL=webpack-internal:///../../../node_modules/@radix-ui/react-popover/dist/index.module.js
`);
              }
            ),
            /***/
            "../../../node_modules/@radix-ui/react-popper/dist/index.module.js": (
              /*!*************************************************************************!*\
                !*** ../../../node_modules/@radix-ui/react-popper/dist/index.module.js ***!
                \*************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "ALIGN_OPTIONS": () => (/* binding */ $cf1ac5d9fe0e8206$export$3671ffab7b302fc9),
/* harmony export */   "Anchor": () => (/* binding */ $cf1ac5d9fe0e8206$export$b688253958b8dfe7),
/* harmony export */   "Arrow": () => (/* binding */ $cf1ac5d9fe0e8206$export$21b07c8f274aebd5),
/* harmony export */   "Content": () => (/* binding */ $cf1ac5d9fe0e8206$export$7c6e2c02157bb7d2),
/* harmony export */   "Popper": () => (/* binding */ $cf1ac5d9fe0e8206$export$badac9ada3a0bdf9),
/* harmony export */   "PopperAnchor": () => (/* binding */ $cf1ac5d9fe0e8206$export$ecd4e1ccab6ed6d),
/* harmony export */   "PopperArrow": () => (/* binding */ $cf1ac5d9fe0e8206$export$79d62cd4e10a3fd0),
/* harmony export */   "PopperContent": () => (/* binding */ $cf1ac5d9fe0e8206$export$bc4ae5855d3c4fc),
/* harmony export */   "Root": () => (/* binding */ $cf1ac5d9fe0e8206$export$be92b6f5f03c0fe9),
/* harmony export */   "SIDE_OPTIONS": () => (/* binding */ $cf1ac5d9fe0e8206$export$36f0086da09c4b9f),
/* harmony export */   "createPopperScope": () => (/* binding */ $cf1ac5d9fe0e8206$export$722aac194ae923)
/* harmony export */ });
/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ "../../../node_modules/@babel/runtime/helpers/esm/extends.js");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _floating_ui_react_dom__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @floating-ui/react-dom */ "../../../node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.esm.js");
/* harmony import */ var _floating_ui_react_dom__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @floating-ui/react-dom */ "../../../node_modules/@floating-ui/dom/dist/floating-ui.dom.browser.mjs");
/* harmony import */ var _floating_ui_react_dom__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @floating-ui/react-dom */ "../../../node_modules/@floating-ui/core/dist/floating-ui.core.browser.mjs");
/* harmony import */ var _radix_ui_react_arrow__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @radix-ui/react-arrow */ "../../../node_modules/@radix-ui/react-arrow/dist/index.module.js");
/* harmony import */ var _radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @radix-ui/react-compose-refs */ "../../../node_modules/@radix-ui/react-compose-refs/dist/index.module.js");
/* harmony import */ var _radix_ui_react_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @radix-ui/react-context */ "../../../node_modules/@radix-ui/react-context/dist/index.module.js");
/* harmony import */ var _radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @radix-ui/react-primitive */ "../../../node_modules/@radix-ui/react-primitive/dist/index.module.js");
/* harmony import */ var _radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @radix-ui/react-use-callback-ref */ "../../../node_modules/@radix-ui/react-use-callback-ref/dist/index.module.js");
/* harmony import */ var _radix_ui_react_use_layout_effect__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @radix-ui/react-use-layout-effect */ "../../../node_modules/@radix-ui/react-use-layout-effect/dist/index.module.js");
/* harmony import */ var _radix_ui_react_use_size__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @radix-ui/react-use-size */ "../../../node_modules/@radix-ui/react-use-size/dist/index.module.js");





















const $cf1ac5d9fe0e8206$export$36f0086da09c4b9f = [
    'top',
    'right',
    'bottom',
    'left'
];
const $cf1ac5d9fe0e8206$export$3671ffab7b302fc9 = [
    'start',
    'center',
    'end'
];
/* -------------------------------------------------------------------------------------------------
 * Popper
 * -----------------------------------------------------------------------------------------------*/ const $cf1ac5d9fe0e8206$var$POPPER_NAME = 'Popper';
const [$cf1ac5d9fe0e8206$var$createPopperContext, $cf1ac5d9fe0e8206$export$722aac194ae923] = (0,_radix_ui_react_context__WEBPACK_IMPORTED_MODULE_2__.createContextScope)($cf1ac5d9fe0e8206$var$POPPER_NAME);
const [$cf1ac5d9fe0e8206$var$PopperProvider, $cf1ac5d9fe0e8206$var$usePopperContext] = $cf1ac5d9fe0e8206$var$createPopperContext($cf1ac5d9fe0e8206$var$POPPER_NAME);
const $cf1ac5d9fe0e8206$export$badac9ada3a0bdf9 = (props)=>{
    const { __scopePopper: __scopePopper , children: children  } = props;
    const [anchor, setAnchor] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);
    return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)($cf1ac5d9fe0e8206$var$PopperProvider, {
        scope: __scopePopper,
        anchor: anchor,
        onAnchorChange: setAnchor
    }, children);
};
/*#__PURE__*/ Object.assign($cf1ac5d9fe0e8206$export$badac9ada3a0bdf9, {
    displayName: $cf1ac5d9fe0e8206$var$POPPER_NAME
});
/* -------------------------------------------------------------------------------------------------
 * PopperAnchor
 * -----------------------------------------------------------------------------------------------*/ const $cf1ac5d9fe0e8206$var$ANCHOR_NAME = 'PopperAnchor';
const $cf1ac5d9fe0e8206$export$ecd4e1ccab6ed6d = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)((props, forwardedRef)=>{
    const { __scopePopper: __scopePopper , virtualRef: virtualRef , ...anchorProps } = props;
    const context = $cf1ac5d9fe0e8206$var$usePopperContext($cf1ac5d9fe0e8206$var$ANCHOR_NAME, __scopePopper);
    const ref = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);
    const composedRefs = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_3__.useComposedRefs)(forwardedRef, ref);
    (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{
        // Consumer can anchor the popper to something that isn't
        // a DOM node e.g. pointer position, so we override the
        // \`anchorRef\` with their virtual ref in this case.
        context.onAnchorChange((virtualRef === null || virtualRef === void 0 ? void 0 : virtualRef.current) || ref.current);
    });
    return virtualRef ? null : /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_4__.Primitive.div, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, anchorProps, {
        ref: composedRefs
    }));
});
/*#__PURE__*/ Object.assign($cf1ac5d9fe0e8206$export$ecd4e1ccab6ed6d, {
    displayName: $cf1ac5d9fe0e8206$var$ANCHOR_NAME
});
/* -------------------------------------------------------------------------------------------------
 * PopperContent
 * -----------------------------------------------------------------------------------------------*/ const $cf1ac5d9fe0e8206$var$CONTENT_NAME = 'PopperContent';
const [$cf1ac5d9fe0e8206$var$PopperContentProvider, $cf1ac5d9fe0e8206$var$useContentContext] = $cf1ac5d9fe0e8206$var$createPopperContext($cf1ac5d9fe0e8206$var$CONTENT_NAME);
const [$cf1ac5d9fe0e8206$var$PositionContextProvider, $cf1ac5d9fe0e8206$var$usePositionContext] = $cf1ac5d9fe0e8206$var$createPopperContext($cf1ac5d9fe0e8206$var$CONTENT_NAME, {
    hasParent: false,
    positionUpdateFns: new Set()
});
const $cf1ac5d9fe0e8206$export$bc4ae5855d3c4fc = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)((props, forwardedRef)=>{
    var _arrowSize$width, _arrowSize$height, _middlewareData$arrow, _middlewareData$arrow2, _middlewareData$arrow3, _middlewareData$hide, _middlewareData$trans, _middlewareData$trans2;
    const { __scopePopper: __scopePopper , side: side = 'bottom' , sideOffset: sideOffset = 0 , align: align = 'center' , alignOffset: alignOffset = 0 , arrowPadding: arrowPadding = 0 , collisionBoundary: collisionBoundary = [] , collisionPadding: collisionPaddingProp = 0 , sticky: sticky = 'partial' , hideWhenDetached: hideWhenDetached = false , avoidCollisions: avoidCollisions = true , onPlaced: onPlaced , ...contentProps } = props;
    const context = $cf1ac5d9fe0e8206$var$usePopperContext($cf1ac5d9fe0e8206$var$CONTENT_NAME, __scopePopper);
    const [content, setContent] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);
    const composedRefs = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_3__.useComposedRefs)(forwardedRef, (node)=>setContent(node)
    );
    const [arrow, setArrow] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);
    const arrowSize = (0,_radix_ui_react_use_size__WEBPACK_IMPORTED_MODULE_5__.useSize)(arrow);
    const arrowWidth = (_arrowSize$width = arrowSize === null || arrowSize === void 0 ? void 0 : arrowSize.width) !== null && _arrowSize$width !== void 0 ? _arrowSize$width : 0;
    const arrowHeight = (_arrowSize$height = arrowSize === null || arrowSize === void 0 ? void 0 : arrowSize.height) !== null && _arrowSize$height !== void 0 ? _arrowSize$height : 0;
    const desiredPlacement = side + (align !== 'center' ? '-' + align : '');
    const collisionPadding = typeof collisionPaddingProp === 'number' ? collisionPaddingProp : {
        top: 0,
        right: 0,
        bottom: 0,
        left: 0,
        ...collisionPaddingProp
    };
    const boundary = Array.isArray(collisionBoundary) ? collisionBoundary : [
        collisionBoundary
    ];
    const hasExplicitBoundaries = boundary.length > 0;
    const detectOverflowOptions = {
        padding: collisionPadding,
        boundary: boundary.filter($cf1ac5d9fe0e8206$var$isNotNull),
        // with \`strategy: 'fixed'\`, this is the only way to get it to respect boundaries
        altBoundary: hasExplicitBoundaries
    };
    const { reference: reference , floating: floating , strategy: strategy , x: x , y: y , placement: placement , middlewareData: middlewareData , update: update  } = (0,_floating_ui_react_dom__WEBPACK_IMPORTED_MODULE_6__.useFloating)({
        // default to \`fixed\` strategy so users don't have to pick and we also avoid focus scroll issues
        strategy: 'fixed',
        placement: desiredPlacement,
        whileElementsMounted: _floating_ui_react_dom__WEBPACK_IMPORTED_MODULE_7__.autoUpdate,
        middleware: [
            $cf1ac5d9fe0e8206$var$anchorCssProperties(),
            (0,_floating_ui_react_dom__WEBPACK_IMPORTED_MODULE_8__.offset)({
                mainAxis: sideOffset + arrowHeight,
                alignmentAxis: alignOffset
            }),
            avoidCollisions ? (0,_floating_ui_react_dom__WEBPACK_IMPORTED_MODULE_8__.shift)({
                mainAxis: true,
                crossAxis: false,
                limiter: sticky === 'partial' ? (0,_floating_ui_react_dom__WEBPACK_IMPORTED_MODULE_8__.limitShift)() : undefined,
                ...detectOverflowOptions
            }) : undefined,
            arrow ? (0,_floating_ui_react_dom__WEBPACK_IMPORTED_MODULE_6__.arrow)({
                element: arrow,
                padding: arrowPadding
            }) : undefined,
            avoidCollisions ? (0,_floating_ui_react_dom__WEBPACK_IMPORTED_MODULE_8__.flip)({
                ...detectOverflowOptions
            }) : undefined,
            (0,_floating_ui_react_dom__WEBPACK_IMPORTED_MODULE_8__.size)({
                ...detectOverflowOptions,
                apply: ({ elements: elements , availableWidth: width , availableHeight: height  })=>{
                    elements.floating.style.setProperty('--radix-popper-available-width', \`\${width}px\`);
                    elements.floating.style.setProperty('--radix-popper-available-height', \`\${height}px\`);
                }
            }),
            $cf1ac5d9fe0e8206$var$transformOrigin({
                arrowWidth: arrowWidth,
                arrowHeight: arrowHeight
            }),
            hideWhenDetached ? (0,_floating_ui_react_dom__WEBPACK_IMPORTED_MODULE_8__.hide)({
                strategy: 'referenceHidden'
            }) : undefined
        ].filter($cf1ac5d9fe0e8206$var$isDefined)
    }); // assign the reference dynamically once \`Content\` has mounted so we can collocate the logic
    (0,_radix_ui_react_use_layout_effect__WEBPACK_IMPORTED_MODULE_9__.useLayoutEffect)(()=>{
        reference(context.anchor);
    }, [
        reference,
        context.anchor
    ]);
    const isPlaced = x !== null && y !== null;
    const [placedSide, placedAlign] = $cf1ac5d9fe0e8206$var$getSideAndAlignFromPlacement(placement);
    const handlePlaced = (0,_radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_10__.useCallbackRef)(onPlaced);
    (0,_radix_ui_react_use_layout_effect__WEBPACK_IMPORTED_MODULE_9__.useLayoutEffect)(()=>{
        if (isPlaced) handlePlaced === null || handlePlaced === void 0 || handlePlaced();
    }, [
        isPlaced,
        handlePlaced
    ]);
    const arrowX = (_middlewareData$arrow = middlewareData.arrow) === null || _middlewareData$arrow === void 0 ? void 0 : _middlewareData$arrow.x;
    const arrowY = (_middlewareData$arrow2 = middlewareData.arrow) === null || _middlewareData$arrow2 === void 0 ? void 0 : _middlewareData$arrow2.y;
    const cannotCenterArrow = ((_middlewareData$arrow3 = middlewareData.arrow) === null || _middlewareData$arrow3 === void 0 ? void 0 : _middlewareData$arrow3.centerOffset) !== 0;
    const [contentZIndex, setContentZIndex] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)();
    (0,_radix_ui_react_use_layout_effect__WEBPACK_IMPORTED_MODULE_9__.useLayoutEffect)(()=>{
        if (content) setContentZIndex(window.getComputedStyle(content).zIndex);
    }, [
        content
    ]);
    const { hasParent: hasParent , positionUpdateFns: positionUpdateFns  } = $cf1ac5d9fe0e8206$var$usePositionContext($cf1ac5d9fe0e8206$var$CONTENT_NAME, __scopePopper);
    const isRoot = !hasParent;
    (0,react__WEBPACK_IMPORTED_MODULE_1__.useLayoutEffect)(()=>{
        if (!isRoot) {
            positionUpdateFns.add(update);
            return ()=>{
                positionUpdateFns.delete(update);
            };
        }
    }, [
        isRoot,
        positionUpdateFns,
        update
    ]); // when nested contents are rendered in portals, they are appended out of order causing
    // children to be positioned incorrectly if initially open.
    // we need to re-compute the positioning once the parent has finally been placed.
    // https://github.com/floating-ui/floating-ui/issues/1531
    (0,_radix_ui_react_use_layout_effect__WEBPACK_IMPORTED_MODULE_9__.useLayoutEffect)(()=>{
        if (isRoot && isPlaced) Array.from(positionUpdateFns).reverse().forEach((fn)=>requestAnimationFrame(fn)
        );
    }, [
        isRoot,
        isPlaced,
        positionUpdateFns
    ]);
    const commonProps = {
        'data-side': placedSide,
        'data-align': placedAlign,
        ...contentProps,
        ref: composedRefs,
        style: {
            ...contentProps.style,
            // if the PopperContent hasn't been placed yet (not all measurements done)
            // we prevent animations so that users's animation don't kick in too early referring wrong sides
            animation: !isPlaced ? 'none' : undefined,
            // hide the content if using the hide middleware and should be hidden
            opacity: (_middlewareData$hide = middlewareData.hide) !== null && _middlewareData$hide !== void 0 && _middlewareData$hide.referenceHidden ? 0 : undefined
        }
    };
    return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", {
        ref: floating,
        "data-radix-popper-content-wrapper": "",
        style: {
            position: strategy,
            left: 0,
            top: 0,
            transform: isPlaced ? \`translate3d(\${Math.round(x)}px, \${Math.round(y)}px, 0)\` : 'translate3d(0, -200%, 0)',
            // keep off the page when measuring
            minWidth: 'max-content',
            zIndex: contentZIndex,
            ['--radix-popper-transform-origin']: [
                (_middlewareData$trans = middlewareData.transformOrigin) === null || _middlewareData$trans === void 0 ? void 0 : _middlewareData$trans.x,
                (_middlewareData$trans2 = middlewareData.transformOrigin) === null || _middlewareData$trans2 === void 0 ? void 0 : _middlewareData$trans2.y
            ].join(' ')
        } // Floating UI interally calculates logical alignment based the \`dir\` attribute on
        ,
        dir: props.dir
    }, /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)($cf1ac5d9fe0e8206$var$PopperContentProvider, {
        scope: __scopePopper,
        placedSide: placedSide,
        onArrowChange: setArrow,
        arrowX: arrowX,
        arrowY: arrowY,
        shouldHideArrow: cannotCenterArrow
    }, isRoot ? /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)($cf1ac5d9fe0e8206$var$PositionContextProvider, {
        scope: __scopePopper,
        hasParent: true,
        positionUpdateFns: positionUpdateFns
    }, /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_4__.Primitive.div, commonProps)) : /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_4__.Primitive.div, commonProps)));
});
/*#__PURE__*/ Object.assign($cf1ac5d9fe0e8206$export$bc4ae5855d3c4fc, {
    displayName: $cf1ac5d9fe0e8206$var$CONTENT_NAME
});
/* -------------------------------------------------------------------------------------------------
 * PopperArrow
 * -----------------------------------------------------------------------------------------------*/ const $cf1ac5d9fe0e8206$var$ARROW_NAME = 'PopperArrow';
const $cf1ac5d9fe0e8206$var$OPPOSITE_SIDE = {
    top: 'bottom',
    right: 'left',
    bottom: 'top',
    left: 'right'
};
const $cf1ac5d9fe0e8206$export$79d62cd4e10a3fd0 = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)(function $cf1ac5d9fe0e8206$export$79d62cd4e10a3fd0(props, forwardedRef) {
    const { __scopePopper: __scopePopper , ...arrowProps } = props;
    const contentContext = $cf1ac5d9fe0e8206$var$useContentContext($cf1ac5d9fe0e8206$var$ARROW_NAME, __scopePopper);
    const baseSide = $cf1ac5d9fe0e8206$var$OPPOSITE_SIDE[contentContext.placedSide];
    return(/*#__PURE__*/ // we have to use an extra wrapper because \`ResizeObserver\` (used by \`useSize\`)
    // doesn't report size as we'd expect on SVG elements.
    // it reports their bounding box which is effectively the largest path inside the SVG.
    (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)("span", {
        ref: contentContext.onArrowChange,
        style: {
            position: 'absolute',
            left: contentContext.arrowX,
            top: contentContext.arrowY,
            [baseSide]: 0,
            transformOrigin: {
                top: '',
                right: '0 0',
                bottom: 'center 0',
                left: '100% 0'
            }[contentContext.placedSide],
            transform: {
                top: 'translateY(100%)',
                right: 'translateY(50%) rotate(90deg) translateX(-50%)',
                bottom: \`rotate(180deg)\`,
                left: 'translateY(50%) rotate(-90deg) translateX(50%)'
            }[contentContext.placedSide],
            visibility: contentContext.shouldHideArrow ? 'hidden' : undefined
        }
    }, /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_arrow__WEBPACK_IMPORTED_MODULE_11__.Root, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, arrowProps, {
        ref: forwardedRef,
        style: {
            ...arrowProps.style,
            // ensures the element can be measured correctly (mostly for if SVG)
            display: 'block'
        }
    }))));
});
/*#__PURE__*/ Object.assign($cf1ac5d9fe0e8206$export$79d62cd4e10a3fd0, {
    displayName: $cf1ac5d9fe0e8206$var$ARROW_NAME
});
/* -----------------------------------------------------------------------------------------------*/ function $cf1ac5d9fe0e8206$var$isDefined(value) {
    return value !== undefined;
}
function $cf1ac5d9fe0e8206$var$isNotNull(value) {
    return value !== null;
}
const $cf1ac5d9fe0e8206$var$anchorCssProperties = ()=>({
        name: 'anchorCssProperties',
        fn (data) {
            const { rects: rects , elements: elements  } = data;
            const { width: width , height: height  } = rects.reference;
            elements.floating.style.setProperty('--radix-popper-anchor-width', \`\${width}px\`);
            elements.floating.style.setProperty('--radix-popper-anchor-height', \`\${height}px\`);
            return {};
        }
    })
;
const $cf1ac5d9fe0e8206$var$transformOrigin = (options)=>({
        name: 'transformOrigin',
        options: options,
        fn (data) {
            var _middlewareData$arrow4, _middlewareData$arrow5, _middlewareData$arrow6, _middlewareData$arrow7, _middlewareData$arrow8;
            const { placement: placement , rects: rects , middlewareData: middlewareData  } = data;
            const cannotCenterArrow = ((_middlewareData$arrow4 = middlewareData.arrow) === null || _middlewareData$arrow4 === void 0 ? void 0 : _middlewareData$arrow4.centerOffset) !== 0;
            const isArrowHidden = cannotCenterArrow;
            const arrowWidth = isArrowHidden ? 0 : options.arrowWidth;
            const arrowHeight = isArrowHidden ? 0 : options.arrowHeight;
            const [placedSide, placedAlign] = $cf1ac5d9fe0e8206$var$getSideAndAlignFromPlacement(placement);
            const noArrowAlign = {
                start: '0%',
                center: '50%',
                end: '100%'
            }[placedAlign];
            const arrowXCenter = ((_middlewareData$arrow5 = (_middlewareData$arrow6 = middlewareData.arrow) === null || _middlewareData$arrow6 === void 0 ? void 0 : _middlewareData$arrow6.x) !== null && _middlewareData$arrow5 !== void 0 ? _middlewareData$arrow5 : 0) + arrowWidth / 2;
            const arrowYCenter = ((_middlewareData$arrow7 = (_middlewareData$arrow8 = middlewareData.arrow) === null || _middlewareData$arrow8 === void 0 ? void 0 : _middlewareData$arrow8.y) !== null && _middlewareData$arrow7 !== void 0 ? _middlewareData$arrow7 : 0) + arrowHeight / 2;
            let x = '';
            let y = '';
            if (placedSide === 'bottom') {
                x = isArrowHidden ? noArrowAlign : \`\${arrowXCenter}px\`;
                y = \`\${-arrowHeight}px\`;
            } else if (placedSide === 'top') {
                x = isArrowHidden ? noArrowAlign : \`\${arrowXCenter}px\`;
                y = \`\${rects.floating.height + arrowHeight}px\`;
            } else if (placedSide === 'right') {
                x = \`\${-arrowHeight}px\`;
                y = isArrowHidden ? noArrowAlign : \`\${arrowYCenter}px\`;
            } else if (placedSide === 'left') {
                x = \`\${rects.floating.width + arrowHeight}px\`;
                y = isArrowHidden ? noArrowAlign : \`\${arrowYCenter}px\`;
            }
            return {
                data: {
                    x: x,
                    y: y
                }
            };
        }
    })
;
function $cf1ac5d9fe0e8206$var$getSideAndAlignFromPlacement(placement) {
    const [side, align = 'center'] = placement.split('-');
    return [
        side,
        align
    ];
}
const $cf1ac5d9fe0e8206$export$be92b6f5f03c0fe9 = $cf1ac5d9fe0e8206$export$badac9ada3a0bdf9;
const $cf1ac5d9fe0e8206$export$b688253958b8dfe7 = $cf1ac5d9fe0e8206$export$ecd4e1ccab6ed6d;
const $cf1ac5d9fe0e8206$export$7c6e2c02157bb7d2 = $cf1ac5d9fe0e8206$export$bc4ae5855d3c4fc;
const $cf1ac5d9fe0e8206$export$21b07c8f274aebd5 = $cf1ac5d9fe0e8206$export$79d62cd4e10a3fd0;





//# sourceMappingURL=index.module.js.map
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 31572 characters]
//# sourceURL=webpack-internal:///../../../node_modules/@radix-ui/react-popper/dist/index.module.js
`);
              }
            ),
            /***/
            "../../../node_modules/@radix-ui/react-portal/dist/index.module.js": (
              /*!*************************************************************************!*\
                !*** ../../../node_modules/@radix-ui/react-portal/dist/index.module.js ***!
                \*************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "Portal": () => (/* binding */ $f1701beae083dbae$export$602eac185826482c),
/* harmony export */   "Root": () => (/* binding */ $f1701beae083dbae$export$be92b6f5f03c0fe9)
/* harmony export */ });
/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ "../../../node_modules/@babel/runtime/helpers/esm/extends.js");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-dom */ "react-dom");
/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @radix-ui/react-primitive */ "../../../node_modules/@radix-ui/react-primitive/dist/index.module.js");









/* -------------------------------------------------------------------------------------------------
 * Portal
 * -----------------------------------------------------------------------------------------------*/ const $f1701beae083dbae$var$PORTAL_NAME = 'Portal';
const $f1701beae083dbae$export$602eac185826482c = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)((props, forwardedRef)=>{
    var _globalThis$document;
    const { container: container = globalThis === null || globalThis === void 0 ? void 0 : (_globalThis$document = globalThis.document) === null || _globalThis$document === void 0 ? void 0 : _globalThis$document.body , ...portalProps } = props;
    return container ? /*#__PURE__*/ react_dom__WEBPACK_IMPORTED_MODULE_2___default().createPortal(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_3__.Primitive.div, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, portalProps, {
        ref: forwardedRef
    })), container) : null;
});
/*#__PURE__*/ Object.assign($f1701beae083dbae$export$602eac185826482c, {
    displayName: $f1701beae083dbae$var$PORTAL_NAME
});
/* -----------------------------------------------------------------------------------------------*/ const $f1701beae083dbae$export$be92b6f5f03c0fe9 = $f1701beae083dbae$export$602eac185826482c;





//# sourceMappingURL=index.module.js.map
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC1wb3J0YWwvZGlzdC9pbmRleC5tb2R1bGUuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBc0Y7QUFDTztBQUNyRDtBQUNnQzs7Ozs7O0FBTXhFO0FBQ0E7QUFDQTtBQUNBLGdFQUFnRSxpREFBaUI7QUFDakY7QUFDQSxZQUFZLGdPQUFnTztBQUM1TyxxQ0FBcUMsNkRBQTRCLGVBQWUsb0RBQW9CLENBQUMsb0VBQW9CLEVBQUUsOEVBQW9DLEdBQUc7QUFDbEs7QUFDQSxLQUFLO0FBQ0wsQ0FBQztBQUNEO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7Ozs7O0FBS2dIO0FBQ2hIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtcG9ydGFsL2Rpc3QvaW5kZXgubW9kdWxlLmpzP2Q0ZTYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICQ3U1hsMiRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IHtmb3J3YXJkUmVmIGFzICQ3U1hsMiRmb3J3YXJkUmVmLCBjcmVhdGVFbGVtZW50IGFzICQ3U1hsMiRjcmVhdGVFbGVtZW50fSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCAkN1NYbDIkcmVhY3Rkb20gZnJvbSBcInJlYWN0LWRvbVwiO1xuaW1wb3J0IHtQcmltaXRpdmUgYXMgJDdTWGwyJFByaW1pdGl2ZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1wcmltaXRpdmVcIjtcblxuXG5cblxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBQb3J0YWxcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGYxNzAxYmVhZTA4M2RiYWUkdmFyJFBPUlRBTF9OQU1FID0gJ1BvcnRhbCc7XG5jb25zdCAkZjE3MDFiZWFlMDgzZGJhZSRleHBvcnQkNjAyZWFjMTg1ODI2NDgyYyA9IC8qI19fUFVSRV9fKi8gJDdTWGwyJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgdmFyIF9nbG9iYWxUaGlzJGRvY3VtZW50O1xuICAgIGNvbnN0IHsgY29udGFpbmVyOiBjb250YWluZXIgPSBnbG9iYWxUaGlzID09PSBudWxsIHx8IGdsb2JhbFRoaXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfZ2xvYmFsVGhpcyRkb2N1bWVudCA9IGdsb2JhbFRoaXMuZG9jdW1lbnQpID09PSBudWxsIHx8IF9nbG9iYWxUaGlzJGRvY3VtZW50ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZ2xvYmFsVGhpcyRkb2N1bWVudC5ib2R5ICwgLi4ucG9ydGFsUHJvcHMgfSA9IHByb3BzO1xuICAgIHJldHVybiBjb250YWluZXIgPyAvKiNfX1BVUkVfXyovICQ3U1hsMiRyZWFjdGRvbS5jcmVhdGVQb3J0YWwoLyojX19QVVJFX18qLyAkN1NYbDIkY3JlYXRlRWxlbWVudCgkN1NYbDIkUHJpbWl0aXZlLmRpdiwgJDdTWGwyJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBwb3J0YWxQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pKSwgY29udGFpbmVyKSA6IG51bGw7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkZjE3MDFiZWFlMDgzZGJhZSRleHBvcnQkNjAyZWFjMTg1ODI2NDgyYywge1xuICAgIGRpc3BsYXlOYW1lOiAkZjE3MDFiZWFlMDgzZGJhZSR2YXIkUE9SVEFMX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkZjE3MDFiZWFlMDgzZGJhZSRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSA9ICRmMTcwMWJlYWUwODNkYmFlJGV4cG9ydCQ2MDJlYWMxODU4MjY0ODJjO1xuXG5cblxuXG5leHBvcnQgeyRmMTcwMWJlYWUwODNkYmFlJGV4cG9ydCQ2MDJlYWMxODU4MjY0ODJjIGFzIFBvcnRhbCwgJGYxNzAxYmVhZTA4M2RiYWUkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgYXMgUm9vdH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tb2R1bGUuanMubWFwXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=
//# sourceURL=webpack-internal:///../../../node_modules/@radix-ui/react-portal/dist/index.module.js
`);
              }
            ),
            /***/
            "../../../node_modules/@radix-ui/react-presence/dist/index.module.js": (
              /*!***************************************************************************!*\
                !*** ../../../node_modules/@radix-ui/react-presence/dist/index.module.js ***!
                \***************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Presence\": () => (/* binding */ $921a889cee6df7e8$export$99c2b779aa4e8b8b)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-dom */ \"react-dom\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @radix-ui/react-compose-refs */ \"../../../node_modules/@radix-ui/react-compose-refs/dist/index.module.js\");\n/* harmony import */ var _radix_ui_react_use_layout_effect__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @radix-ui/react-use-layout-effect */ \"../../../node_modules/@radix-ui/react-use-layout-effect/dist/index.module.js\");\n\n\n\n\n\n\n\n\n\n\nfunction $fe963b355347cc68$export$3e6543de14f8614f(initialState, machine) {\n    return (0,react__WEBPACK_IMPORTED_MODULE_0__.useReducer)((state, event)=>{\n        const nextState = machine[state][event];\n        return nextState !== null && nextState !== void 0 ? nextState : state;\n    }, initialState);\n}\n\n\nconst $921a889cee6df7e8$export$99c2b779aa4e8b8b = (props)=>{\n    const { present: present , children: children  } = props;\n    const presence = $921a889cee6df7e8$var$usePresence(present);\n    const child = typeof children === 'function' ? children({\n        present: presence.isPresent\n    }) : react__WEBPACK_IMPORTED_MODULE_0__.Children.only(children);\n    const ref = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_2__.useComposedRefs)(presence.ref, child.ref);\n    const forceMount = typeof children === 'function';\n    return forceMount || presence.isPresent ? /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.cloneElement)(child, {\n        ref: ref\n    }) : null;\n};\n$921a889cee6df7e8$export$99c2b779aa4e8b8b.displayName = 'Presence';\n/* -------------------------------------------------------------------------------------------------\n * usePresence\n * -----------------------------------------------------------------------------------------------*/ function $921a889cee6df7e8$var$usePresence(present) {\n    const [node1, setNode] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)();\n    const stylesRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)({});\n    const prevPresentRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(present);\n    const prevAnimationNameRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)('none');\n    const initialState = present ? 'mounted' : 'unmounted';\n    const [state, send] = $fe963b355347cc68$export$3e6543de14f8614f(initialState, {\n        mounted: {\n            UNMOUNT: 'unmounted',\n            ANIMATION_OUT: 'unmountSuspended'\n        },\n        unmountSuspended: {\n            MOUNT: 'mounted',\n            ANIMATION_END: 'unmounted'\n        },\n        unmounted: {\n            MOUNT: 'mounted'\n        }\n    });\n    (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{\n        const currentAnimationName = $921a889cee6df7e8$var$getAnimationName(stylesRef.current);\n        prevAnimationNameRef.current = state === 'mounted' ? currentAnimationName : 'none';\n    }, [\n        state\n    ]);\n    (0,_radix_ui_react_use_layout_effect__WEBPACK_IMPORTED_MODULE_3__.useLayoutEffect)(()=>{\n        const styles = stylesRef.current;\n        const wasPresent = prevPresentRef.current;\n        const hasPresentChanged = wasPresent !== present;\n        if (hasPresentChanged) {\n            const prevAnimationName = prevAnimationNameRef.current;\n            const currentAnimationName = $921a889cee6df7e8$var$getAnimationName(styles);\n            if (present) send('MOUNT');\n            else if (currentAnimationName === 'none' || (styles === null || styles === void 0 ? void 0 : styles.display) === 'none') // If there is no exit animation or the element is hidden, animations won't run\n            // so we unmount instantly\n            send('UNMOUNT');\n            else {\n                /**\n         * When `present` changes to `false`, we check changes to animation-name to\n         * determine whether an animation has started. We chose this approach (reading\n         * computed styles) because there is no `animationrun` event and `animationstart`\n         * fires after `animation-delay` has expired which would be too late.\n         */ const isAnimating = prevAnimationName !== currentAnimationName;\n                if (wasPresent && isAnimating) send('ANIMATION_OUT');\n                else send('UNMOUNT');\n            }\n            prevPresentRef.current = present;\n        }\n    }, [\n        present,\n        send\n    ]);\n    (0,_radix_ui_react_use_layout_effect__WEBPACK_IMPORTED_MODULE_3__.useLayoutEffect)(()=>{\n        if (node1) {\n            /**\n       * Triggering an ANIMATION_OUT during an ANIMATION_IN will fire an `animationcancel`\n       * event for ANIMATION_IN after we have entered `unmountSuspended` state. So, we\n       * make sure we only trigger ANIMATION_END for the currently active animation.\n       */ const handleAnimationEnd = (event)=>{\n                const currentAnimationName = $921a889cee6df7e8$var$getAnimationName(stylesRef.current);\n                const isCurrentAnimation = currentAnimationName.includes(event.animationName);\n                if (event.target === node1 && isCurrentAnimation) // With React 18 concurrency this update is applied\n                // a frame after the animation ends, creating a flash of visible content.\n                // By manually flushing we ensure they sync within a frame, removing the flash.\n                (0,react_dom__WEBPACK_IMPORTED_MODULE_1__.flushSync)(()=>send('ANIMATION_END')\n                );\n            };\n            const handleAnimationStart = (event)=>{\n                if (event.target === node1) // if animation occurred, store its name as the previous animation.\n                prevAnimationNameRef.current = $921a889cee6df7e8$var$getAnimationName(stylesRef.current);\n            };\n            node1.addEventListener('animationstart', handleAnimationStart);\n            node1.addEventListener('animationcancel', handleAnimationEnd);\n            node1.addEventListener('animationend', handleAnimationEnd);\n            return ()=>{\n                node1.removeEventListener('animationstart', handleAnimationStart);\n                node1.removeEventListener('animationcancel', handleAnimationEnd);\n                node1.removeEventListener('animationend', handleAnimationEnd);\n            };\n        } else // Transition to the unmounted state if the node is removed prematurely.\n        // We avoid doing so during cleanup as the node may change but still exist.\n        send('ANIMATION_END');\n    }, [\n        node1,\n        send\n    ]);\n    return {\n        isPresent: [\n            'mounted',\n            'unmountSuspended'\n        ].includes(state),\n        ref: (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)((node)=>{\n            if (node) stylesRef.current = getComputedStyle(node);\n            setNode(node);\n        }, [])\n    };\n}\n/* -----------------------------------------------------------------------------------------------*/ function $921a889cee6df7e8$var$getAnimationName(styles) {\n    return (styles === null || styles === void 0 ? void 0 : styles.animationName) || 'none';\n}\n\n\n\n\n\n//# sourceMappingURL=index.module.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 10516 characters]\n//# sourceURL=webpack-internal:///../../../node_modules/@radix-ui/react-presence/dist/index.module.js\n");
              }
            ),
            /***/
            "../../../node_modules/@radix-ui/react-primitive/dist/index.module.js": (
              /*!****************************************************************************!*\
                !*** ../../../node_modules/@radix-ui/react-primitive/dist/index.module.js ***!
                \****************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Primitive\": () => (/* binding */ $8927f6f2acc4f386$export$250ffa63cdc0d034),\n/* harmony export */   \"Root\": () => (/* binding */ $8927f6f2acc4f386$export$be92b6f5f03c0fe9),\n/* harmony export */   \"dispatchDiscreteCustomEvent\": () => (/* binding */ $8927f6f2acc4f386$export$6d1a0317bde7de7f)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"../../../node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-dom */ \"react-dom\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _radix_ui_react_slot__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @radix-ui/react-slot */ \"../../../node_modules/@radix-ui/react-slot/dist/index.module.js\");\n\n\n\n\n\n\n\n\n\nconst $8927f6f2acc4f386$var$NODES = [\n    'a',\n    'button',\n    'div',\n    'h2',\n    'h3',\n    'img',\n    'label',\n    'li',\n    'nav',\n    'ol',\n    'p',\n    'span',\n    'svg',\n    'ul'\n]; // Temporary while we await merge of this fix:\n// https://github.com/DefinitelyTyped/DefinitelyTyped/pull/55396\n// prettier-ignore\n/* -------------------------------------------------------------------------------------------------\n * Primitive\n * -----------------------------------------------------------------------------------------------*/ const $8927f6f2acc4f386$export$250ffa63cdc0d034 = $8927f6f2acc4f386$var$NODES.reduce((primitive, node)=>{\n    const Node = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)((props, forwardedRef)=>{\n        const { asChild: asChild , ...primitiveProps } = props;\n        const Comp = asChild ? _radix_ui_react_slot__WEBPACK_IMPORTED_MODULE_3__.Slot : node;\n        (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n            window[Symbol.for('radix-ui')] = true;\n        }, []);\n        return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(Comp, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, primitiveProps, {\n            ref: forwardedRef\n        }));\n    });\n    Node.displayName = `Primitive.${node}`;\n    return {\n        ...primitive,\n        [node]: Node\n    };\n}, {});\n/* -------------------------------------------------------------------------------------------------\n * Utils\n * -----------------------------------------------------------------------------------------------*/ /**\n * Flush custom event dispatch\n * https://github.com/radix-ui/primitives/pull/1378\n *\n * React batches *all* event handlers since version 18, this introduces certain considerations when using custom event types.\n *\n * Internally, React prioritises events in the following order:\n *  - discrete\n *  - continuous\n *  - default\n *\n * https://github.com/facebook/react/blob/a8a4742f1c54493df00da648a3f9d26e3db9c8b5/packages/react-dom/src/events/ReactDOMEventListener.js#L294-L350\n *\n * `discrete` is an  important distinction as updates within these events are applied immediately.\n * React however, is not able to infer the priority of custom event types due to how they are detected internally.\n * Because of this, it's possible for updates from custom events to be unexpectedly batched when\n * dispatched by another `discrete` event.\n *\n * In order to ensure that updates from custom events are applied predictably, we need to manually flush the batch.\n * This utility should be used when dispatching a custom event from within another `discrete` event, this utility\n * is not nessesary when dispatching known event types, or if dispatching a custom type inside a non-discrete event.\n * For example:\n *\n * dispatching a known click \u{1F44E}\n * target.dispatchEvent(new Event(\u2018click\u2019))\n *\n * dispatching a custom type within a non-discrete event \u{1F44E}\n * onScroll={(event) => event.target.dispatchEvent(new CustomEvent(\u2018customType\u2019))}\n *\n * dispatching a custom type within a `discrete` event \u{1F44D}\n * onPointerDown={(event) => dispatchDiscreteCustomEvent(event.target, new CustomEvent(\u2018customType\u2019))}\n *\n * Note: though React classifies `focus`, `focusin` and `focusout` events as `discrete`, it's  not recommended to use\n * this utility with them. This is because it's possible for those handlers to be called implicitly during render\n * e.g. when focus is within a component as it is unmounted, or when managing focus on mount.\n */ function $8927f6f2acc4f386$export$6d1a0317bde7de7f(target, event) {\n    if (target) (0,react_dom__WEBPACK_IMPORTED_MODULE_2__.flushSync)(()=>target.dispatchEvent(event)\n    );\n}\n/* -----------------------------------------------------------------------------------------------*/ const $8927f6f2acc4f386$export$be92b6f5f03c0fe9 = $8927f6f2acc4f386$export$250ffa63cdc0d034;\n\n\n\n\n\n//# sourceMappingURL=index.module.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6984 characters]\n//# sourceURL=webpack-internal:///../../../node_modules/@radix-ui/react-primitive/dist/index.module.js\n");
              }
            ),
            /***/
            "../../../node_modules/@radix-ui/react-roving-focus/dist/index.module.js": (
              /*!*******************************************************************************!*\
                !*** ../../../node_modules/@radix-ui/react-roving-focus/dist/index.module.js ***!
                \*******************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "Item": () => (/* binding */ $d7bdfb9eb0fdf311$export$6d08773d2e66f8f2),
/* harmony export */   "Root": () => (/* binding */ $d7bdfb9eb0fdf311$export$be92b6f5f03c0fe9),
/* harmony export */   "RovingFocusGroup": () => (/* binding */ $d7bdfb9eb0fdf311$export$8699f7c8af148338),
/* harmony export */   "RovingFocusGroupItem": () => (/* binding */ $d7bdfb9eb0fdf311$export$ab9df7c53fe8454),
/* harmony export */   "createRovingFocusGroupScope": () => (/* binding */ $d7bdfb9eb0fdf311$export$c7109489551a4f4)
/* harmony export */ });
/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ "../../../node_modules/@babel/runtime/helpers/esm/extends.js");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _radix_ui_primitive__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @radix-ui/primitive */ "../../../node_modules/@radix-ui/primitive/dist/index.module.js");
/* harmony import */ var _radix_ui_react_collection__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @radix-ui/react-collection */ "../../../node_modules/@radix-ui/react-collection/dist/index.module.js");
/* harmony import */ var _radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @radix-ui/react-compose-refs */ "../../../node_modules/@radix-ui/react-compose-refs/dist/index.module.js");
/* harmony import */ var _radix_ui_react_context__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @radix-ui/react-context */ "../../../node_modules/@radix-ui/react-context/dist/index.module.js");
/* harmony import */ var _radix_ui_react_id__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @radix-ui/react-id */ "../../../node_modules/@radix-ui/react-id/dist/index.module.js");
/* harmony import */ var _radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @radix-ui/react-primitive */ "../../../node_modules/@radix-ui/react-primitive/dist/index.module.js");
/* harmony import */ var _radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @radix-ui/react-use-callback-ref */ "../../../node_modules/@radix-ui/react-use-callback-ref/dist/index.module.js");
/* harmony import */ var _radix_ui_react_use_controllable_state__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @radix-ui/react-use-controllable-state */ "../../../node_modules/@radix-ui/react-use-controllable-state/dist/index.module.js");
/* harmony import */ var _radix_ui_react_direction__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @radix-ui/react-direction */ "../../../node_modules/@radix-ui/react-direction/dist/index.module.js");























const $d7bdfb9eb0fdf311$var$ENTRY_FOCUS = 'rovingFocusGroup.onEntryFocus';
const $d7bdfb9eb0fdf311$var$EVENT_OPTIONS = {
    bubbles: false,
    cancelable: true
};
/* -------------------------------------------------------------------------------------------------
 * RovingFocusGroup
 * -----------------------------------------------------------------------------------------------*/ const $d7bdfb9eb0fdf311$var$GROUP_NAME = 'RovingFocusGroup';
const [$d7bdfb9eb0fdf311$var$Collection, $d7bdfb9eb0fdf311$var$useCollection, $d7bdfb9eb0fdf311$var$createCollectionScope] = (0,_radix_ui_react_collection__WEBPACK_IMPORTED_MODULE_2__.createCollection)($d7bdfb9eb0fdf311$var$GROUP_NAME);
const [$d7bdfb9eb0fdf311$var$createRovingFocusGroupContext, $d7bdfb9eb0fdf311$export$c7109489551a4f4] = (0,_radix_ui_react_context__WEBPACK_IMPORTED_MODULE_3__.createContextScope)($d7bdfb9eb0fdf311$var$GROUP_NAME, [
    $d7bdfb9eb0fdf311$var$createCollectionScope
]);
const [$d7bdfb9eb0fdf311$var$RovingFocusProvider, $d7bdfb9eb0fdf311$var$useRovingFocusContext] = $d7bdfb9eb0fdf311$var$createRovingFocusGroupContext($d7bdfb9eb0fdf311$var$GROUP_NAME);
const $d7bdfb9eb0fdf311$export$8699f7c8af148338 = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)((props, forwardedRef)=>{
    return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)($d7bdfb9eb0fdf311$var$Collection.Provider, {
        scope: props.__scopeRovingFocusGroup
    }, /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)($d7bdfb9eb0fdf311$var$Collection.Slot, {
        scope: props.__scopeRovingFocusGroup
    }, /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)($d7bdfb9eb0fdf311$var$RovingFocusGroupImpl, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, props, {
        ref: forwardedRef
    }))));
});
/*#__PURE__*/ Object.assign($d7bdfb9eb0fdf311$export$8699f7c8af148338, {
    displayName: $d7bdfb9eb0fdf311$var$GROUP_NAME
});
/* -----------------------------------------------------------------------------------------------*/ const $d7bdfb9eb0fdf311$var$RovingFocusGroupImpl = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)((props, forwardedRef)=>{
    const { __scopeRovingFocusGroup: __scopeRovingFocusGroup , orientation: orientation , loop: loop = false , dir: dir , currentTabStopId: currentTabStopIdProp , defaultCurrentTabStopId: defaultCurrentTabStopId , onCurrentTabStopIdChange: onCurrentTabStopIdChange , onEntryFocus: onEntryFocus , ...groupProps } = props;
    const ref = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);
    const composedRefs = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_4__.useComposedRefs)(forwardedRef, ref);
    const direction = (0,_radix_ui_react_direction__WEBPACK_IMPORTED_MODULE_5__.useDirection)(dir);
    const [currentTabStopId = null, setCurrentTabStopId] = (0,_radix_ui_react_use_controllable_state__WEBPACK_IMPORTED_MODULE_6__.useControllableState)({
        prop: currentTabStopIdProp,
        defaultProp: defaultCurrentTabStopId,
        onChange: onCurrentTabStopIdChange
    });
    const [isTabbingBackOut, setIsTabbingBackOut] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);
    const handleEntryFocus = (0,_radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_7__.useCallbackRef)(onEntryFocus);
    const getItems = $d7bdfb9eb0fdf311$var$useCollection(__scopeRovingFocusGroup);
    const isClickFocusRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(false);
    const [focusableItemsCount, setFocusableItemsCount] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(0);
    (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{
        const node = ref.current;
        if (node) {
            node.addEventListener($d7bdfb9eb0fdf311$var$ENTRY_FOCUS, handleEntryFocus);
            return ()=>node.removeEventListener($d7bdfb9eb0fdf311$var$ENTRY_FOCUS, handleEntryFocus)
            ;
        }
    }, [
        handleEntryFocus
    ]);
    return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)($d7bdfb9eb0fdf311$var$RovingFocusProvider, {
        scope: __scopeRovingFocusGroup,
        orientation: orientation,
        dir: direction,
        loop: loop,
        currentTabStopId: currentTabStopId,
        onItemFocus: (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)((tabStopId)=>setCurrentTabStopId(tabStopId)
        , [
            setCurrentTabStopId
        ]),
        onItemShiftTab: (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(()=>setIsTabbingBackOut(true)
        , []),
        onFocusableItemAdd: (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(()=>setFocusableItemsCount((prevCount)=>prevCount + 1
            )
        , []),
        onFocusableItemRemove: (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(()=>setFocusableItemsCount((prevCount)=>prevCount - 1
            )
        , [])
    }, /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_8__.Primitive.div, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({
        tabIndex: isTabbingBackOut || focusableItemsCount === 0 ? -1 : 0,
        "data-orientation": orientation
    }, groupProps, {
        ref: composedRefs,
        style: {
            outline: 'none',
            ...props.style
        },
        onMouseDown: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_9__.composeEventHandlers)(props.onMouseDown, ()=>{
            isClickFocusRef.current = true;
        }),
        onFocus: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_9__.composeEventHandlers)(props.onFocus, (event)=>{
            // We normally wouldn't need this check, because we already check
            // that the focus is on the current target and not bubbling to it.
            // We do this because Safari doesn't focus buttons when clicked, and
            // instead, the wrapper will get focused and not through a bubbling event.
            const isKeyboardFocus = !isClickFocusRef.current;
            if (event.target === event.currentTarget && isKeyboardFocus && !isTabbingBackOut) {
                const entryFocusEvent = new CustomEvent($d7bdfb9eb0fdf311$var$ENTRY_FOCUS, $d7bdfb9eb0fdf311$var$EVENT_OPTIONS);
                event.currentTarget.dispatchEvent(entryFocusEvent);
                if (!entryFocusEvent.defaultPrevented) {
                    const items = getItems().filter((item)=>item.focusable
                    );
                    const activeItem = items.find((item)=>item.active
                    );
                    const currentItem = items.find((item)=>item.id === currentTabStopId
                    );
                    const candidateItems = [
                        activeItem,
                        currentItem,
                        ...items
                    ].filter(Boolean);
                    const candidateNodes = candidateItems.map((item)=>item.ref.current
                    );
                    $d7bdfb9eb0fdf311$var$focusFirst(candidateNodes);
                }
            }
            isClickFocusRef.current = false;
        }),
        onBlur: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_9__.composeEventHandlers)(props.onBlur, ()=>setIsTabbingBackOut(false)
        )
    })));
});
/* -------------------------------------------------------------------------------------------------
 * RovingFocusGroupItem
 * -----------------------------------------------------------------------------------------------*/ const $d7bdfb9eb0fdf311$var$ITEM_NAME = 'RovingFocusGroupItem';
const $d7bdfb9eb0fdf311$export$ab9df7c53fe8454 = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)((props, forwardedRef)=>{
    const { __scopeRovingFocusGroup: __scopeRovingFocusGroup , focusable: focusable = true , active: active = false , tabStopId: tabStopId , ...itemProps } = props;
    const autoId = (0,_radix_ui_react_id__WEBPACK_IMPORTED_MODULE_10__.useId)();
    const id = tabStopId || autoId;
    const context = $d7bdfb9eb0fdf311$var$useRovingFocusContext($d7bdfb9eb0fdf311$var$ITEM_NAME, __scopeRovingFocusGroup);
    const isCurrentTabStop = context.currentTabStopId === id;
    const getItems = $d7bdfb9eb0fdf311$var$useCollection(__scopeRovingFocusGroup);
    const { onFocusableItemAdd: onFocusableItemAdd , onFocusableItemRemove: onFocusableItemRemove  } = context;
    (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{
        if (focusable) {
            onFocusableItemAdd();
            return ()=>onFocusableItemRemove()
            ;
        }
    }, [
        focusable,
        onFocusableItemAdd,
        onFocusableItemRemove
    ]);
    return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)($d7bdfb9eb0fdf311$var$Collection.ItemSlot, {
        scope: __scopeRovingFocusGroup,
        id: id,
        focusable: focusable,
        active: active
    }, /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_8__.Primitive.span, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({
        tabIndex: isCurrentTabStop ? 0 : -1,
        "data-orientation": context.orientation
    }, itemProps, {
        ref: forwardedRef,
        onMouseDown: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_9__.composeEventHandlers)(props.onMouseDown, (event)=>{
            // We prevent focusing non-focusable items on \`mousedown\`.
            // Even though the item has tabIndex={-1}, that only means take it out of the tab order.
            if (!focusable) event.preventDefault(); // Safari doesn't focus a button when clicked so we run our logic on mousedown also
            else context.onItemFocus(id);
        }),
        onFocus: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_9__.composeEventHandlers)(props.onFocus, ()=>context.onItemFocus(id)
        ),
        onKeyDown: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_9__.composeEventHandlers)(props.onKeyDown, (event)=>{
            if (event.key === 'Tab' && event.shiftKey) {
                context.onItemShiftTab();
                return;
            }
            if (event.target !== event.currentTarget) return;
            const focusIntent = $d7bdfb9eb0fdf311$var$getFocusIntent(event, context.orientation, context.dir);
            if (focusIntent !== undefined) {
                event.preventDefault();
                const items = getItems().filter((item)=>item.focusable
                );
                let candidateNodes = items.map((item)=>item.ref.current
                );
                if (focusIntent === 'last') candidateNodes.reverse();
                else if (focusIntent === 'prev' || focusIntent === 'next') {
                    if (focusIntent === 'prev') candidateNodes.reverse();
                    const currentIndex = candidateNodes.indexOf(event.currentTarget);
                    candidateNodes = context.loop ? $d7bdfb9eb0fdf311$var$wrapArray(candidateNodes, currentIndex + 1) : candidateNodes.slice(currentIndex + 1);
                }
                /**
         * Imperative focus during keydown is risky so we prevent React's batching updates
         * to avoid potential bugs. See: https://github.com/facebook/react/issues/20332
         */ setTimeout(()=>$d7bdfb9eb0fdf311$var$focusFirst(candidateNodes)
                );
            }
        })
    })));
});
/*#__PURE__*/ Object.assign($d7bdfb9eb0fdf311$export$ab9df7c53fe8454, {
    displayName: $d7bdfb9eb0fdf311$var$ITEM_NAME
});
/* -----------------------------------------------------------------------------------------------*/ // prettier-ignore
const $d7bdfb9eb0fdf311$var$MAP_KEY_TO_FOCUS_INTENT = {
    ArrowLeft: 'prev',
    ArrowUp: 'prev',
    ArrowRight: 'next',
    ArrowDown: 'next',
    PageUp: 'first',
    Home: 'first',
    PageDown: 'last',
    End: 'last'
};
function $d7bdfb9eb0fdf311$var$getDirectionAwareKey(key, dir) {
    if (dir !== 'rtl') return key;
    return key === 'ArrowLeft' ? 'ArrowRight' : key === 'ArrowRight' ? 'ArrowLeft' : key;
}
function $d7bdfb9eb0fdf311$var$getFocusIntent(event, orientation, dir) {
    const key = $d7bdfb9eb0fdf311$var$getDirectionAwareKey(event.key, dir);
    if (orientation === 'vertical' && [
        'ArrowLeft',
        'ArrowRight'
    ].includes(key)) return undefined;
    if (orientation === 'horizontal' && [
        'ArrowUp',
        'ArrowDown'
    ].includes(key)) return undefined;
    return $d7bdfb9eb0fdf311$var$MAP_KEY_TO_FOCUS_INTENT[key];
}
function $d7bdfb9eb0fdf311$var$focusFirst(candidates) {
    const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;
    for (const candidate of candidates){
        // if focus is already where we want to go, we don't want to keep going through the candidates
        if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;
        candidate.focus();
        if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;
    }
}
/**
 * Wraps an array around itself at a given start index
 * Example: \`wrapArray(['a', 'b', 'c', 'd'], 2) === ['c', 'd', 'a', 'b']\`
 */ function $d7bdfb9eb0fdf311$var$wrapArray(array, startIndex) {
    return array.map((_, index)=>array[(startIndex + index) % array.length]
    );
}
const $d7bdfb9eb0fdf311$export$be92b6f5f03c0fe9 = $d7bdfb9eb0fdf311$export$8699f7c8af148338;
const $d7bdfb9eb0fdf311$export$6d08773d2e66f8f2 = $d7bdfb9eb0fdf311$export$ab9df7c53fe8454;





//# sourceMappingURL=index.module.js.map
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 21196 characters]
//# sourceURL=webpack-internal:///../../../node_modules/@radix-ui/react-roving-focus/dist/index.module.js
`);
              }
            ),
            /***/
            "../../../node_modules/@radix-ui/react-slot/dist/index.module.js": (
              /*!***********************************************************************!*\
                !*** ../../../node_modules/@radix-ui/react-slot/dist/index.module.js ***!
                \***********************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "Root": () => (/* binding */ $5e63c961fc1ce211$export$be92b6f5f03c0fe9),
/* harmony export */   "Slot": () => (/* binding */ $5e63c961fc1ce211$export$8c6ed5c666ac1360),
/* harmony export */   "Slottable": () => (/* binding */ $5e63c961fc1ce211$export$d9f1ccf0bdb05d45)
/* harmony export */ });
/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ "../../../node_modules/@babel/runtime/helpers/esm/extends.js");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @radix-ui/react-compose-refs */ "../../../node_modules/@radix-ui/react-compose-refs/dist/index.module.js");







/* -------------------------------------------------------------------------------------------------
 * Slot
 * -----------------------------------------------------------------------------------------------*/ const $5e63c961fc1ce211$export$8c6ed5c666ac1360 = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)((props, forwardedRef)=>{
    const { children: children , ...slotProps } = props;
    const childrenArray = react__WEBPACK_IMPORTED_MODULE_1__.Children.toArray(children);
    const slottable = childrenArray.find($5e63c961fc1ce211$var$isSlottable);
    if (slottable) {
        // the new element to render is the one passed as a child of \`Slottable\`
        const newElement = slottable.props.children;
        const newChildren = childrenArray.map((child)=>{
            if (child === slottable) {
                // because the new element will be the one rendered, we are only interested
                // in grabbing its children (\`newElement.props.children\`)
                if (react__WEBPACK_IMPORTED_MODULE_1__.Children.count(newElement) > 1) return react__WEBPACK_IMPORTED_MODULE_1__.Children.only(null);
                return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.isValidElement)(newElement) ? newElement.props.children : null;
            } else return child;
        });
        return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)($5e63c961fc1ce211$var$SlotClone, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, slotProps, {
            ref: forwardedRef
        }), /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.isValidElement)(newElement) ? /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.cloneElement)(newElement, undefined, newChildren) : null);
    }
    return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)($5e63c961fc1ce211$var$SlotClone, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, slotProps, {
        ref: forwardedRef
    }), children);
});
$5e63c961fc1ce211$export$8c6ed5c666ac1360.displayName = 'Slot';
/* -------------------------------------------------------------------------------------------------
 * SlotClone
 * -----------------------------------------------------------------------------------------------*/ const $5e63c961fc1ce211$var$SlotClone = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)((props, forwardedRef)=>{
    const { children: children , ...slotProps } = props;
    if (/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.isValidElement)(children)) return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.cloneElement)(children, {
        ...$5e63c961fc1ce211$var$mergeProps(slotProps, children.props),
        ref: (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_2__.composeRefs)(forwardedRef, children.ref)
    });
    return react__WEBPACK_IMPORTED_MODULE_1__.Children.count(children) > 1 ? react__WEBPACK_IMPORTED_MODULE_1__.Children.only(null) : null;
});
$5e63c961fc1ce211$var$SlotClone.displayName = 'SlotClone';
/* -------------------------------------------------------------------------------------------------
 * Slottable
 * -----------------------------------------------------------------------------------------------*/ const $5e63c961fc1ce211$export$d9f1ccf0bdb05d45 = ({ children: children  })=>{
    return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(react__WEBPACK_IMPORTED_MODULE_1__.Fragment, null, children);
};
/* ---------------------------------------------------------------------------------------------- */ function $5e63c961fc1ce211$var$isSlottable(child) {
    return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.isValidElement)(child) && child.type === $5e63c961fc1ce211$export$d9f1ccf0bdb05d45;
}
function $5e63c961fc1ce211$var$mergeProps(slotProps, childProps) {
    // all child props should override
    const overrideProps = {
        ...childProps
    };
    for(const propName in childProps){
        const slotPropValue = slotProps[propName];
        const childPropValue = childProps[propName];
        const isHandler = /^on[A-Z]/.test(propName);
        if (isHandler) {
            // if the handler exists on both, we compose them
            if (slotPropValue && childPropValue) overrideProps[propName] = (...args)=>{
                childPropValue(...args);
                slotPropValue(...args);
            };
            else if (slotPropValue) overrideProps[propName] = slotPropValue;
        } else if (propName === 'style') overrideProps[propName] = {
            ...slotPropValue,
            ...childPropValue
        };
        else if (propName === 'className') overrideProps[propName] = [
            slotPropValue,
            childPropValue
        ].filter(Boolean).join(' ');
    }
    return {
        ...slotProps,
        ...overrideProps
    };
}
const $5e63c961fc1ce211$export$be92b6f5f03c0fe9 = $5e63c961fc1ce211$export$8c6ed5c666ac1360;





//# sourceMappingURL=index.module.js.map
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 8112 characters]
//# sourceURL=webpack-internal:///../../../node_modules/@radix-ui/react-slot/dist/index.module.js
`);
              }
            ),
            /***/
            "../../../node_modules/@radix-ui/react-tabs/dist/index.module.js": (
              /*!***********************************************************************!*\
                !*** ../../../node_modules/@radix-ui/react-tabs/dist/index.module.js ***!
                \***********************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "Content": () => (/* binding */ $69cb30bb0017df05$export$7c6e2c02157bb7d2),
/* harmony export */   "List": () => (/* binding */ $69cb30bb0017df05$export$54c2e3dc7acea9f5),
/* harmony export */   "Root": () => (/* binding */ $69cb30bb0017df05$export$be92b6f5f03c0fe9),
/* harmony export */   "Tabs": () => (/* binding */ $69cb30bb0017df05$export$b2539bed5023c21c),
/* harmony export */   "TabsContent": () => (/* binding */ $69cb30bb0017df05$export$bd905d70e8fd2ebb),
/* harmony export */   "TabsList": () => (/* binding */ $69cb30bb0017df05$export$9712d22edc0d78c1),
/* harmony export */   "TabsTrigger": () => (/* binding */ $69cb30bb0017df05$export$8114b9fdfdf9f3ba),
/* harmony export */   "Trigger": () => (/* binding */ $69cb30bb0017df05$export$41fb9f06171c75f4),
/* harmony export */   "createTabsScope": () => (/* binding */ $69cb30bb0017df05$export$355f5bd209d7b13a)
/* harmony export */ });
/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ "../../../node_modules/@babel/runtime/helpers/esm/extends.js");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _radix_ui_primitive__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @radix-ui/primitive */ "../../../node_modules/@radix-ui/primitive/dist/index.module.js");
/* harmony import */ var _radix_ui_react_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @radix-ui/react-context */ "../../../node_modules/@radix-ui/react-context/dist/index.module.js");
/* harmony import */ var _radix_ui_react_roving_focus__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @radix-ui/react-roving-focus */ "../../../node_modules/@radix-ui/react-roving-focus/dist/index.module.js");
/* harmony import */ var _radix_ui_react_presence__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @radix-ui/react-presence */ "../../../node_modules/@radix-ui/react-presence/dist/index.module.js");
/* harmony import */ var _radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @radix-ui/react-primitive */ "../../../node_modules/@radix-ui/react-primitive/dist/index.module.js");
/* harmony import */ var _radix_ui_react_direction__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @radix-ui/react-direction */ "../../../node_modules/@radix-ui/react-direction/dist/index.module.js");
/* harmony import */ var _radix_ui_react_use_controllable_state__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @radix-ui/react-use-controllable-state */ "../../../node_modules/@radix-ui/react-use-controllable-state/dist/index.module.js");
/* harmony import */ var _radix_ui_react_id__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @radix-ui/react-id */ "../../../node_modules/@radix-ui/react-id/dist/index.module.js");






















/* -------------------------------------------------------------------------------------------------
 * Tabs
 * -----------------------------------------------------------------------------------------------*/ const $69cb30bb0017df05$var$TABS_NAME = 'Tabs';
const [$69cb30bb0017df05$var$createTabsContext, $69cb30bb0017df05$export$355f5bd209d7b13a] = (0,_radix_ui_react_context__WEBPACK_IMPORTED_MODULE_2__.createContextScope)($69cb30bb0017df05$var$TABS_NAME, [
    _radix_ui_react_roving_focus__WEBPACK_IMPORTED_MODULE_3__.createRovingFocusGroupScope
]);
const $69cb30bb0017df05$var$useRovingFocusGroupScope = (0,_radix_ui_react_roving_focus__WEBPACK_IMPORTED_MODULE_3__.createRovingFocusGroupScope)();
const [$69cb30bb0017df05$var$TabsProvider, $69cb30bb0017df05$var$useTabsContext] = $69cb30bb0017df05$var$createTabsContext($69cb30bb0017df05$var$TABS_NAME);
const $69cb30bb0017df05$export$b2539bed5023c21c = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)((props, forwardedRef)=>{
    const { __scopeTabs: __scopeTabs , value: valueProp , onValueChange: onValueChange , defaultValue: defaultValue , orientation: orientation = 'horizontal' , dir: dir , activationMode: activationMode = 'automatic' , ...tabsProps } = props;
    const direction = (0,_radix_ui_react_direction__WEBPACK_IMPORTED_MODULE_4__.useDirection)(dir);
    const [value, setValue] = (0,_radix_ui_react_use_controllable_state__WEBPACK_IMPORTED_MODULE_5__.useControllableState)({
        prop: valueProp,
        onChange: onValueChange,
        defaultProp: defaultValue
    });
    return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)($69cb30bb0017df05$var$TabsProvider, {
        scope: __scopeTabs,
        baseId: (0,_radix_ui_react_id__WEBPACK_IMPORTED_MODULE_6__.useId)(),
        value: value,
        onValueChange: setValue,
        orientation: orientation,
        dir: direction,
        activationMode: activationMode
    }, /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_7__.Primitive.div, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({
        dir: direction,
        "data-orientation": orientation
    }, tabsProps, {
        ref: forwardedRef
    })));
});
/*#__PURE__*/ Object.assign($69cb30bb0017df05$export$b2539bed5023c21c, {
    displayName: $69cb30bb0017df05$var$TABS_NAME
});
/* -------------------------------------------------------------------------------------------------
 * TabsList
 * -----------------------------------------------------------------------------------------------*/ const $69cb30bb0017df05$var$TAB_LIST_NAME = 'TabsList';
const $69cb30bb0017df05$export$9712d22edc0d78c1 = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)((props, forwardedRef)=>{
    const { __scopeTabs: __scopeTabs , loop: loop = true , ...listProps } = props;
    const context = $69cb30bb0017df05$var$useTabsContext($69cb30bb0017df05$var$TAB_LIST_NAME, __scopeTabs);
    const rovingFocusGroupScope = $69cb30bb0017df05$var$useRovingFocusGroupScope(__scopeTabs);
    return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_roving_focus__WEBPACK_IMPORTED_MODULE_3__.Root, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({
        asChild: true
    }, rovingFocusGroupScope, {
        orientation: context.orientation,
        dir: context.dir,
        loop: loop
    }), /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_7__.Primitive.div, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({
        role: "tablist",
        "aria-orientation": context.orientation
    }, listProps, {
        ref: forwardedRef
    })));
});
/*#__PURE__*/ Object.assign($69cb30bb0017df05$export$9712d22edc0d78c1, {
    displayName: $69cb30bb0017df05$var$TAB_LIST_NAME
});
/* -------------------------------------------------------------------------------------------------
 * TabsTrigger
 * -----------------------------------------------------------------------------------------------*/ const $69cb30bb0017df05$var$TRIGGER_NAME = 'TabsTrigger';
const $69cb30bb0017df05$export$8114b9fdfdf9f3ba = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)((props, forwardedRef)=>{
    const { __scopeTabs: __scopeTabs , value: value , disabled: disabled = false , ...triggerProps } = props;
    const context = $69cb30bb0017df05$var$useTabsContext($69cb30bb0017df05$var$TRIGGER_NAME, __scopeTabs);
    const rovingFocusGroupScope = $69cb30bb0017df05$var$useRovingFocusGroupScope(__scopeTabs);
    const triggerId = $69cb30bb0017df05$var$makeTriggerId(context.baseId, value);
    const contentId = $69cb30bb0017df05$var$makeContentId(context.baseId, value);
    const isSelected = value === context.value;
    return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_roving_focus__WEBPACK_IMPORTED_MODULE_3__.Item, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({
        asChild: true
    }, rovingFocusGroupScope, {
        focusable: !disabled,
        active: isSelected
    }), /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_7__.Primitive.button, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({
        type: "button",
        role: "tab",
        "aria-selected": isSelected,
        "aria-controls": contentId,
        "data-state": isSelected ? 'active' : 'inactive',
        "data-disabled": disabled ? '' : undefined,
        disabled: disabled,
        id: triggerId
    }, triggerProps, {
        ref: forwardedRef,
        onMouseDown: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_8__.composeEventHandlers)(props.onMouseDown, (event)=>{
            // only call handler if it's the left button (mousedown gets triggered by all mouse buttons)
            // but not when the control key is pressed (avoiding MacOS right click)
            if (!disabled && event.button === 0 && event.ctrlKey === false) context.onValueChange(value);
            else // prevent focus to avoid accidental activation
            event.preventDefault();
        }),
        onKeyDown: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_8__.composeEventHandlers)(props.onKeyDown, (event)=>{
            if ([
                ' ',
                'Enter'
            ].includes(event.key)) context.onValueChange(value);
        }),
        onFocus: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_8__.composeEventHandlers)(props.onFocus, ()=>{
            // handle "automatic" activation if necessary
            // ie. activate tab following focus
            const isAutomaticActivation = context.activationMode !== 'manual';
            if (!isSelected && !disabled && isAutomaticActivation) context.onValueChange(value);
        })
    })));
});
/*#__PURE__*/ Object.assign($69cb30bb0017df05$export$8114b9fdfdf9f3ba, {
    displayName: $69cb30bb0017df05$var$TRIGGER_NAME
});
/* -------------------------------------------------------------------------------------------------
 * TabsContent
 * -----------------------------------------------------------------------------------------------*/ const $69cb30bb0017df05$var$CONTENT_NAME = 'TabsContent';
const $69cb30bb0017df05$export$bd905d70e8fd2ebb = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)((props, forwardedRef)=>{
    const { __scopeTabs: __scopeTabs , value: value , forceMount: forceMount , children: children , ...contentProps } = props;
    const context = $69cb30bb0017df05$var$useTabsContext($69cb30bb0017df05$var$CONTENT_NAME, __scopeTabs);
    const triggerId = $69cb30bb0017df05$var$makeTriggerId(context.baseId, value);
    const contentId = $69cb30bb0017df05$var$makeContentId(context.baseId, value);
    const isSelected = value === context.value;
    const isMountAnimationPreventedRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(isSelected);
    (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{
        const rAF = requestAnimationFrame(()=>isMountAnimationPreventedRef.current = false
        );
        return ()=>cancelAnimationFrame(rAF)
        ;
    }, []);
    return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_presence__WEBPACK_IMPORTED_MODULE_9__.Presence, {
        present: forceMount || isSelected
    }, ({ present: present  })=>/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_7__.Primitive.div, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({
            "data-state": isSelected ? 'active' : 'inactive',
            "data-orientation": context.orientation,
            role: "tabpanel",
            "aria-labelledby": triggerId,
            hidden: !present,
            id: contentId,
            tabIndex: 0
        }, contentProps, {
            ref: forwardedRef,
            style: {
                ...props.style,
                animationDuration: isMountAnimationPreventedRef.current ? '0s' : undefined
            }
        }), present && children)
    );
});
/*#__PURE__*/ Object.assign($69cb30bb0017df05$export$bd905d70e8fd2ebb, {
    displayName: $69cb30bb0017df05$var$CONTENT_NAME
});
/* ---------------------------------------------------------------------------------------------- */ function $69cb30bb0017df05$var$makeTriggerId(baseId, value) {
    return \`\${baseId}-trigger-\${value}\`;
}
function $69cb30bb0017df05$var$makeContentId(baseId, value) {
    return \`\${baseId}-content-\${value}\`;
}
const $69cb30bb0017df05$export$be92b6f5f03c0fe9 = $69cb30bb0017df05$export$b2539bed5023c21c;
const $69cb30bb0017df05$export$54c2e3dc7acea9f5 = $69cb30bb0017df05$export$9712d22edc0d78c1;
const $69cb30bb0017df05$export$41fb9f06171c75f4 = $69cb30bb0017df05$export$8114b9fdfdf9f3ba;
const $69cb30bb0017df05$export$7c6e2c02157bb7d2 = $69cb30bb0017df05$export$bd905d70e8fd2ebb;





//# sourceMappingURL=index.module.js.map
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 16284 characters]
//# sourceURL=webpack-internal:///../../../node_modules/@radix-ui/react-tabs/dist/index.module.js
`);
              }
            ),
            /***/
            "../../../node_modules/@radix-ui/react-use-callback-ref/dist/index.module.js": (
              /*!***********************************************************************************!*\
                !*** ../../../node_modules/@radix-ui/react-use-callback-ref/dist/index.module.js ***!
                \***********************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "useCallbackRef": () => (/* binding */ $b1b2314f5f9a1d84$export$25bec8c6f54ee79a)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n\n\n\n/**\n * A custom hook that converts a callback to a ref to avoid triggering re-renders when passed as a\n * prop or avoid re-executing effects when passed as a dependency\n */ function $b1b2314f5f9a1d84$export$25bec8c6f54ee79a(callback) {\n    const callbackRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(callback);\n    (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{\n        callbackRef.current = callback;\n    }); // https://github.com/facebook/react/issues/19240\n    return (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>(...args)=>{\n            var _callbackRef$current;\n            return (_callbackRef$current = callbackRef.current) === null || _callbackRef$current === void 0 ? void 0 : _callbackRef$current.call(callbackRef, ...args);\n        }\n    , []);\n}\n\n\n\n\n\n//# sourceMappingURL=index.module.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC11c2UtY2FsbGJhY2stcmVmL2Rpc3QvaW5kZXgubW9kdWxlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUF3Rzs7O0FBR3hHO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLDZDQUFhO0FBQ3JDLElBQUksZ0RBQWdCO0FBQ3BCO0FBQ0EsS0FBSyxHQUFHO0FBQ1IsV0FBVyw4Q0FBYztBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUtxRTtBQUNyRSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXVzZS1jYWxsYmFjay1yZWYvZGlzdC9pbmRleC5tb2R1bGUuanM/YjJjZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3VzZVJlZiBhcyAkbHdpV2okdXNlUmVmLCB1c2VFZmZlY3QgYXMgJGx3aVdqJHVzZUVmZmVjdCwgdXNlTWVtbyBhcyAkbHdpV2okdXNlTWVtb30gZnJvbSBcInJlYWN0XCI7XG5cblxuLyoqXG4gKiBBIGN1c3RvbSBob29rIHRoYXQgY29udmVydHMgYSBjYWxsYmFjayB0byBhIHJlZiB0byBhdm9pZCB0cmlnZ2VyaW5nIHJlLXJlbmRlcnMgd2hlbiBwYXNzZWQgYXMgYVxuICogcHJvcCBvciBhdm9pZCByZS1leGVjdXRpbmcgZWZmZWN0cyB3aGVuIHBhc3NlZCBhcyBhIGRlcGVuZGVuY3lcbiAqLyBmdW5jdGlvbiAkYjFiMjMxNGY1ZjlhMWQ4NCRleHBvcnQkMjViZWM4YzZmNTRlZTc5YShjYWxsYmFjaykge1xuICAgIGNvbnN0IGNhbGxiYWNrUmVmID0gJGx3aVdqJHVzZVJlZihjYWxsYmFjayk7XG4gICAgJGx3aVdqJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBjYWxsYmFja1JlZi5jdXJyZW50ID0gY2FsbGJhY2s7XG4gICAgfSk7IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvMTkyNDBcbiAgICByZXR1cm4gJGx3aVdqJHVzZU1lbW8oKCk9PiguLi5hcmdzKT0+e1xuICAgICAgICAgICAgdmFyIF9jYWxsYmFja1JlZiRjdXJyZW50O1xuICAgICAgICAgICAgcmV0dXJuIChfY2FsbGJhY2tSZWYkY3VycmVudCA9IGNhbGxiYWNrUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9jYWxsYmFja1JlZiRjdXJyZW50ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfY2FsbGJhY2tSZWYkY3VycmVudC5jYWxsKGNhbGxiYWNrUmVmLCAuLi5hcmdzKTtcbiAgICAgICAgfVxuICAgICwgW10pO1xufVxuXG5cblxuXG5leHBvcnQgeyRiMWIyMzE0ZjVmOWExZDg0JGV4cG9ydCQyNWJlYzhjNmY1NGVlNzlhIGFzIHVzZUNhbGxiYWNrUmVmfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1vZHVsZS5qcy5tYXBcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/@radix-ui/react-use-callback-ref/dist/index.module.js\n');
              }
            ),
            /***/
            "../../../node_modules/@radix-ui/react-use-controllable-state/dist/index.module.js": (
              /*!*****************************************************************************************!*\
                !*** ../../../node_modules/@radix-ui/react-use-controllable-state/dist/index.module.js ***!
                \*****************************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "useControllableState": () => (/* binding */ $71cd76cc60e0454e$export$6f32135080cb4c3)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @radix-ui/react-use-callback-ref */ "../../../node_modules/@radix-ui/react-use-callback-ref/dist/index.module.js");





function $71cd76cc60e0454e$export$6f32135080cb4c3({ prop: prop , defaultProp: defaultProp , onChange: onChange = ()=>{}  }) {
    const [uncontrolledProp, setUncontrolledProp] = $71cd76cc60e0454e$var$useUncontrolledState({
        defaultProp: defaultProp,
        onChange: onChange
    });
    const isControlled = prop !== undefined;
    const value1 = isControlled ? prop : uncontrolledProp;
    const handleChange = (0,_radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_1__.useCallbackRef)(onChange);
    const setValue = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)((nextValue)=>{
        if (isControlled) {
            const setter = nextValue;
            const value = typeof nextValue === 'function' ? setter(prop) : nextValue;
            if (value !== prop) handleChange(value);
        } else setUncontrolledProp(nextValue);
    }, [
        isControlled,
        prop,
        setUncontrolledProp,
        handleChange
    ]);
    return [
        value1,
        setValue
    ];
}
function $71cd76cc60e0454e$var$useUncontrolledState({ defaultProp: defaultProp , onChange: onChange  }) {
    const uncontrolledState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(defaultProp);
    const [value] = uncontrolledState;
    const prevValueRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(value);
    const handleChange = (0,_radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_1__.useCallbackRef)(onChange);
    (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{
        if (prevValueRef.current !== value) {
            handleChange(value);
            prevValueRef.current = value;
        }
    }, [
        value,
        prevValueRef,
        handleChange
    ]);
    return uncontrolledState;
}





//# sourceMappingURL=index.module.js.map
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC11c2UtY29udHJvbGxhYmxlLXN0YXRlL2Rpc3QvaW5kZXgubW9kdWxlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBNkk7QUFDcEQ7Ozs7QUFJekYsb0RBQW9ELHNFQUFzRTtBQUMxSDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLHlCQUF5QixnRkFBcUI7QUFDOUMscUJBQXFCLGtEQUFrQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzREFBc0QsZ0RBQWdEO0FBQ3RHLDhCQUE4QiwrQ0FBZTtBQUM3QztBQUNBLHlCQUF5Qiw2Q0FBYTtBQUN0Qyx5QkFBeUIsZ0ZBQXFCO0FBQzlDLElBQUksZ0RBQWdCO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFLMEU7QUFDMUUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC11c2UtY29udHJvbGxhYmxlLXN0YXRlL2Rpc3QvaW5kZXgubW9kdWxlLmpzP2VhYTYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt1c2VDYWxsYmFjayBhcyAkYm5QdzkkdXNlQ2FsbGJhY2ssIHVzZVN0YXRlIGFzICRiblB3OSR1c2VTdGF0ZSwgdXNlUmVmIGFzICRiblB3OSR1c2VSZWYsIHVzZUVmZmVjdCBhcyAkYm5QdzkkdXNlRWZmZWN0fSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7dXNlQ2FsbGJhY2tSZWYgYXMgJGJuUHc5JHVzZUNhbGxiYWNrUmVmfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1jYWxsYmFjay1yZWZcIjtcblxuXG5cbmZ1bmN0aW9uICQ3MWNkNzZjYzYwZTA0NTRlJGV4cG9ydCQ2ZjMyMTM1MDgwY2I0YzMoeyBwcm9wOiBwcm9wICwgZGVmYXVsdFByb3A6IGRlZmF1bHRQcm9wICwgb25DaGFuZ2U6IG9uQ2hhbmdlID0gKCk9Pnt9ICB9KSB7XG4gICAgY29uc3QgW3VuY29udHJvbGxlZFByb3AsIHNldFVuY29udHJvbGxlZFByb3BdID0gJDcxY2Q3NmNjNjBlMDQ1NGUkdmFyJHVzZVVuY29udHJvbGxlZFN0YXRlKHtcbiAgICAgICAgZGVmYXVsdFByb3A6IGRlZmF1bHRQcm9wLFxuICAgICAgICBvbkNoYW5nZTogb25DaGFuZ2VcbiAgICB9KTtcbiAgICBjb25zdCBpc0NvbnRyb2xsZWQgPSBwcm9wICE9PSB1bmRlZmluZWQ7XG4gICAgY29uc3QgdmFsdWUxID0gaXNDb250cm9sbGVkID8gcHJvcCA6IHVuY29udHJvbGxlZFByb3A7XG4gICAgY29uc3QgaGFuZGxlQ2hhbmdlID0gJGJuUHc5JHVzZUNhbGxiYWNrUmVmKG9uQ2hhbmdlKTtcbiAgICBjb25zdCBzZXRWYWx1ZSA9ICRiblB3OSR1c2VDYWxsYmFjaygobmV4dFZhbHVlKT0+e1xuICAgICAgICBpZiAoaXNDb250cm9sbGVkKSB7XG4gICAgICAgICAgICBjb25zdCBzZXR0ZXIgPSBuZXh0VmFsdWU7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHR5cGVvZiBuZXh0VmFsdWUgPT09ICdmdW5jdGlvbicgPyBzZXR0ZXIocHJvcCkgOiBuZXh0VmFsdWU7XG4gICAgICAgICAgICBpZiAodmFsdWUgIT09IHByb3ApIGhhbmRsZUNoYW5nZSh2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSBzZXRVbmNvbnRyb2xsZWRQcm9wKG5leHRWYWx1ZSk7XG4gICAgfSwgW1xuICAgICAgICBpc0NvbnRyb2xsZWQsXG4gICAgICAgIHByb3AsXG4gICAgICAgIHNldFVuY29udHJvbGxlZFByb3AsXG4gICAgICAgIGhhbmRsZUNoYW5nZVxuICAgIF0pO1xuICAgIHJldHVybiBbXG4gICAgICAgIHZhbHVlMSxcbiAgICAgICAgc2V0VmFsdWVcbiAgICBdO1xufVxuZnVuY3Rpb24gJDcxY2Q3NmNjNjBlMDQ1NGUkdmFyJHVzZVVuY29udHJvbGxlZFN0YXRlKHsgZGVmYXVsdFByb3A6IGRlZmF1bHRQcm9wICwgb25DaGFuZ2U6IG9uQ2hhbmdlICB9KSB7XG4gICAgY29uc3QgdW5jb250cm9sbGVkU3RhdGUgPSAkYm5QdzkkdXNlU3RhdGUoZGVmYXVsdFByb3ApO1xuICAgIGNvbnN0IFt2YWx1ZV0gPSB1bmNvbnRyb2xsZWRTdGF0ZTtcbiAgICBjb25zdCBwcmV2VmFsdWVSZWYgPSAkYm5QdzkkdXNlUmVmKHZhbHVlKTtcbiAgICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAkYm5QdzkkdXNlQ2FsbGJhY2tSZWYob25DaGFuZ2UpO1xuICAgICRiblB3OSR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgaWYgKHByZXZWYWx1ZVJlZi5jdXJyZW50ICE9PSB2YWx1ZSkge1xuICAgICAgICAgICAgaGFuZGxlQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgICAgIHByZXZWYWx1ZVJlZi5jdXJyZW50ID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIHZhbHVlLFxuICAgICAgICBwcmV2VmFsdWVSZWYsXG4gICAgICAgIGhhbmRsZUNoYW5nZVxuICAgIF0pO1xuICAgIHJldHVybiB1bmNvbnRyb2xsZWRTdGF0ZTtcbn1cblxuXG5cblxuZXhwb3J0IHskNzFjZDc2Y2M2MGUwNDU0ZSRleHBvcnQkNmYzMjEzNTA4MGNiNGMzIGFzIHVzZUNvbnRyb2xsYWJsZVN0YXRlfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1vZHVsZS5qcy5tYXBcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==
//# sourceURL=webpack-internal:///../../../node_modules/@radix-ui/react-use-controllable-state/dist/index.module.js
`);
              }
            ),
            /***/
            "../../../node_modules/@radix-ui/react-use-escape-keydown/dist/index.module.js": (
              /*!*************************************************************************************!*\
                !*** ../../../node_modules/@radix-ui/react-use-escape-keydown/dist/index.module.js ***!
                \*************************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "useEscapeKeydown": () => (/* binding */ $addc16e1bbe58fd0$export$3a72a57244d6e765)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @radix-ui/react-use-callback-ref */ "../../../node_modules/@radix-ui/react-use-callback-ref/dist/index.module.js");





/**
 * Listens for when the escape key is down
 */ function $addc16e1bbe58fd0$export$3a72a57244d6e765(onEscapeKeyDownProp, ownerDocument = globalThis === null || globalThis === void 0 ? void 0 : globalThis.document) {
    const onEscapeKeyDown = (0,_radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_1__.useCallbackRef)(onEscapeKeyDownProp);
    (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{
        const handleKeyDown = (event)=>{
            if (event.key === 'Escape') onEscapeKeyDown(event);
        };
        ownerDocument.addEventListener('keydown', handleKeyDown);
        return ()=>ownerDocument.removeEventListener('keydown', handleKeyDown)
        ;
    }, [
        onEscapeKeyDown,
        ownerDocument
    ]);
}





//# sourceMappingURL=index.module.js.map
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC11c2UtZXNjYXBlLWtleWRvd24vZGlzdC9pbmRleC5tb2R1bGUuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFvRDtBQUNxQzs7OztBQUl6RjtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsZ0ZBQXFCO0FBQ2pELElBQUksZ0RBQWdCO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFLdUU7QUFDdkUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC11c2UtZXNjYXBlLWtleWRvd24vZGlzdC9pbmRleC5tb2R1bGUuanM/MjcyNyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3VzZUVmZmVjdCBhcyAkaFBTUTUkdXNlRWZmZWN0fSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7dXNlQ2FsbGJhY2tSZWYgYXMgJGhQU1E1JHVzZUNhbGxiYWNrUmVmfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1jYWxsYmFjay1yZWZcIjtcblxuXG5cbi8qKlxuICogTGlzdGVucyBmb3Igd2hlbiB0aGUgZXNjYXBlIGtleSBpcyBkb3duXG4gKi8gZnVuY3Rpb24gJGFkZGMxNmUxYmJlNThmZDAkZXhwb3J0JDNhNzJhNTcyNDRkNmU3NjUob25Fc2NhcGVLZXlEb3duUHJvcCwgb3duZXJEb2N1bWVudCA9IGdsb2JhbFRoaXMgPT09IG51bGwgfHwgZ2xvYmFsVGhpcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogZ2xvYmFsVGhpcy5kb2N1bWVudCkge1xuICAgIGNvbnN0IG9uRXNjYXBlS2V5RG93biA9ICRoUFNRNSR1c2VDYWxsYmFja1JlZihvbkVzY2FwZUtleURvd25Qcm9wKTtcbiAgICAkaFBTUTUkdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGNvbnN0IGhhbmRsZUtleURvd24gPSAoZXZlbnQpPT57XG4gICAgICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykgb25Fc2NhcGVLZXlEb3duKGV2ZW50KTtcbiAgICAgICAgfTtcbiAgICAgICAgb3duZXJEb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgaGFuZGxlS2V5RG93bik7XG4gICAgICAgIHJldHVybiAoKT0+b3duZXJEb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgaGFuZGxlS2V5RG93bilcbiAgICAgICAgO1xuICAgIH0sIFtcbiAgICAgICAgb25Fc2NhcGVLZXlEb3duLFxuICAgICAgICBvd25lckRvY3VtZW50XG4gICAgXSk7XG59XG5cblxuXG5cbmV4cG9ydCB7JGFkZGMxNmUxYmJlNThmZDAkZXhwb3J0JDNhNzJhNTcyNDRkNmU3NjUgYXMgdXNlRXNjYXBlS2V5ZG93bn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tb2R1bGUuanMubWFwXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=
//# sourceURL=webpack-internal:///../../../node_modules/@radix-ui/react-use-escape-keydown/dist/index.module.js
`);
              }
            ),
            /***/
            "../../../node_modules/@radix-ui/react-use-layout-effect/dist/index.module.js": (
              /*!************************************************************************************!*\
                !*** ../../../node_modules/@radix-ui/react-use-layout-effect/dist/index.module.js ***!
                \************************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "useLayoutEffect": () => (/* binding */ $9f79659886946c16$export$e5c5a5f917a5871c)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n\n\n\n/**\n * On the server, React emits a warning when calling `useLayoutEffect`.\n * This is because neither `useLayoutEffect` nor `useEffect` run on the server.\n * We use this safe version which suppresses the warning by replacing it with a noop on the server.\n *\n * See: https://reactjs.org/docs/hooks-reference.html#uselayouteffect\n */ const $9f79659886946c16$export$e5c5a5f917a5871c = Boolean(globalThis === null || globalThis === void 0 ? void 0 : globalThis.document) ? react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect : ()=>{};\n\n\n\n\n\n//# sourceMappingURL=index.module.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC11c2UtbGF5b3V0LWVmZmVjdC9kaXN0L2luZGV4Lm1vZHVsZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBZ0U7OztBQUdoRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2SUFBNkksa0RBQXNCOzs7OztBQUs3RjtBQUN0RSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXVzZS1sYXlvdXQtZWZmZWN0L2Rpc3QvaW5kZXgubW9kdWxlLmpzPzQwNmQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt1c2VMYXlvdXRFZmZlY3QgYXMgJGR4bHdIJHVzZUxheW91dEVmZmVjdH0gZnJvbSBcInJlYWN0XCI7XG5cblxuLyoqXG4gKiBPbiB0aGUgc2VydmVyLCBSZWFjdCBlbWl0cyBhIHdhcm5pbmcgd2hlbiBjYWxsaW5nIGB1c2VMYXlvdXRFZmZlY3RgLlxuICogVGhpcyBpcyBiZWNhdXNlIG5laXRoZXIgYHVzZUxheW91dEVmZmVjdGAgbm9yIGB1c2VFZmZlY3RgIHJ1biBvbiB0aGUgc2VydmVyLlxuICogV2UgdXNlIHRoaXMgc2FmZSB2ZXJzaW9uIHdoaWNoIHN1cHByZXNzZXMgdGhlIHdhcm5pbmcgYnkgcmVwbGFjaW5nIGl0IHdpdGggYSBub29wIG9uIHRoZSBzZXJ2ZXIuXG4gKlxuICogU2VlOiBodHRwczovL3JlYWN0anMub3JnL2RvY3MvaG9va3MtcmVmZXJlbmNlLmh0bWwjdXNlbGF5b3V0ZWZmZWN0XG4gKi8gY29uc3QgJDlmNzk2NTk4ODY5NDZjMTYkZXhwb3J0JGU1YzVhNWY5MTdhNTg3MWMgPSBCb29sZWFuKGdsb2JhbFRoaXMgPT09IG51bGwgfHwgZ2xvYmFsVGhpcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogZ2xvYmFsVGhpcy5kb2N1bWVudCkgPyAkZHhsd0gkdXNlTGF5b3V0RWZmZWN0IDogKCk9Pnt9O1xuXG5cblxuXG5leHBvcnQgeyQ5Zjc5NjU5ODg2OTQ2YzE2JGV4cG9ydCRlNWM1YTVmOTE3YTU4NzFjIGFzIHVzZUxheW91dEVmZmVjdH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tb2R1bGUuanMubWFwXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/@radix-ui/react-use-layout-effect/dist/index.module.js\n');
              }
            ),
            /***/
            "../../../node_modules/@radix-ui/react-use-size/dist/index.module.js": (
              /*!***************************************************************************!*\
                !*** ../../../node_modules/@radix-ui/react-use-size/dist/index.module.js ***!
                \***************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useSize\": () => (/* binding */ $db6c3485150b8e66$export$1ab7ae714698c4b8)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _radix_ui_react_use_layout_effect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @radix-ui/react-use-layout-effect */ \"../../../node_modules/@radix-ui/react-use-layout-effect/dist/index.module.js\");\n\n\n\n\n\nfunction $db6c3485150b8e66$export$1ab7ae714698c4b8(element) {\n    const [size, setSize] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(undefined);\n    (0,_radix_ui_react_use_layout_effect__WEBPACK_IMPORTED_MODULE_1__.useLayoutEffect)(()=>{\n        if (element) {\n            // provide size as early as possible\n            setSize({\n                width: element.offsetWidth,\n                height: element.offsetHeight\n            });\n            const resizeObserver = new ResizeObserver((entries)=>{\n                if (!Array.isArray(entries)) return;\n                 // Since we only observe the one element, we don't need to loop over the\n                // array\n                if (!entries.length) return;\n                const entry = entries[0];\n                let width;\n                let height;\n                if ('borderBoxSize' in entry) {\n                    const borderSizeEntry = entry['borderBoxSize']; // iron out differences between browsers\n                    const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry;\n                    width = borderSize['inlineSize'];\n                    height = borderSize['blockSize'];\n                } else {\n                    // for browsers that don't support `borderBoxSize`\n                    // we calculate it ourselves to get the correct border box.\n                    width = element.offsetWidth;\n                    height = element.offsetHeight;\n                }\n                setSize({\n                    width: width,\n                    height: height\n                });\n            });\n            resizeObserver.observe(element, {\n                box: 'border-box'\n            });\n            return ()=>resizeObserver.unobserve(element)\n            ;\n        } else // We only want to reset to `undefined` when the element becomes `null`,\n        // not if it changes to another element.\n        setSize(undefined);\n    }, [\n        element\n    ]);\n    return size;\n}\n\n\n\n\n\n//# sourceMappingURL=index.module.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC11c2Utc2l6ZS9kaXN0L2luZGV4Lm1vZHVsZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQWtEO0FBQzBDOzs7O0FBSTVGO0FBQ0EsNEJBQTRCLCtDQUFlO0FBQzNDLElBQUksa0ZBQXNCO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0VBQW9FO0FBQ3BFO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCLGFBQWE7QUFDYjtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFLOEQ7QUFDOUQiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC11c2Utc2l6ZS9kaXN0L2luZGV4Lm1vZHVsZS5qcz84M2QyIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7dXNlU3RhdGUgYXMgJDlneUdSJHVzZVN0YXRlfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7dXNlTGF5b3V0RWZmZWN0IGFzICQ5Z3lHUiR1c2VMYXlvdXRFZmZlY3R9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLWxheW91dC1lZmZlY3RcIjtcblxuXG5cbmZ1bmN0aW9uICRkYjZjMzQ4NTE1MGI4ZTY2JGV4cG9ydCQxYWI3YWU3MTQ2OThjNGI4KGVsZW1lbnQpIHtcbiAgICBjb25zdCBbc2l6ZSwgc2V0U2l6ZV0gPSAkOWd5R1IkdXNlU3RhdGUodW5kZWZpbmVkKTtcbiAgICAkOWd5R1IkdXNlTGF5b3V0RWZmZWN0KCgpPT57XG4gICAgICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgICAgICAvLyBwcm92aWRlIHNpemUgYXMgZWFybHkgYXMgcG9zc2libGVcbiAgICAgICAgICAgIHNldFNpemUoe1xuICAgICAgICAgICAgICAgIHdpZHRoOiBlbGVtZW50Lm9mZnNldFdpZHRoLFxuICAgICAgICAgICAgICAgIGhlaWdodDogZWxlbWVudC5vZmZzZXRIZWlnaHRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKGVudHJpZXMpPT57XG4gICAgICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGVudHJpZXMpKSByZXR1cm47XG4gICAgICAgICAgICAgICAgIC8vIFNpbmNlIHdlIG9ubHkgb2JzZXJ2ZSB0aGUgb25lIGVsZW1lbnQsIHdlIGRvbid0IG5lZWQgdG8gbG9vcCBvdmVyIHRoZVxuICAgICAgICAgICAgICAgIC8vIGFycmF5XG4gICAgICAgICAgICAgICAgaWYgKCFlbnRyaWVzLmxlbmd0aCkgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGNvbnN0IGVudHJ5ID0gZW50cmllc1swXTtcbiAgICAgICAgICAgICAgICBsZXQgd2lkdGg7XG4gICAgICAgICAgICAgICAgbGV0IGhlaWdodDtcbiAgICAgICAgICAgICAgICBpZiAoJ2JvcmRlckJveFNpemUnIGluIGVudHJ5KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvcmRlclNpemVFbnRyeSA9IGVudHJ5Wydib3JkZXJCb3hTaXplJ107IC8vIGlyb24gb3V0IGRpZmZlcmVuY2VzIGJldHdlZW4gYnJvd3NlcnNcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9yZGVyU2l6ZSA9IEFycmF5LmlzQXJyYXkoYm9yZGVyU2l6ZUVudHJ5KSA/IGJvcmRlclNpemVFbnRyeVswXSA6IGJvcmRlclNpemVFbnRyeTtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGggPSBib3JkZXJTaXplWydpbmxpbmVTaXplJ107XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodCA9IGJvcmRlclNpemVbJ2Jsb2NrU2l6ZSddO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGZvciBicm93c2VycyB0aGF0IGRvbid0IHN1cHBvcnQgYGJvcmRlckJveFNpemVgXG4gICAgICAgICAgICAgICAgICAgIC8vIHdlIGNhbGN1bGF0ZSBpdCBvdXJzZWx2ZXMgdG8gZ2V0IHRoZSBjb3JyZWN0IGJvcmRlciBib3guXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoID0gZWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0ID0gZWxlbWVudC5vZmZzZXRIZWlnaHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNldFNpemUoe1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJlc2l6ZU9ic2VydmVyLm9ic2VydmUoZWxlbWVudCwge1xuICAgICAgICAgICAgICAgIGJveDogJ2JvcmRlci1ib3gnXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiAoKT0+cmVzaXplT2JzZXJ2ZXIudW5vYnNlcnZlKGVsZW1lbnQpXG4gICAgICAgICAgICA7XG4gICAgICAgIH0gZWxzZSAvLyBXZSBvbmx5IHdhbnQgdG8gcmVzZXQgdG8gYHVuZGVmaW5lZGAgd2hlbiB0aGUgZWxlbWVudCBiZWNvbWVzIGBudWxsYCxcbiAgICAgICAgLy8gbm90IGlmIGl0IGNoYW5nZXMgdG8gYW5vdGhlciBlbGVtZW50LlxuICAgICAgICBzZXRTaXplKHVuZGVmaW5lZCk7XG4gICAgfSwgW1xuICAgICAgICBlbGVtZW50XG4gICAgXSk7XG4gICAgcmV0dXJuIHNpemU7XG59XG5cblxuXG5cbmV4cG9ydCB7JGRiNmMzNDg1MTUwYjhlNjYkZXhwb3J0JDFhYjdhZTcxNDY5OGM0YjggYXMgdXNlU2l6ZX07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tb2R1bGUuanMubWFwXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/@radix-ui/react-use-size/dist/index.module.js\n");
              }
            ),
            /***/
            "../../../node_modules/aria-hidden/dist/es2015/index.js": (
              /*!**************************************************************!*\
                !*** ../../../node_modules/aria-hidden/dist/es2015/index.js ***!
                \**************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "hideOthers": () => (/* binding */ hideOthers),
/* harmony export */   "inertOthers": () => (/* binding */ inertOthers),
/* harmony export */   "supportsInert": () => (/* binding */ supportsInert),
/* harmony export */   "suppressOthers": () => (/* binding */ suppressOthers)
/* harmony export */ });
var getDefaultParent = function (originalTarget) {
    if (typeof document === 'undefined') {
        return null;
    }
    var sampleTarget = Array.isArray(originalTarget) ? originalTarget[0] : originalTarget;
    return sampleTarget.ownerDocument.body;
};
var counterMap = new WeakMap();
var uncontrolledNodes = new WeakMap();
var markerMap = {};
var lockCount = 0;
var unwrapHost = function (node) {
    return node && (node.host || unwrapHost(node.parentNode));
};
var correctTargets = function (parent, targets) {
    return targets
        .map(function (target) {
        if (parent.contains(target)) {
            return target;
        }
        var correctedTarget = unwrapHost(target);
        if (correctedTarget && parent.contains(correctedTarget)) {
            return correctedTarget;
        }
        console.error('aria-hidden', target, 'in not contained inside', parent, '. Doing nothing');
        return null;
    })
        .filter(function (x) { return Boolean(x); });
};
/**
 * Marks everything except given node(or nodes) as aria-hidden
 * @param {Element | Element[]} originalTarget - elements to keep on the page
 * @param [parentNode] - top element, defaults to document.body
 * @param {String} [markerName] - a special attribute to mark every node
 * @param {String} [controlAttribute] - html Attribute to control
 * @return {Undo} undo command
 */
var applyAttributeToOthers = function (originalTarget, parentNode, markerName, controlAttribute) {
    var targets = correctTargets(parentNode, Array.isArray(originalTarget) ? originalTarget : [originalTarget]);
    if (!markerMap[markerName]) {
        markerMap[markerName] = new WeakMap();
    }
    var markerCounter = markerMap[markerName];
    var hiddenNodes = [];
    var elementsToKeep = new Set();
    var elementsToStop = new Set(targets);
    var keep = function (el) {
        if (!el || elementsToKeep.has(el)) {
            return;
        }
        elementsToKeep.add(el);
        keep(el.parentNode);
    };
    targets.forEach(keep);
    var deep = function (parent) {
        if (!parent || elementsToStop.has(parent)) {
            return;
        }
        Array.prototype.forEach.call(parent.children, function (node) {
            if (elementsToKeep.has(node)) {
                deep(node);
            }
            else {
                var attr = node.getAttribute(controlAttribute);
                var alreadyHidden = attr !== null && attr !== 'false';
                var counterValue = (counterMap.get(node) || 0) + 1;
                var markerValue = (markerCounter.get(node) || 0) + 1;
                counterMap.set(node, counterValue);
                markerCounter.set(node, markerValue);
                hiddenNodes.push(node);
                if (counterValue === 1 && alreadyHidden) {
                    uncontrolledNodes.set(node, true);
                }
                if (markerValue === 1) {
                    node.setAttribute(markerName, 'true');
                }
                if (!alreadyHidden) {
                    node.setAttribute(controlAttribute, 'true');
                }
            }
        });
    };
    deep(parentNode);
    elementsToKeep.clear();
    lockCount++;
    return function () {
        hiddenNodes.forEach(function (node) {
            var counterValue = counterMap.get(node) - 1;
            var markerValue = markerCounter.get(node) - 1;
            counterMap.set(node, counterValue);
            markerCounter.set(node, markerValue);
            if (!counterValue) {
                if (!uncontrolledNodes.has(node)) {
                    node.removeAttribute(controlAttribute);
                }
                uncontrolledNodes.delete(node);
            }
            if (!markerValue) {
                node.removeAttribute(markerName);
            }
        });
        lockCount--;
        if (!lockCount) {
            // clear
            counterMap = new WeakMap();
            counterMap = new WeakMap();
            uncontrolledNodes = new WeakMap();
            markerMap = {};
        }
    };
};
/**
 * Marks everything except given node(or nodes) as aria-hidden
 * @param {Element | Element[]} originalTarget - elements to keep on the page
 * @param [parentNode] - top element, defaults to document.body
 * @param {String} [markerName] - a special attribute to mark every node
 * @return {Undo} undo command
 */
var hideOthers = function (originalTarget, parentNode, markerName) {
    if (markerName === void 0) { markerName = 'data-aria-hidden'; }
    var targets = Array.from(Array.isArray(originalTarget) ? originalTarget : [originalTarget]);
    var activeParentNode = parentNode || getDefaultParent(originalTarget);
    if (!activeParentNode) {
        return function () { return null; };
    }
    // we should not hide ariaLive elements - https://github.com/theKashey/aria-hidden/issues/10
    targets.push.apply(targets, Array.from(activeParentNode.querySelectorAll('[aria-live]')));
    return applyAttributeToOthers(targets, activeParentNode, markerName, 'aria-hidden');
};
/**
 * Marks everything except given node(or nodes) as inert
 * @param {Element | Element[]} originalTarget - elements to keep on the page
 * @param [parentNode] - top element, defaults to document.body
 * @param {String} [markerName] - a special attribute to mark every node
 * @return {Undo} undo command
 */
var inertOthers = function (originalTarget, parentNode, markerName) {
    if (markerName === void 0) { markerName = 'data-inert-ed'; }
    var activeParentNode = parentNode || getDefaultParent(originalTarget);
    if (!activeParentNode) {
        return function () { return null; };
    }
    return applyAttributeToOthers(originalTarget, activeParentNode, markerName, 'inert');
};
/**
 * @returns if current browser supports inert
 */
var supportsInert = function () {
    return typeof HTMLElement !== 'undefined' && HTMLElement.prototype.hasOwnProperty('inert');
};
/**
 * Automatic function to "suppress" DOM elements - _hide_ or _inert_ in the best possible way
 * @param {Element | Element[]} originalTarget - elements to keep on the page
 * @param [parentNode] - top element, defaults to document.body
 * @param {String} [markerName] - a special attribute to mark every node
 * @return {Undo} undo command
 */
var suppressOthers = function (originalTarget, parentNode, markerName) {
    if (markerName === void 0) { markerName = 'data-suppressed'; }
    return (supportsInert() ? inertOthers : hideOthers)(originalTarget, parentNode, markerName);
};
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 10652 characters]
//# sourceURL=webpack-internal:///../../../node_modules/aria-hidden/dist/es2015/index.js
`);
              }
            ),
            /***/
            "../../../node_modules/clsx/dist/clsx.m.js": (
              /*!*************************************************!*\
                !*** ../../../node_modules/clsx/dist/clsx.m.js ***!
                \*************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
function toVal(mix) {
	var k, y, str='';

	if (typeof mix === 'string' || typeof mix === 'number') {
		str += mix;
	} else if (typeof mix === 'object') {
		if (Array.isArray(mix)) {
			for (k=0; k < mix.length; k++) {
				if (mix[k]) {
					if (y = toVal(mix[k])) {
						str && (str += ' ');
						str += y;
					}
				}
			}
		} else {
			for (k in mix) {
				if (mix[k]) {
					str && (str += ' ');
					str += k;
				}
			}
		}
	}

	return str;
}

/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {
	var i=0, tmp, x, str='';
	while (i < arguments.length) {
		if (tmp = arguments[i++]) {
			if (x = toVal(tmp)) {
				str && (str += ' ');
				str += x
			}
		}
	}
	return str;
}
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nsc3gvZGlzdC9jbHN4Lm0uanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLGFBQWEsZ0JBQWdCO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSw2QkFBZSxzQ0FBWTtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jbHN4L2Rpc3QvY2xzeC5tLmpzPzMwZjYiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gdG9WYWwobWl4KSB7XG5cdHZhciBrLCB5LCBzdHI9Jyc7XG5cblx0aWYgKHR5cGVvZiBtaXggPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBtaXggPT09ICdudW1iZXInKSB7XG5cdFx0c3RyICs9IG1peDtcblx0fSBlbHNlIGlmICh0eXBlb2YgbWl4ID09PSAnb2JqZWN0Jykge1xuXHRcdGlmIChBcnJheS5pc0FycmF5KG1peCkpIHtcblx0XHRcdGZvciAoaz0wOyBrIDwgbWl4Lmxlbmd0aDsgaysrKSB7XG5cdFx0XHRcdGlmIChtaXhba10pIHtcblx0XHRcdFx0XHRpZiAoeSA9IHRvVmFsKG1peFtrXSkpIHtcblx0XHRcdFx0XHRcdHN0ciAmJiAoc3RyICs9ICcgJyk7XG5cdFx0XHRcdFx0XHRzdHIgKz0geTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Zm9yIChrIGluIG1peCkge1xuXHRcdFx0XHRpZiAobWl4W2tdKSB7XG5cdFx0XHRcdFx0c3RyICYmIChzdHIgKz0gJyAnKTtcblx0XHRcdFx0XHRzdHIgKz0gaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiBzdHI7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uICgpIHtcblx0dmFyIGk9MCwgdG1wLCB4LCBzdHI9Jyc7XG5cdHdoaWxlIChpIDwgYXJndW1lbnRzLmxlbmd0aCkge1xuXHRcdGlmICh0bXAgPSBhcmd1bWVudHNbaSsrXSkge1xuXHRcdFx0aWYgKHggPSB0b1ZhbCh0bXApKSB7XG5cdFx0XHRcdHN0ciAmJiAoc3RyICs9ICcgJyk7XG5cdFx0XHRcdHN0ciArPSB4XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdHJldHVybiBzdHI7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=
//# sourceURL=webpack-internal:///../../../node_modules/clsx/dist/clsx.m.js
`);
              }
            ),
            /***/
            "../../../node_modules/crc-32/crc32.js": (
              /*!*********************************************!*\
                !*** ../../../node_modules/crc-32/crc32.js ***!
                \*********************************************/
              /***/
              (__unused_webpack_module, exports) => {
                eval("/* crc32.js (C) 2014-2015 SheetJS -- http://sheetjs.com */\n/* vim: set ts=2: */\nvar CRC32;\n(function (factory) {\n	if(typeof DO_NOT_EXPORT_CRC === 'undefined') {\n		if(true) {\n			factory(exports);\n		} else {}\n	} else {\n		factory(CRC32 = {});\n	}\n}(function(CRC32) {\nCRC32.version = '0.3.0';\n/* see perf/crc32table.js */\nfunction signed_crc_table() {\n	var c = 0, table = new Array(256);\n\n	for(var n =0; n != 256; ++n){\n		c = n;\n		c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n		c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n		c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n		c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n		c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n		c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n		c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n		c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n		table[n] = c;\n	}\n\n	return typeof Int32Array !== 'undefined' ? new Int32Array(table) : table;\n}\n\nvar table = signed_crc_table();\n/* charCodeAt is the best approach for binary strings */\nvar use_buffer = typeof Buffer !== 'undefined';\nfunction crc32_bstr(bstr) {\n	if(bstr.length > 32768) if(use_buffer) return crc32_buf_8(new Buffer(bstr));\n	var crc = -1, L = bstr.length - 1;\n	for(var i = 0; i < L;) {\n		crc =  table[(crc ^ bstr.charCodeAt(i++)) & 0xFF] ^ (crc >>> 8);\n		crc =  table[(crc ^ bstr.charCodeAt(i++)) & 0xFF] ^ (crc >>> 8);\n	}\n	if(i === L) crc = (crc >>> 8) ^ table[(crc ^ bstr.charCodeAt(i)) & 0xFF];\n	return crc ^ -1;\n}\n\nfunction crc32_buf(buf) {\n	if(buf.length > 10000) return crc32_buf_8(buf);\n	for(var crc = -1, i = 0, L=buf.length-3; i < L;) {\n		crc = (crc >>> 8) ^ table[(crc^buf[i++])&0xFF];\n		crc = (crc >>> 8) ^ table[(crc^buf[i++])&0xFF];\n		crc = (crc >>> 8) ^ table[(crc^buf[i++])&0xFF];\n		crc = (crc >>> 8) ^ table[(crc^buf[i++])&0xFF];\n	}\n	while(i < L+3) crc = (crc >>> 8) ^ table[(crc^buf[i++])&0xFF];\n	return crc ^ -1;\n}\n\nfunction crc32_buf_8(buf) {\n	for(var crc = -1, i = 0, L=buf.length-7; i < L;) {\n		crc = (crc >>> 8) ^ table[(crc^buf[i++])&0xFF];\n		crc = (crc >>> 8) ^ table[(crc^buf[i++])&0xFF];\n		crc = (crc >>> 8) ^ table[(crc^buf[i++])&0xFF];\n		crc = (crc >>> 8) ^ table[(crc^buf[i++])&0xFF];\n		crc = (crc >>> 8) ^ table[(crc^buf[i++])&0xFF];\n		crc = (crc >>> 8) ^ table[(crc^buf[i++])&0xFF];\n		crc = (crc >>> 8) ^ table[(crc^buf[i++])&0xFF];\n		crc = (crc >>> 8) ^ table[(crc^buf[i++])&0xFF];\n	}\n	while(i < L+7) crc = (crc >>> 8) ^ table[(crc^buf[i++])&0xFF];\n	return crc ^ -1;\n}\n\n/* much much faster to intertwine utf8 and crc */\nfunction crc32_str(str) {\n	for(var crc = -1, i = 0, L=str.length, c, d; i < L;) {\n		c = str.charCodeAt(i++);\n		if(c < 0x80) {\n			crc = (crc >>> 8) ^ table[(crc ^ c) & 0xFF];\n		} else if(c < 0x800) {\n			crc = (crc >>> 8) ^ table[(crc ^ (192|((c>>6)&31))) & 0xFF];\n			crc = (crc >>> 8) ^ table[(crc ^ (128|(c&63))) & 0xFF];\n		} else if(c >= 0xD800 && c < 0xE000) {\n			c = (c&1023)+64; d = str.charCodeAt(i++) & 1023;\n			crc = (crc >>> 8) ^ table[(crc ^ (240|((c>>8)&7))) & 0xFF];\n			crc = (crc >>> 8) ^ table[(crc ^ (128|((c>>2)&63))) & 0xFF];\n			crc = (crc >>> 8) ^ table[(crc ^ (128|((d>>6)&15)|(c&3))) & 0xFF];\n			crc = (crc >>> 8) ^ table[(crc ^ (128|(d&63))) & 0xFF];\n		} else {\n			crc = (crc >>> 8) ^ table[(crc ^ (224|((c>>12)&15))) & 0xFF];\n			crc = (crc >>> 8) ^ table[(crc ^ (128|((c>>6)&63))) & 0xFF];\n			crc = (crc >>> 8) ^ table[(crc ^ (128|(c&63))) & 0xFF];\n		}\n	}\n	return crc ^ -1;\n}\nCRC32.table = table;\nCRC32.bstr = crc32_bstr;\nCRC32.buf = crc32_buf;\nCRC32.str = crc32_str;\n}));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6396 characters]\n//# sourceURL=webpack-internal:///../../../node_modules/crc-32/crc32.js\n");
              }
            ),
            /***/
            "../../../node_modules/get-nonce/dist/es2015/index.js": (
              /*!************************************************************!*\
                !*** ../../../node_modules/get-nonce/dist/es2015/index.js ***!
                \************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "getNonce": () => (/* binding */ getNonce),\n/* harmony export */   "setNonce": () => (/* binding */ setNonce)\n/* harmony export */ });\nvar currentNonce;\nvar setNonce = function (nonce) {\n    currentNonce = nonce;\n};\nvar getNonce = function () {\n    if (currentNonce) {\n        return currentNonce;\n    }\n    if (true) {\n        return __webpack_require__.nc;\n    }\n    return undefined;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dldC1ub25jZS9kaXN0L2VzMjAxNS9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFBO0FBQ087QUFDUDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQSxRQUFRLElBQXdDO0FBQ2hELGVBQWUsc0JBQWlCO0FBQ2hDO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZ2V0LW5vbmNlL2Rpc3QvZXMyMDE1L2luZGV4LmpzPzJmYjciXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGN1cnJlbnROb25jZTtcbmV4cG9ydCB2YXIgc2V0Tm9uY2UgPSBmdW5jdGlvbiAobm9uY2UpIHtcbiAgICBjdXJyZW50Tm9uY2UgPSBub25jZTtcbn07XG5leHBvcnQgdmFyIGdldE5vbmNlID0gZnVuY3Rpb24gKCkge1xuICAgIGlmIChjdXJyZW50Tm9uY2UpIHtcbiAgICAgICAgcmV0dXJuIGN1cnJlbnROb25jZTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBfX3dlYnBhY2tfbm9uY2VfXyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIF9fd2VicGFja19ub25jZV9fO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/get-nonce/dist/es2015/index.js\n');
              }
            ),
            /***/
            "../../../node_modules/lodash.throttle/index.js": (
              /*!******************************************************!*\
                !*** ../../../node_modules/lodash.throttle/index.js ***!
                \******************************************************/
              /***/
              (module, __unused_webpack_exports, __webpack_require__) => {
                eval("/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof __webpack_require__.g == 'object' && __webpack_require__.g && __webpack_require__.g.Object === Object && __webpack_require__.g;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n *   console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n  return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n *  Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n *  The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n *   'leading': true,\n *   'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n  var lastArgs,\n      lastThis,\n      maxWait,\n      result,\n      timerId,\n      lastCallTime,\n      lastInvokeTime = 0,\n      leading = false,\n      maxing = false,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  wait = toNumber(wait) || 0;\n  if (isObject(options)) {\n    leading = !!options.leading;\n    maxing = 'maxWait' in options;\n    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n\n  function invokeFunc(time) {\n    var args = lastArgs,\n        thisArg = lastThis;\n\n    lastArgs = lastThis = undefined;\n    lastInvokeTime = time;\n    result = func.apply(thisArg, args);\n    return result;\n  }\n\n  function leadingEdge(time) {\n    // Reset any `maxWait` timer.\n    lastInvokeTime = time;\n    // Start the timer for the trailing edge.\n    timerId = setTimeout(timerExpired, wait);\n    // Invoke the leading edge.\n    return leading ? invokeFunc(time) : result;\n  }\n\n  function remainingWait(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime,\n        result = wait - timeSinceLastCall;\n\n    return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n  }\n\n  function shouldInvoke(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime;\n\n    // Either this is the first call, activity has stopped and we're at the\n    // trailing edge, the system time has gone backwards and we're treating\n    // it as the trailing edge, or we've hit the `maxWait` limit.\n    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n  }\n\n  function timerExpired() {\n    var time = now();\n    if (shouldInvoke(time)) {\n      return trailingEdge(time);\n    }\n    // Restart the timer.\n    timerId = setTimeout(timerExpired, remainingWait(time));\n  }\n\n  function trailingEdge(time) {\n    timerId = undefined;\n\n    // Only invoke if we have `lastArgs` which means `func` has been\n    // debounced at least once.\n    if (trailing && lastArgs) {\n      return invokeFunc(time);\n    }\n    lastArgs = lastThis = undefined;\n    return result;\n  }\n\n  function cancel() {\n    if (timerId !== undefined) {\n      clearTimeout(timerId);\n    }\n    lastInvokeTime = 0;\n    lastArgs = lastCallTime = lastThis = timerId = undefined;\n  }\n\n  function flush() {\n    return timerId === undefined ? result : trailingEdge(now());\n  }\n\n  function debounced() {\n    var time = now(),\n        isInvoking = shouldInvoke(time);\n\n    lastArgs = arguments;\n    lastThis = this;\n    lastCallTime = time;\n\n    if (isInvoking) {\n      if (timerId === undefined) {\n        return leadingEdge(lastCallTime);\n      }\n      if (maxing) {\n        // Handle invocations in a tight loop.\n        timerId = setTimeout(timerExpired, wait);\n        return invokeFunc(lastCallTime);\n      }\n    }\n    if (timerId === undefined) {\n      timerId = setTimeout(timerExpired, wait);\n    }\n    return result;\n  }\n  debounced.cancel = cancel;\n  debounced.flush = flush;\n  return debounced;\n}\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n *  Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n  var leading = true,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  if (isObject(options)) {\n    leading = 'leading' in options ? !!options.leading : leading;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n  return debounce(func, wait, {\n    'leading': leading,\n    'maxWait': wait,\n    'trailing': trailing\n  });\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = value.replace(reTrim, '');\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = throttle;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 21824 characters]\n//# sourceURL=webpack-internal:///../../../node_modules/lodash.throttle/index.js\n");
              }
            ),
            /***/
            "../../../node_modules/pako/index.js": (
              /*!*******************************************!*\
                !*** ../../../node_modules/pako/index.js ***!
                \*******************************************/
              /***/
              (module, __unused_webpack_exports, __webpack_require__) => {
                "use strict";
                eval('// Top level file is just a mixin of submodules & constants\n\n\nvar assign    = (__webpack_require__(/*! ./lib/utils/common */ "../../../node_modules/pako/lib/utils/common.js").assign);\n\nvar deflate   = __webpack_require__(/*! ./lib/deflate */ "../../../node_modules/pako/lib/deflate.js");\nvar inflate   = __webpack_require__(/*! ./lib/inflate */ "../../../node_modules/pako/lib/inflate.js");\nvar constants = __webpack_require__(/*! ./lib/zlib/constants */ "../../../node_modules/pako/lib/zlib/constants.js");\n\nvar pako = {};\n\nassign(pako, deflate, inflate, constants);\n\nmodule.exports = pako;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bha28vaW5kZXguanMuanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDYTs7QUFFYixnQkFBZ0Isd0dBQW9DOztBQUVwRCxnQkFBZ0IsbUJBQU8sQ0FBQyxnRUFBZTtBQUN2QyxnQkFBZ0IsbUJBQU8sQ0FBQyxnRUFBZTtBQUN2QyxnQkFBZ0IsbUJBQU8sQ0FBQyw4RUFBc0I7O0FBRTlDOztBQUVBOztBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wYWtvL2luZGV4LmpzP2M3OTYiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVG9wIGxldmVsIGZpbGUgaXMganVzdCBhIG1peGluIG9mIHN1Ym1vZHVsZXMgJiBjb25zdGFudHNcbid1c2Ugc3RyaWN0JztcblxudmFyIGFzc2lnbiAgICA9IHJlcXVpcmUoJy4vbGliL3V0aWxzL2NvbW1vbicpLmFzc2lnbjtcblxudmFyIGRlZmxhdGUgICA9IHJlcXVpcmUoJy4vbGliL2RlZmxhdGUnKTtcbnZhciBpbmZsYXRlICAgPSByZXF1aXJlKCcuL2xpYi9pbmZsYXRlJyk7XG52YXIgY29uc3RhbnRzID0gcmVxdWlyZSgnLi9saWIvemxpYi9jb25zdGFudHMnKTtcblxudmFyIHBha28gPSB7fTtcblxuYXNzaWduKHBha28sIGRlZmxhdGUsIGluZmxhdGUsIGNvbnN0YW50cyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcGFrbztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/pako/index.js\n');
              }
            ),
            /***/
            "../../../node_modules/pako/lib/deflate.js": (
              /*!*************************************************!*\
                !*** ../../../node_modules/pako/lib/deflate.js ***!
                \*************************************************/
              /***/
              (__unused_webpack_module, exports, __webpack_require__) => {
                "use strict";
                eval("\n\n\nvar zlib_deflate = __webpack_require__(/*! ./zlib/deflate */ \"../../../node_modules/pako/lib/zlib/deflate.js\");\nvar utils        = __webpack_require__(/*! ./utils/common */ \"../../../node_modules/pako/lib/utils/common.js\");\nvar strings      = __webpack_require__(/*! ./utils/strings */ \"../../../node_modules/pako/lib/utils/strings.js\");\nvar msg          = __webpack_require__(/*! ./zlib/messages */ \"../../../node_modules/pako/lib/zlib/messages.js\");\nvar ZStream      = __webpack_require__(/*! ./zlib/zstream */ \"../../../node_modules/pako/lib/zlib/zstream.js\");\n\nvar toString = Object.prototype.toString;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nvar Z_NO_FLUSH      = 0;\nvar Z_FINISH        = 4;\n\nvar Z_OK            = 0;\nvar Z_STREAM_END    = 1;\nvar Z_SYNC_FLUSH    = 2;\n\nvar Z_DEFAULT_COMPRESSION = -1;\n\nvar Z_DEFAULT_STRATEGY    = 0;\n\nvar Z_DEFLATED  = 8;\n\n/* ===========================================================================*/\n\n\n/**\n * class Deflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[deflate]],\n * [[deflateRaw]] and [[gzip]].\n **/\n\n/* internal\n * Deflate.chunks -> Array\n *\n * Chunks of output data, if [[Deflate#onData]] not overridden.\n **/\n\n/**\n * Deflate.result -> Uint8Array|Array\n *\n * Compressed result, generated by default [[Deflate#onData]]\n * and [[Deflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Deflate#push]] with `Z_FINISH` / `true` param)  or if you\n * push a chunk with explicit flush (call [[Deflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n/**\n * Deflate.err -> Number\n *\n * Error code after deflate finished. 0 (Z_OK) on success.\n * You will not need it in real life, because deflate errors\n * are possible only on wrong options or bad `onData` / `onEnd`\n * custom handlers.\n **/\n\n/**\n * Deflate.msg -> String\n *\n * Error message, if [[Deflate.err]] != 0\n **/\n\n\n/**\n * new Deflate(options)\n * - options (Object): zlib deflate options.\n *\n * Creates new deflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `level`\n * - `windowBits`\n * - `memLevel`\n * - `strategy`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw deflate\n * - `gzip` (Boolean) - create gzip wrapper\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n *    (each char code [0..255])\n * - `header` (Object) - custom header for gzip\n *   - `text` (Boolean) - true if compressed data believed to be text\n *   - `time` (Number) - modification time, unix timestamp\n *   - `os` (Number) - operation system code\n *   - `extra` (Array) - array of bytes with extra data (max 65536)\n *   - `name` (String) - file name (binary string)\n *   - `comment` (String) - comment (binary string)\n *   - `hcrc` (Boolean) - true if header crc should be added\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n *   , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n *   , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var deflate = new pako.Deflate({ level: 3});\n *\n * deflate.push(chunk1, false);\n * deflate.push(chunk2, true);  // true -> last chunk\n *\n * if (deflate.err) { throw new Error(deflate.err); }\n *\n * console.log(deflate.result);\n * ```\n **/\nfunction Deflate(options) {\n  if (!(this instanceof Deflate)) return new Deflate(options);\n\n  this.options = utils.assign({\n    level: Z_DEFAULT_COMPRESSION,\n    method: Z_DEFLATED,\n    chunkSize: 16384,\n    windowBits: 15,\n    memLevel: 8,\n    strategy: Z_DEFAULT_STRATEGY,\n    to: ''\n  }, options || {});\n\n  var opt = this.options;\n\n  if (opt.raw && (opt.windowBits > 0)) {\n    opt.windowBits = -opt.windowBits;\n  }\n\n  else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) {\n    opt.windowBits += 16;\n  }\n\n  this.err    = 0;      // error code, if happens (0 = Z_OK)\n  this.msg    = '';     // error message\n  this.ended  = false;  // used to avoid multiple onEnd() calls\n  this.chunks = [];     // chunks of compressed data\n\n  this.strm = new ZStream();\n  this.strm.avail_out = 0;\n\n  var status = zlib_deflate.deflateInit2(\n    this.strm,\n    opt.level,\n    opt.method,\n    opt.windowBits,\n    opt.memLevel,\n    opt.strategy\n  );\n\n  if (status !== Z_OK) {\n    throw new Error(msg[status]);\n  }\n\n  if (opt.header) {\n    zlib_deflate.deflateSetHeader(this.strm, opt.header);\n  }\n\n  if (opt.dictionary) {\n    var dict;\n    // Convert data if needed\n    if (typeof opt.dictionary === 'string') {\n      // If we need to compress text, change encoding to utf8.\n      dict = strings.string2buf(opt.dictionary);\n    } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n      dict = new Uint8Array(opt.dictionary);\n    } else {\n      dict = opt.dictionary;\n    }\n\n    status = zlib_deflate.deflateSetDictionary(this.strm, dict);\n\n    if (status !== Z_OK) {\n      throw new Error(msg[status]);\n    }\n\n    this._dict_set = true;\n  }\n}\n\n/**\n * Deflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data. Strings will be\n *   converted to utf8 byte sequence.\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n *   See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with\n * new compressed chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Deflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the compression context.\n *\n * On fail call [[Deflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * array format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true);  // push last chunk\n * ```\n **/\nDeflate.prototype.push = function (data, mode) {\n  var strm = this.strm;\n  var chunkSize = this.options.chunkSize;\n  var status, _mode;\n\n  if (this.ended) { return false; }\n\n  _mode = (mode === ~~mode) ? mode : ((mode === true) ? Z_FINISH : Z_NO_FLUSH);\n\n  // Convert data if needed\n  if (typeof data === 'string') {\n    // If we need to compress text, change encoding to utf8.\n    strm.input = strings.string2buf(data);\n  } else if (toString.call(data) === '[object ArrayBuffer]') {\n    strm.input = new Uint8Array(data);\n  } else {\n    strm.input = data;\n  }\n\n  strm.next_in = 0;\n  strm.avail_in = strm.input.length;\n\n  do {\n    if (strm.avail_out === 0) {\n      strm.output = new utils.Buf8(chunkSize);\n      strm.next_out = 0;\n      strm.avail_out = chunkSize;\n    }\n    status = zlib_deflate.deflate(strm, _mode);    /* no bad return value */\n\n    if (status !== Z_STREAM_END && status !== Z_OK) {\n      this.onEnd(status);\n      this.ended = true;\n      return false;\n    }\n    if (strm.avail_out === 0 || (strm.avail_in === 0 && (_mode === Z_FINISH || _mode === Z_SYNC_FLUSH))) {\n      if (this.options.to === 'string') {\n        this.onData(strings.buf2binstring(utils.shrinkBuf(strm.output, strm.next_out)));\n      } else {\n        this.onData(utils.shrinkBuf(strm.output, strm.next_out));\n      }\n    }\n  } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== Z_STREAM_END);\n\n  // Finalize on the last chunk.\n  if (_mode === Z_FINISH) {\n    status = zlib_deflate.deflateEnd(this.strm);\n    this.onEnd(status);\n    this.ended = true;\n    return status === Z_OK;\n  }\n\n  // callback interim results if Z_SYNC_FLUSH.\n  if (_mode === Z_SYNC_FLUSH) {\n    this.onEnd(Z_OK);\n    strm.avail_out = 0;\n    return true;\n  }\n\n  return true;\n};\n\n\n/**\n * Deflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): output data. Type of array depends\n *   on js engine support. When string output requested, each chunk\n *   will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nDeflate.prototype.onData = function (chunk) {\n  this.chunks.push(chunk);\n};\n\n\n/**\n * Deflate#onEnd(status) -> Void\n * - status (Number): deflate status. 0 (Z_OK) on success,\n *   other if not.\n *\n * Called once after you tell deflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nDeflate.prototype.onEnd = function (status) {\n  // On success - join\n  if (status === Z_OK) {\n    if (this.options.to === 'string') {\n      this.result = this.chunks.join('');\n    } else {\n      this.result = utils.flattenChunks(this.chunks);\n    }\n  }\n  this.chunks = [];\n  this.err = status;\n  this.msg = this.strm.msg;\n};\n\n\n/**\n * deflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * Compress `data` with deflate algorithm and `options`.\n *\n * Supported options are:\n *\n * - level\n * - windowBits\n * - memLevel\n * - strategy\n * - dictionary\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n *   negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n *    (each char code [0..255])\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n *   , data = Uint8Array([1,2,3,4,5,6,7,8,9]);\n *\n * console.log(pako.deflate(data));\n * ```\n **/\nfunction deflate(input, options) {\n  var deflator = new Deflate(options);\n\n  deflator.push(input, true);\n\n  // That will never happens, if you don't cheat with options :)\n  if (deflator.err) { throw deflator.msg || msg[deflator.err]; }\n\n  return deflator.result;\n}\n\n\n/**\n * deflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction deflateRaw(input, options) {\n  options = options || {};\n  options.raw = true;\n  return deflate(input, options);\n}\n\n\n/**\n * gzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but create gzip wrapper instead of\n * deflate one.\n **/\nfunction gzip(input, options) {\n  options = options || {};\n  options.gzip = true;\n  return deflate(input, options);\n}\n\n\nexports.Deflate = Deflate;\nexports.deflate = deflate;\nexports.deflateRaw = deflateRaw;\nexports.gzip = gzip;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 18340 characters]\n//# sourceURL=webpack-internal:///../../../node_modules/pako/lib/deflate.js\n");
              }
            ),
            /***/
            "../../../node_modules/pako/lib/inflate.js": (
              /*!*************************************************!*\
                !*** ../../../node_modules/pako/lib/inflate.js ***!
                \*************************************************/
              /***/
              (__unused_webpack_module, exports, __webpack_require__) => {
                "use strict";
                eval("\n\n\nvar zlib_inflate = __webpack_require__(/*! ./zlib/inflate */ \"../../../node_modules/pako/lib/zlib/inflate.js\");\nvar utils        = __webpack_require__(/*! ./utils/common */ \"../../../node_modules/pako/lib/utils/common.js\");\nvar strings      = __webpack_require__(/*! ./utils/strings */ \"../../../node_modules/pako/lib/utils/strings.js\");\nvar c            = __webpack_require__(/*! ./zlib/constants */ \"../../../node_modules/pako/lib/zlib/constants.js\");\nvar msg          = __webpack_require__(/*! ./zlib/messages */ \"../../../node_modules/pako/lib/zlib/messages.js\");\nvar ZStream      = __webpack_require__(/*! ./zlib/zstream */ \"../../../node_modules/pako/lib/zlib/zstream.js\");\nvar GZheader     = __webpack_require__(/*! ./zlib/gzheader */ \"../../../node_modules/pako/lib/zlib/gzheader.js\");\n\nvar toString = Object.prototype.toString;\n\n/**\n * class Inflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[inflate]]\n * and [[inflateRaw]].\n **/\n\n/* internal\n * inflate.chunks -> Array\n *\n * Chunks of output data, if [[Inflate#onData]] not overridden.\n **/\n\n/**\n * Inflate.result -> Uint8Array|Array|String\n *\n * Uncompressed result, generated by default [[Inflate#onData]]\n * and [[Inflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Inflate#push]] with `Z_FINISH` / `true` param) or if you\n * push a chunk with explicit flush (call [[Inflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n/**\n * Inflate.err -> Number\n *\n * Error code after inflate finished. 0 (Z_OK) on success.\n * Should be checked if broken data possible.\n **/\n\n/**\n * Inflate.msg -> String\n *\n * Error message, if [[Inflate.err]] != 0\n **/\n\n\n/**\n * new Inflate(options)\n * - options (Object): zlib inflate options.\n *\n * Creates new inflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `windowBits`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw inflate\n * - `to` (String) - if equal to 'string', then result will be converted\n *   from utf8 to utf16 (javascript) string. When string output requested,\n *   chunk length can differ from `chunkSize`, depending on content.\n *\n * By default, when no options set, autodetect deflate/gzip data format via\n * wrapper header.\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n *   , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n *   , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var inflate = new pako.Inflate({ level: 3});\n *\n * inflate.push(chunk1, false);\n * inflate.push(chunk2, true);  // true -> last chunk\n *\n * if (inflate.err) { throw new Error(inflate.err); }\n *\n * console.log(inflate.result);\n * ```\n **/\nfunction Inflate(options) {\n  if (!(this instanceof Inflate)) return new Inflate(options);\n\n  this.options = utils.assign({\n    chunkSize: 16384,\n    windowBits: 0,\n    to: ''\n  }, options || {});\n\n  var opt = this.options;\n\n  // Force window size for `raw` data, if not set directly,\n  // because we have no header for autodetect.\n  if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) {\n    opt.windowBits = -opt.windowBits;\n    if (opt.windowBits === 0) { opt.windowBits = -15; }\n  }\n\n  // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate\n  if ((opt.windowBits >= 0) && (opt.windowBits < 16) &&\n      !(options && options.windowBits)) {\n    opt.windowBits += 32;\n  }\n\n  // Gzip header has no info about windows size, we can do autodetect only\n  // for deflate. So, if window size not set, force it to max when gzip possible\n  if ((opt.windowBits > 15) && (opt.windowBits < 48)) {\n    // bit 3 (16) -> gzipped data\n    // bit 4 (32) -> autodetect gzip/deflate\n    if ((opt.windowBits & 15) === 0) {\n      opt.windowBits |= 15;\n    }\n  }\n\n  this.err    = 0;      // error code, if happens (0 = Z_OK)\n  this.msg    = '';     // error message\n  this.ended  = false;  // used to avoid multiple onEnd() calls\n  this.chunks = [];     // chunks of compressed data\n\n  this.strm   = new ZStream();\n  this.strm.avail_out = 0;\n\n  var status  = zlib_inflate.inflateInit2(\n    this.strm,\n    opt.windowBits\n  );\n\n  if (status !== c.Z_OK) {\n    throw new Error(msg[status]);\n  }\n\n  this.header = new GZheader();\n\n  zlib_inflate.inflateGetHeader(this.strm, this.header);\n\n  // Setup dictionary\n  if (opt.dictionary) {\n    // Convert data if needed\n    if (typeof opt.dictionary === 'string') {\n      opt.dictionary = strings.string2buf(opt.dictionary);\n    } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n      opt.dictionary = new Uint8Array(opt.dictionary);\n    }\n    if (opt.raw) { //In raw mode we need to set the dictionary early\n      status = zlib_inflate.inflateSetDictionary(this.strm, opt.dictionary);\n      if (status !== c.Z_OK) {\n        throw new Error(msg[status]);\n      }\n    }\n  }\n}\n\n/**\n * Inflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n *   See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with\n * new output chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Inflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the decompression context.\n *\n * On fail call [[Inflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true);  // push last chunk\n * ```\n **/\nInflate.prototype.push = function (data, mode) {\n  var strm = this.strm;\n  var chunkSize = this.options.chunkSize;\n  var dictionary = this.options.dictionary;\n  var status, _mode;\n  var next_out_utf8, tail, utf8str;\n\n  // Flag to properly process Z_BUF_ERROR on testing inflate call\n  // when we check that all output data was flushed.\n  var allowBufError = false;\n\n  if (this.ended) { return false; }\n  _mode = (mode === ~~mode) ? mode : ((mode === true) ? c.Z_FINISH : c.Z_NO_FLUSH);\n\n  // Convert data if needed\n  if (typeof data === 'string') {\n    // Only binary strings can be decompressed on practice\n    strm.input = strings.binstring2buf(data);\n  } else if (toString.call(data) === '[object ArrayBuffer]') {\n    strm.input = new Uint8Array(data);\n  } else {\n    strm.input = data;\n  }\n\n  strm.next_in = 0;\n  strm.avail_in = strm.input.length;\n\n  do {\n    if (strm.avail_out === 0) {\n      strm.output = new utils.Buf8(chunkSize);\n      strm.next_out = 0;\n      strm.avail_out = chunkSize;\n    }\n\n    status = zlib_inflate.inflate(strm, c.Z_NO_FLUSH);    /* no bad return value */\n\n    if (status === c.Z_NEED_DICT && dictionary) {\n      status = zlib_inflate.inflateSetDictionary(this.strm, dictionary);\n    }\n\n    if (status === c.Z_BUF_ERROR && allowBufError === true) {\n      status = c.Z_OK;\n      allowBufError = false;\n    }\n\n    if (status !== c.Z_STREAM_END && status !== c.Z_OK) {\n      this.onEnd(status);\n      this.ended = true;\n      return false;\n    }\n\n    if (strm.next_out) {\n      if (strm.avail_out === 0 || status === c.Z_STREAM_END || (strm.avail_in === 0 && (_mode === c.Z_FINISH || _mode === c.Z_SYNC_FLUSH))) {\n\n        if (this.options.to === 'string') {\n\n          next_out_utf8 = strings.utf8border(strm.output, strm.next_out);\n\n          tail = strm.next_out - next_out_utf8;\n          utf8str = strings.buf2string(strm.output, next_out_utf8);\n\n          // move tail\n          strm.next_out = tail;\n          strm.avail_out = chunkSize - tail;\n          if (tail) { utils.arraySet(strm.output, strm.output, next_out_utf8, tail, 0); }\n\n          this.onData(utf8str);\n\n        } else {\n          this.onData(utils.shrinkBuf(strm.output, strm.next_out));\n        }\n      }\n    }\n\n    // When no more input data, we should check that internal inflate buffers\n    // are flushed. The only way to do it when avail_out = 0 - run one more\n    // inflate pass. But if output data not exists, inflate return Z_BUF_ERROR.\n    // Here we set flag to process this error properly.\n    //\n    // NOTE. Deflate does not return error in this case and does not needs such\n    // logic.\n    if (strm.avail_in === 0 && strm.avail_out === 0) {\n      allowBufError = true;\n    }\n\n  } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== c.Z_STREAM_END);\n\n  if (status === c.Z_STREAM_END) {\n    _mode = c.Z_FINISH;\n  }\n\n  // Finalize on the last chunk.\n  if (_mode === c.Z_FINISH) {\n    status = zlib_inflate.inflateEnd(this.strm);\n    this.onEnd(status);\n    this.ended = true;\n    return status === c.Z_OK;\n  }\n\n  // callback interim results if Z_SYNC_FLUSH.\n  if (_mode === c.Z_SYNC_FLUSH) {\n    this.onEnd(c.Z_OK);\n    strm.avail_out = 0;\n    return true;\n  }\n\n  return true;\n};\n\n\n/**\n * Inflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): output data. Type of array depends\n *   on js engine support. When string output requested, each chunk\n *   will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nInflate.prototype.onData = function (chunk) {\n  this.chunks.push(chunk);\n};\n\n\n/**\n * Inflate#onEnd(status) -> Void\n * - status (Number): inflate status. 0 (Z_OK) on success,\n *   other if not.\n *\n * Called either after you tell inflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nInflate.prototype.onEnd = function (status) {\n  // On success - join\n  if (status === c.Z_OK) {\n    if (this.options.to === 'string') {\n      // Glue & convert here, until we teach pako to send\n      // utf8 aligned strings to onData\n      this.result = this.chunks.join('');\n    } else {\n      this.result = utils.flattenChunks(this.chunks);\n    }\n  }\n  this.chunks = [];\n  this.err = status;\n  this.msg = this.strm.msg;\n};\n\n\n/**\n * inflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Decompress `data` with inflate/ungzip and `options`. Autodetect\n * format via wrapper header by default. That's why we don't provide\n * separate `ungzip` method.\n *\n * Supported options are:\n *\n * - windowBits\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n *   negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be converted\n *   from utf8 to utf16 (javascript) string. When string output requested,\n *   chunk length can differ from `chunkSize`, depending on content.\n *\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n *   , input = pako.deflate([1,2,3,4,5,6,7,8,9])\n *   , output;\n *\n * try {\n *   output = pako.inflate(input);\n * } catch (err)\n *   console.log(err);\n * }\n * ```\n **/\nfunction inflate(input, options) {\n  var inflator = new Inflate(options);\n\n  inflator.push(input, true);\n\n  // That will never happens, if you don't cheat with options :)\n  if (inflator.err) { throw inflator.msg || msg[inflator.err]; }\n\n  return inflator.result;\n}\n\n\n/**\n * inflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * The same as [[inflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction inflateRaw(input, options) {\n  options = options || {};\n  options.raw = true;\n  return inflate(input, options);\n}\n\n\n/**\n * ungzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Just shortcut to [[inflate]], because it autodetects format\n * by header.content. Done for convenience.\n **/\n\n\nexports.Inflate = Inflate;\nexports.inflate = inflate;\nexports.inflateRaw = inflateRaw;\nexports.ungzip  = inflate;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 20384 characters]\n//# sourceURL=webpack-internal:///../../../node_modules/pako/lib/inflate.js\n");
              }
            ),
            /***/
            "../../../node_modules/pako/lib/utils/common.js": (
              /*!******************************************************!*\
                !*** ../../../node_modules/pako/lib/utils/common.js ***!
                \******************************************************/
              /***/
              (__unused_webpack_module, exports) => {
                "use strict";
                eval("\n\n\nvar TYPED_OK =  (typeof Uint8Array !== 'undefined') &&\n                (typeof Uint16Array !== 'undefined') &&\n                (typeof Int32Array !== 'undefined');\n\nfunction _has(obj, key) {\n  return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nexports.assign = function (obj /*from1, from2, from3, ...*/) {\n  var sources = Array.prototype.slice.call(arguments, 1);\n  while (sources.length) {\n    var source = sources.shift();\n    if (!source) { continue; }\n\n    if (typeof source !== 'object') {\n      throw new TypeError(source + 'must be non-object');\n    }\n\n    for (var p in source) {\n      if (_has(source, p)) {\n        obj[p] = source[p];\n      }\n    }\n  }\n\n  return obj;\n};\n\n\n// reduce buffer size, avoiding mem copy\nexports.shrinkBuf = function (buf, size) {\n  if (buf.length === size) { return buf; }\n  if (buf.subarray) { return buf.subarray(0, size); }\n  buf.length = size;\n  return buf;\n};\n\n\nvar fnTyped = {\n  arraySet: function (dest, src, src_offs, len, dest_offs) {\n    if (src.subarray && dest.subarray) {\n      dest.set(src.subarray(src_offs, src_offs + len), dest_offs);\n      return;\n    }\n    // Fallback to ordinary array\n    for (var i = 0; i < len; i++) {\n      dest[dest_offs + i] = src[src_offs + i];\n    }\n  },\n  // Join array of chunks to single array.\n  flattenChunks: function (chunks) {\n    var i, l, len, pos, chunk, result;\n\n    // calculate data length\n    len = 0;\n    for (i = 0, l = chunks.length; i < l; i++) {\n      len += chunks[i].length;\n    }\n\n    // join chunks\n    result = new Uint8Array(len);\n    pos = 0;\n    for (i = 0, l = chunks.length; i < l; i++) {\n      chunk = chunks[i];\n      result.set(chunk, pos);\n      pos += chunk.length;\n    }\n\n    return result;\n  }\n};\n\nvar fnUntyped = {\n  arraySet: function (dest, src, src_offs, len, dest_offs) {\n    for (var i = 0; i < len; i++) {\n      dest[dest_offs + i] = src[src_offs + i];\n    }\n  },\n  // Join array of chunks to single array.\n  flattenChunks: function (chunks) {\n    return [].concat.apply([], chunks);\n  }\n};\n\n\n// Enable/Disable typed arrays use, for testing\n//\nexports.setTyped = function (on) {\n  if (on) {\n    exports.Buf8  = Uint8Array;\n    exports.Buf16 = Uint16Array;\n    exports.Buf32 = Int32Array;\n    exports.assign(exports, fnTyped);\n  } else {\n    exports.Buf8  = Array;\n    exports.Buf16 = Array;\n    exports.Buf32 = Array;\n    exports.assign(exports, fnUntyped);\n  }\n};\n\nexports.setTyped(TYPED_OK);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4524 characters]\n//# sourceURL=webpack-internal:///../../../node_modules/pako/lib/utils/common.js\n");
              }
            ),
            /***/
            "../../../node_modules/pako/lib/utils/strings.js": (
              /*!*******************************************************!*\
                !*** ../../../node_modules/pako/lib/utils/strings.js ***!
                \*******************************************************/
              /***/
              (__unused_webpack_module, exports, __webpack_require__) => {
                "use strict";
                eval("// String encode/decode helpers\n\n\n\nvar utils = __webpack_require__(/*! ./common */ \"../../../node_modules/pako/lib/utils/common.js\");\n\n\n// Quick check if we can use fast array to bin string conversion\n//\n// - apply(Array) can fail on Android 2.2\n// - apply(Uint8Array) can fail on iOS 5.1 Safari\n//\nvar STR_APPLY_OK = true;\nvar STR_APPLY_UIA_OK = true;\n\ntry { String.fromCharCode.apply(null, [ 0 ]); } catch (__) { STR_APPLY_OK = false; }\ntry { String.fromCharCode.apply(null, new Uint8Array(1)); } catch (__) { STR_APPLY_UIA_OK = false; }\n\n\n// Table with utf8 lengths (calculated by first byte of sequence)\n// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n// because max possible codepoint is 0x10ffff\nvar _utf8len = new utils.Buf8(256);\nfor (var q = 0; q < 256; q++) {\n  _utf8len[q] = (q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1);\n}\n_utf8len[254] = _utf8len[254] = 1; // Invalid sequence start\n\n\n// convert string to array (typed, when possible)\nexports.string2buf = function (str) {\n  var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n  // count binary size\n  for (m_pos = 0; m_pos < str_len; m_pos++) {\n    c = str.charCodeAt(m_pos);\n    if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n      c2 = str.charCodeAt(m_pos + 1);\n      if ((c2 & 0xfc00) === 0xdc00) {\n        c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n        m_pos++;\n      }\n    }\n    buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n  }\n\n  // allocate buffer\n  buf = new utils.Buf8(buf_len);\n\n  // convert\n  for (i = 0, m_pos = 0; i < buf_len; m_pos++) {\n    c = str.charCodeAt(m_pos);\n    if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n      c2 = str.charCodeAt(m_pos + 1);\n      if ((c2 & 0xfc00) === 0xdc00) {\n        c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n        m_pos++;\n      }\n    }\n    if (c < 0x80) {\n      /* one byte */\n      buf[i++] = c;\n    } else if (c < 0x800) {\n      /* two bytes */\n      buf[i++] = 0xC0 | (c >>> 6);\n      buf[i++] = 0x80 | (c & 0x3f);\n    } else if (c < 0x10000) {\n      /* three bytes */\n      buf[i++] = 0xE0 | (c >>> 12);\n      buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n      buf[i++] = 0x80 | (c & 0x3f);\n    } else {\n      /* four bytes */\n      buf[i++] = 0xf0 | (c >>> 18);\n      buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n      buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n      buf[i++] = 0x80 | (c & 0x3f);\n    }\n  }\n\n  return buf;\n};\n\n// Helper (used in 2 places)\nfunction buf2binstring(buf, len) {\n  // On Chrome, the arguments in a function call that are allowed is `65534`.\n  // If the length of the buffer is smaller than that, we can use this optimization,\n  // otherwise we will take a slower path.\n  if (len < 65534) {\n    if ((buf.subarray && STR_APPLY_UIA_OK) || (!buf.subarray && STR_APPLY_OK)) {\n      return String.fromCharCode.apply(null, utils.shrinkBuf(buf, len));\n    }\n  }\n\n  var result = '';\n  for (var i = 0; i < len; i++) {\n    result += String.fromCharCode(buf[i]);\n  }\n  return result;\n}\n\n\n// Convert byte array to binary string\nexports.buf2binstring = function (buf) {\n  return buf2binstring(buf, buf.length);\n};\n\n\n// Convert binary string (typed, when possible)\nexports.binstring2buf = function (str) {\n  var buf = new utils.Buf8(str.length);\n  for (var i = 0, len = buf.length; i < len; i++) {\n    buf[i] = str.charCodeAt(i);\n  }\n  return buf;\n};\n\n\n// convert array to string\nexports.buf2string = function (buf, max) {\n  var i, out, c, c_len;\n  var len = max || buf.length;\n\n  // Reserve max possible length (2 words per char)\n  // NB: by unknown reasons, Array is significantly faster for\n  //     String.fromCharCode.apply than Uint16Array.\n  var utf16buf = new Array(len * 2);\n\n  for (out = 0, i = 0; i < len;) {\n    c = buf[i++];\n    // quick process ascii\n    if (c < 0x80) { utf16buf[out++] = c; continue; }\n\n    c_len = _utf8len[c];\n    // skip 5 & 6 byte codes\n    if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len - 1; continue; }\n\n    // apply mask on first byte\n    c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n    // join the rest\n    while (c_len > 1 && i < len) {\n      c = (c << 6) | (buf[i++] & 0x3f);\n      c_len--;\n    }\n\n    // terminated by end of string?\n    if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n    if (c < 0x10000) {\n      utf16buf[out++] = c;\n    } else {\n      c -= 0x10000;\n      utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n      utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n    }\n  }\n\n  return buf2binstring(utf16buf, out);\n};\n\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max   - length limit (mandatory);\nexports.utf8border = function (buf, max) {\n  var pos;\n\n  max = max || buf.length;\n  if (max > buf.length) { max = buf.length; }\n\n  // go back from last position, until start of sequence found\n  pos = max - 1;\n  while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n  // Very small and broken sequence,\n  // return max, because we should return something anyway.\n  if (pos < 0) { return max; }\n\n  // If we came to start of buffer - that means buffer is too small,\n  // return max too.\n  if (pos === 0) { return max; }\n\n  return (pos + _utf8len[buf[pos]] > max) ? pos : max;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 9040 characters]\n//# sourceURL=webpack-internal:///../../../node_modules/pako/lib/utils/strings.js\n");
              }
            ),
            /***/
            "../../../node_modules/pako/lib/zlib/adler32.js": (
              /*!******************************************************!*\
                !*** ../../../node_modules/pako/lib/zlib/adler32.js ***!
                \******************************************************/
              /***/
              (module) => {
                "use strict";
                eval("\n\n// Note: adler32 takes 12% for level 0 and 2% for level 6.\n// It isn't worth it to make additional optimizations as in original.\n// Small size is preferable.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction adler32(adler, buf, len, pos) {\n  var s1 = (adler & 0xffff) |0,\n      s2 = ((adler >>> 16) & 0xffff) |0,\n      n = 0;\n\n  while (len !== 0) {\n    // Set limit ~ twice less than 5552, to keep\n    // s2 in 31-bits, because we force signed ints.\n    // in other case %= will fail.\n    n = len > 2000 ? 2000 : len;\n    len -= n;\n\n    do {\n      s1 = (s1 + buf[pos++]) |0;\n      s2 = (s2 + s1) |0;\n    } while (--n);\n\n    s1 %= 65521;\n    s2 %= 65521;\n  }\n\n  return (s1 | (s2 << 16)) |0;\n}\n\n\nmodule.exports = adler32;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bha28vbGliL3psaWIvYWRsZXIzMi5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhEQUE4RDtBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU47QUFDQTtBQUNBOztBQUVBO0FBQ0E7OztBQUdBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wYWtvL2xpYi96bGliL2FkbGVyMzIuanM/ZjNiNiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbi8vIE5vdGU6IGFkbGVyMzIgdGFrZXMgMTIlIGZvciBsZXZlbCAwIGFuZCAyJSBmb3IgbGV2ZWwgNi5cbi8vIEl0IGlzbid0IHdvcnRoIGl0IHRvIG1ha2UgYWRkaXRpb25hbCBvcHRpbWl6YXRpb25zIGFzIGluIG9yaWdpbmFsLlxuLy8gU21hbGwgc2l6ZSBpcyBwcmVmZXJhYmxlLlxuXG4vLyAoQykgMTk5NS0yMDEzIEplYW4tbG91cCBHYWlsbHkgYW5kIE1hcmsgQWRsZXJcbi8vIChDKSAyMDE0LTIwMTcgVml0YWx5IFB1enJpbiBhbmQgQW5kcmV5IFR1cGl0c2luXG4vL1xuLy8gVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAnYXMtaXMnLCB3aXRob3V0IGFueSBleHByZXNzIG9yIGltcGxpZWRcbi8vIHdhcnJhbnR5LiBJbiBubyBldmVudCB3aWxsIHRoZSBhdXRob3JzIGJlIGhlbGQgbGlhYmxlIGZvciBhbnkgZGFtYWdlc1xuLy8gYXJpc2luZyBmcm9tIHRoZSB1c2Ugb2YgdGhpcyBzb2Z0d2FyZS5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gYW55b25lIHRvIHVzZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkgcHVycG9zZSxcbi8vIGluY2x1ZGluZyBjb21tZXJjaWFsIGFwcGxpY2F0aW9ucywgYW5kIHRvIGFsdGVyIGl0IGFuZCByZWRpc3RyaWJ1dGUgaXRcbi8vIGZyZWVseSwgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIHJlc3RyaWN0aW9uczpcbi8vXG4vLyAxLiBUaGUgb3JpZ2luIG9mIHRoaXMgc29mdHdhcmUgbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQ7IHlvdSBtdXN0IG5vdFxuLy8gICBjbGFpbSB0aGF0IHlvdSB3cm90ZSB0aGUgb3JpZ2luYWwgc29mdHdhcmUuIElmIHlvdSB1c2UgdGhpcyBzb2Z0d2FyZVxuLy8gICBpbiBhIHByb2R1Y3QsIGFuIGFja25vd2xlZGdtZW50IGluIHRoZSBwcm9kdWN0IGRvY3VtZW50YXRpb24gd291bGQgYmVcbi8vICAgYXBwcmVjaWF0ZWQgYnV0IGlzIG5vdCByZXF1aXJlZC5cbi8vIDIuIEFsdGVyZWQgc291cmNlIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCwgYW5kIG11c3Qgbm90IGJlXG4vLyAgIG1pc3JlcHJlc2VudGVkIGFzIGJlaW5nIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS5cbi8vIDMuIFRoaXMgbm90aWNlIG1heSBub3QgYmUgcmVtb3ZlZCBvciBhbHRlcmVkIGZyb20gYW55IHNvdXJjZSBkaXN0cmlidXRpb24uXG5cbmZ1bmN0aW9uIGFkbGVyMzIoYWRsZXIsIGJ1ZiwgbGVuLCBwb3MpIHtcbiAgdmFyIHMxID0gKGFkbGVyICYgMHhmZmZmKSB8MCxcbiAgICAgIHMyID0gKChhZGxlciA+Pj4gMTYpICYgMHhmZmZmKSB8MCxcbiAgICAgIG4gPSAwO1xuXG4gIHdoaWxlIChsZW4gIT09IDApIHtcbiAgICAvLyBTZXQgbGltaXQgfiB0d2ljZSBsZXNzIHRoYW4gNTU1MiwgdG8ga2VlcFxuICAgIC8vIHMyIGluIDMxLWJpdHMsIGJlY2F1c2Ugd2UgZm9yY2Ugc2lnbmVkIGludHMuXG4gICAgLy8gaW4gb3RoZXIgY2FzZSAlPSB3aWxsIGZhaWwuXG4gICAgbiA9IGxlbiA+IDIwMDAgPyAyMDAwIDogbGVuO1xuICAgIGxlbiAtPSBuO1xuXG4gICAgZG8ge1xuICAgICAgczEgPSAoczEgKyBidWZbcG9zKytdKSB8MDtcbiAgICAgIHMyID0gKHMyICsgczEpIHwwO1xuICAgIH0gd2hpbGUgKC0tbik7XG5cbiAgICBzMSAlPSA2NTUyMTtcbiAgICBzMiAlPSA2NTUyMTtcbiAgfVxuXG4gIHJldHVybiAoczEgfCAoczIgPDwgMTYpKSB8MDtcbn1cblxuXG5tb2R1bGUuZXhwb3J0cyA9IGFkbGVyMzI7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/pako/lib/zlib/adler32.js\n");
              }
            ),
            /***/
            "../../../node_modules/pako/lib/zlib/constants.js": (
              /*!********************************************************!*\
                !*** ../../../node_modules/pako/lib/zlib/constants.js ***!
                \********************************************************/
              /***/
              (module) => {
                "use strict";
                eval("\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n\n  /* Allowed flush values; see deflate() and inflate() below for details */\n  Z_NO_FLUSH:         0,\n  Z_PARTIAL_FLUSH:    1,\n  Z_SYNC_FLUSH:       2,\n  Z_FULL_FLUSH:       3,\n  Z_FINISH:           4,\n  Z_BLOCK:            5,\n  Z_TREES:            6,\n\n  /* Return codes for the compression/decompression functions. Negative values\n  * are errors, positive values are used for special but normal events.\n  */\n  Z_OK:               0,\n  Z_STREAM_END:       1,\n  Z_NEED_DICT:        2,\n  Z_ERRNO:           -1,\n  Z_STREAM_ERROR:    -2,\n  Z_DATA_ERROR:      -3,\n  //Z_MEM_ERROR:     -4,\n  Z_BUF_ERROR:       -5,\n  //Z_VERSION_ERROR: -6,\n\n  /* compression levels */\n  Z_NO_COMPRESSION:         0,\n  Z_BEST_SPEED:             1,\n  Z_BEST_COMPRESSION:       9,\n  Z_DEFAULT_COMPRESSION:   -1,\n\n\n  Z_FILTERED:               1,\n  Z_HUFFMAN_ONLY:           2,\n  Z_RLE:                    3,\n  Z_FIXED:                  4,\n  Z_DEFAULT_STRATEGY:       0,\n\n  /* Possible values of the data_type field (though see inflate()) */\n  Z_BINARY:                 0,\n  Z_TEXT:                   1,\n  //Z_ASCII:                1, // = Z_TEXT (deprecated)\n  Z_UNKNOWN:                2,\n\n  /* The deflate compression method */\n  Z_DEFLATED:               8\n  //Z_NULL:                 null // Use -1 or null inline, depending on var type\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bha28vbGliL3psaWIvY29uc3RhbnRzLmpzLmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4REFBOEQ7QUFDOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wYWtvL2xpYi96bGliL2NvbnN0YW50cy5qcz9iNDZhIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuLy8gKEMpIDE5OTUtMjAxMyBKZWFuLWxvdXAgR2FpbGx5IGFuZCBNYXJrIEFkbGVyXG4vLyAoQykgMjAxNC0yMDE3IFZpdGFseSBQdXpyaW4gYW5kIEFuZHJleSBUdXBpdHNpblxuLy9cbi8vIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgJ2FzLWlzJywgd2l0aG91dCBhbnkgZXhwcmVzcyBvciBpbXBsaWVkXG4vLyB3YXJyYW50eS4gSW4gbm8gZXZlbnQgd2lsbCB0aGUgYXV0aG9ycyBiZSBoZWxkIGxpYWJsZSBmb3IgYW55IGRhbWFnZXNcbi8vIGFyaXNpbmcgZnJvbSB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGFueW9uZSB0byB1c2UgdGhpcyBzb2Z0d2FyZSBmb3IgYW55IHB1cnBvc2UsXG4vLyBpbmNsdWRpbmcgY29tbWVyY2lhbCBhcHBsaWNhdGlvbnMsIGFuZCB0byBhbHRlciBpdCBhbmQgcmVkaXN0cmlidXRlIGl0XG4vLyBmcmVlbHksIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnM6XG4vL1xuLy8gMS4gVGhlIG9yaWdpbiBvZiB0aGlzIHNvZnR3YXJlIG11c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkOyB5b3UgbXVzdCBub3Rcbi8vICAgY2xhaW0gdGhhdCB5b3Ugd3JvdGUgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLiBJZiB5b3UgdXNlIHRoaXMgc29mdHdhcmVcbi8vICAgaW4gYSBwcm9kdWN0LCBhbiBhY2tub3dsZWRnbWVudCBpbiB0aGUgcHJvZHVjdCBkb2N1bWVudGF0aW9uIHdvdWxkIGJlXG4vLyAgIGFwcHJlY2lhdGVkIGJ1dCBpcyBub3QgcmVxdWlyZWQuXG4vLyAyLiBBbHRlcmVkIHNvdXJjZSB2ZXJzaW9ucyBtdXN0IGJlIHBsYWlubHkgbWFya2VkIGFzIHN1Y2gsIGFuZCBtdXN0IG5vdCBiZVxuLy8gICBtaXNyZXByZXNlbnRlZCBhcyBiZWluZyB0aGUgb3JpZ2luYWwgc29mdHdhcmUuXG4vLyAzLiBUaGlzIG5vdGljZSBtYXkgbm90IGJlIHJlbW92ZWQgb3IgYWx0ZXJlZCBmcm9tIGFueSBzb3VyY2UgZGlzdHJpYnV0aW9uLlxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcblxuICAvKiBBbGxvd2VkIGZsdXNoIHZhbHVlczsgc2VlIGRlZmxhdGUoKSBhbmQgaW5mbGF0ZSgpIGJlbG93IGZvciBkZXRhaWxzICovXG4gIFpfTk9fRkxVU0g6ICAgICAgICAgMCxcbiAgWl9QQVJUSUFMX0ZMVVNIOiAgICAxLFxuICBaX1NZTkNfRkxVU0g6ICAgICAgIDIsXG4gIFpfRlVMTF9GTFVTSDogICAgICAgMyxcbiAgWl9GSU5JU0g6ICAgICAgICAgICA0LFxuICBaX0JMT0NLOiAgICAgICAgICAgIDUsXG4gIFpfVFJFRVM6ICAgICAgICAgICAgNixcblxuICAvKiBSZXR1cm4gY29kZXMgZm9yIHRoZSBjb21wcmVzc2lvbi9kZWNvbXByZXNzaW9uIGZ1bmN0aW9ucy4gTmVnYXRpdmUgdmFsdWVzXG4gICogYXJlIGVycm9ycywgcG9zaXRpdmUgdmFsdWVzIGFyZSB1c2VkIGZvciBzcGVjaWFsIGJ1dCBub3JtYWwgZXZlbnRzLlxuICAqL1xuICBaX09LOiAgICAgICAgICAgICAgIDAsXG4gIFpfU1RSRUFNX0VORDogICAgICAgMSxcbiAgWl9ORUVEX0RJQ1Q6ICAgICAgICAyLFxuICBaX0VSUk5POiAgICAgICAgICAgLTEsXG4gIFpfU1RSRUFNX0VSUk9SOiAgICAtMixcbiAgWl9EQVRBX0VSUk9SOiAgICAgIC0zLFxuICAvL1pfTUVNX0VSUk9SOiAgICAgLTQsXG4gIFpfQlVGX0VSUk9SOiAgICAgICAtNSxcbiAgLy9aX1ZFUlNJT05fRVJST1I6IC02LFxuXG4gIC8qIGNvbXByZXNzaW9uIGxldmVscyAqL1xuICBaX05PX0NPTVBSRVNTSU9OOiAgICAgICAgIDAsXG4gIFpfQkVTVF9TUEVFRDogICAgICAgICAgICAgMSxcbiAgWl9CRVNUX0NPTVBSRVNTSU9OOiAgICAgICA5LFxuICBaX0RFRkFVTFRfQ09NUFJFU1NJT046ICAgLTEsXG5cblxuICBaX0ZJTFRFUkVEOiAgICAgICAgICAgICAgIDEsXG4gIFpfSFVGRk1BTl9PTkxZOiAgICAgICAgICAgMixcbiAgWl9STEU6ICAgICAgICAgICAgICAgICAgICAzLFxuICBaX0ZJWEVEOiAgICAgICAgICAgICAgICAgIDQsXG4gIFpfREVGQVVMVF9TVFJBVEVHWTogICAgICAgMCxcblxuICAvKiBQb3NzaWJsZSB2YWx1ZXMgb2YgdGhlIGRhdGFfdHlwZSBmaWVsZCAodGhvdWdoIHNlZSBpbmZsYXRlKCkpICovXG4gIFpfQklOQVJZOiAgICAgICAgICAgICAgICAgMCxcbiAgWl9URVhUOiAgICAgICAgICAgICAgICAgICAxLFxuICAvL1pfQVNDSUk6ICAgICAgICAgICAgICAgIDEsIC8vID0gWl9URVhUIChkZXByZWNhdGVkKVxuICBaX1VOS05PV046ICAgICAgICAgICAgICAgIDIsXG5cbiAgLyogVGhlIGRlZmxhdGUgY29tcHJlc3Npb24gbWV0aG9kICovXG4gIFpfREVGTEFURUQ6ICAgICAgICAgICAgICAgOFxuICAvL1pfTlVMTDogICAgICAgICAgICAgICAgIG51bGwgLy8gVXNlIC0xIG9yIG51bGwgaW5saW5lLCBkZXBlbmRpbmcgb24gdmFyIHR5cGVcbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/pako/lib/zlib/constants.js\n");
              }
            ),
            /***/
            "../../../node_modules/pako/lib/zlib/crc32.js": (
              /*!****************************************************!*\
                !*** ../../../node_modules/pako/lib/zlib/crc32.js ***!
                \****************************************************/
              /***/
              (module) => {
                "use strict";
                eval("\n\n// Note: we can't get significant speed boost here.\n// So write code to minimize size - no pregenerated tables\n// and array tools dependencies.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// Use ordinary array, since untyped makes no boost here\nfunction makeTable() {\n  var c, table = [];\n\n  for (var n = 0; n < 256; n++) {\n    c = n;\n    for (var k = 0; k < 8; k++) {\n      c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n    }\n    table[n] = c;\n  }\n\n  return table;\n}\n\n// Create table on load. Just 255 signed longs. Not a problem.\nvar crcTable = makeTable();\n\n\nfunction crc32(crc, buf, len, pos) {\n  var t = crcTable,\n      end = pos + len;\n\n  crc ^= -1;\n\n  for (var i = pos; i < end; i++) {\n    crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n  }\n\n  return (crc ^ (-1)); // >>> 0;\n}\n\n\nmodule.exports = crc32;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bha28vbGliL3psaWIvY3JjMzIuanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4REFBOEQ7QUFDOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxrQkFBa0IsU0FBUztBQUMzQjtBQUNBLG9CQUFvQixPQUFPO0FBQzNCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLG9CQUFvQixTQUFTO0FBQzdCO0FBQ0E7O0FBRUEsdUJBQXVCO0FBQ3ZCOzs7QUFHQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcGFrby9saWIvemxpYi9jcmMzMi5qcz9jNjY4Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuLy8gTm90ZTogd2UgY2FuJ3QgZ2V0IHNpZ25pZmljYW50IHNwZWVkIGJvb3N0IGhlcmUuXG4vLyBTbyB3cml0ZSBjb2RlIHRvIG1pbmltaXplIHNpemUgLSBubyBwcmVnZW5lcmF0ZWQgdGFibGVzXG4vLyBhbmQgYXJyYXkgdG9vbHMgZGVwZW5kZW5jaWVzLlxuXG4vLyAoQykgMTk5NS0yMDEzIEplYW4tbG91cCBHYWlsbHkgYW5kIE1hcmsgQWRsZXJcbi8vIChDKSAyMDE0LTIwMTcgVml0YWx5IFB1enJpbiBhbmQgQW5kcmV5IFR1cGl0c2luXG4vL1xuLy8gVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAnYXMtaXMnLCB3aXRob3V0IGFueSBleHByZXNzIG9yIGltcGxpZWRcbi8vIHdhcnJhbnR5LiBJbiBubyBldmVudCB3aWxsIHRoZSBhdXRob3JzIGJlIGhlbGQgbGlhYmxlIGZvciBhbnkgZGFtYWdlc1xuLy8gYXJpc2luZyBmcm9tIHRoZSB1c2Ugb2YgdGhpcyBzb2Z0d2FyZS5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gYW55b25lIHRvIHVzZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkgcHVycG9zZSxcbi8vIGluY2x1ZGluZyBjb21tZXJjaWFsIGFwcGxpY2F0aW9ucywgYW5kIHRvIGFsdGVyIGl0IGFuZCByZWRpc3RyaWJ1dGUgaXRcbi8vIGZyZWVseSwgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIHJlc3RyaWN0aW9uczpcbi8vXG4vLyAxLiBUaGUgb3JpZ2luIG9mIHRoaXMgc29mdHdhcmUgbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQ7IHlvdSBtdXN0IG5vdFxuLy8gICBjbGFpbSB0aGF0IHlvdSB3cm90ZSB0aGUgb3JpZ2luYWwgc29mdHdhcmUuIElmIHlvdSB1c2UgdGhpcyBzb2Z0d2FyZVxuLy8gICBpbiBhIHByb2R1Y3QsIGFuIGFja25vd2xlZGdtZW50IGluIHRoZSBwcm9kdWN0IGRvY3VtZW50YXRpb24gd291bGQgYmVcbi8vICAgYXBwcmVjaWF0ZWQgYnV0IGlzIG5vdCByZXF1aXJlZC5cbi8vIDIuIEFsdGVyZWQgc291cmNlIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCwgYW5kIG11c3Qgbm90IGJlXG4vLyAgIG1pc3JlcHJlc2VudGVkIGFzIGJlaW5nIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS5cbi8vIDMuIFRoaXMgbm90aWNlIG1heSBub3QgYmUgcmVtb3ZlZCBvciBhbHRlcmVkIGZyb20gYW55IHNvdXJjZSBkaXN0cmlidXRpb24uXG5cbi8vIFVzZSBvcmRpbmFyeSBhcnJheSwgc2luY2UgdW50eXBlZCBtYWtlcyBubyBib29zdCBoZXJlXG5mdW5jdGlvbiBtYWtlVGFibGUoKSB7XG4gIHZhciBjLCB0YWJsZSA9IFtdO1xuXG4gIGZvciAodmFyIG4gPSAwOyBuIDwgMjU2OyBuKyspIHtcbiAgICBjID0gbjtcbiAgICBmb3IgKHZhciBrID0gMDsgayA8IDg7IGsrKykge1xuICAgICAgYyA9ICgoYyAmIDEpID8gKDB4RURCODgzMjAgXiAoYyA+Pj4gMSkpIDogKGMgPj4+IDEpKTtcbiAgICB9XG4gICAgdGFibGVbbl0gPSBjO1xuICB9XG5cbiAgcmV0dXJuIHRhYmxlO1xufVxuXG4vLyBDcmVhdGUgdGFibGUgb24gbG9hZC4gSnVzdCAyNTUgc2lnbmVkIGxvbmdzLiBOb3QgYSBwcm9ibGVtLlxudmFyIGNyY1RhYmxlID0gbWFrZVRhYmxlKCk7XG5cblxuZnVuY3Rpb24gY3JjMzIoY3JjLCBidWYsIGxlbiwgcG9zKSB7XG4gIHZhciB0ID0gY3JjVGFibGUsXG4gICAgICBlbmQgPSBwb3MgKyBsZW47XG5cbiAgY3JjIF49IC0xO1xuXG4gIGZvciAodmFyIGkgPSBwb3M7IGkgPCBlbmQ7IGkrKykge1xuICAgIGNyYyA9IChjcmMgPj4+IDgpIF4gdFsoY3JjIF4gYnVmW2ldKSAmIDB4RkZdO1xuICB9XG5cbiAgcmV0dXJuIChjcmMgXiAoLTEpKTsgLy8gPj4+IDA7XG59XG5cblxubW9kdWxlLmV4cG9ydHMgPSBjcmMzMjtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/pako/lib/zlib/crc32.js\n");
              }
            ),
            /***/
            "../../../node_modules/pako/lib/zlib/deflate.js": (
              /*!******************************************************!*\
                !*** ../../../node_modules/pako/lib/zlib/deflate.js ***!
                \******************************************************/
              /***/
              (__unused_webpack_module, exports, __webpack_require__) => {
                "use strict";
                eval(`

// (C) 1995-2013 Jean-loup Gailly and Mark Adler
// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
//   claim that you wrote the original software. If you use this software
//   in a product, an acknowledgment in the product documentation would be
//   appreciated but is not required.
// 2. Altered source versions must be plainly marked as such, and must not be
//   misrepresented as being the original software.
// 3. This notice may not be removed or altered from any source distribution.

var utils   = __webpack_require__(/*! ../utils/common */ "../../../node_modules/pako/lib/utils/common.js");
var trees   = __webpack_require__(/*! ./trees */ "../../../node_modules/pako/lib/zlib/trees.js");
var adler32 = __webpack_require__(/*! ./adler32 */ "../../../node_modules/pako/lib/zlib/adler32.js");
var crc32   = __webpack_require__(/*! ./crc32 */ "../../../node_modules/pako/lib/zlib/crc32.js");
var msg     = __webpack_require__(/*! ./messages */ "../../../node_modules/pako/lib/zlib/messages.js");

/* Public constants ==========================================================*/
/* ===========================================================================*/


/* Allowed flush values; see deflate() and inflate() below for details */
var Z_NO_FLUSH      = 0;
var Z_PARTIAL_FLUSH = 1;
//var Z_SYNC_FLUSH    = 2;
var Z_FULL_FLUSH    = 3;
var Z_FINISH        = 4;
var Z_BLOCK         = 5;
//var Z_TREES         = 6;


/* Return codes for the compression/decompression functions. Negative values
 * are errors, positive values are used for special but normal events.
 */
var Z_OK            = 0;
var Z_STREAM_END    = 1;
//var Z_NEED_DICT     = 2;
//var Z_ERRNO         = -1;
var Z_STREAM_ERROR  = -2;
var Z_DATA_ERROR    = -3;
//var Z_MEM_ERROR     = -4;
var Z_BUF_ERROR     = -5;
//var Z_VERSION_ERROR = -6;


/* compression levels */
//var Z_NO_COMPRESSION      = 0;
//var Z_BEST_SPEED          = 1;
//var Z_BEST_COMPRESSION    = 9;
var Z_DEFAULT_COMPRESSION = -1;


var Z_FILTERED            = 1;
var Z_HUFFMAN_ONLY        = 2;
var Z_RLE                 = 3;
var Z_FIXED               = 4;
var Z_DEFAULT_STRATEGY    = 0;

/* Possible values of the data_type field (though see inflate()) */
//var Z_BINARY              = 0;
//var Z_TEXT                = 1;
//var Z_ASCII               = 1; // = Z_TEXT
var Z_UNKNOWN             = 2;


/* The deflate compression method */
var Z_DEFLATED  = 8;

/*============================================================================*/


var MAX_MEM_LEVEL = 9;
/* Maximum value for memLevel in deflateInit2 */
var MAX_WBITS = 15;
/* 32K LZ77 window */
var DEF_MEM_LEVEL = 8;


var LENGTH_CODES  = 29;
/* number of length codes, not counting the special END_BLOCK code */
var LITERALS      = 256;
/* number of literal bytes 0..255 */
var L_CODES       = LITERALS + 1 + LENGTH_CODES;
/* number of Literal or Length codes, including the END_BLOCK code */
var D_CODES       = 30;
/* number of distance codes */
var BL_CODES      = 19;
/* number of codes used to transfer the bit lengths */
var HEAP_SIZE     = 2 * L_CODES + 1;
/* maximum heap size */
var MAX_BITS  = 15;
/* All codes must not exceed MAX_BITS bits */

var MIN_MATCH = 3;
var MAX_MATCH = 258;
var MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);

var PRESET_DICT = 0x20;

var INIT_STATE = 42;
var EXTRA_STATE = 69;
var NAME_STATE = 73;
var COMMENT_STATE = 91;
var HCRC_STATE = 103;
var BUSY_STATE = 113;
var FINISH_STATE = 666;

var BS_NEED_MORE      = 1; /* block not completed, need more input or more output */
var BS_BLOCK_DONE     = 2; /* block flush performed */
var BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */
var BS_FINISH_DONE    = 4; /* finish done, accept no more input or output */

var OS_CODE = 0x03; // Unix :) . Don't detect, use this default.

function err(strm, errorCode) {
  strm.msg = msg[errorCode];
  return errorCode;
}

function rank(f) {
  return ((f) << 1) - ((f) > 4 ? 9 : 0);
}

function zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }


/* =========================================================================
 * Flush as much pending output as possible. All deflate() output goes
 * through this function so some applications may wish to modify it
 * to avoid allocating a large strm->output buffer and copying into it.
 * (See also read_buf()).
 */
function flush_pending(strm) {
  var s = strm.state;

  //_tr_flush_bits(s);
  var len = s.pending;
  if (len > strm.avail_out) {
    len = strm.avail_out;
  }
  if (len === 0) { return; }

  utils.arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out);
  strm.next_out += len;
  s.pending_out += len;
  strm.total_out += len;
  strm.avail_out -= len;
  s.pending -= len;
  if (s.pending === 0) {
    s.pending_out = 0;
  }
}


function flush_block_only(s, last) {
  trees._tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);
  s.block_start = s.strstart;
  flush_pending(s.strm);
}


function put_byte(s, b) {
  s.pending_buf[s.pending++] = b;
}


/* =========================================================================
 * Put a short in the pending buffer. The 16-bit value is put in MSB order.
 * IN assertion: the stream state is correct and there is enough room in
 * pending_buf.
 */
function putShortMSB(s, b) {
//  put_byte(s, (Byte)(b >> 8));
//  put_byte(s, (Byte)(b & 0xff));
  s.pending_buf[s.pending++] = (b >>> 8) & 0xff;
  s.pending_buf[s.pending++] = b & 0xff;
}


/* ===========================================================================
 * Read a new buffer from the current input stream, update the adler32
 * and total number of bytes read.  All deflate() input goes through
 * this function so some applications may wish to modify it to avoid
 * allocating a large strm->input buffer and copying from it.
 * (See also flush_pending()).
 */
function read_buf(strm, buf, start, size) {
  var len = strm.avail_in;

  if (len > size) { len = size; }
  if (len === 0) { return 0; }

  strm.avail_in -= len;

  // zmemcpy(buf, strm->next_in, len);
  utils.arraySet(buf, strm.input, strm.next_in, len, start);
  if (strm.state.wrap === 1) {
    strm.adler = adler32(strm.adler, buf, len, start);
  }

  else if (strm.state.wrap === 2) {
    strm.adler = crc32(strm.adler, buf, len, start);
  }

  strm.next_in += len;
  strm.total_in += len;

  return len;
}


/* ===========================================================================
 * Set match_start to the longest match starting at the given string and
 * return its length. Matches shorter or equal to prev_length are discarded,
 * in which case the result is equal to prev_length and match_start is
 * garbage.
 * IN assertions: cur_match is the head of the hash chain for the current
 *   string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1
 * OUT assertion: the match length is not greater than s->lookahead.
 */
function longest_match(s, cur_match) {
  var chain_length = s.max_chain_length;      /* max hash chain length */
  var scan = s.strstart; /* current string */
  var match;                       /* matched string */
  var len;                           /* length of current match */
  var best_len = s.prev_length;              /* best match length so far */
  var nice_match = s.nice_match;             /* stop if match long enough */
  var limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?
      s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;

  var _win = s.window; // shortcut

  var wmask = s.w_mask;
  var prev  = s.prev;

  /* Stop when cur_match becomes <= limit. To simplify the code,
   * we prevent matches with the string of window index 0.
   */

  var strend = s.strstart + MAX_MATCH;
  var scan_end1  = _win[scan + best_len - 1];
  var scan_end   = _win[scan + best_len];

  /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.
   * It is easy to get rid of this optimization if necessary.
   */
  // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, "Code too clever");

  /* Do not waste too much time if we already have a good match: */
  if (s.prev_length >= s.good_match) {
    chain_length >>= 2;
  }
  /* Do not look for matches beyond the end of the input. This is necessary
   * to make deflate deterministic.
   */
  if (nice_match > s.lookahead) { nice_match = s.lookahead; }

  // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead");

  do {
    // Assert(cur_match < s->strstart, "no future");
    match = cur_match;

    /* Skip to next match if the match length cannot increase
     * or if the match length is less than 2.  Note that the checks below
     * for insufficient lookahead only occur occasionally for performance
     * reasons.  Therefore uninitialized memory will be accessed, and
     * conditional jumps will be made that depend on those values.
     * However the length of the match is limited to the lookahead, so
     * the output of deflate is not affected by the uninitialized values.
     */

    if (_win[match + best_len]     !== scan_end  ||
        _win[match + best_len - 1] !== scan_end1 ||
        _win[match]                !== _win[scan] ||
        _win[++match]              !== _win[scan + 1]) {
      continue;
    }

    /* The check at best_len-1 can be removed because it will be made
     * again later. (This heuristic is not always a win.)
     * It is not necessary to compare scan[2] and match[2] since they
     * are always equal when the other bytes match, given that
     * the hash keys are equal and that HASH_BITS >= 8.
     */
    scan += 2;
    match++;
    // Assert(*scan == *match, "match[2]?");

    /* We check for insufficient lookahead only every 8th comparison;
     * the 256th check will be made at strstart+258.
     */
    do {
      /*jshint noempty:false*/
    } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
             scan < strend);

    // Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan");

    len = MAX_MATCH - (strend - scan);
    scan = strend - MAX_MATCH;

    if (len > best_len) {
      s.match_start = cur_match;
      best_len = len;
      if (len >= nice_match) {
        break;
      }
      scan_end1  = _win[scan + best_len - 1];
      scan_end   = _win[scan + best_len];
    }
  } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);

  if (best_len <= s.lookahead) {
    return best_len;
  }
  return s.lookahead;
}


/* ===========================================================================
 * Fill the window when the lookahead becomes insufficient.
 * Updates strstart and lookahead.
 *
 * IN assertion: lookahead < MIN_LOOKAHEAD
 * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD
 *    At least one byte has been read, or avail_in == 0; reads are
 *    performed for at least two bytes (required for the zip translate_eol
 *    option -- not supported here).
 */
function fill_window(s) {
  var _w_size = s.w_size;
  var p, n, m, more, str;

  //Assert(s->lookahead < MIN_LOOKAHEAD, "already enough lookahead");

  do {
    more = s.window_size - s.lookahead - s.strstart;

    // JS ints have 32 bit, block below not needed
    /* Deal with !@#$% 64K limit: */
    //if (sizeof(int) <= 2) {
    //    if (more == 0 && s->strstart == 0 && s->lookahead == 0) {
    //        more = wsize;
    //
    //  } else if (more == (unsigned)(-1)) {
    //        /* Very unlikely, but possible on 16 bit machine if
    //         * strstart == 0 && lookahead == 1 (input done a byte at time)
    //         */
    //        more--;
    //    }
    //}


    /* If the window is almost full and there is insufficient lookahead,
     * move the upper half to the lower one to make room in the upper half.
     */
    if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {

      utils.arraySet(s.window, s.window, _w_size, _w_size, 0);
      s.match_start -= _w_size;
      s.strstart -= _w_size;
      /* we now have strstart >= MAX_DIST */
      s.block_start -= _w_size;

      /* Slide the hash table (could be avoided with 32 bit values
       at the expense of memory usage). We slide even when level == 0
       to keep the hash table consistent if we switch back to level > 0
       later. (Using level 0 permanently is not an optimal usage of
       zlib, so we don't care about this pathological case.)
       */

      n = s.hash_size;
      p = n;
      do {
        m = s.head[--p];
        s.head[p] = (m >= _w_size ? m - _w_size : 0);
      } while (--n);

      n = _w_size;
      p = n;
      do {
        m = s.prev[--p];
        s.prev[p] = (m >= _w_size ? m - _w_size : 0);
        /* If n is not on any hash chain, prev[n] is garbage but
         * its value will never be used.
         */
      } while (--n);

      more += _w_size;
    }
    if (s.strm.avail_in === 0) {
      break;
    }

    /* If there was no sliding:
     *    strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&
     *    more == window_size - lookahead - strstart
     * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)
     * => more >= window_size - 2*WSIZE + 2
     * In the BIG_MEM or MMAP case (not yet supported),
     *   window_size == input_size + MIN_LOOKAHEAD  &&
     *   strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.
     * Otherwise, window_size == 2*WSIZE so more >= 2.
     * If there was sliding, more >= WSIZE. So in all cases, more >= 2.
     */
    //Assert(more >= 2, "more < 2");
    n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);
    s.lookahead += n;

    /* Initialize the hash value now that we have some input: */
    if (s.lookahead + s.insert >= MIN_MATCH) {
      str = s.strstart - s.insert;
      s.ins_h = s.window[str];

      /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */
      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask;
//#if MIN_MATCH != 3
//        Call update_hash() MIN_MATCH-3 more times
//#endif
      while (s.insert) {
        /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */
        s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;

        s.prev[str & s.w_mask] = s.head[s.ins_h];
        s.head[s.ins_h] = str;
        str++;
        s.insert--;
        if (s.lookahead + s.insert < MIN_MATCH) {
          break;
        }
      }
    }
    /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,
     * but this is not important since only literal bytes will be emitted.
     */

  } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);

  /* If the WIN_INIT bytes after the end of the current data have never been
   * written, then zero those bytes in order to avoid memory check reports of
   * the use of uninitialized (or uninitialised as Julian writes) bytes by
   * the longest match routines.  Update the high water mark for the next
   * time through here.  WIN_INIT is set to MAX_MATCH since the longest match
   * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.
   */
//  if (s.high_water < s.window_size) {
//    var curr = s.strstart + s.lookahead;
//    var init = 0;
//
//    if (s.high_water < curr) {
//      /* Previous high water mark below current data -- zero WIN_INIT
//       * bytes or up to end of window, whichever is less.
//       */
//      init = s.window_size - curr;
//      if (init > WIN_INIT)
//        init = WIN_INIT;
//      zmemzero(s->window + curr, (unsigned)init);
//      s->high_water = curr + init;
//    }
//    else if (s->high_water < (ulg)curr + WIN_INIT) {
//      /* High water mark at or above current data, but below current data
//       * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up
//       * to end of window, whichever is less.
//       */
//      init = (ulg)curr + WIN_INIT - s->high_water;
//      if (init > s->window_size - s->high_water)
//        init = s->window_size - s->high_water;
//      zmemzero(s->window + s->high_water, (unsigned)init);
//      s->high_water += init;
//    }
//  }
//
//  Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,
//    "not enough room for search");
}

/* ===========================================================================
 * Copy without compression as much as possible from the input stream, return
 * the current block state.
 * This function does not insert new strings in the dictionary since
 * uncompressible data is probably not useful. This function is used
 * only for the level=0 compression option.
 * NOTE: this function should be optimized to avoid extra copying from
 * window to pending_buf.
 */
function deflate_stored(s, flush) {
  /* Stored blocks are limited to 0xffff bytes, pending_buf is limited
   * to pending_buf_size, and each stored block has a 5 byte header:
   */
  var max_block_size = 0xffff;

  if (max_block_size > s.pending_buf_size - 5) {
    max_block_size = s.pending_buf_size - 5;
  }

  /* Copy as much as possible from input to output: */
  for (;;) {
    /* Fill the window as much as possible: */
    if (s.lookahead <= 1) {

      //Assert(s->strstart < s->w_size+MAX_DIST(s) ||
      //  s->block_start >= (long)s->w_size, "slide too late");
//      if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||
//        s.block_start >= s.w_size)) {
//        throw  new Error("slide too late");
//      }

      fill_window(s);
      if (s.lookahead === 0 && flush === Z_NO_FLUSH) {
        return BS_NEED_MORE;
      }

      if (s.lookahead === 0) {
        break;
      }
      /* flush the current block */
    }
    //Assert(s->block_start >= 0L, "block gone");
//    if (s.block_start < 0) throw new Error("block gone");

    s.strstart += s.lookahead;
    s.lookahead = 0;

    /* Emit a stored block if pending_buf will be full: */
    var max_start = s.block_start + max_block_size;

    if (s.strstart === 0 || s.strstart >= max_start) {
      /* strstart == 0 is possible when wraparound on 16-bit machine */
      s.lookahead = s.strstart - max_start;
      s.strstart = max_start;
      /*** FLUSH_BLOCK(s, 0); ***/
      flush_block_only(s, false);
      if (s.strm.avail_out === 0) {
        return BS_NEED_MORE;
      }
      /***/


    }
    /* Flush if we may have to slide, otherwise block_start may become
     * negative and the data will be gone:
     */
    if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) {
      /*** FLUSH_BLOCK(s, 0); ***/
      flush_block_only(s, false);
      if (s.strm.avail_out === 0) {
        return BS_NEED_MORE;
      }
      /***/
    }
  }

  s.insert = 0;

  if (flush === Z_FINISH) {
    /*** FLUSH_BLOCK(s, 1); ***/
    flush_block_only(s, true);
    if (s.strm.avail_out === 0) {
      return BS_FINISH_STARTED;
    }
    /***/
    return BS_FINISH_DONE;
  }

  if (s.strstart > s.block_start) {
    /*** FLUSH_BLOCK(s, 0); ***/
    flush_block_only(s, false);
    if (s.strm.avail_out === 0) {
      return BS_NEED_MORE;
    }
    /***/
  }

  return BS_NEED_MORE;
}

/* ===========================================================================
 * Compress as much as possible from the input stream, return the current
 * block state.
 * This function does not perform lazy evaluation of matches and inserts
 * new strings in the dictionary only for unmatched strings or for short
 * matches. It is used only for the fast compression options.
 */
function deflate_fast(s, flush) {
  var hash_head;        /* head of the hash chain */
  var bflush;           /* set if current block must be flushed */

  for (;;) {
    /* Make sure that we always have enough lookahead, except
     * at the end of the input file. We need MAX_MATCH bytes
     * for the next match, plus MIN_MATCH bytes to insert the
     * string following the next match.
     */
    if (s.lookahead < MIN_LOOKAHEAD) {
      fill_window(s);
      if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {
        return BS_NEED_MORE;
      }
      if (s.lookahead === 0) {
        break; /* flush the current block */
      }
    }

    /* Insert the string window[strstart .. strstart+2] in the
     * dictionary, and set hash_head to the head of the hash chain:
     */
    hash_head = 0/*NIL*/;
    if (s.lookahead >= MIN_MATCH) {
      /*** INSERT_STRING(s, s.strstart, hash_head); ***/
      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
      hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
      s.head[s.ins_h] = s.strstart;
      /***/
    }

    /* Find the longest match, discarding those <= prev_length.
     * At this point we have always match_length < MIN_MATCH
     */
    if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {
      /* To simplify the code, we prevent matches with the string
       * of window index 0 (in particular we have to avoid a match
       * of the string with itself at the start of the input file).
       */
      s.match_length = longest_match(s, hash_head);
      /* longest_match() sets match_start */
    }
    if (s.match_length >= MIN_MATCH) {
      // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only

      /*** _tr_tally_dist(s, s.strstart - s.match_start,
                     s.match_length - MIN_MATCH, bflush); ***/
      bflush = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);

      s.lookahead -= s.match_length;

      /* Insert new strings in the hash table only if the match length
       * is not too large. This saves time but degrades compression.
       */
      if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) {
        s.match_length--; /* string at strstart already in table */
        do {
          s.strstart++;
          /*** INSERT_STRING(s, s.strstart, hash_head); ***/
          s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
          hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
          s.head[s.ins_h] = s.strstart;
          /***/
          /* strstart never exceeds WSIZE-MAX_MATCH, so there are
           * always MIN_MATCH bytes ahead.
           */
        } while (--s.match_length !== 0);
        s.strstart++;
      } else
      {
        s.strstart += s.match_length;
        s.match_length = 0;
        s.ins_h = s.window[s.strstart];
        /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */
        s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask;

//#if MIN_MATCH != 3
//                Call UPDATE_HASH() MIN_MATCH-3 more times
//#endif
        /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not
         * matter since it will be recomputed at next deflate call.
         */
      }
    } else {
      /* No match, output a literal byte */
      //Tracevv((stderr,"%c", s.window[s.strstart]));
      /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/
      bflush = trees._tr_tally(s, 0, s.window[s.strstart]);

      s.lookahead--;
      s.strstart++;
    }
    if (bflush) {
      /*** FLUSH_BLOCK(s, 0); ***/
      flush_block_only(s, false);
      if (s.strm.avail_out === 0) {
        return BS_NEED_MORE;
      }
      /***/
    }
  }
  s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1);
  if (flush === Z_FINISH) {
    /*** FLUSH_BLOCK(s, 1); ***/
    flush_block_only(s, true);
    if (s.strm.avail_out === 0) {
      return BS_FINISH_STARTED;
    }
    /***/
    return BS_FINISH_DONE;
  }
  if (s.last_lit) {
    /*** FLUSH_BLOCK(s, 0); ***/
    flush_block_only(s, false);
    if (s.strm.avail_out === 0) {
      return BS_NEED_MORE;
    }
    /***/
  }
  return BS_BLOCK_DONE;
}

/* ===========================================================================
 * Same as above, but achieves better compression. We use a lazy
 * evaluation for matches: a match is finally adopted only if there is
 * no better match at the next window position.
 */
function deflate_slow(s, flush) {
  var hash_head;          /* head of hash chain */
  var bflush;              /* set if current block must be flushed */

  var max_insert;

  /* Process the input block. */
  for (;;) {
    /* Make sure that we always have enough lookahead, except
     * at the end of the input file. We need MAX_MATCH bytes
     * for the next match, plus MIN_MATCH bytes to insert the
     * string following the next match.
     */
    if (s.lookahead < MIN_LOOKAHEAD) {
      fill_window(s);
      if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {
        return BS_NEED_MORE;
      }
      if (s.lookahead === 0) { break; } /* flush the current block */
    }

    /* Insert the string window[strstart .. strstart+2] in the
     * dictionary, and set hash_head to the head of the hash chain:
     */
    hash_head = 0/*NIL*/;
    if (s.lookahead >= MIN_MATCH) {
      /*** INSERT_STRING(s, s.strstart, hash_head); ***/
      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
      hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
      s.head[s.ins_h] = s.strstart;
      /***/
    }

    /* Find the longest match, discarding those <= prev_length.
     */
    s.prev_length = s.match_length;
    s.prev_match = s.match_start;
    s.match_length = MIN_MATCH - 1;

    if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&
        s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {
      /* To simplify the code, we prevent matches with the string
       * of window index 0 (in particular we have to avoid a match
       * of the string with itself at the start of the input file).
       */
      s.match_length = longest_match(s, hash_head);
      /* longest_match() sets match_start */

      if (s.match_length <= 5 &&
         (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {

        /* If prev_match is also MIN_MATCH, match_start is garbage
         * but we will ignore the current match anyway.
         */
        s.match_length = MIN_MATCH - 1;
      }
    }
    /* If there was a match at the previous step and the current
     * match is not better, output the previous match:
     */
    if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {
      max_insert = s.strstart + s.lookahead - MIN_MATCH;
      /* Do not insert strings in hash table beyond this. */

      //check_match(s, s.strstart-1, s.prev_match, s.prev_length);

      /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,
                     s.prev_length - MIN_MATCH, bflush);***/
      bflush = trees._tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);
      /* Insert in hash table all strings up to the end of the match.
       * strstart-1 and strstart are already inserted. If there is not
       * enough lookahead, the last two strings are not inserted in
       * the hash table.
       */
      s.lookahead -= s.prev_length - 1;
      s.prev_length -= 2;
      do {
        if (++s.strstart <= max_insert) {
          /*** INSERT_STRING(s, s.strstart, hash_head); ***/
          s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
          hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
          s.head[s.ins_h] = s.strstart;
          /***/
        }
      } while (--s.prev_length !== 0);
      s.match_available = 0;
      s.match_length = MIN_MATCH - 1;
      s.strstart++;

      if (bflush) {
        /*** FLUSH_BLOCK(s, 0); ***/
        flush_block_only(s, false);
        if (s.strm.avail_out === 0) {
          return BS_NEED_MORE;
        }
        /***/
      }

    } else if (s.match_available) {
      /* If there was no match at the previous position, output a
       * single literal. If there was a match but the current match
       * is longer, truncate the previous match to a single literal.
       */
      //Tracevv((stderr,"%c", s->window[s->strstart-1]));
      /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/
      bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);

      if (bflush) {
        /*** FLUSH_BLOCK_ONLY(s, 0) ***/
        flush_block_only(s, false);
        /***/
      }
      s.strstart++;
      s.lookahead--;
      if (s.strm.avail_out === 0) {
        return BS_NEED_MORE;
      }
    } else {
      /* There is no previous match to compare with, wait for
       * the next step to decide.
       */
      s.match_available = 1;
      s.strstart++;
      s.lookahead--;
    }
  }
  //Assert (flush != Z_NO_FLUSH, "no flush?");
  if (s.match_available) {
    //Tracevv((stderr,"%c", s->window[s->strstart-1]));
    /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/
    bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);

    s.match_available = 0;
  }
  s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;
  if (flush === Z_FINISH) {
    /*** FLUSH_BLOCK(s, 1); ***/
    flush_block_only(s, true);
    if (s.strm.avail_out === 0) {
      return BS_FINISH_STARTED;
    }
    /***/
    return BS_FINISH_DONE;
  }
  if (s.last_lit) {
    /*** FLUSH_BLOCK(s, 0); ***/
    flush_block_only(s, false);
    if (s.strm.avail_out === 0) {
      return BS_NEED_MORE;
    }
    /***/
  }

  return BS_BLOCK_DONE;
}


/* ===========================================================================
 * For Z_RLE, simply look for runs of bytes, generate matches only of distance
 * one.  Do not maintain a hash table.  (It will be regenerated if this run of
 * deflate switches away from Z_RLE.)
 */
function deflate_rle(s, flush) {
  var bflush;            /* set if current block must be flushed */
  var prev;              /* byte at distance one to match */
  var scan, strend;      /* scan goes up to strend for length of run */

  var _win = s.window;

  for (;;) {
    /* Make sure that we always have enough lookahead, except
     * at the end of the input file. We need MAX_MATCH bytes
     * for the longest run, plus one for the unrolled loop.
     */
    if (s.lookahead <= MAX_MATCH) {
      fill_window(s);
      if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) {
        return BS_NEED_MORE;
      }
      if (s.lookahead === 0) { break; } /* flush the current block */
    }

    /* See how many times the previous byte repeats */
    s.match_length = 0;
    if (s.lookahead >= MIN_MATCH && s.strstart > 0) {
      scan = s.strstart - 1;
      prev = _win[scan];
      if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {
        strend = s.strstart + MAX_MATCH;
        do {
          /*jshint noempty:false*/
        } while (prev === _win[++scan] && prev === _win[++scan] &&
                 prev === _win[++scan] && prev === _win[++scan] &&
                 prev === _win[++scan] && prev === _win[++scan] &&
                 prev === _win[++scan] && prev === _win[++scan] &&
                 scan < strend);
        s.match_length = MAX_MATCH - (strend - scan);
        if (s.match_length > s.lookahead) {
          s.match_length = s.lookahead;
        }
      }
      //Assert(scan <= s->window+(uInt)(s->window_size-1), "wild scan");
    }

    /* Emit match if have run of MIN_MATCH or longer, else emit literal */
    if (s.match_length >= MIN_MATCH) {
      //check_match(s, s.strstart, s.strstart - 1, s.match_length);

      /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/
      bflush = trees._tr_tally(s, 1, s.match_length - MIN_MATCH);

      s.lookahead -= s.match_length;
      s.strstart += s.match_length;
      s.match_length = 0;
    } else {
      /* No match, output a literal byte */
      //Tracevv((stderr,"%c", s->window[s->strstart]));
      /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/
      bflush = trees._tr_tally(s, 0, s.window[s.strstart]);

      s.lookahead--;
      s.strstart++;
    }
    if (bflush) {
      /*** FLUSH_BLOCK(s, 0); ***/
      flush_block_only(s, false);
      if (s.strm.avail_out === 0) {
        return BS_NEED_MORE;
      }
      /***/
    }
  }
  s.insert = 0;
  if (flush === Z_FINISH) {
    /*** FLUSH_BLOCK(s, 1); ***/
    flush_block_only(s, true);
    if (s.strm.avail_out === 0) {
      return BS_FINISH_STARTED;
    }
    /***/
    return BS_FINISH_DONE;
  }
  if (s.last_lit) {
    /*** FLUSH_BLOCK(s, 0); ***/
    flush_block_only(s, false);
    if (s.strm.avail_out === 0) {
      return BS_NEED_MORE;
    }
    /***/
  }
  return BS_BLOCK_DONE;
}

/* ===========================================================================
 * For Z_HUFFMAN_ONLY, do not look for matches.  Do not maintain a hash table.
 * (It will be regenerated if this run of deflate switches away from Huffman.)
 */
function deflate_huff(s, flush) {
  var bflush;             /* set if current block must be flushed */

  for (;;) {
    /* Make sure that we have a literal to write. */
    if (s.lookahead === 0) {
      fill_window(s);
      if (s.lookahead === 0) {
        if (flush === Z_NO_FLUSH) {
          return BS_NEED_MORE;
        }
        break;      /* flush the current block */
      }
    }

    /* Output a literal byte */
    s.match_length = 0;
    //Tracevv((stderr,"%c", s->window[s->strstart]));
    /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/
    bflush = trees._tr_tally(s, 0, s.window[s.strstart]);
    s.lookahead--;
    s.strstart++;
    if (bflush) {
      /*** FLUSH_BLOCK(s, 0); ***/
      flush_block_only(s, false);
      if (s.strm.avail_out === 0) {
        return BS_NEED_MORE;
      }
      /***/
    }
  }
  s.insert = 0;
  if (flush === Z_FINISH) {
    /*** FLUSH_BLOCK(s, 1); ***/
    flush_block_only(s, true);
    if (s.strm.avail_out === 0) {
      return BS_FINISH_STARTED;
    }
    /***/
    return BS_FINISH_DONE;
  }
  if (s.last_lit) {
    /*** FLUSH_BLOCK(s, 0); ***/
    flush_block_only(s, false);
    if (s.strm.avail_out === 0) {
      return BS_NEED_MORE;
    }
    /***/
  }
  return BS_BLOCK_DONE;
}

/* Values for max_lazy_match, good_match and max_chain_length, depending on
 * the desired pack level (0..9). The values given below have been tuned to
 * exclude worst case performance for pathological files. Better values may be
 * found for specific files.
 */
function Config(good_length, max_lazy, nice_length, max_chain, func) {
  this.good_length = good_length;
  this.max_lazy = max_lazy;
  this.nice_length = nice_length;
  this.max_chain = max_chain;
  this.func = func;
}

var configuration_table;

configuration_table = [
  /*      good lazy nice chain */
  new Config(0, 0, 0, 0, deflate_stored),          /* 0 store only */
  new Config(4, 4, 8, 4, deflate_fast),            /* 1 max speed, no lazy matches */
  new Config(4, 5, 16, 8, deflate_fast),           /* 2 */
  new Config(4, 6, 32, 32, deflate_fast),          /* 3 */

  new Config(4, 4, 16, 16, deflate_slow),          /* 4 lazy matches */
  new Config(8, 16, 32, 32, deflate_slow),         /* 5 */
  new Config(8, 16, 128, 128, deflate_slow),       /* 6 */
  new Config(8, 32, 128, 256, deflate_slow),       /* 7 */
  new Config(32, 128, 258, 1024, deflate_slow),    /* 8 */
  new Config(32, 258, 258, 4096, deflate_slow)     /* 9 max compression */
];


/* ===========================================================================
 * Initialize the "longest match" routines for a new zlib stream
 */
function lm_init(s) {
  s.window_size = 2 * s.w_size;

  /*** CLEAR_HASH(s); ***/
  zero(s.head); // Fill with NIL (= 0);

  /* Set the default configuration parameters:
   */
  s.max_lazy_match = configuration_table[s.level].max_lazy;
  s.good_match = configuration_table[s.level].good_length;
  s.nice_match = configuration_table[s.level].nice_length;
  s.max_chain_length = configuration_table[s.level].max_chain;

  s.strstart = 0;
  s.block_start = 0;
  s.lookahead = 0;
  s.insert = 0;
  s.match_length = s.prev_length = MIN_MATCH - 1;
  s.match_available = 0;
  s.ins_h = 0;
}


function DeflateState() {
  this.strm = null;            /* pointer back to this zlib stream */
  this.status = 0;            /* as the name implies */
  this.pending_buf = null;      /* output still pending */
  this.pending_buf_size = 0;  /* size of pending_buf */
  this.pending_out = 0;       /* next pending byte to output to the stream */
  this.pending = 0;           /* nb of bytes in the pending buffer */
  this.wrap = 0;              /* bit 0 true for zlib, bit 1 true for gzip */
  this.gzhead = null;         /* gzip header information to write */
  this.gzindex = 0;           /* where in extra, name, or comment */
  this.method = Z_DEFLATED; /* can only be DEFLATED */
  this.last_flush = -1;   /* value of flush param for previous deflate call */

  this.w_size = 0;  /* LZ77 window size (32K by default) */
  this.w_bits = 0;  /* log2(w_size)  (8..16) */
  this.w_mask = 0;  /* w_size - 1 */

  this.window = null;
  /* Sliding window. Input bytes are read into the second half of the window,
   * and move to the first half later to keep a dictionary of at least wSize
   * bytes. With this organization, matches are limited to a distance of
   * wSize-MAX_MATCH bytes, but this ensures that IO is always
   * performed with a length multiple of the block size.
   */

  this.window_size = 0;
  /* Actual size of window: 2*wSize, except when the user input buffer
   * is directly used as sliding window.
   */

  this.prev = null;
  /* Link to older string with same hash index. To limit the size of this
   * array to 64K, this link is maintained only for the last 32K strings.
   * An index in this array is thus a window index modulo 32K.
   */

  this.head = null;   /* Heads of the hash chains or NIL. */

  this.ins_h = 0;       /* hash index of string to be inserted */
  this.hash_size = 0;   /* number of elements in hash table */
  this.hash_bits = 0;   /* log2(hash_size) */
  this.hash_mask = 0;   /* hash_size-1 */

  this.hash_shift = 0;
  /* Number of bits by which ins_h must be shifted at each input
   * step. It must be such that after MIN_MATCH steps, the oldest
   * byte no longer takes part in the hash key, that is:
   *   hash_shift * MIN_MATCH >= hash_bits
   */

  this.block_start = 0;
  /* Window position at the beginning of the current output block. Gets
   * negative when the window is moved backwards.
   */

  this.match_length = 0;      /* length of best match */
  this.prev_match = 0;        /* previous match */
  this.match_available = 0;   /* set if previous match exists */
  this.strstart = 0;          /* start of string to insert */
  this.match_start = 0;       /* start of matching string */
  this.lookahead = 0;         /* number of valid bytes ahead in window */

  this.prev_length = 0;
  /* Length of the best match at previous step. Matches not greater than this
   * are discarded. This is used in the lazy match evaluation.
   */

  this.max_chain_length = 0;
  /* To speed up deflation, hash chains are never searched beyond this
   * length.  A higher limit improves compression ratio but degrades the
   * speed.
   */

  this.max_lazy_match = 0;
  /* Attempt to find a better match only when the current match is strictly
   * smaller than this value. This mechanism is used only for compression
   * levels >= 4.
   */
  // That's alias to max_lazy_match, don't use directly
  //this.max_insert_length = 0;
  /* Insert new strings in the hash table only if the match length is not
   * greater than this length. This saves time but degrades compression.
   * max_insert_length is used only for compression levels <= 3.
   */

  this.level = 0;     /* compression level (1..9) */
  this.strategy = 0;  /* favor or force Huffman coding*/

  this.good_match = 0;
  /* Use a faster search when the previous match is longer than this */

  this.nice_match = 0; /* Stop searching when current match exceeds this */

              /* used by trees.c: */

  /* Didn't use ct_data typedef below to suppress compiler warning */

  // struct ct_data_s dyn_ltree[HEAP_SIZE];   /* literal and length tree */
  // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */
  // struct ct_data_s bl_tree[2*BL_CODES+1];  /* Huffman tree for bit lengths */

  // Use flat array of DOUBLE size, with interleaved fata,
  // because JS does not support effective
  this.dyn_ltree  = new utils.Buf16(HEAP_SIZE * 2);
  this.dyn_dtree  = new utils.Buf16((2 * D_CODES + 1) * 2);
  this.bl_tree    = new utils.Buf16((2 * BL_CODES + 1) * 2);
  zero(this.dyn_ltree);
  zero(this.dyn_dtree);
  zero(this.bl_tree);

  this.l_desc   = null;         /* desc. for literal tree */
  this.d_desc   = null;         /* desc. for distance tree */
  this.bl_desc  = null;         /* desc. for bit length tree */

  //ush bl_count[MAX_BITS+1];
  this.bl_count = new utils.Buf16(MAX_BITS + 1);
  /* number of codes at each bit length for an optimal tree */

  //int heap[2*L_CODES+1];      /* heap used to build the Huffman trees */
  this.heap = new utils.Buf16(2 * L_CODES + 1);  /* heap used to build the Huffman trees */
  zero(this.heap);

  this.heap_len = 0;               /* number of elements in the heap */
  this.heap_max = 0;               /* element of largest frequency */
  /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.
   * The same heap array is used to build all trees.
   */

  this.depth = new utils.Buf16(2 * L_CODES + 1); //uch depth[2*L_CODES+1];
  zero(this.depth);
  /* Depth of each subtree used as tie breaker for trees of equal frequency
   */

  this.l_buf = 0;          /* buffer index for literals or lengths */

  this.lit_bufsize = 0;
  /* Size of match buffer for literals/lengths.  There are 4 reasons for
   * limiting lit_bufsize to 64K:
   *   - frequencies can be kept in 16 bit counters
   *   - if compression is not successful for the first block, all input
   *     data is still in the window so we can still emit a stored block even
   *     when input comes from standard input.  (This can also be done for
   *     all blocks if lit_bufsize is not greater than 32K.)
   *   - if compression is not successful for a file smaller than 64K, we can
   *     even emit a stored file instead of a stored block (saving 5 bytes).
   *     This is applicable only for zip (not gzip or zlib).
   *   - creating new Huffman trees less frequently may not provide fast
   *     adaptation to changes in the input data statistics. (Take for
   *     example a binary file with poorly compressible code followed by
   *     a highly compressible string table.) Smaller buffer sizes give
   *     fast adaptation but have of course the overhead of transmitting
   *     trees more frequently.
   *   - I can't count above 4
   */

  this.last_lit = 0;      /* running index in l_buf */

  this.d_buf = 0;
  /* Buffer index for distances. To simplify the code, d_buf and l_buf have
   * the same number of elements. To use different lengths, an extra flag
   * array would be necessary.
   */

  this.opt_len = 0;       /* bit length of current block with optimal trees */
  this.static_len = 0;    /* bit length of current block with static trees */
  this.matches = 0;       /* number of string matches in current block */
  this.insert = 0;        /* bytes at end of window left to insert */


  this.bi_buf = 0;
  /* Output buffer. bits are inserted starting at the bottom (least
   * significant bits).
   */
  this.bi_valid = 0;
  /* Number of valid bits in bi_buf.  All bits above the last valid bit
   * are always zero.
   */

  // Used for window memory init. We safely ignore it for JS. That makes
  // sense only for pointers and memory check tools.
  //this.high_water = 0;
  /* High water mark offset in window for initialized bytes -- bytes above
   * this are set to zero in order to avoid memory check warnings when
   * longest match routines access bytes past the input.  This is then
   * updated to the new high water mark.
   */
}


function deflateResetKeep(strm) {
  var s;

  if (!strm || !strm.state) {
    return err(strm, Z_STREAM_ERROR);
  }

  strm.total_in = strm.total_out = 0;
  strm.data_type = Z_UNKNOWN;

  s = strm.state;
  s.pending = 0;
  s.pending_out = 0;

  if (s.wrap < 0) {
    s.wrap = -s.wrap;
    /* was made negative by deflate(..., Z_FINISH); */
  }
  s.status = (s.wrap ? INIT_STATE : BUSY_STATE);
  strm.adler = (s.wrap === 2) ?
    0  // crc32(0, Z_NULL, 0)
  :
    1; // adler32(0, Z_NULL, 0)
  s.last_flush = Z_NO_FLUSH;
  trees._tr_init(s);
  return Z_OK;
}


function deflateReset(strm) {
  var ret = deflateResetKeep(strm);
  if (ret === Z_OK) {
    lm_init(strm.state);
  }
  return ret;
}


function deflateSetHeader(strm, head) {
  if (!strm || !strm.state) { return Z_STREAM_ERROR; }
  if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; }
  strm.state.gzhead = head;
  return Z_OK;
}


function deflateInit2(strm, level, method, windowBits, memLevel, strategy) {
  if (!strm) { // === Z_NULL
    return Z_STREAM_ERROR;
  }
  var wrap = 1;

  if (level === Z_DEFAULT_COMPRESSION) {
    level = 6;
  }

  if (windowBits < 0) { /* suppress zlib wrapper */
    wrap = 0;
    windowBits = -windowBits;
  }

  else if (windowBits > 15) {
    wrap = 2;           /* write gzip wrapper instead */
    windowBits -= 16;
  }


  if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED ||
    windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||
    strategy < 0 || strategy > Z_FIXED) {
    return err(strm, Z_STREAM_ERROR);
  }


  if (windowBits === 8) {
    windowBits = 9;
  }
  /* until 256-byte window bug fixed */

  var s = new DeflateState();

  strm.state = s;
  s.strm = strm;

  s.wrap = wrap;
  s.gzhead = null;
  s.w_bits = windowBits;
  s.w_size = 1 << s.w_bits;
  s.w_mask = s.w_size - 1;

  s.hash_bits = memLevel + 7;
  s.hash_size = 1 << s.hash_bits;
  s.hash_mask = s.hash_size - 1;
  s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);

  s.window = new utils.Buf8(s.w_size * 2);
  s.head = new utils.Buf16(s.hash_size);
  s.prev = new utils.Buf16(s.w_size);

  // Don't need mem init magic for JS.
  //s.high_water = 0;  /* nothing written to s->window yet */

  s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */

  s.pending_buf_size = s.lit_bufsize * 4;

  //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);
  //s->pending_buf = (uchf *) overlay;
  s.pending_buf = new utils.Buf8(s.pending_buf_size);

  // It is offset from \`s.pending_buf\` (size is \`s.lit_bufsize * 2\`)
  //s->d_buf = overlay + s->lit_bufsize/sizeof(ush);
  s.d_buf = 1 * s.lit_bufsize;

  //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;
  s.l_buf = (1 + 2) * s.lit_bufsize;

  s.level = level;
  s.strategy = strategy;
  s.method = method;

  return deflateReset(strm);
}

function deflateInit(strm, level) {
  return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY);
}


function deflate(strm, flush) {
  var old_flush, s;
  var beg, val; // for gzip header write only

  if (!strm || !strm.state ||
    flush > Z_BLOCK || flush < 0) {
    return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;
  }

  s = strm.state;

  if (!strm.output ||
      (!strm.input && strm.avail_in !== 0) ||
      (s.status === FINISH_STATE && flush !== Z_FINISH)) {
    return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);
  }

  s.strm = strm; /* just in case */
  old_flush = s.last_flush;
  s.last_flush = flush;

  /* Write the header */
  if (s.status === INIT_STATE) {

    if (s.wrap === 2) { // GZIP header
      strm.adler = 0;  //crc32(0L, Z_NULL, 0);
      put_byte(s, 31);
      put_byte(s, 139);
      put_byte(s, 8);
      if (!s.gzhead) { // s->gzhead == Z_NULL
        put_byte(s, 0);
        put_byte(s, 0);
        put_byte(s, 0);
        put_byte(s, 0);
        put_byte(s, 0);
        put_byte(s, s.level === 9 ? 2 :
                    (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?
                     4 : 0));
        put_byte(s, OS_CODE);
        s.status = BUSY_STATE;
      }
      else {
        put_byte(s, (s.gzhead.text ? 1 : 0) +
                    (s.gzhead.hcrc ? 2 : 0) +
                    (!s.gzhead.extra ? 0 : 4) +
                    (!s.gzhead.name ? 0 : 8) +
                    (!s.gzhead.comment ? 0 : 16)
        );
        put_byte(s, s.gzhead.time & 0xff);
        put_byte(s, (s.gzhead.time >> 8) & 0xff);
        put_byte(s, (s.gzhead.time >> 16) & 0xff);
        put_byte(s, (s.gzhead.time >> 24) & 0xff);
        put_byte(s, s.level === 9 ? 2 :
                    (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?
                     4 : 0));
        put_byte(s, s.gzhead.os & 0xff);
        if (s.gzhead.extra && s.gzhead.extra.length) {
          put_byte(s, s.gzhead.extra.length & 0xff);
          put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);
        }
        if (s.gzhead.hcrc) {
          strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);
        }
        s.gzindex = 0;
        s.status = EXTRA_STATE;
      }
    }
    else // DEFLATE header
    {
      var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;
      var level_flags = -1;

      if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {
        level_flags = 0;
      } else if (s.level < 6) {
        level_flags = 1;
      } else if (s.level === 6) {
        level_flags = 2;
      } else {
        level_flags = 3;
      }
      header |= (level_flags << 6);
      if (s.strstart !== 0) { header |= PRESET_DICT; }
      header += 31 - (header % 31);

      s.status = BUSY_STATE;
      putShortMSB(s, header);

      /* Save the adler32 of the preset dictionary: */
      if (s.strstart !== 0) {
        putShortMSB(s, strm.adler >>> 16);
        putShortMSB(s, strm.adler & 0xffff);
      }
      strm.adler = 1; // adler32(0L, Z_NULL, 0);
    }
  }

//#ifdef GZIP
  if (s.status === EXTRA_STATE) {
    if (s.gzhead.extra/* != Z_NULL*/) {
      beg = s.pending;  /* start of bytes to update crc */

      while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {
        if (s.pending === s.pending_buf_size) {
          if (s.gzhead.hcrc && s.pending > beg) {
            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
          }
          flush_pending(strm);
          beg = s.pending;
          if (s.pending === s.pending_buf_size) {
            break;
          }
        }
        put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);
        s.gzindex++;
      }
      if (s.gzhead.hcrc && s.pending > beg) {
        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
      }
      if (s.gzindex === s.gzhead.extra.length) {
        s.gzindex = 0;
        s.status = NAME_STATE;
      }
    }
    else {
      s.status = NAME_STATE;
    }
  }
  if (s.status === NAME_STATE) {
    if (s.gzhead.name/* != Z_NULL*/) {
      beg = s.pending;  /* start of bytes to update crc */
      //int val;

      do {
        if (s.pending === s.pending_buf_size) {
          if (s.gzhead.hcrc && s.pending > beg) {
            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
          }
          flush_pending(strm);
          beg = s.pending;
          if (s.pending === s.pending_buf_size) {
            val = 1;
            break;
          }
        }
        // JS specific: little magic to add zero terminator to end of string
        if (s.gzindex < s.gzhead.name.length) {
          val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;
        } else {
          val = 0;
        }
        put_byte(s, val);
      } while (val !== 0);

      if (s.gzhead.hcrc && s.pending > beg) {
        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
      }
      if (val === 0) {
        s.gzindex = 0;
        s.status = COMMENT_STATE;
      }
    }
    else {
      s.status = COMMENT_STATE;
    }
  }
  if (s.status === COMMENT_STATE) {
    if (s.gzhead.comment/* != Z_NULL*/) {
      beg = s.pending;  /* start of bytes to update crc */
      //int val;

      do {
        if (s.pending === s.pending_buf_size) {
          if (s.gzhead.hcrc && s.pending > beg) {
            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
          }
          flush_pending(strm);
          beg = s.pending;
          if (s.pending === s.pending_buf_size) {
            val = 1;
            break;
          }
        }
        // JS specific: little magic to add zero terminator to end of string
        if (s.gzindex < s.gzhead.comment.length) {
          val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;
        } else {
          val = 0;
        }
        put_byte(s, val);
      } while (val !== 0);

      if (s.gzhead.hcrc && s.pending > beg) {
        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
      }
      if (val === 0) {
        s.status = HCRC_STATE;
      }
    }
    else {
      s.status = HCRC_STATE;
    }
  }
  if (s.status === HCRC_STATE) {
    if (s.gzhead.hcrc) {
      if (s.pending + 2 > s.pending_buf_size) {
        flush_pending(strm);
      }
      if (s.pending + 2 <= s.pending_buf_size) {
        put_byte(s, strm.adler & 0xff);
        put_byte(s, (strm.adler >> 8) & 0xff);
        strm.adler = 0; //crc32(0L, Z_NULL, 0);
        s.status = BUSY_STATE;
      }
    }
    else {
      s.status = BUSY_STATE;
    }
  }
//#endif

  /* Flush as much pending output as possible */
  if (s.pending !== 0) {
    flush_pending(strm);
    if (strm.avail_out === 0) {
      /* Since avail_out is 0, deflate will be called again with
       * more output space, but possibly with both pending and
       * avail_in equal to zero. There won't be anything to do,
       * but this is not an error situation so make sure we
       * return OK instead of BUF_ERROR at next call of deflate:
       */
      s.last_flush = -1;
      return Z_OK;
    }

    /* Make sure there is something to do and avoid duplicate consecutive
     * flushes. For repeated and useless calls with Z_FINISH, we keep
     * returning Z_STREAM_END instead of Z_BUF_ERROR.
     */
  } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&
    flush !== Z_FINISH) {
    return err(strm, Z_BUF_ERROR);
  }

  /* User must not provide more input after the first FINISH: */
  if (s.status === FINISH_STATE && strm.avail_in !== 0) {
    return err(strm, Z_BUF_ERROR);
  }

  /* Start a new block or continue the current one.
   */
  if (strm.avail_in !== 0 || s.lookahead !== 0 ||
    (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {
    var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :
      (s.strategy === Z_RLE ? deflate_rle(s, flush) :
        configuration_table[s.level].func(s, flush));

    if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {
      s.status = FINISH_STATE;
    }
    if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {
      if (strm.avail_out === 0) {
        s.last_flush = -1;
        /* avoid BUF_ERROR next call, see above */
      }
      return Z_OK;
      /* If flush != Z_NO_FLUSH && avail_out == 0, the next call
       * of deflate should use the same flush parameter to make sure
       * that the flush is complete. So we don't have to output an
       * empty block here, this will be done at next call. This also
       * ensures that for a very small output buffer, we emit at most
       * one empty block.
       */
    }
    if (bstate === BS_BLOCK_DONE) {
      if (flush === Z_PARTIAL_FLUSH) {
        trees._tr_align(s);
      }
      else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */

        trees._tr_stored_block(s, 0, 0, false);
        /* For a full flush, this empty block will be recognized
         * as a special marker by inflate_sync().
         */
        if (flush === Z_FULL_FLUSH) {
          /*** CLEAR_HASH(s); ***/             /* forget history */
          zero(s.head); // Fill with NIL (= 0);

          if (s.lookahead === 0) {
            s.strstart = 0;
            s.block_start = 0;
            s.insert = 0;
          }
        }
      }
      flush_pending(strm);
      if (strm.avail_out === 0) {
        s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */
        return Z_OK;
      }
    }
  }
  //Assert(strm->avail_out > 0, "bug2");
  //if (strm.avail_out <= 0) { throw new Error("bug2");}

  if (flush !== Z_FINISH) { return Z_OK; }
  if (s.wrap <= 0) { return Z_STREAM_END; }

  /* Write the trailer */
  if (s.wrap === 2) {
    put_byte(s, strm.adler & 0xff);
    put_byte(s, (strm.adler >> 8) & 0xff);
    put_byte(s, (strm.adler >> 16) & 0xff);
    put_byte(s, (strm.adler >> 24) & 0xff);
    put_byte(s, strm.total_in & 0xff);
    put_byte(s, (strm.total_in >> 8) & 0xff);
    put_byte(s, (strm.total_in >> 16) & 0xff);
    put_byte(s, (strm.total_in >> 24) & 0xff);
  }
  else
  {
    putShortMSB(s, strm.adler >>> 16);
    putShortMSB(s, strm.adler & 0xffff);
  }

  flush_pending(strm);
  /* If avail_out is zero, the application will call deflate again
   * to flush the rest.
   */
  if (s.wrap > 0) { s.wrap = -s.wrap; }
  /* write the trailer only once! */
  return s.pending !== 0 ? Z_OK : Z_STREAM_END;
}

function deflateEnd(strm) {
  var status;

  if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {
    return Z_STREAM_ERROR;
  }

  status = strm.state.status;
  if (status !== INIT_STATE &&
    status !== EXTRA_STATE &&
    status !== NAME_STATE &&
    status !== COMMENT_STATE &&
    status !== HCRC_STATE &&
    status !== BUSY_STATE &&
    status !== FINISH_STATE
  ) {
    return err(strm, Z_STREAM_ERROR);
  }

  strm.state = null;

  return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;
}


/* =========================================================================
 * Initializes the compression dictionary from the given byte
 * sequence without producing any compressed output.
 */
function deflateSetDictionary(strm, dictionary) {
  var dictLength = dictionary.length;

  var s;
  var str, n;
  var wrap;
  var avail;
  var next;
  var input;
  var tmpDict;

  if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {
    return Z_STREAM_ERROR;
  }

  s = strm.state;
  wrap = s.wrap;

  if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {
    return Z_STREAM_ERROR;
  }

  /* when using zlib wrappers, compute Adler-32 for provided dictionary */
  if (wrap === 1) {
    /* adler32(strm->adler, dictionary, dictLength); */
    strm.adler = adler32(strm.adler, dictionary, dictLength, 0);
  }

  s.wrap = 0;   /* avoid computing Adler-32 in read_buf */

  /* if dictionary would fill window, just replace the history */
  if (dictLength >= s.w_size) {
    if (wrap === 0) {            /* already empty otherwise */
      /*** CLEAR_HASH(s); ***/
      zero(s.head); // Fill with NIL (= 0);
      s.strstart = 0;
      s.block_start = 0;
      s.insert = 0;
    }
    /* use the tail */
    // dictionary = dictionary.slice(dictLength - s.w_size);
    tmpDict = new utils.Buf8(s.w_size);
    utils.arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0);
    dictionary = tmpDict;
    dictLength = s.w_size;
  }
  /* insert dictionary into window and hash */
  avail = strm.avail_in;
  next = strm.next_in;
  input = strm.input;
  strm.avail_in = dictLength;
  strm.next_in = 0;
  strm.input = dictionary;
  fill_window(s);
  while (s.lookahead >= MIN_MATCH) {
    str = s.strstart;
    n = s.lookahead - (MIN_MATCH - 1);
    do {
      /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */
      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;

      s.prev[str & s.w_mask] = s.head[s.ins_h];

      s.head[s.ins_h] = str;
      str++;
    } while (--n);
    s.strstart = str;
    s.lookahead = MIN_MATCH - 1;
    fill_window(s);
  }
  s.strstart += s.lookahead;
  s.block_start = s.strstart;
  s.insert = s.lookahead;
  s.lookahead = 0;
  s.match_length = s.prev_length = MIN_MATCH - 1;
  s.match_available = 0;
  strm.next_in = next;
  strm.input = input;
  strm.avail_in = avail;
  s.wrap = wrap;
  return Z_OK;
}


exports.deflateInit = deflateInit;
exports.deflateInit2 = deflateInit2;
exports.deflateReset = deflateReset;
exports.deflateResetKeep = deflateResetKeep;
exports.deflateSetHeader = deflateSetHeader;
exports.deflate = deflate;
exports.deflateEnd = deflateEnd;
exports.deflateSetDictionary = deflateSetDictionary;
exports.deflateInfo = 'pako deflate (from Nodeca project)';

/* Not implemented
exports.deflateBound = deflateBound;
exports.deflateCopy = deflateCopy;
exports.deflateParams = deflateParams;
exports.deflatePending = deflatePending;
exports.deflatePrime = deflatePrime;
exports.deflateTune = deflateTune;
*/
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 97580 characters]
//# sourceURL=webpack-internal:///../../../node_modules/pako/lib/zlib/deflate.js
`);
              }
            ),
            /***/
            "../../../node_modules/pako/lib/zlib/gzheader.js": (
              /*!*******************************************************!*\
                !*** ../../../node_modules/pako/lib/zlib/gzheader.js ***!
                \*******************************************************/
              /***/
              (module) => {
                "use strict";
                eval("\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction GZheader() {\n  /* true if compressed data believed to be text */\n  this.text       = 0;\n  /* modification time */\n  this.time       = 0;\n  /* extra flags (not used when writing a gzip file) */\n  this.xflags     = 0;\n  /* operating system */\n  this.os         = 0;\n  /* pointer to extra field or Z_NULL if none */\n  this.extra      = null;\n  /* extra field length (valid if extra != Z_NULL) */\n  this.extra_len  = 0; // Actually, we don't need it in JS,\n                       // but leave for few code modifications\n\n  //\n  // Setup limits is not necessary because in js we should not preallocate memory\n  // for inflate use constant limit in 65536 bytes\n  //\n\n  /* space at extra (only when reading header) */\n  // this.extra_max  = 0;\n  /* pointer to zero-terminated file name or Z_NULL */\n  this.name       = '';\n  /* space at name (only when reading header) */\n  // this.name_max   = 0;\n  /* pointer to zero-terminated comment or Z_NULL */\n  this.comment    = '';\n  /* space at comment (only when reading header) */\n  // this.comm_max   = 0;\n  /* true if there was or will be a header crc */\n  this.hcrc       = 0;\n  /* true when done reading gzip header (not used when writing a gzip file) */\n  this.done       = false;\n}\n\nmodule.exports = GZheader;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bha28vbGliL3psaWIvZ3poZWFkZXIuanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhEQUE4RDtBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcGFrby9saWIvemxpYi9nemhlYWRlci5qcz8zZGZhIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuLy8gKEMpIDE5OTUtMjAxMyBKZWFuLWxvdXAgR2FpbGx5IGFuZCBNYXJrIEFkbGVyXG4vLyAoQykgMjAxNC0yMDE3IFZpdGFseSBQdXpyaW4gYW5kIEFuZHJleSBUdXBpdHNpblxuLy9cbi8vIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgJ2FzLWlzJywgd2l0aG91dCBhbnkgZXhwcmVzcyBvciBpbXBsaWVkXG4vLyB3YXJyYW50eS4gSW4gbm8gZXZlbnQgd2lsbCB0aGUgYXV0aG9ycyBiZSBoZWxkIGxpYWJsZSBmb3IgYW55IGRhbWFnZXNcbi8vIGFyaXNpbmcgZnJvbSB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGFueW9uZSB0byB1c2UgdGhpcyBzb2Z0d2FyZSBmb3IgYW55IHB1cnBvc2UsXG4vLyBpbmNsdWRpbmcgY29tbWVyY2lhbCBhcHBsaWNhdGlvbnMsIGFuZCB0byBhbHRlciBpdCBhbmQgcmVkaXN0cmlidXRlIGl0XG4vLyBmcmVlbHksIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnM6XG4vL1xuLy8gMS4gVGhlIG9yaWdpbiBvZiB0aGlzIHNvZnR3YXJlIG11c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkOyB5b3UgbXVzdCBub3Rcbi8vICAgY2xhaW0gdGhhdCB5b3Ugd3JvdGUgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLiBJZiB5b3UgdXNlIHRoaXMgc29mdHdhcmVcbi8vICAgaW4gYSBwcm9kdWN0LCBhbiBhY2tub3dsZWRnbWVudCBpbiB0aGUgcHJvZHVjdCBkb2N1bWVudGF0aW9uIHdvdWxkIGJlXG4vLyAgIGFwcHJlY2lhdGVkIGJ1dCBpcyBub3QgcmVxdWlyZWQuXG4vLyAyLiBBbHRlcmVkIHNvdXJjZSB2ZXJzaW9ucyBtdXN0IGJlIHBsYWlubHkgbWFya2VkIGFzIHN1Y2gsIGFuZCBtdXN0IG5vdCBiZVxuLy8gICBtaXNyZXByZXNlbnRlZCBhcyBiZWluZyB0aGUgb3JpZ2luYWwgc29mdHdhcmUuXG4vLyAzLiBUaGlzIG5vdGljZSBtYXkgbm90IGJlIHJlbW92ZWQgb3IgYWx0ZXJlZCBmcm9tIGFueSBzb3VyY2UgZGlzdHJpYnV0aW9uLlxuXG5mdW5jdGlvbiBHWmhlYWRlcigpIHtcbiAgLyogdHJ1ZSBpZiBjb21wcmVzc2VkIGRhdGEgYmVsaWV2ZWQgdG8gYmUgdGV4dCAqL1xuICB0aGlzLnRleHQgICAgICAgPSAwO1xuICAvKiBtb2RpZmljYXRpb24gdGltZSAqL1xuICB0aGlzLnRpbWUgICAgICAgPSAwO1xuICAvKiBleHRyYSBmbGFncyAobm90IHVzZWQgd2hlbiB3cml0aW5nIGEgZ3ppcCBmaWxlKSAqL1xuICB0aGlzLnhmbGFncyAgICAgPSAwO1xuICAvKiBvcGVyYXRpbmcgc3lzdGVtICovXG4gIHRoaXMub3MgICAgICAgICA9IDA7XG4gIC8qIHBvaW50ZXIgdG8gZXh0cmEgZmllbGQgb3IgWl9OVUxMIGlmIG5vbmUgKi9cbiAgdGhpcy5leHRyYSAgICAgID0gbnVsbDtcbiAgLyogZXh0cmEgZmllbGQgbGVuZ3RoICh2YWxpZCBpZiBleHRyYSAhPSBaX05VTEwpICovXG4gIHRoaXMuZXh0cmFfbGVuICA9IDA7IC8vIEFjdHVhbGx5LCB3ZSBkb24ndCBuZWVkIGl0IGluIEpTLFxuICAgICAgICAgICAgICAgICAgICAgICAvLyBidXQgbGVhdmUgZm9yIGZldyBjb2RlIG1vZGlmaWNhdGlvbnNcblxuICAvL1xuICAvLyBTZXR1cCBsaW1pdHMgaXMgbm90IG5lY2Vzc2FyeSBiZWNhdXNlIGluIGpzIHdlIHNob3VsZCBub3QgcHJlYWxsb2NhdGUgbWVtb3J5XG4gIC8vIGZvciBpbmZsYXRlIHVzZSBjb25zdGFudCBsaW1pdCBpbiA2NTUzNiBieXRlc1xuICAvL1xuXG4gIC8qIHNwYWNlIGF0IGV4dHJhIChvbmx5IHdoZW4gcmVhZGluZyBoZWFkZXIpICovXG4gIC8vIHRoaXMuZXh0cmFfbWF4ICA9IDA7XG4gIC8qIHBvaW50ZXIgdG8gemVyby10ZXJtaW5hdGVkIGZpbGUgbmFtZSBvciBaX05VTEwgKi9cbiAgdGhpcy5uYW1lICAgICAgID0gJyc7XG4gIC8qIHNwYWNlIGF0IG5hbWUgKG9ubHkgd2hlbiByZWFkaW5nIGhlYWRlcikgKi9cbiAgLy8gdGhpcy5uYW1lX21heCAgID0gMDtcbiAgLyogcG9pbnRlciB0byB6ZXJvLXRlcm1pbmF0ZWQgY29tbWVudCBvciBaX05VTEwgKi9cbiAgdGhpcy5jb21tZW50ICAgID0gJyc7XG4gIC8qIHNwYWNlIGF0IGNvbW1lbnQgKG9ubHkgd2hlbiByZWFkaW5nIGhlYWRlcikgKi9cbiAgLy8gdGhpcy5jb21tX21heCAgID0gMDtcbiAgLyogdHJ1ZSBpZiB0aGVyZSB3YXMgb3Igd2lsbCBiZSBhIGhlYWRlciBjcmMgKi9cbiAgdGhpcy5oY3JjICAgICAgID0gMDtcbiAgLyogdHJ1ZSB3aGVuIGRvbmUgcmVhZGluZyBnemlwIGhlYWRlciAobm90IHVzZWQgd2hlbiB3cml0aW5nIGEgZ3ppcCBmaWxlKSAqL1xuICB0aGlzLmRvbmUgICAgICAgPSBmYWxzZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBHWmhlYWRlcjtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/pako/lib/zlib/gzheader.js\n");
              }
            ),
            /***/
            "../../../node_modules/pako/lib/zlib/inffast.js": (
              /*!******************************************************!*\
                !*** ../../../node_modules/pako/lib/zlib/inffast.js ***!
                \******************************************************/
              /***/
              (module) => {
                "use strict";
                eval(`

// (C) 1995-2013 Jean-loup Gailly and Mark Adler
// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
//   claim that you wrote the original software. If you use this software
//   in a product, an acknowledgment in the product documentation would be
//   appreciated but is not required.
// 2. Altered source versions must be plainly marked as such, and must not be
//   misrepresented as being the original software.
// 3. This notice may not be removed or altered from any source distribution.

// See state defs from inflate.js
var BAD = 30;       /* got a data error -- remain here until reset */
var TYPE = 12;      /* i: waiting for type bits, including last-flag bit */

/*
   Decode literal, length, and distance codes and write out the resulting
   literal and match bytes until either not enough input or output is
   available, an end-of-block is encountered, or a data error is encountered.
   When large enough input and output buffers are supplied to inflate(), for
   example, a 16K input buffer and a 64K output buffer, more than 95% of the
   inflate execution time is spent in this routine.

   Entry assumptions:

        state.mode === LEN
        strm.avail_in >= 6
        strm.avail_out >= 258
        start >= strm.avail_out
        state.bits < 8

   On return, state.mode is one of:

        LEN -- ran out of enough output space or enough available input
        TYPE -- reached end of block code, inflate() to interpret next block
        BAD -- error in block data

   Notes:

    - The maximum input bits used by a length/distance pair is 15 bits for the
      length code, 5 bits for the length extra, 15 bits for the distance code,
      and 13 bits for the distance extra.  This totals 48 bits, or six bytes.
      Therefore if strm.avail_in >= 6, then there is enough input to avoid
      checking for available input while decoding.

    - The maximum bytes that a single length/distance pair can output is 258
      bytes, which is the maximum length that can be coded.  inflate_fast()
      requires strm.avail_out >= 258 for each loop to avoid checking for
      output space.
 */
module.exports = function inflate_fast(strm, start) {
  var state;
  var _in;                    /* local strm.input */
  var last;                   /* have enough input while in < last */
  var _out;                   /* local strm.output */
  var beg;                    /* inflate()'s initial strm.output */
  var end;                    /* while out < end, enough space available */
//#ifdef INFLATE_STRICT
  var dmax;                   /* maximum distance from zlib header */
//#endif
  var wsize;                  /* window size or zero if not using window */
  var whave;                  /* valid bytes in the window */
  var wnext;                  /* window write index */
  // Use \`s_window\` instead \`window\`, avoid conflict with instrumentation tools
  var s_window;               /* allocated sliding window, if wsize != 0 */
  var hold;                   /* local strm.hold */
  var bits;                   /* local strm.bits */
  var lcode;                  /* local strm.lencode */
  var dcode;                  /* local strm.distcode */
  var lmask;                  /* mask for first level of length codes */
  var dmask;                  /* mask for first level of distance codes */
  var here;                   /* retrieved table entry */
  var op;                     /* code bits, operation, extra bits, or */
                              /*  window position, window bytes to copy */
  var len;                    /* match length, unused bytes */
  var dist;                   /* match distance */
  var from;                   /* where to copy match from */
  var from_source;


  var input, output; // JS specific, because we have no pointers

  /* copy state to local variables */
  state = strm.state;
  //here = state.here;
  _in = strm.next_in;
  input = strm.input;
  last = _in + (strm.avail_in - 5);
  _out = strm.next_out;
  output = strm.output;
  beg = _out - (start - strm.avail_out);
  end = _out + (strm.avail_out - 257);
//#ifdef INFLATE_STRICT
  dmax = state.dmax;
//#endif
  wsize = state.wsize;
  whave = state.whave;
  wnext = state.wnext;
  s_window = state.window;
  hold = state.hold;
  bits = state.bits;
  lcode = state.lencode;
  dcode = state.distcode;
  lmask = (1 << state.lenbits) - 1;
  dmask = (1 << state.distbits) - 1;


  /* decode literals and length/distances until end-of-block or not enough
     input data or output space */

  top:
  do {
    if (bits < 15) {
      hold += input[_in++] << bits;
      bits += 8;
      hold += input[_in++] << bits;
      bits += 8;
    }

    here = lcode[hold & lmask];

    dolen:
    for (;;) { // Goto emulation
      op = here >>> 24/*here.bits*/;
      hold >>>= op;
      bits -= op;
      op = (here >>> 16) & 0xff/*here.op*/;
      if (op === 0) {                          /* literal */
        //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?
        //        "inflate:         literal '%c'\\n" :
        //        "inflate:         literal 0x%02x\\n", here.val));
        output[_out++] = here & 0xffff/*here.val*/;
      }
      else if (op & 16) {                     /* length base */
        len = here & 0xffff/*here.val*/;
        op &= 15;                           /* number of extra bits */
        if (op) {
          if (bits < op) {
            hold += input[_in++] << bits;
            bits += 8;
          }
          len += hold & ((1 << op) - 1);
          hold >>>= op;
          bits -= op;
        }
        //Tracevv((stderr, "inflate:         length %u\\n", len));
        if (bits < 15) {
          hold += input[_in++] << bits;
          bits += 8;
          hold += input[_in++] << bits;
          bits += 8;
        }
        here = dcode[hold & dmask];

        dodist:
        for (;;) { // goto emulation
          op = here >>> 24/*here.bits*/;
          hold >>>= op;
          bits -= op;
          op = (here >>> 16) & 0xff/*here.op*/;

          if (op & 16) {                      /* distance base */
            dist = here & 0xffff/*here.val*/;
            op &= 15;                       /* number of extra bits */
            if (bits < op) {
              hold += input[_in++] << bits;
              bits += 8;
              if (bits < op) {
                hold += input[_in++] << bits;
                bits += 8;
              }
            }
            dist += hold & ((1 << op) - 1);
//#ifdef INFLATE_STRICT
            if (dist > dmax) {
              strm.msg = 'invalid distance too far back';
              state.mode = BAD;
              break top;
            }
//#endif
            hold >>>= op;
            bits -= op;
            //Tracevv((stderr, "inflate:         distance %u\\n", dist));
            op = _out - beg;                /* max distance in output */
            if (dist > op) {                /* see if copy from window */
              op = dist - op;               /* distance back in window */
              if (op > whave) {
                if (state.sane) {
                  strm.msg = 'invalid distance too far back';
                  state.mode = BAD;
                  break top;
                }

// (!) This block is disabled in zlib defaults,
// don't enable it for binary compatibility
//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR
//                if (len <= op - whave) {
//                  do {
//                    output[_out++] = 0;
//                  } while (--len);
//                  continue top;
//                }
//                len -= op - whave;
//                do {
//                  output[_out++] = 0;
//                } while (--op > whave);
//                if (op === 0) {
//                  from = _out - dist;
//                  do {
//                    output[_out++] = output[from++];
//                  } while (--len);
//                  continue top;
//                }
//#endif
              }
              from = 0; // window index
              from_source = s_window;
              if (wnext === 0) {           /* very common case */
                from += wsize - op;
                if (op < len) {         /* some from window */
                  len -= op;
                  do {
                    output[_out++] = s_window[from++];
                  } while (--op);
                  from = _out - dist;  /* rest from output */
                  from_source = output;
                }
              }
              else if (wnext < op) {      /* wrap around window */
                from += wsize + wnext - op;
                op -= wnext;
                if (op < len) {         /* some from end of window */
                  len -= op;
                  do {
                    output[_out++] = s_window[from++];
                  } while (--op);
                  from = 0;
                  if (wnext < len) {  /* some from start of window */
                    op = wnext;
                    len -= op;
                    do {
                      output[_out++] = s_window[from++];
                    } while (--op);
                    from = _out - dist;      /* rest from output */
                    from_source = output;
                  }
                }
              }
              else {                      /* contiguous in window */
                from += wnext - op;
                if (op < len) {         /* some from window */
                  len -= op;
                  do {
                    output[_out++] = s_window[from++];
                  } while (--op);
                  from = _out - dist;  /* rest from output */
                  from_source = output;
                }
              }
              while (len > 2) {
                output[_out++] = from_source[from++];
                output[_out++] = from_source[from++];
                output[_out++] = from_source[from++];
                len -= 3;
              }
              if (len) {
                output[_out++] = from_source[from++];
                if (len > 1) {
                  output[_out++] = from_source[from++];
                }
              }
            }
            else {
              from = _out - dist;          /* copy direct from output */
              do {                        /* minimum length is three */
                output[_out++] = output[from++];
                output[_out++] = output[from++];
                output[_out++] = output[from++];
                len -= 3;
              } while (len > 2);
              if (len) {
                output[_out++] = output[from++];
                if (len > 1) {
                  output[_out++] = output[from++];
                }
              }
            }
          }
          else if ((op & 64) === 0) {          /* 2nd level distance code */
            here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];
            continue dodist;
          }
          else {
            strm.msg = 'invalid distance code';
            state.mode = BAD;
            break top;
          }

          break; // need to emulate goto via "continue"
        }
      }
      else if ((op & 64) === 0) {              /* 2nd level length code */
        here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];
        continue dolen;
      }
      else if (op & 32) {                     /* end-of-block */
        //Tracevv((stderr, "inflate:         end of block\\n"));
        state.mode = TYPE;
        break top;
      }
      else {
        strm.msg = 'invalid literal/length code';
        state.mode = BAD;
        break top;
      }

      break; // need to emulate goto via "continue"
    }
  } while (_in < last && _out < end);

  /* return unused bytes (on entry, bits < 8, so in won't go too far back) */
  len = bits >> 3;
  _in -= len;
  bits -= len << 3;
  hold &= (1 << bits) - 1;

  /* update state and return */
  strm.next_in = _in;
  strm.next_out = _out;
  strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));
  strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));
  state.hold = hold;
  state.bits = bits;
  return;
};
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 20484 characters]
//# sourceURL=webpack-internal:///../../../node_modules/pako/lib/zlib/inffast.js
`);
              }
            ),
            /***/
            "../../../node_modules/pako/lib/zlib/inflate.js": (
              /*!******************************************************!*\
                !*** ../../../node_modules/pako/lib/zlib/inflate.js ***!
                \******************************************************/
              /***/
              (__unused_webpack_module, exports, __webpack_require__) => {
                "use strict";
                eval(`

// (C) 1995-2013 Jean-loup Gailly and Mark Adler
// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
//   claim that you wrote the original software. If you use this software
//   in a product, an acknowledgment in the product documentation would be
//   appreciated but is not required.
// 2. Altered source versions must be plainly marked as such, and must not be
//   misrepresented as being the original software.
// 3. This notice may not be removed or altered from any source distribution.

var utils         = __webpack_require__(/*! ../utils/common */ "../../../node_modules/pako/lib/utils/common.js");
var adler32       = __webpack_require__(/*! ./adler32 */ "../../../node_modules/pako/lib/zlib/adler32.js");
var crc32         = __webpack_require__(/*! ./crc32 */ "../../../node_modules/pako/lib/zlib/crc32.js");
var inflate_fast  = __webpack_require__(/*! ./inffast */ "../../../node_modules/pako/lib/zlib/inffast.js");
var inflate_table = __webpack_require__(/*! ./inftrees */ "../../../node_modules/pako/lib/zlib/inftrees.js");

var CODES = 0;
var LENS = 1;
var DISTS = 2;

/* Public constants ==========================================================*/
/* ===========================================================================*/


/* Allowed flush values; see deflate() and inflate() below for details */
//var Z_NO_FLUSH      = 0;
//var Z_PARTIAL_FLUSH = 1;
//var Z_SYNC_FLUSH    = 2;
//var Z_FULL_FLUSH    = 3;
var Z_FINISH        = 4;
var Z_BLOCK         = 5;
var Z_TREES         = 6;


/* Return codes for the compression/decompression functions. Negative values
 * are errors, positive values are used for special but normal events.
 */
var Z_OK            = 0;
var Z_STREAM_END    = 1;
var Z_NEED_DICT     = 2;
//var Z_ERRNO         = -1;
var Z_STREAM_ERROR  = -2;
var Z_DATA_ERROR    = -3;
var Z_MEM_ERROR     = -4;
var Z_BUF_ERROR     = -5;
//var Z_VERSION_ERROR = -6;

/* The deflate compression method */
var Z_DEFLATED  = 8;


/* STATES ====================================================================*/
/* ===========================================================================*/


var    HEAD = 1;       /* i: waiting for magic header */
var    FLAGS = 2;      /* i: waiting for method and flags (gzip) */
var    TIME = 3;       /* i: waiting for modification time (gzip) */
var    OS = 4;         /* i: waiting for extra flags and operating system (gzip) */
var    EXLEN = 5;      /* i: waiting for extra length (gzip) */
var    EXTRA = 6;      /* i: waiting for extra bytes (gzip) */
var    NAME = 7;       /* i: waiting for end of file name (gzip) */
var    COMMENT = 8;    /* i: waiting for end of comment (gzip) */
var    HCRC = 9;       /* i: waiting for header crc (gzip) */
var    DICTID = 10;    /* i: waiting for dictionary check value */
var    DICT = 11;      /* waiting for inflateSetDictionary() call */
var        TYPE = 12;      /* i: waiting for type bits, including last-flag bit */
var        TYPEDO = 13;    /* i: same, but skip check to exit inflate on new block */
var        STORED = 14;    /* i: waiting for stored size (length and complement) */
var        COPY_ = 15;     /* i/o: same as COPY below, but only first time in */
var        COPY = 16;      /* i/o: waiting for input or output to copy stored block */
var        TABLE = 17;     /* i: waiting for dynamic block table lengths */
var        LENLENS = 18;   /* i: waiting for code length code lengths */
var        CODELENS = 19;  /* i: waiting for length/lit and distance code lengths */
var            LEN_ = 20;      /* i: same as LEN below, but only first time in */
var            LEN = 21;       /* i: waiting for length/lit/eob code */
var            LENEXT = 22;    /* i: waiting for length extra bits */
var            DIST = 23;      /* i: waiting for distance code */
var            DISTEXT = 24;   /* i: waiting for distance extra bits */
var            MATCH = 25;     /* o: waiting for output space to copy string */
var            LIT = 26;       /* o: waiting for output space to write literal */
var    CHECK = 27;     /* i: waiting for 32-bit check value */
var    LENGTH = 28;    /* i: waiting for 32-bit length (gzip) */
var    DONE = 29;      /* finished check, done -- remain here until reset */
var    BAD = 30;       /* got a data error -- remain here until reset */
var    MEM = 31;       /* got an inflate() memory error -- remain here until reset */
var    SYNC = 32;      /* looking for synchronization bytes to restart inflate() */

/* ===========================================================================*/



var ENOUGH_LENS = 852;
var ENOUGH_DISTS = 592;
//var ENOUGH =  (ENOUGH_LENS+ENOUGH_DISTS);

var MAX_WBITS = 15;
/* 32K LZ77 window */
var DEF_WBITS = MAX_WBITS;


function zswap32(q) {
  return  (((q >>> 24) & 0xff) +
          ((q >>> 8) & 0xff00) +
          ((q & 0xff00) << 8) +
          ((q & 0xff) << 24));
}


function InflateState() {
  this.mode = 0;             /* current inflate mode */
  this.last = false;          /* true if processing last block */
  this.wrap = 0;              /* bit 0 true for zlib, bit 1 true for gzip */
  this.havedict = false;      /* true if dictionary provided */
  this.flags = 0;             /* gzip header method and flags (0 if zlib) */
  this.dmax = 0;              /* zlib header max distance (INFLATE_STRICT) */
  this.check = 0;             /* protected copy of check value */
  this.total = 0;             /* protected copy of output count */
  // TODO: may be {}
  this.head = null;           /* where to save gzip header information */

  /* sliding window */
  this.wbits = 0;             /* log base 2 of requested window size */
  this.wsize = 0;             /* window size or zero if not using window */
  this.whave = 0;             /* valid bytes in the window */
  this.wnext = 0;             /* window write index */
  this.window = null;         /* allocated sliding window, if needed */

  /* bit accumulator */
  this.hold = 0;              /* input bit accumulator */
  this.bits = 0;              /* number of bits in "in" */

  /* for string and stored block copying */
  this.length = 0;            /* literal or length of data to copy */
  this.offset = 0;            /* distance back to copy string from */

  /* for table and code decoding */
  this.extra = 0;             /* extra bits needed */

  /* fixed and dynamic code tables */
  this.lencode = null;          /* starting table for length/literal codes */
  this.distcode = null;         /* starting table for distance codes */
  this.lenbits = 0;           /* index bits for lencode */
  this.distbits = 0;          /* index bits for distcode */

  /* dynamic table building */
  this.ncode = 0;             /* number of code length code lengths */
  this.nlen = 0;              /* number of length code lengths */
  this.ndist = 0;             /* number of distance code lengths */
  this.have = 0;              /* number of code lengths in lens[] */
  this.next = null;              /* next available space in codes[] */

  this.lens = new utils.Buf16(320); /* temporary storage for code lengths */
  this.work = new utils.Buf16(288); /* work area for code table building */

  /*
   because we don't have pointers in js, we use lencode and distcode directly
   as buffers so we don't need codes
  */
  //this.codes = new utils.Buf32(ENOUGH);       /* space for code tables */
  this.lendyn = null;              /* dynamic table for length/literal codes (JS specific) */
  this.distdyn = null;             /* dynamic table for distance codes (JS specific) */
  this.sane = 0;                   /* if false, allow invalid distance too far */
  this.back = 0;                   /* bits back of last unprocessed length/lit */
  this.was = 0;                    /* initial length of match */
}

function inflateResetKeep(strm) {
  var state;

  if (!strm || !strm.state) { return Z_STREAM_ERROR; }
  state = strm.state;
  strm.total_in = strm.total_out = state.total = 0;
  strm.msg = ''; /*Z_NULL*/
  if (state.wrap) {       /* to support ill-conceived Java test suite */
    strm.adler = state.wrap & 1;
  }
  state.mode = HEAD;
  state.last = 0;
  state.havedict = 0;
  state.dmax = 32768;
  state.head = null/*Z_NULL*/;
  state.hold = 0;
  state.bits = 0;
  //state.lencode = state.distcode = state.next = state.codes;
  state.lencode = state.lendyn = new utils.Buf32(ENOUGH_LENS);
  state.distcode = state.distdyn = new utils.Buf32(ENOUGH_DISTS);

  state.sane = 1;
  state.back = -1;
  //Tracev((stderr, "inflate: reset\\n"));
  return Z_OK;
}

function inflateReset(strm) {
  var state;

  if (!strm || !strm.state) { return Z_STREAM_ERROR; }
  state = strm.state;
  state.wsize = 0;
  state.whave = 0;
  state.wnext = 0;
  return inflateResetKeep(strm);

}

function inflateReset2(strm, windowBits) {
  var wrap;
  var state;

  /* get the state */
  if (!strm || !strm.state) { return Z_STREAM_ERROR; }
  state = strm.state;

  /* extract wrap request from windowBits parameter */
  if (windowBits < 0) {
    wrap = 0;
    windowBits = -windowBits;
  }
  else {
    wrap = (windowBits >> 4) + 1;
    if (windowBits < 48) {
      windowBits &= 15;
    }
  }

  /* set number of window bits, free window if different */
  if (windowBits && (windowBits < 8 || windowBits > 15)) {
    return Z_STREAM_ERROR;
  }
  if (state.window !== null && state.wbits !== windowBits) {
    state.window = null;
  }

  /* update state and reset the rest of it */
  state.wrap = wrap;
  state.wbits = windowBits;
  return inflateReset(strm);
}

function inflateInit2(strm, windowBits) {
  var ret;
  var state;

  if (!strm) { return Z_STREAM_ERROR; }
  //strm.msg = Z_NULL;                 /* in case we return an error */

  state = new InflateState();

  //if (state === Z_NULL) return Z_MEM_ERROR;
  //Tracev((stderr, "inflate: allocated\\n"));
  strm.state = state;
  state.window = null/*Z_NULL*/;
  ret = inflateReset2(strm, windowBits);
  if (ret !== Z_OK) {
    strm.state = null/*Z_NULL*/;
  }
  return ret;
}

function inflateInit(strm) {
  return inflateInit2(strm, DEF_WBITS);
}


/*
 Return state with length and distance decoding tables and index sizes set to
 fixed code decoding.  Normally this returns fixed tables from inffixed.h.
 If BUILDFIXED is defined, then instead this routine builds the tables the
 first time it's called, and returns those tables the first time and
 thereafter.  This reduces the size of the code by about 2K bytes, in
 exchange for a little execution time.  However, BUILDFIXED should not be
 used for threaded applications, since the rewriting of the tables and virgin
 may not be thread-safe.
 */
var virgin = true;

var lenfix, distfix; // We have no pointers in JS, so keep tables separate

function fixedtables(state) {
  /* build fixed huffman tables if first call (may not be thread safe) */
  if (virgin) {
    var sym;

    lenfix = new utils.Buf32(512);
    distfix = new utils.Buf32(32);

    /* literal/length table */
    sym = 0;
    while (sym < 144) { state.lens[sym++] = 8; }
    while (sym < 256) { state.lens[sym++] = 9; }
    while (sym < 280) { state.lens[sym++] = 7; }
    while (sym < 288) { state.lens[sym++] = 8; }

    inflate_table(LENS,  state.lens, 0, 288, lenfix,   0, state.work, { bits: 9 });

    /* distance table */
    sym = 0;
    while (sym < 32) { state.lens[sym++] = 5; }

    inflate_table(DISTS, state.lens, 0, 32,   distfix, 0, state.work, { bits: 5 });

    /* do this just once */
    virgin = false;
  }

  state.lencode = lenfix;
  state.lenbits = 9;
  state.distcode = distfix;
  state.distbits = 5;
}


/*
 Update the window with the last wsize (normally 32K) bytes written before
 returning.  If window does not exist yet, create it.  This is only called
 when a window is already in use, or when output has been written during this
 inflate call, but the end of the deflate stream has not been reached yet.
 It is also called to create a window for dictionary data when a dictionary
 is loaded.

 Providing output buffers larger than 32K to inflate() should provide a speed
 advantage, since only the last 32K of output is copied to the sliding window
 upon return from inflate(), and since all distances after the first 32K of
 output will fall in the output data, making match copies simpler and faster.
 The advantage may be dependent on the size of the processor's data caches.
 */
function updatewindow(strm, src, end, copy) {
  var dist;
  var state = strm.state;

  /* if it hasn't been done already, allocate space for the window */
  if (state.window === null) {
    state.wsize = 1 << state.wbits;
    state.wnext = 0;
    state.whave = 0;

    state.window = new utils.Buf8(state.wsize);
  }

  /* copy state->wsize or less output bytes into the circular window */
  if (copy >= state.wsize) {
    utils.arraySet(state.window, src, end - state.wsize, state.wsize, 0);
    state.wnext = 0;
    state.whave = state.wsize;
  }
  else {
    dist = state.wsize - state.wnext;
    if (dist > copy) {
      dist = copy;
    }
    //zmemcpy(state->window + state->wnext, end - copy, dist);
    utils.arraySet(state.window, src, end - copy, dist, state.wnext);
    copy -= dist;
    if (copy) {
      //zmemcpy(state->window, end - copy, copy);
      utils.arraySet(state.window, src, end - copy, copy, 0);
      state.wnext = copy;
      state.whave = state.wsize;
    }
    else {
      state.wnext += dist;
      if (state.wnext === state.wsize) { state.wnext = 0; }
      if (state.whave < state.wsize) { state.whave += dist; }
    }
  }
  return 0;
}

function inflate(strm, flush) {
  var state;
  var input, output;          // input/output buffers
  var next;                   /* next input INDEX */
  var put;                    /* next output INDEX */
  var have, left;             /* available input and output */
  var hold;                   /* bit buffer */
  var bits;                   /* bits in bit buffer */
  var _in, _out;              /* save starting available input and output */
  var copy;                   /* number of stored or match bytes to copy */
  var from;                   /* where to copy match bytes from */
  var from_source;
  var here = 0;               /* current decoding table entry */
  var here_bits, here_op, here_val; // paked "here" denormalized (JS specific)
  //var last;                   /* parent table entry */
  var last_bits, last_op, last_val; // paked "last" denormalized (JS specific)
  var len;                    /* length to copy for repeats, bits to drop */
  var ret;                    /* return code */
  var hbuf = new utils.Buf8(4);    /* buffer for gzip header crc calculation */
  var opts;

  var n; // temporary var for NEED_BITS

  var order = /* permutation of code lengths */
    [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];


  if (!strm || !strm.state || !strm.output ||
      (!strm.input && strm.avail_in !== 0)) {
    return Z_STREAM_ERROR;
  }

  state = strm.state;
  if (state.mode === TYPE) { state.mode = TYPEDO; }    /* skip check */


  //--- LOAD() ---
  put = strm.next_out;
  output = strm.output;
  left = strm.avail_out;
  next = strm.next_in;
  input = strm.input;
  have = strm.avail_in;
  hold = state.hold;
  bits = state.bits;
  //---

  _in = have;
  _out = left;
  ret = Z_OK;

  inf_leave: // goto emulation
  for (;;) {
    switch (state.mode) {
      case HEAD:
        if (state.wrap === 0) {
          state.mode = TYPEDO;
          break;
        }
        //=== NEEDBITS(16);
        while (bits < 16) {
          if (have === 0) { break inf_leave; }
          have--;
          hold += input[next++] << bits;
          bits += 8;
        }
        //===//
        if ((state.wrap & 2) && hold === 0x8b1f) {  /* gzip header */
          state.check = 0/*crc32(0L, Z_NULL, 0)*/;
          //=== CRC2(state.check, hold);
          hbuf[0] = hold & 0xff;
          hbuf[1] = (hold >>> 8) & 0xff;
          state.check = crc32(state.check, hbuf, 2, 0);
          //===//

          //=== INITBITS();
          hold = 0;
          bits = 0;
          //===//
          state.mode = FLAGS;
          break;
        }
        state.flags = 0;           /* expect zlib header */
        if (state.head) {
          state.head.done = false;
        }
        if (!(state.wrap & 1) ||   /* check if zlib header allowed */
          (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {
          strm.msg = 'incorrect header check';
          state.mode = BAD;
          break;
        }
        if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) {
          strm.msg = 'unknown compression method';
          state.mode = BAD;
          break;
        }
        //--- DROPBITS(4) ---//
        hold >>>= 4;
        bits -= 4;
        //---//
        len = (hold & 0x0f)/*BITS(4)*/ + 8;
        if (state.wbits === 0) {
          state.wbits = len;
        }
        else if (len > state.wbits) {
          strm.msg = 'invalid window size';
          state.mode = BAD;
          break;
        }
        state.dmax = 1 << len;
        //Tracev((stderr, "inflate:   zlib header ok\\n"));
        strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;
        state.mode = hold & 0x200 ? DICTID : TYPE;
        //=== INITBITS();
        hold = 0;
        bits = 0;
        //===//
        break;
      case FLAGS:
        //=== NEEDBITS(16); */
        while (bits < 16) {
          if (have === 0) { break inf_leave; }
          have--;
          hold += input[next++] << bits;
          bits += 8;
        }
        //===//
        state.flags = hold;
        if ((state.flags & 0xff) !== Z_DEFLATED) {
          strm.msg = 'unknown compression method';
          state.mode = BAD;
          break;
        }
        if (state.flags & 0xe000) {
          strm.msg = 'unknown header flags set';
          state.mode = BAD;
          break;
        }
        if (state.head) {
          state.head.text = ((hold >> 8) & 1);
        }
        if (state.flags & 0x0200) {
          //=== CRC2(state.check, hold);
          hbuf[0] = hold & 0xff;
          hbuf[1] = (hold >>> 8) & 0xff;
          state.check = crc32(state.check, hbuf, 2, 0);
          //===//
        }
        //=== INITBITS();
        hold = 0;
        bits = 0;
        //===//
        state.mode = TIME;
        /* falls through */
      case TIME:
        //=== NEEDBITS(32); */
        while (bits < 32) {
          if (have === 0) { break inf_leave; }
          have--;
          hold += input[next++] << bits;
          bits += 8;
        }
        //===//
        if (state.head) {
          state.head.time = hold;
        }
        if (state.flags & 0x0200) {
          //=== CRC4(state.check, hold)
          hbuf[0] = hold & 0xff;
          hbuf[1] = (hold >>> 8) & 0xff;
          hbuf[2] = (hold >>> 16) & 0xff;
          hbuf[3] = (hold >>> 24) & 0xff;
          state.check = crc32(state.check, hbuf, 4, 0);
          //===
        }
        //=== INITBITS();
        hold = 0;
        bits = 0;
        //===//
        state.mode = OS;
        /* falls through */
      case OS:
        //=== NEEDBITS(16); */
        while (bits < 16) {
          if (have === 0) { break inf_leave; }
          have--;
          hold += input[next++] << bits;
          bits += 8;
        }
        //===//
        if (state.head) {
          state.head.xflags = (hold & 0xff);
          state.head.os = (hold >> 8);
        }
        if (state.flags & 0x0200) {
          //=== CRC2(state.check, hold);
          hbuf[0] = hold & 0xff;
          hbuf[1] = (hold >>> 8) & 0xff;
          state.check = crc32(state.check, hbuf, 2, 0);
          //===//
        }
        //=== INITBITS();
        hold = 0;
        bits = 0;
        //===//
        state.mode = EXLEN;
        /* falls through */
      case EXLEN:
        if (state.flags & 0x0400) {
          //=== NEEDBITS(16); */
          while (bits < 16) {
            if (have === 0) { break inf_leave; }
            have--;
            hold += input[next++] << bits;
            bits += 8;
          }
          //===//
          state.length = hold;
          if (state.head) {
            state.head.extra_len = hold;
          }
          if (state.flags & 0x0200) {
            //=== CRC2(state.check, hold);
            hbuf[0] = hold & 0xff;
            hbuf[1] = (hold >>> 8) & 0xff;
            state.check = crc32(state.check, hbuf, 2, 0);
            //===//
          }
          //=== INITBITS();
          hold = 0;
          bits = 0;
          //===//
        }
        else if (state.head) {
          state.head.extra = null/*Z_NULL*/;
        }
        state.mode = EXTRA;
        /* falls through */
      case EXTRA:
        if (state.flags & 0x0400) {
          copy = state.length;
          if (copy > have) { copy = have; }
          if (copy) {
            if (state.head) {
              len = state.head.extra_len - state.length;
              if (!state.head.extra) {
                // Use untyped array for more convenient processing later
                state.head.extra = new Array(state.head.extra_len);
              }
              utils.arraySet(
                state.head.extra,
                input,
                next,
                // extra field is limited to 65536 bytes
                // - no need for additional size check
                copy,
                /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/
                len
              );
              //zmemcpy(state.head.extra + len, next,
              //        len + copy > state.head.extra_max ?
              //        state.head.extra_max - len : copy);
            }
            if (state.flags & 0x0200) {
              state.check = crc32(state.check, input, copy, next);
            }
            have -= copy;
            next += copy;
            state.length -= copy;
          }
          if (state.length) { break inf_leave; }
        }
        state.length = 0;
        state.mode = NAME;
        /* falls through */
      case NAME:
        if (state.flags & 0x0800) {
          if (have === 0) { break inf_leave; }
          copy = 0;
          do {
            // TODO: 2 or 1 bytes?
            len = input[next + copy++];
            /* use constant limit because in js we should not preallocate memory */
            if (state.head && len &&
                (state.length < 65536 /*state.head.name_max*/)) {
              state.head.name += String.fromCharCode(len);
            }
          } while (len && copy < have);

          if (state.flags & 0x0200) {
            state.check = crc32(state.check, input, copy, next);
          }
          have -= copy;
          next += copy;
          if (len) { break inf_leave; }
        }
        else if (state.head) {
          state.head.name = null;
        }
        state.length = 0;
        state.mode = COMMENT;
        /* falls through */
      case COMMENT:
        if (state.flags & 0x1000) {
          if (have === 0) { break inf_leave; }
          copy = 0;
          do {
            len = input[next + copy++];
            /* use constant limit because in js we should not preallocate memory */
            if (state.head && len &&
                (state.length < 65536 /*state.head.comm_max*/)) {
              state.head.comment += String.fromCharCode(len);
            }
          } while (len && copy < have);
          if (state.flags & 0x0200) {
            state.check = crc32(state.check, input, copy, next);
          }
          have -= copy;
          next += copy;
          if (len) { break inf_leave; }
        }
        else if (state.head) {
          state.head.comment = null;
        }
        state.mode = HCRC;
        /* falls through */
      case HCRC:
        if (state.flags & 0x0200) {
          //=== NEEDBITS(16); */
          while (bits < 16) {
            if (have === 0) { break inf_leave; }
            have--;
            hold += input[next++] << bits;
            bits += 8;
          }
          //===//
          if (hold !== (state.check & 0xffff)) {
            strm.msg = 'header crc mismatch';
            state.mode = BAD;
            break;
          }
          //=== INITBITS();
          hold = 0;
          bits = 0;
          //===//
        }
        if (state.head) {
          state.head.hcrc = ((state.flags >> 9) & 1);
          state.head.done = true;
        }
        strm.adler = state.check = 0;
        state.mode = TYPE;
        break;
      case DICTID:
        //=== NEEDBITS(32); */
        while (bits < 32) {
          if (have === 0) { break inf_leave; }
          have--;
          hold += input[next++] << bits;
          bits += 8;
        }
        //===//
        strm.adler = state.check = zswap32(hold);
        //=== INITBITS();
        hold = 0;
        bits = 0;
        //===//
        state.mode = DICT;
        /* falls through */
      case DICT:
        if (state.havedict === 0) {
          //--- RESTORE() ---
          strm.next_out = put;
          strm.avail_out = left;
          strm.next_in = next;
          strm.avail_in = have;
          state.hold = hold;
          state.bits = bits;
          //---
          return Z_NEED_DICT;
        }
        strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;
        state.mode = TYPE;
        /* falls through */
      case TYPE:
        if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }
        /* falls through */
      case TYPEDO:
        if (state.last) {
          //--- BYTEBITS() ---//
          hold >>>= bits & 7;
          bits -= bits & 7;
          //---//
          state.mode = CHECK;
          break;
        }
        //=== NEEDBITS(3); */
        while (bits < 3) {
          if (have === 0) { break inf_leave; }
          have--;
          hold += input[next++] << bits;
          bits += 8;
        }
        //===//
        state.last = (hold & 0x01)/*BITS(1)*/;
        //--- DROPBITS(1) ---//
        hold >>>= 1;
        bits -= 1;
        //---//

        switch ((hold & 0x03)/*BITS(2)*/) {
          case 0:                             /* stored block */
            //Tracev((stderr, "inflate:     stored block%s\\n",
            //        state.last ? " (last)" : ""));
            state.mode = STORED;
            break;
          case 1:                             /* fixed block */
            fixedtables(state);
            //Tracev((stderr, "inflate:     fixed codes block%s\\n",
            //        state.last ? " (last)" : ""));
            state.mode = LEN_;             /* decode codes */
            if (flush === Z_TREES) {
              //--- DROPBITS(2) ---//
              hold >>>= 2;
              bits -= 2;
              //---//
              break inf_leave;
            }
            break;
          case 2:                             /* dynamic block */
            //Tracev((stderr, "inflate:     dynamic codes block%s\\n",
            //        state.last ? " (last)" : ""));
            state.mode = TABLE;
            break;
          case 3:
            strm.msg = 'invalid block type';
            state.mode = BAD;
        }
        //--- DROPBITS(2) ---//
        hold >>>= 2;
        bits -= 2;
        //---//
        break;
      case STORED:
        //--- BYTEBITS() ---// /* go to byte boundary */
        hold >>>= bits & 7;
        bits -= bits & 7;
        //---//
        //=== NEEDBITS(32); */
        while (bits < 32) {
          if (have === 0) { break inf_leave; }
          have--;
          hold += input[next++] << bits;
          bits += 8;
        }
        //===//
        if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {
          strm.msg = 'invalid stored block lengths';
          state.mode = BAD;
          break;
        }
        state.length = hold & 0xffff;
        //Tracev((stderr, "inflate:       stored length %u\\n",
        //        state.length));
        //=== INITBITS();
        hold = 0;
        bits = 0;
        //===//
        state.mode = COPY_;
        if (flush === Z_TREES) { break inf_leave; }
        /* falls through */
      case COPY_:
        state.mode = COPY;
        /* falls through */
      case COPY:
        copy = state.length;
        if (copy) {
          if (copy > have) { copy = have; }
          if (copy > left) { copy = left; }
          if (copy === 0) { break inf_leave; }
          //--- zmemcpy(put, next, copy); ---
          utils.arraySet(output, input, next, copy, put);
          //---//
          have -= copy;
          next += copy;
          left -= copy;
          put += copy;
          state.length -= copy;
          break;
        }
        //Tracev((stderr, "inflate:       stored end\\n"));
        state.mode = TYPE;
        break;
      case TABLE:
        //=== NEEDBITS(14); */
        while (bits < 14) {
          if (have === 0) { break inf_leave; }
          have--;
          hold += input[next++] << bits;
          bits += 8;
        }
        //===//
        state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;
        //--- DROPBITS(5) ---//
        hold >>>= 5;
        bits -= 5;
        //---//
        state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;
        //--- DROPBITS(5) ---//
        hold >>>= 5;
        bits -= 5;
        //---//
        state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;
        //--- DROPBITS(4) ---//
        hold >>>= 4;
        bits -= 4;
        //---//
//#ifndef PKZIP_BUG_WORKAROUND
        if (state.nlen > 286 || state.ndist > 30) {
          strm.msg = 'too many length or distance symbols';
          state.mode = BAD;
          break;
        }
//#endif
        //Tracev((stderr, "inflate:       table sizes ok\\n"));
        state.have = 0;
        state.mode = LENLENS;
        /* falls through */
      case LENLENS:
        while (state.have < state.ncode) {
          //=== NEEDBITS(3);
          while (bits < 3) {
            if (have === 0) { break inf_leave; }
            have--;
            hold += input[next++] << bits;
            bits += 8;
          }
          //===//
          state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);
          //--- DROPBITS(3) ---//
          hold >>>= 3;
          bits -= 3;
          //---//
        }
        while (state.have < 19) {
          state.lens[order[state.have++]] = 0;
        }
        // We have separate tables & no pointers. 2 commented lines below not needed.
        //state.next = state.codes;
        //state.lencode = state.next;
        // Switch to use dynamic table
        state.lencode = state.lendyn;
        state.lenbits = 7;

        opts = { bits: state.lenbits };
        ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);
        state.lenbits = opts.bits;

        if (ret) {
          strm.msg = 'invalid code lengths set';
          state.mode = BAD;
          break;
        }
        //Tracev((stderr, "inflate:       code lengths ok\\n"));
        state.have = 0;
        state.mode = CODELENS;
        /* falls through */
      case CODELENS:
        while (state.have < state.nlen + state.ndist) {
          for (;;) {
            here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/
            here_bits = here >>> 24;
            here_op = (here >>> 16) & 0xff;
            here_val = here & 0xffff;

            if ((here_bits) <= bits) { break; }
            //--- PULLBYTE() ---//
            if (have === 0) { break inf_leave; }
            have--;
            hold += input[next++] << bits;
            bits += 8;
            //---//
          }
          if (here_val < 16) {
            //--- DROPBITS(here.bits) ---//
            hold >>>= here_bits;
            bits -= here_bits;
            //---//
            state.lens[state.have++] = here_val;
          }
          else {
            if (here_val === 16) {
              //=== NEEDBITS(here.bits + 2);
              n = here_bits + 2;
              while (bits < n) {
                if (have === 0) { break inf_leave; }
                have--;
                hold += input[next++] << bits;
                bits += 8;
              }
              //===//
              //--- DROPBITS(here.bits) ---//
              hold >>>= here_bits;
              bits -= here_bits;
              //---//
              if (state.have === 0) {
                strm.msg = 'invalid bit length repeat';
                state.mode = BAD;
                break;
              }
              len = state.lens[state.have - 1];
              copy = 3 + (hold & 0x03);//BITS(2);
              //--- DROPBITS(2) ---//
              hold >>>= 2;
              bits -= 2;
              //---//
            }
            else if (here_val === 17) {
              //=== NEEDBITS(here.bits + 3);
              n = here_bits + 3;
              while (bits < n) {
                if (have === 0) { break inf_leave; }
                have--;
                hold += input[next++] << bits;
                bits += 8;
              }
              //===//
              //--- DROPBITS(here.bits) ---//
              hold >>>= here_bits;
              bits -= here_bits;
              //---//
              len = 0;
              copy = 3 + (hold & 0x07);//BITS(3);
              //--- DROPBITS(3) ---//
              hold >>>= 3;
              bits -= 3;
              //---//
            }
            else {
              //=== NEEDBITS(here.bits + 7);
              n = here_bits + 7;
              while (bits < n) {
                if (have === 0) { break inf_leave; }
                have--;
                hold += input[next++] << bits;
                bits += 8;
              }
              //===//
              //--- DROPBITS(here.bits) ---//
              hold >>>= here_bits;
              bits -= here_bits;
              //---//
              len = 0;
              copy = 11 + (hold & 0x7f);//BITS(7);
              //--- DROPBITS(7) ---//
              hold >>>= 7;
              bits -= 7;
              //---//
            }
            if (state.have + copy > state.nlen + state.ndist) {
              strm.msg = 'invalid bit length repeat';
              state.mode = BAD;
              break;
            }
            while (copy--) {
              state.lens[state.have++] = len;
            }
          }
        }

        /* handle error breaks in while */
        if (state.mode === BAD) { break; }

        /* check for end-of-block code (better have one) */
        if (state.lens[256] === 0) {
          strm.msg = 'invalid code -- missing end-of-block';
          state.mode = BAD;
          break;
        }

        /* build code tables -- note: do not change the lenbits or distbits
           values here (9 and 6) without reading the comments in inftrees.h
           concerning the ENOUGH constants, which depend on those values */
        state.lenbits = 9;

        opts = { bits: state.lenbits };
        ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);
        // We have separate tables & no pointers. 2 commented lines below not needed.
        // state.next_index = opts.table_index;
        state.lenbits = opts.bits;
        // state.lencode = state.next;

        if (ret) {
          strm.msg = 'invalid literal/lengths set';
          state.mode = BAD;
          break;
        }

        state.distbits = 6;
        //state.distcode.copy(state.codes);
        // Switch to use dynamic table
        state.distcode = state.distdyn;
        opts = { bits: state.distbits };
        ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);
        // We have separate tables & no pointers. 2 commented lines below not needed.
        // state.next_index = opts.table_index;
        state.distbits = opts.bits;
        // state.distcode = state.next;

        if (ret) {
          strm.msg = 'invalid distances set';
          state.mode = BAD;
          break;
        }
        //Tracev((stderr, 'inflate:       codes ok\\n'));
        state.mode = LEN_;
        if (flush === Z_TREES) { break inf_leave; }
        /* falls through */
      case LEN_:
        state.mode = LEN;
        /* falls through */
      case LEN:
        if (have >= 6 && left >= 258) {
          //--- RESTORE() ---
          strm.next_out = put;
          strm.avail_out = left;
          strm.next_in = next;
          strm.avail_in = have;
          state.hold = hold;
          state.bits = bits;
          //---
          inflate_fast(strm, _out);
          //--- LOAD() ---
          put = strm.next_out;
          output = strm.output;
          left = strm.avail_out;
          next = strm.next_in;
          input = strm.input;
          have = strm.avail_in;
          hold = state.hold;
          bits = state.bits;
          //---

          if (state.mode === TYPE) {
            state.back = -1;
          }
          break;
        }
        state.back = 0;
        for (;;) {
          here = state.lencode[hold & ((1 << state.lenbits) - 1)];  /*BITS(state.lenbits)*/
          here_bits = here >>> 24;
          here_op = (here >>> 16) & 0xff;
          here_val = here & 0xffff;

          if (here_bits <= bits) { break; }
          //--- PULLBYTE() ---//
          if (have === 0) { break inf_leave; }
          have--;
          hold += input[next++] << bits;
          bits += 8;
          //---//
        }
        if (here_op && (here_op & 0xf0) === 0) {
          last_bits = here_bits;
          last_op = here_op;
          last_val = here_val;
          for (;;) {
            here = state.lencode[last_val +
                    ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];
            here_bits = here >>> 24;
            here_op = (here >>> 16) & 0xff;
            here_val = here & 0xffff;

            if ((last_bits + here_bits) <= bits) { break; }
            //--- PULLBYTE() ---//
            if (have === 0) { break inf_leave; }
            have--;
            hold += input[next++] << bits;
            bits += 8;
            //---//
          }
          //--- DROPBITS(last.bits) ---//
          hold >>>= last_bits;
          bits -= last_bits;
          //---//
          state.back += last_bits;
        }
        //--- DROPBITS(here.bits) ---//
        hold >>>= here_bits;
        bits -= here_bits;
        //---//
        state.back += here_bits;
        state.length = here_val;
        if (here_op === 0) {
          //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?
          //        "inflate:         literal '%c'\\n" :
          //        "inflate:         literal 0x%02x\\n", here.val));
          state.mode = LIT;
          break;
        }
        if (here_op & 32) {
          //Tracevv((stderr, "inflate:         end of block\\n"));
          state.back = -1;
          state.mode = TYPE;
          break;
        }
        if (here_op & 64) {
          strm.msg = 'invalid literal/length code';
          state.mode = BAD;
          break;
        }
        state.extra = here_op & 15;
        state.mode = LENEXT;
        /* falls through */
      case LENEXT:
        if (state.extra) {
          //=== NEEDBITS(state.extra);
          n = state.extra;
          while (bits < n) {
            if (have === 0) { break inf_leave; }
            have--;
            hold += input[next++] << bits;
            bits += 8;
          }
          //===//
          state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;
          //--- DROPBITS(state.extra) ---//
          hold >>>= state.extra;
          bits -= state.extra;
          //---//
          state.back += state.extra;
        }
        //Tracevv((stderr, "inflate:         length %u\\n", state.length));
        state.was = state.length;
        state.mode = DIST;
        /* falls through */
      case DIST:
        for (;;) {
          here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/
          here_bits = here >>> 24;
          here_op = (here >>> 16) & 0xff;
          here_val = here & 0xffff;

          if ((here_bits) <= bits) { break; }
          //--- PULLBYTE() ---//
          if (have === 0) { break inf_leave; }
          have--;
          hold += input[next++] << bits;
          bits += 8;
          //---//
        }
        if ((here_op & 0xf0) === 0) {
          last_bits = here_bits;
          last_op = here_op;
          last_val = here_val;
          for (;;) {
            here = state.distcode[last_val +
                    ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];
            here_bits = here >>> 24;
            here_op = (here >>> 16) & 0xff;
            here_val = here & 0xffff;

            if ((last_bits + here_bits) <= bits) { break; }
            //--- PULLBYTE() ---//
            if (have === 0) { break inf_leave; }
            have--;
            hold += input[next++] << bits;
            bits += 8;
            //---//
          }
          //--- DROPBITS(last.bits) ---//
          hold >>>= last_bits;
          bits -= last_bits;
          //---//
          state.back += last_bits;
        }
        //--- DROPBITS(here.bits) ---//
        hold >>>= here_bits;
        bits -= here_bits;
        //---//
        state.back += here_bits;
        if (here_op & 64) {
          strm.msg = 'invalid distance code';
          state.mode = BAD;
          break;
        }
        state.offset = here_val;
        state.extra = (here_op) & 15;
        state.mode = DISTEXT;
        /* falls through */
      case DISTEXT:
        if (state.extra) {
          //=== NEEDBITS(state.extra);
          n = state.extra;
          while (bits < n) {
            if (have === 0) { break inf_leave; }
            have--;
            hold += input[next++] << bits;
            bits += 8;
          }
          //===//
          state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;
          //--- DROPBITS(state.extra) ---//
          hold >>>= state.extra;
          bits -= state.extra;
          //---//
          state.back += state.extra;
        }
//#ifdef INFLATE_STRICT
        if (state.offset > state.dmax) {
          strm.msg = 'invalid distance too far back';
          state.mode = BAD;
          break;
        }
//#endif
        //Tracevv((stderr, "inflate:         distance %u\\n", state.offset));
        state.mode = MATCH;
        /* falls through */
      case MATCH:
        if (left === 0) { break inf_leave; }
        copy = _out - left;
        if (state.offset > copy) {         /* copy from window */
          copy = state.offset - copy;
          if (copy > state.whave) {
            if (state.sane) {
              strm.msg = 'invalid distance too far back';
              state.mode = BAD;
              break;
            }
// (!) This block is disabled in zlib defaults,
// don't enable it for binary compatibility
//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR
//          Trace((stderr, "inflate.c too far\\n"));
//          copy -= state.whave;
//          if (copy > state.length) { copy = state.length; }
//          if (copy > left) { copy = left; }
//          left -= copy;
//          state.length -= copy;
//          do {
//            output[put++] = 0;
//          } while (--copy);
//          if (state.length === 0) { state.mode = LEN; }
//          break;
//#endif
          }
          if (copy > state.wnext) {
            copy -= state.wnext;
            from = state.wsize - copy;
          }
          else {
            from = state.wnext - copy;
          }
          if (copy > state.length) { copy = state.length; }
          from_source = state.window;
        }
        else {                              /* copy from output */
          from_source = output;
          from = put - state.offset;
          copy = state.length;
        }
        if (copy > left) { copy = left; }
        left -= copy;
        state.length -= copy;
        do {
          output[put++] = from_source[from++];
        } while (--copy);
        if (state.length === 0) { state.mode = LEN; }
        break;
      case LIT:
        if (left === 0) { break inf_leave; }
        output[put++] = state.length;
        left--;
        state.mode = LEN;
        break;
      case CHECK:
        if (state.wrap) {
          //=== NEEDBITS(32);
          while (bits < 32) {
            if (have === 0) { break inf_leave; }
            have--;
            // Use '|' instead of '+' to make sure that result is signed
            hold |= input[next++] << bits;
            bits += 8;
          }
          //===//
          _out -= left;
          strm.total_out += _out;
          state.total += _out;
          if (_out) {
            strm.adler = state.check =
                /*UPDATE(state.check, put - _out, _out);*/
                (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out));

          }
          _out = left;
          // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too
          if ((state.flags ? hold : zswap32(hold)) !== state.check) {
            strm.msg = 'incorrect data check';
            state.mode = BAD;
            break;
          }
          //=== INITBITS();
          hold = 0;
          bits = 0;
          //===//
          //Tracev((stderr, "inflate:   check matches trailer\\n"));
        }
        state.mode = LENGTH;
        /* falls through */
      case LENGTH:
        if (state.wrap && state.flags) {
          //=== NEEDBITS(32);
          while (bits < 32) {
            if (have === 0) { break inf_leave; }
            have--;
            hold += input[next++] << bits;
            bits += 8;
          }
          //===//
          if (hold !== (state.total & 0xffffffff)) {
            strm.msg = 'incorrect length check';
            state.mode = BAD;
            break;
          }
          //=== INITBITS();
          hold = 0;
          bits = 0;
          //===//
          //Tracev((stderr, "inflate:   length matches trailer\\n"));
        }
        state.mode = DONE;
        /* falls through */
      case DONE:
        ret = Z_STREAM_END;
        break inf_leave;
      case BAD:
        ret = Z_DATA_ERROR;
        break inf_leave;
      case MEM:
        return Z_MEM_ERROR;
      case SYNC:
        /* falls through */
      default:
        return Z_STREAM_ERROR;
    }
  }

  // inf_leave <- here is real place for "goto inf_leave", emulated via "break inf_leave"

  /*
     Return from inflate(), updating the total counts and the check value.
     If there was no progress during the inflate() call, return a buffer
     error.  Call updatewindow() to create and/or update the window state.
     Note: a memory error from inflate() is non-recoverable.
   */

  //--- RESTORE() ---
  strm.next_out = put;
  strm.avail_out = left;
  strm.next_in = next;
  strm.avail_in = have;
  state.hold = hold;
  state.bits = bits;
  //---

  if (state.wsize || (_out !== strm.avail_out && state.mode < BAD &&
                      (state.mode < CHECK || flush !== Z_FINISH))) {
    if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) {
      state.mode = MEM;
      return Z_MEM_ERROR;
    }
  }
  _in -= strm.avail_in;
  _out -= strm.avail_out;
  strm.total_in += _in;
  strm.total_out += _out;
  state.total += _out;
  if (state.wrap && _out) {
    strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/
      (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out));
  }
  strm.data_type = state.bits + (state.last ? 64 : 0) +
                    (state.mode === TYPE ? 128 : 0) +
                    (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);
  if (((_in === 0 && _out === 0) || flush === Z_FINISH) && ret === Z_OK) {
    ret = Z_BUF_ERROR;
  }
  return ret;
}

function inflateEnd(strm) {

  if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) {
    return Z_STREAM_ERROR;
  }

  var state = strm.state;
  if (state.window) {
    state.window = null;
  }
  strm.state = null;
  return Z_OK;
}

function inflateGetHeader(strm, head) {
  var state;

  /* check state */
  if (!strm || !strm.state) { return Z_STREAM_ERROR; }
  state = strm.state;
  if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR; }

  /* save header structure */
  state.head = head;
  head.done = false;
  return Z_OK;
}

function inflateSetDictionary(strm, dictionary) {
  var dictLength = dictionary.length;

  var state;
  var dictid;
  var ret;

  /* check state */
  if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR; }
  state = strm.state;

  if (state.wrap !== 0 && state.mode !== DICT) {
    return Z_STREAM_ERROR;
  }

  /* check for correct dictionary identifier */
  if (state.mode === DICT) {
    dictid = 1; /* adler32(0, null, 0)*/
    /* dictid = adler32(dictid, dictionary, dictLength); */
    dictid = adler32(dictid, dictionary, dictLength, 0);
    if (dictid !== state.check) {
      return Z_DATA_ERROR;
    }
  }
  /* copy dictionary to window using updatewindow(), which will amend the
   existing dictionary if appropriate */
  ret = updatewindow(strm, dictionary, dictLength, dictLength);
  if (ret) {
    state.mode = MEM;
    return Z_MEM_ERROR;
  }
  state.havedict = 1;
  // Tracev((stderr, "inflate:   dictionary set\\n"));
  return Z_OK;
}

exports.inflateReset = inflateReset;
exports.inflateReset2 = inflateReset2;
exports.inflateResetKeep = inflateResetKeep;
exports.inflateInit = inflateInit;
exports.inflateInit2 = inflateInit2;
exports.inflate = inflate;
exports.inflateEnd = inflateEnd;
exports.inflateGetHeader = inflateGetHeader;
exports.inflateSetDictionary = inflateSetDictionary;
exports.inflateInfo = 'pako inflate (from Nodeca project)';

/* Not implemented
exports.inflateCopy = inflateCopy;
exports.inflateGetDictionary = inflateGetDictionary;
exports.inflateMark = inflateMark;
exports.inflatePrime = inflatePrime;
exports.inflateSync = inflateSync;
exports.inflateSyncPoint = inflateSyncPoint;
exports.inflateUndermine = inflateUndermine;
*/
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 81648 characters]
//# sourceURL=webpack-internal:///../../../node_modules/pako/lib/zlib/inflate.js
`);
              }
            ),
            /***/
            "../../../node_modules/pako/lib/zlib/inftrees.js": (
              /*!*******************************************************!*\
                !*** ../../../node_modules/pako/lib/zlib/inftrees.js ***!
                \*******************************************************/
              /***/
              (module, __unused_webpack_exports, __webpack_require__) => {
                "use strict";
                eval(`

// (C) 1995-2013 Jean-loup Gailly and Mark Adler
// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
//   claim that you wrote the original software. If you use this software
//   in a product, an acknowledgment in the product documentation would be
//   appreciated but is not required.
// 2. Altered source versions must be plainly marked as such, and must not be
//   misrepresented as being the original software.
// 3. This notice may not be removed or altered from any source distribution.

var utils = __webpack_require__(/*! ../utils/common */ "../../../node_modules/pako/lib/utils/common.js");

var MAXBITS = 15;
var ENOUGH_LENS = 852;
var ENOUGH_DISTS = 592;
//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);

var CODES = 0;
var LENS = 1;
var DISTS = 2;

var lbase = [ /* Length codes 257..285 base */
  3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,
  35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0
];

var lext = [ /* Length codes 257..285 extra */
  16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,
  19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78
];

var dbase = [ /* Distance codes 0..29 base */
  1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,
  257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,
  8193, 12289, 16385, 24577, 0, 0
];

var dext = [ /* Distance codes 0..29 extra */
  16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,
  23, 23, 24, 24, 25, 25, 26, 26, 27, 27,
  28, 28, 29, 29, 64, 64
];

module.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts)
{
  var bits = opts.bits;
      //here = opts.here; /* table entry for duplication */

  var len = 0;               /* a code's length in bits */
  var sym = 0;               /* index of code symbols */
  var min = 0, max = 0;          /* minimum and maximum code lengths */
  var root = 0;              /* number of index bits for root table */
  var curr = 0;              /* number of index bits for current table */
  var drop = 0;              /* code bits to drop for sub-table */
  var left = 0;                   /* number of prefix codes available */
  var used = 0;              /* code entries in table used */
  var huff = 0;              /* Huffman code */
  var incr;              /* for incrementing code, index */
  var fill;              /* index for replicating entries */
  var low;               /* low bits for current root entry */
  var mask;              /* mask for low root bits */
  var next;             /* next available space in table */
  var base = null;     /* base value table to use */
  var base_index = 0;
//  var shoextra;    /* extra bits table to use */
  var end;                    /* use base and extra for symbol > end */
  var count = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1];    /* number of codes of each length */
  var offs = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1];     /* offsets in table for each length */
  var extra = null;
  var extra_index = 0;

  var here_bits, here_op, here_val;

  /*
   Process a set of code lengths to create a canonical Huffman code.  The
   code lengths are lens[0..codes-1].  Each length corresponds to the
   symbols 0..codes-1.  The Huffman code is generated by first sorting the
   symbols by length from short to long, and retaining the symbol order
   for codes with equal lengths.  Then the code starts with all zero bits
   for the first code of the shortest length, and the codes are integer
   increments for the same length, and zeros are appended as the length
   increases.  For the deflate format, these bits are stored backwards
   from their more natural integer increment ordering, and so when the
   decoding tables are built in the large loop below, the integer codes
   are incremented backwards.

   This routine assumes, but does not check, that all of the entries in
   lens[] are in the range 0..MAXBITS.  The caller must assure this.
   1..MAXBITS is interpreted as that code length.  zero means that that
   symbol does not occur in this code.

   The codes are sorted by computing a count of codes for each length,
   creating from that a table of starting indices for each length in the
   sorted table, and then entering the symbols in order in the sorted
   table.  The sorted table is work[], with that space being provided by
   the caller.

   The length counts are used for other purposes as well, i.e. finding
   the minimum and maximum length codes, determining if there are any
   codes at all, checking for a valid set of lengths, and looking ahead
   at length counts to determine sub-table sizes when building the
   decoding tables.
   */

  /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */
  for (len = 0; len <= MAXBITS; len++) {
    count[len] = 0;
  }
  for (sym = 0; sym < codes; sym++) {
    count[lens[lens_index + sym]]++;
  }

  /* bound code lengths, force root to be within code lengths */
  root = bits;
  for (max = MAXBITS; max >= 1; max--) {
    if (count[max] !== 0) { break; }
  }
  if (root > max) {
    root = max;
  }
  if (max === 0) {                     /* no symbols to code at all */
    //table.op[opts.table_index] = 64;  //here.op = (var char)64;    /* invalid code marker */
    //table.bits[opts.table_index] = 1;   //here.bits = (var char)1;
    //table.val[opts.table_index++] = 0;   //here.val = (var short)0;
    table[table_index++] = (1 << 24) | (64 << 16) | 0;


    //table.op[opts.table_index] = 64;
    //table.bits[opts.table_index] = 1;
    //table.val[opts.table_index++] = 0;
    table[table_index++] = (1 << 24) | (64 << 16) | 0;

    opts.bits = 1;
    return 0;     /* no symbols, but wait for decoding to report error */
  }
  for (min = 1; min < max; min++) {
    if (count[min] !== 0) { break; }
  }
  if (root < min) {
    root = min;
  }

  /* check for an over-subscribed or incomplete set of lengths */
  left = 1;
  for (len = 1; len <= MAXBITS; len++) {
    left <<= 1;
    left -= count[len];
    if (left < 0) {
      return -1;
    }        /* over-subscribed */
  }
  if (left > 0 && (type === CODES || max !== 1)) {
    return -1;                      /* incomplete set */
  }

  /* generate offsets into symbol table for each length for sorting */
  offs[1] = 0;
  for (len = 1; len < MAXBITS; len++) {
    offs[len + 1] = offs[len] + count[len];
  }

  /* sort symbols by length, by symbol order within each length */
  for (sym = 0; sym < codes; sym++) {
    if (lens[lens_index + sym] !== 0) {
      work[offs[lens[lens_index + sym]]++] = sym;
    }
  }

  /*
   Create and fill in decoding tables.  In this loop, the table being
   filled is at next and has curr index bits.  The code being used is huff
   with length len.  That code is converted to an index by dropping drop
   bits off of the bottom.  For codes where len is less than drop + curr,
   those top drop + curr - len bits are incremented through all values to
   fill the table with replicated entries.

   root is the number of index bits for the root table.  When len exceeds
   root, sub-tables are created pointed to by the root entry with an index
   of the low root bits of huff.  This is saved in low to check for when a
   new sub-table should be started.  drop is zero when the root table is
   being filled, and drop is root when sub-tables are being filled.

   When a new sub-table is needed, it is necessary to look ahead in the
   code lengths to determine what size sub-table is needed.  The length
   counts are used for this, and so count[] is decremented as codes are
   entered in the tables.

   used keeps track of how many table entries have been allocated from the
   provided *table space.  It is checked for LENS and DIST tables against
   the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in
   the initial root table size constants.  See the comments in inftrees.h
   for more information.

   sym increments through all symbols, and the loop terminates when
   all codes of length max, i.e. all codes, have been processed.  This
   routine permits incomplete codes, so another loop after this one fills
   in the rest of the decoding tables with invalid code markers.
   */

  /* set up for code type */
  // poor man optimization - use if-else instead of switch,
  // to avoid deopts in old v8
  if (type === CODES) {
    base = extra = work;    /* dummy value--not used */
    end = 19;

  } else if (type === LENS) {
    base = lbase;
    base_index -= 257;
    extra = lext;
    extra_index -= 257;
    end = 256;

  } else {                    /* DISTS */
    base = dbase;
    extra = dext;
    end = -1;
  }

  /* initialize opts for loop */
  huff = 0;                   /* starting code */
  sym = 0;                    /* starting code symbol */
  len = min;                  /* starting code length */
  next = table_index;              /* current table to fill in */
  curr = root;                /* current table index bits */
  drop = 0;                   /* current bits to drop from code for index */
  low = -1;                   /* trigger new sub-table when len > root */
  used = 1 << root;          /* use root table entries */
  mask = used - 1;            /* mask for comparing low */

  /* check available table space */
  if ((type === LENS && used > ENOUGH_LENS) ||
    (type === DISTS && used > ENOUGH_DISTS)) {
    return 1;
  }

  /* process all codes and make table entries */
  for (;;) {
    /* create table entry */
    here_bits = len - drop;
    if (work[sym] < end) {
      here_op = 0;
      here_val = work[sym];
    }
    else if (work[sym] > end) {
      here_op = extra[extra_index + work[sym]];
      here_val = base[base_index + work[sym]];
    }
    else {
      here_op = 32 + 64;         /* end of block */
      here_val = 0;
    }

    /* replicate for those indices with low len bits equal to huff */
    incr = 1 << (len - drop);
    fill = 1 << curr;
    min = fill;                 /* save offset to next table */
    do {
      fill -= incr;
      table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;
    } while (fill !== 0);

    /* backwards increment the len-bit code huff */
    incr = 1 << (len - 1);
    while (huff & incr) {
      incr >>= 1;
    }
    if (incr !== 0) {
      huff &= incr - 1;
      huff += incr;
    } else {
      huff = 0;
    }

    /* go to next symbol, update count, len */
    sym++;
    if (--count[len] === 0) {
      if (len === max) { break; }
      len = lens[lens_index + work[sym]];
    }

    /* create new sub-table if needed */
    if (len > root && (huff & mask) !== low) {
      /* if first time, transition to sub-tables */
      if (drop === 0) {
        drop = root;
      }

      /* increment past last table */
      next += min;            /* here min is 1 << curr */

      /* determine length of next table */
      curr = len - drop;
      left = 1 << curr;
      while (curr + drop < max) {
        left -= count[curr + drop];
        if (left <= 0) { break; }
        curr++;
        left <<= 1;
      }

      /* check for enough space */
      used += 1 << curr;
      if ((type === LENS && used > ENOUGH_LENS) ||
        (type === DISTS && used > ENOUGH_DISTS)) {
        return 1;
      }

      /* point entry in root table to sub-table */
      low = huff & mask;
      /*table.op[low] = curr;
      table.bits[low] = root;
      table.val[low] = next - opts.table_index;*/
      table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;
    }
  }

  /* fill in remaining table entry if code is incomplete (guaranteed to have
   at most one remaining entry, since if the code is incomplete, the
   maximum code length that was allowed to get this far is one bit) */
  if (huff !== 0) {
    //table.op[next + huff] = 64;            /* invalid code marker */
    //table.bits[next + huff] = len - drop;
    //table.val[next + huff] = 0;
    table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;
  }

  /* set return parameters */
  //opts.table_index += used;
  opts.bits = root;
  return 0;
};
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 20188 characters]
//# sourceURL=webpack-internal:///../../../node_modules/pako/lib/zlib/inftrees.js
`);
              }
            ),
            /***/
            "../../../node_modules/pako/lib/zlib/messages.js": (
              /*!*******************************************************!*\
                !*** ../../../node_modules/pako/lib/zlib/messages.js ***!
                \*******************************************************/
              /***/
              (module) => {
                "use strict";
                eval("\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n  2:      'need dictionary',     /* Z_NEED_DICT       2  */\n  1:      'stream end',          /* Z_STREAM_END      1  */\n  0:      '',                    /* Z_OK              0  */\n  '-1':   'file error',          /* Z_ERRNO         (-1) */\n  '-2':   'stream error',        /* Z_STREAM_ERROR  (-2) */\n  '-3':   'data error',          /* Z_DATA_ERROR    (-3) */\n  '-4':   'insufficient memory', /* Z_MEM_ERROR     (-4) */\n  '-5':   'buffer error',        /* Z_BUF_ERROR     (-5) */\n  '-6':   'incompatible version' /* Z_VERSION_ERROR (-6) */\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bha28vbGliL3psaWIvbWVzc2FnZXMuanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhEQUE4RDtBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcGFrby9saWIvemxpYi9tZXNzYWdlcy5qcz9kMjkzIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuLy8gKEMpIDE5OTUtMjAxMyBKZWFuLWxvdXAgR2FpbGx5IGFuZCBNYXJrIEFkbGVyXG4vLyAoQykgMjAxNC0yMDE3IFZpdGFseSBQdXpyaW4gYW5kIEFuZHJleSBUdXBpdHNpblxuLy9cbi8vIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgJ2FzLWlzJywgd2l0aG91dCBhbnkgZXhwcmVzcyBvciBpbXBsaWVkXG4vLyB3YXJyYW50eS4gSW4gbm8gZXZlbnQgd2lsbCB0aGUgYXV0aG9ycyBiZSBoZWxkIGxpYWJsZSBmb3IgYW55IGRhbWFnZXNcbi8vIGFyaXNpbmcgZnJvbSB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGFueW9uZSB0byB1c2UgdGhpcyBzb2Z0d2FyZSBmb3IgYW55IHB1cnBvc2UsXG4vLyBpbmNsdWRpbmcgY29tbWVyY2lhbCBhcHBsaWNhdGlvbnMsIGFuZCB0byBhbHRlciBpdCBhbmQgcmVkaXN0cmlidXRlIGl0XG4vLyBmcmVlbHksIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnM6XG4vL1xuLy8gMS4gVGhlIG9yaWdpbiBvZiB0aGlzIHNvZnR3YXJlIG11c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkOyB5b3UgbXVzdCBub3Rcbi8vICAgY2xhaW0gdGhhdCB5b3Ugd3JvdGUgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLiBJZiB5b3UgdXNlIHRoaXMgc29mdHdhcmVcbi8vICAgaW4gYSBwcm9kdWN0LCBhbiBhY2tub3dsZWRnbWVudCBpbiB0aGUgcHJvZHVjdCBkb2N1bWVudGF0aW9uIHdvdWxkIGJlXG4vLyAgIGFwcHJlY2lhdGVkIGJ1dCBpcyBub3QgcmVxdWlyZWQuXG4vLyAyLiBBbHRlcmVkIHNvdXJjZSB2ZXJzaW9ucyBtdXN0IGJlIHBsYWlubHkgbWFya2VkIGFzIHN1Y2gsIGFuZCBtdXN0IG5vdCBiZVxuLy8gICBtaXNyZXByZXNlbnRlZCBhcyBiZWluZyB0aGUgb3JpZ2luYWwgc29mdHdhcmUuXG4vLyAzLiBUaGlzIG5vdGljZSBtYXkgbm90IGJlIHJlbW92ZWQgb3IgYWx0ZXJlZCBmcm9tIGFueSBzb3VyY2UgZGlzdHJpYnV0aW9uLlxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgMjogICAgICAnbmVlZCBkaWN0aW9uYXJ5JywgICAgIC8qIFpfTkVFRF9ESUNUICAgICAgIDIgICovXG4gIDE6ICAgICAgJ3N0cmVhbSBlbmQnLCAgICAgICAgICAvKiBaX1NUUkVBTV9FTkQgICAgICAxICAqL1xuICAwOiAgICAgICcnLCAgICAgICAgICAgICAgICAgICAgLyogWl9PSyAgICAgICAgICAgICAgMCAgKi9cbiAgJy0xJzogICAnZmlsZSBlcnJvcicsICAgICAgICAgIC8qIFpfRVJSTk8gICAgICAgICAoLTEpICovXG4gICctMic6ICAgJ3N0cmVhbSBlcnJvcicsICAgICAgICAvKiBaX1NUUkVBTV9FUlJPUiAgKC0yKSAqL1xuICAnLTMnOiAgICdkYXRhIGVycm9yJywgICAgICAgICAgLyogWl9EQVRBX0VSUk9SICAgICgtMykgKi9cbiAgJy00JzogICAnaW5zdWZmaWNpZW50IG1lbW9yeScsIC8qIFpfTUVNX0VSUk9SICAgICAoLTQpICovXG4gICctNSc6ICAgJ2J1ZmZlciBlcnJvcicsICAgICAgICAvKiBaX0JVRl9FUlJPUiAgICAgKC01KSAqL1xuICAnLTYnOiAgICdpbmNvbXBhdGlibGUgdmVyc2lvbicgLyogWl9WRVJTSU9OX0VSUk9SICgtNikgKi9cbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/pako/lib/zlib/messages.js\n");
              }
            ),
            /***/
            "../../../node_modules/pako/lib/zlib/trees.js": (
              /*!****************************************************!*\
                !*** ../../../node_modules/pako/lib/zlib/trees.js ***!
                \****************************************************/
              /***/
              (__unused_webpack_module, exports, __webpack_require__) => {
                "use strict";
                eval(`

// (C) 1995-2013 Jean-loup Gailly and Mark Adler
// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
//   claim that you wrote the original software. If you use this software
//   in a product, an acknowledgment in the product documentation would be
//   appreciated but is not required.
// 2. Altered source versions must be plainly marked as such, and must not be
//   misrepresented as being the original software.
// 3. This notice may not be removed or altered from any source distribution.

/* eslint-disable space-unary-ops */

var utils = __webpack_require__(/*! ../utils/common */ "../../../node_modules/pako/lib/utils/common.js");

/* Public constants ==========================================================*/
/* ===========================================================================*/


//var Z_FILTERED          = 1;
//var Z_HUFFMAN_ONLY      = 2;
//var Z_RLE               = 3;
var Z_FIXED               = 4;
//var Z_DEFAULT_STRATEGY  = 0;

/* Possible values of the data_type field (though see inflate()) */
var Z_BINARY              = 0;
var Z_TEXT                = 1;
//var Z_ASCII             = 1; // = Z_TEXT
var Z_UNKNOWN             = 2;

/*============================================================================*/


function zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }

// From zutil.h

var STORED_BLOCK = 0;
var STATIC_TREES = 1;
var DYN_TREES    = 2;
/* The three kinds of block type */

var MIN_MATCH    = 3;
var MAX_MATCH    = 258;
/* The minimum and maximum match lengths */

// From deflate.h
/* ===========================================================================
 * Internal compression state.
 */

var LENGTH_CODES  = 29;
/* number of length codes, not counting the special END_BLOCK code */

var LITERALS      = 256;
/* number of literal bytes 0..255 */

var L_CODES       = LITERALS + 1 + LENGTH_CODES;
/* number of Literal or Length codes, including the END_BLOCK code */

var D_CODES       = 30;
/* number of distance codes */

var BL_CODES      = 19;
/* number of codes used to transfer the bit lengths */

var HEAP_SIZE     = 2 * L_CODES + 1;
/* maximum heap size */

var MAX_BITS      = 15;
/* All codes must not exceed MAX_BITS bits */

var Buf_size      = 16;
/* size of bit buffer in bi_buf */


/* ===========================================================================
 * Constants
 */

var MAX_BL_BITS = 7;
/* Bit length codes must not exceed MAX_BL_BITS bits */

var END_BLOCK   = 256;
/* end of block literal code */

var REP_3_6     = 16;
/* repeat previous bit length 3-6 times (2 bits of repeat count) */

var REPZ_3_10   = 17;
/* repeat a zero length 3-10 times  (3 bits of repeat count) */

var REPZ_11_138 = 18;
/* repeat a zero length 11-138 times  (7 bits of repeat count) */

/* eslint-disable comma-spacing,array-bracket-spacing */
var extra_lbits =   /* extra bits for each length code */
  [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];

var extra_dbits =   /* extra bits for each distance code */
  [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];

var extra_blbits =  /* extra bits for each bit length code */
  [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];

var bl_order =
  [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];
/* eslint-enable comma-spacing,array-bracket-spacing */

/* The lengths of the bit length codes are sent in order of decreasing
 * probability, to avoid transmitting the lengths for unused bit length codes.
 */

/* ===========================================================================
 * Local data. These are initialized only once.
 */

// We pre-fill arrays with 0 to avoid uninitialized gaps

var DIST_CODE_LEN = 512; /* see definition of array dist_code below */

// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1
var static_ltree  = new Array((L_CODES + 2) * 2);
zero(static_ltree);
/* The static literal tree. Since the bit lengths are imposed, there is no
 * need for the L_CODES extra codes used during heap construction. However
 * The codes 286 and 287 are needed to build a canonical tree (see _tr_init
 * below).
 */

var static_dtree  = new Array(D_CODES * 2);
zero(static_dtree);
/* The static distance tree. (Actually a trivial tree since all codes use
 * 5 bits.)
 */

var _dist_code    = new Array(DIST_CODE_LEN);
zero(_dist_code);
/* Distance codes. The first 256 values correspond to the distances
 * 3 .. 258, the last 256 values correspond to the top 8 bits of
 * the 15 bit distances.
 */

var _length_code  = new Array(MAX_MATCH - MIN_MATCH + 1);
zero(_length_code);
/* length code for each normalized match length (0 == MIN_MATCH) */

var base_length   = new Array(LENGTH_CODES);
zero(base_length);
/* First normalized length for each code (0 = MIN_MATCH) */

var base_dist     = new Array(D_CODES);
zero(base_dist);
/* First normalized distance for each code (0 = distance of 1) */


function StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {

  this.static_tree  = static_tree;  /* static tree or NULL */
  this.extra_bits   = extra_bits;   /* extra bits for each code or NULL */
  this.extra_base   = extra_base;   /* base index for extra_bits */
  this.elems        = elems;        /* max number of elements in the tree */
  this.max_length   = max_length;   /* max bit length for the codes */

  // show if \`static_tree\` has data or dummy - needed for monomorphic objects
  this.has_stree    = static_tree && static_tree.length;
}


var static_l_desc;
var static_d_desc;
var static_bl_desc;


function TreeDesc(dyn_tree, stat_desc) {
  this.dyn_tree = dyn_tree;     /* the dynamic tree */
  this.max_code = 0;            /* largest code with non zero frequency */
  this.stat_desc = stat_desc;   /* the corresponding static tree */
}



function d_code(dist) {
  return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];
}


/* ===========================================================================
 * Output a short LSB first on the stream.
 * IN assertion: there is enough room in pendingBuf.
 */
function put_short(s, w) {
//    put_byte(s, (uch)((w) & 0xff));
//    put_byte(s, (uch)((ush)(w) >> 8));
  s.pending_buf[s.pending++] = (w) & 0xff;
  s.pending_buf[s.pending++] = (w >>> 8) & 0xff;
}


/* ===========================================================================
 * Send a value on a given number of bits.
 * IN assertion: length <= 16 and value fits in length bits.
 */
function send_bits(s, value, length) {
  if (s.bi_valid > (Buf_size - length)) {
    s.bi_buf |= (value << s.bi_valid) & 0xffff;
    put_short(s, s.bi_buf);
    s.bi_buf = value >> (Buf_size - s.bi_valid);
    s.bi_valid += length - Buf_size;
  } else {
    s.bi_buf |= (value << s.bi_valid) & 0xffff;
    s.bi_valid += length;
  }
}


function send_code(s, c, tree) {
  send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);
}


/* ===========================================================================
 * Reverse the first len bits of a code, using straightforward code (a faster
 * method would use a table)
 * IN assertion: 1 <= len <= 15
 */
function bi_reverse(code, len) {
  var res = 0;
  do {
    res |= code & 1;
    code >>>= 1;
    res <<= 1;
  } while (--len > 0);
  return res >>> 1;
}


/* ===========================================================================
 * Flush the bit buffer, keeping at most 7 bits in it.
 */
function bi_flush(s) {
  if (s.bi_valid === 16) {
    put_short(s, s.bi_buf);
    s.bi_buf = 0;
    s.bi_valid = 0;

  } else if (s.bi_valid >= 8) {
    s.pending_buf[s.pending++] = s.bi_buf & 0xff;
    s.bi_buf >>= 8;
    s.bi_valid -= 8;
  }
}


/* ===========================================================================
 * Compute the optimal bit lengths for a tree and update the total bit length
 * for the current block.
 * IN assertion: the fields freq and dad are set, heap[heap_max] and
 *    above are the tree nodes sorted by increasing frequency.
 * OUT assertions: the field len is set to the optimal bit length, the
 *     array bl_count contains the frequencies for each bit length.
 *     The length opt_len is updated; static_len is also updated if stree is
 *     not null.
 */
function gen_bitlen(s, desc)
//    deflate_state *s;
//    tree_desc *desc;    /* the tree descriptor */
{
  var tree            = desc.dyn_tree;
  var max_code        = desc.max_code;
  var stree           = desc.stat_desc.static_tree;
  var has_stree       = desc.stat_desc.has_stree;
  var extra           = desc.stat_desc.extra_bits;
  var base            = desc.stat_desc.extra_base;
  var max_length      = desc.stat_desc.max_length;
  var h;              /* heap index */
  var n, m;           /* iterate over the tree elements */
  var bits;           /* bit length */
  var xbits;          /* extra bits */
  var f;              /* frequency */
  var overflow = 0;   /* number of elements with bit length too large */

  for (bits = 0; bits <= MAX_BITS; bits++) {
    s.bl_count[bits] = 0;
  }

  /* In a first pass, compute the optimal bit lengths (which may
   * overflow in the case of the bit length tree).
   */
  tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */

  for (h = s.heap_max + 1; h < HEAP_SIZE; h++) {
    n = s.heap[h];
    bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;
    if (bits > max_length) {
      bits = max_length;
      overflow++;
    }
    tree[n * 2 + 1]/*.Len*/ = bits;
    /* We overwrite tree[n].Dad which is no longer needed */

    if (n > max_code) { continue; } /* not a leaf node */

    s.bl_count[bits]++;
    xbits = 0;
    if (n >= base) {
      xbits = extra[n - base];
    }
    f = tree[n * 2]/*.Freq*/;
    s.opt_len += f * (bits + xbits);
    if (has_stree) {
      s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);
    }
  }
  if (overflow === 0) { return; }

  // Trace((stderr,"\\nbit length overflow\\n"));
  /* This happens for example on obj2 and pic of the Calgary corpus */

  /* Find the first bit length which could increase: */
  do {
    bits = max_length - 1;
    while (s.bl_count[bits] === 0) { bits--; }
    s.bl_count[bits]--;      /* move one leaf down the tree */
    s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */
    s.bl_count[max_length]--;
    /* The brother of the overflow item also moves one step up,
     * but this does not affect bl_count[max_length]
     */
    overflow -= 2;
  } while (overflow > 0);

  /* Now recompute all bit lengths, scanning in increasing frequency.
   * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all
   * lengths instead of fixing only the wrong ones. This idea is taken
   * from 'ar' written by Haruhiko Okumura.)
   */
  for (bits = max_length; bits !== 0; bits--) {
    n = s.bl_count[bits];
    while (n !== 0) {
      m = s.heap[--h];
      if (m > max_code) { continue; }
      if (tree[m * 2 + 1]/*.Len*/ !== bits) {
        // Trace((stderr,"code %d bits %d->%d\\n", m, tree[m].Len, bits));
        s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;
        tree[m * 2 + 1]/*.Len*/ = bits;
      }
      n--;
    }
  }
}


/* ===========================================================================
 * Generate the codes for a given tree and bit counts (which need not be
 * optimal).
 * IN assertion: the array bl_count contains the bit length statistics for
 * the given tree and the field len is set for all tree elements.
 * OUT assertion: the field code is set for all tree elements of non
 *     zero code length.
 */
function gen_codes(tree, max_code, bl_count)
//    ct_data *tree;             /* the tree to decorate */
//    int max_code;              /* largest code with non zero frequency */
//    ushf *bl_count;            /* number of codes at each bit length */
{
  var next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */
  var code = 0;              /* running code value */
  var bits;                  /* bit index */
  var n;                     /* code index */

  /* The distribution counts are first used to generate the code values
   * without bit reversal.
   */
  for (bits = 1; bits <= MAX_BITS; bits++) {
    next_code[bits] = code = (code + bl_count[bits - 1]) << 1;
  }
  /* Check that the bit counts in bl_count are consistent. The last code
   * must be all ones.
   */
  //Assert (code + bl_count[MAX_BITS]-1 == (1<<MAX_BITS)-1,
  //        "inconsistent bit counts");
  //Tracev((stderr,"\\ngen_codes: max_code %d ", max_code));

  for (n = 0;  n <= max_code; n++) {
    var len = tree[n * 2 + 1]/*.Len*/;
    if (len === 0) { continue; }
    /* Now reverse the bits */
    tree[n * 2]/*.Code*/ = bi_reverse(next_code[len]++, len);

    //Tracecv(tree != static_ltree, (stderr,"\\nn %3d %c l %2d c %4x (%x) ",
    //     n, (isgraph(n) ? n : ' '), len, tree[n].Code, next_code[len]-1));
  }
}


/* ===========================================================================
 * Initialize the various 'constant' tables.
 */
function tr_static_init() {
  var n;        /* iterates over tree elements */
  var bits;     /* bit counter */
  var length;   /* length value */
  var code;     /* code value */
  var dist;     /* distance index */
  var bl_count = new Array(MAX_BITS + 1);
  /* number of codes at each bit length for an optimal tree */

  // do check in _tr_init()
  //if (static_init_done) return;

  /* For some embedded targets, global variables are not initialized: */
/*#ifdef NO_INIT_GLOBAL_POINTERS
  static_l_desc.static_tree = static_ltree;
  static_l_desc.extra_bits = extra_lbits;
  static_d_desc.static_tree = static_dtree;
  static_d_desc.extra_bits = extra_dbits;
  static_bl_desc.extra_bits = extra_blbits;
#endif*/

  /* Initialize the mapping length (0..255) -> length code (0..28) */
  length = 0;
  for (code = 0; code < LENGTH_CODES - 1; code++) {
    base_length[code] = length;
    for (n = 0; n < (1 << extra_lbits[code]); n++) {
      _length_code[length++] = code;
    }
  }
  //Assert (length == 256, "tr_static_init: length != 256");
  /* Note that the length 255 (match length 258) can be represented
   * in two different ways: code 284 + 5 bits or code 285, so we
   * overwrite length_code[255] to use the best encoding:
   */
  _length_code[length - 1] = code;

  /* Initialize the mapping dist (0..32K) -> dist code (0..29) */
  dist = 0;
  for (code = 0; code < 16; code++) {
    base_dist[code] = dist;
    for (n = 0; n < (1 << extra_dbits[code]); n++) {
      _dist_code[dist++] = code;
    }
  }
  //Assert (dist == 256, "tr_static_init: dist != 256");
  dist >>= 7; /* from now on, all distances are divided by 128 */
  for (; code < D_CODES; code++) {
    base_dist[code] = dist << 7;
    for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {
      _dist_code[256 + dist++] = code;
    }
  }
  //Assert (dist == 256, "tr_static_init: 256+dist != 512");

  /* Construct the codes of the static literal tree */
  for (bits = 0; bits <= MAX_BITS; bits++) {
    bl_count[bits] = 0;
  }

  n = 0;
  while (n <= 143) {
    static_ltree[n * 2 + 1]/*.Len*/ = 8;
    n++;
    bl_count[8]++;
  }
  while (n <= 255) {
    static_ltree[n * 2 + 1]/*.Len*/ = 9;
    n++;
    bl_count[9]++;
  }
  while (n <= 279) {
    static_ltree[n * 2 + 1]/*.Len*/ = 7;
    n++;
    bl_count[7]++;
  }
  while (n <= 287) {
    static_ltree[n * 2 + 1]/*.Len*/ = 8;
    n++;
    bl_count[8]++;
  }
  /* Codes 286 and 287 do not exist, but we must include them in the
   * tree construction to get a canonical Huffman tree (longest code
   * all ones)
   */
  gen_codes(static_ltree, L_CODES + 1, bl_count);

  /* The static distance tree is trivial: */
  for (n = 0; n < D_CODES; n++) {
    static_dtree[n * 2 + 1]/*.Len*/ = 5;
    static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);
  }

  // Now data ready and we can init static trees
  static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);
  static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0,          D_CODES, MAX_BITS);
  static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0,         BL_CODES, MAX_BL_BITS);

  //static_init_done = true;
}


/* ===========================================================================
 * Initialize a new block.
 */
function init_block(s) {
  var n; /* iterates over tree elements */

  /* Initialize the trees. */
  for (n = 0; n < L_CODES;  n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }
  for (n = 0; n < D_CODES;  n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }
  for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }

  s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;
  s.opt_len = s.static_len = 0;
  s.last_lit = s.matches = 0;
}


/* ===========================================================================
 * Flush the bit buffer and align the output on a byte boundary
 */
function bi_windup(s)
{
  if (s.bi_valid > 8) {
    put_short(s, s.bi_buf);
  } else if (s.bi_valid > 0) {
    //put_byte(s, (Byte)s->bi_buf);
    s.pending_buf[s.pending++] = s.bi_buf;
  }
  s.bi_buf = 0;
  s.bi_valid = 0;
}

/* ===========================================================================
 * Copy a stored block, storing first the length and its
 * one's complement if requested.
 */
function copy_block(s, buf, len, header)
//DeflateState *s;
//charf    *buf;    /* the input data */
//unsigned len;     /* its length */
//int      header;  /* true if block header must be written */
{
  bi_windup(s);        /* align on byte boundary */

  if (header) {
    put_short(s, len);
    put_short(s, ~len);
  }
//  while (len--) {
//    put_byte(s, *buf++);
//  }
  utils.arraySet(s.pending_buf, s.window, buf, len, s.pending);
  s.pending += len;
}

/* ===========================================================================
 * Compares to subtrees, using the tree depth as tie breaker when
 * the subtrees have equal frequency. This minimizes the worst case length.
 */
function smaller(tree, n, m, depth) {
  var _n2 = n * 2;
  var _m2 = m * 2;
  return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||
         (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));
}

/* ===========================================================================
 * Restore the heap property by moving down the tree starting at node k,
 * exchanging a node with the smallest of its two sons if necessary, stopping
 * when the heap property is re-established (each father smaller than its
 * two sons).
 */
function pqdownheap(s, tree, k)
//    deflate_state *s;
//    ct_data *tree;  /* the tree to restore */
//    int k;               /* node to move down */
{
  var v = s.heap[k];
  var j = k << 1;  /* left son of k */
  while (j <= s.heap_len) {
    /* Set j to the smallest of the two sons: */
    if (j < s.heap_len &&
      smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {
      j++;
    }
    /* Exit if v is smaller than both sons */
    if (smaller(tree, v, s.heap[j], s.depth)) { break; }

    /* Exchange v with the smallest son */
    s.heap[k] = s.heap[j];
    k = j;

    /* And continue down the tree, setting j to the left son of k */
    j <<= 1;
  }
  s.heap[k] = v;
}


// inlined manually
// var SMALLEST = 1;

/* ===========================================================================
 * Send the block data compressed using the given Huffman trees
 */
function compress_block(s, ltree, dtree)
//    deflate_state *s;
//    const ct_data *ltree; /* literal tree */
//    const ct_data *dtree; /* distance tree */
{
  var dist;           /* distance of matched string */
  var lc;             /* match length or unmatched char (if dist == 0) */
  var lx = 0;         /* running index in l_buf */
  var code;           /* the code to send */
  var extra;          /* number of extra bits to send */

  if (s.last_lit !== 0) {
    do {
      dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]);
      lc = s.pending_buf[s.l_buf + lx];
      lx++;

      if (dist === 0) {
        send_code(s, lc, ltree); /* send a literal byte */
        //Tracecv(isgraph(lc), (stderr," '%c' ", lc));
      } else {
        /* Here, lc is the match length - MIN_MATCH */
        code = _length_code[lc];
        send_code(s, code + LITERALS + 1, ltree); /* send the length code */
        extra = extra_lbits[code];
        if (extra !== 0) {
          lc -= base_length[code];
          send_bits(s, lc, extra);       /* send the extra length bits */
        }
        dist--; /* dist is now the match distance - 1 */
        code = d_code(dist);
        //Assert (code < D_CODES, "bad d_code");

        send_code(s, code, dtree);       /* send the distance code */
        extra = extra_dbits[code];
        if (extra !== 0) {
          dist -= base_dist[code];
          send_bits(s, dist, extra);   /* send the extra distance bits */
        }
      } /* literal or match pair ? */

      /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */
      //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,
      //       "pendingBuf overflow");

    } while (lx < s.last_lit);
  }

  send_code(s, END_BLOCK, ltree);
}


/* ===========================================================================
 * Construct one Huffman tree and assigns the code bit strings and lengths.
 * Update the total bit length for the current block.
 * IN assertion: the field freq is set for all tree elements.
 * OUT assertions: the fields len and code are set to the optimal bit length
 *     and corresponding code. The length opt_len is updated; static_len is
 *     also updated if stree is not null. The field max_code is set.
 */
function build_tree(s, desc)
//    deflate_state *s;
//    tree_desc *desc; /* the tree descriptor */
{
  var tree     = desc.dyn_tree;
  var stree    = desc.stat_desc.static_tree;
  var has_stree = desc.stat_desc.has_stree;
  var elems    = desc.stat_desc.elems;
  var n, m;          /* iterate over heap elements */
  var max_code = -1; /* largest code with non zero frequency */
  var node;          /* new node being created */

  /* Construct the initial heap, with least frequent element in
   * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].
   * heap[0] is not used.
   */
  s.heap_len = 0;
  s.heap_max = HEAP_SIZE;

  for (n = 0; n < elems; n++) {
    if (tree[n * 2]/*.Freq*/ !== 0) {
      s.heap[++s.heap_len] = max_code = n;
      s.depth[n] = 0;

    } else {
      tree[n * 2 + 1]/*.Len*/ = 0;
    }
  }

  /* The pkzip format requires that at least one distance code exists,
   * and that at least one bit should be sent even if there is only one
   * possible code. So to avoid special checks later on we force at least
   * two codes of non zero frequency.
   */
  while (s.heap_len < 2) {
    node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);
    tree[node * 2]/*.Freq*/ = 1;
    s.depth[node] = 0;
    s.opt_len--;

    if (has_stree) {
      s.static_len -= stree[node * 2 + 1]/*.Len*/;
    }
    /* node is 0 or 1 so it does not have extra bits */
  }
  desc.max_code = max_code;

  /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,
   * establish sub-heaps of increasing lengths:
   */
  for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }

  /* Construct the Huffman tree by repeatedly combining the least two
   * frequent nodes.
   */
  node = elems;              /* next internal node of the tree */
  do {
    //pqremove(s, tree, n);  /* n = node of least frequency */
    /*** pqremove ***/
    n = s.heap[1/*SMALLEST*/];
    s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];
    pqdownheap(s, tree, 1/*SMALLEST*/);
    /***/

    m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */

    s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */
    s.heap[--s.heap_max] = m;

    /* Create a new node father of n and m */
    tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;
    s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;
    tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;

    /* and insert the new node in the heap */
    s.heap[1/*SMALLEST*/] = node++;
    pqdownheap(s, tree, 1/*SMALLEST*/);

  } while (s.heap_len >= 2);

  s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];

  /* At this point, the fields freq and dad are set. We can now
   * generate the bit lengths.
   */
  gen_bitlen(s, desc);

  /* The field len is now set, we can generate the bit codes */
  gen_codes(tree, max_code, s.bl_count);
}


/* ===========================================================================
 * Scan a literal or distance tree to determine the frequencies of the codes
 * in the bit length tree.
 */
function scan_tree(s, tree, max_code)
//    deflate_state *s;
//    ct_data *tree;   /* the tree to be scanned */
//    int max_code;    /* and its largest code of non zero frequency */
{
  var n;                     /* iterates over all tree elements */
  var prevlen = -1;          /* last emitted length */
  var curlen;                /* length of current code */

  var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */

  var count = 0;             /* repeat count of the current code */
  var max_count = 7;         /* max repeat count */
  var min_count = 4;         /* min repeat count */

  if (nextlen === 0) {
    max_count = 138;
    min_count = 3;
  }
  tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */

  for (n = 0; n <= max_code; n++) {
    curlen = nextlen;
    nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;

    if (++count < max_count && curlen === nextlen) {
      continue;

    } else if (count < min_count) {
      s.bl_tree[curlen * 2]/*.Freq*/ += count;

    } else if (curlen !== 0) {

      if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }
      s.bl_tree[REP_3_6 * 2]/*.Freq*/++;

    } else if (count <= 10) {
      s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;

    } else {
      s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;
    }

    count = 0;
    prevlen = curlen;

    if (nextlen === 0) {
      max_count = 138;
      min_count = 3;

    } else if (curlen === nextlen) {
      max_count = 6;
      min_count = 3;

    } else {
      max_count = 7;
      min_count = 4;
    }
  }
}


/* ===========================================================================
 * Send a literal or distance tree in compressed form, using the codes in
 * bl_tree.
 */
function send_tree(s, tree, max_code)
//    deflate_state *s;
//    ct_data *tree; /* the tree to be scanned */
//    int max_code;       /* and its largest code of non zero frequency */
{
  var n;                     /* iterates over all tree elements */
  var prevlen = -1;          /* last emitted length */
  var curlen;                /* length of current code */

  var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */

  var count = 0;             /* repeat count of the current code */
  var max_count = 7;         /* max repeat count */
  var min_count = 4;         /* min repeat count */

  /* tree[max_code+1].Len = -1; */  /* guard already set */
  if (nextlen === 0) {
    max_count = 138;
    min_count = 3;
  }

  for (n = 0; n <= max_code; n++) {
    curlen = nextlen;
    nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;

    if (++count < max_count && curlen === nextlen) {
      continue;

    } else if (count < min_count) {
      do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);

    } else if (curlen !== 0) {
      if (curlen !== prevlen) {
        send_code(s, curlen, s.bl_tree);
        count--;
      }
      //Assert(count >= 3 && count <= 6, " 3_6?");
      send_code(s, REP_3_6, s.bl_tree);
      send_bits(s, count - 3, 2);

    } else if (count <= 10) {
      send_code(s, REPZ_3_10, s.bl_tree);
      send_bits(s, count - 3, 3);

    } else {
      send_code(s, REPZ_11_138, s.bl_tree);
      send_bits(s, count - 11, 7);
    }

    count = 0;
    prevlen = curlen;
    if (nextlen === 0) {
      max_count = 138;
      min_count = 3;

    } else if (curlen === nextlen) {
      max_count = 6;
      min_count = 3;

    } else {
      max_count = 7;
      min_count = 4;
    }
  }
}


/* ===========================================================================
 * Construct the Huffman tree for the bit lengths and return the index in
 * bl_order of the last bit length code to send.
 */
function build_bl_tree(s) {
  var max_blindex;  /* index of last bit length code of non zero freq */

  /* Determine the bit length frequencies for literal and distance trees */
  scan_tree(s, s.dyn_ltree, s.l_desc.max_code);
  scan_tree(s, s.dyn_dtree, s.d_desc.max_code);

  /* Build the bit length tree: */
  build_tree(s, s.bl_desc);
  /* opt_len now includes the length of the tree representations, except
   * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.
   */

  /* Determine the number of bit length codes to send. The pkzip format
   * requires that at least 4 bit length codes be sent. (appnote.txt says
   * 3 but the actual value used is 4.)
   */
  for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) {
    if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {
      break;
    }
  }
  /* Update opt_len to include the bit length tree and counts */
  s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;
  //Tracev((stderr, "\\ndyn trees: dyn %ld, stat %ld",
  //        s->opt_len, s->static_len));

  return max_blindex;
}


/* ===========================================================================
 * Send the header for a block using dynamic Huffman trees: the counts, the
 * lengths of the bit length codes, the literal tree and the distance tree.
 * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.
 */
function send_all_trees(s, lcodes, dcodes, blcodes)
//    deflate_state *s;
//    int lcodes, dcodes, blcodes; /* number of codes for each tree */
{
  var rank;                    /* index in bl_order */

  //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, "not enough codes");
  //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,
  //        "too many codes");
  //Tracev((stderr, "\\nbl counts: "));
  send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */
  send_bits(s, dcodes - 1,   5);
  send_bits(s, blcodes - 4,  4); /* not -3 as stated in appnote.txt */
  for (rank = 0; rank < blcodes; rank++) {
    //Tracev((stderr, "\\nbl code %2d ", bl_order[rank]));
    send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);
  }
  //Tracev((stderr, "\\nbl tree: sent %ld", s->bits_sent));

  send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */
  //Tracev((stderr, "\\nlit tree: sent %ld", s->bits_sent));

  send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */
  //Tracev((stderr, "\\ndist tree: sent %ld", s->bits_sent));
}


/* ===========================================================================
 * Check if the data type is TEXT or BINARY, using the following algorithm:
 * - TEXT if the two conditions below are satisfied:
 *    a) There are no non-portable control characters belonging to the
 *       "black list" (0..6, 14..25, 28..31).
 *    b) There is at least one printable character belonging to the
 *       "white list" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).
 * - BINARY otherwise.
 * - The following partially-portable control characters form a
 *   "gray list" that is ignored in this detection algorithm:
 *   (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).
 * IN assertion: the fields Freq of dyn_ltree are set.
 */
function detect_data_type(s) {
  /* black_mask is the bit mask of black-listed bytes
   * set bits 0..6, 14..25, and 28..31
   * 0xf3ffc07f = binary 11110011111111111100000001111111
   */
  var black_mask = 0xf3ffc07f;
  var n;

  /* Check for non-textual ("black-listed") bytes. */
  for (n = 0; n <= 31; n++, black_mask >>>= 1) {
    if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {
      return Z_BINARY;
    }
  }

  /* Check for textual ("white-listed") bytes. */
  if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||
      s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {
    return Z_TEXT;
  }
  for (n = 32; n < LITERALS; n++) {
    if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {
      return Z_TEXT;
    }
  }

  /* There are no "black-listed" or "white-listed" bytes:
   * this stream either is empty or has tolerated ("gray-listed") bytes only.
   */
  return Z_BINARY;
}


var static_init_done = false;

/* ===========================================================================
 * Initialize the tree data structures for a new zlib stream.
 */
function _tr_init(s)
{

  if (!static_init_done) {
    tr_static_init();
    static_init_done = true;
  }

  s.l_desc  = new TreeDesc(s.dyn_ltree, static_l_desc);
  s.d_desc  = new TreeDesc(s.dyn_dtree, static_d_desc);
  s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);

  s.bi_buf = 0;
  s.bi_valid = 0;

  /* Initialize the first block of the first file: */
  init_block(s);
}


/* ===========================================================================
 * Send a stored block
 */
function _tr_stored_block(s, buf, stored_len, last)
//DeflateState *s;
//charf *buf;       /* input block */
//ulg stored_len;   /* length of input block */
//int last;         /* one if this is the last block for a file */
{
  send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3);    /* send block type */
  copy_block(s, buf, stored_len, true); /* with header */
}


/* ===========================================================================
 * Send one empty static block to give enough lookahead for inflate.
 * This takes 10 bits, of which 7 may remain in the bit buffer.
 */
function _tr_align(s) {
  send_bits(s, STATIC_TREES << 1, 3);
  send_code(s, END_BLOCK, static_ltree);
  bi_flush(s);
}


/* ===========================================================================
 * Determine the best encoding for the current block: dynamic trees, static
 * trees or store, and output the encoded block to the zip file.
 */
function _tr_flush_block(s, buf, stored_len, last)
//DeflateState *s;
//charf *buf;       /* input block, or NULL if too old */
//ulg stored_len;   /* length of input block */
//int last;         /* one if this is the last block for a file */
{
  var opt_lenb, static_lenb;  /* opt_len and static_len in bytes */
  var max_blindex = 0;        /* index of last bit length code of non zero freq */

  /* Build the Huffman trees unless a stored block is forced */
  if (s.level > 0) {

    /* Check if the file is binary or text */
    if (s.strm.data_type === Z_UNKNOWN) {
      s.strm.data_type = detect_data_type(s);
    }

    /* Construct the literal and distance trees */
    build_tree(s, s.l_desc);
    // Tracev((stderr, "\\nlit data: dyn %ld, stat %ld", s->opt_len,
    //        s->static_len));

    build_tree(s, s.d_desc);
    // Tracev((stderr, "\\ndist data: dyn %ld, stat %ld", s->opt_len,
    //        s->static_len));
    /* At this point, opt_len and static_len are the total bit lengths of
     * the compressed block data, excluding the tree representations.
     */

    /* Build the bit length tree for the above two trees, and get the index
     * in bl_order of the last bit length code to send.
     */
    max_blindex = build_bl_tree(s);

    /* Determine the best encoding. Compute the block lengths in bytes. */
    opt_lenb = (s.opt_len + 3 + 7) >>> 3;
    static_lenb = (s.static_len + 3 + 7) >>> 3;

    // Tracev((stderr, "\\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u ",
    //        opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,
    //        s->last_lit));

    if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }

  } else {
    // Assert(buf != (char*)0, "lost buf");
    opt_lenb = static_lenb = stored_len + 5; /* force a stored block */
  }

  if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {
    /* 4: two words for the lengths */

    /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.
     * Otherwise we can't have processed more than WSIZE input bytes since
     * the last block flush, because compression would have been
     * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to
     * transform a block into a stored block.
     */
    _tr_stored_block(s, buf, stored_len, last);

  } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {

    send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);
    compress_block(s, static_ltree, static_dtree);

  } else {
    send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);
    send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);
    compress_block(s, s.dyn_ltree, s.dyn_dtree);
  }
  // Assert (s->compressed_len == s->bits_sent, "bad compressed size");
  /* The above check is made mod 2^32, for files larger than 512 MB
   * and uLong implemented on 32 bits.
   */
  init_block(s);

  if (last) {
    bi_windup(s);
  }
  // Tracev((stderr,"\\ncomprlen %lu(%lu) ", s->compressed_len>>3,
  //       s->compressed_len-7*last));
}

/* ===========================================================================
 * Save the match info and tally the frequency counts. Return true if
 * the current block must be flushed.
 */
function _tr_tally(s, dist, lc)
//    deflate_state *s;
//    unsigned dist;  /* distance of matched string */
//    unsigned lc;    /* match length-MIN_MATCH or unmatched char (if dist==0) */
{
  //var out_length, in_length, dcode;

  s.pending_buf[s.d_buf + s.last_lit * 2]     = (dist >>> 8) & 0xff;
  s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;

  s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;
  s.last_lit++;

  if (dist === 0) {
    /* lc is the unmatched char */
    s.dyn_ltree[lc * 2]/*.Freq*/++;
  } else {
    s.matches++;
    /* Here, lc is the match length - MIN_MATCH */
    dist--;             /* dist = match distance - 1 */
    //Assert((ush)dist < (ush)MAX_DIST(s) &&
    //       (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&
    //       (ush)d_code(dist) < (ush)D_CODES,  "_tr_tally: bad match");

    s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++;
    s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;
  }

// (!) This block is disabled in zlib defaults,
// don't enable it for binary compatibility

//#ifdef TRUNCATE_BLOCK
//  /* Try to guess if it is profitable to stop the current block here */
//  if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {
//    /* Compute an upper bound for the compressed length */
//    out_length = s.last_lit*8;
//    in_length = s.strstart - s.block_start;
//
//    for (dcode = 0; dcode < D_CODES; dcode++) {
//      out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);
//    }
//    out_length >>>= 3;
//    //Tracev((stderr,"\\nlast_lit %u, in %ld, out ~%ld(%ld%%) ",
//    //       s->last_lit, in_length, out_length,
//    //       100L - out_length*100L/in_length));
//    if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {
//      return true;
//    }
//  }
//#endif

  return (s.last_lit === s.lit_bufsize - 1);
  /* We avoid equality with lit_bufsize because of wraparound at 64K
   * on 16 bit machines and because stored blocks are restricted to
   * 64K-1 bytes.
   */
}

exports._tr_init  = _tr_init;
exports._tr_stored_block = _tr_stored_block;
exports._tr_flush_block  = _tr_flush_block;
exports._tr_tally = _tr_tally;
exports._tr_align = _tr_align;
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 64316 characters]
//# sourceURL=webpack-internal:///../../../node_modules/pako/lib/zlib/trees.js
`);
              }
            ),
            /***/
            "../../../node_modules/pako/lib/zlib/zstream.js": (
              /*!******************************************************!*\
                !*** ../../../node_modules/pako/lib/zlib/zstream.js ***!
                \******************************************************/
              /***/
              (module) => {
                "use strict";
                eval("\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction ZStream() {\n  /* next input byte */\n  this.input = null; // JS specific, because we have no pointers\n  this.next_in = 0;\n  /* number of bytes available at input */\n  this.avail_in = 0;\n  /* total number of input bytes read so far */\n  this.total_in = 0;\n  /* next output byte should be put there */\n  this.output = null; // JS specific, because we have no pointers\n  this.next_out = 0;\n  /* remaining free space at output */\n  this.avail_out = 0;\n  /* total number of bytes output so far */\n  this.total_out = 0;\n  /* last error message, NULL if no error */\n  this.msg = ''/*Z_NULL*/;\n  /* not visible by applications */\n  this.state = null;\n  /* best guess about the data type: binary or text */\n  this.data_type = 2/*Z_UNKNOWN*/;\n  /* adler32 value of the uncompressed data */\n  this.adler = 0;\n}\n\nmodule.exports = ZStream;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bha28vbGliL3psaWIvenN0cmVhbS5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOERBQThEO0FBQzlEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQjtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wYWtvL2xpYi96bGliL3pzdHJlYW0uanM/YzVlYiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbi8vIChDKSAxOTk1LTIwMTMgSmVhbi1sb3VwIEdhaWxseSBhbmQgTWFyayBBZGxlclxuLy8gKEMpIDIwMTQtMjAxNyBWaXRhbHkgUHV6cmluIGFuZCBBbmRyZXkgVHVwaXRzaW5cbi8vXG4vLyBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZFxuLy8gd2FycmFudHkuIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBkYW1hZ2VzXG4vLyBhcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLFxuLy8gaW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kIHJlZGlzdHJpYnV0ZSBpdFxuLy8gZnJlZWx5LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOlxuLy9cbi8vIDEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3Qgbm90XG4vLyAgIGNsYWltIHRoYXQgeW91IHdyb3RlIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4gSWYgeW91IHVzZSB0aGlzIHNvZnR3YXJlXG4vLyAgIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbiB3b3VsZCBiZVxuLy8gICBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLlxuLy8gMi4gQWx0ZXJlZCBzb3VyY2UgdmVyc2lvbnMgbXVzdCBiZSBwbGFpbmx5IG1hcmtlZCBhcyBzdWNoLCBhbmQgbXVzdCBub3QgYmVcbi8vICAgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLlxuLy8gMy4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlIGRpc3RyaWJ1dGlvbi5cblxuZnVuY3Rpb24gWlN0cmVhbSgpIHtcbiAgLyogbmV4dCBpbnB1dCBieXRlICovXG4gIHRoaXMuaW5wdXQgPSBudWxsOyAvLyBKUyBzcGVjaWZpYywgYmVjYXVzZSB3ZSBoYXZlIG5vIHBvaW50ZXJzXG4gIHRoaXMubmV4dF9pbiA9IDA7XG4gIC8qIG51bWJlciBvZiBieXRlcyBhdmFpbGFibGUgYXQgaW5wdXQgKi9cbiAgdGhpcy5hdmFpbF9pbiA9IDA7XG4gIC8qIHRvdGFsIG51bWJlciBvZiBpbnB1dCBieXRlcyByZWFkIHNvIGZhciAqL1xuICB0aGlzLnRvdGFsX2luID0gMDtcbiAgLyogbmV4dCBvdXRwdXQgYnl0ZSBzaG91bGQgYmUgcHV0IHRoZXJlICovXG4gIHRoaXMub3V0cHV0ID0gbnVsbDsgLy8gSlMgc3BlY2lmaWMsIGJlY2F1c2Ugd2UgaGF2ZSBubyBwb2ludGVyc1xuICB0aGlzLm5leHRfb3V0ID0gMDtcbiAgLyogcmVtYWluaW5nIGZyZWUgc3BhY2UgYXQgb3V0cHV0ICovXG4gIHRoaXMuYXZhaWxfb3V0ID0gMDtcbiAgLyogdG90YWwgbnVtYmVyIG9mIGJ5dGVzIG91dHB1dCBzbyBmYXIgKi9cbiAgdGhpcy50b3RhbF9vdXQgPSAwO1xuICAvKiBsYXN0IGVycm9yIG1lc3NhZ2UsIE5VTEwgaWYgbm8gZXJyb3IgKi9cbiAgdGhpcy5tc2cgPSAnJy8qWl9OVUxMKi87XG4gIC8qIG5vdCB2aXNpYmxlIGJ5IGFwcGxpY2F0aW9ucyAqL1xuICB0aGlzLnN0YXRlID0gbnVsbDtcbiAgLyogYmVzdCBndWVzcyBhYm91dCB0aGUgZGF0YSB0eXBlOiBiaW5hcnkgb3IgdGV4dCAqL1xuICB0aGlzLmRhdGFfdHlwZSA9IDIvKlpfVU5LTk9XTiovO1xuICAvKiBhZGxlcjMyIHZhbHVlIG9mIHRoZSB1bmNvbXByZXNzZWQgZGF0YSAqL1xuICB0aGlzLmFkbGVyID0gMDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBaU3RyZWFtO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/pako/lib/zlib/zstream.js\n");
              }
            ),
            /***/
            "../../../node_modules/path-data-parser/lib/absolutize.js": (
              /*!****************************************************************!*\
                !*** ../../../node_modules/path-data-parser/lib/absolutize.js ***!
                \****************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "absolutize": () => (/* binding */ absolutize)
/* harmony export */ });
// Translate relative commands to absolute commands
function absolutize(segments) {
    let cx = 0, cy = 0;
    let subx = 0, suby = 0;
    const out = [];
    for (const { key, data } of segments) {
        switch (key) {
            case 'M':
                out.push({ key: 'M', data: [...data] });
                [cx, cy] = data;
                [subx, suby] = data;
                break;
            case 'm':
                cx += data[0];
                cy += data[1];
                out.push({ key: 'M', data: [cx, cy] });
                subx = cx;
                suby = cy;
                break;
            case 'L':
                out.push({ key: 'L', data: [...data] });
                [cx, cy] = data;
                break;
            case 'l':
                cx += data[0];
                cy += data[1];
                out.push({ key: 'L', data: [cx, cy] });
                break;
            case 'C':
                out.push({ key: 'C', data: [...data] });
                cx = data[4];
                cy = data[5];
                break;
            case 'c': {
                const newdata = data.map((d, i) => (i % 2) ? (d + cy) : (d + cx));
                out.push({ key: 'C', data: newdata });
                cx = newdata[4];
                cy = newdata[5];
                break;
            }
            case 'Q':
                out.push({ key: 'Q', data: [...data] });
                cx = data[2];
                cy = data[3];
                break;
            case 'q': {
                const newdata = data.map((d, i) => (i % 2) ? (d + cy) : (d + cx));
                out.push({ key: 'Q', data: newdata });
                cx = newdata[2];
                cy = newdata[3];
                break;
            }
            case 'A':
                out.push({ key: 'A', data: [...data] });
                cx = data[5];
                cy = data[6];
                break;
            case 'a':
                cx += data[5];
                cy += data[6];
                out.push({ key: 'A', data: [data[0], data[1], data[2], data[3], data[4], cx, cy] });
                break;
            case 'H':
                out.push({ key: 'H', data: [...data] });
                cx = data[0];
                break;
            case 'h':
                cx += data[0];
                out.push({ key: 'H', data: [cx] });
                break;
            case 'V':
                out.push({ key: 'V', data: [...data] });
                cy = data[0];
                break;
            case 'v':
                cy += data[0];
                out.push({ key: 'V', data: [cy] });
                break;
            case 'S':
                out.push({ key: 'S', data: [...data] });
                cx = data[2];
                cy = data[3];
                break;
            case 's': {
                const newdata = data.map((d, i) => (i % 2) ? (d + cy) : (d + cx));
                out.push({ key: 'S', data: newdata });
                cx = newdata[2];
                cy = newdata[3];
                break;
            }
            case 'T':
                out.push({ key: 'T', data: [...data] });
                cx = data[0];
                cy = data[1];
                break;
            case 't':
                cx += data[0];
                cy += data[1];
                out.push({ key: 'T', data: [cx, cy] });
                break;
            case 'Z':
            case 'z':
                out.push({ key: 'Z', data: [] });
                cx = subx;
                cy = suby;
                break;
        }
    }
    return out;
}
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6416 characters]
//# sourceURL=webpack-internal:///../../../node_modules/path-data-parser/lib/absolutize.js
`);
              }
            ),
            /***/
            "../../../node_modules/path-data-parser/lib/index.js": (
              /*!***********************************************************!*\
                !*** ../../../node_modules/path-data-parser/lib/index.js ***!
                \***********************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "absolutize": () => (/* reexport safe */ _absolutize_js__WEBPACK_IMPORTED_MODULE_1__.absolutize),\n/* harmony export */   "normalize": () => (/* reexport safe */ _normalize_js__WEBPACK_IMPORTED_MODULE_2__.normalize),\n/* harmony export */   "parsePath": () => (/* reexport safe */ _parser_js__WEBPACK_IMPORTED_MODULE_0__.parsePath),\n/* harmony export */   "serialize": () => (/* reexport safe */ _parser_js__WEBPACK_IMPORTED_MODULE_0__.serialize)\n/* harmony export */ });\n/* harmony import */ var _parser_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./parser.js */ "../../../node_modules/path-data-parser/lib/parser.js");\n/* harmony import */ var _absolutize_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./absolutize.js */ "../../../node_modules/path-data-parser/lib/absolutize.js");\n/* harmony import */ var _normalize_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./normalize.js */ "../../../node_modules/path-data-parser/lib/normalize.js");\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3BhdGgtZGF0YS1wYXJzZXIvbGliL2luZGV4LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBbUQ7QUFDTjtBQUNGIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wYXRoLWRhdGEtcGFyc2VyL2xpYi9pbmRleC5qcz8wOGM0Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IHBhcnNlUGF0aCwgc2VyaWFsaXplIH0gZnJvbSAnLi9wYXJzZXIuanMnO1xuZXhwb3J0IHsgYWJzb2x1dGl6ZSB9IGZyb20gJy4vYWJzb2x1dGl6ZS5qcyc7XG5leHBvcnQgeyBub3JtYWxpemUgfSBmcm9tICcuL25vcm1hbGl6ZS5qcyc7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/path-data-parser/lib/index.js\n');
              }
            ),
            /***/
            "../../../node_modules/path-data-parser/lib/normalize.js": (
              /*!***************************************************************!*\
                !*** ../../../node_modules/path-data-parser/lib/normalize.js ***!
                \***************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "normalize": () => (/* binding */ normalize)
/* harmony export */ });
// Normalize path to include only M, L, C, and Z commands
function normalize(segments) {
    const out = [];
    let lastType = '';
    let cx = 0, cy = 0;
    let subx = 0, suby = 0;
    let lcx = 0, lcy = 0;
    for (const { key, data } of segments) {
        switch (key) {
            case 'M':
                out.push({ key: 'M', data: [...data] });
                [cx, cy] = data;
                [subx, suby] = data;
                break;
            case 'C':
                out.push({ key: 'C', data: [...data] });
                cx = data[4];
                cy = data[5];
                lcx = data[2];
                lcy = data[3];
                break;
            case 'L':
                out.push({ key: 'L', data: [...data] });
                [cx, cy] = data;
                break;
            case 'H':
                cx = data[0];
                out.push({ key: 'L', data: [cx, cy] });
                break;
            case 'V':
                cy = data[0];
                out.push({ key: 'L', data: [cx, cy] });
                break;
            case 'S': {
                let cx1 = 0, cy1 = 0;
                if (lastType === 'C' || lastType === 'S') {
                    cx1 = cx + (cx - lcx);
                    cy1 = cy + (cy - lcy);
                }
                else {
                    cx1 = cx;
                    cy1 = cy;
                }
                out.push({ key: 'C', data: [cx1, cy1, ...data] });
                lcx = data[0];
                lcy = data[1];
                cx = data[2];
                cy = data[3];
                break;
            }
            case 'T': {
                const [x, y] = data;
                let x1 = 0, y1 = 0;
                if (lastType === 'Q' || lastType === 'T') {
                    x1 = cx + (cx - lcx);
                    y1 = cy + (cy - lcy);
                }
                else {
                    x1 = cx;
                    y1 = cy;
                }
                const cx1 = cx + 2 * (x1 - cx) / 3;
                const cy1 = cy + 2 * (y1 - cy) / 3;
                const cx2 = x + 2 * (x1 - x) / 3;
                const cy2 = y + 2 * (y1 - y) / 3;
                out.push({ key: 'C', data: [cx1, cy1, cx2, cy2, x, y] });
                lcx = x1;
                lcy = y1;
                cx = x;
                cy = y;
                break;
            }
            case 'Q': {
                const [x1, y1, x, y] = data;
                const cx1 = cx + 2 * (x1 - cx) / 3;
                const cy1 = cy + 2 * (y1 - cy) / 3;
                const cx2 = x + 2 * (x1 - x) / 3;
                const cy2 = y + 2 * (y1 - y) / 3;
                out.push({ key: 'C', data: [cx1, cy1, cx2, cy2, x, y] });
                lcx = x1;
                lcy = y1;
                cx = x;
                cy = y;
                break;
            }
            case 'A': {
                const r1 = Math.abs(data[0]);
                const r2 = Math.abs(data[1]);
                const angle = data[2];
                const largeArcFlag = data[3];
                const sweepFlag = data[4];
                const x = data[5];
                const y = data[6];
                if (r1 === 0 || r2 === 0) {
                    out.push({ key: 'C', data: [cx, cy, x, y, x, y] });
                    cx = x;
                    cy = y;
                }
                else {
                    if (cx !== x || cy !== y) {
                        const curves = arcToCubicCurves(cx, cy, x, y, r1, r2, angle, largeArcFlag, sweepFlag);
                        curves.forEach(function (curve) {
                            out.push({ key: 'C', data: curve });
                        });
                        cx = x;
                        cy = y;
                    }
                }
                break;
            }
            case 'Z':
                out.push({ key: 'Z', data: [] });
                cx = subx;
                cy = suby;
                break;
        }
        lastType = key;
    }
    return out;
}
function degToRad(degrees) {
    return (Math.PI * degrees) / 180;
}
function rotate(x, y, angleRad) {
    const X = x * Math.cos(angleRad) - y * Math.sin(angleRad);
    const Y = x * Math.sin(angleRad) + y * Math.cos(angleRad);
    return [X, Y];
}
function arcToCubicCurves(x1, y1, x2, y2, r1, r2, angle, largeArcFlag, sweepFlag, recursive) {
    const angleRad = degToRad(angle);
    let params = [];
    let f1 = 0, f2 = 0, cx = 0, cy = 0;
    if (recursive) {
        [f1, f2, cx, cy] = recursive;
    }
    else {
        [x1, y1] = rotate(x1, y1, -angleRad);
        [x2, y2] = rotate(x2, y2, -angleRad);
        const x = (x1 - x2) / 2;
        const y = (y1 - y2) / 2;
        let h = (x * x) / (r1 * r1) + (y * y) / (r2 * r2);
        if (h > 1) {
            h = Math.sqrt(h);
            r1 = h * r1;
            r2 = h * r2;
        }
        const sign = (largeArcFlag === sweepFlag) ? -1 : 1;
        const r1Pow = r1 * r1;
        const r2Pow = r2 * r2;
        const left = r1Pow * r2Pow - r1Pow * y * y - r2Pow * x * x;
        const right = r1Pow * y * y + r2Pow * x * x;
        const k = sign * Math.sqrt(Math.abs(left / right));
        cx = k * r1 * y / r2 + (x1 + x2) / 2;
        cy = k * -r2 * x / r1 + (y1 + y2) / 2;
        f1 = Math.asin(parseFloat(((y1 - cy) / r2).toFixed(9)));
        f2 = Math.asin(parseFloat(((y2 - cy) / r2).toFixed(9)));
        if (x1 < cx) {
            f1 = Math.PI - f1;
        }
        if (x2 < cx) {
            f2 = Math.PI - f2;
        }
        if (f1 < 0) {
            f1 = Math.PI * 2 + f1;
        }
        if (f2 < 0) {
            f2 = Math.PI * 2 + f2;
        }
        if (sweepFlag && f1 > f2) {
            f1 = f1 - Math.PI * 2;
        }
        if (!sweepFlag && f2 > f1) {
            f2 = f2 - Math.PI * 2;
        }
    }
    let df = f2 - f1;
    if (Math.abs(df) > (Math.PI * 120 / 180)) {
        const f2old = f2;
        const x2old = x2;
        const y2old = y2;
        if (sweepFlag && f2 > f1) {
            f2 = f1 + (Math.PI * 120 / 180) * (1);
        }
        else {
            f2 = f1 + (Math.PI * 120 / 180) * (-1);
        }
        x2 = cx + r1 * Math.cos(f2);
        y2 = cy + r2 * Math.sin(f2);
        params = arcToCubicCurves(x2, y2, x2old, y2old, r1, r2, angle, 0, sweepFlag, [f2, f2old, cx, cy]);
    }
    df = f2 - f1;
    const c1 = Math.cos(f1);
    const s1 = Math.sin(f1);
    const c2 = Math.cos(f2);
    const s2 = Math.sin(f2);
    const t = Math.tan(df / 4);
    const hx = 4 / 3 * r1 * t;
    const hy = 4 / 3 * r2 * t;
    const m1 = [x1, y1];
    const m2 = [x1 + hx * s1, y1 - hy * c1];
    const m3 = [x2 + hx * s2, y2 - hy * c2];
    const m4 = [x2, y2];
    m2[0] = 2 * m1[0] - m2[0];
    m2[1] = 2 * m1[1] - m2[1];
    if (recursive) {
        return [m2, m3, m4].concat(params);
    }
    else {
        params = [m2, m3, m4].concat(params);
        const curves = [];
        for (let i = 0; i < params.length; i += 3) {
            const r1 = rotate(params[i][0], params[i][1], angleRad);
            const r2 = rotate(params[i + 1][0], params[i + 1][1], angleRad);
            const r3 = rotate(params[i + 2][0], params[i + 2][1], angleRad);
            curves.push([r1[0], r1[1], r2[0], r2[1], r3[0], r3[1]]);
        }
        return curves;
    }
}
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 12140 characters]
//# sourceURL=webpack-internal:///../../../node_modules/path-data-parser/lib/normalize.js
`);
              }
            ),
            /***/
            "../../../node_modules/path-data-parser/lib/parser.js": (
              /*!************************************************************!*\
                !*** ../../../node_modules/path-data-parser/lib/parser.js ***!
                \************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"parsePath\": () => (/* binding */ parsePath),\n/* harmony export */   \"serialize\": () => (/* binding */ serialize)\n/* harmony export */ });\nconst COMMAND = 0;\nconst NUMBER = 1;\nconst EOD = 2;\nconst PARAMS = { A: 7, a: 7, C: 6, c: 6, H: 1, h: 1, L: 2, l: 2, M: 2, m: 2, Q: 4, q: 4, S: 4, s: 4, T: 2, t: 2, V: 1, v: 1, Z: 0, z: 0 };\nfunction tokenize(d) {\n    const tokens = new Array();\n    while (d !== '') {\n        if (d.match(/^([ \\t\\r\\n,]+)/)) {\n            d = d.substr(RegExp.$1.length);\n        }\n        else if (d.match(/^([aAcChHlLmMqQsStTvVzZ])/)) {\n            tokens[tokens.length] = { type: COMMAND, text: RegExp.$1 };\n            d = d.substr(RegExp.$1.length);\n        }\n        else if (d.match(/^(([-+]?[0-9]+(\\.[0-9]*)?|[-+]?\\.[0-9]+)([eE][-+]?[0-9]+)?)/)) {\n            tokens[tokens.length] = { type: NUMBER, text: `${parseFloat(RegExp.$1)}` };\n            d = d.substr(RegExp.$1.length);\n        }\n        else {\n            return [];\n        }\n    }\n    tokens[tokens.length] = { type: EOD, text: '' };\n    return tokens;\n}\nfunction isType(token, type) {\n    return token.type === type;\n}\nfunction parsePath(d) {\n    const segments = [];\n    const tokens = tokenize(d);\n    let mode = 'BOD';\n    let index = 0;\n    let token = tokens[index];\n    while (!isType(token, EOD)) {\n        let paramsCount = 0;\n        const params = [];\n        if (mode === 'BOD') {\n            if (token.text === 'M' || token.text === 'm') {\n                index++;\n                paramsCount = PARAMS[token.text];\n                mode = token.text;\n            }\n            else {\n                return parsePath('M0,0' + d);\n            }\n        }\n        else if (isType(token, NUMBER)) {\n            paramsCount = PARAMS[mode];\n        }\n        else {\n            index++;\n            paramsCount = PARAMS[token.text];\n            mode = token.text;\n        }\n        if ((index + paramsCount) < tokens.length) {\n            for (let i = index; i < index + paramsCount; i++) {\n                const numbeToken = tokens[i];\n                if (isType(numbeToken, NUMBER)) {\n                    params[params.length] = +numbeToken.text;\n                }\n                else {\n                    throw new Error('Param not a number: ' + mode + ',' + numbeToken.text);\n                }\n            }\n            if (typeof PARAMS[mode] === 'number') {\n                const segment = { key: mode, data: params };\n                segments.push(segment);\n                index += paramsCount;\n                token = tokens[index];\n                if (mode === 'M')\n                    mode = 'L';\n                if (mode === 'm')\n                    mode = 'l';\n            }\n            else {\n                throw new Error('Bad segment: ' + mode);\n            }\n        }\n        else {\n            throw new Error('Path data ended short');\n        }\n    }\n    return segments;\n}\nfunction serialize(segments) {\n    const tokens = [];\n    for (const { key, data } of segments) {\n        tokens.push(key);\n        switch (key) {\n            case 'C':\n            case 'c':\n                tokens.push(data[0], `${data[1]},`, data[2], `${data[3]},`, data[4], data[5]);\n                break;\n            case 'S':\n            case 's':\n            case 'Q':\n            case 'q':\n                tokens.push(data[0], `${data[1]},`, data[2], data[3]);\n                break;\n            default:\n                tokens.push(...data);\n                break;\n        }\n    }\n    return tokens.join(' ');\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5852 characters]\n//# sourceURL=webpack-internal:///../../../node_modules/path-data-parser/lib/parser.js\n");
              }
            ),
            /***/
            "../../../node_modules/perfect-freehand/dist/esm/index.js": (
              /*!****************************************************************!*\
                !*** ../../../node_modules/perfect-freehand/dist/esm/index.js ***!
                \****************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (/* binding */ _e),\n/* harmony export */   "getStroke": () => (/* binding */ ae),\n/* harmony export */   "getStrokeOutlinePoints": () => (/* binding */ ce),\n/* harmony export */   "getStrokePoints": () => (/* binding */ me)\n/* harmony export */ });\nfunction $(e,t,u,x=h=>h){return e*x(.5-t*(.5-u))}function se(e){return[-e[0],-e[1]]}function l(e,t){return[e[0]+t[0],e[1]+t[1]]}function a(e,t){return[e[0]-t[0],e[1]-t[1]]}function b(e,t){return[e[0]*t,e[1]*t]}function he(e,t){return[e[0]/t,e[1]/t]}function R(e){return[e[1],-e[0]]}function B(e,t){return e[0]*t[0]+e[1]*t[1]}function ue(e,t){return e[0]===t[0]&&e[1]===t[1]}function ge(e){return Math.hypot(e[0],e[1])}function de(e){return e[0]*e[0]+e[1]*e[1]}function A(e,t){return de(a(e,t))}function G(e){return he(e,ge(e))}function ie(e,t){return Math.hypot(e[1]-t[1],e[0]-t[0])}function L(e,t,u){let x=Math.sin(u),h=Math.cos(u),y=e[0]-t[0],n=e[1]-t[1],f=y*h-n*x,d=y*x+n*h;return[f+t[0],d+t[1]]}function K(e,t,u){return l(e,b(a(t,e),u))}function ee(e,t,u){return l(e,b(t,u))}var{min:C,PI:xe}=Math,pe=.275,V=xe+1e-4;function ce(e,t={}){let{size:u=16,smoothing:x=.5,thinning:h=.5,simulatePressure:y=!0,easing:n=r=>r,start:f={},end:d={},last:D=!1}=t,{cap:S=!0,easing:j=r=>r*(2-r)}=f,{cap:q=!0,easing:c=r=>--r*r*r+1}=d;if(e.length===0||u<=0)return[];let p=e[e.length-1].runningLength,g=f.taper===!1?0:f.taper===!0?Math.max(u,p):f.taper,T=d.taper===!1?0:d.taper===!0?Math.max(u,p):d.taper,te=Math.pow(u*x,2),_=[],M=[],H=e.slice(0,10).reduce((r,i)=>{let o=i.pressure;if(y){let s=C(1,i.distance/u),W=C(1,1-s);o=C(1,r+(W-r)*(s*pe))}return(r+o)/2},e[0].pressure),m=$(u,h,e[e.length-1].pressure,n),U,X=e[0].vector,z=e[0].point,F=z,O=z,E=F,J=!1;for(let r=0;r<e.length;r++){let{pressure:i}=e[r],{point:o,vector:s,distance:W,runningLength:I}=e[r];if(r<e.length-1&&p-I<3)continue;if(h){if(y){let v=C(1,W/u),Z=C(1,1-v);i=C(1,H+(Z-H)*(v*pe))}m=$(u,h,i,n)}else m=u/2;U===void 0&&(U=m);let le=I<g?j(I/g):1,fe=p-I<T?c((p-I)/T):1;m=Math.max(.01,m*Math.min(le,fe));let re=(r<e.length-1?e[r+1]:e[r]).vector,Y=r<e.length-1?B(s,re):1,be=B(s,X)<0&&!J,ne=Y!==null&&Y<0;if(be||ne){let v=b(R(X),m);for(let Z=1/13,w=0;w<=1;w+=Z)O=L(a(o,v),o,V*w),_.push(O),E=L(l(o,v),o,V*-w),M.push(E);z=O,F=E,ne&&(J=!0);continue}if(J=!1,r===e.length-1){let v=b(R(s),m);_.push(a(o,v)),M.push(l(o,v));continue}let oe=b(R(K(re,s,Y)),m);O=a(o,oe),(r<=1||A(z,O)>te)&&(_.push(O),z=O),E=l(o,oe),(r<=1||A(F,E)>te)&&(M.push(E),F=E),H=i,X=s}let P=e[0].point.slice(0,2),k=e.length>1?e[e.length-1].point.slice(0,2):l(e[0].point,[1,1]),Q=[],N=[];if(e.length===1){if(!(g||T)||D){let r=ee(P,G(R(a(P,k))),-(U||m)),i=[];for(let o=1/13,s=o;s<=1;s+=o)i.push(L(r,P,V*2*s));return i}}else{if(!(g||T&&e.length===1))if(S)for(let i=1/13,o=i;o<=1;o+=i){let s=L(M[0],P,V*o);Q.push(s)}else{let i=a(_[0],M[0]),o=b(i,.5),s=b(i,.51);Q.push(a(P,o),a(P,s),l(P,s),l(P,o))}let r=R(se(e[e.length-1].vector));if(T||g&&e.length===1)N.push(k);else if(q){let i=ee(k,r,m);for(let o=1/29,s=o;s<1;s+=o)N.push(L(i,k,V*3*s))}else N.push(l(k,b(r,m)),l(k,b(r,m*.99)),a(k,b(r,m*.99)),a(k,b(r,m)))}return _.concat(N,M.reverse(),Q)}function me(e,t={}){var q;let{streamline:u=.5,size:x=16,last:h=!1}=t;if(e.length===0)return[];let y=.15+(1-u)*.85,n=Array.isArray(e[0])?e:e.map(({x:c,y:p,pressure:g=.5})=>[c,p,g]);if(n.length===2){let c=n[1];n=n.slice(0,-1);for(let p=1;p<5;p++)n.push(K(n[0],c,p/4))}n.length===1&&(n=[...n,[...l(n[0],[1,1]),...n[0].slice(2)]]);let f=[{point:[n[0][0],n[0][1]],pressure:n[0][2]>=0?n[0][2]:.25,vector:[1,1],distance:0,runningLength:0}],d=!1,D=0,S=f[0],j=n.length-1;for(let c=1;c<n.length;c++){let p=h&&c===j?n[c].slice(0,2):K(S.point,n[c],y);if(ue(S.point,p))continue;let g=ie(p,S.point);if(D+=g,c<j&&!d){if(D<x)continue;d=!0}S={point:p,pressure:n[c][2]>=0?n[c][2]:.5,vector:G(a(S.point,p)),distance:g,runningLength:D},f.push(S)}return f[0].vector=((q=f[1])==null?void 0:q.vector)||[0,0],f}function ae(e,t={}){return ce(me(e,t),t)}var _e=ae;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6620 characters]\n//# sourceURL=webpack-internal:///../../../node_modules/perfect-freehand/dist/esm/index.js\n');
              }
            ),
            /***/
            "../../../node_modules/png-chunk-text/decode.js": (
              /*!******************************************************!*\
                !*** ../../../node_modules/png-chunk-text/decode.js ***!
                \******************************************************/
              /***/
              (module) => {
                eval("module.exports = decode\n\nfunction decode (data) {\n  if (data.data && data.name) {\n    data = data.data\n  }\n\n  var naming = true\n  var text = ''\n  var name = ''\n\n  for (var i = 0; i < data.length; i++) {\n    var code = data[i]\n\n    if (naming) {\n      if (code) {\n        name += String.fromCharCode(code)\n      } else {\n        naming = false\n      }\n    } else {\n      if (code) {\n        text += String.fromCharCode(code)\n      } else {\n        throw new Error('Invalid NULL character found. 0x00 character is not permitted in tEXt content')\n      }\n    }\n  }\n\n  return {\n    keyword: name,\n    text: text\n  }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3BuZy1jaHVuay10ZXh0L2RlY29kZS5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsa0JBQWtCLGlCQUFpQjtBQUNuQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3BuZy1jaHVuay10ZXh0L2RlY29kZS5qcz81MTBjIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZGVjb2RlXG5cbmZ1bmN0aW9uIGRlY29kZSAoZGF0YSkge1xuICBpZiAoZGF0YS5kYXRhICYmIGRhdGEubmFtZSkge1xuICAgIGRhdGEgPSBkYXRhLmRhdGFcbiAgfVxuXG4gIHZhciBuYW1pbmcgPSB0cnVlXG4gIHZhciB0ZXh0ID0gJydcbiAgdmFyIG5hbWUgPSAnJ1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkrKykge1xuICAgIHZhciBjb2RlID0gZGF0YVtpXVxuXG4gICAgaWYgKG5hbWluZykge1xuICAgICAgaWYgKGNvZGUpIHtcbiAgICAgICAgbmFtZSArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNvZGUpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuYW1pbmcgPSBmYWxzZVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoY29kZSkge1xuICAgICAgICB0ZXh0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBOVUxMIGNoYXJhY3RlciBmb3VuZC4gMHgwMCBjaGFyYWN0ZXIgaXMgbm90IHBlcm1pdHRlZCBpbiB0RVh0IGNvbnRlbnQnKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAga2V5d29yZDogbmFtZSxcbiAgICB0ZXh0OiB0ZXh0XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/png-chunk-text/decode.js\n");
              }
            ),
            /***/
            "../../../node_modules/png-chunk-text/encode.js": (
              /*!******************************************************!*\
                !*** ../../../node_modules/png-chunk-text/encode.js ***!
                \******************************************************/
              /***/
              (module) => {
                eval(`module.exports = encode

function encode (keyword, content) {
  keyword = String(keyword)
  content = String(content)

  if (!/^[\\x00-\\xFF]+$/.test(keyword) || !/^[\\x00-\\xFF]+$/.test(content)) {
    throw new Error('Only Latin-1 characters are permitted in PNG tEXt chunks. You might want to consider base64 encoding and/or zEXt compression')
  }

  if (keyword.length >= 80) {
    throw new Error('Keyword "' + keyword + '" is longer than the 79-character limit imposed by the PNG specification')
  }

  var totalSize = keyword.length + content.length + 1
  var output = new Uint8Array(totalSize)
  var idx = 0
  var code

  for (var i = 0; i < keyword.length; i++) {
    if (!(code = keyword.charCodeAt(i))) {
      throw new Error('0x00 character is not permitted in tEXt keywords')
    }

    output[idx++] = code
  }

  output[idx++] = 0

  for (var j = 0; j < content.length; j++) {
    if (!(code = content.charCodeAt(j))) {
      throw new Error('0x00 character is not permitted in tEXt content')
    }

    output[idx++] = code
  }

  return {
    name: 'tEXt',
    data: output
  }
}
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3BuZy1jaHVuay10ZXh0L2VuY29kZS5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxrQkFBa0Isb0JBQW9CO0FBQ3RDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBLGtCQUFrQixvQkFBb0I7QUFDdEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG5nLWNodW5rLXRleHQvZW5jb2RlLmpzPzU5NzEiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBlbmNvZGVcblxuZnVuY3Rpb24gZW5jb2RlIChrZXl3b3JkLCBjb250ZW50KSB7XG4gIGtleXdvcmQgPSBTdHJpbmcoa2V5d29yZClcbiAgY29udGVudCA9IFN0cmluZyhjb250ZW50KVxuXG4gIGlmICghL15bXFx4MDAtXFx4RkZdKyQvLnRlc3Qoa2V5d29yZCkgfHwgIS9eW1xceDAwLVxceEZGXSskLy50ZXN0KGNvbnRlbnQpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdPbmx5IExhdGluLTEgY2hhcmFjdGVycyBhcmUgcGVybWl0dGVkIGluIFBORyB0RVh0IGNodW5rcy4gWW91IG1pZ2h0IHdhbnQgdG8gY29uc2lkZXIgYmFzZTY0IGVuY29kaW5nIGFuZC9vciB6RVh0IGNvbXByZXNzaW9uJylcbiAgfVxuXG4gIGlmIChrZXl3b3JkLmxlbmd0aCA+PSA4MCkge1xuICAgIHRocm93IG5ldyBFcnJvcignS2V5d29yZCBcIicgKyBrZXl3b3JkICsgJ1wiIGlzIGxvbmdlciB0aGFuIHRoZSA3OS1jaGFyYWN0ZXIgbGltaXQgaW1wb3NlZCBieSB0aGUgUE5HIHNwZWNpZmljYXRpb24nKVxuICB9XG5cbiAgdmFyIHRvdGFsU2l6ZSA9IGtleXdvcmQubGVuZ3RoICsgY29udGVudC5sZW5ndGggKyAxXG4gIHZhciBvdXRwdXQgPSBuZXcgVWludDhBcnJheSh0b3RhbFNpemUpXG4gIHZhciBpZHggPSAwXG4gIHZhciBjb2RlXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXl3b3JkLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKCEoY29kZSA9IGtleXdvcmQuY2hhckNvZGVBdChpKSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignMHgwMCBjaGFyYWN0ZXIgaXMgbm90IHBlcm1pdHRlZCBpbiB0RVh0IGtleXdvcmRzJylcbiAgICB9XG5cbiAgICBvdXRwdXRbaWR4KytdID0gY29kZVxuICB9XG5cbiAgb3V0cHV0W2lkeCsrXSA9IDBcblxuICBmb3IgKHZhciBqID0gMDsgaiA8IGNvbnRlbnQubGVuZ3RoOyBqKyspIHtcbiAgICBpZiAoIShjb2RlID0gY29udGVudC5jaGFyQ29kZUF0KGopKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCcweDAwIGNoYXJhY3RlciBpcyBub3QgcGVybWl0dGVkIGluIHRFWHQgY29udGVudCcpXG4gICAgfVxuXG4gICAgb3V0cHV0W2lkeCsrXSA9IGNvZGVcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbmFtZTogJ3RFWHQnLFxuICAgIGRhdGE6IG91dHB1dFxuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=
//# sourceURL=webpack-internal:///../../../node_modules/png-chunk-text/encode.js
`);
              }
            ),
            /***/
            "../../../node_modules/png-chunk-text/index.js": (
              /*!*****************************************************!*\
                !*** ../../../node_modules/png-chunk-text/index.js ***!
                \*****************************************************/
              /***/
              (__unused_webpack_module, exports, __webpack_require__) => {
                eval('exports.encode = __webpack_require__(/*! ./encode */ "../../../node_modules/png-chunk-text/encode.js")\nexports.decode = __webpack_require__(/*! ./decode */ "../../../node_modules/png-chunk-text/decode.js")\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3BuZy1jaHVuay10ZXh0L2luZGV4LmpzLmpzIiwibWFwcGluZ3MiOiJBQUFBLHNHQUFvQztBQUNwQyxzR0FBb0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3BuZy1jaHVuay10ZXh0L2luZGV4LmpzPzNiMzAiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0cy5lbmNvZGUgPSByZXF1aXJlKCcuL2VuY29kZScpXG5leHBvcnRzLmRlY29kZSA9IHJlcXVpcmUoJy4vZGVjb2RlJylcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/png-chunk-text/index.js\n');
              }
            ),
            /***/
            "../../../node_modules/png-chunks-encode/index.js": (
              /*!********************************************************!*\
                !*** ../../../node_modules/png-chunks-encode/index.js ***!
                \********************************************************/
              /***/
              (module, __unused_webpack_exports, __webpack_require__) => {
                eval('var sliced = __webpack_require__(/*! sliced */ "../../../node_modules/sliced/index.js")\nvar crc32 = __webpack_require__(/*! crc-32 */ "../../../node_modules/crc-32/crc32.js")\n\nmodule.exports = encodeChunks\n\n// Used for fast-ish conversion between uint8s and uint32s/int32s.\n// Also required in order to remain agnostic for both Node Buffers and\n// Uint8Arrays.\nvar uint8 = new Uint8Array(4)\nvar int32 = new Int32Array(uint8.buffer)\nvar uint32 = new Uint32Array(uint8.buffer)\n\nfunction encodeChunks (chunks) {\n  var totalSize = 8\n  var idx = totalSize\n  var i\n\n  for (i = 0; i < chunks.length; i++) {\n    totalSize += chunks[i].data.length\n    totalSize += 12\n  }\n\n  var output = new Uint8Array(totalSize)\n\n  output[0] = 0x89\n  output[1] = 0x50\n  output[2] = 0x4E\n  output[3] = 0x47\n  output[4] = 0x0D\n  output[5] = 0x0A\n  output[6] = 0x1A\n  output[7] = 0x0A\n\n  for (i = 0; i < chunks.length; i++) {\n    var chunk = chunks[i]\n    var name = chunk.name\n    var data = chunk.data\n    var size = data.length\n    var nameChars = [\n      name.charCodeAt(0),\n      name.charCodeAt(1),\n      name.charCodeAt(2),\n      name.charCodeAt(3)\n    ]\n\n    uint32[0] = size\n    output[idx++] = uint8[3]\n    output[idx++] = uint8[2]\n    output[idx++] = uint8[1]\n    output[idx++] = uint8[0]\n\n    output[idx++] = nameChars[0]\n    output[idx++] = nameChars[1]\n    output[idx++] = nameChars[2]\n    output[idx++] = nameChars[3]\n\n    for (var j = 0; j < size;) {\n      output[idx++] = data[j++]\n    }\n\n    var crcCheck = nameChars.concat(sliced(data))\n    var crc = crc32.buf(crcCheck)\n\n    int32[0] = crc\n    output[idx++] = uint8[3]\n    output[idx++] = uint8[2]\n    output[idx++] = uint8[1]\n    output[idx++] = uint8[0]\n  }\n\n  return output\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3BuZy1jaHVua3MtZW5jb2RlL2luZGV4LmpzLmpzIiwibWFwcGluZ3MiOiJBQUFBLGFBQWEsbUJBQU8sQ0FBQyxxREFBUTtBQUM3QixZQUFZLG1CQUFPLENBQUMscURBQVE7O0FBRTVCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxjQUFjLG1CQUFtQjtBQUNqQztBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxjQUFjLG1CQUFtQjtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG9CQUFvQixTQUFTO0FBQzdCO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG5nLWNodW5rcy1lbmNvZGUvaW5kZXguanM/YmVhNiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgc2xpY2VkID0gcmVxdWlyZSgnc2xpY2VkJylcbnZhciBjcmMzMiA9IHJlcXVpcmUoJ2NyYy0zMicpXG5cbm1vZHVsZS5leHBvcnRzID0gZW5jb2RlQ2h1bmtzXG5cbi8vIFVzZWQgZm9yIGZhc3QtaXNoIGNvbnZlcnNpb24gYmV0d2VlbiB1aW50OHMgYW5kIHVpbnQzMnMvaW50MzJzLlxuLy8gQWxzbyByZXF1aXJlZCBpbiBvcmRlciB0byByZW1haW4gYWdub3N0aWMgZm9yIGJvdGggTm9kZSBCdWZmZXJzIGFuZFxuLy8gVWludDhBcnJheXMuXG52YXIgdWludDggPSBuZXcgVWludDhBcnJheSg0KVxudmFyIGludDMyID0gbmV3IEludDMyQXJyYXkodWludDguYnVmZmVyKVxudmFyIHVpbnQzMiA9IG5ldyBVaW50MzJBcnJheSh1aW50OC5idWZmZXIpXG5cbmZ1bmN0aW9uIGVuY29kZUNodW5rcyAoY2h1bmtzKSB7XG4gIHZhciB0b3RhbFNpemUgPSA4XG4gIHZhciBpZHggPSB0b3RhbFNpemVcbiAgdmFyIGlcblxuICBmb3IgKGkgPSAwOyBpIDwgY2h1bmtzLmxlbmd0aDsgaSsrKSB7XG4gICAgdG90YWxTaXplICs9IGNodW5rc1tpXS5kYXRhLmxlbmd0aFxuICAgIHRvdGFsU2l6ZSArPSAxMlxuICB9XG5cbiAgdmFyIG91dHB1dCA9IG5ldyBVaW50OEFycmF5KHRvdGFsU2l6ZSlcblxuICBvdXRwdXRbMF0gPSAweDg5XG4gIG91dHB1dFsxXSA9IDB4NTBcbiAgb3V0cHV0WzJdID0gMHg0RVxuICBvdXRwdXRbM10gPSAweDQ3XG4gIG91dHB1dFs0XSA9IDB4MERcbiAgb3V0cHV0WzVdID0gMHgwQVxuICBvdXRwdXRbNl0gPSAweDFBXG4gIG91dHB1dFs3XSA9IDB4MEFcblxuICBmb3IgKGkgPSAwOyBpIDwgY2h1bmtzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGNodW5rID0gY2h1bmtzW2ldXG4gICAgdmFyIG5hbWUgPSBjaHVuay5uYW1lXG4gICAgdmFyIGRhdGEgPSBjaHVuay5kYXRhXG4gICAgdmFyIHNpemUgPSBkYXRhLmxlbmd0aFxuICAgIHZhciBuYW1lQ2hhcnMgPSBbXG4gICAgICBuYW1lLmNoYXJDb2RlQXQoMCksXG4gICAgICBuYW1lLmNoYXJDb2RlQXQoMSksXG4gICAgICBuYW1lLmNoYXJDb2RlQXQoMiksXG4gICAgICBuYW1lLmNoYXJDb2RlQXQoMylcbiAgICBdXG5cbiAgICB1aW50MzJbMF0gPSBzaXplXG4gICAgb3V0cHV0W2lkeCsrXSA9IHVpbnQ4WzNdXG4gICAgb3V0cHV0W2lkeCsrXSA9IHVpbnQ4WzJdXG4gICAgb3V0cHV0W2lkeCsrXSA9IHVpbnQ4WzFdXG4gICAgb3V0cHV0W2lkeCsrXSA9IHVpbnQ4WzBdXG5cbiAgICBvdXRwdXRbaWR4KytdID0gbmFtZUNoYXJzWzBdXG4gICAgb3V0cHV0W2lkeCsrXSA9IG5hbWVDaGFyc1sxXVxuICAgIG91dHB1dFtpZHgrK10gPSBuYW1lQ2hhcnNbMl1cbiAgICBvdXRwdXRbaWR4KytdID0gbmFtZUNoYXJzWzNdXG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IHNpemU7KSB7XG4gICAgICBvdXRwdXRbaWR4KytdID0gZGF0YVtqKytdXG4gICAgfVxuXG4gICAgdmFyIGNyY0NoZWNrID0gbmFtZUNoYXJzLmNvbmNhdChzbGljZWQoZGF0YSkpXG4gICAgdmFyIGNyYyA9IGNyYzMyLmJ1ZihjcmNDaGVjaylcblxuICAgIGludDMyWzBdID0gY3JjXG4gICAgb3V0cHV0W2lkeCsrXSA9IHVpbnQ4WzNdXG4gICAgb3V0cHV0W2lkeCsrXSA9IHVpbnQ4WzJdXG4gICAgb3V0cHV0W2lkeCsrXSA9IHVpbnQ4WzFdXG4gICAgb3V0cHV0W2lkeCsrXSA9IHVpbnQ4WzBdXG4gIH1cblxuICByZXR1cm4gb3V0cHV0XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/png-chunks-encode/index.js\n');
              }
            ),
            /***/
            "../../../node_modules/png-chunks-extract/index.js": (
              /*!*********************************************************!*\
                !*** ../../../node_modules/png-chunks-extract/index.js ***!
                \*********************************************************/
              /***/
              (module, __unused_webpack_exports, __webpack_require__) => {
                eval(`var crc32 = __webpack_require__(/*! crc-32 */ "../../../node_modules/crc-32/crc32.js")

module.exports = extractChunks

// Used for fast-ish conversion between uint8s and uint32s/int32s.
// Also required in order to remain agnostic for both Node Buffers and
// Uint8Arrays.
var uint8 = new Uint8Array(4)
var int32 = new Int32Array(uint8.buffer)
var uint32 = new Uint32Array(uint8.buffer)

function extractChunks (data) {
  if (data[0] !== 0x89) throw new Error('Invalid .png file header')
  if (data[1] !== 0x50) throw new Error('Invalid .png file header')
  if (data[2] !== 0x4E) throw new Error('Invalid .png file header')
  if (data[3] !== 0x47) throw new Error('Invalid .png file header')
  if (data[4] !== 0x0D) throw new Error('Invalid .png file header: possibly caused by DOS-Unix line ending conversion?')
  if (data[5] !== 0x0A) throw new Error('Invalid .png file header: possibly caused by DOS-Unix line ending conversion?')
  if (data[6] !== 0x1A) throw new Error('Invalid .png file header')
  if (data[7] !== 0x0A) throw new Error('Invalid .png file header: possibly caused by DOS-Unix line ending conversion?')

  var ended = false
  var chunks = []
  var idx = 8

  while (idx < data.length) {
    // Read the length of the current chunk,
    // which is stored as a Uint32.
    uint8[3] = data[idx++]
    uint8[2] = data[idx++]
    uint8[1] = data[idx++]
    uint8[0] = data[idx++]

    // Chunk includes name/type for CRC check (see below).
    var length = uint32[0] + 4
    var chunk = new Uint8Array(length)
    chunk[0] = data[idx++]
    chunk[1] = data[idx++]
    chunk[2] = data[idx++]
    chunk[3] = data[idx++]

    // Get the name in ASCII for identification.
    var name = (
      String.fromCharCode(chunk[0]) +
      String.fromCharCode(chunk[1]) +
      String.fromCharCode(chunk[2]) +
      String.fromCharCode(chunk[3])
    )

    // The IHDR header MUST come first.
    if (!chunks.length && name !== 'IHDR') {
      throw new Error('IHDR header missing')
    }

    // The IEND header marks the end of the file,
    // so on discovering it break out of the loop.
    if (name === 'IEND') {
      ended = true
      chunks.push({
        name: name,
        data: new Uint8Array(0)
      })

      break
    }

    // Read the contents of the chunk out of the main buffer.
    for (var i = 4; i < length; i++) {
      chunk[i] = data[idx++]
    }

    // Read out the CRC value for comparison.
    // It's stored as an Int32.
    uint8[3] = data[idx++]
    uint8[2] = data[idx++]
    uint8[1] = data[idx++]
    uint8[0] = data[idx++]

    var crcActual = int32[0]
    var crcExpect = crc32.buf(chunk)
    if (crcExpect !== crcActual) {
      throw new Error(
        'CRC values for ' + name + ' header do not match, PNG file is likely corrupted'
      )
    }

    // The chunk data is now copied to remove the 4 preceding
    // bytes used for the chunk name/type.
    var chunkData = new Uint8Array(chunk.buffer.slice(4))

    chunks.push({
      name: name,
      data: chunkData
    })
  }

  if (!ended) {
    throw new Error('.png file ended prematurely: no IEND header was found')
  }

  return chunks
}
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5196 characters]
//# sourceURL=webpack-internal:///../../../node_modules/png-chunks-extract/index.js
`);
              }
            ),
            /***/
            "../../../node_modules/points-on-curve/lib/index.js": (
              /*!**********************************************************!*\
                !*** ../../../node_modules/points-on-curve/lib/index.js ***!
                \**********************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "pointsOnBezierCurves": () => (/* binding */ pointsOnBezierCurves),\n/* harmony export */   "simplify": () => (/* binding */ simplify),\n/* harmony export */   "simplifyPoints": () => (/* binding */ simplifyPoints)\n/* harmony export */ });\n// distance between 2 points\nfunction distance(p1, p2) {\n    return Math.sqrt(distanceSq(p1, p2));\n}\n// distance between 2 points squared\nfunction distanceSq(p1, p2) {\n    return Math.pow(p1[0] - p2[0], 2) + Math.pow(p1[1] - p2[1], 2);\n}\n// Sistance squared from a point p to the line segment vw\nfunction distanceToSegmentSq(p, v, w) {\n    const l2 = distanceSq(v, w);\n    if (l2 === 0) {\n        return distanceSq(p, v);\n    }\n    let t = ((p[0] - v[0]) * (w[0] - v[0]) + (p[1] - v[1]) * (w[1] - v[1])) / l2;\n    t = Math.max(0, Math.min(1, t));\n    return distanceSq(p, lerp(v, w, t));\n}\nfunction lerp(a, b, t) {\n    return [\n        a[0] + (b[0] - a[0]) * t,\n        a[1] + (b[1] - a[1]) * t,\n    ];\n}\n// Adapted from https://seant23.wordpress.com/2010/11/12/offset-bezier-curves/\nfunction flatness(points, offset) {\n    const p1 = points[offset + 0];\n    const p2 = points[offset + 1];\n    const p3 = points[offset + 2];\n    const p4 = points[offset + 3];\n    let ux = 3 * p2[0] - 2 * p1[0] - p4[0];\n    ux *= ux;\n    let uy = 3 * p2[1] - 2 * p1[1] - p4[1];\n    uy *= uy;\n    let vx = 3 * p3[0] - 2 * p4[0] - p1[0];\n    vx *= vx;\n    let vy = 3 * p3[1] - 2 * p4[1] - p1[1];\n    vy *= vy;\n    if (ux < vx) {\n        ux = vx;\n    }\n    if (uy < vy) {\n        uy = vy;\n    }\n    return ux + uy;\n}\nfunction getPointsOnBezierCurveWithSplitting(points, offset, tolerance, newPoints) {\n    const outPoints = newPoints || [];\n    if (flatness(points, offset) < tolerance) {\n        const p0 = points[offset + 0];\n        if (outPoints.length) {\n            const d = distance(outPoints[outPoints.length - 1], p0);\n            if (d > 1) {\n                outPoints.push(p0);\n            }\n        }\n        else {\n            outPoints.push(p0);\n        }\n        outPoints.push(points[offset + 3]);\n    }\n    else {\n        // subdivide\n        const t = .5;\n        const p1 = points[offset + 0];\n        const p2 = points[offset + 1];\n        const p3 = points[offset + 2];\n        const p4 = points[offset + 3];\n        const q1 = lerp(p1, p2, t);\n        const q2 = lerp(p2, p3, t);\n        const q3 = lerp(p3, p4, t);\n        const r1 = lerp(q1, q2, t);\n        const r2 = lerp(q2, q3, t);\n        const red = lerp(r1, r2, t);\n        getPointsOnBezierCurveWithSplitting([p1, q1, r1, red], 0, tolerance, outPoints);\n        getPointsOnBezierCurveWithSplitting([red, r2, q3, p4], 0, tolerance, outPoints);\n    }\n    return outPoints;\n}\nfunction simplify(points, distance) {\n    return simplifyPoints(points, 0, points.length, distance);\n}\n// Ramer\u2013Douglas\u2013Peucker algorithm\n// https://en.wikipedia.org/wiki/Ramer%E2%80%93Douglas%E2%80%93Peucker_algorithm\nfunction simplifyPoints(points, start, end, epsilon, newPoints) {\n    const outPoints = newPoints || [];\n    // find the most distance point from the endpoints\n    const s = points[start];\n    const e = points[end - 1];\n    let maxDistSq = 0;\n    let maxNdx = 1;\n    for (let i = start + 1; i < end - 1; ++i) {\n        const distSq = distanceToSegmentSq(points[i], s, e);\n        if (distSq > maxDistSq) {\n            maxDistSq = distSq;\n            maxNdx = i;\n        }\n    }\n    // if that point is too far, split\n    if (Math.sqrt(maxDistSq) > epsilon) {\n        simplifyPoints(points, start, maxNdx + 1, epsilon, outPoints);\n        simplifyPoints(points, maxNdx, end, epsilon, outPoints);\n    }\n    else {\n        if (!outPoints.length) {\n            outPoints.push(s);\n        }\n        outPoints.push(e);\n    }\n    return outPoints;\n}\nfunction pointsOnBezierCurves(points, tolerance = 0.15, distance) {\n    const newPoints = [];\n    const numSegments = (points.length - 1) / 3;\n    for (let i = 0; i < numSegments; i++) {\n        const offset = i * 3;\n        getPointsOnBezierCurveWithSplitting(points, offset, tolerance, newPoints);\n    }\n    if (distance && distance > 0) {\n        return simplifyPoints(newPoints, 0, newPoints.length, distance);\n    }\n    return newPoints;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6616 characters]\n//# sourceURL=webpack-internal:///../../../node_modules/points-on-curve/lib/index.js\n');
              }
            ),
            /***/
            "../../../node_modules/points-on-path/lib/index.js": (
              /*!*********************************************************!*\
                !*** ../../../node_modules/points-on-path/lib/index.js ***!
                \*********************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "pointsOnPath": () => (/* binding */ pointsOnPath)
/* harmony export */ });
/* harmony import */ var points_on_curve__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! points-on-curve */ "../../../node_modules/points-on-path/node_modules/points-on-curve/lib/index.js");
/* harmony import */ var path_data_parser__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! path-data-parser */ "../../../node_modules/path-data-parser/lib/index.js");


function pointsOnPath(path, tolerance, distance) {
    const segments = (0,path_data_parser__WEBPACK_IMPORTED_MODULE_1__.parsePath)(path);
    const normalized = (0,path_data_parser__WEBPACK_IMPORTED_MODULE_1__.normalize)((0,path_data_parser__WEBPACK_IMPORTED_MODULE_1__.absolutize)(segments));
    const sets = [];
    let currentPoints = [];
    let start = [0, 0];
    let pendingCurve = [];
    const appendPendingCurve = () => {
        if (pendingCurve.length >= 4) {
            currentPoints.push(...(0,points_on_curve__WEBPACK_IMPORTED_MODULE_0__.pointsOnBezierCurves)(pendingCurve, tolerance));
        }
        pendingCurve = [];
    };
    const appendPendingPoints = () => {
        appendPendingCurve();
        if (currentPoints.length) {
            sets.push(currentPoints);
            currentPoints = [];
        }
    };
    for (const { key, data } of normalized) {
        switch (key) {
            case 'M':
                appendPendingPoints();
                start = [data[0], data[1]];
                currentPoints.push(start);
                break;
            case 'L':
                appendPendingCurve();
                currentPoints.push([data[0], data[1]]);
                break;
            case 'C':
                if (!pendingCurve.length) {
                    const lastPoint = currentPoints.length ? currentPoints[currentPoints.length - 1] : start;
                    pendingCurve.push([lastPoint[0], lastPoint[1]]);
                }
                pendingCurve.push([data[0], data[1]]);
                pendingCurve.push([data[2], data[3]]);
                pendingCurve.push([data[4], data[5]]);
                break;
            case 'Z':
                appendPendingCurve();
                currentPoints.push([start[0], start[1]]);
                break;
        }
    }
    appendPendingPoints();
    if (!distance) {
        return sets;
    }
    const out = [];
    for (const set of sets) {
        const simplifiedSet = (0,points_on_curve__WEBPACK_IMPORTED_MODULE_0__.simplify)(set, distance);
        if (simplifiedSet.length) {
            out.push(simplifiedSet);
        }
    }
    return out;
}
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3BvaW50cy1vbi1wYXRoL2xpYi9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBaUU7QUFDRztBQUM3RDtBQUNQLHFCQUFxQiwyREFBUztBQUM5Qix1QkFBdUIsMkRBQVMsQ0FBQyw0REFBVTtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0MscUVBQW9CO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLFlBQVk7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIseURBQVE7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb2ludHMtb24tcGF0aC9saWIvaW5kZXguanM/MWNkZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwb2ludHNPbkJlemllckN1cnZlcywgc2ltcGxpZnkgfSBmcm9tICdwb2ludHMtb24tY3VydmUnO1xuaW1wb3J0IHsgcGFyc2VQYXRoLCBhYnNvbHV0aXplLCBub3JtYWxpemUgfSBmcm9tICdwYXRoLWRhdGEtcGFyc2VyJztcbmV4cG9ydCBmdW5jdGlvbiBwb2ludHNPblBhdGgocGF0aCwgdG9sZXJhbmNlLCBkaXN0YW5jZSkge1xuICAgIGNvbnN0IHNlZ21lbnRzID0gcGFyc2VQYXRoKHBhdGgpO1xuICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBub3JtYWxpemUoYWJzb2x1dGl6ZShzZWdtZW50cykpO1xuICAgIGNvbnN0IHNldHMgPSBbXTtcbiAgICBsZXQgY3VycmVudFBvaW50cyA9IFtdO1xuICAgIGxldCBzdGFydCA9IFswLCAwXTtcbiAgICBsZXQgcGVuZGluZ0N1cnZlID0gW107XG4gICAgY29uc3QgYXBwZW5kUGVuZGluZ0N1cnZlID0gKCkgPT4ge1xuICAgICAgICBpZiAocGVuZGluZ0N1cnZlLmxlbmd0aCA+PSA0KSB7XG4gICAgICAgICAgICBjdXJyZW50UG9pbnRzLnB1c2goLi4ucG9pbnRzT25CZXppZXJDdXJ2ZXMocGVuZGluZ0N1cnZlLCB0b2xlcmFuY2UpKTtcbiAgICAgICAgfVxuICAgICAgICBwZW5kaW5nQ3VydmUgPSBbXTtcbiAgICB9O1xuICAgIGNvbnN0IGFwcGVuZFBlbmRpbmdQb2ludHMgPSAoKSA9PiB7XG4gICAgICAgIGFwcGVuZFBlbmRpbmdDdXJ2ZSgpO1xuICAgICAgICBpZiAoY3VycmVudFBvaW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHNldHMucHVzaChjdXJyZW50UG9pbnRzKTtcbiAgICAgICAgICAgIGN1cnJlbnRQb2ludHMgPSBbXTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgZm9yIChjb25zdCB7IGtleSwgZGF0YSB9IG9mIG5vcm1hbGl6ZWQpIHtcbiAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgIGFwcGVuZFBlbmRpbmdQb2ludHMoKTtcbiAgICAgICAgICAgICAgICBzdGFydCA9IFtkYXRhWzBdLCBkYXRhWzFdXTtcbiAgICAgICAgICAgICAgICBjdXJyZW50UG9pbnRzLnB1c2goc3RhcnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnTCc6XG4gICAgICAgICAgICAgICAgYXBwZW5kUGVuZGluZ0N1cnZlKCk7XG4gICAgICAgICAgICAgICAgY3VycmVudFBvaW50cy5wdXNoKFtkYXRhWzBdLCBkYXRhWzFdXSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdDJzpcbiAgICAgICAgICAgICAgICBpZiAoIXBlbmRpbmdDdXJ2ZS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFzdFBvaW50ID0gY3VycmVudFBvaW50cy5sZW5ndGggPyBjdXJyZW50UG9pbnRzW2N1cnJlbnRQb2ludHMubGVuZ3RoIC0gMV0gOiBzdGFydDtcbiAgICAgICAgICAgICAgICAgICAgcGVuZGluZ0N1cnZlLnB1c2goW2xhc3RQb2ludFswXSwgbGFzdFBvaW50WzFdXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHBlbmRpbmdDdXJ2ZS5wdXNoKFtkYXRhWzBdLCBkYXRhWzFdXSk7XG4gICAgICAgICAgICAgICAgcGVuZGluZ0N1cnZlLnB1c2goW2RhdGFbMl0sIGRhdGFbM11dKTtcbiAgICAgICAgICAgICAgICBwZW5kaW5nQ3VydmUucHVzaChbZGF0YVs0XSwgZGF0YVs1XV0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnWic6XG4gICAgICAgICAgICAgICAgYXBwZW5kUGVuZGluZ0N1cnZlKCk7XG4gICAgICAgICAgICAgICAgY3VycmVudFBvaW50cy5wdXNoKFtzdGFydFswXSwgc3RhcnRbMV1dKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICBhcHBlbmRQZW5kaW5nUG9pbnRzKCk7XG4gICAgaWYgKCFkaXN0YW5jZSkge1xuICAgICAgICByZXR1cm4gc2V0cztcbiAgICB9XG4gICAgY29uc3Qgb3V0ID0gW107XG4gICAgZm9yIChjb25zdCBzZXQgb2Ygc2V0cykge1xuICAgICAgICBjb25zdCBzaW1wbGlmaWVkU2V0ID0gc2ltcGxpZnkoc2V0LCBkaXN0YW5jZSk7XG4gICAgICAgIGlmIChzaW1wbGlmaWVkU2V0Lmxlbmd0aCkge1xuICAgICAgICAgICAgb3V0LnB1c2goc2ltcGxpZmllZFNldCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG91dDtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==
//# sourceURL=webpack-internal:///../../../node_modules/points-on-path/lib/index.js
`);
              }
            ),
            /***/
            "../../../node_modules/points-on-path/node_modules/points-on-curve/lib/index.js": (
              /*!**************************************************************************************!*\
                !*** ../../../node_modules/points-on-path/node_modules/points-on-curve/lib/index.js ***!
                \**************************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "pointsOnBezierCurves": () => (/* binding */ pointsOnBezierCurves),\n/* harmony export */   "simplify": () => (/* binding */ simplify)\n/* harmony export */ });\n// distance between 2 points\nfunction distance(p1, p2) {\n    return Math.sqrt(distanceSq(p1, p2));\n}\n// distance between 2 points squared\nfunction distanceSq(p1, p2) {\n    return Math.pow(p1[0] - p2[0], 2) + Math.pow(p1[1] - p2[1], 2);\n}\n// Sistance squared from a point p to the line segment vw\nfunction distanceToSegmentSq(p, v, w) {\n    const l2 = distanceSq(v, w);\n    if (l2 === 0) {\n        return distanceSq(p, v);\n    }\n    let t = ((p[0] - v[0]) * (w[0] - v[0]) + (p[1] - v[1]) * (w[1] - v[1])) / l2;\n    t = Math.max(0, Math.min(1, t));\n    return distanceSq(p, lerp(v, w, t));\n}\nfunction lerp(a, b, t) {\n    return [\n        a[0] + (b[0] - a[0]) * t,\n        a[1] + (b[1] - a[1]) * t,\n    ];\n}\n// Adapted from https://seant23.wordpress.com/2010/11/12/offset-bezier-curves/\nfunction flatness(points, offset) {\n    const p1 = points[offset + 0];\n    const p2 = points[offset + 1];\n    const p3 = points[offset + 2];\n    const p4 = points[offset + 3];\n    let ux = 3 * p2[0] - 2 * p1[0] - p4[0];\n    ux *= ux;\n    let uy = 3 * p2[1] - 2 * p1[1] - p4[1];\n    uy *= uy;\n    let vx = 3 * p3[0] - 2 * p4[0] - p1[0];\n    vx *= vx;\n    let vy = 3 * p3[1] - 2 * p4[1] - p1[1];\n    vy *= vy;\n    if (ux < vx) {\n        ux = vx;\n    }\n    if (uy < vy) {\n        uy = vy;\n    }\n    return ux + uy;\n}\nfunction getPointsOnBezierCurveWithSplitting(points, offset, tolerance, newPoints) {\n    const outPoints = newPoints || [];\n    if (flatness(points, offset) < tolerance) {\n        const p0 = points[offset + 0];\n        if (outPoints.length) {\n            const d = distance(outPoints[outPoints.length - 1], p0);\n            if (d > 1) {\n                outPoints.push(p0);\n            }\n        }\n        else {\n            outPoints.push(p0);\n        }\n        outPoints.push(points[offset + 3]);\n    }\n    else {\n        // subdivide\n        const t = .5;\n        const p1 = points[offset + 0];\n        const p2 = points[offset + 1];\n        const p3 = points[offset + 2];\n        const p4 = points[offset + 3];\n        const q1 = lerp(p1, p2, t);\n        const q2 = lerp(p2, p3, t);\n        const q3 = lerp(p3, p4, t);\n        const r1 = lerp(q1, q2, t);\n        const r2 = lerp(q2, q3, t);\n        const red = lerp(r1, r2, t);\n        getPointsOnBezierCurveWithSplitting([p1, q1, r1, red], 0, tolerance, outPoints);\n        getPointsOnBezierCurveWithSplitting([red, r2, q3, p4], 0, tolerance, outPoints);\n    }\n    return outPoints;\n}\nfunction simplify(points, distance) {\n    return simplifyPoints(points, 0, points.length, distance);\n}\n// Ramer\u2013Douglas\u2013Peucker algorithm\n// https://en.wikipedia.org/wiki/Ramer%E2%80%93Douglas%E2%80%93Peucker_algorithm\nfunction simplifyPoints(points, start, end, epsilon, newPoints) {\n    const outPoints = newPoints || [];\n    // find the most distance point from the endpoints\n    const s = points[start];\n    const e = points[end - 1];\n    let maxDistSq = 0;\n    let maxNdx = 1;\n    for (let i = start + 1; i < end - 1; ++i) {\n        const distSq = distanceToSegmentSq(points[i], s, e);\n        if (distSq > maxDistSq) {\n            maxDistSq = distSq;\n            maxNdx = i;\n        }\n    }\n    // if that point is too far, split\n    if (Math.sqrt(maxDistSq) > epsilon) {\n        simplifyPoints(points, start, maxNdx + 1, epsilon, outPoints);\n        simplifyPoints(points, maxNdx, end, epsilon, outPoints);\n    }\n    else {\n        if (!outPoints.length) {\n            outPoints.push(s);\n        }\n        outPoints.push(e);\n    }\n    return outPoints;\n}\nfunction pointsOnBezierCurves(points, tolerance = 0.15, distance) {\n    const newPoints = [];\n    const numSegments = (points.length - 1) / 3;\n    for (let i = 0; i < numSegments; i++) {\n        const offset = i * 3;\n        getPointsOnBezierCurveWithSplitting(points, offset, tolerance, newPoints);\n    }\n    if (distance && distance > 0) {\n        return simplifyPoints(newPoints, 0, newPoints.length, distance);\n    }\n    return newPoints;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6680 characters]\n//# sourceURL=webpack-internal:///../../../node_modules/points-on-path/node_modules/points-on-curve/lib/index.js\n');
              }
            ),
            /***/
            "../../../node_modules/react-remove-scroll-bar/dist/es2015/component.js": (
              /*!******************************************************************************!*\
                !*** ../../../node_modules/react-remove-scroll-bar/dist/es2015/component.js ***!
                \******************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "RemoveScrollBar": () => (/* binding */ RemoveScrollBar)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var react_style_singleton__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-style-singleton */ "../../../node_modules/react-style-singleton/dist/es2015/index.js");
/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./constants */ "../../../node_modules/react-remove-scroll-bar/dist/es2015/constants.js");
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils */ "../../../node_modules/react-remove-scroll-bar/dist/es2015/utils.js");




var Style = (0,react_style_singleton__WEBPACK_IMPORTED_MODULE_1__.styleSingleton)();
// important tip - once we measure scrollBar width and remove them
// we could not repeat this operation
// thus we are using style-singleton - only the first "yet correct" style will be applied.
var getStyles = function (_a, allowRelative, gapMode, important) {
    var left = _a.left, top = _a.top, right = _a.right, gap = _a.gap;
    if (gapMode === void 0) { gapMode = 'margin'; }
    return "\\n  .".concat(_constants__WEBPACK_IMPORTED_MODULE_2__.noScrollbarsClassName, " {\\n   overflow: hidden ").concat(important, ";\\n   padding-right: ").concat(gap, "px ").concat(important, ";\\n  }\\n  body {\\n    overflow: hidden ").concat(important, ";\\n    overscroll-behavior: contain;\\n    ").concat([
        allowRelative && "position: relative ".concat(important, ";"),
        gapMode === 'margin' &&
            "\\n    padding-left: ".concat(left, "px;\\n    padding-top: ").concat(top, "px;\\n    padding-right: ").concat(right, "px;\\n    margin-left:0;\\n    margin-top:0;\\n    margin-right: ").concat(gap, "px ").concat(important, ";\\n    "),
        gapMode === 'padding' && "padding-right: ".concat(gap, "px ").concat(important, ";"),
    ]
        .filter(Boolean)
        .join(''), "\\n  }\\n  \\n  .").concat(_constants__WEBPACK_IMPORTED_MODULE_2__.zeroRightClassName, " {\\n    right: ").concat(gap, "px ").concat(important, ";\\n  }\\n  \\n  .").concat(_constants__WEBPACK_IMPORTED_MODULE_2__.fullWidthClassName, " {\\n    margin-right: ").concat(gap, "px ").concat(important, ";\\n  }\\n  \\n  .").concat(_constants__WEBPACK_IMPORTED_MODULE_2__.zeroRightClassName, " .").concat(_constants__WEBPACK_IMPORTED_MODULE_2__.zeroRightClassName, " {\\n    right: 0 ").concat(important, ";\\n  }\\n  \\n  .").concat(_constants__WEBPACK_IMPORTED_MODULE_2__.fullWidthClassName, " .").concat(_constants__WEBPACK_IMPORTED_MODULE_2__.fullWidthClassName, " {\\n    margin-right: 0 ").concat(important, ";\\n  }\\n  \\n  body {\\n    ").concat(_constants__WEBPACK_IMPORTED_MODULE_2__.removedBarSizeVariable, ": ").concat(gap, "px;\\n  }\\n");
};
/**
 * Removes page scrollbar and blocks page scroll when mounted
 */
var RemoveScrollBar = function (props) {
    var noRelative = props.noRelative, noImportant = props.noImportant, _a = props.gapMode, gapMode = _a === void 0 ? 'margin' : _a;
    /*
     gap will be measured on every component mount
     however it will be used only by the "first" invocation
     due to singleton nature of <Style
     */
    var gap = react__WEBPACK_IMPORTED_MODULE_0__.useMemo(function () { return (0,_utils__WEBPACK_IMPORTED_MODULE_3__.getGapWidth)(gapMode); }, [gapMode]);
    return react__WEBPACK_IMPORTED_MODULE_0__.createElement(Style, { styles: getStyles(gap, !noRelative, gapMode, !noImportant ? '!important' : '') });
};
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4748 characters]
//# sourceURL=webpack-internal:///../../../node_modules/react-remove-scroll-bar/dist/es2015/component.js
`);
              }
            ),
            /***/
            "../../../node_modules/react-remove-scroll-bar/dist/es2015/constants.js": (
              /*!******************************************************************************!*\
                !*** ../../../node_modules/react-remove-scroll-bar/dist/es2015/constants.js ***!
                \******************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "fullWidthClassName": () => (/* binding */ fullWidthClassName),
/* harmony export */   "noScrollbarsClassName": () => (/* binding */ noScrollbarsClassName),
/* harmony export */   "removedBarSizeVariable": () => (/* binding */ removedBarSizeVariable),
/* harmony export */   "zeroRightClassName": () => (/* binding */ zeroRightClassName)
/* harmony export */ });
var zeroRightClassName = 'right-scroll-bar-position';
var fullWidthClassName = 'width-before-scroll-bar';
var noScrollbarsClassName = 'with-scroll-bars-hidden';
/**
 * Name of a CSS variable containing the amount of "hidden" scrollbar
 * ! might be undefined ! use will fallback!
 */
var removedBarSizeVariable = '--removed-body-scroll-bar-size';
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlbW92ZS1zY3JvbGwtYmFyL2Rpc3QvZXMyMDE1L2NvbnN0YW50cy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQU87QUFDQTtBQUNBO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDTyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVtb3ZlLXNjcm9sbC1iYXIvZGlzdC9lczIwMTUvY29uc3RhbnRzLmpzPzczZjMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHZhciB6ZXJvUmlnaHRDbGFzc05hbWUgPSAncmlnaHQtc2Nyb2xsLWJhci1wb3NpdGlvbic7XG5leHBvcnQgdmFyIGZ1bGxXaWR0aENsYXNzTmFtZSA9ICd3aWR0aC1iZWZvcmUtc2Nyb2xsLWJhcic7XG5leHBvcnQgdmFyIG5vU2Nyb2xsYmFyc0NsYXNzTmFtZSA9ICd3aXRoLXNjcm9sbC1iYXJzLWhpZGRlbic7XG4vKipcbiAqIE5hbWUgb2YgYSBDU1MgdmFyaWFibGUgY29udGFpbmluZyB0aGUgYW1vdW50IG9mIFwiaGlkZGVuXCIgc2Nyb2xsYmFyXG4gKiAhIG1pZ2h0IGJlIHVuZGVmaW5lZCAhIHVzZSB3aWxsIGZhbGxiYWNrIVxuICovXG5leHBvcnQgdmFyIHJlbW92ZWRCYXJTaXplVmFyaWFibGUgPSAnLS1yZW1vdmVkLWJvZHktc2Nyb2xsLWJhci1zaXplJztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==
//# sourceURL=webpack-internal:///../../../node_modules/react-remove-scroll-bar/dist/es2015/constants.js
`);
              }
            ),
            /***/
            "../../../node_modules/react-remove-scroll-bar/dist/es2015/index.js": (
              /*!**************************************************************************!*\
                !*** ../../../node_modules/react-remove-scroll-bar/dist/es2015/index.js ***!
                \**************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "RemoveScrollBar": () => (/* reexport safe */ _component__WEBPACK_IMPORTED_MODULE_0__.RemoveScrollBar),\n/* harmony export */   "fullWidthClassName": () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_1__.fullWidthClassName),\n/* harmony export */   "getGapWidth": () => (/* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_2__.getGapWidth),\n/* harmony export */   "noScrollbarsClassName": () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_1__.noScrollbarsClassName),\n/* harmony export */   "removedBarSizeVariable": () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_1__.removedBarSizeVariable),\n/* harmony export */   "zeroRightClassName": () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_1__.zeroRightClassName)\n/* harmony export */ });\n/* harmony import */ var _component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./component */ "../../../node_modules/react-remove-scroll-bar/dist/es2015/component.js");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constants */ "../../../node_modules/react-remove-scroll-bar/dist/es2015/constants.js");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils */ "../../../node_modules/react-remove-scroll-bar/dist/es2015/utils.js");\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlbW92ZS1zY3JvbGwtYmFyL2Rpc3QvZXMyMDE1L2luZGV4LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUE4QztBQUNzRTtBQUM5RTtBQUMwRiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVtb3ZlLXNjcm9sbC1iYXIvZGlzdC9lczIwMTUvaW5kZXguanM/ZGU3YiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZW1vdmVTY3JvbGxCYXIgfSBmcm9tICcuL2NvbXBvbmVudCc7XG5pbXBvcnQgeyB6ZXJvUmlnaHRDbGFzc05hbWUsIGZ1bGxXaWR0aENsYXNzTmFtZSwgbm9TY3JvbGxiYXJzQ2xhc3NOYW1lLCByZW1vdmVkQmFyU2l6ZVZhcmlhYmxlIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZ2V0R2FwV2lkdGggfSBmcm9tICcuL3V0aWxzJztcbmV4cG9ydCB7IFJlbW92ZVNjcm9sbEJhciwgemVyb1JpZ2h0Q2xhc3NOYW1lLCBmdWxsV2lkdGhDbGFzc05hbWUsIG5vU2Nyb2xsYmFyc0NsYXNzTmFtZSwgcmVtb3ZlZEJhclNpemVWYXJpYWJsZSwgZ2V0R2FwV2lkdGgsIH07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/react-remove-scroll-bar/dist/es2015/index.js\n');
              }
            ),
            /***/
            "../../../node_modules/react-remove-scroll-bar/dist/es2015/utils.js": (
              /*!**************************************************************************!*\
                !*** ../../../node_modules/react-remove-scroll-bar/dist/es2015/utils.js ***!
                \**************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "getGapWidth": () => (/* binding */ getGapWidth),
/* harmony export */   "zeroGap": () => (/* binding */ zeroGap)
/* harmony export */ });
var zeroGap = {
    left: 0,
    top: 0,
    right: 0,
    gap: 0,
};
var parse = function (x) { return parseInt(x || '', 10) || 0; };
var getOffset = function (gapMode) {
    var cs = window.getComputedStyle(document.body);
    var left = cs[gapMode === 'padding' ? 'paddingLeft' : 'marginLeft'];
    var top = cs[gapMode === 'padding' ? 'paddingTop' : 'marginTop'];
    var right = cs[gapMode === 'padding' ? 'paddingRight' : 'marginRight'];
    return [parse(left), parse(top), parse(right)];
};
var getGapWidth = function (gapMode) {
    if (gapMode === void 0) { gapMode = 'margin'; }
    if (typeof window === 'undefined') {
        return zeroGap;
    }
    var offsets = getOffset(gapMode);
    var documentWidth = document.documentElement.clientWidth;
    var windowWidth = window.innerWidth;
    return {
        left: offsets[0],
        top: offsets[1],
        right: offsets[2],
        gap: Math.max(0, windowWidth - documentWidth + offsets[2] - offsets[0]),
    };
};
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlbW92ZS1zY3JvbGwtYmFyL2Rpc3QvZXMyMDE1L3V0aWxzLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUCw4QkFBOEI7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlbW92ZS1zY3JvbGwtYmFyL2Rpc3QvZXMyMDE1L3V0aWxzLmpzPzUwYjUiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHZhciB6ZXJvR2FwID0ge1xuICAgIGxlZnQ6IDAsXG4gICAgdG9wOiAwLFxuICAgIHJpZ2h0OiAwLFxuICAgIGdhcDogMCxcbn07XG52YXIgcGFyc2UgPSBmdW5jdGlvbiAoeCkgeyByZXR1cm4gcGFyc2VJbnQoeCB8fCAnJywgMTApIHx8IDA7IH07XG52YXIgZ2V0T2Zmc2V0ID0gZnVuY3Rpb24gKGdhcE1vZGUpIHtcbiAgICB2YXIgY3MgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5ib2R5KTtcbiAgICB2YXIgbGVmdCA9IGNzW2dhcE1vZGUgPT09ICdwYWRkaW5nJyA/ICdwYWRkaW5nTGVmdCcgOiAnbWFyZ2luTGVmdCddO1xuICAgIHZhciB0b3AgPSBjc1tnYXBNb2RlID09PSAncGFkZGluZycgPyAncGFkZGluZ1RvcCcgOiAnbWFyZ2luVG9wJ107XG4gICAgdmFyIHJpZ2h0ID0gY3NbZ2FwTW9kZSA9PT0gJ3BhZGRpbmcnID8gJ3BhZGRpbmdSaWdodCcgOiAnbWFyZ2luUmlnaHQnXTtcbiAgICByZXR1cm4gW3BhcnNlKGxlZnQpLCBwYXJzZSh0b3ApLCBwYXJzZShyaWdodCldO1xufTtcbmV4cG9ydCB2YXIgZ2V0R2FwV2lkdGggPSBmdW5jdGlvbiAoZ2FwTW9kZSkge1xuICAgIGlmIChnYXBNb2RlID09PSB2b2lkIDApIHsgZ2FwTW9kZSA9ICdtYXJnaW4nOyB9XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHJldHVybiB6ZXJvR2FwO1xuICAgIH1cbiAgICB2YXIgb2Zmc2V0cyA9IGdldE9mZnNldChnYXBNb2RlKTtcbiAgICB2YXIgZG9jdW1lbnRXaWR0aCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aDtcbiAgICB2YXIgd2luZG93V2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgICByZXR1cm4ge1xuICAgICAgICBsZWZ0OiBvZmZzZXRzWzBdLFxuICAgICAgICB0b3A6IG9mZnNldHNbMV0sXG4gICAgICAgIHJpZ2h0OiBvZmZzZXRzWzJdLFxuICAgICAgICBnYXA6IE1hdGgubWF4KDAsIHdpbmRvd1dpZHRoIC0gZG9jdW1lbnRXaWR0aCArIG9mZnNldHNbMl0gLSBvZmZzZXRzWzBdKSxcbiAgICB9O1xufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==
//# sourceURL=webpack-internal:///../../../node_modules/react-remove-scroll-bar/dist/es2015/utils.js
`);
              }
            ),
            /***/
            "../../../node_modules/react-remove-scroll/dist/es2015/Combination.js": (
              /*!****************************************************************************!*\
                !*** ../../../node_modules/react-remove-scroll/dist/es2015/Combination.js ***!
                \****************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! tslib */ "../../../node_modules/tslib/tslib.es6.js");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _UI__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./UI */ "../../../node_modules/react-remove-scroll/dist/es2015/UI.js");\n/* harmony import */ var _sidecar__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./sidecar */ "../../../node_modules/react-remove-scroll/dist/es2015/sidecar.js");\n\n\n\n\nvar ReactRemoveScroll = react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(function (props, ref) { return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(_UI__WEBPACK_IMPORTED_MODULE_2__.RemoveScroll, (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)({}, props, { ref: ref, sideCar: _sidecar__WEBPACK_IMPORTED_MODULE_1__["default"] }))); });\nReactRemoveScroll.classNames = _UI__WEBPACK_IMPORTED_MODULE_2__.RemoveScroll.classNames;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ReactRemoveScroll);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlbW92ZS1zY3JvbGwvZGlzdC9lczIwMTUvQ29tYmluYXRpb24uanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQWlDO0FBQ0Y7QUFDSztBQUNKO0FBQ2hDLHdCQUF3Qiw2Q0FBZ0IseUJBQXlCLFFBQVEsZ0RBQW1CLENBQUMsNkNBQVksRUFBRSwrQ0FBUSxHQUFHLFdBQVcsbUJBQW1CLGdEQUFPLEVBQUUsTUFBTTtBQUNuSywrQkFBK0Isd0RBQXVCO0FBQ3RELGlFQUFlLGlCQUFpQixFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1yZW1vdmUtc2Nyb2xsL2Rpc3QvZXMyMDE1L0NvbWJpbmF0aW9uLmpzP2ZmYmYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFJlbW92ZVNjcm9sbCB9IGZyb20gJy4vVUknO1xuaW1wb3J0IFNpZGVDYXIgZnJvbSAnLi9zaWRlY2FyJztcbnZhciBSZWFjdFJlbW92ZVNjcm9sbCA9IFJlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gKHByb3BzLCByZWYpIHsgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFJlbW92ZVNjcm9sbCwgX19hc3NpZ24oe30sIHByb3BzLCB7IHJlZjogcmVmLCBzaWRlQ2FyOiBTaWRlQ2FyIH0pKSk7IH0pO1xuUmVhY3RSZW1vdmVTY3JvbGwuY2xhc3NOYW1lcyA9IFJlbW92ZVNjcm9sbC5jbGFzc05hbWVzO1xuZXhwb3J0IGRlZmF1bHQgUmVhY3RSZW1vdmVTY3JvbGw7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/react-remove-scroll/dist/es2015/Combination.js\n');
              }
            ),
            /***/
            "../../../node_modules/react-remove-scroll/dist/es2015/SideEffect.js": (
              /*!***************************************************************************!*\
                !*** ../../../node_modules/react-remove-scroll/dist/es2015/SideEffect.js ***!
                \***************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "RemoveScrollSideCar": () => (/* binding */ RemoveScrollSideCar),
/* harmony export */   "getDeltaXY": () => (/* binding */ getDeltaXY),
/* harmony export */   "getTouchXY": () => (/* binding */ getTouchXY)
/* harmony export */ });
/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! tslib */ "../../../node_modules/tslib/tslib.es6.js");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var react_remove_scroll_bar__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-remove-scroll-bar */ "../../../node_modules/react-remove-scroll-bar/dist/es2015/index.js");
/* harmony import */ var react_style_singleton__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-style-singleton */ "../../../node_modules/react-style-singleton/dist/es2015/index.js");
/* harmony import */ var _aggresiveCapture__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./aggresiveCapture */ "../../../node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js");
/* harmony import */ var _handleScroll__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./handleScroll */ "../../../node_modules/react-remove-scroll/dist/es2015/handleScroll.js");






var getTouchXY = function (event) {
    return 'changedTouches' in event ? [event.changedTouches[0].clientX, event.changedTouches[0].clientY] : [0, 0];
};
var getDeltaXY = function (event) { return [event.deltaX, event.deltaY]; };
var extractRef = function (ref) {
    return ref && 'current' in ref ? ref.current : ref;
};
var deltaCompare = function (x, y) { return x[0] === y[0] && x[1] === y[1]; };
var generateStyle = function (id) { return "\\n  .block-interactivity-".concat(id, " {pointer-events: none;}\\n  .allow-interactivity-").concat(id, " {pointer-events: all;}\\n"); };
var idCounter = 0;
var lockStack = [];
function RemoveScrollSideCar(props) {
    var shouldPreventQueue = react__WEBPACK_IMPORTED_MODULE_0__.useRef([]);
    var touchStartRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef([0, 0]);
    var activeAxis = react__WEBPACK_IMPORTED_MODULE_0__.useRef();
    var id = react__WEBPACK_IMPORTED_MODULE_0__.useState(idCounter++)[0];
    var Style = react__WEBPACK_IMPORTED_MODULE_0__.useState(function () { return (0,react_style_singleton__WEBPACK_IMPORTED_MODULE_2__.styleSingleton)(); })[0];
    var lastProps = react__WEBPACK_IMPORTED_MODULE_0__.useRef(props);
    react__WEBPACK_IMPORTED_MODULE_0__.useEffect(function () {
        lastProps.current = props;
    }, [props]);
    react__WEBPACK_IMPORTED_MODULE_0__.useEffect(function () {
        if (props.inert) {
            document.body.classList.add("block-interactivity-".concat(id));
            var allow_1 = (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__spreadArray)([props.lockRef.current], (props.shards || []).map(extractRef), true).filter(Boolean);
            allow_1.forEach(function (el) { return el.classList.add("allow-interactivity-".concat(id)); });
            return function () {
                document.body.classList.remove("block-interactivity-".concat(id));
                allow_1.forEach(function (el) { return el.classList.remove("allow-interactivity-".concat(id)); });
            };
        }
        return;
    }, [props.inert, props.lockRef.current, props.shards]);
    var shouldCancelEvent = react__WEBPACK_IMPORTED_MODULE_0__.useCallback(function (event, parent) {
        if ('touches' in event && event.touches.length === 2) {
            return !lastProps.current.allowPinchZoom;
        }
        var touch = getTouchXY(event);
        var touchStart = touchStartRef.current;
        var deltaX = 'deltaX' in event ? event.deltaX : touchStart[0] - touch[0];
        var deltaY = 'deltaY' in event ? event.deltaY : touchStart[1] - touch[1];
        var currentAxis;
        var target = event.target;
        var moveDirection = Math.abs(deltaX) > Math.abs(deltaY) ? 'h' : 'v';
        // allow horizontal touch move on Range inputs. They will not cause any scroll
        if ('touches' in event && moveDirection === 'h' && target.type === 'range') {
            return false;
        }
        var canBeScrolledInMainDirection = (0,_handleScroll__WEBPACK_IMPORTED_MODULE_4__.locationCouldBeScrolled)(moveDirection, target);
        if (!canBeScrolledInMainDirection) {
            return true;
        }
        if (canBeScrolledInMainDirection) {
            currentAxis = moveDirection;
        }
        else {
            currentAxis = moveDirection === 'v' ? 'h' : 'v';
            canBeScrolledInMainDirection = (0,_handleScroll__WEBPACK_IMPORTED_MODULE_4__.locationCouldBeScrolled)(moveDirection, target);
            // other axis might be not scrollable
        }
        if (!canBeScrolledInMainDirection) {
            return false;
        }
        if (!activeAxis.current && 'changedTouches' in event && (deltaX || deltaY)) {
            activeAxis.current = currentAxis;
        }
        if (!currentAxis) {
            return true;
        }
        var cancelingAxis = activeAxis.current || currentAxis;
        return (0,_handleScroll__WEBPACK_IMPORTED_MODULE_4__.handleScroll)(cancelingAxis, parent, event, cancelingAxis === 'h' ? deltaX : deltaY, true);
    }, []);
    var shouldPrevent = react__WEBPACK_IMPORTED_MODULE_0__.useCallback(function (_event) {
        var event = _event;
        if (!lockStack.length || lockStack[lockStack.length - 1] !== Style) {
            // not the last active
            return;
        }
        var delta = 'deltaY' in event ? getDeltaXY(event) : getTouchXY(event);
        var sourceEvent = shouldPreventQueue.current.filter(function (e) { return e.name === event.type && e.target === event.target && deltaCompare(e.delta, delta); })[0];
        // self event, and should be canceled
        if (sourceEvent && sourceEvent.should) {
            if (event.cancelable) {
                event.preventDefault();
            }
            return;
        }
        // outside or shard event
        if (!sourceEvent) {
            var shardNodes = (lastProps.current.shards || [])
                .map(extractRef)
                .filter(Boolean)
                .filter(function (node) { return node.contains(event.target); });
            var shouldStop = shardNodes.length > 0 ? shouldCancelEvent(event, shardNodes[0]) : !lastProps.current.noIsolation;
            if (shouldStop) {
                if (event.cancelable) {
                    event.preventDefault();
                }
            }
        }
    }, []);
    var shouldCancel = react__WEBPACK_IMPORTED_MODULE_0__.useCallback(function (name, delta, target, should) {
        var event = { name: name, delta: delta, target: target, should: should };
        shouldPreventQueue.current.push(event);
        setTimeout(function () {
            shouldPreventQueue.current = shouldPreventQueue.current.filter(function (e) { return e !== event; });
        }, 1);
    }, []);
    var scrollTouchStart = react__WEBPACK_IMPORTED_MODULE_0__.useCallback(function (event) {
        touchStartRef.current = getTouchXY(event);
        activeAxis.current = undefined;
    }, []);
    var scrollWheel = react__WEBPACK_IMPORTED_MODULE_0__.useCallback(function (event) {
        shouldCancel(event.type, getDeltaXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));
    }, []);
    var scrollTouchMove = react__WEBPACK_IMPORTED_MODULE_0__.useCallback(function (event) {
        shouldCancel(event.type, getTouchXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));
    }, []);
    react__WEBPACK_IMPORTED_MODULE_0__.useEffect(function () {
        lockStack.push(Style);
        props.setCallbacks({
            onScrollCapture: scrollWheel,
            onWheelCapture: scrollWheel,
            onTouchMoveCapture: scrollTouchMove,
        });
        document.addEventListener('wheel', shouldPrevent, _aggresiveCapture__WEBPACK_IMPORTED_MODULE_5__.nonPassive);
        document.addEventListener('touchmove', shouldPrevent, _aggresiveCapture__WEBPACK_IMPORTED_MODULE_5__.nonPassive);
        document.addEventListener('touchstart', scrollTouchStart, _aggresiveCapture__WEBPACK_IMPORTED_MODULE_5__.nonPassive);
        return function () {
            lockStack = lockStack.filter(function (inst) { return inst !== Style; });
            document.removeEventListener('wheel', shouldPrevent, _aggresiveCapture__WEBPACK_IMPORTED_MODULE_5__.nonPassive);
            document.removeEventListener('touchmove', shouldPrevent, _aggresiveCapture__WEBPACK_IMPORTED_MODULE_5__.nonPassive);
            document.removeEventListener('touchstart', scrollTouchStart, _aggresiveCapture__WEBPACK_IMPORTED_MODULE_5__.nonPassive);
        };
    }, []);
    var removeScrollBar = props.removeScrollBar, inert = props.inert;
    return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, null,
        inert ? react__WEBPACK_IMPORTED_MODULE_0__.createElement(Style, { styles: generateStyle(id) }) : null,
        removeScrollBar ? react__WEBPACK_IMPORTED_MODULE_0__.createElement(react_remove_scroll_bar__WEBPACK_IMPORTED_MODULE_1__.RemoveScrollBar, { gapMode: "margin" }) : null));
}
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 12008 characters]
//# sourceURL=webpack-internal:///../../../node_modules/react-remove-scroll/dist/es2015/SideEffect.js
`);
              }
            ),
            /***/
            "../../../node_modules/react-remove-scroll/dist/es2015/UI.js": (
              /*!*******************************************************************!*\
                !*** ../../../node_modules/react-remove-scroll/dist/es2015/UI.js ***!
                \*******************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "RemoveScroll": () => (/* binding */ RemoveScroll)
/* harmony export */ });
/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! tslib */ "../../../node_modules/tslib/tslib.es6.js");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var react_remove_scroll_bar_constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-remove-scroll-bar/constants */ "../../../node_modules/react-remove-scroll-bar/dist/es2015/constants.js");
/* harmony import */ var use_callback_ref__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! use-callback-ref */ "../../../node_modules/use-callback-ref/dist/es2015/useMergeRef.js");
/* harmony import */ var _medium__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./medium */ "../../../node_modules/react-remove-scroll/dist/es2015/medium.js");





var nothing = function () {
    return;
};
/**
 * Removes scrollbar from the page and contain the scroll within the Lock
 */
var RemoveScroll = react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(function (props, parentRef) {
    var ref = react__WEBPACK_IMPORTED_MODULE_0__.useRef(null);
    var _a = react__WEBPACK_IMPORTED_MODULE_0__.useState({
        onScrollCapture: nothing,
        onWheelCapture: nothing,
        onTouchMoveCapture: nothing,
    }), callbacks = _a[0], setCallbacks = _a[1];
    var forwardProps = props.forwardProps, children = props.children, className = props.className, removeScrollBar = props.removeScrollBar, enabled = props.enabled, shards = props.shards, sideCar = props.sideCar, noIsolation = props.noIsolation, inert = props.inert, allowPinchZoom = props.allowPinchZoom, _b = props.as, Container = _b === void 0 ? 'div' : _b, rest = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__rest)(props, ["forwardProps", "children", "className", "removeScrollBar", "enabled", "shards", "sideCar", "noIsolation", "inert", "allowPinchZoom", "as"]);
    var SideCar = sideCar;
    var containerRef = (0,use_callback_ref__WEBPACK_IMPORTED_MODULE_3__.useMergeRefs)([ref, parentRef]);
    var containerProps = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, rest), callbacks);
    return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, null,
        enabled && (react__WEBPACK_IMPORTED_MODULE_0__.createElement(SideCar, { sideCar: _medium__WEBPACK_IMPORTED_MODULE_4__.effectCar, removeScrollBar: removeScrollBar, shards: shards, noIsolation: noIsolation, inert: inert, setCallbacks: setCallbacks, allowPinchZoom: !!allowPinchZoom, lockRef: ref })),
        forwardProps ? (react__WEBPACK_IMPORTED_MODULE_0__.cloneElement(react__WEBPACK_IMPORTED_MODULE_0__.Children.only(children), (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, containerProps), { ref: containerRef }))) : (react__WEBPACK_IMPORTED_MODULE_0__.createElement(Container, (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, containerProps, { className: className, ref: containerRef }), children))));
});
RemoveScroll.defaultProps = {
    enabled: true,
    removeScrollBar: true,
    inert: false,
};
RemoveScroll.classNames = {
    fullWidth: react_remove_scroll_bar_constants__WEBPACK_IMPORTED_MODULE_1__.fullWidthClassName,
    zeroRight: react_remove_scroll_bar_constants__WEBPACK_IMPORTED_MODULE_1__.zeroRightClassName,
};

//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlbW92ZS1zY3JvbGwvZGlzdC9lczIwMTUvVUkuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUF5QztBQUNWO0FBQzREO0FBQzNDO0FBQ1g7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLDZDQUFnQjtBQUNuQyxjQUFjLHlDQUFZO0FBQzFCLGFBQWEsMkNBQWM7QUFDM0I7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLGdYQUFnWCw2Q0FBTTtBQUN0WDtBQUNBLHVCQUF1Qiw4REFBWTtBQUNuQyx5QkFBeUIsK0NBQVEsQ0FBQywrQ0FBUSxHQUFHO0FBQzdDLFlBQVksZ0RBQW1CLENBQUMsMkNBQWM7QUFDOUMsb0JBQW9CLGdEQUFtQixZQUFZLFNBQVMsOENBQVMsd0tBQXdLO0FBQzdPLHdCQUF3QiwrQ0FBa0IsQ0FBQyxnREFBbUIsWUFBWSwrQ0FBUSxDQUFDLCtDQUFRLEdBQUcscUJBQXFCLG1CQUFtQixPQUFPLGdEQUFtQixZQUFZLCtDQUFRLEdBQUcsb0JBQW9CLHlDQUF5QztBQUNwUCxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxpRkFBa0I7QUFDakMsZUFBZSxpRkFBa0I7QUFDakM7QUFDd0IiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlbW92ZS1zY3JvbGwvZGlzdC9lczIwMTUvVUkuanM/MTlmNCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiwgX19yZXN0IH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBmdWxsV2lkdGhDbGFzc05hbWUsIHplcm9SaWdodENsYXNzTmFtZSB9IGZyb20gJ3JlYWN0LXJlbW92ZS1zY3JvbGwtYmFyL2NvbnN0YW50cyc7XG5pbXBvcnQgeyB1c2VNZXJnZVJlZnMgfSBmcm9tICd1c2UtY2FsbGJhY2stcmVmJztcbmltcG9ydCB7IGVmZmVjdENhciB9IGZyb20gJy4vbWVkaXVtJztcbnZhciBub3RoaW5nID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybjtcbn07XG4vKipcbiAqIFJlbW92ZXMgc2Nyb2xsYmFyIGZyb20gdGhlIHBhZ2UgYW5kIGNvbnRhaW4gdGhlIHNjcm9sbCB3aXRoaW4gdGhlIExvY2tcbiAqL1xudmFyIFJlbW92ZVNjcm9sbCA9IFJlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gKHByb3BzLCBwYXJlbnRSZWYpIHtcbiAgICB2YXIgcmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIHZhciBfYSA9IFJlYWN0LnVzZVN0YXRlKHtcbiAgICAgICAgb25TY3JvbGxDYXB0dXJlOiBub3RoaW5nLFxuICAgICAgICBvbldoZWVsQ2FwdHVyZTogbm90aGluZyxcbiAgICAgICAgb25Ub3VjaE1vdmVDYXB0dXJlOiBub3RoaW5nLFxuICAgIH0pLCBjYWxsYmFja3MgPSBfYVswXSwgc2V0Q2FsbGJhY2tzID0gX2FbMV07XG4gICAgdmFyIGZvcndhcmRQcm9wcyA9IHByb3BzLmZvcndhcmRQcm9wcywgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbiwgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLCByZW1vdmVTY3JvbGxCYXIgPSBwcm9wcy5yZW1vdmVTY3JvbGxCYXIsIGVuYWJsZWQgPSBwcm9wcy5lbmFibGVkLCBzaGFyZHMgPSBwcm9wcy5zaGFyZHMsIHNpZGVDYXIgPSBwcm9wcy5zaWRlQ2FyLCBub0lzb2xhdGlvbiA9IHByb3BzLm5vSXNvbGF0aW9uLCBpbmVydCA9IHByb3BzLmluZXJ0LCBhbGxvd1BpbmNoWm9vbSA9IHByb3BzLmFsbG93UGluY2hab29tLCBfYiA9IHByb3BzLmFzLCBDb250YWluZXIgPSBfYiA9PT0gdm9pZCAwID8gJ2RpdicgOiBfYiwgcmVzdCA9IF9fcmVzdChwcm9wcywgW1wiZm9yd2FyZFByb3BzXCIsIFwiY2hpbGRyZW5cIiwgXCJjbGFzc05hbWVcIiwgXCJyZW1vdmVTY3JvbGxCYXJcIiwgXCJlbmFibGVkXCIsIFwic2hhcmRzXCIsIFwic2lkZUNhclwiLCBcIm5vSXNvbGF0aW9uXCIsIFwiaW5lcnRcIiwgXCJhbGxvd1BpbmNoWm9vbVwiLCBcImFzXCJdKTtcbiAgICB2YXIgU2lkZUNhciA9IHNpZGVDYXI7XG4gICAgdmFyIGNvbnRhaW5lclJlZiA9IHVzZU1lcmdlUmVmcyhbcmVmLCBwYXJlbnRSZWZdKTtcbiAgICB2YXIgY29udGFpbmVyUHJvcHMgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgcmVzdCksIGNhbGxiYWNrcyk7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxuICAgICAgICBlbmFibGVkICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFNpZGVDYXIsIHsgc2lkZUNhcjogZWZmZWN0Q2FyLCByZW1vdmVTY3JvbGxCYXI6IHJlbW92ZVNjcm9sbEJhciwgc2hhcmRzOiBzaGFyZHMsIG5vSXNvbGF0aW9uOiBub0lzb2xhdGlvbiwgaW5lcnQ6IGluZXJ0LCBzZXRDYWxsYmFja3M6IHNldENhbGxiYWNrcywgYWxsb3dQaW5jaFpvb206ICEhYWxsb3dQaW5jaFpvb20sIGxvY2tSZWY6IHJlZiB9KSksXG4gICAgICAgIGZvcndhcmRQcm9wcyA/IChSZWFjdC5jbG9uZUVsZW1lbnQoUmVhY3QuQ2hpbGRyZW4ub25seShjaGlsZHJlbiksIF9fYXNzaWduKF9fYXNzaWduKHt9LCBjb250YWluZXJQcm9wcyksIHsgcmVmOiBjb250YWluZXJSZWYgfSkpKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KENvbnRhaW5lciwgX19hc3NpZ24oe30sIGNvbnRhaW5lclByb3BzLCB7IGNsYXNzTmFtZTogY2xhc3NOYW1lLCByZWY6IGNvbnRhaW5lclJlZiB9KSwgY2hpbGRyZW4pKSkpO1xufSk7XG5SZW1vdmVTY3JvbGwuZGVmYXVsdFByb3BzID0ge1xuICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgcmVtb3ZlU2Nyb2xsQmFyOiB0cnVlLFxuICAgIGluZXJ0OiBmYWxzZSxcbn07XG5SZW1vdmVTY3JvbGwuY2xhc3NOYW1lcyA9IHtcbiAgICBmdWxsV2lkdGg6IGZ1bGxXaWR0aENsYXNzTmFtZSxcbiAgICB6ZXJvUmlnaHQ6IHplcm9SaWdodENsYXNzTmFtZSxcbn07XG5leHBvcnQgeyBSZW1vdmVTY3JvbGwgfTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==
//# sourceURL=webpack-internal:///../../../node_modules/react-remove-scroll/dist/es2015/UI.js
`);
              }
            ),
            /***/
            "../../../node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js": (
              /*!*********************************************************************************!*\
                !*** ../../../node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js ***!
                \*********************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "nonPassive": () => (/* binding */ nonPassive)
/* harmony export */ });
var passiveSupported = false;
if (typeof window !== 'undefined') {
    try {
        var options = Object.defineProperty({}, 'passive', {
            get: function () {
                passiveSupported = true;
                return true;
            },
        });
        // @ts-ignore
        window.addEventListener('test', options, options);
        // @ts-ignore
        window.removeEventListener('test', options, options);
    }
    catch (err) {
        passiveSupported = false;
    }
}
var nonPassive = passiveSupported ? { passive: false } : false;
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlbW92ZS1zY3JvbGwvZGlzdC9lczIwMTUvYWdncmVzaXZlQ2FwdHVyZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0EsOENBQThDO0FBQzlDO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sc0NBQXNDLGlCQUFpQiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVtb3ZlLXNjcm9sbC9kaXN0L2VzMjAxNS9hZ2dyZXNpdmVDYXB0dXJlLmpzP2E2ZTkiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHBhc3NpdmVTdXBwb3J0ZWQgPSBmYWxzZTtcbmlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgIHRyeSB7XG4gICAgICAgIHZhciBvcHRpb25zID0gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAncGFzc2l2ZScsIHtcbiAgICAgICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHBhc3NpdmVTdXBwb3J0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Rlc3QnLCBvcHRpb25zLCBvcHRpb25zKTtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigndGVzdCcsIG9wdGlvbnMsIG9wdGlvbnMpO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHBhc3NpdmVTdXBwb3J0ZWQgPSBmYWxzZTtcbiAgICB9XG59XG5leHBvcnQgdmFyIG5vblBhc3NpdmUgPSBwYXNzaXZlU3VwcG9ydGVkID8geyBwYXNzaXZlOiBmYWxzZSB9IDogZmFsc2U7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=
//# sourceURL=webpack-internal:///../../../node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js
`);
              }
            ),
            /***/
            "../../../node_modules/react-remove-scroll/dist/es2015/handleScroll.js": (
              /*!*****************************************************************************!*\
                !*** ../../../node_modules/react-remove-scroll/dist/es2015/handleScroll.js ***!
                \*****************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "handleScroll": () => (/* binding */ handleScroll),
/* harmony export */   "locationCouldBeScrolled": () => (/* binding */ locationCouldBeScrolled)
/* harmony export */ });
var alwaysContainsScroll = function (node) {
    // textarea will always _contain_ scroll inside self. It only can be hidden
    return node.tagName === 'TEXTAREA';
};
var elementCanBeScrolled = function (node, overflow) {
    var styles = window.getComputedStyle(node);
    return (
    // not-not-scrollable
    styles[overflow] !== 'hidden' &&
        // contains scroll inside self
        !(styles.overflowY === styles.overflowX && !alwaysContainsScroll(node) && styles[overflow] === 'visible'));
};
var elementCouldBeVScrolled = function (node) { return elementCanBeScrolled(node, 'overflowY'); };
var elementCouldBeHScrolled = function (node) { return elementCanBeScrolled(node, 'overflowX'); };
var locationCouldBeScrolled = function (axis, node) {
    var current = node;
    do {
        // Skip over shadow root
        if (typeof ShadowRoot !== 'undefined' && current instanceof ShadowRoot) {
            current = current.host;
        }
        var isScrollable = elementCouldBeScrolled(axis, current);
        if (isScrollable) {
            var _a = getScrollVariables(axis, current), s = _a[1], d = _a[2];
            if (s > d) {
                return true;
            }
        }
        current = current.parentNode;
    } while (current && current !== document.body);
    return false;
};
var getVScrollVariables = function (_a) {
    var scrollTop = _a.scrollTop, scrollHeight = _a.scrollHeight, clientHeight = _a.clientHeight;
    return [
        scrollTop,
        scrollHeight,
        clientHeight,
    ];
};
var getHScrollVariables = function (_a) {
    var scrollLeft = _a.scrollLeft, scrollWidth = _a.scrollWidth, clientWidth = _a.clientWidth;
    return [
        scrollLeft,
        scrollWidth,
        clientWidth,
    ];
};
var elementCouldBeScrolled = function (axis, node) {
    return axis === 'v' ? elementCouldBeVScrolled(node) : elementCouldBeHScrolled(node);
};
var getScrollVariables = function (axis, node) {
    return axis === 'v' ? getVScrollVariables(node) : getHScrollVariables(node);
};
var getDirectionFactor = function (axis, direction) {
    /**
     * If the element's direction is rtl (right-to-left), then scrollLeft is 0 when the scrollbar is at its rightmost position,
     * and then increasingly negative as you scroll towards the end of the content.
     * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollLeft
     */
    return axis === 'h' && direction === 'rtl' ? -1 : 1;
};
var handleScroll = function (axis, endTarget, event, sourceDelta, noOverscroll) {
    var directionFactor = getDirectionFactor(axis, window.getComputedStyle(endTarget).direction);
    var delta = directionFactor * sourceDelta;
    // find scrollable target
    var target = event.target;
    var targetInLock = endTarget.contains(target);
    var shouldCancelScroll = false;
    var isDeltaPositive = delta > 0;
    var availableScroll = 0;
    var availableScrollTop = 0;
    do {
        var _a = getScrollVariables(axis, target), position = _a[0], scroll_1 = _a[1], capacity = _a[2];
        var elementScroll = scroll_1 - capacity - directionFactor * position;
        if (position || elementScroll) {
            if (elementCouldBeScrolled(axis, target)) {
                availableScroll += elementScroll;
                availableScrollTop += position;
            }
        }
        target = target.parentNode;
    } while (
    // portaled content
    (!targetInLock && target !== document.body) ||
        // self content
        (targetInLock && (endTarget.contains(target) || endTarget === target)));
    if (isDeltaPositive && ((noOverscroll && availableScroll === 0) || (!noOverscroll && delta > availableScroll))) {
        shouldCancelScroll = true;
    }
    else if (!isDeltaPositive &&
        ((noOverscroll && availableScrollTop === 0) || (!noOverscroll && -delta > availableScrollTop))) {
        shouldCancelScroll = true;
    }
    return shouldCancelScroll;
};
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6436 characters]
//# sourceURL=webpack-internal:///../../../node_modules/react-remove-scroll/dist/es2015/handleScroll.js
`);
              }
            ),
            /***/
            "../../../node_modules/react-remove-scroll/dist/es2015/medium.js": (
              /*!***********************************************************************!*\
                !*** ../../../node_modules/react-remove-scroll/dist/es2015/medium.js ***!
                \***********************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "effectCar": () => (/* binding */ effectCar)\n/* harmony export */ });\n/* harmony import */ var use_sidecar__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! use-sidecar */ "../../../node_modules/use-sidecar/dist/es2015/medium.js");\n\nvar effectCar = (0,use_sidecar__WEBPACK_IMPORTED_MODULE_0__.createSidecarMedium)();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlbW92ZS1zY3JvbGwvZGlzdC9lczIwMTUvbWVkaXVtLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQWtEO0FBQzNDLGdCQUFnQixnRUFBbUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlbW92ZS1zY3JvbGwvZGlzdC9lczIwMTUvbWVkaXVtLmpzPzg4YTMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlU2lkZWNhck1lZGl1bSB9IGZyb20gJ3VzZS1zaWRlY2FyJztcbmV4cG9ydCB2YXIgZWZmZWN0Q2FyID0gY3JlYXRlU2lkZWNhck1lZGl1bSgpO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/react-remove-scroll/dist/es2015/medium.js\n');
              }
            ),
            /***/
            "../../../node_modules/react-remove-scroll/dist/es2015/sidecar.js": (
              /*!************************************************************************!*\
                !*** ../../../node_modules/react-remove-scroll/dist/es2015/sidecar.js ***!
                \************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var use_sidecar__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! use-sidecar */ "../../../node_modules/use-sidecar/dist/es2015/exports.js");\n/* harmony import */ var _SideEffect__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./SideEffect */ "../../../node_modules/react-remove-scroll/dist/es2015/SideEffect.js");\n/* harmony import */ var _medium__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./medium */ "../../../node_modules/react-remove-scroll/dist/es2015/medium.js");\n\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,use_sidecar__WEBPACK_IMPORTED_MODULE_0__.exportSidecar)(_medium__WEBPACK_IMPORTED_MODULE_1__.effectCar, _SideEffect__WEBPACK_IMPORTED_MODULE_2__.RemoveScrollSideCar));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlbW92ZS1zY3JvbGwvZGlzdC9lczIwMTUvc2lkZWNhci5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQTRDO0FBQ087QUFDZDtBQUNyQyxpRUFBZSwwREFBYSxDQUFDLDhDQUFTLEVBQUUsNERBQW1CLENBQUMsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVtb3ZlLXNjcm9sbC9kaXN0L2VzMjAxNS9zaWRlY2FyLmpzPzI2MjIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhwb3J0U2lkZWNhciB9IGZyb20gJ3VzZS1zaWRlY2FyJztcbmltcG9ydCB7IFJlbW92ZVNjcm9sbFNpZGVDYXIgfSBmcm9tICcuL1NpZGVFZmZlY3QnO1xuaW1wb3J0IHsgZWZmZWN0Q2FyIH0gZnJvbSAnLi9tZWRpdW0nO1xuZXhwb3J0IGRlZmF1bHQgZXhwb3J0U2lkZWNhcihlZmZlY3RDYXIsIFJlbW92ZVNjcm9sbFNpZGVDYXIpO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/react-remove-scroll/dist/es2015/sidecar.js\n');
              }
            ),
            /***/
            "../../../node_modules/react-style-singleton/dist/es2015/component.js": (
              /*!****************************************************************************!*\
                !*** ../../../node_modules/react-style-singleton/dist/es2015/component.js ***!
                \****************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "styleSingleton": () => (/* binding */ styleSingleton)\n/* harmony export */ });\n/* harmony import */ var _hook__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hook */ "../../../node_modules/react-style-singleton/dist/es2015/hook.js");\n\n/**\n * create a Component to add styles on demand\n * - styles are added when first instance is mounted\n * - styles are removed when the last instance is unmounted\n * - changing styles in runtime does nothing unless dynamic is set. But with multiple components that can lead to the undefined behavior\n */\nvar styleSingleton = function () {\n    var useStyle = (0,_hook__WEBPACK_IMPORTED_MODULE_0__.styleHookSingleton)();\n    var Sheet = function (_a) {\n        var styles = _a.styles, dynamic = _a.dynamic;\n        useStyle(styles, dynamic);\n        return null;\n    };\n    return Sheet;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXN0eWxlLXNpbmdsZXRvbi9kaXN0L2VzMjAxNS9jb21wb25lbnQuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBNEM7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUCxtQkFBbUIseURBQWtCO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1zdHlsZS1zaW5nbGV0b24vZGlzdC9lczIwMTUvY29tcG9uZW50LmpzP2JiNzAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc3R5bGVIb29rU2luZ2xldG9uIH0gZnJvbSAnLi9ob29rJztcbi8qKlxuICogY3JlYXRlIGEgQ29tcG9uZW50IHRvIGFkZCBzdHlsZXMgb24gZGVtYW5kXG4gKiAtIHN0eWxlcyBhcmUgYWRkZWQgd2hlbiBmaXJzdCBpbnN0YW5jZSBpcyBtb3VudGVkXG4gKiAtIHN0eWxlcyBhcmUgcmVtb3ZlZCB3aGVuIHRoZSBsYXN0IGluc3RhbmNlIGlzIHVubW91bnRlZFxuICogLSBjaGFuZ2luZyBzdHlsZXMgaW4gcnVudGltZSBkb2VzIG5vdGhpbmcgdW5sZXNzIGR5bmFtaWMgaXMgc2V0LiBCdXQgd2l0aCBtdWx0aXBsZSBjb21wb25lbnRzIHRoYXQgY2FuIGxlYWQgdG8gdGhlIHVuZGVmaW5lZCBiZWhhdmlvclxuICovXG5leHBvcnQgdmFyIHN0eWxlU2luZ2xldG9uID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciB1c2VTdHlsZSA9IHN0eWxlSG9va1NpbmdsZXRvbigpO1xuICAgIHZhciBTaGVldCA9IGZ1bmN0aW9uIChfYSkge1xuICAgICAgICB2YXIgc3R5bGVzID0gX2Euc3R5bGVzLCBkeW5hbWljID0gX2EuZHluYW1pYztcbiAgICAgICAgdXNlU3R5bGUoc3R5bGVzLCBkeW5hbWljKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcbiAgICByZXR1cm4gU2hlZXQ7XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/react-style-singleton/dist/es2015/component.js\n');
              }
            ),
            /***/
            "../../../node_modules/react-style-singleton/dist/es2015/hook.js": (
              /*!***********************************************************************!*\
                !*** ../../../node_modules/react-style-singleton/dist/es2015/hook.js ***!
                \***********************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "styleHookSingleton": () => (/* binding */ styleHookSingleton)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _singleton__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./singleton */ "../../../node_modules/react-style-singleton/dist/es2015/singleton.js");\n\n\n/**\n * creates a hook to control style singleton\n * @see {@link styleSingleton} for a safer component version\n * @example\n * ```tsx\n * const useStyle = styleHookSingleton();\n * ///\n * useStyle(\'body { overflow: hidden}\');\n */\nvar styleHookSingleton = function () {\n    var sheet = (0,_singleton__WEBPACK_IMPORTED_MODULE_1__.stylesheetSingleton)();\n    return function (styles, isDynamic) {\n        react__WEBPACK_IMPORTED_MODULE_0__.useEffect(function () {\n            sheet.add(styles);\n            return function () {\n                sheet.remove();\n            };\n        }, [styles && isDynamic]);\n    };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXN0eWxlLXNpbmdsZXRvbi9kaXN0L2VzMjAxNS9ob29rLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBK0I7QUFDbUI7QUFDbEQ7QUFDQTtBQUNBLFNBQVMsc0JBQXNCO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLGlCQUFpQjtBQUNyQztBQUNPO0FBQ1AsZ0JBQWdCLCtEQUFtQjtBQUNuQztBQUNBLFFBQVEsNENBQWU7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3Qtc3R5bGUtc2luZ2xldG9uL2Rpc3QvZXMyMDE1L2hvb2suanM/ZGM1MCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBzdHlsZXNoZWV0U2luZ2xldG9uIH0gZnJvbSAnLi9zaW5nbGV0b24nO1xuLyoqXG4gKiBjcmVhdGVzIGEgaG9vayB0byBjb250cm9sIHN0eWxlIHNpbmdsZXRvblxuICogQHNlZSB7QGxpbmsgc3R5bGVTaW5nbGV0b259IGZvciBhIHNhZmVyIGNvbXBvbmVudCB2ZXJzaW9uXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiBjb25zdCB1c2VTdHlsZSA9IHN0eWxlSG9va1NpbmdsZXRvbigpO1xuICogLy8vXG4gKiB1c2VTdHlsZSgnYm9keSB7IG92ZXJmbG93OiBoaWRkZW59Jyk7XG4gKi9cbmV4cG9ydCB2YXIgc3R5bGVIb29rU2luZ2xldG9uID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzaGVldCA9IHN0eWxlc2hlZXRTaW5nbGV0b24oKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHN0eWxlcywgaXNEeW5hbWljKSB7XG4gICAgICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzaGVldC5hZGQoc3R5bGVzKTtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc2hlZXQucmVtb3ZlKCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LCBbc3R5bGVzICYmIGlzRHluYW1pY10pO1xuICAgIH07XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/react-style-singleton/dist/es2015/hook.js\n');
              }
            ),
            /***/
            "../../../node_modules/react-style-singleton/dist/es2015/index.js": (
              /*!************************************************************************!*\
                !*** ../../../node_modules/react-style-singleton/dist/es2015/index.js ***!
                \************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "styleHookSingleton": () => (/* reexport safe */ _hook__WEBPACK_IMPORTED_MODULE_2__.styleHookSingleton),\n/* harmony export */   "styleSingleton": () => (/* reexport safe */ _component__WEBPACK_IMPORTED_MODULE_0__.styleSingleton),\n/* harmony export */   "stylesheetSingleton": () => (/* reexport safe */ _singleton__WEBPACK_IMPORTED_MODULE_1__.stylesheetSingleton)\n/* harmony export */ });\n/* harmony import */ var _component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./component */ "../../../node_modules/react-style-singleton/dist/es2015/component.js");\n/* harmony import */ var _singleton__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./singleton */ "../../../node_modules/react-style-singleton/dist/es2015/singleton.js");\n/* harmony import */ var _hook__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./hook */ "../../../node_modules/react-style-singleton/dist/es2015/hook.js");\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXN0eWxlLXNpbmdsZXRvbi9kaXN0L2VzMjAxNS9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBNkM7QUFDSztBQUNOIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1zdHlsZS1zaW5nbGV0b24vZGlzdC9lczIwMTUvaW5kZXguanM/Y2U3YyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBzdHlsZVNpbmdsZXRvbiB9IGZyb20gJy4vY29tcG9uZW50JztcbmV4cG9ydCB7IHN0eWxlc2hlZXRTaW5nbGV0b24gfSBmcm9tICcuL3NpbmdsZXRvbic7XG5leHBvcnQgeyBzdHlsZUhvb2tTaW5nbGV0b24gfSBmcm9tICcuL2hvb2snO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/react-style-singleton/dist/es2015/index.js\n');
              }
            ),
            /***/
            "../../../node_modules/react-style-singleton/dist/es2015/singleton.js": (
              /*!****************************************************************************!*\
                !*** ../../../node_modules/react-style-singleton/dist/es2015/singleton.js ***!
                \****************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "stylesheetSingleton": () => (/* binding */ stylesheetSingleton)
/* harmony export */ });
/* harmony import */ var get_nonce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! get-nonce */ "../../../node_modules/get-nonce/dist/es2015/index.js");

function makeStyleTag() {
    if (!document)
        return null;
    var tag = document.createElement('style');
    tag.type = 'text/css';
    var nonce = (0,get_nonce__WEBPACK_IMPORTED_MODULE_0__.getNonce)();
    if (nonce) {
        tag.setAttribute('nonce', nonce);
    }
    return tag;
}
function injectStyles(tag, css) {
    // @ts-ignore
    if (tag.styleSheet) {
        // @ts-ignore
        tag.styleSheet.cssText = css;
    }
    else {
        tag.appendChild(document.createTextNode(css));
    }
}
function insertStyleTag(tag) {
    var head = document.head || document.getElementsByTagName('head')[0];
    head.appendChild(tag);
}
var stylesheetSingleton = function () {
    var counter = 0;
    var stylesheet = null;
    return {
        add: function (style) {
            if (counter == 0) {
                if ((stylesheet = makeStyleTag())) {
                    injectStyles(stylesheet, style);
                    insertStyleTag(stylesheet);
                }
            }
            counter++;
        },
        remove: function () {
            counter--;
            if (!counter && stylesheet) {
                stylesheet.parentNode && stylesheet.parentNode.removeChild(stylesheet);
                stylesheet = null;
            }
        },
    };
};
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXN0eWxlLXNpbmdsZXRvbi9kaXN0L2VzMjAxNS9zaW5nbGV0b24uanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBcUM7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixtREFBUTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3Qtc3R5bGUtc2luZ2xldG9uL2Rpc3QvZXMyMDE1L3NpbmdsZXRvbi5qcz9lYjExIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldE5vbmNlIH0gZnJvbSAnZ2V0LW5vbmNlJztcbmZ1bmN0aW9uIG1ha2VTdHlsZVRhZygpIHtcbiAgICBpZiAoIWRvY3VtZW50KVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB2YXIgdGFnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgICB0YWcudHlwZSA9ICd0ZXh0L2Nzcyc7XG4gICAgdmFyIG5vbmNlID0gZ2V0Tm9uY2UoKTtcbiAgICBpZiAobm9uY2UpIHtcbiAgICAgICAgdGFnLnNldEF0dHJpYnV0ZSgnbm9uY2UnLCBub25jZSk7XG4gICAgfVxuICAgIHJldHVybiB0YWc7XG59XG5mdW5jdGlvbiBpbmplY3RTdHlsZXModGFnLCBjc3MpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaWYgKHRhZy5zdHlsZVNoZWV0KSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgdGFnLnN0eWxlU2hlZXQuY3NzVGV4dCA9IGNzcztcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHRhZy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpKTtcbiAgICB9XG59XG5mdW5jdGlvbiBpbnNlcnRTdHlsZVRhZyh0YWcpIHtcbiAgICB2YXIgaGVhZCA9IGRvY3VtZW50LmhlYWQgfHwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXTtcbiAgICBoZWFkLmFwcGVuZENoaWxkKHRhZyk7XG59XG5leHBvcnQgdmFyIHN0eWxlc2hlZXRTaW5nbGV0b24gPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGNvdW50ZXIgPSAwO1xuICAgIHZhciBzdHlsZXNoZWV0ID0gbnVsbDtcbiAgICByZXR1cm4ge1xuICAgICAgICBhZGQ6IGZ1bmN0aW9uIChzdHlsZSkge1xuICAgICAgICAgICAgaWYgKGNvdW50ZXIgPT0gMCkge1xuICAgICAgICAgICAgICAgIGlmICgoc3R5bGVzaGVldCA9IG1ha2VTdHlsZVRhZygpKSkge1xuICAgICAgICAgICAgICAgICAgICBpbmplY3RTdHlsZXMoc3R5bGVzaGVldCwgc3R5bGUpO1xuICAgICAgICAgICAgICAgICAgICBpbnNlcnRTdHlsZVRhZyhzdHlsZXNoZWV0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb3VudGVyKys7XG4gICAgICAgIH0sXG4gICAgICAgIHJlbW92ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgY291bnRlci0tO1xuICAgICAgICAgICAgaWYgKCFjb3VudGVyICYmIHN0eWxlc2hlZXQpIHtcbiAgICAgICAgICAgICAgICBzdHlsZXNoZWV0LnBhcmVudE5vZGUgJiYgc3R5bGVzaGVldC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHN0eWxlc2hlZXQpO1xuICAgICAgICAgICAgICAgIHN0eWxlc2hlZXQgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH07XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9
//# sourceURL=webpack-internal:///../../../node_modules/react-style-singleton/dist/es2015/singleton.js
`);
              }
            ),
            /***/
            "../../../node_modules/roughjs/bin/canvas.js": (
              /*!***************************************************!*\
                !*** ../../../node_modules/roughjs/bin/canvas.js ***!
                \***************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "RoughCanvas": () => (/* binding */ RoughCanvas)
/* harmony export */ });
/* harmony import */ var _generator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./generator */ "../../../node_modules/roughjs/bin/generator.js");

class RoughCanvas {
    constructor(canvas, config) {
        this.canvas = canvas;
        this.ctx = this.canvas.getContext('2d');
        this.gen = new _generator__WEBPACK_IMPORTED_MODULE_0__.RoughGenerator(config);
    }
    draw(drawable) {
        const sets = drawable.sets || [];
        const o = drawable.options || this.getDefaultOptions();
        const ctx = this.ctx;
        const precision = drawable.options.fixedDecimalPlaceDigits;
        for (const drawing of sets) {
            switch (drawing.type) {
                case 'path':
                    ctx.save();
                    ctx.strokeStyle = o.stroke === 'none' ? 'transparent' : o.stroke;
                    ctx.lineWidth = o.strokeWidth;
                    if (o.strokeLineDash) {
                        ctx.setLineDash(o.strokeLineDash);
                    }
                    if (o.strokeLineDashOffset) {
                        ctx.lineDashOffset = o.strokeLineDashOffset;
                    }
                    this._drawToContext(ctx, drawing, precision);
                    ctx.restore();
                    break;
                case 'fillPath': {
                    ctx.save();
                    ctx.fillStyle = o.fill || '';
                    const fillRule = (drawable.shape === 'curve' || drawable.shape === 'polygon' || drawable.shape === 'path') ? 'evenodd' : 'nonzero';
                    this._drawToContext(ctx, drawing, precision, fillRule);
                    ctx.restore();
                    break;
                }
                case 'fillSketch':
                    this.fillSketch(ctx, drawing, o);
                    break;
            }
        }
    }
    fillSketch(ctx, drawing, o) {
        let fweight = o.fillWeight;
        if (fweight < 0) {
            fweight = o.strokeWidth / 2;
        }
        ctx.save();
        if (o.fillLineDash) {
            ctx.setLineDash(o.fillLineDash);
        }
        if (o.fillLineDashOffset) {
            ctx.lineDashOffset = o.fillLineDashOffset;
        }
        ctx.strokeStyle = o.fill || '';
        ctx.lineWidth = fweight;
        this._drawToContext(ctx, drawing, o.fixedDecimalPlaceDigits);
        ctx.restore();
    }
    _drawToContext(ctx, drawing, fixedDecimals, rule = 'nonzero') {
        ctx.beginPath();
        for (const item of drawing.ops) {
            const data = ((typeof fixedDecimals === 'number') && fixedDecimals >= 0) ? (item.data.map((d) => +d.toFixed(fixedDecimals))) : item.data;
            switch (item.op) {
                case 'move':
                    ctx.moveTo(data[0], data[1]);
                    break;
                case 'bcurveTo':
                    ctx.bezierCurveTo(data[0], data[1], data[2], data[3], data[4], data[5]);
                    break;
                case 'lineTo':
                    ctx.lineTo(data[0], data[1]);
                    break;
            }
        }
        if (drawing.type === 'fillPath') {
            ctx.fill(rule);
        }
        else {
            ctx.stroke();
        }
    }
    get generator() {
        return this.gen;
    }
    getDefaultOptions() {
        return this.gen.defaultOptions;
    }
    line(x1, y1, x2, y2, options) {
        const d = this.gen.line(x1, y1, x2, y2, options);
        this.draw(d);
        return d;
    }
    rectangle(x, y, width, height, options) {
        const d = this.gen.rectangle(x, y, width, height, options);
        this.draw(d);
        return d;
    }
    ellipse(x, y, width, height, options) {
        const d = this.gen.ellipse(x, y, width, height, options);
        this.draw(d);
        return d;
    }
    circle(x, y, diameter, options) {
        const d = this.gen.circle(x, y, diameter, options);
        this.draw(d);
        return d;
    }
    linearPath(points, options) {
        const d = this.gen.linearPath(points, options);
        this.draw(d);
        return d;
    }
    polygon(points, options) {
        const d = this.gen.polygon(points, options);
        this.draw(d);
        return d;
    }
    arc(x, y, width, height, start, stop, closed = false, options) {
        const d = this.gen.arc(x, y, width, height, start, stop, closed, options);
        this.draw(d);
        return d;
    }
    curve(points, options) {
        const d = this.gen.curve(points, options);
        this.draw(d);
        return d;
    }
    path(d, options) {
        const drawing = this.gen.path(d, options);
        this.draw(drawing);
        return drawing;
    }
}
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 7396 characters]
//# sourceURL=webpack-internal:///../../../node_modules/roughjs/bin/canvas.js
`);
              }
            ),
            /***/
            "../../../node_modules/roughjs/bin/core.js": (
              /*!*************************************************!*\
                !*** ../../../node_modules/roughjs/bin/core.js ***!
                \*************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "SVGNS": () => (/* binding */ SVGNS)
/* harmony export */ });
const SVGNS = 'http://www.w3.org/2000/svg';
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JvdWdoanMvYmluL2NvcmUuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFPIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yb3VnaGpzL2Jpbi9jb3JlLmpzPzVlYTUiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFNWR05TID0gJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==
//# sourceURL=webpack-internal:///../../../node_modules/roughjs/bin/core.js
`);
              }
            ),
            /***/
            "../../../node_modules/roughjs/bin/fillers/dashed-filler.js": (
              /*!******************************************************************!*\
                !*** ../../../node_modules/roughjs/bin/fillers/dashed-filler.js ***!
                \******************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "DashedFiller": () => (/* binding */ DashedFiller)
/* harmony export */ });
/* harmony import */ var _geometry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../geometry */ "../../../node_modules/roughjs/bin/geometry.js");
/* harmony import */ var _scan_line_hachure__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./scan-line-hachure */ "../../../node_modules/roughjs/bin/fillers/scan-line-hachure.js");


class DashedFiller {
    constructor(helper) {
        this.helper = helper;
    }
    fillPolygons(polygonList, o) {
        const lines = (0,_scan_line_hachure__WEBPACK_IMPORTED_MODULE_1__.polygonHachureLines)(polygonList, o);
        return { type: 'fillSketch', ops: this.dashedLine(lines, o) };
    }
    dashedLine(lines, o) {
        const offset = o.dashOffset < 0 ? (o.hachureGap < 0 ? (o.strokeWidth * 4) : o.hachureGap) : o.dashOffset;
        const gap = o.dashGap < 0 ? (o.hachureGap < 0 ? (o.strokeWidth * 4) : o.hachureGap) : o.dashGap;
        const ops = [];
        lines.forEach((line) => {
            const length = (0,_geometry__WEBPACK_IMPORTED_MODULE_0__.lineLength)(line);
            const count = Math.floor(length / (offset + gap));
            const startOffset = (length + gap - (count * (offset + gap))) / 2;
            let p1 = line[0];
            let p2 = line[1];
            if (p1[0] > p2[0]) {
                p1 = line[1];
                p2 = line[0];
            }
            const alpha = Math.atan((p2[1] - p1[1]) / (p2[0] - p1[0]));
            for (let i = 0; i < count; i++) {
                const lstart = i * (offset + gap);
                const lend = lstart + offset;
                const start = [p1[0] + (lstart * Math.cos(alpha)) + (startOffset * Math.cos(alpha)), p1[1] + lstart * Math.sin(alpha) + (startOffset * Math.sin(alpha))];
                const end = [p1[0] + (lend * Math.cos(alpha)) + (startOffset * Math.cos(alpha)), p1[1] + (lend * Math.sin(alpha)) + (startOffset * Math.sin(alpha))];
                ops.push(...this.helper.doubleLineOps(start[0], start[1], end[0], end[1], o));
            }
        });
        return ops;
    }
}
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JvdWdoanMvYmluL2ZpbGxlcnMvZGFzaGVkLWZpbGxlci5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBeUM7QUFDaUI7QUFDbkQ7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQix1RUFBbUI7QUFDekMsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixxREFBVTtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsV0FBVztBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yb3VnaGpzL2Jpbi9maWxsZXJzL2Rhc2hlZC1maWxsZXIuanM/YTg4YyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBsaW5lTGVuZ3RoIH0gZnJvbSAnLi4vZ2VvbWV0cnknO1xuaW1wb3J0IHsgcG9seWdvbkhhY2h1cmVMaW5lcyB9IGZyb20gJy4vc2Nhbi1saW5lLWhhY2h1cmUnO1xuZXhwb3J0IGNsYXNzIERhc2hlZEZpbGxlciB7XG4gICAgY29uc3RydWN0b3IoaGVscGVyKSB7XG4gICAgICAgIHRoaXMuaGVscGVyID0gaGVscGVyO1xuICAgIH1cbiAgICBmaWxsUG9seWdvbnMocG9seWdvbkxpc3QsIG8pIHtcbiAgICAgICAgY29uc3QgbGluZXMgPSBwb2x5Z29uSGFjaHVyZUxpbmVzKHBvbHlnb25MaXN0LCBvKTtcbiAgICAgICAgcmV0dXJuIHsgdHlwZTogJ2ZpbGxTa2V0Y2gnLCBvcHM6IHRoaXMuZGFzaGVkTGluZShsaW5lcywgbykgfTtcbiAgICB9XG4gICAgZGFzaGVkTGluZShsaW5lcywgbykge1xuICAgICAgICBjb25zdCBvZmZzZXQgPSBvLmRhc2hPZmZzZXQgPCAwID8gKG8uaGFjaHVyZUdhcCA8IDAgPyAoby5zdHJva2VXaWR0aCAqIDQpIDogby5oYWNodXJlR2FwKSA6IG8uZGFzaE9mZnNldDtcbiAgICAgICAgY29uc3QgZ2FwID0gby5kYXNoR2FwIDwgMCA/IChvLmhhY2h1cmVHYXAgPCAwID8gKG8uc3Ryb2tlV2lkdGggKiA0KSA6IG8uaGFjaHVyZUdhcCkgOiBvLmRhc2hHYXA7XG4gICAgICAgIGNvbnN0IG9wcyA9IFtdO1xuICAgICAgICBsaW5lcy5mb3JFYWNoKChsaW5lKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsZW5ndGggPSBsaW5lTGVuZ3RoKGxpbmUpO1xuICAgICAgICAgICAgY29uc3QgY291bnQgPSBNYXRoLmZsb29yKGxlbmd0aCAvIChvZmZzZXQgKyBnYXApKTtcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0T2Zmc2V0ID0gKGxlbmd0aCArIGdhcCAtIChjb3VudCAqIChvZmZzZXQgKyBnYXApKSkgLyAyO1xuICAgICAgICAgICAgbGV0IHAxID0gbGluZVswXTtcbiAgICAgICAgICAgIGxldCBwMiA9IGxpbmVbMV07XG4gICAgICAgICAgICBpZiAocDFbMF0gPiBwMlswXSkge1xuICAgICAgICAgICAgICAgIHAxID0gbGluZVsxXTtcbiAgICAgICAgICAgICAgICBwMiA9IGxpbmVbMF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBhbHBoYSA9IE1hdGguYXRhbigocDJbMV0gLSBwMVsxXSkgLyAocDJbMF0gLSBwMVswXSkpO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbHN0YXJ0ID0gaSAqIChvZmZzZXQgKyBnYXApO1xuICAgICAgICAgICAgICAgIGNvbnN0IGxlbmQgPSBsc3RhcnQgKyBvZmZzZXQ7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhcnQgPSBbcDFbMF0gKyAobHN0YXJ0ICogTWF0aC5jb3MoYWxwaGEpKSArIChzdGFydE9mZnNldCAqIE1hdGguY29zKGFscGhhKSksIHAxWzFdICsgbHN0YXJ0ICogTWF0aC5zaW4oYWxwaGEpICsgKHN0YXJ0T2Zmc2V0ICogTWF0aC5zaW4oYWxwaGEpKV07XG4gICAgICAgICAgICAgICAgY29uc3QgZW5kID0gW3AxWzBdICsgKGxlbmQgKiBNYXRoLmNvcyhhbHBoYSkpICsgKHN0YXJ0T2Zmc2V0ICogTWF0aC5jb3MoYWxwaGEpKSwgcDFbMV0gKyAobGVuZCAqIE1hdGguc2luKGFscGhhKSkgKyAoc3RhcnRPZmZzZXQgKiBNYXRoLnNpbihhbHBoYSkpXTtcbiAgICAgICAgICAgICAgICBvcHMucHVzaCguLi50aGlzLmhlbHBlci5kb3VibGVMaW5lT3BzKHN0YXJ0WzBdLCBzdGFydFsxXSwgZW5kWzBdLCBlbmRbMV0sIG8pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBvcHM7XG4gICAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9
//# sourceURL=webpack-internal:///../../../node_modules/roughjs/bin/fillers/dashed-filler.js
`);
              }
            ),
            /***/
            "../../../node_modules/roughjs/bin/fillers/dot-filler.js": (
              /*!***************************************************************!*\
                !*** ../../../node_modules/roughjs/bin/fillers/dot-filler.js ***!
                \***************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "DotFiller": () => (/* binding */ DotFiller)
/* harmony export */ });
/* harmony import */ var _geometry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../geometry */ "../../../node_modules/roughjs/bin/geometry.js");
/* harmony import */ var _scan_line_hachure__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./scan-line-hachure */ "../../../node_modules/roughjs/bin/fillers/scan-line-hachure.js");


class DotFiller {
    constructor(helper) {
        this.helper = helper;
    }
    fillPolygons(polygonList, o) {
        o = Object.assign({}, o, { hachureAngle: 0 });
        const lines = (0,_scan_line_hachure__WEBPACK_IMPORTED_MODULE_1__.polygonHachureLines)(polygonList, o);
        return this.dotsOnLines(lines, o);
    }
    dotsOnLines(lines, o) {
        const ops = [];
        let gap = o.hachureGap;
        if (gap < 0) {
            gap = o.strokeWidth * 4;
        }
        gap = Math.max(gap, 0.1);
        let fweight = o.fillWeight;
        if (fweight < 0) {
            fweight = o.strokeWidth / 2;
        }
        const ro = gap / 4;
        for (const line of lines) {
            const length = (0,_geometry__WEBPACK_IMPORTED_MODULE_0__.lineLength)(line);
            const dl = length / gap;
            const count = Math.ceil(dl) - 1;
            const offset = length - (count * gap);
            const x = ((line[0][0] + line[1][0]) / 2) - (gap / 4);
            const minY = Math.min(line[0][1], line[1][1]);
            for (let i = 0; i < count; i++) {
                const y = minY + offset + (i * gap);
                const cx = (x - ro) + Math.random() * 2 * ro;
                const cy = (y - ro) + Math.random() * 2 * ro;
                const el = this.helper.ellipse(cx, cy, fweight, fweight, o);
                ops.push(...el.ops);
            }
        }
        return { type: 'fillSketch', ops };
    }
}
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JvdWdoanMvYmluL2ZpbGxlcnMvZG90LWZpbGxlci5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBeUM7QUFDaUI7QUFDbkQ7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixPQUFPLGlCQUFpQjtBQUNwRCxzQkFBc0IsdUVBQW1CO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixxREFBVTtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLFdBQVc7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcm91Z2hqcy9iaW4vZmlsbGVycy9kb3QtZmlsbGVyLmpzP2RiN2UiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbGluZUxlbmd0aCB9IGZyb20gJy4uL2dlb21ldHJ5JztcbmltcG9ydCB7IHBvbHlnb25IYWNodXJlTGluZXMgfSBmcm9tICcuL3NjYW4tbGluZS1oYWNodXJlJztcbmV4cG9ydCBjbGFzcyBEb3RGaWxsZXIge1xuICAgIGNvbnN0cnVjdG9yKGhlbHBlcikge1xuICAgICAgICB0aGlzLmhlbHBlciA9IGhlbHBlcjtcbiAgICB9XG4gICAgZmlsbFBvbHlnb25zKHBvbHlnb25MaXN0LCBvKSB7XG4gICAgICAgIG8gPSBPYmplY3QuYXNzaWduKHt9LCBvLCB7IGhhY2h1cmVBbmdsZTogMCB9KTtcbiAgICAgICAgY29uc3QgbGluZXMgPSBwb2x5Z29uSGFjaHVyZUxpbmVzKHBvbHlnb25MaXN0LCBvKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZG90c09uTGluZXMobGluZXMsIG8pO1xuICAgIH1cbiAgICBkb3RzT25MaW5lcyhsaW5lcywgbykge1xuICAgICAgICBjb25zdCBvcHMgPSBbXTtcbiAgICAgICAgbGV0IGdhcCA9IG8uaGFjaHVyZUdhcDtcbiAgICAgICAgaWYgKGdhcCA8IDApIHtcbiAgICAgICAgICAgIGdhcCA9IG8uc3Ryb2tlV2lkdGggKiA0O1xuICAgICAgICB9XG4gICAgICAgIGdhcCA9IE1hdGgubWF4KGdhcCwgMC4xKTtcbiAgICAgICAgbGV0IGZ3ZWlnaHQgPSBvLmZpbGxXZWlnaHQ7XG4gICAgICAgIGlmIChmd2VpZ2h0IDwgMCkge1xuICAgICAgICAgICAgZndlaWdodCA9IG8uc3Ryb2tlV2lkdGggLyAyO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJvID0gZ2FwIC8gNDtcbiAgICAgICAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgICAgICAgICBjb25zdCBsZW5ndGggPSBsaW5lTGVuZ3RoKGxpbmUpO1xuICAgICAgICAgICAgY29uc3QgZGwgPSBsZW5ndGggLyBnYXA7XG4gICAgICAgICAgICBjb25zdCBjb3VudCA9IE1hdGguY2VpbChkbCkgLSAxO1xuICAgICAgICAgICAgY29uc3Qgb2Zmc2V0ID0gbGVuZ3RoIC0gKGNvdW50ICogZ2FwKTtcbiAgICAgICAgICAgIGNvbnN0IHggPSAoKGxpbmVbMF1bMF0gKyBsaW5lWzFdWzBdKSAvIDIpIC0gKGdhcCAvIDQpO1xuICAgICAgICAgICAgY29uc3QgbWluWSA9IE1hdGgubWluKGxpbmVbMF1bMV0sIGxpbmVbMV1bMV0pO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeSA9IG1pblkgKyBvZmZzZXQgKyAoaSAqIGdhcCk7XG4gICAgICAgICAgICAgICAgY29uc3QgY3ggPSAoeCAtIHJvKSArIE1hdGgucmFuZG9tKCkgKiAyICogcm87XG4gICAgICAgICAgICAgICAgY29uc3QgY3kgPSAoeSAtIHJvKSArIE1hdGgucmFuZG9tKCkgKiAyICogcm87XG4gICAgICAgICAgICAgICAgY29uc3QgZWwgPSB0aGlzLmhlbHBlci5lbGxpcHNlKGN4LCBjeSwgZndlaWdodCwgZndlaWdodCwgbyk7XG4gICAgICAgICAgICAgICAgb3BzLnB1c2goLi4uZWwub3BzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyB0eXBlOiAnZmlsbFNrZXRjaCcsIG9wcyB9O1xuICAgIH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==
//# sourceURL=webpack-internal:///../../../node_modules/roughjs/bin/fillers/dot-filler.js
`);
              }
            ),
            /***/
            "../../../node_modules/roughjs/bin/fillers/filler.js": (
              /*!***********************************************************!*\
                !*** ../../../node_modules/roughjs/bin/fillers/filler.js ***!
                \***********************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "getFiller": () => (/* binding */ getFiller)
/* harmony export */ });
/* harmony import */ var _hachure_filler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hachure-filler */ "../../../node_modules/roughjs/bin/fillers/hachure-filler.js");
/* harmony import */ var _zigzag_filler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./zigzag-filler */ "../../../node_modules/roughjs/bin/fillers/zigzag-filler.js");
/* harmony import */ var _hatch_filler__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./hatch-filler */ "../../../node_modules/roughjs/bin/fillers/hatch-filler.js");
/* harmony import */ var _dot_filler__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./dot-filler */ "../../../node_modules/roughjs/bin/fillers/dot-filler.js");
/* harmony import */ var _dashed_filler__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./dashed-filler */ "../../../node_modules/roughjs/bin/fillers/dashed-filler.js");
/* harmony import */ var _zigzag_line_filler__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./zigzag-line-filler */ "../../../node_modules/roughjs/bin/fillers/zigzag-line-filler.js");






const fillers = {};
function getFiller(o, helper) {
    let fillerName = o.fillStyle || 'hachure';
    if (!fillers[fillerName]) {
        switch (fillerName) {
            case 'zigzag':
                if (!fillers[fillerName]) {
                    fillers[fillerName] = new _zigzag_filler__WEBPACK_IMPORTED_MODULE_1__.ZigZagFiller(helper);
                }
                break;
            case 'cross-hatch':
                if (!fillers[fillerName]) {
                    fillers[fillerName] = new _hatch_filler__WEBPACK_IMPORTED_MODULE_2__.HatchFiller(helper);
                }
                break;
            case 'dots':
                if (!fillers[fillerName]) {
                    fillers[fillerName] = new _dot_filler__WEBPACK_IMPORTED_MODULE_3__.DotFiller(helper);
                }
                break;
            case 'dashed':
                if (!fillers[fillerName]) {
                    fillers[fillerName] = new _dashed_filler__WEBPACK_IMPORTED_MODULE_4__.DashedFiller(helper);
                }
                break;
            case 'zigzag-line':
                if (!fillers[fillerName]) {
                    fillers[fillerName] = new _zigzag_line_filler__WEBPACK_IMPORTED_MODULE_5__.ZigZagLineFiller(helper);
                }
                break;
            case 'hachure':
            default:
                fillerName = 'hachure';
                if (!fillers[fillerName]) {
                    fillers[fillerName] = new _hachure_filler__WEBPACK_IMPORTED_MODULE_0__.HachureFiller(helper);
                }
                break;
        }
    }
    return fillers[fillerName];
}
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JvdWdoanMvYmluL2ZpbGxlcnMvZmlsbGVyLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBaUQ7QUFDRjtBQUNGO0FBQ0o7QUFDTTtBQUNTO0FBQ3hEO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQThDLHdEQUFZO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQThDLHNEQUFXO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQThDLGtEQUFTO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQThDLHdEQUFZO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQThDLGlFQUFnQjtBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEMsMERBQWE7QUFDM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yb3VnaGpzL2Jpbi9maWxsZXJzL2ZpbGxlci5qcz9kZGVhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEhhY2h1cmVGaWxsZXIgfSBmcm9tICcuL2hhY2h1cmUtZmlsbGVyJztcbmltcG9ydCB7IFppZ1phZ0ZpbGxlciB9IGZyb20gJy4vemlnemFnLWZpbGxlcic7XG5pbXBvcnQgeyBIYXRjaEZpbGxlciB9IGZyb20gJy4vaGF0Y2gtZmlsbGVyJztcbmltcG9ydCB7IERvdEZpbGxlciB9IGZyb20gJy4vZG90LWZpbGxlcic7XG5pbXBvcnQgeyBEYXNoZWRGaWxsZXIgfSBmcm9tICcuL2Rhc2hlZC1maWxsZXInO1xuaW1wb3J0IHsgWmlnWmFnTGluZUZpbGxlciB9IGZyb20gJy4vemlnemFnLWxpbmUtZmlsbGVyJztcbmNvbnN0IGZpbGxlcnMgPSB7fTtcbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWxsZXIobywgaGVscGVyKSB7XG4gICAgbGV0IGZpbGxlck5hbWUgPSBvLmZpbGxTdHlsZSB8fCAnaGFjaHVyZSc7XG4gICAgaWYgKCFmaWxsZXJzW2ZpbGxlck5hbWVdKSB7XG4gICAgICAgIHN3aXRjaCAoZmlsbGVyTmFtZSkge1xuICAgICAgICAgICAgY2FzZSAnemlnemFnJzpcbiAgICAgICAgICAgICAgICBpZiAoIWZpbGxlcnNbZmlsbGVyTmFtZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgZmlsbGVyc1tmaWxsZXJOYW1lXSA9IG5ldyBaaWdaYWdGaWxsZXIoaGVscGVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdjcm9zcy1oYXRjaCc6XG4gICAgICAgICAgICAgICAgaWYgKCFmaWxsZXJzW2ZpbGxlck5hbWVdKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbGxlcnNbZmlsbGVyTmFtZV0gPSBuZXcgSGF0Y2hGaWxsZXIoaGVscGVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdkb3RzJzpcbiAgICAgICAgICAgICAgICBpZiAoIWZpbGxlcnNbZmlsbGVyTmFtZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgZmlsbGVyc1tmaWxsZXJOYW1lXSA9IG5ldyBEb3RGaWxsZXIoaGVscGVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdkYXNoZWQnOlxuICAgICAgICAgICAgICAgIGlmICghZmlsbGVyc1tmaWxsZXJOYW1lXSkge1xuICAgICAgICAgICAgICAgICAgICBmaWxsZXJzW2ZpbGxlck5hbWVdID0gbmV3IERhc2hlZEZpbGxlcihoZWxwZXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3ppZ3phZy1saW5lJzpcbiAgICAgICAgICAgICAgICBpZiAoIWZpbGxlcnNbZmlsbGVyTmFtZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgZmlsbGVyc1tmaWxsZXJOYW1lXSA9IG5ldyBaaWdaYWdMaW5lRmlsbGVyKGhlbHBlcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnaGFjaHVyZSc6XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGZpbGxlck5hbWUgPSAnaGFjaHVyZSc7XG4gICAgICAgICAgICAgICAgaWYgKCFmaWxsZXJzW2ZpbGxlck5hbWVdKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbGxlcnNbZmlsbGVyTmFtZV0gPSBuZXcgSGFjaHVyZUZpbGxlcihoZWxwZXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmlsbGVyc1tmaWxsZXJOYW1lXTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==
//# sourceURL=webpack-internal:///../../../node_modules/roughjs/bin/fillers/filler.js
`);
              }
            ),
            /***/
            "../../../node_modules/roughjs/bin/fillers/hachure-filler.js": (
              /*!*******************************************************************!*\
                !*** ../../../node_modules/roughjs/bin/fillers/hachure-filler.js ***!
                \*******************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "HachureFiller": () => (/* binding */ HachureFiller)
/* harmony export */ });
/* harmony import */ var _scan_line_hachure__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./scan-line-hachure */ "../../../node_modules/roughjs/bin/fillers/scan-line-hachure.js");

class HachureFiller {
    constructor(helper) {
        this.helper = helper;
    }
    fillPolygons(polygonList, o) {
        return this._fillPolygons(polygonList, o);
    }
    _fillPolygons(polygonList, o) {
        const lines = (0,_scan_line_hachure__WEBPACK_IMPORTED_MODULE_0__.polygonHachureLines)(polygonList, o);
        const ops = this.renderLines(lines, o);
        return { type: 'fillSketch', ops };
    }
    renderLines(lines, o) {
        const ops = [];
        for (const line of lines) {
            ops.push(...this.helper.doubleLineOps(line[0][0], line[0][1], line[1][0], line[1][1], o));
        }
        return ops;
    }
}
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JvdWdoanMvYmluL2ZpbGxlcnMvaGFjaHVyZS1maWxsZXIuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBMEQ7QUFDbkQ7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQix1RUFBbUI7QUFDekM7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yb3VnaGpzL2Jpbi9maWxsZXJzL2hhY2h1cmUtZmlsbGVyLmpzP2YxZmEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcG9seWdvbkhhY2h1cmVMaW5lcyB9IGZyb20gJy4vc2Nhbi1saW5lLWhhY2h1cmUnO1xuZXhwb3J0IGNsYXNzIEhhY2h1cmVGaWxsZXIge1xuICAgIGNvbnN0cnVjdG9yKGhlbHBlcikge1xuICAgICAgICB0aGlzLmhlbHBlciA9IGhlbHBlcjtcbiAgICB9XG4gICAgZmlsbFBvbHlnb25zKHBvbHlnb25MaXN0LCBvKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWxsUG9seWdvbnMocG9seWdvbkxpc3QsIG8pO1xuICAgIH1cbiAgICBfZmlsbFBvbHlnb25zKHBvbHlnb25MaXN0LCBvKSB7XG4gICAgICAgIGNvbnN0IGxpbmVzID0gcG9seWdvbkhhY2h1cmVMaW5lcyhwb2x5Z29uTGlzdCwgbyk7XG4gICAgICAgIGNvbnN0IG9wcyA9IHRoaXMucmVuZGVyTGluZXMobGluZXMsIG8pO1xuICAgICAgICByZXR1cm4geyB0eXBlOiAnZmlsbFNrZXRjaCcsIG9wcyB9O1xuICAgIH1cbiAgICByZW5kZXJMaW5lcyhsaW5lcywgbykge1xuICAgICAgICBjb25zdCBvcHMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgICAgICAgICBvcHMucHVzaCguLi50aGlzLmhlbHBlci5kb3VibGVMaW5lT3BzKGxpbmVbMF1bMF0sIGxpbmVbMF1bMV0sIGxpbmVbMV1bMF0sIGxpbmVbMV1bMV0sIG8pKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3BzO1xuICAgIH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==
//# sourceURL=webpack-internal:///../../../node_modules/roughjs/bin/fillers/hachure-filler.js
`);
              }
            ),
            /***/
            "../../../node_modules/roughjs/bin/fillers/hatch-filler.js": (
              /*!*****************************************************************!*\
                !*** ../../../node_modules/roughjs/bin/fillers/hatch-filler.js ***!
                \*****************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "HatchFiller": () => (/* binding */ HatchFiller)\n/* harmony export */ });\n/* harmony import */ var _hachure_filler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hachure-filler */ "../../../node_modules/roughjs/bin/fillers/hachure-filler.js");\n\nclass HatchFiller extends _hachure_filler__WEBPACK_IMPORTED_MODULE_0__.HachureFiller {\n    fillPolygons(polygonList, o) {\n        const set = this._fillPolygons(polygonList, o);\n        const o2 = Object.assign({}, o, { hachureAngle: o.hachureAngle + 90 });\n        const set2 = this._fillPolygons(polygonList, o2);\n        set.ops = set.ops.concat(set2.ops);\n        return set;\n    }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JvdWdoanMvYmluL2ZpbGxlcnMvaGF0Y2gtZmlsbGVyLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQWlEO0FBQzFDLDBCQUEwQiwwREFBYTtBQUM5QztBQUNBO0FBQ0EsbUNBQW1DLE9BQU8sbUNBQW1DO0FBQzdFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JvdWdoanMvYmluL2ZpbGxlcnMvaGF0Y2gtZmlsbGVyLmpzP2IwOTkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSGFjaHVyZUZpbGxlciB9IGZyb20gJy4vaGFjaHVyZS1maWxsZXInO1xuZXhwb3J0IGNsYXNzIEhhdGNoRmlsbGVyIGV4dGVuZHMgSGFjaHVyZUZpbGxlciB7XG4gICAgZmlsbFBvbHlnb25zKHBvbHlnb25MaXN0LCBvKSB7XG4gICAgICAgIGNvbnN0IHNldCA9IHRoaXMuX2ZpbGxQb2x5Z29ucyhwb2x5Z29uTGlzdCwgbyk7XG4gICAgICAgIGNvbnN0IG8yID0gT2JqZWN0LmFzc2lnbih7fSwgbywgeyBoYWNodXJlQW5nbGU6IG8uaGFjaHVyZUFuZ2xlICsgOTAgfSk7XG4gICAgICAgIGNvbnN0IHNldDIgPSB0aGlzLl9maWxsUG9seWdvbnMocG9seWdvbkxpc3QsIG8yKTtcbiAgICAgICAgc2V0Lm9wcyA9IHNldC5vcHMuY29uY2F0KHNldDIub3BzKTtcbiAgICAgICAgcmV0dXJuIHNldDtcbiAgICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/roughjs/bin/fillers/hatch-filler.js\n');
              }
            ),
            /***/
            "../../../node_modules/roughjs/bin/fillers/scan-line-hachure.js": (
              /*!**********************************************************************!*\
                !*** ../../../node_modules/roughjs/bin/fillers/scan-line-hachure.js ***!
                \**********************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "polygonHachureLines": () => (/* binding */ polygonHachureLines)\n/* harmony export */ });\n/* harmony import */ var hachure_fill__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! hachure-fill */ "../../../node_modules/hachure-fill/bin/hachure.js");\n\nfunction polygonHachureLines(polygonList, o) {\n    var _a;\n    const angle = o.hachureAngle + 90;\n    let gap = o.hachureGap;\n    if (gap < 0) {\n        gap = o.strokeWidth * 4;\n    }\n    gap = Math.max(gap, 0.1);\n    let skipOffset = 1;\n    if (o.roughness >= 1) {\n        if ((((_a = o.randomizer) === null || _a === void 0 ? void 0 : _a.next()) || Math.random()) > 0.7) {\n            skipOffset = gap;\n        }\n    }\n    return (0,hachure_fill__WEBPACK_IMPORTED_MODULE_0__.hachureLines)(polygonList, gap, angle, skipOffset || 1);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JvdWdoanMvYmluL2ZpbGxlcnMvc2Nhbi1saW5lLWhhY2h1cmUuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBNEM7QUFDckM7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsMERBQVk7QUFDdkIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JvdWdoanMvYmluL2ZpbGxlcnMvc2Nhbi1saW5lLWhhY2h1cmUuanM/MDRhMSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBoYWNodXJlTGluZXMgfSBmcm9tICdoYWNodXJlLWZpbGwnO1xuZXhwb3J0IGZ1bmN0aW9uIHBvbHlnb25IYWNodXJlTGluZXMocG9seWdvbkxpc3QsIG8pIHtcbiAgICB2YXIgX2E7XG4gICAgY29uc3QgYW5nbGUgPSBvLmhhY2h1cmVBbmdsZSArIDkwO1xuICAgIGxldCBnYXAgPSBvLmhhY2h1cmVHYXA7XG4gICAgaWYgKGdhcCA8IDApIHtcbiAgICAgICAgZ2FwID0gby5zdHJva2VXaWR0aCAqIDQ7XG4gICAgfVxuICAgIGdhcCA9IE1hdGgubWF4KGdhcCwgMC4xKTtcbiAgICBsZXQgc2tpcE9mZnNldCA9IDE7XG4gICAgaWYgKG8ucm91Z2huZXNzID49IDEpIHtcbiAgICAgICAgaWYgKCgoKF9hID0gby5yYW5kb21pemVyKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubmV4dCgpKSB8fCBNYXRoLnJhbmRvbSgpKSA+IDAuNykge1xuICAgICAgICAgICAgc2tpcE9mZnNldCA9IGdhcDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaGFjaHVyZUxpbmVzKHBvbHlnb25MaXN0LCBnYXAsIGFuZ2xlLCBza2lwT2Zmc2V0IHx8IDEpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/roughjs/bin/fillers/scan-line-hachure.js\n');
              }
            ),
            /***/
            "../../../node_modules/roughjs/bin/fillers/zigzag-filler.js": (
              /*!******************************************************************!*\
                !*** ../../../node_modules/roughjs/bin/fillers/zigzag-filler.js ***!
                \******************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "ZigZagFiller": () => (/* binding */ ZigZagFiller)
/* harmony export */ });
/* harmony import */ var _hachure_filler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hachure-filler */ "../../../node_modules/roughjs/bin/fillers/hachure-filler.js");
/* harmony import */ var _scan_line_hachure__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./scan-line-hachure */ "../../../node_modules/roughjs/bin/fillers/scan-line-hachure.js");
/* harmony import */ var _geometry__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../geometry */ "../../../node_modules/roughjs/bin/geometry.js");



class ZigZagFiller extends _hachure_filler__WEBPACK_IMPORTED_MODULE_0__.HachureFiller {
    fillPolygons(polygonList, o) {
        let gap = o.hachureGap;
        if (gap < 0) {
            gap = o.strokeWidth * 4;
        }
        gap = Math.max(gap, 0.1);
        const o2 = Object.assign({}, o, { hachureGap: gap });
        const lines = (0,_scan_line_hachure__WEBPACK_IMPORTED_MODULE_1__.polygonHachureLines)(polygonList, o2);
        const zigZagAngle = (Math.PI / 180) * o.hachureAngle;
        const zigzagLines = [];
        const dgx = gap * 0.5 * Math.cos(zigZagAngle);
        const dgy = gap * 0.5 * Math.sin(zigZagAngle);
        for (const [p1, p2] of lines) {
            if ((0,_geometry__WEBPACK_IMPORTED_MODULE_2__.lineLength)([p1, p2])) {
                zigzagLines.push([
                    [p1[0] - dgx, p1[1] + dgy],
                    [...p2],
                ], [
                    [p1[0] + dgx, p1[1] - dgy],
                    [...p2],
                ]);
            }
        }
        const ops = this.renderLines(zigzagLines, o);
        return { type: 'fillSketch', ops };
    }
}
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JvdWdoanMvYmluL2ZpbGxlcnMvemlnemFnLWZpbGxlci5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQWlEO0FBQ1M7QUFDakI7QUFDbEMsMkJBQTJCLDBEQUFhO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyxPQUFPLGlCQUFpQjtBQUMzRCxzQkFBc0IsdUVBQW1CO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IscURBQVU7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcm91Z2hqcy9iaW4vZmlsbGVycy96aWd6YWctZmlsbGVyLmpzP2I1YWEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSGFjaHVyZUZpbGxlciB9IGZyb20gJy4vaGFjaHVyZS1maWxsZXInO1xuaW1wb3J0IHsgcG9seWdvbkhhY2h1cmVMaW5lcyB9IGZyb20gJy4vc2Nhbi1saW5lLWhhY2h1cmUnO1xuaW1wb3J0IHsgbGluZUxlbmd0aCB9IGZyb20gJy4uL2dlb21ldHJ5JztcbmV4cG9ydCBjbGFzcyBaaWdaYWdGaWxsZXIgZXh0ZW5kcyBIYWNodXJlRmlsbGVyIHtcbiAgICBmaWxsUG9seWdvbnMocG9seWdvbkxpc3QsIG8pIHtcbiAgICAgICAgbGV0IGdhcCA9IG8uaGFjaHVyZUdhcDtcbiAgICAgICAgaWYgKGdhcCA8IDApIHtcbiAgICAgICAgICAgIGdhcCA9IG8uc3Ryb2tlV2lkdGggKiA0O1xuICAgICAgICB9XG4gICAgICAgIGdhcCA9IE1hdGgubWF4KGdhcCwgMC4xKTtcbiAgICAgICAgY29uc3QgbzIgPSBPYmplY3QuYXNzaWduKHt9LCBvLCB7IGhhY2h1cmVHYXA6IGdhcCB9KTtcbiAgICAgICAgY29uc3QgbGluZXMgPSBwb2x5Z29uSGFjaHVyZUxpbmVzKHBvbHlnb25MaXN0LCBvMik7XG4gICAgICAgIGNvbnN0IHppZ1phZ0FuZ2xlID0gKE1hdGguUEkgLyAxODApICogby5oYWNodXJlQW5nbGU7XG4gICAgICAgIGNvbnN0IHppZ3phZ0xpbmVzID0gW107XG4gICAgICAgIGNvbnN0IGRneCA9IGdhcCAqIDAuNSAqIE1hdGguY29zKHppZ1phZ0FuZ2xlKTtcbiAgICAgICAgY29uc3QgZGd5ID0gZ2FwICogMC41ICogTWF0aC5zaW4oemlnWmFnQW5nbGUpO1xuICAgICAgICBmb3IgKGNvbnN0IFtwMSwgcDJdIG9mIGxpbmVzKSB7XG4gICAgICAgICAgICBpZiAobGluZUxlbmd0aChbcDEsIHAyXSkpIHtcbiAgICAgICAgICAgICAgICB6aWd6YWdMaW5lcy5wdXNoKFtcbiAgICAgICAgICAgICAgICAgICAgW3AxWzBdIC0gZGd4LCBwMVsxXSArIGRneV0sXG4gICAgICAgICAgICAgICAgICAgIFsuLi5wMl0sXG4gICAgICAgICAgICAgICAgXSwgW1xuICAgICAgICAgICAgICAgICAgICBbcDFbMF0gKyBkZ3gsIHAxWzFdIC0gZGd5XSxcbiAgICAgICAgICAgICAgICAgICAgWy4uLnAyXSxcbiAgICAgICAgICAgICAgICBdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvcHMgPSB0aGlzLnJlbmRlckxpbmVzKHppZ3phZ0xpbmVzLCBvKTtcbiAgICAgICAgcmV0dXJuIHsgdHlwZTogJ2ZpbGxTa2V0Y2gnLCBvcHMgfTtcbiAgICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=
//# sourceURL=webpack-internal:///../../../node_modules/roughjs/bin/fillers/zigzag-filler.js
`);
              }
            ),
            /***/
            "../../../node_modules/roughjs/bin/fillers/zigzag-line-filler.js": (
              /*!***********************************************************************!*\
                !*** ../../../node_modules/roughjs/bin/fillers/zigzag-line-filler.js ***!
                \***********************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "ZigZagLineFiller": () => (/* binding */ ZigZagLineFiller)
/* harmony export */ });
/* harmony import */ var _geometry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../geometry */ "../../../node_modules/roughjs/bin/geometry.js");
/* harmony import */ var _scan_line_hachure__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./scan-line-hachure */ "../../../node_modules/roughjs/bin/fillers/scan-line-hachure.js");


class ZigZagLineFiller {
    constructor(helper) {
        this.helper = helper;
    }
    fillPolygons(polygonList, o) {
        const gap = o.hachureGap < 0 ? (o.strokeWidth * 4) : o.hachureGap;
        const zo = o.zigzagOffset < 0 ? gap : o.zigzagOffset;
        o = Object.assign({}, o, { hachureGap: gap + zo });
        const lines = (0,_scan_line_hachure__WEBPACK_IMPORTED_MODULE_1__.polygonHachureLines)(polygonList, o);
        return { type: 'fillSketch', ops: this.zigzagLines(lines, zo, o) };
    }
    zigzagLines(lines, zo, o) {
        const ops = [];
        lines.forEach((line) => {
            const length = (0,_geometry__WEBPACK_IMPORTED_MODULE_0__.lineLength)(line);
            const count = Math.round(length / (2 * zo));
            let p1 = line[0];
            let p2 = line[1];
            if (p1[0] > p2[0]) {
                p1 = line[1];
                p2 = line[0];
            }
            const alpha = Math.atan((p2[1] - p1[1]) / (p2[0] - p1[0]));
            for (let i = 0; i < count; i++) {
                const lstart = i * 2 * zo;
                const lend = (i + 1) * 2 * zo;
                const dz = Math.sqrt(2 * Math.pow(zo, 2));
                const start = [p1[0] + (lstart * Math.cos(alpha)), p1[1] + lstart * Math.sin(alpha)];
                const end = [p1[0] + (lend * Math.cos(alpha)), p1[1] + (lend * Math.sin(alpha))];
                const middle = [start[0] + dz * Math.cos(alpha + Math.PI / 4), start[1] + dz * Math.sin(alpha + Math.PI / 4)];
                ops.push(...this.helper.doubleLineOps(start[0], start[1], middle[0], middle[1], o), ...this.helper.doubleLineOps(middle[0], middle[1], end[0], end[1], o));
            }
        });
        return ops;
    }
}
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JvdWdoanMvYmluL2ZpbGxlcnMvemlnemFnLWxpbmUtZmlsbGVyLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUF5QztBQUNpQjtBQUNuRDtBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixPQUFPLHNCQUFzQjtBQUN6RCxzQkFBc0IsdUVBQW1CO0FBQ3pDLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixxREFBVTtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLFdBQVc7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JvdWdoanMvYmluL2ZpbGxlcnMvemlnemFnLWxpbmUtZmlsbGVyLmpzPzkwNDUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbGluZUxlbmd0aCB9IGZyb20gJy4uL2dlb21ldHJ5JztcbmltcG9ydCB7IHBvbHlnb25IYWNodXJlTGluZXMgfSBmcm9tICcuL3NjYW4tbGluZS1oYWNodXJlJztcbmV4cG9ydCBjbGFzcyBaaWdaYWdMaW5lRmlsbGVyIHtcbiAgICBjb25zdHJ1Y3RvcihoZWxwZXIpIHtcbiAgICAgICAgdGhpcy5oZWxwZXIgPSBoZWxwZXI7XG4gICAgfVxuICAgIGZpbGxQb2x5Z29ucyhwb2x5Z29uTGlzdCwgbykge1xuICAgICAgICBjb25zdCBnYXAgPSBvLmhhY2h1cmVHYXAgPCAwID8gKG8uc3Ryb2tlV2lkdGggKiA0KSA6IG8uaGFjaHVyZUdhcDtcbiAgICAgICAgY29uc3Qgem8gPSBvLnppZ3phZ09mZnNldCA8IDAgPyBnYXAgOiBvLnppZ3phZ09mZnNldDtcbiAgICAgICAgbyA9IE9iamVjdC5hc3NpZ24oe30sIG8sIHsgaGFjaHVyZUdhcDogZ2FwICsgem8gfSk7XG4gICAgICAgIGNvbnN0IGxpbmVzID0gcG9seWdvbkhhY2h1cmVMaW5lcyhwb2x5Z29uTGlzdCwgbyk7XG4gICAgICAgIHJldHVybiB7IHR5cGU6ICdmaWxsU2tldGNoJywgb3BzOiB0aGlzLnppZ3phZ0xpbmVzKGxpbmVzLCB6bywgbykgfTtcbiAgICB9XG4gICAgemlnemFnTGluZXMobGluZXMsIHpvLCBvKSB7XG4gICAgICAgIGNvbnN0IG9wcyA9IFtdO1xuICAgICAgICBsaW5lcy5mb3JFYWNoKChsaW5lKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsZW5ndGggPSBsaW5lTGVuZ3RoKGxpbmUpO1xuICAgICAgICAgICAgY29uc3QgY291bnQgPSBNYXRoLnJvdW5kKGxlbmd0aCAvICgyICogem8pKTtcbiAgICAgICAgICAgIGxldCBwMSA9IGxpbmVbMF07XG4gICAgICAgICAgICBsZXQgcDIgPSBsaW5lWzFdO1xuICAgICAgICAgICAgaWYgKHAxWzBdID4gcDJbMF0pIHtcbiAgICAgICAgICAgICAgICBwMSA9IGxpbmVbMV07XG4gICAgICAgICAgICAgICAgcDIgPSBsaW5lWzBdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgYWxwaGEgPSBNYXRoLmF0YW4oKHAyWzFdIC0gcDFbMV0pIC8gKHAyWzBdIC0gcDFbMF0pKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY291bnQ7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxzdGFydCA9IGkgKiAyICogem87XG4gICAgICAgICAgICAgICAgY29uc3QgbGVuZCA9IChpICsgMSkgKiAyICogem87XG4gICAgICAgICAgICAgICAgY29uc3QgZHogPSBNYXRoLnNxcnQoMiAqIE1hdGgucG93KHpvLCAyKSk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhcnQgPSBbcDFbMF0gKyAobHN0YXJ0ICogTWF0aC5jb3MoYWxwaGEpKSwgcDFbMV0gKyBsc3RhcnQgKiBNYXRoLnNpbihhbHBoYSldO1xuICAgICAgICAgICAgICAgIGNvbnN0IGVuZCA9IFtwMVswXSArIChsZW5kICogTWF0aC5jb3MoYWxwaGEpKSwgcDFbMV0gKyAobGVuZCAqIE1hdGguc2luKGFscGhhKSldO1xuICAgICAgICAgICAgICAgIGNvbnN0IG1pZGRsZSA9IFtzdGFydFswXSArIGR6ICogTWF0aC5jb3MoYWxwaGEgKyBNYXRoLlBJIC8gNCksIHN0YXJ0WzFdICsgZHogKiBNYXRoLnNpbihhbHBoYSArIE1hdGguUEkgLyA0KV07XG4gICAgICAgICAgICAgICAgb3BzLnB1c2goLi4udGhpcy5oZWxwZXIuZG91YmxlTGluZU9wcyhzdGFydFswXSwgc3RhcnRbMV0sIG1pZGRsZVswXSwgbWlkZGxlWzFdLCBvKSwgLi4udGhpcy5oZWxwZXIuZG91YmxlTGluZU9wcyhtaWRkbGVbMF0sIG1pZGRsZVsxXSwgZW5kWzBdLCBlbmRbMV0sIG8pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBvcHM7XG4gICAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9
//# sourceURL=webpack-internal:///../../../node_modules/roughjs/bin/fillers/zigzag-line-filler.js
`);
              }
            ),
            /***/
            "../../../node_modules/roughjs/bin/generator.js": (
              /*!******************************************************!*\
                !*** ../../../node_modules/roughjs/bin/generator.js ***!
                \******************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"RoughGenerator\": () => (/* binding */ RoughGenerator)\n/* harmony export */ });\n/* harmony import */ var _renderer_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./renderer.js */ \"../../../node_modules/roughjs/bin/renderer.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./math.js */ \"../../../node_modules/roughjs/bin/math.js\");\n/* harmony import */ var points_on_curve_lib_curve_to_bezier_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! points-on-curve/lib/curve-to-bezier.js */ \"../../../node_modules/roughjs/node_modules/points-on-curve/lib/curve-to-bezier.js\");\n/* harmony import */ var points_on_curve__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! points-on-curve */ \"../../../node_modules/roughjs/node_modules/points-on-curve/lib/index.js\");\n/* harmony import */ var points_on_path__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! points-on-path */ \"../../../node_modules/points-on-path/lib/index.js\");\n\n\n\n\n\nconst NOS = 'none';\nclass RoughGenerator {\n    constructor(config) {\n        this.defaultOptions = {\n            maxRandomnessOffset: 2,\n            roughness: 1,\n            bowing: 1,\n            stroke: '#000',\n            strokeWidth: 1,\n            curveTightness: 0,\n            curveFitting: 0.95,\n            curveStepCount: 9,\n            fillStyle: 'hachure',\n            fillWeight: -1,\n            hachureAngle: -41,\n            hachureGap: -1,\n            dashOffset: -1,\n            dashGap: -1,\n            zigzagOffset: -1,\n            seed: 0,\n            disableMultiStroke: false,\n            disableMultiStrokeFill: false,\n            preserveVertices: false,\n            fillShapeRoughnessGain: 0.8,\n        };\n        this.config = config || {};\n        if (this.config.options) {\n            this.defaultOptions = this._o(this.config.options);\n        }\n    }\n    static newSeed() {\n        return (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.randomSeed)();\n    }\n    _o(options) {\n        return options ? Object.assign({}, this.defaultOptions, options) : this.defaultOptions;\n    }\n    _d(shape, sets, options) {\n        return { shape, sets: sets || [], options: options || this.defaultOptions };\n    }\n    line(x1, y1, x2, y2, options) {\n        const o = this._o(options);\n        return this._d('line', [(0,_renderer_js__WEBPACK_IMPORTED_MODULE_0__.line)(x1, y1, x2, y2, o)], o);\n    }\n    rectangle(x, y, width, height, options) {\n        const o = this._o(options);\n        const paths = [];\n        const outline = (0,_renderer_js__WEBPACK_IMPORTED_MODULE_0__.rectangle)(x, y, width, height, o);\n        if (o.fill) {\n            const points = [[x, y], [x + width, y], [x + width, y + height], [x, y + height]];\n            if (o.fillStyle === 'solid') {\n                paths.push((0,_renderer_js__WEBPACK_IMPORTED_MODULE_0__.solidFillPolygon)([points], o));\n            }\n            else {\n                paths.push((0,_renderer_js__WEBPACK_IMPORTED_MODULE_0__.patternFillPolygons)([points], o));\n            }\n        }\n        if (o.stroke !== NOS) {\n            paths.push(outline);\n        }\n        return this._d('rectangle', paths, o);\n    }\n    ellipse(x, y, width, height, options) {\n        const o = this._o(options);\n        const paths = [];\n        const ellipseParams = (0,_renderer_js__WEBPACK_IMPORTED_MODULE_0__.generateEllipseParams)(width, height, o);\n        const ellipseResponse = (0,_renderer_js__WEBPACK_IMPORTED_MODULE_0__.ellipseWithParams)(x, y, o, ellipseParams);\n        if (o.fill) {\n            if (o.fillStyle === 'solid') {\n                const shape = (0,_renderer_js__WEBPACK_IMPORTED_MODULE_0__.ellipseWithParams)(x, y, o, ellipseParams).opset;\n                shape.type = 'fillPath';\n                paths.push(shape);\n            }\n            else {\n                paths.push((0,_renderer_js__WEBPACK_IMPORTED_MODULE_0__.patternFillPolygons)([ellipseResponse.estimatedPoints], o));\n            }\n        }\n        if (o.stroke !== NOS) {\n            paths.push(ellipseResponse.opset);\n        }\n        return this._d('ellipse', paths, o);\n    }\n    circle(x, y, diameter, options) {\n        const ret = this.ellipse(x, y, diameter, diameter, options);\n        ret.shape = 'circle';\n        return ret;\n    }\n    linearPath(points, options) {\n        const o = this._o(options);\n        return this._d('linearPath', [(0,_renderer_js__WEBPACK_IMPORTED_MODULE_0__.linearPath)(points, false, o)], o);\n    }\n    arc(x, y, width, height, start, stop, closed = false, options) {\n        const o = this._o(options);\n        const paths = [];\n        const outline = (0,_renderer_js__WEBPACK_IMPORTED_MODULE_0__.arc)(x, y, width, height, start, stop, closed, true, o);\n        if (closed && o.fill) {\n            if (o.fillStyle === 'solid') {\n                const fillOptions = Object.assign({}, o);\n                fillOptions.disableMultiStroke = true;\n                const shape = (0,_renderer_js__WEBPACK_IMPORTED_MODULE_0__.arc)(x, y, width, height, start, stop, true, false, fillOptions);\n                shape.type = 'fillPath';\n                paths.push(shape);\n            }\n            else {\n                paths.push((0,_renderer_js__WEBPACK_IMPORTED_MODULE_0__.patternFillArc)(x, y, width, height, start, stop, o));\n            }\n        }\n        if (o.stroke !== NOS) {\n            paths.push(outline);\n        }\n        return this._d('arc', paths, o);\n    }\n    curve(points, options) {\n        const o = this._o(options);\n        const paths = [];\n        const outline = (0,_renderer_js__WEBPACK_IMPORTED_MODULE_0__.curve)(points, o);\n        if (o.fill && o.fill !== NOS && points.length >= 3) {\n            if (o.fillStyle === 'solid') {\n                const fillShape = (0,_renderer_js__WEBPACK_IMPORTED_MODULE_0__.curve)(points, Object.assign(Object.assign({}, o), { disableMultiStroke: true, roughness: o.roughness ? (o.roughness + o.fillShapeRoughnessGain) : 0 }));\n                paths.push({\n                    type: 'fillPath',\n                    ops: this._mergedShape(fillShape.ops),\n                });\n            }\n            else {\n                const bcurve = (0,points_on_curve_lib_curve_to_bezier_js__WEBPACK_IMPORTED_MODULE_2__.curveToBezier)(points);\n                const polyPoints = (0,points_on_curve__WEBPACK_IMPORTED_MODULE_3__.pointsOnBezierCurves)(bcurve, 10, (1 + o.roughness) / 2);\n                paths.push((0,_renderer_js__WEBPACK_IMPORTED_MODULE_0__.patternFillPolygons)([polyPoints], o));\n            }\n        }\n        if (o.stroke !== NOS) {\n            paths.push(outline);\n        }\n        return this._d('curve', paths, o);\n    }\n    polygon(points, options) {\n        const o = this._o(options);\n        const paths = [];\n        const outline = (0,_renderer_js__WEBPACK_IMPORTED_MODULE_0__.linearPath)(points, true, o);\n        if (o.fill) {\n            if (o.fillStyle === 'solid') {\n                paths.push((0,_renderer_js__WEBPACK_IMPORTED_MODULE_0__.solidFillPolygon)([points], o));\n            }\n            else {\n                paths.push((0,_renderer_js__WEBPACK_IMPORTED_MODULE_0__.patternFillPolygons)([points], o));\n            }\n        }\n        if (o.stroke !== NOS) {\n            paths.push(outline);\n        }\n        return this._d('polygon', paths, o);\n    }\n    path(d, options) {\n        const o = this._o(options);\n        const paths = [];\n        if (!d) {\n            return this._d('path', paths, o);\n        }\n        d = (d || '').replace(/\\n/g, ' ').replace(/(-\\s)/g, '-').replace('/(\\s\\s)/g', ' ');\n        const hasFill = o.fill && o.fill !== 'transparent' && o.fill !== NOS;\n        const hasStroke = o.stroke !== NOS;\n        const simplified = !!(o.simplification && (o.simplification < 1));\n        const distance = simplified ? (4 - 4 * (o.simplification || 1)) : ((1 + o.roughness) / 2);\n        const sets = (0,points_on_path__WEBPACK_IMPORTED_MODULE_4__.pointsOnPath)(d, 1, distance);\n        const shape = (0,_renderer_js__WEBPACK_IMPORTED_MODULE_0__.svgPath)(d, o);\n        if (hasFill) {\n            if (o.fillStyle === 'solid') {\n                if (sets.length === 1) {\n                    const fillShape = (0,_renderer_js__WEBPACK_IMPORTED_MODULE_0__.svgPath)(d, Object.assign(Object.assign({}, o), { disableMultiStroke: true, roughness: o.roughness ? (o.roughness + o.fillShapeRoughnessGain) : 0 }));\n                    paths.push({\n                        type: 'fillPath',\n                        ops: this._mergedShape(fillShape.ops),\n                    });\n                }\n                else {\n                    paths.push((0,_renderer_js__WEBPACK_IMPORTED_MODULE_0__.solidFillPolygon)(sets, o));\n                }\n            }\n            else {\n                paths.push((0,_renderer_js__WEBPACK_IMPORTED_MODULE_0__.patternFillPolygons)(sets, o));\n            }\n        }\n        if (hasStroke) {\n            if (simplified) {\n                sets.forEach((set) => {\n                    paths.push((0,_renderer_js__WEBPACK_IMPORTED_MODULE_0__.linearPath)(set, false, o));\n                });\n            }\n            else {\n                paths.push(shape);\n            }\n        }\n        return this._d('path', paths, o);\n    }\n    opsToPath(drawing, fixedDecimals) {\n        let path = '';\n        for (const item of drawing.ops) {\n            const data = ((typeof fixedDecimals === 'number') && fixedDecimals >= 0) ? (item.data.map((d) => +d.toFixed(fixedDecimals))) : item.data;\n            switch (item.op) {\n                case 'move':\n                    path += `M${data[0]} ${data[1]} `;\n                    break;\n                case 'bcurveTo':\n                    path += `C${data[0]} ${data[1]}, ${data[2]} ${data[3]}, ${data[4]} ${data[5]} `;\n                    break;\n                case 'lineTo':\n                    path += `L${data[0]} ${data[1]} `;\n                    break;\n            }\n        }\n        return path.trim();\n    }\n    toPaths(drawable) {\n        const sets = drawable.sets || [];\n        const o = drawable.options || this.defaultOptions;\n        const paths = [];\n        for (const drawing of sets) {\n            let path = null;\n            switch (drawing.type) {\n                case 'path':\n                    path = {\n                        d: this.opsToPath(drawing),\n                        stroke: o.stroke,\n                        strokeWidth: o.strokeWidth,\n                        fill: NOS,\n                    };\n                    break;\n                case 'fillPath':\n                    path = {\n                        d: this.opsToPath(drawing),\n                        stroke: NOS,\n                        strokeWidth: 0,\n                        fill: o.fill || NOS,\n                    };\n                    break;\n                case 'fillSketch':\n                    path = this.fillSketch(drawing, o);\n                    break;\n            }\n            if (path) {\n                paths.push(path);\n            }\n        }\n        return paths;\n    }\n    fillSketch(drawing, o) {\n        let fweight = o.fillWeight;\n        if (fweight < 0) {\n            fweight = o.strokeWidth / 2;\n        }\n        return {\n            d: this.opsToPath(drawing),\n            stroke: o.fill || NOS,\n            strokeWidth: fweight,\n            fill: NOS,\n        };\n    }\n    _mergedShape(input) {\n        return input.filter((d, i) => {\n            if (i === 0) {\n                return true;\n            }\n            if (d.op === 'move') {\n                return false;\n            }\n            return true;\n        });\n    }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 16264 characters]\n//# sourceURL=webpack-internal:///../../../node_modules/roughjs/bin/generator.js\n");
              }
            ),
            /***/
            "../../../node_modules/roughjs/bin/geometry.js": (
              /*!*****************************************************!*\
                !*** ../../../node_modules/roughjs/bin/geometry.js ***!
                \*****************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "lineLength": () => (/* binding */ lineLength)\n/* harmony export */ });\nfunction lineLength(line) {\n    const p1 = line[0];\n    const p2 = line[1];\n    return Math.sqrt(Math.pow(p1[0] - p2[0], 2) + Math.pow(p1[1] - p2[1], 2));\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JvdWdoanMvYmluL2dlb21ldHJ5LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBTztBQUNQO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yb3VnaGpzL2Jpbi9nZW9tZXRyeS5qcz9lYjU4Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBsaW5lTGVuZ3RoKGxpbmUpIHtcbiAgICBjb25zdCBwMSA9IGxpbmVbMF07XG4gICAgY29uc3QgcDIgPSBsaW5lWzFdO1xuICAgIHJldHVybiBNYXRoLnNxcnQoTWF0aC5wb3cocDFbMF0gLSBwMlswXSwgMikgKyBNYXRoLnBvdyhwMVsxXSAtIHAyWzFdLCAyKSk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/roughjs/bin/geometry.js\n');
              }
            ),
            /***/
            "../../../node_modules/roughjs/bin/math.js": (
              /*!*************************************************!*\
                !*** ../../../node_modules/roughjs/bin/math.js ***!
                \*************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "Random": () => (/* binding */ Random),\n/* harmony export */   "randomSeed": () => (/* binding */ randomSeed)\n/* harmony export */ });\nfunction randomSeed() {\n    return Math.floor(Math.random() * 2 ** 31);\n}\nclass Random {\n    constructor(seed) {\n        this.seed = seed;\n    }\n    next() {\n        if (this.seed) {\n            return ((2 ** 31 - 1) & (this.seed = Math.imul(48271, this.seed))) / 2 ** 31;\n        }\n        else {\n            return Math.random();\n        }\n    }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JvdWdoanMvYmluL21hdGguanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBTztBQUNQO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcm91Z2hqcy9iaW4vbWF0aC5qcz82NWRkIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiByYW5kb21TZWVkKCkge1xuICAgIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAyICoqIDMxKTtcbn1cbmV4cG9ydCBjbGFzcyBSYW5kb20ge1xuICAgIGNvbnN0cnVjdG9yKHNlZWQpIHtcbiAgICAgICAgdGhpcy5zZWVkID0gc2VlZDtcbiAgICB9XG4gICAgbmV4dCgpIHtcbiAgICAgICAgaWYgKHRoaXMuc2VlZCkge1xuICAgICAgICAgICAgcmV0dXJuICgoMiAqKiAzMSAtIDEpICYgKHRoaXMuc2VlZCA9IE1hdGguaW11bCg0ODI3MSwgdGhpcy5zZWVkKSkpIC8gMiAqKiAzMTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLnJhbmRvbSgpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/roughjs/bin/math.js\n');
              }
            ),
            /***/
            "../../../node_modules/roughjs/bin/renderer.js": (
              /*!*****************************************************!*\
                !*** ../../../node_modules/roughjs/bin/renderer.js ***!
                \*****************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "arc": () => (/* binding */ arc),
/* harmony export */   "curve": () => (/* binding */ curve),
/* harmony export */   "doubleLineFillOps": () => (/* binding */ doubleLineFillOps),
/* harmony export */   "ellipse": () => (/* binding */ ellipse),
/* harmony export */   "ellipseWithParams": () => (/* binding */ ellipseWithParams),
/* harmony export */   "generateEllipseParams": () => (/* binding */ generateEllipseParams),
/* harmony export */   "line": () => (/* binding */ line),
/* harmony export */   "linearPath": () => (/* binding */ linearPath),
/* harmony export */   "patternFillArc": () => (/* binding */ patternFillArc),
/* harmony export */   "patternFillPolygons": () => (/* binding */ patternFillPolygons),
/* harmony export */   "polygon": () => (/* binding */ polygon),
/* harmony export */   "randOffset": () => (/* binding */ randOffset),
/* harmony export */   "randOffsetWithRange": () => (/* binding */ randOffsetWithRange),
/* harmony export */   "rectangle": () => (/* binding */ rectangle),
/* harmony export */   "solidFillPolygon": () => (/* binding */ solidFillPolygon),
/* harmony export */   "svgPath": () => (/* binding */ svgPath)
/* harmony export */ });
/* harmony import */ var _fillers_filler_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./fillers/filler.js */ "../../../node_modules/roughjs/bin/fillers/filler.js");
/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./math.js */ "../../../node_modules/roughjs/bin/math.js");
/* harmony import */ var path_data_parser__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! path-data-parser */ "../../../node_modules/path-data-parser/lib/index.js");



const helper = {
    randOffset,
    randOffsetWithRange,
    ellipse,
    doubleLineOps: doubleLineFillOps,
};
function line(x1, y1, x2, y2, o) {
    return { type: 'path', ops: _doubleLine(x1, y1, x2, y2, o) };
}
function linearPath(points, close, o) {
    const len = (points || []).length;
    if (len > 2) {
        const ops = [];
        for (let i = 0; i < (len - 1); i++) {
            ops.push(..._doubleLine(points[i][0], points[i][1], points[i + 1][0], points[i + 1][1], o));
        }
        if (close) {
            ops.push(..._doubleLine(points[len - 1][0], points[len - 1][1], points[0][0], points[0][1], o));
        }
        return { type: 'path', ops };
    }
    else if (len === 2) {
        return line(points[0][0], points[0][1], points[1][0], points[1][1], o);
    }
    return { type: 'path', ops: [] };
}
function polygon(points, o) {
    return linearPath(points, true, o);
}
function rectangle(x, y, width, height, o) {
    const points = [
        [x, y],
        [x + width, y],
        [x + width, y + height],
        [x, y + height],
    ];
    return polygon(points, o);
}
function curve(points, o) {
    let o1 = _curveWithOffset(points, 1 * (1 + o.roughness * 0.2), o);
    if (!o.disableMultiStroke) {
        const o2 = _curveWithOffset(points, 1.5 * (1 + o.roughness * 0.22), cloneOptionsAlterSeed(o));
        o1 = o1.concat(o2);
    }
    return { type: 'path', ops: o1 };
}
function ellipse(x, y, width, height, o) {
    const params = generateEllipseParams(width, height, o);
    return ellipseWithParams(x, y, o, params).opset;
}
function generateEllipseParams(width, height, o) {
    const psq = Math.sqrt(Math.PI * 2 * Math.sqrt((Math.pow(width / 2, 2) + Math.pow(height / 2, 2)) / 2));
    const stepCount = Math.ceil(Math.max(o.curveStepCount, (o.curveStepCount / Math.sqrt(200)) * psq));
    const increment = (Math.PI * 2) / stepCount;
    let rx = Math.abs(width / 2);
    let ry = Math.abs(height / 2);
    const curveFitRandomness = 1 - o.curveFitting;
    rx += _offsetOpt(rx * curveFitRandomness, o);
    ry += _offsetOpt(ry * curveFitRandomness, o);
    return { increment, rx, ry };
}
function ellipseWithParams(x, y, o, ellipseParams) {
    const [ap1, cp1] = _computeEllipsePoints(ellipseParams.increment, x, y, ellipseParams.rx, ellipseParams.ry, 1, ellipseParams.increment * _offset(0.1, _offset(0.4, 1, o), o), o);
    let o1 = _curve(ap1, null, o);
    if ((!o.disableMultiStroke) && (o.roughness !== 0)) {
        const [ap2] = _computeEllipsePoints(ellipseParams.increment, x, y, ellipseParams.rx, ellipseParams.ry, 1.5, 0, o);
        const o2 = _curve(ap2, null, o);
        o1 = o1.concat(o2);
    }
    return {
        estimatedPoints: cp1,
        opset: { type: 'path', ops: o1 },
    };
}
function arc(x, y, width, height, start, stop, closed, roughClosure, o) {
    const cx = x;
    const cy = y;
    let rx = Math.abs(width / 2);
    let ry = Math.abs(height / 2);
    rx += _offsetOpt(rx * 0.01, o);
    ry += _offsetOpt(ry * 0.01, o);
    let strt = start;
    let stp = stop;
    while (strt < 0) {
        strt += Math.PI * 2;
        stp += Math.PI * 2;
    }
    if ((stp - strt) > (Math.PI * 2)) {
        strt = 0;
        stp = Math.PI * 2;
    }
    const ellipseInc = (Math.PI * 2) / o.curveStepCount;
    const arcInc = Math.min(ellipseInc / 2, (stp - strt) / 2);
    const ops = _arc(arcInc, cx, cy, rx, ry, strt, stp, 1, o);
    if (!o.disableMultiStroke) {
        const o2 = _arc(arcInc, cx, cy, rx, ry, strt, stp, 1.5, o);
        ops.push(...o2);
    }
    if (closed) {
        if (roughClosure) {
            ops.push(..._doubleLine(cx, cy, cx + rx * Math.cos(strt), cy + ry * Math.sin(strt), o), ..._doubleLine(cx, cy, cx + rx * Math.cos(stp), cy + ry * Math.sin(stp), o));
        }
        else {
            ops.push({ op: 'lineTo', data: [cx, cy] }, { op: 'lineTo', data: [cx + rx * Math.cos(strt), cy + ry * Math.sin(strt)] });
        }
    }
    return { type: 'path', ops };
}
function svgPath(path, o) {
    const segments = (0,path_data_parser__WEBPACK_IMPORTED_MODULE_2__.normalize)((0,path_data_parser__WEBPACK_IMPORTED_MODULE_2__.absolutize)((0,path_data_parser__WEBPACK_IMPORTED_MODULE_2__.parsePath)(path)));
    const ops = [];
    let first = [0, 0];
    let current = [0, 0];
    for (const { key, data } of segments) {
        switch (key) {
            case 'M': {
                current = [data[0], data[1]];
                first = [data[0], data[1]];
                break;
            }
            case 'L':
                ops.push(..._doubleLine(current[0], current[1], data[0], data[1], o));
                current = [data[0], data[1]];
                break;
            case 'C': {
                const [x1, y1, x2, y2, x, y] = data;
                ops.push(..._bezierTo(x1, y1, x2, y2, x, y, current, o));
                current = [x, y];
                break;
            }
            case 'Z':
                ops.push(..._doubleLine(current[0], current[1], first[0], first[1], o));
                current = [first[0], first[1]];
                break;
        }
    }
    return { type: 'path', ops };
}
// Fills
function solidFillPolygon(polygonList, o) {
    const ops = [];
    for (const points of polygonList) {
        if (points.length) {
            const offset = o.maxRandomnessOffset || 0;
            const len = points.length;
            if (len > 2) {
                ops.push({ op: 'move', data: [points[0][0] + _offsetOpt(offset, o), points[0][1] + _offsetOpt(offset, o)] });
                for (let i = 1; i < len; i++) {
                    ops.push({ op: 'lineTo', data: [points[i][0] + _offsetOpt(offset, o), points[i][1] + _offsetOpt(offset, o)] });
                }
            }
        }
    }
    return { type: 'fillPath', ops };
}
function patternFillPolygons(polygonList, o) {
    return (0,_fillers_filler_js__WEBPACK_IMPORTED_MODULE_0__.getFiller)(o, helper).fillPolygons(polygonList, o);
}
function patternFillArc(x, y, width, height, start, stop, o) {
    const cx = x;
    const cy = y;
    let rx = Math.abs(width / 2);
    let ry = Math.abs(height / 2);
    rx += _offsetOpt(rx * 0.01, o);
    ry += _offsetOpt(ry * 0.01, o);
    let strt = start;
    let stp = stop;
    while (strt < 0) {
        strt += Math.PI * 2;
        stp += Math.PI * 2;
    }
    if ((stp - strt) > (Math.PI * 2)) {
        strt = 0;
        stp = Math.PI * 2;
    }
    const increment = (stp - strt) / o.curveStepCount;
    const points = [];
    for (let angle = strt; angle <= stp; angle = angle + increment) {
        points.push([cx + rx * Math.cos(angle), cy + ry * Math.sin(angle)]);
    }
    points.push([cx + rx * Math.cos(stp), cy + ry * Math.sin(stp)]);
    points.push([cx, cy]);
    return patternFillPolygons([points], o);
}
function randOffset(x, o) {
    return _offsetOpt(x, o);
}
function randOffsetWithRange(min, max, o) {
    return _offset(min, max, o);
}
function doubleLineFillOps(x1, y1, x2, y2, o) {
    return _doubleLine(x1, y1, x2, y2, o, true);
}
// Private helpers
function cloneOptionsAlterSeed(ops) {
    const result = Object.assign({}, ops);
    result.randomizer = undefined;
    if (ops.seed) {
        result.seed = ops.seed + 1;
    }
    return result;
}
function random(ops) {
    if (!ops.randomizer) {
        ops.randomizer = new _math_js__WEBPACK_IMPORTED_MODULE_1__.Random(ops.seed || 0);
    }
    return ops.randomizer.next();
}
function _offset(min, max, ops, roughnessGain = 1) {
    return ops.roughness * roughnessGain * ((random(ops) * (max - min)) + min);
}
function _offsetOpt(x, ops, roughnessGain = 1) {
    return _offset(-x, x, ops, roughnessGain);
}
function _doubleLine(x1, y1, x2, y2, o, filling = false) {
    const singleStroke = filling ? o.disableMultiStrokeFill : o.disableMultiStroke;
    const o1 = _line(x1, y1, x2, y2, o, true, false);
    if (singleStroke) {
        return o1;
    }
    const o2 = _line(x1, y1, x2, y2, o, true, true);
    return o1.concat(o2);
}
function _line(x1, y1, x2, y2, o, move, overlay) {
    const lengthSq = Math.pow((x1 - x2), 2) + Math.pow((y1 - y2), 2);
    const length = Math.sqrt(lengthSq);
    let roughnessGain = 1;
    if (length < 200) {
        roughnessGain = 1;
    }
    else if (length > 500) {
        roughnessGain = 0.4;
    }
    else {
        roughnessGain = (-0.0016668) * length + 1.233334;
    }
    let offset = o.maxRandomnessOffset || 0;
    if ((offset * offset * 100) > lengthSq) {
        offset = length / 10;
    }
    const halfOffset = offset / 2;
    const divergePoint = 0.2 + random(o) * 0.2;
    let midDispX = o.bowing * o.maxRandomnessOffset * (y2 - y1) / 200;
    let midDispY = o.bowing * o.maxRandomnessOffset * (x1 - x2) / 200;
    midDispX = _offsetOpt(midDispX, o, roughnessGain);
    midDispY = _offsetOpt(midDispY, o, roughnessGain);
    const ops = [];
    const randomHalf = () => _offsetOpt(halfOffset, o, roughnessGain);
    const randomFull = () => _offsetOpt(offset, o, roughnessGain);
    const preserveVertices = o.preserveVertices;
    if (move) {
        if (overlay) {
            ops.push({
                op: 'move', data: [
                    x1 + (preserveVertices ? 0 : randomHalf()),
                    y1 + (preserveVertices ? 0 : randomHalf()),
                ],
            });
        }
        else {
            ops.push({
                op: 'move', data: [
                    x1 + (preserveVertices ? 0 : _offsetOpt(offset, o, roughnessGain)),
                    y1 + (preserveVertices ? 0 : _offsetOpt(offset, o, roughnessGain)),
                ],
            });
        }
    }
    if (overlay) {
        ops.push({
            op: 'bcurveTo',
            data: [
                midDispX + x1 + (x2 - x1) * divergePoint + randomHalf(),
                midDispY + y1 + (y2 - y1) * divergePoint + randomHalf(),
                midDispX + x1 + 2 * (x2 - x1) * divergePoint + randomHalf(),
                midDispY + y1 + 2 * (y2 - y1) * divergePoint + randomHalf(),
                x2 + (preserveVertices ? 0 : randomHalf()),
                y2 + (preserveVertices ? 0 : randomHalf()),
            ],
        });
    }
    else {
        ops.push({
            op: 'bcurveTo',
            data: [
                midDispX + x1 + (x2 - x1) * divergePoint + randomFull(),
                midDispY + y1 + (y2 - y1) * divergePoint + randomFull(),
                midDispX + x1 + 2 * (x2 - x1) * divergePoint + randomFull(),
                midDispY + y1 + 2 * (y2 - y1) * divergePoint + randomFull(),
                x2 + (preserveVertices ? 0 : randomFull()),
                y2 + (preserveVertices ? 0 : randomFull()),
            ],
        });
    }
    return ops;
}
function _curveWithOffset(points, offset, o) {
    const ps = [];
    ps.push([
        points[0][0] + _offsetOpt(offset, o),
        points[0][1] + _offsetOpt(offset, o),
    ]);
    ps.push([
        points[0][0] + _offsetOpt(offset, o),
        points[0][1] + _offsetOpt(offset, o),
    ]);
    for (let i = 1; i < points.length; i++) {
        ps.push([
            points[i][0] + _offsetOpt(offset, o),
            points[i][1] + _offsetOpt(offset, o),
        ]);
        if (i === (points.length - 1)) {
            ps.push([
                points[i][0] + _offsetOpt(offset, o),
                points[i][1] + _offsetOpt(offset, o),
            ]);
        }
    }
    return _curve(ps, null, o);
}
function _curve(points, closePoint, o) {
    const len = points.length;
    const ops = [];
    if (len > 3) {
        const b = [];
        const s = 1 - o.curveTightness;
        ops.push({ op: 'move', data: [points[1][0], points[1][1]] });
        for (let i = 1; (i + 2) < len; i++) {
            const cachedVertArray = points[i];
            b[0] = [cachedVertArray[0], cachedVertArray[1]];
            b[1] = [cachedVertArray[0] + (s * points[i + 1][0] - s * points[i - 1][0]) / 6, cachedVertArray[1] + (s * points[i + 1][1] - s * points[i - 1][1]) / 6];
            b[2] = [points[i + 1][0] + (s * points[i][0] - s * points[i + 2][0]) / 6, points[i + 1][1] + (s * points[i][1] - s * points[i + 2][1]) / 6];
            b[3] = [points[i + 1][0], points[i + 1][1]];
            ops.push({ op: 'bcurveTo', data: [b[1][0], b[1][1], b[2][0], b[2][1], b[3][0], b[3][1]] });
        }
        if (closePoint && closePoint.length === 2) {
            const ro = o.maxRandomnessOffset;
            ops.push({ op: 'lineTo', data: [closePoint[0] + _offsetOpt(ro, o), closePoint[1] + _offsetOpt(ro, o)] });
        }
    }
    else if (len === 3) {
        ops.push({ op: 'move', data: [points[1][0], points[1][1]] });
        ops.push({
            op: 'bcurveTo',
            data: [
                points[1][0], points[1][1],
                points[2][0], points[2][1],
                points[2][0], points[2][1],
            ],
        });
    }
    else if (len === 2) {
        ops.push(..._doubleLine(points[0][0], points[0][1], points[1][0], points[1][1], o));
    }
    return ops;
}
function _computeEllipsePoints(increment, cx, cy, rx, ry, offset, overlap, o) {
    const coreOnly = o.roughness === 0;
    const corePoints = [];
    const allPoints = [];
    if (coreOnly) {
        increment = increment / 4;
        allPoints.push([
            cx + rx * Math.cos(-increment),
            cy + ry * Math.sin(-increment),
        ]);
        for (let angle = 0; angle <= Math.PI * 2; angle = angle + increment) {
            const p = [
                cx + rx * Math.cos(angle),
                cy + ry * Math.sin(angle),
            ];
            corePoints.push(p);
            allPoints.push(p);
        }
        allPoints.push([
            cx + rx * Math.cos(0),
            cy + ry * Math.sin(0),
        ]);
        allPoints.push([
            cx + rx * Math.cos(increment),
            cy + ry * Math.sin(increment),
        ]);
    }
    else {
        const radOffset = _offsetOpt(0.5, o) - (Math.PI / 2);
        allPoints.push([
            _offsetOpt(offset, o) + cx + 0.9 * rx * Math.cos(radOffset - increment),
            _offsetOpt(offset, o) + cy + 0.9 * ry * Math.sin(radOffset - increment),
        ]);
        const endAngle = Math.PI * 2 + radOffset - 0.01;
        for (let angle = radOffset; angle < endAngle; angle = angle + increment) {
            const p = [
                _offsetOpt(offset, o) + cx + rx * Math.cos(angle),
                _offsetOpt(offset, o) + cy + ry * Math.sin(angle),
            ];
            corePoints.push(p);
            allPoints.push(p);
        }
        allPoints.push([
            _offsetOpt(offset, o) + cx + rx * Math.cos(radOffset + Math.PI * 2 + overlap * 0.5),
            _offsetOpt(offset, o) + cy + ry * Math.sin(radOffset + Math.PI * 2 + overlap * 0.5),
        ]);
        allPoints.push([
            _offsetOpt(offset, o) + cx + 0.98 * rx * Math.cos(radOffset + overlap),
            _offsetOpt(offset, o) + cy + 0.98 * ry * Math.sin(radOffset + overlap),
        ]);
        allPoints.push([
            _offsetOpt(offset, o) + cx + 0.9 * rx * Math.cos(radOffset + overlap * 0.5),
            _offsetOpt(offset, o) + cy + 0.9 * ry * Math.sin(radOffset + overlap * 0.5),
        ]);
    }
    return [allPoints, corePoints];
}
function _arc(increment, cx, cy, rx, ry, strt, stp, offset, o) {
    const radOffset = strt + _offsetOpt(0.1, o);
    const points = [];
    points.push([
        _offsetOpt(offset, o) + cx + 0.9 * rx * Math.cos(radOffset - increment),
        _offsetOpt(offset, o) + cy + 0.9 * ry * Math.sin(radOffset - increment),
    ]);
    for (let angle = radOffset; angle <= stp; angle = angle + increment) {
        points.push([
            _offsetOpt(offset, o) + cx + rx * Math.cos(angle),
            _offsetOpt(offset, o) + cy + ry * Math.sin(angle),
        ]);
    }
    points.push([
        cx + rx * Math.cos(stp),
        cy + ry * Math.sin(stp),
    ]);
    points.push([
        cx + rx * Math.cos(stp),
        cy + ry * Math.sin(stp),
    ]);
    return _curve(points, null, o);
}
function _bezierTo(x1, y1, x2, y2, x, y, current, o) {
    const ops = [];
    const ros = [o.maxRandomnessOffset || 1, (o.maxRandomnessOffset || 1) + 0.3];
    let f = [0, 0];
    const iterations = o.disableMultiStroke ? 1 : 2;
    const preserveVertices = o.preserveVertices;
    for (let i = 0; i < iterations; i++) {
        if (i === 0) {
            ops.push({ op: 'move', data: [current[0], current[1]] });
        }
        else {
            ops.push({ op: 'move', data: [current[0] + (preserveVertices ? 0 : _offsetOpt(ros[0], o)), current[1] + (preserveVertices ? 0 : _offsetOpt(ros[0], o))] });
        }
        f = preserveVertices ? [x, y] : [x + _offsetOpt(ros[i], o), y + _offsetOpt(ros[i], o)];
        ops.push({
            op: 'bcurveTo',
            data: [
                x1 + _offsetOpt(ros[i], o), y1 + _offsetOpt(ros[i], o),
                x2 + _offsetOpt(ros[i], o), y2 + _offsetOpt(ros[i], o),
                f[0], f[1],
            ],
        });
    }
    return ops;
}
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 27352 characters]
//# sourceURL=webpack-internal:///../../../node_modules/roughjs/bin/renderer.js
`);
              }
            ),
            /***/
            "../../../node_modules/roughjs/bin/rough.js": (
              /*!**************************************************!*\
                !*** ../../../node_modules/roughjs/bin/rough.js ***!
                \**************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _canvas__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./canvas */ "../../../node_modules/roughjs/bin/canvas.js");\n/* harmony import */ var _generator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./generator */ "../../../node_modules/roughjs/bin/generator.js");\n/* harmony import */ var _svg__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./svg */ "../../../node_modules/roughjs/bin/svg.js");\n\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n    canvas(canvas, config) {\n        return new _canvas__WEBPACK_IMPORTED_MODULE_0__.RoughCanvas(canvas, config);\n    },\n    svg(svg, config) {\n        return new _svg__WEBPACK_IMPORTED_MODULE_2__.RoughSVG(svg, config);\n    },\n    generator(config) {\n        return new _generator__WEBPACK_IMPORTED_MODULE_1__.RoughGenerator(config);\n    },\n    newSeed() {\n        return _generator__WEBPACK_IMPORTED_MODULE_1__.RoughGenerator.newSeed();\n    },\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JvdWdoanMvYmluL3JvdWdoLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBdUM7QUFDTTtBQUNaO0FBQ2pDLGlFQUFlO0FBQ2Y7QUFDQSxtQkFBbUIsZ0RBQVc7QUFDOUIsS0FBSztBQUNMO0FBQ0EsbUJBQW1CLDBDQUFRO0FBQzNCLEtBQUs7QUFDTDtBQUNBLG1CQUFtQixzREFBYztBQUNqQyxLQUFLO0FBQ0w7QUFDQSxlQUFlLDhEQUFzQjtBQUNyQyxLQUFLO0FBQ0wsQ0FBQyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yb3VnaGpzL2Jpbi9yb3VnaC5qcz83OTI4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJvdWdoQ2FudmFzIH0gZnJvbSAnLi9jYW52YXMnO1xuaW1wb3J0IHsgUm91Z2hHZW5lcmF0b3IgfSBmcm9tICcuL2dlbmVyYXRvcic7XG5pbXBvcnQgeyBSb3VnaFNWRyB9IGZyb20gJy4vc3ZnJztcbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBjYW52YXMoY2FudmFzLCBjb25maWcpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBSb3VnaENhbnZhcyhjYW52YXMsIGNvbmZpZyk7XG4gICAgfSxcbiAgICBzdmcoc3ZnLCBjb25maWcpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBSb3VnaFNWRyhzdmcsIGNvbmZpZyk7XG4gICAgfSxcbiAgICBnZW5lcmF0b3IoY29uZmlnKSB7XG4gICAgICAgIHJldHVybiBuZXcgUm91Z2hHZW5lcmF0b3IoY29uZmlnKTtcbiAgICB9LFxuICAgIG5ld1NlZWQoKSB7XG4gICAgICAgIHJldHVybiBSb3VnaEdlbmVyYXRvci5uZXdTZWVkKCk7XG4gICAgfSxcbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/roughjs/bin/rough.js\n');
              }
            ),
            /***/
            "../../../node_modules/roughjs/bin/svg.js": (
              /*!************************************************!*\
                !*** ../../../node_modules/roughjs/bin/svg.js ***!
                \************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"RoughSVG\": () => (/* binding */ RoughSVG)\n/* harmony export */ });\n/* harmony import */ var _core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./core */ \"../../../node_modules/roughjs/bin/core.js\");\n/* harmony import */ var _generator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./generator */ \"../../../node_modules/roughjs/bin/generator.js\");\n\n\nclass RoughSVG {\n    constructor(svg, config) {\n        this.svg = svg;\n        this.gen = new _generator__WEBPACK_IMPORTED_MODULE_1__.RoughGenerator(config);\n    }\n    draw(drawable) {\n        const sets = drawable.sets || [];\n        const o = drawable.options || this.getDefaultOptions();\n        const doc = this.svg.ownerDocument || window.document;\n        const g = doc.createElementNS(_core__WEBPACK_IMPORTED_MODULE_0__.SVGNS, 'g');\n        const precision = drawable.options.fixedDecimalPlaceDigits;\n        for (const drawing of sets) {\n            let path = null;\n            switch (drawing.type) {\n                case 'path': {\n                    path = doc.createElementNS(_core__WEBPACK_IMPORTED_MODULE_0__.SVGNS, 'path');\n                    path.setAttribute('d', this.opsToPath(drawing, precision));\n                    path.setAttribute('stroke', o.stroke);\n                    path.setAttribute('stroke-width', o.strokeWidth + '');\n                    path.setAttribute('fill', 'none');\n                    if (o.strokeLineDash) {\n                        path.setAttribute('stroke-dasharray', o.strokeLineDash.join(' ').trim());\n                    }\n                    if (o.strokeLineDashOffset) {\n                        path.setAttribute('stroke-dashoffset', `${o.strokeLineDashOffset}`);\n                    }\n                    break;\n                }\n                case 'fillPath': {\n                    path = doc.createElementNS(_core__WEBPACK_IMPORTED_MODULE_0__.SVGNS, 'path');\n                    path.setAttribute('d', this.opsToPath(drawing, precision));\n                    path.setAttribute('stroke', 'none');\n                    path.setAttribute('stroke-width', '0');\n                    path.setAttribute('fill', o.fill || '');\n                    if (drawable.shape === 'curve' || drawable.shape === 'polygon') {\n                        path.setAttribute('fill-rule', 'evenodd');\n                    }\n                    break;\n                }\n                case 'fillSketch': {\n                    path = this.fillSketch(doc, drawing, o);\n                    break;\n                }\n            }\n            if (path) {\n                g.appendChild(path);\n            }\n        }\n        return g;\n    }\n    fillSketch(doc, drawing, o) {\n        let fweight = o.fillWeight;\n        if (fweight < 0) {\n            fweight = o.strokeWidth / 2;\n        }\n        const path = doc.createElementNS(_core__WEBPACK_IMPORTED_MODULE_0__.SVGNS, 'path');\n        path.setAttribute('d', this.opsToPath(drawing, o.fixedDecimalPlaceDigits));\n        path.setAttribute('stroke', o.fill || '');\n        path.setAttribute('stroke-width', fweight + '');\n        path.setAttribute('fill', 'none');\n        if (o.fillLineDash) {\n            path.setAttribute('stroke-dasharray', o.fillLineDash.join(' ').trim());\n        }\n        if (o.fillLineDashOffset) {\n            path.setAttribute('stroke-dashoffset', `${o.fillLineDashOffset}`);\n        }\n        return path;\n    }\n    get generator() {\n        return this.gen;\n    }\n    getDefaultOptions() {\n        return this.gen.defaultOptions;\n    }\n    opsToPath(drawing, fixedDecimalPlaceDigits) {\n        return this.gen.opsToPath(drawing, fixedDecimalPlaceDigits);\n    }\n    line(x1, y1, x2, y2, options) {\n        const d = this.gen.line(x1, y1, x2, y2, options);\n        return this.draw(d);\n    }\n    rectangle(x, y, width, height, options) {\n        const d = this.gen.rectangle(x, y, width, height, options);\n        return this.draw(d);\n    }\n    ellipse(x, y, width, height, options) {\n        const d = this.gen.ellipse(x, y, width, height, options);\n        return this.draw(d);\n    }\n    circle(x, y, diameter, options) {\n        const d = this.gen.circle(x, y, diameter, options);\n        return this.draw(d);\n    }\n    linearPath(points, options) {\n        const d = this.gen.linearPath(points, options);\n        return this.draw(d);\n    }\n    polygon(points, options) {\n        const d = this.gen.polygon(points, options);\n        return this.draw(d);\n    }\n    arc(x, y, width, height, start, stop, closed = false, options) {\n        const d = this.gen.arc(x, y, width, height, start, stop, closed, options);\n        return this.draw(d);\n    }\n    curve(points, options) {\n        const d = this.gen.curve(points, options);\n        return this.draw(d);\n    }\n    path(d, options) {\n        const drawing = this.gen.path(d, options);\n        return this.draw(drawing);\n    }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 7188 characters]\n//# sourceURL=webpack-internal:///../../../node_modules/roughjs/bin/svg.js\n");
              }
            ),
            /***/
            "../../../node_modules/roughjs/node_modules/points-on-curve/lib/curve-to-bezier.js": (
              /*!*****************************************************************************************!*\
                !*** ../../../node_modules/roughjs/node_modules/points-on-curve/lib/curve-to-bezier.js ***!
                \*****************************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "curveToBezier": () => (/* binding */ curveToBezier)
/* harmony export */ });
function clone(p) {
    return [...p];
}
function curveToBezier(pointsIn, curveTightness = 0) {
    const len = pointsIn.length;
    if (len < 3) {
        throw new Error('A curve must have at least three points.');
    }
    const out = [];
    if (len === 3) {
        out.push(clone(pointsIn[0]), clone(pointsIn[1]), clone(pointsIn[2]), clone(pointsIn[2]));
    }
    else {
        const points = [];
        points.push(pointsIn[0], pointsIn[0]);
        for (let i = 1; i < pointsIn.length; i++) {
            points.push(pointsIn[i]);
            if (i === (pointsIn.length - 1)) {
                points.push(pointsIn[i]);
            }
        }
        const b = [];
        const s = 1 - curveTightness;
        out.push(clone(points[0]));
        for (let i = 1; (i + 2) < points.length; i++) {
            const cachedVertArray = points[i];
            b[0] = [cachedVertArray[0], cachedVertArray[1]];
            b[1] = [cachedVertArray[0] + (s * points[i + 1][0] - s * points[i - 1][0]) / 6, cachedVertArray[1] + (s * points[i + 1][1] - s * points[i - 1][1]) / 6];
            b[2] = [points[i + 1][0] + (s * points[i][0] - s * points[i + 2][0]) / 6, points[i + 1][1] + (s * points[i][1] - s * points[i + 2][1]) / 6];
            b[3] = [points[i + 1][0], points[i + 1][1]];
            out.push(b[1], b[2], b[3]);
        }
    }
    return out;
}
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JvdWdoanMvbm9kZV9tb2R1bGVzL3BvaW50cy1vbi1jdXJ2ZS9saWIvY3VydmUtdG8tYmV6aWVyLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IscUJBQXFCO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IseUJBQXlCO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yb3VnaGpzL25vZGVfbW9kdWxlcy9wb2ludHMtb24tY3VydmUvbGliL2N1cnZlLXRvLWJlemllci5qcz8zNDRjIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIGNsb25lKHApIHtcbiAgICByZXR1cm4gWy4uLnBdO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGN1cnZlVG9CZXppZXIocG9pbnRzSW4sIGN1cnZlVGlnaHRuZXNzID0gMCkge1xuICAgIGNvbnN0IGxlbiA9IHBvaW50c0luLmxlbmd0aDtcbiAgICBpZiAobGVuIDwgMykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0EgY3VydmUgbXVzdCBoYXZlIGF0IGxlYXN0IHRocmVlIHBvaW50cy4nKTtcbiAgICB9XG4gICAgY29uc3Qgb3V0ID0gW107XG4gICAgaWYgKGxlbiA9PT0gMykge1xuICAgICAgICBvdXQucHVzaChjbG9uZShwb2ludHNJblswXSksIGNsb25lKHBvaW50c0luWzFdKSwgY2xvbmUocG9pbnRzSW5bMl0pLCBjbG9uZShwb2ludHNJblsyXSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgY29uc3QgcG9pbnRzID0gW107XG4gICAgICAgIHBvaW50cy5wdXNoKHBvaW50c0luWzBdLCBwb2ludHNJblswXSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgcG9pbnRzSW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHBvaW50cy5wdXNoKHBvaW50c0luW2ldKTtcbiAgICAgICAgICAgIGlmIChpID09PSAocG9pbnRzSW4ubGVuZ3RoIC0gMSkpIHtcbiAgICAgICAgICAgICAgICBwb2ludHMucHVzaChwb2ludHNJbltpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYiA9IFtdO1xuICAgICAgICBjb25zdCBzID0gMSAtIGN1cnZlVGlnaHRuZXNzO1xuICAgICAgICBvdXQucHVzaChjbG9uZShwb2ludHNbMF0pKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IChpICsgMikgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGNhY2hlZFZlcnRBcnJheSA9IHBvaW50c1tpXTtcbiAgICAgICAgICAgIGJbMF0gPSBbY2FjaGVkVmVydEFycmF5WzBdLCBjYWNoZWRWZXJ0QXJyYXlbMV1dO1xuICAgICAgICAgICAgYlsxXSA9IFtjYWNoZWRWZXJ0QXJyYXlbMF0gKyAocyAqIHBvaW50c1tpICsgMV1bMF0gLSBzICogcG9pbnRzW2kgLSAxXVswXSkgLyA2LCBjYWNoZWRWZXJ0QXJyYXlbMV0gKyAocyAqIHBvaW50c1tpICsgMV1bMV0gLSBzICogcG9pbnRzW2kgLSAxXVsxXSkgLyA2XTtcbiAgICAgICAgICAgIGJbMl0gPSBbcG9pbnRzW2kgKyAxXVswXSArIChzICogcG9pbnRzW2ldWzBdIC0gcyAqIHBvaW50c1tpICsgMl1bMF0pIC8gNiwgcG9pbnRzW2kgKyAxXVsxXSArIChzICogcG9pbnRzW2ldWzFdIC0gcyAqIHBvaW50c1tpICsgMl1bMV0pIC8gNl07XG4gICAgICAgICAgICBiWzNdID0gW3BvaW50c1tpICsgMV1bMF0sIHBvaW50c1tpICsgMV1bMV1dO1xuICAgICAgICAgICAgb3V0LnB1c2goYlsxXSwgYlsyXSwgYlszXSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG91dDtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==
//# sourceURL=webpack-internal:///../../../node_modules/roughjs/node_modules/points-on-curve/lib/curve-to-bezier.js
`);
              }
            ),
            /***/
            "../../../node_modules/roughjs/node_modules/points-on-curve/lib/index.js": (
              /*!*******************************************************************************!*\
                !*** ../../../node_modules/roughjs/node_modules/points-on-curve/lib/index.js ***!
                \*******************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "pointsOnBezierCurves": () => (/* binding */ pointsOnBezierCurves),\n/* harmony export */   "simplify": () => (/* binding */ simplify)\n/* harmony export */ });\n// distance between 2 points\nfunction distance(p1, p2) {\n    return Math.sqrt(distanceSq(p1, p2));\n}\n// distance between 2 points squared\nfunction distanceSq(p1, p2) {\n    return Math.pow(p1[0] - p2[0], 2) + Math.pow(p1[1] - p2[1], 2);\n}\n// Sistance squared from a point p to the line segment vw\nfunction distanceToSegmentSq(p, v, w) {\n    const l2 = distanceSq(v, w);\n    if (l2 === 0) {\n        return distanceSq(p, v);\n    }\n    let t = ((p[0] - v[0]) * (w[0] - v[0]) + (p[1] - v[1]) * (w[1] - v[1])) / l2;\n    t = Math.max(0, Math.min(1, t));\n    return distanceSq(p, lerp(v, w, t));\n}\nfunction lerp(a, b, t) {\n    return [\n        a[0] + (b[0] - a[0]) * t,\n        a[1] + (b[1] - a[1]) * t,\n    ];\n}\n// Adapted from https://seant23.wordpress.com/2010/11/12/offset-bezier-curves/\nfunction flatness(points, offset) {\n    const p1 = points[offset + 0];\n    const p2 = points[offset + 1];\n    const p3 = points[offset + 2];\n    const p4 = points[offset + 3];\n    let ux = 3 * p2[0] - 2 * p1[0] - p4[0];\n    ux *= ux;\n    let uy = 3 * p2[1] - 2 * p1[1] - p4[1];\n    uy *= uy;\n    let vx = 3 * p3[0] - 2 * p4[0] - p1[0];\n    vx *= vx;\n    let vy = 3 * p3[1] - 2 * p4[1] - p1[1];\n    vy *= vy;\n    if (ux < vx) {\n        ux = vx;\n    }\n    if (uy < vy) {\n        uy = vy;\n    }\n    return ux + uy;\n}\nfunction getPointsOnBezierCurveWithSplitting(points, offset, tolerance, newPoints) {\n    const outPoints = newPoints || [];\n    if (flatness(points, offset) < tolerance) {\n        const p0 = points[offset + 0];\n        if (outPoints.length) {\n            const d = distance(outPoints[outPoints.length - 1], p0);\n            if (d > 1) {\n                outPoints.push(p0);\n            }\n        }\n        else {\n            outPoints.push(p0);\n        }\n        outPoints.push(points[offset + 3]);\n    }\n    else {\n        // subdivide\n        const t = .5;\n        const p1 = points[offset + 0];\n        const p2 = points[offset + 1];\n        const p3 = points[offset + 2];\n        const p4 = points[offset + 3];\n        const q1 = lerp(p1, p2, t);\n        const q2 = lerp(p2, p3, t);\n        const q3 = lerp(p3, p4, t);\n        const r1 = lerp(q1, q2, t);\n        const r2 = lerp(q2, q3, t);\n        const red = lerp(r1, r2, t);\n        getPointsOnBezierCurveWithSplitting([p1, q1, r1, red], 0, tolerance, outPoints);\n        getPointsOnBezierCurveWithSplitting([red, r2, q3, p4], 0, tolerance, outPoints);\n    }\n    return outPoints;\n}\nfunction simplify(points, distance) {\n    return simplifyPoints(points, 0, points.length, distance);\n}\n// Ramer\u2013Douglas\u2013Peucker algorithm\n// https://en.wikipedia.org/wiki/Ramer%E2%80%93Douglas%E2%80%93Peucker_algorithm\nfunction simplifyPoints(points, start, end, epsilon, newPoints) {\n    const outPoints = newPoints || [];\n    // find the most distance point from the endpoints\n    const s = points[start];\n    const e = points[end - 1];\n    let maxDistSq = 0;\n    let maxNdx = 1;\n    for (let i = start + 1; i < end - 1; ++i) {\n        const distSq = distanceToSegmentSq(points[i], s, e);\n        if (distSq > maxDistSq) {\n            maxDistSq = distSq;\n            maxNdx = i;\n        }\n    }\n    // if that point is too far, split\n    if (Math.sqrt(maxDistSq) > epsilon) {\n        simplifyPoints(points, start, maxNdx + 1, epsilon, outPoints);\n        simplifyPoints(points, maxNdx, end, epsilon, outPoints);\n    }\n    else {\n        if (!outPoints.length) {\n            outPoints.push(s);\n        }\n        outPoints.push(e);\n    }\n    return outPoints;\n}\nfunction pointsOnBezierCurves(points, tolerance = 0.15, distance) {\n    const newPoints = [];\n    const numSegments = (points.length - 1) / 3;\n    for (let i = 0; i < numSegments; i++) {\n        const offset = i * 3;\n        getPointsOnBezierCurveWithSplitting(points, offset, tolerance, newPoints);\n    }\n    if (distance && distance > 0) {\n        return simplifyPoints(newPoints, 0, newPoints.length, distance);\n    }\n    return newPoints;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6660 characters]\n//# sourceURL=webpack-internal:///../../../node_modules/roughjs/node_modules/points-on-curve/lib/index.js\n');
              }
            ),
            /***/
            "../../../node_modules/sliced/index.js": (
              /*!*********************************************!*\
                !*** ../../../node_modules/sliced/index.js ***!
                \*********************************************/
              /***/
              (module) => {
                eval("\n/**\n * An Array.prototype.slice.call(arguments) alternative\n *\n * @param {Object} args something with a length\n * @param {Number} slice\n * @param {Number} sliceEnd\n * @api public\n */\n\nmodule.exports = function (args, slice, sliceEnd) {\n  var ret = [];\n  var len = args.length;\n\n  if (0 === len) return ret;\n\n  var start = slice < 0\n    ? Math.max(0, slice + len)\n    : slice || 0;\n\n  if (sliceEnd !== undefined) {\n    len = sliceEnd < 0\n      ? sliceEnd + len\n      : sliceEnd\n  }\n\n  while (len-- > start) {\n    ret[len - start] = args[len];\n  }\n\n  return ret;\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3NsaWNlZC9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3NsaWNlZC9pbmRleC5qcz9hMGYwIl0sInNvdXJjZXNDb250ZW50IjpbIlxuLyoqXG4gKiBBbiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpIGFsdGVybmF0aXZlXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGFyZ3Mgc29tZXRoaW5nIHdpdGggYSBsZW5ndGhcbiAqIEBwYXJhbSB7TnVtYmVyfSBzbGljZVxuICogQHBhcmFtIHtOdW1iZXJ9IHNsaWNlRW5kXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3MsIHNsaWNlLCBzbGljZUVuZCkge1xuICB2YXIgcmV0ID0gW107XG4gIHZhciBsZW4gPSBhcmdzLmxlbmd0aDtcblxuICBpZiAoMCA9PT0gbGVuKSByZXR1cm4gcmV0O1xuXG4gIHZhciBzdGFydCA9IHNsaWNlIDwgMFxuICAgID8gTWF0aC5tYXgoMCwgc2xpY2UgKyBsZW4pXG4gICAgOiBzbGljZSB8fCAwO1xuXG4gIGlmIChzbGljZUVuZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgbGVuID0gc2xpY2VFbmQgPCAwXG4gICAgICA/IHNsaWNlRW5kICsgbGVuXG4gICAgICA6IHNsaWNlRW5kXG4gIH1cblxuICB3aGlsZSAobGVuLS0gPiBzdGFydCkge1xuICAgIHJldFtsZW4gLSBzdGFydF0gPSBhcmdzW2xlbl07XG4gIH1cblxuICByZXR1cm4gcmV0O1xufVxuXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/sliced/index.js\n");
              }
            ),
            /***/
            "../../../node_modules/tslib/tslib.es6.js": (
              /*!************************************************!*\
                !*** ../../../node_modules/tslib/tslib.es6.js ***!
                \************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "__assign": () => (/* binding */ __assign),
/* harmony export */   "__asyncDelegator": () => (/* binding */ __asyncDelegator),
/* harmony export */   "__asyncGenerator": () => (/* binding */ __asyncGenerator),
/* harmony export */   "__asyncValues": () => (/* binding */ __asyncValues),
/* harmony export */   "__await": () => (/* binding */ __await),
/* harmony export */   "__awaiter": () => (/* binding */ __awaiter),
/* harmony export */   "__classPrivateFieldGet": () => (/* binding */ __classPrivateFieldGet),
/* harmony export */   "__classPrivateFieldIn": () => (/* binding */ __classPrivateFieldIn),
/* harmony export */   "__classPrivateFieldSet": () => (/* binding */ __classPrivateFieldSet),
/* harmony export */   "__createBinding": () => (/* binding */ __createBinding),
/* harmony export */   "__decorate": () => (/* binding */ __decorate),
/* harmony export */   "__esDecorate": () => (/* binding */ __esDecorate),
/* harmony export */   "__exportStar": () => (/* binding */ __exportStar),
/* harmony export */   "__extends": () => (/* binding */ __extends),
/* harmony export */   "__generator": () => (/* binding */ __generator),
/* harmony export */   "__importDefault": () => (/* binding */ __importDefault),
/* harmony export */   "__importStar": () => (/* binding */ __importStar),
/* harmony export */   "__makeTemplateObject": () => (/* binding */ __makeTemplateObject),
/* harmony export */   "__metadata": () => (/* binding */ __metadata),
/* harmony export */   "__param": () => (/* binding */ __param),
/* harmony export */   "__propKey": () => (/* binding */ __propKey),
/* harmony export */   "__read": () => (/* binding */ __read),
/* harmony export */   "__rest": () => (/* binding */ __rest),
/* harmony export */   "__runInitializers": () => (/* binding */ __runInitializers),
/* harmony export */   "__setFunctionName": () => (/* binding */ __setFunctionName),
/* harmony export */   "__spread": () => (/* binding */ __spread),
/* harmony export */   "__spreadArray": () => (/* binding */ __spreadArray),
/* harmony export */   "__spreadArrays": () => (/* binding */ __spreadArrays),
/* harmony export */   "__values": () => (/* binding */ __values)
/* harmony export */ });
/******************************************************************************\r
Copyright (c) Microsoft Corporation.\r
\r
Permission to use, copy, modify, and/or distribute this software for any\r
purpose with or without fee is hereby granted.\r
\r
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r
PERFORMANCE OF THIS SOFTWARE.\r
***************************************************************************** */\r
/* global Reflect, Promise */\r
\r
var extendStatics = function(d, b) {\r
    extendStatics = Object.setPrototypeOf ||\r
        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r
        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r
    return extendStatics(d, b);\r
};\r
\r
function __extends(d, b) {\r
    if (typeof b !== "function" && b !== null)\r
        throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");\r
    extendStatics(d, b);\r
    function __() { this.constructor = d; }\r
    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r
}\r
\r
var __assign = function() {\r
    __assign = Object.assign || function __assign(t) {\r
        for (var s, i = 1, n = arguments.length; i < n; i++) {\r
            s = arguments[i];\r
            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r
        }\r
        return t;\r
    }\r
    return __assign.apply(this, arguments);\r
}\r
\r
function __rest(s, e) {\r
    var t = {};\r
    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r
        t[p] = s[p];\r
    if (s != null && typeof Object.getOwnPropertySymbols === "function")\r
        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r
            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r
                t[p[i]] = s[p[i]];\r
        }\r
    return t;\r
}\r
\r
function __decorate(decorators, target, key, desc) {\r
    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r
    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);\r
    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r
    return c > 3 && r && Object.defineProperty(target, key, r), r;\r
}\r
\r
function __param(paramIndex, decorator) {\r
    return function (target, key) { decorator(target, key, paramIndex); }\r
}\r
\r
function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r
    function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }\r
    var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";\r
    var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;\r
    var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r
    var _, done = false;\r
    for (var i = decorators.length - 1; i >= 0; i--) {\r
        var context = {};\r
        for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];\r
        for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r
        context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };\r
        var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r
        if (kind === "accessor") {\r
            if (result === void 0) continue;\r
            if (result === null || typeof result !== "object") throw new TypeError("Object expected");\r
            if (_ = accept(result.get)) descriptor.get = _;\r
            if (_ = accept(result.set)) descriptor.set = _;\r
            if (_ = accept(result.init)) initializers.push(_);\r
        }\r
        else if (_ = accept(result)) {\r
            if (kind === "field") initializers.push(_);\r
            else descriptor[key] = _;\r
        }\r
    }\r
    if (target) Object.defineProperty(target, contextIn.name, descriptor);\r
    done = true;\r
};\r
\r
function __runInitializers(thisArg, initializers, value) {\r
    var useValue = arguments.length > 2;\r
    for (var i = 0; i < initializers.length; i++) {\r
        value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r
    }\r
    return useValue ? value : void 0;\r
};\r
\r
function __propKey(x) {\r
    return typeof x === "symbol" ? x : "".concat(x);\r
};\r
\r
function __setFunctionName(f, name, prefix) {\r
    if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : "";\r
    return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name });\r
};\r
\r
function __metadata(metadataKey, metadataValue) {\r
    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);\r
}\r
\r
function __awaiter(thisArg, _arguments, P, generator) {\r
    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r
    return new (P || (P = Promise))(function (resolve, reject) {\r
        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r
        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }\r
        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r
        step((generator = generator.apply(thisArg, _arguments || [])).next());\r
    });\r
}\r
\r
function __generator(thisArg, body) {\r
    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r
    return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;\r
    function verb(n) { return function (v) { return step([n, v]); }; }\r
    function step(op) {\r
        if (f) throw new TypeError("Generator is already executing.");\r
        while (g && (g = 0, op[0] && (_ = 0)), _) try {\r
            if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r
            if (y = 0, t) op = [op[0] & 2, t.value];\r
            switch (op[0]) {\r
                case 0: case 1: t = op; break;\r
                case 4: _.label++; return { value: op[1], done: false };\r
                case 5: _.label++; y = op[1]; op = [0]; continue;\r
                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r
                default:\r
                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r
                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r
                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r
                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r
                    if (t[2]) _.ops.pop();\r
                    _.trys.pop(); continue;\r
            }\r
            op = body.call(thisArg, _);\r
        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r
        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r
    }\r
}\r
\r
var __createBinding = Object.create ? (function(o, m, k, k2) {\r
    if (k2 === undefined) k2 = k;\r
    var desc = Object.getOwnPropertyDescriptor(m, k);\r
    if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r
        desc = { enumerable: true, get: function() { return m[k]; } };\r
    }\r
    Object.defineProperty(o, k2, desc);\r
}) : (function(o, m, k, k2) {\r
    if (k2 === undefined) k2 = k;\r
    o[k2] = m[k];\r
});\r
\r
function __exportStar(m, o) {\r
    for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r
}\r
\r
function __values(o) {\r
    var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;\r
    if (m) return m.call(o);\r
    if (o && typeof o.length === "number") return {\r
        next: function () {\r
            if (o && i >= o.length) o = void 0;\r
            return { value: o && o[i++], done: !o };\r
        }\r
    };\r
    throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");\r
}\r
\r
function __read(o, n) {\r
    var m = typeof Symbol === "function" && o[Symbol.iterator];\r
    if (!m) return o;\r
    var i = m.call(o), r, ar = [], e;\r
    try {\r
        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r
    }\r
    catch (error) { e = { error: error }; }\r
    finally {\r
        try {\r
            if (r && !r.done && (m = i["return"])) m.call(i);\r
        }\r
        finally { if (e) throw e.error; }\r
    }\r
    return ar;\r
}\r
\r
/** @deprecated */\r
function __spread() {\r
    for (var ar = [], i = 0; i < arguments.length; i++)\r
        ar = ar.concat(__read(arguments[i]));\r
    return ar;\r
}\r
\r
/** @deprecated */\r
function __spreadArrays() {\r
    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r
    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r
        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r
            r[k] = a[j];\r
    return r;\r
}\r
\r
function __spreadArray(to, from, pack) {\r
    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r
        if (ar || !(i in from)) {\r
            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r
            ar[i] = from[i];\r
        }\r
    }\r
    return to.concat(ar || Array.prototype.slice.call(from));\r
}\r
\r
function __await(v) {\r
    return this instanceof __await ? (this.v = v, this) : new __await(v);\r
}\r
\r
function __asyncGenerator(thisArg, _arguments, generator) {\r
    if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");\r
    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r
    return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;\r
    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r
    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r
    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r
    function fulfill(value) { resume("next", value); }\r
    function reject(value) { resume("throw", value); }\r
    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r
}\r
\r
function __asyncDelegator(o) {\r
    var i, p;\r
    return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;\r
    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r
}\r
\r
function __asyncValues(o) {\r
    if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");\r
    var m = o[Symbol.asyncIterator], i;\r
    return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);\r
    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r
    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r
}\r
\r
function __makeTemplateObject(cooked, raw) {\r
    if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }\r
    return cooked;\r
};\r
\r
var __setModuleDefault = Object.create ? (function(o, v) {\r
    Object.defineProperty(o, "default", { enumerable: true, value: v });\r
}) : function(o, v) {\r
    o["default"] = v;\r
};\r
\r
function __importStar(mod) {\r
    if (mod && mod.__esModule) return mod;\r
    var result = {};\r
    if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r
    __setModuleDefault(result, mod);\r
    return result;\r
}\r
\r
function __importDefault(mod) {\r
    return (mod && mod.__esModule) ? mod : { default: mod };\r
}\r
\r
function __classPrivateFieldGet(receiver, state, kind, f) {\r
    if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");\r
    if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");\r
    return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);\r
}\r
\r
function __classPrivateFieldSet(receiver, state, value, kind, f) {\r
    if (kind === "m") throw new TypeError("Private method is not writable");\r
    if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");\r
    if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");\r
    return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r
}\r
\r
function __classPrivateFieldIn(state, receiver) {\r
    if (receiver === null || (typeof receiver !== "object" && typeof receiver !== "function")) throw new TypeError("Cannot use 'in' operator on non-object");\r
    return typeof state === "function" ? receiver === state : state.has(receiver);\r
}\r
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 24228 characters]
//# sourceURL=webpack-internal:///../../../node_modules/tslib/tslib.es6.js
`);
              }
            ),
            /***/
            "../../../node_modules/tunnel-rat/dist/index.js": (
              /*!******************************************************!*\
                !*** ../../../node_modules/tunnel-rat/dist/index.js ***!
                \******************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ tunnel)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var zustand__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! zustand */ "../../../node_modules/zustand/esm/index.mjs");



var _window$document, _window$navigator;
/**
 * An SSR-friendly useLayoutEffect.
 *
 * React currently throws a warning when using useLayoutEffect on the server.
 * To get around it, we can conditionally useEffect on the server (no-op) and
 * useLayoutEffect elsewhere.
 *
 * @see https://github.com/facebook/react/issues/14927
 */

const useIsomorphicLayoutEffect = typeof window !== 'undefined' && ((_window$document = window.document) != null && _window$document.createElement || ((_window$navigator = window.navigator) == null ? void 0 : _window$navigator.product) === 'ReactNative') ? (react__WEBPACK_IMPORTED_MODULE_0___default().useLayoutEffect) : (react__WEBPACK_IMPORTED_MODULE_0___default().useEffect);

function tunnel() {
  const useStore = (0,zustand__WEBPACK_IMPORTED_MODULE_1__.create)(set => ({
    current: new Array(),
    version: 0,
    set
  }));
  return {
    In: ({
      children
    }) => {
      const set = useStore(state => state.set);
      const version = useStore(state => state.version);
      /* When this component mounts, we increase the store's version number.
      This will cause all existing rats to re-render (just like if the Out component
      were mapping items to a list.) The re-rendering will cause the final 
      order of rendered components to match what the user is expecting. */

      useIsomorphicLayoutEffect(() => {
        set(state => ({
          version: state.version + 1
        }));
      }, []);
      /* Any time the children _or_ the store's version number change, insert
      the specified React children into the list of rats. */

      useIsomorphicLayoutEffect(() => {
        set(({
          current
        }) => ({
          current: [...current, children]
        }));
        return () => set(({
          current
        }) => ({
          current: current.filter(c => c !== children)
        }));
      }, [children, version]);
      return null;
    },
    Out: () => {
      const current = useStore(state => state.current);
      return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, current);
    }
  };
}


//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3R1bm5lbC1yYXQvZGlzdC9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQTBCO0FBQ087O0FBRWpDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlRQUFpUSw4REFBcUIsR0FBRyx3REFBZTs7QUFFeFM7QUFDQSxtQkFBbUIsK0NBQU07QUFDekI7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsMEJBQTBCLDBEQUFtQixDQUFDLHVEQUFjO0FBQzVEO0FBQ0E7QUFDQTs7QUFFNkIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3R1bm5lbC1yYXQvZGlzdC9pbmRleC5qcz9lZjRjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjcmVhdGUgfSBmcm9tICd6dXN0YW5kJztcblxudmFyIF93aW5kb3ckZG9jdW1lbnQsIF93aW5kb3ckbmF2aWdhdG9yO1xuLyoqXG4gKiBBbiBTU1ItZnJpZW5kbHkgdXNlTGF5b3V0RWZmZWN0LlxuICpcbiAqIFJlYWN0IGN1cnJlbnRseSB0aHJvd3MgYSB3YXJuaW5nIHdoZW4gdXNpbmcgdXNlTGF5b3V0RWZmZWN0IG9uIHRoZSBzZXJ2ZXIuXG4gKiBUbyBnZXQgYXJvdW5kIGl0LCB3ZSBjYW4gY29uZGl0aW9uYWxseSB1c2VFZmZlY3Qgb24gdGhlIHNlcnZlciAobm8tb3ApIGFuZFxuICogdXNlTGF5b3V0RWZmZWN0IGVsc2V3aGVyZS5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvMTQ5MjdcbiAqL1xuXG5jb25zdCB1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0ID0gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgKChfd2luZG93JGRvY3VtZW50ID0gd2luZG93LmRvY3VtZW50KSAhPSBudWxsICYmIF93aW5kb3ckZG9jdW1lbnQuY3JlYXRlRWxlbWVudCB8fCAoKF93aW5kb3ckbmF2aWdhdG9yID0gd2luZG93Lm5hdmlnYXRvcikgPT0gbnVsbCA/IHZvaWQgMCA6IF93aW5kb3ckbmF2aWdhdG9yLnByb2R1Y3QpID09PSAnUmVhY3ROYXRpdmUnKSA/IFJlYWN0LnVzZUxheW91dEVmZmVjdCA6IFJlYWN0LnVzZUVmZmVjdDtcblxuZnVuY3Rpb24gdHVubmVsKCkge1xuICBjb25zdCB1c2VTdG9yZSA9IGNyZWF0ZShzZXQgPT4gKHtcbiAgICBjdXJyZW50OiBuZXcgQXJyYXkoKSxcbiAgICB2ZXJzaW9uOiAwLFxuICAgIHNldFxuICB9KSk7XG4gIHJldHVybiB7XG4gICAgSW46ICh7XG4gICAgICBjaGlsZHJlblxuICAgIH0pID0+IHtcbiAgICAgIGNvbnN0IHNldCA9IHVzZVN0b3JlKHN0YXRlID0+IHN0YXRlLnNldCk7XG4gICAgICBjb25zdCB2ZXJzaW9uID0gdXNlU3RvcmUoc3RhdGUgPT4gc3RhdGUudmVyc2lvbik7XG4gICAgICAvKiBXaGVuIHRoaXMgY29tcG9uZW50IG1vdW50cywgd2UgaW5jcmVhc2UgdGhlIHN0b3JlJ3MgdmVyc2lvbiBudW1iZXIuXG4gICAgICBUaGlzIHdpbGwgY2F1c2UgYWxsIGV4aXN0aW5nIHJhdHMgdG8gcmUtcmVuZGVyIChqdXN0IGxpa2UgaWYgdGhlIE91dCBjb21wb25lbnRcbiAgICAgIHdlcmUgbWFwcGluZyBpdGVtcyB0byBhIGxpc3QuKSBUaGUgcmUtcmVuZGVyaW5nIHdpbGwgY2F1c2UgdGhlIGZpbmFsIFxuICAgICAgb3JkZXIgb2YgcmVuZGVyZWQgY29tcG9uZW50cyB0byBtYXRjaCB3aGF0IHRoZSB1c2VyIGlzIGV4cGVjdGluZy4gKi9cblxuICAgICAgdXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHNldChzdGF0ZSA9PiAoe1xuICAgICAgICAgIHZlcnNpb246IHN0YXRlLnZlcnNpb24gKyAxXG4gICAgICAgIH0pKTtcbiAgICAgIH0sIFtdKTtcbiAgICAgIC8qIEFueSB0aW1lIHRoZSBjaGlsZHJlbiBfb3JfIHRoZSBzdG9yZSdzIHZlcnNpb24gbnVtYmVyIGNoYW5nZSwgaW5zZXJ0XG4gICAgICB0aGUgc3BlY2lmaWVkIFJlYWN0IGNoaWxkcmVuIGludG8gdGhlIGxpc3Qgb2YgcmF0cy4gKi9cblxuICAgICAgdXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHNldCgoe1xuICAgICAgICAgIGN1cnJlbnRcbiAgICAgICAgfSkgPT4gKHtcbiAgICAgICAgICBjdXJyZW50OiBbLi4uY3VycmVudCwgY2hpbGRyZW5dXG4gICAgICAgIH0pKTtcbiAgICAgICAgcmV0dXJuICgpID0+IHNldCgoe1xuICAgICAgICAgIGN1cnJlbnRcbiAgICAgICAgfSkgPT4gKHtcbiAgICAgICAgICBjdXJyZW50OiBjdXJyZW50LmZpbHRlcihjID0+IGMgIT09IGNoaWxkcmVuKVxuICAgICAgICB9KSk7XG4gICAgICB9LCBbY2hpbGRyZW4sIHZlcnNpb25dKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0sXG4gICAgT3V0OiAoKSA9PiB7XG4gICAgICBjb25zdCBjdXJyZW50ID0gdXNlU3RvcmUoc3RhdGUgPT4gc3RhdGUuY3VycmVudCk7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsIGN1cnJlbnQpO1xuICAgIH1cbiAgfTtcbn1cblxuZXhwb3J0IHsgdHVubmVsIGFzIGRlZmF1bHQgfTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==
//# sourceURL=webpack-internal:///../../../node_modules/tunnel-rat/dist/index.js
`);
              }
            ),
            /***/
            "../../../node_modules/use-callback-ref/dist/es2015/assignRef.js": (
              /*!***********************************************************************!*\
                !*** ../../../node_modules/use-callback-ref/dist/es2015/assignRef.js ***!
                \***********************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "assignRef": () => (/* binding */ assignRef)
/* harmony export */ });
/**
 * Assigns a value for a given ref, no matter of the ref format
 * @param {RefObject} ref - a callback function or ref object
 * @param value - a new value
 *
 * @see https://github.com/theKashey/use-callback-ref#assignref
 * @example
 * const refObject = useRef();
 * const refFn = (ref) => {....}
 *
 * assignRef(refObject, "refValue");
 * assignRef(refFn, "refValue");
 */
function assignRef(ref, value) {
    if (typeof ref === 'function') {
        ref(value);
    }
    else if (ref) {
        ref.current = value;
    }
    return ref;
}
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3VzZS1jYWxsYmFjay1yZWYvZGlzdC9lczIwMTUvYXNzaWduUmVmLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0EsV0FBVyxXQUFXO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3VzZS1jYWxsYmFjay1yZWYvZGlzdC9lczIwMTUvYXNzaWduUmVmLmpzPzJkMjUiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBc3NpZ25zIGEgdmFsdWUgZm9yIGEgZ2l2ZW4gcmVmLCBubyBtYXR0ZXIgb2YgdGhlIHJlZiBmb3JtYXRcbiAqIEBwYXJhbSB7UmVmT2JqZWN0fSByZWYgLSBhIGNhbGxiYWNrIGZ1bmN0aW9uIG9yIHJlZiBvYmplY3RcbiAqIEBwYXJhbSB2YWx1ZSAtIGEgbmV3IHZhbHVlXG4gKlxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vdGhlS2FzaGV5L3VzZS1jYWxsYmFjay1yZWYjYXNzaWducmVmXG4gKiBAZXhhbXBsZVxuICogY29uc3QgcmVmT2JqZWN0ID0gdXNlUmVmKCk7XG4gKiBjb25zdCByZWZGbiA9IChyZWYpID0+IHsuLi4ufVxuICpcbiAqIGFzc2lnblJlZihyZWZPYmplY3QsIFwicmVmVmFsdWVcIik7XG4gKiBhc3NpZ25SZWYocmVmRm4sIFwicmVmVmFsdWVcIik7XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NpZ25SZWYocmVmLCB2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgcmVmID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJlZih2YWx1ZSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHJlZikge1xuICAgICAgICByZWYuY3VycmVudCA9IHZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gcmVmO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9
//# sourceURL=webpack-internal:///../../../node_modules/use-callback-ref/dist/es2015/assignRef.js
`);
              }
            ),
            /***/
            "../../../node_modules/use-callback-ref/dist/es2015/useMergeRef.js": (
              /*!*************************************************************************!*\
                !*** ../../../node_modules/use-callback-ref/dist/es2015/useMergeRef.js ***!
                \*************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "useMergeRefs": () => (/* binding */ useMergeRefs)\n/* harmony export */ });\n/* harmony import */ var _assignRef__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./assignRef */ "../../../node_modules/use-callback-ref/dist/es2015/assignRef.js");\n/* harmony import */ var _useRef__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./useRef */ "../../../node_modules/use-callback-ref/dist/es2015/useRef.js");\n\n\n/**\n * Merges two or more refs together providing a single interface to set their value\n * @param {RefObject|Ref} refs\n * @returns {MutableRefObject} - a new ref, which translates all changes to {refs}\n *\n * @see {@link mergeRefs} a version without buit-in memoization\n * @see https://github.com/theKashey/use-callback-ref#usemergerefs\n * @example\n * const Component = React.forwardRef((props, ref) => {\n *   const ownRef = useRef();\n *   const domRef = useMergeRefs([ref, ownRef]); // \u{1F448} merge together\n *   return <div ref={domRef}>...</div>\n * }\n */\nfunction useMergeRefs(refs, defaultValue) {\n    return (0,_useRef__WEBPACK_IMPORTED_MODULE_0__.useCallbackRef)(defaultValue || null, function (newValue) { return refs.forEach(function (ref) { return (0,_assignRef__WEBPACK_IMPORTED_MODULE_1__.assignRef)(ref, newValue); }); });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3VzZS1jYWxsYmFjay1yZWYvZGlzdC9lczIwMTUvdXNlTWVyZ2VSZWYuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQXdDO0FBQ0U7QUFDMUM7QUFDQTtBQUNBLFdBQVcsZUFBZTtBQUMxQixhQUFhLGtCQUFrQiw4Q0FBOEM7QUFDN0U7QUFDQSxTQUFTLGlCQUFpQjtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlEQUFpRDtBQUNqRCxzQkFBc0IsT0FBTztBQUM3QjtBQUNBO0FBQ087QUFDUCxXQUFXLHVEQUFjLDZDQUE2QyxxQ0FBcUMsT0FBTyxxREFBUyxrQkFBa0IsSUFBSTtBQUNqSiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdXNlLWNhbGxiYWNrLXJlZi9kaXN0L2VzMjAxNS91c2VNZXJnZVJlZi5qcz85YzlmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFzc2lnblJlZiB9IGZyb20gJy4vYXNzaWduUmVmJztcbmltcG9ydCB7IHVzZUNhbGxiYWNrUmVmIH0gZnJvbSAnLi91c2VSZWYnO1xuLyoqXG4gKiBNZXJnZXMgdHdvIG9yIG1vcmUgcmVmcyB0b2dldGhlciBwcm92aWRpbmcgYSBzaW5nbGUgaW50ZXJmYWNlIHRvIHNldCB0aGVpciB2YWx1ZVxuICogQHBhcmFtIHtSZWZPYmplY3R8UmVmfSByZWZzXG4gKiBAcmV0dXJucyB7TXV0YWJsZVJlZk9iamVjdH0gLSBhIG5ldyByZWYsIHdoaWNoIHRyYW5zbGF0ZXMgYWxsIGNoYW5nZXMgdG8ge3JlZnN9XG4gKlxuICogQHNlZSB7QGxpbmsgbWVyZ2VSZWZzfSBhIHZlcnNpb24gd2l0aG91dCBidWl0LWluIG1lbW9pemF0aW9uXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90aGVLYXNoZXkvdXNlLWNhbGxiYWNrLXJlZiN1c2VtZXJnZXJlZnNcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBDb21wb25lbnQgPSBSZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgcmVmKSA9PiB7XG4gKiAgIGNvbnN0IG93blJlZiA9IHVzZVJlZigpO1xuICogICBjb25zdCBkb21SZWYgPSB1c2VNZXJnZVJlZnMoW3JlZiwgb3duUmVmXSk7IC8vIPCfkYggbWVyZ2UgdG9nZXRoZXJcbiAqICAgcmV0dXJuIDxkaXYgcmVmPXtkb21SZWZ9Pi4uLjwvZGl2PlxuICogfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlTWVyZ2VSZWZzKHJlZnMsIGRlZmF1bHRWYWx1ZSkge1xuICAgIHJldHVybiB1c2VDYWxsYmFja1JlZihkZWZhdWx0VmFsdWUgfHwgbnVsbCwgZnVuY3Rpb24gKG5ld1ZhbHVlKSB7IHJldHVybiByZWZzLmZvckVhY2goZnVuY3Rpb24gKHJlZikgeyByZXR1cm4gYXNzaWduUmVmKHJlZiwgbmV3VmFsdWUpOyB9KTsgfSk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/use-callback-ref/dist/es2015/useMergeRef.js\n');
              }
            ),
            /***/
            "../../../node_modules/use-callback-ref/dist/es2015/useRef.js": (
              /*!********************************************************************!*\
                !*** ../../../node_modules/use-callback-ref/dist/es2015/useRef.js ***!
                \********************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "useCallbackRef": () => (/* binding */ useCallbackRef)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);

/**
 * creates a MutableRef with ref change callback
 * @param initialValue - initial ref value
 * @param {Function} callback - a callback to run when value changes
 *
 * @example
 * const ref = useCallbackRef(0, (newValue, oldValue) => console.log(oldValue, '->', newValue);
 * ref.current = 1;
 * // prints 0 -> 1
 *
 * @see https://reactjs.org/docs/hooks-reference.html#useref
 * @see https://github.com/theKashey/use-callback-ref#usecallbackref---to-replace-reactuseref
 * @returns {MutableRefObject}
 */
function useCallbackRef(initialValue, callback) {
    var ref = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(function () { return ({
        // value
        value: initialValue,
        // last callback
        callback: callback,
        // "memoized" public interface
        facade: {
            get current() {
                return ref.value;
            },
            set current(value) {
                var last = ref.value;
                if (last !== value) {
                    ref.value = value;
                    ref.callback(value, last);
                }
            },
        },
    }); })[0];
    // update callback
    ref.callback = callback;
    return ref.facade;
}
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3VzZS1jYWxsYmFjay1yZWYvZGlzdC9lczIwMTUvdXNlUmVmLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxXQUFXLFVBQVU7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNPO0FBQ1AsY0FBYywrQ0FBUSxlQUFlO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFNBQVM7QUFDVCxLQUFLLElBQUk7QUFDVDtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdXNlLWNhbGxiYWNrLXJlZi9kaXN0L2VzMjAxNS91c2VSZWYuanM/NWJkNSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0Jztcbi8qKlxuICogY3JlYXRlcyBhIE11dGFibGVSZWYgd2l0aCByZWYgY2hhbmdlIGNhbGxiYWNrXG4gKiBAcGFyYW0gaW5pdGlhbFZhbHVlIC0gaW5pdGlhbCByZWYgdmFsdWVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIC0gYSBjYWxsYmFjayB0byBydW4gd2hlbiB2YWx1ZSBjaGFuZ2VzXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHJlZiA9IHVzZUNhbGxiYWNrUmVmKDAsIChuZXdWYWx1ZSwgb2xkVmFsdWUpID0+IGNvbnNvbGUubG9nKG9sZFZhbHVlLCAnLT4nLCBuZXdWYWx1ZSk7XG4gKiByZWYuY3VycmVudCA9IDE7XG4gKiAvLyBwcmludHMgMCAtPiAxXG4gKlxuICogQHNlZSBodHRwczovL3JlYWN0anMub3JnL2RvY3MvaG9va3MtcmVmZXJlbmNlLmh0bWwjdXNlcmVmXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90aGVLYXNoZXkvdXNlLWNhbGxiYWNrLXJlZiN1c2VjYWxsYmFja3JlZi0tLXRvLXJlcGxhY2UtcmVhY3R1c2VyZWZcbiAqIEByZXR1cm5zIHtNdXRhYmxlUmVmT2JqZWN0fVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQ2FsbGJhY2tSZWYoaW5pdGlhbFZhbHVlLCBjYWxsYmFjaykge1xuICAgIHZhciByZWYgPSB1c2VTdGF0ZShmdW5jdGlvbiAoKSB7IHJldHVybiAoe1xuICAgICAgICAvLyB2YWx1ZVxuICAgICAgICB2YWx1ZTogaW5pdGlhbFZhbHVlLFxuICAgICAgICAvLyBsYXN0IGNhbGxiYWNrXG4gICAgICAgIGNhbGxiYWNrOiBjYWxsYmFjayxcbiAgICAgICAgLy8gXCJtZW1vaXplZFwiIHB1YmxpYyBpbnRlcmZhY2VcbiAgICAgICAgZmFjYWRlOiB7XG4gICAgICAgICAgICBnZXQgY3VycmVudCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVmLnZhbHVlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldCBjdXJyZW50KHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGxhc3QgPSByZWYudmFsdWU7XG4gICAgICAgICAgICAgICAgaWYgKGxhc3QgIT09IHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlZi52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICByZWYuY2FsbGJhY2sodmFsdWUsIGxhc3QpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgfSk7IH0pWzBdO1xuICAgIC8vIHVwZGF0ZSBjYWxsYmFja1xuICAgIHJlZi5jYWxsYmFjayA9IGNhbGxiYWNrO1xuICAgIHJldHVybiByZWYuZmFjYWRlO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9
//# sourceURL=webpack-internal:///../../../node_modules/use-callback-ref/dist/es2015/useRef.js
`);
              }
            ),
            /***/
            "../../../node_modules/use-sidecar/dist/es2015/exports.js": (
              /*!****************************************************************!*\
                !*** ../../../node_modules/use-sidecar/dist/es2015/exports.js ***!
                \****************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "exportSidecar": () => (/* binding */ exportSidecar)
/* harmony export */ });
/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! tslib */ "../../../node_modules/tslib/tslib.es6.js");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);


var SideCar = function (_a) {
    var sideCar = _a.sideCar, rest = (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__rest)(_a, ["sideCar"]);
    if (!sideCar) {
        throw new Error('Sidecar: please provide \`sideCar\` property to import the right car');
    }
    var Target = sideCar.read();
    if (!Target) {
        throw new Error('Sidecar medium not found');
    }
    return react__WEBPACK_IMPORTED_MODULE_0__.createElement(Target, (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__assign)({}, rest));
};
SideCar.isSideCarExport = true;
function exportSidecar(medium, exported) {
    medium.useMedium(exported);
    return SideCar;
}
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3VzZS1zaWRlY2FyL2Rpc3QvZXMyMDE1L2V4cG9ydHMuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUF5QztBQUNWO0FBQy9CO0FBQ0EscUNBQXFDLDZDQUFNO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxnREFBbUIsU0FBUywrQ0FBUSxHQUFHO0FBQ2xEO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdXNlLXNpZGVjYXIvZGlzdC9lczIwMTUvZXhwb3J0cy5qcz9kYzMxIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduLCBfX3Jlc3QgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbnZhciBTaWRlQ2FyID0gZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIHNpZGVDYXIgPSBfYS5zaWRlQ2FyLCByZXN0ID0gX19yZXN0KF9hLCBbXCJzaWRlQ2FyXCJdKTtcbiAgICBpZiAoIXNpZGVDYXIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdTaWRlY2FyOiBwbGVhc2UgcHJvdmlkZSBgc2lkZUNhcmAgcHJvcGVydHkgdG8gaW1wb3J0IHRoZSByaWdodCBjYXInKTtcbiAgICB9XG4gICAgdmFyIFRhcmdldCA9IHNpZGVDYXIucmVhZCgpO1xuICAgIGlmICghVGFyZ2V0KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignU2lkZWNhciBtZWRpdW0gbm90IGZvdW5kJyk7XG4gICAgfVxuICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFRhcmdldCwgX19hc3NpZ24oe30sIHJlc3QpKTtcbn07XG5TaWRlQ2FyLmlzU2lkZUNhckV4cG9ydCA9IHRydWU7XG5leHBvcnQgZnVuY3Rpb24gZXhwb3J0U2lkZWNhcihtZWRpdW0sIGV4cG9ydGVkKSB7XG4gICAgbWVkaXVtLnVzZU1lZGl1bShleHBvcnRlZCk7XG4gICAgcmV0dXJuIFNpZGVDYXI7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=
//# sourceURL=webpack-internal:///../../../node_modules/use-sidecar/dist/es2015/exports.js
`);
              }
            ),
            /***/
            "../../../node_modules/use-sidecar/dist/es2015/medium.js": (
              /*!***************************************************************!*\
                !*** ../../../node_modules/use-sidecar/dist/es2015/medium.js ***!
                \***************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "createMedium": () => (/* binding */ createMedium),\n/* harmony export */   "createSidecarMedium": () => (/* binding */ createSidecarMedium)\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../../node_modules/tslib/tslib.es6.js");\n\nfunction ItoI(a) {\n    return a;\n}\nfunction innerCreateMedium(defaults, middleware) {\n    if (middleware === void 0) { middleware = ItoI; }\n    var buffer = [];\n    var assigned = false;\n    var medium = {\n        read: function () {\n            if (assigned) {\n                throw new Error(\'Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.\');\n            }\n            if (buffer.length) {\n                return buffer[buffer.length - 1];\n            }\n            return defaults;\n        },\n        useMedium: function (data) {\n            var item = middleware(data, assigned);\n            buffer.push(item);\n            return function () {\n                buffer = buffer.filter(function (x) { return x !== item; });\n            };\n        },\n        assignSyncMedium: function (cb) {\n            assigned = true;\n            while (buffer.length) {\n                var cbs = buffer;\n                buffer = [];\n                cbs.forEach(cb);\n            }\n            buffer = {\n                push: function (x) { return cb(x); },\n                filter: function () { return buffer; },\n            };\n        },\n        assignMedium: function (cb) {\n            assigned = true;\n            var pendingQueue = [];\n            if (buffer.length) {\n                var cbs = buffer;\n                buffer = [];\n                cbs.forEach(cb);\n                pendingQueue = buffer;\n            }\n            var executeQueue = function () {\n                var cbs = pendingQueue;\n                pendingQueue = [];\n                cbs.forEach(cb);\n            };\n            var cycle = function () { return Promise.resolve().then(executeQueue); };\n            cycle();\n            buffer = {\n                push: function (x) {\n                    pendingQueue.push(x);\n                    cycle();\n                },\n                filter: function (filter) {\n                    pendingQueue = pendingQueue.filter(filter);\n                    return buffer;\n                },\n            };\n        },\n    };\n    return medium;\n}\nfunction createMedium(defaults, middleware) {\n    if (middleware === void 0) { middleware = ItoI; }\n    return innerCreateMedium(defaults, middleware);\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction createSidecarMedium(options) {\n    if (options === void 0) { options = {}; }\n    var medium = innerCreateMedium(null);\n    medium.options = (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__assign)({ async: true, ssr: false }, options);\n    return medium;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4564 characters]\n//# sourceURL=webpack-internal:///../../../node_modules/use-sidecar/dist/es2015/medium.js\n');
              }
            ),
            /***/
            "../../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js": (
              /*!*****************************************************************************************************!*\
                !*** ../../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js ***!
                \*****************************************************************************************************/
              /***/
              (__unused_webpack_module, exports, __webpack_require__) => {
                "use strict";
                eval("/**\n * @license React\n * use-sync-external-store-shim.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nif (true) {\n  (function() {\n\n          'use strict';\n\n/* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart ===\n    'function'\n) {\n  __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());\n}\n          var React = __webpack_require__(/*! react */ \"react\");\n\nvar ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n\nfunction error(format) {\n  {\n    {\n      for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n        args[_key2 - 1] = arguments[_key2];\n      }\n\n      printWarning('error', format, args);\n    }\n  }\n}\n\nfunction printWarning(level, format, args) {\n  // When changing this logic, you might want to also\n  // update consoleWithStackDev.www.js as well.\n  {\n    var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n    var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n    if (stack !== '') {\n      format += '%s';\n      args = args.concat([stack]);\n    } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n    var argsWithFormat = args.map(function (item) {\n      return String(item);\n    }); // Careful: RN currently depends on this prefix\n\n    argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n    // breaks IE9: https://github.com/facebook/react/issues/13610\n    // eslint-disable-next-line react-internal/no-production-logging\n\n    Function.prototype.apply.call(console[level], console, argsWithFormat);\n  }\n}\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x, y) {\n  return x === y && (x !== 0 || 1 / x === 1 / y) || x !== x && y !== y // eslint-disable-line no-self-compare\n  ;\n}\n\nvar objectIs = typeof Object.is === 'function' ? Object.is : is;\n\n// dispatch for CommonJS interop named imports.\n\nvar useState = React.useState,\n    useEffect = React.useEffect,\n    useLayoutEffect = React.useLayoutEffect,\n    useDebugValue = React.useDebugValue;\nvar didWarnOld18Alpha = false;\nvar didWarnUncachedGetSnapshot = false; // Disclaimer: This shim breaks many of the rules of React, and only works\n// because of a very particular set of implementation details and assumptions\n// -- change any one of them and it will break. The most important assumption\n// is that updates are always synchronous, because concurrent rendering is\n// only available in versions of React that also have a built-in\n// useSyncExternalStore API. And we only use this shim when the built-in API\n// does not exist.\n//\n// Do not assume that the clever hacks used by this hook also work in general.\n// The point of this shim is to replace the need for hacks by other libraries.\n\nfunction useSyncExternalStore(subscribe, getSnapshot, // Note: The shim does not use getServerSnapshot, because pre-18 versions of\n// React do not expose a way to check if we're hydrating. So users of the shim\n// will need to track that themselves and return the correct value\n// from `getSnapshot`.\ngetServerSnapshot) {\n  {\n    if (!didWarnOld18Alpha) {\n      if (React.startTransition !== undefined) {\n        didWarnOld18Alpha = true;\n\n        error('You are using an outdated, pre-release alpha of React 18 that ' + 'does not support useSyncExternalStore. The ' + 'use-sync-external-store shim will not work correctly. Upgrade ' + 'to a newer pre-release.');\n      }\n    }\n  } // Read the current snapshot from the store on every render. Again, this\n  // breaks the rules of React, and only works here because of specific\n  // implementation details, most importantly that updates are\n  // always synchronous.\n\n\n  var value = getSnapshot();\n\n  {\n    if (!didWarnUncachedGetSnapshot) {\n      var cachedValue = getSnapshot();\n\n      if (!objectIs(value, cachedValue)) {\n        error('The result of getSnapshot should be cached to avoid an infinite loop');\n\n        didWarnUncachedGetSnapshot = true;\n      }\n    }\n  } // Because updates are synchronous, we don't queue them. Instead we force a\n  // re-render whenever the subscribed state changes by updating an some\n  // arbitrary useState hook. Then, during render, we call getSnapshot to read\n  // the current value.\n  //\n  // Because we don't actually use the state returned by the useState hook, we\n  // can save a bit of memory by storing other stuff in that slot.\n  //\n  // To implement the early bailout, we need to track some things on a mutable\n  // object. Usually, we would put that in a useRef hook, but we can stash it in\n  // our useState hook instead.\n  //\n  // To force a re-render, we call forceUpdate({inst}). That works because the\n  // new object always fails an equality check.\n\n\n  var _useState = useState({\n    inst: {\n      value: value,\n      getSnapshot: getSnapshot\n    }\n  }),\n      inst = _useState[0].inst,\n      forceUpdate = _useState[1]; // Track the latest getSnapshot function with a ref. This needs to be updated\n  // in the layout phase so we can access it during the tearing check that\n  // happens on subscribe.\n\n\n  useLayoutEffect(function () {\n    inst.value = value;\n    inst.getSnapshot = getSnapshot; // Whenever getSnapshot or subscribe changes, we need to check in the\n    // commit phase if there was an interleaved mutation. In concurrent mode\n    // this can happen all the time, but even in synchronous mode, an earlier\n    // effect may have mutated the store.\n\n    if (checkIfSnapshotChanged(inst)) {\n      // Force a re-render.\n      forceUpdate({\n        inst: inst\n      });\n    }\n  }, [subscribe, value, getSnapshot]);\n  useEffect(function () {\n    // Check for changes right before subscribing. Subsequent changes will be\n    // detected in the subscription handler.\n    if (checkIfSnapshotChanged(inst)) {\n      // Force a re-render.\n      forceUpdate({\n        inst: inst\n      });\n    }\n\n    var handleStoreChange = function () {\n      // TODO: Because there is no cross-renderer API for batching updates, it's\n      // up to the consumer of this library to wrap their subscription event\n      // with unstable_batchedUpdates. Should we try to detect when this isn't\n      // the case and print a warning in development?\n      // The store changed. Check if the snapshot changed since the last time we\n      // read from the store.\n      if (checkIfSnapshotChanged(inst)) {\n        // Force a re-render.\n        forceUpdate({\n          inst: inst\n        });\n      }\n    }; // Subscribe to the store and return a clean-up function.\n\n\n    return subscribe(handleStoreChange);\n  }, [subscribe]);\n  useDebugValue(value);\n  return value;\n}\n\nfunction checkIfSnapshotChanged(inst) {\n  var latestGetSnapshot = inst.getSnapshot;\n  var prevValue = inst.value;\n\n  try {\n    var nextValue = latestGetSnapshot();\n    return !objectIs(prevValue, nextValue);\n  } catch (error) {\n    return true;\n  }\n}\n\nfunction useSyncExternalStore$1(subscribe, getSnapshot, getServerSnapshot) {\n  // Note: The shim does not use getServerSnapshot, because pre-18 versions of\n  // React do not expose a way to check if we're hydrating. So users of the shim\n  // will need to track that themselves and return the correct value\n  // from `getSnapshot`.\n  return getSnapshot();\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined');\n\nvar isServerEnvironment = !canUseDOM;\n\nvar shim = isServerEnvironment ? useSyncExternalStore$1 : useSyncExternalStore;\nvar useSyncExternalStore$2 = React.useSyncExternalStore !== undefined ? React.useSyncExternalStore : shim;\n\nexports.useSyncExternalStore = useSyncExternalStore$2;\n          /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop ===\n    'function'\n) {\n  __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());\n}\n        \n  })();\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 13572 characters]\n//# sourceURL=webpack-internal:///../../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js\n");
              }
            ),
            /***/
            "../../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js": (
              /*!*******************************************************************************************************************!*\
                !*** ../../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js ***!
                \*******************************************************************************************************************/
              /***/
              (__unused_webpack_module, exports, __webpack_require__) => {
                "use strict";
                eval(`/**
 * @license React
 * use-sync-external-store-shim/with-selector.development.js
 *
 * Copyright (c) Facebook, Inc. and its affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */



if (true) {
  (function() {

          'use strict';

/* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */
if (
  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&
  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart ===
    'function'
) {
  __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());
}
          var React = __webpack_require__(/*! react */ "react");
var shim = __webpack_require__(/*! use-sync-external-store/shim */ "../../../node_modules/use-sync-external-store/shim/index.js");

/**
 * inlined Object.is polyfill to avoid requiring consumers ship their own
 * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is
 */
function is(x, y) {
  return x === y && (x !== 0 || 1 / x === 1 / y) || x !== x && y !== y // eslint-disable-line no-self-compare
  ;
}

var objectIs = typeof Object.is === 'function' ? Object.is : is;

var useSyncExternalStore = shim.useSyncExternalStore;

// for CommonJS interop.

var useRef = React.useRef,
    useEffect = React.useEffect,
    useMemo = React.useMemo,
    useDebugValue = React.useDebugValue; // Same as useSyncExternalStore, but supports selector and isEqual arguments.

function useSyncExternalStoreWithSelector(subscribe, getSnapshot, getServerSnapshot, selector, isEqual) {
  // Use this to track the rendered snapshot.
  var instRef = useRef(null);
  var inst;

  if (instRef.current === null) {
    inst = {
      hasValue: false,
      value: null
    };
    instRef.current = inst;
  } else {
    inst = instRef.current;
  }

  var _useMemo = useMemo(function () {
    // Track the memoized state using closure variables that are local to this
    // memoized instance of a getSnapshot function. Intentionally not using a
    // useRef hook, because that state would be shared across all concurrent
    // copies of the hook/component.
    var hasMemo = false;
    var memoizedSnapshot;
    var memoizedSelection;

    var memoizedSelector = function (nextSnapshot) {
      if (!hasMemo) {
        // The first time the hook is called, there is no memoized result.
        hasMemo = true;
        memoizedSnapshot = nextSnapshot;

        var _nextSelection = selector(nextSnapshot);

        if (isEqual !== undefined) {
          // Even if the selector has changed, the currently rendered selection
          // may be equal to the new selection. We should attempt to reuse the
          // current value if possible, to preserve downstream memoizations.
          if (inst.hasValue) {
            var currentSelection = inst.value;

            if (isEqual(currentSelection, _nextSelection)) {
              memoizedSelection = currentSelection;
              return currentSelection;
            }
          }
        }

        memoizedSelection = _nextSelection;
        return _nextSelection;
      } // We may be able to reuse the previous invocation's result.


      // We may be able to reuse the previous invocation's result.
      var prevSnapshot = memoizedSnapshot;
      var prevSelection = memoizedSelection;

      if (objectIs(prevSnapshot, nextSnapshot)) {
        // The snapshot is the same as last time. Reuse the previous selection.
        return prevSelection;
      } // The snapshot has changed, so we need to compute a new selection.


      // The snapshot has changed, so we need to compute a new selection.
      var nextSelection = selector(nextSnapshot); // If a custom isEqual function is provided, use that to check if the data
      // has changed. If it hasn't, return the previous selection. That signals
      // to React that the selections are conceptually equal, and we can bail
      // out of rendering.

      // If a custom isEqual function is provided, use that to check if the data
      // has changed. If it hasn't, return the previous selection. That signals
      // to React that the selections are conceptually equal, and we can bail
      // out of rendering.
      if (isEqual !== undefined && isEqual(prevSelection, nextSelection)) {
        return prevSelection;
      }

      memoizedSnapshot = nextSnapshot;
      memoizedSelection = nextSelection;
      return nextSelection;
    }; // Assigning this to a constant so that Flow knows it can't change.


    // Assigning this to a constant so that Flow knows it can't change.
    var maybeGetServerSnapshot = getServerSnapshot === undefined ? null : getServerSnapshot;

    var getSnapshotWithSelector = function () {
      return memoizedSelector(getSnapshot());
    };

    var getServerSnapshotWithSelector = maybeGetServerSnapshot === null ? undefined : function () {
      return memoizedSelector(maybeGetServerSnapshot());
    };
    return [getSnapshotWithSelector, getServerSnapshotWithSelector];
  }, [getSnapshot, getServerSnapshot, selector, isEqual]),
      getSelection = _useMemo[0],
      getServerSelection = _useMemo[1];

  var value = useSyncExternalStore(subscribe, getSelection, getServerSelection);
  useEffect(function () {
    inst.hasValue = true;
    inst.value = value;
  }, [value]);
  useDebugValue(value);
  return value;
}

exports.useSyncExternalStoreWithSelector = useSyncExternalStoreWithSelector;
          /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */
if (
  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&
  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop ===
    'function'
) {
  __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());
}
        
  })();
}
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 9360 characters]
//# sourceURL=webpack-internal:///../../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js
`);
              }
            ),
            /***/
            "../../../node_modules/use-sync-external-store/shim/index.js": (
              /*!*******************************************************************!*\
                !*** ../../../node_modules/use-sync-external-store/shim/index.js ***!
                \*******************************************************************/
              /***/
              (module, __unused_webpack_exports, __webpack_require__) => {
                "use strict";
                eval('\n\nif (false) {} else {\n  module.exports = __webpack_require__(/*! ../cjs/use-sync-external-store-shim.development.js */ "../../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3VzZS1zeW5jLWV4dGVybmFsLXN0b3JlL3NoaW0vaW5kZXguanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWIsSUFBSSxLQUFxQyxFQUFFLEVBRTFDLENBQUM7QUFDRixFQUFFLCtMQUE4RTtBQUNoRiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdXNlLXN5bmMtZXh0ZXJuYWwtc3RvcmUvc2hpbS9pbmRleC5qcz83NmI1Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi9janMvdXNlLXN5bmMtZXh0ZXJuYWwtc3RvcmUtc2hpbS5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi9janMvdXNlLXN5bmMtZXh0ZXJuYWwtc3RvcmUtc2hpbS5kZXZlbG9wbWVudC5qcycpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/use-sync-external-store/shim/index.js\n');
              }
            ),
            /***/
            "../../../node_modules/use-sync-external-store/shim/with-selector.js": (
              /*!***************************************************************************!*\
                !*** ../../../node_modules/use-sync-external-store/shim/with-selector.js ***!
                \***************************************************************************/
              /***/
              (module, __unused_webpack_exports, __webpack_require__) => {
                "use strict";
                eval('\n\nif (false) {} else {\n  module.exports = __webpack_require__(/*! ../cjs/use-sync-external-store-shim/with-selector.development.js */ "../../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3VzZS1zeW5jLWV4dGVybmFsLXN0b3JlL3NoaW0vd2l0aC1zZWxlY3Rvci5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixJQUFJLEtBQXFDLEVBQUUsRUFFMUMsQ0FBQztBQUNGLEVBQUUsMk5BQTRGO0FBQzlGIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy91c2Utc3luYy1leHRlcm5hbC1zdG9yZS9zaGltL3dpdGgtc2VsZWN0b3IuanM/M2M2NiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vY2pzL3VzZS1zeW5jLWV4dGVybmFsLXN0b3JlLXNoaW0vd2l0aC1zZWxlY3Rvci5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi9janMvdXNlLXN5bmMtZXh0ZXJuYWwtc3RvcmUtc2hpbS93aXRoLXNlbGVjdG9yLmRldmVsb3BtZW50LmpzJyk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/use-sync-external-store/shim/with-selector.js\n');
              }
            ),
            /***/
            "../../locales lazy recursive ^\\.\\/.*\\.json$": (
              /*!****************************************************************************************!*\
                !*** ../../locales/ lazy ^\.\/.*\.json$ chunkName: locales/[request] namespace object ***!
                \****************************************************************************************/
              /***/
              (module2, __unused_webpack_exports2, __webpack_require__2) => {
                var map = {
                  "./ar-SA.json": [
                    "../../locales/ar-SA.json",
                    "locales/ar-SA-json"
                  ],
                  "./az-AZ.json": [
                    "../../locales/az-AZ.json",
                    "locales/az-AZ-json"
                  ],
                  "./bg-BG.json": [
                    "../../locales/bg-BG.json",
                    "locales/bg-BG-json"
                  ],
                  "./bn-BD.json": [
                    "../../locales/bn-BD.json",
                    "locales/bn-BD-json"
                  ],
                  "./ca-ES.json": [
                    "../../locales/ca-ES.json",
                    "locales/ca-ES-json"
                  ],
                  "./cs-CZ.json": [
                    "../../locales/cs-CZ.json",
                    "locales/cs-CZ-json"
                  ],
                  "./da-DK.json": [
                    "../../locales/da-DK.json",
                    "locales/da-DK-json"
                  ],
                  "./de-DE.json": [
                    "../../locales/de-DE.json",
                    "locales/de-DE-json"
                  ],
                  "./el-GR.json": [
                    "../../locales/el-GR.json",
                    "locales/el-GR-json"
                  ],
                  "./en.json": [
                    "../../locales/en.json"
                  ],
                  "./es-ES.json": [
                    "../../locales/es-ES.json",
                    "locales/es-ES-json"
                  ],
                  "./eu-ES.json": [
                    "../../locales/eu-ES.json",
                    "locales/eu-ES-json"
                  ],
                  "./fa-IR.json": [
                    "../../locales/fa-IR.json",
                    "locales/fa-IR-json"
                  ],
                  "./fi-FI.json": [
                    "../../locales/fi-FI.json",
                    "locales/fi-FI-json"
                  ],
                  "./fr-FR.json": [
                    "../../locales/fr-FR.json",
                    "locales/fr-FR-json"
                  ],
                  "./gl-ES.json": [
                    "../../locales/gl-ES.json",
                    "locales/gl-ES-json"
                  ],
                  "./he-IL.json": [
                    "../../locales/he-IL.json",
                    "locales/he-IL-json"
                  ],
                  "./hi-IN.json": [
                    "../../locales/hi-IN.json",
                    "locales/hi-IN-json"
                  ],
                  "./hu-HU.json": [
                    "../../locales/hu-HU.json",
                    "locales/hu-HU-json"
                  ],
                  "./id-ID.json": [
                    "../../locales/id-ID.json",
                    "locales/id-ID-json"
                  ],
                  "./it-IT.json": [
                    "../../locales/it-IT.json",
                    "locales/it-IT-json"
                  ],
                  "./ja-JP.json": [
                    "../../locales/ja-JP.json",
                    "locales/ja-JP-json"
                  ],
                  "./kaa.json": [
                    "../../locales/kaa.json",
                    "locales/kaa-json"
                  ],
                  "./kab-KAB.json": [
                    "../../locales/kab-KAB.json",
                    "locales/kab-KAB-json"
                  ],
                  "./kk-KZ.json": [
                    "../../locales/kk-KZ.json",
                    "locales/kk-KZ-json"
                  ],
                  "./km-KH.json": [
                    "../../locales/km-KH.json",
                    "locales/km-KH-json"
                  ],
                  "./ko-KR.json": [
                    "../../locales/ko-KR.json",
                    "locales/ko-KR-json"
                  ],
                  "./ku-TR.json": [
                    "../../locales/ku-TR.json",
                    "locales/ku-TR-json"
                  ],
                  "./lt-LT.json": [
                    "../../locales/lt-LT.json",
                    "locales/lt-LT-json"
                  ],
                  "./lv-LV.json": [
                    "../../locales/lv-LV.json",
                    "locales/lv-LV-json"
                  ],
                  "./mr-IN.json": [
                    "../../locales/mr-IN.json",
                    "locales/mr-IN-json"
                  ],
                  "./my-MM.json": [
                    "../../locales/my-MM.json",
                    "locales/my-MM-json"
                  ],
                  "./nb-NO.json": [
                    "../../locales/nb-NO.json",
                    "locales/nb-NO-json"
                  ],
                  "./nl-NL.json": [
                    "../../locales/nl-NL.json",
                    "locales/nl-NL-json"
                  ],
                  "./nn-NO.json": [
                    "../../locales/nn-NO.json",
                    "locales/nn-NO-json"
                  ],
                  "./oc-FR.json": [
                    "../../locales/oc-FR.json",
                    "locales/oc-FR-json"
                  ],
                  "./pa-IN.json": [
                    "../../locales/pa-IN.json",
                    "locales/pa-IN-json"
                  ],
                  "./percentages.json": [
                    "../../locales/percentages.json"
                  ],
                  "./pl-PL.json": [
                    "../../locales/pl-PL.json",
                    "locales/pl-PL-json"
                  ],
                  "./pt-BR.json": [
                    "../../locales/pt-BR.json",
                    "locales/pt-BR-json"
                  ],
                  "./pt-PT.json": [
                    "../../locales/pt-PT.json",
                    "locales/pt-PT-json"
                  ],
                  "./ro-RO.json": [
                    "../../locales/ro-RO.json",
                    "locales/ro-RO-json"
                  ],
                  "./ru-RU.json": [
                    "../../locales/ru-RU.json",
                    "locales/ru-RU-json"
                  ],
                  "./si-LK.json": [
                    "../../locales/si-LK.json",
                    "locales/si-LK-json"
                  ],
                  "./sk-SK.json": [
                    "../../locales/sk-SK.json",
                    "locales/sk-SK-json"
                  ],
                  "./sl-SI.json": [
                    "../../locales/sl-SI.json",
                    "locales/sl-SI-json"
                  ],
                  "./sv-SE.json": [
                    "../../locales/sv-SE.json",
                    "locales/sv-SE-json"
                  ],
                  "./ta-IN.json": [
                    "../../locales/ta-IN.json",
                    "locales/ta-IN-json"
                  ],
                  "./th-TH.json": [
                    "../../locales/th-TH.json",
                    "locales/th-TH-json"
                  ],
                  "./tr-TR.json": [
                    "../../locales/tr-TR.json",
                    "locales/tr-TR-json"
                  ],
                  "./uk-UA.json": [
                    "../../locales/uk-UA.json",
                    "locales/uk-UA-json"
                  ],
                  "./vi-VN.json": [
                    "../../locales/vi-VN.json",
                    "locales/vi-VN-json"
                  ],
                  "./zh-CN.json": [
                    "../../locales/zh-CN.json",
                    "locales/zh-CN-json"
                  ],
                  "./zh-HK.json": [
                    "../../locales/zh-HK.json",
                    "locales/zh-HK-json"
                  ],
                  "./zh-TW.json": [
                    "../../locales/zh-TW.json",
                    "locales/zh-TW-json"
                  ]
                };
                function webpackAsyncContext(req) {
                  if (!__webpack_require__2.o(map, req)) {
                    return Promise.resolve().then(() => {
                      var e = new Error("Cannot find module '" + req + "'");
                      e.code = "MODULE_NOT_FOUND";
                      throw e;
                    });
                  }
                  var ids = map[req], id = ids[0];
                  return Promise.all(ids.slice(1).map(__webpack_require__2.e)).then(() => {
                    return __webpack_require__2.t(id, 3 | 16);
                  });
                }
                webpackAsyncContext.keys = () => Object.keys(map);
                webpackAsyncContext.id = "../../locales lazy recursive ^\\.\\/.*\\.json$";
                module2.exports = webpackAsyncContext;
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../../public/fonts.css": (
              /*!************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../../public/fonts.css ***!
                \************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _src_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../src/packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _src_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_src_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _src_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _src_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_src_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _src_packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../src/packages/excalidraw/node_modules/css-loader/dist/runtime/getUrl.js */ "./node_modules/css-loader/dist/runtime/getUrl.js");\n/* harmony import */ var _src_packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_src_packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__);\n// Imports\n\n\n\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(/* asset import */ __webpack_require__(/*! Virgil.woff2 */ "../../../public/Virgil.woff2"), __webpack_require__.b);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(/* asset import */ __webpack_require__(/*! Cascadia.woff2 */ "../../../public/Cascadia.woff2"), __webpack_require__.b);\nvar ___CSS_LOADER_URL_IMPORT_2___ = new URL(/* asset import */ __webpack_require__(/*! Assistant-Regular.woff2 */ "../../../public/Assistant-Regular.woff2"), __webpack_require__.b);\nvar ___CSS_LOADER_URL_IMPORT_3___ = new URL(/* asset import */ __webpack_require__(/*! Assistant-Medium.woff2 */ "../../../public/Assistant-Medium.woff2"), __webpack_require__.b);\nvar ___CSS_LOADER_URL_IMPORT_4___ = new URL(/* asset import */ __webpack_require__(/*! Assistant-SemiBold.woff2 */ "../../../public/Assistant-SemiBold.woff2"), __webpack_require__.b);\nvar ___CSS_LOADER_URL_IMPORT_5___ = new URL(/* asset import */ __webpack_require__(/*! Assistant-Bold.woff2 */ "../../../public/Assistant-Bold.woff2"), __webpack_require__.b);\nvar ___CSS_LOADER_EXPORT___ = _src_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_src_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = _src_packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = _src_packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = _src_packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_2___);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = _src_packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_3___);\nvar ___CSS_LOADER_URL_REPLACEMENT_4___ = _src_packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_4___);\nvar ___CSS_LOADER_URL_REPLACEMENT_5___ = _src_packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_5___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, "/* http://www.eaglefonts.com/fg-virgil-ttf-131249.htm */\\n@font-face {\\n  font-family: \\"Virgil\\";\\n  src: url(" + ___CSS_LOADER_URL_REPLACEMENT_0___ + ");\\n  font-display: swap;\\n}\\n/* https://github.com/microsoft/cascadia-code */\\n@font-face {\\n  font-family: \\"Cascadia\\";\\n  src: url(" + ___CSS_LOADER_URL_REPLACEMENT_1___ + ");\\n  font-display: swap;\\n}\\n@font-face {\\n  font-family: \\"Assistant\\";\\n  src: url(" + ___CSS_LOADER_URL_REPLACEMENT_2___ + ");\\n  font-display: swap;\\n  font-weight: 400;\\n}\\n@font-face {\\n  font-family: \\"Assistant\\";\\n  src: url(" + ___CSS_LOADER_URL_REPLACEMENT_3___ + ");\\n  font-display: swap;\\n  font-weight: 500;\\n}\\n@font-face {\\n  font-family: \\"Assistant\\";\\n  src: url(" + ___CSS_LOADER_URL_REPLACEMENT_4___ + ");\\n  font-display: swap;\\n  font-weight: 600;\\n}\\n@font-face {\\n  font-family: \\"Assistant\\";\\n  src: url(" + ___CSS_LOADER_URL_REPLACEMENT_5___ + ");\\n  font-display: swap;\\n  font-weight: 700;\\n}", "",{"version":3,"sources":["webpack://./../../../public/fonts.css"],"names":[],"mappings":"AAAA,uDAAA;AACA;EACE,qBAAA;EACA,4CAAA;EACA,kBAAA;AACF;AAEA,+CAAA;AACA;EACE,uBAAA;EACA,4CAAA;EACA,kBAAA;AAAF;AAGA;EACE,wBAAA;EACA,4CAAA;EACA,kBAAA;EACA,gBAAA;AADF;AAGA;EACE,wBAAA;EACA,4CAAA;EACA,kBAAA;EACA,gBAAA;AADF;AAGA;EACE,wBAAA;EACA,4CAAA;EACA,kBAAA;EACA,gBAAA;AADF;AAGA;EACE,wBAAA;EACA,4CAAA;EACA,kBAAA;EACA,gBAAA;AADF","sourcesContent":["/* http://www.eaglefonts.com/fg-virgil-ttf-131249.htm */\\n@font-face {\\n  font-family: \\"Virgil\\";\\n  src: url(\\"Virgil.woff2\\");\\n  font-display: swap;\\n}\\n\\n/* https://github.com/microsoft/cascadia-code */\\n@font-face {\\n  font-family: \\"Cascadia\\";\\n  src: url(\\"Cascadia.woff2\\");\\n  font-display: swap;\\n}\\n\\n@font-face {\\n  font-family: \\"Assistant\\";\\n  src: url(\\"Assistant-Regular.woff2\\");\\n  font-display: swap;\\n  font-weight: 400;\\n}\\n@font-face {\\n  font-family: \\"Assistant\\";\\n  src: url(\\"Assistant-Medium.woff2\\");\\n  font-display: swap;\\n  font-weight: 500;\\n}\\n@font-face {\\n  font-family: \\"Assistant\\";\\n  src: url(\\"Assistant-SemiBold.woff2\\");\\n  font-display: swap;\\n  font-weight: 600;\\n}\\n@font-face {\\n  font-family: \\"Assistant\\";\\n  src: url(\\"Assistant-Bold.woff2\\");\\n  font-display: swap;\\n  font-weight: 700;\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 7320 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../../public/fonts.css\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Actions.scss": (
              /*!****************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Actions.scss ***!
                \****************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ".zoom-actions,\\n.undo-redo-buttons {\\n  background-color: var(--island-bg-color);\\n  border-radius: var(--border-radius-lg);\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n}\\n\\n.zoom-button,\\n.undo-redo-buttons button {\\n  border-radius: 0 !important;\\n  background-color: var(--color-surface-low) !important;\\n  font-size: 0.875rem !important;\\n  width: var(--lg-button-size);\\n  height: var(--lg-button-size);\\n}\\n.zoom-button svg,\\n.undo-redo-buttons button svg {\\n  width: var(--lg-icon-size) !important;\\n  height: var(--lg-icon-size) !important;\\n}\\n.zoom-button .ToolIcon__icon,\\n.undo-redo-buttons button .ToolIcon__icon {\\n  width: 100%;\\n  height: 100%;\\n}\\n\\n.reset-zoom-button {\\n  border-left: 0 !important;\\n  border-right: 0 !important;\\n  padding: 0 0.625rem !important;\\n  width: 3.75rem !important;\\n  justify-content: center;\\n  color: var(--text-primary-color);\\n}\\n\\n.zoom-out-button {\\n  border-top-left-radius: var(--border-radius-lg) !important;\\n  border-bottom-left-radius: var(--border-radius-lg) !important;\\n}\\n:root[dir=rtl] .zoom-out-button {\\n  transform: scaleX(-1);\\n}\\n.zoom-out-button .ToolIcon__icon {\\n  border-top-right-radius: 0 !important;\\n  border-bottom-right-radius: 0 !important;\\n}\\n\\n.zoom-in-button {\\n  border-top-right-radius: var(--border-radius-lg) !important;\\n  border-bottom-right-radius: var(--border-radius-lg) !important;\\n}\\n:root[dir=rtl] .zoom-in-button {\\n  transform: scaleX(-1);\\n}\\n.zoom-in-button .ToolIcon__icon {\\n  border-top-left-radius: 0 !important;\\n  border-bottom-left-radius: 0 !important;\\n}\\n\\n.undo-redo-buttons .undo-button-container button {\\n  border-top-left-radius: var(--border-radius-lg) !important;\\n  border-bottom-left-radius: var(--border-radius-lg) !important;\\n  border-right: 0 !important;\\n}\\n:root[dir=rtl] .undo-redo-buttons .undo-button-container button {\\n  transform: scaleX(-1);\\n}\\n.undo-redo-buttons .undo-button-container button .ToolIcon__icon {\\n  border-top-right-radius: 0 !important;\\n  border-bottom-right-radius: 0 !important;\\n}\\n.undo-redo-buttons .redo-button-container button {\\n  border-top-right-radius: var(--border-radius-lg) !important;\\n  border-bottom-right-radius: var(--border-radius-lg) !important;\\n}\\n:root[dir=rtl] .undo-redo-buttons .redo-button-container button {\\n  transform: scaleX(-1);\\n}\\n.undo-redo-buttons .redo-button-container button .ToolIcon__icon {\\n  border-top-left-radius: 0 !important;\\n  border-bottom-left-radius: 0 !important;\\n}", "",{"version":3,"sources":["webpack://./../../components/Actions.scss"],"names":[],"mappings":"AAAA;;EAEE,wCAAA;EACA,sCAAA;EACA,iDAAA;AACF;;AAEA;;EAEE,2BAAA;EACA,qDAAA;EACA,8BAAA;EACA,4BAAA;EACA,6BAAA;AACF;AAAE;;EACE,qCAAA;EACA,sCAAA;AAGJ;AAAE;;EACE,WAAA;EACA,YAAA;AAGJ;;AACA;EACE,yBAAA;EACA,0BAAA;EACA,8BAAA;EACA,yBAAA;EACA,uBAAA;EACA,gCAAA;AAEF;;AACA;EACE,0DAAA;EACA,6DAAA;AAEF;AAAE;EACE,qBAAA;AAEJ;AACE;EACE,qCAAA;EACA,wCAAA;AACJ;;AAGA;EACE,2DAAA;EACA,8DAAA;AAAF;AAEE;EACE,qBAAA;AAAJ;AAGE;EACE,oCAAA;EACA,uCAAA;AADJ;;AAME;EACE,0DAAA;EACA,6DAAA;EACA,0BAAA;AAHJ;AAKI;EACE,qBAAA;AAHN;AAMI;EACE,qCAAA;EACA,wCAAA;AAJN;AAQE;EACE,2DAAA;EACA,8DAAA;AANJ;AAQI;EACE,qBAAA;AANN;AASI;EACE,oCAAA;EACA,uCAAA;AAPN","sourcesContent":[".zoom-actions,\\n.undo-redo-buttons {\\n  background-color: var(--island-bg-color);\\n  border-radius: var(--border-radius-lg);\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n}\\n\\n.zoom-button,\\n.undo-redo-buttons button {\\n  border-radius: 0 !important;\\n  background-color: var(--color-surface-low) !important;\\n  font-size: 0.875rem !important;\\n  width: var(--lg-button-size);\\n  height: var(--lg-button-size);\\n  svg {\\n    width: var(--lg-icon-size) !important;\\n    height: var(--lg-icon-size) !important;\\n  }\\n\\n  .ToolIcon__icon {\\n    width: 100%;\\n    height: 100%;\\n  }\\n}\\n\\n.reset-zoom-button {\\n  border-left: 0 !important;\\n  border-right: 0 !important;\\n  padding: 0 0.625rem !important;\\n  width: 3.75rem !important;\\n  justify-content: center;\\n  color: var(--text-primary-color);\\n}\\n\\n.zoom-out-button {\\n  border-top-left-radius: var(--border-radius-lg) !important;\\n  border-bottom-left-radius: var(--border-radius-lg) !important;\\n\\n  :root[dir=\\"rtl\\"] & {\\n    transform: scaleX(-1);\\n  }\\n\\n  .ToolIcon__icon {\\n    border-top-right-radius: 0 !important;\\n    border-bottom-right-radius: 0 !important;\\n  }\\n}\\n\\n.zoom-in-button {\\n  border-top-right-radius: var(--border-radius-lg) !important;\\n  border-bottom-right-radius: var(--border-radius-lg) !important;\\n\\n  :root[dir=\\"rtl\\"] & {\\n    transform: scaleX(-1);\\n  }\\n\\n  .ToolIcon__icon {\\n    border-top-left-radius: 0 !important;\\n    border-bottom-left-radius: 0 !important;\\n  }\\n}\\n\\n.undo-redo-buttons {\\n  .undo-button-container button {\\n    border-top-left-radius: var(--border-radius-lg) !important;\\n    border-bottom-left-radius: var(--border-radius-lg) !important;\\n    border-right: 0 !important;\\n\\n    :root[dir=\\"rtl\\"] & {\\n      transform: scaleX(-1);\\n    }\\n\\n    .ToolIcon__icon {\\n      border-top-right-radius: 0 !important;\\n      border-bottom-right-radius: 0 !important;\\n    }\\n  }\\n\\n  .redo-button-container button {\\n    border-top-right-radius: var(--border-radius-lg) !important;\\n    border-bottom-right-radius: var(--border-radius-lg) !important;\\n\\n    :root[dir=\\"rtl\\"] & {\\n      transform: scaleX(-1);\\n    }\\n\\n    .ToolIcon__icon {\\n      border-top-left-radius: 0 !important;\\n      border-bottom-left-radius: 0 !important;\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 10588 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Actions.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Avatar.scss": (
              /*!***************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Avatar.scss ***!
                \***************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .Avatar {\\n  width: 1.25rem;\\n  height: 1.25rem;\\n  position: relative;\\n  border-radius: 100%;\\n  outline-offset: 2px;\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  cursor: pointer;\\n  font-size: 0.75rem;\\n  font-weight: 800;\\n  line-height: 1;\\n}\\n.excalidraw .Avatar-img {\\n  width: 100%;\\n  height: 100%;\\n  border-radius: 100%;\\n}\\n.excalidraw .Avatar::before {\\n  content: \\"\\";\\n  position: absolute;\\n  top: -3px;\\n  right: -3px;\\n  bottom: -3px;\\n  left: -3px;\\n  border: 1px solid var(--avatar-border-color);\\n  border-radius: 100%;\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/Avatar.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AAAE;EACE,cAAA;EACA,eAAA;EACA,kBAAA;EACA,mBAAA;EACA,mBAAA;EACA,aAAA;EACA,uBAAA;EACA,mBAAA;EACA,eAAA;EACA,kBAAA;EACA,gBAAA;EACA,cAAA;AAGJ;AADI;EACE,WAAA;EACA,YAAA;EACA,mBAAA;AAGN;AAAI;EACE,WAAA;EACA,kBAAA;EACA,SAAA;EACA,WAAA;EACA,YAAA;EACA,UAAA;EACA,4CAAA;EACA,mBAAA;AAEN","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../css/variables.module\\";\\n\\n.excalidraw {\\n  .Avatar {\\n    width: 1.25rem;\\n    height: 1.25rem;\\n    position: relative;\\n    border-radius: 100%;\\n    outline-offset: 2px;\\n    display: flex;\\n    justify-content: center;\\n    align-items: center;\\n    cursor: pointer;\\n    font-size: 0.75rem;\\n    font-weight: 800;\\n    line-height: 1;\\n\\n    &-img {\\n      width: 100%;\\n      height: 100%;\\n      border-radius: 100%;\\n    }\\n\\n    &::before {\\n      content: \\"\\";\\n      position: absolute;\\n      top: -3px;\\n      right: -3px;\\n      bottom: -3px;\\n      left: -3px;\\n      border: 1px solid var(--avatar-border-color);\\n      border-radius: 100%;\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 9868 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Avatar.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Button.scss": (
              /*!***************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Button.scss ***!
                \***************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");
/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");
/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/getUrl.js */ "./node_modules/css-loader/dist/runtime/getUrl.js");
/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__);
// Imports



var ___CSS_LOADER_URL_IMPORT_0___ = new URL(/* asset import */ __webpack_require__(/*! data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="292.4" height="292.4" viewBox="0 0 292 292"><path d="M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z"/></svg> */ "data:image/svg+xml,<svg xmlns=\\"http://www.w3.org/2000/svg\\" width=\\"292.4\\" height=\\"292.4\\" viewBox=\\"0 0 292 292\\"><path d=\\"M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z\\"/></svg>"), __webpack_require__.b);
var ___CSS_LOADER_URL_IMPORT_1___ = new URL(/* asset import */ __webpack_require__(/*! data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="292.4" height="292.4" viewBox="0 0 292 292"><path fill="%23ced4da" d="M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z"/></svg> */ "data:image/svg+xml,<svg xmlns=\\"http://www.w3.org/2000/svg\\" width=\\"292.4\\" height=\\"292.4\\" viewBox=\\"0 0 292 292\\"><path fill=\\"%23ced4da\\" d=\\"M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z\\"/></svg>"), __webpack_require__.b);
var ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
var ___CSS_LOADER_URL_REPLACEMENT_0___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_0___);
var ___CSS_LOADER_URL_REPLACEMENT_1___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_1___);
// Module
___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw {\\n  --theme-filter: none;\\n  --button-destructive-bg-color: #ffe3e3;\\n  --button-destructive-color: #c92a2a;\\n  --button-gray-1: #e9ecef;\\n  --button-gray-2: #ced4da;\\n  --button-gray-3: #adb5bd;\\n  --button-special-active-bg-color: #ebfbee;\\n  --dialog-border-color: var(--color-gray-20);\\n  --dropdown-icon: url(" + ___CSS_LOADER_URL_REPLACEMENT_0___ + ");\\n  --focus-highlight-color: #a5d8ff;\\n  --icon-fill-color: var(--color-on-surface);\\n  --icon-green-fill-color: #2b8a3e;\\n  --default-bg-color: #ffffff;\\n  --input-bg-color: #ffffff;\\n  --input-border-color: #ced4da;\\n  --input-hover-bg-color: #f1f3f5;\\n  --input-label-color: #495057;\\n  --island-bg-color: #ffffff;\\n  --keybinding-color: var(--color-gray-40);\\n  --link-color: #1c7ed6;\\n  --overlay-bg-color: rgba(255, 255, 255, 0.88);\\n  --popup-bg-color: var(--island-bg-color);\\n  --popup-secondary-bg-color: #f1f3f5;\\n  --popup-text-color: #000000;\\n  --popup-text-inverted-color: #ffffff;\\n  --select-highlight-color: #339af0;\\n  --shadow-island: 0px 0px 0.9310142993927002px 0px rgba(0, 0, 0, 0.17),\\n    0px 0px 3.1270833015441895px 0px rgba(0, 0, 0, 0.08),\\n    0px 7px 14px 0px rgba(0, 0, 0, 0.05);\\n  --button-hover-bg: var(--color-surface-high);\\n  --button-active-bg: var(--color-surface-high);\\n  --button-active-border: var(--color-brand-active);\\n  --default-border-color: var(--color-surface-high);\\n  --default-button-size: 2rem;\\n  --default-icon-size: 1rem;\\n  --lg-button-size: 2.25rem;\\n  --lg-icon-size: 1rem;\\n  --editor-container-padding: 1rem;\\n  --scrollbar-thumb: var(--button-gray-2);\\n  --scrollbar-thumb-hover: var(--button-gray-3);\\n  --modal-shadow: 0px 100px 80px rgba(0, 0, 0, 0.07),\\n    0px 41.7776px 33.4221px rgba(0, 0, 0, 0.0503198),\\n    0px 22.3363px 17.869px rgba(0, 0, 0, 0.0417275),\\n    0px 12.5216px 10.0172px rgba(0, 0, 0, 0.035),\\n    0px 6.6501px 5.32008px rgba(0, 0, 0, 0.0282725),\\n    0px 2.76726px 2.21381px rgba(0, 0, 0, 0.0196802);\\n  --avatar-border-color: var(--color-gray-20);\\n  --sidebar-shadow: 0px 100px 80px rgba(0, 0, 0, 0.07),\\n    0px 41.7776px 33.4221px rgba(0, 0, 0, 0.0503198),\\n    0px 22.3363px 17.869px rgba(0, 0, 0, 0.0417275),\\n    0px 12.5216px 10.0172px rgba(0, 0, 0, 0.035),\\n    0px 6.6501px 5.32008px rgba(0, 0, 0, 0.0282725),\\n    0px 2.76726px 2.21381px rgba(0, 0, 0, 0.0196802);\\n  --sidebar-border-color: var(--color-surface-high);\\n  --sidebar-bg-color: var(--island-bg-color);\\n  --library-dropdown-shadow: 0px 15px 6px rgba(0, 0, 0, 0.01),\\n    0px 8px 5px rgba(0, 0, 0, 0.05), 0px 4px 4px rgba(0, 0, 0, 0.09),\\n    0px 1px 2px rgba(0, 0, 0, 0.1), 0px 0px 0px rgba(0, 0, 0, 0.1);\\n  --space-factor: 0.25rem;\\n  --text-primary-color: var(--color-on-surface);\\n  --color-selection: #6965db;\\n  --color-icon-white: #ffffff;\\n  --color-primary: #6965db;\\n  --color-primary-darker: #5b57d1;\\n  --color-primary-darkest: #4a47b1;\\n  --color-primary-light: #e3e2fe;\\n  --color-primary-light-darker: #d7d5ff;\\n  --color-gray-10: #f5f5f5;\\n  --color-gray-20: #ebebeb;\\n  --color-gray-30: #d6d6d6;\\n  --color-gray-40: #b8b8b8;\\n  --color-gray-50: #999999;\\n  --color-gray-60: #7a7a7a;\\n  --color-gray-70: #5c5c5c;\\n  --color-gray-80: #3d3d3d;\\n  --color-gray-85: #242424;\\n  --color-gray-90: #1e1e1e;\\n  --color-gray-100: #121212;\\n  --color-warning: #fceeca;\\n  --color-warning-dark: #f5c354;\\n  --color-warning-darker: #f3ab2c;\\n  --color-warning-darkest: #ec8b14;\\n  --color-text-warning: var(--text-primary-color);\\n  --color-danger: #db6965;\\n  --color-danger-dark: #db6965;\\n  --color-danger-darker: #d65550;\\n  --color-danger-darkest: #d1413c;\\n  --color-danger-text: black;\\n  --color-danger-background: #fff0f0;\\n  --color-danger-icon-background: #ffdad6;\\n  --color-danger-color: #700000;\\n  --color-danger-icon-color: #700000;\\n  --color-warning-background: var(--color-warning);\\n  --color-warning-icon-background: var(--color-warning-dark);\\n  --color-warning-color: var(--text-primary-color);\\n  --color-warning-icon-color: var(--text-primary-color);\\n  --color-muted: var(--color-gray-30);\\n  --color-muted-darker: var(--color-gray-60);\\n  --color-muted-darkest: var(--color-gray-100);\\n  --color-muted-background: var(--color-gray-80);\\n  --color-muted-background-darker: var(--color-gray-100);\\n  --color-promo: #e70078;\\n  --color-success: #268029;\\n  --color-success-lighter: #cafccc;\\n  --color-logo-icon: var(--color-primary);\\n  --color-logo-text: #190064;\\n  --border-radius-md: 0.375rem;\\n  --border-radius-lg: 0.5rem;\\n  --color-surface-high: hsl(244, 100%, 97%);\\n  --color-surface-mid: hsl(240 25% 96%);\\n  --color-surface-low: hsl(240 25% 94%);\\n  --color-surface-lowest: #ffffff;\\n  --color-on-surface: #1b1b1f;\\n  --color-brand-hover: #5753d0;\\n  --color-on-primary-container: #030064;\\n  --color-surface-primary-container: #e0dfff;\\n  --color-brand-active: #4440bf;\\n  --color-border-outline: #767680;\\n  --color-border-outline-variant: #c5c5d0;\\n  --color-surface-primary-container: #e0dfff;\\n}\\n@media screen and (min-device-width: 1921px) {\\n  .excalidraw {\\n    --lg-button-size: 2.5rem;\\n    --lg-icon-size: 1.25rem;\\n    --default-button-size: 2.25rem;\\n    --default-icon-size: 1.25rem;\\n  }\\n}\\n.excalidraw.theme--dark.theme--dark-background-none {\\n  background: none;\\n}\\n.excalidraw.theme--dark {\\n  --theme-filter: invert(93%) hue-rotate(180deg);\\n  --button-destructive-bg-color: #5a0000;\\n  --button-destructive-color: #ffa8a8;\\n  --button-gray-1: #363636;\\n  --button-gray-2: #272727;\\n  --button-gray-3: #222;\\n  --button-special-active-bg-color: #204624;\\n  --dialog-border-color: var(--color-gray-80);\\n  --dropdown-icon: url(" + ___CSS_LOADER_URL_REPLACEMENT_1___ + ");\\n  --focus-highlight-color: #228be6;\\n  --icon-green-fill-color: #69db7c;\\n  --default-bg-color: #121212;\\n  --input-bg-color: #121212;\\n  --input-border-color: #2e2e2e;\\n  --input-hover-bg-color: #181818;\\n  --input-label-color: #e9ecef;\\n  --island-bg-color: #232329;\\n  --keybinding-color: var(--color-gray-60);\\n  --link-color: #4dabf7;\\n  --overlay-bg-color: rgba(52, 58, 64, 0.12);\\n  --popup-secondary-bg-color: #222;\\n  --popup-text-color: #ced4da;\\n  --popup-text-inverted-color: #2c2c2c;\\n  --select-highlight-color: #4dabf7;\\n  --shadow-island: 0px 0px 0.9310142993927002px 0px rgba(0, 0, 0, 0.17),\\n    0px 0px 3.1270833015441895px 0px rgba(0, 0, 0, 0.08),\\n    0px 7px 14px 0px rgba(0, 0, 0, 0.05);\\n  --modal-shadow: 0px 100px 80px rgba(0, 0, 0, 0.07),\\n    0px 41.7776px 33.4221px rgba(0, 0, 0, 0.0503198),\\n    0px 22.3363px 17.869px rgba(0, 0, 0, 0.0417275),\\n    0px 12.5216px 10.0172px rgba(0, 0, 0, 0.035),\\n    0px 6.6501px 5.32008px rgba(0, 0, 0, 0.0282725),\\n    0px 2.76726px 2.21381px rgba(0, 0, 0, 0.0196802);\\n  --avatar-border-color: var(--color-gray-85);\\n  --scrollbar-thumb: #343a40;\\n  --scrollbar-thumb-hover: #495057;\\n  --color-selection: #3530c4;\\n  --color-icon-white: var(--color-gray-90);\\n  --color-primary: #a8a5ff;\\n  --color-primary-darker: #b2aeff;\\n  --color-primary-darkest: #beb9ff;\\n  --color-primary-light: #4f4d6f;\\n  --color-primary-light-darker: #43415e;\\n  --color-text-warning: var(--color-gray-80);\\n  --color-danger: #ffa8a5;\\n  --color-danger-dark: #672120;\\n  --color-danger-darker: #8f2625;\\n  --color-danger-darkest: #ac2b29;\\n  --color-danger-text: #fbcbcc;\\n  --color-danger-background: #fbcbcc;\\n  --color-danger-icon-background: #672120;\\n  --color-danger-color: #261919;\\n  --color-danger-icon-color: #fbcbcc;\\n  --color-warning-background: var(--color-warning);\\n  --color-warning-icon-background: var(--color-warning-dark);\\n  --color-warning-color: var(--color-gray-80);\\n  --color-warning-icon-color: var(--color-gray-80);\\n  --color-muted: var(--color-gray-80);\\n  --color-muted-darker: var(--color-gray-60);\\n  --color-muted-darkest: var(--color-gray-20);\\n  --color-muted-background: var(--color-gray-40);\\n  --color-muted-background-darker: var(--color-gray-20);\\n  --color-promo: #d297ff;\\n  --color-logo-text: #e2dfff;\\n  --color-surface-high: hsl(245, 10%, 21%);\\n  --color-surface-low: hsl(240, 8%, 15%);\\n  --color-surface-mid: hsl(240 6% 10%);\\n  --color-surface-lowest: hsl(0, 0%, 7%);\\n  --color-on-surface: #e3e3e8;\\n  --color-brand-hover: #bbb8ff;\\n  --color-on-primary-container: #e0dfff;\\n  --color-surface-primary-container: #403e6a;\\n  --color-brand-active: #d0ccff;\\n  --color-border-outline: #8e8d9c;\\n  --color-border-outline-variant: #46464f;\\n  --color-surface-primary-container: #403e6a;\\n}\\n\\n.excalidraw .excalidraw-button {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n}\\n.excalidraw .excalidraw-button svg {\\n  width: var(--button-width, var(--lg-icon-size));\\n  height: var(--button-height, var(--lg-icon-size));\\n}\\n.excalidraw .excalidraw-button:hover {\\n  background-color: var(--button-hover-bg, var(--island-bg-color));\\n  border-color: var(--button-hover-border, var(--button-border, var(--default-border-color)));\\n  color: var(--button-hover-color, var(--button-color, var(--text-primary-color, inherit)));\\n}\\n.excalidraw .excalidraw-button:active {\\n  background-color: var(--button-active-bg, var(--island-bg-color));\\n  border-color: var(--button-active-border, var(--color-primary-darkest));\\n}\\n.excalidraw .excalidraw-button.active {\\n  background-color: var(--button-selected-bg, var(--color-surface-primary-container));\\n  border-color: var(--button-selected-border, var(--color-surface-primary-container));\\n}\\n.excalidraw .excalidraw-button.active:hover {\\n  background-color: var(--button-selected-hover-bg, var(--color-surface-primary-container));\\n}\\n.excalidraw .excalidraw-button.active svg {\\n  color: var(--button-color, var(--color-on-primary-container));\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/Button.scss","webpack://./../../css/theme.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;ACAA;EACE,oBAAA;EACA,sCAAA;EACA,mCAAA;EACA,wBAAA;EACA,wBAAA;EACA,wBAAA;EACA,yCAAA;EACA,2CAAA;EACA,wDAAA;EACA,gCAAA;EACA,0CAAA;EACA,gCAAA;EACA,2BAAA;EACA,yBAAA;EACA,6BAAA;EACA,+BAAA;EACA,4BAAA;EACA,0BAAA;EACA,wCAAA;EACA,qBAAA;EACA,6CAAA;EACA,wCAAA;EACA,mCAAA;EACA,2BAAA;EACA,oCAAA;EACA,iCAAA;EACA;;wCAAA;EAIA,4CAAA;EACA,6CAAA;EACA,iDAAA;EACA,iDAAA;EAEA,2BAAA;EACA,yBAAA;EACA,yBAAA;EACA,oBAAA;EACA,gCAAA;EASA,uCAAA;EACA,6CAAA;EAEA;;;;;oDAAA;EAMA,2CAAA;EACA;;;;;oDAAA;EAMA,iDAAA;EACA,0CAAA;EACA;;kEAAA;EAIA,uBAAA;EACA,6CAAA;EAEA,0BAAA;EAEA,2BAAA;EAEA,wBAAA;EACA,+BAAA;EACA,gCAAA;EACA,8BAAA;EACA,qCAAA;EAEA,wBAAA;EACA,wBAAA;EACA,wBAAA;EACA,wBAAA;EACA,wBAAA;EACA,wBAAA;EACA,wBAAA;EACA,wBAAA;EACA,wBAAA;EACA,wBAAA;EACA,yBAAA;EAEA,wBAAA;EACA,6BAAA;EACA,+BAAA;EACA,gCAAA;EACA,+CAAA;EAEA,uBAAA;EACA,4BAAA;EACA,8BAAA;EACA,+BAAA;EACA,0BAAA;EAEA,kCAAA;EACA,uCAAA;EACA,6BAAA;EACA,kCAAA;EAEA,gDAAA;EACA,0DAAA;EACA,gDAAA;EACA,qDAAA;EAEA,mCAAA;EACA,0CAAA;EACA,4CAAA;EACA,8CAAA;EACA,sDAAA;EAEA,sBAAA;EACA,wBAAA;EACA,gCAAA;EAEA,uCAAA;EACA,0BAAA;EAEA,4BAAA;EACA,0BAAA;EAEA,yCAAA;EACA,qCAAA;EACA,qCAAA;EACA,+BAAA;EACA,2BAAA;EACA,4BAAA;EACA,qCAAA;EACA,0CAAA;EACA,6BAAA;EACA,+BAAA;EACA,uCAAA;EACA,0CAAA;ADtBF;ACjFE;EA1CF;IA2CI,wBAAA;IACA,uBAAA;IACA,8BAAA;IACA,4BAAA;EDoFF;AACF;ACiBI;EACE,gBAAA;ADfN;ACmBE;EACE,8CAAA;EACA,sCAAA;EACA,mCAAA;EAEA,wBAAA;EACA,wBAAA;EACA,qBAAA;EACA,yCAAA;EACA,2CAAA;EACA,wDAAA;EACA,gCAAA;EACA,gCAAA;EACA,2BAAA;EACA,yBAAA;EACA,6BAAA;EACA,+BAAA;EACA,4BAAA;EACA,0BAAA;EACA,wCAAA;EACA,qBAAA;EACA,0CAAA;EACA,gCAAA;EACA,2BAAA;EACA,oCAAA;EACA,iCAAA;EACA;;wCAAA;EAIA;;;;;oDAAA;EAMA,2CAAA;EAEA,0BAAA;EACA,gCAAA;EAGA,0BAAA;EAEA,wCAAA;EAEA,wBAAA;EACA,+BAAA;EACA,gCAAA;EACA,8BAAA;EACA,qCAAA;EAEA,0CAAA;EAEA,uBAAA;EACA,4BAAA;EACA,8BAAA;EACA,+BAAA;EACA,4BAAA;EAEA,kCAAA;EACA,uCAAA;EACA,6BAAA;EACA,kCAAA;EAEA,gDAAA;EACA,0DAAA;EACA,2CAAA;EACA,gDAAA;EAEA,mCAAA;EACA,0CAAA;EACA,2CAAA;EACA,8CAAA;EACA,qDAAA;EAEA,sBAAA;EAEA,0BAAA;EAEA,wCAAA;EACA,sCAAA;EACA,oCAAA;EACA,sCAAA;EACA,2BAAA;EACA,4BAAA;EACA,qCAAA;EACA,0CAAA;EACA,6BAAA;EACA,+BAAA;EACA,uCAAA;EACA,0CAAA;ADhCJ;;AApNE;EDqDA,aAAA;EACA,uBAAA;EACA,mBAAA;EACA,iBAAA;EACA,sDAAA;EACA,wDAAA;EACA,sBAAA;EACA,iBAAA;EACA,mBAAA;EACA,+DAAA;EACA,sCAAA;EACA,eAAA;EACA,0DAAA;EACA,mDAAA;ACmKF;ADjKE;EACE,+CAAA;EACA,iDAAA;ACmKJ;ADhKE;EACE,gEAAA;EACA,2FAAA;EAIA,yFAAA;AC+JJ;ADzJE;EACE,iEAAA;EACA,uEAAA;AC2JJ;ADxJE;EACE,mFAAA;EAIA,mFAAA;ACuJJ;ADlJI;EACE,yFAAA;ACoJN;AD9II;EACE,6DAAA;ACgJN","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../css/theme\\";\\n\\n.excalidraw {\\n  .excalidraw-button {\\n    @include outlineButtonStyles;\\n  }\\n}\\n","@import \\"open-color/open-color.scss\\";\\n@import \\"./variables.module.scss\\";\\n\\n.excalidraw {\\n  --theme-filter: none;\\n  --button-destructive-bg-color: #{$oc-red-1};\\n  --button-destructive-color: #{$oc-red-9};\\n  --button-gray-1: #{$oc-gray-2};\\n  --button-gray-2: #{$oc-gray-4};\\n  --button-gray-3: #{$oc-gray-5};\\n  --button-special-active-bg-color: #{$oc-green-0};\\n  --dialog-border-color: var(--color-gray-20);\\n  --dropdown-icon: url('data:image/svg+xml,<svg xmlns=\\"http://www.w3.org/2000/svg\\" width=\\"292.4\\" height=\\"292.4\\" viewBox=\\"0 0 292 292\\"><path d=\\"M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z\\"/></svg>');\\n  --focus-highlight-color: #{$oc-blue-2};\\n  --icon-fill-color: var(--color-on-surface);\\n  --icon-green-fill-color: #{$oc-green-9};\\n  --default-bg-color: #{$oc-white};\\n  --input-bg-color: #{$oc-white};\\n  --input-border-color: #{$oc-gray-4};\\n  --input-hover-bg-color: #{$oc-gray-1};\\n  --input-label-color: #{$oc-gray-7};\\n  --island-bg-color: #ffffff;\\n  --keybinding-color: var(--color-gray-40);\\n  --link-color: #{$oc-blue-7};\\n  --overlay-bg-color: #{transparentize($oc-white, 0.12)};\\n  --popup-bg-color: var(--island-bg-color);\\n  --popup-secondary-bg-color: #{$oc-gray-1};\\n  --popup-text-color: #{$oc-black};\\n  --popup-text-inverted-color: #{$oc-white};\\n  --select-highlight-color: #{$oc-blue-5};\\n  --shadow-island: 0px 0px 0.9310142993927002px 0px rgba(0, 0, 0, 0.17),\\n    0px 0px 3.1270833015441895px 0px rgba(0, 0, 0, 0.08),\\n    0px 7px 14px 0px rgba(0, 0, 0, 0.05);\\n\\n  --button-hover-bg: var(--color-surface-high);\\n  --button-active-bg: var(--color-surface-high);\\n  --button-active-border: var(--color-brand-active);\\n  --default-border-color: var(--color-surface-high);\\n\\n  --default-button-size: 2rem;\\n  --default-icon-size: 1rem;\\n  --lg-button-size: 2.25rem;\\n  --lg-icon-size: 1rem;\\n  --editor-container-padding: 1rem;\\n\\n  @media screen and (min-device-width: 1921px) {\\n    --lg-button-size: 2.5rem;\\n    --lg-icon-size: 1.25rem;\\n    --default-button-size: 2.25rem;\\n    --default-icon-size: 1.25rem;\\n  }\\n\\n  --scrollbar-thumb: var(--button-gray-2);\\n  --scrollbar-thumb-hover: var(--button-gray-3);\\n\\n  --modal-shadow: 0px 100px 80px rgba(0, 0, 0, 0.07),\\n    0px 41.7776px 33.4221px rgba(0, 0, 0, 0.0503198),\\n    0px 22.3363px 17.869px rgba(0, 0, 0, 0.0417275),\\n    0px 12.5216px 10.0172px rgba(0, 0, 0, 0.035),\\n    0px 6.6501px 5.32008px rgba(0, 0, 0, 0.0282725),\\n    0px 2.76726px 2.21381px rgba(0, 0, 0, 0.0196802);\\n  --avatar-border-color: var(--color-gray-20);\\n  --sidebar-shadow: 0px 100px 80px rgba(0, 0, 0, 0.07),\\n    0px 41.7776px 33.4221px rgba(0, 0, 0, 0.0503198),\\n    0px 22.3363px 17.869px rgba(0, 0, 0, 0.0417275),\\n    0px 12.5216px 10.0172px rgba(0, 0, 0, 0.035),\\n    0px 6.6501px 5.32008px rgba(0, 0, 0, 0.0282725),\\n    0px 2.76726px 2.21381px rgba(0, 0, 0, 0.0196802);\\n  --sidebar-border-color: var(--color-surface-high);\\n  --sidebar-bg-color: var(--island-bg-color);\\n  --library-dropdown-shadow: 0px 15px 6px rgba(0, 0, 0, 0.01),\\n    0px 8px 5px rgba(0, 0, 0, 0.05), 0px 4px 4px rgba(0, 0, 0, 0.09),\\n    0px 1px 2px rgba(0, 0, 0, 0.1), 0px 0px 0px rgba(0, 0, 0, 0.1);\\n\\n  --space-factor: 0.25rem;\\n  --text-primary-color: var(--color-on-surface);\\n\\n  --color-selection: #6965db;\\n\\n  --color-icon-white: #{$oc-white};\\n\\n  --color-primary: #6965db;\\n  --color-primary-darker: #5b57d1;\\n  --color-primary-darkest: #4a47b1;\\n  --color-primary-light: #e3e2fe;\\n  --color-primary-light-darker: #d7d5ff;\\n\\n  --color-gray-10: #f5f5f5;\\n  --color-gray-20: #ebebeb;\\n  --color-gray-30: #d6d6d6;\\n  --color-gray-40: #b8b8b8;\\n  --color-gray-50: #999999;\\n  --color-gray-60: #7a7a7a;\\n  --color-gray-70: #5c5c5c;\\n  --color-gray-80: #3d3d3d;\\n  --color-gray-85: #242424;\\n  --color-gray-90: #1e1e1e;\\n  --color-gray-100: #121212;\\n\\n  --color-warning: #fceeca;\\n  --color-warning-dark: #f5c354;\\n  --color-warning-darker: #f3ab2c;\\n  --color-warning-darkest: #ec8b14;\\n  --color-text-warning: var(--text-primary-color);\\n\\n  --color-danger: #db6965;\\n  --color-danger-dark: #db6965;\\n  --color-danger-darker: #d65550;\\n  --color-danger-darkest: #d1413c;\\n  --color-danger-text: black;\\n\\n  --color-danger-background: #fff0f0;\\n  --color-danger-icon-background: #ffdad6;\\n  --color-danger-color: #700000;\\n  --color-danger-icon-color: #700000;\\n\\n  --color-warning-background: var(--color-warning);\\n  --color-warning-icon-background: var(--color-warning-dark);\\n  --color-warning-color: var(--text-primary-color);\\n  --color-warning-icon-color: var(--text-primary-color);\\n\\n  --color-muted: var(--color-gray-30);\\n  --color-muted-darker: var(--color-gray-60);\\n  --color-muted-darkest: var(--color-gray-100);\\n  --color-muted-background: var(--color-gray-80);\\n  --color-muted-background-darker: var(--color-gray-100);\\n\\n  --color-promo: #e70078;\\n  --color-success: #268029;\\n  --color-success-lighter: #cafccc;\\n\\n  --color-logo-icon: var(--color-primary);\\n  --color-logo-text: #190064;\\n\\n  --border-radius-md: 0.375rem;\\n  --border-radius-lg: 0.5rem;\\n\\n  --color-surface-high: hsl(244, 100%, 97%);\\n  --color-surface-mid: hsl(240 25% 96%);\\n  --color-surface-low: hsl(240 25% 94%);\\n  --color-surface-lowest: #ffffff;\\n  --color-on-surface: #1b1b1f;\\n  --color-brand-hover: #5753d0;\\n  --color-on-primary-container: #030064;\\n  --color-surface-primary-container: #e0dfff;\\n  --color-brand-active: #4440bf;\\n  --color-border-outline: #767680;\\n  --color-border-outline-variant: #c5c5d0;\\n  --color-surface-primary-container: #e0dfff;\\n\\n  &.theme--dark {\\n    &.theme--dark-background-none {\\n      background: none;\\n    }\\n  }\\n\\n  &.theme--dark {\\n    --theme-filter: #{$theme-filter};\\n    --button-destructive-bg-color: #5a0000;\\n    --button-destructive-color: #{$oc-red-3};\\n\\n    --button-gray-1: #363636;\\n    --button-gray-2: #272727;\\n    --button-gray-3: #222;\\n    --button-special-active-bg-color: #204624;\\n    --dialog-border-color: var(--color-gray-80);\\n    --dropdown-icon: url('data:image/svg+xml,<svg xmlns=\\"http://www.w3.org/2000/svg\\" width=\\"292.4\\" height=\\"292.4\\" viewBox=\\"0 0 292 292\\"><path fill=\\"%23ced4da\\" d=\\"M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z\\"/></svg>');\\n    --focus-highlight-color: #{$oc-blue-6};\\n    --icon-green-fill-color: #{$oc-green-4};\\n    --default-bg-color: #121212;\\n    --input-bg-color: #121212;\\n    --input-border-color: #2e2e2e;\\n    --input-hover-bg-color: #181818;\\n    --input-label-color: #{$oc-gray-2};\\n    --island-bg-color: #232329;\\n    --keybinding-color: var(--color-gray-60);\\n    --link-color: #{$oc-blue-4};\\n    --overlay-bg-color: #{transparentize($oc-gray-8, 0.88)};\\n    --popup-secondary-bg-color: #222;\\n    --popup-text-color: #{$oc-gray-4};\\n    --popup-text-inverted-color: #2c2c2c;\\n    --select-highlight-color: #{$oc-blue-4};\\n    --shadow-island: 0px 0px 0.9310142993927002px 0px rgba(0, 0, 0, 0.17),\\n      0px 0px 3.1270833015441895px 0px rgba(0, 0, 0, 0.08),\\n      0px 7px 14px 0px rgba(0, 0, 0, 0.05);\\n\\n    --modal-shadow: 0px 100px 80px rgba(0, 0, 0, 0.07),\\n      0px 41.7776px 33.4221px rgba(0, 0, 0, 0.0503198),\\n      0px 22.3363px 17.869px rgba(0, 0, 0, 0.0417275),\\n      0px 12.5216px 10.0172px rgba(0, 0, 0, 0.035),\\n      0px 6.6501px 5.32008px rgba(0, 0, 0, 0.0282725),\\n      0px 2.76726px 2.21381px rgba(0, 0, 0, 0.0196802);\\n    --avatar-border-color: var(--color-gray-85);\\n\\n    --scrollbar-thumb: #{$oc-gray-8};\\n    --scrollbar-thumb-hover: #{$oc-gray-7};\\n\\n    // will be inverted to a lighter color.\\n    --color-selection: #3530c4;\\n\\n    --color-icon-white: var(--color-gray-90);\\n\\n    --color-primary: #a8a5ff;\\n    --color-primary-darker: #b2aeff;\\n    --color-primary-darkest: #beb9ff;\\n    --color-primary-light: #4f4d6f;\\n    --color-primary-light-darker: #43415e;\\n\\n    --color-text-warning: var(--color-gray-80);\\n\\n    --color-danger: #ffa8a5;\\n    --color-danger-dark: #672120;\\n    --color-danger-darker: #8f2625;\\n    --color-danger-darkest: #ac2b29;\\n    --color-danger-text: #fbcbcc;\\n\\n    --color-danger-background: #fbcbcc;\\n    --color-danger-icon-background: #672120;\\n    --color-danger-color: #261919;\\n    --color-danger-icon-color: #fbcbcc;\\n\\n    --color-warning-background: var(--color-warning);\\n    --color-warning-icon-background: var(--color-warning-dark);\\n    --color-warning-color: var(--color-gray-80);\\n    --color-warning-icon-color: var(--color-gray-80);\\n\\n    --color-muted: var(--color-gray-80);\\n    --color-muted-darker: var(--color-gray-60);\\n    --color-muted-darkest: var(--color-gray-20);\\n    --color-muted-background: var(--color-gray-40);\\n    --color-muted-background-darker: var(--color-gray-20);\\n\\n    --color-promo: #d297ff;\\n\\n    --color-logo-text: #e2dfff;\\n\\n    --color-surface-high: hsl(245, 10%, 21%);\\n    --color-surface-low: hsl(240, 8%, 15%);\\n    --color-surface-mid: hsl(240 6% 10%);\\n    --color-surface-lowest: hsl(0, 0%, 7%);\\n    --color-on-surface: #e3e3e8;\\n    --color-brand-hover: #bbb8ff;\\n    --color-on-primary-container: #e0dfff;\\n    --color-surface-primary-container: #403e6a;\\n    --color-brand-active: #d0ccff;\\n    --color-border-outline: #8e8d9c;\\n    --color-border-outline-variant: #46464f;\\n    --color-surface-primary-container: #403e6a;\\n  }\\n}\\n"],"sourceRoot":""}]);
// Exports
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 44448 characters]
//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Button.scss
`);
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Card.scss": (
              /*!*************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Card.scss ***!
                \*************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .Card {\\n  display: flex;\\n  flex-direction: column;\\n  align-items: center;\\n  max-width: 290px;\\n  margin: 1em;\\n  text-align: center;\\n}\\n.excalidraw .Card .Card-icon {\\n  font-size: 2.6em;\\n  display: flex;\\n  flex: 0 0 auto;\\n  padding: 1.4rem;\\n  border-radius: 50%;\\n  background: var(--card-color);\\n  color: #ffffff;\\n}\\n.excalidraw .Card .Card-icon svg {\\n  width: 2.8rem;\\n  height: 2.8rem;\\n}\\n.excalidraw .Card .Card-details {\\n  font-size: 0.96em;\\n  min-height: 90px;\\n  padding: 0 1em;\\n  margin-bottom: auto;\\n}\\n.excalidraw .Card .Card-button.ToolIcon_type_button {\\n  height: 2.5rem;\\n  margin-top: 1em;\\n  margin-bottom: 0.3em;\\n  background-color: var(--card-color);\\n}\\n.excalidraw .Card .Card-button.ToolIcon_type_button:hover {\\n  background-color: var(--card-color-darker);\\n}\\n.excalidraw .Card .Card-button.ToolIcon_type_button:active {\\n  background-color: var(--card-color-darkest);\\n}\\n.excalidraw .Card .Card-button.ToolIcon_type_button .ToolIcon__label {\\n  color: #ffffff;\\n}\\n.excalidraw .Card .Card-button.ToolIcon_type_button .Spinner {\\n  --spinner-color: #fff;\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/Card.scss","webpack://./../../../node_modules/open-color/open-color.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AAAE;EACE,aAAA;EACA,sBAAA;EACA,mBAAA;EAEA,gBAAA;EAEA,WAAA;EAEA,kBAAA;AAAJ;AAEI;EACE,gBAAA;EACA,aAAA;EACA,cAAA;EACA,eAAA;EACA,kBAAA;EACA,6BAAA;EACA,cCVa;ADUnB;AAEM;EACE,aAAA;EACA,cAAA;AAAR;AAII;EACE,iBAAA;EACA,gBAAA;EACA,cAAA;EACA,mBAAA;AAFN;AAKI;EACE,cAAA;EACA,eAAA;EACA,oBAAA;EACA,mCAAA;AAHN;AAIM;EACE,0CAAA;AAFR;AAIM;EACE,2CAAA;AAFR;AAIM;EACE,cCrCW;ADmCnB;AAKM;EACE,qBAAA;AAHR","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../css/variables.module\\";\\n\\n.excalidraw {\\n  .Card {\\n    display: flex;\\n    flex-direction: column;\\n    align-items: center;\\n\\n    max-width: 290px;\\n\\n    margin: 1em;\\n\\n    text-align: center;\\n\\n    .Card-icon {\\n      font-size: 2.6em;\\n      display: flex;\\n      flex: 0 0 auto;\\n      padding: 1.4rem;\\n      border-radius: 50%;\\n      background: var(--card-color);\\n      color: $oc-white;\\n\\n      svg {\\n        width: 2.8rem;\\n        height: 2.8rem;\\n      }\\n    }\\n\\n    .Card-details {\\n      font-size: 0.96em;\\n      min-height: 90px;\\n      padding: 0 1em;\\n      margin-bottom: auto;\\n    }\\n\\n    & .Card-button.ToolIcon_type_button {\\n      height: 2.5rem;\\n      margin-top: 1em;\\n      margin-bottom: 0.3em;\\n      background-color: var(--card-color);\\n      &:hover {\\n        background-color: var(--card-color-darker);\\n      }\\n      &:active {\\n        background-color: var(--card-color-darkest);\\n      }\\n      .ToolIcon__label {\\n        color: $oc-white;\\n      }\\n\\n      .Spinner {\\n        --spinner-color: #fff;\\n      }\\n    }\\n  }\\n}\\n","//\\n//\\n//  \u{1D5D6} \u{1D5E2} \u{1D5DF} \u{1D5E2} \u{1D5E5}\\n//  v 1.9.1\\n//\\n//  \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\\n\\n\\n//  General\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-white:         #ffffff;\\n$oc-black:         #000000;\\n\\n\\n//  Gray\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-gray-list: (\\n  \\"0\\": #f8f9fa,\\n  \\"1\\": #f1f3f5,\\n  \\"2\\": #e9ecef,\\n  \\"3\\": #dee2e6,\\n  \\"4\\": #ced4da,\\n  \\"5\\": #adb5bd,\\n  \\"6\\": #868e96,\\n  \\"7\\": #495057,\\n  \\"8\\": #343a40,\\n  \\"9\\": #212529\\n);\\n\\n$oc-gray-0: map-get($oc-gray-list, \\"0\\");\\n$oc-gray-1: map-get($oc-gray-list, \\"1\\");\\n$oc-gray-2: map-get($oc-gray-list, \\"2\\");\\n$oc-gray-3: map-get($oc-gray-list, \\"3\\");\\n$oc-gray-4: map-get($oc-gray-list, \\"4\\");\\n$oc-gray-5: map-get($oc-gray-list, \\"5\\");\\n$oc-gray-6: map-get($oc-gray-list, \\"6\\");\\n$oc-gray-7: map-get($oc-gray-list, \\"7\\");\\n$oc-gray-8: map-get($oc-gray-list, \\"8\\");\\n$oc-gray-9: map-get($oc-gray-list, \\"9\\");\\n\\n\\n//  Red\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-red-list: (\\n  \\"0\\": #fff5f5,\\n  \\"1\\": #ffe3e3,\\n  \\"2\\": #ffc9c9,\\n  \\"3\\": #ffa8a8,\\n  \\"4\\": #ff8787,\\n  \\"5\\": #ff6b6b,\\n  \\"6\\": #fa5252,\\n  \\"7\\": #f03e3e,\\n  \\"8\\": #e03131,\\n  \\"9\\": #c92a2a\\n);\\n\\n$oc-red-0: map-get($oc-red-list, \\"0\\");\\n$oc-red-1: map-get($oc-red-list, \\"1\\");\\n$oc-red-2: map-get($oc-red-list, \\"2\\");\\n$oc-red-3: map-get($oc-red-list, \\"3\\");\\n$oc-red-4: map-get($oc-red-list, \\"4\\");\\n$oc-red-5: map-get($oc-red-list, \\"5\\");\\n$oc-red-6: map-get($oc-red-list, \\"6\\");\\n$oc-red-7: map-get($oc-red-list, \\"7\\");\\n$oc-red-8: map-get($oc-red-list, \\"8\\");\\n$oc-red-9: map-get($oc-red-list, \\"9\\");\\n\\n\\n//  Pink\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-pink-list: (\\n  \\"0\\": #fff0f6,\\n  \\"1\\": #ffdeeb,\\n  \\"2\\": #fcc2d7,\\n  \\"3\\": #faa2c1,\\n  \\"4\\": #f783ac,\\n  \\"5\\": #f06595,\\n  \\"6\\": #e64980,\\n  \\"7\\": #d6336c,\\n  \\"8\\": #c2255c,\\n  \\"9\\": #a61e4d\\n);\\n\\n$oc-pink-0: map-get($oc-pink-list, \\"0\\");\\n$oc-pink-1: map-get($oc-pink-list, \\"1\\");\\n$oc-pink-2: map-get($oc-pink-list, \\"2\\");\\n$oc-pink-3: map-get($oc-pink-list, \\"3\\");\\n$oc-pink-4: map-get($oc-pink-list, \\"4\\");\\n$oc-pink-5: map-get($oc-pink-list, \\"5\\");\\n$oc-pink-6: map-get($oc-pink-list, \\"6\\");\\n$oc-pink-7: map-get($oc-pink-list, \\"7\\");\\n$oc-pink-8: map-get($oc-pink-list, \\"8\\");\\n$oc-pink-9: map-get($oc-pink-list, \\"9\\");\\n\\n\\n//  Grape\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-grape-list: (\\n  \\"0\\": #f8f0fc,\\n  \\"1\\": #f3d9fa,\\n  \\"2\\": #eebefa,\\n  \\"3\\": #e599f7,\\n  \\"4\\": #da77f2,\\n  \\"5\\": #cc5de8,\\n  \\"6\\": #be4bdb,\\n  \\"7\\": #ae3ec9,\\n  \\"8\\": #9c36b5,\\n  \\"9\\": #862e9c\\n);\\n\\n$oc-grape-0: map-get($oc-grape-list, \\"0\\");\\n$oc-grape-1: map-get($oc-grape-list, \\"1\\");\\n$oc-grape-2: map-get($oc-grape-list, \\"2\\");\\n$oc-grape-3: map-get($oc-grape-list, \\"3\\");\\n$oc-grape-4: map-get($oc-grape-list, \\"4\\");\\n$oc-grape-5: map-get($oc-grape-list, \\"5\\");\\n$oc-grape-6: map-get($oc-grape-list, \\"6\\");\\n$oc-grape-7: map-get($oc-grape-list, \\"7\\");\\n$oc-grape-8: map-get($oc-grape-list, \\"8\\");\\n$oc-grape-9: map-get($oc-grape-list, \\"9\\");\\n\\n\\n//  Violet\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-violet-list: (\\n  \\"0\\": #f3f0ff,\\n  \\"1\\": #e5dbff,\\n  \\"2\\": #d0bfff,\\n  \\"3\\": #b197fc,\\n  \\"4\\": #9775fa,\\n  \\"5\\": #845ef7,\\n  \\"6\\": #7950f2,\\n  \\"7\\": #7048e8,\\n  \\"8\\": #6741d9,\\n  \\"9\\": #5f3dc4\\n);\\n\\n$oc-violet-0: map-get($oc-violet-list, \\"0\\");\\n$oc-violet-1: map-get($oc-violet-list, \\"1\\");\\n$oc-violet-2: map-get($oc-violet-list, \\"2\\");\\n$oc-violet-3: map-get($oc-violet-list, \\"3\\");\\n$oc-violet-4: map-get($oc-violet-list, \\"4\\");\\n$oc-violet-5: map-get($oc-violet-list, \\"5\\");\\n$oc-violet-6: map-get($oc-violet-list, \\"6\\");\\n$oc-violet-7: map-get($oc-violet-list, \\"7\\");\\n$oc-violet-8: map-get($oc-violet-list, \\"8\\");\\n$oc-violet-9: map-get($oc-violet-list, \\"9\\");\\n\\n\\n//  Indigo\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-indigo-list: (\\n  \\"0\\": #edf2ff,\\n  \\"1\\": #dbe4ff,\\n  \\"2\\": #bac8ff,\\n  \\"3\\": #91a7ff,\\n  \\"4\\": #748ffc,\\n  \\"5\\": #5c7cfa,\\n  \\"6\\": #4c6ef5,\\n  \\"7\\": #4263eb,\\n  \\"8\\": #3b5bdb,\\n  \\"9\\": #364fc7\\n);\\n\\n$oc-indigo-0: map-get($oc-indigo-list, \\"0\\");\\n$oc-indigo-1: map-get($oc-indigo-list, \\"1\\");\\n$oc-indigo-2: map-get($oc-indigo-list, \\"2\\");\\n$oc-indigo-3: map-get($oc-indigo-list, \\"3\\");\\n$oc-indigo-4: map-get($oc-indigo-list, \\"4\\");\\n$oc-indigo-5: map-get($oc-indigo-list, \\"5\\");\\n$oc-indigo-6: map-get($oc-indigo-list, \\"6\\");\\n$oc-indigo-7: map-get($oc-indigo-list, \\"7\\");\\n$oc-indigo-8: map-get($oc-indigo-list, \\"8\\");\\n$oc-indigo-9: map-get($oc-indigo-list, \\"9\\");\\n\\n\\n//  Blue\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-blue-list: (\\n  \\"0\\": #e7f5ff,\\n  \\"1\\": #d0ebff,\\n  \\"2\\": #a5d8ff,\\n  \\"3\\": #74c0fc,\\n  \\"4\\": #4dabf7,\\n  \\"5\\": #339af0,\\n  \\"6\\": #228be6,\\n  \\"7\\": #1c7ed6,\\n  \\"8\\": #1971c2,\\n  \\"9\\": #1864ab\\n);\\n\\n$oc-blue-0: map-get($oc-blue-list, \\"0\\");\\n$oc-blue-1: map-get($oc-blue-list, \\"1\\");\\n$oc-blue-2: map-get($oc-blue-list, \\"2\\");\\n$oc-blue-3: map-get($oc-blue-list, \\"3\\");\\n$oc-blue-4: map-get($oc-blue-list, \\"4\\");\\n$oc-blue-5: map-get($oc-blue-list, \\"5\\");\\n$oc-blue-6: map-get($oc-blue-list, \\"6\\");\\n$oc-blue-7: map-get($oc-blue-list, \\"7\\");\\n$oc-blue-8: map-get($oc-blue-list, \\"8\\");\\n$oc-blue-9: map-get($oc-blue-list, \\"9\\");\\n\\n\\n//  Cyan\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-cyan-list: (\\n  \\"0\\": #e3fafc,\\n  \\"1\\": #c5f6fa,\\n  \\"2\\": #99e9f2,\\n  \\"3\\": #66d9e8,\\n  \\"4\\": #3bc9db,\\n  \\"5\\": #22b8cf,\\n  \\"6\\": #15aabf,\\n  \\"7\\": #1098ad,\\n  \\"8\\": #0c8599,\\n  \\"9\\": #0b7285\\n);\\n\\n$oc-cyan-0: map-get($oc-cyan-list, \\"0\\");\\n$oc-cyan-1: map-get($oc-cyan-list, \\"1\\");\\n$oc-cyan-2: map-get($oc-cyan-list, \\"2\\");\\n$oc-cyan-3: map-get($oc-cyan-list, \\"3\\");\\n$oc-cyan-4: map-get($oc-cyan-list, \\"4\\");\\n$oc-cyan-5: map-get($oc-cyan-list, \\"5\\");\\n$oc-cyan-6: map-get($oc-cyan-list, \\"6\\");\\n$oc-cyan-7: map-get($oc-cyan-list, \\"7\\");\\n$oc-cyan-8: map-get($oc-cyan-list, \\"8\\");\\n$oc-cyan-9: map-get($oc-cyan-list, \\"9\\");\\n\\n\\n//  Teal\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-teal-list: (\\n  \\"0\\": #e6fcf5,\\n  \\"1\\": #c3fae8,\\n  \\"2\\": #96f2d7,\\n  \\"3\\": #63e6be,\\n  \\"4\\": #38d9a9,\\n  \\"5\\": #20c997,\\n  \\"6\\": #12b886,\\n  \\"7\\": #0ca678,\\n  \\"8\\": #099268,\\n  \\"9\\": #087f5b\\n);\\n\\n$oc-teal-0: map-get($oc-teal-list, \\"0\\");\\n$oc-teal-1: map-get($oc-teal-list, \\"1\\");\\n$oc-teal-2: map-get($oc-teal-list, \\"2\\");\\n$oc-teal-3: map-get($oc-teal-list, \\"3\\");\\n$oc-teal-4: map-get($oc-teal-list, \\"4\\");\\n$oc-teal-5: map-get($oc-teal-list, \\"5\\");\\n$oc-teal-6: map-get($oc-teal-list, \\"6\\");\\n$oc-teal-7: map-get($oc-teal-list, \\"7\\");\\n$oc-teal-8: map-get($oc-teal-list, \\"8\\");\\n$oc-teal-9: map-get($oc-teal-list, \\"9\\");\\n\\n\\n//  Green\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-green-list: (\\n  \\"0\\": #ebfbee,\\n  \\"1\\": #d3f9d8,\\n  \\"2\\": #b2f2bb,\\n  \\"3\\": #8ce99a,\\n  \\"4\\": #69db7c,\\n  \\"5\\": #51cf66,\\n  \\"6\\": #40c057,\\n  \\"7\\": #37b24d,\\n  \\"8\\": #2f9e44,\\n  \\"9\\": #2b8a3e\\n);\\n\\n$oc-green-0: map-get($oc-green-list, \\"0\\");\\n$oc-green-1: map-get($oc-green-list, \\"1\\");\\n$oc-green-2: map-get($oc-green-list, \\"2\\");\\n$oc-green-3: map-get($oc-green-list, \\"3\\");\\n$oc-green-4: map-get($oc-green-list, \\"4\\");\\n$oc-green-5: map-get($oc-green-list, \\"5\\");\\n$oc-green-6: map-get($oc-green-list, \\"6\\");\\n$oc-green-7: map-get($oc-green-list, \\"7\\");\\n$oc-green-8: map-get($oc-green-list, \\"8\\");\\n$oc-green-9: map-get($oc-green-list, \\"9\\");\\n\\n\\n//  Lime\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-lime-list: (\\n  \\"0\\": #f4fce3,\\n  \\"1\\": #e9fac8,\\n  \\"2\\": #d8f5a2,\\n  \\"3\\": #c0eb75,\\n  \\"4\\": #a9e34b,\\n  \\"5\\": #94d82d,\\n  \\"6\\": #82c91e,\\n  \\"7\\": #74b816,\\n  \\"8\\": #66a80f,\\n  \\"9\\": #5c940d\\n);\\n\\n$oc-lime-0: map-get($oc-lime-list, \\"0\\");\\n$oc-lime-1: map-get($oc-lime-list, \\"1\\");\\n$oc-lime-2: map-get($oc-lime-list, \\"2\\");\\n$oc-lime-3: map-get($oc-lime-list, \\"3\\");\\n$oc-lime-4: map-get($oc-lime-list, \\"4\\");\\n$oc-lime-5: map-get($oc-lime-list, \\"5\\");\\n$oc-lime-6: map-get($oc-lime-list, \\"6\\");\\n$oc-lime-7: map-get($oc-lime-list, \\"7\\");\\n$oc-lime-8: map-get($oc-lime-list, \\"8\\");\\n$oc-lime-9: map-get($oc-lime-list, \\"9\\");\\n\\n\\n//  Yellow\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-yellow-list: (\\n  \\"0\\": #fff9db,\\n  \\"1\\": #fff3bf,\\n  \\"2\\": #ffec99,\\n  \\"3\\": #ffe066,\\n  \\"4\\": #ffd43b,\\n  \\"5\\": #fcc419,\\n  \\"6\\": #fab005,\\n  \\"7\\": #f59f00,\\n  \\"8\\": #f08c00,\\n  \\"9\\": #e67700\\n);\\n\\n$oc-yellow-0: map-get($oc-yellow-list, \\"0\\");\\n$oc-yellow-1: map-get($oc-yellow-list, \\"1\\");\\n$oc-yellow-2: map-get($oc-yellow-list, \\"2\\");\\n$oc-yellow-3: map-get($oc-yellow-list, \\"3\\");\\n$oc-yellow-4: map-get($oc-yellow-list, \\"4\\");\\n$oc-yellow-5: map-get($oc-yellow-list, \\"5\\");\\n$oc-yellow-6: map-get($oc-yellow-list, \\"6\\");\\n$oc-yellow-7: map-get($oc-yellow-list, \\"7\\");\\n$oc-yellow-8: map-get($oc-yellow-list, \\"8\\");\\n$oc-yellow-9: map-get($oc-yellow-list, \\"9\\");\\n\\n\\n//  Orange\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-orange-list: (\\n  \\"0\\": #fff4e6,\\n  \\"1\\": #ffe8cc,\\n  \\"2\\": #ffd8a8,\\n  \\"3\\": #ffc078,\\n  \\"4\\": #ffa94d,\\n  \\"5\\": #ff922b,\\n  \\"6\\": #fd7e14,\\n  \\"7\\": #f76707,\\n  \\"8\\": #e8590c,\\n  \\"9\\": #d9480f\\n);\\n\\n$oc-orange-0: map-get($oc-orange-list, \\"0\\");\\n$oc-orange-1: map-get($oc-orange-list, \\"1\\");\\n$oc-orange-2: map-get($oc-orange-list, \\"2\\");\\n$oc-orange-3: map-get($oc-orange-list, \\"3\\");\\n$oc-orange-4: map-get($oc-orange-list, \\"4\\");\\n$oc-orange-5: map-get($oc-orange-list, \\"5\\");\\n$oc-orange-6: map-get($oc-orange-list, \\"6\\");\\n$oc-orange-7: map-get($oc-orange-list, \\"7\\");\\n$oc-orange-8: map-get($oc-orange-list, \\"8\\");\\n$oc-orange-9: map-get($oc-orange-list, \\"9\\");\\n\\n\\n//  Color list\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-color-spectrum:   9;\\n\\n$oc-color-list: (\\n  $oc-gray-list:      \\"gray\\",\\n  $oc-red-list:      \\"red\\",\\n  $oc-pink-list:      \\"pink\\",\\n  $oc-grape-list:      \\"grape\\",\\n  $oc-violet-list:      \\"violet\\",\\n  $oc-indigo-list:      \\"indigo\\",\\n  $oc-blue-list:      \\"blue\\",\\n  $oc-cyan-list:      \\"cyan\\",\\n  $oc-teal-list:      \\"teal\\",\\n  $oc-green-list:      \\"green\\",\\n  $oc-lime-list:      \\"lime\\",\\n  $oc-yellow-list:      \\"yellow\\",\\n  $oc-orange-list:      \\"orange\\"\\n);\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 30216 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Card.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/CheckboxItem.scss": (
              /*!*********************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/CheckboxItem.scss ***!
                \*********************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .Checkbox {\\n  margin: 4px 0.3em;\\n  display: flex;\\n  align-items: center;\\n  cursor: pointer;\\n  user-select: none;\\n  -webkit-tap-highlight-color: transparent;\\n}\\n.excalidraw .Checkbox:hover:not(.is-checked) .Checkbox-box:not(:focus) {\\n  box-shadow: 0 0 0 2px #4dabf7;\\n}\\n.excalidraw .Checkbox:hover:not(.is-checked) .Checkbox-box:not(:focus) svg {\\n  display: block;\\n  opacity: 0.3;\\n}\\n.excalidraw .Checkbox:active .Checkbox-box {\\n  box-shadow: 0 0 2px 1px inset #1c7ed6 !important;\\n}\\n.excalidraw .Checkbox:hover .Checkbox-box {\\n  background-color: rgba(208, 235, 255, 0.2);\\n}\\n.excalidraw .Checkbox.is-checked .Checkbox-box {\\n  background-color: #d0ebff;\\n}\\n.excalidraw .Checkbox.is-checked .Checkbox-box svg {\\n  display: block;\\n}\\n.excalidraw .Checkbox.is-checked:hover .Checkbox-box {\\n  background-color: #a5d8ff;\\n}\\n.excalidraw .Checkbox .Checkbox-box {\\n  width: 22px;\\n  height: 22px;\\n  padding: 0;\\n  flex: 0 0 auto;\\n  margin: 0 1em;\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  box-shadow: 0 0 0 2px #1c7ed6;\\n  background-color: transparent;\\n  border-radius: 4px;\\n  color: #1c7ed6;\\n  border: 0;\\n}\\n.excalidraw .Checkbox .Checkbox-box:focus {\\n  box-shadow: 0 0 0 3px #1c7ed6;\\n}\\n.excalidraw .Checkbox .Checkbox-box svg {\\n  display: none;\\n  width: 16px;\\n  height: 16px;\\n  stroke-width: 3px;\\n}\\n.excalidraw .Checkbox .Checkbox-label {\\n  display: flex;\\n  align-items: center;\\n}\\n.excalidraw .Checkbox .excalidraw-tooltip-icon {\\n  width: 1em;\\n  height: 1em;\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/CheckboxItem.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AAAE;EACE,iBAAA;EACA,aAAA;EACA,mBAAA;EAEA,eAAA;EACA,iBAAA;EAEA,wCAAA;AACJ;AACI;EACE,6BAAA;AACN;AAGM;EACE,cAAA;EACA,YAAA;AADR;AAMM;EACE,gDAAA;AAJR;AASM;EACE,0CAAA;AAPR;AAYM;EACE,yBAAA;AAVR;AAWQ;EACE,cAAA;AATV;AAYM;EACE,yBAAA;AAVR;AAcI;EACE,WAAA;EACA,YAAA;EACA,UAAA;EACA,cAAA;EAEA,aAAA;EAEA,aAAA;EACA,mBAAA;EACA,uBAAA;EAEA,6BAAA;EACA,6BAAA;EACA,kBAAA;EAEA,cAAA;EAEA,SAAA;AAjBN;AAmBM;EACE,6BAAA;AAjBR;AAoBM;EACE,aAAA;EACA,WAAA;EACA,YAAA;EACA,iBAAA;AAlBR;AAsBI;EACE,aAAA;EACA,mBAAA;AApBN;AAuBI;EACE,UAAA;EACA,WAAA;AArBN","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../css/variables.module\\";\\n\\n.excalidraw {\\n  .Checkbox {\\n    margin: 4px 0.3em;\\n    display: flex;\\n    align-items: center;\\n\\n    cursor: pointer;\\n    user-select: none;\\n\\n    -webkit-tap-highlight-color: transparent;\\n\\n    &:hover:not(.is-checked) .Checkbox-box:not(:focus) {\\n      box-shadow: 0 0 0 2px #{$oc-blue-4};\\n    }\\n\\n    &:hover:not(.is-checked) .Checkbox-box:not(:focus) {\\n      svg {\\n        display: block;\\n        opacity: 0.3;\\n      }\\n    }\\n\\n    &:active {\\n      .Checkbox-box {\\n        box-shadow: 0 0 2px 1px inset #{$oc-blue-7} !important;\\n      }\\n    }\\n\\n    &:hover {\\n      .Checkbox-box {\\n        background-color: fade-out($oc-blue-1, 0.8);\\n      }\\n    }\\n\\n    &.is-checked {\\n      .Checkbox-box {\\n        background-color: #{$oc-blue-1};\\n        svg {\\n          display: block;\\n        }\\n      }\\n      &:hover .Checkbox-box {\\n        background-color: #{$oc-blue-2};\\n      }\\n    }\\n\\n    .Checkbox-box {\\n      width: 22px;\\n      height: 22px;\\n      padding: 0;\\n      flex: 0 0 auto;\\n\\n      margin: 0 1em;\\n\\n      display: flex;\\n      align-items: center;\\n      justify-content: center;\\n\\n      box-shadow: 0 0 0 2px #{$oc-blue-7};\\n      background-color: transparent;\\n      border-radius: 4px;\\n\\n      color: #{$oc-blue-7};\\n\\n      border: 0;\\n\\n      &:focus {\\n        box-shadow: 0 0 0 3px #{$oc-blue-7};\\n      }\\n\\n      svg {\\n        display: none;\\n        width: 16px;\\n        height: 16px;\\n        stroke-width: 3px;\\n      }\\n    }\\n\\n    .Checkbox-label {\\n      display: flex;\\n      align-items: center;\\n    }\\n\\n    .excalidraw-tooltip-icon {\\n      width: 1em;\\n      height: 1em;\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 13848 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/CheckboxItem.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ColorPicker/ColorPicker.scss": (
              /*!********************************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ColorPicker/ColorPicker.scss ***!
                \********************************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../packages/excalidraw/node_modules/css-loader/dist/runtime/getUrl.js */ "./node_modules/css-loader/dist/runtime/getUrl.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__);\n// Imports\n\n\n\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(/* asset import */ __webpack_require__(/*! data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMUlEQVQ4T2NkYGAQYcAP3uCTZhw1gGGYhAGBZIA/nYDCgBDAm9BGDWAAJyRCgLaBCAAgXwixzAS0pgAAAABJRU5ErkJggg== */ "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMUlEQVQ4T2NkYGAQYcAP3uCTZhw1gGGYhAGBZIA/nYDCgBDAm9BGDWAAJyRCgLaBCAAgXwixzAS0pgAAAABJRU5ErkJggg=="), __webpack_require__.b);\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .focus-visible-none:focus-visible {\\n  outline: none !important;\\n}\\n.excalidraw .color-picker__heading {\\n  padding: 0 0.5rem;\\n  font-size: 0.75rem;\\n  text-align: left;\\n}\\n.excalidraw .color-picker-container {\\n  display: grid;\\n  grid-template-columns: 1fr 20px 1.625rem;\\n  padding: 0.25rem 0px;\\n  align-items: center;\\n}\\n.excalidraw--mobile.excalidraw .color-picker-container {\\n  max-width: 175px;\\n}\\n\\n.excalidraw .color-picker__top-picks {\\n  display: flex;\\n  justify-content: space-between;\\n}\\n.excalidraw .color-picker__button {\\n  --radius: 0.25rem;\\n  padding: 0;\\n  margin: 0;\\n  width: 1.35rem;\\n  height: 1.35rem;\\n  border: 1px solid var(--color-gray-30);\\n  border-radius: var(--radius);\\n  filter: var(--theme-filter);\\n  background-color: var(--swatch-color);\\n  background-position: left center;\\n  position: relative;\\n  font-family: inherit;\\n  box-sizing: border-box;\\n}\\n.excalidraw .color-picker__button:hover::after {\\n  content: \\"\\";\\n  position: absolute;\\n  top: -2px;\\n  left: -2px;\\n  right: -2px;\\n  bottom: -2px;\\n  box-shadow: 0 0 0 1px var(--color-gray-30);\\n  border-radius: calc(var(--radius) + 1px);\\n  filter: var(--theme-filter);\\n}\\n.excalidraw .color-picker__button.active .color-picker__button-outline {\\n  position: absolute;\\n  top: -2px;\\n  left: -2px;\\n  right: -2px;\\n  bottom: -2px;\\n  box-shadow: 0 0 0 1px var(--color-primary-darkest);\\n  z-index: 1;\\n  border-radius: calc(var(--radius) + 1px);\\n  filter: var(--theme-filter);\\n}\\n.excalidraw .color-picker__button:focus-visible {\\n  outline: none;\\n}\\n.excalidraw .color-picker__button:focus-visible::after {\\n  content: \\"\\";\\n  position: absolute;\\n  top: -4px;\\n  right: -4px;\\n  bottom: -4px;\\n  left: -4px;\\n  border: 3px solid var(--focus-highlight-color);\\n  border-radius: calc(var(--radius) + 1px);\\n}\\n.excalidraw .color-picker__button:focus-visible.active .color-picker__button-outline {\\n  display: none;\\n}\\n.excalidraw .color-picker__button--large {\\n  --radius: 0.5rem;\\n  width: 1.875rem;\\n  height: 1.875rem;\\n}\\n.excalidraw .color-picker__button.is-transparent {\\n  background-image: url(" + ___CSS_LOADER_URL_REPLACEMENT_0___ + ");\\n}\\n.excalidraw .color-picker__button--no-focus-visible {\\n  border: 0;\\n}\\n.excalidraw .color-picker__button--no-focus-visible::after {\\n  display: none;\\n}\\n.excalidraw .color-picker__button--no-focus-visible:focus-visible {\\n  outline: none !important;\\n}\\n.excalidraw .color-picker__button.active-color {\\n  border-radius: calc(var(--radius) + 1px);\\n  width: 1.625rem;\\n  height: 1.625rem;\\n}\\n.excalidraw .color-picker__button__hotkey-label {\\n  position: absolute;\\n  right: 4px;\\n  bottom: 4px;\\n  filter: none;\\n  font-size: 11px;\\n}\\n.excalidraw .color-picker {\\n  background: var(--popup-bg-color);\\n  border: 0 solid rgba(255, 255, 255, 0.25);\\n  box-shadow: rgba(0, 0, 0, 0.25) 0 1px 4px;\\n  border-radius: 4px;\\n  position: absolute;\\n}\\n:root[dir=ltr] .excalidraw .color-picker {\\n  left: -5.5px;\\n}\\n:root[dir=rtl] .excalidraw .color-picker {\\n  right: -5.5px;\\n}\\n.excalidraw .color-picker-control-container {\\n  display: grid;\\n  grid-template-columns: auto 1fr;\\n  align-items: center;\\n  column-gap: 0.5rem;\\n}\\n.excalidraw .color-picker-control-container + .popover {\\n  position: static;\\n}\\n.excalidraw .color-picker-popover-container {\\n  margin-top: -0.25rem;\\n}\\n:root[dir=ltr] .excalidraw .color-picker-popover-container {\\n  margin-left: 0.5rem;\\n}\\n:root[dir=rtl] .excalidraw .color-picker-popover-container {\\n  margin-left: -3rem;\\n}\\n.excalidraw .color-picker-triangle {\\n  width: 0;\\n  height: 0;\\n  border-style: solid;\\n  border-width: 0 9px 10px;\\n  border-color: transparent transparent var(--popup-bg-color);\\n  position: absolute;\\n  top: 10px;\\n}\\n:root[dir=ltr] .excalidraw .color-picker-triangle {\\n  transform: rotate(270deg);\\n  left: -14px;\\n}\\n:root[dir=rtl] .excalidraw .color-picker-triangle {\\n  transform: rotate(90deg);\\n  right: -14px;\\n}\\n.excalidraw .color-picker-triangle-shadow {\\n  border-color: transparent transparent rgba(0, 0, 0, 0.1);\\n}\\n:root[dir=ltr] .excalidraw .color-picker-triangle-shadow {\\n  left: -14px;\\n}\\n:root[dir=rtl] .excalidraw .color-picker-triangle-shadow {\\n  right: -16px;\\n}\\n.excalidraw .color-picker-content {\\n  display: flex;\\n  flex-direction: column;\\n  gap: 0.75rem;\\n  outline: none;\\n}\\n.excalidraw .color-picker-content--default {\\n  padding: 0.5rem;\\n  display: grid;\\n  grid-template-columns: repeat(5, 1.875rem);\\n  grid-gap: 0.25rem;\\n  border-radius: 4px;\\n}\\n.excalidraw .color-picker-content--default:focus {\\n  outline: none;\\n  box-shadow: 0 0 0 2px var(--focus-highlight-color);\\n}\\n.excalidraw .color-picker-content--canvas {\\n  display: flex;\\n  flex-direction: column;\\n  padding: 0.25rem;\\n}\\n.excalidraw .color-picker-content--canvas-title {\\n  color: #868e96;\\n  font-size: 12px;\\n  padding: 0 0.25rem;\\n}\\n.excalidraw .color-picker-content--canvas-colors {\\n  padding: 0.5rem 0;\\n}\\n.excalidraw .color-picker-content--canvas-colors .color-picker-swatch {\\n  margin: 0 0.25rem;\\n}\\n.excalidraw .color-picker-content .color-input-container {\\n  grid-column: 1/span 5;\\n}\\n.excalidraw .color-picker-swatch {\\n  position: relative;\\n  height: 1.875rem;\\n  width: 1.875rem;\\n  cursor: pointer;\\n  border-radius: 4px;\\n  margin: 0;\\n  box-sizing: border-box;\\n  border: 1px solid #ddd;\\n  background-color: currentColor !important;\\n  filter: var(--theme-filter);\\n}\\n.excalidraw .color-picker-swatch:focus {\\n  /* TODO: only show the border when the color is too light to see as a shadow */\\n  box-shadow: 0 0 4px 1px currentColor;\\n  border-color: var(--select-highlight-color);\\n}\\n.excalidraw .color-picker-transparent {\\n  border-radius: 4px;\\n  box-shadow: rgba(0, 0, 0, 0.1) 0 0 0 1px inset;\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n}\\n.excalidraw .color-picker-transparent,\\n.excalidraw .color-picker-label-swatch {\\n  background: url(" + ___CSS_LOADER_URL_REPLACEMENT_0___ + ") left center;\\n}\\n.excalidraw .color-picker-hash {\\n  height: var(--default-button-size);\\n  flex-shrink: 0;\\n  padding: 0.5rem 0.5rem 0.5rem 0.75rem;\\n  border: 1px solid var(--default-border-color);\\n  border-right: 0;\\n  box-sizing: border-box;\\n  color: var(--input-label-color);\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  position: relative;\\n}\\n:root[dir=ltr] .excalidraw .color-picker-hash {\\n  border-radius: var(--border-radius-lg) 0 0 var(--border-radius-lg);\\n}\\n:root[dir=rtl] .excalidraw .color-picker-hash {\\n  border-radius: 0 var(--border-radius-lg) var(--border-radius-lg) 0;\\n  border-right: 1px solid var(--default-border-color);\\n  border-left: 0;\\n}\\n.excalidraw .color-input-container {\\n  display: flex;\\n}\\n.excalidraw .color-input-container:focus-within {\\n  box-shadow: 0 0 0 1px var(--color-primary-darkest);\\n  border-radius: var(--border-radius-lg);\\n}\\n.excalidraw .color-picker__input-label {\\n  display: grid;\\n  grid-template-columns: auto 1fr auto auto;\\n  gap: 8px;\\n  align-items: center;\\n  border: 1px solid var(--default-border-color);\\n  border-radius: 8px;\\n  padding: 0 12px;\\n  margin: 8px;\\n  box-sizing: border-box;\\n}\\n.excalidraw .color-picker__input-label:focus-within {\\n  box-shadow: 0 0 0 1px var(--color-primary-darkest);\\n  border-radius: var(--border-radius-lg);\\n}\\n.excalidraw .color-picker__input-hash {\\n  padding: 0 0.25rem;\\n}\\n.excalidraw .color-picker-input {\\n  box-sizing: border-box;\\n  width: 100%;\\n  margin: 0;\\n  font-size: 0.875rem;\\n  font-family: inherit;\\n  background-color: transparent;\\n  color: var(--text-primary-color);\\n  border: 0;\\n  outline: none;\\n  height: var(--default-button-size);\\n  border: 1px solid var(--default-border-color);\\n  border-left: 0;\\n  letter-spacing: 0.4px;\\n  padding: 0.5rem;\\n  padding-left: 0.25rem;\\n  appearance: none;\\n}\\n:root[dir=ltr] .excalidraw .color-picker-input {\\n  border-radius: 0 var(--border-radius-lg) var(--border-radius-lg) 0;\\n}\\n:root[dir=rtl] .excalidraw .color-picker-input {\\n  border-radius: var(--border-radius-lg) 0 0 var(--border-radius-lg);\\n  border-left: 1px solid var(--default-border-color);\\n  border-right: 0;\\n}\\n.excalidraw .color-picker-input:focus-visible {\\n  box-shadow: none;\\n}\\n.excalidraw .color-picker-label-swatch-container {\\n  border: 1px solid var(--default-border-color);\\n  border-radius: var(--border-radius-lg);\\n  width: var(--default-button-size);\\n  height: var(--default-button-size);\\n  box-sizing: border-box;\\n  overflow: hidden;\\n}\\n.excalidraw .color-picker-label-swatch {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n  background-color: var(--swatch-color) !important;\\n  overflow: hidden;\\n  position: relative;\\n  filter: var(--theme-filter);\\n  border: 0 !important;\\n}\\n.excalidraw .color-picker-label-swatch svg {\\n  width: var(--button-width, var(--lg-icon-size));\\n  height: var(--button-height, var(--lg-icon-size));\\n}\\n.excalidraw .color-picker-label-swatch:hover {\\n  background-color: var(--button-hover-bg, var(--island-bg-color));\\n  border-color: var(--button-hover-border, var(--button-border, var(--default-border-color)));\\n  color: var(--button-hover-color, var(--button-color, var(--text-primary-color, inherit)));\\n}\\n.excalidraw .color-picker-label-swatch:active {\\n  background-color: var(--button-active-bg, var(--island-bg-color));\\n  border-color: var(--button-active-border, var(--color-primary-darkest));\\n}\\n.excalidraw .color-picker-label-swatch.active {\\n  background-color: var(--button-selected-bg, var(--color-surface-primary-container));\\n  border-color: var(--button-selected-border, var(--color-surface-primary-container));\\n}\\n.excalidraw .color-picker-label-swatch.active:hover {\\n  background-color: var(--button-selected-hover-bg, var(--color-surface-primary-container));\\n}\\n.excalidraw .color-picker-label-swatch.active svg {\\n  color: var(--button-color, var(--color-on-primary-container));\\n}\\n.excalidraw .color-picker-label-swatch:after {\\n  content: \\"\\";\\n  position: absolute;\\n  top: 0;\\n  left: 0;\\n  width: 100%;\\n  height: 100%;\\n  background: var(--swatch-color);\\n}\\n.excalidraw .color-picker-keybinding {\\n  position: absolute;\\n  bottom: 2px;\\n  font-size: 0.7em;\\n}\\n:root[dir=ltr] .excalidraw .color-picker-keybinding {\\n  right: 2px;\\n}\\n:root[dir=rtl] .excalidraw .color-picker-keybinding {\\n  left: 2px;\\n}\\n.excalidraw--mobile.excalidraw .color-picker-keybinding {\\n  display: none;\\n}\\n\\n.excalidraw .color-picker-type-canvasBackground .color-picker-keybinding {\\n  color: #aaa;\\n}\\n.excalidraw .color-picker-type-elementBackground .color-picker-keybinding {\\n  color: #ffffff;\\n}\\n.excalidraw .color-picker-swatch[aria-label=transparent] .color-picker-keybinding {\\n  color: #aaa;\\n}\\n.excalidraw .color-picker-type-elementStroke .color-picker-keybinding {\\n  color: #d4d4d4;\\n}\\n.excalidraw.theme--dark .color-picker-type-elementBackground .color-picker-keybinding {\\n  color: #000000;\\n}\\n.excalidraw.theme--dark .color-picker-swatch[aria-label=transparent] .color-picker-keybinding {\\n  color: #000000;\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/ColorPicker/ColorPicker.scss","webpack://./../../../node_modules/open-color/open-color.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AACI;EACE,wBAAA;AAEN;AAEE;EACE,iBAAA;EACA,kBAAA;EACA,gBAAA;AAAJ;AAGE;EACE,aAAA;EACA,wCAAA;EACA,oBAAA;EACA,mBAAA;AADJ;ADfW;ECmBL,gBAAA;AADN;;AAKE;EACE,aAAA;EACA,8BAAA;AAFJ;AAKE;EACE,iBAAA;EAEA,UAAA;EACA,SAAA;EACA,cAAA;EACA,eAAA;EACA,sCAAA;EACA,4BAAA;EACA,2BAAA;EACA,qCAAA;EACA,gCAAA;EACA,kBAAA;EACA,oBAAA;EACA,sBAAA;AAJJ;AAOM;EACE,WAAA;EACA,kBAAA;EACA,SAAA;EACA,UAAA;EACA,WAAA;EACA,YAAA;EACA,0CAAA;EACA,wCAAA;EACA,2BAAA;AALR;AAUM;EACE,kBAAA;EACA,SAAA;EACA,UAAA;EACA,WAAA;EACA,YAAA;EACA,kDAAA;EACA,UAAA;EACA,wCAAA;EACA,2BAAA;AARR;AAYI;EACE,aAAA;AAVN;AAYM;EACE,WAAA;EACA,kBAAA;EACA,SAAA;EACA,WAAA;EACA,YAAA;EACA,UAAA;EACA,8CAAA;EACA,wCAAA;AAVR;AAcQ;EACE,aAAA;AAZV;AAiBI;EACE,gBAAA;EACA,eAAA;EACA,gBAAA;AAfN;AAkBI;EACE,yDAAA;AAhBN;AAmBI;EACE,SAAA;AAjBN;AAkBM;EACE,aAAA;AAhBR;AAkBM;EACE,wBAAA;AAhBR;AAoBI;EACE,wCAAA;EACA,eAAA;EACA,gBAAA;AAlBN;AAsBE;EACE,kBAAA;EACA,UAAA;EACA,WAAA;EACA,YAAA;EACA,eAAA;AApBJ;AAuBE;EACE,iCAAA;EACA,yCAAA;EACA,yCAAA;EACA,kBAAA;EACA,kBAAA;AArBJ;AAuBI;EACE,YAAA;AArBN;AAwBI;EACE,aAAA;AAtBN;AA0BE;EACE,aAAA;EACA,+BAAA;EACA,mBAAA;EACA,kBAAA;AAxBJ;AA2BE;EACE,gBAAA;AAzBJ;AA4BE;EACE,oBAAA;AA1BJ;AA4BI;EACE,mBAAA;AA1BN;AA6BI;EACE,kBAAA;AA3BN;AA+BE;EACE,QAAA;EACA,SAAA;EACA,mBAAA;EACA,wBAAA;EACA,2DAAA;EACA,kBAAA;EACA,SAAA;AA7BJ;AA+BI;EACE,yBAAA;EACA,WAAA;AA7BN;AAgCI;EACE,wBAAA;EACA,YAAA;AA9BN;AAkCE;EACE,wDAAA;AAhCJ;AAkCI;EACE,WAAA;AAhCN;AAmCI;EACE,YAAA;AAjCN;AAqCE;EACE,aAAA;EACA,sBAAA;EACA,YAAA;EACA,aAAA;AAnCJ;AAsCE;EACE,eAAA;EACA,aAAA;EACA,0CAAA;EACA,iBAAA;EACA,kBAAA;AApCJ;AAsCI;EACE,aAAA;EACA,kDAAA;AApCN;AAwCE;EACE,aAAA;EACA,sBAAA;EACA,gBAAA;AAtCJ;AAwCI;EACE,cC/LM;EDgMN,eAAA;EACA,kBAAA;AAtCN;AAyCI;EACE,iBAAA;AAvCN;AAyCM;EACE,iBAAA;AAvCR;AA4CE;EACE,qBAAA;AA1CJ;AA6CE;EACE,kBAAA;EACA,gBAAA;EACA,eAAA;EACA,eAAA;EACA,kBAAA;EACA,SAAA;EACA,sBAAA;EACA,sBAAA;EACA,yCAAA;EACA,2BAAA;AA3CJ;AA6CI;EACE,8EAAA;EACA,oCAAA;EACA,2CAAA;AA3CN;AA+CE;EACE,kBAAA;EACA,8CAAA;EACA,kBAAA;EACA,MAAA;EACA,QAAA;EACA,SAAA;EACA,OAAA;AA7CJ;AAgDE;;EAEE,+DAAA;AA9CJ;AAkDE;EACE,kCAAA;EACA,cAAA;EACA,qCAAA;EACA,6CAAA;EACA,eAAA;EACA,sBAAA;EAYA,+BAAA;EACA,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,kBAAA;AA3DJ;AA6CI;EACE,kEAAA;AA3CN;AA8CI;EACE,kEAAA;EACA,mDAAA;EACA,cAAA;AA5CN;AAsDE;EACE,aAAA;AApDJ;AAsDI;EACE,kDAAA;EACA,sCAAA;AApDN;AAwDE;EACE,aAAA;EACA,yCAAA;EACA,QAAA;EACA,mBAAA;EACA,6CAAA;EACA,kBAAA;EACA,eAAA;EACA,WAAA;EACA,sBAAA;AAtDJ;AAwDI;EACE,kDAAA;EACA,sCAAA;AAtDN;AA0DE;EACE,kBAAA;AAxDJ;AA2DE;EACE,sBAAA;EACA,WAAA;EACA,SAAA;EACA,mBAAA;EACA,oBAAA;EACA,6BAAA;EACA,gCAAA;EACA,SAAA;EACA,aAAA;EACA,kCAAA;EACA,6CAAA;EACA,cAAA;EACA,qBAAA;EAYA,eAAA;EACA,qBAAA;EACA,gBAAA;AApEJ;AAwDI;EACE,kEAAA;AAtDN;AAyDI;EACE,kEAAA;EACA,kDAAA;EACA,eAAA;AAvDN;AA8DI;EACE,gBAAA;AA5DN;AAgEE;EACE,6CAAA;EACA,sCAAA;EACA,iCAAA;EACA,kCAAA;EACA,sBAAA;EACA,gBAAA;AA9DJ;AAiEE;EDnUA,aAAA;EACA,uBAAA;EACA,mBAAA;EACA,iBAAA;EACA,sDAAA;EACA,wDAAA;EACA,sBAAA;EACA,iBAAA;EACA,mBAAA;EACA,+DAAA;EACA,sCAAA;EACA,eAAA;EACA,0DAAA;EACA,mDAAA;ECwTE,gDAAA;EACA,gBAAA;EACA,kBAAA;EACA,2BAAA;EACA,oBAAA;AAlDJ;ADxQE;EACE,+CAAA;EACA,iDAAA;AC0QJ;ADvQE;EACE,gEAAA;EACA,2FAAA;EAIA,yFAAA;ACsQJ;ADhQE;EACE,iEAAA;EACA,uEAAA;ACkQJ;AD/PE;EACE,mFAAA;EAIA,mFAAA;AC8PJ;ADzPI;EACE,yFAAA;AC2PN;ADrPI;EACE,6DAAA;ACuPN;AA6BI;EACE,WAAA;EACA,kBAAA;EACA,MAAA;EACA,OAAA;EACA,WAAA;EACA,YAAA;EACA,+BAAA;AA3BN;AA+BE;EACE,kBAAA;EACA,WAAA;EACA,gBAAA;AA7BJ;AA+BI;EACE,UAAA;AA7BN;AAgCI;EACE,SAAA;AA9BN;ADvXW;ECyZL,aAAA;AA/BN;;AAmCE;EACE,WAAA;AAhCJ;AAmCE;EACE,cC1Ze;ADyXnB;AAoCE;EACE,WAAA;AAlCJ;AAqCE;EACE,cAAA;AAnCJ;AAuCI;EACE,cCtaa;ADiYnB;AAuCI;EACE,cCzaa;ADoYnB","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../../css/variables.module\\";\\n\\n.excalidraw {\\n  .focus-visible-none {\\n    &:focus-visible {\\n      outline: none !important;\\n    }\\n  }\\n\\n  .color-picker__heading {\\n    padding: 0 0.5rem;\\n    font-size: 0.75rem;\\n    text-align: left;\\n  }\\n\\n  .color-picker-container {\\n    display: grid;\\n    grid-template-columns: 1fr 20px 1.625rem;\\n    padding: 0.25rem 0px;\\n    align-items: center;\\n\\n    @include isMobile {\\n      max-width: 175px;\\n    }\\n  }\\n\\n  .color-picker__top-picks {\\n    display: flex;\\n    justify-content: space-between;\\n  }\\n\\n  .color-picker__button {\\n    --radius: 0.25rem;\\n\\n    padding: 0;\\n    margin: 0;\\n    width: 1.35rem;\\n    height: 1.35rem;\\n    border: 1px solid var(--color-gray-30);\\n    border-radius: var(--radius);\\n    filter: var(--theme-filter);\\n    background-color: var(--swatch-color);\\n    background-position: left center;\\n    position: relative;\\n    font-family: inherit;\\n    box-sizing: border-box;\\n\\n    &:hover {\\n      &::after {\\n        content: \\"\\";\\n        position: absolute;\\n        top: -2px;\\n        left: -2px;\\n        right: -2px;\\n        bottom: -2px;\\n        box-shadow: 0 0 0 1px var(--color-gray-30);\\n        border-radius: calc(var(--radius) + 1px);\\n        filter: var(--theme-filter);\\n      }\\n    }\\n\\n    &.active {\\n      .color-picker__button-outline {\\n        position: absolute;\\n        top: -2px;\\n        left: -2px;\\n        right: -2px;\\n        bottom: -2px;\\n        box-shadow: 0 0 0 1px var(--color-primary-darkest);\\n        z-index: 1; // due hover state so this has preference\\n        border-radius: calc(var(--radius) + 1px);\\n        filter: var(--theme-filter);\\n      }\\n    }\\n\\n    &:focus-visible {\\n      outline: none;\\n\\n      &::after {\\n        content: \\"\\";\\n        position: absolute;\\n        top: -4px;\\n        right: -4px;\\n        bottom: -4px;\\n        left: -4px;\\n        border: 3px solid var(--focus-highlight-color);\\n        border-radius: calc(var(--radius) + 1px);\\n      }\\n\\n      &.active {\\n        .color-picker__button-outline {\\n          display: none;\\n        }\\n      }\\n    }\\n\\n    &--large {\\n      --radius: 0.5rem;\\n      width: 1.875rem;\\n      height: 1.875rem;\\n    }\\n\\n    &.is-transparent {\\n      background-image: url(\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMUlEQVQ4T2NkYGAQYcAP3uCTZhw1gGGYhAGBZIA/nYDCgBDAm9BGDWAAJyRCgLaBCAAgXwixzAS0pgAAAABJRU5ErkJggg==\\");\\n    }\\n\\n    &--no-focus-visible {\\n      border: 0;\\n      &::after {\\n        display: none;\\n      }\\n      &:focus-visible {\\n        outline: none !important;\\n      }\\n    }\\n\\n    &.active-color {\\n      border-radius: calc(var(--radius) + 1px);\\n      width: 1.625rem;\\n      height: 1.625rem;\\n    }\\n  }\\n\\n  .color-picker__button__hotkey-label {\\n    position: absolute;\\n    right: 4px;\\n    bottom: 4px;\\n    filter: none;\\n    font-size: 11px;\\n  }\\n\\n  .color-picker {\\n    background: var(--popup-bg-color);\\n    border: 0 solid transparentize($oc-white, 0.75);\\n    box-shadow: transparentize($oc-black, 0.75) 0 1px 4px;\\n    border-radius: 4px;\\n    position: absolute;\\n\\n    :root[dir=\\"ltr\\"] & {\\n      left: -5.5px;\\n    }\\n\\n    :root[dir=\\"rtl\\"] & {\\n      right: -5.5px;\\n    }\\n  }\\n\\n  .color-picker-control-container {\\n    display: grid;\\n    grid-template-columns: auto 1fr;\\n    align-items: center;\\n    column-gap: 0.5rem;\\n  }\\n\\n  .color-picker-control-container + .popover {\\n    position: static;\\n  }\\n\\n  .color-picker-popover-container {\\n    margin-top: -0.25rem;\\n\\n    :root[dir=\\"ltr\\"] & {\\n      margin-left: 0.5rem;\\n    }\\n\\n    :root[dir=\\"rtl\\"] & {\\n      margin-left: -3rem;\\n    }\\n  }\\n\\n  .color-picker-triangle {\\n    width: 0;\\n    height: 0;\\n    border-style: solid;\\n    border-width: 0 9px 10px;\\n    border-color: transparent transparent var(--popup-bg-color);\\n    position: absolute;\\n    top: 10px;\\n\\n    :root[dir=\\"ltr\\"] & {\\n      transform: rotate(270deg);\\n      left: -14px;\\n    }\\n\\n    :root[dir=\\"rtl\\"] & {\\n      transform: rotate(90deg);\\n      right: -14px;\\n    }\\n  }\\n\\n  .color-picker-triangle-shadow {\\n    border-color: transparent transparent transparentize($oc-black, 0.9);\\n\\n    :root[dir=\\"ltr\\"] & {\\n      left: -14px;\\n    }\\n\\n    :root[dir=\\"rtl\\"] & {\\n      right: -16px;\\n    }\\n  }\\n\\n  .color-picker-content {\\n    display: flex;\\n    flex-direction: column;\\n    gap: 0.75rem;\\n    outline: none;\\n  }\\n\\n  .color-picker-content--default {\\n    padding: 0.5rem;\\n    display: grid;\\n    grid-template-columns: repeat(5, 1.875rem);\\n    grid-gap: 0.25rem;\\n    border-radius: 4px;\\n\\n    &:focus {\\n      outline: none;\\n      box-shadow: 0 0 0 2px var(--focus-highlight-color);\\n    }\\n  }\\n\\n  .color-picker-content--canvas {\\n    display: flex;\\n    flex-direction: column;\\n    padding: 0.25rem;\\n\\n    &-title {\\n      color: $oc-gray-6;\\n      font-size: 12px;\\n      padding: 0 0.25rem;\\n    }\\n\\n    &-colors {\\n      padding: 0.5rem 0;\\n\\n      .color-picker-swatch {\\n        margin: 0 0.25rem;\\n      }\\n    }\\n  }\\n\\n  .color-picker-content .color-input-container {\\n    grid-column: 1 / span 5;\\n  }\\n\\n  .color-picker-swatch {\\n    position: relative;\\n    height: 1.875rem;\\n    width: 1.875rem;\\n    cursor: pointer;\\n    border-radius: 4px;\\n    margin: 0;\\n    box-sizing: border-box;\\n    border: 1px solid #ddd;\\n    background-color: currentColor !important;\\n    filter: var(--theme-filter);\\n\\n    &:focus {\\n      /* TODO: only show the border when the color is too light to see as a shadow */\\n      box-shadow: 0 0 4px 1px currentColor;\\n      border-color: var(--select-highlight-color);\\n    }\\n  }\\n\\n  .color-picker-transparent {\\n    border-radius: 4px;\\n    box-shadow: transparentize($oc-black, 0.9) 0 0 0 1px inset;\\n    position: absolute;\\n    top: 0;\\n    right: 0;\\n    bottom: 0;\\n    left: 0;\\n  }\\n\\n  .color-picker-transparent,\\n  .color-picker-label-swatch {\\n    background: url(\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMUlEQVQ4T2NkYGAQYcAP3uCTZhw1gGGYhAGBZIA/nYDCgBDAm9BGDWAAJyRCgLaBCAAgXwixzAS0pgAAAABJRU5ErkJggg==\\")\\n      left center;\\n  }\\n\\n  .color-picker-hash {\\n    height: var(--default-button-size);\\n    flex-shrink: 0;\\n    padding: 0.5rem 0.5rem 0.5rem 0.75rem;\\n    border: 1px solid var(--default-border-color);\\n    border-right: 0;\\n    box-sizing: border-box;\\n\\n    :root[dir=\\"ltr\\"] & {\\n      border-radius: var(--border-radius-lg) 0 0 var(--border-radius-lg);\\n    }\\n\\n    :root[dir=\\"rtl\\"] & {\\n      border-radius: 0 var(--border-radius-lg) var(--border-radius-lg) 0;\\n      border-right: 1px solid var(--default-border-color);\\n      border-left: 0;\\n    }\\n\\n    color: var(--input-label-color);\\n    display: flex;\\n    align-items: center;\\n    justify-content: center;\\n    position: relative;\\n  }\\n\\n  .color-input-container {\\n    display: flex;\\n\\n    &:focus-within {\\n      box-shadow: 0 0 0 1px var(--color-primary-darkest);\\n      border-radius: var(--border-radius-lg);\\n    }\\n  }\\n\\n  .color-picker__input-label {\\n    display: grid;\\n    grid-template-columns: auto 1fr auto auto;\\n    gap: 8px;\\n    align-items: center;\\n    border: 1px solid var(--default-border-color);\\n    border-radius: 8px;\\n    padding: 0 12px;\\n    margin: 8px;\\n    box-sizing: border-box;\\n\\n    &:focus-within {\\n      box-shadow: 0 0 0 1px var(--color-primary-darkest);\\n      border-radius: var(--border-radius-lg);\\n    }\\n  }\\n\\n  .color-picker__input-hash {\\n    padding: 0 0.25rem;\\n  }\\n\\n  .color-picker-input {\\n    box-sizing: border-box;\\n    width: 100%;\\n    margin: 0;\\n    font-size: 0.875rem;\\n    font-family: inherit;\\n    background-color: transparent;\\n    color: var(--text-primary-color);\\n    border: 0;\\n    outline: none;\\n    height: var(--default-button-size);\\n    border: 1px solid var(--default-border-color);\\n    border-left: 0;\\n    letter-spacing: 0.4px;\\n\\n    :root[dir=\\"ltr\\"] & {\\n      border-radius: 0 var(--border-radius-lg) var(--border-radius-lg) 0;\\n    }\\n\\n    :root[dir=\\"rtl\\"] & {\\n      border-radius: var(--border-radius-lg) 0 0 var(--border-radius-lg);\\n      border-left: 1px solid var(--default-border-color);\\n      border-right: 0;\\n    }\\n\\n    padding: 0.5rem;\\n    padding-left: 0.25rem;\\n    appearance: none;\\n\\n    &:focus-visible {\\n      box-shadow: none;\\n    }\\n  }\\n\\n  .color-picker-label-swatch-container {\\n    border: 1px solid var(--default-border-color);\\n    border-radius: var(--border-radius-lg);\\n    width: var(--default-button-size);\\n    height: var(--default-button-size);\\n    box-sizing: border-box;\\n    overflow: hidden;\\n  }\\n\\n  .color-picker-label-swatch {\\n    @include outlineButtonStyles;\\n    background-color: var(--swatch-color) !important;\\n    overflow: hidden;\\n    position: relative;\\n    filter: var(--theme-filter);\\n    border: 0 !important;\\n\\n    &:after {\\n      content: \\"\\";\\n      position: absolute;\\n      top: 0;\\n      left: 0;\\n      width: 100%;\\n      height: 100%;\\n      background: var(--swatch-color);\\n    }\\n  }\\n\\n  .color-picker-keybinding {\\n    position: absolute;\\n    bottom: 2px;\\n    font-size: 0.7em;\\n\\n    :root[dir=\\"ltr\\"] & {\\n      right: 2px;\\n    }\\n\\n    :root[dir=\\"rtl\\"] & {\\n      left: 2px;\\n    }\\n\\n    @include isMobile {\\n      display: none;\\n    }\\n  }\\n\\n  .color-picker-type-canvasBackground .color-picker-keybinding {\\n    color: #aaa;\\n  }\\n\\n  .color-picker-type-elementBackground .color-picker-keybinding {\\n    color: $oc-white;\\n  }\\n\\n  .color-picker-swatch[aria-label=\\"transparent\\"] .color-picker-keybinding {\\n    color: #aaa;\\n  }\\n\\n  .color-picker-type-elementStroke .color-picker-keybinding {\\n    color: #d4d4d4;\\n  }\\n\\n  &.theme--dark {\\n    .color-picker-type-elementBackground .color-picker-keybinding {\\n      color: $oc-black;\\n    }\\n    .color-picker-swatch[aria-label=\\"transparent\\"] .color-picker-keybinding {\\n      color: $oc-black;\\n    }\\n  }\\n}\\n","//\\n//\\n//  \u{1D5D6} \u{1D5E2} \u{1D5DF} \u{1D5E2} \u{1D5E5}\\n//  v 1.9.1\\n//\\n//  \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\\n\\n\\n//  General\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-white:         #ffffff;\\n$oc-black:         #000000;\\n\\n\\n//  Gray\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-gray-list: (\\n  \\"0\\": #f8f9fa,\\n  \\"1\\": #f1f3f5,\\n  \\"2\\": #e9ecef,\\n  \\"3\\": #dee2e6,\\n  \\"4\\": #ced4da,\\n  \\"5\\": #adb5bd,\\n  \\"6\\": #868e96,\\n  \\"7\\": #495057,\\n  \\"8\\": #343a40,\\n  \\"9\\": #212529\\n);\\n\\n$oc-gray-0: map-get($oc-gray-list, \\"0\\");\\n$oc-gray-1: map-get($oc-gray-list, \\"1\\");\\n$oc-gray-2: map-get($oc-gray-list, \\"2\\");\\n$oc-gray-3: map-get($oc-gray-list, \\"3\\");\\n$oc-gray-4: map-get($oc-gray-list, \\"4\\");\\n$oc-gray-5: map-get($oc-gray-list, \\"5\\");\\n$oc-gray-6: map-get($oc-gray-list, \\"6\\");\\n$oc-gray-7: map-get($oc-gray-list, \\"7\\");\\n$oc-gray-8: map-get($oc-gray-list, \\"8\\");\\n$oc-gray-9: map-get($oc-gray-list, \\"9\\");\\n\\n\\n//  Red\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-red-list: (\\n  \\"0\\": #fff5f5,\\n  \\"1\\": #ffe3e3,\\n  \\"2\\": #ffc9c9,\\n  \\"3\\": #ffa8a8,\\n  \\"4\\": #ff8787,\\n  \\"5\\": #ff6b6b,\\n  \\"6\\": #fa5252,\\n  \\"7\\": #f03e3e,\\n  \\"8\\": #e03131,\\n  \\"9\\": #c92a2a\\n);\\n\\n$oc-red-0: map-get($oc-red-list, \\"0\\");\\n$oc-red-1: map-get($oc-red-list, \\"1\\");\\n$oc-red-2: map-get($oc-red-list, \\"2\\");\\n$oc-red-3: map-get($oc-red-list, \\"3\\");\\n$oc-red-4: map-get($oc-red-list, \\"4\\");\\n$oc-red-5: map-get($oc-red-list, \\"5\\");\\n$oc-red-6: map-get($oc-red-list, \\"6\\");\\n$oc-red-7: map-get($oc-red-list, \\"7\\");\\n$oc-red-8: map-get($oc-red-list, \\"8\\");\\n$oc-red-9: map-get($oc-red-list, \\"9\\");\\n\\n\\n//  Pink\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-pink-list: (\\n  \\"0\\": #fff0f6,\\n  \\"1\\": #ffdeeb,\\n  \\"2\\": #fcc2d7,\\n  \\"3\\": #faa2c1,\\n  \\"4\\": #f783ac,\\n  \\"5\\": #f06595,\\n  \\"6\\": #e64980,\\n  \\"7\\": #d6336c,\\n  \\"8\\": #c2255c,\\n  \\"9\\": #a61e4d\\n);\\n\\n$oc-pink-0: map-get($oc-pink-list, \\"0\\");\\n$oc-pink-1: map-get($oc-pink-list, \\"1\\");\\n$oc-pink-2: map-get($oc-pink-list, \\"2\\");\\n$oc-pink-3: map-get($oc-pink-list, \\"3\\");\\n$oc-pink-4: map-get($oc-pink-list, \\"4\\");\\n$oc-pink-5: map-get($oc-pink-list, \\"5\\");\\n$oc-pink-6: map-get($oc-pink-list, \\"6\\");\\n$oc-pink-7: map-get($oc-pink-list, \\"7\\");\\n$oc-pink-8: map-get($oc-pink-list, \\"8\\");\\n$oc-pink-9: map-get($oc-pink-list, \\"9\\");\\n\\n\\n//  Grape\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-grape-list: (\\n  \\"0\\": #f8f0fc,\\n  \\"1\\": #f3d9fa,\\n  \\"2\\": #eebefa,\\n  \\"3\\": #e599f7,\\n  \\"4\\": #da77f2,\\n  \\"5\\": #cc5de8,\\n  \\"6\\": #be4bdb,\\n  \\"7\\": #ae3ec9,\\n  \\"8\\": #9c36b5,\\n  \\"9\\": #862e9c\\n);\\n\\n$oc-grape-0: map-get($oc-grape-list, \\"0\\");\\n$oc-grape-1: map-get($oc-grape-list, \\"1\\");\\n$oc-grape-2: map-get($oc-grape-list, \\"2\\");\\n$oc-grape-3: map-get($oc-grape-list, \\"3\\");\\n$oc-grape-4: map-get($oc-grape-list, \\"4\\");\\n$oc-grape-5: map-get($oc-grape-list, \\"5\\");\\n$oc-grape-6: map-get($oc-grape-list, \\"6\\");\\n$oc-grape-7: map-get($oc-grape-list, \\"7\\");\\n$oc-grape-8: map-get($oc-grape-list, \\"8\\");\\n$oc-grape-9: map-get($oc-grape-list, \\"9\\");\\n\\n\\n//  Violet\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-violet-list: (\\n  \\"0\\": #f3f0ff,\\n  \\"1\\": #e5dbff,\\n  \\"2\\": #d0bfff,\\n  \\"3\\": #b197fc,\\n  \\"4\\": #9775fa,\\n  \\"5\\": #845ef7,\\n  \\"6\\": #7950f2,\\n  \\"7\\": #7048e8,\\n  \\"8\\": #6741d9,\\n  \\"9\\": #5f3dc4\\n);\\n\\n$oc-violet-0: map-get($oc-violet-list, \\"0\\");\\n$oc-violet-1: map-get($oc-violet-list, \\"1\\");\\n$oc-violet-2: map-get($oc-violet-list, \\"2\\");\\n$oc-violet-3: map-get($oc-violet-list, \\"3\\");\\n$oc-violet-4: map-get($oc-violet-list, \\"4\\");\\n$oc-violet-5: map-get($oc-violet-list, \\"5\\");\\n$oc-violet-6: map-get($oc-violet-list, \\"6\\");\\n$oc-violet-7: map-get($oc-violet-list, \\"7\\");\\n$oc-violet-8: map-get($oc-violet-list, \\"8\\");\\n$oc-violet-9: map-get($oc-violet-list, \\"9\\");\\n\\n\\n//  Indigo\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-indigo-list: (\\n  \\"0\\": #edf2ff,\\n  \\"1\\": #dbe4ff,\\n  \\"2\\": #bac8ff,\\n  \\"3\\": #91a7ff,\\n  \\"4\\": #748ffc,\\n  \\"5\\": #5c7cfa,\\n  \\"6\\": #4c6ef5,\\n  \\"7\\": #4263eb,\\n  \\"8\\": #3b5bdb,\\n  \\"9\\": #364fc7\\n);\\n\\n$oc-indigo-0: map-get($oc-indigo-list, \\"0\\");\\n$oc-indigo-1: map-get($oc-indigo-list, \\"1\\");\\n$oc-indigo-2: map-get($oc-indigo-list, \\"2\\");\\n$oc-indigo-3: map-get($oc-indigo-list, \\"3\\");\\n$oc-indigo-4: map-get($oc-indigo-list, \\"4\\");\\n$oc-indigo-5: map-get($oc-indigo-list, \\"5\\");\\n$oc-indigo-6: map-get($oc-indigo-list, \\"6\\");\\n$oc-indigo-7: map-get($oc-indigo-list, \\"7\\");\\n$oc-indigo-8: map-get($oc-indigo-list, \\"8\\");\\n$oc-indigo-9: map-get($oc-indigo-list, \\"9\\");\\n\\n\\n//  Blue\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-blue-list: (\\n  \\"0\\": #e7f5ff,\\n  \\"1\\": #d0ebff,\\n  \\"2\\": #a5d8ff,\\n  \\"3\\": #74c0fc,\\n  \\"4\\": #4dabf7,\\n  \\"5\\": #339af0,\\n  \\"6\\": #228be6,\\n  \\"7\\": #1c7ed6,\\n  \\"8\\": #1971c2,\\n  \\"9\\": #1864ab\\n);\\n\\n$oc-blue-0: map-get($oc-blue-list, \\"0\\");\\n$oc-blue-1: map-get($oc-blue-list, \\"1\\");\\n$oc-blue-2: map-get($oc-blue-list, \\"2\\");\\n$oc-blue-3: map-get($oc-blue-list, \\"3\\");\\n$oc-blue-4: map-get($oc-blue-list, \\"4\\");\\n$oc-blue-5: map-get($oc-blue-list, \\"5\\");\\n$oc-blue-6: map-get($oc-blue-list, \\"6\\");\\n$oc-blue-7: map-get($oc-blue-list, \\"7\\");\\n$oc-blue-8: map-get($oc-blue-list, \\"8\\");\\n$oc-blue-9: map-get($oc-blue-list, \\"9\\");\\n\\n\\n//  Cyan\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-cyan-list: (\\n  \\"0\\": #e3fafc,\\n  \\"1\\": #c5f6fa,\\n  \\"2\\": #99e9f2,\\n  \\"3\\": #66d9e8,\\n  \\"4\\": #3bc9db,\\n  \\"5\\": #22b8cf,\\n  \\"6\\": #15aabf,\\n  \\"7\\": #1098ad,\\n  \\"8\\": #0c8599,\\n  \\"9\\": #0b7285\\n);\\n\\n$oc-cyan-0: map-get($oc-cyan-list, \\"0\\");\\n$oc-cyan-1: map-get($oc-cyan-list, \\"1\\");\\n$oc-cyan-2: map-get($oc-cyan-list, \\"2\\");\\n$oc-cyan-3: map-get($oc-cyan-list, \\"3\\");\\n$oc-cyan-4: map-get($oc-cyan-list, \\"4\\");\\n$oc-cyan-5: map-get($oc-cyan-list, \\"5\\");\\n$oc-cyan-6: map-get($oc-cyan-list, \\"6\\");\\n$oc-cyan-7: map-get($oc-cyan-list, \\"7\\");\\n$oc-cyan-8: map-get($oc-cyan-list, \\"8\\");\\n$oc-cyan-9: map-get($oc-cyan-list, \\"9\\");\\n\\n\\n//  Teal\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-teal-list: (\\n  \\"0\\": #e6fcf5,\\n  \\"1\\": #c3fae8,\\n  \\"2\\": #96f2d7,\\n  \\"3\\": #63e6be,\\n  \\"4\\": #38d9a9,\\n  \\"5\\": #20c997,\\n  \\"6\\": #12b886,\\n  \\"7\\": #0ca678,\\n  \\"8\\": #099268,\\n  \\"9\\": #087f5b\\n);\\n\\n$oc-teal-0: map-get($oc-teal-list, \\"0\\");\\n$oc-teal-1: map-get($oc-teal-list, \\"1\\");\\n$oc-teal-2: map-get($oc-teal-list, \\"2\\");\\n$oc-teal-3: map-get($oc-teal-list, \\"3\\");\\n$oc-teal-4: map-get($oc-teal-list, \\"4\\");\\n$oc-teal-5: map-get($oc-teal-list, \\"5\\");\\n$oc-teal-6: map-get($oc-teal-list, \\"6\\");\\n$oc-teal-7: map-get($oc-teal-list, \\"7\\");\\n$oc-teal-8: map-get($oc-teal-list, \\"8\\");\\n$oc-teal-9: map-get($oc-teal-list, \\"9\\");\\n\\n\\n//  Green\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-green-list: (\\n  \\"0\\": #ebfbee,\\n  \\"1\\": #d3f9d8,\\n  \\"2\\": #b2f2bb,\\n  \\"3\\": #8ce99a,\\n  \\"4\\": #69db7c,\\n  \\"5\\": #51cf66,\\n  \\"6\\": #40c057,\\n  \\"7\\": #37b24d,\\n  \\"8\\": #2f9e44,\\n  \\"9\\": #2b8a3e\\n);\\n\\n$oc-green-0: map-get($oc-green-list, \\"0\\");\\n$oc-green-1: map-get($oc-green-list, \\"1\\");\\n$oc-green-2: map-get($oc-green-list, \\"2\\");\\n$oc-green-3: map-get($oc-green-list, \\"3\\");\\n$oc-green-4: map-get($oc-green-list, \\"4\\");\\n$oc-green-5: map-get($oc-green-list, \\"5\\");\\n$oc-green-6: map-get($oc-green-list, \\"6\\");\\n$oc-green-7: map-get($oc-green-list, \\"7\\");\\n$oc-green-8: map-get($oc-green-list, \\"8\\");\\n$oc-green-9: map-get($oc-green-list, \\"9\\");\\n\\n\\n//  Lime\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-lime-list: (\\n  \\"0\\": #f4fce3,\\n  \\"1\\": #e9fac8,\\n  \\"2\\": #d8f5a2,\\n  \\"3\\": #c0eb75,\\n  \\"4\\": #a9e34b,\\n  \\"5\\": #94d82d,\\n  \\"6\\": #82c91e,\\n  \\"7\\": #74b816,\\n  \\"8\\": #66a80f,\\n  \\"9\\": #5c940d\\n);\\n\\n$oc-lime-0: map-get($oc-lime-list, \\"0\\");\\n$oc-lime-1: map-get($oc-lime-list, \\"1\\");\\n$oc-lime-2: map-get($oc-lime-list, \\"2\\");\\n$oc-lime-3: map-get($oc-lime-list, \\"3\\");\\n$oc-lime-4: map-get($oc-lime-list, \\"4\\");\\n$oc-lime-5: map-get($oc-lime-list, \\"5\\");\\n$oc-lime-6: map-get($oc-lime-list, \\"6\\");\\n$oc-lime-7: map-get($oc-lime-list, \\"7\\");\\n$oc-lime-8: map-get($oc-lime-list, \\"8\\");\\n$oc-lime-9: map-get($oc-lime-list, \\"9\\");\\n\\n\\n//  Yellow\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-yellow-list: (\\n  \\"0\\": #fff9db,\\n  \\"1\\": #fff3bf,\\n  \\"2\\": #ffec99,\\n  \\"3\\": #ffe066,\\n  \\"4\\": #ffd43b,\\n  \\"5\\": #fcc419,\\n  \\"6\\": #fab005,\\n  \\"7\\": #f59f00,\\n  \\"8\\": #f08c00,\\n  \\"9\\": #e67700\\n);\\n\\n$oc-yellow-0: map-get($oc-yellow-list, \\"0\\");\\n$oc-yellow-1: map-get($oc-yellow-list, \\"1\\");\\n$oc-yellow-2: map-get($oc-yellow-list, \\"2\\");\\n$oc-yellow-3: map-get($oc-yellow-list, \\"3\\");\\n$oc-yellow-4: map-get($oc-yellow-list, \\"4\\");\\n$oc-yellow-5: map-get($oc-yellow-list, \\"5\\");\\n$oc-yellow-6: map-get($oc-yellow-list, \\"6\\");\\n$oc-yellow-7: map-get($oc-yellow-list, \\"7\\");\\n$oc-yellow-8: map-get($oc-yellow-list, \\"8\\");\\n$oc-yellow-9: map-get($oc-yellow-list, \\"9\\");\\n\\n\\n//  Orange\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-orange-list: (\\n  \\"0\\": #fff4e6,\\n  \\"1\\": #ffe8cc,\\n  \\"2\\": #ffd8a8,\\n  \\"3\\": #ffc078,\\n  \\"4\\": #ffa94d,\\n  \\"5\\": #ff922b,\\n  \\"6\\": #fd7e14,\\n  \\"7\\": #f76707,\\n  \\"8\\": #e8590c,\\n  \\"9\\": #d9480f\\n);\\n\\n$oc-orange-0: map-get($oc-orange-list, \\"0\\");\\n$oc-orange-1: map-get($oc-orange-list, \\"1\\");\\n$oc-orange-2: map-get($oc-orange-list, \\"2\\");\\n$oc-orange-3: map-get($oc-orange-list, \\"3\\");\\n$oc-orange-4: map-get($oc-orange-list, \\"4\\");\\n$oc-orange-5: map-get($oc-orange-list, \\"5\\");\\n$oc-orange-6: map-get($oc-orange-list, \\"6\\");\\n$oc-orange-7: map-get($oc-orange-list, \\"7\\");\\n$oc-orange-8: map-get($oc-orange-list, \\"8\\");\\n$oc-orange-9: map-get($oc-orange-list, \\"9\\");\\n\\n\\n//  Color list\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-color-spectrum:   9;\\n\\n$oc-color-list: (\\n  $oc-gray-list:      \\"gray\\",\\n  $oc-red-list:      \\"red\\",\\n  $oc-pink-list:      \\"pink\\",\\n  $oc-grape-list:      \\"grape\\",\\n  $oc-violet-list:      \\"violet\\",\\n  $oc-indigo-list:      \\"indigo\\",\\n  $oc-blue-list:      \\"blue\\",\\n  $oc-cyan-list:      \\"cyan\\",\\n  $oc-teal-list:      \\"teal\\",\\n  $oc-green-list:      \\"green\\",\\n  $oc-lime-list:      \\"lime\\",\\n  $oc-yellow-list:      \\"yellow\\",\\n  $oc-orange-list:      \\"orange\\"\\n);\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 70196 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ColorPicker/ColorPicker.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ConfirmDialog.scss": (
              /*!**********************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ConfirmDialog.scss ***!
                \**********************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .confirm-dialog-buttons {\\n  display: flex;\\n  column-gap: 0.5rem;\\n  justify-content: flex-end;\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/ConfirmDialog.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AACI;EACE,aAAA;EACA,kBAAA;EACA,yBAAA;AAEN","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../css/variables.module\\";\\n\\n.excalidraw {\\n  .confirm-dialog {\\n    &-buttons {\\n      display: flex;\\n      column-gap: 0.5rem;\\n      justify-content: flex-end;\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 7652 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ConfirmDialog.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ContextMenu.scss": (
              /*!********************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ContextMenu.scss ***!
                \********************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, "@charset \\"UTF-8\\";\\n:export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .context-menu {\\n  position: relative;\\n  border-radius: 4px;\\n  box-shadow: 0 3px 10px rgba(0, 0, 0, 0.2);\\n  padding: 0;\\n  list-style: none;\\n  user-select: none;\\n  margin: -0.25rem 0 0 0.125rem;\\n  padding: 0.5rem 0;\\n  background-color: var(--popup-secondary-bg-color);\\n  border: 1px solid var(--button-gray-3);\\n  cursor: default;\\n}\\n.excalidraw .context-menu button {\\n  color: var(--popup-text-color);\\n}\\n.excalidraw .context-menu-item {\\n  position: relative;\\n  width: 100%;\\n  min-width: 9.5rem;\\n  margin: 0;\\n  padding: 0.25rem 1rem 0.25rem 1.25rem;\\n  text-align: start;\\n  border-radius: 0;\\n  background-color: transparent;\\n  border: none;\\n  white-space: nowrap;\\n  font-family: inherit;\\n  display: grid;\\n  grid-template-columns: 1fr 0.2fr;\\n  align-items: center;\\n}\\n.excalidraw .context-menu-item.checkmark::before {\\n  position: absolute;\\n  left: 6px;\\n  margin-bottom: 1px;\\n  content: \\"\u2713\\";\\n}\\n.excalidraw .context-menu-item.dangerous .context-menu-item__label {\\n  color: #f03e3e;\\n}\\n.excalidraw .context-menu-item .context-menu-item__label {\\n  justify-self: start;\\n  margin-inline-end: 20px;\\n}\\n.excalidraw .context-menu-item .context-menu-item__shortcut {\\n  justify-self: end;\\n  opacity: 0.6;\\n  font-family: inherit;\\n  font-size: 0.7rem;\\n}\\n.excalidraw .context-menu-item:hover {\\n  color: var(--popup-bg-color);\\n  background-color: var(--select-highlight-color);\\n}\\n.excalidraw .context-menu-item:hover.dangerous {\\n  background-color: #fa5252;\\n}\\n.excalidraw .context-menu-item:hover.dangerous .context-menu-item__label {\\n  color: var(--popup-bg-color);\\n}\\n.excalidraw .context-menu-item:focus {\\n  z-index: 1;\\n}\\n.excalidraw--mobile.excalidraw .context-menu-item {\\n  display: block;\\n}\\n.excalidraw--mobile.excalidraw .context-menu-item .context-menu-item__label {\\n  margin-inline-end: 0;\\n}\\n.excalidraw--mobile.excalidraw .context-menu-item .context-menu-item__shortcut {\\n  display: none;\\n}\\n\\n.excalidraw .context-menu-item-separator {\\n  border: none;\\n  border-top: 1px solid #adb5bd;\\n}", "",{"version":3,"sources":["webpack://./../../components/ContextMenu.scss","webpack://./../../css/variables.module.scss","webpack://./../../../node_modules/open-color/open-color.scss"],"names":[],"mappings":"AAAA,gBAAgB;ACiIhB;EACE,2CAAA;EACA,wBAAA;AD/HF;;AADE;EACE,kBAAA;EACA,kBAAA;EACA,yCAAA;EACA,UAAA;EACA,gBAAA;EACA,iBAAA;EACA,6BAAA;EACA,iBAAA;EACA,iDAAA;EACA,sCAAA;EACA,eAAA;AAIJ;AADE;EACE,8BAAA;AAGJ;AAAE;EACE,kBAAA;EACA,WAAA;EACA,iBAAA;EACA,SAAA;EACA,qCAAA;EACA,iBAAA;EACA,gBAAA;EACA,6BAAA;EACA,YAAA;EACA,mBAAA;EACA,oBAAA;EAEA,aAAA;EACA,gCAAA;EACA,mBAAA;AACJ;AACI;EACE,kBAAA;EACA,SAAA;EACA,kBAAA;EACA,YAAA;AACN;AAGM;EACE,cEmBG;AFpBX;AAKI;EACE,mBAAA;EACA,uBAAA;AAHN;AAKI;EACE,iBAAA;EACA,YAAA;EACA,oBAAA;EACA,iBAAA;AAHN;AAOE;EACE,4BAAA;EACA,+CAAA;AALJ;AAOI;EAIE,yBENK;AFFX;AAKM;EACE,4BAAA;AAHR;AASE;EACE,UAAA;AAPJ;AAWI;EACE,cAAA;AATN;AAWM;EACE,oBAAA;AATR;AAYM;EACE,aAAA;AAVR;;AAeE;EACE,YAAA;EACA,6BAAA;AAZJ","sourcesContent":["@import \\"../css/variables.module\\";\\n\\n.excalidraw {\\n  .context-menu {\\n    position: relative;\\n    border-radius: 4px;\\n    box-shadow: 0 3px 10px transparentize($oc-black, 0.8);\\n    padding: 0;\\n    list-style: none;\\n    user-select: none;\\n    margin: -0.25rem 0 0 0.125rem;\\n    padding: 0.5rem 0;\\n    background-color: var(--popup-secondary-bg-color);\\n    border: 1px solid var(--button-gray-3);\\n    cursor: default;\\n  }\\n\\n  .context-menu button {\\n    color: var(--popup-text-color);\\n  }\\n\\n  .context-menu-item {\\n    position: relative;\\n    width: 100%;\\n    min-width: 9.5rem;\\n    margin: 0;\\n    padding: 0.25rem 1rem 0.25rem 1.25rem;\\n    text-align: start;\\n    border-radius: 0;\\n    background-color: transparent;\\n    border: none;\\n    white-space: nowrap;\\n    font-family: inherit;\\n\\n    display: grid;\\n    grid-template-columns: 1fr 0.2fr;\\n    align-items: center;\\n\\n    &.checkmark::before {\\n      position: absolute;\\n      left: 6px;\\n      margin-bottom: 1px;\\n      content: \\"\\\\2713\\";\\n    }\\n\\n    &.dangerous {\\n      .context-menu-item__label {\\n        color: $oc-red-7;\\n      }\\n    }\\n\\n    .context-menu-item__label {\\n      justify-self: start;\\n      margin-inline-end: 20px;\\n    }\\n    .context-menu-item__shortcut {\\n      justify-self: end;\\n      opacity: 0.6;\\n      font-family: inherit;\\n      font-size: 0.7rem;\\n    }\\n  }\\n\\n  .context-menu-item:hover {\\n    color: var(--popup-bg-color);\\n    background-color: var(--select-highlight-color);\\n\\n    &.dangerous {\\n      .context-menu-item__label {\\n        color: var(--popup-bg-color);\\n      }\\n      background-color: $oc-red-6;\\n    }\\n  }\\n\\n  .context-menu-item:focus {\\n    z-index: 1;\\n  }\\n\\n  @include isMobile {\\n    .context-menu-item {\\n      display: block;\\n\\n      .context-menu-item__label {\\n        margin-inline-end: 0;\\n      }\\n\\n      .context-menu-item__shortcut {\\n        display: none;\\n      }\\n    }\\n  }\\n\\n  .context-menu-item-separator {\\n    border: none;\\n    border-top: 1px solid $oc-gray-5;\\n  }\\n}\\n","@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","//\\n//\\n//  \u{1D5D6} \u{1D5E2} \u{1D5DF} \u{1D5E2} \u{1D5E5}\\n//  v 1.9.1\\n//\\n//  \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\\n\\n\\n//  General\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-white:         #ffffff;\\n$oc-black:         #000000;\\n\\n\\n//  Gray\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-gray-list: (\\n  \\"0\\": #f8f9fa,\\n  \\"1\\": #f1f3f5,\\n  \\"2\\": #e9ecef,\\n  \\"3\\": #dee2e6,\\n  \\"4\\": #ced4da,\\n  \\"5\\": #adb5bd,\\n  \\"6\\": #868e96,\\n  \\"7\\": #495057,\\n  \\"8\\": #343a40,\\n  \\"9\\": #212529\\n);\\n\\n$oc-gray-0: map-get($oc-gray-list, \\"0\\");\\n$oc-gray-1: map-get($oc-gray-list, \\"1\\");\\n$oc-gray-2: map-get($oc-gray-list, \\"2\\");\\n$oc-gray-3: map-get($oc-gray-list, \\"3\\");\\n$oc-gray-4: map-get($oc-gray-list, \\"4\\");\\n$oc-gray-5: map-get($oc-gray-list, \\"5\\");\\n$oc-gray-6: map-get($oc-gray-list, \\"6\\");\\n$oc-gray-7: map-get($oc-gray-list, \\"7\\");\\n$oc-gray-8: map-get($oc-gray-list, \\"8\\");\\n$oc-gray-9: map-get($oc-gray-list, \\"9\\");\\n\\n\\n//  Red\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-red-list: (\\n  \\"0\\": #fff5f5,\\n  \\"1\\": #ffe3e3,\\n  \\"2\\": #ffc9c9,\\n  \\"3\\": #ffa8a8,\\n  \\"4\\": #ff8787,\\n  \\"5\\": #ff6b6b,\\n  \\"6\\": #fa5252,\\n  \\"7\\": #f03e3e,\\n  \\"8\\": #e03131,\\n  \\"9\\": #c92a2a\\n);\\n\\n$oc-red-0: map-get($oc-red-list, \\"0\\");\\n$oc-red-1: map-get($oc-red-list, \\"1\\");\\n$oc-red-2: map-get($oc-red-list, \\"2\\");\\n$oc-red-3: map-get($oc-red-list, \\"3\\");\\n$oc-red-4: map-get($oc-red-list, \\"4\\");\\n$oc-red-5: map-get($oc-red-list, \\"5\\");\\n$oc-red-6: map-get($oc-red-list, \\"6\\");\\n$oc-red-7: map-get($oc-red-list, \\"7\\");\\n$oc-red-8: map-get($oc-red-list, \\"8\\");\\n$oc-red-9: map-get($oc-red-list, \\"9\\");\\n\\n\\n//  Pink\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-pink-list: (\\n  \\"0\\": #fff0f6,\\n  \\"1\\": #ffdeeb,\\n  \\"2\\": #fcc2d7,\\n  \\"3\\": #faa2c1,\\n  \\"4\\": #f783ac,\\n  \\"5\\": #f06595,\\n  \\"6\\": #e64980,\\n  \\"7\\": #d6336c,\\n  \\"8\\": #c2255c,\\n  \\"9\\": #a61e4d\\n);\\n\\n$oc-pink-0: map-get($oc-pink-list, \\"0\\");\\n$oc-pink-1: map-get($oc-pink-list, \\"1\\");\\n$oc-pink-2: map-get($oc-pink-list, \\"2\\");\\n$oc-pink-3: map-get($oc-pink-list, \\"3\\");\\n$oc-pink-4: map-get($oc-pink-list, \\"4\\");\\n$oc-pink-5: map-get($oc-pink-list, \\"5\\");\\n$oc-pink-6: map-get($oc-pink-list, \\"6\\");\\n$oc-pink-7: map-get($oc-pink-list, \\"7\\");\\n$oc-pink-8: map-get($oc-pink-list, \\"8\\");\\n$oc-pink-9: map-get($oc-pink-list, \\"9\\");\\n\\n\\n//  Grape\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-grape-list: (\\n  \\"0\\": #f8f0fc,\\n  \\"1\\": #f3d9fa,\\n  \\"2\\": #eebefa,\\n  \\"3\\": #e599f7,\\n  \\"4\\": #da77f2,\\n  \\"5\\": #cc5de8,\\n  \\"6\\": #be4bdb,\\n  \\"7\\": #ae3ec9,\\n  \\"8\\": #9c36b5,\\n  \\"9\\": #862e9c\\n);\\n\\n$oc-grape-0: map-get($oc-grape-list, \\"0\\");\\n$oc-grape-1: map-get($oc-grape-list, \\"1\\");\\n$oc-grape-2: map-get($oc-grape-list, \\"2\\");\\n$oc-grape-3: map-get($oc-grape-list, \\"3\\");\\n$oc-grape-4: map-get($oc-grape-list, \\"4\\");\\n$oc-grape-5: map-get($oc-grape-list, \\"5\\");\\n$oc-grape-6: map-get($oc-grape-list, \\"6\\");\\n$oc-grape-7: map-get($oc-grape-list, \\"7\\");\\n$oc-grape-8: map-get($oc-grape-list, \\"8\\");\\n$oc-grape-9: map-get($oc-grape-list, \\"9\\");\\n\\n\\n//  Violet\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-violet-list: (\\n  \\"0\\": #f3f0ff,\\n  \\"1\\": #e5dbff,\\n  \\"2\\": #d0bfff,\\n  \\"3\\": #b197fc,\\n  \\"4\\": #9775fa,\\n  \\"5\\": #845ef7,\\n  \\"6\\": #7950f2,\\n  \\"7\\": #7048e8,\\n  \\"8\\": #6741d9,\\n  \\"9\\": #5f3dc4\\n);\\n\\n$oc-violet-0: map-get($oc-violet-list, \\"0\\");\\n$oc-violet-1: map-get($oc-violet-list, \\"1\\");\\n$oc-violet-2: map-get($oc-violet-list, \\"2\\");\\n$oc-violet-3: map-get($oc-violet-list, \\"3\\");\\n$oc-violet-4: map-get($oc-violet-list, \\"4\\");\\n$oc-violet-5: map-get($oc-violet-list, \\"5\\");\\n$oc-violet-6: map-get($oc-violet-list, \\"6\\");\\n$oc-violet-7: map-get($oc-violet-list, \\"7\\");\\n$oc-violet-8: map-get($oc-violet-list, \\"8\\");\\n$oc-violet-9: map-get($oc-violet-list, \\"9\\");\\n\\n\\n//  Indigo\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-indigo-list: (\\n  \\"0\\": #edf2ff,\\n  \\"1\\": #dbe4ff,\\n  \\"2\\": #bac8ff,\\n  \\"3\\": #91a7ff,\\n  \\"4\\": #748ffc,\\n  \\"5\\": #5c7cfa,\\n  \\"6\\": #4c6ef5,\\n  \\"7\\": #4263eb,\\n  \\"8\\": #3b5bdb,\\n  \\"9\\": #364fc7\\n);\\n\\n$oc-indigo-0: map-get($oc-indigo-list, \\"0\\");\\n$oc-indigo-1: map-get($oc-indigo-list, \\"1\\");\\n$oc-indigo-2: map-get($oc-indigo-list, \\"2\\");\\n$oc-indigo-3: map-get($oc-indigo-list, \\"3\\");\\n$oc-indigo-4: map-get($oc-indigo-list, \\"4\\");\\n$oc-indigo-5: map-get($oc-indigo-list, \\"5\\");\\n$oc-indigo-6: map-get($oc-indigo-list, \\"6\\");\\n$oc-indigo-7: map-get($oc-indigo-list, \\"7\\");\\n$oc-indigo-8: map-get($oc-indigo-list, \\"8\\");\\n$oc-indigo-9: map-get($oc-indigo-list, \\"9\\");\\n\\n\\n//  Blue\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-blue-list: (\\n  \\"0\\": #e7f5ff,\\n  \\"1\\": #d0ebff,\\n  \\"2\\": #a5d8ff,\\n  \\"3\\": #74c0fc,\\n  \\"4\\": #4dabf7,\\n  \\"5\\": #339af0,\\n  \\"6\\": #228be6,\\n  \\"7\\": #1c7ed6,\\n  \\"8\\": #1971c2,\\n  \\"9\\": #1864ab\\n);\\n\\n$oc-blue-0: map-get($oc-blue-list, \\"0\\");\\n$oc-blue-1: map-get($oc-blue-list, \\"1\\");\\n$oc-blue-2: map-get($oc-blue-list, \\"2\\");\\n$oc-blue-3: map-get($oc-blue-list, \\"3\\");\\n$oc-blue-4: map-get($oc-blue-list, \\"4\\");\\n$oc-blue-5: map-get($oc-blue-list, \\"5\\");\\n$oc-blue-6: map-get($oc-blue-list, \\"6\\");\\n$oc-blue-7: map-get($oc-blue-list, \\"7\\");\\n$oc-blue-8: map-get($oc-blue-list, \\"8\\");\\n$oc-blue-9: map-get($oc-blue-list, \\"9\\");\\n\\n\\n//  Cyan\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-cyan-list: (\\n  \\"0\\": #e3fafc,\\n  \\"1\\": #c5f6fa,\\n  \\"2\\": #99e9f2,\\n  \\"3\\": #66d9e8,\\n  \\"4\\": #3bc9db,\\n  \\"5\\": #22b8cf,\\n  \\"6\\": #15aabf,\\n  \\"7\\": #1098ad,\\n  \\"8\\": #0c8599,\\n  \\"9\\": #0b7285\\n);\\n\\n$oc-cyan-0: map-get($oc-cyan-list, \\"0\\");\\n$oc-cyan-1: map-get($oc-cyan-list, \\"1\\");\\n$oc-cyan-2: map-get($oc-cyan-list, \\"2\\");\\n$oc-cyan-3: map-get($oc-cyan-list, \\"3\\");\\n$oc-cyan-4: map-get($oc-cyan-list, \\"4\\");\\n$oc-cyan-5: map-get($oc-cyan-list, \\"5\\");\\n$oc-cyan-6: map-get($oc-cyan-list, \\"6\\");\\n$oc-cyan-7: map-get($oc-cyan-list, \\"7\\");\\n$oc-cyan-8: map-get($oc-cyan-list, \\"8\\");\\n$oc-cyan-9: map-get($oc-cyan-list, \\"9\\");\\n\\n\\n//  Teal\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-teal-list: (\\n  \\"0\\": #e6fcf5,\\n  \\"1\\": #c3fae8,\\n  \\"2\\": #96f2d7,\\n  \\"3\\": #63e6be,\\n  \\"4\\": #38d9a9,\\n  \\"5\\": #20c997,\\n  \\"6\\": #12b886,\\n  \\"7\\": #0ca678,\\n  \\"8\\": #099268,\\n  \\"9\\": #087f5b\\n);\\n\\n$oc-teal-0: map-get($oc-teal-list, \\"0\\");\\n$oc-teal-1: map-get($oc-teal-list, \\"1\\");\\n$oc-teal-2: map-get($oc-teal-list, \\"2\\");\\n$oc-teal-3: map-get($oc-teal-list, \\"3\\");\\n$oc-teal-4: map-get($oc-teal-list, \\"4\\");\\n$oc-teal-5: map-get($oc-teal-list, \\"5\\");\\n$oc-teal-6: map-get($oc-teal-list, \\"6\\");\\n$oc-teal-7: map-get($oc-teal-list, \\"7\\");\\n$oc-teal-8: map-get($oc-teal-list, \\"8\\");\\n$oc-teal-9: map-get($oc-teal-list, \\"9\\");\\n\\n\\n//  Green\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-green-list: (\\n  \\"0\\": #ebfbee,\\n  \\"1\\": #d3f9d8,\\n  \\"2\\": #b2f2bb,\\n  \\"3\\": #8ce99a,\\n  \\"4\\": #69db7c,\\n  \\"5\\": #51cf66,\\n  \\"6\\": #40c057,\\n  \\"7\\": #37b24d,\\n  \\"8\\": #2f9e44,\\n  \\"9\\": #2b8a3e\\n);\\n\\n$oc-green-0: map-get($oc-green-list, \\"0\\");\\n$oc-green-1: map-get($oc-green-list, \\"1\\");\\n$oc-green-2: map-get($oc-green-list, \\"2\\");\\n$oc-green-3: map-get($oc-green-list, \\"3\\");\\n$oc-green-4: map-get($oc-green-list, \\"4\\");\\n$oc-green-5: map-get($oc-green-list, \\"5\\");\\n$oc-green-6: map-get($oc-green-list, \\"6\\");\\n$oc-green-7: map-get($oc-green-list, \\"7\\");\\n$oc-green-8: map-get($oc-green-list, \\"8\\");\\n$oc-green-9: map-get($oc-green-list, \\"9\\");\\n\\n\\n//  Lime\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-lime-list: (\\n  \\"0\\": #f4fce3,\\n  \\"1\\": #e9fac8,\\n  \\"2\\": #d8f5a2,\\n  \\"3\\": #c0eb75,\\n  \\"4\\": #a9e34b,\\n  \\"5\\": #94d82d,\\n  \\"6\\": #82c91e,\\n  \\"7\\": #74b816,\\n  \\"8\\": #66a80f,\\n  \\"9\\": #5c940d\\n);\\n\\n$oc-lime-0: map-get($oc-lime-list, \\"0\\");\\n$oc-lime-1: map-get($oc-lime-list, \\"1\\");\\n$oc-lime-2: map-get($oc-lime-list, \\"2\\");\\n$oc-lime-3: map-get($oc-lime-list, \\"3\\");\\n$oc-lime-4: map-get($oc-lime-list, \\"4\\");\\n$oc-lime-5: map-get($oc-lime-list, \\"5\\");\\n$oc-lime-6: map-get($oc-lime-list, \\"6\\");\\n$oc-lime-7: map-get($oc-lime-list, \\"7\\");\\n$oc-lime-8: map-get($oc-lime-list, \\"8\\");\\n$oc-lime-9: map-get($oc-lime-list, \\"9\\");\\n\\n\\n//  Yellow\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-yellow-list: (\\n  \\"0\\": #fff9db,\\n  \\"1\\": #fff3bf,\\n  \\"2\\": #ffec99,\\n  \\"3\\": #ffe066,\\n  \\"4\\": #ffd43b,\\n  \\"5\\": #fcc419,\\n  \\"6\\": #fab005,\\n  \\"7\\": #f59f00,\\n  \\"8\\": #f08c00,\\n  \\"9\\": #e67700\\n);\\n\\n$oc-yellow-0: map-get($oc-yellow-list, \\"0\\");\\n$oc-yellow-1: map-get($oc-yellow-list, \\"1\\");\\n$oc-yellow-2: map-get($oc-yellow-list, \\"2\\");\\n$oc-yellow-3: map-get($oc-yellow-list, \\"3\\");\\n$oc-yellow-4: map-get($oc-yellow-list, \\"4\\");\\n$oc-yellow-5: map-get($oc-yellow-list, \\"5\\");\\n$oc-yellow-6: map-get($oc-yellow-list, \\"6\\");\\n$oc-yellow-7: map-get($oc-yellow-list, \\"7\\");\\n$oc-yellow-8: map-get($oc-yellow-list, \\"8\\");\\n$oc-yellow-9: map-get($oc-yellow-list, \\"9\\");\\n\\n\\n//  Orange\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-orange-list: (\\n  \\"0\\": #fff4e6,\\n  \\"1\\": #ffe8cc,\\n  \\"2\\": #ffd8a8,\\n  \\"3\\": #ffc078,\\n  \\"4\\": #ffa94d,\\n  \\"5\\": #ff922b,\\n  \\"6\\": #fd7e14,\\n  \\"7\\": #f76707,\\n  \\"8\\": #e8590c,\\n  \\"9\\": #d9480f\\n);\\n\\n$oc-orange-0: map-get($oc-orange-list, \\"0\\");\\n$oc-orange-1: map-get($oc-orange-list, \\"1\\");\\n$oc-orange-2: map-get($oc-orange-list, \\"2\\");\\n$oc-orange-3: map-get($oc-orange-list, \\"3\\");\\n$oc-orange-4: map-get($oc-orange-list, \\"4\\");\\n$oc-orange-5: map-get($oc-orange-list, \\"5\\");\\n$oc-orange-6: map-get($oc-orange-list, \\"6\\");\\n$oc-orange-7: map-get($oc-orange-list, \\"7\\");\\n$oc-orange-8: map-get($oc-orange-list, \\"8\\");\\n$oc-orange-9: map-get($oc-orange-list, \\"9\\");\\n\\n\\n//  Color list\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-color-spectrum:   9;\\n\\n$oc-color-list: (\\n  $oc-gray-list:      \\"gray\\",\\n  $oc-red-list:      \\"red\\",\\n  $oc-pink-list:      \\"pink\\",\\n  $oc-grape-list:      \\"grape\\",\\n  $oc-violet-list:      \\"violet\\",\\n  $oc-indigo-list:      \\"indigo\\",\\n  $oc-blue-list:      \\"blue\\",\\n  $oc-cyan-list:      \\"cyan\\",\\n  $oc-teal-list:      \\"teal\\",\\n  $oc-green-list:      \\"green\\",\\n  $oc-lime-list:      \\"lime\\",\\n  $oc-yellow-list:      \\"yellow\\",\\n  $oc-orange-list:      \\"orange\\"\\n);\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 34144 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ContextMenu.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Dialog.scss": (
              /*!***************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Dialog.scss ***!
                \***************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .Dialog {\\n  user-select: text;\\n  cursor: auto;\\n}\\n.excalidraw .Dialog__title {\\n  margin: 0;\\n  text-align: left;\\n  font-size: 1.25rem;\\n  border-bottom: 1px solid var(--dialog-border-color);\\n  padding: 0 0 0.75rem;\\n  margin-bottom: 1.5rem;\\n}\\n.excalidraw .Dialog__close {\\n  color: var(--color-gray-40);\\n  margin: 0;\\n  position: absolute;\\n  top: 0.75rem;\\n  right: 0.5rem;\\n  border: 0;\\n  background-color: transparent;\\n  line-height: 0;\\n  cursor: pointer;\\n}\\n.excalidraw .Dialog__close:hover {\\n  color: var(--color-gray-60);\\n}\\n.excalidraw .Dialog__close:active {\\n  color: var(--color-gray-40);\\n}\\n.excalidraw .Dialog__close svg {\\n  width: 1.5rem;\\n  height: 1.5rem;\\n}\\n.excalidraw .Dialog--fullscreen .Dialog__close {\\n  top: 1.25rem;\\n  right: 1.25rem;\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/Dialog.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AAAE;EACE,iBAAA;EACA,YAAA;AAGJ;AAAE;EACE,SAAA;EACA,gBAAA;EACA,kBAAA;EACA,mDAAA;EACA,oBAAA;EACA,qBAAA;AAEJ;AACE;EACE,2BAAA;EACA,SAAA;EACA,kBAAA;EACA,YAAA;EACA,aAAA;EACA,SAAA;EACA,6BAAA;EACA,cAAA;EACA,eAAA;AACJ;AACI;EACE,2BAAA;AACN;AACI;EACE,2BAAA;AACN;AAEI;EACE,aAAA;EACA,cAAA;AAAN;AAKI;EACE,YAAA;EACA,cAAA;AAHN","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../css/variables.module\\";\\n\\n.excalidraw {\\n  .Dialog {\\n    user-select: text;\\n    cursor: auto;\\n  }\\n\\n  .Dialog__title {\\n    margin: 0;\\n    text-align: left;\\n    font-size: 1.25rem;\\n    border-bottom: 1px solid var(--dialog-border-color);\\n    padding: 0 0 0.75rem;\\n    margin-bottom: 1.5rem;\\n  }\\n\\n  .Dialog__close {\\n    color: var(--color-gray-40);\\n    margin: 0;\\n    position: absolute;\\n    top: 0.75rem;\\n    right: 0.5rem;\\n    border: 0;\\n    background-color: transparent;\\n    line-height: 0;\\n    cursor: pointer;\\n\\n    &:hover {\\n      color: var(--color-gray-60);\\n    }\\n    &:active {\\n      color: var(--color-gray-40);\\n    }\\n\\n    svg {\\n      width: 1.5rem;\\n      height: 1.5rem;\\n    }\\n  }\\n\\n  .Dialog--fullscreen {\\n    .Dialog__close {\\n      top: 1.25rem;\\n      right: 1.25rem;\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 10620 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Dialog.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/DialogActionButton.scss": (
              /*!***************************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/DialogActionButton.scss ***!
                \***************************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ".excalidraw .Dialog__action-button {\\n  position: relative;\\n  display: flex;\\n  column-gap: 0.5rem;\\n  align-items: center;\\n  padding: 0.5rem 1.5rem;\\n  border: 1px solid var(--default-border-color);\\n  background-color: transparent;\\n  height: 3rem;\\n  border-radius: var(--border-radius-lg);\\n  letter-spacing: 0.4px;\\n  color: inherit;\\n  font-family: inherit;\\n  font-size: 0.875rem;\\n  font-weight: 600;\\n  user-select: none;\\n}\\n.excalidraw .Dialog__action-button svg {\\n  display: block;\\n  width: 1rem;\\n  height: 1rem;\\n}\\n.excalidraw .Dialog__action-button--danger {\\n  background-color: var(--color-danger);\\n  border-color: var(--color-danger);\\n  color: #fff;\\n}\\n.excalidraw .Dialog__action-button--primary {\\n  background-color: var(--color-primary);\\n  border-color: var(--color-primary);\\n  color: #fff;\\n}\\n.excalidraw.theme--dark .Dialog__action-button--danger {\\n  color: var(--color-gray-100);\\n}\\n.excalidraw.theme--dark .Dialog__action-button--primary {\\n  color: var(--color-gray-100);\\n}", "",{"version":3,"sources":["webpack://./../../components/DialogActionButton.scss"],"names":[],"mappings":"AACE;EACE,kBAAA;EACA,aAAA;EACA,kBAAA;EACA,mBAAA;EACA,sBAAA;EACA,6CAAA;EACA,6BAAA;EACA,YAAA;EACA,sCAAA;EACA,qBAAA;EACA,cAAA;EACA,oBAAA;EACA,mBAAA;EACA,gBAAA;EACA,iBAAA;AAAJ;AAEI;EACE,cAAA;EACA,WAAA;EACA,YAAA;AAAN;AAGI;EACE,qCAAA;EACA,iCAAA;EACA,WAAA;AADN;AAII;EACE,sCAAA;EACA,kCAAA;EACA,WAAA;AAFN;AAOI;EACE,4BAAA;AALN;AAQI;EACE,4BAAA;AANN","sourcesContent":[".excalidraw {\\n  .Dialog__action-button {\\n    position: relative;\\n    display: flex;\\n    column-gap: 0.5rem;\\n    align-items: center;\\n    padding: 0.5rem 1.5rem;\\n    border: 1px solid var(--default-border-color);\\n    background-color: transparent;\\n    height: 3rem;\\n    border-radius: var(--border-radius-lg);\\n    letter-spacing: 0.4px;\\n    color: inherit;\\n    font-family: inherit;\\n    font-size: 0.875rem;\\n    font-weight: 600;\\n    user-select: none;\\n\\n    svg {\\n      display: block;\\n      width: 1rem;\\n      height: 1rem;\\n    }\\n\\n    &--danger {\\n      background-color: var(--color-danger);\\n      border-color: var(--color-danger);\\n      color: #fff;\\n    }\\n\\n    &--primary {\\n      background-color: var(--color-primary);\\n      border-color: var(--color-primary);\\n      color: #fff;\\n    }\\n  }\\n\\n  &.theme--dark {\\n    .Dialog__action-button--danger {\\n      color: var(--color-gray-100);\\n    }\\n\\n    .Dialog__action-button--primary {\\n      color: var(--color-gray-100);\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5696 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/DialogActionButton.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ExcalidrawLogo.scss": (
              /*!***********************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ExcalidrawLogo.scss ***!
                \***********************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ".excalidraw .ExcalidrawLogo {\\n  --logo-icon--xs: 2rem;\\n  --logo-text--xs: 1.5rem;\\n  --logo-icon--small: 2.5rem;\\n  --logo-text--small: 1.75rem;\\n  --logo-icon--normal: 3rem;\\n  --logo-text--normal: 2.2rem;\\n  --logo-icon--large: 90px;\\n  --logo-text--large: 65px;\\n  display: flex;\\n  align-items: center;\\n}\\n.excalidraw .ExcalidrawLogo svg {\\n  flex: 0 0 auto;\\n}\\n.excalidraw .ExcalidrawLogo .ExcalidrawLogo-icon {\\n  width: auto;\\n  color: var(--color-logo-icon);\\n}\\n.excalidraw .ExcalidrawLogo .ExcalidrawLogo-text {\\n  margin-left: 0.75rem;\\n  width: auto;\\n  color: var(--color-logo-text);\\n}\\n.excalidraw .ExcalidrawLogo.is-xs .ExcalidrawLogo-icon {\\n  height: var(--logo-icon--xs);\\n}\\n.excalidraw .ExcalidrawLogo.is-xs .ExcalidrawLogo-text {\\n  height: var(--logo-text--xs);\\n}\\n.excalidraw .ExcalidrawLogo.is-small .ExcalidrawLogo-icon {\\n  height: var(--logo-icon--small);\\n}\\n.excalidraw .ExcalidrawLogo.is-small .ExcalidrawLogo-text {\\n  height: var(--logo-text--small);\\n}\\n.excalidraw .ExcalidrawLogo.is-normal .ExcalidrawLogo-icon {\\n  height: var(--logo-icon--normal);\\n}\\n.excalidraw .ExcalidrawLogo.is-normal .ExcalidrawLogo-text {\\n  height: var(--logo-text--normal);\\n}\\n.excalidraw .ExcalidrawLogo.is-large .ExcalidrawLogo-icon {\\n  height: var(--logo-icon--large);\\n}\\n.excalidraw .ExcalidrawLogo.is-large .ExcalidrawLogo-text {\\n  height: var(--logo-text--large);\\n}", "",{"version":3,"sources":["webpack://./../../components/ExcalidrawLogo.scss"],"names":[],"mappings":"AACE;EACE,qBAAA;EACA,uBAAA;EAEA,0BAAA;EACA,2BAAA;EAEA,yBAAA;EACA,2BAAA;EAEA,wBAAA;EACA,wBAAA;EAEA,aAAA;EACA,mBAAA;AAJJ;AAMI;EACE,cAAA;AAJN;AAOI;EACE,WAAA;EACA,6BAAA;AALN;AAQI;EACE,oBAAA;EACA,WAAA;EACA,6BAAA;AANN;AAUM;EACE,4BAAA;AARR;AAWM;EACE,4BAAA;AATR;AAcM;EACE,+BAAA;AAZR;AAeM;EACE,+BAAA;AAbR;AAkBM;EACE,gCAAA;AAhBR;AAmBM;EACE,gCAAA;AAjBR;AAsBM;EACE,+BAAA;AApBR;AAuBM;EACE,+BAAA;AArBR","sourcesContent":[".excalidraw {\\n  .ExcalidrawLogo {\\n    --logo-icon--xs: 2rem;\\n    --logo-text--xs: 1.5rem;\\n\\n    --logo-icon--small: 2.5rem;\\n    --logo-text--small: 1.75rem;\\n\\n    --logo-icon--normal: 3rem;\\n    --logo-text--normal: 2.2rem;\\n\\n    --logo-icon--large: 90px;\\n    --logo-text--large: 65px;\\n\\n    display: flex;\\n    align-items: center;\\n\\n    svg {\\n      flex: 0 0 auto;\\n    }\\n\\n    .ExcalidrawLogo-icon {\\n      width: auto;\\n      color: var(--color-logo-icon);\\n    }\\n\\n    .ExcalidrawLogo-text {\\n      margin-left: 0.75rem;\\n      width: auto;\\n      color: var(--color-logo-text);\\n    }\\n\\n    &.is-xs {\\n      .ExcalidrawLogo-icon {\\n        height: var(--logo-icon--xs);\\n      }\\n\\n      .ExcalidrawLogo-text {\\n        height: var(--logo-text--xs);\\n      }\\n    }\\n\\n    &.is-small {\\n      .ExcalidrawLogo-icon {\\n        height: var(--logo-icon--small);\\n      }\\n\\n      .ExcalidrawLogo-text {\\n        height: var(--logo-text--small);\\n      }\\n    }\\n\\n    &.is-normal {\\n      .ExcalidrawLogo-icon {\\n        height: var(--logo-icon--normal);\\n      }\\n\\n      .ExcalidrawLogo-text {\\n        height: var(--logo-text--normal);\\n      }\\n    }\\n\\n    &.is-large {\\n      .ExcalidrawLogo-icon {\\n        height: var(--logo-icon--large);\\n      }\\n\\n      .ExcalidrawLogo-text {\\n        height: var(--logo-text--large);\\n      }\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 7032 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ExcalidrawLogo.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ExportDialog.scss": (
              /*!*********************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ExportDialog.scss ***!
                \*********************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/getUrl.js */ "./node_modules/css-loader/dist/runtime/getUrl.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__);\n// Imports\n\n\n\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(/* asset import */ __webpack_require__(/*! data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMUlEQVQ4T2NkYGAQYcAP3uCTZhw1gGGYhAGBZIA/nYDCgBDAm9BGDWAAJyRCgLaBCAAgXwixzAS0pgAAAABJRU5ErkJggg== */ "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMUlEQVQ4T2NkYGAQYcAP3uCTZhw1gGGYhAGBZIA/nYDCgBDAm9BGDWAAJyRCgLaBCAAgXwixzAS0pgAAAABJRU5ErkJggg=="), __webpack_require__.b);\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .ExportDialog__preview {\\n  --preview-padding: calc(var(--space-factor) * 4);\\n  background: url(" + ___CSS_LOADER_URL_REPLACEMENT_0___ + ") left center;\\n  text-align: center;\\n  padding: var(--preview-padding);\\n  margin-bottom: calc(var(--space-factor) * 3);\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n}\\n.excalidraw .ExportDialog__preview canvas {\\n  max-width: calc(100% - var(--preview-padding) * 2);\\n  max-height: 25rem;\\n}\\n.excalidraw.theme--dark .ExportDialog__preview canvas {\\n  filter: none;\\n}\\n.excalidraw .ExportDialog__actions {\\n  width: 100%;\\n  display: flex;\\n  grid-gap: calc(var(--space-factor) * 2);\\n  align-items: top;\\n  justify-content: space-between;\\n}\\n.excalidraw--mobile.excalidraw .ExportDialog {\\n  display: flex;\\n  flex-direction: column;\\n}\\n.excalidraw--mobile.excalidraw .ExportDialog__actions {\\n  flex-direction: column;\\n  align-items: center;\\n}\\n.excalidraw--mobile.excalidraw .ExportDialog__actions > * {\\n  margin-bottom: calc(var(--space-factor) * 3);\\n}\\n.excalidraw--mobile.excalidraw .ExportDialog__preview canvas {\\n  max-height: 30vh;\\n}\\n.excalidraw--mobile.excalidraw .ExportDialog__dialog,\\n.excalidraw--mobile.excalidraw .ExportDialog__dialog .Island {\\n  height: 100%;\\n  box-sizing: border-box;\\n}\\n.excalidraw--mobile.excalidraw .ExportDialog__dialog .Island {\\n  overflow-y: auto;\\n}\\n\\n.excalidraw .ExportDialog--json .ExportDialog-cards {\\n  display: grid;\\n  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\\n  justify-items: center;\\n  row-gap: 2em;\\n}\\n@media (max-width: 460px) {\\n  .excalidraw .ExportDialog--json .ExportDialog-cards {\\n    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));\\n  }\\n  .excalidraw .ExportDialog--json .ExportDialog-cards .Card-details {\\n    min-height: 40px;\\n  }\\n}\\n.excalidraw .ExportDialog--json .ExportDialog-cards .ProjectName {\\n  width: -moz-fit-content;\\n  width: fit-content;\\n  margin: 1em auto;\\n  align-items: flex-start;\\n  flex-direction: column;\\n}\\n.excalidraw .ExportDialog--json .ExportDialog-cards .ProjectName .TextInput {\\n  width: auto;\\n}\\n.excalidraw .ExportDialog--json .ExportDialog-cards .ProjectName-label {\\n  margin: 0.625em 0;\\n  font-weight: bold;\\n}\\n.excalidraw button.ExportDialog-imageExportButton {\\n  border: 0;\\n  width: 5rem;\\n  height: 5rem;\\n  margin: 0 0.2em;\\n  padding: 0;\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  border-radius: 1rem;\\n  background-color: var(--button-color);\\n  box-shadow: 0 3px 5px -1px rgba(0, 0, 0, 0.28), 0 6px 10px 0 rgba(0, 0, 0, 0.14);\\n  font-family: Cascadia;\\n  font-size: 1.8em;\\n  color: #ffffff;\\n}\\n.excalidraw button.ExportDialog-imageExportButton:hover {\\n  background-color: var(--button-color-darker);\\n}\\n.excalidraw button.ExportDialog-imageExportButton:active {\\n  background-color: var(--button-color-darkest);\\n  box-shadow: none;\\n}\\n.excalidraw button.ExportDialog-imageExportButton svg {\\n  width: 0.9em;\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/ExportDialog.scss","webpack://./../../../node_modules/open-color/open-color.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AAAE;EACE,gDAAA;EAEA,+DAAA;EAEA,kBAAA;EACA,+BAAA;EACA,4CAAA;EAEA,aAAA;EACA,uBAAA;EACA,mBAAA;AAAJ;AAGE;EACE,kDAAA;EACA,iBAAA;AADJ;AAIE;EACE,YAAA;AAFJ;AAKE;EACE,WAAA;EACA,aAAA;EACA,uCAAA;EACA,gBAAA;EACA,8BAAA;AAHJ;AAOI;EACE,aAAA;EACA,sBAAA;AALN;AAQI;EACE,sBAAA;EACA,mBAAA;AANN;AASI;EACE,4CAAA;AAPN;AAUI;EACE,gBAAA;AARN;AAWI;;EAEE,YAAA;EACA,sBAAA;AATN;AAYI;EACE,gBAAA;AAVN;;AAeI;EACE,aAAA;EACA,2DAAA;EACA,qBAAA;EACA,YAAA;AAZN;AAcM;EANF;IAOI,2DAAA;EAXN;EAYM;IACE,gBAAA;EAVR;AACF;AAaM;EACE,uBAAA;EAAA,kBAAA;EACA,gBAAA;EACA,uBAAA;EACA,sBAAA;AAXR;AAaQ;EACE,WAAA;AAXV;AAeM;EACE,iBAAA;EACA,iBAAA;AAbR;AAkBE;EACE,SAAA;EAEA,WAAA;EACA,YAAA;EACA,eAAA;EACA,UAAA;EACA,aAAA;EACA,mBAAA;EACA,uBAAA;EAEA,mBAAA;EACA,qCAAA;EACA,gFAAA;EAGA,qBAAA;EACA,gBAAA;EACA,cCvGe;ADmFnB;AAsBI;EACE,4CAAA;AApBN;AAsBI;EACE,6CAAA;EACA,gBAAA;AApBN;AAuBI;EACE,YAAA;AArBN","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../css/variables.module\\";\\n\\n.excalidraw {\\n  .ExportDialog__preview {\\n    --preview-padding: calc(var(--space-factor) * 4);\\n\\n    background: url(\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMUlEQVQ4T2NkYGAQYcAP3uCTZhw1gGGYhAGBZIA/nYDCgBDAm9BGDWAAJyRCgLaBCAAgXwixzAS0pgAAAABJRU5ErkJggg==\\")\\n      left center;\\n    text-align: center;\\n    padding: var(--preview-padding);\\n    margin-bottom: calc(var(--space-factor) * 3);\\n\\n    display: flex;\\n    justify-content: center;\\n    align-items: center;\\n  }\\n\\n  .ExportDialog__preview canvas {\\n    max-width: calc(100% - var(--preview-padding) * 2);\\n    max-height: 25rem;\\n  }\\n\\n  &.theme--dark .ExportDialog__preview canvas {\\n    filter: none;\\n  }\\n\\n  .ExportDialog__actions {\\n    width: 100%;\\n    display: flex;\\n    grid-gap: calc(var(--space-factor) * 2);\\n    align-items: top;\\n    justify-content: space-between;\\n  }\\n\\n  @include isMobile {\\n    .ExportDialog {\\n      display: flex;\\n      flex-direction: column;\\n    }\\n\\n    .ExportDialog__actions {\\n      flex-direction: column;\\n      align-items: center;\\n    }\\n\\n    .ExportDialog__actions > * {\\n      margin-bottom: calc(var(--space-factor) * 3);\\n    }\\n\\n    .ExportDialog__preview canvas {\\n      max-height: 30vh;\\n    }\\n\\n    .ExportDialog__dialog,\\n    .ExportDialog__dialog .Island {\\n      height: 100%;\\n      box-sizing: border-box;\\n    }\\n\\n    .ExportDialog__dialog .Island {\\n      overflow-y: auto;\\n    }\\n  }\\n\\n  .ExportDialog--json {\\n    .ExportDialog-cards {\\n      display: grid;\\n      grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\\n      justify-items: center;\\n      row-gap: 2em;\\n\\n      @media (max-width: 460px) {\\n        grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));\\n        .Card-details {\\n          min-height: 40px;\\n        }\\n      }\\n\\n      .ProjectName {\\n        width: fit-content;\\n        margin: 1em auto;\\n        align-items: flex-start;\\n        flex-direction: column;\\n\\n        .TextInput {\\n          width: auto;\\n        }\\n      }\\n\\n      .ProjectName-label {\\n        margin: 0.625em 0;\\n        font-weight: bold;\\n      }\\n    }\\n  }\\n\\n  button.ExportDialog-imageExportButton {\\n    border: 0;\\n\\n    width: 5rem;\\n    height: 5rem;\\n    margin: 0 0.2em;\\n    padding: 0;\\n    display: flex;\\n    align-items: center;\\n    justify-content: center;\\n\\n    border-radius: 1rem;\\n    background-color: var(--button-color);\\n    box-shadow: 0 3px 5px -1px rgba(0, 0, 0, 0.28),\\n      0 6px 10px 0 rgba(0, 0, 0, 0.14);\\n\\n    font-family: Cascadia;\\n    font-size: 1.8em;\\n    color: $oc-white;\\n\\n    &:hover {\\n      background-color: var(--button-color-darker);\\n    }\\n    &:active {\\n      background-color: var(--button-color-darkest);\\n      box-shadow: none;\\n    }\\n\\n    svg {\\n      width: 0.9em;\\n    }\\n  }\\n}\\n","//\\n//\\n//  \u{1D5D6} \u{1D5E2} \u{1D5DF} \u{1D5E2} \u{1D5E5}\\n//  v 1.9.1\\n//\\n//  \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\\n\\n\\n//  General\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-white:         #ffffff;\\n$oc-black:         #000000;\\n\\n\\n//  Gray\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-gray-list: (\\n  \\"0\\": #f8f9fa,\\n  \\"1\\": #f1f3f5,\\n  \\"2\\": #e9ecef,\\n  \\"3\\": #dee2e6,\\n  \\"4\\": #ced4da,\\n  \\"5\\": #adb5bd,\\n  \\"6\\": #868e96,\\n  \\"7\\": #495057,\\n  \\"8\\": #343a40,\\n  \\"9\\": #212529\\n);\\n\\n$oc-gray-0: map-get($oc-gray-list, \\"0\\");\\n$oc-gray-1: map-get($oc-gray-list, \\"1\\");\\n$oc-gray-2: map-get($oc-gray-list, \\"2\\");\\n$oc-gray-3: map-get($oc-gray-list, \\"3\\");\\n$oc-gray-4: map-get($oc-gray-list, \\"4\\");\\n$oc-gray-5: map-get($oc-gray-list, \\"5\\");\\n$oc-gray-6: map-get($oc-gray-list, \\"6\\");\\n$oc-gray-7: map-get($oc-gray-list, \\"7\\");\\n$oc-gray-8: map-get($oc-gray-list, \\"8\\");\\n$oc-gray-9: map-get($oc-gray-list, \\"9\\");\\n\\n\\n//  Red\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-red-list: (\\n  \\"0\\": #fff5f5,\\n  \\"1\\": #ffe3e3,\\n  \\"2\\": #ffc9c9,\\n  \\"3\\": #ffa8a8,\\n  \\"4\\": #ff8787,\\n  \\"5\\": #ff6b6b,\\n  \\"6\\": #fa5252,\\n  \\"7\\": #f03e3e,\\n  \\"8\\": #e03131,\\n  \\"9\\": #c92a2a\\n);\\n\\n$oc-red-0: map-get($oc-red-list, \\"0\\");\\n$oc-red-1: map-get($oc-red-list, \\"1\\");\\n$oc-red-2: map-get($oc-red-list, \\"2\\");\\n$oc-red-3: map-get($oc-red-list, \\"3\\");\\n$oc-red-4: map-get($oc-red-list, \\"4\\");\\n$oc-red-5: map-get($oc-red-list, \\"5\\");\\n$oc-red-6: map-get($oc-red-list, \\"6\\");\\n$oc-red-7: map-get($oc-red-list, \\"7\\");\\n$oc-red-8: map-get($oc-red-list, \\"8\\");\\n$oc-red-9: map-get($oc-red-list, \\"9\\");\\n\\n\\n//  Pink\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-pink-list: (\\n  \\"0\\": #fff0f6,\\n  \\"1\\": #ffdeeb,\\n  \\"2\\": #fcc2d7,\\n  \\"3\\": #faa2c1,\\n  \\"4\\": #f783ac,\\n  \\"5\\": #f06595,\\n  \\"6\\": #e64980,\\n  \\"7\\": #d6336c,\\n  \\"8\\": #c2255c,\\n  \\"9\\": #a61e4d\\n);\\n\\n$oc-pink-0: map-get($oc-pink-list, \\"0\\");\\n$oc-pink-1: map-get($oc-pink-list, \\"1\\");\\n$oc-pink-2: map-get($oc-pink-list, \\"2\\");\\n$oc-pink-3: map-get($oc-pink-list, \\"3\\");\\n$oc-pink-4: map-get($oc-pink-list, \\"4\\");\\n$oc-pink-5: map-get($oc-pink-list, \\"5\\");\\n$oc-pink-6: map-get($oc-pink-list, \\"6\\");\\n$oc-pink-7: map-get($oc-pink-list, \\"7\\");\\n$oc-pink-8: map-get($oc-pink-list, \\"8\\");\\n$oc-pink-9: map-get($oc-pink-list, \\"9\\");\\n\\n\\n//  Grape\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-grape-list: (\\n  \\"0\\": #f8f0fc,\\n  \\"1\\": #f3d9fa,\\n  \\"2\\": #eebefa,\\n  \\"3\\": #e599f7,\\n  \\"4\\": #da77f2,\\n  \\"5\\": #cc5de8,\\n  \\"6\\": #be4bdb,\\n  \\"7\\": #ae3ec9,\\n  \\"8\\": #9c36b5,\\n  \\"9\\": #862e9c\\n);\\n\\n$oc-grape-0: map-get($oc-grape-list, \\"0\\");\\n$oc-grape-1: map-get($oc-grape-list, \\"1\\");\\n$oc-grape-2: map-get($oc-grape-list, \\"2\\");\\n$oc-grape-3: map-get($oc-grape-list, \\"3\\");\\n$oc-grape-4: map-get($oc-grape-list, \\"4\\");\\n$oc-grape-5: map-get($oc-grape-list, \\"5\\");\\n$oc-grape-6: map-get($oc-grape-list, \\"6\\");\\n$oc-grape-7: map-get($oc-grape-list, \\"7\\");\\n$oc-grape-8: map-get($oc-grape-list, \\"8\\");\\n$oc-grape-9: map-get($oc-grape-list, \\"9\\");\\n\\n\\n//  Violet\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-violet-list: (\\n  \\"0\\": #f3f0ff,\\n  \\"1\\": #e5dbff,\\n  \\"2\\": #d0bfff,\\n  \\"3\\": #b197fc,\\n  \\"4\\": #9775fa,\\n  \\"5\\": #845ef7,\\n  \\"6\\": #7950f2,\\n  \\"7\\": #7048e8,\\n  \\"8\\": #6741d9,\\n  \\"9\\": #5f3dc4\\n);\\n\\n$oc-violet-0: map-get($oc-violet-list, \\"0\\");\\n$oc-violet-1: map-get($oc-violet-list, \\"1\\");\\n$oc-violet-2: map-get($oc-violet-list, \\"2\\");\\n$oc-violet-3: map-get($oc-violet-list, \\"3\\");\\n$oc-violet-4: map-get($oc-violet-list, \\"4\\");\\n$oc-violet-5: map-get($oc-violet-list, \\"5\\");\\n$oc-violet-6: map-get($oc-violet-list, \\"6\\");\\n$oc-violet-7: map-get($oc-violet-list, \\"7\\");\\n$oc-violet-8: map-get($oc-violet-list, \\"8\\");\\n$oc-violet-9: map-get($oc-violet-list, \\"9\\");\\n\\n\\n//  Indigo\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-indigo-list: (\\n  \\"0\\": #edf2ff,\\n  \\"1\\": #dbe4ff,\\n  \\"2\\": #bac8ff,\\n  \\"3\\": #91a7ff,\\n  \\"4\\": #748ffc,\\n  \\"5\\": #5c7cfa,\\n  \\"6\\": #4c6ef5,\\n  \\"7\\": #4263eb,\\n  \\"8\\": #3b5bdb,\\n  \\"9\\": #364fc7\\n);\\n\\n$oc-indigo-0: map-get($oc-indigo-list, \\"0\\");\\n$oc-indigo-1: map-get($oc-indigo-list, \\"1\\");\\n$oc-indigo-2: map-get($oc-indigo-list, \\"2\\");\\n$oc-indigo-3: map-get($oc-indigo-list, \\"3\\");\\n$oc-indigo-4: map-get($oc-indigo-list, \\"4\\");\\n$oc-indigo-5: map-get($oc-indigo-list, \\"5\\");\\n$oc-indigo-6: map-get($oc-indigo-list, \\"6\\");\\n$oc-indigo-7: map-get($oc-indigo-list, \\"7\\");\\n$oc-indigo-8: map-get($oc-indigo-list, \\"8\\");\\n$oc-indigo-9: map-get($oc-indigo-list, \\"9\\");\\n\\n\\n//  Blue\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-blue-list: (\\n  \\"0\\": #e7f5ff,\\n  \\"1\\": #d0ebff,\\n  \\"2\\": #a5d8ff,\\n  \\"3\\": #74c0fc,\\n  \\"4\\": #4dabf7,\\n  \\"5\\": #339af0,\\n  \\"6\\": #228be6,\\n  \\"7\\": #1c7ed6,\\n  \\"8\\": #1971c2,\\n  \\"9\\": #1864ab\\n);\\n\\n$oc-blue-0: map-get($oc-blue-list, \\"0\\");\\n$oc-blue-1: map-get($oc-blue-list, \\"1\\");\\n$oc-blue-2: map-get($oc-blue-list, \\"2\\");\\n$oc-blue-3: map-get($oc-blue-list, \\"3\\");\\n$oc-blue-4: map-get($oc-blue-list, \\"4\\");\\n$oc-blue-5: map-get($oc-blue-list, \\"5\\");\\n$oc-blue-6: map-get($oc-blue-list, \\"6\\");\\n$oc-blue-7: map-get($oc-blue-list, \\"7\\");\\n$oc-blue-8: map-get($oc-blue-list, \\"8\\");\\n$oc-blue-9: map-get($oc-blue-list, \\"9\\");\\n\\n\\n//  Cyan\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-cyan-list: (\\n  \\"0\\": #e3fafc,\\n  \\"1\\": #c5f6fa,\\n  \\"2\\": #99e9f2,\\n  \\"3\\": #66d9e8,\\n  \\"4\\": #3bc9db,\\n  \\"5\\": #22b8cf,\\n  \\"6\\": #15aabf,\\n  \\"7\\": #1098ad,\\n  \\"8\\": #0c8599,\\n  \\"9\\": #0b7285\\n);\\n\\n$oc-cyan-0: map-get($oc-cyan-list, \\"0\\");\\n$oc-cyan-1: map-get($oc-cyan-list, \\"1\\");\\n$oc-cyan-2: map-get($oc-cyan-list, \\"2\\");\\n$oc-cyan-3: map-get($oc-cyan-list, \\"3\\");\\n$oc-cyan-4: map-get($oc-cyan-list, \\"4\\");\\n$oc-cyan-5: map-get($oc-cyan-list, \\"5\\");\\n$oc-cyan-6: map-get($oc-cyan-list, \\"6\\");\\n$oc-cyan-7: map-get($oc-cyan-list, \\"7\\");\\n$oc-cyan-8: map-get($oc-cyan-list, \\"8\\");\\n$oc-cyan-9: map-get($oc-cyan-list, \\"9\\");\\n\\n\\n//  Teal\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-teal-list: (\\n  \\"0\\": #e6fcf5,\\n  \\"1\\": #c3fae8,\\n  \\"2\\": #96f2d7,\\n  \\"3\\": #63e6be,\\n  \\"4\\": #38d9a9,\\n  \\"5\\": #20c997,\\n  \\"6\\": #12b886,\\n  \\"7\\": #0ca678,\\n  \\"8\\": #099268,\\n  \\"9\\": #087f5b\\n);\\n\\n$oc-teal-0: map-get($oc-teal-list, \\"0\\");\\n$oc-teal-1: map-get($oc-teal-list, \\"1\\");\\n$oc-teal-2: map-get($oc-teal-list, \\"2\\");\\n$oc-teal-3: map-get($oc-teal-list, \\"3\\");\\n$oc-teal-4: map-get($oc-teal-list, \\"4\\");\\n$oc-teal-5: map-get($oc-teal-list, \\"5\\");\\n$oc-teal-6: map-get($oc-teal-list, \\"6\\");\\n$oc-teal-7: map-get($oc-teal-list, \\"7\\");\\n$oc-teal-8: map-get($oc-teal-list, \\"8\\");\\n$oc-teal-9: map-get($oc-teal-list, \\"9\\");\\n\\n\\n//  Green\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-green-list: (\\n  \\"0\\": #ebfbee,\\n  \\"1\\": #d3f9d8,\\n  \\"2\\": #b2f2bb,\\n  \\"3\\": #8ce99a,\\n  \\"4\\": #69db7c,\\n  \\"5\\": #51cf66,\\n  \\"6\\": #40c057,\\n  \\"7\\": #37b24d,\\n  \\"8\\": #2f9e44,\\n  \\"9\\": #2b8a3e\\n);\\n\\n$oc-green-0: map-get($oc-green-list, \\"0\\");\\n$oc-green-1: map-get($oc-green-list, \\"1\\");\\n$oc-green-2: map-get($oc-green-list, \\"2\\");\\n$oc-green-3: map-get($oc-green-list, \\"3\\");\\n$oc-green-4: map-get($oc-green-list, \\"4\\");\\n$oc-green-5: map-get($oc-green-list, \\"5\\");\\n$oc-green-6: map-get($oc-green-list, \\"6\\");\\n$oc-green-7: map-get($oc-green-list, \\"7\\");\\n$oc-green-8: map-get($oc-green-list, \\"8\\");\\n$oc-green-9: map-get($oc-green-list, \\"9\\");\\n\\n\\n//  Lime\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-lime-list: (\\n  \\"0\\": #f4fce3,\\n  \\"1\\": #e9fac8,\\n  \\"2\\": #d8f5a2,\\n  \\"3\\": #c0eb75,\\n  \\"4\\": #a9e34b,\\n  \\"5\\": #94d82d,\\n  \\"6\\": #82c91e,\\n  \\"7\\": #74b816,\\n  \\"8\\": #66a80f,\\n  \\"9\\": #5c940d\\n);\\n\\n$oc-lime-0: map-get($oc-lime-list, \\"0\\");\\n$oc-lime-1: map-get($oc-lime-list, \\"1\\");\\n$oc-lime-2: map-get($oc-lime-list, \\"2\\");\\n$oc-lime-3: map-get($oc-lime-list, \\"3\\");\\n$oc-lime-4: map-get($oc-lime-list, \\"4\\");\\n$oc-lime-5: map-get($oc-lime-list, \\"5\\");\\n$oc-lime-6: map-get($oc-lime-list, \\"6\\");\\n$oc-lime-7: map-get($oc-lime-list, \\"7\\");\\n$oc-lime-8: map-get($oc-lime-list, \\"8\\");\\n$oc-lime-9: map-get($oc-lime-list, \\"9\\");\\n\\n\\n//  Yellow\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-yellow-list: (\\n  \\"0\\": #fff9db,\\n  \\"1\\": #fff3bf,\\n  \\"2\\": #ffec99,\\n  \\"3\\": #ffe066,\\n  \\"4\\": #ffd43b,\\n  \\"5\\": #fcc419,\\n  \\"6\\": #fab005,\\n  \\"7\\": #f59f00,\\n  \\"8\\": #f08c00,\\n  \\"9\\": #e67700\\n);\\n\\n$oc-yellow-0: map-get($oc-yellow-list, \\"0\\");\\n$oc-yellow-1: map-get($oc-yellow-list, \\"1\\");\\n$oc-yellow-2: map-get($oc-yellow-list, \\"2\\");\\n$oc-yellow-3: map-get($oc-yellow-list, \\"3\\");\\n$oc-yellow-4: map-get($oc-yellow-list, \\"4\\");\\n$oc-yellow-5: map-get($oc-yellow-list, \\"5\\");\\n$oc-yellow-6: map-get($oc-yellow-list, \\"6\\");\\n$oc-yellow-7: map-get($oc-yellow-list, \\"7\\");\\n$oc-yellow-8: map-get($oc-yellow-list, \\"8\\");\\n$oc-yellow-9: map-get($oc-yellow-list, \\"9\\");\\n\\n\\n//  Orange\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-orange-list: (\\n  \\"0\\": #fff4e6,\\n  \\"1\\": #ffe8cc,\\n  \\"2\\": #ffd8a8,\\n  \\"3\\": #ffc078,\\n  \\"4\\": #ffa94d,\\n  \\"5\\": #ff922b,\\n  \\"6\\": #fd7e14,\\n  \\"7\\": #f76707,\\n  \\"8\\": #e8590c,\\n  \\"9\\": #d9480f\\n);\\n\\n$oc-orange-0: map-get($oc-orange-list, \\"0\\");\\n$oc-orange-1: map-get($oc-orange-list, \\"1\\");\\n$oc-orange-2: map-get($oc-orange-list, \\"2\\");\\n$oc-orange-3: map-get($oc-orange-list, \\"3\\");\\n$oc-orange-4: map-get($oc-orange-list, \\"4\\");\\n$oc-orange-5: map-get($oc-orange-list, \\"5\\");\\n$oc-orange-6: map-get($oc-orange-list, \\"6\\");\\n$oc-orange-7: map-get($oc-orange-list, \\"7\\");\\n$oc-orange-8: map-get($oc-orange-list, \\"8\\");\\n$oc-orange-9: map-get($oc-orange-list, \\"9\\");\\n\\n\\n//  Color list\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-color-spectrum:   9;\\n\\n$oc-color-list: (\\n  $oc-gray-list:      \\"gray\\",\\n  $oc-red-list:      \\"red\\",\\n  $oc-pink-list:      \\"pink\\",\\n  $oc-grape-list:      \\"grape\\",\\n  $oc-violet-list:      \\"violet\\",\\n  $oc-indigo-list:      \\"indigo\\",\\n  $oc-blue-list:      \\"blue\\",\\n  $oc-cyan-list:      \\"cyan\\",\\n  $oc-teal-list:      \\"teal\\",\\n  $oc-green-list:      \\"green\\",\\n  $oc-lime-list:      \\"lime\\",\\n  $oc-yellow-list:      \\"yellow\\",\\n  $oc-orange-list:      \\"orange\\"\\n);\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 37920 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ExportDialog.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/EyeDropper.scss": (
              /*!*******************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/EyeDropper.scss ***!
                \*******************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ".excalidraw .excalidraw-eye-dropper-container,\\n.excalidraw .excalidraw-eye-dropper-backdrop {\\n  position: absolute;\\n  width: 100%;\\n  height: 100%;\\n  z-index: var(--zIndex-eyeDropperBackdrop);\\n  touch-action: none;\\n}\\n.excalidraw .excalidraw-eye-dropper-container {\\n  pointer-events: none;\\n}\\n.excalidraw .excalidraw-eye-dropper-backdrop {\\n  pointer-events: all;\\n}\\n.excalidraw .excalidraw-eye-dropper-preview {\\n  pointer-events: none;\\n  width: 3rem;\\n  height: 3rem;\\n  position: fixed;\\n  z-index: var(--zIndex-eyeDropperPreview);\\n  border-radius: 1rem;\\n  border: 1px solid var(--default-border-color);\\n  filter: var(--theme-filter);\\n}\\n.excalidraw .excalidraw-eye-dropper-trigger {\\n  width: 1.25rem;\\n  height: 1.25rem;\\n  cursor: pointer;\\n  padding: 4px;\\n  margin-right: -4px;\\n  margin-left: -2px;\\n  border-radius: 0.5rem;\\n  color: var(--icon-fill-color);\\n}\\n.excalidraw .excalidraw-eye-dropper-trigger:hover {\\n  background: var(--button-hover-bg);\\n}\\n.excalidraw .excalidraw-eye-dropper-trigger.selected {\\n  color: var(--color-primary);\\n  background: var(--color-primary-light);\\n}", "",{"version":3,"sources":["webpack://./../../components/EyeDropper.scss"],"names":[],"mappings":"AACE;;EAEE,kBAAA;EACA,WAAA;EACA,YAAA;EACA,yCAAA;EACA,kBAAA;AAAJ;AAGE;EACE,oBAAA;AADJ;AAIE;EACE,mBAAA;AAFJ;AAKE;EACE,oBAAA;EACA,WAAA;EACA,YAAA;EACA,eAAA;EACA,wCAAA;EACA,mBAAA;EACA,6CAAA;EACA,2BAAA;AAHJ;AAME;EACE,cAAA;EACA,eAAA;EACA,eAAA;EACA,YAAA;EACA,kBAAA;EACA,iBAAA;EACA,qBAAA;EACA,6BAAA;AAJJ;AAMI;EACE,kCAAA;AAJN;AAMI;EACE,2BAAA;EACA,sCAAA;AAJN","sourcesContent":[".excalidraw {\\n  .excalidraw-eye-dropper-container,\\n  .excalidraw-eye-dropper-backdrop {\\n    position: absolute;\\n    width: 100%;\\n    height: 100%;\\n    z-index: var(--zIndex-eyeDropperBackdrop);\\n    touch-action: none;\\n  }\\n\\n  .excalidraw-eye-dropper-container {\\n    pointer-events: none;\\n  }\\n\\n  .excalidraw-eye-dropper-backdrop {\\n    pointer-events: all;\\n  }\\n\\n  .excalidraw-eye-dropper-preview {\\n    pointer-events: none;\\n    width: 3rem;\\n    height: 3rem;\\n    position: fixed;\\n    z-index: var(--zIndex-eyeDropperPreview);\\n    border-radius: 1rem;\\n    border: 1px solid var(--default-border-color);\\n    filter: var(--theme-filter);\\n  }\\n\\n  .excalidraw-eye-dropper-trigger {\\n    width: 1.25rem;\\n    height: 1.25rem;\\n    cursor: pointer;\\n    padding: 4px;\\n    margin-right: -4px;\\n    margin-left: -2px;\\n    border-radius: 0.5rem;\\n    color: var(--icon-fill-color);\\n\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n    &.selected {\\n      color: var(--color-primary);\\n      background: var(--color-primary-light);\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5924 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/EyeDropper.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/FilledButton.scss": (
              /*!*********************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/FilledButton.scss ***!
                \*********************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .ExcButton {\\n  --text-color: transparent;\\n  --border-color: transparent;\\n  --back-color: transparent;\\n  color: var(--text-color);\\n  background-color: var(--back-color);\\n  border-color: var(--border-color);\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  flex-shrink: 0;\\n  flex-wrap: nowrap;\\n  border-radius: 0.5rem;\\n  border-width: 1px;\\n  border-style: solid;\\n  font-family: \\"Assistant\\";\\n  user-select: none;\\n  transition: all 150ms ease-out;\\n}\\n.excalidraw .ExcButton--color-primary.ExcButton--variant-filled {\\n  --text-color: var(--color-surface-lowest);\\n  --back-color: var(--color-primary);\\n}\\n.excalidraw .ExcButton--color-primary.ExcButton--variant-filled:hover {\\n  --back-color: var(--color-brand-hover);\\n}\\n.excalidraw .ExcButton--color-primary.ExcButton--variant-filled:active {\\n  --back-color: var(--color-brand-active);\\n}\\n.excalidraw .ExcButton--color-primary.ExcButton--variant-outlined, .excalidraw .ExcButton--color-primary.ExcButton--variant-icon {\\n  --text-color: var(--color-primary);\\n  --border-color: var(--color-border-outline);\\n  --back-color: transparent;\\n}\\n.excalidraw .ExcButton--color-primary.ExcButton--variant-outlined:hover, .excalidraw .ExcButton--color-primary.ExcButton--variant-icon:hover {\\n  --text-color: var(--color-brand-hover);\\n  --border-color: var(--color-brand-hover);\\n}\\n.excalidraw .ExcButton--color-primary.ExcButton--variant-outlined:active, .excalidraw .ExcButton--color-primary.ExcButton--variant-icon:active {\\n  --text-color: var(--color-brand-active);\\n  --border-color: var(--color-brand-active);\\n}\\n.excalidraw .ExcButton--color-danger.ExcButton--variant-filled {\\n  --text-color: var(--color-danger-text);\\n  --back-color: var(--color-danger-dark);\\n}\\n.excalidraw .ExcButton--color-danger.ExcButton--variant-filled:hover {\\n  --back-color: var(--color-danger-darker);\\n}\\n.excalidraw .ExcButton--color-danger.ExcButton--variant-filled:active {\\n  --back-color: var(--color-danger-darkest);\\n}\\n.excalidraw .ExcButton--color-danger.ExcButton--variant-outlined, .excalidraw .ExcButton--color-danger.ExcButton--variant-icon {\\n  --text-color: var(--color-danger);\\n  --border-color: var(--color-danger);\\n  --back-color: transparent;\\n}\\n.excalidraw .ExcButton--color-danger.ExcButton--variant-outlined:hover, .excalidraw .ExcButton--color-danger.ExcButton--variant-icon:hover {\\n  --text-color: var(--color-danger-darkest);\\n  --border-color: var(--color-danger-darkest);\\n}\\n.excalidraw .ExcButton--color-danger.ExcButton--variant-outlined:active, .excalidraw .ExcButton--color-danger.ExcButton--variant-icon:active {\\n  --text-color: var(--color-danger-darker);\\n  --border-color: var(--color-danger-darker);\\n}\\n.excalidraw .ExcButton--color-muted.ExcButton--variant-filled {\\n  --text-color: var(--island-bg-color);\\n  --back-color: var(--color-gray-50);\\n}\\n.excalidraw .ExcButton--color-muted.ExcButton--variant-filled:hover {\\n  --back-color: var(--color-gray-60);\\n}\\n.excalidraw .ExcButton--color-muted.ExcButton--variant-filled:active {\\n  --back-color: var(--color-gray-80);\\n}\\n.excalidraw .ExcButton--color-muted.ExcButton--variant-outlined, .excalidraw .ExcButton--color-muted.ExcButton--variant-icon {\\n  --text-color: var(--color-muted-background);\\n  --border-color: var(--color-muted);\\n  --back-color: var(--island-bg-color);\\n}\\n.excalidraw .ExcButton--color-muted.ExcButton--variant-outlined:hover, .excalidraw .ExcButton--color-muted.ExcButton--variant-icon:hover {\\n  --text-color: var(--color-muted-background-darker);\\n  --border-color: var(--color-muted-darker);\\n}\\n.excalidraw .ExcButton--color-muted.ExcButton--variant-outlined:active, .excalidraw .ExcButton--color-muted.ExcButton--variant-icon:active {\\n  --text-color: var(--color-muted-background-darker);\\n  --border-color: var(--color-muted-darkest);\\n}\\n.excalidraw .ExcButton--color-warning.ExcButton--variant-filled {\\n  --text-color: black;\\n  --back-color: var(--color-warning-dark);\\n}\\n.excalidraw .ExcButton--color-warning.ExcButton--variant-filled:hover {\\n  --back-color: var(--color-warning-darker);\\n}\\n.excalidraw .ExcButton--color-warning.ExcButton--variant-filled:active {\\n  --back-color: var(--color-warning-darkest);\\n}\\n.excalidraw .ExcButton--color-warning.ExcButton--variant-outlined, .excalidraw .ExcButton--color-warning.ExcButton--variant-icon {\\n  --text-color: var(--color-warning-dark);\\n  --border-color: var(--color-warning-dark);\\n  --back-color: var(--input-bg-color);\\n}\\n.excalidraw .ExcButton--color-warning.ExcButton--variant-outlined:hover, .excalidraw .ExcButton--color-warning.ExcButton--variant-icon:hover {\\n  --text-color: var(--color-warning-darker);\\n  --border-color: var(--color-warning-darker);\\n}\\n.excalidraw .ExcButton--color-warning.ExcButton--variant-outlined:active, .excalidraw .ExcButton--color-warning.ExcButton--variant-icon:active {\\n  --text-color: var(--color-warning-darkest);\\n  --border-color: var(--color-warning-darkest);\\n}\\n.excalidraw .ExcButton--size-large {\\n  font-weight: 600;\\n  font-size: 0.875rem;\\n  min-height: 3rem;\\n  padding: 0.5rem 1.5rem;\\n  gap: 0.75rem;\\n  letter-spacing: 0.4px;\\n}\\n.excalidraw .ExcButton--size-medium {\\n  font-weight: 600;\\n  font-size: 0.75rem;\\n  min-height: 2.5rem;\\n  padding: 0.5rem 1rem;\\n  gap: 0.5rem;\\n  letter-spacing: normal;\\n}\\n.excalidraw .ExcButton--variant-icon {\\n  padding: 0.5rem 0.75rem;\\n  width: 3rem;\\n}\\n.excalidraw .ExcButton--fullWidth {\\n  width: 100%;\\n}\\n.excalidraw .ExcButton__icon {\\n  width: 1.25rem;\\n  height: 1.25rem;\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/FilledButton.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AAAE;EACE,yBAAA;EACA,2BAAA;EACA,yBAAA;EAEA,wBAAA;EACA,mCAAA;EACA,iCAAA;EAkIA,aAAA;EACA,uBAAA;EACA,mBAAA;EACA,cAAA;EACA,iBAAA;EAEA,qBAAA;EACA,iBAAA;EACA,mBAAA;EAEA,wBAAA;EAEA,iBAAA;EAEA,8BAAA;AAnIJ;AAVM;EACE,yCAAA;EACA,kCAAA;AAYR;AAVQ;EACE,sCAAA;AAYV;AATQ;EACE,uCAAA;AAWV;AAPM;EAEE,kCAAA;EACA,2CAAA;EACA,yBAAA;AAQR;AANQ;EACE,sCAAA;EACA,wCAAA;AAQV;AALQ;EACE,uCAAA;EACA,yCAAA;AAOV;AADM;EACE,sCAAA;EACA,sCAAA;AAGR;AADQ;EACE,wCAAA;AAGV;AAAQ;EACE,yCAAA;AAEV;AAEM;EAEE,iCAAA;EACA,mCAAA;EACA,yBAAA;AADR;AAGQ;EACE,yCAAA;EACA,2CAAA;AADV;AAIQ;EACE,wCAAA;EACA,0CAAA;AAFV;AAQM;EACE,oCAAA;EACA,kCAAA;AANR;AAQQ;EACE,kCAAA;AANV;AASQ;EACE,kCAAA;AAPV;AAWM;EAEE,2CAAA;EACA,kCAAA;EACA,oCAAA;AAVR;AAYQ;EACE,kDAAA;EACA,yCAAA;AAVV;AAaQ;EACE,kDAAA;EACA,0CAAA;AAXV;AAiBM;EACE,mBAAA;EACA,uCAAA;AAfR;AAiBQ;EACE,yCAAA;AAfV;AAkBQ;EACE,0CAAA;AAhBV;AAoBM;EAEE,uCAAA;EACA,yCAAA;EACA,mCAAA;AAnBR;AAqBQ;EACE,yCAAA;EACA,2CAAA;AAnBV;AAsBQ;EACE,0CAAA;EACA,4CAAA;AApBV;AAyCI;EACE,gBAAA;EACA,mBAAA;EACA,gBAAA;EACA,sBAAA;EACA,YAAA;EAEA,qBAAA;AAxCN;AA2CI;EACE,gBAAA;EACA,kBAAA;EACA,kBAAA;EACA,oBAAA;EACA,WAAA;EAEA,sBAAA;AA1CN;AA6CI;EACE,uBAAA;EACA,WAAA;AA3CN;AA8CI;EACE,WAAA;AA5CN;AA+CI;EACE,cAAA;EACA,eAAA;AA7CN","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../css/variables.module\\";\\n\\n.excalidraw {\\n  .ExcButton {\\n    --text-color: transparent;\\n    --border-color: transparent;\\n    --back-color: transparent;\\n\\n    color: var(--text-color);\\n    background-color: var(--back-color);\\n    border-color: var(--border-color);\\n\\n    &--color-primary {\\n      &.ExcButton--variant-filled {\\n        --text-color: var(--color-surface-lowest);\\n        --back-color: var(--color-primary);\\n\\n        &:hover {\\n          --back-color: var(--color-brand-hover);\\n        }\\n\\n        &:active {\\n          --back-color: var(--color-brand-active);\\n        }\\n      }\\n\\n      &.ExcButton--variant-outlined,\\n      &.ExcButton--variant-icon {\\n        --text-color: var(--color-primary);\\n        --border-color: var(--color-border-outline);\\n        --back-color: transparent;\\n\\n        &:hover {\\n          --text-color: var(--color-brand-hover);\\n          --border-color: var(--color-brand-hover);\\n        }\\n\\n        &:active {\\n          --text-color: var(--color-brand-active);\\n          --border-color: var(--color-brand-active);\\n        }\\n      }\\n    }\\n\\n    &--color-danger {\\n      &.ExcButton--variant-filled {\\n        --text-color: var(--color-danger-text);\\n        --back-color: var(--color-danger-dark);\\n\\n        &:hover {\\n          --back-color: var(--color-danger-darker);\\n        }\\n\\n        &:active {\\n          --back-color: var(--color-danger-darkest);\\n        }\\n      }\\n\\n      &.ExcButton--variant-outlined,\\n      &.ExcButton--variant-icon {\\n        --text-color: var(--color-danger);\\n        --border-color: var(--color-danger);\\n        --back-color: transparent;\\n\\n        &:hover {\\n          --text-color: var(--color-danger-darkest);\\n          --border-color: var(--color-danger-darkest);\\n        }\\n\\n        &:active {\\n          --text-color: var(--color-danger-darker);\\n          --border-color: var(--color-danger-darker);\\n        }\\n      }\\n    }\\n\\n    &--color-muted {\\n      &.ExcButton--variant-filled {\\n        --text-color: var(--island-bg-color);\\n        --back-color: var(--color-gray-50);\\n\\n        &:hover {\\n          --back-color: var(--color-gray-60);\\n        }\\n\\n        &:active {\\n          --back-color: var(--color-gray-80);\\n        }\\n      }\\n\\n      &.ExcButton--variant-outlined,\\n      &.ExcButton--variant-icon {\\n        --text-color: var(--color-muted-background);\\n        --border-color: var(--color-muted);\\n        --back-color: var(--island-bg-color);\\n\\n        &:hover {\\n          --text-color: var(--color-muted-background-darker);\\n          --border-color: var(--color-muted-darker);\\n        }\\n\\n        &:active {\\n          --text-color: var(--color-muted-background-darker);\\n          --border-color: var(--color-muted-darkest);\\n        }\\n      }\\n    }\\n\\n    &--color-warning {\\n      &.ExcButton--variant-filled {\\n        --text-color: black;\\n        --back-color: var(--color-warning-dark);\\n\\n        &:hover {\\n          --back-color: var(--color-warning-darker);\\n        }\\n\\n        &:active {\\n          --back-color: var(--color-warning-darkest);\\n        }\\n      }\\n\\n      &.ExcButton--variant-outlined,\\n      &.ExcButton--variant-icon {\\n        --text-color: var(--color-warning-dark);\\n        --border-color: var(--color-warning-dark);\\n        --back-color: var(--input-bg-color);\\n\\n        &:hover {\\n          --text-color: var(--color-warning-darker);\\n          --border-color: var(--color-warning-darker);\\n        }\\n\\n        &:active {\\n          --text-color: var(--color-warning-darkest);\\n          --border-color: var(--color-warning-darkest);\\n        }\\n      }\\n    }\\n\\n    display: flex;\\n    justify-content: center;\\n    align-items: center;\\n    flex-shrink: 0;\\n    flex-wrap: nowrap;\\n\\n    border-radius: 0.5rem;\\n    border-width: 1px;\\n    border-style: solid;\\n\\n    font-family: \\"Assistant\\";\\n\\n    user-select: none;\\n\\n    transition: all 150ms ease-out;\\n\\n    &--size-large {\\n      font-weight: 600;\\n      font-size: 0.875rem;\\n      min-height: 3rem;\\n      padding: 0.5rem 1.5rem;\\n      gap: 0.75rem;\\n\\n      letter-spacing: 0.4px;\\n    }\\n\\n    &--size-medium {\\n      font-weight: 600;\\n      font-size: 0.75rem;\\n      min-height: 2.5rem;\\n      padding: 0.5rem 1rem;\\n      gap: 0.5rem;\\n\\n      letter-spacing: normal;\\n    }\\n\\n    &--variant-icon {\\n      padding: 0.5rem 0.75rem;\\n      width: 3rem;\\n    }\\n\\n    &--fullWidth {\\n      width: 100%;\\n    }\\n\\n    &__icon {\\n      width: 1.25rem;\\n      height: 1.25rem;\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 25956 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/FilledButton.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/FixedSideContainer.scss": (
              /*!***************************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/FixedSideContainer.scss ***!
                \***************************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .FixedSideContainer {\\n  position: absolute;\\n  pointer-events: none;\\n}\\n.excalidraw .FixedSideContainer > * {\\n  pointer-events: var(--ui-pointerEvents);\\n}\\n.excalidraw .FixedSideContainer_side_top {\\n  left: var(--editor-container-padding);\\n  top: var(--editor-container-padding);\\n  right: var(--editor-container-padding);\\n  bottom: var(--editor-container-padding);\\n  z-index: 2;\\n}\\n.excalidraw .FixedSideContainer_side_top.zen-mode {\\n  right: 42px;\\n}\\n\\n/* TODO: if these are used, make sure to implement RTL support\\n.FixedSideContainer_side_left {\\n  left: var(--space-factor);\\n  top: var(--space-factor);\\n  bottom: var(--space-factor);\\n  z-index: 1;\\n}\\n\\n.FixedSideContainer_side_right {\\n  right: var(--space-factor);\\n  top: var(--space-factor);\\n  bottom: var(--space-factor);\\n  z-index: 3;\\n}\\n*/", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/FixedSideContainer.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AAAE;EACE,kBAAA;EACA,oBAAA;AAGJ;AAAE;EACE,uCAAA;AAEJ;AACE;EACE,qCAAA;EACA,oCAAA;EACA,sCAAA;EACA,uCAAA;EACA,UAAA;AACJ;AAEE;EACE,WAAA;AAAJ;;AAIA;;;;;;;;;;;;;;CAAA","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../css/variables.module\\";\\n\\n.excalidraw {\\n  .FixedSideContainer {\\n    position: absolute;\\n    pointer-events: none;\\n  }\\n\\n  .FixedSideContainer > * {\\n    pointer-events: var(--ui-pointerEvents);\\n  }\\n\\n  .FixedSideContainer_side_top {\\n    left: var(--editor-container-padding);\\n    top: var(--editor-container-padding);\\n    right: var(--editor-container-padding);\\n    bottom: var(--editor-container-padding);\\n    z-index: 2;\\n  }\\n\\n  .FixedSideContainer_side_top.zen-mode {\\n    right: 42px;\\n  }\\n}\\n\\n/* TODO: if these are used, make sure to implement RTL support\\n.FixedSideContainer_side_left {\\n  left: var(--space-factor);\\n  top: var(--space-factor);\\n  bottom: var(--space-factor);\\n  z-index: 1;\\n}\\n\\n.FixedSideContainer_side_right {\\n  right: var(--space-factor);\\n  top: var(--space-factor);\\n  bottom: var(--space-factor);\\n  z-index: 3;\\n}\\n*/\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 10280 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/FixedSideContainer.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/HelpDialog.scss": (
              /*!*******************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/HelpDialog.scss ***!
                \*******************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .HelpDialog .Modal__content {\\n  max-width: 960px;\\n}\\n.excalidraw .HelpDialog h3 {\\n  margin: 1.5rem 0;\\n  font-weight: bold;\\n  font-size: 1.125rem;\\n}\\n.excalidraw .HelpDialog__header {\\n  display: flex;\\n  flex-wrap: wrap;\\n  gap: 0.75rem;\\n}\\n.excalidraw .HelpDialog__btn {\\n  --background: var(--color-surface-mid);\\n  display: flex;\\n  column-gap: 0.5rem;\\n  align-items: center;\\n  background-color: var(--background);\\n  padding: 0.625rem 1rem;\\n  border: 1px solid var(--background);\\n  border-radius: var(--border-radius-lg);\\n  color: var(--text-primary-color);\\n  font-weight: 600;\\n  font-size: 0.75rem;\\n  letter-spacing: 0.4px;\\n}\\n.excalidraw.theme--dark.excalidraw .HelpDialog__btn {\\n  --background: var(--color-surface-high);\\n}\\n.excalidraw.theme--dark.excalidraw .HelpDialog__btn:hover {\\n  --background: #363541;\\n}\\n\\n.excalidraw .HelpDialog__btn:hover {\\n  --background: var(--color-surface-high);\\n  text-decoration: none;\\n}\\n.excalidraw .HelpDialog__btn:active {\\n  border-color: var(--color-primary);\\n}\\n.excalidraw .HelpDialog__link-icon {\\n  line-height: 0;\\n}\\n.excalidraw .HelpDialog__link-icon svg {\\n  width: 1rem;\\n  height: 1rem;\\n}\\n.excalidraw .HelpDialog__islands-container {\\n  display: grid;\\n  grid-column-gap: 1.5rem;\\n  grid-row-gap: 2rem;\\n}\\n@media screen and (min-width: 1024px) {\\n  .excalidraw .HelpDialog__islands-container {\\n    grid-template-columns: 1fr 1fr;\\n  }\\n}\\n@media screen and (min-width: 1024px) {\\n  .excalidraw .HelpDialog__island--tools {\\n    grid-area: 1/1/2/2;\\n  }\\n  .excalidraw .HelpDialog__island--view {\\n    grid-area: 2/1/3/2;\\n  }\\n  .excalidraw .HelpDialog__island--editor {\\n    grid-area: 1/2/3/3;\\n  }\\n}\\n.excalidraw .HelpDialog__island h4 {\\n  font-size: 1rem;\\n  font-weight: bold;\\n  margin: 0;\\n  margin-bottom: 0.625rem;\\n}\\n.excalidraw .HelpDialog__island-content {\\n  border: 1px solid var(--dialog-border-color);\\n  border-radius: var(--border-radius-lg);\\n}\\n.excalidraw .HelpDialog__shortcut {\\n  border-bottom: 1px solid var(--dialog-border-color);\\n  padding: 0.375rem 0.75rem;\\n  display: flex;\\n  justify-content: space-between;\\n  align-items: center;\\n  font-size: 0.875rem;\\n  column-gap: 0.5rem;\\n}\\n.excalidraw .HelpDialog__shortcut:last-child {\\n  border-bottom: none;\\n}\\n.excalidraw .HelpDialog__key-container {\\n  display: flex;\\n  align-items: center;\\n  column-gap: 0.25rem;\\n  flex-shrink: 0;\\n}\\n.excalidraw .HelpDialog__key {\\n  display: flex;\\n  box-sizing: border-box;\\n  font-size: 0.625rem;\\n  background-color: var(--color-primary-light);\\n  border-radius: var(--border-radius-md);\\n  padding: 0.5rem;\\n  word-break: keep-all;\\n  align-items: center;\\n  font-family: inherit;\\n  line-height: 1;\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/HelpDialog.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AACI;EACE,gBAAA;AAEN;AACI;EACE,gBAAA;EACA,iBAAA;EACA,mBAAA;AACN;AAEI;EACE,aAAA;EACA,eAAA;EACA,YAAA;AAAN;AAGI;EACE,sCAAA;EAEA,aAAA;EACA,kBAAA;EACA,mBAAA;EACA,mCAAA;EACA,sBAAA;EACA,mCAAA;EACA,sCAAA;EACA,gCAAA;EACA,gBAAA;EACA,kBAAA;EACA,qBAAA;AAFN;AAIe;EACP,uCAAA;AAFR;AAGQ;EACE,qBAAA;AADV;;AAKM;EACE,uCAAA;EACA,qBAAA;AAFR;AAKM;EACE,kCAAA;AAHR;AAOI;EACE,cAAA;AALN;AAMM;EACE,WAAA;EACA,YAAA;AAJR;AAQI;EACE,aAAA;EAIA,uBAAA;EACA,kBAAA;AATN;AAKM;EAFF;IAGI,8BAAA;EAFN;AACF;AAOI;EACE;IACE,kBAAA;EALN;EAOI;IACE,kBAAA;EALN;EAOI;IACE,kBAAA;EALN;AACF;AASM;EACE,eAAA;EACA,iBAAA;EACA,SAAA;EACA,uBAAA;AAPR;AAUM;EACE,4CAAA;EACA,sCAAA;AARR;AAYI;EACE,mDAAA;EACA,yBAAA;EACA,aAAA;EACA,8BAAA;EACA,mBAAA;EACA,mBAAA;EACA,kBAAA;AAVN;AAYM;EACE,mBAAA;AAVR;AAcI;EACE,aAAA;EACA,mBAAA;EACA,mBAAA;EACA,cAAA;AAZN;AAeI;EACE,aAAA;EACA,sBAAA;EACA,mBAAA;EACA,4CAAA;EACA,sCAAA;EACA,eAAA;EACA,oBAAA;EACA,mBAAA;EACA,oBAAA;EACA,cAAA;AAbN","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../css/variables.module\\";\\n\\n.excalidraw {\\n  .HelpDialog {\\n    .Modal__content {\\n      max-width: 960px;\\n    }\\n\\n    h3 {\\n      margin: 1.5rem 0;\\n      font-weight: bold;\\n      font-size: 1.125rem;\\n    }\\n\\n    &__header {\\n      display: flex;\\n      flex-wrap: wrap;\\n      gap: 0.75rem;\\n    }\\n\\n    &__btn {\\n      --background: var(--color-surface-mid);\\n\\n      display: flex;\\n      column-gap: 0.5rem;\\n      align-items: center;\\n      background-color: var(--background);\\n      padding: 0.625rem 1rem;\\n      border: 1px solid var(--background);\\n      border-radius: var(--border-radius-lg);\\n      color: var(--text-primary-color);\\n      font-weight: 600;\\n      font-size: 0.75rem;\\n      letter-spacing: 0.4px;\\n\\n      @at-root .excalidraw.theme--dark#{&} {\\n        --background: var(--color-surface-high);\\n        &:hover {\\n          --background: #363541;\\n        }\\n      }\\n\\n      &:hover {\\n        --background: var(--color-surface-high);\\n        text-decoration: none;\\n      }\\n\\n      &:active {\\n        border-color: var(--color-primary);\\n      }\\n    }\\n\\n    &__link-icon {\\n      line-height: 0;\\n      svg {\\n        width: 1rem;\\n        height: 1rem;\\n      }\\n    }\\n\\n    &__islands-container {\\n      display: grid;\\n      @media screen and (min-width: 1024px) {\\n        grid-template-columns: 1fr 1fr;\\n      }\\n      grid-column-gap: 1.5rem;\\n      grid-row-gap: 2rem;\\n    }\\n\\n    @media screen and (min-width: 1024px) {\\n      &__island--tools {\\n        grid-area: 1 / 1 / 2 / 2;\\n      }\\n      &__island--view {\\n        grid-area: 2 / 1 / 3 / 2;\\n      }\\n      &__island--editor {\\n        grid-area: 1 / 2 / 3 / 3;\\n      }\\n    }\\n\\n    &__island {\\n      h4 {\\n        font-size: 1rem;\\n        font-weight: bold;\\n        margin: 0;\\n        margin-bottom: 0.625rem;\\n      }\\n\\n      &-content {\\n        border: 1px solid var(--dialog-border-color);\\n        border-radius: var(--border-radius-lg);\\n      }\\n    }\\n\\n    &__shortcut {\\n      border-bottom: 1px solid var(--dialog-border-color);\\n      padding: 0.375rem 0.75rem;\\n      display: flex;\\n      justify-content: space-between;\\n      align-items: center;\\n      font-size: 0.875rem;\\n      column-gap: 0.5rem;\\n\\n      &:last-child {\\n        border-bottom: none;\\n      }\\n    }\\n\\n    &__key-container {\\n      display: flex;\\n      align-items: center;\\n      column-gap: 0.25rem;\\n      flex-shrink: 0;\\n    }\\n\\n    &__key {\\n      display: flex;\\n      box-sizing: border-box;\\n      font-size: 0.625rem;\\n      background-color: var(--color-primary-light);\\n      border-radius: var(--border-radius-md);\\n      padding: 0.5rem;\\n      word-break: keep-all;\\n      align-items: center;\\n      font-family: inherit;\\n      line-height: 1;\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 18540 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/HelpDialog.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/HintViewer.scss": (
              /*!*******************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/HintViewer.scss ***!
                \*******************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .HintViewer {\\n  pointer-events: none;\\n  box-sizing: border-box;\\n  position: absolute;\\n  display: flex;\\n  justify-content: center;\\n  left: 0;\\n  top: 100%;\\n  max-width: 100%;\\n  width: 100%;\\n  margin-top: 0.5rem;\\n  text-align: center;\\n  color: var(--color-gray-40);\\n  font-size: 0.75rem;\\n}\\n.excalidraw--mobile.excalidraw .HintViewer {\\n  position: static;\\n  padding-right: 2rem;\\n}\\n\\n.excalidraw .HintViewer > span {\\n  padding: 0.25rem;\\n}\\n.excalidraw.theme--dark .HintViewer {\\n  color: var(--color-gray-60);\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/HintViewer.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AAGE;EACE,oBAAA;EACA,sBAAA;EACA,kBAAA;EACA,aAAA;EACA,uBAAA;EACA,OAAA;EACA,SAAA;EACA,eAAA;EACA,WAAA;EACA,kBAAA;EACA,kBAAA;EACA,2BAAA;EACA,kBAAA;AAAJ;ADhBW;ECmBL,gBAAA;EACA,mBAAA;AAAN;;AAGI;EACE,gBAAA;AAAN;AAKI;EACE,2BAAA;AAHN","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../css/variables.module\\";\\n\\n// this is loosely based on the longest hint text\\n$wide-viewport-width: 1000px;\\n\\n.excalidraw {\\n  .HintViewer {\\n    pointer-events: none;\\n    box-sizing: border-box;\\n    position: absolute;\\n    display: flex;\\n    justify-content: center;\\n    left: 0;\\n    top: 100%;\\n    max-width: 100%;\\n    width: 100%;\\n    margin-top: 0.5rem;\\n    text-align: center;\\n    color: var(--color-gray-40);\\n    font-size: 0.75rem;\\n\\n    @include isMobile {\\n      position: static;\\n      padding-right: 2rem;\\n    }\\n\\n    > span {\\n      padding: 0.25rem;\\n    }\\n  }\\n\\n  &.theme--dark {\\n    .HintViewer {\\n      color: var(--color-gray-60);\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 9684 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/HintViewer.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/IconPicker.scss": (
              /*!*******************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/IconPicker.scss ***!
                \*******************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .picker-container {\\n  display: inline-block;\\n  box-sizing: border-box;\\n  margin-right: 0.25rem;\\n}\\n.excalidraw .picker {\\n  background: var(--popup-bg-color);\\n  border: 0 solid rgba(255, 255, 255, 0.25);\\n  box-shadow: rgba(0, 0, 0, 0.25) 2px 2px 4px 2px;\\n  border-radius: 4px;\\n  position: absolute;\\n}\\n.excalidraw .picker-container button,\\n.excalidraw .picker button {\\n  position: relative;\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n}\\n.excalidraw .picker-container button:focus-visible,\\n.excalidraw .picker button:focus-visible {\\n  outline: transparent;\\n  background-color: var(--button-gray-2);\\n}\\n.excalidraw .picker-container button:focus-visible svg,\\n.excalidraw .picker button:focus-visible svg {\\n  opacity: 1;\\n}\\n.excalidraw .picker-container button:hover,\\n.excalidraw .picker button:hover {\\n  background-color: var(--button-gray-2);\\n}\\n.excalidraw .picker-container button:active,\\n.excalidraw .picker button:active {\\n  background-color: var(--button-gray-3);\\n}\\n.excalidraw .picker-container button:disabled,\\n.excalidraw .picker button:disabled {\\n  cursor: not-allowed;\\n}\\n.excalidraw .picker-container button svg,\\n.excalidraw .picker button svg {\\n  margin: 0;\\n  width: 36px;\\n  height: 18px;\\n  pointer-events: none;\\n}\\n.excalidraw .picker button {\\n  padding: 0.25rem 0.28rem 0.35rem 0.25rem;\\n}\\n.excalidraw .picker-triangle {\\n  width: 0;\\n  height: 0;\\n  position: relative;\\n  top: -10px;\\n  z-index: 10;\\n}\\n:root[dir=ltr] .excalidraw .picker-triangle {\\n  left: 12px;\\n}\\n:root[dir=rtl] .excalidraw .picker-triangle {\\n  right: 12px;\\n}\\n.excalidraw .picker-triangle:before {\\n  content: \\"\\";\\n  position: absolute;\\n  border-style: solid;\\n  border-width: 0 9px 10px;\\n  border-color: transparent transparent rgba(0, 0, 0, 0.1);\\n  top: -1px;\\n}\\n.excalidraw .picker-triangle:after {\\n  content: \\"\\";\\n  position: absolute;\\n  border-style: solid;\\n  border-width: 0 9px 10px;\\n  border-color: transparent transparent var(--popup-bg-color);\\n}\\n.excalidraw .picker-content {\\n  padding: 0.5rem;\\n  display: grid;\\n  grid-template-columns: repeat(3, auto);\\n  grid-gap: 0.5rem;\\n  border-radius: 4px;\\n}\\n:root[dir=rtl] .excalidraw .picker-content {\\n  padding: 0.4rem;\\n}\\n.excalidraw .picker-keybinding {\\n  position: absolute;\\n  bottom: 2px;\\n  font-size: 0.7em;\\n  color: var(--keybinding-color);\\n}\\n:root[dir=ltr] .excalidraw .picker-keybinding {\\n  right: 2px;\\n}\\n:root[dir=rtl] .excalidraw .picker-keybinding {\\n  left: 2px;\\n}\\n.excalidraw--mobile.excalidraw .picker-keybinding {\\n  display: none;\\n}\\n\\n.excalidraw .picker-type-canvasBackground .picker-keybinding {\\n  color: #aaa;\\n}\\n.excalidraw .picker-type-elementBackground .picker-keybinding {\\n  color: #ffffff;\\n}\\n.excalidraw .picker-swatch[aria-label=transparent] .picker-keybinding {\\n  color: #aaa;\\n}\\n.excalidraw .picker-type-elementStroke .picker-keybinding {\\n  color: #d4d4d4;\\n}\\n.excalidraw.theme--dark .picker-type-elementBackground .picker-keybinding {\\n  color: #000000;\\n}\\n.excalidraw.theme--dark .picker-swatch[aria-label=transparent] .picker-keybinding {\\n  color: #000000;\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/IconPicker.scss","webpack://./../../../node_modules/open-color/open-color.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AAAE;EACE,qBAAA;EACA,sBAAA;EACA,qBAAA;AAGJ;AAAE;EACE,iCAAA;EACA,yCAAA;EAEA,+CAAA;EACA,kBAAA;EACA,kBAAA;AACJ;AAEE;;EAEE,kBAAA;EACA,aAAA;EACA,mBAAA;EACA,uBAAA;AAAJ;AAEI;;EACE,oBAAA;EACA,sCAAA;AACN;AAAM;;EACE,UAAA;AAGR;AACI;;EACE,sCAAA;AAEN;AACI;;EACE,sCAAA;AAEN;AACI;;EACE,mBAAA;AAEN;AACI;;EACE,SAAA;EACA,WAAA;EACA,YAAA;EACA,oBAAA;AAEN;AAEE;EACE,wCAAA;AAAJ;AAGE;EACE,QAAA;EACA,SAAA;EACA,kBAAA;EACA,UAAA;EAQA,WAAA;AARJ;AACI;EACE,UAAA;AACN;AAEI;EACE,WAAA;AAAN;AAII;EACE,WAAA;EACA,kBAAA;EACA,mBAAA;EACA,wBAAA;EACA,wDAAA;EACA,SAAA;AAFN;AAKI;EACE,WAAA;EACA,kBAAA;EACA,mBAAA;EACA,wBAAA;EACA,2DAAA;AAHN;AAOE;EACE,eAAA;EACA,aAAA;EACA,sCAAA;EACA,gBAAA;EACA,kBAAA;AALJ;AAMI;EACE,eAAA;AAJN;AAQE;EACE,kBAAA;EACA,WAAA;EACA,gBAAA;EACA,8BAAA;AANJ;AAQI;EACE,UAAA;AANN;AASI;EACE,SAAA;AAPN;ADrGW;EC+GL,aAAA;AAPN;;AAWE;EACE,WAAA;AARJ;AAWE;EACE,cChHe;ADuGnB;AAYE;EACE,WAAA;AAVJ;AAaE;EACE,cAAA;AAXJ;AAeI;EACE,cC5Ha;AD+GnB;AAeI;EACE,cC/Ha;ADkHnB","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../css/variables.module\\";\\n\\n.excalidraw {\\n  .picker-container {\\n    display: inline-block;\\n    box-sizing: border-box;\\n    margin-right: 0.25rem;\\n  }\\n\\n  .picker {\\n    background: var(--popup-bg-color);\\n    border: 0 solid transparentize($oc-white, 0.75);\\n    // \u02C7\u02C7 yeah, i dunno, open to suggestions here :D\\n    box-shadow: rgb(0 0 0 / 25%) 2px 2px 4px 2px;\\n    border-radius: 4px;\\n    position: absolute;\\n  }\\n\\n  .picker-container button,\\n  .picker button {\\n    position: relative;\\n    display: flex;\\n    align-items: center;\\n    justify-content: center;\\n\\n    &:focus-visible {\\n      outline: transparent;\\n      background-color: var(--button-gray-2);\\n      & svg {\\n        opacity: 1;\\n      }\\n    }\\n\\n    &:hover {\\n      background-color: var(--button-gray-2);\\n    }\\n\\n    &:active {\\n      background-color: var(--button-gray-3);\\n    }\\n\\n    &:disabled {\\n      cursor: not-allowed;\\n    }\\n\\n    svg {\\n      margin: 0;\\n      width: 36px;\\n      height: 18px;\\n      pointer-events: none;\\n    }\\n  }\\n\\n  .picker button {\\n    padding: 0.25rem 0.28rem 0.35rem 0.25rem;\\n  }\\n\\n  .picker-triangle {\\n    width: 0;\\n    height: 0;\\n    position: relative;\\n    top: -10px;\\n    :root[dir=\\"ltr\\"] & {\\n      left: 12px;\\n    }\\n\\n    :root[dir=\\"rtl\\"] & {\\n      right: 12px;\\n    }\\n    z-index: 10;\\n\\n    &:before {\\n      content: \\"\\";\\n      position: absolute;\\n      border-style: solid;\\n      border-width: 0 9px 10px;\\n      border-color: transparent transparent transparentize($oc-black, 0.9);\\n      top: -1px;\\n    }\\n\\n    &:after {\\n      content: \\"\\";\\n      position: absolute;\\n      border-style: solid;\\n      border-width: 0 9px 10px;\\n      border-color: transparent transparent var(--popup-bg-color);\\n    }\\n  }\\n\\n  .picker-content {\\n    padding: 0.5rem;\\n    display: grid;\\n    grid-template-columns: repeat(3, auto);\\n    grid-gap: 0.5rem;\\n    border-radius: 4px;\\n    :root[dir=\\"rtl\\"] & {\\n      padding: 0.4rem;\\n    }\\n  }\\n\\n  .picker-keybinding {\\n    position: absolute;\\n    bottom: 2px;\\n    font-size: 0.7em;\\n    color: var(--keybinding-color);\\n\\n    :root[dir=\\"ltr\\"] & {\\n      right: 2px;\\n    }\\n\\n    :root[dir=\\"rtl\\"] & {\\n      left: 2px;\\n    }\\n    @include isMobile {\\n      display: none;\\n    }\\n  }\\n\\n  .picker-type-canvasBackground .picker-keybinding {\\n    color: #aaa;\\n  }\\n\\n  .picker-type-elementBackground .picker-keybinding {\\n    color: $oc-white;\\n  }\\n\\n  .picker-swatch[aria-label=\\"transparent\\"] .picker-keybinding {\\n    color: #aaa;\\n  }\\n\\n  .picker-type-elementStroke .picker-keybinding {\\n    color: #d4d4d4;\\n  }\\n\\n  &.theme--dark {\\n    .picker-type-elementBackground .picker-keybinding {\\n      color: $oc-black;\\n    }\\n    .picker-swatch[aria-label=\\"transparent\\"] .picker-keybinding {\\n      color: $oc-black;\\n    }\\n  }\\n}\\n","//\\n//\\n//  \u{1D5D6} \u{1D5E2} \u{1D5DF} \u{1D5E2} \u{1D5E5}\\n//  v 1.9.1\\n//\\n//  \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\\n\\n\\n//  General\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-white:         #ffffff;\\n$oc-black:         #000000;\\n\\n\\n//  Gray\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-gray-list: (\\n  \\"0\\": #f8f9fa,\\n  \\"1\\": #f1f3f5,\\n  \\"2\\": #e9ecef,\\n  \\"3\\": #dee2e6,\\n  \\"4\\": #ced4da,\\n  \\"5\\": #adb5bd,\\n  \\"6\\": #868e96,\\n  \\"7\\": #495057,\\n  \\"8\\": #343a40,\\n  \\"9\\": #212529\\n);\\n\\n$oc-gray-0: map-get($oc-gray-list, \\"0\\");\\n$oc-gray-1: map-get($oc-gray-list, \\"1\\");\\n$oc-gray-2: map-get($oc-gray-list, \\"2\\");\\n$oc-gray-3: map-get($oc-gray-list, \\"3\\");\\n$oc-gray-4: map-get($oc-gray-list, \\"4\\");\\n$oc-gray-5: map-get($oc-gray-list, \\"5\\");\\n$oc-gray-6: map-get($oc-gray-list, \\"6\\");\\n$oc-gray-7: map-get($oc-gray-list, \\"7\\");\\n$oc-gray-8: map-get($oc-gray-list, \\"8\\");\\n$oc-gray-9: map-get($oc-gray-list, \\"9\\");\\n\\n\\n//  Red\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-red-list: (\\n  \\"0\\": #fff5f5,\\n  \\"1\\": #ffe3e3,\\n  \\"2\\": #ffc9c9,\\n  \\"3\\": #ffa8a8,\\n  \\"4\\": #ff8787,\\n  \\"5\\": #ff6b6b,\\n  \\"6\\": #fa5252,\\n  \\"7\\": #f03e3e,\\n  \\"8\\": #e03131,\\n  \\"9\\": #c92a2a\\n);\\n\\n$oc-red-0: map-get($oc-red-list, \\"0\\");\\n$oc-red-1: map-get($oc-red-list, \\"1\\");\\n$oc-red-2: map-get($oc-red-list, \\"2\\");\\n$oc-red-3: map-get($oc-red-list, \\"3\\");\\n$oc-red-4: map-get($oc-red-list, \\"4\\");\\n$oc-red-5: map-get($oc-red-list, \\"5\\");\\n$oc-red-6: map-get($oc-red-list, \\"6\\");\\n$oc-red-7: map-get($oc-red-list, \\"7\\");\\n$oc-red-8: map-get($oc-red-list, \\"8\\");\\n$oc-red-9: map-get($oc-red-list, \\"9\\");\\n\\n\\n//  Pink\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-pink-list: (\\n  \\"0\\": #fff0f6,\\n  \\"1\\": #ffdeeb,\\n  \\"2\\": #fcc2d7,\\n  \\"3\\": #faa2c1,\\n  \\"4\\": #f783ac,\\n  \\"5\\": #f06595,\\n  \\"6\\": #e64980,\\n  \\"7\\": #d6336c,\\n  \\"8\\": #c2255c,\\n  \\"9\\": #a61e4d\\n);\\n\\n$oc-pink-0: map-get($oc-pink-list, \\"0\\");\\n$oc-pink-1: map-get($oc-pink-list, \\"1\\");\\n$oc-pink-2: map-get($oc-pink-list, \\"2\\");\\n$oc-pink-3: map-get($oc-pink-list, \\"3\\");\\n$oc-pink-4: map-get($oc-pink-list, \\"4\\");\\n$oc-pink-5: map-get($oc-pink-list, \\"5\\");\\n$oc-pink-6: map-get($oc-pink-list, \\"6\\");\\n$oc-pink-7: map-get($oc-pink-list, \\"7\\");\\n$oc-pink-8: map-get($oc-pink-list, \\"8\\");\\n$oc-pink-9: map-get($oc-pink-list, \\"9\\");\\n\\n\\n//  Grape\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-grape-list: (\\n  \\"0\\": #f8f0fc,\\n  \\"1\\": #f3d9fa,\\n  \\"2\\": #eebefa,\\n  \\"3\\": #e599f7,\\n  \\"4\\": #da77f2,\\n  \\"5\\": #cc5de8,\\n  \\"6\\": #be4bdb,\\n  \\"7\\": #ae3ec9,\\n  \\"8\\": #9c36b5,\\n  \\"9\\": #862e9c\\n);\\n\\n$oc-grape-0: map-get($oc-grape-list, \\"0\\");\\n$oc-grape-1: map-get($oc-grape-list, \\"1\\");\\n$oc-grape-2: map-get($oc-grape-list, \\"2\\");\\n$oc-grape-3: map-get($oc-grape-list, \\"3\\");\\n$oc-grape-4: map-get($oc-grape-list, \\"4\\");\\n$oc-grape-5: map-get($oc-grape-list, \\"5\\");\\n$oc-grape-6: map-get($oc-grape-list, \\"6\\");\\n$oc-grape-7: map-get($oc-grape-list, \\"7\\");\\n$oc-grape-8: map-get($oc-grape-list, \\"8\\");\\n$oc-grape-9: map-get($oc-grape-list, \\"9\\");\\n\\n\\n//  Violet\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-violet-list: (\\n  \\"0\\": #f3f0ff,\\n  \\"1\\": #e5dbff,\\n  \\"2\\": #d0bfff,\\n  \\"3\\": #b197fc,\\n  \\"4\\": #9775fa,\\n  \\"5\\": #845ef7,\\n  \\"6\\": #7950f2,\\n  \\"7\\": #7048e8,\\n  \\"8\\": #6741d9,\\n  \\"9\\": #5f3dc4\\n);\\n\\n$oc-violet-0: map-get($oc-violet-list, \\"0\\");\\n$oc-violet-1: map-get($oc-violet-list, \\"1\\");\\n$oc-violet-2: map-get($oc-violet-list, \\"2\\");\\n$oc-violet-3: map-get($oc-violet-list, \\"3\\");\\n$oc-violet-4: map-get($oc-violet-list, \\"4\\");\\n$oc-violet-5: map-get($oc-violet-list, \\"5\\");\\n$oc-violet-6: map-get($oc-violet-list, \\"6\\");\\n$oc-violet-7: map-get($oc-violet-list, \\"7\\");\\n$oc-violet-8: map-get($oc-violet-list, \\"8\\");\\n$oc-violet-9: map-get($oc-violet-list, \\"9\\");\\n\\n\\n//  Indigo\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-indigo-list: (\\n  \\"0\\": #edf2ff,\\n  \\"1\\": #dbe4ff,\\n  \\"2\\": #bac8ff,\\n  \\"3\\": #91a7ff,\\n  \\"4\\": #748ffc,\\n  \\"5\\": #5c7cfa,\\n  \\"6\\": #4c6ef5,\\n  \\"7\\": #4263eb,\\n  \\"8\\": #3b5bdb,\\n  \\"9\\": #364fc7\\n);\\n\\n$oc-indigo-0: map-get($oc-indigo-list, \\"0\\");\\n$oc-indigo-1: map-get($oc-indigo-list, \\"1\\");\\n$oc-indigo-2: map-get($oc-indigo-list, \\"2\\");\\n$oc-indigo-3: map-get($oc-indigo-list, \\"3\\");\\n$oc-indigo-4: map-get($oc-indigo-list, \\"4\\");\\n$oc-indigo-5: map-get($oc-indigo-list, \\"5\\");\\n$oc-indigo-6: map-get($oc-indigo-list, \\"6\\");\\n$oc-indigo-7: map-get($oc-indigo-list, \\"7\\");\\n$oc-indigo-8: map-get($oc-indigo-list, \\"8\\");\\n$oc-indigo-9: map-get($oc-indigo-list, \\"9\\");\\n\\n\\n//  Blue\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-blue-list: (\\n  \\"0\\": #e7f5ff,\\n  \\"1\\": #d0ebff,\\n  \\"2\\": #a5d8ff,\\n  \\"3\\": #74c0fc,\\n  \\"4\\": #4dabf7,\\n  \\"5\\": #339af0,\\n  \\"6\\": #228be6,\\n  \\"7\\": #1c7ed6,\\n  \\"8\\": #1971c2,\\n  \\"9\\": #1864ab\\n);\\n\\n$oc-blue-0: map-get($oc-blue-list, \\"0\\");\\n$oc-blue-1: map-get($oc-blue-list, \\"1\\");\\n$oc-blue-2: map-get($oc-blue-list, \\"2\\");\\n$oc-blue-3: map-get($oc-blue-list, \\"3\\");\\n$oc-blue-4: map-get($oc-blue-list, \\"4\\");\\n$oc-blue-5: map-get($oc-blue-list, \\"5\\");\\n$oc-blue-6: map-get($oc-blue-list, \\"6\\");\\n$oc-blue-7: map-get($oc-blue-list, \\"7\\");\\n$oc-blue-8: map-get($oc-blue-list, \\"8\\");\\n$oc-blue-9: map-get($oc-blue-list, \\"9\\");\\n\\n\\n//  Cyan\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-cyan-list: (\\n  \\"0\\": #e3fafc,\\n  \\"1\\": #c5f6fa,\\n  \\"2\\": #99e9f2,\\n  \\"3\\": #66d9e8,\\n  \\"4\\": #3bc9db,\\n  \\"5\\": #22b8cf,\\n  \\"6\\": #15aabf,\\n  \\"7\\": #1098ad,\\n  \\"8\\": #0c8599,\\n  \\"9\\": #0b7285\\n);\\n\\n$oc-cyan-0: map-get($oc-cyan-list, \\"0\\");\\n$oc-cyan-1: map-get($oc-cyan-list, \\"1\\");\\n$oc-cyan-2: map-get($oc-cyan-list, \\"2\\");\\n$oc-cyan-3: map-get($oc-cyan-list, \\"3\\");\\n$oc-cyan-4: map-get($oc-cyan-list, \\"4\\");\\n$oc-cyan-5: map-get($oc-cyan-list, \\"5\\");\\n$oc-cyan-6: map-get($oc-cyan-list, \\"6\\");\\n$oc-cyan-7: map-get($oc-cyan-list, \\"7\\");\\n$oc-cyan-8: map-get($oc-cyan-list, \\"8\\");\\n$oc-cyan-9: map-get($oc-cyan-list, \\"9\\");\\n\\n\\n//  Teal\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-teal-list: (\\n  \\"0\\": #e6fcf5,\\n  \\"1\\": #c3fae8,\\n  \\"2\\": #96f2d7,\\n  \\"3\\": #63e6be,\\n  \\"4\\": #38d9a9,\\n  \\"5\\": #20c997,\\n  \\"6\\": #12b886,\\n  \\"7\\": #0ca678,\\n  \\"8\\": #099268,\\n  \\"9\\": #087f5b\\n);\\n\\n$oc-teal-0: map-get($oc-teal-list, \\"0\\");\\n$oc-teal-1: map-get($oc-teal-list, \\"1\\");\\n$oc-teal-2: map-get($oc-teal-list, \\"2\\");\\n$oc-teal-3: map-get($oc-teal-list, \\"3\\");\\n$oc-teal-4: map-get($oc-teal-list, \\"4\\");\\n$oc-teal-5: map-get($oc-teal-list, \\"5\\");\\n$oc-teal-6: map-get($oc-teal-list, \\"6\\");\\n$oc-teal-7: map-get($oc-teal-list, \\"7\\");\\n$oc-teal-8: map-get($oc-teal-list, \\"8\\");\\n$oc-teal-9: map-get($oc-teal-list, \\"9\\");\\n\\n\\n//  Green\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-green-list: (\\n  \\"0\\": #ebfbee,\\n  \\"1\\": #d3f9d8,\\n  \\"2\\": #b2f2bb,\\n  \\"3\\": #8ce99a,\\n  \\"4\\": #69db7c,\\n  \\"5\\": #51cf66,\\n  \\"6\\": #40c057,\\n  \\"7\\": #37b24d,\\n  \\"8\\": #2f9e44,\\n  \\"9\\": #2b8a3e\\n);\\n\\n$oc-green-0: map-get($oc-green-list, \\"0\\");\\n$oc-green-1: map-get($oc-green-list, \\"1\\");\\n$oc-green-2: map-get($oc-green-list, \\"2\\");\\n$oc-green-3: map-get($oc-green-list, \\"3\\");\\n$oc-green-4: map-get($oc-green-list, \\"4\\");\\n$oc-green-5: map-get($oc-green-list, \\"5\\");\\n$oc-green-6: map-get($oc-green-list, \\"6\\");\\n$oc-green-7: map-get($oc-green-list, \\"7\\");\\n$oc-green-8: map-get($oc-green-list, \\"8\\");\\n$oc-green-9: map-get($oc-green-list, \\"9\\");\\n\\n\\n//  Lime\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-lime-list: (\\n  \\"0\\": #f4fce3,\\n  \\"1\\": #e9fac8,\\n  \\"2\\": #d8f5a2,\\n  \\"3\\": #c0eb75,\\n  \\"4\\": #a9e34b,\\n  \\"5\\": #94d82d,\\n  \\"6\\": #82c91e,\\n  \\"7\\": #74b816,\\n  \\"8\\": #66a80f,\\n  \\"9\\": #5c940d\\n);\\n\\n$oc-lime-0: map-get($oc-lime-list, \\"0\\");\\n$oc-lime-1: map-get($oc-lime-list, \\"1\\");\\n$oc-lime-2: map-get($oc-lime-list, \\"2\\");\\n$oc-lime-3: map-get($oc-lime-list, \\"3\\");\\n$oc-lime-4: map-get($oc-lime-list, \\"4\\");\\n$oc-lime-5: map-get($oc-lime-list, \\"5\\");\\n$oc-lime-6: map-get($oc-lime-list, \\"6\\");\\n$oc-lime-7: map-get($oc-lime-list, \\"7\\");\\n$oc-lime-8: map-get($oc-lime-list, \\"8\\");\\n$oc-lime-9: map-get($oc-lime-list, \\"9\\");\\n\\n\\n//  Yellow\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-yellow-list: (\\n  \\"0\\": #fff9db,\\n  \\"1\\": #fff3bf,\\n  \\"2\\": #ffec99,\\n  \\"3\\": #ffe066,\\n  \\"4\\": #ffd43b,\\n  \\"5\\": #fcc419,\\n  \\"6\\": #fab005,\\n  \\"7\\": #f59f00,\\n  \\"8\\": #f08c00,\\n  \\"9\\": #e67700\\n);\\n\\n$oc-yellow-0: map-get($oc-yellow-list, \\"0\\");\\n$oc-yellow-1: map-get($oc-yellow-list, \\"1\\");\\n$oc-yellow-2: map-get($oc-yellow-list, \\"2\\");\\n$oc-yellow-3: map-get($oc-yellow-list, \\"3\\");\\n$oc-yellow-4: map-get($oc-yellow-list, \\"4\\");\\n$oc-yellow-5: map-get($oc-yellow-list, \\"5\\");\\n$oc-yellow-6: map-get($oc-yellow-list, \\"6\\");\\n$oc-yellow-7: map-get($oc-yellow-list, \\"7\\");\\n$oc-yellow-8: map-get($oc-yellow-list, \\"8\\");\\n$oc-yellow-9: map-get($oc-yellow-list, \\"9\\");\\n\\n\\n//  Orange\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-orange-list: (\\n  \\"0\\": #fff4e6,\\n  \\"1\\": #ffe8cc,\\n  \\"2\\": #ffd8a8,\\n  \\"3\\": #ffc078,\\n  \\"4\\": #ffa94d,\\n  \\"5\\": #ff922b,\\n  \\"6\\": #fd7e14,\\n  \\"7\\": #f76707,\\n  \\"8\\": #e8590c,\\n  \\"9\\": #d9480f\\n);\\n\\n$oc-orange-0: map-get($oc-orange-list, \\"0\\");\\n$oc-orange-1: map-get($oc-orange-list, \\"1\\");\\n$oc-orange-2: map-get($oc-orange-list, \\"2\\");\\n$oc-orange-3: map-get($oc-orange-list, \\"3\\");\\n$oc-orange-4: map-get($oc-orange-list, \\"4\\");\\n$oc-orange-5: map-get($oc-orange-list, \\"5\\");\\n$oc-orange-6: map-get($oc-orange-list, \\"6\\");\\n$oc-orange-7: map-get($oc-orange-list, \\"7\\");\\n$oc-orange-8: map-get($oc-orange-list, \\"8\\");\\n$oc-orange-9: map-get($oc-orange-list, \\"9\\");\\n\\n\\n//  Color list\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-color-spectrum:   9;\\n\\n$oc-color-list: (\\n  $oc-gray-list:      \\"gray\\",\\n  $oc-red-list:      \\"red\\",\\n  $oc-pink-list:      \\"pink\\",\\n  $oc-grape-list:      \\"grape\\",\\n  $oc-violet-list:      \\"violet\\",\\n  $oc-indigo-list:      \\"indigo\\",\\n  $oc-blue-list:      \\"blue\\",\\n  $oc-cyan-list:      \\"cyan\\",\\n  $oc-teal-list:      \\"teal\\",\\n  $oc-green-list:      \\"green\\",\\n  $oc-lime-list:      \\"lime\\",\\n  $oc-yellow-list:      \\"yellow\\",\\n  $oc-orange-list:      \\"orange\\"\\n);\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 37968 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/IconPicker.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ImageExportDialog.scss": (
              /*!**************************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ImageExportDialog.scss ***!
                \**************************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/getUrl.js */ "./node_modules/css-loader/dist/runtime/getUrl.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__);\n// Imports\n\n\n\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(/* asset import */ __webpack_require__(/*! data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMUlEQVQ4T2NkYGAQYcAP3uCTZhw1gGGYhAGBZIA/nYDCgBDAm9BGDWAAJyRCgLaBCAAgXwixzAS0pgAAAABJRU5ErkJggg== */ "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMUlEQVQ4T2NkYGAQYcAP3uCTZhw1gGGYhAGBZIA/nYDCgBDAm9BGDWAAJyRCgLaBCAAgXwixzAS0pgAAAABJRU5ErkJggg=="), __webpack_require__.b);\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw {\\n  --ImageExportModal-preview-border: #d6d6d6;\\n}\\n.excalidraw.theme--dark {\\n  --ImageExportModal-preview-border: #5c5c5c;\\n}\\n.excalidraw .ImageExportModal {\\n  display: flex;\\n  flex-direction: row;\\n  justify-content: space-between;\\n}\\n.excalidraw .ImageExportModal h3 {\\n  font-family: \\"Assistant\\";\\n  font-style: normal;\\n  font-weight: 700;\\n  font-size: 1.313rem;\\n  line-height: 130%;\\n  padding: 0;\\n  margin: 0;\\n}\\n.excalidraw--mobile.excalidraw .ImageExportModal h3 {\\n  display: none;\\n}\\n\\n.excalidraw .ImageExportModal > h3 {\\n  display: none;\\n}\\n.excalidraw--mobile.excalidraw .ImageExportModal > h3 {\\n  display: block;\\n}\\n\\n.excalidraw--mobile.excalidraw .ImageExportModal {\\n  flex-direction: column;\\n  height: calc(100vh - 5rem);\\n}\\n\\n.excalidraw .ImageExportModal__preview {\\n  box-sizing: border-box;\\n  display: flex;\\n  flex-direction: column;\\n  align-items: center;\\n  height: 360px;\\n  width: 55%;\\n  margin-right: 1.5rem;\\n}\\n.excalidraw--mobile.excalidraw .ImageExportModal__preview {\\n  max-width: unset;\\n  margin-right: unset;\\n  width: 100%;\\n  height: unset;\\n  flex-grow: 1;\\n}\\n\\n.excalidraw .ImageExportModal__preview__filename > input {\\n  margin-top: 1rem;\\n}\\n.excalidraw .ImageExportModal__preview__canvas {\\n  box-sizing: border-box;\\n  width: 100%;\\n  height: 100%;\\n  display: flex;\\n  flex-grow: 1;\\n  justify-content: center;\\n  align-items: center;\\n  background: url(" + ___CSS_LOADER_URL_REPLACEMENT_0___ + ") left center;\\n  border: 1px solid var(--ImageExportModal-preview-border);\\n  border-radius: 12px;\\n  overflow: hidden;\\n  padding: 1rem;\\n}\\n.excalidraw .ImageExportModal__preview__canvas > canvas {\\n  max-width: calc(100% - 2rem);\\n  max-height: calc(100% - 2rem);\\n  filter: none !important;\\n}\\n.excalidraw--mobile.excalidraw .ImageExportModal__preview__canvas > canvas {\\n  max-height: 100%;\\n}\\n\\n.excalidraw--mobile.excalidraw .ImageExportModal__preview__canvas {\\n  margin-top: 24px;\\n  max-width: unset;\\n}\\n\\n.excalidraw .ImageExportModal__settings {\\n  display: flex;\\n  flex-direction: column;\\n  flex-wrap: wrap;\\n  gap: 18px;\\n}\\n.excalidraw--mobile.excalidraw .ImageExportModal__settings {\\n  margin-left: unset;\\n  margin-top: 1rem;\\n  flex-direction: row;\\n  gap: 6px 34px;\\n  align-content: flex-start;\\n}\\n\\n.excalidraw .ImageExportModal__settings__setting {\\n  display: flex;\\n  flex-direction: row;\\n  justify-content: space-between;\\n  align-items: center;\\n}\\n.excalidraw--mobile.excalidraw .ImageExportModal__settings__setting {\\n  flex-direction: column;\\n  align-items: start;\\n  justify-content: unset;\\n  height: 52px;\\n}\\n\\n.excalidraw .ImageExportModal__settings__setting__label {\\n  display: flex;\\n  flex-direction: row;\\n  align-items: center;\\n  font-family: \\"Assistant\\";\\n  font-weight: 600;\\n  font-size: 1rem;\\n  line-height: 150%;\\n}\\n.excalidraw .ImageExportModal__settings__setting__label svg {\\n  width: 20px;\\n  height: 20px;\\n  margin-left: 10px;\\n}\\n.excalidraw .ImageExportModal__settings__setting__content {\\n  display: flex;\\n  height: 100%;\\n  align-items: center;\\n}\\n.excalidraw .ImageExportModal__settings__buttons {\\n  flex-grow: 1;\\n  flex-wrap: wrap;\\n  display: flex;\\n  flex-direction: row;\\n  gap: 11px;\\n  align-items: flex-end;\\n  align-content: flex-end;\\n}\\n.excalidraw--mobile.excalidraw .ImageExportModal__settings__buttons {\\n  padding-top: 32px;\\n  flex-basis: 100%;\\n  justify-content: center;\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/ImageExportDialog.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AADA;EACE,0CAAA;AAIF;AAFE;EACE,0CAAA;AAIJ;AADE;EACE,aAAA;EACA,mBAAA;EACA,8BAAA;AAGJ;AADI;EACE,wBAAA;EACA,kBAAA;EACA,gBAAA;EACA,mBAAA;EACA,iBAAA;EACA,UAAA;EACA,SAAA;AAGN;ADrBW;ECqBH,aAAA;AAGR;;AACI;EACE,aAAA;AAEN;AD5BW;EC6BH,cAAA;AAER;;AD/BW;ECkCL,sBAAA;EACA,0BAAA;AACN;;AAEI;EACE,sBAAA;EACA,aAAA;EACA,sBAAA;EACA,mBAAA;EACA,aAAA;EACA,UAAA;EAEA,oBAAA;AAAN;AD9CW;ECiDH,gBAAA;EACA,mBAAA;EAEA,WAAA;EACA,aAAA;EACA,YAAA;AADR;;AAKQ;EACE,gBAAA;AAFV;AAMM;EACE,sBAAA;EACA,WAAA;EACA,YAAA;EACA,aAAA;EACA,YAAA;EACA,uBAAA;EACA,mBAAA;EAEA,+DAAA;EAGA,wDAAA;EACA,mBAAA;EAEA,gBAAA;EACA,aAAA;AARR;AAUQ;EACE,4BAAA;EACA,6BAAA;EAEA,uBAAA;AATV;AD5EW;ECwFC,gBAAA;AATZ;;AD/EW;EC6FD,gBAAA;EACA,gBAAA;AAVV;;AAeI;EACE,aAAA;EACA,sBAAA;EACA,eAAA;EACA,SAAA;AAZN;AD3FW;EC0GH,kBAAA;EACA,gBAAA;EACA,mBAAA;EACA,aAAA;EAEA,yBAAA;AAbR;;AAgBM;EACE,aAAA;EACA,mBAAA;EACA,8BAAA;EACA,mBAAA;AAbR;ADzGW;ECyHD,sBAAA;EACA,kBAAA;EACA,sBAAA;EACA,YAAA;AAbV;;AAgBQ;EACE,aAAA;EACA,mBAAA;EACA,mBAAA;EAEA,wBAAA;EACA,gBAAA;EACA,eAAA;EACA,iBAAA;AAdV;AAgBU;EACE,WAAA;EACA,YAAA;EACA,iBAAA;AAdZ;AAkBQ;EACE,aAAA;EACA,YAAA;EACA,mBAAA;AAhBV;AAoBM;EACE,YAAA;EACA,eAAA;EACA,aAAA;EACA,mBAAA;EACA,SAAA;EAEA,qBAAA;EACA,uBAAA;AAnBR;AD5IW;ECkKD,iBAAA;EACA,gBAAA;EACA,uBAAA;AAnBV","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../css/variables.module\\";\\n\\n.excalidraw {\\n  --ImageExportModal-preview-border: #d6d6d6;\\n\\n  &.theme--dark {\\n    --ImageExportModal-preview-border: #5c5c5c;\\n  }\\n\\n  .ImageExportModal {\\n    display: flex;\\n    flex-direction: row;\\n    justify-content: space-between;\\n\\n    & h3 {\\n      font-family: \\"Assistant\\";\\n      font-style: normal;\\n      font-weight: 700;\\n      font-size: 1.313rem;\\n      line-height: 130%;\\n      padding: 0;\\n      margin: 0;\\n\\n      @include isMobile {\\n        display: none;\\n      }\\n    }\\n\\n    & > h3 {\\n      display: none;\\n\\n      @include isMobile {\\n        display: block;\\n      }\\n    }\\n\\n    @include isMobile {\\n      flex-direction: column;\\n      height: calc(100vh - 5rem);\\n    }\\n\\n    &__preview {\\n      box-sizing: border-box;\\n      display: flex;\\n      flex-direction: column;\\n      align-items: center;\\n      height: 360px;\\n      width: 55%;\\n\\n      margin-right: 1.5rem;\\n\\n      @include isMobile {\\n        max-width: unset;\\n        margin-right: unset;\\n\\n        width: 100%;\\n        height: unset;\\n        flex-grow: 1;\\n      }\\n\\n      &__filename {\\n        & > input {\\n          margin-top: 1rem;\\n        }\\n      }\\n\\n      &__canvas {\\n        box-sizing: border-box;\\n        width: 100%;\\n        height: 100%;\\n        display: flex;\\n        flex-grow: 1;\\n        justify-content: center;\\n        align-items: center;\\n\\n        background: url(\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMUlEQVQ4T2NkYGAQYcAP3uCTZhw1gGGYhAGBZIA/nYDCgBDAm9BGDWAAJyRCgLaBCAAgXwixzAS0pgAAAABJRU5ErkJggg==\\")\\n          left center;\\n\\n        border: 1px solid var(--ImageExportModal-preview-border);\\n        border-radius: 12px;\\n\\n        overflow: hidden;\\n        padding: 1rem;\\n\\n        & > canvas {\\n          max-width: calc(100% - 2rem);\\n          max-height: calc(100% - 2rem);\\n\\n          filter: none !important;\\n\\n          @include isMobile {\\n            max-height: 100%;\\n          }\\n        }\\n\\n        @include isMobile {\\n          margin-top: 24px;\\n          max-width: unset;\\n        }\\n      }\\n    }\\n\\n    &__settings {\\n      display: flex;\\n      flex-direction: column;\\n      flex-wrap: wrap;\\n      gap: 18px;\\n\\n      @include isMobile {\\n        margin-left: unset;\\n        margin-top: 1rem;\\n        flex-direction: row;\\n        gap: 6px 34px;\\n\\n        align-content: flex-start;\\n      }\\n\\n      &__setting {\\n        display: flex;\\n        flex-direction: row;\\n        justify-content: space-between;\\n        align-items: center;\\n\\n        @include isMobile {\\n          flex-direction: column;\\n          align-items: start;\\n          justify-content: unset;\\n          height: 52px;\\n        }\\n\\n        &__label {\\n          display: flex;\\n          flex-direction: row;\\n          align-items: center;\\n\\n          font-family: \\"Assistant\\";\\n          font-weight: 600;\\n          font-size: 1rem;\\n          line-height: 150%;\\n\\n          & svg {\\n            width: 20px;\\n            height: 20px;\\n            margin-left: 10px;\\n          }\\n        }\\n\\n        &__content {\\n          display: flex;\\n          height: 100%;\\n          align-items: center;\\n        }\\n      }\\n\\n      &__buttons {\\n        flex-grow: 1;\\n        flex-wrap: wrap;\\n        display: flex;\\n        flex-direction: row;\\n        gap: 11px;\\n\\n        align-items: flex-end;\\n        align-content: flex-end;\\n\\n        @include isMobile {\\n          padding-top: 32px;\\n          flex-basis: 100%;\\n          justify-content: center;\\n        }\\n      }\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 22544 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ImageExportDialog.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Island.scss": (
              /*!***************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Island.scss ***!
                \***************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ".excalidraw .Island {\\n  --padding: 0;\\n  box-sizing: border-box;\\n  background-color: var(--island-bg-color);\\n  box-shadow: var(--shadow-island);\\n  border-radius: var(--border-radius-lg);\\n  padding: calc(var(--padding) * var(--space-factor));\\n  position: relative;\\n  transition: box-shadow 0.5s ease-in-out;\\n}\\n.excalidraw .Island.zen-mode {\\n  box-shadow: none;\\n}", "",{"version":3,"sources":["webpack://./../../components/Island.scss"],"names":[],"mappings":"AACE;EACE,YAAA;EACA,sBAAA;EACA,wCAAA;EACA,gCAAA;EACA,sCAAA;EACA,mDAAA;EACA,kBAAA;EACA,uCAAA;AAAJ;AAEI;EACE,gBAAA;AAAN","sourcesContent":[".excalidraw {\\n  .Island {\\n    --padding: 0;\\n    box-sizing: border-box;\\n    background-color: var(--island-bg-color);\\n    box-shadow: var(--shadow-island);\\n    border-radius: var(--border-radius-lg);\\n    padding: calc(var(--padding) * var(--space-factor));\\n    position: relative;\\n    transition: box-shadow 0.5s ease-in-out;\\n\\n    &.zen-mode {\\n      box-shadow: none;\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vY29tcG9uZW50cy9Jc2xhbmQuc2Nzcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQzhIO0FBQ2pCO0FBQzdHLDhCQUE4Qix1R0FBMkIsQ0FBQyxnSEFBcUM7QUFDL0Y7QUFDQSwrREFBK0QsaUJBQWlCLDJCQUEyQiw2Q0FBNkMscUNBQXFDLDJDQUEyQyx3REFBd0QsdUJBQXVCLDRDQUE0QyxHQUFHLGdDQUFnQyxxQkFBcUIsR0FBRyxPQUFPLCtGQUErRixVQUFVLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsS0FBSyxLQUFLLFdBQVcsc0NBQXNDLGFBQWEsbUJBQW1CLDZCQUE2QiwrQ0FBK0MsdUNBQXVDLDZDQUE2QywwREFBMEQseUJBQXlCLDhDQUE4QyxvQkFBb0IseUJBQXlCLE9BQU8sS0FBSyxHQUFHLHFCQUFxQjtBQUN4aUM7QUFDQSxpRUFBZSx1QkFBdUIsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL0lzbGFuZC5zY3NzPzg2MjgiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLmV4Y2FsaWRyYXcgLklzbGFuZCB7XFxuICAtLXBhZGRpbmc6IDA7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0taXNsYW5kLWJnLWNvbG9yKTtcXG4gIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1pc2xhbmQpO1xcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cy1sZyk7XFxuICBwYWRkaW5nOiBjYWxjKHZhcigtLXBhZGRpbmcpICogdmFyKC0tc3BhY2UtZmFjdG9yKSk7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICB0cmFuc2l0aW9uOiBib3gtc2hhZG93IDAuNXMgZWFzZS1pbi1vdXQ7XFxufVxcbi5leGNhbGlkcmF3IC5Jc2xhbmQuemVuLW1vZGUge1xcbiAgYm94LXNoYWRvdzogbm9uZTtcXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vLi4vLi4vY29tcG9uZW50cy9Jc2xhbmQuc2Nzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFDRTtFQUNFLFlBQUE7RUFDQSxzQkFBQTtFQUNBLHdDQUFBO0VBQ0EsZ0NBQUE7RUFDQSxzQ0FBQTtFQUNBLG1EQUFBO0VBQ0Esa0JBQUE7RUFDQSx1Q0FBQTtBQUFKO0FBRUk7RUFDRSxnQkFBQTtBQUFOXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIi5leGNhbGlkcmF3IHtcXG4gIC5Jc2xhbmQge1xcbiAgICAtLXBhZGRpbmc6IDA7XFxuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWlzbGFuZC1iZy1jb2xvcik7XFxuICAgIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1pc2xhbmQpO1xcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzLWxnKTtcXG4gICAgcGFkZGluZzogY2FsYyh2YXIoLS1wYWRkaW5nKSAqIHZhcigtLXNwYWNlLWZhY3RvcikpO1xcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICAgIHRyYW5zaXRpb246IGJveC1zaGFkb3cgMC41cyBlYXNlLWluLW91dDtcXG5cXG4gICAgJi56ZW4tbW9kZSB7XFxuICAgICAgYm94LXNoYWRvdzogbm9uZTtcXG4gICAgfVxcbiAgfVxcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Island.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/LaserTool/LaserToolOverlay.scss": (
              /*!***********************************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/LaserTool/LaserToolOverlay.scss ***!
                \***********************************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ".excalidraw .LaserToolOverlay {\\n  pointer-events: none;\\n  width: 100vw;\\n  height: 100vh;\\n  position: fixed;\\n  top: 0;\\n  left: 0;\\n  z-index: 2;\\n}\\n.excalidraw .LaserToolOverlay .LaserToolOverlayCanvas {\\n  image-rendering: auto;\\n  overflow: visible;\\n  position: absolute;\\n  top: 0;\\n  left: 0;\\n}", "",{"version":3,"sources":["webpack://./../../components/LaserTool/LaserToolOverlay.scss"],"names":[],"mappings":"AACE;EACE,oBAAA;EACA,YAAA;EACA,aAAA;EACA,eAAA;EACA,MAAA;EACA,OAAA;EAEA,UAAA;AADJ;AAGI;EACE,qBAAA;EACA,iBAAA;EACA,kBAAA;EACA,MAAA;EACA,OAAA;AADN","sourcesContent":[".excalidraw {\\n  .LaserToolOverlay {\\n    pointer-events: none;\\n    width: 100vw;\\n    height: 100vh;\\n    position: fixed;\\n    top: 0;\\n    left: 0;\\n\\n    z-index: 2;\\n\\n    .LaserToolOverlayCanvas {\\n      image-rendering: auto;\\n      overflow: visible;\\n      position: absolute;\\n      top: 0;\\n      left: 0;\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vY29tcG9uZW50cy9MYXNlclRvb2wvTGFzZXJUb29sT3ZlcmxheS5zY3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDaUk7QUFDakI7QUFDaEgsOEJBQThCLHVHQUEyQixDQUFDLGdIQUFxQztBQUMvRjtBQUNBLHlFQUF5RSx5QkFBeUIsaUJBQWlCLGtCQUFrQixvQkFBb0IsV0FBVyxZQUFZLGVBQWUsR0FBRyx5REFBeUQsMEJBQTBCLHNCQUFzQix1QkFBdUIsV0FBVyxZQUFZLEdBQUcsT0FBTyxtSEFBbUgsV0FBVyxVQUFVLFVBQVUsVUFBVSxVQUFVLFVBQVUsVUFBVSxLQUFLLEtBQUssV0FBVyxXQUFXLFdBQVcsVUFBVSxVQUFVLHNDQUFzQyx1QkFBdUIsMkJBQTJCLG1CQUFtQixvQkFBb0Isc0JBQXNCLGFBQWEsY0FBYyxtQkFBbUIsaUNBQWlDLDhCQUE4QiwwQkFBMEIsMkJBQTJCLGVBQWUsZ0JBQWdCLE9BQU8sS0FBSyxHQUFHLHFCQUFxQjtBQUN0OUI7QUFDQSxpRUFBZSx1QkFBdUIsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL0xhc2VyVG9vbC9MYXNlclRvb2xPdmVybGF5LnNjc3M/MjQ0YSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIuZXhjYWxpZHJhdyAuTGFzZXJUb29sT3ZlcmxheSB7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG4gIHdpZHRoOiAxMDB2dztcXG4gIGhlaWdodDogMTAwdmg7XFxuICBwb3NpdGlvbjogZml4ZWQ7XFxuICB0b3A6IDA7XFxuICBsZWZ0OiAwO1xcbiAgei1pbmRleDogMjtcXG59XFxuLmV4Y2FsaWRyYXcgLkxhc2VyVG9vbE92ZXJsYXkgLkxhc2VyVG9vbE92ZXJsYXlDYW52YXMge1xcbiAgaW1hZ2UtcmVuZGVyaW5nOiBhdXRvO1xcbiAgb3ZlcmZsb3c6IHZpc2libGU7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDA7XFxuICBsZWZ0OiAwO1xcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi8uLi8uLi9jb21wb25lbnRzL0xhc2VyVG9vbC9MYXNlclRvb2xPdmVybGF5LnNjc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQ0U7RUFDRSxvQkFBQTtFQUNBLFlBQUE7RUFDQSxhQUFBO0VBQ0EsZUFBQTtFQUNBLE1BQUE7RUFDQSxPQUFBO0VBRUEsVUFBQTtBQURKO0FBR0k7RUFDRSxxQkFBQTtFQUNBLGlCQUFBO0VBQ0Esa0JBQUE7RUFDQSxNQUFBO0VBQ0EsT0FBQTtBQUROXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIi5leGNhbGlkcmF3IHtcXG4gIC5MYXNlclRvb2xPdmVybGF5IHtcXG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxuICAgIHdpZHRoOiAxMDB2dztcXG4gICAgaGVpZ2h0OiAxMDB2aDtcXG4gICAgcG9zaXRpb246IGZpeGVkO1xcbiAgICB0b3A6IDA7XFxuICAgIGxlZnQ6IDA7XFxuXFxuICAgIHotaW5kZXg6IDI7XFxuXFxuICAgIC5MYXNlclRvb2xPdmVybGF5Q2FudmFzIHtcXG4gICAgICBpbWFnZS1yZW5kZXJpbmc6IGF1dG87XFxuICAgICAgb3ZlcmZsb3c6IHZpc2libGU7XFxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICAgIHRvcDogMDtcXG4gICAgICBsZWZ0OiAwO1xcbiAgICB9XFxuICB9XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/LaserTool/LaserToolOverlay.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/LayerUI.scss": (
              /*!****************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/LayerUI.scss ***!
                \****************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");
/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");
/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);
// Imports


var ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
// Module
___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .layer-ui__wrapper.animate {\\n  transition: width 0.1s ease-in-out;\\n}\\n.excalidraw .layer-ui__wrapper {\\n  position: absolute;\\n  width: 100%;\\n  height: 100%;\\n  pointer-events: none;\\n  z-index: var(--zIndex-layerUI);\\n}\\n.excalidraw .layer-ui__wrapper__top-right {\\n  display: flex;\\n  gap: 0.75rem;\\n}\\n.excalidraw .layer-ui__wrapper__footer {\\n  width: 100%;\\n}\\n.excalidraw .layer-ui__wrapper__footer-right {\\n  z-index: 100;\\n  display: flex;\\n}\\n.excalidraw .layer-ui__wrapper .zen-mode-transition {\\n  transition: transform 0.5s ease-in-out;\\n}\\n:root[dir=ltr] .excalidraw .layer-ui__wrapper .zen-mode-transition.transition-left {\\n  transform: translate(-999px, 0);\\n}\\n:root[dir=ltr] .excalidraw .layer-ui__wrapper .zen-mode-transition.transition-right {\\n  transform: translate(999px, 0);\\n}\\n:root[dir=rtl] .excalidraw .layer-ui__wrapper .zen-mode-transition.transition-left {\\n  transform: translate(999px, 0);\\n}\\n:root[dir=rtl] .excalidraw .layer-ui__wrapper .zen-mode-transition.transition-right {\\n  transform: translate(-999px, 0);\\n}\\n.excalidraw .layer-ui__wrapper .zen-mode-transition.layer-ui__wrapper__footer-left--transition-bottom {\\n  transform: translate(0, 92px);\\n}\\n.excalidraw .layer-ui__wrapper .disable-zen-mode {\\n  padding: 10px;\\n  position: absolute;\\n  bottom: 0;\\n  opacity: 0;\\n  visibility: hidden;\\n  transition: visibility 0s linear 0s, opacity 0.5s;\\n  font-family: var(--ui-font);\\n  font-size: 0.75rem;\\n  font-weight: 500;\\n  line-height: 1;\\n  border-radius: var(--border-radius-lg);\\n  border: 1px solid var(--default-border-color);\\n  background-color: var(--island-bg-color);\\n  color: var(--text-primary-color);\\n}\\n[dir=ltr] .excalidraw .layer-ui__wrapper .disable-zen-mode {\\n  right: 1rem;\\n}\\n[dir=rtl] .excalidraw .layer-ui__wrapper .disable-zen-mode {\\n  left: 1rem;\\n}\\n.excalidraw .layer-ui__wrapper .disable-zen-mode:hover {\\n  background-color: var(--button-hover-bg);\\n}\\n.excalidraw .layer-ui__wrapper .disable-zen-mode:active {\\n  border-color: var(--color-primary);\\n}\\n.excalidraw .layer-ui__wrapper .disable-zen-mode--visible {\\n  opacity: 1;\\n  visibility: visible;\\n  transition: visibility 0s linear 300ms, opacity 0.5s;\\n  transition-delay: 0.8s;\\n  pointer-events: var(--ui-pointerEvents);\\n}\\n.excalidraw .layer-ui__wrapper .layer-ui__wrapper__footer-left > *,\\n.excalidraw .layer-ui__wrapper .footer-center > *,\\n.excalidraw .layer-ui__wrapper .layer-ui__wrapper__footer-right > * {\\n  pointer-events: var(--ui-pointerEvents);\\n}\\n.excalidraw .layer-ui__wrapper .layer-ui__wrapper__footer-right {\\n  margin-top: auto;\\n  margin-bottom: auto;\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/LayerUI.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AACE;EACE,kCAAA;AAEJ;AAAE;EAME,kBAAA;EACA,WAAA;EACA,YAAA;EACA,oBAAA;EACA,8BAAA;AAHJ;AAKI;EACE,aAAA;EACA,YAAA;AAHN;AAMI;EACE,WAAA;AAJN;AAMM;EACE,YAAA;EACA,aAAA;AAJR;AAQI;EACE,sCAAA;AANN;AAQM;EACE,+BAAA;AANR;AASM;EACE,8BAAA;AAPR;AAUM;EACE,8BAAA;AARR;AAWM;EACE,+BAAA;AATR;AAYM;EACE,6BAAA;AAVR;AAcI;EACE,aAAA;EACA,kBAAA;EACA,SAAA;EAOA,UAAA;EACA,kBAAA;EACA,iDAAA;EAEA,2BAAA;EACA,kBAAA;EACA,gBAAA;EACA,cAAA;EAEA,sCAAA;EACA,6CAAA;EACA,wCAAA;EACA,gCAAA;AApBN;AAEM;EACE,WAAA;AAAR;AAEM;EACE,UAAA;AAAR;AAgBM;EACE,wCAAA;AAdR;AAgBM;EACE,kCAAA;AAdR;AAiBM;EACE,UAAA;EACA,mBAAA;EACA,oDAAA;EACA,sBAAA;EAEA,uCAAA;AAhBR;AAuBM;;;EACE,uCAAA;AAnBR;AAuBI;EACE,gBAAA;EACA,mBAAA;AArBN","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"open-color/open-color\\";\\n@import \\"../css/variables.module\\";\\n\\n.excalidraw {\\n  .layer-ui__wrapper.animate {\\n    transition: width 0.1s ease-in-out;\\n  }\\n  .layer-ui__wrapper {\\n    // when the rightside sidebar is docked, we need to resize the UI by its\\n    // width, making the nested UI content shift to the left. To do this,\\n    // we need the UI container to actually have dimensions set, but\\n    // then we also need to disable pointer events else the canvas below\\n    // wouldn't be interactive.\\n    position: absolute;\\n    width: 100%;\\n    height: 100%;\\n    pointer-events: none;\\n    z-index: var(--zIndex-layerUI);\\n\\n    &__top-right {\\n      display: flex;\\n      gap: 0.75rem;\\n    }\\n\\n    &__footer {\\n      width: 100%;\\n\\n      &-right {\\n        z-index: 100;\\n        display: flex;\\n      }\\n    }\\n\\n    .zen-mode-transition {\\n      transition: transform 0.5s ease-in-out;\\n\\n      :root[dir=\\"ltr\\"] &.transition-left {\\n        transform: translate(-999px, 0);\\n      }\\n\\n      :root[dir=\\"ltr\\"] &.transition-right {\\n        transform: translate(999px, 0);\\n      }\\n\\n      :root[dir=\\"rtl\\"] &.transition-left {\\n        transform: translate(999px, 0);\\n      }\\n\\n      :root[dir=\\"rtl\\"] &.transition-right {\\n        transform: translate(-999px, 0);\\n      }\\n\\n      &.layer-ui__wrapper__footer-left--transition-bottom {\\n        transform: translate(0, 92px);\\n      }\\n    }\\n\\n    .disable-zen-mode {\\n      padding: 10px;\\n      position: absolute;\\n      bottom: 0;\\n      [dir=\\"ltr\\"] & {\\n        right: 1rem;\\n      }\\n      [dir=\\"rtl\\"] & {\\n        left: 1rem;\\n      }\\n      opacity: 0;\\n      visibility: hidden;\\n      transition: visibility 0s linear 0s, opacity 0.5s;\\n\\n      font-family: var(--ui-font);\\n      font-size: 0.75rem;\\n      font-weight: 500;\\n      line-height: 1;\\n\\n      border-radius: var(--border-radius-lg);\\n      border: 1px solid var(--default-border-color);\\n      background-color: var(--island-bg-color);\\n      color: var(--text-primary-color);\\n\\n      &:hover {\\n        background-color: var(--button-hover-bg);\\n      }\\n      &:active {\\n        border-color: var(--color-primary);\\n      }\\n\\n      &--visible {\\n        opacity: 1;\\n        visibility: visible;\\n        transition: visibility 0s linear 300ms, opacity 0.5s;\\n        transition-delay: 0.8s;\\n\\n        pointer-events: var(--ui-pointerEvents);\\n      }\\n    }\\n\\n    .layer-ui__wrapper__footer-left,\\n    .footer-center,\\n    .layer-ui__wrapper__footer-right {\\n      & > * {\\n        pointer-events: var(--ui-pointerEvents);\\n      }\\n    }\\n\\n    .layer-ui__wrapper__footer-right {\\n      margin-top: auto;\\n      margin-bottom: auto;\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);
// Exports
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 17300 characters]
//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/LayerUI.scss
`);
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/LibraryMenu.scss": (
              /*!********************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/LibraryMenu.scss ***!
                \********************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ".excalidraw .layer-ui__library {\\n  display: flex;\\n  flex-direction: column;\\n  flex: 1 1 auto;\\n}\\n.excalidraw .library-actions-counter {\\n  background-color: var(--color-primary);\\n  color: var(--color-primary-light);\\n  font-weight: bold;\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  border-radius: 50%;\\n  width: 1rem;\\n  height: 1rem;\\n  position: absolute;\\n  bottom: -0.25rem;\\n  right: -0.25rem;\\n  font-size: 0.625rem;\\n  pointer-events: none;\\n}\\n.excalidraw .layer-ui__library-message {\\n  padding: 2rem;\\n  min-width: 200px;\\n  display: flex;\\n  flex-direction: column;\\n  align-items: center;\\n  flex-grow: 1;\\n  justify-content: center;\\n}\\n.excalidraw .layer-ui__library-message span {\\n  font-size: 0.8em;\\n}\\n.excalidraw .publish-library-success .Dialog__content {\\n  display: flex;\\n  flex-direction: column;\\n}\\n.excalidraw .publish-library-success-close.ToolIcon_type_button {\\n  background-color: #228be6;\\n  align-self: flex-end;\\n}\\n.excalidraw .publish-library-success-close.ToolIcon_type_button:hover {\\n  background-color: #1971c2;\\n}\\n.excalidraw .publish-library-success-close.ToolIcon_type_button .ToolIcon__icon {\\n  width: auto;\\n  font-size: 1rem;\\n  color: #ffffff;\\n  padding: 0 0.5rem;\\n}\\n.excalidraw .library-menu-control-buttons {\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  gap: 0.625rem;\\n  position: relative;\\n}\\n.excalidraw .library-menu-control-buttons--at-bottom::before {\\n  content: \\"\\";\\n  width: calc(100% - 1.5rem);\\n  height: 1px;\\n  position: absolute;\\n  top: -1px;\\n  background: var(--sidebar-border-color);\\n}\\n.excalidraw .library-menu-browse-button {\\n  flex: 1;\\n  height: var(--lg-button-size);\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  overflow: hidden;\\n  position: relative;\\n  border-radius: var(--border-radius-lg);\\n  background-color: var(--color-primary);\\n  color: #ffffff;\\n  text-align: center;\\n  white-space: nowrap;\\n  text-decoration: none !important;\\n  font-weight: 600;\\n  font-size: 0.75rem;\\n}\\n.excalidraw .library-menu-browse-button:hover {\\n  background-color: var(--color-brand-hover);\\n}\\n.excalidraw .library-menu-browse-button:active {\\n  background-color: var(--color-brand-active);\\n}\\n.excalidraw.theme--dark .library-menu-browse-button {\\n  color: var(--color-gray-100);\\n}\\n.excalidraw.excalidraw--mobile .library-menu-browse-button {\\n  height: var(--default-button-size);\\n}\\n.excalidraw .layer-ui__library .dropdown-menu {\\n  width: auto;\\n  top: initial;\\n  right: 0;\\n  left: initial;\\n  bottom: 100%;\\n  margin-bottom: 0.625rem;\\n}\\n.excalidraw .layer-ui__library .dropdown-menu .dropdown-menu-container {\\n  width: 196px;\\n  box-shadow: var(--library-dropdown-shadow);\\n  border-radius: var(--border-radius-lg);\\n  padding: 0.25rem 0.5rem;\\n}\\n.excalidraw .layer-ui__library .library-menu-dropdown-container {\\n  position: relative;\\n}\\n.excalidraw .layer-ui__library .library-menu-dropdown-container--in-heading {\\n  padding: 0;\\n  position: absolute;\\n  top: 1rem;\\n  right: 0.75rem;\\n  z-index: 1;\\n}\\n.excalidraw .layer-ui__library .library-menu-dropdown-container--in-heading .dropdown-menu {\\n  top: 100%;\\n}", "",{"version":3,"sources":["webpack://./../../components/LibraryMenu.scss","webpack://./../../../node_modules/open-color/open-color.scss"],"names":[],"mappings":"AAGE;EACE,aAAA;EACA,sBAAA;EAEA,cAAA;AAHJ;AAME;EACE,sCAAA;EACA,iCAAA;EACA,iBAAA;EACA,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,kBAAA;EACA,WAAA;EACA,YAAA;EACA,kBAAA;EACA,gBAAA;EACA,eAAA;EACA,mBAAA;EACA,oBAAA;AAJJ;AAOE;EACE,aAAA;EACA,gBAAA;EACA,aAAA;EACA,sBAAA;EACA,mBAAA;EACA,YAAA;EACA,uBAAA;AALJ;AAOI;EACE,gBAAA;AALN;AAUI;EACE,aAAA;EACA,sBAAA;AARN;AAWI;EACE,yBC6JM;ED5JN,oBAAA;AATN;AAUM;EACE,yBC4JI;ADpKZ;AAUM;EACE,WAAA;EACA,eAAA;EACA,cC7CW;ED8CX,iBAAA;AARR;AAaE;EACE,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,aAAA;EACA,kBAAA;AAXJ;AAaI;EACE,WAAA;EACA,0BAAA;EACA,WAAA;EACA,kBAAA;EACA,SAAA;EACA,uCAAA;AAXN;AAeE;EACE,OAAA;EAEA,6BAAA;EAEA,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,gBAAA;EACA,kBAAA;EAEA,sCAAA;EACA,sCAAA;EACA,cCjFe;EDkFf,kBAAA;EACA,mBAAA;EACA,gCAAA;EAEA,gBAAA;EACA,kBAAA;AAjBJ;AAmBI;EACE,0CAAA;AAjBN;AAmBI;EACE,2CAAA;AAjBN;AAsBI;EACE,4BAAA;AApBN;AAwBE;EACE,kCAAA;AAtBJ;AAyBE;EACE,WAAA;EACA,YAAA;EACA,QAAA;EACA,aAAA;EACA,YAAA;EACA,uBAAA;AAvBJ;AAyBI;EACE,YAAA;EACA,0CAAA;EACA,sCAAA;EACA,uBAAA;AAvBN;AA2BE;EACE,kBAAA;AAzBJ;AA2BI;EACE,UAAA;EACA,kBAAA;EACA,SAAA;EACA,cAAA;EACA,UAAA;AAzBN;AA2BM;EACE,SAAA;AAzBR","sourcesContent":["@import \\"open-color/open-color\\";\\n\\n.excalidraw {\\n  .layer-ui__library {\\n    display: flex;\\n    flex-direction: column;\\n\\n    flex: 1 1 auto;\\n  }\\n\\n  .library-actions-counter {\\n    background-color: var(--color-primary);\\n    color: var(--color-primary-light);\\n    font-weight: bold;\\n    display: flex;\\n    align-items: center;\\n    justify-content: center;\\n    border-radius: 50%;\\n    width: 1rem;\\n    height: 1rem;\\n    position: absolute;\\n    bottom: -0.25rem;\\n    right: -0.25rem;\\n    font-size: 0.625rem;\\n    pointer-events: none;\\n  }\\n\\n  .layer-ui__library-message {\\n    padding: 2rem;\\n    min-width: 200px;\\n    display: flex;\\n    flex-direction: column;\\n    align-items: center;\\n    flex-grow: 1;\\n    justify-content: center;\\n\\n    span {\\n      font-size: 0.8em;\\n    }\\n  }\\n\\n  .publish-library-success {\\n    .Dialog__content {\\n      display: flex;\\n      flex-direction: column;\\n    }\\n\\n    &-close.ToolIcon_type_button {\\n      background-color: $oc-blue-6;\\n      align-self: flex-end;\\n      &:hover {\\n        background-color: $oc-blue-8;\\n      }\\n      .ToolIcon__icon {\\n        width: auto;\\n        font-size: 1rem;\\n        color: $oc-white;\\n        padding: 0 0.5rem;\\n      }\\n    }\\n  }\\n\\n  .library-menu-control-buttons {\\n    display: flex;\\n    align-items: center;\\n    justify-content: center;\\n    gap: 0.625rem;\\n    position: relative;\\n\\n    &--at-bottom::before {\\n      content: \\"\\";\\n      width: calc(100% - 1.5rem);\\n      height: 1px;\\n      position: absolute;\\n      top: -1px;\\n      background: var(--sidebar-border-color);\\n    }\\n  }\\n\\n  .library-menu-browse-button {\\n    flex: 1;\\n\\n    height: var(--lg-button-size);\\n\\n    display: flex;\\n    align-items: center;\\n    justify-content: center;\\n    overflow: hidden;\\n    position: relative;\\n\\n    border-radius: var(--border-radius-lg);\\n    background-color: var(--color-primary);\\n    color: $oc-white;\\n    text-align: center;\\n    white-space: nowrap;\\n    text-decoration: none !important;\\n\\n    font-weight: 600;\\n    font-size: 0.75rem;\\n\\n    &:hover {\\n      background-color: var(--color-brand-hover);\\n    }\\n    &:active {\\n      background-color: var(--color-brand-active);\\n    }\\n  }\\n\\n  &.theme--dark {\\n    .library-menu-browse-button {\\n      color: var(--color-gray-100);\\n    }\\n  }\\n\\n  &.excalidraw--mobile .library-menu-browse-button {\\n    height: var(--default-button-size);\\n  }\\n\\n  .layer-ui__library .dropdown-menu {\\n    width: auto;\\n    top: initial;\\n    right: 0;\\n    left: initial;\\n    bottom: 100%;\\n    margin-bottom: 0.625rem;\\n\\n    .dropdown-menu-container {\\n      width: 196px;\\n      box-shadow: var(--library-dropdown-shadow);\\n      border-radius: var(--border-radius-lg);\\n      padding: 0.25rem 0.5rem;\\n    }\\n  }\\n\\n  .layer-ui__library .library-menu-dropdown-container {\\n    position: relative;\\n\\n    &--in-heading {\\n      padding: 0;\\n      position: absolute;\\n      top: 1rem;\\n      right: 0.75rem;\\n      z-index: 1;\\n\\n      .dropdown-menu {\\n        top: 100%;\\n      }\\n    }\\n  }\\n}\\n","//\\n//\\n//  \u{1D5D6} \u{1D5E2} \u{1D5DF} \u{1D5E2} \u{1D5E5}\\n//  v 1.9.1\\n//\\n//  \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\\n\\n\\n//  General\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-white:         #ffffff;\\n$oc-black:         #000000;\\n\\n\\n//  Gray\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-gray-list: (\\n  \\"0\\": #f8f9fa,\\n  \\"1\\": #f1f3f5,\\n  \\"2\\": #e9ecef,\\n  \\"3\\": #dee2e6,\\n  \\"4\\": #ced4da,\\n  \\"5\\": #adb5bd,\\n  \\"6\\": #868e96,\\n  \\"7\\": #495057,\\n  \\"8\\": #343a40,\\n  \\"9\\": #212529\\n);\\n\\n$oc-gray-0: map-get($oc-gray-list, \\"0\\");\\n$oc-gray-1: map-get($oc-gray-list, \\"1\\");\\n$oc-gray-2: map-get($oc-gray-list, \\"2\\");\\n$oc-gray-3: map-get($oc-gray-list, \\"3\\");\\n$oc-gray-4: map-get($oc-gray-list, \\"4\\");\\n$oc-gray-5: map-get($oc-gray-list, \\"5\\");\\n$oc-gray-6: map-get($oc-gray-list, \\"6\\");\\n$oc-gray-7: map-get($oc-gray-list, \\"7\\");\\n$oc-gray-8: map-get($oc-gray-list, \\"8\\");\\n$oc-gray-9: map-get($oc-gray-list, \\"9\\");\\n\\n\\n//  Red\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-red-list: (\\n  \\"0\\": #fff5f5,\\n  \\"1\\": #ffe3e3,\\n  \\"2\\": #ffc9c9,\\n  \\"3\\": #ffa8a8,\\n  \\"4\\": #ff8787,\\n  \\"5\\": #ff6b6b,\\n  \\"6\\": #fa5252,\\n  \\"7\\": #f03e3e,\\n  \\"8\\": #e03131,\\n  \\"9\\": #c92a2a\\n);\\n\\n$oc-red-0: map-get($oc-red-list, \\"0\\");\\n$oc-red-1: map-get($oc-red-list, \\"1\\");\\n$oc-red-2: map-get($oc-red-list, \\"2\\");\\n$oc-red-3: map-get($oc-red-list, \\"3\\");\\n$oc-red-4: map-get($oc-red-list, \\"4\\");\\n$oc-red-5: map-get($oc-red-list, \\"5\\");\\n$oc-red-6: map-get($oc-red-list, \\"6\\");\\n$oc-red-7: map-get($oc-red-list, \\"7\\");\\n$oc-red-8: map-get($oc-red-list, \\"8\\");\\n$oc-red-9: map-get($oc-red-list, \\"9\\");\\n\\n\\n//  Pink\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-pink-list: (\\n  \\"0\\": #fff0f6,\\n  \\"1\\": #ffdeeb,\\n  \\"2\\": #fcc2d7,\\n  \\"3\\": #faa2c1,\\n  \\"4\\": #f783ac,\\n  \\"5\\": #f06595,\\n  \\"6\\": #e64980,\\n  \\"7\\": #d6336c,\\n  \\"8\\": #c2255c,\\n  \\"9\\": #a61e4d\\n);\\n\\n$oc-pink-0: map-get($oc-pink-list, \\"0\\");\\n$oc-pink-1: map-get($oc-pink-list, \\"1\\");\\n$oc-pink-2: map-get($oc-pink-list, \\"2\\");\\n$oc-pink-3: map-get($oc-pink-list, \\"3\\");\\n$oc-pink-4: map-get($oc-pink-list, \\"4\\");\\n$oc-pink-5: map-get($oc-pink-list, \\"5\\");\\n$oc-pink-6: map-get($oc-pink-list, \\"6\\");\\n$oc-pink-7: map-get($oc-pink-list, \\"7\\");\\n$oc-pink-8: map-get($oc-pink-list, \\"8\\");\\n$oc-pink-9: map-get($oc-pink-list, \\"9\\");\\n\\n\\n//  Grape\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-grape-list: (\\n  \\"0\\": #f8f0fc,\\n  \\"1\\": #f3d9fa,\\n  \\"2\\": #eebefa,\\n  \\"3\\": #e599f7,\\n  \\"4\\": #da77f2,\\n  \\"5\\": #cc5de8,\\n  \\"6\\": #be4bdb,\\n  \\"7\\": #ae3ec9,\\n  \\"8\\": #9c36b5,\\n  \\"9\\": #862e9c\\n);\\n\\n$oc-grape-0: map-get($oc-grape-list, \\"0\\");\\n$oc-grape-1: map-get($oc-grape-list, \\"1\\");\\n$oc-grape-2: map-get($oc-grape-list, \\"2\\");\\n$oc-grape-3: map-get($oc-grape-list, \\"3\\");\\n$oc-grape-4: map-get($oc-grape-list, \\"4\\");\\n$oc-grape-5: map-get($oc-grape-list, \\"5\\");\\n$oc-grape-6: map-get($oc-grape-list, \\"6\\");\\n$oc-grape-7: map-get($oc-grape-list, \\"7\\");\\n$oc-grape-8: map-get($oc-grape-list, \\"8\\");\\n$oc-grape-9: map-get($oc-grape-list, \\"9\\");\\n\\n\\n//  Violet\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-violet-list: (\\n  \\"0\\": #f3f0ff,\\n  \\"1\\": #e5dbff,\\n  \\"2\\": #d0bfff,\\n  \\"3\\": #b197fc,\\n  \\"4\\": #9775fa,\\n  \\"5\\": #845ef7,\\n  \\"6\\": #7950f2,\\n  \\"7\\": #7048e8,\\n  \\"8\\": #6741d9,\\n  \\"9\\": #5f3dc4\\n);\\n\\n$oc-violet-0: map-get($oc-violet-list, \\"0\\");\\n$oc-violet-1: map-get($oc-violet-list, \\"1\\");\\n$oc-violet-2: map-get($oc-violet-list, \\"2\\");\\n$oc-violet-3: map-get($oc-violet-list, \\"3\\");\\n$oc-violet-4: map-get($oc-violet-list, \\"4\\");\\n$oc-violet-5: map-get($oc-violet-list, \\"5\\");\\n$oc-violet-6: map-get($oc-violet-list, \\"6\\");\\n$oc-violet-7: map-get($oc-violet-list, \\"7\\");\\n$oc-violet-8: map-get($oc-violet-list, \\"8\\");\\n$oc-violet-9: map-get($oc-violet-list, \\"9\\");\\n\\n\\n//  Indigo\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-indigo-list: (\\n  \\"0\\": #edf2ff,\\n  \\"1\\": #dbe4ff,\\n  \\"2\\": #bac8ff,\\n  \\"3\\": #91a7ff,\\n  \\"4\\": #748ffc,\\n  \\"5\\": #5c7cfa,\\n  \\"6\\": #4c6ef5,\\n  \\"7\\": #4263eb,\\n  \\"8\\": #3b5bdb,\\n  \\"9\\": #364fc7\\n);\\n\\n$oc-indigo-0: map-get($oc-indigo-list, \\"0\\");\\n$oc-indigo-1: map-get($oc-indigo-list, \\"1\\");\\n$oc-indigo-2: map-get($oc-indigo-list, \\"2\\");\\n$oc-indigo-3: map-get($oc-indigo-list, \\"3\\");\\n$oc-indigo-4: map-get($oc-indigo-list, \\"4\\");\\n$oc-indigo-5: map-get($oc-indigo-list, \\"5\\");\\n$oc-indigo-6: map-get($oc-indigo-list, \\"6\\");\\n$oc-indigo-7: map-get($oc-indigo-list, \\"7\\");\\n$oc-indigo-8: map-get($oc-indigo-list, \\"8\\");\\n$oc-indigo-9: map-get($oc-indigo-list, \\"9\\");\\n\\n\\n//  Blue\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-blue-list: (\\n  \\"0\\": #e7f5ff,\\n  \\"1\\": #d0ebff,\\n  \\"2\\": #a5d8ff,\\n  \\"3\\": #74c0fc,\\n  \\"4\\": #4dabf7,\\n  \\"5\\": #339af0,\\n  \\"6\\": #228be6,\\n  \\"7\\": #1c7ed6,\\n  \\"8\\": #1971c2,\\n  \\"9\\": #1864ab\\n);\\n\\n$oc-blue-0: map-get($oc-blue-list, \\"0\\");\\n$oc-blue-1: map-get($oc-blue-list, \\"1\\");\\n$oc-blue-2: map-get($oc-blue-list, \\"2\\");\\n$oc-blue-3: map-get($oc-blue-list, \\"3\\");\\n$oc-blue-4: map-get($oc-blue-list, \\"4\\");\\n$oc-blue-5: map-get($oc-blue-list, \\"5\\");\\n$oc-blue-6: map-get($oc-blue-list, \\"6\\");\\n$oc-blue-7: map-get($oc-blue-list, \\"7\\");\\n$oc-blue-8: map-get($oc-blue-list, \\"8\\");\\n$oc-blue-9: map-get($oc-blue-list, \\"9\\");\\n\\n\\n//  Cyan\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-cyan-list: (\\n  \\"0\\": #e3fafc,\\n  \\"1\\": #c5f6fa,\\n  \\"2\\": #99e9f2,\\n  \\"3\\": #66d9e8,\\n  \\"4\\": #3bc9db,\\n  \\"5\\": #22b8cf,\\n  \\"6\\": #15aabf,\\n  \\"7\\": #1098ad,\\n  \\"8\\": #0c8599,\\n  \\"9\\": #0b7285\\n);\\n\\n$oc-cyan-0: map-get($oc-cyan-list, \\"0\\");\\n$oc-cyan-1: map-get($oc-cyan-list, \\"1\\");\\n$oc-cyan-2: map-get($oc-cyan-list, \\"2\\");\\n$oc-cyan-3: map-get($oc-cyan-list, \\"3\\");\\n$oc-cyan-4: map-get($oc-cyan-list, \\"4\\");\\n$oc-cyan-5: map-get($oc-cyan-list, \\"5\\");\\n$oc-cyan-6: map-get($oc-cyan-list, \\"6\\");\\n$oc-cyan-7: map-get($oc-cyan-list, \\"7\\");\\n$oc-cyan-8: map-get($oc-cyan-list, \\"8\\");\\n$oc-cyan-9: map-get($oc-cyan-list, \\"9\\");\\n\\n\\n//  Teal\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-teal-list: (\\n  \\"0\\": #e6fcf5,\\n  \\"1\\": #c3fae8,\\n  \\"2\\": #96f2d7,\\n  \\"3\\": #63e6be,\\n  \\"4\\": #38d9a9,\\n  \\"5\\": #20c997,\\n  \\"6\\": #12b886,\\n  \\"7\\": #0ca678,\\n  \\"8\\": #099268,\\n  \\"9\\": #087f5b\\n);\\n\\n$oc-teal-0: map-get($oc-teal-list, \\"0\\");\\n$oc-teal-1: map-get($oc-teal-list, \\"1\\");\\n$oc-teal-2: map-get($oc-teal-list, \\"2\\");\\n$oc-teal-3: map-get($oc-teal-list, \\"3\\");\\n$oc-teal-4: map-get($oc-teal-list, \\"4\\");\\n$oc-teal-5: map-get($oc-teal-list, \\"5\\");\\n$oc-teal-6: map-get($oc-teal-list, \\"6\\");\\n$oc-teal-7: map-get($oc-teal-list, \\"7\\");\\n$oc-teal-8: map-get($oc-teal-list, \\"8\\");\\n$oc-teal-9: map-get($oc-teal-list, \\"9\\");\\n\\n\\n//  Green\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-green-list: (\\n  \\"0\\": #ebfbee,\\n  \\"1\\": #d3f9d8,\\n  \\"2\\": #b2f2bb,\\n  \\"3\\": #8ce99a,\\n  \\"4\\": #69db7c,\\n  \\"5\\": #51cf66,\\n  \\"6\\": #40c057,\\n  \\"7\\": #37b24d,\\n  \\"8\\": #2f9e44,\\n  \\"9\\": #2b8a3e\\n);\\n\\n$oc-green-0: map-get($oc-green-list, \\"0\\");\\n$oc-green-1: map-get($oc-green-list, \\"1\\");\\n$oc-green-2: map-get($oc-green-list, \\"2\\");\\n$oc-green-3: map-get($oc-green-list, \\"3\\");\\n$oc-green-4: map-get($oc-green-list, \\"4\\");\\n$oc-green-5: map-get($oc-green-list, \\"5\\");\\n$oc-green-6: map-get($oc-green-list, \\"6\\");\\n$oc-green-7: map-get($oc-green-list, \\"7\\");\\n$oc-green-8: map-get($oc-green-list, \\"8\\");\\n$oc-green-9: map-get($oc-green-list, \\"9\\");\\n\\n\\n//  Lime\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-lime-list: (\\n  \\"0\\": #f4fce3,\\n  \\"1\\": #e9fac8,\\n  \\"2\\": #d8f5a2,\\n  \\"3\\": #c0eb75,\\n  \\"4\\": #a9e34b,\\n  \\"5\\": #94d82d,\\n  \\"6\\": #82c91e,\\n  \\"7\\": #74b816,\\n  \\"8\\": #66a80f,\\n  \\"9\\": #5c940d\\n);\\n\\n$oc-lime-0: map-get($oc-lime-list, \\"0\\");\\n$oc-lime-1: map-get($oc-lime-list, \\"1\\");\\n$oc-lime-2: map-get($oc-lime-list, \\"2\\");\\n$oc-lime-3: map-get($oc-lime-list, \\"3\\");\\n$oc-lime-4: map-get($oc-lime-list, \\"4\\");\\n$oc-lime-5: map-get($oc-lime-list, \\"5\\");\\n$oc-lime-6: map-get($oc-lime-list, \\"6\\");\\n$oc-lime-7: map-get($oc-lime-list, \\"7\\");\\n$oc-lime-8: map-get($oc-lime-list, \\"8\\");\\n$oc-lime-9: map-get($oc-lime-list, \\"9\\");\\n\\n\\n//  Yellow\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-yellow-list: (\\n  \\"0\\": #fff9db,\\n  \\"1\\": #fff3bf,\\n  \\"2\\": #ffec99,\\n  \\"3\\": #ffe066,\\n  \\"4\\": #ffd43b,\\n  \\"5\\": #fcc419,\\n  \\"6\\": #fab005,\\n  \\"7\\": #f59f00,\\n  \\"8\\": #f08c00,\\n  \\"9\\": #e67700\\n);\\n\\n$oc-yellow-0: map-get($oc-yellow-list, \\"0\\");\\n$oc-yellow-1: map-get($oc-yellow-list, \\"1\\");\\n$oc-yellow-2: map-get($oc-yellow-list, \\"2\\");\\n$oc-yellow-3: map-get($oc-yellow-list, \\"3\\");\\n$oc-yellow-4: map-get($oc-yellow-list, \\"4\\");\\n$oc-yellow-5: map-get($oc-yellow-list, \\"5\\");\\n$oc-yellow-6: map-get($oc-yellow-list, \\"6\\");\\n$oc-yellow-7: map-get($oc-yellow-list, \\"7\\");\\n$oc-yellow-8: map-get($oc-yellow-list, \\"8\\");\\n$oc-yellow-9: map-get($oc-yellow-list, \\"9\\");\\n\\n\\n//  Orange\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-orange-list: (\\n  \\"0\\": #fff4e6,\\n  \\"1\\": #ffe8cc,\\n  \\"2\\": #ffd8a8,\\n  \\"3\\": #ffc078,\\n  \\"4\\": #ffa94d,\\n  \\"5\\": #ff922b,\\n  \\"6\\": #fd7e14,\\n  \\"7\\": #f76707,\\n  \\"8\\": #e8590c,\\n  \\"9\\": #d9480f\\n);\\n\\n$oc-orange-0: map-get($oc-orange-list, \\"0\\");\\n$oc-orange-1: map-get($oc-orange-list, \\"1\\");\\n$oc-orange-2: map-get($oc-orange-list, \\"2\\");\\n$oc-orange-3: map-get($oc-orange-list, \\"3\\");\\n$oc-orange-4: map-get($oc-orange-list, \\"4\\");\\n$oc-orange-5: map-get($oc-orange-list, \\"5\\");\\n$oc-orange-6: map-get($oc-orange-list, \\"6\\");\\n$oc-orange-7: map-get($oc-orange-list, \\"7\\");\\n$oc-orange-8: map-get($oc-orange-list, \\"8\\");\\n$oc-orange-9: map-get($oc-orange-list, \\"9\\");\\n\\n\\n//  Color list\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-color-spectrum:   9;\\n\\n$oc-color-list: (\\n  $oc-gray-list:      \\"gray\\",\\n  $oc-red-list:      \\"red\\",\\n  $oc-pink-list:      \\"pink\\",\\n  $oc-grape-list:      \\"grape\\",\\n  $oc-violet-list:      \\"violet\\",\\n  $oc-indigo-list:      \\"indigo\\",\\n  $oc-blue-list:      \\"blue\\",\\n  $oc-cyan-list:      \\"cyan\\",\\n  $oc-teal-list:      \\"teal\\",\\n  $oc-green-list:      \\"green\\",\\n  $oc-lime-list:      \\"lime\\",\\n  $oc-yellow-list:      \\"yellow\\",\\n  $oc-orange-list:      \\"orange\\"\\n);\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 33180 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/LibraryMenu.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/LibraryMenuItems.scss": (
              /*!*************************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/LibraryMenuItems.scss ***!
                \*************************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");
/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");
/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);
// Imports


var ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
// Module
___CSS_LOADER_EXPORT___.push([module.id, ".excalidraw {\\n  --container-padding-y: 1.5rem;\\n  --container-padding-x: 0.75rem;\\n}\\n.excalidraw .library-menu-items__no-items {\\n  text-align: center;\\n  color: var(--color-gray-70);\\n  line-height: 1.5;\\n  font-size: 0.875rem;\\n  width: 100%;\\n}\\n.excalidraw .library-menu-items__no-items__label {\\n  color: var(--color-primary);\\n  font-weight: bold;\\n  font-size: 1.125rem;\\n  margin-bottom: 0.75rem;\\n}\\n.excalidraw.theme--dark .library-menu-items__no-items {\\n  color: var(--color-gray-40);\\n}\\n.excalidraw .library-menu-items-container {\\n  width: 100%;\\n  display: flex;\\n  flex-grow: 1;\\n  flex-shrink: 1;\\n  flex-basis: 0;\\n  overflow-y: auto;\\n  flex-direction: column;\\n  height: 100%;\\n  justify-content: center;\\n  margin: 0;\\n  position: relative;\\n}\\n.excalidraw .library-menu-items-container > div {\\n  padding-left: 0.75rem;\\n  padding-right: 0.75rem;\\n}\\n.excalidraw .library-menu-items-container__row {\\n  display: grid;\\n  grid-template-columns: repeat(4, 1fr);\\n  gap: 1rem;\\n}\\n.excalidraw .library-menu-items-container__items {\\n  row-gap: 0.5rem;\\n  padding: var(--container-padding-y) 0;\\n  flex: 1;\\n  overflow-y: auto;\\n  overflow-x: hidden;\\n  margin-bottom: 1rem;\\n}\\n.excalidraw .library-menu-items-container__header {\\n  color: var(--color-primary);\\n  font-size: 1.125rem;\\n  font-weight: bold;\\n  margin-bottom: 0.75rem;\\n  width: 100%;\\n  padding-right: 4rem;\\n  box-sizing: border-box;\\n}\\n.excalidraw .library-menu-items-container__header--excal {\\n  margin-top: 2rem;\\n}\\n.excalidraw .library-menu-items-container__grid {\\n  display: grid;\\n  grid-template-columns: 1fr 1fr 1fr 1fr;\\n  grid-gap: 1rem;\\n}\\n.excalidraw .library-menu-items-container .separator {\\n  width: 100%;\\n  display: flex;\\n  align-items: center;\\n  font-weight: 500;\\n  font-size: 0.9rem;\\n  margin: 0.6em 0.2em;\\n  color: var(--text-primary-color);\\n}\\n.excalidraw .library-menu-items-private-library-container {\\n  min-height: 3.75rem;\\n  width: 100%;\\n}", "",{"version":3,"sources":["webpack://./../../components/LibraryMenuItems.scss"],"names":[],"mappings":"AAEA;EACE,6BAAA;EACA,8BAAA;AADF;AAGE;EACE,kBAAA;EACA,2BAAA;EACA,gBAAA;EACA,mBAAA;EACA,WAAA;AADJ;AAGI;EACE,2BAAA;EACA,iBAAA;EACA,mBAAA;EACA,sBAAA;AADN;AAMI;EACE,2BAAA;AAJN;AAQE;EACE,WAAA;EACA,aAAA;EACA,YAAA;EACA,cAAA;EACA,aAAA;EACA,gBAAA;EACA,sBAAA;EACA,YAAA;EACA,uBAAA;EACA,SAAA;EAEA,kBAAA;AAPJ;AASI;EACE,qBAAA;EACA,sBAAA;AAPN;AAUI;EACE,aAAA;EACA,qCAAA;EACA,SAAA;AARN;AAWI;EACE,eAAA;EACA,qCAAA;EACA,OAAA;EACA,gBAAA;EACA,kBAAA;EACA,mBAAA;AATN;AAYI;EACE,2BAAA;EACA,mBAAA;EACA,iBAAA;EACA,sBAAA;EACA,WAAA;EACA,mBAAA;EACA,sBAAA;AAVN;AAYM;EACE,gBAAA;AAVR;AAcI;EACE,aAAA;EACA,sCAAA;EACA,cAAA;AAZN;AAeI;EACE,WAAA;EACA,aAAA;EACA,mBAAA;EACA,gBAAA;EACA,iBAAA;EACA,mBAAA;EACA,gCAAA;AAbN;AAiBE;EAGE,mBAAA;EACA,WAAA;AAjBJ","sourcesContent":["@import \\"open-color/open-color\\";\\n\\n.excalidraw {\\n  --container-padding-y: 1.5rem;\\n  --container-padding-x: 0.75rem;\\n\\n  .library-menu-items__no-items {\\n    text-align: center;\\n    color: var(--color-gray-70);\\n    line-height: 1.5;\\n    font-size: 0.875rem;\\n    width: 100%;\\n\\n    &__label {\\n      color: var(--color-primary);\\n      font-weight: bold;\\n      font-size: 1.125rem;\\n      margin-bottom: 0.75rem;\\n    }\\n  }\\n\\n  &.theme--dark {\\n    .library-menu-items__no-items {\\n      color: var(--color-gray-40);\\n    }\\n  }\\n\\n  .library-menu-items-container {\\n    width: 100%;\\n    display: flex;\\n    flex-grow: 1;\\n    flex-shrink: 1;\\n    flex-basis: 0;\\n    overflow-y: auto;\\n    flex-direction: column;\\n    height: 100%;\\n    justify-content: center;\\n    margin: 0;\\n\\n    position: relative;\\n\\n    & > div {\\n      padding-left: 0.75rem;\\n      padding-right: 0.75rem;\\n    }\\n\\n    &__row {\\n      display: grid;\\n      grid-template-columns: repeat(4, 1fr);\\n      gap: 1rem;\\n    }\\n\\n    &__items {\\n      row-gap: 0.5rem;\\n      padding: var(--container-padding-y) 0;\\n      flex: 1;\\n      overflow-y: auto;\\n      overflow-x: hidden;\\n      margin-bottom: 1rem;\\n    }\\n\\n    &__header {\\n      color: var(--color-primary);\\n      font-size: 1.125rem;\\n      font-weight: bold;\\n      margin-bottom: 0.75rem;\\n      width: 100%;\\n      padding-right: 4rem; // due to dropdown button\\n      box-sizing: border-box;\\n\\n      &--excal {\\n        margin-top: 2rem;\\n      }\\n    }\\n\\n    &__grid {\\n      display: grid;\\n      grid-template-columns: 1fr 1fr 1fr 1fr;\\n      grid-gap: 1rem;\\n    }\\n\\n    .separator {\\n      width: 100%;\\n      display: flex;\\n      align-items: center;\\n      font-weight: 500;\\n      font-size: 0.9rem;\\n      margin: 0.6em 0.2em;\\n      color: var(--text-primary-color);\\n    }\\n  }\\n\\n  .library-menu-items-private-library-container {\\n    // so that when you toggle between pending item and no items, there's\\n    // no layout shift (this is hardcoded and works only with ENG locale)\\n    min-height: 3.75rem;\\n    width: 100%;\\n  }\\n}\\n"],"sourceRoot":""}]);
// Exports
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 10044 characters]
//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/LibraryMenuItems.scss
`);
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/LibraryUnit.scss": (
              /*!********************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/LibraryUnit.scss ***!
                \********************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .library-unit {\\n  align-items: center;\\n  border: 1px solid transparent;\\n  display: flex;\\n  justify-content: center;\\n  position: relative;\\n  width: 55px;\\n  height: 55px;\\n  box-sizing: border-box;\\n  border-radius: var(--border-radius-lg);\\n}\\n.excalidraw .library-unit svg {\\n  pointer-events: none;\\n}\\n.excalidraw .library-unit--hover {\\n  border-color: var(--color-primary);\\n}\\n.excalidraw .library-unit--selected {\\n  border-color: var(--color-primary);\\n  border-width: 1px;\\n}\\n.excalidraw .library-unit--skeleton {\\n  opacity: 0.5;\\n  background: linear-gradient(-45deg, var(--color-gray-10), var(--color-gray-20), var(--color-gray-10));\\n  background-size: 200% 200%;\\n  animation: library-unit__skeleton-opacity-animation 0.2s linear;\\n}\\n.excalidraw.theme--dark .library-unit--skeleton {\\n  background-image: linear-gradient(-45deg, var(--color-gray-100), var(--color-gray-80), var(--color-gray-100));\\n}\\n.excalidraw .library-unit__dragger {\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  height: 100%;\\n  width: 100%;\\n}\\n.excalidraw .library-unit__dragger > svg {\\n  filter: var(--theme-filter);\\n  flex-grow: 1;\\n  max-height: 100%;\\n  max-width: 100%;\\n}\\n.excalidraw .library-unit__checkbox-container,\\n.excalidraw .library-unit__checkbox-container:hover,\\n.excalidraw .library-unit__checkbox-container:active {\\n  align-items: center;\\n  background: none;\\n  border: none;\\n  color: var(--icon-fill-color);\\n  display: flex;\\n  justify-content: center;\\n  margin: 0;\\n  padding: 0.5rem;\\n  position: absolute;\\n  left: 2rem;\\n  bottom: 2rem;\\n  cursor: pointer;\\n}\\n.excalidraw .library-unit__checkbox-container input,\\n.excalidraw .library-unit__checkbox-container:hover input,\\n.excalidraw .library-unit__checkbox-container:active input {\\n  cursor: pointer;\\n}\\n.excalidraw .library-unit__checkbox {\\n  position: absolute;\\n  top: 0.125rem;\\n  right: 0.125rem;\\n  margin: 0;\\n}\\n.excalidraw .library-unit__checkbox .Checkbox-box {\\n  margin: 0;\\n  width: 1rem;\\n  height: 1rem;\\n  border-radius: 4px;\\n  background-color: var(--color-primary-light);\\n  border: 1px solid var(--color-primary);\\n  box-shadow: none !important;\\n  padding: 2px;\\n}\\n.excalidraw .library-unit__checkbox.Checkbox:hover .Checkbox-box {\\n  background-color: var(--color-primary-light);\\n}\\n.excalidraw .library-unit__checkbox.is-checked .Checkbox-box {\\n  background-color: var(--color-primary) !important;\\n}\\n.excalidraw .library-unit__checkbox.is-checked .Checkbox-box svg {\\n  color: var(--color-primary-light);\\n}\\n.excalidraw .library-unit__removeFromLibrary > svg {\\n  height: 16px;\\n  width: 16px;\\n}\\n.excalidraw .library-unit__adder {\\n  transform: scale(1);\\n  animation: library-unit__adder-animation 1s ease-in infinite;\\n  position: absolute;\\n  width: 1.5rem;\\n  height: 1.5rem;\\n  background-color: var(--color-primary);\\n  border-radius: var(--border-radius-md);\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  pointer-events: none;\\n}\\n.excalidraw .library-unit__adder svg {\\n  color: var(--color-primary-light);\\n  width: 1rem;\\n  height: 1rem;\\n}\\n.excalidraw .library-unit:active .library-unit__adder {\\n  animation: none;\\n  transform: scale(0.8);\\n}\\n.excalidraw .library-unit__active {\\n  cursor: pointer;\\n}\\n@keyframes library-unit__adder-animation {\\n  0% {\\n    transform: scale(0.85);\\n  }\\n  50% {\\n    transform: scale(1);\\n  }\\n  100% {\\n    transform: scale(0.85);\\n  }\\n}\\n@keyframes library-unit__skeleton-opacity-animation {\\n  0% {\\n    opacity: 0;\\n  }\\n  75% {\\n    opacity: 0;\\n  }\\n  100% {\\n    opacity: 0.5;\\n  }\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/LibraryUnit.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AAAE;EACE,mBAAA;EACA,6BAAA;EACA,aAAA;EACA,uBAAA;EACA,kBAAA;EACA,WAAA;EACA,YAAA;EACA,sBAAA;EACA,sCAAA;AAGJ;AADI;EAEE,oBAAA;AAEN;AACI;EACE,kCAAA;AACN;AAEI;EACE,kCAAA;EACA,iBAAA;AAAN;AAGI;EACE,YAAA;EACA,qGAAA;EAMA,0BAAA;EACA,+DAAA;AANN;AAUE;EACE,6GAAA;AARJ;AAgBE;EACE,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,YAAA;EACA,WAAA;AAdJ;AAiBE;EACE,2BAAA;EACA,YAAA;EACA,gBAAA;EACA,eAAA;AAfJ;AAkBE;;;EAGE,mBAAA;EACA,gBAAA;EACA,YAAA;EACA,6BAAA;EACA,aAAA;EACA,uBAAA;EACA,SAAA;EACA,eAAA;EACA,kBAAA;EACA,UAAA;EACA,YAAA;EACA,eAAA;AAhBJ;AAkBI;;;EACE,eAAA;AAdN;AAkBE;EACE,kBAAA;EACA,aAAA;EACA,eAAA;EACA,SAAA;AAhBJ;AAkBI;EACE,SAAA;EACA,WAAA;EACA,YAAA;EACA,kBAAA;EACA,4CAAA;EACA,sCAAA;EACA,2BAAA;EACA,YAAA;AAhBN;AAoBM;EACE,4CAAA;AAlBR;AAuBM;EACE,iDAAA;AArBR;AAuBQ;EACE,iCAAA;AArBV;AA2BE;EACE,YAAA;EACA,WAAA;AAzBJ;AA4BE;EACE,mBAAA;EACA,4DAAA;EAEA,kBAAA;EACA,aAAA;EACA,cAAA;EACA,sCAAA;EACA,sCAAA;EAEA,aAAA;EACA,uBAAA;EACA,mBAAA;EAEA,oBAAA;AA7BJ;AA+BI;EACE,iCAAA;EACA,WAAA;EACA,YAAA;AA7BN;AAiCE;EACE,eAAA;EACA,qBAAA;AA/BJ;AAkCE;EACE,eAAA;AAhCJ;AAmCE;EACE;IACE,sBAAA;EAjCJ;EAoCE;IACE,mBAAA;EAlCJ;EAqCE;IACE,sBAAA;EAnCJ;AACF;AAsCE;EACE;IACE,UAAA;EApCJ;EAuCE;IACE,UAAA;EArCJ;EAwCE;IACE,YAAA;EAtCJ;AACF","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../css/variables.module\\";\\n\\n.excalidraw {\\n  .library-unit {\\n    align-items: center;\\n    border: 1px solid transparent;\\n    display: flex;\\n    justify-content: center;\\n    position: relative;\\n    width: 55px;\\n    height: 55px;\\n    box-sizing: border-box;\\n    border-radius: var(--border-radius-lg);\\n\\n    svg {\\n      // to prevent clicks on links and such\\n      pointer-events: none;\\n    }\\n\\n    &--hover {\\n      border-color: var(--color-primary);\\n    }\\n\\n    &--selected {\\n      border-color: var(--color-primary);\\n      border-width: 1px;\\n    }\\n\\n    &--skeleton {\\n      opacity: 0.5;\\n      background: linear-gradient(\\n        -45deg,\\n        var(--color-gray-10),\\n        var(--color-gray-20),\\n        var(--color-gray-10)\\n      );\\n      background-size: 200% 200%;\\n      animation: library-unit__skeleton-opacity-animation 0.2s linear;\\n    }\\n  }\\n\\n  &.theme--dark .library-unit--skeleton {\\n    background-image: linear-gradient(\\n      -45deg,\\n      var(--color-gray-100),\\n      var(--color-gray-80),\\n      var(--color-gray-100)\\n    );\\n  }\\n\\n  .library-unit__dragger {\\n    display: flex;\\n    align-items: center;\\n    justify-content: center;\\n    height: 100%;\\n    width: 100%;\\n  }\\n\\n  .library-unit__dragger > svg {\\n    filter: var(--theme-filter);\\n    flex-grow: 1;\\n    max-height: 100%;\\n    max-width: 100%;\\n  }\\n\\n  .library-unit__checkbox-container,\\n  .library-unit__checkbox-container:hover,\\n  .library-unit__checkbox-container:active {\\n    align-items: center;\\n    background: none;\\n    border: none;\\n    color: var(--icon-fill-color);\\n    display: flex;\\n    justify-content: center;\\n    margin: 0;\\n    padding: 0.5rem;\\n    position: absolute;\\n    left: 2rem;\\n    bottom: 2rem;\\n    cursor: pointer;\\n\\n    input {\\n      cursor: pointer;\\n    }\\n  }\\n\\n  .library-unit__checkbox {\\n    position: absolute;\\n    top: 0.125rem;\\n    right: 0.125rem;\\n    margin: 0;\\n\\n    .Checkbox-box {\\n      margin: 0;\\n      width: 1rem;\\n      height: 1rem;\\n      border-radius: 4px;\\n      background-color: var(--color-primary-light);\\n      border: 1px solid var(--color-primary);\\n      box-shadow: none !important;\\n      padding: 2px;\\n    }\\n\\n    &.Checkbox:hover {\\n      .Checkbox-box {\\n        background-color: var(--color-primary-light);\\n      }\\n    }\\n\\n    &.is-checked {\\n      .Checkbox-box {\\n        background-color: var(--color-primary) !important;\\n\\n        svg {\\n          color: var(--color-primary-light);\\n        }\\n      }\\n    }\\n  }\\n\\n  .library-unit__removeFromLibrary > svg {\\n    height: 16px;\\n    width: 16px;\\n  }\\n\\n  .library-unit__adder {\\n    transform: scale(1);\\n    animation: library-unit__adder-animation 1s ease-in infinite;\\n\\n    position: absolute;\\n    width: 1.5rem;\\n    height: 1.5rem;\\n    background-color: var(--color-primary);\\n    border-radius: var(--border-radius-md);\\n\\n    display: flex;\\n    justify-content: center;\\n    align-items: center;\\n\\n    pointer-events: none;\\n\\n    svg {\\n      color: var(--color-primary-light);\\n      width: 1rem;\\n      height: 1rem;\\n    }\\n  }\\n\\n  .library-unit:active .library-unit__adder {\\n    animation: none;\\n    transform: scale(0.8);\\n  }\\n\\n  .library-unit__active {\\n    cursor: pointer;\\n  }\\n\\n  @keyframes library-unit__adder-animation {\\n    0% {\\n      transform: scale(0.85);\\n    }\\n\\n    50% {\\n      transform: scale(1);\\n    }\\n\\n    100% {\\n      transform: scale(0.85);\\n    }\\n  }\\n\\n  @keyframes library-unit__skeleton-opacity-animation {\\n    0% {\\n      opacity: 0;\\n    }\\n\\n    75% {\\n      opacity: 0;\\n    }\\n\\n    100% {\\n      opacity: 0.5;\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 22024 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/LibraryUnit.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/MermaidToExcalidraw.scss": (
              /*!****************************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/MermaidToExcalidraw.scss ***!
                \****************************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/getUrl.js */ "./node_modules/css-loader/dist/runtime/getUrl.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__);\n// Imports\n\n\n\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(/* asset import */ __webpack_require__(/*! data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMUlEQVQ4T2NkYGAQYcAP3uCTZhw1gGGYhAGBZIA/nYDCgBDAm9BGDWAAJyRCgLaBCAAgXwixzAS0pgAAAABJRU5ErkJggg== */ "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMUlEQVQ4T2NkYGAQYcAP3uCTZhw1gGGYhAGBZIA/nYDCgBDAm9BGDWAAJyRCgLaBCAAgXwixzAS0pgAAAABJRU5ErkJggg=="), __webpack_require__.b);\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .dialog-mermaid-title {\\n  margin-bottom: 5px;\\n  margin-top: 2px;\\n}\\n.excalidraw .dialog-mermaid-desc {\\n  font-size: 15px;\\n  font-style: italic;\\n  font-weight: 500;\\n}\\n.excalidraw .dialog-mermaid .Modal__content .Island {\\n  box-shadow: none;\\n}\\n.excalidraw:not(.excalidraw--mobile).excalidraw .dialog-mermaid {\\n  padding: 1.25rem;\\n}\\n.excalidraw:not(.excalidraw--mobile).excalidraw .dialog-mermaid .Modal__content {\\n  height: 100%;\\n  max-height: 750px;\\n}\\n@media screen and (max-width: 860px) {\\n  .excalidraw:not(.excalidraw--mobile).excalidraw .dialog-mermaid .Modal__content {\\n    height: auto;\\n    max-height: 100%;\\n  }\\n}\\n.excalidraw:not(.excalidraw--mobile).excalidraw .dialog-mermaid .Modal__content .Island {\\n  height: 100%;\\n  display: flex;\\n  flex-direction: column;\\n  flex: 1 1 auto;\\n}\\n.excalidraw:not(.excalidraw--mobile).excalidraw .dialog-mermaid .Modal__content .Island .Dialog__content {\\n  display: flex;\\n  flex: 1 1 auto;\\n}\\n\\n.excalidraw .dialog-mermaid-body {\\n  width: 100%;\\n  display: grid;\\n  grid-template-columns: 1fr 1fr;\\n  grid-template-rows: 1fr auto;\\n  height: 100%;\\n  column-gap: 4rem;\\n}\\n@media screen and (max-width: 860px) {\\n  .excalidraw .dialog-mermaid-body {\\n    flex-direction: column;\\n    display: flex;\\n    gap: 1rem;\\n  }\\n}\\n.excalidraw .dialog-mermaid-panels {\\n  display: grid;\\n  width: 100%;\\n  grid-template-columns: 1fr 1fr;\\n  justify-content: space-between;\\n  gap: 4rem;\\n  grid-row: 1;\\n  grid-column: 1/3;\\n}\\n@media screen and (max-width: 860px) {\\n  .excalidraw .dialog-mermaid-panels {\\n    flex-direction: column;\\n    display: flex;\\n    gap: 1rem;\\n  }\\n}\\n.excalidraw .dialog-mermaid-panels label {\\n  font-size: 14px;\\n  font-style: normal;\\n  font-weight: 600;\\n  margin-bottom: 4px;\\n  margin-left: 4px;\\n}\\n@media screen and (max-width: 860px) {\\n  .excalidraw .dialog-mermaid-panels label {\\n    margin-top: 4px;\\n  }\\n}\\n.excalidraw .dialog-mermaid-panels-text {\\n  display: flex;\\n  flex-direction: column;\\n}\\n.excalidraw .dialog-mermaid-panels-text textarea {\\n  width: 20rem;\\n  height: 100%;\\n  resize: none;\\n  border-radius: var(--border-radius-lg);\\n  border: 1px solid var(--dialog-border-color);\\n  white-space: pre-wrap;\\n  padding: 0.85rem;\\n  box-sizing: border-box;\\n  width: 100%;\\n  font-family: monospace;\\n}\\n@media screen and (max-width: 860px) {\\n  .excalidraw .dialog-mermaid-panels-text textarea {\\n    width: auto;\\n    height: 10rem;\\n  }\\n}\\n.excalidraw .dialog-mermaid-panels-preview-wrapper {\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  padding: 0.85rem;\\n  box-sizing: border-box;\\n  width: 100%;\\n  height: 200px;\\n  flex-grow: 1;\\n  position: relative;\\n  background: url(" + ___CSS_LOADER_URL_REPLACEMENT_0___ + ") left center;\\n  border-radius: var(--border-radius-lg);\\n  border: 1px solid var(--dialog-border-color);\\n}\\n@media screen and (max-width: 860px) {\\n  .excalidraw .dialog-mermaid-panels-preview-wrapper {\\n    height: 400px;\\n    width: auto;\\n  }\\n}\\n.excalidraw .dialog-mermaid-panels-preview-wrapper canvas {\\n  max-width: 100%;\\n  max-height: 100%;\\n}\\n.excalidraw .dialog-mermaid-panels-preview-canvas-container {\\n  display: flex;\\n  width: 100%;\\n  height: 100%;\\n  align-items: center;\\n  justify-content: center;\\n  flex-grow: 1;\\n}\\n.excalidraw .dialog-mermaid-panels-preview {\\n  display: flex;\\n  flex-direction: column;\\n}\\n.excalidraw .dialog-mermaid-panels .mermaid-error {\\n  color: red;\\n  font-weight: 800;\\n  font-size: 30px;\\n  word-break: break-word;\\n  overflow: auto;\\n  max-height: 100%;\\n  height: 100%;\\n  width: 100%;\\n  text-align: center;\\n  position: absolute;\\n  z-index: 10;\\n}\\n.excalidraw .dialog-mermaid-panels .mermaid-error p {\\n  font-weight: 500;\\n  font-family: Cascadia;\\n  text-align: left;\\n  white-space: pre-wrap;\\n  font-size: 0.875rem;\\n  padding: 0 10px;\\n}\\n.excalidraw .dialog-mermaid-buttons {\\n  grid-column: 2;\\n}\\n.excalidraw .dialog-mermaid-buttons .dialog-mermaid-insert.excalidraw-button {\\n  font-family: \\"Assistant\\";\\n  font-weight: 600;\\n  height: 2.5rem;\\n  margin-top: 1em;\\n  margin-bottom: 0.3em;\\n  width: 7.5rem;\\n  font-size: 12px;\\n  color: #ffffff;\\n  background-color: var(--color-primary);\\n}\\n.excalidraw .dialog-mermaid-buttons .dialog-mermaid-insert.excalidraw-button:hover {\\n  background-color: var(--color-primary-darker);\\n}\\n.excalidraw .dialog-mermaid-buttons .dialog-mermaid-insert.excalidraw-button:active {\\n  background-color: var(--color-primary-darkest);\\n}\\n@media screen and (max-width: 860px) {\\n  .excalidraw .dialog-mermaid-buttons .dialog-mermaid-insert.excalidraw-button {\\n    width: 100%;\\n  }\\n}\\n.excalidraw.theme--dark.excalidraw .dialog-mermaid-buttons .dialog-mermaid-insert.excalidraw-button {\\n  color: var(--color-gray-100);\\n}\\n\\n.excalidraw .dialog-mermaid-buttons .dialog-mermaid-insert span {\\n  padding-left: 0.5rem;\\n  display: flex;\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/MermaidToExcalidraw.scss","webpack://./../../../node_modules/open-color/open-color.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AAGI;EACE,kBAAA;EACA,eAAA;AAAN;AAEI;EACE,eAAA;EACA,kBAAA;EACA,gBAAA;AAAN;AAGI;EACE,gBAAA;AADN;AAIa;EACP,gBAAA;AAFN;AAIM;EACE,YAAA;EACA,iBAAA;AAFR;AAIQ;EAJF;IAKI,YAAA;IAIA,gBAAA;EAJR;AACF;AAMQ;EACE,YAAA;EACA,aAAA;EACA,sBAAA;EACA,cAAA;AAJV;AAMU;EACE,aAAA;EACA,cAAA;AAJZ;;AAWE;EACE,WAAA;EACA,aAAA;EACA,8BAAA;EACA,4BAAA;EACA,YAAA;EACA,gBAAA;AARJ;AAUI;EARF;IASI,sBAAA;IACA,aAAA;IACA,SAAA;EAPJ;AACF;AAUE;EACE,aAAA;EACA,WAAA;EACA,8BAAA;EACA,8BAAA;EACA,SAAA;EAEA,WAAA;EACA,gBAAA;AATJ;AAWI;EAVF;IAWI,sBAAA;IACA,aAAA;IACA,SAAA;EARJ;AACF;AAUI;EACE,eAAA;EACA,kBAAA;EACA,gBAAA;EACA,kBAAA;EACA,gBAAA;AARN;AAUM;EAPF;IAQI,eAAA;EAPN;AACF;AAUI;EACE,aAAA;EACA,sBAAA;AARN;AAUM;EACE,YAAA;EACA,YAAA;EACA,YAAA;EACA,sCAAA;EACA,4CAAA;EACA,qBAAA;EACA,gBAAA;EACA,sBAAA;EACA,WAAA;EACA,sBAAA;AARR;AAUQ;EAZF;IAaI,WAAA;IACA,aAAA;EAPR;AACF;AAWI;EACE,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,gBAAA;EACA,sBAAA;EACA,WAAA;EAEA,aAAA;EACA,YAAA;EACA,kBAAA;EAEA,+DAAA;EAEA,sCAAA;EACA,4CAAA;AAZN;AAcM;EAjBF;IAmBI,aAAA;IACA,WAAA;EAZN;AACF;AAcM;EACE,eAAA;EACA,gBAAA;AAZR;AAgBI;EACE,aAAA;EACA,WAAA;EACA,YAAA;EACA,mBAAA;EACA,uBAAA;EACA,YAAA;AAdN;AAiBI;EACE,aAAA;EACA,sBAAA;AAfN;AAkBI;EACE,UAAA;EACA,gBAAA;EACA,eAAA;EACA,sBAAA;EACA,cAAA;EACA,gBAAA;EACA,YAAA;EACA,WAAA;EACA,kBAAA;EACA,kBAAA;EACA,WAAA;AAhBN;AAkBM;EACE,gBAAA;EACA,qBAAA;EACA,gBAAA;EACA,qBAAA;EACA,mBAAA;EACA,eAAA;AAhBR;AAqBE;EACE,cAAA;AAnBJ;AAsBM;EACE,wBAAA;EACA,gBAAA;EACA,cAAA;EACA,eAAA;EACA,oBAAA;EACA,aAAA;EACA,eAAA;EACA,cCxLW;EDyLX,sCAAA;AApBR;AAsBQ;EACE,6CAAA;AApBV;AAsBQ;EACE,8CAAA;AApBV;AAuBQ;EAlBF;IAmBI,WAAA;EApBR;AACF;AAsBiB;EACP,4BAAA;AApBV;;AAwBM;EACE,oBAAA;EACA,aAAA;AArBR","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../css/variables.module\\";\\n\\n$verticalBreakpoint: 860px;\\n\\n.excalidraw {\\n  .dialog-mermaid {\\n    &-title {\\n      margin-bottom: 5px;\\n      margin-top: 2px;\\n    }\\n    &-desc {\\n      font-size: 15px;\\n      font-style: italic;\\n      font-weight: 500;\\n    }\\n\\n    .Modal__content .Island {\\n      box-shadow: none;\\n    }\\n\\n    @at-root .excalidraw:not(.excalidraw--mobile)#{&} {\\n      padding: 1.25rem;\\n\\n      .Modal__content {\\n        height: 100%;\\n        max-height: 750px;\\n\\n        @media screen and (max-width: $verticalBreakpoint) {\\n          height: auto;\\n          // When vertical, we want the height to span whole viewport.\\n          // This is also important for the children not to overflow the\\n          // modal/viewport (for some reason).\\n          max-height: 100%;\\n        }\\n\\n        .Island {\\n          height: 100%;\\n          display: flex;\\n          flex-direction: column;\\n          flex: 1 1 auto;\\n\\n          .Dialog__content {\\n            display: flex;\\n            flex: 1 1 auto;\\n          }\\n        }\\n      }\\n    }\\n  }\\n\\n  .dialog-mermaid-body {\\n    width: 100%;\\n    display: grid;\\n    grid-template-columns: 1fr 1fr;\\n    grid-template-rows: 1fr auto;\\n    height: 100%;\\n    column-gap: 4rem;\\n\\n    @media screen and (max-width: $verticalBreakpoint) {\\n      flex-direction: column;\\n      display: flex;\\n      gap: 1rem;\\n    }\\n  }\\n\\n  .dialog-mermaid-panels {\\n    display: grid;\\n    width: 100%;\\n    grid-template-columns: 1fr 1fr;\\n    justify-content: space-between;\\n    gap: 4rem;\\n\\n    grid-row: 1;\\n    grid-column: 1 / 3;\\n\\n    @media screen and (max-width: $verticalBreakpoint) {\\n      flex-direction: column;\\n      display: flex;\\n      gap: 1rem;\\n    }\\n\\n    label {\\n      font-size: 14px;\\n      font-style: normal;\\n      font-weight: 600;\\n      margin-bottom: 4px;\\n      margin-left: 4px;\\n\\n      @media screen and (max-width: $verticalBreakpoint) {\\n        margin-top: 4px;\\n      }\\n    }\\n\\n    &-text {\\n      display: flex;\\n      flex-direction: column;\\n\\n      textarea {\\n        width: 20rem;\\n        height: 100%;\\n        resize: none;\\n        border-radius: var(--border-radius-lg);\\n        border: 1px solid var(--dialog-border-color);\\n        white-space: pre-wrap;\\n        padding: 0.85rem;\\n        box-sizing: border-box;\\n        width: 100%;\\n        font-family: monospace;\\n\\n        @media screen and (max-width: $verticalBreakpoint) {\\n          width: auto;\\n          height: 10rem;\\n        }\\n      }\\n    }\\n\\n    &-preview-wrapper {\\n      display: flex;\\n      align-items: center;\\n      justify-content: center;\\n      padding: 0.85rem;\\n      box-sizing: border-box;\\n      width: 100%;\\n      // acts as min-height\\n      height: 200px;\\n      flex-grow: 1;\\n      position: relative;\\n\\n      background: url(\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMUlEQVQ4T2NkYGAQYcAP3uCTZhw1gGGYhAGBZIA/nYDCgBDAm9BGDWAAJyRCgLaBCAAgXwixzAS0pgAAAABJRU5ErkJggg==\\")\\n        left center;\\n      border-radius: var(--border-radius-lg);\\n      border: 1px solid var(--dialog-border-color);\\n\\n      @media screen and (max-width: $verticalBreakpoint) {\\n        // acts as min-height\\n        height: 400px;\\n        width: auto;\\n      }\\n\\n      canvas {\\n        max-width: 100%;\\n        max-height: 100%;\\n      }\\n    }\\n\\n    &-preview-canvas-container {\\n      display: flex;\\n      width: 100%;\\n      height: 100%;\\n      align-items: center;\\n      justify-content: center;\\n      flex-grow: 1;\\n    }\\n\\n    &-preview {\\n      display: flex;\\n      flex-direction: column;\\n    }\\n\\n    .mermaid-error {\\n      color: red;\\n      font-weight: 800;\\n      font-size: 30px;\\n      word-break: break-word;\\n      overflow: auto;\\n      max-height: 100%;\\n      height: 100%;\\n      width: 100%;\\n      text-align: center;\\n      position: absolute;\\n      z-index: 10;\\n\\n      p {\\n        font-weight: 500;\\n        font-family: Cascadia;\\n        text-align: left;\\n        white-space: pre-wrap;\\n        font-size: 0.875rem;\\n        padding: 0 10px;\\n      }\\n    }\\n  }\\n\\n  .dialog-mermaid-buttons {\\n    grid-column: 2;\\n\\n    .dialog-mermaid-insert {\\n      &.excalidraw-button {\\n        font-family: \\"Assistant\\";\\n        font-weight: 600;\\n        height: 2.5rem;\\n        margin-top: 1em;\\n        margin-bottom: 0.3em;\\n        width: 7.5rem;\\n        font-size: 12px;\\n        color: $oc-white;\\n        background-color: var(--color-primary);\\n\\n        &:hover {\\n          background-color: var(--color-primary-darker);\\n        }\\n        &:active {\\n          background-color: var(--color-primary-darkest);\\n        }\\n\\n        @media screen and (max-width: $verticalBreakpoint) {\\n          width: 100%;\\n        }\\n\\n        @at-root .excalidraw.theme--dark#{&} {\\n          color: var(--color-gray-100);\\n        }\\n      }\\n\\n      span {\\n        padding-left: 0.5rem;\\n        display: flex;\\n      }\\n    }\\n  }\\n}\\n","//\\n//\\n//  \u{1D5D6} \u{1D5E2} \u{1D5DF} \u{1D5E2} \u{1D5E5}\\n//  v 1.9.1\\n//\\n//  \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\\n\\n\\n//  General\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-white:         #ffffff;\\n$oc-black:         #000000;\\n\\n\\n//  Gray\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-gray-list: (\\n  \\"0\\": #f8f9fa,\\n  \\"1\\": #f1f3f5,\\n  \\"2\\": #e9ecef,\\n  \\"3\\": #dee2e6,\\n  \\"4\\": #ced4da,\\n  \\"5\\": #adb5bd,\\n  \\"6\\": #868e96,\\n  \\"7\\": #495057,\\n  \\"8\\": #343a40,\\n  \\"9\\": #212529\\n);\\n\\n$oc-gray-0: map-get($oc-gray-list, \\"0\\");\\n$oc-gray-1: map-get($oc-gray-list, \\"1\\");\\n$oc-gray-2: map-get($oc-gray-list, \\"2\\");\\n$oc-gray-3: map-get($oc-gray-list, \\"3\\");\\n$oc-gray-4: map-get($oc-gray-list, \\"4\\");\\n$oc-gray-5: map-get($oc-gray-list, \\"5\\");\\n$oc-gray-6: map-get($oc-gray-list, \\"6\\");\\n$oc-gray-7: map-get($oc-gray-list, \\"7\\");\\n$oc-gray-8: map-get($oc-gray-list, \\"8\\");\\n$oc-gray-9: map-get($oc-gray-list, \\"9\\");\\n\\n\\n//  Red\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-red-list: (\\n  \\"0\\": #fff5f5,\\n  \\"1\\": #ffe3e3,\\n  \\"2\\": #ffc9c9,\\n  \\"3\\": #ffa8a8,\\n  \\"4\\": #ff8787,\\n  \\"5\\": #ff6b6b,\\n  \\"6\\": #fa5252,\\n  \\"7\\": #f03e3e,\\n  \\"8\\": #e03131,\\n  \\"9\\": #c92a2a\\n);\\n\\n$oc-red-0: map-get($oc-red-list, \\"0\\");\\n$oc-red-1: map-get($oc-red-list, \\"1\\");\\n$oc-red-2: map-get($oc-red-list, \\"2\\");\\n$oc-red-3: map-get($oc-red-list, \\"3\\");\\n$oc-red-4: map-get($oc-red-list, \\"4\\");\\n$oc-red-5: map-get($oc-red-list, \\"5\\");\\n$oc-red-6: map-get($oc-red-list, \\"6\\");\\n$oc-red-7: map-get($oc-red-list, \\"7\\");\\n$oc-red-8: map-get($oc-red-list, \\"8\\");\\n$oc-red-9: map-get($oc-red-list, \\"9\\");\\n\\n\\n//  Pink\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-pink-list: (\\n  \\"0\\": #fff0f6,\\n  \\"1\\": #ffdeeb,\\n  \\"2\\": #fcc2d7,\\n  \\"3\\": #faa2c1,\\n  \\"4\\": #f783ac,\\n  \\"5\\": #f06595,\\n  \\"6\\": #e64980,\\n  \\"7\\": #d6336c,\\n  \\"8\\": #c2255c,\\n  \\"9\\": #a61e4d\\n);\\n\\n$oc-pink-0: map-get($oc-pink-list, \\"0\\");\\n$oc-pink-1: map-get($oc-pink-list, \\"1\\");\\n$oc-pink-2: map-get($oc-pink-list, \\"2\\");\\n$oc-pink-3: map-get($oc-pink-list, \\"3\\");\\n$oc-pink-4: map-get($oc-pink-list, \\"4\\");\\n$oc-pink-5: map-get($oc-pink-list, \\"5\\");\\n$oc-pink-6: map-get($oc-pink-list, \\"6\\");\\n$oc-pink-7: map-get($oc-pink-list, \\"7\\");\\n$oc-pink-8: map-get($oc-pink-list, \\"8\\");\\n$oc-pink-9: map-get($oc-pink-list, \\"9\\");\\n\\n\\n//  Grape\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-grape-list: (\\n  \\"0\\": #f8f0fc,\\n  \\"1\\": #f3d9fa,\\n  \\"2\\": #eebefa,\\n  \\"3\\": #e599f7,\\n  \\"4\\": #da77f2,\\n  \\"5\\": #cc5de8,\\n  \\"6\\": #be4bdb,\\n  \\"7\\": #ae3ec9,\\n  \\"8\\": #9c36b5,\\n  \\"9\\": #862e9c\\n);\\n\\n$oc-grape-0: map-get($oc-grape-list, \\"0\\");\\n$oc-grape-1: map-get($oc-grape-list, \\"1\\");\\n$oc-grape-2: map-get($oc-grape-list, \\"2\\");\\n$oc-grape-3: map-get($oc-grape-list, \\"3\\");\\n$oc-grape-4: map-get($oc-grape-list, \\"4\\");\\n$oc-grape-5: map-get($oc-grape-list, \\"5\\");\\n$oc-grape-6: map-get($oc-grape-list, \\"6\\");\\n$oc-grape-7: map-get($oc-grape-list, \\"7\\");\\n$oc-grape-8: map-get($oc-grape-list, \\"8\\");\\n$oc-grape-9: map-get($oc-grape-list, \\"9\\");\\n\\n\\n//  Violet\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-violet-list: (\\n  \\"0\\": #f3f0ff,\\n  \\"1\\": #e5dbff,\\n  \\"2\\": #d0bfff,\\n  \\"3\\": #b197fc,\\n  \\"4\\": #9775fa,\\n  \\"5\\": #845ef7,\\n  \\"6\\": #7950f2,\\n  \\"7\\": #7048e8,\\n  \\"8\\": #6741d9,\\n  \\"9\\": #5f3dc4\\n);\\n\\n$oc-violet-0: map-get($oc-violet-list, \\"0\\");\\n$oc-violet-1: map-get($oc-violet-list, \\"1\\");\\n$oc-violet-2: map-get($oc-violet-list, \\"2\\");\\n$oc-violet-3: map-get($oc-violet-list, \\"3\\");\\n$oc-violet-4: map-get($oc-violet-list, \\"4\\");\\n$oc-violet-5: map-get($oc-violet-list, \\"5\\");\\n$oc-violet-6: map-get($oc-violet-list, \\"6\\");\\n$oc-violet-7: map-get($oc-violet-list, \\"7\\");\\n$oc-violet-8: map-get($oc-violet-list, \\"8\\");\\n$oc-violet-9: map-get($oc-violet-list, \\"9\\");\\n\\n\\n//  Indigo\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-indigo-list: (\\n  \\"0\\": #edf2ff,\\n  \\"1\\": #dbe4ff,\\n  \\"2\\": #bac8ff,\\n  \\"3\\": #91a7ff,\\n  \\"4\\": #748ffc,\\n  \\"5\\": #5c7cfa,\\n  \\"6\\": #4c6ef5,\\n  \\"7\\": #4263eb,\\n  \\"8\\": #3b5bdb,\\n  \\"9\\": #364fc7\\n);\\n\\n$oc-indigo-0: map-get($oc-indigo-list, \\"0\\");\\n$oc-indigo-1: map-get($oc-indigo-list, \\"1\\");\\n$oc-indigo-2: map-get($oc-indigo-list, \\"2\\");\\n$oc-indigo-3: map-get($oc-indigo-list, \\"3\\");\\n$oc-indigo-4: map-get($oc-indigo-list, \\"4\\");\\n$oc-indigo-5: map-get($oc-indigo-list, \\"5\\");\\n$oc-indigo-6: map-get($oc-indigo-list, \\"6\\");\\n$oc-indigo-7: map-get($oc-indigo-list, \\"7\\");\\n$oc-indigo-8: map-get($oc-indigo-list, \\"8\\");\\n$oc-indigo-9: map-get($oc-indigo-list, \\"9\\");\\n\\n\\n//  Blue\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-blue-list: (\\n  \\"0\\": #e7f5ff,\\n  \\"1\\": #d0ebff,\\n  \\"2\\": #a5d8ff,\\n  \\"3\\": #74c0fc,\\n  \\"4\\": #4dabf7,\\n  \\"5\\": #339af0,\\n  \\"6\\": #228be6,\\n  \\"7\\": #1c7ed6,\\n  \\"8\\": #1971c2,\\n  \\"9\\": #1864ab\\n);\\n\\n$oc-blue-0: map-get($oc-blue-list, \\"0\\");\\n$oc-blue-1: map-get($oc-blue-list, \\"1\\");\\n$oc-blue-2: map-get($oc-blue-list, \\"2\\");\\n$oc-blue-3: map-get($oc-blue-list, \\"3\\");\\n$oc-blue-4: map-get($oc-blue-list, \\"4\\");\\n$oc-blue-5: map-get($oc-blue-list, \\"5\\");\\n$oc-blue-6: map-get($oc-blue-list, \\"6\\");\\n$oc-blue-7: map-get($oc-blue-list, \\"7\\");\\n$oc-blue-8: map-get($oc-blue-list, \\"8\\");\\n$oc-blue-9: map-get($oc-blue-list, \\"9\\");\\n\\n\\n//  Cyan\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-cyan-list: (\\n  \\"0\\": #e3fafc,\\n  \\"1\\": #c5f6fa,\\n  \\"2\\": #99e9f2,\\n  \\"3\\": #66d9e8,\\n  \\"4\\": #3bc9db,\\n  \\"5\\": #22b8cf,\\n  \\"6\\": #15aabf,\\n  \\"7\\": #1098ad,\\n  \\"8\\": #0c8599,\\n  \\"9\\": #0b7285\\n);\\n\\n$oc-cyan-0: map-get($oc-cyan-list, \\"0\\");\\n$oc-cyan-1: map-get($oc-cyan-list, \\"1\\");\\n$oc-cyan-2: map-get($oc-cyan-list, \\"2\\");\\n$oc-cyan-3: map-get($oc-cyan-list, \\"3\\");\\n$oc-cyan-4: map-get($oc-cyan-list, \\"4\\");\\n$oc-cyan-5: map-get($oc-cyan-list, \\"5\\");\\n$oc-cyan-6: map-get($oc-cyan-list, \\"6\\");\\n$oc-cyan-7: map-get($oc-cyan-list, \\"7\\");\\n$oc-cyan-8: map-get($oc-cyan-list, \\"8\\");\\n$oc-cyan-9: map-get($oc-cyan-list, \\"9\\");\\n\\n\\n//  Teal\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-teal-list: (\\n  \\"0\\": #e6fcf5,\\n  \\"1\\": #c3fae8,\\n  \\"2\\": #96f2d7,\\n  \\"3\\": #63e6be,\\n  \\"4\\": #38d9a9,\\n  \\"5\\": #20c997,\\n  \\"6\\": #12b886,\\n  \\"7\\": #0ca678,\\n  \\"8\\": #099268,\\n  \\"9\\": #087f5b\\n);\\n\\n$oc-teal-0: map-get($oc-teal-list, \\"0\\");\\n$oc-teal-1: map-get($oc-teal-list, \\"1\\");\\n$oc-teal-2: map-get($oc-teal-list, \\"2\\");\\n$oc-teal-3: map-get($oc-teal-list, \\"3\\");\\n$oc-teal-4: map-get($oc-teal-list, \\"4\\");\\n$oc-teal-5: map-get($oc-teal-list, \\"5\\");\\n$oc-teal-6: map-get($oc-teal-list, \\"6\\");\\n$oc-teal-7: map-get($oc-teal-list, \\"7\\");\\n$oc-teal-8: map-get($oc-teal-list, \\"8\\");\\n$oc-teal-9: map-get($oc-teal-list, \\"9\\");\\n\\n\\n//  Green\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-green-list: (\\n  \\"0\\": #ebfbee,\\n  \\"1\\": #d3f9d8,\\n  \\"2\\": #b2f2bb,\\n  \\"3\\": #8ce99a,\\n  \\"4\\": #69db7c,\\n  \\"5\\": #51cf66,\\n  \\"6\\": #40c057,\\n  \\"7\\": #37b24d,\\n  \\"8\\": #2f9e44,\\n  \\"9\\": #2b8a3e\\n);\\n\\n$oc-green-0: map-get($oc-green-list, \\"0\\");\\n$oc-green-1: map-get($oc-green-list, \\"1\\");\\n$oc-green-2: map-get($oc-green-list, \\"2\\");\\n$oc-green-3: map-get($oc-green-list, \\"3\\");\\n$oc-green-4: map-get($oc-green-list, \\"4\\");\\n$oc-green-5: map-get($oc-green-list, \\"5\\");\\n$oc-green-6: map-get($oc-green-list, \\"6\\");\\n$oc-green-7: map-get($oc-green-list, \\"7\\");\\n$oc-green-8: map-get($oc-green-list, \\"8\\");\\n$oc-green-9: map-get($oc-green-list, \\"9\\");\\n\\n\\n//  Lime\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-lime-list: (\\n  \\"0\\": #f4fce3,\\n  \\"1\\": #e9fac8,\\n  \\"2\\": #d8f5a2,\\n  \\"3\\": #c0eb75,\\n  \\"4\\": #a9e34b,\\n  \\"5\\": #94d82d,\\n  \\"6\\": #82c91e,\\n  \\"7\\": #74b816,\\n  \\"8\\": #66a80f,\\n  \\"9\\": #5c940d\\n);\\n\\n$oc-lime-0: map-get($oc-lime-list, \\"0\\");\\n$oc-lime-1: map-get($oc-lime-list, \\"1\\");\\n$oc-lime-2: map-get($oc-lime-list, \\"2\\");\\n$oc-lime-3: map-get($oc-lime-list, \\"3\\");\\n$oc-lime-4: map-get($oc-lime-list, \\"4\\");\\n$oc-lime-5: map-get($oc-lime-list, \\"5\\");\\n$oc-lime-6: map-get($oc-lime-list, \\"6\\");\\n$oc-lime-7: map-get($oc-lime-list, \\"7\\");\\n$oc-lime-8: map-get($oc-lime-list, \\"8\\");\\n$oc-lime-9: map-get($oc-lime-list, \\"9\\");\\n\\n\\n//  Yellow\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-yellow-list: (\\n  \\"0\\": #fff9db,\\n  \\"1\\": #fff3bf,\\n  \\"2\\": #ffec99,\\n  \\"3\\": #ffe066,\\n  \\"4\\": #ffd43b,\\n  \\"5\\": #fcc419,\\n  \\"6\\": #fab005,\\n  \\"7\\": #f59f00,\\n  \\"8\\": #f08c00,\\n  \\"9\\": #e67700\\n);\\n\\n$oc-yellow-0: map-get($oc-yellow-list, \\"0\\");\\n$oc-yellow-1: map-get($oc-yellow-list, \\"1\\");\\n$oc-yellow-2: map-get($oc-yellow-list, \\"2\\");\\n$oc-yellow-3: map-get($oc-yellow-list, \\"3\\");\\n$oc-yellow-4: map-get($oc-yellow-list, \\"4\\");\\n$oc-yellow-5: map-get($oc-yellow-list, \\"5\\");\\n$oc-yellow-6: map-get($oc-yellow-list, \\"6\\");\\n$oc-yellow-7: map-get($oc-yellow-list, \\"7\\");\\n$oc-yellow-8: map-get($oc-yellow-list, \\"8\\");\\n$oc-yellow-9: map-get($oc-yellow-list, \\"9\\");\\n\\n\\n//  Orange\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-orange-list: (\\n  \\"0\\": #fff4e6,\\n  \\"1\\": #ffe8cc,\\n  \\"2\\": #ffd8a8,\\n  \\"3\\": #ffc078,\\n  \\"4\\": #ffa94d,\\n  \\"5\\": #ff922b,\\n  \\"6\\": #fd7e14,\\n  \\"7\\": #f76707,\\n  \\"8\\": #e8590c,\\n  \\"9\\": #d9480f\\n);\\n\\n$oc-orange-0: map-get($oc-orange-list, \\"0\\");\\n$oc-orange-1: map-get($oc-orange-list, \\"1\\");\\n$oc-orange-2: map-get($oc-orange-list, \\"2\\");\\n$oc-orange-3: map-get($oc-orange-list, \\"3\\");\\n$oc-orange-4: map-get($oc-orange-list, \\"4\\");\\n$oc-orange-5: map-get($oc-orange-list, \\"5\\");\\n$oc-orange-6: map-get($oc-orange-list, \\"6\\");\\n$oc-orange-7: map-get($oc-orange-list, \\"7\\");\\n$oc-orange-8: map-get($oc-orange-list, \\"8\\");\\n$oc-orange-9: map-get($oc-orange-list, \\"9\\");\\n\\n\\n//  Color list\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-color-spectrum:   9;\\n\\n$oc-color-list: (\\n  $oc-gray-list:      \\"gray\\",\\n  $oc-red-list:      \\"red\\",\\n  $oc-pink-list:      \\"pink\\",\\n  $oc-grape-list:      \\"grape\\",\\n  $oc-violet-list:      \\"violet\\",\\n  $oc-indigo-list:      \\"indigo\\",\\n  $oc-blue-list:      \\"blue\\",\\n  $oc-cyan-list:      \\"cyan\\",\\n  $oc-teal-list:      \\"teal\\",\\n  $oc-green-list:      \\"green\\",\\n  $oc-lime-list:      \\"lime\\",\\n  $oc-yellow-list:      \\"yellow\\",\\n  $oc-orange-list:      \\"orange\\"\\n);\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 46776 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/MermaidToExcalidraw.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Modal.scss": (
              /*!**************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Modal.scss ***!
                \**************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw.excalidraw-modal-container {\\n  position: absolute;\\n  z-index: var(--zIndex-modal);\\n}\\n.excalidraw .Modal {\\n  position: absolute;\\n  top: 0;\\n  left: 0;\\n  right: 0;\\n  bottom: 0;\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  overflow: auto;\\n  padding: calc(var(--space-factor) * 10);\\n}\\n.excalidraw .Modal .Island {\\n  padding: 2.5rem !important;\\n}\\n.excalidraw .Modal__background {\\n  position: fixed;\\n  top: 0;\\n  left: 0;\\n  right: 0;\\n  bottom: 0;\\n  z-index: 1;\\n  background-color: rgba(18, 18, 18, 0.2);\\n  animation: Modal__background__fade-in 0.125s linear forwards;\\n}\\n.excalidraw .Modal__content {\\n  position: relative;\\n  z-index: 2;\\n  width: 100%;\\n  max-width: var(--max-width);\\n  max-height: 100%;\\n  opacity: 0;\\n  transform: translateY(10px);\\n  animation: Modal__content_fade-in 0.1s ease-out 0.05s forwards;\\n  position: relative;\\n  overflow-y: auto;\\n  background: var(--island-bg-color);\\n  border: 1px solid var(--dialog-border-color);\\n  box-shadow: var(--modal-shadow);\\n  border-radius: 6px;\\n  box-sizing: border-box;\\n}\\n.excalidraw .Modal__content:focus {\\n  outline: none;\\n}\\n@keyframes Modal__background__fade-in {\\n  from {\\n    opacity: 0;\\n  }\\n  to {\\n    opacity: 1;\\n  }\\n}\\n@keyframes Modal__content_fade-in {\\n  from {\\n    opacity: 0;\\n    transform: scale(0.9);\\n  }\\n  to {\\n    opacity: 1;\\n    transform: scale(1);\\n  }\\n}\\n.excalidraw .Modal__close {\\n  color: var(--icon-fill-color);\\n  margin: 0;\\n  padding: 0.375rem;\\n  position: absolute;\\n  top: 1rem;\\n  right: 1rem;\\n  border: 0;\\n  background-color: transparent;\\n  line-height: 0;\\n  cursor: pointer;\\n}\\n.excalidraw .Modal__close svg {\\n  width: 1.5rem;\\n  height: 1.5rem;\\n}\\n.excalidraw .Dialog--fullscreen .Modal {\\n  padding: 0;\\n}\\n.excalidraw .Dialog--fullscreen .Modal__content {\\n  position: absolute;\\n  top: 0;\\n  left: 0;\\n  right: 0;\\n  bottom: 0;\\n  max-width: 100%;\\n  border: 0;\\n  border-radius: 0;\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/Modal.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AAAE;EACE,kBAAA;EACA,4BAAA;AAGJ;AAAE;EACE,kBAAA;EACA,MAAA;EACA,OAAA;EACA,QAAA;EACA,SAAA;EACA,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,cAAA;EACA,uCAAA;AAEJ;AAAI;EACE,0BAAA;AAEN;AAEE;EACE,eAAA;EACA,MAAA;EACA,OAAA;EACA,QAAA;EACA,SAAA;EACA,UAAA;EACA,uCAAA;EAEA,4DAAA;AADJ;AAIE;EACE,kBAAA;EACA,UAAA;EACA,WAAA;EACA,2BAAA;EACA,gBAAA;EAEA,UAAA;EACA,2BAAA;EACA,8DAAA;EACA,kBAAA;EACA,gBAAA;EAGA,kCAAA;EAEA,4CAAA;EACA,+BAAA;EACA,kBAAA;EACA,sBAAA;AANJ;AAQI;EACE,aAAA;AANN;AAUE;EACE;IACE,UAAA;EARJ;EAUE;IACE,UAAA;EARJ;AACF;AAWE;EACE;IACE,UAAA;IACA,qBAAA;EATJ;EAWE;IACE,UAAA;IACA,mBAAA;EATJ;AACF;AAYE;EACE,6BAAA;EACA,SAAA;EACA,iBAAA;EACA,kBAAA;EACA,SAAA;EACA,WAAA;EACA,SAAA;EACA,6BAAA;EACA,cAAA;EACA,eAAA;AAVJ;AAYI;EACE,aAAA;EACA,cAAA;AAVN;AAeI;EACE,UAAA;AAbN;AAgBI;EACE,kBAAA;EACA,MAAA;EACA,OAAA;EACA,QAAA;EACA,SAAA;EACA,eAAA;EACA,SAAA;EACA,gBAAA;AAdN","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../css/variables.module\\";\\n\\n.excalidraw {\\n  &.excalidraw-modal-container {\\n    position: absolute;\\n    z-index: var(--zIndex-modal);\\n  }\\n\\n  .Modal {\\n    position: absolute;\\n    top: 0;\\n    left: 0;\\n    right: 0;\\n    bottom: 0;\\n    display: flex;\\n    align-items: center;\\n    justify-content: center;\\n    overflow: auto;\\n    padding: calc(var(--space-factor) * 10);\\n\\n    .Island {\\n      padding: 2.5rem !important;\\n    }\\n  }\\n\\n  .Modal__background {\\n    position: fixed;\\n    top: 0;\\n    left: 0;\\n    right: 0;\\n    bottom: 0;\\n    z-index: 1;\\n    background-color: rgba(#121212, 0.2);\\n\\n    animation: Modal__background__fade-in 0.125s linear forwards;\\n  }\\n\\n  .Modal__content {\\n    position: relative;\\n    z-index: 2;\\n    width: 100%;\\n    max-width: var(--max-width);\\n    max-height: 100%;\\n\\n    opacity: 0;\\n    transform: translateY(10px);\\n    animation: Modal__content_fade-in 0.1s ease-out 0.05s forwards;\\n    position: relative;\\n    overflow-y: auto;\\n\\n    // for modals, reset blurry bg\\n    background: var(--island-bg-color);\\n\\n    border: 1px solid var(--dialog-border-color);\\n    box-shadow: var(--modal-shadow);\\n    border-radius: 6px;\\n    box-sizing: border-box;\\n\\n    &:focus {\\n      outline: none;\\n    }\\n  }\\n\\n  @keyframes Modal__background__fade-in {\\n    from {\\n      opacity: 0;\\n    }\\n    to {\\n      opacity: 1;\\n    }\\n  }\\n\\n  @keyframes Modal__content_fade-in {\\n    from {\\n      opacity: 0;\\n      transform: scale(0.9);\\n    }\\n    to {\\n      opacity: 1;\\n      transform: scale(1);\\n    }\\n  }\\n\\n  .Modal__close {\\n    color: var(--icon-fill-color);\\n    margin: 0;\\n    padding: 0.375rem;\\n    position: absolute;\\n    top: 1rem;\\n    right: 1rem;\\n    border: 0;\\n    background-color: transparent;\\n    line-height: 0;\\n    cursor: pointer;\\n\\n    svg {\\n      width: 1.5rem;\\n      height: 1.5rem;\\n    }\\n  }\\n\\n  .Dialog--fullscreen {\\n    .Modal {\\n      padding: 0;\\n    }\\n\\n    .Modal__content {\\n      position: absolute;\\n      top: 0;\\n      left: 0;\\n      right: 0;\\n      bottom: 0;\\n      max-width: 100%;\\n      border: 0;\\n      border-radius: 0;\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 16184 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Modal.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/OverwriteConfirm/OverwriteConfirm.scss": (
              /*!******************************************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/OverwriteConfirm/OverwriteConfirm.scss ***!
                \******************************************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .OverwriteConfirm {\\n  display: flex;\\n  flex-direction: column;\\n  align-items: center;\\n  gap: 0.75rem;\\n  isolation: isolate;\\n}\\n.excalidraw .OverwriteConfirm h3 {\\n  margin: 0;\\n  font-weight: 700;\\n  font-size: 1.3125rem;\\n  line-height: 130%;\\n  align-self: flex-start;\\n  color: var(--text-primary-color);\\n}\\n.excalidraw .OverwriteConfirm__Description {\\n  box-sizing: border-box;\\n  display: flex;\\n  flex-direction: row;\\n  align-items: center;\\n  width: 100%;\\n  gap: 1rem;\\n  padding: 2.5rem;\\n  background: var(--color-danger-background);\\n  border-radius: 0.5rem;\\n  font-family: \\"Assistant\\";\\n  font-style: normal;\\n  font-weight: 400;\\n  font-size: 1rem;\\n  line-height: 150%;\\n  color: var(--color-danger-color);\\n}\\n.excalidraw--mobile.excalidraw .OverwriteConfirm__Description {\\n  flex-direction: column;\\n  text-align: center;\\n}\\n\\n.excalidraw .OverwriteConfirm__Description__spacer {\\n  flex-grow: 1;\\n}\\n.excalidraw .OverwriteConfirm__Description__icon {\\n  box-sizing: border-box;\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  border-radius: 2.5rem;\\n  background: var(--color-danger-icon-background);\\n  width: 3.5rem;\\n  height: 3.5rem;\\n  padding: 0.75rem;\\n}\\n.excalidraw .OverwriteConfirm__Description__icon svg {\\n  color: var(--color-danger-icon-color);\\n  width: 1.5rem;\\n  height: 1.5rem;\\n}\\n.excalidraw .OverwriteConfirm__Description.OverwriteConfirm__Description--color-warning {\\n  background: var(--color-warning-background);\\n  color: var(--color-warning-color);\\n}\\n.excalidraw .OverwriteConfirm__Description.OverwriteConfirm__Description--color-warning .OverwriteConfirm__Description__icon {\\n  background: var(--color-warning-icon-background);\\n  flex: 0 0 auto;\\n}\\n.excalidraw .OverwriteConfirm__Description.OverwriteConfirm__Description--color-warning .OverwriteConfirm__Description__icon svg {\\n  color: var(--color-warning-icon-color);\\n}\\n.excalidraw .OverwriteConfirm__Actions {\\n  display: flex;\\n  flex-direction: row;\\n  align-items: stretch;\\n  justify-items: stretch;\\n  justify-content: center;\\n  gap: 1.5rem;\\n}\\n.excalidraw--mobile.excalidraw .OverwriteConfirm__Actions {\\n  flex-direction: column;\\n}\\n\\n.excalidraw .OverwriteConfirm__Actions__Action {\\n  display: flex;\\n  flex-direction: column;\\n  align-items: center;\\n  padding: 1.5rem;\\n  gap: 0.75rem;\\n  flex-basis: 50%;\\n  flex-grow: 0;\\n}\\n.excalidraw .OverwriteConfirm__Actions__Action__content {\\n  height: 100%;\\n  font-size: 0.875rem;\\n  text-align: center;\\n}\\n.excalidraw .OverwriteConfirm__Actions__Action h4 {\\n  font-weight: 700;\\n  font-size: 1.125rem;\\n  line-height: 130%;\\n  margin: 0;\\n  color: var(--text-primary-color);\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/OverwriteConfirm/OverwriteConfirm.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AAAE;EACE,aAAA;EACA,sBAAA;EACA,mBAAA;EACA,YAAA;EACA,kBAAA;AAGJ;AADI;EACE,SAAA;EAEA,gBAAA;EACA,oBAAA;EACA,iBAAA;EACA,sBAAA;EAEA,gCAAA;AACN;AAEI;EACE,sBAAA;EAEA,aAAA;EACA,mBAAA;EACA,mBAAA;EACA,WAAA;EACA,SAAA;EAOA,eAAA;EAEA,0CAAA;EACA,qBAAA;EAEA,wBAAA;EACA,kBAAA;EACA,gBAAA;EACA,eAAA;EACA,iBAAA;EAEA,gCAAA;AAVN;ADjCW;EC4BH,sBAAA;EACA,kBAAA;AAQR;;AAQM;EACE,YAAA;AALR;AAQM;EACE,sBAAA;EACA,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,qBAAA;EACA,+CAAA;EACA,aAAA;EACA,cAAA;EAEA,gBAAA;AAPR;AASQ;EACE,qCAAA;EACA,aAAA;EACA,cAAA;AAPV;AAWM;EACE,2CAAA;EACA,iCAAA;AATR;AAWQ;EACE,gDAAA;EACA,cAAA;AATV;AAWU;EACE,sCAAA;AATZ;AAeI;EACE,aAAA;EACA,mBAAA;EACA,oBAAA;EACA,sBAAA;EACA,uBAAA;EACA,WAAA;AAbN;AD5EW;EC4FH,sBAAA;AAbR;;AAgBM;EACE,aAAA;EACA,sBAAA;EACA,mBAAA;EACA,eAAA;EACA,YAAA;EACA,eAAA;EACA,YAAA;AAbR;AAeQ;EACE,YAAA;EACA,mBAAA;EACA,kBAAA;AAbV;AAgBQ;EACE,gBAAA;EACA,mBAAA;EACA,iBAAA;EAEA,SAAA;EAEA,gCAAA;AAhBV","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../../css/variables.module\\";\\n\\n.excalidraw {\\n  .OverwriteConfirm {\\n    display: flex;\\n    flex-direction: column;\\n    align-items: center;\\n    gap: 0.75rem;\\n    isolation: isolate;\\n\\n    h3 {\\n      margin: 0;\\n\\n      font-weight: 700;\\n      font-size: 1.3125rem;\\n      line-height: 130%;\\n      align-self: flex-start;\\n\\n      color: var(--text-primary-color);\\n    }\\n\\n    &__Description {\\n      box-sizing: border-box;\\n\\n      display: flex;\\n      flex-direction: row;\\n      align-items: center;\\n      width: 100%;\\n      gap: 1rem;\\n\\n      @include isMobile {\\n        flex-direction: column;\\n        text-align: center;\\n      }\\n\\n      padding: 2.5rem;\\n\\n      background: var(--color-danger-background);\\n      border-radius: 0.5rem;\\n\\n      font-family: \\"Assistant\\";\\n      font-style: normal;\\n      font-weight: 400;\\n      font-size: 1rem;\\n      line-height: 150%;\\n\\n      color: var(--color-danger-color);\\n\\n      &__spacer {\\n        flex-grow: 1;\\n      }\\n\\n      &__icon {\\n        box-sizing: border-box;\\n        display: flex;\\n        align-items: center;\\n        justify-content: center;\\n        border-radius: 2.5rem;\\n        background: var(--color-danger-icon-background);\\n        width: 3.5rem;\\n        height: 3.5rem;\\n\\n        padding: 0.75rem;\\n\\n        svg {\\n          color: var(--color-danger-icon-color);\\n          width: 1.5rem;\\n          height: 1.5rem;\\n        }\\n      }\\n\\n      &.OverwriteConfirm__Description--color-warning {\\n        background: var(--color-warning-background);\\n        color: var(--color-warning-color);\\n\\n        .OverwriteConfirm__Description__icon {\\n          background: var(--color-warning-icon-background);\\n          flex: 0 0 auto;\\n\\n          svg {\\n            color: var(--color-warning-icon-color);\\n          }\\n        }\\n      }\\n    }\\n\\n    &__Actions {\\n      display: flex;\\n      flex-direction: row;\\n      align-items: stretch;\\n      justify-items: stretch;\\n      justify-content: center;\\n      gap: 1.5rem;\\n\\n      @include isMobile {\\n        flex-direction: column;\\n      }\\n\\n      &__Action {\\n        display: flex;\\n        flex-direction: column;\\n        align-items: center;\\n        padding: 1.5rem;\\n        gap: 0.75rem;\\n        flex-basis: 50%;\\n        flex-grow: 0;\\n\\n        &__content {\\n          height: 100%;\\n          font-size: 0.875rem;\\n          text-align: center;\\n        }\\n\\n        h4 {\\n          font-weight: 700;\\n          font-size: 1.125rem;\\n          line-height: 130%;\\n\\n          margin: 0;\\n\\n          color: var(--text-primary-color);\\n        }\\n      }\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 18148 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/OverwriteConfirm/OverwriteConfirm.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/PasteChartDialog.scss": (
              /*!*************************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/PasteChartDialog.scss ***!
                \*************************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw--mobile.excalidraw .PasteChartDialog .Island {\\n  display: flex;\\n  flex-direction: column;\\n}\\n\\n.excalidraw .PasteChartDialog .container {\\n  display: flex;\\n  align-items: center;\\n  justify-content: space-around;\\n  flex-wrap: wrap;\\n}\\n.excalidraw--mobile.excalidraw .PasteChartDialog .container {\\n  flex-direction: column;\\n  justify-content: center;\\n}\\n\\n.excalidraw .PasteChartDialog .ChartPreview {\\n  margin: 8px;\\n  text-align: center;\\n  width: 192px;\\n  height: 128px;\\n  border-radius: 2px;\\n  padding: 1px;\\n  border: 1px solid #ced4da;\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  background: transparent;\\n}\\n.excalidraw .PasteChartDialog .ChartPreview div {\\n  display: inline-block;\\n}\\n.excalidraw .PasteChartDialog .ChartPreview svg {\\n  max-height: 120px;\\n  max-width: 186px;\\n}\\n.excalidraw .PasteChartDialog .ChartPreview:hover {\\n  padding: 0;\\n  border: 2px solid #339af0;\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/PasteChartDialog.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AAEM;EACE,aAAA;EACA,sBAAA;AACR;;AAEI;EACE,aAAA;EACA,mBAAA;EACA,6BAAA;EACA,eAAA;AACN;ADZW;ECaH,sBAAA;EACA,uBAAA;AAER;;AACI;EACE,WAAA;EACA,kBAAA;EACA,YAAA;EACA,aAAA;EACA,kBAAA;EACA,YAAA;EACA,yBAAA;EACA,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,uBAAA;AAEN;AADM;EACE,qBAAA;AAGR;AADM;EACE,iBAAA;EACA,gBAAA;AAGR;AADM;EACE,UAAA;EACA,yBAAA;AAGR","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../css/variables.module\\";\\n\\n.excalidraw {\\n  .PasteChartDialog {\\n    @include isMobile {\\n      .Island {\\n        display: flex;\\n        flex-direction: column;\\n      }\\n    }\\n    .container {\\n      display: flex;\\n      align-items: center;\\n      justify-content: space-around;\\n      flex-wrap: wrap;\\n      @include isMobile {\\n        flex-direction: column;\\n        justify-content: center;\\n      }\\n    }\\n    .ChartPreview {\\n      margin: 8px;\\n      text-align: center;\\n      width: 192px;\\n      height: 128px;\\n      border-radius: 2px;\\n      padding: 1px;\\n      border: 1px solid $oc-gray-4;\\n      display: flex;\\n      align-items: center;\\n      justify-content: center;\\n      background: transparent;\\n      div {\\n        display: inline-block;\\n      }\\n      svg {\\n        max-height: 120px;\\n        max-width: 186px;\\n      }\\n      &:hover {\\n        padding: 0;\\n        border: 2px solid $oc-blue-5;\\n      }\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 11104 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/PasteChartDialog.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Popover.scss": (
              /*!****************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Popover.scss ***!
                \****************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ".excalidraw .popover {\\n  position: absolute;\\n  z-index: 10;\\n  padding: 5px 0 5px;\\n  outline: none;\\n}", "",{"version":3,"sources":["webpack://./../../components/Popover.scss"],"names":[],"mappings":"AACE;EACE,kBAAA;EACA,WAAA;EACA,kBAAA;EACA,aAAA;AAAJ","sourcesContent":[".excalidraw {\\n  .popover {\\n    position: absolute;\\n    z-index: 10;\\n    padding: 5px 0 5px;\\n    outline: none;\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vY29tcG9uZW50cy9Qb3BvdmVyLnNjc3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUM4SDtBQUNqQjtBQUM3Ryw4QkFBOEIsdUdBQTJCLENBQUMsZ0hBQXFDO0FBQy9GO0FBQ0EsZ0VBQWdFLHVCQUF1QixnQkFBZ0IsdUJBQXVCLGtCQUFrQixHQUFHLE9BQU8sZ0dBQWdHLFdBQVcsVUFBVSxXQUFXLFVBQVUsc0NBQXNDLGNBQWMseUJBQXlCLGtCQUFrQix5QkFBeUIsb0JBQW9CLEtBQUssR0FBRyxxQkFBcUI7QUFDN2M7QUFDQSxpRUFBZSx1QkFBdUIsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL1BvcG92ZXIuc2Nzcz82OWVmIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5leGNhbGlkcmF3IC5wb3BvdmVyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHotaW5kZXg6IDEwO1xcbiAgcGFkZGluZzogNXB4IDAgNXB4O1xcbiAgb3V0bGluZTogbm9uZTtcXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vLi4vLi4vY29tcG9uZW50cy9Qb3BvdmVyLnNjc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQ0U7RUFDRSxrQkFBQTtFQUNBLFdBQUE7RUFDQSxrQkFBQTtFQUNBLGFBQUE7QUFBSlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCIuZXhjYWxpZHJhdyB7XFxuICAucG9wb3ZlciB7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgei1pbmRleDogMTA7XFxuICAgIHBhZGRpbmc6IDVweCAwIDVweDtcXG4gICAgb3V0bGluZTogbm9uZTtcXG4gIH1cXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Popover.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ProjectName.scss": (
              /*!********************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ProjectName.scss ***!
                \********************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ".ProjectName {\\n  margin: auto;\\n  display: flex;\\n  align-items: center;\\n}\\n.ProjectName .TextInput {\\n  height: calc(1rem - 3px);\\n  width: 200px;\\n  overflow: hidden;\\n  text-align: center;\\n  margin-left: 8px;\\n  text-overflow: ellipsis;\\n}\\n.ProjectName .TextInput--readonly {\\n  background: none;\\n  border: none;\\n  width: auto;\\n  max-width: 200px;\\n  padding-left: 2px;\\n}\\n.ProjectName .TextInput--readonly:hover {\\n  background: none;\\n}", "",{"version":3,"sources":["webpack://./../../components/ProjectName.scss"],"names":[],"mappings":"AAAA;EACE,YAAA;EACA,aAAA;EACA,mBAAA;AACF;AACE;EACE,wBAAA;EACA,YAAA;EACA,gBAAA;EACA,kBAAA;EACA,gBAAA;EACA,uBAAA;AACJ;AACI;EACE,gBAAA;EACA,YAAA;EAIA,WAAA;EACA,gBAAA;EACA,iBAAA;AAFN;AAHM;EACE,gBAAA;AAKR","sourcesContent":[".ProjectName {\\n  margin: auto;\\n  display: flex;\\n  align-items: center;\\n\\n  .TextInput {\\n    height: calc(1rem - 3px);\\n    width: 200px;\\n    overflow: hidden;\\n    text-align: center;\\n    margin-left: 8px;\\n    text-overflow: ellipsis;\\n\\n    &--readonly {\\n      background: none;\\n      border: none;\\n      &:hover {\\n        background: none;\\n      }\\n      width: auto;\\n      max-width: 200px;\\n      padding-left: 2px;\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vY29tcG9uZW50cy9Qcm9qZWN0TmFtZS5zY3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDOEg7QUFDakI7QUFDN0csOEJBQThCLHVHQUEyQixDQUFDLGdIQUFxQztBQUMvRjtBQUNBLHdEQUF3RCxpQkFBaUIsa0JBQWtCLHdCQUF3QixHQUFHLDJCQUEyQiw2QkFBNkIsaUJBQWlCLHFCQUFxQix1QkFBdUIscUJBQXFCLDRCQUE0QixHQUFHLHFDQUFxQyxxQkFBcUIsaUJBQWlCLGdCQUFnQixxQkFBcUIsc0JBQXNCLEdBQUcsMkNBQTJDLHFCQUFxQixHQUFHLE9BQU8sb0dBQW9HLFVBQVUsVUFBVSxXQUFXLEtBQUssS0FBSyxXQUFXLFVBQVUsV0FBVyxXQUFXLFdBQVcsV0FBVyxLQUFLLEtBQUssV0FBVyxVQUFVLFVBQVUsV0FBVyxXQUFXLEtBQUssS0FBSyxXQUFXLHVDQUF1QyxpQkFBaUIsa0JBQWtCLHdCQUF3QixrQkFBa0IsK0JBQStCLG1CQUFtQix1QkFBdUIseUJBQXlCLHVCQUF1Qiw4QkFBOEIscUJBQXFCLHlCQUF5QixxQkFBcUIsaUJBQWlCLDJCQUEyQixTQUFTLG9CQUFvQix5QkFBeUIsMEJBQTBCLE9BQU8sS0FBSyxHQUFHLHFCQUFxQjtBQUNsd0M7QUFDQSxpRUFBZSx1QkFBdUIsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL1Byb2plY3ROYW1lLnNjc3M/MjE3YiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIuUHJvamVjdE5hbWUge1xcbiAgbWFyZ2luOiBhdXRvO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxufVxcbi5Qcm9qZWN0TmFtZSAuVGV4dElucHV0IHtcXG4gIGhlaWdodDogY2FsYygxcmVtIC0gM3B4KTtcXG4gIHdpZHRoOiAyMDBweDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICBtYXJnaW4tbGVmdDogOHB4O1xcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XFxufVxcbi5Qcm9qZWN0TmFtZSAuVGV4dElucHV0LS1yZWFkb25seSB7XFxuICBiYWNrZ3JvdW5kOiBub25lO1xcbiAgYm9yZGVyOiBub25lO1xcbiAgd2lkdGg6IGF1dG87XFxuICBtYXgtd2lkdGg6IDIwMHB4O1xcbiAgcGFkZGluZy1sZWZ0OiAycHg7XFxufVxcbi5Qcm9qZWN0TmFtZSAuVGV4dElucHV0LS1yZWFkb25seTpob3ZlciB7XFxuICBiYWNrZ3JvdW5kOiBub25lO1xcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi8uLi8uLi9jb21wb25lbnRzL1Byb2plY3ROYW1lLnNjc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQUE7RUFDRSxZQUFBO0VBQ0EsYUFBQTtFQUNBLG1CQUFBO0FBQ0Y7QUFDRTtFQUNFLHdCQUFBO0VBQ0EsWUFBQTtFQUNBLGdCQUFBO0VBQ0Esa0JBQUE7RUFDQSxnQkFBQTtFQUNBLHVCQUFBO0FBQ0o7QUFDSTtFQUNFLGdCQUFBO0VBQ0EsWUFBQTtFQUlBLFdBQUE7RUFDQSxnQkFBQTtFQUNBLGlCQUFBO0FBRk47QUFITTtFQUNFLGdCQUFBO0FBS1JcIixcInNvdXJjZXNDb250ZW50XCI6W1wiLlByb2plY3ROYW1lIHtcXG4gIG1hcmdpbjogYXV0bztcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcblxcbiAgLlRleHRJbnB1dCB7XFxuICAgIGhlaWdodDogY2FsYygxcmVtIC0gM3B4KTtcXG4gICAgd2lkdGg6IDIwMHB4O1xcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICAgIG1hcmdpbi1sZWZ0OiA4cHg7XFxuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xcblxcbiAgICAmLS1yZWFkb25seSB7XFxuICAgICAgYmFja2dyb3VuZDogbm9uZTtcXG4gICAgICBib3JkZXI6IG5vbmU7XFxuICAgICAgJjpob3ZlciB7XFxuICAgICAgICBiYWNrZ3JvdW5kOiBub25lO1xcbiAgICAgIH1cXG4gICAgICB3aWR0aDogYXV0bztcXG4gICAgICBtYXgtd2lkdGg6IDIwMHB4O1xcbiAgICAgIHBhZGRpbmctbGVmdDogMnB4O1xcbiAgICB9XFxuICB9XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ProjectName.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/PublishLibrary.scss": (
              /*!***********************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/PublishLibrary.scss ***!
                \***********************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .publish-library__fields {\\n  display: flex;\\n  flex-direction: column;\\n}\\n.excalidraw .publish-library__fields label {\\n  padding: 1em 0;\\n  display: flex;\\n  justify-content: space-between;\\n  align-items: center;\\n}\\n.excalidraw .publish-library__fields label span {\\n  font-weight: 500;\\n  font-size: 1rem;\\n  color: #868e96;\\n}\\n.excalidraw .publish-library__fields label input,\\n.excalidraw .publish-library__fields label textarea {\\n  width: 70%;\\n  padding: 0.6em;\\n  font-family: var(--ui-font);\\n}\\n.excalidraw .publish-library__fields label .required {\\n  color: #e03131;\\n  margin: 0.2rem;\\n}\\n.excalidraw .publish-library__buttons {\\n  display: flex;\\n  padding: 0.2rem 0;\\n  justify-content: flex-end;\\n  gap: 0.5rem;\\n}\\n.excalidraw .publish-library__buttons .ToolIcon__icon {\\n  min-width: 2.5rem;\\n  width: auto;\\n  font-size: 1rem;\\n}\\n.excalidraw .publish-library__buttons .ToolIcon_type_button {\\n  margin-left: 1rem;\\n  padding: 0 0.5rem;\\n}\\n.excalidraw .publish-library__buttons--confirm.ToolIcon_type_button {\\n  background-color: #228be6;\\n}\\n.excalidraw .publish-library__buttons--confirm.ToolIcon_type_button:hover {\\n  background-color: #1971c2;\\n}\\n.excalidraw .publish-library__buttons--cancel.ToolIcon_type_button {\\n  background-color: #adb5bd;\\n}\\n.excalidraw .publish-library__buttons--cancel.ToolIcon_type_button:hover {\\n  background-color: #868e96;\\n}\\n.excalidraw .publish-library__buttons .ToolIcon__icon {\\n  color: #ffffff;\\n}\\n.excalidraw .publish-library__buttons .ToolIcon__icon .Spinner {\\n  --spinner-color: #fff;\\n}\\n.excalidraw .publish-library__buttons .ToolIcon__icon .Spinner svg {\\n  padding: 0.5rem;\\n}\\n.excalidraw .publish-library .selected-library-items {\\n  display: flex;\\n  flex-wrap: wrap;\\n}\\n.excalidraw .publish-library .selected-library-items .single-library-item-wrapper {\\n  width: 9rem;\\n}\\n.excalidraw .publish-library-warning {\\n  color: #fa5252;\\n}\\n.excalidraw .publish-library-note {\\n  padding: 1em 0;\\n  font-style: italic;\\n  font-size: 14px;\\n  display: block;\\n}\\n.excalidraw .single-library-item {\\n  position: relative;\\n}\\n.excalidraw .single-library-item-status {\\n  position: absolute;\\n  top: 0.3rem;\\n  left: 0.3rem;\\n  font-size: 0.7rem;\\n  color: #f03e3e;\\n  background: rgba(255, 255, 255, 0.9);\\n  padding: 0.1rem 0.2rem;\\n  border-radius: 0.2rem;\\n}\\n.excalidraw .single-library-item__svg {\\n  background-color: #ffffff;\\n  padding: 0.3rem;\\n  width: 7.5rem;\\n  height: 7.5rem;\\n  border: 1px solid var(--button-gray-2);\\n}\\n.excalidraw .single-library-item__svg svg {\\n  width: 100%;\\n  height: 100%;\\n}\\n.excalidraw .single-library-item .ToolIcon__icon {\\n  background-color: #ffffff;\\n  width: auto;\\n  height: auto;\\n  margin: 0 0.5rem;\\n}\\n.excalidraw .single-library-item .ToolIcon,\\n.excalidraw .single-library-item .ToolIcon_type_button:hover {\\n  background-color: white;\\n}\\n.excalidraw .single-library-item .required,\\n.excalidraw .single-library-item .error {\\n  color: #e03131;\\n  font-weight: bold;\\n  font-size: 1rem;\\n  margin: 0.2rem;\\n}\\n.excalidraw .single-library-item .error {\\n  font-weight: 500;\\n  margin: 0;\\n  padding: 0.3em 0;\\n}\\n.excalidraw .single-library-item--remove {\\n  position: absolute;\\n  top: 0.2rem;\\n  right: 1rem;\\n}\\n.excalidraw .single-library-item--remove .ToolIcon__icon {\\n  margin: 0;\\n}\\n.excalidraw .single-library-item--remove .ToolIcon__icon {\\n  background-color: #fa5252;\\n}\\n.excalidraw .single-library-item--remove .ToolIcon__icon:hover {\\n  background-color: #f03e3e;\\n}\\n.excalidraw .single-library-item--remove .ToolIcon__icon:active {\\n  background-color: #e03131;\\n}\\n.excalidraw .single-library-item--remove svg {\\n  color: #ffffff;\\n  padding: 0.26rem;\\n  border-radius: 0.3em;\\n  width: 1rem;\\n  height: 1rem;\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/PublishLibrary.scss","webpack://./../../../node_modules/open-color/open-color.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AACI;EACE,aAAA;EACA,sBAAA;AAEN;AAAM;EACE,cAAA;EACA,aAAA;EACA,8BAAA;EACA,mBAAA;AAER;AADQ;EACE,gBAAA;EACA,eAAA;EACA,cCqBE;ADlBZ;AADQ;;EAEE,UAAA;EACA,cAAA;EACA,2BAAA;AAGV;AAAQ;EACE,cCyCC;EDxCD,cAAA;AAEV;AAGI;EACE,aAAA;EACA,iBAAA;EACA,yBAAA;EACA,WAAA;AADN;AAGM;EACE,iBAAA;EACA,WAAA;EACA,eAAA;AADR;AAIM;EACE,iBAAA;EACA,iBAAA;AAFR;AAKM;EACE,yBC2JI;AD9JZ;AAKQ;EACE,yBC0JE;AD7JZ;AAOM;EACE,yBCtBI;ADiBZ;AAMQ;EACE,yBCvBE;ADmBZ;AAQM;EACE,cCtDW;ADgDnB;AAOQ;EACE,qBAAA;AALV;AAMU;EACE,eAAA;AAJZ;AAUI;EACE,aAAA;EACA,eAAA;AARN;AAUM;EACE,WAAA;AARR;AAYI;EACE,cCpBK;ADUX;AAaI;EACE,cAAA;EACA,kBAAA;EACA,eAAA;EACA,cAAA;AAXN;AAeE;EACE,kBAAA;AAbJ;AAeI;EACE,kBAAA;EACA,WAAA;EACA,YAAA;EACA,iBAAA;EACA,cCtCK;EDuCL,oCAAA;EACA,sBAAA;EACA,qBAAA;AAbN;AAgBI;EACE,yBCpGa;EDqGb,eAAA;EACA,aAAA;EACA,cAAA;EACA,sCAAA;AAdN;AAeM;EACE,WAAA;EACA,YAAA;AAbR;AAiBI;EACE,yBChHa;EDiHb,WAAA;EACA,YAAA;EACA,gBAAA;AAfN;AAiBI;;EAEE,uBAAA;AAfN;AAiBI;;EAEE,cCnEK;EDoEL,iBAAA;EACA,eAAA;EACA,cAAA;AAfN;AAiBI;EACE,gBAAA;EACA,SAAA;EACA,gBAAA;AAfN;AAkBI;EACE,kBAAA;EACA,WAAA;EACA,WAAA;AAhBN;AAkBM;EACE,SAAA;AAhBR;AAkBM;EACE,yBCzFG;ADyEX;AAiBQ;EACE,yBC1FC;AD2EX;AAiBQ;EACE,yBC5FC;AD6EX;AAkBM;EACE,cCxJW;EDyJX,gBAAA;EACA,oBAAA;EACA,WAAA;EACA,YAAA;AAhBR","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../css/variables.module\\";\\n\\n.excalidraw {\\n  .publish-library {\\n    &__fields {\\n      display: flex;\\n      flex-direction: column;\\n\\n      label {\\n        padding: 1em 0;\\n        display: flex;\\n        justify-content: space-between;\\n        align-items: center;\\n        span {\\n          font-weight: 500;\\n          font-size: 1rem;\\n          color: $oc-gray-6;\\n        }\\n        input,\\n        textarea {\\n          width: 70%;\\n          padding: 0.6em;\\n          font-family: var(--ui-font);\\n        }\\n\\n        .required {\\n          color: $oc-red-8;\\n          margin: 0.2rem;\\n        }\\n      }\\n    }\\n\\n    &__buttons {\\n      display: flex;\\n      padding: 0.2rem 0;\\n      justify-content: flex-end;\\n      gap: 0.5rem;\\n\\n      .ToolIcon__icon {\\n        min-width: 2.5rem;\\n        width: auto;\\n        font-size: 1rem;\\n      }\\n\\n      .ToolIcon_type_button {\\n        margin-left: 1rem;\\n        padding: 0 0.5rem;\\n      }\\n\\n      &--confirm.ToolIcon_type_button {\\n        background-color: $oc-blue-6;\\n\\n        &:hover {\\n          background-color: $oc-blue-8;\\n        }\\n      }\\n\\n      &--cancel.ToolIcon_type_button {\\n        background-color: $oc-gray-5;\\n        &:hover {\\n          background-color: $oc-gray-6;\\n        }\\n      }\\n\\n      .ToolIcon__icon {\\n        color: $oc-white;\\n        .Spinner {\\n          --spinner-color: #fff;\\n          svg {\\n            padding: 0.5rem;\\n          }\\n        }\\n      }\\n    }\\n\\n    .selected-library-items {\\n      display: flex;\\n      flex-wrap: wrap;\\n\\n      .single-library-item-wrapper {\\n        width: 9rem;\\n      }\\n    }\\n\\n    &-warning {\\n      color: $oc-red-6;\\n    }\\n\\n    &-note {\\n      padding: 1em 0;\\n      font-style: italic;\\n      font-size: 14px;\\n      display: block;\\n    }\\n  }\\n\\n  .single-library-item {\\n    position: relative;\\n\\n    &-status {\\n      position: absolute;\\n      top: 0.3rem;\\n      left: 0.3rem;\\n      font-size: 0.7rem;\\n      color: $oc-red-7;\\n      background: rgba(255, 255, 255, 0.9);\\n      padding: 0.1rem 0.2rem;\\n      border-radius: 0.2rem;\\n    }\\n\\n    &__svg {\\n      background-color: $oc-white;\\n      padding: 0.3rem;\\n      width: 7.5rem;\\n      height: 7.5rem;\\n      border: 1px solid var(--button-gray-2);\\n      svg {\\n        width: 100%;\\n        height: 100%;\\n      }\\n    }\\n\\n    .ToolIcon__icon {\\n      background-color: $oc-white;\\n      width: auto;\\n      height: auto;\\n      margin: 0 0.5rem;\\n    }\\n    .ToolIcon,\\n    .ToolIcon_type_button:hover {\\n      background-color: white;\\n    }\\n    .required,\\n    .error {\\n      color: $oc-red-8;\\n      font-weight: bold;\\n      font-size: 1rem;\\n      margin: 0.2rem;\\n    }\\n    .error {\\n      font-weight: 500;\\n      margin: 0;\\n      padding: 0.3em 0;\\n    }\\n\\n    &--remove {\\n      position: absolute;\\n      top: 0.2rem;\\n      right: 1rem;\\n\\n      .ToolIcon__icon {\\n        margin: 0;\\n      }\\n      .ToolIcon__icon {\\n        background-color: $oc-red-6;\\n        &:hover {\\n          background-color: $oc-red-7;\\n        }\\n        &:active {\\n          background-color: $oc-red-8;\\n        }\\n      }\\n      svg {\\n        color: $oc-white;\\n        padding: 0.26rem;\\n        border-radius: 0.3em;\\n        width: 1rem;\\n        height: 1rem;\\n      }\\n    }\\n  }\\n}\\n","//\\n//\\n//  \u{1D5D6} \u{1D5E2} \u{1D5DF} \u{1D5E2} \u{1D5E5}\\n//  v 1.9.1\\n//\\n//  \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\\n\\n\\n//  General\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-white:         #ffffff;\\n$oc-black:         #000000;\\n\\n\\n//  Gray\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-gray-list: (\\n  \\"0\\": #f8f9fa,\\n  \\"1\\": #f1f3f5,\\n  \\"2\\": #e9ecef,\\n  \\"3\\": #dee2e6,\\n  \\"4\\": #ced4da,\\n  \\"5\\": #adb5bd,\\n  \\"6\\": #868e96,\\n  \\"7\\": #495057,\\n  \\"8\\": #343a40,\\n  \\"9\\": #212529\\n);\\n\\n$oc-gray-0: map-get($oc-gray-list, \\"0\\");\\n$oc-gray-1: map-get($oc-gray-list, \\"1\\");\\n$oc-gray-2: map-get($oc-gray-list, \\"2\\");\\n$oc-gray-3: map-get($oc-gray-list, \\"3\\");\\n$oc-gray-4: map-get($oc-gray-list, \\"4\\");\\n$oc-gray-5: map-get($oc-gray-list, \\"5\\");\\n$oc-gray-6: map-get($oc-gray-list, \\"6\\");\\n$oc-gray-7: map-get($oc-gray-list, \\"7\\");\\n$oc-gray-8: map-get($oc-gray-list, \\"8\\");\\n$oc-gray-9: map-get($oc-gray-list, \\"9\\");\\n\\n\\n//  Red\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-red-list: (\\n  \\"0\\": #fff5f5,\\n  \\"1\\": #ffe3e3,\\n  \\"2\\": #ffc9c9,\\n  \\"3\\": #ffa8a8,\\n  \\"4\\": #ff8787,\\n  \\"5\\": #ff6b6b,\\n  \\"6\\": #fa5252,\\n  \\"7\\": #f03e3e,\\n  \\"8\\": #e03131,\\n  \\"9\\": #c92a2a\\n);\\n\\n$oc-red-0: map-get($oc-red-list, \\"0\\");\\n$oc-red-1: map-get($oc-red-list, \\"1\\");\\n$oc-red-2: map-get($oc-red-list, \\"2\\");\\n$oc-red-3: map-get($oc-red-list, \\"3\\");\\n$oc-red-4: map-get($oc-red-list, \\"4\\");\\n$oc-red-5: map-get($oc-red-list, \\"5\\");\\n$oc-red-6: map-get($oc-red-list, \\"6\\");\\n$oc-red-7: map-get($oc-red-list, \\"7\\");\\n$oc-red-8: map-get($oc-red-list, \\"8\\");\\n$oc-red-9: map-get($oc-red-list, \\"9\\");\\n\\n\\n//  Pink\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-pink-list: (\\n  \\"0\\": #fff0f6,\\n  \\"1\\": #ffdeeb,\\n  \\"2\\": #fcc2d7,\\n  \\"3\\": #faa2c1,\\n  \\"4\\": #f783ac,\\n  \\"5\\": #f06595,\\n  \\"6\\": #e64980,\\n  \\"7\\": #d6336c,\\n  \\"8\\": #c2255c,\\n  \\"9\\": #a61e4d\\n);\\n\\n$oc-pink-0: map-get($oc-pink-list, \\"0\\");\\n$oc-pink-1: map-get($oc-pink-list, \\"1\\");\\n$oc-pink-2: map-get($oc-pink-list, \\"2\\");\\n$oc-pink-3: map-get($oc-pink-list, \\"3\\");\\n$oc-pink-4: map-get($oc-pink-list, \\"4\\");\\n$oc-pink-5: map-get($oc-pink-list, \\"5\\");\\n$oc-pink-6: map-get($oc-pink-list, \\"6\\");\\n$oc-pink-7: map-get($oc-pink-list, \\"7\\");\\n$oc-pink-8: map-get($oc-pink-list, \\"8\\");\\n$oc-pink-9: map-get($oc-pink-list, \\"9\\");\\n\\n\\n//  Grape\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-grape-list: (\\n  \\"0\\": #f8f0fc,\\n  \\"1\\": #f3d9fa,\\n  \\"2\\": #eebefa,\\n  \\"3\\": #e599f7,\\n  \\"4\\": #da77f2,\\n  \\"5\\": #cc5de8,\\n  \\"6\\": #be4bdb,\\n  \\"7\\": #ae3ec9,\\n  \\"8\\": #9c36b5,\\n  \\"9\\": #862e9c\\n);\\n\\n$oc-grape-0: map-get($oc-grape-list, \\"0\\");\\n$oc-grape-1: map-get($oc-grape-list, \\"1\\");\\n$oc-grape-2: map-get($oc-grape-list, \\"2\\");\\n$oc-grape-3: map-get($oc-grape-list, \\"3\\");\\n$oc-grape-4: map-get($oc-grape-list, \\"4\\");\\n$oc-grape-5: map-get($oc-grape-list, \\"5\\");\\n$oc-grape-6: map-get($oc-grape-list, \\"6\\");\\n$oc-grape-7: map-get($oc-grape-list, \\"7\\");\\n$oc-grape-8: map-get($oc-grape-list, \\"8\\");\\n$oc-grape-9: map-get($oc-grape-list, \\"9\\");\\n\\n\\n//  Violet\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-violet-list: (\\n  \\"0\\": #f3f0ff,\\n  \\"1\\": #e5dbff,\\n  \\"2\\": #d0bfff,\\n  \\"3\\": #b197fc,\\n  \\"4\\": #9775fa,\\n  \\"5\\": #845ef7,\\n  \\"6\\": #7950f2,\\n  \\"7\\": #7048e8,\\n  \\"8\\": #6741d9,\\n  \\"9\\": #5f3dc4\\n);\\n\\n$oc-violet-0: map-get($oc-violet-list, \\"0\\");\\n$oc-violet-1: map-get($oc-violet-list, \\"1\\");\\n$oc-violet-2: map-get($oc-violet-list, \\"2\\");\\n$oc-violet-3: map-get($oc-violet-list, \\"3\\");\\n$oc-violet-4: map-get($oc-violet-list, \\"4\\");\\n$oc-violet-5: map-get($oc-violet-list, \\"5\\");\\n$oc-violet-6: map-get($oc-violet-list, \\"6\\");\\n$oc-violet-7: map-get($oc-violet-list, \\"7\\");\\n$oc-violet-8: map-get($oc-violet-list, \\"8\\");\\n$oc-violet-9: map-get($oc-violet-list, \\"9\\");\\n\\n\\n//  Indigo\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-indigo-list: (\\n  \\"0\\": #edf2ff,\\n  \\"1\\": #dbe4ff,\\n  \\"2\\": #bac8ff,\\n  \\"3\\": #91a7ff,\\n  \\"4\\": #748ffc,\\n  \\"5\\": #5c7cfa,\\n  \\"6\\": #4c6ef5,\\n  \\"7\\": #4263eb,\\n  \\"8\\": #3b5bdb,\\n  \\"9\\": #364fc7\\n);\\n\\n$oc-indigo-0: map-get($oc-indigo-list, \\"0\\");\\n$oc-indigo-1: map-get($oc-indigo-list, \\"1\\");\\n$oc-indigo-2: map-get($oc-indigo-list, \\"2\\");\\n$oc-indigo-3: map-get($oc-indigo-list, \\"3\\");\\n$oc-indigo-4: map-get($oc-indigo-list, \\"4\\");\\n$oc-indigo-5: map-get($oc-indigo-list, \\"5\\");\\n$oc-indigo-6: map-get($oc-indigo-list, \\"6\\");\\n$oc-indigo-7: map-get($oc-indigo-list, \\"7\\");\\n$oc-indigo-8: map-get($oc-indigo-list, \\"8\\");\\n$oc-indigo-9: map-get($oc-indigo-list, \\"9\\");\\n\\n\\n//  Blue\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-blue-list: (\\n  \\"0\\": #e7f5ff,\\n  \\"1\\": #d0ebff,\\n  \\"2\\": #a5d8ff,\\n  \\"3\\": #74c0fc,\\n  \\"4\\": #4dabf7,\\n  \\"5\\": #339af0,\\n  \\"6\\": #228be6,\\n  \\"7\\": #1c7ed6,\\n  \\"8\\": #1971c2,\\n  \\"9\\": #1864ab\\n);\\n\\n$oc-blue-0: map-get($oc-blue-list, \\"0\\");\\n$oc-blue-1: map-get($oc-blue-list, \\"1\\");\\n$oc-blue-2: map-get($oc-blue-list, \\"2\\");\\n$oc-blue-3: map-get($oc-blue-list, \\"3\\");\\n$oc-blue-4: map-get($oc-blue-list, \\"4\\");\\n$oc-blue-5: map-get($oc-blue-list, \\"5\\");\\n$oc-blue-6: map-get($oc-blue-list, \\"6\\");\\n$oc-blue-7: map-get($oc-blue-list, \\"7\\");\\n$oc-blue-8: map-get($oc-blue-list, \\"8\\");\\n$oc-blue-9: map-get($oc-blue-list, \\"9\\");\\n\\n\\n//  Cyan\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-cyan-list: (\\n  \\"0\\": #e3fafc,\\n  \\"1\\": #c5f6fa,\\n  \\"2\\": #99e9f2,\\n  \\"3\\": #66d9e8,\\n  \\"4\\": #3bc9db,\\n  \\"5\\": #22b8cf,\\n  \\"6\\": #15aabf,\\n  \\"7\\": #1098ad,\\n  \\"8\\": #0c8599,\\n  \\"9\\": #0b7285\\n);\\n\\n$oc-cyan-0: map-get($oc-cyan-list, \\"0\\");\\n$oc-cyan-1: map-get($oc-cyan-list, \\"1\\");\\n$oc-cyan-2: map-get($oc-cyan-list, \\"2\\");\\n$oc-cyan-3: map-get($oc-cyan-list, \\"3\\");\\n$oc-cyan-4: map-get($oc-cyan-list, \\"4\\");\\n$oc-cyan-5: map-get($oc-cyan-list, \\"5\\");\\n$oc-cyan-6: map-get($oc-cyan-list, \\"6\\");\\n$oc-cyan-7: map-get($oc-cyan-list, \\"7\\");\\n$oc-cyan-8: map-get($oc-cyan-list, \\"8\\");\\n$oc-cyan-9: map-get($oc-cyan-list, \\"9\\");\\n\\n\\n//  Teal\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-teal-list: (\\n  \\"0\\": #e6fcf5,\\n  \\"1\\": #c3fae8,\\n  \\"2\\": #96f2d7,\\n  \\"3\\": #63e6be,\\n  \\"4\\": #38d9a9,\\n  \\"5\\": #20c997,\\n  \\"6\\": #12b886,\\n  \\"7\\": #0ca678,\\n  \\"8\\": #099268,\\n  \\"9\\": #087f5b\\n);\\n\\n$oc-teal-0: map-get($oc-teal-list, \\"0\\");\\n$oc-teal-1: map-get($oc-teal-list, \\"1\\");\\n$oc-teal-2: map-get($oc-teal-list, \\"2\\");\\n$oc-teal-3: map-get($oc-teal-list, \\"3\\");\\n$oc-teal-4: map-get($oc-teal-list, \\"4\\");\\n$oc-teal-5: map-get($oc-teal-list, \\"5\\");\\n$oc-teal-6: map-get($oc-teal-list, \\"6\\");\\n$oc-teal-7: map-get($oc-teal-list, \\"7\\");\\n$oc-teal-8: map-get($oc-teal-list, \\"8\\");\\n$oc-teal-9: map-get($oc-teal-list, \\"9\\");\\n\\n\\n//  Green\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-green-list: (\\n  \\"0\\": #ebfbee,\\n  \\"1\\": #d3f9d8,\\n  \\"2\\": #b2f2bb,\\n  \\"3\\": #8ce99a,\\n  \\"4\\": #69db7c,\\n  \\"5\\": #51cf66,\\n  \\"6\\": #40c057,\\n  \\"7\\": #37b24d,\\n  \\"8\\": #2f9e44,\\n  \\"9\\": #2b8a3e\\n);\\n\\n$oc-green-0: map-get($oc-green-list, \\"0\\");\\n$oc-green-1: map-get($oc-green-list, \\"1\\");\\n$oc-green-2: map-get($oc-green-list, \\"2\\");\\n$oc-green-3: map-get($oc-green-list, \\"3\\");\\n$oc-green-4: map-get($oc-green-list, \\"4\\");\\n$oc-green-5: map-get($oc-green-list, \\"5\\");\\n$oc-green-6: map-get($oc-green-list, \\"6\\");\\n$oc-green-7: map-get($oc-green-list, \\"7\\");\\n$oc-green-8: map-get($oc-green-list, \\"8\\");\\n$oc-green-9: map-get($oc-green-list, \\"9\\");\\n\\n\\n//  Lime\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-lime-list: (\\n  \\"0\\": #f4fce3,\\n  \\"1\\": #e9fac8,\\n  \\"2\\": #d8f5a2,\\n  \\"3\\": #c0eb75,\\n  \\"4\\": #a9e34b,\\n  \\"5\\": #94d82d,\\n  \\"6\\": #82c91e,\\n  \\"7\\": #74b816,\\n  \\"8\\": #66a80f,\\n  \\"9\\": #5c940d\\n);\\n\\n$oc-lime-0: map-get($oc-lime-list, \\"0\\");\\n$oc-lime-1: map-get($oc-lime-list, \\"1\\");\\n$oc-lime-2: map-get($oc-lime-list, \\"2\\");\\n$oc-lime-3: map-get($oc-lime-list, \\"3\\");\\n$oc-lime-4: map-get($oc-lime-list, \\"4\\");\\n$oc-lime-5: map-get($oc-lime-list, \\"5\\");\\n$oc-lime-6: map-get($oc-lime-list, \\"6\\");\\n$oc-lime-7: map-get($oc-lime-list, \\"7\\");\\n$oc-lime-8: map-get($oc-lime-list, \\"8\\");\\n$oc-lime-9: map-get($oc-lime-list, \\"9\\");\\n\\n\\n//  Yellow\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-yellow-list: (\\n  \\"0\\": #fff9db,\\n  \\"1\\": #fff3bf,\\n  \\"2\\": #ffec99,\\n  \\"3\\": #ffe066,\\n  \\"4\\": #ffd43b,\\n  \\"5\\": #fcc419,\\n  \\"6\\": #fab005,\\n  \\"7\\": #f59f00,\\n  \\"8\\": #f08c00,\\n  \\"9\\": #e67700\\n);\\n\\n$oc-yellow-0: map-get($oc-yellow-list, \\"0\\");\\n$oc-yellow-1: map-get($oc-yellow-list, \\"1\\");\\n$oc-yellow-2: map-get($oc-yellow-list, \\"2\\");\\n$oc-yellow-3: map-get($oc-yellow-list, \\"3\\");\\n$oc-yellow-4: map-get($oc-yellow-list, \\"4\\");\\n$oc-yellow-5: map-get($oc-yellow-list, \\"5\\");\\n$oc-yellow-6: map-get($oc-yellow-list, \\"6\\");\\n$oc-yellow-7: map-get($oc-yellow-list, \\"7\\");\\n$oc-yellow-8: map-get($oc-yellow-list, \\"8\\");\\n$oc-yellow-9: map-get($oc-yellow-list, \\"9\\");\\n\\n\\n//  Orange\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-orange-list: (\\n  \\"0\\": #fff4e6,\\n  \\"1\\": #ffe8cc,\\n  \\"2\\": #ffd8a8,\\n  \\"3\\": #ffc078,\\n  \\"4\\": #ffa94d,\\n  \\"5\\": #ff922b,\\n  \\"6\\": #fd7e14,\\n  \\"7\\": #f76707,\\n  \\"8\\": #e8590c,\\n  \\"9\\": #d9480f\\n);\\n\\n$oc-orange-0: map-get($oc-orange-list, \\"0\\");\\n$oc-orange-1: map-get($oc-orange-list, \\"1\\");\\n$oc-orange-2: map-get($oc-orange-list, \\"2\\");\\n$oc-orange-3: map-get($oc-orange-list, \\"3\\");\\n$oc-orange-4: map-get($oc-orange-list, \\"4\\");\\n$oc-orange-5: map-get($oc-orange-list, \\"5\\");\\n$oc-orange-6: map-get($oc-orange-list, \\"6\\");\\n$oc-orange-7: map-get($oc-orange-list, \\"7\\");\\n$oc-orange-8: map-get($oc-orange-list, \\"8\\");\\n$oc-orange-9: map-get($oc-orange-list, \\"9\\");\\n\\n\\n//  Color list\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-color-spectrum:   9;\\n\\n$oc-color-list: (\\n  $oc-gray-list:      \\"gray\\",\\n  $oc-red-list:      \\"red\\",\\n  $oc-pink-list:      \\"pink\\",\\n  $oc-grape-list:      \\"grape\\",\\n  $oc-violet-list:      \\"violet\\",\\n  $oc-indigo-list:      \\"indigo\\",\\n  $oc-blue-list:      \\"blue\\",\\n  $oc-cyan-list:      \\"cyan\\",\\n  $oc-teal-list:      \\"teal\\",\\n  $oc-green-list:      \\"green\\",\\n  $oc-lime-list:      \\"lime\\",\\n  $oc-yellow-list:      \\"yellow\\",\\n  $oc-orange-list:      \\"orange\\"\\n);\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 40572 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/PublishLibrary.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/RadioGroup.scss": (
              /*!*******************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/RadioGroup.scss ***!
                \*******************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw {\\n  --RadioGroup-background: var(--island-bg-color);\\n  --RadioGroup-border: var(--color-surface-high);\\n  --RadioGroup-choice-color-off: var(--color-primary);\\n  --RadioGroup-choice-color-off-hover: var(--color-brand-hover);\\n  --RadioGroup-choice-background-off: var(--island-bg-color);\\n  --RadioGroup-choice-background-off-active: var(--color-surface-high);\\n  --RadioGroup-choice-color-on: var(--color-surface-lowest);\\n  --RadioGroup-choice-background-on: var(--color-primary);\\n  --RadioGroup-choice-background-on-hover: var(--color-brand-hover);\\n  --RadioGroup-choice-background-on-active: var(--color-brand-active);\\n}\\n.excalidraw .RadioGroup {\\n  box-sizing: border-box;\\n  display: flex;\\n  flex-direction: row;\\n  align-items: flex-start;\\n  padding: 3px;\\n  border-radius: 10px;\\n  background: var(--RadioGroup-background);\\n  border: 1px solid var(--RadioGroup-border);\\n}\\n.excalidraw .RadioGroup__choice {\\n  position: relative;\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  width: 32px;\\n  height: 24px;\\n  color: var(--RadioGroup-choice-color-off);\\n  background: var(--RadioGroup-choice-background-off);\\n  border-radius: 8px;\\n  font-family: \\"Assistant\\";\\n  font-style: normal;\\n  font-weight: 600;\\n  font-size: 0.75rem;\\n  line-height: 100%;\\n  user-select: none;\\n  letter-spacing: 0.4px;\\n  transition: all 75ms ease-out;\\n}\\n.excalidraw .RadioGroup__choice:hover {\\n  color: var(--RadioGroup-choice-color-off-hover);\\n}\\n.excalidraw .RadioGroup__choice:active {\\n  background: var(--RadioGroup-choice-background-off-active);\\n}\\n.excalidraw .RadioGroup__choice.active {\\n  color: var(--RadioGroup-choice-color-on);\\n  background: var(--RadioGroup-choice-background-on);\\n}\\n.excalidraw .RadioGroup__choice.active:hover {\\n  background: var(--RadioGroup-choice-background-on-hover);\\n}\\n.excalidraw .RadioGroup__choice.active:active {\\n  background: var(--RadioGroup-choice-background-on-active);\\n}\\n.excalidraw .RadioGroup__choice input {\\n  z-index: 1;\\n  position: absolute;\\n  width: 100%;\\n  height: 100%;\\n  margin: 0;\\n  padding: 0;\\n  border-radius: 8px;\\n  appearance: none;\\n  cursor: pointer;\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/RadioGroup.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AADA;EACE,+CAAA;EACA,8CAAA;EAEA,mDAAA;EACA,6DAAA;EACA,0DAAA;EACA,oEAAA;EAEA,yDAAA;EACA,uDAAA;EACA,iEAAA;EACA,mEAAA;AAEF;AAAE;EACE,sBAAA;EACA,aAAA;EACA,mBAAA;EACA,uBAAA;EAEA,YAAA;EACA,mBAAA;EAEA,wCAAA;EACA,0CAAA;AAAJ;AAEI;EACE,kBAAA;EACA,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,WAAA;EACA,YAAA;EAEA,yCAAA;EACA,mDAAA;EAEA,kBAAA;EAEA,wBAAA;EACA,kBAAA;EACA,gBAAA;EACA,kBAAA;EACA,iBAAA;EACA,iBAAA;EACA,qBAAA;EAEA,6BAAA;AAJN;AAMM;EACE,+CAAA;AAJR;AAOM;EACE,0DAAA;AALR;AAQM;EACE,wCAAA;EACA,kDAAA;AANR;AAQQ;EACE,wDAAA;AANV;AASQ;EACE,yDAAA;AAPV;AAWM;EACE,UAAA;EACA,kBAAA;EACA,WAAA;EACA,YAAA;EACA,SAAA;EACA,UAAA;EAEA,kBAAA;EAIA,gBAAA;EAEA,eAAA;AAZR","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../css/variables.module\\";\\n\\n.excalidraw {\\n  --RadioGroup-background: var(--island-bg-color);\\n  --RadioGroup-border: var(--color-surface-high);\\n\\n  --RadioGroup-choice-color-off: var(--color-primary);\\n  --RadioGroup-choice-color-off-hover: var(--color-brand-hover);\\n  --RadioGroup-choice-background-off: var(--island-bg-color);\\n  --RadioGroup-choice-background-off-active: var(--color-surface-high);\\n\\n  --RadioGroup-choice-color-on: var(--color-surface-lowest);\\n  --RadioGroup-choice-background-on: var(--color-primary);\\n  --RadioGroup-choice-background-on-hover: var(--color-brand-hover);\\n  --RadioGroup-choice-background-on-active: var(--color-brand-active);\\n\\n  .RadioGroup {\\n    box-sizing: border-box;\\n    display: flex;\\n    flex-direction: row;\\n    align-items: flex-start;\\n\\n    padding: 3px;\\n    border-radius: 10px;\\n\\n    background: var(--RadioGroup-background);\\n    border: 1px solid var(--RadioGroup-border);\\n\\n    &__choice {\\n      position: relative;\\n      display: flex;\\n      align-items: center;\\n      justify-content: center;\\n      width: 32px;\\n      height: 24px;\\n\\n      color: var(--RadioGroup-choice-color-off);\\n      background: var(--RadioGroup-choice-background-off);\\n\\n      border-radius: 8px;\\n\\n      font-family: \\"Assistant\\";\\n      font-style: normal;\\n      font-weight: 600;\\n      font-size: 0.75rem;\\n      line-height: 100%;\\n      user-select: none;\\n      letter-spacing: 0.4px;\\n\\n      transition: all 75ms ease-out;\\n\\n      &:hover {\\n        color: var(--RadioGroup-choice-color-off-hover);\\n      }\\n\\n      &:active {\\n        background: var(--RadioGroup-choice-background-off-active);\\n      }\\n\\n      &.active {\\n        color: var(--RadioGroup-choice-color-on);\\n        background: var(--RadioGroup-choice-background-on);\\n\\n        &:hover {\\n          background: var(--RadioGroup-choice-background-on-hover);\\n        }\\n\\n        &:active {\\n          background: var(--RadioGroup-choice-background-on-active);\\n        }\\n      }\\n\\n      & input {\\n        z-index: 1;\\n        position: absolute;\\n        width: 100%;\\n        height: 100%;\\n        margin: 0;\\n        padding: 0;\\n\\n        border-radius: 8px;\\n\\n        -webkit-appearance: none;\\n        -moz-appearance: none;\\n        appearance: none;\\n\\n        cursor: pointer;\\n      }\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 15804 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/RadioGroup.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Sidebar/Sidebar.scss": (
              /*!************************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Sidebar/Sidebar.scss ***!
                \************************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .sidebar {\\n  display: flex;\\n  flex-direction: column;\\n  position: absolute;\\n  top: 0;\\n  bottom: 0;\\n  right: 0;\\n  z-index: 5;\\n  margin: 0;\\n  padding: 0;\\n  box-sizing: border-box;\\n  background-color: var(--sidebar-bg-color);\\n  box-shadow: var(--sidebar-shadow);\\n  pointer-events: var(--ui-pointerEvents);\\n  overflow: hidden;\\n  border-radius: 0;\\n  width: calc(302px - var(--space-factor) * 2);\\n  border-left: 1px solid var(--sidebar-border-color);\\n}\\n:root[dir=rtl] .excalidraw .sidebar {\\n  left: 0;\\n  right: auto;\\n}\\n.excalidraw .sidebar--docked {\\n  box-shadow: none;\\n}\\n:root[dir=rtl] .excalidraw .sidebar {\\n  border-right: 1px solid var(--sidebar-border-color);\\n  border-left: 0;\\n}\\n.excalidraw .sidebar__header {\\n  box-sizing: border-box;\\n  display: flex;\\n  justify-content: space-between;\\n  align-items: center;\\n  width: 100%;\\n  padding: 1rem 0.75rem;\\n  position: relative;\\n}\\n.excalidraw .sidebar__header::after {\\n  content: \\"\\";\\n  width: calc(100% - 1.5rem);\\n  height: 1px;\\n  background: var(--sidebar-border-color);\\n  position: absolute;\\n  bottom: -1px;\\n}\\n.excalidraw .sidebar__header__buttons {\\n  gap: 0;\\n  display: flex;\\n  align-items: center;\\n  margin-left: auto;\\n}\\n.excalidraw .sidebar__header__buttons button {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n  --button-bg: transparent;\\n  border: 0 !important;\\n  width: var(--lg-button-size);\\n  height: var(--lg-button-size);\\n  padding: 0;\\n}\\n.excalidraw .sidebar__header__buttons button svg {\\n  width: var(--button-width, var(--lg-icon-size));\\n  height: var(--button-height, var(--lg-icon-size));\\n}\\n.excalidraw .sidebar__header__buttons button:hover {\\n  background-color: var(--button-hover-bg, var(--island-bg-color));\\n  border-color: var(--button-hover-border, var(--button-border, var(--default-border-color)));\\n  color: var(--button-hover-color, var(--button-color, var(--text-primary-color, inherit)));\\n}\\n.excalidraw .sidebar__header__buttons button:active {\\n  background-color: var(--button-active-bg, var(--island-bg-color));\\n  border-color: var(--button-active-border, var(--color-primary-darkest));\\n}\\n.excalidraw .sidebar__header__buttons button.active {\\n  background-color: var(--button-selected-bg, var(--color-surface-primary-container));\\n  border-color: var(--button-selected-border, var(--color-surface-primary-container));\\n}\\n.excalidraw .sidebar__header__buttons button.active:hover {\\n  background-color: var(--button-selected-hover-bg, var(--color-surface-primary-container));\\n}\\n.excalidraw .sidebar__header__buttons button.active svg {\\n  color: var(--button-color, var(--color-on-primary-container));\\n}\\n.excalidraw .sidebar__header__buttons button svg {\\n  width: var(--lg-icon-size);\\n  height: var(--lg-icon-size);\\n}\\n.excalidraw .sidebar__header__buttons button:hover {\\n  background: var(--button-hover-bg, var(--island-bg-color));\\n}\\n.excalidraw .sidebar__header__buttons .sidebar__dock.selected svg {\\n  stroke: var(--color-primary);\\n  fill: var(--color-primary);\\n}\\n.excalidraw .sidebar-tabs-root {\\n  display: flex;\\n  flex-direction: column;\\n  flex: 1 1 auto;\\n  padding: 1rem 0;\\n}\\n.excalidraw .sidebar-tabs-root [role=tabpanel] {\\n  flex: 1;\\n  outline: none;\\n  flex: 1 1 auto;\\n  display: flex;\\n  flex-direction: column;\\n  outline: none;\\n}\\n.excalidraw .sidebar-tabs-root [role=tabpanel][data-state=inactive] {\\n  display: none !important;\\n}\\n.excalidraw .sidebar-tabs-root [role=tablist] {\\n  display: grid;\\n  gap: 1rem;\\n  grid-template-columns: repeat(auto-fit, minmax(0, 1fr));\\n}\\n.excalidraw .sidebar-tabs-root > .sidebar__header {\\n  padding-top: 0;\\n  padding-bottom: 1rem;\\n}\\n.excalidraw .sidebar-tab-trigger {\\n  --button-width: auto;\\n  --button-bg: transparent;\\n  --button-hover-bg: transparent;\\n  --button-active-bg: var(--color-primary);\\n  --button-hover-color: var(--color-primary);\\n  --button-hover-border: var(--color-primary);\\n}\\n.excalidraw .sidebar-tab-trigger[data-state=active] {\\n  --button-bg: var(--color-primary);\\n  --button-hover-bg: var(--color-primary-darker);\\n  --button-hover-color: var(--color-icon-white);\\n  --button-border: var(--color-primary);\\n  color: var(--color-icon-white);\\n}\\n.excalidraw .default-sidebar {\\n  display: flex;\\n  flex-direction: column;\\n}\\n.excalidraw .default-sidebar .sidebar-triggers {\\n  display: flex;\\n  gap: 0;\\n  padding: 2px;\\n  margin-top: -3px;\\n  margin-bottom: -3px;\\n  border: 1px solid var(--sidebar-border-color);\\n  background: var(--default-bg-color);\\n  border-radius: 0.625rem;\\n}\\n.excalidraw .default-sidebar .sidebar-triggers .sidebar-tab-trigger {\\n  height: var(--lg-button-size);\\n  width: var(--lg-button-size);\\n  border: none;\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/Sidebar/Sidebar.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AACE;EACE,aAAA;EACA,sBAAA;EACA,kBAAA;EACA,MAAA;EACA,SAAA;EACA,QAAA;EACA,UAAA;EACA,SAAA;EACA,UAAA;EACA,sBAAA;EAEA,yCAAA;EACA,iCAAA;EAEA,uCAAA;EAWA,gBAAA;EACA,gBAAA;EACA,4CAAA;EAEA,kDAAA;AAXJ;AAFI;EACE,OAAA;EACA,WAAA;AAIN;AADI;EACE,gBAAA;AAGN;AAMI;EACE,mDAAA;EACA,cAAA;AAJN;AAUE;EACE,sBAAA;EACA,aAAA;EACA,8BAAA;EACA,mBAAA;EACA,WAAA;EACA,qBAAA;EACA,kBAAA;AARJ;AAUI;EACE,WAAA;EACA,0BAAA;EACA,WAAA;EACA,uCAAA;EACA,kBAAA;EACA,YAAA;AARN;AAYE;EACE,MAAA;EACA,aAAA;EACA,mBAAA;EACA,iBAAA;AAVJ;AAYI;EDbF,aAAA;EACA,uBAAA;EACA,mBAAA;EACA,iBAAA;EACA,sDAAA;EACA,wDAAA;EACA,sBAAA;EACA,iBAAA;EACA,mBAAA;EACA,+DAAA;EACA,sCAAA;EACA,eAAA;EACA,0DAAA;EACA,mDAAA;ECEI,wBAAA;EACA,oBAAA;EAEA,4BAAA;EACA,6BAAA;EACA,UAAA;AAEN;ADPE;EACE,+CAAA;EACA,iDAAA;ACSJ;ADNE;EACE,gEAAA;EACA,2FAAA;EAIA,yFAAA;ACKJ;ADCE;EACE,iEAAA;EACA,uEAAA;ACCJ;ADEE;EACE,mFAAA;EAIA,mFAAA;ACHJ;ADQI;EACE,yFAAA;ACNN;ADYI;EACE,6DAAA;ACVN;AAvBM;EACE,0BAAA;EACA,2BAAA;AAyBR;AAtBM;EACE,0DAAA;AAwBR;AAnBM;EACE,4BAAA;EACA,0BAAA;AAqBR;AAdE;EACE,aAAA;EACA,sBAAA;EACA,cAAA;EACA,eAAA;AAgBJ;AAdI;EACE,OAAA;EACA,aAAA;EAEA,cAAA;EACA,aAAA;EACA,sBAAA;EACA,aAAA;AAeN;AAZI;EACE,wBAAA;AAcN;AAXI;EACE,aAAA;EACA,SAAA;EACA,uDAAA;AAaN;AATE;EACE,cAAA;EACA,oBAAA;AAWJ;AARE;EACE,oBAAA;EACA,wBAAA;EACA,8BAAA;EACA,wCAAA;EACA,0CAAA;EACA,2CAAA;AAUJ;AARI;EACE,iCAAA;EACA,8CAAA;EACA,6CAAA;EACA,qCAAA;EACA,8BAAA;AAUN;AAJE;EACE,aAAA;EACA,sBAAA;AAMJ;AAJI;EAGE,aAAA;EACA,MAAA;EACA,YAJU;EAOV,gBAAA;EACA,mBAAA;EACA,6CAAA;EACA,mCAAA;EACA,uBAAA;AAEN;AAAM;EACE,6BAAA;EACA,4BAAA;EAEA,YAAA;AACR","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"open-color/open-color\\";\\n@import \\"../../css/variables.module\\";\\n\\n.excalidraw {\\n  .sidebar {\\n    display: flex;\\n    flex-direction: column;\\n    position: absolute;\\n    top: 0;\\n    bottom: 0;\\n    right: 0;\\n    z-index: 5;\\n    margin: 0;\\n    padding: 0;\\n    box-sizing: border-box;\\n\\n    background-color: var(--sidebar-bg-color);\\n    box-shadow: var(--sidebar-shadow);\\n\\n    pointer-events: var(--ui-pointerEvents);\\n\\n    :root[dir=\\"rtl\\"] & {\\n      left: 0;\\n      right: auto;\\n    }\\n\\n    &--docked {\\n      box-shadow: none;\\n    }\\n\\n    overflow: hidden;\\n    border-radius: 0;\\n    width: calc(#{$right-sidebar-width} - var(--space-factor) * 2);\\n\\n    border-left: 1px solid var(--sidebar-border-color);\\n\\n    :root[dir=\\"rtl\\"] & {\\n      border-right: 1px solid var(--sidebar-border-color);\\n      border-left: 0;\\n    }\\n  }\\n\\n  // ---------------------------- sidebar header ------------------------------\\n\\n  .sidebar__header {\\n    box-sizing: border-box;\\n    display: flex;\\n    justify-content: space-between;\\n    align-items: center;\\n    width: 100%;\\n    padding: 1rem 0.75rem;\\n    position: relative;\\n\\n    &::after {\\n      content: \\"\\";\\n      width: calc(100% - 1.5rem);\\n      height: 1px;\\n      background: var(--sidebar-border-color);\\n      position: absolute;\\n      bottom: -1px;\\n    }\\n  }\\n\\n  .sidebar__header__buttons {\\n    gap: 0;\\n    display: flex;\\n    align-items: center;\\n    margin-left: auto;\\n\\n    button {\\n      @include outlineButtonStyles;\\n      --button-bg: transparent;\\n      border: 0 !important;\\n\\n      width: var(--lg-button-size);\\n      height: var(--lg-button-size);\\n      padding: 0;\\n\\n      svg {\\n        width: var(--lg-icon-size);\\n        height: var(--lg-icon-size);\\n      }\\n\\n      &:hover {\\n        background: var(--button-hover-bg, var(--island-bg-color));\\n      }\\n    }\\n\\n    .sidebar__dock.selected {\\n      svg {\\n        stroke: var(--color-primary);\\n        fill: var(--color-primary);\\n      }\\n    }\\n  }\\n\\n  // ---------------------------- sidebar tabs ------------------------------\\n\\n  .sidebar-tabs-root {\\n    display: flex;\\n    flex-direction: column;\\n    flex: 1 1 auto;\\n    padding: 1rem 0;\\n\\n    [role=\\"tabpanel\\"] {\\n      flex: 1;\\n      outline: none;\\n\\n      flex: 1 1 auto;\\n      display: flex;\\n      flex-direction: column;\\n      outline: none;\\n    }\\n\\n    [role=\\"tabpanel\\"][data-state=\\"inactive\\"] {\\n      display: none !important;\\n    }\\n\\n    [role=\\"tablist\\"] {\\n      display: grid;\\n      gap: 1rem;\\n      grid-template-columns: repeat(auto-fit, minmax(0, 1fr));\\n    }\\n  }\\n\\n  .sidebar-tabs-root > .sidebar__header {\\n    padding-top: 0;\\n    padding-bottom: 1rem;\\n  }\\n\\n  .sidebar-tab-trigger {\\n    --button-width: auto;\\n    --button-bg: transparent;\\n    --button-hover-bg: transparent;\\n    --button-active-bg: var(--color-primary);\\n    --button-hover-color: var(--color-primary);\\n    --button-hover-border: var(--color-primary);\\n\\n    &[data-state=\\"active\\"] {\\n      --button-bg: var(--color-primary);\\n      --button-hover-bg: var(--color-primary-darker);\\n      --button-hover-color: var(--color-icon-white);\\n      --button-border: var(--color-primary);\\n      color: var(--color-icon-white);\\n    }\\n  }\\n\\n  // ---------------------------- default sidebar ------------------------------\\n\\n  .default-sidebar {\\n    display: flex;\\n    flex-direction: column;\\n\\n    .sidebar-triggers {\\n      $padding: 2px;\\n      $border: 1px;\\n      display: flex;\\n      gap: 0;\\n      padding: $padding;\\n      // offset by padding + border to vertically center the list with sibling\\n      // buttons (both from top and bototm, due to flex layout)\\n      margin-top: -#{$padding + $border};\\n      margin-bottom: -#{$padding + $border};\\n      border: $border solid var(--sidebar-border-color);\\n      background: var(--default-bg-color);\\n      border-radius: 0.625rem;\\n\\n      .sidebar-tab-trigger {\\n        height: var(--lg-button-size);\\n        width: var(--lg-button-size);\\n\\n        border: none;\\n      }\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 25800 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Sidebar/Sidebar.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Sidebar/SidebarTrigger.scss": (
              /*!*******************************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Sidebar/SidebarTrigger.scss ***!
                \*******************************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .sidebar-trigger {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n  width: auto;\\n  height: var(--lg-button-size);\\n  display: flex;\\n  align-items: center;\\n  gap: 0.5rem;\\n  line-height: 0;\\n  font-size: 0.75rem;\\n  letter-spacing: 0.4px;\\n}\\n.excalidraw .sidebar-trigger svg {\\n  width: var(--button-width, var(--lg-icon-size));\\n  height: var(--button-height, var(--lg-icon-size));\\n}\\n.excalidraw .sidebar-trigger:hover {\\n  background-color: var(--button-hover-bg, var(--island-bg-color));\\n  border-color: var(--button-hover-border, var(--button-border, var(--default-border-color)));\\n  color: var(--button-hover-color, var(--button-color, var(--text-primary-color, inherit)));\\n}\\n.excalidraw .sidebar-trigger:active {\\n  background-color: var(--button-active-bg, var(--island-bg-color));\\n  border-color: var(--button-active-border, var(--color-primary-darkest));\\n}\\n.excalidraw .sidebar-trigger.active {\\n  background-color: var(--button-selected-bg, var(--color-surface-primary-container));\\n  border-color: var(--button-selected-border, var(--color-surface-primary-container));\\n}\\n.excalidraw .sidebar-trigger.active:hover {\\n  background-color: var(--button-selected-hover-bg, var(--color-surface-primary-container));\\n}\\n.excalidraw .sidebar-trigger.active svg {\\n  color: var(--button-color, var(--color-on-primary-container));\\n}\\n.excalidraw .sidebar-trigger:active {\\n  box-shadow: 0 0 0 1px var(--color-brand-active);\\n}\\n.excalidraw .sidebar-trigger svg {\\n  width: var(--lg-icon-size);\\n  height: var(--lg-icon-size);\\n}\\n.excalidraw .default-sidebar-trigger .sidebar-trigger__label {\\n  display: block;\\n}\\n.excalidraw.excalidraw--mobile .default-sidebar-trigger .sidebar-trigger__label {\\n  display: none;\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/Sidebar/SidebarTrigger.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AAAE;EDqDA,aAAA;EACA,uBAAA;EACA,mBAAA;EACA,iBAAA;EACA,sDAAA;EACA,wDAAA;EACA,sBAAA;EACA,iBAAA;EACA,mBAAA;EACA,+DAAA;EACA,sCAAA;EACA,eAAA;EACA,0DAAA;EACA,mDAAA;EAgDA,YAAA;EACA,iDAAA;EACA,0CAAA;EChHE,WAAA;EACA,6BAAA;EAEA,aAAA;EACA,mBAAA;EACA,WAAA;EAEA,cAAA;EAEA,kBAAA;EACA,qBAAA;AAcJ;ADwCE;EACE,+CAAA;EACA,iDAAA;ACtCJ;ADyCE;EACE,gEAAA;EACA,2FAAA;EAIA,yFAAA;AC1CJ;ADgDE;EACE,iEAAA;EACA,uEAAA;AC9CJ;ADiDE;EACE,mFAAA;EAIA,mFAAA;AClDJ;ADuDI;EACE,yFAAA;ACrDN;AD2DI;EACE,6DAAA;ACzDN;ADmEE;EACE,+CAAA;ACjEJ;AAtCI;EACE,0BAAA;EACA,2BAAA;AAwCN;AApCE;EACE,cAAA;AAsCJ;AAnCE;EACE,aAAA;AAqCJ","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../../css/variables.module\\";\\n\\n.excalidraw {\\n  .sidebar-trigger {\\n    @include outlineButtonStyles;\\n    @include filledButtonOnCanvas;\\n\\n    width: auto;\\n    height: var(--lg-button-size);\\n\\n    display: flex;\\n    align-items: center;\\n    gap: 0.5rem;\\n\\n    line-height: 0;\\n\\n    font-size: 0.75rem;\\n    letter-spacing: 0.4px;\\n\\n    svg {\\n      width: var(--lg-icon-size);\\n      height: var(--lg-icon-size);\\n    }\\n  }\\n\\n  .default-sidebar-trigger .sidebar-trigger__label {\\n    display: block;\\n  }\\n\\n  &.excalidraw--mobile .default-sidebar-trigger .sidebar-trigger__label {\\n    display: none;\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 13124 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Sidebar/SidebarTrigger.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Spinner.scss": (
              /*!****************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Spinner.scss ***!
                \****************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ".excalidraw .Spinner {\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  height: 100%;\\n  margin-left: auto;\\n  margin-right: auto;\\n  --spinner-color: var(--icon-fill-color);\\n}\\n.excalidraw .Spinner svg {\\n  animation: rotate 1.6s linear infinite;\\n  animation-delay: var(--spinner-delay);\\n  transform-origin: center center;\\n}\\n.excalidraw .Spinner circle {\\n  stroke: var(--spinner-color);\\n  animation: dash 1.6s linear 0s infinite;\\n  stroke-linecap: round;\\n}\\n@keyframes rotate {\\n  100% {\\n    transform: rotate(360deg);\\n  }\\n}\\n@keyframes dash {\\n  0% {\\n    stroke-dasharray: 1, 300;\\n    stroke-dashoffset: 0;\\n  }\\n  50% {\\n    stroke-dasharray: 150, 300;\\n    stroke-dashoffset: -200;\\n  }\\n  100% {\\n    stroke-dasharray: 1, 300;\\n    stroke-dashoffset: -280;\\n  }\\n}", "",{"version":3,"sources":["webpack://./../../components/Spinner.scss"],"names":[],"mappings":"AAKE;EACE,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,YAAA;EACA,iBAAA;EACA,kBAAA;EAEA,uCAAA;AALJ;AAOI;EACE,sCAAA;EACA,qCAAA;EACA,+BAAA;AALN;AAQI;EACE,4BAAA;EACA,uCAAA;EACA,qBAAA;AANN;AAUE;EACE;IACE,yBAAA;EARJ;AACF;AAWE;EACE;IACE,wBAAA;IACA,oBAAA;EATJ;EAWE;IACE,0BAAA;IACA,uBAAA;EATJ;EAWE;IACE,wBAAA;IACA,uBAAA;EATJ;AACF","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n$duration: 1.6s;\\n\\n.excalidraw {\\n  .Spinner {\\n    display: flex;\\n    align-items: center;\\n    justify-content: center;\\n    height: 100%;\\n    margin-left: auto;\\n    margin-right: auto;\\n\\n    --spinner-color: var(--icon-fill-color);\\n\\n    svg {\\n      animation: rotate $duration linear infinite;\\n      animation-delay: var(--spinner-delay);\\n      transform-origin: center center;\\n    }\\n\\n    circle {\\n      stroke: var(--spinner-color);\\n      animation: dash $duration linear 0s infinite;\\n      stroke-linecap: round;\\n    }\\n  }\\n\\n  @keyframes rotate {\\n    100% {\\n      transform: rotate(360deg);\\n    }\\n  }\\n\\n  @keyframes dash {\\n    0% {\\n      stroke-dasharray: 1, 300;\\n      stroke-dashoffset: 0;\\n    }\\n    50% {\\n      stroke-dasharray: 150, 300;\\n      stroke-dashoffset: -200;\\n    }\\n    100% {\\n      stroke-dasharray: 1, 300;\\n      stroke-dashoffset: -280;\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5208 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Spinner.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Stack.scss": (
              /*!**************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Stack.scss ***!
                \**************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ".excalidraw .Stack {\\n  --gap: 0;\\n  display: grid;\\n  gap: calc(var(--space-factor) * var(--gap));\\n}\\n.excalidraw .Stack_vertical {\\n  grid-template-columns: auto;\\n  grid-auto-flow: row;\\n  grid-auto-rows: min-content;\\n}\\n.excalidraw .Stack_horizontal {\\n  grid-template-rows: auto;\\n  grid-auto-flow: column;\\n  grid-auto-columns: min-content;\\n}", "",{"version":3,"sources":["webpack://./../../components/Stack.scss"],"names":[],"mappings":"AACE;EACE,QAAA;EACA,aAAA;EACA,2CAAA;AAAJ;AAGE;EACE,2BAAA;EACA,mBAAA;EACA,2BAAA;AADJ;AAIE;EACE,wBAAA;EACA,sBAAA;EACA,8BAAA;AAFJ","sourcesContent":[".excalidraw {\\n  .Stack {\\n    --gap: 0;\\n    display: grid;\\n    gap: calc(var(--space-factor) * var(--gap));\\n  }\\n\\n  .Stack_vertical {\\n    grid-template-columns: auto;\\n    grid-auto-flow: row;\\n    grid-auto-rows: min-content;\\n  }\\n\\n  .Stack_horizontal {\\n    grid-template-rows: auto;\\n    grid-auto-flow: column;\\n    grid-auto-columns: min-content;\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vY29tcG9uZW50cy9TdGFjay5zY3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDOEg7QUFDakI7QUFDN0csOEJBQThCLHVHQUEyQixDQUFDLGdIQUFxQztBQUMvRjtBQUNBLDhEQUE4RCxhQUFhLGtCQUFrQixnREFBZ0QsR0FBRywrQkFBK0IsZ0NBQWdDLHdCQUF3QixnQ0FBZ0MsR0FBRyxpQ0FBaUMsNkJBQTZCLDJCQUEyQixtQ0FBbUMsR0FBRyxPQUFPLDhGQUE4RixVQUFVLFVBQVUsV0FBVyxLQUFLLEtBQUssV0FBVyxXQUFXLFdBQVcsS0FBSyxLQUFLLFdBQVcsV0FBVyxXQUFXLHNDQUFzQyxZQUFZLGVBQWUsb0JBQW9CLGtEQUFrRCxLQUFLLHVCQUF1QixrQ0FBa0MsMEJBQTBCLGtDQUFrQyxLQUFLLHlCQUF5QiwrQkFBK0IsNkJBQTZCLHFDQUFxQyxLQUFLLEdBQUcscUJBQXFCO0FBQ2hnQztBQUNBLGlFQUFlLHVCQUF1QixFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvU3RhY2suc2Nzcz80ZThhIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5leGNhbGlkcmF3IC5TdGFjayB7XFxuICAtLWdhcDogMDtcXG4gIGRpc3BsYXk6IGdyaWQ7XFxuICBnYXA6IGNhbGModmFyKC0tc3BhY2UtZmFjdG9yKSAqIHZhcigtLWdhcCkpO1xcbn1cXG4uZXhjYWxpZHJhdyAuU3RhY2tfdmVydGljYWwge1xcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvO1xcbiAgZ3JpZC1hdXRvLWZsb3c6IHJvdztcXG4gIGdyaWQtYXV0by1yb3dzOiBtaW4tY29udGVudDtcXG59XFxuLmV4Y2FsaWRyYXcgLlN0YWNrX2hvcml6b250YWwge1xcbiAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBhdXRvO1xcbiAgZ3JpZC1hdXRvLWZsb3c6IGNvbHVtbjtcXG4gIGdyaWQtYXV0by1jb2x1bW5zOiBtaW4tY29udGVudDtcXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vLi4vLi4vY29tcG9uZW50cy9TdGFjay5zY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUNFO0VBQ0UsUUFBQTtFQUNBLGFBQUE7RUFDQSwyQ0FBQTtBQUFKO0FBR0U7RUFDRSwyQkFBQTtFQUNBLG1CQUFBO0VBQ0EsMkJBQUE7QUFESjtBQUlFO0VBQ0Usd0JBQUE7RUFDQSxzQkFBQTtFQUNBLDhCQUFBO0FBRkpcIixcInNvdXJjZXNDb250ZW50XCI6W1wiLmV4Y2FsaWRyYXcge1xcbiAgLlN0YWNrIHtcXG4gICAgLS1nYXA6IDA7XFxuICAgIGRpc3BsYXk6IGdyaWQ7XFxuICAgIGdhcDogY2FsYyh2YXIoLS1zcGFjZS1mYWN0b3IpICogdmFyKC0tZ2FwKSk7XFxuICB9XFxuXFxuICAuU3RhY2tfdmVydGljYWwge1xcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGF1dG87XFxuICAgIGdyaWQtYXV0by1mbG93OiByb3c7XFxuICAgIGdyaWQtYXV0by1yb3dzOiBtaW4tY29udGVudDtcXG4gIH1cXG5cXG4gIC5TdGFja19ob3Jpem9udGFsIHtcXG4gICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBhdXRvO1xcbiAgICBncmlkLWF1dG8tZmxvdzogY29sdW1uO1xcbiAgICBncmlkLWF1dG8tY29sdW1uczogbWluLWNvbnRlbnQ7XFxuICB9XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Stack.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Stats.scss": (
              /*!**************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Stats.scss ***!
                \**************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .Stats {\\n  position: absolute;\\n  top: 64px;\\n  right: 12px;\\n  font-size: 12px;\\n  z-index: 10;\\n  pointer-events: var(--ui-pointerEvents);\\n}\\n.excalidraw .Stats h3 {\\n  margin: 0 24px 8px 0;\\n  white-space: nowrap;\\n}\\n.excalidraw .Stats .close {\\n  float: right;\\n  height: 16px;\\n  width: 16px;\\n  cursor: pointer;\\n}\\n.excalidraw .Stats .close svg {\\n  width: 100%;\\n  height: 100%;\\n}\\n.excalidraw .Stats table {\\n  width: 100%;\\n}\\n.excalidraw .Stats table th {\\n  border-bottom: 1px solid var(--input-border-color);\\n  padding: 4px;\\n}\\n.excalidraw .Stats table tr td:nth-child(2) {\\n  min-width: 24px;\\n  text-align: right;\\n}\\n:root[dir=rtl] .excalidraw .Stats {\\n  left: 12px;\\n  right: initial;\\n}\\n:root[dir=rtl] .excalidraw .Stats h3 {\\n  margin: 0 0 8px 24px;\\n}\\n:root[dir=rtl] .excalidraw .Stats .close {\\n  float: left;\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/Stats.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AAAE;EACE,kBAAA;EACA,SAAA;EACA,WAAA;EACA,eAAA;EACA,WAAA;EACA,uCAAA;AAGJ;AADI;EACE,oBAAA;EACA,mBAAA;AAGN;AAAI;EACE,YAAA;EACA,YAAA;EACA,WAAA;EACA,eAAA;AAEN;AADM;EACE,WAAA;EACA,YAAA;AAGR;AACI;EACE,WAAA;AACN;AAAM;EACE,kDAAA;EACA,YAAA;AAER;AACQ;EACE,eAAA;EACA,iBAAA;AACV;AAII;EACE,UAAA;EACA,cAAA;AAFN;AAIM;EACE,oBAAA;AAFR;AAIM;EACE,WAAA;AAFR","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../css/variables.module\\";\\n\\n.excalidraw {\\n  .Stats {\\n    position: absolute;\\n    top: 64px;\\n    right: 12px;\\n    font-size: 12px;\\n    z-index: 10;\\n    pointer-events: var(--ui-pointerEvents);\\n\\n    h3 {\\n      margin: 0 24px 8px 0;\\n      white-space: nowrap;\\n    }\\n\\n    .close {\\n      float: right;\\n      height: 16px;\\n      width: 16px;\\n      cursor: pointer;\\n      svg {\\n        width: 100%;\\n        height: 100%;\\n      }\\n    }\\n\\n    table {\\n      width: 100%;\\n      th {\\n        border-bottom: 1px solid var(--input-border-color);\\n        padding: 4px;\\n      }\\n      tr {\\n        td:nth-child(2) {\\n          min-width: 24px;\\n          text-align: right;\\n        }\\n      }\\n    }\\n\\n    :root[dir=\\"rtl\\"] & {\\n      left: 12px;\\n      right: initial;\\n\\n      h3 {\\n        margin: 0 0 8px 24px;\\n      }\\n      .close {\\n        float: left;\\n      }\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 10972 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Stats.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Switch.scss": (
              /*!***************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Switch.scss ***!
                \***************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw {\\n  --Switch-disabled-color: var(--color-border-outline);\\n  --Switch-disabled-toggled-background: var(--color-border-outline-variant);\\n  --Switch-disabled-border: var(--color-border-outline-variant);\\n  --Switch-track-background: var(--island-bg-color);\\n  --Switch-thumb-background: var(--color-on-surface);\\n  --Switch-hover-background: var(--color-brand-hover);\\n  --Switch-active-background: var(--color-brand-active);\\n}\\n.excalidraw .Switch {\\n  position: relative;\\n  box-sizing: border-box;\\n  width: 40px;\\n  height: 20px;\\n  border-radius: 12px;\\n  transition-property: background, border;\\n  transition-duration: 150ms;\\n  transition-timing-function: ease-out;\\n  background: var(--Switch-track-background);\\n  border: 1px solid var(--Switch-disabled-color);\\n}\\n.excalidraw .Switch:hover {\\n  background: var(--Switch-track-background);\\n  border: 1px solid var(--Switch-hover-background);\\n}\\n.excalidraw .Switch:active {\\n  border: 1px solid var(--Switch-active-background);\\n}\\n.excalidraw .Switch.toggled {\\n  background: var(--color-primary);\\n  border: 1px solid var(--color-primary);\\n}\\n.excalidraw .Switch.toggled:hover {\\n  background: var(--color-primary-darker);\\n  border: 1px solid var(--color-primary-darker);\\n}\\n.excalidraw .Switch.disabled {\\n  background: var(--Switch-track-background);\\n  border: 1px solid var(--Switch-disabled-border);\\n}\\n.excalidraw .Switch.disabled.toggled {\\n  background: var(--Switch-disabled-toggled-background);\\n  border: 1px solid var(--Switch-disabled-toggled-background);\\n}\\n.excalidraw .Switch:before {\\n  content: \\"\\";\\n  box-sizing: border-box;\\n  display: block;\\n  pointer-events: none;\\n  position: absolute;\\n  border-radius: 100%;\\n  transition: all 150ms ease-out;\\n  width: 10px;\\n  height: 10px;\\n  top: 4px;\\n  left: 4px;\\n  background: var(--Switch-thumb-background);\\n}\\n.excalidraw .Switch:active:before {\\n  width: 12px;\\n}\\n.excalidraw .Switch.toggled:before {\\n  width: 14px;\\n  height: 14px;\\n  left: 22px;\\n  top: 2px;\\n  background: var(--Switch-track-background);\\n}\\n.excalidraw .Switch.toggled:active:before {\\n  width: 16px;\\n  left: 20px;\\n}\\n.excalidraw .Switch.disabled:before {\\n  background: var(--Switch-disabled-color);\\n}\\n.excalidraw .Switch.disabled.toggled:before {\\n  background: var(--Switch-disabled-color);\\n}\\n.excalidraw .Switch input {\\n  width: 100%;\\n  height: 100%;\\n  margin: 0;\\n  border-radius: 12px;\\n  appearance: none;\\n  cursor: pointer;\\n}\\n.excalidraw .Switch input:disabled {\\n  cursor: unset;\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/Switch.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AADA;EACE,oDAAA;EACA,yEAAA;EACA,6DAAA;EACA,iDAAA;EACA,kDAAA;EACA,mDAAA;EACA,qDAAA;AAIF;AAFE;EACE,kBAAA;EACA,sBAAA;EAEA,WAAA;EACA,YAAA;EACA,mBAAA;EAEA,uCAAA;EACA,0BAAA;EACA,oCAAA;EAEA,0CAAA;EACA,8CAAA;AACJ;AACI;EACE,0CAAA;EACA,gDAAA;AACN;AAEI;EACE,iDAAA;AAAN;AAGI;EACE,gCAAA;EACA,sCAAA;AADN;AAGM;EACE,uCAAA;EACA,6CAAA;AADR;AAKI;EACE,0CAAA;EACA,+CAAA;AAHN;AAKM;EACE,qDAAA;EACA,2DAAA;AAHR;AAOI;EACE,WAAA;EACA,sBAAA;EACA,cAAA;EACA,oBAAA;EACA,kBAAA;EAEA,mBAAA;EACA,8BAAA;EAEA,WAAA;EACA,YAAA;EACA,QAAA;EACA,SAAA;EAEA,0CAAA;AARN;AAWI;EACE,WAAA;AATN;AAYI;EACE,WAAA;EACA,YAAA;EACA,UAAA;EACA,QAAA;EAEA,0CAAA;AAXN;AAcI;EACE,WAAA;EACA,UAAA;AAZN;AAeI;EACE,wCAAA;AAbN;AAgBI;EACE,wCAAA;AAdN;AAiBI;EACE,WAAA;EACA,YAAA;EACA,SAAA;EAEA,mBAAA;EAIA,gBAAA;EAEA,eAAA;AAlBN;AAoBM;EACE,aAAA;AAlBR","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../css/variables.module\\";\\n\\n.excalidraw {\\n  --Switch-disabled-color: var(--color-border-outline);\\n  --Switch-disabled-toggled-background: var(--color-border-outline-variant);\\n  --Switch-disabled-border: var(--color-border-outline-variant);\\n  --Switch-track-background: var(--island-bg-color);\\n  --Switch-thumb-background: var(--color-on-surface);\\n  --Switch-hover-background: var(--color-brand-hover);\\n  --Switch-active-background: var(--color-brand-active);\\n\\n  .Switch {\\n    position: relative;\\n    box-sizing: border-box;\\n\\n    width: 40px;\\n    height: 20px;\\n    border-radius: 12px;\\n\\n    transition-property: background, border;\\n    transition-duration: 150ms;\\n    transition-timing-function: ease-out;\\n\\n    background: var(--Switch-track-background);\\n    border: 1px solid var(--Switch-disabled-color);\\n\\n    &:hover {\\n      background: var(--Switch-track-background);\\n      border: 1px solid var(--Switch-hover-background);\\n    }\\n\\n    &:active {\\n      border: 1px solid var(--Switch-active-background);\\n    }\\n\\n    &.toggled {\\n      background: var(--color-primary);\\n      border: 1px solid var(--color-primary);\\n\\n      &:hover {\\n        background: var(--color-primary-darker);\\n        border: 1px solid var(--color-primary-darker);\\n      }\\n    }\\n\\n    &.disabled {\\n      background: var(--Switch-track-background);\\n      border: 1px solid var(--Switch-disabled-border);\\n\\n      &.toggled {\\n        background: var(--Switch-disabled-toggled-background);\\n        border: 1px solid var(--Switch-disabled-toggled-background);\\n      }\\n    }\\n\\n    &:before {\\n      content: \\"\\";\\n      box-sizing: border-box;\\n      display: block;\\n      pointer-events: none;\\n      position: absolute;\\n\\n      border-radius: 100%;\\n      transition: all 150ms ease-out;\\n\\n      width: 10px;\\n      height: 10px;\\n      top: 4px;\\n      left: 4px;\\n\\n      background: var(--Switch-thumb-background);\\n    }\\n\\n    &:active:before {\\n      width: 12px;\\n    }\\n\\n    &.toggled:before {\\n      width: 14px;\\n      height: 14px;\\n      left: 22px;\\n      top: 2px;\\n\\n      background: var(--Switch-track-background);\\n    }\\n\\n    &.toggled:active:before {\\n      width: 16px;\\n      left: 20px;\\n    }\\n\\n    &.disabled:before {\\n      background: var(--Switch-disabled-color);\\n    }\\n\\n    &.disabled.toggled:before {\\n      background: var(--Switch-disabled-color);\\n    }\\n\\n    & input {\\n      width: 100%;\\n      height: 100%;\\n      margin: 0;\\n\\n      border-radius: 12px;\\n\\n      -webkit-appearance: none;\\n      -moz-appearance: none;\\n      appearance: none;\\n\\n      cursor: pointer;\\n\\n      &:disabled {\\n        cursor: unset;\\n      }\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 17476 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Switch.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/TextInput.scss": (
              /*!******************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/TextInput.scss ***!
                \******************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .TextInput {\\n  display: inline-block;\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/TextInput.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AAAE;EACE,qBAAA;AAGJ","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../css/variables.module\\";\\n\\n.excalidraw {\\n  .TextInput {\\n    display: inline-block;\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 7344 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/TextInput.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Toast.scss": (
              /*!**************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Toast.scss ***!
                \**************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .Toast {\\n  animation: fade-in 0.5s;\\n  background-color: var(--button-gray-1);\\n  border-radius: 4px;\\n  bottom: 10px;\\n  box-sizing: border-box;\\n  cursor: default;\\n  left: 50%;\\n  margin-left: -150px;\\n  padding: 4px 0;\\n  position: absolute;\\n  text-align: center;\\n  width: 300px;\\n  z-index: 999999;\\n}\\n.excalidraw .Toast .Toast__message {\\n  padding: 0 1.6rem;\\n  color: var(--popup-text-color);\\n  white-space: pre-wrap;\\n}\\n.excalidraw .Toast .close {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  padding: 0.4rem;\\n}\\n.excalidraw .Toast .close .ToolIcon__icon {\\n  width: 1.2rem;\\n  height: 1.2rem;\\n}\\n@keyframes fade-in {\\n  from {\\n    opacity: 0;\\n  }\\n  to {\\n    opacity: 1;\\n  }\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/Toast.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AAAE;EAIE,uBAAA;EACA,sCAAA;EACA,kBAAA;EACA,YAAA;EACA,sBAAA;EACA,eAAA;EACA,SAAA;EACA,mBAAA;EACA,cAAA;EACA,kBAAA;EACA,kBAAA;EACA,YAAA;EACA,eAAA;AAAJ;AAEI;EACE,iBAAA;EACA,8BAAA;EACA,qBAAA;AAAN;AAGI;EACE,kBAAA;EACA,MAAA;EACA,QAAA;EACA,eA1BmB;AAyBzB;AAGM;EACE,aA9Bc;EA+Bd,cA/Bc;AA8BtB;AAME;EACE;IACE,UAAA;EAJJ;EAME;IACE,UAAA;EAJJ;AACF","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../css/variables.module\\";\\n\\n.excalidraw {\\n  .Toast {\\n    $closeButtonSize: 1.2rem;\\n    $closeButtonPadding: 0.4rem;\\n\\n    animation: fade-in 0.5s;\\n    background-color: var(--button-gray-1);\\n    border-radius: 4px;\\n    bottom: 10px;\\n    box-sizing: border-box;\\n    cursor: default;\\n    left: 50%;\\n    margin-left: -150px;\\n    padding: 4px 0;\\n    position: absolute;\\n    text-align: center;\\n    width: 300px;\\n    z-index: 999999;\\n\\n    .Toast__message {\\n      padding: 0 $closeButtonSize + ($closeButtonPadding);\\n      color: var(--popup-text-color);\\n      white-space: pre-wrap;\\n    }\\n\\n    .close {\\n      position: absolute;\\n      top: 0;\\n      right: 0;\\n      padding: $closeButtonPadding;\\n\\n      .ToolIcon__icon {\\n        width: $closeButtonSize;\\n        height: $closeButtonSize;\\n      }\\n    }\\n  }\\n\\n  @keyframes fade-in {\\n    from {\\n      opacity: 0;\\n    }\\n    to {\\n      opacity: 1;\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 10708 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Toast.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ToolIcon.scss": (
              /*!*****************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ToolIcon.scss ***!
                \*****************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .ToolIcon {\\n  border-radius: var(--border-radius-lg);\\n  display: inline-flex;\\n  align-items: center;\\n  position: relative;\\n  cursor: pointer;\\n  -webkit-tap-highlight-color: transparent;\\n  user-select: none;\\n}\\n.excalidraw .ToolIcon__hidden {\\n  display: none !important;\\n}\\n.excalidraw .ToolIcon.fillable .ToolIcon_type_radio:checked + .ToolIcon__icon,\\n.excalidraw .ToolIcon.fillable .ToolIcon_type_checkbox:checked + .ToolIcon__icon {\\n  --icon-fill-color: var(--color-on-primary-container);\\n}\\n.excalidraw .ToolIcon.fillable .ToolIcon_type_radio:checked + .ToolIcon__icon svg,\\n.excalidraw .ToolIcon.fillable .ToolIcon_type_checkbox:checked + .ToolIcon__icon svg {\\n  fill: var(--icon-fill-color);\\n}\\n.excalidraw .ToolIcon .ToolIcon_type_radio:checked + .ToolIcon__icon,\\n.excalidraw .ToolIcon .ToolIcon_type_checkbox:checked + .ToolIcon__icon {\\n  background: var(--color-surface-primary-container);\\n  --keybinding-color: var(--color-on-primary-container);\\n}\\n.excalidraw .ToolIcon .ToolIcon_type_radio:checked + .ToolIcon__icon svg,\\n.excalidraw .ToolIcon .ToolIcon_type_checkbox:checked + .ToolIcon__icon svg {\\n  color: var(--color-on-primary-container);\\n}\\n.excalidraw .ToolIcon .ToolIcon__keybinding {\\n  bottom: 4px;\\n  right: 4px;\\n}\\n.excalidraw .ToolIcon .ToolIcon__icon:hover {\\n  background: var(--button-hover-bg);\\n}\\n.excalidraw .ToolIcon .ToolIcon__icon:active {\\n  background: var(--button-hover-bg);\\n  border: 1px solid var(--button-active-border);\\n}\\n.excalidraw .ToolIcon .ToolIcon__icon:active svg {\\n  color: var(--color-on-primary-container);\\n}\\n.excalidraw .ToolIcon--plain {\\n  background-color: transparent;\\n}\\n.excalidraw .ToolIcon--plain .ToolIcon__icon {\\n  width: 2rem;\\n  height: 2rem;\\n}\\n.excalidraw .ToolIcon_type_radio,\\n.excalidraw .ToolIcon_type_checkbox {\\n  position: absolute;\\n  opacity: 0;\\n  pointer-events: none;\\n}\\n.excalidraw .ToolIcon__icon {\\n  box-sizing: border-box;\\n  width: var(--default-button-size);\\n  height: var(--default-button-size);\\n  color: var(--icon-fill-color);\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  border-radius: var(--border-radius-lg);\\n}\\n.excalidraw .ToolIcon__icon + .ToolIcon__label {\\n  margin-inline-start: 0;\\n}\\n.excalidraw .ToolIcon__icon svg {\\n  position: relative;\\n  width: var(--default-icon-size);\\n  height: var(--default-icon-size);\\n  color: var(--icon-fill-color);\\n}\\n.excalidraw .ToolIcon__label {\\n  display: flex;\\n  align-items: center;\\n  color: var(--icon-fill-color);\\n  font-family: var(--ui-font);\\n  margin: 0 0.8em;\\n  text-overflow: ellipsis;\\n}\\n.excalidraw .ToolIcon__label .Spinner {\\n  margin-left: 0.6em;\\n}\\n.excalidraw .ToolIcon_size_small .ToolIcon__icon {\\n  width: 2rem;\\n  height: 2rem;\\n  font-size: 0.8em;\\n}\\n.excalidraw .ToolIcon_type_button,\\n.excalidraw .Modal .ToolIcon_type_button,\\n.excalidraw .ToolIcon_type_button {\\n  padding: 0;\\n  border: none;\\n  margin: 0;\\n  font-size: inherit;\\n  background-color: initial;\\n}\\n.excalidraw .ToolIcon_type_button:focus-visible,\\n.excalidraw .Modal .ToolIcon_type_button:focus-visible,\\n.excalidraw .ToolIcon_type_button:focus-visible {\\n  box-shadow: 0 0 0 2px var(--focus-highlight-color);\\n}\\n.excalidraw .ToolIcon_type_button.ToolIcon--selected,\\n.excalidraw .Modal .ToolIcon_type_button.ToolIcon--selected,\\n.excalidraw .ToolIcon_type_button.ToolIcon--selected {\\n  background-color: var(--button-gray-2);\\n}\\n.excalidraw .ToolIcon_type_button.ToolIcon--selected:active,\\n.excalidraw .Modal .ToolIcon_type_button.ToolIcon--selected:active,\\n.excalidraw .ToolIcon_type_button.ToolIcon--selected:active {\\n  background-color: var(--button-gray-3);\\n}\\n.excalidraw .ToolIcon_type_button:active,\\n.excalidraw .Modal .ToolIcon_type_button:active,\\n.excalidraw .ToolIcon_type_button:active {\\n  background-color: var(--button-gray-3);\\n}\\n.excalidraw .ToolIcon_type_button--show,\\n.excalidraw .Modal .ToolIcon_type_button--show,\\n.excalidraw .ToolIcon_type_button--show {\\n  visibility: visible;\\n}\\n.excalidraw .ToolIcon_type_button--hide,\\n.excalidraw .Modal .ToolIcon_type_button--hide,\\n.excalidraw .ToolIcon_type_button--hide {\\n  display: none !important;\\n}\\n.excalidraw .ToolIcon_type_floating {\\n  background-color: transparent;\\n}\\n.excalidraw .ToolIcon_type_floating:hover {\\n  background-color: transparent;\\n}\\n.excalidraw .ToolIcon_type_floating:active {\\n  background-color: transparent;\\n}\\n.excalidraw .ToolIcon_type_floating .ToolIcon__icon {\\n  background-color: var(--button-gray-1);\\n  width: 2rem;\\n  height: 2rem;\\n}\\n.excalidraw .ToolIcon_type_floating .ToolIcon__icon:hover {\\n  background-color: var(--button-gray-2);\\n}\\n.excalidraw .ToolIcon_type_floating .ToolIcon__icon:active {\\n  background-color: var(--button-gray-3);\\n}\\n.excalidraw .ToolIcon__keybinding {\\n  position: absolute;\\n  bottom: 2px;\\n  right: 3px;\\n  font-size: 0.625rem;\\n  color: var(--keybinding-color);\\n  font-family: var(--ui-font);\\n  user-select: none;\\n}\\n:root[dir=ltr] .excalidraw .unlocked-icon {\\n  left: 2px;\\n}\\n:root[dir=rtl] .excalidraw .unlocked-icon {\\n  right: 2px;\\n}\\n.excalidraw .App-toolbar-container .ToolIcon__icon {\\n  width: var(--lg-button-size);\\n  height: var(--lg-button-size);\\n}\\n@media screen and (max-width: 450px) {\\n  .excalidraw .App-toolbar-container .ToolIcon__icon {\\n    width: 1.8rem;\\n    height: 1.8rem;\\n  }\\n}\\n@media screen and (max-width: 379px) {\\n  .excalidraw .App-toolbar-container .ToolIcon__icon {\\n    width: 1.5rem;\\n    height: 1.5rem;\\n  }\\n}\\n.excalidraw .App-toolbar-container .ToolIcon__icon svg {\\n  width: var(--lg-icon-size);\\n  height: var(--lg-icon-size);\\n}\\n.excalidraw .App-toolbar-container .ToolIcon__LaserPointer .ToolIcon__icon {\\n  width: var(--default-button-size);\\n  height: var(--default-button-size);\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/ToolIcon.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AACE;EACE,sCAAA;EACA,oBAAA;EACA,mBAAA;EACA,kBAAA;EACA,eAAA;EACA,wCAAA;EACA,iBAAA;AAEJ;AAAI;EACE,wBAAA;AAEN;ADJM;;EACE,oDAAA;ACOR;ADLQ;;EACE,4BAAA;ACQV;ADAI;;EACE,kDAAA;EACA,qDAAA;ACGN;ADDM;;EACE,wCAAA;ACIR;ADCE;EACE,WAAA;EACA,UAAA;ACCJ;ADGI;EACE,kCAAA;ACDN;ADII;EACE,kCAAA;EACA,6CAAA;ACFN;ADIM;EACE,wCAAA;ACFR;AA3BE;EACE,6BAAA;AA6BJ;AA5BI;EACE,WAAA;EACA,YAAA;AA8BN;AA1BE;;EAEE,kBAAA;EACA,UAAA;EACA,oBAAA;AA4BJ;AAzBE;EACE,sBAAA;EACA,iCAAA;EACA,kCAAA;EACA,6BAAA;EAEA,aAAA;EACA,uBAAA;EACA,mBAAA;EAEA,sCAAA;AAyBJ;AAvBI;EACE,sBAAA;AAyBN;AAtBI;EACE,kBAAA;EACA,+BAAA;EACA,gCAAA;EACA,6BAAA;AAwBN;AApBE;EACE,aAAA;EACA,mBAAA;EACA,6BAAA;EACA,2BAAA;EACA,eAAA;EACA,uBAAA;AAsBJ;AApBI;EACE,kBAAA;AAsBN;AAlBE;EACE,WAAA;EACA,YAAA;EACA,gBAAA;AAoBJ;AAjBE;;;EAGE,UAAA;EACA,YAAA;EACA,SAAA;EACA,kBAAA;EACA,yBAAA;AAmBJ;AAjBI;;;EACE,kDAAA;AAqBN;AAlBI;;;EACE,sCAAA;AAsBN;AApBM;;;EACE,sCAAA;AAwBR;AApBI;;;EACE,sCAAA;AAwBN;AArBI;;;EACE,mBAAA;AAyBN;AAtBI;;;EACE,wBAAA;AA0BN;AAtBE;EACE,6BAAA;AAwBJ;AAtBI;EACE,6BAAA;AAwBN;AArBI;EACE,6BAAA;AAuBN;AApBI;EACE,sCAAA;EAQA,WAAA;EACA,YAAA;AAeN;AAvBM;EACE,sCAAA;AAyBR;AAvBM;EACE,sCAAA;AAyBR;AAjBE;EACE,kBAAA;EACA,WAAA;EACA,UAAA;EACA,mBAAA;EACA,8BAAA;EACA,2BAAA;EACA,iBAAA;AAmBJ;AAfI;EACE,SAAA;AAiBN;AAdI;EACE,UAAA;AAgBN;AAXI;EACE,4BAAA;EACA,6BAAA;AAaN;AAXM;EAJF;IAKI,aAAA;IACA,cAAA;EAcN;AACF;AAbM;EARF;IASI,aAAA;IACA,cAAA;EAgBN;AACF;AAdM;EACE,0BAAA;EACA,2BAAA;AAgBR;AAZI;EACE,iCAAA;EACA,kCAAA;AAcN","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"open-color/open-color.scss\\";\\n@import \\"../css/variables.module\\";\\n\\n.excalidraw {\\n  .ToolIcon {\\n    border-radius: var(--border-radius-lg);\\n    display: inline-flex;\\n    align-items: center;\\n    position: relative;\\n    cursor: pointer;\\n    -webkit-tap-highlight-color: transparent;\\n    user-select: none;\\n\\n    &__hidden {\\n      display: none !important;\\n    }\\n\\n    @include toolbarButtonColorStates;\\n  }\\n\\n  .ToolIcon--plain {\\n    background-color: transparent;\\n    .ToolIcon__icon {\\n      width: 2rem;\\n      height: 2rem;\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    position: absolute;\\n    opacity: 0;\\n    pointer-events: none;\\n  }\\n\\n  .ToolIcon__icon {\\n    box-sizing: border-box;\\n    width: var(--default-button-size);\\n    height: var(--default-button-size);\\n    color: var(--icon-fill-color);\\n\\n    display: flex;\\n    justify-content: center;\\n    align-items: center;\\n\\n    border-radius: var(--border-radius-lg);\\n\\n    & + .ToolIcon__label {\\n      margin-inline-start: 0;\\n    }\\n\\n    svg {\\n      position: relative;\\n      width: var(--default-icon-size);\\n      height: var(--default-icon-size);\\n      color: var(--icon-fill-color);\\n    }\\n  }\\n\\n  .ToolIcon__label {\\n    display: flex;\\n    align-items: center;\\n    color: var(--icon-fill-color);\\n    font-family: var(--ui-font);\\n    margin: 0 0.8em;\\n    text-overflow: ellipsis;\\n\\n    .Spinner {\\n      margin-left: 0.6em;\\n    }\\n  }\\n\\n  .ToolIcon_size_small .ToolIcon__icon {\\n    width: 2rem;\\n    height: 2rem;\\n    font-size: 0.8em;\\n  }\\n\\n  .ToolIcon_type_button,\\n  .Modal .ToolIcon_type_button,\\n  .ToolIcon_type_button {\\n    padding: 0;\\n    border: none;\\n    margin: 0;\\n    font-size: inherit;\\n    background-color: initial;\\n\\n    &:focus-visible {\\n      box-shadow: 0 0 0 2px var(--focus-highlight-color);\\n    }\\n\\n    &.ToolIcon--selected {\\n      background-color: var(--button-gray-2);\\n\\n      &:active {\\n        background-color: var(--button-gray-3);\\n      }\\n    }\\n\\n    &:active {\\n      background-color: var(--button-gray-3);\\n    }\\n\\n    &--show {\\n      visibility: visible;\\n    }\\n\\n    &--hide {\\n      display: none !important;\\n    }\\n  }\\n\\n  .ToolIcon_type_floating {\\n    background-color: transparent;\\n\\n    &:hover {\\n      background-color: transparent;\\n    }\\n\\n    &:active {\\n      background-color: transparent;\\n    }\\n\\n    .ToolIcon__icon {\\n      background-color: var(--button-gray-1);\\n      &:hover {\\n        background-color: var(--button-gray-2);\\n      }\\n      &:active {\\n        background-color: var(--button-gray-3);\\n      }\\n\\n      width: 2rem;\\n      height: 2rem;\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    position: absolute;\\n    bottom: 2px;\\n    right: 3px;\\n    font-size: 0.625rem;\\n    color: var(--keybinding-color);\\n    font-family: var(--ui-font);\\n    user-select: none;\\n  }\\n\\n  .unlocked-icon {\\n    :root[dir=\\"ltr\\"] & {\\n      left: 2px;\\n    }\\n\\n    :root[dir=\\"rtl\\"] & {\\n      right: 2px;\\n    }\\n  }\\n\\n  .App-toolbar-container {\\n    .ToolIcon__icon {\\n      width: var(--lg-button-size);\\n      height: var(--lg-button-size);\\n\\n      @media screen and (max-width: 450px) {\\n        width: 1.8rem;\\n        height: 1.8rem;\\n      }\\n      @media screen and (max-width: 379px) {\\n        width: 1.5rem;\\n        height: 1.5rem;\\n      }\\n\\n      svg {\\n        width: var(--lg-icon-size);\\n        height: var(--lg-icon-size);\\n      }\\n    }\\n\\n    .ToolIcon__LaserPointer .ToolIcon__icon {\\n      width: var(--default-button-size);\\n      height: var(--default-button-size);\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 25852 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ToolIcon.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Toolbar.scss": (
              /*!****************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Toolbar.scss ***!
                \****************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .App-toolbar.zen-mode .ToolIcon__keybinding,\\n.excalidraw .App-toolbar.zen-mode .HintViewer {\\n  display: none;\\n}\\n.excalidraw .App-toolbar__divider {\\n  width: 1px;\\n  height: 1.5rem;\\n  align-self: center;\\n  background-color: var(--default-border-color);\\n  margin: 0 0.25rem;\\n}\\n.excalidraw--mobile.excalidraw .App-toolbar__divider {\\n  margin: 0;\\n}\\n\\n.excalidraw .App-toolbar__extra-tools-trigger {\\n  box-shadow: none;\\n  border: 0;\\n  background-color: transparent;\\n}\\n.excalidraw .App-toolbar__extra-tools-trigger:active {\\n  background-color: var(--button-hover-bg);\\n  box-shadow: 0 0 0 1px var(--button-active-border, var(--color-primary-darkest)) inset;\\n}\\n.excalidraw .App-toolbar__extra-tools-trigger--selected, .excalidraw .App-toolbar__extra-tools-trigger--selected:hover {\\n  background: var(--color-primary-light);\\n  color: var(--color-primary);\\n}\\n.excalidraw .App-toolbar__extra-tools-dropdown {\\n  margin-top: 0.375rem;\\n  right: 0;\\n  min-width: 11.875rem;\\n  z-index: 1;\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/Toolbar.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AAGM;;EAEE,aAAA;AAAR;AAII;EACE,UAAA;EACA,cAAA;EACA,kBAAA;EACA,6CAAA;EACA,iBAAA;AAFN;ADZW;ECiBH,SAAA;AAFR;;AAOE;EACE,gBAAA;EACA,SAAA;EACA,6BAAA;AAJJ;AAMI;EACE,wCAAA;EACA,qFAAA;AAJN;AAQI;EAEE,sCAAA;EACA,2BAAA;AAPN;AAWE;EACE,oBAAA;EACA,QAAA;EACA,oBAAA;EACA,UAAA;AATJ","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"open-color/open-color.scss\\";\\n@import \\"../css/variables.module\\";\\n\\n.excalidraw {\\n  .App-toolbar {\\n    &.zen-mode {\\n      .ToolIcon__keybinding,\\n      .HintViewer {\\n        display: none;\\n      }\\n    }\\n\\n    &__divider {\\n      width: 1px;\\n      height: 1.5rem;\\n      align-self: center;\\n      background-color: var(--default-border-color);\\n      margin: 0 0.25rem;\\n\\n      @include isMobile {\\n        margin: 0;\\n      }\\n    }\\n  }\\n\\n  .App-toolbar__extra-tools-trigger {\\n    box-shadow: none;\\n    border: 0;\\n    background-color: transparent;\\n\\n    &:active {\\n      background-color: var(--button-hover-bg);\\n      box-shadow: 0 0 0 1px\\n        var(--button-active-border, var(--color-primary-darkest)) inset;\\n    }\\n\\n    &--selected,\\n    &--selected:hover {\\n      background: var(--color-primary-light);\\n      color: var(--color-primary);\\n    }\\n  }\\n\\n  .App-toolbar__extra-tools-dropdown {\\n    margin-top: 0.375rem;\\n    right: 0;\\n    min-width: 11.875rem;\\n    z-index: 1;\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 11008 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Toolbar.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Tooltip.scss": (
              /*!****************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Tooltip.scss ***!
                \****************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw-tooltip {\\n  --ui-font: Assistant, system-ui, BlinkMacSystemFont, -apple-system, Segoe UI,\\n    Roboto, Helvetica, Arial, sans-serif;\\n  font-family: var(--ui-font);\\n  position: fixed;\\n  z-index: var(--zIndex-popup);\\n  padding: 8px;\\n  border-radius: 6px;\\n  box-sizing: border-box;\\n  pointer-events: none;\\n  word-wrap: break-word;\\n  background: #000000;\\n  line-height: 1.5;\\n  text-align: center;\\n  font-size: 13px;\\n  font-weight: 500;\\n  color: #ffffff;\\n  display: none;\\n}\\n.excalidraw-tooltip.excalidraw-tooltip--visible {\\n  display: block;\\n}\\n\\n.excalidraw-tooltip-wrapper {\\n  display: flex;\\n}\\n\\n.excalidraw-tooltip-icon {\\n  width: 0.9em;\\n  height: 0.9em;\\n  margin-left: 5px;\\n  margin-top: 1px;\\n  display: flex;\\n}\\n.excalidraw--mobile.excalidraw-tooltip-icon {\\n  display: none;\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/Tooltip.scss","webpack://./../../../node_modules/open-color/open-color.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AAAA;EACE;wCAAA;EAEA,2BAAA;EACA,eAAA;EACA,4BAAA;EAEA,YAAA;EACA,kBAAA;EACA,sBAAA;EACA,oBAAA;EACA,qBAAA;EAEA,mBCJiB;EDMjB,gBAAA;EACA,kBAAA;EACA,eAAA;EACA,gBAAA;EACA,cCXiB;EDajB,aAAA;AADF;AAGE;EACE,cAAA;AADJ;;AAMA;EACE,aAAA;AAHF;;AAMA;EACE,YAAA;EACA,aAAA;EACA,gBAAA;EACA,eAAA;EACA,aAAA;AAHF;ADnCW;ECyCP,aAAA;AAHJ","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../css/variables.module\\";\\n\\n// container in body where the actual tooltip is appended to\\n.excalidraw-tooltip {\\n  --ui-font: Assistant, system-ui, BlinkMacSystemFont, -apple-system, Segoe UI,\\n    Roboto, Helvetica, Arial, sans-serif;\\n  font-family: var(--ui-font);\\n  position: fixed;\\n  z-index: var(--zIndex-popup);\\n\\n  padding: 8px;\\n  border-radius: 6px;\\n  box-sizing: border-box;\\n  pointer-events: none;\\n  word-wrap: break-word;\\n\\n  background: $oc-black;\\n\\n  line-height: 1.5;\\n  text-align: center;\\n  font-size: 13px;\\n  font-weight: 500;\\n  color: $oc-white;\\n\\n  display: none;\\n\\n  &.excalidraw-tooltip--visible {\\n    display: block;\\n  }\\n}\\n\\n// wraps the element we want to apply the tooltip to\\n.excalidraw-tooltip-wrapper {\\n  display: flex;\\n}\\n\\n.excalidraw-tooltip-icon {\\n  width: 0.9em;\\n  height: 0.9em;\\n  margin-left: 5px;\\n  margin-top: 1px;\\n  display: flex;\\n\\n  @include isMobile {\\n    display: none;\\n  }\\n}\\n","//\\n//\\n//  \u{1D5D6} \u{1D5E2} \u{1D5DF} \u{1D5E2} \u{1D5E5}\\n//  v 1.9.1\\n//\\n//  \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\\n\\n\\n//  General\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-white:         #ffffff;\\n$oc-black:         #000000;\\n\\n\\n//  Gray\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-gray-list: (\\n  \\"0\\": #f8f9fa,\\n  \\"1\\": #f1f3f5,\\n  \\"2\\": #e9ecef,\\n  \\"3\\": #dee2e6,\\n  \\"4\\": #ced4da,\\n  \\"5\\": #adb5bd,\\n  \\"6\\": #868e96,\\n  \\"7\\": #495057,\\n  \\"8\\": #343a40,\\n  \\"9\\": #212529\\n);\\n\\n$oc-gray-0: map-get($oc-gray-list, \\"0\\");\\n$oc-gray-1: map-get($oc-gray-list, \\"1\\");\\n$oc-gray-2: map-get($oc-gray-list, \\"2\\");\\n$oc-gray-3: map-get($oc-gray-list, \\"3\\");\\n$oc-gray-4: map-get($oc-gray-list, \\"4\\");\\n$oc-gray-5: map-get($oc-gray-list, \\"5\\");\\n$oc-gray-6: map-get($oc-gray-list, \\"6\\");\\n$oc-gray-7: map-get($oc-gray-list, \\"7\\");\\n$oc-gray-8: map-get($oc-gray-list, \\"8\\");\\n$oc-gray-9: map-get($oc-gray-list, \\"9\\");\\n\\n\\n//  Red\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-red-list: (\\n  \\"0\\": #fff5f5,\\n  \\"1\\": #ffe3e3,\\n  \\"2\\": #ffc9c9,\\n  \\"3\\": #ffa8a8,\\n  \\"4\\": #ff8787,\\n  \\"5\\": #ff6b6b,\\n  \\"6\\": #fa5252,\\n  \\"7\\": #f03e3e,\\n  \\"8\\": #e03131,\\n  \\"9\\": #c92a2a\\n);\\n\\n$oc-red-0: map-get($oc-red-list, \\"0\\");\\n$oc-red-1: map-get($oc-red-list, \\"1\\");\\n$oc-red-2: map-get($oc-red-list, \\"2\\");\\n$oc-red-3: map-get($oc-red-list, \\"3\\");\\n$oc-red-4: map-get($oc-red-list, \\"4\\");\\n$oc-red-5: map-get($oc-red-list, \\"5\\");\\n$oc-red-6: map-get($oc-red-list, \\"6\\");\\n$oc-red-7: map-get($oc-red-list, \\"7\\");\\n$oc-red-8: map-get($oc-red-list, \\"8\\");\\n$oc-red-9: map-get($oc-red-list, \\"9\\");\\n\\n\\n//  Pink\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-pink-list: (\\n  \\"0\\": #fff0f6,\\n  \\"1\\": #ffdeeb,\\n  \\"2\\": #fcc2d7,\\n  \\"3\\": #faa2c1,\\n  \\"4\\": #f783ac,\\n  \\"5\\": #f06595,\\n  \\"6\\": #e64980,\\n  \\"7\\": #d6336c,\\n  \\"8\\": #c2255c,\\n  \\"9\\": #a61e4d\\n);\\n\\n$oc-pink-0: map-get($oc-pink-list, \\"0\\");\\n$oc-pink-1: map-get($oc-pink-list, \\"1\\");\\n$oc-pink-2: map-get($oc-pink-list, \\"2\\");\\n$oc-pink-3: map-get($oc-pink-list, \\"3\\");\\n$oc-pink-4: map-get($oc-pink-list, \\"4\\");\\n$oc-pink-5: map-get($oc-pink-list, \\"5\\");\\n$oc-pink-6: map-get($oc-pink-list, \\"6\\");\\n$oc-pink-7: map-get($oc-pink-list, \\"7\\");\\n$oc-pink-8: map-get($oc-pink-list, \\"8\\");\\n$oc-pink-9: map-get($oc-pink-list, \\"9\\");\\n\\n\\n//  Grape\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-grape-list: (\\n  \\"0\\": #f8f0fc,\\n  \\"1\\": #f3d9fa,\\n  \\"2\\": #eebefa,\\n  \\"3\\": #e599f7,\\n  \\"4\\": #da77f2,\\n  \\"5\\": #cc5de8,\\n  \\"6\\": #be4bdb,\\n  \\"7\\": #ae3ec9,\\n  \\"8\\": #9c36b5,\\n  \\"9\\": #862e9c\\n);\\n\\n$oc-grape-0: map-get($oc-grape-list, \\"0\\");\\n$oc-grape-1: map-get($oc-grape-list, \\"1\\");\\n$oc-grape-2: map-get($oc-grape-list, \\"2\\");\\n$oc-grape-3: map-get($oc-grape-list, \\"3\\");\\n$oc-grape-4: map-get($oc-grape-list, \\"4\\");\\n$oc-grape-5: map-get($oc-grape-list, \\"5\\");\\n$oc-grape-6: map-get($oc-grape-list, \\"6\\");\\n$oc-grape-7: map-get($oc-grape-list, \\"7\\");\\n$oc-grape-8: map-get($oc-grape-list, \\"8\\");\\n$oc-grape-9: map-get($oc-grape-list, \\"9\\");\\n\\n\\n//  Violet\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-violet-list: (\\n  \\"0\\": #f3f0ff,\\n  \\"1\\": #e5dbff,\\n  \\"2\\": #d0bfff,\\n  \\"3\\": #b197fc,\\n  \\"4\\": #9775fa,\\n  \\"5\\": #845ef7,\\n  \\"6\\": #7950f2,\\n  \\"7\\": #7048e8,\\n  \\"8\\": #6741d9,\\n  \\"9\\": #5f3dc4\\n);\\n\\n$oc-violet-0: map-get($oc-violet-list, \\"0\\");\\n$oc-violet-1: map-get($oc-violet-list, \\"1\\");\\n$oc-violet-2: map-get($oc-violet-list, \\"2\\");\\n$oc-violet-3: map-get($oc-violet-list, \\"3\\");\\n$oc-violet-4: map-get($oc-violet-list, \\"4\\");\\n$oc-violet-5: map-get($oc-violet-list, \\"5\\");\\n$oc-violet-6: map-get($oc-violet-list, \\"6\\");\\n$oc-violet-7: map-get($oc-violet-list, \\"7\\");\\n$oc-violet-8: map-get($oc-violet-list, \\"8\\");\\n$oc-violet-9: map-get($oc-violet-list, \\"9\\");\\n\\n\\n//  Indigo\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-indigo-list: (\\n  \\"0\\": #edf2ff,\\n  \\"1\\": #dbe4ff,\\n  \\"2\\": #bac8ff,\\n  \\"3\\": #91a7ff,\\n  \\"4\\": #748ffc,\\n  \\"5\\": #5c7cfa,\\n  \\"6\\": #4c6ef5,\\n  \\"7\\": #4263eb,\\n  \\"8\\": #3b5bdb,\\n  \\"9\\": #364fc7\\n);\\n\\n$oc-indigo-0: map-get($oc-indigo-list, \\"0\\");\\n$oc-indigo-1: map-get($oc-indigo-list, \\"1\\");\\n$oc-indigo-2: map-get($oc-indigo-list, \\"2\\");\\n$oc-indigo-3: map-get($oc-indigo-list, \\"3\\");\\n$oc-indigo-4: map-get($oc-indigo-list, \\"4\\");\\n$oc-indigo-5: map-get($oc-indigo-list, \\"5\\");\\n$oc-indigo-6: map-get($oc-indigo-list, \\"6\\");\\n$oc-indigo-7: map-get($oc-indigo-list, \\"7\\");\\n$oc-indigo-8: map-get($oc-indigo-list, \\"8\\");\\n$oc-indigo-9: map-get($oc-indigo-list, \\"9\\");\\n\\n\\n//  Blue\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-blue-list: (\\n  \\"0\\": #e7f5ff,\\n  \\"1\\": #d0ebff,\\n  \\"2\\": #a5d8ff,\\n  \\"3\\": #74c0fc,\\n  \\"4\\": #4dabf7,\\n  \\"5\\": #339af0,\\n  \\"6\\": #228be6,\\n  \\"7\\": #1c7ed6,\\n  \\"8\\": #1971c2,\\n  \\"9\\": #1864ab\\n);\\n\\n$oc-blue-0: map-get($oc-blue-list, \\"0\\");\\n$oc-blue-1: map-get($oc-blue-list, \\"1\\");\\n$oc-blue-2: map-get($oc-blue-list, \\"2\\");\\n$oc-blue-3: map-get($oc-blue-list, \\"3\\");\\n$oc-blue-4: map-get($oc-blue-list, \\"4\\");\\n$oc-blue-5: map-get($oc-blue-list, \\"5\\");\\n$oc-blue-6: map-get($oc-blue-list, \\"6\\");\\n$oc-blue-7: map-get($oc-blue-list, \\"7\\");\\n$oc-blue-8: map-get($oc-blue-list, \\"8\\");\\n$oc-blue-9: map-get($oc-blue-list, \\"9\\");\\n\\n\\n//  Cyan\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-cyan-list: (\\n  \\"0\\": #e3fafc,\\n  \\"1\\": #c5f6fa,\\n  \\"2\\": #99e9f2,\\n  \\"3\\": #66d9e8,\\n  \\"4\\": #3bc9db,\\n  \\"5\\": #22b8cf,\\n  \\"6\\": #15aabf,\\n  \\"7\\": #1098ad,\\n  \\"8\\": #0c8599,\\n  \\"9\\": #0b7285\\n);\\n\\n$oc-cyan-0: map-get($oc-cyan-list, \\"0\\");\\n$oc-cyan-1: map-get($oc-cyan-list, \\"1\\");\\n$oc-cyan-2: map-get($oc-cyan-list, \\"2\\");\\n$oc-cyan-3: map-get($oc-cyan-list, \\"3\\");\\n$oc-cyan-4: map-get($oc-cyan-list, \\"4\\");\\n$oc-cyan-5: map-get($oc-cyan-list, \\"5\\");\\n$oc-cyan-6: map-get($oc-cyan-list, \\"6\\");\\n$oc-cyan-7: map-get($oc-cyan-list, \\"7\\");\\n$oc-cyan-8: map-get($oc-cyan-list, \\"8\\");\\n$oc-cyan-9: map-get($oc-cyan-list, \\"9\\");\\n\\n\\n//  Teal\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-teal-list: (\\n  \\"0\\": #e6fcf5,\\n  \\"1\\": #c3fae8,\\n  \\"2\\": #96f2d7,\\n  \\"3\\": #63e6be,\\n  \\"4\\": #38d9a9,\\n  \\"5\\": #20c997,\\n  \\"6\\": #12b886,\\n  \\"7\\": #0ca678,\\n  \\"8\\": #099268,\\n  \\"9\\": #087f5b\\n);\\n\\n$oc-teal-0: map-get($oc-teal-list, \\"0\\");\\n$oc-teal-1: map-get($oc-teal-list, \\"1\\");\\n$oc-teal-2: map-get($oc-teal-list, \\"2\\");\\n$oc-teal-3: map-get($oc-teal-list, \\"3\\");\\n$oc-teal-4: map-get($oc-teal-list, \\"4\\");\\n$oc-teal-5: map-get($oc-teal-list, \\"5\\");\\n$oc-teal-6: map-get($oc-teal-list, \\"6\\");\\n$oc-teal-7: map-get($oc-teal-list, \\"7\\");\\n$oc-teal-8: map-get($oc-teal-list, \\"8\\");\\n$oc-teal-9: map-get($oc-teal-list, \\"9\\");\\n\\n\\n//  Green\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-green-list: (\\n  \\"0\\": #ebfbee,\\n  \\"1\\": #d3f9d8,\\n  \\"2\\": #b2f2bb,\\n  \\"3\\": #8ce99a,\\n  \\"4\\": #69db7c,\\n  \\"5\\": #51cf66,\\n  \\"6\\": #40c057,\\n  \\"7\\": #37b24d,\\n  \\"8\\": #2f9e44,\\n  \\"9\\": #2b8a3e\\n);\\n\\n$oc-green-0: map-get($oc-green-list, \\"0\\");\\n$oc-green-1: map-get($oc-green-list, \\"1\\");\\n$oc-green-2: map-get($oc-green-list, \\"2\\");\\n$oc-green-3: map-get($oc-green-list, \\"3\\");\\n$oc-green-4: map-get($oc-green-list, \\"4\\");\\n$oc-green-5: map-get($oc-green-list, \\"5\\");\\n$oc-green-6: map-get($oc-green-list, \\"6\\");\\n$oc-green-7: map-get($oc-green-list, \\"7\\");\\n$oc-green-8: map-get($oc-green-list, \\"8\\");\\n$oc-green-9: map-get($oc-green-list, \\"9\\");\\n\\n\\n//  Lime\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-lime-list: (\\n  \\"0\\": #f4fce3,\\n  \\"1\\": #e9fac8,\\n  \\"2\\": #d8f5a2,\\n  \\"3\\": #c0eb75,\\n  \\"4\\": #a9e34b,\\n  \\"5\\": #94d82d,\\n  \\"6\\": #82c91e,\\n  \\"7\\": #74b816,\\n  \\"8\\": #66a80f,\\n  \\"9\\": #5c940d\\n);\\n\\n$oc-lime-0: map-get($oc-lime-list, \\"0\\");\\n$oc-lime-1: map-get($oc-lime-list, \\"1\\");\\n$oc-lime-2: map-get($oc-lime-list, \\"2\\");\\n$oc-lime-3: map-get($oc-lime-list, \\"3\\");\\n$oc-lime-4: map-get($oc-lime-list, \\"4\\");\\n$oc-lime-5: map-get($oc-lime-list, \\"5\\");\\n$oc-lime-6: map-get($oc-lime-list, \\"6\\");\\n$oc-lime-7: map-get($oc-lime-list, \\"7\\");\\n$oc-lime-8: map-get($oc-lime-list, \\"8\\");\\n$oc-lime-9: map-get($oc-lime-list, \\"9\\");\\n\\n\\n//  Yellow\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-yellow-list: (\\n  \\"0\\": #fff9db,\\n  \\"1\\": #fff3bf,\\n  \\"2\\": #ffec99,\\n  \\"3\\": #ffe066,\\n  \\"4\\": #ffd43b,\\n  \\"5\\": #fcc419,\\n  \\"6\\": #fab005,\\n  \\"7\\": #f59f00,\\n  \\"8\\": #f08c00,\\n  \\"9\\": #e67700\\n);\\n\\n$oc-yellow-0: map-get($oc-yellow-list, \\"0\\");\\n$oc-yellow-1: map-get($oc-yellow-list, \\"1\\");\\n$oc-yellow-2: map-get($oc-yellow-list, \\"2\\");\\n$oc-yellow-3: map-get($oc-yellow-list, \\"3\\");\\n$oc-yellow-4: map-get($oc-yellow-list, \\"4\\");\\n$oc-yellow-5: map-get($oc-yellow-list, \\"5\\");\\n$oc-yellow-6: map-get($oc-yellow-list, \\"6\\");\\n$oc-yellow-7: map-get($oc-yellow-list, \\"7\\");\\n$oc-yellow-8: map-get($oc-yellow-list, \\"8\\");\\n$oc-yellow-9: map-get($oc-yellow-list, \\"9\\");\\n\\n\\n//  Orange\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-orange-list: (\\n  \\"0\\": #fff4e6,\\n  \\"1\\": #ffe8cc,\\n  \\"2\\": #ffd8a8,\\n  \\"3\\": #ffc078,\\n  \\"4\\": #ffa94d,\\n  \\"5\\": #ff922b,\\n  \\"6\\": #fd7e14,\\n  \\"7\\": #f76707,\\n  \\"8\\": #e8590c,\\n  \\"9\\": #d9480f\\n);\\n\\n$oc-orange-0: map-get($oc-orange-list, \\"0\\");\\n$oc-orange-1: map-get($oc-orange-list, \\"1\\");\\n$oc-orange-2: map-get($oc-orange-list, \\"2\\");\\n$oc-orange-3: map-get($oc-orange-list, \\"3\\");\\n$oc-orange-4: map-get($oc-orange-list, \\"4\\");\\n$oc-orange-5: map-get($oc-orange-list, \\"5\\");\\n$oc-orange-6: map-get($oc-orange-list, \\"6\\");\\n$oc-orange-7: map-get($oc-orange-list, \\"7\\");\\n$oc-orange-8: map-get($oc-orange-list, \\"8\\");\\n$oc-orange-9: map-get($oc-orange-list, \\"9\\");\\n\\n\\n//  Color list\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-color-spectrum:   9;\\n\\n$oc-color-list: (\\n  $oc-gray-list:      \\"gray\\",\\n  $oc-red-list:      \\"red\\",\\n  $oc-pink-list:      \\"pink\\",\\n  $oc-grape-list:      \\"grape\\",\\n  $oc-violet-list:      \\"violet\\",\\n  $oc-indigo-list:      \\"indigo\\",\\n  $oc-blue-list:      \\"blue\\",\\n  $oc-cyan-list:      \\"cyan\\",\\n  $oc-teal-list:      \\"teal\\",\\n  $oc-green-list:      \\"green\\",\\n  $oc-lime-list:      \\"lime\\",\\n  $oc-yellow-list:      \\"yellow\\",\\n  $oc-orange-list:      \\"orange\\"\\n);\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 29284 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Tooltip.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/UserList.scss": (
              /*!*****************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/UserList.scss ***!
                \*****************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");
/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");
/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);
// Imports


var ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
// Module
___CSS_LOADER_EXPORT___.push([module.id, ".excalidraw .UserList {\\n  pointer-events: none;\\n  /*github corner*/\\n  padding: var(--space-factor) var(--space-factor) var(--space-factor) var(--space-factor);\\n  display: flex;\\n  flex-wrap: wrap;\\n  justify-content: flex-end;\\n  align-items: center;\\n  gap: 0.625rem;\\n  max-height: 140px;\\n  max-width: 290px;\\n  overflow: hidden;\\n}\\n.excalidraw .UserList:empty {\\n  display: none;\\n}\\n.excalidraw .UserList > * {\\n  pointer-events: var(--ui-pointerEvents);\\n}\\n.excalidraw .UserList_mobile {\\n  padding: 0;\\n  justify-content: normal;\\n  margin: 0.5rem 0;\\n}", "",{"version":3,"sources":["webpack://./../../components/UserList.scss"],"names":[],"mappings":"AACE;EACE,oBAAA;EACA,gBAAA;EACA,wFAAA;EAEA,aAAA;EACA,eAAA;EACA,yBAAA;EACA,mBAAA;EACA,aAAA;EAOA,iBAAA;EAGA,gBAAA;EAIA,gBAAA;AAZJ;AAAI;EACE,aAAA;AAEN;AAYE;EACE,uCAAA;AAVJ;AAaE;EACE,UAAA;EACA,uBAAA;EACA,gBAAA;AAXJ","sourcesContent":[".excalidraw {\\n  .UserList {\\n    pointer-events: none;\\n    /*github corner*/\\n    padding: var(--space-factor) var(--space-factor) var(--space-factor)\\n      var(--space-factor);\\n    display: flex;\\n    flex-wrap: wrap;\\n    justify-content: flex-end;\\n    align-items: center;\\n    gap: 0.625rem;\\n\\n    &:empty {\\n      display: none;\\n    }\\n\\n    // can fit max 5 avatars in a column\\n    max-height: 140px;\\n\\n    // can fit max 10 avatars in a row when there's enough space\\n    max-width: 290px;\\n\\n    // Tweak in 30px increments to fit more/fewer avatars in a row/column ^^\\n\\n    overflow: hidden;\\n  }\\n\\n  .UserList > * {\\n    pointer-events: var(--ui-pointerEvents);\\n  }\\n\\n  .UserList_mobile {\\n    padding: 0;\\n    justify-content: normal;\\n    margin: 0.5rem 0;\\n  }\\n}\\n"],"sourceRoot":""}]);
// Exports
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4164 characters]
//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/UserList.scss
`);
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/dropdownMenu/DropdownMenu.scss": (
              /*!**********************************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/dropdownMenu/DropdownMenu.scss ***!
                \**********************************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .dropdown-menu {\\n  position: absolute;\\n  top: 100%;\\n  margin-top: 0.25rem;\\n}\\n.excalidraw .dropdown-menu--mobile {\\n  left: 0;\\n  width: 100%;\\n  row-gap: 0.75rem;\\n}\\n.excalidraw .dropdown-menu--mobile .dropdown-menu-container {\\n  padding: 8px 8px;\\n  box-sizing: border-box;\\n  box-shadow: var(--shadow-island);\\n  border-radius: var(--border-radius-lg);\\n  position: relative;\\n  transition: box-shadow 0.5s ease-in-out;\\n}\\n.excalidraw .dropdown-menu--mobile .dropdown-menu-container.zen-mode {\\n  box-shadow: none;\\n}\\n.excalidraw .dropdown-menu .dropdown-menu-container {\\n  background-color: var(--island-bg-color);\\n  max-height: calc(100vh - 150px);\\n  overflow-y: auto;\\n  --gap: 2;\\n}\\n.excalidraw .dropdown-menu .dropdown-menu-item-base {\\n  display: flex;\\n  padding: 0 0.625rem;\\n  column-gap: 0.625rem;\\n  font-size: 0.875rem;\\n  color: var(--color-on-surface);\\n  width: 100%;\\n  box-sizing: border-box;\\n  font-weight: normal;\\n  font-family: inherit;\\n}\\n.excalidraw .dropdown-menu .dropdown-menu-item {\\n  background-color: transparent;\\n  border: 1px solid transparent;\\n  align-items: center;\\n  height: 2rem;\\n  cursor: pointer;\\n  border-radius: var(--border-radius-md);\\n}\\n@media screen and (min-width: 1921px) {\\n  .excalidraw .dropdown-menu .dropdown-menu-item {\\n    height: 2.25rem;\\n  }\\n}\\n.excalidraw .dropdown-menu .dropdown-menu-item--selected {\\n  background: var(--color-primary-light);\\n  --icon-fill-color: var(--color-primary-darker);\\n}\\n.excalidraw .dropdown-menu .dropdown-menu-item__text {\\n  text-overflow: ellipsis;\\n  overflow: hidden;\\n  white-space: nowrap;\\n}\\n.excalidraw .dropdown-menu .dropdown-menu-item__shortcut {\\n  margin-inline-start: auto;\\n  opacity: 0.5;\\n}\\n.excalidraw .dropdown-menu .dropdown-menu-item:hover {\\n  background-color: var(--button-hover-bg);\\n  text-decoration: none;\\n}\\n.excalidraw .dropdown-menu .dropdown-menu-item:active {\\n  background-color: var(--button-hover-bg);\\n  border-color: var(--color-brand-active);\\n}\\n.excalidraw .dropdown-menu .dropdown-menu-item svg {\\n  width: 1rem;\\n  height: 1rem;\\n  display: block;\\n}\\n.excalidraw .dropdown-menu .dropdown-menu-item-custom {\\n  margin-top: 0.5rem;\\n}\\n.excalidraw .dropdown-menu .dropdown-menu-group-title {\\n  font-size: 14px;\\n  text-align: left;\\n  margin: 10px 0;\\n  font-weight: 500;\\n}\\n.excalidraw .dropdown-menu-button {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n  width: var(--lg-button-size);\\n  height: var(--lg-button-size);\\n  --background: var(--color-surface-mid);\\n  background-color: var(--background);\\n}\\n.excalidraw .dropdown-menu-button svg {\\n  width: var(--button-width, var(--lg-icon-size));\\n  height: var(--button-height, var(--lg-icon-size));\\n}\\n.excalidraw .dropdown-menu-button:hover {\\n  background-color: var(--button-hover-bg, var(--island-bg-color));\\n  border-color: var(--button-hover-border, var(--button-border, var(--default-border-color)));\\n  color: var(--button-hover-color, var(--button-color, var(--text-primary-color, inherit)));\\n}\\n.excalidraw .dropdown-menu-button:active {\\n  background-color: var(--button-active-bg, var(--island-bg-color));\\n  border-color: var(--button-active-border, var(--color-primary-darkest));\\n}\\n.excalidraw .dropdown-menu-button.active {\\n  background-color: var(--button-selected-bg, var(--color-surface-primary-container));\\n  border-color: var(--button-selected-border, var(--color-surface-primary-container));\\n}\\n.excalidraw .dropdown-menu-button.active:hover {\\n  background-color: var(--button-selected-hover-bg, var(--color-surface-primary-container));\\n}\\n.excalidraw .dropdown-menu-button.active svg {\\n  color: var(--button-color, var(--color-on-primary-container));\\n}\\n.excalidraw.theme--dark.excalidraw .dropdown-menu-button {\\n  --background: var(--color-surface-high);\\n}\\n.excalidraw.theme--dark.excalidraw .dropdown-menu-button:hover {\\n  --background: #363541;\\n}\\n\\n.excalidraw .dropdown-menu-button:hover {\\n  --background: var(--color-surface-high);\\n  background-color: var(--background);\\n  text-decoration: none;\\n}\\n.excalidraw .dropdown-menu-button:active {\\n  border-color: var(--color-primary);\\n}\\n.excalidraw .dropdown-menu-button svg {\\n  width: var(--lg-icon-size);\\n  height: var(--lg-icon-size);\\n}\\n.excalidraw .dropdown-menu-button--mobile {\\n  border: none;\\n  margin: 0;\\n  padding: 0;\\n  width: var(--default-button-size);\\n  height: var(--default-button-size);\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/dropdownMenu/DropdownMenu.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AAAE;EACE,kBAAA;EACA,SAAA;EACA,mBAAA;AAGJ;AADI;EACE,OAAA;EACA,WAAA;EACA,gBAAA;AAGN;AADM;EACE,gBAAA;EACA,sBAAA;EAEA,gCAAA;EACA,sCAAA;EACA,kBAAA;EACA,uCAAA;AAER;AAAQ;EACE,gBAAA;AAEV;AAGI;EACE,wCAAA;EACA,+BAAA;EACA,gBAAA;EACA,QAAA;AADN;AAII;EACE,aAAA;EACA,mBAAA;EACA,oBAAA;EACA,mBAAA;EACA,8BAAA;EACA,WAAA;EACA,sBAAA;EACA,mBAAA;EACA,oBAAA;AAFN;AAKI;EACE,6BAAA;EACA,6BAAA;EACA,mBAAA;EACA,YAAA;EACA,eAAA;EACA,sCAAA;AAHN;AAKM;EARF;IASI,eAAA;EAFN;AACF;AAIM;EACE,sCAAA;EACA,8CAAA;AAFR;AAKM;EACE,uBAAA;EACA,gBAAA;EACA,mBAAA;AAHR;AAMM;EACE,yBAAA;EACA,YAAA;AAJR;AAOM;EACE,wCAAA;EACA,qBAAA;AALR;AAQM;EACE,wCAAA;EACA,uCAAA;AANR;AASM;EACE,WAAA;EACA,YAAA;EACA,cAAA;AAPR;AAWI;EACE,kBAAA;AATN;AAYI;EACE,eAAA;EACA,gBAAA;EACA,cAAA;EACA,gBAAA;AAVN;AAcE;EDhDA,aAAA;EACA,uBAAA;EACA,mBAAA;EACA,iBAAA;EACA,sDAAA;EACA,wDAAA;EACA,sBAAA;EACA,iBAAA;EACA,mBAAA;EACA,+DAAA;EACA,sCAAA;EACA,eAAA;EACA,0DAAA;EACA,mDAAA;ECqCE,4BAAA;EACA,6BAAA;EAEA,sCAAA;EAEA,mCAAA;AADJ;ADvCE;EACE,+CAAA;EACA,iDAAA;ACyCJ;ADtCE;EACE,gEAAA;EACA,2FAAA;EAIA,yFAAA;ACqCJ;AD/BE;EACE,iEAAA;EACA,uEAAA;ACiCJ;AD9BE;EACE,mFAAA;EAIA,mFAAA;AC6BJ;ADxBI;EACE,yFAAA;AC0BN;ADpBI;EACE,6DAAA;ACsBN;AApBa;EACP,uCAAA;AAsBN;AArBM;EACE,qBAAA;AAuBR;;AAnBI;EACE,uCAAA;EACA,mCAAA;EACA,qBAAA;AAsBN;AAnBI;EACE,kCAAA;AAqBN;AAlBI;EACE,0BAAA;EACA,2BAAA;AAoBN;AAjBI;EACE,YAAA;EACA,SAAA;EACA,UAAA;EACA,iCAAA;EACA,kCAAA;AAmBN","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../../css/variables.module\\";\\n\\n.excalidraw {\\n  .dropdown-menu {\\n    position: absolute;\\n    top: 100%;\\n    margin-top: 0.25rem;\\n\\n    &--mobile {\\n      left: 0;\\n      width: 100%;\\n      row-gap: 0.75rem;\\n\\n      .dropdown-menu-container {\\n        padding: 8px 8px;\\n        box-sizing: border-box;\\n        // background-color: var(--island-bg-color);\\n        box-shadow: var(--shadow-island);\\n        border-radius: var(--border-radius-lg);\\n        position: relative;\\n        transition: box-shadow 0.5s ease-in-out;\\n\\n        &.zen-mode {\\n          box-shadow: none;\\n        }\\n      }\\n    }\\n\\n    .dropdown-menu-container {\\n      background-color: var(--island-bg-color);\\n      max-height: calc(100vh - 150px);\\n      overflow-y: auto;\\n      --gap: 2;\\n    }\\n\\n    .dropdown-menu-item-base {\\n      display: flex;\\n      padding: 0 0.625rem;\\n      column-gap: 0.625rem;\\n      font-size: 0.875rem;\\n      color: var(--color-on-surface);\\n      width: 100%;\\n      box-sizing: border-box;\\n      font-weight: normal;\\n      font-family: inherit;\\n    }\\n\\n    .dropdown-menu-item {\\n      background-color: transparent;\\n      border: 1px solid transparent;\\n      align-items: center;\\n      height: 2rem;\\n      cursor: pointer;\\n      border-radius: var(--border-radius-md);\\n\\n      @media screen and (min-width: 1921px) {\\n        height: 2.25rem;\\n      }\\n\\n      &--selected {\\n        background: var(--color-primary-light);\\n        --icon-fill-color: var(--color-primary-darker);\\n      }\\n\\n      &__text {\\n        text-overflow: ellipsis;\\n        overflow: hidden;\\n        white-space: nowrap;\\n      }\\n\\n      &__shortcut {\\n        margin-inline-start: auto;\\n        opacity: 0.5;\\n      }\\n\\n      &:hover {\\n        background-color: var(--button-hover-bg);\\n        text-decoration: none;\\n      }\\n\\n      &:active {\\n        background-color: var(--button-hover-bg);\\n        border-color: var(--color-brand-active);\\n      }\\n\\n      svg {\\n        width: 1rem;\\n        height: 1rem;\\n        display: block;\\n      }\\n    }\\n\\n    .dropdown-menu-item-custom {\\n      margin-top: 0.5rem;\\n    }\\n\\n    .dropdown-menu-group-title {\\n      font-size: 14px;\\n      text-align: left;\\n      margin: 10px 0;\\n      font-weight: 500;\\n    }\\n  }\\n\\n  .dropdown-menu-button {\\n    @include outlineButtonStyles;\\n    width: var(--lg-button-size);\\n    height: var(--lg-button-size);\\n\\n    --background: var(--color-surface-mid);\\n\\n    background-color: var(--background);\\n\\n    @at-root .excalidraw.theme--dark#{&} {\\n      --background: var(--color-surface-high);\\n      &:hover {\\n        --background: #363541;\\n      }\\n    }\\n\\n    &:hover {\\n      --background: var(--color-surface-high);\\n      background-color: var(--background);\\n      text-decoration: none;\\n    }\\n\\n    &:active {\\n      border-color: var(--color-primary);\\n    }\\n\\n    svg {\\n      width: var(--lg-icon-size);\\n      height: var(--lg-icon-size);\\n    }\\n\\n    &--mobile {\\n      border: none;\\n      margin: 0;\\n      padding: 0;\\n      width: var(--default-button-size);\\n      height: var(--default-button-size);\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 23484 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/dropdownMenu/DropdownMenu.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/footer/FooterCenter.scss": (
              /*!****************************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/footer/FooterCenter.scss ***!
                \****************************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ".footer-center {\\n  pointer-events: none;\\n  display: flex;\\n  width: 100%;\\n  justify-content: flex-start;\\n  margin-inline-end: 0.6rem;\\n}\\n.footer-center > * {\\n  pointer-events: var(--ui-pointerEvents);\\n}", "",{"version":3,"sources":["webpack://./../../components/footer/FooterCenter.scss"],"names":[],"mappings":"AAAA;EACE,oBAAA;EAKA,aAAA;EACA,WAAA;EACA,2BAAA;EACA,yBAAA;AAHF;AAJE;EACE,uCAAA;AAMJ","sourcesContent":[".footer-center {\\n  pointer-events: none;\\n  & > * {\\n    pointer-events: var(--ui-pointerEvents);\\n  }\\n\\n  display: flex;\\n  width: 100%;\\n  justify-content: flex-start;\\n  margin-inline-end: 0.6rem;\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vY29tcG9uZW50cy9mb290ZXIvRm9vdGVyQ2VudGVyLnNjc3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNpSTtBQUNqQjtBQUNoSCw4QkFBOEIsdUdBQTJCLENBQUMsZ0hBQXFDO0FBQy9GO0FBQ0EsMERBQTBELHlCQUF5QixrQkFBa0IsZ0JBQWdCLGdDQUFnQyw4QkFBOEIsR0FBRyxzQkFBc0IsNENBQTRDLEdBQUcsT0FBTyw0R0FBNEcsV0FBVyxVQUFVLFVBQVUsV0FBVyxXQUFXLEtBQUssS0FBSyxXQUFXLHlDQUF5Qyx5QkFBeUIsV0FBVyw4Q0FBOEMsS0FBSyxvQkFBb0IsZ0JBQWdCLGdDQUFnQyw4QkFBOEIsR0FBRyxxQkFBcUI7QUFDbHJCO0FBQ0EsaUVBQWUsdUJBQXVCLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9mb290ZXIvRm9vdGVyQ2VudGVyLnNjc3M/ZGE2ZCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIuZm9vdGVyLWNlbnRlciB7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICB3aWR0aDogMTAwJTtcXG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcXG4gIG1hcmdpbi1pbmxpbmUtZW5kOiAwLjZyZW07XFxufVxcbi5mb290ZXItY2VudGVyID4gKiB7XFxuICBwb2ludGVyLWV2ZW50czogdmFyKC0tdWktcG9pbnRlckV2ZW50cyk7XFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uLy4uLy4uL2NvbXBvbmVudHMvZm9vdGVyL0Zvb3RlckNlbnRlci5zY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUFBO0VBQ0Usb0JBQUE7RUFLQSxhQUFBO0VBQ0EsV0FBQTtFQUNBLDJCQUFBO0VBQ0EseUJBQUE7QUFIRjtBQUpFO0VBQ0UsdUNBQUE7QUFNSlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCIuZm9vdGVyLWNlbnRlciB7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG4gICYgPiAqIHtcXG4gICAgcG9pbnRlci1ldmVudHM6IHZhcigtLXVpLXBvaW50ZXJFdmVudHMpO1xcbiAgfVxcblxcbiAgZGlzcGxheTogZmxleDtcXG4gIHdpZHRoOiAxMDAlO1xcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xcbiAgbWFyZ2luLWlubGluZS1lbmQ6IDAuNnJlbTtcXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/footer/FooterCenter.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/live-collaboration/LiveCollaborationTrigger.scss": (
              /*!****************************************************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/live-collaboration/LiveCollaborationTrigger.scss ***!
                \****************************************************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .collab-button {\\n  --button-bg: var(--color-primary);\\n  --button-color: white;\\n  --button-border: var(--color-primary);\\n  --button-width: var(--lg-button-size);\\n  --button-height: var(--lg-button-size);\\n  --button-hover-bg: var(--color-primary-darker);\\n  --button-hover-border: var(--color-primary-darker);\\n  --button-active-bg: var(--color-primary-darker);\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  flex-shrink: 0;\\n}\\n.excalidraw .collab-button.active.active {\\n  background-color: #0fb884;\\n  border-color: #0fb884;\\n}\\n.excalidraw .collab-button.active.active svg {\\n  color: #fff;\\n}\\n.excalidraw .collab-button.active.active:hover, .excalidraw .collab-button.active.active:active {\\n  background-color: #0fb884;\\n  border-color: #0fb884;\\n}\\n.excalidraw.theme--dark .collab-button {\\n  color: var(--color-gray-90);\\n}\\n.excalidraw .CollabButton.is-collaborating {\\n  background-color: var(--button-special-active-bg-color);\\n}\\n.excalidraw .CollabButton.is-collaborating .ToolIcon__icon svg,\\n.excalidraw .CollabButton.is-collaborating .ToolIcon__label {\\n  color: var(--icon-green-fill-color);\\n}\\n.excalidraw .CollabButton-collaborators {\\n  min-width: 1em;\\n  min-height: 1em;\\n  line-height: 1;\\n  position: absolute;\\n  bottom: -5px;\\n  padding: 3px;\\n  border-radius: 50%;\\n  background-color: #b2f2bb;\\n  color: #2b8a3e;\\n  font-size: 0.6rem;\\n  font-family: \\"Cascadia\\";\\n}\\n:root[dir=ltr] .excalidraw .CollabButton-collaborators {\\n  right: -5px;\\n}\\n:root[dir=rtl] .excalidraw .CollabButton-collaborators {\\n  left: -5px;\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/live-collaboration/LiveCollaborationTrigger.scss","webpack://./../../../node_modules/open-color/open-color.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AAAE;EACE,iCAAA;EACA,qBAAA;EACA,qCAAA;EAEA,qCAAA;EACA,sCAAA;EAEA,8CAAA;EACA,kDAAA;EAEA,+CAAA;EAEA,iDAAA;EAEA,cAAA;AAFJ;AAKI;EACE,yBAAA;EACA,qBAAA;AAHN;AAKM;EACE,WAAA;AAHR;AAMM;EAEE,yBAAA;EACA,qBAAA;AALR;AAWI;EACE,2BAAA;AATN;AAaE;EACE,uDAAA;AAXJ;AAaI;;EAEE,mCAAA;AAXN;AAeE;EAOE,cAAA;EACA,eAAA;EACA,cAAA;EACA,kBAAA;EACA,YAAA;EACA,YAAA;EACA,kBAAA;EACA,yBC2NS;ED1NT,cCiOS;EDhOT,iBAAA;EACA,uBAAA;AAnBJ;AAGI;EACE,WAAA;AADN;AAGI;EACE,UAAA;AADN","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../../css/variables.module\\";\\n\\n.excalidraw {\\n  .collab-button {\\n    --button-bg: var(--color-primary);\\n    --button-color: white;\\n    --button-border: var(--color-primary);\\n\\n    --button-width: var(--lg-button-size);\\n    --button-height: var(--lg-button-size);\\n\\n    --button-hover-bg: var(--color-primary-darker);\\n    --button-hover-border: var(--color-primary-darker);\\n\\n    --button-active-bg: var(--color-primary-darker);\\n\\n    box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n\\n    flex-shrink: 0;\\n\\n    // double .active to force specificity\\n    &.active.active {\\n      background-color: #0fb884;\\n      border-color: #0fb884;\\n\\n      svg {\\n        color: #fff;\\n      }\\n\\n      &:hover,\\n      &:active {\\n        background-color: #0fb884;\\n        border-color: #0fb884;\\n      }\\n    }\\n  }\\n\\n  &.theme--dark {\\n    .collab-button {\\n      color: var(--color-gray-90);\\n    }\\n  }\\n\\n  .CollabButton.is-collaborating {\\n    background-color: var(--button-special-active-bg-color);\\n\\n    .ToolIcon__icon svg,\\n    .ToolIcon__label {\\n      color: var(--icon-green-fill-color);\\n    }\\n  }\\n\\n  .CollabButton-collaborators {\\n    :root[dir=\\"ltr\\"] & {\\n      right: -5px;\\n    }\\n    :root[dir=\\"rtl\\"] & {\\n      left: -5px;\\n    }\\n    min-width: 1em;\\n    min-height: 1em;\\n    line-height: 1;\\n    position: absolute;\\n    bottom: -5px;\\n    padding: 3px;\\n    border-radius: 50%;\\n    background-color: $oc-green-2;\\n    color: $oc-green-9;\\n    font-size: 0.6rem;\\n    font-family: \\"Cascadia\\";\\n  }\\n}\\n","//\\n//\\n//  \u{1D5D6} \u{1D5E2} \u{1D5DF} \u{1D5E2} \u{1D5E5}\\n//  v 1.9.1\\n//\\n//  \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\\n\\n\\n//  General\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-white:         #ffffff;\\n$oc-black:         #000000;\\n\\n\\n//  Gray\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-gray-list: (\\n  \\"0\\": #f8f9fa,\\n  \\"1\\": #f1f3f5,\\n  \\"2\\": #e9ecef,\\n  \\"3\\": #dee2e6,\\n  \\"4\\": #ced4da,\\n  \\"5\\": #adb5bd,\\n  \\"6\\": #868e96,\\n  \\"7\\": #495057,\\n  \\"8\\": #343a40,\\n  \\"9\\": #212529\\n);\\n\\n$oc-gray-0: map-get($oc-gray-list, \\"0\\");\\n$oc-gray-1: map-get($oc-gray-list, \\"1\\");\\n$oc-gray-2: map-get($oc-gray-list, \\"2\\");\\n$oc-gray-3: map-get($oc-gray-list, \\"3\\");\\n$oc-gray-4: map-get($oc-gray-list, \\"4\\");\\n$oc-gray-5: map-get($oc-gray-list, \\"5\\");\\n$oc-gray-6: map-get($oc-gray-list, \\"6\\");\\n$oc-gray-7: map-get($oc-gray-list, \\"7\\");\\n$oc-gray-8: map-get($oc-gray-list, \\"8\\");\\n$oc-gray-9: map-get($oc-gray-list, \\"9\\");\\n\\n\\n//  Red\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-red-list: (\\n  \\"0\\": #fff5f5,\\n  \\"1\\": #ffe3e3,\\n  \\"2\\": #ffc9c9,\\n  \\"3\\": #ffa8a8,\\n  \\"4\\": #ff8787,\\n  \\"5\\": #ff6b6b,\\n  \\"6\\": #fa5252,\\n  \\"7\\": #f03e3e,\\n  \\"8\\": #e03131,\\n  \\"9\\": #c92a2a\\n);\\n\\n$oc-red-0: map-get($oc-red-list, \\"0\\");\\n$oc-red-1: map-get($oc-red-list, \\"1\\");\\n$oc-red-2: map-get($oc-red-list, \\"2\\");\\n$oc-red-3: map-get($oc-red-list, \\"3\\");\\n$oc-red-4: map-get($oc-red-list, \\"4\\");\\n$oc-red-5: map-get($oc-red-list, \\"5\\");\\n$oc-red-6: map-get($oc-red-list, \\"6\\");\\n$oc-red-7: map-get($oc-red-list, \\"7\\");\\n$oc-red-8: map-get($oc-red-list, \\"8\\");\\n$oc-red-9: map-get($oc-red-list, \\"9\\");\\n\\n\\n//  Pink\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-pink-list: (\\n  \\"0\\": #fff0f6,\\n  \\"1\\": #ffdeeb,\\n  \\"2\\": #fcc2d7,\\n  \\"3\\": #faa2c1,\\n  \\"4\\": #f783ac,\\n  \\"5\\": #f06595,\\n  \\"6\\": #e64980,\\n  \\"7\\": #d6336c,\\n  \\"8\\": #c2255c,\\n  \\"9\\": #a61e4d\\n);\\n\\n$oc-pink-0: map-get($oc-pink-list, \\"0\\");\\n$oc-pink-1: map-get($oc-pink-list, \\"1\\");\\n$oc-pink-2: map-get($oc-pink-list, \\"2\\");\\n$oc-pink-3: map-get($oc-pink-list, \\"3\\");\\n$oc-pink-4: map-get($oc-pink-list, \\"4\\");\\n$oc-pink-5: map-get($oc-pink-list, \\"5\\");\\n$oc-pink-6: map-get($oc-pink-list, \\"6\\");\\n$oc-pink-7: map-get($oc-pink-list, \\"7\\");\\n$oc-pink-8: map-get($oc-pink-list, \\"8\\");\\n$oc-pink-9: map-get($oc-pink-list, \\"9\\");\\n\\n\\n//  Grape\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-grape-list: (\\n  \\"0\\": #f8f0fc,\\n  \\"1\\": #f3d9fa,\\n  \\"2\\": #eebefa,\\n  \\"3\\": #e599f7,\\n  \\"4\\": #da77f2,\\n  \\"5\\": #cc5de8,\\n  \\"6\\": #be4bdb,\\n  \\"7\\": #ae3ec9,\\n  \\"8\\": #9c36b5,\\n  \\"9\\": #862e9c\\n);\\n\\n$oc-grape-0: map-get($oc-grape-list, \\"0\\");\\n$oc-grape-1: map-get($oc-grape-list, \\"1\\");\\n$oc-grape-2: map-get($oc-grape-list, \\"2\\");\\n$oc-grape-3: map-get($oc-grape-list, \\"3\\");\\n$oc-grape-4: map-get($oc-grape-list, \\"4\\");\\n$oc-grape-5: map-get($oc-grape-list, \\"5\\");\\n$oc-grape-6: map-get($oc-grape-list, \\"6\\");\\n$oc-grape-7: map-get($oc-grape-list, \\"7\\");\\n$oc-grape-8: map-get($oc-grape-list, \\"8\\");\\n$oc-grape-9: map-get($oc-grape-list, \\"9\\");\\n\\n\\n//  Violet\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-violet-list: (\\n  \\"0\\": #f3f0ff,\\n  \\"1\\": #e5dbff,\\n  \\"2\\": #d0bfff,\\n  \\"3\\": #b197fc,\\n  \\"4\\": #9775fa,\\n  \\"5\\": #845ef7,\\n  \\"6\\": #7950f2,\\n  \\"7\\": #7048e8,\\n  \\"8\\": #6741d9,\\n  \\"9\\": #5f3dc4\\n);\\n\\n$oc-violet-0: map-get($oc-violet-list, \\"0\\");\\n$oc-violet-1: map-get($oc-violet-list, \\"1\\");\\n$oc-violet-2: map-get($oc-violet-list, \\"2\\");\\n$oc-violet-3: map-get($oc-violet-list, \\"3\\");\\n$oc-violet-4: map-get($oc-violet-list, \\"4\\");\\n$oc-violet-5: map-get($oc-violet-list, \\"5\\");\\n$oc-violet-6: map-get($oc-violet-list, \\"6\\");\\n$oc-violet-7: map-get($oc-violet-list, \\"7\\");\\n$oc-violet-8: map-get($oc-violet-list, \\"8\\");\\n$oc-violet-9: map-get($oc-violet-list, \\"9\\");\\n\\n\\n//  Indigo\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-indigo-list: (\\n  \\"0\\": #edf2ff,\\n  \\"1\\": #dbe4ff,\\n  \\"2\\": #bac8ff,\\n  \\"3\\": #91a7ff,\\n  \\"4\\": #748ffc,\\n  \\"5\\": #5c7cfa,\\n  \\"6\\": #4c6ef5,\\n  \\"7\\": #4263eb,\\n  \\"8\\": #3b5bdb,\\n  \\"9\\": #364fc7\\n);\\n\\n$oc-indigo-0: map-get($oc-indigo-list, \\"0\\");\\n$oc-indigo-1: map-get($oc-indigo-list, \\"1\\");\\n$oc-indigo-2: map-get($oc-indigo-list, \\"2\\");\\n$oc-indigo-3: map-get($oc-indigo-list, \\"3\\");\\n$oc-indigo-4: map-get($oc-indigo-list, \\"4\\");\\n$oc-indigo-5: map-get($oc-indigo-list, \\"5\\");\\n$oc-indigo-6: map-get($oc-indigo-list, \\"6\\");\\n$oc-indigo-7: map-get($oc-indigo-list, \\"7\\");\\n$oc-indigo-8: map-get($oc-indigo-list, \\"8\\");\\n$oc-indigo-9: map-get($oc-indigo-list, \\"9\\");\\n\\n\\n//  Blue\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-blue-list: (\\n  \\"0\\": #e7f5ff,\\n  \\"1\\": #d0ebff,\\n  \\"2\\": #a5d8ff,\\n  \\"3\\": #74c0fc,\\n  \\"4\\": #4dabf7,\\n  \\"5\\": #339af0,\\n  \\"6\\": #228be6,\\n  \\"7\\": #1c7ed6,\\n  \\"8\\": #1971c2,\\n  \\"9\\": #1864ab\\n);\\n\\n$oc-blue-0: map-get($oc-blue-list, \\"0\\");\\n$oc-blue-1: map-get($oc-blue-list, \\"1\\");\\n$oc-blue-2: map-get($oc-blue-list, \\"2\\");\\n$oc-blue-3: map-get($oc-blue-list, \\"3\\");\\n$oc-blue-4: map-get($oc-blue-list, \\"4\\");\\n$oc-blue-5: map-get($oc-blue-list, \\"5\\");\\n$oc-blue-6: map-get($oc-blue-list, \\"6\\");\\n$oc-blue-7: map-get($oc-blue-list, \\"7\\");\\n$oc-blue-8: map-get($oc-blue-list, \\"8\\");\\n$oc-blue-9: map-get($oc-blue-list, \\"9\\");\\n\\n\\n//  Cyan\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-cyan-list: (\\n  \\"0\\": #e3fafc,\\n  \\"1\\": #c5f6fa,\\n  \\"2\\": #99e9f2,\\n  \\"3\\": #66d9e8,\\n  \\"4\\": #3bc9db,\\n  \\"5\\": #22b8cf,\\n  \\"6\\": #15aabf,\\n  \\"7\\": #1098ad,\\n  \\"8\\": #0c8599,\\n  \\"9\\": #0b7285\\n);\\n\\n$oc-cyan-0: map-get($oc-cyan-list, \\"0\\");\\n$oc-cyan-1: map-get($oc-cyan-list, \\"1\\");\\n$oc-cyan-2: map-get($oc-cyan-list, \\"2\\");\\n$oc-cyan-3: map-get($oc-cyan-list, \\"3\\");\\n$oc-cyan-4: map-get($oc-cyan-list, \\"4\\");\\n$oc-cyan-5: map-get($oc-cyan-list, \\"5\\");\\n$oc-cyan-6: map-get($oc-cyan-list, \\"6\\");\\n$oc-cyan-7: map-get($oc-cyan-list, \\"7\\");\\n$oc-cyan-8: map-get($oc-cyan-list, \\"8\\");\\n$oc-cyan-9: map-get($oc-cyan-list, \\"9\\");\\n\\n\\n//  Teal\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-teal-list: (\\n  \\"0\\": #e6fcf5,\\n  \\"1\\": #c3fae8,\\n  \\"2\\": #96f2d7,\\n  \\"3\\": #63e6be,\\n  \\"4\\": #38d9a9,\\n  \\"5\\": #20c997,\\n  \\"6\\": #12b886,\\n  \\"7\\": #0ca678,\\n  \\"8\\": #099268,\\n  \\"9\\": #087f5b\\n);\\n\\n$oc-teal-0: map-get($oc-teal-list, \\"0\\");\\n$oc-teal-1: map-get($oc-teal-list, \\"1\\");\\n$oc-teal-2: map-get($oc-teal-list, \\"2\\");\\n$oc-teal-3: map-get($oc-teal-list, \\"3\\");\\n$oc-teal-4: map-get($oc-teal-list, \\"4\\");\\n$oc-teal-5: map-get($oc-teal-list, \\"5\\");\\n$oc-teal-6: map-get($oc-teal-list, \\"6\\");\\n$oc-teal-7: map-get($oc-teal-list, \\"7\\");\\n$oc-teal-8: map-get($oc-teal-list, \\"8\\");\\n$oc-teal-9: map-get($oc-teal-list, \\"9\\");\\n\\n\\n//  Green\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-green-list: (\\n  \\"0\\": #ebfbee,\\n  \\"1\\": #d3f9d8,\\n  \\"2\\": #b2f2bb,\\n  \\"3\\": #8ce99a,\\n  \\"4\\": #69db7c,\\n  \\"5\\": #51cf66,\\n  \\"6\\": #40c057,\\n  \\"7\\": #37b24d,\\n  \\"8\\": #2f9e44,\\n  \\"9\\": #2b8a3e\\n);\\n\\n$oc-green-0: map-get($oc-green-list, \\"0\\");\\n$oc-green-1: map-get($oc-green-list, \\"1\\");\\n$oc-green-2: map-get($oc-green-list, \\"2\\");\\n$oc-green-3: map-get($oc-green-list, \\"3\\");\\n$oc-green-4: map-get($oc-green-list, \\"4\\");\\n$oc-green-5: map-get($oc-green-list, \\"5\\");\\n$oc-green-6: map-get($oc-green-list, \\"6\\");\\n$oc-green-7: map-get($oc-green-list, \\"7\\");\\n$oc-green-8: map-get($oc-green-list, \\"8\\");\\n$oc-green-9: map-get($oc-green-list, \\"9\\");\\n\\n\\n//  Lime\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-lime-list: (\\n  \\"0\\": #f4fce3,\\n  \\"1\\": #e9fac8,\\n  \\"2\\": #d8f5a2,\\n  \\"3\\": #c0eb75,\\n  \\"4\\": #a9e34b,\\n  \\"5\\": #94d82d,\\n  \\"6\\": #82c91e,\\n  \\"7\\": #74b816,\\n  \\"8\\": #66a80f,\\n  \\"9\\": #5c940d\\n);\\n\\n$oc-lime-0: map-get($oc-lime-list, \\"0\\");\\n$oc-lime-1: map-get($oc-lime-list, \\"1\\");\\n$oc-lime-2: map-get($oc-lime-list, \\"2\\");\\n$oc-lime-3: map-get($oc-lime-list, \\"3\\");\\n$oc-lime-4: map-get($oc-lime-list, \\"4\\");\\n$oc-lime-5: map-get($oc-lime-list, \\"5\\");\\n$oc-lime-6: map-get($oc-lime-list, \\"6\\");\\n$oc-lime-7: map-get($oc-lime-list, \\"7\\");\\n$oc-lime-8: map-get($oc-lime-list, \\"8\\");\\n$oc-lime-9: map-get($oc-lime-list, \\"9\\");\\n\\n\\n//  Yellow\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-yellow-list: (\\n  \\"0\\": #fff9db,\\n  \\"1\\": #fff3bf,\\n  \\"2\\": #ffec99,\\n  \\"3\\": #ffe066,\\n  \\"4\\": #ffd43b,\\n  \\"5\\": #fcc419,\\n  \\"6\\": #fab005,\\n  \\"7\\": #f59f00,\\n  \\"8\\": #f08c00,\\n  \\"9\\": #e67700\\n);\\n\\n$oc-yellow-0: map-get($oc-yellow-list, \\"0\\");\\n$oc-yellow-1: map-get($oc-yellow-list, \\"1\\");\\n$oc-yellow-2: map-get($oc-yellow-list, \\"2\\");\\n$oc-yellow-3: map-get($oc-yellow-list, \\"3\\");\\n$oc-yellow-4: map-get($oc-yellow-list, \\"4\\");\\n$oc-yellow-5: map-get($oc-yellow-list, \\"5\\");\\n$oc-yellow-6: map-get($oc-yellow-list, \\"6\\");\\n$oc-yellow-7: map-get($oc-yellow-list, \\"7\\");\\n$oc-yellow-8: map-get($oc-yellow-list, \\"8\\");\\n$oc-yellow-9: map-get($oc-yellow-list, \\"9\\");\\n\\n\\n//  Orange\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-orange-list: (\\n  \\"0\\": #fff4e6,\\n  \\"1\\": #ffe8cc,\\n  \\"2\\": #ffd8a8,\\n  \\"3\\": #ffc078,\\n  \\"4\\": #ffa94d,\\n  \\"5\\": #ff922b,\\n  \\"6\\": #fd7e14,\\n  \\"7\\": #f76707,\\n  \\"8\\": #e8590c,\\n  \\"9\\": #d9480f\\n);\\n\\n$oc-orange-0: map-get($oc-orange-list, \\"0\\");\\n$oc-orange-1: map-get($oc-orange-list, \\"1\\");\\n$oc-orange-2: map-get($oc-orange-list, \\"2\\");\\n$oc-orange-3: map-get($oc-orange-list, \\"3\\");\\n$oc-orange-4: map-get($oc-orange-list, \\"4\\");\\n$oc-orange-5: map-get($oc-orange-list, \\"5\\");\\n$oc-orange-6: map-get($oc-orange-list, \\"6\\");\\n$oc-orange-7: map-get($oc-orange-list, \\"7\\");\\n$oc-orange-8: map-get($oc-orange-list, \\"8\\");\\n$oc-orange-9: map-get($oc-orange-list, \\"9\\");\\n\\n\\n//  Color list\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-color-spectrum:   9;\\n\\n$oc-color-list: (\\n  $oc-gray-list:      \\"gray\\",\\n  $oc-red-list:      \\"red\\",\\n  $oc-pink-list:      \\"pink\\",\\n  $oc-grape-list:      \\"grape\\",\\n  $oc-violet-list:      \\"violet\\",\\n  $oc-indigo-list:      \\"indigo\\",\\n  $oc-blue-list:      \\"blue\\",\\n  $oc-cyan-list:      \\"cyan\\",\\n  $oc-teal-list:      \\"teal\\",\\n  $oc-green-list:      \\"green\\",\\n  $oc-lime-list:      \\"lime\\",\\n  $oc-yellow-list:      \\"yellow\\",\\n  $oc-orange-list:      \\"orange\\"\\n);\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 31904 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/live-collaboration/LiveCollaborationTrigger.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/main-menu/DefaultItems.scss": (
              /*!*******************************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/main-menu/DefaultItems.scss ***!
                \*******************************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ".excalidraw .ActiveFile .ActiveFile__fileName {\\n  display: flex;\\n  align-items: center;\\n}\\n.excalidraw .ActiveFile .ActiveFile__fileName span {\\n  text-overflow: ellipsis;\\n  overflow: hidden;\\n  white-space: nowrap;\\n  width: 9.3em;\\n}\\n.excalidraw .ActiveFile .ActiveFile__fileName svg {\\n  width: 1.15em;\\n  margin-inline-end: 0.3em;\\n  transform: scaleY(0.9);\\n}", "",{"version":3,"sources":["webpack://./../../components/main-menu/DefaultItems.scss"],"names":[],"mappings":"AAEI;EACE,aAAA;EACA,mBAAA;AADN;AAGM;EACE,uBAAA;EACA,gBAAA;EACA,mBAAA;EACA,YAAA;AADR;AAIM;EACE,aAAA;EACA,wBAAA;EACA,sBAAA;AAFR","sourcesContent":[".excalidraw {\\n  .ActiveFile {\\n    .ActiveFile__fileName {\\n      display: flex;\\n      align-items: center;\\n\\n      span {\\n        text-overflow: ellipsis;\\n        overflow: hidden;\\n        white-space: nowrap;\\n        width: 9.3em;\\n      }\\n\\n      svg {\\n        width: 1.15em;\\n        margin-inline-end: 0.3em;\\n        transform: scaleY(0.9);\\n      }\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vY29tcG9uZW50cy9tYWluLW1lbnUvRGVmYXVsdEl0ZW1zLnNjc3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNpSTtBQUNqQjtBQUNoSCw4QkFBOEIsdUdBQTJCLENBQUMsZ0hBQXFDO0FBQy9GO0FBQ0EseUZBQXlGLGtCQUFrQix3QkFBd0IsR0FBRyxzREFBc0QsNEJBQTRCLHFCQUFxQix3QkFBd0IsaUJBQWlCLEdBQUcscURBQXFELGtCQUFrQiw2QkFBNkIsMkJBQTJCLEdBQUcsT0FBTywrR0FBK0csVUFBVSxXQUFXLEtBQUssS0FBSyxXQUFXLFdBQVcsV0FBVyxVQUFVLEtBQUssS0FBSyxVQUFVLFdBQVcsV0FBVyxzQ0FBc0MsaUJBQWlCLDZCQUE2QixzQkFBc0IsNEJBQTRCLGdCQUFnQixrQ0FBa0MsMkJBQTJCLDhCQUE4Qix1QkFBdUIsU0FBUyxlQUFlLHdCQUF3QixtQ0FBbUMsaUNBQWlDLFNBQVMsT0FBTyxLQUFLLEdBQUcscUJBQXFCO0FBQzlpQztBQUNBLGlFQUFlLHVCQUF1QixFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvbWFpbi1tZW51L0RlZmF1bHRJdGVtcy5zY3NzPzYwNTkiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLmV4Y2FsaWRyYXcgLkFjdGl2ZUZpbGUgLkFjdGl2ZUZpbGVfX2ZpbGVOYW1lIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbn1cXG4uZXhjYWxpZHJhdyAuQWN0aXZlRmlsZSAuQWN0aXZlRmlsZV9fZmlsZU5hbWUgc3BhbiB7XFxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xcbiAgd2lkdGg6IDkuM2VtO1xcbn1cXG4uZXhjYWxpZHJhdyAuQWN0aXZlRmlsZSAuQWN0aXZlRmlsZV9fZmlsZU5hbWUgc3ZnIHtcXG4gIHdpZHRoOiAxLjE1ZW07XFxuICBtYXJnaW4taW5saW5lLWVuZDogMC4zZW07XFxuICB0cmFuc2Zvcm06IHNjYWxlWSgwLjkpO1xcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi8uLi8uLi9jb21wb25lbnRzL21haW4tbWVudS9EZWZhdWx0SXRlbXMuc2Nzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFFSTtFQUNFLGFBQUE7RUFDQSxtQkFBQTtBQUROO0FBR007RUFDRSx1QkFBQTtFQUNBLGdCQUFBO0VBQ0EsbUJBQUE7RUFDQSxZQUFBO0FBRFI7QUFJTTtFQUNFLGFBQUE7RUFDQSx3QkFBQTtFQUNBLHNCQUFBO0FBRlJcIixcInNvdXJjZXNDb250ZW50XCI6W1wiLmV4Y2FsaWRyYXcge1xcbiAgLkFjdGl2ZUZpbGUge1xcbiAgICAuQWN0aXZlRmlsZV9fZmlsZU5hbWUge1xcbiAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG5cXG4gICAgICBzcGFuIHtcXG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuICAgICAgICB3aWR0aDogOS4zZW07XFxuICAgICAgfVxcblxcbiAgICAgIHN2ZyB7XFxuICAgICAgICB3aWR0aDogMS4xNWVtO1xcbiAgICAgICAgbWFyZ2luLWlubGluZS1lbmQ6IDAuM2VtO1xcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVkoMC45KTtcXG4gICAgICB9XFxuICAgIH1cXG4gIH1cXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/main-menu/DefaultItems.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/welcome-screen/WelcomeScreen.scss": (
              /*!*************************************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/welcome-screen/WelcomeScreen.scss ***!
                \*************************************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ".excalidraw .virgil {\\n  font-family: \\"Virgil\\";\\n}\\n.excalidraw .welcome-screen-decor {\\n  pointer-events: none;\\n  color: var(--color-gray-40);\\n}\\n.excalidraw .welcome-screen-decor a {\\n  --color: var(--color-primary);\\n  color: var(--color);\\n  text-decoration: none;\\n  margin-bottom: -6px;\\n}\\n.excalidraw.theme--dark .welcome-screen-decor {\\n  color: var(--color-gray-60);\\n}\\n@media (max-height: 599px) {\\n  .excalidraw .welcome-screen-decor-hint {\\n    display: none !important;\\n  }\\n}\\n@media (max-width: 1024px), (max-width: 800px) {\\n  .excalidraw .welcome-screen-decor-hint .welcome-screen-decor--help, .excalidraw .welcome-screen-decor-hint .welcome-screen-decor--menu {\\n    display: none;\\n  }\\n}\\n.excalidraw .welcome-screen-decor-hint--help {\\n  display: flex;\\n  position: absolute;\\n  right: 0;\\n  bottom: 100%;\\n}\\n:root[dir=rtl] .excalidraw .welcome-screen-decor-hint--help {\\n  left: 0;\\n  right: auto;\\n}\\n.excalidraw .welcome-screen-decor-hint--help svg {\\n  margin-top: 0.5rem;\\n  width: 85px;\\n  height: 71px;\\n  transform: scaleX(-1) rotate(80deg);\\n}\\n:root[dir=rtl] .excalidraw .welcome-screen-decor-hint--help svg {\\n  transform: rotate(80deg);\\n}\\n.excalidraw .welcome-screen-decor-hint--toolbar {\\n  position: absolute;\\n  top: 100%;\\n  left: 50%;\\n  transform: translateX(-50%);\\n  margin-top: 2.5rem;\\n  display: flex;\\n  align-items: baseline;\\n}\\n.excalidraw .welcome-screen-decor-hint--toolbar .welcome-screen-decor-hint__label {\\n  width: 120px;\\n  position: relative;\\n  top: -0.5rem;\\n}\\n.excalidraw .welcome-screen-decor-hint--toolbar svg {\\n  width: 38px;\\n  height: 78px;\\n}\\n:root[dir=rtl] .excalidraw .welcome-screen-decor-hint--toolbar svg {\\n  transform: scaleX(-1);\\n}\\n.excalidraw .welcome-screen-decor-hint--menu {\\n  position: absolute;\\n  width: 320px;\\n  font-size: 1rem;\\n  top: 100%;\\n  margin-top: 0.25rem;\\n  margin-inline-start: 0.6rem;\\n  display: flex;\\n  align-items: flex-end;\\n  gap: 0.5rem;\\n}\\n.excalidraw .welcome-screen-decor-hint--menu svg {\\n  width: 41px;\\n  height: 94px;\\n}\\n:root[dir=rtl] .excalidraw .welcome-screen-decor-hint--menu svg {\\n  transform: scaleX(-1);\\n}\\n@media (max-width: 860px) {\\n  .excalidraw .welcome-screen-decor-hint--menu .welcome-screen-decor-hint__label {\\n    max-width: 160px;\\n  }\\n}\\n.excalidraw .welcome-screen-center {\\n  display: flex;\\n  flex-direction: column;\\n  gap: 2rem;\\n  justify-content: center;\\n  align-items: center;\\n  position: absolute;\\n  pointer-events: none;\\n  left: 1rem;\\n  top: 1rem;\\n  right: 1rem;\\n  bottom: 1rem;\\n}\\n.excalidraw .welcome-screen-center__logo {\\n  display: flex;\\n  align-items: center;\\n  column-gap: 0.75rem;\\n  font-size: 2.25rem;\\n}\\n.excalidraw .welcome-screen-center__heading {\\n  font-size: 1.125rem;\\n  text-align: center;\\n}\\n.excalidraw .welcome-screen-menu {\\n  display: flex;\\n  flex-direction: column;\\n  gap: 2px;\\n  justify-content: center;\\n  align-items: center;\\n}\\n.excalidraw .welcome-screen-menu-item {\\n  box-sizing: border-box;\\n  pointer-events: var(--ui-pointerEvents);\\n  color: var(--color-gray-50);\\n  font-size: 0.875rem;\\n  width: 100%;\\n  min-width: 300px;\\n  max-width: 400px;\\n  display: grid;\\n  align-items: center;\\n  justify-content: space-between;\\n  background: none;\\n  border: 1px solid transparent;\\n  padding: 0.75rem;\\n  border-radius: var(--border-radius-md);\\n  grid-template-columns: calc(var(--default-icon-size) + 0.5rem) 1fr 3rem;\\n}\\n.excalidraw .welcome-screen-menu-item__text {\\n  display: flex;\\n  align-items: center;\\n  margin-right: auto;\\n  text-align: left;\\n  column-gap: 0.5rem;\\n}\\n.excalidraw .welcome-screen-menu-item__icon {\\n  width: var(--default-icon-size);\\n  height: var(--default-icon-size);\\n}\\n.excalidraw .welcome-screen-menu-item__shortcut {\\n  margin-left: auto;\\n  color: var(--color-gray-40);\\n  font-size: 0.75rem;\\n}\\n.excalidraw .welcome-screen-menu-item:hover {\\n  text-decoration: none;\\n  background: var(--button-hover-bg);\\n}\\n.excalidraw .welcome-screen-menu-item:hover .welcome-screen-menu-item__shortcut {\\n  color: var(--color-gray-50);\\n}\\n.excalidraw .welcome-screen-menu-item:hover .welcome-screen-menu-item__text {\\n  color: var(--color-gray-100);\\n}\\n.excalidraw .welcome-screen-menu-item:active {\\n  background: var(--button-hover-bg);\\n  border-color: var(--color-brand-active);\\n}\\n.excalidraw .welcome-screen-menu-item:active .welcome-screen-menu-item__shortcut {\\n  color: var(--color-gray-50);\\n}\\n.excalidraw .welcome-screen-menu-item:active .welcome-screen-menu-item__text {\\n  color: var(--color-gray-100);\\n}\\n.excalidraw .welcome-screen-menu-item:active--promo {\\n  color: var(--color-promo) !important;\\n}\\n.excalidraw .welcome-screen-menu-item:active--promo:hover .welcome-screen-menu-item__text {\\n  color: var(--color-promo) !important;\\n}\\n.excalidraw.theme--dark .welcome-screen-menu-item {\\n  color: var(--color-gray-60);\\n}\\n.excalidraw.theme--dark .welcome-screen-menu-item__shortcut {\\n  color: var(--color-gray-60);\\n}\\n.excalidraw.theme--dark .welcome-screen-menu-item:hover {\\n  background-color: var(--color-surface-low);\\n}\\n.excalidraw.theme--dark .welcome-screen-menu-item:hover .welcome-screen-menu-item__shortcut {\\n  color: var(--color-gray-50);\\n}\\n.excalidraw.theme--dark .welcome-screen-menu-item:hover .welcome-screen-menu-item__text {\\n  color: var(--color-gray-10);\\n}\\n.excalidraw.theme--dark .welcome-screen-menu-item:active .welcome-screen-menu-item__text {\\n  color: var(--color-gray-10);\\n}\\n@media (max-height: 599px) {\\n  .excalidraw .welcome-screen-center {\\n    margin-top: 4rem;\\n  }\\n}\\n@media (min-height: 600px) and (max-height: 900px) {\\n  .excalidraw .welcome-screen-center {\\n    margin-top: 8rem;\\n  }\\n}\\n@media (max-height: 500px), (max-width: 320px) {\\n  .excalidraw .welcome-screen-center {\\n    display: none;\\n  }\\n}", "",{"version":3,"sources":["webpack://./../../components/welcome-screen/WelcomeScreen.scss"],"names":[],"mappings":"AACE;EACE,qBAAA;AAAJ;AAME;EACE,oBAAA;EAEA,2BAAA;AALJ;AAOI;EACE,6BAAA;EACA,mBAAA;EACA,qBAAA;EACA,mBAAA;AALN;AAUI;EACE,2BAAA;AARN;AAgBI;EADF;IAEI,wBAAA;EAbJ;AACF;AAeI;EAEI;IAEE,aAAA;EAfR;AACF;AAmBI;EACE,aAAA;EACA,kBAAA;EACA,QAAA;EACA,YAAA;AAjBN;AAmBM;EACE,OAAA;EACA,WAAA;AAjBR;AAoBM;EACE,kBAAA;EACA,WAAA;EACA,YAAA;EAEA,mCAAA;AAnBR;AAqBQ;EACE,wBAAA;AAnBV;AAwBI;EACE,kBAAA;EACA,SAAA;EACA,SAAA;EACA,2BAAA;EACA,kBAAA;EACA,aAAA;EACA,qBAAA;AAtBN;AAwBM;EACE,YAAA;EACA,kBAAA;EACA,YAAA;AAtBR;AAyBM;EACE,WAAA;EACA,YAAA;AAvBR;AAyBQ;EACE,qBAAA;AAvBV;AA4BI;EACE,kBAAA;EACA,YAAA;EACA,eAAA;EAEA,SAAA;EACA,mBAAA;EACA,2BAAA;EAEA,aAAA;EACA,qBAAA;EACA,WAAA;AA5BN;AA8BM;EACE,WAAA;EACA,YAAA;AA5BR;AA8BQ;EACE,qBAAA;AA5BV;AAgCM;EACE;IACE,gBAAA;EA9BR;AACF;AAsCE;EACE,aAAA;EACA,sBAAA;EACA,SAAA;EACA,uBAAA;EACA,mBAAA;EACA,kBAAA;EACA,oBAAA;EACA,UAAA;EACA,SAAA;EACA,WAAA;EACA,YAAA;AApCJ;AAuCE;EACE,aAAA;EACA,mBAAA;EACA,mBAAA;EACA,kBAAA;AArCJ;AAwCE;EACE,mBAAA;EACA,kBAAA;AAtCJ;AAyCE;EACE,aAAA;EACA,sBAAA;EACA,QAAA;EACA,uBAAA;EACA,mBAAA;AAvCJ;AA0CE;EACE,sBAAA;EAEA,uCAAA;EAEA,2BAAA;EACA,mBAAA;EAEA,WAAA;EACA,gBAAA;EACA,gBAAA;EACA,aAAA;EACA,mBAAA;EACA,8BAAA;EAEA,gBAAA;EACA,6BAAA;EAEA,gBAAA;EAEA,sCAAA;EAEA,uEAAA;AA/CJ;AAiDI;EACE,aAAA;EACA,mBAAA;EACA,kBAAA;EACA,gBAAA;EACA,kBAAA;AA/CN;AAkDI;EACE,+BAAA;EACA,gCAAA;AAhDN;AAmDI;EACE,iBAAA;EACA,2BAAA;EACA,kBAAA;AAjDN;AAqDE;EACE,qBAAA;EACA,kCAAA;AAnDJ;AAqDI;EACE,2BAAA;AAnDN;AAsDI;EACE,4BAAA;AApDN;AAwDE;EACE,kCAAA;EACA,uCAAA;AAtDJ;AAwDI;EACE,2BAAA;AAtDN;AAyDI;EACE,4BAAA;AAvDN;AA0DI;EACE,oCAAA;AAxDN;AA2DQ;EACE,oCAAA;AAzDV;AAgEI;EACE,2BAAA;AA9DN;AAgEM;EACE,2BAAA;AA9DR;AAkEI;EACE,0CAAA;AAhEN;AAiEM;EACE,2BAAA;AA/DR;AAkEM;EACE,2BAAA;AAhER;AAqEM;EACE,2BAAA;AAnER;AAwEE;EACE;IACE,gBAAA;EAtEJ;AACF;AAwEE;EACE;IACE,gBAAA;EAtEJ;AACF;AAwEE;EACE;IACE,aAAA;EAtEJ;AACF","sourcesContent":[".excalidraw {\\n  .virgil {\\n    font-family: \\"Virgil\\";\\n  }\\n\\n  // WelcomeSreen common\\n  // ---------------------------------------------------------------------------\\n\\n  .welcome-screen-decor {\\n    pointer-events: none;\\n\\n    color: var(--color-gray-40);\\n\\n    a {\\n      --color: var(--color-primary);\\n      color: var(--color);\\n      text-decoration: none;\\n      margin-bottom: -6px;\\n    }\\n  }\\n\\n  &.theme--dark {\\n    .welcome-screen-decor {\\n      color: var(--color-gray-60);\\n    }\\n  }\\n\\n  // WelcomeScreen.Hints\\n  // ---------------------------------------------------------------------------\\n\\n  .welcome-screen-decor-hint {\\n    @media (max-height: 599px) {\\n      display: none !important;\\n    }\\n\\n    @media (max-width: 1024px), (max-width: 800px) {\\n      .welcome-screen-decor {\\n        &--help,\\n        &--menu {\\n          display: none;\\n        }\\n      }\\n    }\\n\\n    &--help {\\n      display: flex;\\n      position: absolute;\\n      right: 0;\\n      bottom: 100%;\\n\\n      :root[dir=\\"rtl\\"] & {\\n        left: 0;\\n        right: auto;\\n      }\\n\\n      svg {\\n        margin-top: 0.5rem;\\n        width: 85px;\\n        height: 71px;\\n\\n        transform: scaleX(-1) rotate(80deg);\\n\\n        :root[dir=\\"rtl\\"] & {\\n          transform: rotate(80deg);\\n        }\\n      }\\n    }\\n\\n    &--toolbar {\\n      position: absolute;\\n      top: 100%;\\n      left: 50%;\\n      transform: translateX(-50%);\\n      margin-top: 2.5rem;\\n      display: flex;\\n      align-items: baseline;\\n\\n      .welcome-screen-decor-hint__label {\\n        width: 120px;\\n        position: relative;\\n        top: -0.5rem;\\n      }\\n\\n      svg {\\n        width: 38px;\\n        height: 78px;\\n\\n        :root[dir=\\"rtl\\"] & {\\n          transform: scaleX(-1);\\n        }\\n      }\\n    }\\n\\n    &--menu {\\n      position: absolute;\\n      width: 320px;\\n      font-size: 1rem;\\n\\n      top: 100%;\\n      margin-top: 0.25rem;\\n      margin-inline-start: 0.6rem;\\n\\n      display: flex;\\n      align-items: flex-end;\\n      gap: 0.5rem;\\n\\n      svg {\\n        width: 41px;\\n        height: 94px;\\n\\n        :root[dir=\\"rtl\\"] & {\\n          transform: scaleX(-1);\\n        }\\n      }\\n\\n      @media (max-width: 860px) {\\n        .welcome-screen-decor-hint__label {\\n          max-width: 160px;\\n        }\\n      }\\n    }\\n  }\\n\\n  // WelcomeSreen.Center\\n  // ---------------------------------------------------------------------------\\n\\n  .welcome-screen-center {\\n    display: flex;\\n    flex-direction: column;\\n    gap: 2rem;\\n    justify-content: center;\\n    align-items: center;\\n    position: absolute;\\n    pointer-events: none;\\n    left: 1rem;\\n    top: 1rem;\\n    right: 1rem;\\n    bottom: 1rem;\\n  }\\n\\n  .welcome-screen-center__logo {\\n    display: flex;\\n    align-items: center;\\n    column-gap: 0.75rem;\\n    font-size: 2.25rem;\\n  }\\n\\n  .welcome-screen-center__heading {\\n    font-size: 1.125rem;\\n    text-align: center;\\n  }\\n\\n  .welcome-screen-menu {\\n    display: flex;\\n    flex-direction: column;\\n    gap: 2px;\\n    justify-content: center;\\n    align-items: center;\\n  }\\n\\n  .welcome-screen-menu-item {\\n    box-sizing: border-box;\\n\\n    pointer-events: var(--ui-pointerEvents);\\n\\n    color: var(--color-gray-50);\\n    font-size: 0.875rem;\\n\\n    width: 100%;\\n    min-width: 300px;\\n    max-width: 400px;\\n    display: grid;\\n    align-items: center;\\n    justify-content: space-between;\\n\\n    background: none;\\n    border: 1px solid transparent;\\n\\n    padding: 0.75rem;\\n\\n    border-radius: var(--border-radius-md);\\n\\n    grid-template-columns: calc(var(--default-icon-size) + 0.5rem) 1fr 3rem;\\n\\n    &__text {\\n      display: flex;\\n      align-items: center;\\n      margin-right: auto;\\n      text-align: left;\\n      column-gap: 0.5rem;\\n    }\\n\\n    &__icon {\\n      width: var(--default-icon-size);\\n      height: var(--default-icon-size);\\n    }\\n\\n    &__shortcut {\\n      margin-left: auto;\\n      color: var(--color-gray-40);\\n      font-size: 0.75rem;\\n    }\\n  }\\n\\n  .welcome-screen-menu-item:hover {\\n    text-decoration: none;\\n    background: var(--button-hover-bg);\\n\\n    .welcome-screen-menu-item__shortcut {\\n      color: var(--color-gray-50);\\n    }\\n\\n    .welcome-screen-menu-item__text {\\n      color: var(--color-gray-100);\\n    }\\n  }\\n\\n  .welcome-screen-menu-item:active {\\n    background: var(--button-hover-bg);\\n    border-color: var(--color-brand-active);\\n\\n    .welcome-screen-menu-item__shortcut {\\n      color: var(--color-gray-50);\\n    }\\n\\n    .welcome-screen-menu-item__text {\\n      color: var(--color-gray-100);\\n    }\\n\\n    &--promo {\\n      color: var(--color-promo) !important;\\n\\n      &:hover {\\n        .welcome-screen-menu-item__text {\\n          color: var(--color-promo) !important;\\n        }\\n      }\\n    }\\n  }\\n\\n  &.theme--dark {\\n    .welcome-screen-menu-item {\\n      color: var(--color-gray-60);\\n\\n      &__shortcut {\\n        color: var(--color-gray-60);\\n      }\\n    }\\n\\n    .welcome-screen-menu-item:hover {\\n      background-color: var(--color-surface-low);\\n      .welcome-screen-menu-item__shortcut {\\n        color: var(--color-gray-50);\\n      }\\n\\n      .welcome-screen-menu-item__text {\\n        color: var(--color-gray-10);\\n      }\\n    }\\n\\n    .welcome-screen-menu-item:active {\\n      .welcome-screen-menu-item__text {\\n        color: var(--color-gray-10);\\n      }\\n    }\\n  }\\n\\n  @media (max-height: 599px) {\\n    .welcome-screen-center {\\n      margin-top: 4rem;\\n    }\\n  }\\n  @media (min-height: 600px) and (max-height: 900px) {\\n    .welcome-screen-center {\\n      margin-top: 8rem;\\n    }\\n  }\\n  @media (max-height: 500px), (max-width: 320px) {\\n    .welcome-screen-center {\\n      display: none;\\n    }\\n  }\\n\\n  // ---------------------------------------------------------------------------\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 25252 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/welcome-screen/WelcomeScreen.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../css/app.scss": (
              /*!*****************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../css/app.scss ***!
                \*****************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ".visually-hidden {\\n  position: absolute !important;\\n  height: 1px;\\n  width: 1px;\\n  overflow: hidden;\\n  clip: rect(1px, 1px, 1px, 1px);\\n  white-space: nowrap;\\n  /* added line */\\n  user-select: none;\\n}\\n\\n.LoadingMessage {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  z-index: 999;\\n  display: flex;\\n  flex-direction: column;\\n  align-items: center;\\n  justify-content: center;\\n  pointer-events: none;\\n}\\n.LoadingMessage .Spinner {\\n  font-size: 2.8em;\\n}\\n.LoadingMessage .LoadingMessage-text {\\n  margin-top: 1em;\\n  font-size: 0.8em;\\n}\\n\\n.LoadingMessage--dark {\\n  background-color: #121212;\\n  color: #ced4da;\\n}", "",{"version":3,"sources":["webpack://./../../css/app.scss"],"names":[],"mappings":"AAEA;EACE,6BAAA;EACA,WAAA;EACA,UAAA;EACA,gBAAA;EACA,8BAAA;EACA,mBAAA;EAAqB,eAAA;EACrB,iBAAA;AAAF;;AAGA;EACE,kBAAA;EACA,MAAA;EACA,QAAA;EACA,SAAA;EACA,OAAA;EACA,YAAA;EACA,aAAA;EACA,sBAAA;EACA,mBAAA;EACA,uBAAA;EACA,oBAAA;AAAF;AAEE;EACE,gBAAA;AAAJ;AAGE;EACE,eAAA;EACA,gBAAA;AADJ;;AAKA;EACE,yBAAA;EACA,cAAA;AAFF","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n.visually-hidden {\\n  position: absolute !important;\\n  height: 1px;\\n  width: 1px;\\n  overflow: hidden;\\n  clip: rect(1px, 1px, 1px, 1px);\\n  white-space: nowrap; /* added line */\\n  user-select: none;\\n}\\n\\n.LoadingMessage {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  z-index: 999;\\n  display: flex;\\n  flex-direction: column;\\n  align-items: center;\\n  justify-content: center;\\n  pointer-events: none;\\n\\n  .Spinner {\\n    font-size: 2.8em;\\n  }\\n\\n  .LoadingMessage-text {\\n    margin-top: 1em;\\n    font-size: 0.8em;\\n  }\\n}\\n\\n.LoadingMessage--dark {\\n  background-color: #121212;\\n  color: #ced4da;\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4472 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../css/app.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../css/styles.scss": (
              /*!********************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../css/styles.scss ***!
                \********************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");
/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");
/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/getUrl.js */ "./node_modules/css-loader/dist/runtime/getUrl.js");
/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__);
// Imports



var ___CSS_LOADER_URL_IMPORT_0___ = new URL(/* asset import */ __webpack_require__(/*! data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="292.4" height="292.4" viewBox="0 0 292 292"><path d="M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z"/></svg> */ "data:image/svg+xml,<svg xmlns=\\"http://www.w3.org/2000/svg\\" width=\\"292.4\\" height=\\"292.4\\" viewBox=\\"0 0 292 292\\"><path d=\\"M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z\\"/></svg>"), __webpack_require__.b);
var ___CSS_LOADER_URL_IMPORT_1___ = new URL(/* asset import */ __webpack_require__(/*! data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="292.4" height="292.4" viewBox="0 0 292 292"><path fill="%23ced4da" d="M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z"/></svg> */ "data:image/svg+xml,<svg xmlns=\\"http://www.w3.org/2000/svg\\" width=\\"292.4\\" height=\\"292.4\\" viewBox=\\"0 0 292 292\\"><path fill=\\"%23ced4da\\" d=\\"M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z\\"/></svg>"), __webpack_require__.b);
var ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
var ___CSS_LOADER_URL_REPLACEMENT_0___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_0___);
var ___CSS_LOADER_URL_REPLACEMENT_1___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_1___);
// Module
___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n:export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw {\\n  --theme-filter: none;\\n  --button-destructive-bg-color: #ffe3e3;\\n  --button-destructive-color: #c92a2a;\\n  --button-gray-1: #e9ecef;\\n  --button-gray-2: #ced4da;\\n  --button-gray-3: #adb5bd;\\n  --button-special-active-bg-color: #ebfbee;\\n  --dialog-border-color: var(--color-gray-20);\\n  --dropdown-icon: url(" + ___CSS_LOADER_URL_REPLACEMENT_0___ + ");\\n  --focus-highlight-color: #a5d8ff;\\n  --icon-fill-color: var(--color-on-surface);\\n  --icon-green-fill-color: #2b8a3e;\\n  --default-bg-color: #ffffff;\\n  --input-bg-color: #ffffff;\\n  --input-border-color: #ced4da;\\n  --input-hover-bg-color: #f1f3f5;\\n  --input-label-color: #495057;\\n  --island-bg-color: #ffffff;\\n  --keybinding-color: var(--color-gray-40);\\n  --link-color: #1c7ed6;\\n  --overlay-bg-color: rgba(255, 255, 255, 0.88);\\n  --popup-bg-color: var(--island-bg-color);\\n  --popup-secondary-bg-color: #f1f3f5;\\n  --popup-text-color: #000000;\\n  --popup-text-inverted-color: #ffffff;\\n  --select-highlight-color: #339af0;\\n  --shadow-island: 0px 0px 0.9310142993927002px 0px rgba(0, 0, 0, 0.17),\\n    0px 0px 3.1270833015441895px 0px rgba(0, 0, 0, 0.08),\\n    0px 7px 14px 0px rgba(0, 0, 0, 0.05);\\n  --button-hover-bg: var(--color-surface-high);\\n  --button-active-bg: var(--color-surface-high);\\n  --button-active-border: var(--color-brand-active);\\n  --default-border-color: var(--color-surface-high);\\n  --default-button-size: 2rem;\\n  --default-icon-size: 1rem;\\n  --lg-button-size: 2.25rem;\\n  --lg-icon-size: 1rem;\\n  --editor-container-padding: 1rem;\\n  --scrollbar-thumb: var(--button-gray-2);\\n  --scrollbar-thumb-hover: var(--button-gray-3);\\n  --modal-shadow: 0px 100px 80px rgba(0, 0, 0, 0.07),\\n    0px 41.7776px 33.4221px rgba(0, 0, 0, 0.0503198),\\n    0px 22.3363px 17.869px rgba(0, 0, 0, 0.0417275),\\n    0px 12.5216px 10.0172px rgba(0, 0, 0, 0.035),\\n    0px 6.6501px 5.32008px rgba(0, 0, 0, 0.0282725),\\n    0px 2.76726px 2.21381px rgba(0, 0, 0, 0.0196802);\\n  --avatar-border-color: var(--color-gray-20);\\n  --sidebar-shadow: 0px 100px 80px rgba(0, 0, 0, 0.07),\\n    0px 41.7776px 33.4221px rgba(0, 0, 0, 0.0503198),\\n    0px 22.3363px 17.869px rgba(0, 0, 0, 0.0417275),\\n    0px 12.5216px 10.0172px rgba(0, 0, 0, 0.035),\\n    0px 6.6501px 5.32008px rgba(0, 0, 0, 0.0282725),\\n    0px 2.76726px 2.21381px rgba(0, 0, 0, 0.0196802);\\n  --sidebar-border-color: var(--color-surface-high);\\n  --sidebar-bg-color: var(--island-bg-color);\\n  --library-dropdown-shadow: 0px 15px 6px rgba(0, 0, 0, 0.01),\\n    0px 8px 5px rgba(0, 0, 0, 0.05), 0px 4px 4px rgba(0, 0, 0, 0.09),\\n    0px 1px 2px rgba(0, 0, 0, 0.1), 0px 0px 0px rgba(0, 0, 0, 0.1);\\n  --space-factor: 0.25rem;\\n  --text-primary-color: var(--color-on-surface);\\n  --color-selection: #6965db;\\n  --color-icon-white: #ffffff;\\n  --color-primary: #6965db;\\n  --color-primary-darker: #5b57d1;\\n  --color-primary-darkest: #4a47b1;\\n  --color-primary-light: #e3e2fe;\\n  --color-primary-light-darker: #d7d5ff;\\n  --color-gray-10: #f5f5f5;\\n  --color-gray-20: #ebebeb;\\n  --color-gray-30: #d6d6d6;\\n  --color-gray-40: #b8b8b8;\\n  --color-gray-50: #999999;\\n  --color-gray-60: #7a7a7a;\\n  --color-gray-70: #5c5c5c;\\n  --color-gray-80: #3d3d3d;\\n  --color-gray-85: #242424;\\n  --color-gray-90: #1e1e1e;\\n  --color-gray-100: #121212;\\n  --color-warning: #fceeca;\\n  --color-warning-dark: #f5c354;\\n  --color-warning-darker: #f3ab2c;\\n  --color-warning-darkest: #ec8b14;\\n  --color-text-warning: var(--text-primary-color);\\n  --color-danger: #db6965;\\n  --color-danger-dark: #db6965;\\n  --color-danger-darker: #d65550;\\n  --color-danger-darkest: #d1413c;\\n  --color-danger-text: black;\\n  --color-danger-background: #fff0f0;\\n  --color-danger-icon-background: #ffdad6;\\n  --color-danger-color: #700000;\\n  --color-danger-icon-color: #700000;\\n  --color-warning-background: var(--color-warning);\\n  --color-warning-icon-background: var(--color-warning-dark);\\n  --color-warning-color: var(--text-primary-color);\\n  --color-warning-icon-color: var(--text-primary-color);\\n  --color-muted: var(--color-gray-30);\\n  --color-muted-darker: var(--color-gray-60);\\n  --color-muted-darkest: var(--color-gray-100);\\n  --color-muted-background: var(--color-gray-80);\\n  --color-muted-background-darker: var(--color-gray-100);\\n  --color-promo: #e70078;\\n  --color-success: #268029;\\n  --color-success-lighter: #cafccc;\\n  --color-logo-icon: var(--color-primary);\\n  --color-logo-text: #190064;\\n  --border-radius-md: 0.375rem;\\n  --border-radius-lg: 0.5rem;\\n  --color-surface-high: hsl(244, 100%, 97%);\\n  --color-surface-mid: hsl(240 25% 96%);\\n  --color-surface-low: hsl(240 25% 94%);\\n  --color-surface-lowest: #ffffff;\\n  --color-on-surface: #1b1b1f;\\n  --color-brand-hover: #5753d0;\\n  --color-on-primary-container: #030064;\\n  --color-surface-primary-container: #e0dfff;\\n  --color-brand-active: #4440bf;\\n  --color-border-outline: #767680;\\n  --color-border-outline-variant: #c5c5d0;\\n  --color-surface-primary-container: #e0dfff;\\n}\\n@media screen and (min-device-width: 1921px) {\\n  .excalidraw {\\n    --lg-button-size: 2.5rem;\\n    --lg-icon-size: 1.25rem;\\n    --default-button-size: 2.25rem;\\n    --default-icon-size: 1.25rem;\\n  }\\n}\\n.excalidraw.theme--dark.theme--dark-background-none {\\n  background: none;\\n}\\n.excalidraw.theme--dark {\\n  --theme-filter: invert(93%) hue-rotate(180deg);\\n  --button-destructive-bg-color: #5a0000;\\n  --button-destructive-color: #ffa8a8;\\n  --button-gray-1: #363636;\\n  --button-gray-2: #272727;\\n  --button-gray-3: #222;\\n  --button-special-active-bg-color: #204624;\\n  --dialog-border-color: var(--color-gray-80);\\n  --dropdown-icon: url(" + ___CSS_LOADER_URL_REPLACEMENT_1___ + ");\\n  --focus-highlight-color: #228be6;\\n  --icon-green-fill-color: #69db7c;\\n  --default-bg-color: #121212;\\n  --input-bg-color: #121212;\\n  --input-border-color: #2e2e2e;\\n  --input-hover-bg-color: #181818;\\n  --input-label-color: #e9ecef;\\n  --island-bg-color: #232329;\\n  --keybinding-color: var(--color-gray-60);\\n  --link-color: #4dabf7;\\n  --overlay-bg-color: rgba(52, 58, 64, 0.12);\\n  --popup-secondary-bg-color: #222;\\n  --popup-text-color: #ced4da;\\n  --popup-text-inverted-color: #2c2c2c;\\n  --select-highlight-color: #4dabf7;\\n  --shadow-island: 0px 0px 0.9310142993927002px 0px rgba(0, 0, 0, 0.17),\\n    0px 0px 3.1270833015441895px 0px rgba(0, 0, 0, 0.08),\\n    0px 7px 14px 0px rgba(0, 0, 0, 0.05);\\n  --modal-shadow: 0px 100px 80px rgba(0, 0, 0, 0.07),\\n    0px 41.7776px 33.4221px rgba(0, 0, 0, 0.0503198),\\n    0px 22.3363px 17.869px rgba(0, 0, 0, 0.0417275),\\n    0px 12.5216px 10.0172px rgba(0, 0, 0, 0.035),\\n    0px 6.6501px 5.32008px rgba(0, 0, 0, 0.0282725),\\n    0px 2.76726px 2.21381px rgba(0, 0, 0, 0.0196802);\\n  --avatar-border-color: var(--color-gray-85);\\n  --scrollbar-thumb: #343a40;\\n  --scrollbar-thumb-hover: #495057;\\n  --color-selection: #3530c4;\\n  --color-icon-white: var(--color-gray-90);\\n  --color-primary: #a8a5ff;\\n  --color-primary-darker: #b2aeff;\\n  --color-primary-darkest: #beb9ff;\\n  --color-primary-light: #4f4d6f;\\n  --color-primary-light-darker: #43415e;\\n  --color-text-warning: var(--color-gray-80);\\n  --color-danger: #ffa8a5;\\n  --color-danger-dark: #672120;\\n  --color-danger-darker: #8f2625;\\n  --color-danger-darkest: #ac2b29;\\n  --color-danger-text: #fbcbcc;\\n  --color-danger-background: #fbcbcc;\\n  --color-danger-icon-background: #672120;\\n  --color-danger-color: #261919;\\n  --color-danger-icon-color: #fbcbcc;\\n  --color-warning-background: var(--color-warning);\\n  --color-warning-icon-background: var(--color-warning-dark);\\n  --color-warning-color: var(--color-gray-80);\\n  --color-warning-icon-color: var(--color-gray-80);\\n  --color-muted: var(--color-gray-80);\\n  --color-muted-darker: var(--color-gray-60);\\n  --color-muted-darkest: var(--color-gray-20);\\n  --color-muted-background: var(--color-gray-40);\\n  --color-muted-background-darker: var(--color-gray-20);\\n  --color-promo: #d297ff;\\n  --color-logo-text: #e2dfff;\\n  --color-surface-high: hsl(245, 10%, 21%);\\n  --color-surface-low: hsl(240, 8%, 15%);\\n  --color-surface-mid: hsl(240 6% 10%);\\n  --color-surface-lowest: hsl(0, 0%, 7%);\\n  --color-on-surface: #e3e3e8;\\n  --color-brand-hover: #bbb8ff;\\n  --color-on-primary-container: #e0dfff;\\n  --color-surface-primary-container: #403e6a;\\n  --color-brand-active: #d0ccff;\\n  --color-border-outline: #8e8d9c;\\n  --color-border-outline-variant: #46464f;\\n  --color-surface-primary-container: #403e6a;\\n}\\n\\n:root {\\n  --zIndex-canvas: 1;\\n  --zIndex-interactiveCanvas: 2;\\n  --zIndex-wysiwyg: 3;\\n  --zIndex-layerUI: 4;\\n  --zIndex-eyeDropperBackdrop: 5;\\n  --zIndex-eyeDropperPreview: 6;\\n  --zIndex-modal: 1000;\\n  --zIndex-popup: 1001;\\n  --zIndex-toast: 999999;\\n  --sab: env(safe-area-inset-bottom);\\n  --sal: env(safe-area-inset-left);\\n  --sar: env(safe-area-inset-right);\\n  --sat: env(safe-area-inset-top);\\n}\\n\\n.excalidraw {\\n  --ui-font: Assistant, system-ui, BlinkMacSystemFont, -apple-system, Segoe UI,\\n    Roboto, Helvetica, Arial, sans-serif;\\n  font-family: var(--ui-font);\\n  position: relative;\\n  overflow: hidden;\\n  color: var(--text-primary-color);\\n  display: flex;\\n  top: 0;\\n  bottom: 0;\\n  left: 0;\\n  right: 0;\\n  height: 100%;\\n  width: 100%;\\n  user-select: none;\\n}\\n.excalidraw button {\\n  cursor: pointer;\\n}\\n.excalidraw:focus {\\n  outline: none;\\n}\\n.excalidraw a {\\n  font-weight: 500;\\n  text-decoration: none;\\n  color: var(--link-color);\\n}\\n.excalidraw a:hover {\\n  text-decoration: underline;\\n}\\n.excalidraw canvas {\\n  touch-action: none;\\n  image-rendering: pixelated;\\n  image-rendering: -moz-crisp-edges;\\n  z-index: var(--zIndex-canvas);\\n}\\n.excalidraw canvas.interactive {\\n  z-index: var(--zIndex-interactiveCanvas);\\n}\\n.excalidraw__canvas-wrapper, .excalidraw__canvas.static {\\n  pointer-events: none;\\n}\\n.excalidraw__canvas {\\n  position: absolute;\\n}\\n.excalidraw__embeddable {\\n  width: 100%;\\n  height: 100%;\\n  border: 0;\\n}\\n.excalidraw__embeddable-container {\\n  position: absolute;\\n  z-index: 2;\\n  transform-origin: top left;\\n  pointer-events: none;\\n}\\n.excalidraw.theme--dark canvas {\\n  filter: var(--theme-filter);\\n}\\n.excalidraw .FixedSideContainer {\\n  padding-top: var(--sat, 0);\\n  padding-right: var(--sar, 0);\\n  padding-bottom: var(--sab, 0);\\n  padding-left: var(--sal, 0);\\n}\\n.excalidraw .panelRow {\\n  display: flex;\\n  justify-content: space-between;\\n}\\n.excalidraw .panelColumn {\\n  display: flex;\\n  flex-direction: column;\\n  row-gap: 0.75rem;\\n}\\n.excalidraw .panelColumn h3,\\n.excalidraw .panelColumn legend,\\n.excalidraw .panelColumn .control-label {\\n  margin: 0;\\n  margin-bottom: 0.25rem;\\n  font-size: 0.75rem;\\n  color: var(--text-primary-color);\\n  font-weight: normal;\\n  display: block;\\n}\\n.excalidraw .panelColumn .control-label input {\\n  display: block;\\n  width: 100%;\\n}\\n.excalidraw .panelColumn legend {\\n  padding: 0;\\n}\\n.excalidraw .panelColumn .iconSelectList {\\n  flex-wrap: wrap;\\n  position: relative;\\n}\\n.excalidraw .panelColumn .buttonList {\\n  flex-wrap: wrap;\\n  display: flex;\\n  column-gap: 0.5rem;\\n  row-gap: 0.5rem;\\n}\\n.excalidraw .panelColumn .buttonList label {\\n  font-size: 0.75rem;\\n}\\n.excalidraw .panelColumn .buttonList input[type=radio],\\n.excalidraw .panelColumn .buttonList input[type=button] {\\n  opacity: 0;\\n  position: absolute;\\n  pointer-events: none;\\n}\\n.excalidraw .panelColumn .buttonList .iconRow {\\n  margin-top: 8px;\\n}\\n.excalidraw .panelColumn fieldset {\\n  margin: 0;\\n  padding: 0;\\n  border: none;\\n}\\n.excalidraw .divider {\\n  width: 1px;\\n  background-color: #e9ecef;\\n  margin: 1px;\\n}\\n.excalidraw .welcome-screen-menu-item:focus-visible,\\n.excalidraw .dropdown-menu-item:focus-visible,\\n.excalidraw button:focus-visible,\\n.excalidraw .buttonList label:focus-within,\\n.excalidraw input:focus-visible {\\n  outline: transparent;\\n  box-shadow: 0 0 0 1px var(--color-brand-hover);\\n}\\n.excalidraw .buttonList .ToolIcon__icon {\\n  all: unset !important;\\n  display: flex !important;\\n}\\n.excalidraw .buttonList button {\\n  background-color: transparent;\\n}\\n.excalidraw .buttonList label,\\n.excalidraw .buttonList button,\\n.excalidraw .buttonList .zIndexButton {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n  padding: 0;\\n}\\n.excalidraw .buttonList label svg,\\n.excalidraw .buttonList button svg,\\n.excalidraw .buttonList .zIndexButton svg {\\n  width: var(--button-width, var(--lg-icon-size));\\n  height: var(--button-height, var(--lg-icon-size));\\n}\\n.excalidraw .buttonList label:hover,\\n.excalidraw .buttonList button:hover,\\n.excalidraw .buttonList .zIndexButton:hover {\\n  background-color: var(--button-hover-bg, var(--island-bg-color));\\n  border-color: var(--button-hover-border, var(--button-border, var(--default-border-color)));\\n  color: var(--button-hover-color, var(--button-color, var(--text-primary-color, inherit)));\\n}\\n.excalidraw .buttonList label:active,\\n.excalidraw .buttonList button:active,\\n.excalidraw .buttonList .zIndexButton:active {\\n  background-color: var(--button-active-bg, var(--island-bg-color));\\n  border-color: var(--button-active-border, var(--color-primary-darkest));\\n}\\n.excalidraw .buttonList label.active,\\n.excalidraw .buttonList button.active,\\n.excalidraw .buttonList .zIndexButton.active {\\n  background-color: var(--button-selected-bg, var(--color-surface-primary-container));\\n  border-color: var(--button-selected-border, var(--color-surface-primary-container));\\n}\\n.excalidraw .buttonList label.active:hover,\\n.excalidraw .buttonList button.active:hover,\\n.excalidraw .buttonList .zIndexButton.active:hover {\\n  background-color: var(--button-selected-hover-bg, var(--color-surface-primary-container));\\n}\\n.excalidraw .buttonList label.active svg,\\n.excalidraw .buttonList button.active svg,\\n.excalidraw .buttonList .zIndexButton.active svg {\\n  color: var(--button-color, var(--color-on-primary-container));\\n}\\n.excalidraw .buttonList label svg,\\n.excalidraw .buttonList button svg,\\n.excalidraw .buttonList .zIndexButton svg {\\n  width: var(--default-icon-size);\\n  height: var(--default-icon-size);\\n}\\n.excalidraw .App-top-bar {\\n  z-index: var(--zIndex-layerUI);\\n  display: flex;\\n  flex-direction: column;\\n  align-items: center;\\n}\\n.excalidraw .App-bottom-bar {\\n  position: absolute;\\n  top: 0;\\n  bottom: 0;\\n  left: 0;\\n  right: 0;\\n  --bar-padding: calc(4 * var(--space-factor));\\n  padding-top: max(var(--bar-padding), var(--sat,0));\\n  padding-right: var(--sar, 0);\\n  padding-bottom: var(--sab, 0);\\n  padding-left: var(--sal, 0);\\n  z-index: 4;\\n  display: flex;\\n  align-items: flex-end;\\n  pointer-events: none;\\n}\\n.excalidraw .App-bottom-bar > .Island {\\n  width: 100%;\\n  max-width: 100%;\\n  min-width: 100%;\\n  box-sizing: border-box;\\n  max-height: 100%;\\n  display: flex;\\n  flex-direction: column;\\n  pointer-events: var(--ui-pointerEvents);\\n}\\n.excalidraw .App-bottom-bar > .Island .panelColumn {\\n  padding: 8px 8px 0 8px;\\n}\\n.excalidraw .App-toolbar {\\n  width: 100%;\\n}\\n.excalidraw .App-toolbar .eraser.ToolIcon:hover {\\n  --icon-fill-color: #fff;\\n  --keybinding-color: #fff;\\n}\\n.excalidraw .App-toolbar .eraser.active {\\n  background-color: var(--color-primary);\\n}\\n.excalidraw .App-toolbar-content {\\n  display: flex;\\n  align-items: center;\\n  justify-content: space-between;\\n  padding: 8px;\\n}\\n.excalidraw .App-toolbar-content .dropdown-menu--mobile {\\n  bottom: 55px;\\n  top: auto;\\n}\\n.excalidraw .App-mobile-menu {\\n  width: 100%;\\n  overflow-x: visible;\\n  overflow-y: auto;\\n  box-sizing: border-box;\\n  margin-bottom: var(--bar-padding);\\n}\\n.excalidraw .App-menu {\\n  display: grid;\\n  color: var(--icon-fill-color);\\n}\\n.excalidraw .shapes-section {\\n  display: flex;\\n  justify-content: center;\\n  pointer-events: none !important;\\n}\\n.excalidraw .shapes-section > * {\\n  pointer-events: var(--ui-pointerEvents);\\n}\\n.excalidraw .App-menu_top {\\n  grid-template-columns: 1fr 2fr 1fr;\\n  grid-gap: 2rem;\\n  align-items: flex-start;\\n  cursor: default;\\n  pointer-events: none !important;\\n}\\n.excalidraw .App-menu_top > * {\\n  pointer-events: var(--ui-pointerEvents);\\n}\\n@media (min-width: 1536px) {\\n  .excalidraw .App-menu_top {\\n    grid-template-columns: 1fr 1fr 1fr;\\n    grid-gap: 3rem;\\n  }\\n}\\n.excalidraw .App-menu_top > *:first-child {\\n  justify-self: flex-start;\\n}\\n.excalidraw .App-menu_top > *:last-child {\\n  justify-self: flex-end;\\n}\\n.excalidraw .App-menu_bottom {\\n  position: absolute;\\n  bottom: 1rem;\\n  display: flex;\\n  justify-content: space-between;\\n  align-items: flex-start;\\n  cursor: default;\\n  pointer-events: none !important;\\n  box-sizing: border-box;\\n  padding: 0 1rem;\\n}\\n.excalidraw .App-menu_bottom--transition-left section {\\n  width: 185px;\\n}\\n.excalidraw .App-menu_bottom section {\\n  display: flex;\\n}\\n.excalidraw .App-menu_bottom > *:first-child {\\n  justify-self: flex-start;\\n}\\n.excalidraw .App-menu_bottom > *:last-child {\\n  justify-self: flex-end;\\n}\\n.excalidraw .App-menu_left {\\n  grid-template-rows: 1fr auto 1fr;\\n  height: 100%;\\n}\\n.excalidraw .App-menu_right {\\n  grid-template-rows: 1fr;\\n  height: 100%;\\n}\\n.excalidraw .App-menu__left {\\n  overflow-y: auto;\\n  padding: 0.75rem;\\n  width: 202px;\\n  box-sizing: border-box;\\n  position: absolute;\\n}\\n.excalidraw .dropdown-select {\\n  height: 1.5rem;\\n  padding: 0;\\n  padding-inline-start: 0.5rem;\\n  padding-inline-end: 1.5rem;\\n  color: var(--icon-fill-color);\\n  background-color: var(--button-gray-1);\\n  border-radius: var(--space-factor);\\n  border: 1px solid var(--button-gray-2);\\n  font-size: 0.8rem;\\n  font-family: inherit;\\n  outline: none;\\n  appearance: none;\\n  background-image: var(--dropdown-icon);\\n  background-repeat: no-repeat;\\n  background-position: right 0.7rem top 50%, 0 0;\\n  background-size: 0.65em auto, 100%;\\n}\\n:root[dir=rtl] .excalidraw .dropdown-select {\\n  background-position: left 0.7rem top 50%, 0 0;\\n}\\n.excalidraw .dropdown-select:focus {\\n  box-shadow: 0 0 0 2px var(--focus-highlight-color);\\n}\\n.excalidraw .dropdown-select:hover {\\n  background-color: var(--button-gray-2);\\n}\\n.excalidraw .dropdown-select:active {\\n  background-color: var(--button-gray-2);\\n}\\n.excalidraw .dropdown-select__language {\\n  height: 2rem;\\n  background-color: var(--island-bg-color);\\n  border-color: var(--default-border-color) !important;\\n  cursor: pointer;\\n}\\n.excalidraw .dropdown-select__language:hover {\\n  background-color: var(--island-bg-color);\\n}\\n.excalidraw .scroll-back-to-content {\\n  border-radius: var(--border-radius-lg);\\n  background-color: var(--island-bg-color);\\n  color: var(--icon-fill-color);\\n  border: 1px solid var(--default-border-color);\\n  padding: 10px 20px;\\n  position: absolute;\\n  left: 50%;\\n  bottom: 30px;\\n  transform: translateX(-50%);\\n  pointer-events: var(--ui-pointerEvents);\\n  font-family: inherit;\\n}\\n.excalidraw .scroll-back-to-content:hover {\\n  background-color: var(--button-hover-bg);\\n}\\n.excalidraw .scroll-back-to-content:active {\\n  border: 1px solid var(--button-active-border);\\n}\\n.excalidraw .help-icon {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n  width: var(--lg-button-size);\\n  height: var(--lg-button-size);\\n}\\n.excalidraw .help-icon svg {\\n  width: var(--button-width, var(--lg-icon-size));\\n  height: var(--button-height, var(--lg-icon-size));\\n}\\n.excalidraw .help-icon:hover {\\n  background-color: var(--button-hover-bg, var(--island-bg-color));\\n  border-color: var(--button-hover-border, var(--button-border, var(--default-border-color)));\\n  color: var(--button-hover-color, var(--button-color, var(--text-primary-color, inherit)));\\n}\\n.excalidraw .help-icon:active {\\n  background-color: var(--button-active-bg, var(--island-bg-color));\\n  border-color: var(--button-active-border, var(--color-primary-darkest));\\n}\\n.excalidraw .help-icon.active {\\n  background-color: var(--button-selected-bg, var(--color-surface-primary-container));\\n  border-color: var(--button-selected-border, var(--color-surface-primary-container));\\n}\\n.excalidraw .help-icon.active:hover {\\n  background-color: var(--button-selected-hover-bg, var(--color-surface-primary-container));\\n}\\n.excalidraw .help-icon.active svg {\\n  color: var(--button-color, var(--color-on-primary-container));\\n}\\n.excalidraw .help-icon:active {\\n  box-shadow: 0 0 0 1px var(--color-brand-active);\\n}\\n.excalidraw .help-icon svg {\\n  width: var(--lg-icon-size);\\n  height: var(--lg-icon-size);\\n}\\n.excalidraw .reset-zoom-button {\\n  font-family: var(--ui-font);\\n}\\n.excalidraw .finalize-button {\\n  display: grid;\\n  grid-auto-flow: column;\\n  gap: 0.4em;\\n  margin-top: auto;\\n  margin-bottom: auto;\\n  margin-inline-start: 0.6em;\\n}\\n.excalidraw .undo-redo-buttons,\\n.excalidraw .eraser-buttons {\\n  display: grid;\\n  grid-auto-flow: column;\\n  margin-top: auto;\\n  margin-bottom: auto;\\n  margin-inline-start: 0.6em;\\n}\\n.excalidraw--mobile.excalidraw aside {\\n  display: none;\\n}\\n.excalidraw--mobile.excalidraw .scroll-back-to-content {\\n  bottom: calc(80px + var(--sab, 0));\\n  z-index: -1;\\n}\\n\\n:root[dir=rtl] .excalidraw .rtl-mirror {\\n  transform: scaleX(-1);\\n}\\n.excalidraw .zen-mode-visibility {\\n  visibility: visible;\\n  opacity: 1;\\n  height: auto;\\n  width: auto;\\n  transition: opacity 0.5s;\\n}\\n.excalidraw .zen-mode-visibility.zen-mode-visibility--hidden {\\n  visibility: hidden;\\n  opacity: 0;\\n  height: 0;\\n  width: 0;\\n  transition: opacity 0.5s;\\n}\\n.excalidraw .disable-pointerEvents {\\n  pointer-events: none !important;\\n}\\n.excalidraw.excalidraw--view-mode .App-menu {\\n  display: flex;\\n  justify-content: space-between;\\n}\\n.excalidraw input[type=text],\\n.excalidraw textarea:not(.excalidraw-wysiwyg) {\\n  color: var(--text-primary-color);\\n  border: 1.5px solid var(--input-border-color);\\n  padding: 0.75rem;\\n  white-space: nowrap;\\n  border-radius: var(--space-factor);\\n  background-color: var(--input-bg-color);\\n}\\n.excalidraw input[type=text]:not(:focus):hover,\\n.excalidraw textarea:not(.excalidraw-wysiwyg):not(:focus):hover {\\n  border-color: var(--color-brand-hover);\\n}\\n.excalidraw input[type=text]:focus,\\n.excalidraw textarea:not(.excalidraw-wysiwyg):focus {\\n  outline: none;\\n  border-color: var(--color-brand-hover);\\n}\\n@media print {\\n  .excalidraw .App-bottom-bar,\\n.excalidraw .FixedSideContainer,\\n.excalidraw .layer-ui__wrapper {\\n    display: none;\\n  }\\n}\\n.excalidraw ::-webkit-scrollbar {\\n  width: 3px;\\n  height: 3px;\\n}\\n.excalidraw select::-webkit-scrollbar {\\n  width: 10px;\\n}\\n.excalidraw ::-webkit-scrollbar-thumb {\\n  background: var(--scrollbar-thumb);\\n  border-radius: 10px;\\n}\\n.excalidraw ::-webkit-scrollbar-thumb:hover {\\n  background: var(--scrollbar-thumb-hover);\\n}\\n.excalidraw ::-webkit-scrollbar-thumb:active {\\n  background: var(--scrollbar-thumb);\\n}\\n.excalidraw .mobile-misc-tools-container {\\n  position: absolute;\\n  top: calc(5rem - var(--editor-container-padding));\\n  right: calc(var(--editor-container-padding) * -1);\\n  display: flex;\\n  flex-direction: column;\\n  border: 1px solid var(--sidebar-border-color);\\n  border-top-left-radius: var(--border-radius-lg);\\n  border-bottom-left-radius: var(--border-radius-lg);\\n  border-right: 0;\\n  overflow: hidden;\\n  background-color: var(--island-bg-color);\\n}\\n.excalidraw .mobile-misc-tools-container .ToolIcon__icon {\\n  width: 2rem;\\n  height: 2rem;\\n  border-radius: 0;\\n}\\n.excalidraw .mobile-misc-tools-container .default-sidebar-trigger {\\n  border: 0;\\n}\\n.excalidraw .App-toolbar--mobile {\\n  overflow: visible;\\n  max-width: 98vw;\\n}\\n.excalidraw .App-toolbar--mobile .ToolIcon__keybinding {\\n  display: none;\\n}\\n.excalidraw .UserList-Wrapper {\\n  margin: 0;\\n  padding: 0;\\n  border: none;\\n  text-align: left;\\n}\\n.excalidraw .UserList-Wrapper legend {\\n  display: block;\\n  font-size: 0.75rem;\\n  font-weight: 400;\\n  margin: 0 0 0.25rem;\\n  padding: 0;\\n}\\n.excalidraw .main-menu-trigger {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n}\\n.excalidraw .main-menu-trigger:active {\\n  box-shadow: 0 0 0 1px var(--color-brand-active);\\n}\\n.excalidraw .App-menu__left {\\n  --button-border: transparent;\\n  --button-bg: var(--color-surface-mid);\\n}\\n.excalidraw.theme--dark.excalidraw .App-menu__left {\\n  --button-hover-bg: #363541;\\n  --button-bg: var(--color-surface-high);\\n}\\n\\n.ErrorSplash.excalidraw {\\n  min-height: 100vh;\\n  padding: 20px 0;\\n  overflow: auto;\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  user-select: text;\\n}\\n.ErrorSplash.excalidraw .ErrorSplash-messageContainer {\\n  display: flex;\\n  flex-direction: column;\\n  align-items: center;\\n  justify-content: center;\\n  padding: 40px;\\n  background-color: #ffe3e3;\\n  border: 3px solid #c92a2a;\\n}\\n.ErrorSplash.excalidraw .ErrorSplash-paragraph {\\n  margin: 15px 0;\\n  max-width: 600px;\\n}\\n.ErrorSplash.excalidraw .ErrorSplash-paragraph.align-center {\\n  text-align: center;\\n}\\n.ErrorSplash.excalidraw .bigger,\\n.ErrorSplash.excalidraw .bigger button {\\n  font-size: 1.1em;\\n}\\n.ErrorSplash.excalidraw .smaller,\\n.ErrorSplash.excalidraw .smaller button {\\n  font-size: 0.9em;\\n}\\n.ErrorSplash.excalidraw .ErrorSplash-details {\\n  display: flex;\\n  flex-direction: column;\\n  align-items: flex-start;\\n}\\n.ErrorSplash.excalidraw .ErrorSplash-details textarea {\\n  width: 100%;\\n  margin: 10px 0;\\n  font-family: \\"Cascadia\\";\\n  font-size: 0.8em;\\n}\\n\\n.excalidraw__embeddable-container .excalidraw__embeddable-container__inner {\\n  overflow: hidden;\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  border-radius: var(--embeddable-radius);\\n}\\n.excalidraw__embeddable-container .excalidraw__embeddable__outer {\\n  width: 100%;\\n  height: 100%;\\n}\\n.excalidraw__embeddable-container .excalidraw__embeddable__outer > * {\\n  border-radius: var(--embeddable-radius);\\n}\\n.excalidraw__embeddable-container .excalidraw__embeddable-hint {\\n  position: absolute;\\n  z-index: 1;\\n  background: rgba(0, 0, 0, 0.5);\\n  padding: 1rem 1.6rem;\\n  border-radius: 12px;\\n  color: #fff;\\n  font-weight: bold;\\n  letter-spacing: 0.6px;\\n  font-family: \\"Assistant\\";\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../css/styles.scss","webpack://./../../css/theme.scss","webpack://./../../../node_modules/open-color/open-color.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AD8HA;EACE,2CAAA;EACA,wBAAA;AC3HF;;ACLA;EACE,oBAAA;EACA,sCAAA;EACA,mCAAA;EACA,wBAAA;EACA,wBAAA;EACA,wBAAA;EACA,yCAAA;EACA,2CAAA;EACA,wDAAA;EACA,gCAAA;EACA,0CAAA;EACA,gCAAA;EACA,2BAAA;EACA,yBAAA;EACA,6BAAA;EACA,+BAAA;EACA,4BAAA;EACA,0BAAA;EACA,wCAAA;EACA,qBAAA;EACA,6CAAA;EACA,wCAAA;EACA,mCAAA;EACA,2BAAA;EACA,oCAAA;EACA,iCAAA;EACA;;wCAAA;EAIA,4CAAA;EACA,6CAAA;EACA,iDAAA;EACA,iDAAA;EAEA,2BAAA;EACA,yBAAA;EACA,yBAAA;EACA,oBAAA;EACA,gCAAA;EASA,uCAAA;EACA,6CAAA;EAEA;;;;;oDAAA;EAMA,2CAAA;EACA;;;;;oDAAA;EAMA,iDAAA;EACA,0CAAA;EACA;;kEAAA;EAIA,uBAAA;EACA,6CAAA;EAEA,0BAAA;EAEA,2BAAA;EAEA,wBAAA;EACA,+BAAA;EACA,gCAAA;EACA,8BAAA;EACA,qCAAA;EAEA,wBAAA;EACA,wBAAA;EACA,wBAAA;EACA,wBAAA;EACA,wBAAA;EACA,wBAAA;EACA,wBAAA;EACA,wBAAA;EACA,wBAAA;EACA,wBAAA;EACA,yBAAA;EAEA,wBAAA;EACA,6BAAA;EACA,+BAAA;EACA,gCAAA;EACA,+CAAA;EAEA,uBAAA;EACA,4BAAA;EACA,8BAAA;EACA,+BAAA;EACA,0BAAA;EAEA,kCAAA;EACA,uCAAA;EACA,6BAAA;EACA,kCAAA;EAEA,gDAAA;EACA,0DAAA;EACA,gDAAA;EACA,qDAAA;EAEA,mCAAA;EACA,0CAAA;EACA,4CAAA;EACA,8CAAA;EACA,sDAAA;EAEA,sBAAA;EACA,wBAAA;EACA,gCAAA;EAEA,uCAAA;EACA,0BAAA;EAEA,4BAAA;EACA,0BAAA;EAEA,yCAAA;EACA,qCAAA;EACA,qCAAA;EACA,+BAAA;EACA,2BAAA;EACA,4BAAA;EACA,qCAAA;EACA,0CAAA;EACA,6BAAA;EACA,+BAAA;EACA,uCAAA;EACA,0CAAA;ADjBF;ACtFE;EA1CF;IA2CI,wBAAA;IACA,uBAAA;IACA,8BAAA;IACA,4BAAA;EDyFF;AACF;ACYI;EACE,gBAAA;ADVN;ACcE;EACE,8CAAA;EACA,sCAAA;EACA,mCAAA;EAEA,wBAAA;EACA,wBAAA;EACA,qBAAA;EACA,yCAAA;EACA,2CAAA;EACA,wDAAA;EACA,gCAAA;EACA,gCAAA;EACA,2BAAA;EACA,yBAAA;EACA,6BAAA;EACA,+BAAA;EACA,4BAAA;EACA,0BAAA;EACA,wCAAA;EACA,qBAAA;EACA,0CAAA;EACA,gCAAA;EACA,2BAAA;EACA,oCAAA;EACA,iCAAA;EACA;;wCAAA;EAIA;;;;;oDAAA;EAMA,2CAAA;EAEA,0BAAA;EACA,gCAAA;EAGA,0BAAA;EAEA,wCAAA;EAEA,wBAAA;EACA,+BAAA;EACA,gCAAA;EACA,8BAAA;EACA,qCAAA;EAEA,0CAAA;EAEA,uBAAA;EACA,4BAAA;EACA,8BAAA;EACA,+BAAA;EACA,4BAAA;EAEA,kCAAA;EACA,uCAAA;EACA,6BAAA;EACA,kCAAA;EAEA,gDAAA;EACA,0DAAA;EACA,2CAAA;EACA,gDAAA;EAEA,mCAAA;EACA,0CAAA;EACA,2CAAA;EACA,8CAAA;EACA,qDAAA;EAEA,sBAAA;EAEA,0BAAA;EAEA,wCAAA;EACA,sCAAA;EACA,oCAAA;EACA,sCAAA;EACA,2BAAA;EACA,4BAAA;EACA,qCAAA;EACA,0CAAA;EACA,6BAAA;EACA,+BAAA;EACA,uCAAA;EACA,0CAAA;AD3BJ;;AAzNA;EACE,kBAAA;EACA,6BAAA;EACA,mBAAA;EACA,mBAAA;EACA,8BAAA;EACA,6BAAA;EAEA,oBAAA;EACA,oBAAA;EACA,sBAAA;EAEA,kCAAA;EACA,gCAAA;EACA,iCAAA;EACA,+BAAA;AA0NF;;AAvNA;EACE;wCAAA;EAEA,2BAAA;EAEA,kBAAA;EACA,gBAAA;EACA,gCAAA;EACA,aAAA;EACA,MAAA;EACA,SAAA;EACA,OAAA;EACA,QAAA;EACA,YAAA;EACA,WAAA;EAeA,iBAAA;AA2MF;AAxNE;EACE,eAAA;AA0NJ;AAvNE;EACE,aAAA;AAyNJ;AA/ME;EACE,gBAAA;EACA,qBAAA;EACA,wBAAA;AAiNJ;AA/MI;EACE,0BAAA;AAiNN;AA7ME;EACE,kBAAA;EAKA,0BAAA;EAEA,iCAAA;EAEA,6BAAA;AAyMJ;AAvMI;EACE,wCAAA;AAyMN;AAlME;EAEE,oBAAA;AAmMJ;AAhME;EACE,kBAAA;AAkMJ;AA/LE;EACE,WAAA;EACA,YAAA;EACA,SAAA;AAiMJ;AA9LE;EACE,kBAAA;EACA,UAAA;EACA,0BAAA;EACA,oBAAA;AAgMJ;AAxLI;EACE,2BAAA;AA0LN;AAtLE;EACE,0BAAA;EACA,4BAAA;EACA,6BAAA;EACA,2BAAA;AAwLJ;AArLE;EACE,aAAA;EACA,8BAAA;AAuLJ;AApLE;EACE,aAAA;EACA,sBAAA;EACA,gBAAA;AAsLJ;AApLI;;;EAGE,SAAA;EACA,sBAAA;EACA,kBAAA;EACA,gCAAA;EACA,mBAAA;EACA,cAAA;AAsLN;AAnLI;EACE,cAAA;EACA,WAAA;AAqLN;AAlLI;EACE,UAAA;AAoLN;AAjLI;EACE,eAAA;EACA,kBAAA;AAmLN;AAhLI;EACE,eAAA;EACA,aAAA;EACA,kBAAA;EACA,eAAA;AAkLN;AAhLM;EACE,kBAAA;AAkLR;AA/KM;;EAEE,UAAA;EACA,kBAAA;EACA,oBAAA;AAiLR;AA9KM;EACE,eAAA;AAgLR;AA5KI;EACE,SAAA;EACA,UAAA;EACA,YAAA;AA8KN;AA1KE;EACE,UAAA;EACA,yBE1JQ;EF2JR,WAAA;AA4KJ;AAzKE;;;;;EAKE,oBAAA;EACA,8CAAA;AA2KJ;AAvKI;EACE,qBAAA;EACA,wBAAA;AAyKN;AAtKI;EACE,6BAAA;AAwKN;AArKI;;;ED1JF,aAAA;EACA,uBAAA;EACA,mBAAA;EACA,iBAAA;EACA,sDAAA;EACA,wDAAA;EACA,sBAAA;EACA,iBAAA;EACA,mBAAA;EACA,+DAAA;EACA,sCAAA;EACA,eAAA;EACA,0DAAA;EACA,mDAAA;ECkJI,UAAA;AAmLN;ADnUE;;;EACE,+CAAA;EACA,iDAAA;ACuUJ;ADpUE;;;EACE,gEAAA;EACA,2FAAA;EAIA,yFAAA;ACqUJ;AD/TE;;;EACE,iEAAA;EACA,uEAAA;ACmUJ;ADhUE;;;EACE,mFAAA;EAIA,mFAAA;ACiUJ;AD5TI;;;EACE,yFAAA;ACgUN;AD1TI;;;EACE,6DAAA;AC8TN;AApNM;;;EACE,+BAAA;EACA,gCAAA;AAwNR;AAnNE;EACE,8BAAA;EACA,aAAA;EACA,sBAAA;EACA,mBAAA;AAqNJ;AAlNE;EACE,kBAAA;EACA,MAAA;EACA,SAAA;EACA,OAAA;EACA,QAAA;EACA,4CAAA;EACA,kDAAA;EACA,4BAAA;EACA,6BAAA;EACA,2BAAA;EACA,UAAA;EACA,aAAA;EACA,qBAAA;EACA,oBAAA;AAoNJ;AAlNI;EACE,WAAA;EACA,eAAA;EACA,eAAA;EACA,sBAAA;EACA,gBAAA;EACA,aAAA;EACA,sBAAA;EACA,uCAAA;AAoNN;AAlNM;EACE,sBAAA;AAoNR;AA/ME;EACE,WAAA;AAiNJ;AA9MM;EACE,uBAAA;EACA,wBAAA;AAgNR;AA9MM;EACE,sCAAA;AAgNR;AA3ME;EACE,aAAA;EACA,mBAAA;EACA,8BAAA;EACA,YAAA;AA6MJ;AA3MI;EACE,YAAA;EACA,SAAA;AA6MN;AAzME;EACE,WAAA;EACA,mBAAA;EACA,gBAAA;EACA,sBAAA;EACA,iCAAA;AA2MJ;AAxME;EACE,aAAA;EACA,6BAAA;AA0MJ;AAvME;EACE,aAAA;EACA,uBAAA;EACA,+BAAA;AAyMJ;AAvMI;EACE,uCAAA;AAyMN;AArME;EACE,kCAAA;EACA,cAAA;EACA,uBAAA;EACA,eAAA;EACA,+BAAA;AAuMJ;AArMI;EACE,uCAAA;AAuMN;AApMI;EAXF;IAYI,kCAAA;IACA,cAAA;EAuMJ;AACF;AApME;EACE,wBAAA;AAsMJ;AAnME;EACE,sBAAA;AAqMJ;AAlME;EACE,kBAAA;EACA,YAAA;EACA,aAAA;EACA,8BAAA;EACA,uBAAA;EACA,eAAA;EACA,+BAAA;EACA,sBAAA;EACA,eAAA;AAoMJ;AAjMM;EACE,YAAA;AAmMR;AA/LI;EACE,aAAA;AAiMN;AA7LE;EACE,wBAAA;AA+LJ;AA5LE;EACE,sBAAA;AA8LJ;AA3LE;EACE,gCAAA;EACA,YAAA;AA6LJ;AA1LE;EACE,uBAAA;EACA,YAAA;AA4LJ;AAzLE;EACE,gBAAA;EACA,gBAAA;EACA,YAAA;EACA,sBAAA;EACA,kBAAA;AA2LJ;AAxLE;EACE,cAAA;EACA,UAAA;EACA,4BAAA;EACA,0BAAA;EACA,6BAAA;EACA,sCAAA;EACA,kCAAA;EACA,sCAAA;EACA,iBAAA;EACA,oBAAA;EACA,aAAA;EACA,gBAAA;EACA,sCAAA;EACA,4BAAA;EACA,8CAAA;EAMA,kCAAA;AAqLJ;AAzLI;EACE,6CAAA;AA2LN;AAtLI;EACE,kDAAA;AAwLN;AArLI;EACE,sCAAA;AAuLN;AApLI;EACE,sCAAA;AAsLN;AAnLI;EACE,YAAA;EACA,wCAAA;EACA,oDAAA;EACA,eAAA;AAqLN;AAnLM;EACE,wCAAA;AAqLR;AAhLE;EACE,sCAAA;EACA,wCAAA;EACA,6BAAA;EAEA,6CAAA;EACA,kBAAA;EACA,kBAAA;EACA,SAAA;EACA,YAAA;EACA,2BAAA;EACA,uCAAA;EACA,oBAAA;AAiLJ;AA/KI;EACE,wCAAA;AAiLN;AA9KI;EACE,6CAAA;AAgLN;AA5KE;ED/YA,aAAA;EACA,uBAAA;EACA,mBAAA;EACA,iBAAA;EACA,sDAAA;EACA,wDAAA;EACA,sBAAA;EACA,iBAAA;EACA,mBAAA;EACA,+DAAA;EACA,sCAAA;EACA,eAAA;EACA,0DAAA;EACA,mDAAA;EAgDA,YAAA;EACA,iDAAA;EACA,0CAAA;ECoVE,4BAAA;EACA,6BAAA;AA4LJ;ADjkBE;EACE,+CAAA;EACA,iDAAA;ACmkBJ;ADhkBE;EACE,gEAAA;EACA,2FAAA;EAIA,yFAAA;AC+jBJ;ADzjBE;EACE,iEAAA;EACA,uEAAA;AC2jBJ;ADxjBE;EACE,mFAAA;EAIA,mFAAA;ACujBJ;ADljBI;EACE,yFAAA;ACojBN;AD9iBI;EACE,6DAAA;ACgjBN;ADtiBE;EACE,+CAAA;ACwiBJ;AApNI;EACE,0BAAA;EACA,2BAAA;AAsNN;AAlNE;EACE,2BAAA;AAoNJ;AAjNE;EACE,aAAA;EACA,sBAAA;EACA,UAAA;EACA,gBAAA;EACA,mBAAA;EACA,0BAAA;AAmNJ;AAhNE;;EAEE,aAAA;EACA,sBAAA;EACA,gBAAA;EACA,mBAAA;EACA,0BAAA;AAkNJ;AA9MI;EACE,aAAA;AAgNN;AA9MI;EACE,kCAAA;EACA,WAAA;AAgNN;;AA3MI;EACE,qBAAA;AA8MN;AA1ME;EACE,mBAAA;EACA,UAAA;EACA,YAAA;EACA,WAAA;EACA,wBAAA;AA4MJ;AA1MI;EACE,kBAAA;EACA,UAAA;EACA,SAAA;EACA,QAAA;EACA,wBAAA;AA4MN;AAxME;EACE,+BAAA;AA0MJ;AAtMI;EACE,aAAA;EACA,8BAAA;AAwMN;AApME;;EAEE,gCAAA;EACA,6CAAA;EACA,gBAAA;EACA,mBAAA;EACA,kCAAA;EACA,uCAAA;AAsMJ;AAnMM;;EACE,sCAAA;AAsMR;AAlMI;;EACE,aAAA;EACA,sCAAA;AAqMN;AAjME;EACE;;;IAGE,aAAA;EAmMJ;AACF;AA9LE;EACE,UAAA;EACA,WAAA;AAgMJ;AA7LE;EACE,WAAA;AA+LJ;AA5LE;EACE,kCAAA;EACA,mBAAA;AA8LJ;AA5LE;EACE,wCAAA;AA8LJ;AA5LE;EACE,kCAAA;AA8LJ;AA3LE;EACE,kBAAA;EACA,iDAAA;EACA,iDAAA;EACA,aAAA;EACA,sBAAA;EACA,6CAAA;EACA,+CAAA;EACA,kDAAA;EACA,eAAA;EACA,gBAAA;EAEA,wCAAA;AA4LJ;AA1LI;EACE,WAAA;EACA,YAAA;EACA,gBAAA;AA4LN;AAzLI;EACE,SAAA;AA2LN;AAvLE;EACE,iBAAA;EACA,eAAA;AAyLJ;AAvLI;EACE,aAAA;AAyLN;AAtLE;EACE,SAAA;EACA,UAAA;EACA,YAAA;EACA,gBAAA;AAwLJ;AAtLI;EACE,cAAA;EACA,kBAAA;EACA,gBAAA;EACA,mBAAA;EACA,UAAA;AAwLN;AApLE;EDngBA,YAAA;EACA,iDAAA;EACA,0CAAA;AC0rBF;ADxrBE;EACE,+CAAA;AC0rBJ;AAxLE;EACE,4BAAA;EACA,qCAAA;AA0LJ;AAxLa;EACP,0BAAA;EACA,sCAAA;AA0LN;;AArLA;EACE,iBAAA;EACA,eAAA;EACA,cAAA;EACA,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,iBAAA;AAwLF;AAtLE;EACE,aAAA;EACA,sBAAA;EACA,mBAAA;EACA,uBAAA;EAEA,aAAA;EACA,yBE3lBO;EF4lBP,yBAAA;AAuLJ;AApLE;EACE,cAAA;EACA,gBAAA;AAsLJ;AApLI;EACE,kBAAA;AAsLN;AAlLE;;EAEE,gBAAA;AAoLJ;AAjLE;;EAEE,gBAAA;AAmLJ;AAhLE;EACE,aAAA;EACA,sBAAA;EACA,uBAAA;AAkLJ;AAhLI;EACE,WAAA;EACA,cAAA;EACA,uBAAA;EACA,gBAAA;AAkLN;;AA5KE;EACE,gBAAA;EACA,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,uCAAA;AA+KJ;AA5KE;EACE,WAAA;EACA,YAAA;AA8KJ;AA7KI;EACE,uCAAA;AA+KN;AA3KE;EACE,kBAAA;EACA,UAAA;EACA,8BAAA;EACA,oBAAA;EACA,mBAAA;EACA,WAAA;EACA,iBAAA;EACA,qBAAA;EACA,wBAAA;AA6KJ","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"./variables.module\\";\\n@import \\"./theme\\";\\n\\n:root {\\n  --zIndex-canvas: 1;\\n  --zIndex-interactiveCanvas: 2;\\n  --zIndex-wysiwyg: 3;\\n  --zIndex-layerUI: 4;\\n  --zIndex-eyeDropperBackdrop: 5;\\n  --zIndex-eyeDropperPreview: 6;\\n\\n  --zIndex-modal: 1000;\\n  --zIndex-popup: 1001;\\n  --zIndex-toast: 999999;\\n\\n  --sab: env(safe-area-inset-bottom);\\n  --sal: env(safe-area-inset-left);\\n  --sar: env(safe-area-inset-right);\\n  --sat: env(safe-area-inset-top);\\n}\\n\\n.excalidraw {\\n  --ui-font: Assistant, system-ui, BlinkMacSystemFont, -apple-system, Segoe UI,\\n    Roboto, Helvetica, Arial, sans-serif;\\n  font-family: var(--ui-font);\\n\\n  position: relative;\\n  overflow: hidden;\\n  color: var(--text-primary-color);\\n  display: flex;\\n  top: 0;\\n  bottom: 0;\\n  left: 0;\\n  right: 0;\\n  height: 100%;\\n  width: 100%;\\n\\n  button {\\n    cursor: pointer;\\n  }\\n\\n  &:focus {\\n    outline: none;\\n  }\\n\\n  // serves 2 purposes:\\n  // 1. prevent selecting text outside the component when double-clicking or\\n  //    dragging inside it (e.g. on canvas)\\n  // 2. prevent selecting UI, both from the inside, and from outside the\\n  //    component (e.g. if you select text in a sidebar)\\n  user-select: none;\\n\\n  a {\\n    font-weight: 500;\\n    text-decoration: none;\\n    color: var(--link-color);\\n\\n    &:hover {\\n      text-decoration: underline;\\n    }\\n  }\\n\\n  canvas {\\n    touch-action: none;\\n\\n    // following props improve blurriness at certain devicePixelRatios.\\n    // AFAIK it doesn't affect export (in fact, export seems sharp either way).\\n\\n    image-rendering: pixelated; // chromium\\n    // NOTE: must be declared *after* the above\\n    image-rendering: -moz-crisp-edges; // FF\\n\\n    z-index: var(--zIndex-canvas);\\n\\n    &.interactive {\\n      z-index: var(--zIndex-interactiveCanvas);\\n    }\\n\\n    // Remove the main canvas from document flow to avoid resizeObserver\\n    // feedback loop (see https://github.com/excalidraw/excalidraw/pull/3379)\\n  }\\n\\n  &__canvas-wrapper,\\n  &__canvas.static {\\n    pointer-events: none;\\n  }\\n\\n  &__canvas {\\n    position: absolute;\\n  }\\n\\n  &__embeddable {\\n    width: 100%;\\n    height: 100%;\\n    border: 0;\\n  }\\n\\n  &__embeddable-container {\\n    position: absolute;\\n    z-index: 2;\\n    transform-origin: top left;\\n    pointer-events: none;\\n  }\\n\\n  &.theme--dark {\\n    // The percentage is inspired by\\n    // https://material.io/design/color/dark-theme.html#properties, which\\n    // recommends surface color of #121212, 93% yields #111111 for #FFF\\n\\n    canvas {\\n      filter: var(--theme-filter);\\n    }\\n  }\\n\\n  .FixedSideContainer {\\n    padding-top: var(--sat, 0);\\n    padding-right: var(--sar, 0);\\n    padding-bottom: var(--sab, 0);\\n    padding-left: var(--sal, 0);\\n  }\\n\\n  .panelRow {\\n    display: flex;\\n    justify-content: space-between;\\n  }\\n\\n  .panelColumn {\\n    display: flex;\\n    flex-direction: column;\\n    row-gap: 0.75rem;\\n\\n    h3,\\n    legend,\\n    .control-label {\\n      margin: 0;\\n      margin-bottom: 0.25rem;\\n      font-size: 0.75rem;\\n      color: var(--text-primary-color);\\n      font-weight: normal;\\n      display: block;\\n    }\\n\\n    .control-label input {\\n      display: block;\\n      width: 100%;\\n    }\\n\\n    legend {\\n      padding: 0;\\n    }\\n\\n    .iconSelectList {\\n      flex-wrap: wrap;\\n      position: relative;\\n    }\\n\\n    .buttonList {\\n      flex-wrap: wrap;\\n      display: flex;\\n      column-gap: 0.5rem;\\n      row-gap: 0.5rem;\\n\\n      label {\\n        font-size: 0.75rem;\\n      }\\n\\n      input[type=\\"radio\\"],\\n      input[type=\\"button\\"] {\\n        opacity: 0;\\n        position: absolute;\\n        pointer-events: none;\\n      }\\n\\n      .iconRow {\\n        margin-top: 8px;\\n      }\\n    }\\n\\n    fieldset {\\n      margin: 0;\\n      padding: 0;\\n      border: none;\\n    }\\n  }\\n\\n  .divider {\\n    width: 1px;\\n    background-color: $oc-gray-2;\\n    margin: 1px;\\n  }\\n\\n  .welcome-screen-menu-item:focus-visible,\\n  .dropdown-menu-item:focus-visible,\\n  button:focus-visible,\\n  .buttonList label:focus-within,\\n  input:focus-visible {\\n    outline: transparent;\\n    box-shadow: 0 0 0 1px var(--color-brand-hover);\\n  }\\n\\n  .buttonList {\\n    .ToolIcon__icon {\\n      all: unset !important;\\n      display: flex !important;\\n    }\\n\\n    button {\\n      background-color: transparent;\\n    }\\n\\n    label,\\n    button,\\n    .zIndexButton {\\n      @include outlineButtonStyles;\\n\\n      padding: 0;\\n\\n      svg {\\n        width: var(--default-icon-size);\\n        height: var(--default-icon-size);\\n      }\\n    }\\n  }\\n\\n  .App-top-bar {\\n    z-index: var(--zIndex-layerUI);\\n    display: flex;\\n    flex-direction: column;\\n    align-items: center;\\n  }\\n\\n  .App-bottom-bar {\\n    position: absolute;\\n    top: 0;\\n    bottom: 0;\\n    left: 0;\\n    right: 0;\\n    --bar-padding: calc(4 * var(--space-factor));\\n    padding-top: #{\\"max(var(--bar-padding), var(--sat,0))\\"};\\n    padding-right: var(--sar, 0);\\n    padding-bottom: var(--sab, 0);\\n    padding-left: var(--sal, 0);\\n    z-index: 4;\\n    display: flex;\\n    align-items: flex-end;\\n    pointer-events: none;\\n\\n    > .Island {\\n      width: 100%;\\n      max-width: 100%;\\n      min-width: 100%;\\n      box-sizing: border-box;\\n      max-height: 100%;\\n      display: flex;\\n      flex-direction: column;\\n      pointer-events: var(--ui-pointerEvents);\\n\\n      .panelColumn {\\n        padding: 8px 8px 0 8px;\\n      }\\n    }\\n  }\\n\\n  .App-toolbar {\\n    width: 100%;\\n\\n    .eraser {\\n      &.ToolIcon:hover {\\n        --icon-fill-color: #fff;\\n        --keybinding-color: #fff;\\n      }\\n      &.active {\\n        background-color: var(--color-primary);\\n      }\\n    }\\n  }\\n\\n  .App-toolbar-content {\\n    display: flex;\\n    align-items: center;\\n    justify-content: space-between;\\n    padding: 8px;\\n\\n    .dropdown-menu--mobile {\\n      bottom: 55px;\\n      top: auto;\\n    }\\n  }\\n\\n  .App-mobile-menu {\\n    width: 100%;\\n    overflow-x: visible;\\n    overflow-y: auto;\\n    box-sizing: border-box;\\n    margin-bottom: var(--bar-padding);\\n  }\\n\\n  .App-menu {\\n    display: grid;\\n    color: var(--icon-fill-color);\\n  }\\n\\n  .shapes-section {\\n    display: flex;\\n    justify-content: center;\\n    pointer-events: none !important;\\n\\n    & > * {\\n      pointer-events: var(--ui-pointerEvents);\\n    }\\n  }\\n\\n  .App-menu_top {\\n    grid-template-columns: 1fr 2fr 1fr;\\n    grid-gap: 2rem;\\n    align-items: flex-start;\\n    cursor: default;\\n    pointer-events: none !important;\\n\\n    & > * {\\n      pointer-events: var(--ui-pointerEvents);\\n    }\\n\\n    @media (min-width: 1536px) {\\n      grid-template-columns: 1fr 1fr 1fr;\\n      grid-gap: 3rem;\\n    }\\n  }\\n\\n  .App-menu_top > *:first-child {\\n    justify-self: flex-start;\\n  }\\n\\n  .App-menu_top > *:last-child {\\n    justify-self: flex-end;\\n  }\\n\\n  .App-menu_bottom {\\n    position: absolute;\\n    bottom: 1rem;\\n    display: flex;\\n    justify-content: space-between;\\n    align-items: flex-start;\\n    cursor: default;\\n    pointer-events: none !important;\\n    box-sizing: border-box;\\n    padding: 0 1rem;\\n\\n    &--transition-left {\\n      section {\\n        width: 185px;\\n      }\\n    }\\n\\n    section {\\n      display: flex;\\n    }\\n  }\\n\\n  .App-menu_bottom > *:first-child {\\n    justify-self: flex-start;\\n  }\\n\\n  .App-menu_bottom > *:last-child {\\n    justify-self: flex-end;\\n  }\\n\\n  .App-menu_left {\\n    grid-template-rows: 1fr auto 1fr;\\n    height: 100%;\\n  }\\n\\n  .App-menu_right {\\n    grid-template-rows: 1fr;\\n    height: 100%;\\n  }\\n\\n  .App-menu__left {\\n    overflow-y: auto;\\n    padding: 0.75rem;\\n    width: 202px;\\n    box-sizing: border-box;\\n    position: absolute;\\n  }\\n\\n  .dropdown-select {\\n    height: 1.5rem;\\n    padding: 0;\\n    padding-inline-start: 0.5rem;\\n    padding-inline-end: 1.5rem;\\n    color: var(--icon-fill-color);\\n    background-color: var(--button-gray-1);\\n    border-radius: var(--space-factor);\\n    border: 1px solid var(--button-gray-2);\\n    font-size: 0.8rem;\\n    font-family: inherit;\\n    outline: none;\\n    appearance: none;\\n    background-image: var(--dropdown-icon);\\n    background-repeat: no-repeat;\\n    background-position: right 0.7rem top 50%, 0 0;\\n\\n    :root[dir=\\"rtl\\"] & {\\n      background-position: left 0.7rem top 50%, 0 0;\\n    }\\n\\n    background-size: 0.65em auto, 100%;\\n\\n    &:focus {\\n      box-shadow: 0 0 0 2px var(--focus-highlight-color);\\n    }\\n\\n    &:hover {\\n      background-color: var(--button-gray-2);\\n    }\\n\\n    &:active {\\n      background-color: var(--button-gray-2);\\n    }\\n\\n    &__language {\\n      height: 2rem;\\n      background-color: var(--island-bg-color);\\n      border-color: var(--default-border-color) !important;\\n      cursor: pointer;\\n\\n      &:hover {\\n        background-color: var(--island-bg-color);\\n      }\\n    }\\n  }\\n\\n  .scroll-back-to-content {\\n    border-radius: var(--border-radius-lg);\\n    background-color: var(--island-bg-color);\\n    color: var(--icon-fill-color);\\n\\n    border: 1px solid var(--default-border-color);\\n    padding: 10px 20px;\\n    position: absolute;\\n    left: 50%;\\n    bottom: 30px;\\n    transform: translateX(-50%);\\n    pointer-events: var(--ui-pointerEvents);\\n    font-family: inherit;\\n\\n    &:hover {\\n      background-color: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      border: 1px solid var(--button-active-border);\\n    }\\n  }\\n\\n  .help-icon {\\n    @include outlineButtonStyles;\\n    @include filledButtonOnCanvas;\\n\\n    width: var(--lg-button-size);\\n    height: var(--lg-button-size);\\n\\n    svg {\\n      width: var(--lg-icon-size);\\n      height: var(--lg-icon-size);\\n    }\\n  }\\n\\n  .reset-zoom-button {\\n    font-family: var(--ui-font);\\n  }\\n\\n  .finalize-button {\\n    display: grid;\\n    grid-auto-flow: column;\\n    gap: 0.4em;\\n    margin-top: auto;\\n    margin-bottom: auto;\\n    margin-inline-start: 0.6em;\\n  }\\n\\n  .undo-redo-buttons,\\n  .eraser-buttons {\\n    display: grid;\\n    grid-auto-flow: column;\\n    margin-top: auto;\\n    margin-bottom: auto;\\n    margin-inline-start: 0.6em;\\n  }\\n\\n  @include isMobile {\\n    aside {\\n      display: none;\\n    }\\n    .scroll-back-to-content {\\n      bottom: calc(80px + var(--sab, 0));\\n      z-index: -1;\\n    }\\n  }\\n\\n  .rtl-mirror {\\n    :root[dir=\\"rtl\\"] & {\\n      transform: scaleX(-1);\\n    }\\n  }\\n\\n  .zen-mode-visibility {\\n    visibility: visible;\\n    opacity: 1;\\n    height: auto;\\n    width: auto;\\n    transition: opacity 0.5s;\\n\\n    &.zen-mode-visibility--hidden {\\n      visibility: hidden;\\n      opacity: 0;\\n      height: 0;\\n      width: 0;\\n      transition: opacity 0.5s;\\n    }\\n  }\\n\\n  .disable-pointerEvents {\\n    pointer-events: none !important;\\n  }\\n\\n  &.excalidraw--view-mode {\\n    .App-menu {\\n      display: flex;\\n      justify-content: space-between;\\n    }\\n  }\\n\\n  input[type=\\"text\\"],\\n  textarea:not(.excalidraw-wysiwyg) {\\n    color: var(--text-primary-color);\\n    border: 1.5px solid var(--input-border-color);\\n    padding: 0.75rem;\\n    white-space: nowrap;\\n    border-radius: var(--space-factor);\\n    background-color: var(--input-bg-color);\\n\\n    &:not(:focus) {\\n      &:hover {\\n        border-color: var(--color-brand-hover);\\n      }\\n    }\\n\\n    &:focus {\\n      outline: none;\\n      border-color: var(--color-brand-hover);\\n    }\\n  }\\n\\n  @media print {\\n    .App-bottom-bar,\\n    .FixedSideContainer,\\n    .layer-ui__wrapper {\\n      display: none;\\n    }\\n  }\\n\\n  // use custom, minimalistic scrollbar\\n  // (doesn't work in Firefox)\\n  ::-webkit-scrollbar {\\n    width: 3px;\\n    height: 3px;\\n  }\\n\\n  select::-webkit-scrollbar {\\n    width: 10px;\\n  }\\n\\n  ::-webkit-scrollbar-thumb {\\n    background: var(--scrollbar-thumb);\\n    border-radius: 10px;\\n  }\\n  ::-webkit-scrollbar-thumb:hover {\\n    background: var(--scrollbar-thumb-hover);\\n  }\\n  ::-webkit-scrollbar-thumb:active {\\n    background: var(--scrollbar-thumb);\\n  }\\n\\n  .mobile-misc-tools-container {\\n    position: absolute;\\n    top: calc(5rem - var(--editor-container-padding));\\n    right: calc(var(--editor-container-padding) * -1);\\n    display: flex;\\n    flex-direction: column;\\n    border: 1px solid var(--sidebar-border-color);\\n    border-top-left-radius: var(--border-radius-lg);\\n    border-bottom-left-radius: var(--border-radius-lg);\\n    border-right: 0;\\n    overflow: hidden;\\n\\n    background-color: var(--island-bg-color);\\n\\n    .ToolIcon__icon {\\n      width: 2rem;\\n      height: 2rem;\\n      border-radius: 0;\\n    }\\n\\n    .default-sidebar-trigger {\\n      border: 0;\\n    }\\n  }\\n\\n  .App-toolbar--mobile {\\n    overflow: visible;\\n    max-width: 98vw;\\n\\n    .ToolIcon__keybinding {\\n      display: none;\\n    }\\n  }\\n  .UserList-Wrapper {\\n    margin: 0;\\n    padding: 0;\\n    border: none;\\n    text-align: left;\\n\\n    legend {\\n      display: block;\\n      font-size: 0.75rem;\\n      font-weight: 400;\\n      margin: 0 0 0.25rem;\\n      padding: 0;\\n    }\\n  }\\n\\n  .main-menu-trigger {\\n    @include filledButtonOnCanvas;\\n  }\\n\\n  .App-menu__left {\\n    --button-border: transparent;\\n    --button-bg: var(--color-surface-mid);\\n\\n    @at-root .excalidraw.theme--dark#{&} {\\n      --button-hover-bg: #363541;\\n      --button-bg: var(--color-surface-high);\\n    }\\n  }\\n}\\n\\n.ErrorSplash.excalidraw {\\n  min-height: 100vh;\\n  padding: 20px 0;\\n  overflow: auto;\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  user-select: text;\\n\\n  .ErrorSplash-messageContainer {\\n    display: flex;\\n    flex-direction: column;\\n    align-items: center;\\n    justify-content: center;\\n\\n    padding: 40px;\\n    background-color: $oc-red-1;\\n    border: 3px solid $oc-red-9;\\n  }\\n\\n  .ErrorSplash-paragraph {\\n    margin: 15px 0;\\n    max-width: 600px;\\n\\n    &.align-center {\\n      text-align: center;\\n    }\\n  }\\n\\n  .bigger,\\n  .bigger button {\\n    font-size: 1.1em;\\n  }\\n\\n  .smaller,\\n  .smaller button {\\n    font-size: 0.9em;\\n  }\\n\\n  .ErrorSplash-details {\\n    display: flex;\\n    flex-direction: column;\\n    align-items: flex-start;\\n\\n    textarea {\\n      width: 100%;\\n      margin: 10px 0;\\n      font-family: \\"Cascadia\\";\\n      font-size: 0.8em;\\n    }\\n  }\\n}\\n\\n.excalidraw__embeddable-container {\\n  .excalidraw__embeddable-container__inner {\\n    overflow: hidden;\\n    display: flex;\\n    align-items: center;\\n    justify-content: center;\\n    border-radius: var(--embeddable-radius);\\n  }\\n\\n  .excalidraw__embeddable__outer {\\n    width: 100%;\\n    height: 100%;\\n    & > * {\\n      border-radius: var(--embeddable-radius);\\n    }\\n  }\\n\\n  .excalidraw__embeddable-hint {\\n    position: absolute;\\n    z-index: 1;\\n    background: rgba(0, 0, 0, 0.5);\\n    padding: 1rem 1.6rem;\\n    border-radius: 12px;\\n    color: #fff;\\n    font-weight: bold;\\n    letter-spacing: 0.6px;\\n    font-family: \\"Assistant\\";\\n  }\\n}\\n","@import \\"open-color/open-color.scss\\";\\n@import \\"./variables.module.scss\\";\\n\\n.excalidraw {\\n  --theme-filter: none;\\n  --button-destructive-bg-color: #{$oc-red-1};\\n  --button-destructive-color: #{$oc-red-9};\\n  --button-gray-1: #{$oc-gray-2};\\n  --button-gray-2: #{$oc-gray-4};\\n  --button-gray-3: #{$oc-gray-5};\\n  --button-special-active-bg-color: #{$oc-green-0};\\n  --dialog-border-color: var(--color-gray-20);\\n  --dropdown-icon: url('data:image/svg+xml,<svg xmlns=\\"http://www.w3.org/2000/svg\\" width=\\"292.4\\" height=\\"292.4\\" viewBox=\\"0 0 292 292\\"><path d=\\"M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z\\"/></svg>');\\n  --focus-highlight-color: #{$oc-blue-2};\\n  --icon-fill-color: var(--color-on-surface);\\n  --icon-green-fill-color: #{$oc-green-9};\\n  --default-bg-color: #{$oc-white};\\n  --input-bg-color: #{$oc-white};\\n  --input-border-color: #{$oc-gray-4};\\n  --input-hover-bg-color: #{$oc-gray-1};\\n  --input-label-color: #{$oc-gray-7};\\n  --island-bg-color: #ffffff;\\n  --keybinding-color: var(--color-gray-40);\\n  --link-color: #{$oc-blue-7};\\n  --overlay-bg-color: #{transparentize($oc-white, 0.12)};\\n  --popup-bg-color: var(--island-bg-color);\\n  --popup-secondary-bg-color: #{$oc-gray-1};\\n  --popup-text-color: #{$oc-black};\\n  --popup-text-inverted-color: #{$oc-white};\\n  --select-highlight-color: #{$oc-blue-5};\\n  --shadow-island: 0px 0px 0.9310142993927002px 0px rgba(0, 0, 0, 0.17),\\n    0px 0px 3.1270833015441895px 0px rgba(0, 0, 0, 0.08),\\n    0px 7px 14px 0px rgba(0, 0, 0, 0.05);\\n\\n  --button-hover-bg: var(--color-surface-high);\\n  --button-active-bg: var(--color-surface-high);\\n  --button-active-border: var(--color-brand-active);\\n  --default-border-color: var(--color-surface-high);\\n\\n  --default-button-size: 2rem;\\n  --default-icon-size: 1rem;\\n  --lg-button-size: 2.25rem;\\n  --lg-icon-size: 1rem;\\n  --editor-container-padding: 1rem;\\n\\n  @media screen and (min-device-width: 1921px) {\\n    --lg-button-size: 2.5rem;\\n    --lg-icon-size: 1.25rem;\\n    --default-button-size: 2.25rem;\\n    --default-icon-size: 1.25rem;\\n  }\\n\\n  --scrollbar-thumb: var(--button-gray-2);\\n  --scrollbar-thumb-hover: var(--button-gray-3);\\n\\n  --modal-shadow: 0px 100px 80px rgba(0, 0, 0, 0.07),\\n    0px 41.7776px 33.4221px rgba(0, 0, 0, 0.0503198),\\n    0px 22.3363px 17.869px rgba(0, 0, 0, 0.0417275),\\n    0px 12.5216px 10.0172px rgba(0, 0, 0, 0.035),\\n    0px 6.6501px 5.32008px rgba(0, 0, 0, 0.0282725),\\n    0px 2.76726px 2.21381px rgba(0, 0, 0, 0.0196802);\\n  --avatar-border-color: var(--color-gray-20);\\n  --sidebar-shadow: 0px 100px 80px rgba(0, 0, 0, 0.07),\\n    0px 41.7776px 33.4221px rgba(0, 0, 0, 0.0503198),\\n    0px 22.3363px 17.869px rgba(0, 0, 0, 0.0417275),\\n    0px 12.5216px 10.0172px rgba(0, 0, 0, 0.035),\\n    0px 6.6501px 5.32008px rgba(0, 0, 0, 0.0282725),\\n    0px 2.76726px 2.21381px rgba(0, 0, 0, 0.0196802);\\n  --sidebar-border-color: var(--color-surface-high);\\n  --sidebar-bg-color: var(--island-bg-color);\\n  --library-dropdown-shadow: 0px 15px 6px rgba(0, 0, 0, 0.01),\\n    0px 8px 5px rgba(0, 0, 0, 0.05), 0px 4px 4px rgba(0, 0, 0, 0.09),\\n    0px 1px 2px rgba(0, 0, 0, 0.1), 0px 0px 0px rgba(0, 0, 0, 0.1);\\n\\n  --space-factor: 0.25rem;\\n  --text-primary-color: var(--color-on-surface);\\n\\n  --color-selection: #6965db;\\n\\n  --color-icon-white: #{$oc-white};\\n\\n  --color-primary: #6965db;\\n  --color-primary-darker: #5b57d1;\\n  --color-primary-darkest: #4a47b1;\\n  --color-primary-light: #e3e2fe;\\n  --color-primary-light-darker: #d7d5ff;\\n\\n  --color-gray-10: #f5f5f5;\\n  --color-gray-20: #ebebeb;\\n  --color-gray-30: #d6d6d6;\\n  --color-gray-40: #b8b8b8;\\n  --color-gray-50: #999999;\\n  --color-gray-60: #7a7a7a;\\n  --color-gray-70: #5c5c5c;\\n  --color-gray-80: #3d3d3d;\\n  --color-gray-85: #242424;\\n  --color-gray-90: #1e1e1e;\\n  --color-gray-100: #121212;\\n\\n  --color-warning: #fceeca;\\n  --color-warning-dark: #f5c354;\\n  --color-warning-darker: #f3ab2c;\\n  --color-warning-darkest: #ec8b14;\\n  --color-text-warning: var(--text-primary-color);\\n\\n  --color-danger: #db6965;\\n  --color-danger-dark: #db6965;\\n  --color-danger-darker: #d65550;\\n  --color-danger-darkest: #d1413c;\\n  --color-danger-text: black;\\n\\n  --color-danger-background: #fff0f0;\\n  --color-danger-icon-background: #ffdad6;\\n  --color-danger-color: #700000;\\n  --color-danger-icon-color: #700000;\\n\\n  --color-warning-background: var(--color-warning);\\n  --color-warning-icon-background: var(--color-warning-dark);\\n  --color-warning-color: var(--text-primary-color);\\n  --color-warning-icon-color: var(--text-primary-color);\\n\\n  --color-muted: var(--color-gray-30);\\n  --color-muted-darker: var(--color-gray-60);\\n  --color-muted-darkest: var(--color-gray-100);\\n  --color-muted-background: var(--color-gray-80);\\n  --color-muted-background-darker: var(--color-gray-100);\\n\\n  --color-promo: #e70078;\\n  --color-success: #268029;\\n  --color-success-lighter: #cafccc;\\n\\n  --color-logo-icon: var(--color-primary);\\n  --color-logo-text: #190064;\\n\\n  --border-radius-md: 0.375rem;\\n  --border-radius-lg: 0.5rem;\\n\\n  --color-surface-high: hsl(244, 100%, 97%);\\n  --color-surface-mid: hsl(240 25% 96%);\\n  --color-surface-low: hsl(240 25% 94%);\\n  --color-surface-lowest: #ffffff;\\n  --color-on-surface: #1b1b1f;\\n  --color-brand-hover: #5753d0;\\n  --color-on-primary-container: #030064;\\n  --color-surface-primary-container: #e0dfff;\\n  --color-brand-active: #4440bf;\\n  --color-border-outline: #767680;\\n  --color-border-outline-variant: #c5c5d0;\\n  --color-surface-primary-container: #e0dfff;\\n\\n  &.theme--dark {\\n    &.theme--dark-background-none {\\n      background: none;\\n    }\\n  }\\n\\n  &.theme--dark {\\n    --theme-filter: #{$theme-filter};\\n    --button-destructive-bg-color: #5a0000;\\n    --button-destructive-color: #{$oc-red-3};\\n\\n    --button-gray-1: #363636;\\n    --button-gray-2: #272727;\\n    --button-gray-3: #222;\\n    --button-special-active-bg-color: #204624;\\n    --dialog-border-color: var(--color-gray-80);\\n    --dropdown-icon: url('data:image/svg+xml,<svg xmlns=\\"http://www.w3.org/2000/svg\\" width=\\"292.4\\" height=\\"292.4\\" viewBox=\\"0 0 292 292\\"><path fill=\\"%23ced4da\\" d=\\"M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z\\"/></svg>');\\n    --focus-highlight-color: #{$oc-blue-6};\\n    --icon-green-fill-color: #{$oc-green-4};\\n    --default-bg-color: #121212;\\n    --input-bg-color: #121212;\\n    --input-border-color: #2e2e2e;\\n    --input-hover-bg-color: #181818;\\n    --input-label-color: #{$oc-gray-2};\\n    --island-bg-color: #232329;\\n    --keybinding-color: var(--color-gray-60);\\n    --link-color: #{$oc-blue-4};\\n    --overlay-bg-color: #{transparentize($oc-gray-8, 0.88)};\\n    --popup-secondary-bg-color: #222;\\n    --popup-text-color: #{$oc-gray-4};\\n    --popup-text-inverted-color: #2c2c2c;\\n    --select-highlight-color: #{$oc-blue-4};\\n    --shadow-island: 0px 0px 0.9310142993927002px 0px rgba(0, 0, 0, 0.17),\\n      0px 0px 3.1270833015441895px 0px rgba(0, 0, 0, 0.08),\\n      0px 7px 14px 0px rgba(0, 0, 0, 0.05);\\n\\n    --modal-shadow: 0px 100px 80px rgba(0, 0, 0, 0.07),\\n      0px 41.7776px 33.4221px rgba(0, 0, 0, 0.0503198),\\n      0px 22.3363px 17.869px rgba(0, 0, 0, 0.0417275),\\n      0px 12.5216px 10.0172px rgba(0, 0, 0, 0.035),\\n      0px 6.6501px 5.32008px rgba(0, 0, 0, 0.0282725),\\n      0px 2.76726px 2.21381px rgba(0, 0, 0, 0.0196802);\\n    --avatar-border-color: var(--color-gray-85);\\n\\n    --scrollbar-thumb: #{$oc-gray-8};\\n    --scrollbar-thumb-hover: #{$oc-gray-7};\\n\\n    // will be inverted to a lighter color.\\n    --color-selection: #3530c4;\\n\\n    --color-icon-white: var(--color-gray-90);\\n\\n    --color-primary: #a8a5ff;\\n    --color-primary-darker: #b2aeff;\\n    --color-primary-darkest: #beb9ff;\\n    --color-primary-light: #4f4d6f;\\n    --color-primary-light-darker: #43415e;\\n\\n    --color-text-warning: var(--color-gray-80);\\n\\n    --color-danger: #ffa8a5;\\n    --color-danger-dark: #672120;\\n    --color-danger-darker: #8f2625;\\n    --color-danger-darkest: #ac2b29;\\n    --color-danger-text: #fbcbcc;\\n\\n    --color-danger-background: #fbcbcc;\\n    --color-danger-icon-background: #672120;\\n    --color-danger-color: #261919;\\n    --color-danger-icon-color: #fbcbcc;\\n\\n    --color-warning-background: var(--color-warning);\\n    --color-warning-icon-background: var(--color-warning-dark);\\n    --color-warning-color: var(--color-gray-80);\\n    --color-warning-icon-color: var(--color-gray-80);\\n\\n    --color-muted: var(--color-gray-80);\\n    --color-muted-darker: var(--color-gray-60);\\n    --color-muted-darkest: var(--color-gray-20);\\n    --color-muted-background: var(--color-gray-40);\\n    --color-muted-background-darker: var(--color-gray-20);\\n\\n    --color-promo: #d297ff;\\n\\n    --color-logo-text: #e2dfff;\\n\\n    --color-surface-high: hsl(245, 10%, 21%);\\n    --color-surface-low: hsl(240, 8%, 15%);\\n    --color-surface-mid: hsl(240 6% 10%);\\n    --color-surface-lowest: hsl(0, 0%, 7%);\\n    --color-on-surface: #e3e3e8;\\n    --color-brand-hover: #bbb8ff;\\n    --color-on-primary-container: #e0dfff;\\n    --color-surface-primary-container: #403e6a;\\n    --color-brand-active: #d0ccff;\\n    --color-border-outline: #8e8d9c;\\n    --color-border-outline-variant: #46464f;\\n    --color-surface-primary-container: #403e6a;\\n  }\\n}\\n","//\\n//\\n//  \u{1D5D6} \u{1D5E2} \u{1D5DF} \u{1D5E2} \u{1D5E5}\\n//  v 1.9.1\\n//\\n//  \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\\n\\n\\n//  General\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-white:         #ffffff;\\n$oc-black:         #000000;\\n\\n\\n//  Gray\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-gray-list: (\\n  \\"0\\": #f8f9fa,\\n  \\"1\\": #f1f3f5,\\n  \\"2\\": #e9ecef,\\n  \\"3\\": #dee2e6,\\n  \\"4\\": #ced4da,\\n  \\"5\\": #adb5bd,\\n  \\"6\\": #868e96,\\n  \\"7\\": #495057,\\n  \\"8\\": #343a40,\\n  \\"9\\": #212529\\n);\\n\\n$oc-gray-0: map-get($oc-gray-list, \\"0\\");\\n$oc-gray-1: map-get($oc-gray-list, \\"1\\");\\n$oc-gray-2: map-get($oc-gray-list, \\"2\\");\\n$oc-gray-3: map-get($oc-gray-list, \\"3\\");\\n$oc-gray-4: map-get($oc-gray-list, \\"4\\");\\n$oc-gray-5: map-get($oc-gray-list, \\"5\\");\\n$oc-gray-6: map-get($oc-gray-list, \\"6\\");\\n$oc-gray-7: map-get($oc-gray-list, \\"7\\");\\n$oc-gray-8: map-get($oc-gray-list, \\"8\\");\\n$oc-gray-9: map-get($oc-gray-list, \\"9\\");\\n\\n\\n//  Red\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-red-list: (\\n  \\"0\\": #fff5f5,\\n  \\"1\\": #ffe3e3,\\n  \\"2\\": #ffc9c9,\\n  \\"3\\": #ffa8a8,\\n  \\"4\\": #ff8787,\\n  \\"5\\": #ff6b6b,\\n  \\"6\\": #fa5252,\\n  \\"7\\": #f03e3e,\\n  \\"8\\": #e03131,\\n  \\"9\\": #c92a2a\\n);\\n\\n$oc-red-0: map-get($oc-red-list, \\"0\\");\\n$oc-red-1: map-get($oc-red-list, \\"1\\");\\n$oc-red-2: map-get($oc-red-list, \\"2\\");\\n$oc-red-3: map-get($oc-red-list, \\"3\\");\\n$oc-red-4: map-get($oc-red-list, \\"4\\");\\n$oc-red-5: map-get($oc-red-list, \\"5\\");\\n$oc-red-6: map-get($oc-red-list, \\"6\\");\\n$oc-red-7: map-get($oc-red-list, \\"7\\");\\n$oc-red-8: map-get($oc-red-list, \\"8\\");\\n$oc-red-9: map-get($oc-red-list, \\"9\\");\\n\\n\\n//  Pink\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-pink-list: (\\n  \\"0\\": #fff0f6,\\n  \\"1\\": #ffdeeb,\\n  \\"2\\": #fcc2d7,\\n  \\"3\\": #faa2c1,\\n  \\"4\\": #f783ac,\\n  \\"5\\": #f06595,\\n  \\"6\\": #e64980,\\n  \\"7\\": #d6336c,\\n  \\"8\\": #c2255c,\\n  \\"9\\": #a61e4d\\n);\\n\\n$oc-pink-0: map-get($oc-pink-list, \\"0\\");\\n$oc-pink-1: map-get($oc-pink-list, \\"1\\");\\n$oc-pink-2: map-get($oc-pink-list, \\"2\\");\\n$oc-pink-3: map-get($oc-pink-list, \\"3\\");\\n$oc-pink-4: map-get($oc-pink-list, \\"4\\");\\n$oc-pink-5: map-get($oc-pink-list, \\"5\\");\\n$oc-pink-6: map-get($oc-pink-list, \\"6\\");\\n$oc-pink-7: map-get($oc-pink-list, \\"7\\");\\n$oc-pink-8: map-get($oc-pink-list, \\"8\\");\\n$oc-pink-9: map-get($oc-pink-list, \\"9\\");\\n\\n\\n//  Grape\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-grape-list: (\\n  \\"0\\": #f8f0fc,\\n  \\"1\\": #f3d9fa,\\n  \\"2\\": #eebefa,\\n  \\"3\\": #e599f7,\\n  \\"4\\": #da77f2,\\n  \\"5\\": #cc5de8,\\n  \\"6\\": #be4bdb,\\n  \\"7\\": #ae3ec9,\\n  \\"8\\": #9c36b5,\\n  \\"9\\": #862e9c\\n);\\n\\n$oc-grape-0: map-get($oc-grape-list, \\"0\\");\\n$oc-grape-1: map-get($oc-grape-list, \\"1\\");\\n$oc-grape-2: map-get($oc-grape-list, \\"2\\");\\n$oc-grape-3: map-get($oc-grape-list, \\"3\\");\\n$oc-grape-4: map-get($oc-grape-list, \\"4\\");\\n$oc-grape-5: map-get($oc-grape-list, \\"5\\");\\n$oc-grape-6: map-get($oc-grape-list, \\"6\\");\\n$oc-grape-7: map-get($oc-grape-list, \\"7\\");\\n$oc-grape-8: map-get($oc-grape-list, \\"8\\");\\n$oc-grape-9: map-get($oc-grape-list, \\"9\\");\\n\\n\\n//  Violet\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-violet-list: (\\n  \\"0\\": #f3f0ff,\\n  \\"1\\": #e5dbff,\\n  \\"2\\": #d0bfff,\\n  \\"3\\": #b197fc,\\n  \\"4\\": #9775fa,\\n  \\"5\\": #845ef7,\\n  \\"6\\": #7950f2,\\n  \\"7\\": #7048e8,\\n  \\"8\\": #6741d9,\\n  \\"9\\": #5f3dc4\\n);\\n\\n$oc-violet-0: map-get($oc-violet-list, \\"0\\");\\n$oc-violet-1: map-get($oc-violet-list, \\"1\\");\\n$oc-violet-2: map-get($oc-violet-list, \\"2\\");\\n$oc-violet-3: map-get($oc-violet-list, \\"3\\");\\n$oc-violet-4: map-get($oc-violet-list, \\"4\\");\\n$oc-violet-5: map-get($oc-violet-list, \\"5\\");\\n$oc-violet-6: map-get($oc-violet-list, \\"6\\");\\n$oc-violet-7: map-get($oc-violet-list, \\"7\\");\\n$oc-violet-8: map-get($oc-violet-list, \\"8\\");\\n$oc-violet-9: map-get($oc-violet-list, \\"9\\");\\n\\n\\n//  Indigo\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-indigo-list: (\\n  \\"0\\": #edf2ff,\\n  \\"1\\": #dbe4ff,\\n  \\"2\\": #bac8ff,\\n  \\"3\\": #91a7ff,\\n  \\"4\\": #748ffc,\\n  \\"5\\": #5c7cfa,\\n  \\"6\\": #4c6ef5,\\n  \\"7\\": #4263eb,\\n  \\"8\\": #3b5bdb,\\n  \\"9\\": #364fc7\\n);\\n\\n$oc-indigo-0: map-get($oc-indigo-list, \\"0\\");\\n$oc-indigo-1: map-get($oc-indigo-list, \\"1\\");\\n$oc-indigo-2: map-get($oc-indigo-list, \\"2\\");\\n$oc-indigo-3: map-get($oc-indigo-list, \\"3\\");\\n$oc-indigo-4: map-get($oc-indigo-list, \\"4\\");\\n$oc-indigo-5: map-get($oc-indigo-list, \\"5\\");\\n$oc-indigo-6: map-get($oc-indigo-list, \\"6\\");\\n$oc-indigo-7: map-get($oc-indigo-list, \\"7\\");\\n$oc-indigo-8: map-get($oc-indigo-list, \\"8\\");\\n$oc-indigo-9: map-get($oc-indigo-list, \\"9\\");\\n\\n\\n//  Blue\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-blue-list: (\\n  \\"0\\": #e7f5ff,\\n  \\"1\\": #d0ebff,\\n  \\"2\\": #a5d8ff,\\n  \\"3\\": #74c0fc,\\n  \\"4\\": #4dabf7,\\n  \\"5\\": #339af0,\\n  \\"6\\": #228be6,\\n  \\"7\\": #1c7ed6,\\n  \\"8\\": #1971c2,\\n  \\"9\\": #1864ab\\n);\\n\\n$oc-blue-0: map-get($oc-blue-list, \\"0\\");\\n$oc-blue-1: map-get($oc-blue-list, \\"1\\");\\n$oc-blue-2: map-get($oc-blue-list, \\"2\\");\\n$oc-blue-3: map-get($oc-blue-list, \\"3\\");\\n$oc-blue-4: map-get($oc-blue-list, \\"4\\");\\n$oc-blue-5: map-get($oc-blue-list, \\"5\\");\\n$oc-blue-6: map-get($oc-blue-list, \\"6\\");\\n$oc-blue-7: map-get($oc-blue-list, \\"7\\");\\n$oc-blue-8: map-get($oc-blue-list, \\"8\\");\\n$oc-blue-9: map-get($oc-blue-list, \\"9\\");\\n\\n\\n//  Cyan\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-cyan-list: (\\n  \\"0\\": #e3fafc,\\n  \\"1\\": #c5f6fa,\\n  \\"2\\": #99e9f2,\\n  \\"3\\": #66d9e8,\\n  \\"4\\": #3bc9db,\\n  \\"5\\": #22b8cf,\\n  \\"6\\": #15aabf,\\n  \\"7\\": #1098ad,\\n  \\"8\\": #0c8599,\\n  \\"9\\": #0b7285\\n);\\n\\n$oc-cyan-0: map-get($oc-cyan-list, \\"0\\");\\n$oc-cyan-1: map-get($oc-cyan-list, \\"1\\");\\n$oc-cyan-2: map-get($oc-cyan-list, \\"2\\");\\n$oc-cyan-3: map-get($oc-cyan-list, \\"3\\");\\n$oc-cyan-4: map-get($oc-cyan-list, \\"4\\");\\n$oc-cyan-5: map-get($oc-cyan-list, \\"5\\");\\n$oc-cyan-6: map-get($oc-cyan-list, \\"6\\");\\n$oc-cyan-7: map-get($oc-cyan-list, \\"7\\");\\n$oc-cyan-8: map-get($oc-cyan-list, \\"8\\");\\n$oc-cyan-9: map-get($oc-cyan-list, \\"9\\");\\n\\n\\n//  Teal\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-teal-list: (\\n  \\"0\\": #e6fcf5,\\n  \\"1\\": #c3fae8,\\n  \\"2\\": #96f2d7,\\n  \\"3\\": #63e6be,\\n  \\"4\\": #38d9a9,\\n  \\"5\\": #20c997,\\n  \\"6\\": #12b886,\\n  \\"7\\": #0ca678,\\n  \\"8\\": #099268,\\n  \\"9\\": #087f5b\\n);\\n\\n$oc-teal-0: map-get($oc-teal-list, \\"0\\");\\n$oc-teal-1: map-get($oc-teal-list, \\"1\\");\\n$oc-teal-2: map-get($oc-teal-list, \\"2\\");\\n$oc-teal-3: map-get($oc-teal-list, \\"3\\");\\n$oc-teal-4: map-get($oc-teal-list, \\"4\\");\\n$oc-teal-5: map-get($oc-teal-list, \\"5\\");\\n$oc-teal-6: map-get($oc-teal-list, \\"6\\");\\n$oc-teal-7: map-get($oc-teal-list, \\"7\\");\\n$oc-teal-8: map-get($oc-teal-list, \\"8\\");\\n$oc-teal-9: map-get($oc-teal-list, \\"9\\");\\n\\n\\n//  Green\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-green-list: (\\n  \\"0\\": #ebfbee,\\n  \\"1\\": #d3f9d8,\\n  \\"2\\": #b2f2bb,\\n  \\"3\\": #8ce99a,\\n  \\"4\\": #69db7c,\\n  \\"5\\": #51cf66,\\n  \\"6\\": #40c057,\\n  \\"7\\": #37b24d,\\n  \\"8\\": #2f9e44,\\n  \\"9\\": #2b8a3e\\n);\\n\\n$oc-green-0: map-get($oc-green-list, \\"0\\");\\n$oc-green-1: map-get($oc-green-list, \\"1\\");\\n$oc-green-2: map-get($oc-green-list, \\"2\\");\\n$oc-green-3: map-get($oc-green-list, \\"3\\");\\n$oc-green-4: map-get($oc-green-list, \\"4\\");\\n$oc-green-5: map-get($oc-green-list, \\"5\\");\\n$oc-green-6: map-get($oc-green-list, \\"6\\");\\n$oc-green-7: map-get($oc-green-list, \\"7\\");\\n$oc-green-8: map-get($oc-green-list, \\"8\\");\\n$oc-green-9: map-get($oc-green-list, \\"9\\");\\n\\n\\n//  Lime\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-lime-list: (\\n  \\"0\\": #f4fce3,\\n  \\"1\\": #e9fac8,\\n  \\"2\\": #d8f5a2,\\n  \\"3\\": #c0eb75,\\n  \\"4\\": #a9e34b,\\n  \\"5\\": #94d82d,\\n  \\"6\\": #82c91e,\\n  \\"7\\": #74b816,\\n  \\"8\\": #66a80f,\\n  \\"9\\": #5c940d\\n);\\n\\n$oc-lime-0: map-get($oc-lime-list, \\"0\\");\\n$oc-lime-1: map-get($oc-lime-list, \\"1\\");\\n$oc-lime-2: map-get($oc-lime-list, \\"2\\");\\n$oc-lime-3: map-get($oc-lime-list, \\"3\\");\\n$oc-lime-4: map-get($oc-lime-list, \\"4\\");\\n$oc-lime-5: map-get($oc-lime-list, \\"5\\");\\n$oc-lime-6: map-get($oc-lime-list, \\"6\\");\\n$oc-lime-7: map-get($oc-lime-list, \\"7\\");\\n$oc-lime-8: map-get($oc-lime-list, \\"8\\");\\n$oc-lime-9: map-get($oc-lime-list, \\"9\\");\\n\\n\\n//  Yellow\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-yellow-list: (\\n  \\"0\\": #fff9db,\\n  \\"1\\": #fff3bf,\\n  \\"2\\": #ffec99,\\n  \\"3\\": #ffe066,\\n  \\"4\\": #ffd43b,\\n  \\"5\\": #fcc419,\\n  \\"6\\": #fab005,\\n  \\"7\\": #f59f00,\\n  \\"8\\": #f08c00,\\n  \\"9\\": #e67700\\n);\\n\\n$oc-yellow-0: map-get($oc-yellow-list, \\"0\\");\\n$oc-yellow-1: map-get($oc-yellow-list, \\"1\\");\\n$oc-yellow-2: map-get($oc-yellow-list, \\"2\\");\\n$oc-yellow-3: map-get($oc-yellow-list, \\"3\\");\\n$oc-yellow-4: map-get($oc-yellow-list, \\"4\\");\\n$oc-yellow-5: map-get($oc-yellow-list, \\"5\\");\\n$oc-yellow-6: map-get($oc-yellow-list, \\"6\\");\\n$oc-yellow-7: map-get($oc-yellow-list, \\"7\\");\\n$oc-yellow-8: map-get($oc-yellow-list, \\"8\\");\\n$oc-yellow-9: map-get($oc-yellow-list, \\"9\\");\\n\\n\\n//  Orange\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-orange-list: (\\n  \\"0\\": #fff4e6,\\n  \\"1\\": #ffe8cc,\\n  \\"2\\": #ffd8a8,\\n  \\"3\\": #ffc078,\\n  \\"4\\": #ffa94d,\\n  \\"5\\": #ff922b,\\n  \\"6\\": #fd7e14,\\n  \\"7\\": #f76707,\\n  \\"8\\": #e8590c,\\n  \\"9\\": #d9480f\\n);\\n\\n$oc-orange-0: map-get($oc-orange-list, \\"0\\");\\n$oc-orange-1: map-get($oc-orange-list, \\"1\\");\\n$oc-orange-2: map-get($oc-orange-list, \\"2\\");\\n$oc-orange-3: map-get($oc-orange-list, \\"3\\");\\n$oc-orange-4: map-get($oc-orange-list, \\"4\\");\\n$oc-orange-5: map-get($oc-orange-list, \\"5\\");\\n$oc-orange-6: map-get($oc-orange-list, \\"6\\");\\n$oc-orange-7: map-get($oc-orange-list, \\"7\\");\\n$oc-orange-8: map-get($oc-orange-list, \\"8\\");\\n$oc-orange-9: map-get($oc-orange-list, \\"9\\");\\n\\n\\n//  Color list\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-color-spectrum:   9;\\n\\n$oc-color-list: (\\n  $oc-gray-list:      \\"gray\\",\\n  $oc-red-list:      \\"red\\",\\n  $oc-pink-list:      \\"pink\\",\\n  $oc-grape-list:      \\"grape\\",\\n  $oc-violet-list:      \\"violet\\",\\n  $oc-indigo-list:      \\"indigo\\",\\n  $oc-blue-list:      \\"blue\\",\\n  $oc-cyan-list:      \\"cyan\\",\\n  $oc-teal-list:      \\"teal\\",\\n  $oc-green-list:      \\"green\\",\\n  $oc-lime-list:      \\"lime\\",\\n  $oc-yellow-list:      \\"yellow\\",\\n  $oc-orange-list:      \\"orange\\"\\n);\\n"],"sourceRoot":""}]);
// Exports
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 128952 characters]
//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../css/styles.scss
`);
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../css/variables.module.scss": (
              /*!******************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../css/variables.module.scss ***!
                \******************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, "", "",{"version":3,"sources":[],"names":[],"mappings":"","sourceRoot":""}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n	"themeFilter": "invert(93%) hue-rotate(180deg)",\n	"rightSidebarWidth": "302px"\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vY3NzL3ZhcmlhYmxlcy5tb2R1bGUuc2Nzcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQzhIO0FBQ2pCO0FBQzdHLDhCQUE4Qix1R0FBMkIsQ0FBQyxnSEFBcUM7QUFDL0Y7QUFDQSxpREFBaUQsa0VBQWtFO0FBQ25IO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpRUFBZSx1QkFBdUIsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jc3MvdmFyaWFibGVzLm1vZHVsZS5zY3NzP2VmNGMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiXCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W10sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIlwiLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5sb2NhbHMgPSB7XG5cdFwidGhlbWVGaWx0ZXJcIjogXCJpbnZlcnQoOTMlKSBodWUtcm90YXRlKDE4MGRlZylcIixcblx0XCJyaWdodFNpZGViYXJXaWR0aFwiOiBcIjMwMnB4XCJcbn07XG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../css/variables.module.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../element/Hyperlink.scss": (
              /*!***************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../element/Hyperlink.scss ***!
                \***************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw-hyperlinkContainer {\\n  display: flex;\\n  align-items: center;\\n  justify-content: space-between;\\n  position: absolute;\\n  box-shadow: 0px 2px 4px 0 rgba(0, 0, 0, 0.3);\\n  z-index: 100;\\n  background: var(--island-bg-color);\\n  border-radius: var(--border-radius-md);\\n  box-sizing: border-box;\\n  min-height: 42px;\\n}\\n.excalidraw-hyperlinkContainer-input,\\n.excalidraw-hyperlinkContainer button {\\n  z-index: 100;\\n}\\n.excalidraw-hyperlinkContainer-input, .excalidraw-hyperlinkContainer-link {\\n  height: 24px;\\n  padding: 0 8px;\\n  line-height: 24px;\\n  font-size: 0.9rem;\\n  font-weight: 500;\\n  font-family: var(--ui-font);\\n}\\n.excalidraw-hyperlinkContainer-input {\\n  width: 18rem;\\n  border: none;\\n  background-color: transparent;\\n  color: var(--text-primary-color);\\n  outline: none;\\n  border: none;\\n  box-shadow: none !important;\\n}\\n.excalidraw-hyperlinkContainer-link {\\n  overflow: hidden;\\n  text-overflow: ellipsis;\\n  white-space: nowrap;\\n  max-width: 15rem;\\n}\\n.excalidraw-hyperlinkContainer button {\\n  color: #228be6;\\n  background-color: transparent !important;\\n  font-weight: 500;\\n}\\n.excalidraw-hyperlinkContainer button.excalidraw-hyperlinkContainer--remove {\\n  color: #c92a2a;\\n}\\n.excalidraw-hyperlinkContainer--remove .ToolIcon__icon svg {\\n  color: #fa5252;\\n}\\n.excalidraw-hyperlinkContainer .ToolIcon__icon {\\n  width: 2rem;\\n  height: 2rem;\\n}\\n.excalidraw-hyperlinkContainer__buttons {\\n  flex: 0 0 auto;\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../element/Hyperlink.scss","webpack://./../../../node_modules/open-color/open-color.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AADA;EACE,aAAA;EACA,mBAAA;EACA,8BAAA;EACA,kBAAA;EACA,4CAAA;EACA,YAAA;EACA,kCAAA;EACA,sCAAA;EACA,sBAAA;EAEA,gBAAA;AAGF;AADE;;EAEE,YAAA;AAGJ;AAAE;EAEE,YAAA;EACA,cAAA;EACA,iBAAA;EACA,iBAAA;EACA,gBAAA;EACA,2BAAA;AACJ;AAEE;EACE,YAAA;EACA,YAAA;EACA,6BAAA;EACA,gCAAA;EAEA,aAAA;EACA,YAAA;EACA,2BAAA;AADJ;AAIE;EACE,gBAAA;EACA,uBAAA;EACA,mBAAA;EACA,gBAAA;AAFJ;AAKE;EACE,cC4JQ;ED3JR,wCAAA;EACA,gBAAA;AAHJ;AAII;EACE,cCeK;ADjBX;AAME;EACE,cCOO;ADXX;AAOE;EACE,WAAA;EACA,YAAA;AALJ;AAQE;EACE,cAAA;AANJ","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../css/variables.module\\";\\n\\n.excalidraw-hyperlinkContainer {\\n  display: flex;\\n  align-items: center;\\n  justify-content: space-between;\\n  position: absolute;\\n  box-shadow: 0px 2px 4px 0 rgb(0 0 0 / 30%);\\n  z-index: 100;\\n  background: var(--island-bg-color);\\n  border-radius: var(--border-radius-md);\\n  box-sizing: border-box;\\n  // to account for LS due to rendering icons after new link created\\n  min-height: 42px;\\n\\n  &-input,\\n  button {\\n    z-index: 100;\\n  }\\n\\n  &-input,\\n  &-link {\\n    height: 24px;\\n    padding: 0 8px;\\n    line-height: 24px;\\n    font-size: 0.9rem;\\n    font-weight: 500;\\n    font-family: var(--ui-font);\\n  }\\n\\n  &-input {\\n    width: 18rem;\\n    border: none;\\n    background-color: transparent;\\n    color: var(--text-primary-color);\\n\\n    outline: none;\\n    border: none;\\n    box-shadow: none !important;\\n  }\\n\\n  &-link {\\n    overflow: hidden;\\n    text-overflow: ellipsis;\\n    white-space: nowrap;\\n    max-width: 15rem;\\n  }\\n\\n  button {\\n    color: $oc-blue-6;\\n    background-color: transparent !important;\\n    font-weight: 500;\\n    &.excalidraw-hyperlinkContainer--remove {\\n      color: $oc-red-9;\\n    }\\n  }\\n\\n  &--remove .ToolIcon__icon svg {\\n    color: $oc-red-6;\\n  }\\n\\n  .ToolIcon__icon {\\n    width: 2rem;\\n    height: 2rem;\\n  }\\n\\n  &__buttons {\\n    flex: 0 0 auto;\\n  }\\n}\\n","//\\n//\\n//  \u{1D5D6} \u{1D5E2} \u{1D5DF} \u{1D5E2} \u{1D5E5}\\n//  v 1.9.1\\n//\\n//  \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\\n\\n\\n//  General\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-white:         #ffffff;\\n$oc-black:         #000000;\\n\\n\\n//  Gray\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-gray-list: (\\n  \\"0\\": #f8f9fa,\\n  \\"1\\": #f1f3f5,\\n  \\"2\\": #e9ecef,\\n  \\"3\\": #dee2e6,\\n  \\"4\\": #ced4da,\\n  \\"5\\": #adb5bd,\\n  \\"6\\": #868e96,\\n  \\"7\\": #495057,\\n  \\"8\\": #343a40,\\n  \\"9\\": #212529\\n);\\n\\n$oc-gray-0: map-get($oc-gray-list, \\"0\\");\\n$oc-gray-1: map-get($oc-gray-list, \\"1\\");\\n$oc-gray-2: map-get($oc-gray-list, \\"2\\");\\n$oc-gray-3: map-get($oc-gray-list, \\"3\\");\\n$oc-gray-4: map-get($oc-gray-list, \\"4\\");\\n$oc-gray-5: map-get($oc-gray-list, \\"5\\");\\n$oc-gray-6: map-get($oc-gray-list, \\"6\\");\\n$oc-gray-7: map-get($oc-gray-list, \\"7\\");\\n$oc-gray-8: map-get($oc-gray-list, \\"8\\");\\n$oc-gray-9: map-get($oc-gray-list, \\"9\\");\\n\\n\\n//  Red\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-red-list: (\\n  \\"0\\": #fff5f5,\\n  \\"1\\": #ffe3e3,\\n  \\"2\\": #ffc9c9,\\n  \\"3\\": #ffa8a8,\\n  \\"4\\": #ff8787,\\n  \\"5\\": #ff6b6b,\\n  \\"6\\": #fa5252,\\n  \\"7\\": #f03e3e,\\n  \\"8\\": #e03131,\\n  \\"9\\": #c92a2a\\n);\\n\\n$oc-red-0: map-get($oc-red-list, \\"0\\");\\n$oc-red-1: map-get($oc-red-list, \\"1\\");\\n$oc-red-2: map-get($oc-red-list, \\"2\\");\\n$oc-red-3: map-get($oc-red-list, \\"3\\");\\n$oc-red-4: map-get($oc-red-list, \\"4\\");\\n$oc-red-5: map-get($oc-red-list, \\"5\\");\\n$oc-red-6: map-get($oc-red-list, \\"6\\");\\n$oc-red-7: map-get($oc-red-list, \\"7\\");\\n$oc-red-8: map-get($oc-red-list, \\"8\\");\\n$oc-red-9: map-get($oc-red-list, \\"9\\");\\n\\n\\n//  Pink\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-pink-list: (\\n  \\"0\\": #fff0f6,\\n  \\"1\\": #ffdeeb,\\n  \\"2\\": #fcc2d7,\\n  \\"3\\": #faa2c1,\\n  \\"4\\": #f783ac,\\n  \\"5\\": #f06595,\\n  \\"6\\": #e64980,\\n  \\"7\\": #d6336c,\\n  \\"8\\": #c2255c,\\n  \\"9\\": #a61e4d\\n);\\n\\n$oc-pink-0: map-get($oc-pink-list, \\"0\\");\\n$oc-pink-1: map-get($oc-pink-list, \\"1\\");\\n$oc-pink-2: map-get($oc-pink-list, \\"2\\");\\n$oc-pink-3: map-get($oc-pink-list, \\"3\\");\\n$oc-pink-4: map-get($oc-pink-list, \\"4\\");\\n$oc-pink-5: map-get($oc-pink-list, \\"5\\");\\n$oc-pink-6: map-get($oc-pink-list, \\"6\\");\\n$oc-pink-7: map-get($oc-pink-list, \\"7\\");\\n$oc-pink-8: map-get($oc-pink-list, \\"8\\");\\n$oc-pink-9: map-get($oc-pink-list, \\"9\\");\\n\\n\\n//  Grape\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-grape-list: (\\n  \\"0\\": #f8f0fc,\\n  \\"1\\": #f3d9fa,\\n  \\"2\\": #eebefa,\\n  \\"3\\": #e599f7,\\n  \\"4\\": #da77f2,\\n  \\"5\\": #cc5de8,\\n  \\"6\\": #be4bdb,\\n  \\"7\\": #ae3ec9,\\n  \\"8\\": #9c36b5,\\n  \\"9\\": #862e9c\\n);\\n\\n$oc-grape-0: map-get($oc-grape-list, \\"0\\");\\n$oc-grape-1: map-get($oc-grape-list, \\"1\\");\\n$oc-grape-2: map-get($oc-grape-list, \\"2\\");\\n$oc-grape-3: map-get($oc-grape-list, \\"3\\");\\n$oc-grape-4: map-get($oc-grape-list, \\"4\\");\\n$oc-grape-5: map-get($oc-grape-list, \\"5\\");\\n$oc-grape-6: map-get($oc-grape-list, \\"6\\");\\n$oc-grape-7: map-get($oc-grape-list, \\"7\\");\\n$oc-grape-8: map-get($oc-grape-list, \\"8\\");\\n$oc-grape-9: map-get($oc-grape-list, \\"9\\");\\n\\n\\n//  Violet\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-violet-list: (\\n  \\"0\\": #f3f0ff,\\n  \\"1\\": #e5dbff,\\n  \\"2\\": #d0bfff,\\n  \\"3\\": #b197fc,\\n  \\"4\\": #9775fa,\\n  \\"5\\": #845ef7,\\n  \\"6\\": #7950f2,\\n  \\"7\\": #7048e8,\\n  \\"8\\": #6741d9,\\n  \\"9\\": #5f3dc4\\n);\\n\\n$oc-violet-0: map-get($oc-violet-list, \\"0\\");\\n$oc-violet-1: map-get($oc-violet-list, \\"1\\");\\n$oc-violet-2: map-get($oc-violet-list, \\"2\\");\\n$oc-violet-3: map-get($oc-violet-list, \\"3\\");\\n$oc-violet-4: map-get($oc-violet-list, \\"4\\");\\n$oc-violet-5: map-get($oc-violet-list, \\"5\\");\\n$oc-violet-6: map-get($oc-violet-list, \\"6\\");\\n$oc-violet-7: map-get($oc-violet-list, \\"7\\");\\n$oc-violet-8: map-get($oc-violet-list, \\"8\\");\\n$oc-violet-9: map-get($oc-violet-list, \\"9\\");\\n\\n\\n//  Indigo\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-indigo-list: (\\n  \\"0\\": #edf2ff,\\n  \\"1\\": #dbe4ff,\\n  \\"2\\": #bac8ff,\\n  \\"3\\": #91a7ff,\\n  \\"4\\": #748ffc,\\n  \\"5\\": #5c7cfa,\\n  \\"6\\": #4c6ef5,\\n  \\"7\\": #4263eb,\\n  \\"8\\": #3b5bdb,\\n  \\"9\\": #364fc7\\n);\\n\\n$oc-indigo-0: map-get($oc-indigo-list, \\"0\\");\\n$oc-indigo-1: map-get($oc-indigo-list, \\"1\\");\\n$oc-indigo-2: map-get($oc-indigo-list, \\"2\\");\\n$oc-indigo-3: map-get($oc-indigo-list, \\"3\\");\\n$oc-indigo-4: map-get($oc-indigo-list, \\"4\\");\\n$oc-indigo-5: map-get($oc-indigo-list, \\"5\\");\\n$oc-indigo-6: map-get($oc-indigo-list, \\"6\\");\\n$oc-indigo-7: map-get($oc-indigo-list, \\"7\\");\\n$oc-indigo-8: map-get($oc-indigo-list, \\"8\\");\\n$oc-indigo-9: map-get($oc-indigo-list, \\"9\\");\\n\\n\\n//  Blue\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-blue-list: (\\n  \\"0\\": #e7f5ff,\\n  \\"1\\": #d0ebff,\\n  \\"2\\": #a5d8ff,\\n  \\"3\\": #74c0fc,\\n  \\"4\\": #4dabf7,\\n  \\"5\\": #339af0,\\n  \\"6\\": #228be6,\\n  \\"7\\": #1c7ed6,\\n  \\"8\\": #1971c2,\\n  \\"9\\": #1864ab\\n);\\n\\n$oc-blue-0: map-get($oc-blue-list, \\"0\\");\\n$oc-blue-1: map-get($oc-blue-list, \\"1\\");\\n$oc-blue-2: map-get($oc-blue-list, \\"2\\");\\n$oc-blue-3: map-get($oc-blue-list, \\"3\\");\\n$oc-blue-4: map-get($oc-blue-list, \\"4\\");\\n$oc-blue-5: map-get($oc-blue-list, \\"5\\");\\n$oc-blue-6: map-get($oc-blue-list, \\"6\\");\\n$oc-blue-7: map-get($oc-blue-list, \\"7\\");\\n$oc-blue-8: map-get($oc-blue-list, \\"8\\");\\n$oc-blue-9: map-get($oc-blue-list, \\"9\\");\\n\\n\\n//  Cyan\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-cyan-list: (\\n  \\"0\\": #e3fafc,\\n  \\"1\\": #c5f6fa,\\n  \\"2\\": #99e9f2,\\n  \\"3\\": #66d9e8,\\n  \\"4\\": #3bc9db,\\n  \\"5\\": #22b8cf,\\n  \\"6\\": #15aabf,\\n  \\"7\\": #1098ad,\\n  \\"8\\": #0c8599,\\n  \\"9\\": #0b7285\\n);\\n\\n$oc-cyan-0: map-get($oc-cyan-list, \\"0\\");\\n$oc-cyan-1: map-get($oc-cyan-list, \\"1\\");\\n$oc-cyan-2: map-get($oc-cyan-list, \\"2\\");\\n$oc-cyan-3: map-get($oc-cyan-list, \\"3\\");\\n$oc-cyan-4: map-get($oc-cyan-list, \\"4\\");\\n$oc-cyan-5: map-get($oc-cyan-list, \\"5\\");\\n$oc-cyan-6: map-get($oc-cyan-list, \\"6\\");\\n$oc-cyan-7: map-get($oc-cyan-list, \\"7\\");\\n$oc-cyan-8: map-get($oc-cyan-list, \\"8\\");\\n$oc-cyan-9: map-get($oc-cyan-list, \\"9\\");\\n\\n\\n//  Teal\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-teal-list: (\\n  \\"0\\": #e6fcf5,\\n  \\"1\\": #c3fae8,\\n  \\"2\\": #96f2d7,\\n  \\"3\\": #63e6be,\\n  \\"4\\": #38d9a9,\\n  \\"5\\": #20c997,\\n  \\"6\\": #12b886,\\n  \\"7\\": #0ca678,\\n  \\"8\\": #099268,\\n  \\"9\\": #087f5b\\n);\\n\\n$oc-teal-0: map-get($oc-teal-list, \\"0\\");\\n$oc-teal-1: map-get($oc-teal-list, \\"1\\");\\n$oc-teal-2: map-get($oc-teal-list, \\"2\\");\\n$oc-teal-3: map-get($oc-teal-list, \\"3\\");\\n$oc-teal-4: map-get($oc-teal-list, \\"4\\");\\n$oc-teal-5: map-get($oc-teal-list, \\"5\\");\\n$oc-teal-6: map-get($oc-teal-list, \\"6\\");\\n$oc-teal-7: map-get($oc-teal-list, \\"7\\");\\n$oc-teal-8: map-get($oc-teal-list, \\"8\\");\\n$oc-teal-9: map-get($oc-teal-list, \\"9\\");\\n\\n\\n//  Green\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-green-list: (\\n  \\"0\\": #ebfbee,\\n  \\"1\\": #d3f9d8,\\n  \\"2\\": #b2f2bb,\\n  \\"3\\": #8ce99a,\\n  \\"4\\": #69db7c,\\n  \\"5\\": #51cf66,\\n  \\"6\\": #40c057,\\n  \\"7\\": #37b24d,\\n  \\"8\\": #2f9e44,\\n  \\"9\\": #2b8a3e\\n);\\n\\n$oc-green-0: map-get($oc-green-list, \\"0\\");\\n$oc-green-1: map-get($oc-green-list, \\"1\\");\\n$oc-green-2: map-get($oc-green-list, \\"2\\");\\n$oc-green-3: map-get($oc-green-list, \\"3\\");\\n$oc-green-4: map-get($oc-green-list, \\"4\\");\\n$oc-green-5: map-get($oc-green-list, \\"5\\");\\n$oc-green-6: map-get($oc-green-list, \\"6\\");\\n$oc-green-7: map-get($oc-green-list, \\"7\\");\\n$oc-green-8: map-get($oc-green-list, \\"8\\");\\n$oc-green-9: map-get($oc-green-list, \\"9\\");\\n\\n\\n//  Lime\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-lime-list: (\\n  \\"0\\": #f4fce3,\\n  \\"1\\": #e9fac8,\\n  \\"2\\": #d8f5a2,\\n  \\"3\\": #c0eb75,\\n  \\"4\\": #a9e34b,\\n  \\"5\\": #94d82d,\\n  \\"6\\": #82c91e,\\n  \\"7\\": #74b816,\\n  \\"8\\": #66a80f,\\n  \\"9\\": #5c940d\\n);\\n\\n$oc-lime-0: map-get($oc-lime-list, \\"0\\");\\n$oc-lime-1: map-get($oc-lime-list, \\"1\\");\\n$oc-lime-2: map-get($oc-lime-list, \\"2\\");\\n$oc-lime-3: map-get($oc-lime-list, \\"3\\");\\n$oc-lime-4: map-get($oc-lime-list, \\"4\\");\\n$oc-lime-5: map-get($oc-lime-list, \\"5\\");\\n$oc-lime-6: map-get($oc-lime-list, \\"6\\");\\n$oc-lime-7: map-get($oc-lime-list, \\"7\\");\\n$oc-lime-8: map-get($oc-lime-list, \\"8\\");\\n$oc-lime-9: map-get($oc-lime-list, \\"9\\");\\n\\n\\n//  Yellow\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-yellow-list: (\\n  \\"0\\": #fff9db,\\n  \\"1\\": #fff3bf,\\n  \\"2\\": #ffec99,\\n  \\"3\\": #ffe066,\\n  \\"4\\": #ffd43b,\\n  \\"5\\": #fcc419,\\n  \\"6\\": #fab005,\\n  \\"7\\": #f59f00,\\n  \\"8\\": #f08c00,\\n  \\"9\\": #e67700\\n);\\n\\n$oc-yellow-0: map-get($oc-yellow-list, \\"0\\");\\n$oc-yellow-1: map-get($oc-yellow-list, \\"1\\");\\n$oc-yellow-2: map-get($oc-yellow-list, \\"2\\");\\n$oc-yellow-3: map-get($oc-yellow-list, \\"3\\");\\n$oc-yellow-4: map-get($oc-yellow-list, \\"4\\");\\n$oc-yellow-5: map-get($oc-yellow-list, \\"5\\");\\n$oc-yellow-6: map-get($oc-yellow-list, \\"6\\");\\n$oc-yellow-7: map-get($oc-yellow-list, \\"7\\");\\n$oc-yellow-8: map-get($oc-yellow-list, \\"8\\");\\n$oc-yellow-9: map-get($oc-yellow-list, \\"9\\");\\n\\n\\n//  Orange\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-orange-list: (\\n  \\"0\\": #fff4e6,\\n  \\"1\\": #ffe8cc,\\n  \\"2\\": #ffd8a8,\\n  \\"3\\": #ffc078,\\n  \\"4\\": #ffa94d,\\n  \\"5\\": #ff922b,\\n  \\"6\\": #fd7e14,\\n  \\"7\\": #f76707,\\n  \\"8\\": #e8590c,\\n  \\"9\\": #d9480f\\n);\\n\\n$oc-orange-0: map-get($oc-orange-list, \\"0\\");\\n$oc-orange-1: map-get($oc-orange-list, \\"1\\");\\n$oc-orange-2: map-get($oc-orange-list, \\"2\\");\\n$oc-orange-3: map-get($oc-orange-list, \\"3\\");\\n$oc-orange-4: map-get($oc-orange-list, \\"4\\");\\n$oc-orange-5: map-get($oc-orange-list, \\"5\\");\\n$oc-orange-6: map-get($oc-orange-list, \\"6\\");\\n$oc-orange-7: map-get($oc-orange-list, \\"7\\");\\n$oc-orange-8: map-get($oc-orange-list, \\"8\\");\\n$oc-orange-9: map-get($oc-orange-list, \\"9\\");\\n\\n\\n//  Color list\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-color-spectrum:   9;\\n\\n$oc-color-list: (\\n  $oc-gray-list:      \\"gray\\",\\n  $oc-red-list:      \\"red\\",\\n  $oc-pink-list:      \\"pink\\",\\n  $oc-grape-list:      \\"grape\\",\\n  $oc-violet-list:      \\"violet\\",\\n  $oc-indigo-list:      \\"indigo\\",\\n  $oc-blue-list:      \\"blue\\",\\n  $oc-cyan-list:      \\"cyan\\",\\n  $oc-teal-list:      \\"teal\\",\\n  $oc-green-list:      \\"green\\",\\n  $oc-lime-list:      \\"lime\\",\\n  $oc-yellow-list:      \\"yellow\\",\\n  $oc-orange-list:      \\"orange\\"\\n);\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 31476 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../element/Hyperlink.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/runtime/api.js": (
              /*!*****************************************************!*\
                !*** ./node_modules/css-loader/dist/runtime/api.js ***!
                \*****************************************************/
              /***/
              (module) => {
                "use strict";
                eval('\n\n/*\n  MIT License http://www.opensource.org/licenses/mit-license.php\n  Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n  var list = []; // return the list of modules as css string\n\n  list.toString = function toString() {\n    return this.map(function (item) {\n      var content = "";\n      var needLayer = typeof item[5] !== "undefined";\n\n      if (item[4]) {\n        content += "@supports (".concat(item[4], ") {");\n      }\n\n      if (item[2]) {\n        content += "@media ".concat(item[2], " {");\n      }\n\n      if (needLayer) {\n        content += "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {");\n      }\n\n      content += cssWithMappingToString(item);\n\n      if (needLayer) {\n        content += "}";\n      }\n\n      if (item[2]) {\n        content += "}";\n      }\n\n      if (item[4]) {\n        content += "}";\n      }\n\n      return content;\n    }).join("");\n  }; // import a list of modules into the list\n\n\n  list.i = function i(modules, media, dedupe, supports, layer) {\n    if (typeof modules === "string") {\n      modules = [[null, modules, undefined]];\n    }\n\n    var alreadyImportedModules = {};\n\n    if (dedupe) {\n      for (var k = 0; k < this.length; k++) {\n        var id = this[k][0];\n\n        if (id != null) {\n          alreadyImportedModules[id] = true;\n        }\n      }\n    }\n\n    for (var _k = 0; _k < modules.length; _k++) {\n      var item = [].concat(modules[_k]);\n\n      if (dedupe && alreadyImportedModules[item[0]]) {\n        continue;\n      }\n\n      if (typeof layer !== "undefined") {\n        if (typeof item[5] === "undefined") {\n          item[5] = layer;\n        } else {\n          item[1] = "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {").concat(item[1], "}");\n          item[5] = layer;\n        }\n      }\n\n      if (media) {\n        if (!item[2]) {\n          item[2] = media;\n        } else {\n          item[1] = "@media ".concat(item[2], " {").concat(item[1], "}");\n          item[2] = media;\n        }\n      }\n\n      if (supports) {\n        if (!item[4]) {\n          item[4] = "".concat(supports);\n        } else {\n          item[1] = "@supports (".concat(item[4], ") {").concat(item[1], "}");\n          item[4] = supports;\n        }\n      }\n\n      list.push(item);\n    }\n  };\n\n  return list;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4356 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/runtime/api.js\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/runtime/getUrl.js": (
              /*!********************************************************!*\
                !*** ./node_modules/css-loader/dist/runtime/getUrl.js ***!
                \********************************************************/
              /***/
              (module) => {
                "use strict";
                eval(`

module.exports = function (url, options) {
  if (!options) {
    options = {};
  }

  if (!url) {
    return url;
  }

  url = String(url.__esModule ? url.default : url); // If url is already wrapped in quotes, remove them

  if (/^['"].*['"]$/.test(url)) {
    url = url.slice(1, -1);
  }

  if (options.hash) {
    url += options.hash;
  } // Should url be wrapped?
  // See https://drafts.csswg.org/css-values-3/#urls


  if (/["'() \\t\\n]|(%20)/.test(url) || options.needQuotes) {
    return "\\"".concat(url.replace(/"/g, '\\\\"').replace(/\\n/g, "\\\\n"), "\\"");
  }

  return url;
};//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvZ2V0VXJsLmpzLmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxvREFBb0Q7O0FBRXBEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTtBQUNKOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9nZXRVcmwuanM/MWRlNSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodXJsLCBvcHRpb25zKSB7XG4gIGlmICghb3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuXG4gIGlmICghdXJsKSB7XG4gICAgcmV0dXJuIHVybDtcbiAgfVxuXG4gIHVybCA9IFN0cmluZyh1cmwuX19lc01vZHVsZSA/IHVybC5kZWZhdWx0IDogdXJsKTsgLy8gSWYgdXJsIGlzIGFscmVhZHkgd3JhcHBlZCBpbiBxdW90ZXMsIHJlbW92ZSB0aGVtXG5cbiAgaWYgKC9eWydcIl0uKlsnXCJdJC8udGVzdCh1cmwpKSB7XG4gICAgdXJsID0gdXJsLnNsaWNlKDEsIC0xKTtcbiAgfVxuXG4gIGlmIChvcHRpb25zLmhhc2gpIHtcbiAgICB1cmwgKz0gb3B0aW9ucy5oYXNoO1xuICB9IC8vIFNob3VsZCB1cmwgYmUgd3JhcHBlZD9cbiAgLy8gU2VlIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtdmFsdWVzLTMvI3VybHNcblxuXG4gIGlmICgvW1wiJygpIFxcdFxcbl18KCUyMCkvLnRlc3QodXJsKSB8fCBvcHRpb25zLm5lZWRRdW90ZXMpIHtcbiAgICByZXR1cm4gXCJcXFwiXCIuY29uY2F0KHVybC5yZXBsYWNlKC9cIi9nLCAnXFxcXFwiJykucmVwbGFjZSgvXFxuL2csIFwiXFxcXG5cIiksIFwiXFxcIlwiKTtcbiAgfVxuXG4gIHJldHVybiB1cmw7XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==
//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/runtime/getUrl.js
`);
              }
            ),
            /***/
            "./node_modules/css-loader/dist/runtime/sourceMaps.js": (
              /*!************************************************************!*\
                !*** ./node_modules/css-loader/dist/runtime/sourceMaps.js ***!
                \************************************************************/
              /***/
              (module) => {
                "use strict";
                eval('\n\nmodule.exports = function (item) {\n  var content = item[1];\n  var cssMapping = item[3];\n\n  if (!cssMapping) {\n    return content;\n  }\n\n  if (typeof btoa === "function") {\n    var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n    var data = "sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(base64);\n    var sourceMapping = "/*# ".concat(data, " */");\n    var sourceURLs = cssMapping.sources.map(function (source) {\n      return "/*# sourceURL=".concat(cssMapping.sourceRoot || "").concat(source, " */");\n    });\n    return [content].concat(sourceURLs).concat([sourceMapping]).join("\\n");\n  }\n\n  return [content].join("\\n");\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx1REFBdUQsY0FBYztBQUNyRTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanM/YWYxMiJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlbSkge1xuICB2YXIgY29udGVudCA9IGl0ZW1bMV07XG4gIHZhciBjc3NNYXBwaW5nID0gaXRlbVszXTtcblxuICBpZiAoIWNzc01hcHBpbmcpIHtcbiAgICByZXR1cm4gY29udGVudDtcbiAgfVxuXG4gIGlmICh0eXBlb2YgYnRvYSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgdmFyIGJhc2U2NCA9IGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KGNzc01hcHBpbmcpKSkpO1xuICAgIHZhciBkYXRhID0gXCJzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxcIi5jb25jYXQoYmFzZTY0KTtcbiAgICB2YXIgc291cmNlTWFwcGluZyA9IFwiLyojIFwiLmNvbmNhdChkYXRhLCBcIiAqL1wiKTtcbiAgICB2YXIgc291cmNlVVJMcyA9IGNzc01hcHBpbmcuc291cmNlcy5tYXAoZnVuY3Rpb24gKHNvdXJjZSkge1xuICAgICAgcmV0dXJuIFwiLyojIHNvdXJjZVVSTD1cIi5jb25jYXQoY3NzTWFwcGluZy5zb3VyY2VSb290IHx8IFwiXCIpLmNvbmNhdChzb3VyY2UsIFwiICovXCIpO1xuICAgIH0pO1xuICAgIHJldHVybiBbY29udGVudF0uY29uY2F0KHNvdXJjZVVSTHMpLmNvbmNhdChbc291cmNlTWFwcGluZ10pLmpvaW4oXCJcXG5cIik7XG4gIH1cblxuICByZXR1cm4gW2NvbnRlbnRdLmpvaW4oXCJcXG5cIik7XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/runtime/sourceMaps.js\n');
              }
            ),
            /***/
            "../../../node_modules/canvas-roundrect-polyfill/roundRect.js": (
              /*!********************************************************************!*\
                !*** ../../../node_modules/canvas-roundrect-polyfill/roundRect.js ***!
                \********************************************************************/
              /***/
              () => {
                eval('/*\n *  Implements the .roundRect() method of the CanvasPath mixin\n *  as introduced by https://github.com/whatwg/html/pull/6765\n */\n(() => {\n  "use strict";\n\n  var _a, _b, _c;\n\n  var _d, _e, _f;\n\n  (_a = (_d = Path2D.prototype).roundRect) !== null && _a !== void 0 ? _a : _d.roundRect = roundRect;\n\n  if (globalThis.CanvasRenderingContext2D) {\n    (_b = (_e = globalThis.CanvasRenderingContext2D.prototype).roundRect) !== null && _b !== void 0 ? _b : _e.roundRect = roundRect;\n  }\n\n  if (globalThis.OffscreenCanvasRenderingContext2D) {\n    (_c = (_f = globalThis.OffscreenCanvasRenderingContext2D.prototype).roundRect) !== null && _c !== void 0 ? _c : _f.roundRect = roundRect;\n  }\n\n  function roundRect(x, y, w, h, radii) {\n    if (![x, y, w, h].every(input => Number.isFinite(input))) {\n      return;\n    }\n\n    radii = parseRadiiArgument(radii);\n    let upperLeft, upperRight, lowerRight, lowerLeft;\n\n    if (radii.length === 4) {\n      upperLeft = toCornerPoint(radii[0]);\n      upperRight = toCornerPoint(radii[1]);\n      lowerRight = toCornerPoint(radii[2]);\n      lowerLeft = toCornerPoint(radii[3]);\n    } else if (radii.length === 3) {\n      upperLeft = toCornerPoint(radii[0]);\n      upperRight = toCornerPoint(radii[1]);\n      lowerLeft = toCornerPoint(radii[1]);\n      lowerRight = toCornerPoint(radii[2]);\n    } else if (radii.length === 2) {\n      upperLeft = toCornerPoint(radii[0]);\n      lowerRight = toCornerPoint(radii[0]);\n      upperRight = toCornerPoint(radii[1]);\n      lowerLeft = toCornerPoint(radii[1]);\n    } else if (radii.length === 1) {\n      upperLeft = toCornerPoint(radii[0]);\n      upperRight = toCornerPoint(radii[0]);\n      lowerRight = toCornerPoint(radii[0]);\n      lowerLeft = toCornerPoint(radii[0]);\n    } else {\n      throw new RangeError(`${getErrorMessageHeader(this)} ${radii.length} is not a valid size for radii sequence.`);\n    }\n\n    const corners = [upperLeft, upperRight, lowerRight, lowerLeft];\n    const negativeCorner = corners.find(({\n      x,\n      y\n    }) => x < 0 || y < 0);\n    const negativeValue = (negativeCorner === null || negativeCorner === void 0 ? void 0 : negativeCorner.x) < 0 ? negativeCorner.x : negativeCorner === null || negativeCorner === void 0 ? void 0 : negativeCorner.y;\n\n    if (corners.some(({\n      x,\n      y\n    }) => !Number.isFinite(x) || !Number.isFinite(y))) {\n      return;\n    }\n\n    if (negativeCorner) {\n      throw new RangeError(`${getErrorMessageHeader(this)} Radius value ${negativeCorner} is negative.`);\n    }\n\n    fixOverlappingCorners(corners);\n\n    if (w < 0 && h < 0) {\n      this.moveTo(x - upperLeft.x, y);\n      this.ellipse(x + w + upperRight.x, y - upperRight.y, upperRight.x, upperRight.y, 0, -Math.PI * 1.5, -Math.PI);\n      this.ellipse(x + w + lowerRight.x, y + h + lowerRight.y, lowerRight.x, lowerRight.y, 0, -Math.PI, -Math.PI / 2);\n      this.ellipse(x - lowerLeft.x, y + h + lowerLeft.y, lowerLeft.x, lowerLeft.y, 0, -Math.PI / 2, 0);\n      this.ellipse(x - upperLeft.x, y - upperLeft.y, upperLeft.x, upperLeft.y, 0, 0, -Math.PI / 2);\n    } else if (w < 0) {\n      this.moveTo(x - upperLeft.x, y);\n      this.ellipse(x + w + upperRight.x, y + upperRight.y, upperRight.x, upperRight.y, 0, -Math.PI / 2, -Math.PI, 1);\n      this.ellipse(x + w + lowerRight.x, y + h - lowerRight.y, lowerRight.x, lowerRight.y, 0, -Math.PI, -Math.PI * 1.5, 1);\n      this.ellipse(x - lowerLeft.x, y + h - lowerLeft.y, lowerLeft.x, lowerLeft.y, 0, Math.PI / 2, 0, 1);\n      this.ellipse(x - upperLeft.x, y + upperLeft.y, upperLeft.x, upperLeft.y, 0, 0, -Math.PI / 2, 1);\n    } else if (h < 0) {\n      this.moveTo(x + upperLeft.x, y);\n      this.ellipse(x + w - upperRight.x, y - upperRight.y, upperRight.x, upperRight.y, 0, Math.PI / 2, 0, 1);\n      this.ellipse(x + w - lowerRight.x, y + h + lowerRight.y, lowerRight.x, lowerRight.y, 0, 0, -Math.PI / 2, 1);\n      this.ellipse(x + lowerLeft.x, y + h + lowerLeft.y, lowerLeft.x, lowerLeft.y, 0, -Math.PI / 2, -Math.PI, 1);\n      this.ellipse(x + upperLeft.x, y - upperLeft.y, upperLeft.x, upperLeft.y, 0, -Math.PI, -Math.PI * 1.5, 1);\n    } else {\n      this.moveTo(x + upperLeft.x, y);\n      this.ellipse(x + w - upperRight.x, y + upperRight.y, upperRight.x, upperRight.y, 0, -Math.PI / 2, 0);\n      this.ellipse(x + w - lowerRight.x, y + h - lowerRight.y, lowerRight.x, lowerRight.y, 0, 0, Math.PI / 2);\n      this.ellipse(x + lowerLeft.x, y + h - lowerLeft.y, lowerLeft.x, lowerLeft.y, 0, Math.PI / 2, Math.PI);\n      this.ellipse(x + upperLeft.x, y + upperLeft.y, upperLeft.x, upperLeft.y, 0, Math.PI, Math.PI * 1.5);\n    }\n\n    this.closePath();\n    this.moveTo(x, y);\n\n    function toDOMPointInit(value) {\n      const {\n        x,\n        y,\n        z,\n        w\n      } = value;\n      return {\n        x,\n        y,\n        z,\n        w\n      };\n    }\n\n    function parseRadiiArgument(value) {\n      // https://webidl.spec.whatwg.org/#es-union\n      // with \'optional (unrestricted double or DOMPointInit\n      //   or sequence<(unrestricted double or DOMPointInit)>) radii = 0\'\n      const type = typeof value;\n\n      if (type === "undefined" || value === null) {\n        return [0];\n      }\n\n      if (type === "function") {\n        return [NaN];\n      }\n\n      if (type === "object") {\n        if (typeof value[Symbol.iterator] === "function") {\n          return [...value].map(elem => {\n            // https://webidl.spec.whatwg.org/#es-union\n            // with \'(unrestricted double or DOMPointInit)\'\n            const elemType = typeof elem;\n\n            if (elemType === "undefined" || elem === null) {\n              return 0;\n            }\n\n            if (elemType === "function") {\n              return NaN;\n            }\n\n            if (elemType === "object") {\n              return toDOMPointInit(elem);\n            }\n\n            return toUnrestrictedNumber(elem);\n          });\n        }\n\n        return [toDOMPointInit(value)];\n      }\n\n      return [toUnrestrictedNumber(value)];\n    }\n\n    function toUnrestrictedNumber(value) {\n      return +value;\n    }\n\n    function toCornerPoint(value) {\n      var _a, _b;\n\n      const asNumber = toUnrestrictedNumber(value);\n\n      if (Number.isFinite(asNumber)) {\n        return {\n          x: asNumber,\n          y: asNumber\n        };\n      }\n\n      if (Object(value) === value) {\n        return {\n          x: toUnrestrictedNumber((_a = value.x) !== null && _a !== void 0 ? _a : 0),\n          y: toUnrestrictedNumber((_b = value.y) !== null && _b !== void 0 ? _b : 0)\n        };\n      }\n\n      return {\n        x: NaN,\n        y: NaN\n      };\n    }\n\n    function fixOverlappingCorners(corners) {\n      const [upperLeft, upperRight, lowerRight, lowerLeft] = corners;\n      const factors = [Math.abs(w) / (upperLeft.x + upperRight.x), Math.abs(h) / (upperRight.y + lowerRight.y), Math.abs(w) / (lowerRight.x + lowerLeft.x), Math.abs(h) / (upperLeft.y + lowerLeft.y)];\n      const minFactor = Math.min(...factors);\n\n      if (minFactor <= 1) {\n        for (const radii of corners) {\n          radii.x *= minFactor;\n          radii.y *= minFactor;\n        }\n      }\n    }\n  }\n\n  function getErrorMessageHeader(instance) {\n    return `Failed to execute \'roundRect\' on \'${getConstructorName(instance)}\':`;\n  }\n\n  function getConstructorName(instance) {\n    return Object(instance) === instance && instance instanceof Path2D ? "Path2D" : instance instanceof (globalThis === null || globalThis === void 0 ? void 0 : globalThis.CanvasRenderingContext2D) ? "CanvasRenderingContext2D" : instance instanceof (globalThis === null || globalThis === void 0 ? void 0 : globalThis.OffscreenCanvasRenderingContext2D) ? "OffscreenCanvasRenderingContext2D" : (instance === null || instance === void 0 ? void 0 : instance.constructor.name) || instance;\n  }\n})();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 12356 characters]\n//# sourceURL=webpack-internal:///../../../node_modules/canvas-roundrect-polyfill/roundRect.js\n');
              }
            ),
            /***/
            "../../actions/actionAddToLibrary.ts": (
              /*!*******************************************!*\
                !*** ../../actions/actionAddToLibrary.ts ***!
                \*******************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "actionAddToLibrary": () => (/* binding */ actionAddToLibrary)\n/* harmony export */ });\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./register */ "../../actions/register.ts");\n/* harmony import */ var _element_newElement__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../element/newElement */ "../../element/newElement.ts");\n/* harmony import */ var _random__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../random */ "../../random.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n\n\n\n\n\nconst actionAddToLibrary = (0,_register__WEBPACK_IMPORTED_MODULE_0__.register)({\n  name: "addToLibrary",\n  trackEvent: {\n    category: "element"\n  },\n  perform: (elements, appState, _, app) => {\n    const selectedElements = app.scene.getSelectedElements({\n      selectedElementIds: appState.selectedElementIds,\n      includeBoundTextElement: true,\n      includeElementsInFrames: true\n    });\n\n    for (const type of _constants__WEBPACK_IMPORTED_MODULE_4__.LIBRARY_DISABLED_TYPES) {\n      if (selectedElements.some(element => element.type === type)) {\n        return {\n          commitToHistory: false,\n          appState: Object.assign(Object.assign({}, appState), {\n            errorMessage: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)(`errors.libraryElementTypeError.${type}`)\n          })\n        };\n      }\n    }\n\n    return app.library.getLatestLibrary().then(items => {\n      return app.library.setLibrary([{\n        id: (0,_random__WEBPACK_IMPORTED_MODULE_2__.randomId)(),\n        status: "unpublished",\n        elements: selectedElements.map(_element_newElement__WEBPACK_IMPORTED_MODULE_1__.deepCopyElement),\n        created: Date.now()\n      }, ...items]);\n    }).then(() => {\n      return {\n        commitToHistory: false,\n        appState: Object.assign(Object.assign({}, appState), {\n          toast: {\n            message: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("toast.addedToLibrary")\n          }\n        })\n      };\n    }).catch(error => {\n      return {\n        commitToHistory: false,\n        appState: Object.assign(Object.assign({}, appState), {\n          errorMessage: error.message\n        })\n      };\n    });\n  },\n  contextItemLabel: "labels.addToLibrary"\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vYWN0aW9ucy9hY3Rpb25BZGRUb0xpYnJhcnkudHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQXNDO0FBQ2tCO0FBQ25CO0FBQ1Q7QUFDMEI7QUFDL0MsMkJBQTJCLG1EQUFRO0FBQzFDO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTCx1QkFBdUIsOERBQXNCO0FBQzdDO0FBQ0E7QUFDQTtBQUNBLGtEQUFrRDtBQUNsRCwwQkFBMEIsd0NBQUMsbUNBQW1DLEtBQUs7QUFDbkUsV0FBVztBQUNYO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsWUFBWSxpREFBUTtBQUNwQjtBQUNBLHVDQUF1QyxnRUFBZTtBQUN0RDtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBLGdEQUFnRDtBQUNoRDtBQUNBLHFCQUFxQix3Q0FBQztBQUN0QjtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsZ0RBQWdEO0FBQ2hEO0FBQ0EsU0FBUztBQUNUO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vYWN0aW9ucy9hY3Rpb25BZGRUb0xpYnJhcnkudHM/YmEzNCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZWdpc3RlciB9IGZyb20gXCIuL3JlZ2lzdGVyXCI7XG5pbXBvcnQgeyBkZWVwQ29weUVsZW1lbnQgfSBmcm9tIFwiLi4vZWxlbWVudC9uZXdFbGVtZW50XCI7XG5pbXBvcnQgeyByYW5kb21JZCB9IGZyb20gXCIuLi9yYW5kb21cIjtcbmltcG9ydCB7IHQgfSBmcm9tIFwiLi4vaTE4blwiO1xuaW1wb3J0IHsgTElCUkFSWV9ESVNBQkxFRF9UWVBFUyB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcbmV4cG9ydCBjb25zdCBhY3Rpb25BZGRUb0xpYnJhcnkgPSByZWdpc3Rlcih7XG4gIG5hbWU6IFwiYWRkVG9MaWJyYXJ5XCIsXG4gIHRyYWNrRXZlbnQ6IHtcbiAgICBjYXRlZ29yeTogXCJlbGVtZW50XCJcbiAgfSxcbiAgcGVyZm9ybTogKGVsZW1lbnRzLCBhcHBTdGF0ZSwgXywgYXBwKSA9PiB7XG4gICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGFwcC5zY2VuZS5nZXRTZWxlY3RlZEVsZW1lbnRzKHtcbiAgICAgIHNlbGVjdGVkRWxlbWVudElkczogYXBwU3RhdGUuc2VsZWN0ZWRFbGVtZW50SWRzLFxuICAgICAgaW5jbHVkZUJvdW5kVGV4dEVsZW1lbnQ6IHRydWUsXG4gICAgICBpbmNsdWRlRWxlbWVudHNJbkZyYW1lczogdHJ1ZVxuICAgIH0pO1xuXG4gICAgZm9yIChjb25zdCB0eXBlIG9mIExJQlJBUllfRElTQUJMRURfVFlQRVMpIHtcbiAgICAgIGlmIChzZWxlY3RlZEVsZW1lbnRzLnNvbWUoZWxlbWVudCA9PiBlbGVtZW50LnR5cGUgPT09IHR5cGUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29tbWl0VG9IaXN0b3J5OiBmYWxzZSxcbiAgICAgICAgICBhcHBTdGF0ZTogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBhcHBTdGF0ZSksIHtcbiAgICAgICAgICAgIGVycm9yTWVzc2FnZTogdChgZXJyb3JzLmxpYnJhcnlFbGVtZW50VHlwZUVycm9yLiR7dHlwZX1gKVxuICAgICAgICAgIH0pXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGFwcC5saWJyYXJ5LmdldExhdGVzdExpYnJhcnkoKS50aGVuKGl0ZW1zID0+IHtcbiAgICAgIHJldHVybiBhcHAubGlicmFyeS5zZXRMaWJyYXJ5KFt7XG4gICAgICAgIGlkOiByYW5kb21JZCgpLFxuICAgICAgICBzdGF0dXM6IFwidW5wdWJsaXNoZWRcIixcbiAgICAgICAgZWxlbWVudHM6IHNlbGVjdGVkRWxlbWVudHMubWFwKGRlZXBDb3B5RWxlbWVudCksXG4gICAgICAgIGNyZWF0ZWQ6IERhdGUubm93KClcbiAgICAgIH0sIC4uLml0ZW1zXSk7XG4gICAgfSkudGhlbigoKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb21taXRUb0hpc3Rvcnk6IGZhbHNlLFxuICAgICAgICBhcHBTdGF0ZTogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBhcHBTdGF0ZSksIHtcbiAgICAgICAgICB0b2FzdDoge1xuICAgICAgICAgICAgbWVzc2FnZTogdChcInRvYXN0LmFkZGVkVG9MaWJyYXJ5XCIpXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgfTtcbiAgICB9KS5jYXRjaChlcnJvciA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb21taXRUb0hpc3Rvcnk6IGZhbHNlLFxuICAgICAgICBhcHBTdGF0ZTogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBhcHBTdGF0ZSksIHtcbiAgICAgICAgICBlcnJvck1lc3NhZ2U6IGVycm9yLm1lc3NhZ2VcbiAgICAgICAgfSlcbiAgICAgIH07XG4gICAgfSk7XG4gIH0sXG4gIGNvbnRleHRJdGVtTGFiZWw6IFwibGFiZWxzLmFkZFRvTGlicmFyeVwiXG59KTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../actions/actionAddToLibrary.ts\n');
              }
            ),
            /***/
            "../../actions/actionAlign.tsx": (
              /*!*************************************!*\
                !*** ../../actions/actionAlign.tsx ***!
                \*************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "actionAlignBottom": () => (/* binding */ actionAlignBottom),\n/* harmony export */   "actionAlignHorizontallyCentered": () => (/* binding */ actionAlignHorizontallyCentered),\n/* harmony export */   "actionAlignLeft": () => (/* binding */ actionAlignLeft),\n/* harmony export */   "actionAlignRight": () => (/* binding */ actionAlignRight),\n/* harmony export */   "actionAlignTop": () => (/* binding */ actionAlignTop),\n/* harmony export */   "actionAlignVerticallyCentered": () => (/* binding */ actionAlignVerticallyCentered)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _align__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../align */ "../../align.ts");\n/* harmony import */ var _components_icons__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../components/icons */ "../../components/icons.tsx");\n/* harmony import */ var _components_ToolButton__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../components/ToolButton */ "../../components/ToolButton.tsx");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _frame__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../frame */ "../../frame.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../scene */ "../../scene/index.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./register */ "../../actions/register.ts");\n\n\n\n\n\n\n\n\n\n\n\n\nconst alignActionsPredicate = (elements, appState, _, app) => {\n  const selectedElements = app.scene.getSelectedElements(appState);\n  return selectedElements.length > 1 && // TODO enable aligning frames when implemented properly\n  !selectedElements.some(el => el.type === "frame");\n};\n\nconst alignSelectedElements = (elements, appState, app, alignment) => {\n  const selectedElements = app.scene.getSelectedElements(appState);\n  const updatedElements = (0,_align__WEBPACK_IMPORTED_MODULE_1__.alignElements)(selectedElements, alignment);\n  const updatedElementsMap = (0,_utils__WEBPACK_IMPORTED_MODULE_9__.arrayToMap)(updatedElements);\n  return (0,_frame__WEBPACK_IMPORTED_MODULE_5__.updateFrameMembershipOfSelectedElements)(elements.map(element => updatedElementsMap.get(element.id) || element), appState, app);\n};\n\nconst actionAlignTop = (0,_register__WEBPACK_IMPORTED_MODULE_10__.register)({\n  name: "alignTop",\n  trackEvent: {\n    category: "element"\n  },\n  predicate: alignActionsPredicate,\n  perform: (elements, appState, _, app) => {\n    return {\n      appState,\n      elements: alignSelectedElements(elements, appState, app, {\n        position: "start",\n        axis: "y"\n      }),\n      commitToHistory: true\n    };\n  },\n  keyTest: event => event[_keys__WEBPACK_IMPORTED_MODULE_7__.KEYS.CTRL_OR_CMD] && event.shiftKey && event.key === _keys__WEBPACK_IMPORTED_MODULE_7__.KEYS.ARROW_UP,\n  PanelComponent: ({\n    elements,\n    appState,\n    updateData,\n    app\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ToolButton__WEBPACK_IMPORTED_MODULE_3__.ToolButton, {\n    hidden: !alignActionsPredicate(elements, appState, null, app),\n    type: "button",\n    icon: _components_icons__WEBPACK_IMPORTED_MODULE_2__.AlignTopIcon,\n    onClick: () => updateData(null),\n    title: `${(0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("labels.alignTop")} \u2014 ${(0,_utils__WEBPACK_IMPORTED_MODULE_9__.getShortcutKey)("CtrlOrCmd+Shift+Up")}`,\n    "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("labels.alignTop"),\n    visible: (0,_scene__WEBPACK_IMPORTED_MODULE_8__.isSomeElementSelected)((0,_element__WEBPACK_IMPORTED_MODULE_4__.getNonDeletedElements)(elements), appState)\n  })\n});\nconst actionAlignBottom = (0,_register__WEBPACK_IMPORTED_MODULE_10__.register)({\n  name: "alignBottom",\n  trackEvent: {\n    category: "element"\n  },\n  predicate: alignActionsPredicate,\n  perform: (elements, appState, _, app) => {\n    return {\n      appState,\n      elements: alignSelectedElements(elements, appState, app, {\n        position: "end",\n        axis: "y"\n      }),\n      commitToHistory: true\n    };\n  },\n  keyTest: event => event[_keys__WEBPACK_IMPORTED_MODULE_7__.KEYS.CTRL_OR_CMD] && event.shiftKey && event.key === _keys__WEBPACK_IMPORTED_MODULE_7__.KEYS.ARROW_DOWN,\n  PanelComponent: ({\n    elements,\n    appState,\n    updateData,\n    app\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ToolButton__WEBPACK_IMPORTED_MODULE_3__.ToolButton, {\n    hidden: !alignActionsPredicate(elements, appState, null, app),\n    type: "button",\n    icon: _components_icons__WEBPACK_IMPORTED_MODULE_2__.AlignBottomIcon,\n    onClick: () => updateData(null),\n    title: `${(0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("labels.alignBottom")} \u2014 ${(0,_utils__WEBPACK_IMPORTED_MODULE_9__.getShortcutKey)("CtrlOrCmd+Shift+Down")}`,\n    "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("labels.alignBottom"),\n    visible: (0,_scene__WEBPACK_IMPORTED_MODULE_8__.isSomeElementSelected)((0,_element__WEBPACK_IMPORTED_MODULE_4__.getNonDeletedElements)(elements), appState)\n  })\n});\nconst actionAlignLeft = (0,_register__WEBPACK_IMPORTED_MODULE_10__.register)({\n  name: "alignLeft",\n  trackEvent: {\n    category: "element"\n  },\n  predicate: alignActionsPredicate,\n  perform: (elements, appState, _, app) => {\n    return {\n      appState,\n      elements: alignSelectedElements(elements, appState, app, {\n        position: "start",\n        axis: "x"\n      }),\n      commitToHistory: true\n    };\n  },\n  keyTest: event => event[_keys__WEBPACK_IMPORTED_MODULE_7__.KEYS.CTRL_OR_CMD] && event.shiftKey && event.key === _keys__WEBPACK_IMPORTED_MODULE_7__.KEYS.ARROW_LEFT,\n  PanelComponent: ({\n    elements,\n    appState,\n    updateData,\n    app\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ToolButton__WEBPACK_IMPORTED_MODULE_3__.ToolButton, {\n    hidden: !alignActionsPredicate(elements, appState, null, app),\n    type: "button",\n    icon: _components_icons__WEBPACK_IMPORTED_MODULE_2__.AlignLeftIcon,\n    onClick: () => updateData(null),\n    title: `${(0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("labels.alignLeft")} \u2014 ${(0,_utils__WEBPACK_IMPORTED_MODULE_9__.getShortcutKey)("CtrlOrCmd+Shift+Left")}`,\n    "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("labels.alignLeft"),\n    visible: (0,_scene__WEBPACK_IMPORTED_MODULE_8__.isSomeElementSelected)((0,_element__WEBPACK_IMPORTED_MODULE_4__.getNonDeletedElements)(elements), appState)\n  })\n});\nconst actionAlignRight = (0,_register__WEBPACK_IMPORTED_MODULE_10__.register)({\n  name: "alignRight",\n  trackEvent: {\n    category: "element"\n  },\n  predicate: alignActionsPredicate,\n  perform: (elements, appState, _, app) => {\n    return {\n      appState,\n      elements: alignSelectedElements(elements, appState, app, {\n        position: "end",\n        axis: "x"\n      }),\n      commitToHistory: true\n    };\n  },\n  keyTest: event => event[_keys__WEBPACK_IMPORTED_MODULE_7__.KEYS.CTRL_OR_CMD] && event.shiftKey && event.key === _keys__WEBPACK_IMPORTED_MODULE_7__.KEYS.ARROW_RIGHT,\n  PanelComponent: ({\n    elements,\n    appState,\n    updateData,\n    app\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ToolButton__WEBPACK_IMPORTED_MODULE_3__.ToolButton, {\n    hidden: !alignActionsPredicate(elements, appState, null, app),\n    type: "button",\n    icon: _components_icons__WEBPACK_IMPORTED_MODULE_2__.AlignRightIcon,\n    onClick: () => updateData(null),\n    title: `${(0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("labels.alignRight")} \u2014 ${(0,_utils__WEBPACK_IMPORTED_MODULE_9__.getShortcutKey)("CtrlOrCmd+Shift+Right")}`,\n    "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("labels.alignRight"),\n    visible: (0,_scene__WEBPACK_IMPORTED_MODULE_8__.isSomeElementSelected)((0,_element__WEBPACK_IMPORTED_MODULE_4__.getNonDeletedElements)(elements), appState)\n  })\n});\nconst actionAlignVerticallyCentered = (0,_register__WEBPACK_IMPORTED_MODULE_10__.register)({\n  name: "alignVerticallyCentered",\n  trackEvent: {\n    category: "element"\n  },\n  predicate: alignActionsPredicate,\n  perform: (elements, appState, _, app) => {\n    return {\n      appState,\n      elements: alignSelectedElements(elements, appState, app, {\n        position: "center",\n        axis: "y"\n      }),\n      commitToHistory: true\n    };\n  },\n  PanelComponent: ({\n    elements,\n    appState,\n    updateData,\n    app\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ToolButton__WEBPACK_IMPORTED_MODULE_3__.ToolButton, {\n    hidden: !alignActionsPredicate(elements, appState, null, app),\n    type: "button",\n    icon: _components_icons__WEBPACK_IMPORTED_MODULE_2__.CenterVerticallyIcon,\n    onClick: () => updateData(null),\n    title: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("labels.centerVertically"),\n    "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("labels.centerVertically"),\n    visible: (0,_scene__WEBPACK_IMPORTED_MODULE_8__.isSomeElementSelected)((0,_element__WEBPACK_IMPORTED_MODULE_4__.getNonDeletedElements)(elements), appState)\n  })\n});\nconst actionAlignHorizontallyCentered = (0,_register__WEBPACK_IMPORTED_MODULE_10__.register)({\n  name: "alignHorizontallyCentered",\n  trackEvent: {\n    category: "element"\n  },\n  predicate: alignActionsPredicate,\n  perform: (elements, appState, _, app) => {\n    return {\n      appState,\n      elements: alignSelectedElements(elements, appState, app, {\n        position: "center",\n        axis: "x"\n      }),\n      commitToHistory: true\n    };\n  },\n  PanelComponent: ({\n    elements,\n    appState,\n    updateData,\n    app\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ToolButton__WEBPACK_IMPORTED_MODULE_3__.ToolButton, {\n    hidden: !alignActionsPredicate(elements, appState, null, app),\n    type: "button",\n    icon: _components_icons__WEBPACK_IMPORTED_MODULE_2__.CenterHorizontallyIcon,\n    onClick: () => updateData(null),\n    title: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("labels.centerHorizontally"),\n    "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("labels.centerHorizontally"),\n    visible: (0,_scene__WEBPACK_IMPORTED_MODULE_8__.isSomeElementSelected)((0,_element__WEBPACK_IMPORTED_MODULE_4__.getNonDeletedElements)(elements), appState)\n  })\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 12524 characters]\n//# sourceURL=webpack-internal:///../../actions/actionAlign.tsx\n');
              }
            ),
            /***/
            "../../actions/actionBoundText.tsx": (
              /*!*****************************************!*\
                !*** ../../actions/actionBoundText.tsx ***!
                \*****************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "actionBindText": () => (/* binding */ actionBindText),\n/* harmony export */   "actionUnbindText": () => (/* binding */ actionUnbindText),\n/* harmony export */   "actionWrapTextInContainer": () => (/* binding */ actionWrapTextInContainer)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _element_mutateElement__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../element/mutateElement */ "../../element/mutateElement.ts");\n/* harmony import */ var _element_textElement__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../element/textElement */ "../../element/textElement.ts");\n/* harmony import */ var _element_textWysiwyg__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../element/textWysiwyg */ "../../element/textWysiwyg.tsx");\n/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../element/typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./register */ "../../actions/register.ts");\n\n\n\n\n\n\n\n\nconst actionUnbindText = (0,_register__WEBPACK_IMPORTED_MODULE_7__.register)({\n  name: "unbindText",\n  contextItemLabel: "labels.unbindText",\n  trackEvent: {\n    category: "element"\n  },\n  predicate: (elements, appState, _, app) => {\n    const selectedElements = app.scene.getSelectedElements(appState);\n    return selectedElements.some(element => (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_5__.hasBoundTextElement)(element));\n  },\n  perform: (elements, appState, _, app) => {\n    const selectedElements = app.scene.getSelectedElements(appState);\n    selectedElements.forEach(element => {\n      var _a;\n\n      const boundTextElement = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_3__.getBoundTextElement)(element);\n\n      if (boundTextElement) {\n        const {\n          width,\n          height,\n          baseline\n        } = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_3__.measureText)(boundTextElement.originalText, (0,_utils__WEBPACK_IMPORTED_MODULE_6__.getFontString)(boundTextElement), boundTextElement.lineHeight);\n        const originalContainerHeight = (0,_element_textWysiwyg__WEBPACK_IMPORTED_MODULE_4__.getOriginalContainerHeightFromCache)(element.id);\n        (0,_element_textWysiwyg__WEBPACK_IMPORTED_MODULE_4__.resetOriginalContainerCache)(element.id);\n        const {\n          x,\n          y\n        } = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_3__.computeBoundTextPosition)(element, boundTextElement);\n        (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_2__.mutateElement)(boundTextElement, {\n          containerId: null,\n          width,\n          height,\n          baseline,\n          text: boundTextElement.originalText,\n          x,\n          y\n        });\n        (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_2__.mutateElement)(element, {\n          boundElements: (_a = element.boundElements) === null || _a === void 0 ? void 0 : _a.filter(ele => ele.id !== boundTextElement.id),\n          height: originalContainerHeight ? originalContainerHeight : element.height\n        });\n      }\n    });\n    return {\n      elements,\n      appState,\n      commitToHistory: true\n    };\n  }\n});\nconst actionBindText = (0,_register__WEBPACK_IMPORTED_MODULE_7__.register)({\n  name: "bindText",\n  contextItemLabel: "labels.bindText",\n  trackEvent: {\n    category: "element"\n  },\n  predicate: (elements, appState, _, app) => {\n    const selectedElements = app.scene.getSelectedElements(appState);\n\n    if (selectedElements.length === 2) {\n      const textElement = (0,_element__WEBPACK_IMPORTED_MODULE_1__.isTextElement)(selectedElements[0]) || (0,_element__WEBPACK_IMPORTED_MODULE_1__.isTextElement)(selectedElements[1]);\n      let bindingContainer;\n\n      if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_5__.isTextBindableContainer)(selectedElements[0])) {\n        bindingContainer = selectedElements[0];\n      } else if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_5__.isTextBindableContainer)(selectedElements[1])) {\n        bindingContainer = selectedElements[1];\n      }\n\n      if (textElement && bindingContainer && (0,_element_textElement__WEBPACK_IMPORTED_MODULE_3__.getBoundTextElement)(bindingContainer) === null) {\n        return true;\n      }\n    }\n\n    return false;\n  },\n  perform: (elements, appState, _, app) => {\n    const selectedElements = app.scene.getSelectedElements(appState);\n    let textElement;\n    let container;\n\n    if ((0,_element__WEBPACK_IMPORTED_MODULE_1__.isTextElement)(selectedElements[0]) && (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_5__.isTextBindableContainer)(selectedElements[1])) {\n      textElement = selectedElements[0];\n      container = selectedElements[1];\n    } else {\n      textElement = selectedElements[1];\n      container = selectedElements[0];\n    }\n\n    (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_2__.mutateElement)(textElement, {\n      containerId: container.id,\n      verticalAlign: _constants__WEBPACK_IMPORTED_MODULE_0__.VERTICAL_ALIGN.MIDDLE,\n      textAlign: _constants__WEBPACK_IMPORTED_MODULE_0__.TEXT_ALIGN.CENTER\n    });\n    (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_2__.mutateElement)(container, {\n      boundElements: (container.boundElements || []).concat({\n        type: "text",\n        id: textElement.id\n      })\n    });\n    const originalContainerHeight = container.height;\n    (0,_element_textElement__WEBPACK_IMPORTED_MODULE_3__.redrawTextBoundingBox)(textElement, container); // overwritting the cache with original container height so\n    // it can be restored when unbind\n\n    (0,_element_textWysiwyg__WEBPACK_IMPORTED_MODULE_4__.updateOriginalContainerCache)(container.id, originalContainerHeight);\n    return {\n      elements: pushTextAboveContainer(elements, container, textElement),\n      appState: Object.assign(Object.assign({}, appState), {\n        selectedElementIds: {\n          [container.id]: true\n        }\n      }),\n      commitToHistory: true\n    };\n  }\n});\n\nconst pushTextAboveContainer = (elements, container, textElement) => {\n  const updatedElements = elements.slice();\n  const textElementIndex = updatedElements.findIndex(ele => ele.id === textElement.id);\n  updatedElements.splice(textElementIndex, 1);\n  const containerIndex = updatedElements.findIndex(ele => ele.id === container.id);\n  updatedElements.splice(containerIndex + 1, 0, textElement);\n  return updatedElements;\n};\n\nconst pushContainerBelowText = (elements, container, textElement) => {\n  const updatedElements = elements.slice();\n  const containerIndex = updatedElements.findIndex(ele => ele.id === container.id);\n  updatedElements.splice(containerIndex, 1);\n  const textElementIndex = updatedElements.findIndex(ele => ele.id === textElement.id);\n  updatedElements.splice(textElementIndex, 0, container);\n  return updatedElements;\n};\n\nconst actionWrapTextInContainer = (0,_register__WEBPACK_IMPORTED_MODULE_7__.register)({\n  name: "wrapTextInContainer",\n  contextItemLabel: "labels.createContainerFromText",\n  trackEvent: {\n    category: "element"\n  },\n  predicate: (elements, appState, _, app) => {\n    const selectedElements = app.scene.getSelectedElements(appState);\n    const areTextElements = selectedElements.every(el => (0,_element__WEBPACK_IMPORTED_MODULE_1__.isTextElement)(el));\n    return selectedElements.length > 0 && areTextElements;\n  },\n  perform: (elements, appState, _, app) => {\n    var _a;\n\n    const selectedElements = app.scene.getSelectedElements(appState);\n    let updatedElements = elements.slice();\n    const containerIds = {};\n\n    for (const textElement of selectedElements) {\n      if ((0,_element__WEBPACK_IMPORTED_MODULE_1__.isTextElement)(textElement)) {\n        const container = (0,_element__WEBPACK_IMPORTED_MODULE_1__.newElement)({\n          type: "rectangle",\n          backgroundColor: appState.currentItemBackgroundColor,\n          boundElements: [...(textElement.boundElements || []), {\n            id: textElement.id,\n            type: "text"\n          }],\n          angle: textElement.angle,\n          fillStyle: appState.currentItemFillStyle,\n          strokeColor: appState.currentItemStrokeColor,\n          roughness: appState.currentItemRoughness,\n          strokeWidth: appState.currentItemStrokeWidth,\n          strokeStyle: appState.currentItemStrokeStyle,\n          roundness: appState.currentItemRoundness === "round" ? {\n            type: (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_5__.isUsingAdaptiveRadius)("rectangle") ? _constants__WEBPACK_IMPORTED_MODULE_0__.ROUNDNESS.ADAPTIVE_RADIUS : _constants__WEBPACK_IMPORTED_MODULE_0__.ROUNDNESS.PROPORTIONAL_RADIUS\n          } : null,\n          opacity: 100,\n          locked: false,\n          x: textElement.x - _constants__WEBPACK_IMPORTED_MODULE_0__.BOUND_TEXT_PADDING,\n          y: textElement.y - _constants__WEBPACK_IMPORTED_MODULE_0__.BOUND_TEXT_PADDING,\n          width: (0,_element_textElement__WEBPACK_IMPORTED_MODULE_3__.computeContainerDimensionForBoundText)(textElement.width, "rectangle"),\n          height: (0,_element_textElement__WEBPACK_IMPORTED_MODULE_3__.computeContainerDimensionForBoundText)(textElement.height, "rectangle"),\n          groupIds: textElement.groupIds,\n          frameId: textElement.frameId\n        }); // update bindings\n\n        if ((_a = textElement.boundElements) === null || _a === void 0 ? void 0 : _a.length) {\n          const linearElementIds = textElement.boundElements.filter(ele => ele.type === "arrow").map(el => el.id);\n          const linearElements = updatedElements.filter(ele => linearElementIds.includes(ele.id));\n          linearElements.forEach(ele => {\n            let startBinding = ele.startBinding;\n            let endBinding = ele.endBinding;\n\n            if ((startBinding === null || startBinding === void 0 ? void 0 : startBinding.elementId) === textElement.id) {\n              startBinding = Object.assign(Object.assign({}, startBinding), {\n                elementId: container.id\n              });\n            }\n\n            if ((endBinding === null || endBinding === void 0 ? void 0 : endBinding.elementId) === textElement.id) {\n              endBinding = Object.assign(Object.assign({}, endBinding), {\n                elementId: container.id\n              });\n            }\n\n            if (startBinding || endBinding) {\n              (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_2__.mutateElement)(ele, {\n                startBinding,\n                endBinding\n              }, false);\n            }\n          });\n        }\n\n        (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_2__.mutateElement)(textElement, {\n          containerId: container.id,\n          verticalAlign: _constants__WEBPACK_IMPORTED_MODULE_0__.VERTICAL_ALIGN.MIDDLE,\n          boundElements: null,\n          textAlign: _constants__WEBPACK_IMPORTED_MODULE_0__.TEXT_ALIGN.CENTER\n        }, false);\n        (0,_element_textElement__WEBPACK_IMPORTED_MODULE_3__.redrawTextBoundingBox)(textElement, container);\n        updatedElements = pushContainerBelowText([...updatedElements, container], container, textElement);\n        containerIds[container.id] = true;\n      }\n    }\n\n    return {\n      elements: updatedElements,\n      appState: Object.assign(Object.assign({}, appState), {\n        selectedElementIds: containerIds\n      }),\n      commitToHistory: true\n    };\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 15176 characters]\n//# sourceURL=webpack-internal:///../../actions/actionBoundText.tsx\n');
              }
            ),
            /***/
            "../../actions/actionCanvas.tsx": (
              /*!**************************************!*\
                !*** ../../actions/actionCanvas.tsx ***!
                \**************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "actionChangeViewBackgroundColor": () => (/* binding */ actionChangeViewBackgroundColor),\n/* harmony export */   "actionClearCanvas": () => (/* binding */ actionClearCanvas),\n/* harmony export */   "actionResetZoom": () => (/* binding */ actionResetZoom),\n/* harmony export */   "actionToggleEraserTool": () => (/* binding */ actionToggleEraserTool),\n/* harmony export */   "actionToggleHandTool": () => (/* binding */ actionToggleHandTool),\n/* harmony export */   "actionToggleTheme": () => (/* binding */ actionToggleTheme),\n/* harmony export */   "actionZoomIn": () => (/* binding */ actionZoomIn),\n/* harmony export */   "actionZoomOut": () => (/* binding */ actionZoomOut),\n/* harmony export */   "actionZoomToFit": () => (/* binding */ actionZoomToFit),\n/* harmony export */   "actionZoomToFitSelection": () => (/* binding */ actionZoomToFitSelection),\n/* harmony export */   "actionZoomToFitSelectionInViewport": () => (/* binding */ actionZoomToFitSelectionInViewport),\n/* harmony export */   "zoomToFit": () => (/* binding */ zoomToFit)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _components_ColorPicker_ColorPicker__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/ColorPicker/ColorPicker */ "../../components/ColorPicker/ColorPicker.tsx");\n/* harmony import */ var _components_icons__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../components/icons */ "../../components/icons.tsx");\n/* harmony import */ var _components_ToolButton__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../components/ToolButton */ "../../components/ToolButton.tsx");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../scene */ "../../scene/index.ts");\n/* harmony import */ var _scene_scroll__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../scene/scroll */ "../../scene/scroll.ts");\n/* harmony import */ var _scene_zoom__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../scene/zoom */ "../../scene/zoom.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./register */ "../../actions/register.ts");\n/* harmony import */ var _components_Tooltip__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../components/Tooltip */ "../../components/Tooltip.tsx");\n/* harmony import */ var _element_mutateElement__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../element/mutateElement */ "../../element/mutateElement.ts");\n/* harmony import */ var _appState__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../appState */ "../../appState.ts");\n/* harmony import */ var _colors__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../colors */ "../../colors.ts");\n/* harmony import */ var _cursor__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../cursor */ "../../cursor.ts");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst actionChangeViewBackgroundColor = (0,_register__WEBPACK_IMPORTED_MODULE_12__.register)({\n  name: "changeViewBackgroundColor",\n  trackEvent: false,\n  predicate: (elements, appState, props, app) => {\n    return !!app.props.UIOptions.canvasActions.changeViewBackgroundColor && !appState.viewModeEnabled;\n  },\n  perform: (_, appState, value) => {\n    return {\n      appState: Object.assign(Object.assign({}, appState), value),\n      commitToHistory: !!value.viewBackgroundColor\n    };\n  },\n  PanelComponent: ({\n    elements,\n    appState,\n    updateData,\n    appProps\n  }) => {\n    // FIXME move me to src/components/mainMenu/DefaultItems.tsx\n    return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ColorPicker_ColorPicker__WEBPACK_IMPORTED_MODULE_1__.ColorPicker, {\n      palette: null,\n      topPicks: _colors__WEBPACK_IMPORTED_MODULE_16__.DEFAULT_CANVAS_BACKGROUND_PICKS,\n      label: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("labels.canvasBackground"),\n      type: "canvasBackground",\n      color: appState.viewBackgroundColor,\n      onChange: color => updateData({\n        viewBackgroundColor: color\n      }),\n      "data-testid": "canvas-background-picker",\n      elements: elements,\n      appState: appState,\n      updateData: updateData\n    });\n  }\n});\nconst actionClearCanvas = (0,_register__WEBPACK_IMPORTED_MODULE_12__.register)({\n  name: "clearCanvas",\n  trackEvent: {\n    category: "canvas"\n  },\n  predicate: (elements, appState, props, app) => {\n    return !!app.props.UIOptions.canvasActions.clearCanvas && !appState.viewModeEnabled;\n  },\n  perform: (elements, appState, _, app) => {\n    app.imageCache.clear();\n    return {\n      elements: elements.map(element => (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_14__.newElementWith)(element, {\n        isDeleted: true\n      })),\n      appState: Object.assign(Object.assign({}, (0,_appState__WEBPACK_IMPORTED_MODULE_15__.getDefaultAppState)()), {\n        files: {},\n        theme: appState.theme,\n        penMode: appState.penMode,\n        penDetected: appState.penDetected,\n        exportBackground: appState.exportBackground,\n        exportEmbedScene: appState.exportEmbedScene,\n        gridSize: appState.gridSize,\n        showStats: appState.showStats,\n        pasteDialog: appState.pasteDialog,\n        activeTool: appState.activeTool.type === "image" ? Object.assign(Object.assign({}, appState.activeTool), {\n          type: "selection"\n        }) : appState.activeTool\n      }),\n      commitToHistory: true\n    };\n  }\n});\nconst actionZoomIn = (0,_register__WEBPACK_IMPORTED_MODULE_12__.register)({\n  name: "zoomIn",\n  viewMode: true,\n  trackEvent: {\n    category: "canvas"\n  },\n  perform: (_elements, appState, _, app) => {\n    return {\n      appState: Object.assign(Object.assign({}, appState), (0,_scene_zoom__WEBPACK_IMPORTED_MODULE_10__.getStateForZoom)({\n        viewportX: appState.width / 2 + appState.offsetLeft,\n        viewportY: appState.height / 2 + appState.offsetTop,\n        nextZoom: (0,_scene__WEBPACK_IMPORTED_MODULE_8__.getNormalizedZoom)(appState.zoom.value + _constants__WEBPACK_IMPORTED_MODULE_4__.ZOOM_STEP)\n      }, appState)),\n      commitToHistory: false\n    };\n  },\n  PanelComponent: ({\n    updateData\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ToolButton__WEBPACK_IMPORTED_MODULE_3__.ToolButton, {\n    type: "button",\n    className: "zoom-in-button zoom-button",\n    icon: _components_icons__WEBPACK_IMPORTED_MODULE_2__.ZoomInIcon,\n    title: `${(0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("buttons.zoomIn")} \u2014 ${(0,_utils__WEBPACK_IMPORTED_MODULE_11__.getShortcutKey)("CtrlOrCmd++")}`,\n    "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("buttons.zoomIn"),\n    onClick: () => {\n      updateData(null);\n    }\n  }),\n  keyTest: event => (event.code === _keys__WEBPACK_IMPORTED_MODULE_7__.CODES.EQUAL || event.code === _keys__WEBPACK_IMPORTED_MODULE_7__.CODES.NUM_ADD) && (event[_keys__WEBPACK_IMPORTED_MODULE_7__.KEYS.CTRL_OR_CMD] || event.shiftKey)\n});\nconst actionZoomOut = (0,_register__WEBPACK_IMPORTED_MODULE_12__.register)({\n  name: "zoomOut",\n  viewMode: true,\n  trackEvent: {\n    category: "canvas"\n  },\n  perform: (_elements, appState, _, app) => {\n    return {\n      appState: Object.assign(Object.assign({}, appState), (0,_scene_zoom__WEBPACK_IMPORTED_MODULE_10__.getStateForZoom)({\n        viewportX: appState.width / 2 + appState.offsetLeft,\n        viewportY: appState.height / 2 + appState.offsetTop,\n        nextZoom: (0,_scene__WEBPACK_IMPORTED_MODULE_8__.getNormalizedZoom)(appState.zoom.value - _constants__WEBPACK_IMPORTED_MODULE_4__.ZOOM_STEP)\n      }, appState)),\n      commitToHistory: false\n    };\n  },\n  PanelComponent: ({\n    updateData\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ToolButton__WEBPACK_IMPORTED_MODULE_3__.ToolButton, {\n    type: "button",\n    className: "zoom-out-button zoom-button",\n    icon: _components_icons__WEBPACK_IMPORTED_MODULE_2__.ZoomOutIcon,\n    title: `${(0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("buttons.zoomOut")} \u2014 ${(0,_utils__WEBPACK_IMPORTED_MODULE_11__.getShortcutKey)("CtrlOrCmd+-")}`,\n    "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("buttons.zoomOut"),\n    onClick: () => {\n      updateData(null);\n    }\n  }),\n  keyTest: event => (event.code === _keys__WEBPACK_IMPORTED_MODULE_7__.CODES.MINUS || event.code === _keys__WEBPACK_IMPORTED_MODULE_7__.CODES.NUM_SUBTRACT) && (event[_keys__WEBPACK_IMPORTED_MODULE_7__.KEYS.CTRL_OR_CMD] || event.shiftKey)\n});\nconst actionResetZoom = (0,_register__WEBPACK_IMPORTED_MODULE_12__.register)({\n  name: "resetZoom",\n  viewMode: true,\n  trackEvent: {\n    category: "canvas"\n  },\n  perform: (_elements, appState, _, app) => {\n    return {\n      appState: Object.assign(Object.assign({}, appState), (0,_scene_zoom__WEBPACK_IMPORTED_MODULE_10__.getStateForZoom)({\n        viewportX: appState.width / 2 + appState.offsetLeft,\n        viewportY: appState.height / 2 + appState.offsetTop,\n        nextZoom: (0,_scene__WEBPACK_IMPORTED_MODULE_8__.getNormalizedZoom)(1)\n      }, appState)),\n      commitToHistory: false\n    };\n  },\n  PanelComponent: ({\n    updateData,\n    appState\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_Tooltip__WEBPACK_IMPORTED_MODULE_13__.Tooltip, Object.assign({\n    label: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("buttons.resetZoom"),\n    style: {\n      height: "100%"\n    }\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components_ToolButton__WEBPACK_IMPORTED_MODULE_3__.ToolButton, Object.assign({\n      type: "button",\n      className: "reset-zoom-button zoom-button",\n      title: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("buttons.resetZoom"),\n      "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("buttons.resetZoom"),\n      onClick: () => {\n        updateData(null);\n      }\n    }, {\n      children: [(appState.zoom.value * 100).toFixed(0), "%"]\n    }))\n  })),\n  keyTest: event => (event.code === _keys__WEBPACK_IMPORTED_MODULE_7__.CODES.ZERO || event.code === _keys__WEBPACK_IMPORTED_MODULE_7__.CODES.NUM_ZERO) && (event[_keys__WEBPACK_IMPORTED_MODULE_7__.KEYS.CTRL_OR_CMD] || event.shiftKey)\n});\n\nconst zoomValueToFitBoundsOnViewport = (bounds, viewportDimensions) => {\n  const [x1, y1, x2, y2] = bounds;\n  const commonBoundsWidth = x2 - x1;\n  const zoomValueForWidth = viewportDimensions.width / commonBoundsWidth;\n  const commonBoundsHeight = y2 - y1;\n  const zoomValueForHeight = viewportDimensions.height / commonBoundsHeight;\n  const smallestZoomValue = Math.min(zoomValueForWidth, zoomValueForHeight);\n  const zoomAdjustedToSteps = Math.floor(smallestZoomValue / _constants__WEBPACK_IMPORTED_MODULE_4__.ZOOM_STEP) * _constants__WEBPACK_IMPORTED_MODULE_4__.ZOOM_STEP;\n  const clampedZoomValueToFitElements = Math.min(Math.max(zoomAdjustedToSteps, _constants__WEBPACK_IMPORTED_MODULE_4__.MIN_ZOOM), 1);\n  return clampedZoomValueToFitElements;\n};\n\nconst zoomToFit = ({\n  targetElements,\n  appState,\n  fitToViewport = false,\n  viewportZoomFactor = 0.7\n}) => {\n  const commonBounds = (0,_element__WEBPACK_IMPORTED_MODULE_5__.getCommonBounds)((0,_element__WEBPACK_IMPORTED_MODULE_5__.getNonDeletedElements)(targetElements));\n  const [x1, y1, x2, y2] = commonBounds;\n  const centerX = (x1 + x2) / 2;\n  const centerY = (y1 + y2) / 2;\n  let newZoomValue;\n  let scrollX;\n  let scrollY;\n\n  if (fitToViewport) {\n    const commonBoundsWidth = x2 - x1;\n    const commonBoundsHeight = y2 - y1;\n    newZoomValue = Math.min(appState.width / commonBoundsWidth, appState.height / commonBoundsHeight) * Math.min(1, Math.max(viewportZoomFactor, 0.1)); // Apply clamping to newZoomValue to be between 10% and 3000%\n\n    newZoomValue = Math.min(Math.max(newZoomValue, 0.1), 30.0);\n    scrollX = appState.width / 2 * (1 / newZoomValue) - centerX;\n    scrollY = appState.height / 2 * (1 / newZoomValue) - centerY;\n  } else {\n    newZoomValue = zoomValueToFitBoundsOnViewport(commonBounds, {\n      width: appState.width,\n      height: appState.height\n    });\n    const centerScroll = (0,_scene_scroll__WEBPACK_IMPORTED_MODULE_9__.centerScrollOn)({\n      scenePoint: {\n        x: centerX,\n        y: centerY\n      },\n      viewportDimensions: {\n        width: appState.width,\n        height: appState.height\n      },\n      zoom: {\n        value: newZoomValue\n      }\n    });\n    scrollX = centerScroll.scrollX;\n    scrollY = centerScroll.scrollY;\n  }\n\n  return {\n    appState: Object.assign(Object.assign({}, appState), {\n      scrollX,\n      scrollY,\n      zoom: {\n        value: newZoomValue\n      }\n    }),\n    commitToHistory: false\n  };\n}; // Note, this action differs from actionZoomToFitSelection in that it doesn\'t\n// zoom beyond 100%. In other words, if the content is smaller than viewport\n// size, it won\'t be zoomed in.\n\nconst actionZoomToFitSelectionInViewport = (0,_register__WEBPACK_IMPORTED_MODULE_12__.register)({\n  name: "zoomToFitSelectionInViewport",\n  trackEvent: {\n    category: "canvas"\n  },\n  perform: (elements, appState, _, app) => {\n    const selectedElements = app.scene.getSelectedElements(appState);\n    return zoomToFit({\n      targetElements: selectedElements.length ? selectedElements : elements,\n      appState,\n      fitToViewport: false\n    });\n  },\n  // NOTE shift-2 should have been assigned actionZoomToFitSelection.\n  // TBD on how proceed\n  keyTest: event => event.code === _keys__WEBPACK_IMPORTED_MODULE_7__.CODES.TWO && event.shiftKey && !event.altKey && !event[_keys__WEBPACK_IMPORTED_MODULE_7__.KEYS.CTRL_OR_CMD]\n});\nconst actionZoomToFitSelection = (0,_register__WEBPACK_IMPORTED_MODULE_12__.register)({\n  name: "zoomToFitSelection",\n  trackEvent: {\n    category: "canvas"\n  },\n  perform: (elements, appState, _, app) => {\n    const selectedElements = app.scene.getSelectedElements(appState);\n    return zoomToFit({\n      targetElements: selectedElements.length ? selectedElements : elements,\n      appState,\n      fitToViewport: true\n    });\n  },\n  // NOTE this action should use shift-2 per figma, alas\n  keyTest: event => event.code === _keys__WEBPACK_IMPORTED_MODULE_7__.CODES.THREE && event.shiftKey && !event.altKey && !event[_keys__WEBPACK_IMPORTED_MODULE_7__.KEYS.CTRL_OR_CMD]\n});\nconst actionZoomToFit = (0,_register__WEBPACK_IMPORTED_MODULE_12__.register)({\n  name: "zoomToFit",\n  viewMode: true,\n  trackEvent: {\n    category: "canvas"\n  },\n  perform: (elements, appState) => zoomToFit({\n    targetElements: elements,\n    appState,\n    fitToViewport: false\n  }),\n  keyTest: event => event.code === _keys__WEBPACK_IMPORTED_MODULE_7__.CODES.ONE && event.shiftKey && !event.altKey && !event[_keys__WEBPACK_IMPORTED_MODULE_7__.KEYS.CTRL_OR_CMD]\n});\nconst actionToggleTheme = (0,_register__WEBPACK_IMPORTED_MODULE_12__.register)({\n  name: "toggleTheme",\n  viewMode: true,\n  trackEvent: {\n    category: "canvas"\n  },\n  perform: (_, appState, value) => {\n    return {\n      appState: Object.assign(Object.assign({}, appState), {\n        theme: value || (appState.theme === _constants__WEBPACK_IMPORTED_MODULE_4__.THEME.LIGHT ? _constants__WEBPACK_IMPORTED_MODULE_4__.THEME.DARK : _constants__WEBPACK_IMPORTED_MODULE_4__.THEME.LIGHT)\n      }),\n      commitToHistory: false\n    };\n  },\n  keyTest: event => event.altKey && event.shiftKey && event.code === _keys__WEBPACK_IMPORTED_MODULE_7__.CODES.D,\n  predicate: (elements, appState, props, app) => {\n    return !!app.props.UIOptions.canvasActions.toggleTheme;\n  }\n});\nconst actionToggleEraserTool = (0,_register__WEBPACK_IMPORTED_MODULE_12__.register)({\n  name: "toggleEraserTool",\n  trackEvent: {\n    category: "toolbar"\n  },\n  perform: (elements, appState) => {\n    let activeTool;\n\n    if ((0,_appState__WEBPACK_IMPORTED_MODULE_15__.isEraserActive)(appState)) {\n      activeTool = (0,_utils__WEBPACK_IMPORTED_MODULE_11__.updateActiveTool)(appState, Object.assign(Object.assign({}, appState.activeTool.lastActiveTool || {\n        type: "selection"\n      }), {\n        lastActiveToolBeforeEraser: null\n      }));\n    } else {\n      activeTool = (0,_utils__WEBPACK_IMPORTED_MODULE_11__.updateActiveTool)(appState, {\n        type: "eraser",\n        lastActiveToolBeforeEraser: appState.activeTool\n      });\n    }\n\n    return {\n      appState: Object.assign(Object.assign({}, appState), {\n        selectedElementIds: {},\n        selectedGroupIds: {},\n        activeEmbeddable: null,\n        activeTool\n      }),\n      commitToHistory: true\n    };\n  },\n  keyTest: event => event.key === _keys__WEBPACK_IMPORTED_MODULE_7__.KEYS.E\n});\nconst actionToggleHandTool = (0,_register__WEBPACK_IMPORTED_MODULE_12__.register)({\n  name: "toggleHandTool",\n  trackEvent: {\n    category: "toolbar"\n  },\n  perform: (elements, appState, _, app) => {\n    let activeTool;\n\n    if ((0,_appState__WEBPACK_IMPORTED_MODULE_15__.isHandToolActive)(appState)) {\n      activeTool = (0,_utils__WEBPACK_IMPORTED_MODULE_11__.updateActiveTool)(appState, Object.assign(Object.assign({}, appState.activeTool.lastActiveTool || {\n        type: "selection"\n      }), {\n        lastActiveToolBeforeEraser: null\n      }));\n    } else {\n      activeTool = (0,_utils__WEBPACK_IMPORTED_MODULE_11__.updateActiveTool)(appState, {\n        type: "hand",\n        lastActiveToolBeforeEraser: appState.activeTool\n      });\n      (0,_cursor__WEBPACK_IMPORTED_MODULE_17__.setCursor)(app.interactiveCanvas, _constants__WEBPACK_IMPORTED_MODULE_4__.CURSOR_TYPE.GRAB);\n    }\n\n    return {\n      appState: Object.assign(Object.assign({}, appState), {\n        selectedElementIds: {},\n        selectedGroupIds: {},\n        activeEmbeddable: null,\n        activeTool\n      }),\n      commitToHistory: true\n    };\n  },\n  keyTest: event => !event.altKey && !event[_keys__WEBPACK_IMPORTED_MODULE_7__.KEYS.CTRL_OR_CMD] && event.key === _keys__WEBPACK_IMPORTED_MODULE_7__.KEYS.H\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 22336 characters]\n//# sourceURL=webpack-internal:///../../actions/actionCanvas.tsx\n');
              }
            ),
            /***/
            "../../actions/actionClipboard.tsx": (
              /*!*****************************************!*\
                !*** ../../actions/actionClipboard.tsx ***!
                \*****************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "actionCopy": () => (/* binding */ actionCopy),\n/* harmony export */   "actionCopyAsPng": () => (/* binding */ actionCopyAsPng),\n/* harmony export */   "actionCopyAsSvg": () => (/* binding */ actionCopyAsSvg),\n/* harmony export */   "actionCut": () => (/* binding */ actionCut),\n/* harmony export */   "actionPaste": () => (/* binding */ actionPaste),\n/* harmony export */   "copyText": () => (/* binding */ copyText)\n/* harmony export */ });\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./register */ "../../actions/register.ts");\n/* harmony import */ var _clipboard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../clipboard */ "../../clipboard.ts");\n/* harmony import */ var _actionDeleteSelected__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./actionDeleteSelected */ "../../actions/actionDeleteSelected.tsx");\n/* harmony import */ var _data_index__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../data/index */ "../../data/index.ts");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator["throw"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n\n\n\n\n\n\nconst actionCopy = (0,_register__WEBPACK_IMPORTED_MODULE_1__.register)({\n  name: "copy",\n  trackEvent: {\n    category: "element"\n  },\n  perform: (elements, appState, event, app) => __awaiter(void 0, void 0, void 0, function* () {\n    const elementsToCopy = app.scene.getSelectedElements({\n      selectedElementIds: appState.selectedElementIds,\n      includeBoundTextElement: true,\n      includeElementsInFrames: true\n    });\n\n    try {\n      yield (0,_clipboard__WEBPACK_IMPORTED_MODULE_2__.copyToClipboard)(elementsToCopy, app.files, event);\n    } catch (error) {\n      return {\n        commitToHistory: false,\n        appState: Object.assign(Object.assign({}, appState), {\n          errorMessage: error.message\n        })\n      };\n    }\n\n    return {\n      commitToHistory: false\n    };\n  }),\n  contextItemLabel: "labels.copy",\n  // don\'t supply a shortcut since we handle this conditionally via onCopy event\n  keyTest: undefined\n});\nconst actionPaste = (0,_register__WEBPACK_IMPORTED_MODULE_1__.register)({\n  name: "paste",\n  trackEvent: {\n    category: "element"\n  },\n  perform: (elements, appState, data, app) => __awaiter(void 0, void 0, void 0, function* () {\n    let types;\n\n    try {\n      types = yield (0,_clipboard__WEBPACK_IMPORTED_MODULE_2__.readSystemClipboard)();\n    } catch (error) {\n      if (error.name === "AbortError" || error.name === "NotAllowedError") {\n        // user probably aborted the action. Though not 100% sure, it\'s best\n        // to not annoy them with an error message.\n        return false;\n      }\n\n      console.error(`actionPaste ${error.name}: ${error.message}`);\n\n      if (_constants__WEBPACK_IMPORTED_MODULE_7__.isFirefox) {\n        return {\n          commitToHistory: false,\n          appState: Object.assign(Object.assign({}, appState), {\n            errorMessage: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("hints.firefox_clipboard_write")\n          })\n        };\n      }\n\n      return {\n        commitToHistory: false,\n        appState: Object.assign(Object.assign({}, appState), {\n          errorMessage: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("errors.asyncPasteFailedOnRead")\n        })\n      };\n    }\n\n    try {\n      app.pasteFromClipboard((0,_clipboard__WEBPACK_IMPORTED_MODULE_2__.createPasteEvent)({\n        types\n      }));\n    } catch (error) {\n      console.error(error);\n      return {\n        commitToHistory: false,\n        appState: Object.assign(Object.assign({}, appState), {\n          errorMessage: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("errors.asyncPasteFailedOnParse")\n        })\n      };\n    }\n\n    return {\n      commitToHistory: false\n    };\n  }),\n  contextItemLabel: "labels.paste",\n  // don\'t supply a shortcut since we handle this conditionally via onCopy event\n  keyTest: undefined\n});\nconst actionCut = (0,_register__WEBPACK_IMPORTED_MODULE_1__.register)({\n  name: "cut",\n  trackEvent: {\n    category: "element"\n  },\n  perform: (elements, appState, event, app) => {\n    actionCopy.perform(elements, appState, event, app);\n    return _actionDeleteSelected__WEBPACK_IMPORTED_MODULE_3__.actionDeleteSelected.perform(elements, appState);\n  },\n  contextItemLabel: "labels.cut",\n  keyTest: event => event[_keys__WEBPACK_IMPORTED_MODULE_0__.KEYS.CTRL_OR_CMD] && event.key === _keys__WEBPACK_IMPORTED_MODULE_0__.KEYS.X\n});\nconst actionCopyAsSvg = (0,_register__WEBPACK_IMPORTED_MODULE_1__.register)({\n  name: "copyAsSvg",\n  trackEvent: {\n    category: "element"\n  },\n  perform: (elements, appState, _data, app) => __awaiter(void 0, void 0, void 0, function* () {\n    if (!app.canvas) {\n      return {\n        commitToHistory: false\n      };\n    }\n\n    const {\n      exportedElements,\n      exportingFrame\n    } = (0,_data_index__WEBPACK_IMPORTED_MODULE_4__.prepareElementsForExport)(elements, appState, true);\n\n    try {\n      yield (0,_data_index__WEBPACK_IMPORTED_MODULE_4__.exportCanvas)("clipboard-svg", exportedElements, appState, app.files, Object.assign(Object.assign({}, appState), {\n        exportingFrame\n      }));\n      return {\n        commitToHistory: false\n      };\n    } catch (error) {\n      console.error(error);\n      return {\n        appState: Object.assign(Object.assign({}, appState), {\n          errorMessage: error.message\n        }),\n        commitToHistory: false\n      };\n    }\n  }),\n  predicate: elements => {\n    return _clipboard__WEBPACK_IMPORTED_MODULE_2__.probablySupportsClipboardWriteText && elements.length > 0;\n  },\n  contextItemLabel: "labels.copyAsSvg"\n});\nconst actionCopyAsPng = (0,_register__WEBPACK_IMPORTED_MODULE_1__.register)({\n  name: "copyAsPng",\n  trackEvent: {\n    category: "element"\n  },\n  perform: (elements, appState, _data, app) => __awaiter(void 0, void 0, void 0, function* () {\n    if (!app.canvas) {\n      return {\n        commitToHistory: false\n      };\n    }\n\n    const selectedElements = app.scene.getSelectedElements({\n      selectedElementIds: appState.selectedElementIds,\n      includeBoundTextElement: true,\n      includeElementsInFrames: true\n    });\n    const {\n      exportedElements,\n      exportingFrame\n    } = (0,_data_index__WEBPACK_IMPORTED_MODULE_4__.prepareElementsForExport)(elements, appState, true);\n\n    try {\n      yield (0,_data_index__WEBPACK_IMPORTED_MODULE_4__.exportCanvas)("clipboard", exportedElements, appState, app.files, Object.assign(Object.assign({}, appState), {\n        exportingFrame\n      }));\n      return {\n        appState: Object.assign(Object.assign({}, appState), {\n          toast: {\n            message: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("toast.copyToClipboardAsPng", {\n              exportSelection: selectedElements.length ? (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("toast.selection") : (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("toast.canvas"),\n              exportColorScheme: appState.exportWithDarkMode ? (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("buttons.darkMode") : (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("buttons.lightMode")\n            })\n          }\n        }),\n        commitToHistory: false\n      };\n    } catch (error) {\n      console.error(error);\n      return {\n        appState: Object.assign(Object.assign({}, appState), {\n          errorMessage: error.message\n        }),\n        commitToHistory: false\n      };\n    }\n  }),\n  predicate: elements => {\n    return _clipboard__WEBPACK_IMPORTED_MODULE_2__.probablySupportsClipboardBlob && elements.length > 0;\n  },\n  contextItemLabel: "labels.copyAsPng",\n  keyTest: event => event.code === _keys__WEBPACK_IMPORTED_MODULE_0__.CODES.C && event.altKey && event.shiftKey\n});\nconst copyText = (0,_register__WEBPACK_IMPORTED_MODULE_1__.register)({\n  name: "copyText",\n  trackEvent: {\n    category: "element"\n  },\n  perform: (elements, appState, _, app) => {\n    const selectedElements = app.scene.getSelectedElements({\n      selectedElementIds: appState.selectedElementIds,\n      includeBoundTextElement: true\n    });\n    const text = selectedElements.reduce((acc, element) => {\n      if ((0,_element__WEBPACK_IMPORTED_MODULE_5__.isTextElement)(element)) {\n        acc.push(element.text);\n      }\n\n      return acc;\n    }, []).join("\\n\\n");\n    (0,_clipboard__WEBPACK_IMPORTED_MODULE_2__.copyTextToSystemClipboard)(text);\n    return {\n      commitToHistory: false\n    };\n  },\n  predicate: (elements, appState, _, app) => {\n    return _clipboard__WEBPACK_IMPORTED_MODULE_2__.probablySupportsClipboardWriteText && app.scene.getSelectedElements({\n      selectedElementIds: appState.selectedElementIds,\n      includeBoundTextElement: true\n    }).some(_element__WEBPACK_IMPORTED_MODULE_5__.isTextElement);\n  },\n  contextItemLabel: "labels.copyText"\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 13552 characters]\n//# sourceURL=webpack-internal:///../../actions/actionClipboard.tsx\n');
              }
            ),
            /***/
            "../../actions/actionDeleteSelected.tsx": (
              /*!**********************************************!*\
                !*** ../../actions/actionDeleteSelected.tsx ***!
                \**********************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "actionDeleteSelected": () => (/* binding */ actionDeleteSelected)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../scene */ "../../scene/index.ts");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _components_ToolButton__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../components/ToolButton */ "../../components/ToolButton.tsx");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./register */ "../../actions/register.ts");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _element_mutateElement__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../element/mutateElement */ "../../element/mutateElement.ts");\n/* harmony import */ var _groups__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../groups */ "../../groups.ts");\n/* harmony import */ var _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../element/linearElementEditor */ "../../element/linearElementEditor.ts");\n/* harmony import */ var _element_binding__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../element/binding */ "../../element/binding.ts");\n/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../element/typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _components_icons__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../components/icons */ "../../components/icons.tsx");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst deleteSelectedElements = (elements, appState) => {\n  const framesToBeDeleted = new Set((0,_scene__WEBPACK_IMPORTED_MODULE_1__.getSelectedElements)(elements.filter(el => el.type === "frame"), appState).map(el => el.id));\n  return {\n    elements: elements.map(el => {\n      if (appState.selectedElementIds[el.id]) {\n        return (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_7__.newElementWith)(el, {\n          isDeleted: true\n        });\n      }\n\n      if (el.frameId && framesToBeDeleted.has(el.frameId)) {\n        return (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_7__.newElementWith)(el, {\n          isDeleted: true\n        });\n      }\n\n      if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_11__.isBoundToContainer)(el) && appState.selectedElementIds[el.containerId]) {\n        return (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_7__.newElementWith)(el, {\n          isDeleted: true\n        });\n      }\n\n      return el;\n    }),\n    appState: Object.assign(Object.assign({}, appState), {\n      selectedElementIds: {},\n      selectedGroupIds: {}\n    })\n  };\n};\n\nconst handleGroupEditingState = (appState, elements) => {\n  if (appState.editingGroupId) {\n    const siblingElements = (0,_groups__WEBPACK_IMPORTED_MODULE_8__.getElementsInGroup)((0,_element__WEBPACK_IMPORTED_MODULE_6__.getNonDeletedElements)(elements), appState.editingGroupId);\n\n    if (siblingElements.length) {\n      return Object.assign(Object.assign({}, appState), {\n        selectedElementIds: {\n          [siblingElements[0].id]: true\n        }\n      });\n    }\n  }\n\n  return appState;\n};\n\nconst actionDeleteSelected = (0,_register__WEBPACK_IMPORTED_MODULE_5__.register)({\n  name: "deleteSelectedElements",\n  trackEvent: {\n    category: "element",\n    action: "delete"\n  },\n  perform: (elements, appState) => {\n    if (appState.editingLinearElement) {\n      const {\n        elementId,\n        selectedPointsIndices,\n        startBindingElement,\n        endBindingElement\n      } = appState.editingLinearElement;\n      const element = _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_9__.LinearElementEditor.getElement(elementId);\n\n      if (!element) {\n        return false;\n      } // case: no point selected \u2192 do nothing, as deleting the whole element\n      // is most likely a mistake, where you wanted to delete a specific point\n      // but failed to select it (or you thought it\'s selected, while it was\n      // only in a hover state)\n\n\n      if (selectedPointsIndices == null) {\n        return false;\n      } // case: deleting last remaining point\n\n\n      if (element.points.length < 2) {\n        const nextElements = elements.map(el => {\n          if (el.id === element.id) {\n            return (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_7__.newElementWith)(el, {\n              isDeleted: true\n            });\n          }\n\n          return el;\n        });\n        const nextAppState = handleGroupEditingState(appState, nextElements);\n        return {\n          elements: nextElements,\n          appState: Object.assign(Object.assign({}, nextAppState), {\n            editingLinearElement: null\n          }),\n          commitToHistory: false\n        };\n      } // We cannot do this inside `movePoint` because it is also called\n      // when deleting the uncommitted point (which hasn\'t caused any binding)\n\n\n      const binding = {\n        startBindingElement: (selectedPointsIndices === null || selectedPointsIndices === void 0 ? void 0 : selectedPointsIndices.includes(0)) ? null : startBindingElement,\n        endBindingElement: (selectedPointsIndices === null || selectedPointsIndices === void 0 ? void 0 : selectedPointsIndices.includes(element.points.length - 1)) ? null : endBindingElement\n      };\n      _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_9__.LinearElementEditor.deletePoints(element, selectedPointsIndices);\n      return {\n        elements,\n        appState: Object.assign(Object.assign({}, appState), {\n          editingLinearElement: Object.assign(Object.assign(Object.assign({}, appState.editingLinearElement), binding), {\n            selectedPointsIndices: (selectedPointsIndices === null || selectedPointsIndices === void 0 ? void 0 : selectedPointsIndices[0]) > 0 ? [selectedPointsIndices[0] - 1] : [0]\n          })\n        }),\n        commitToHistory: true\n      };\n    }\n\n    let {\n      elements: nextElements,\n      appState: nextAppState\n    } = deleteSelectedElements(elements, appState);\n    (0,_element_binding__WEBPACK_IMPORTED_MODULE_10__.fixBindingsAfterDeletion)(nextElements, elements.filter(({\n      id\n    }) => appState.selectedElementIds[id]));\n    nextAppState = handleGroupEditingState(nextAppState, nextElements);\n    return {\n      elements: nextElements,\n      appState: Object.assign(Object.assign({}, nextAppState), {\n        activeTool: (0,_utils__WEBPACK_IMPORTED_MODULE_12__.updateActiveTool)(appState, {\n          type: "selection"\n        }),\n        multiElement: null,\n        activeEmbeddable: null\n      }),\n      commitToHistory: (0,_scene__WEBPACK_IMPORTED_MODULE_1__.isSomeElementSelected)((0,_element__WEBPACK_IMPORTED_MODULE_6__.getNonDeletedElements)(elements), appState)\n    };\n  },\n  contextItemLabel: "labels.delete",\n  keyTest: (event, appState, elements) => (event.key === _keys__WEBPACK_IMPORTED_MODULE_2__.KEYS.BACKSPACE || event.key === _keys__WEBPACK_IMPORTED_MODULE_2__.KEYS.DELETE) && !event[_keys__WEBPACK_IMPORTED_MODULE_2__.KEYS.CTRL_OR_CMD],\n  PanelComponent: ({\n    elements,\n    appState,\n    updateData\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ToolButton__WEBPACK_IMPORTED_MODULE_3__.ToolButton, {\n    type: "button",\n    icon: _components_icons__WEBPACK_IMPORTED_MODULE_13__.TrashIcon,\n    title: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("labels.delete"),\n    "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("labels.delete"),\n    onClick: () => updateData(null),\n    visible: (0,_scene__WEBPACK_IMPORTED_MODULE_1__.isSomeElementSelected)((0,_element__WEBPACK_IMPORTED_MODULE_6__.getNonDeletedElements)(elements), appState)\n  })\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 9804 characters]\n//# sourceURL=webpack-internal:///../../actions/actionDeleteSelected.tsx\n');
              }
            ),
            /***/
            "../../actions/actionDistribute.tsx": (
              /*!******************************************!*\
                !*** ../../actions/actionDistribute.tsx ***!
                \******************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "distributeHorizontally": () => (/* binding */ distributeHorizontally),\n/* harmony export */   "distributeVertically": () => (/* binding */ distributeVertically)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _components_icons__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/icons */ "../../components/icons.tsx");\n/* harmony import */ var _components_ToolButton__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../components/ToolButton */ "../../components/ToolButton.tsx");\n/* harmony import */ var _distribute__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../distribute */ "../../distribute.ts");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _frame__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../frame */ "../../frame.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../scene */ "../../scene/index.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./register */ "../../actions/register.ts");\n\n\n\n\n\n\n\n\n\n\n\n\nconst enableActionGroup = (appState, app) => {\n  const selectedElements = app.scene.getSelectedElements(appState);\n  return selectedElements.length > 1 && // TODO enable distributing frames when implemented properly\n  !selectedElements.some(el => el.type === "frame");\n};\n\nconst distributeSelectedElements = (elements, appState, app, distribution) => {\n  const selectedElements = app.scene.getSelectedElements(appState);\n  const updatedElements = (0,_distribute__WEBPACK_IMPORTED_MODULE_3__.distributeElements)(selectedElements, distribution);\n  const updatedElementsMap = (0,_utils__WEBPACK_IMPORTED_MODULE_9__.arrayToMap)(updatedElements);\n  return (0,_frame__WEBPACK_IMPORTED_MODULE_5__.updateFrameMembershipOfSelectedElements)(elements.map(element => updatedElementsMap.get(element.id) || element), appState, app);\n};\n\nconst distributeHorizontally = (0,_register__WEBPACK_IMPORTED_MODULE_10__.register)({\n  name: "distributeHorizontally",\n  trackEvent: {\n    category: "element"\n  },\n  perform: (elements, appState, _, app) => {\n    return {\n      appState,\n      elements: distributeSelectedElements(elements, appState, app, {\n        space: "between",\n        axis: "x"\n      }),\n      commitToHistory: true\n    };\n  },\n  keyTest: event => !event[_keys__WEBPACK_IMPORTED_MODULE_7__.KEYS.CTRL_OR_CMD] && event.altKey && event.code === _keys__WEBPACK_IMPORTED_MODULE_7__.CODES.H,\n  PanelComponent: ({\n    elements,\n    appState,\n    updateData,\n    app\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ToolButton__WEBPACK_IMPORTED_MODULE_2__.ToolButton, {\n    hidden: !enableActionGroup(appState, app),\n    type: "button",\n    icon: _components_icons__WEBPACK_IMPORTED_MODULE_1__.DistributeHorizontallyIcon,\n    onClick: () => updateData(null),\n    title: `${(0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("labels.distributeHorizontally")} \u2014 ${(0,_utils__WEBPACK_IMPORTED_MODULE_9__.getShortcutKey)("Alt+H")}`,\n    "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("labels.distributeHorizontally"),\n    visible: (0,_scene__WEBPACK_IMPORTED_MODULE_8__.isSomeElementSelected)((0,_element__WEBPACK_IMPORTED_MODULE_4__.getNonDeletedElements)(elements), appState)\n  })\n});\nconst distributeVertically = (0,_register__WEBPACK_IMPORTED_MODULE_10__.register)({\n  name: "distributeVertically",\n  trackEvent: {\n    category: "element"\n  },\n  perform: (elements, appState, _, app) => {\n    return {\n      appState,\n      elements: distributeSelectedElements(elements, appState, app, {\n        space: "between",\n        axis: "y"\n      }),\n      commitToHistory: true\n    };\n  },\n  keyTest: event => !event[_keys__WEBPACK_IMPORTED_MODULE_7__.KEYS.CTRL_OR_CMD] && event.altKey && event.code === _keys__WEBPACK_IMPORTED_MODULE_7__.CODES.V,\n  PanelComponent: ({\n    elements,\n    appState,\n    updateData,\n    app\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ToolButton__WEBPACK_IMPORTED_MODULE_2__.ToolButton, {\n    hidden: !enableActionGroup(appState, app),\n    type: "button",\n    icon: _components_icons__WEBPACK_IMPORTED_MODULE_1__.DistributeVerticallyIcon,\n    onClick: () => updateData(null),\n    title: `${(0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("labels.distributeVertically")} \u2014 ${(0,_utils__WEBPACK_IMPORTED_MODULE_9__.getShortcutKey)("Alt+V")}`,\n    "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("labels.distributeVertically"),\n    visible: (0,_scene__WEBPACK_IMPORTED_MODULE_8__.isSomeElementSelected)((0,_element__WEBPACK_IMPORTED_MODULE_4__.getNonDeletedElements)(elements), appState)\n  })\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5728 characters]\n//# sourceURL=webpack-internal:///../../actions/actionDistribute.tsx\n');
              }
            ),
            /***/
            "../../actions/actionDuplicateSelection.tsx": (
              /*!**************************************************!*\
                !*** ../../actions/actionDuplicateSelection.tsx ***!
                \**************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "actionDuplicateSelection": () => (/* binding */ actionDuplicateSelection)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./register */ "../../actions/register.ts");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../scene */ "../../scene/index.ts");\n/* harmony import */ var _components_ToolButton__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../components/ToolButton */ "../../components/ToolButton.tsx");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../element/linearElementEditor */ "../../element/linearElementEditor.ts");\n/* harmony import */ var _groups__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../groups */ "../../groups.ts");\n/* harmony import */ var _element_binding__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../element/binding */ "../../element/binding.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _element_textElement__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../element/textElement */ "../../element/textElement.ts");\n/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../element/typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var _element_sortElements__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../element/sortElements */ "../../element/sortElements.ts");\n/* harmony import */ var _components_icons__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../components/icons */ "../../components/icons.tsx");\n/* harmony import */ var _frame__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../frame */ "../../frame.ts");\n/* harmony import */ var _scene_selection__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../scene/selection */ "../../scene/selection.ts");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst actionDuplicateSelection = (0,_register__WEBPACK_IMPORTED_MODULE_2__.register)({\n  name: "duplicateSelection",\n  trackEvent: {\n    category: "element"\n  },\n  perform: (elements, appState) => {\n    // duplicate selected point(s) if editing a line\n    if (appState.editingLinearElement) {\n      const ret = _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_8__.LinearElementEditor.duplicateSelectedPoints(appState);\n\n      if (!ret) {\n        return false;\n      }\n\n      return {\n        elements,\n        appState: ret.appState,\n        commitToHistory: true\n      };\n    }\n\n    return Object.assign(Object.assign({}, duplicateElements(elements, appState)), {\n      commitToHistory: true\n    });\n  },\n  contextItemLabel: "labels.duplicateSelection",\n  keyTest: event => event[_keys__WEBPACK_IMPORTED_MODULE_1__.KEYS.CTRL_OR_CMD] && event.key === _keys__WEBPACK_IMPORTED_MODULE_1__.KEYS.D,\n  PanelComponent: ({\n    elements,\n    appState,\n    updateData\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ToolButton__WEBPACK_IMPORTED_MODULE_5__.ToolButton, {\n    type: "button",\n    icon: _components_icons__WEBPACK_IMPORTED_MODULE_15__.DuplicateIcon,\n    title: `${(0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("labels.duplicateSelection")} \u2014 ${(0,_utils__WEBPACK_IMPORTED_MODULE_7__.getShortcutKey)("CtrlOrCmd+D")}`,\n    "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("labels.duplicateSelection"),\n    onClick: () => updateData(null),\n    visible: (0,_scene__WEBPACK_IMPORTED_MODULE_4__.isSomeElementSelected)((0,_element__WEBPACK_IMPORTED_MODULE_3__.getNonDeletedElements)(elements), appState)\n  })\n});\n\nconst duplicateElements = (elements, appState) => {\n  // ---------------------------------------------------------------------------\n  // step (1)\n  const sortedElements = (0,_element_sortElements__WEBPACK_IMPORTED_MODULE_14__.normalizeElementOrder)(elements);\n  const groupIdMap = new Map();\n  const newElements = [];\n  const oldElements = [];\n  const oldIdToDuplicatedId = new Map();\n\n  const duplicateAndOffsetElement = element => {\n    const newElement = (0,_element__WEBPACK_IMPORTED_MODULE_3__.duplicateElement)(appState.editingGroupId, groupIdMap, element, {\n      x: element.x + _constants__WEBPACK_IMPORTED_MODULE_11__.GRID_SIZE / 2,\n      y: element.y + _constants__WEBPACK_IMPORTED_MODULE_11__.GRID_SIZE / 2\n    });\n    oldIdToDuplicatedId.set(element.id, newElement.id);\n    oldElements.push(element);\n    newElements.push(newElement);\n    return newElement;\n  };\n\n  const idsOfElementsToDuplicate = (0,_utils__WEBPACK_IMPORTED_MODULE_7__.arrayToMap)((0,_scene_selection__WEBPACK_IMPORTED_MODULE_17__.getSelectedElements)(sortedElements, appState, {\n    includeBoundTextElement: true,\n    includeElementsInFrames: true\n  })); // Ids of elements that have already been processed so we don\'t push them\n  // into the array twice if we end up backtracking when retrieving\n  // discontiguous group of elements (can happen due to a bug, or in edge\n  // cases such as a group containing deleted elements which were not selected).\n  //\n  // This is not enough to prevent duplicates, so we do a second loop afterwards\n  // to remove them.\n  //\n  // For convenience we mark even the newly created ones even though we don\'t\n  // loop over them.\n\n  const processedIds = new Map();\n\n  const markAsProcessed = elements => {\n    for (const element of elements) {\n      processedIds.set(element.id, true);\n    }\n\n    return elements;\n  };\n\n  const elementsWithClones = [];\n  let index = -1;\n\n  while (++index < sortedElements.length) {\n    const element = sortedElements[index];\n\n    if (processedIds.get(element.id)) {\n      continue;\n    }\n\n    const boundTextElement = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_12__.getBoundTextElement)(element);\n    const isElementAFrame = (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_13__.isFrameElement)(element);\n\n    if (idsOfElementsToDuplicate.get(element.id)) {\n      // if a group or a container/bound-text or frame, duplicate atomically\n      if (element.groupIds.length || boundTextElement || isElementAFrame) {\n        const groupId = (0,_groups__WEBPACK_IMPORTED_MODULE_9__.getSelectedGroupForElement)(appState, element);\n\n        if (groupId) {\n          // TODO:\n          // remove `.flatMap...`\n          // if the elements in a frame are grouped when the frame is grouped\n          const groupElements = (0,_groups__WEBPACK_IMPORTED_MODULE_9__.getElementsInGroup)(sortedElements, groupId).flatMap(element => (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_13__.isFrameElement)(element) ? [...(0,_frame__WEBPACK_IMPORTED_MODULE_16__.getFrameChildren)(elements, element.id), element] : [element]);\n          elementsWithClones.push(...markAsProcessed([...groupElements, ...groupElements.map(element => duplicateAndOffsetElement(element))]));\n          continue;\n        }\n\n        if (boundTextElement) {\n          elementsWithClones.push(...markAsProcessed([element, boundTextElement, duplicateAndOffsetElement(element), duplicateAndOffsetElement(boundTextElement)]));\n          continue;\n        }\n\n        if (isElementAFrame) {\n          const elementsInFrame = (0,_frame__WEBPACK_IMPORTED_MODULE_16__.getFrameChildren)(sortedElements, element.id);\n          elementsWithClones.push(...markAsProcessed([...elementsInFrame, element, ...elementsInFrame.map(e => duplicateAndOffsetElement(e)), duplicateAndOffsetElement(element)]));\n          continue;\n        }\n      } // since elements in frames have a lower z-index than the frame itself,\n      // they will be looped first and if their frames are selected as well,\n      // they will have been copied along with the frame atomically in the\n      // above branch, so we must skip those elements here\n      //\n      // now, for elements do not belong any frames or elements whose frames\n      // are selected (or elements that are left out from the above\n      // steps for whatever reason) we (should at least) duplicate them here\n\n\n      if (!element.frameId || !idsOfElementsToDuplicate.has(element.frameId)) {\n        elementsWithClones.push(...markAsProcessed([element, duplicateAndOffsetElement(element)]));\n      }\n    } else {\n      elementsWithClones.push(...markAsProcessed([element]));\n    }\n  } // step (2)\n  // second pass to remove duplicates. We loop from the end as it\'s likelier\n  // that the last elements are in the correct order (contiguous or otherwise).\n  // Thus we need to reverse as the last step (3).\n\n\n  const finalElementsReversed = [];\n  const finalElementIds = new Map();\n  index = elementsWithClones.length;\n\n  while (--index >= 0) {\n    const element = elementsWithClones[index];\n\n    if (!finalElementIds.get(element.id)) {\n      finalElementIds.set(element.id, true);\n      finalElementsReversed.push(element);\n    }\n  } // step (3)\n\n\n  const finalElements = finalElementsReversed.reverse(); // ---------------------------------------------------------------------------\n\n  (0,_element_textElement__WEBPACK_IMPORTED_MODULE_12__.bindTextToShapeAfterDuplication)(elementsWithClones, oldElements, oldIdToDuplicatedId);\n  (0,_element_binding__WEBPACK_IMPORTED_MODULE_10__.fixBindingsAfterDuplication)(elementsWithClones, oldElements, oldIdToDuplicatedId);\n  (0,_frame__WEBPACK_IMPORTED_MODULE_16__.bindElementsToFramesAfterDuplication)(finalElements, oldElements, oldIdToDuplicatedId);\n  const nextElementsToSelect = (0,_scene_selection__WEBPACK_IMPORTED_MODULE_17__.excludeElementsInFramesFromSelection)(newElements);\n  return {\n    elements: finalElements,\n    appState: Object.assign(Object.assign({}, appState), (0,_groups__WEBPACK_IMPORTED_MODULE_9__.selectGroupsForSelectedElements)({\n      editingGroupId: appState.editingGroupId,\n      selectedElementIds: nextElementsToSelect.reduce((acc, element) => {\n        if (!(0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_13__.isBoundToContainer)(element)) {\n          acc[element.id] = true;\n        }\n\n        return acc;\n      }, {})\n    }, (0,_element__WEBPACK_IMPORTED_MODULE_3__.getNonDeletedElements)(finalElements), appState, null))\n  };\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 12908 characters]\n//# sourceURL=webpack-internal:///../../actions/actionDuplicateSelection.tsx\n');
              }
            ),
            /***/
            "../../actions/actionElementLock.ts": (
              /*!******************************************!*\
                !*** ../../actions/actionElementLock.ts ***!
                \******************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "actionToggleElementLock": () => (/* binding */ actionToggleElementLock),\n/* harmony export */   "actionUnlockAllElements": () => (/* binding */ actionUnlockAllElements)\n/* harmony export */ });\n/* harmony import */ var _element_mutateElement__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../element/mutateElement */ "../../element/mutateElement.ts");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./register */ "../../actions/register.ts");\n\n\n\n\n\nconst shouldLock = elements => elements.every(el => !el.locked);\n\nconst actionToggleElementLock = (0,_register__WEBPACK_IMPORTED_MODULE_3__.register)({\n  name: "toggleElementLock",\n  trackEvent: {\n    category: "element"\n  },\n  predicate: (elements, appState, _, app) => {\n    const selectedElements = app.scene.getSelectedElements(appState);\n    return !selectedElements.some(element => element.locked && element.frameId);\n  },\n  perform: (elements, appState, _, app) => {\n    const selectedElements = app.scene.getSelectedElements({\n      selectedElementIds: appState.selectedElementIds,\n      includeBoundTextElement: true,\n      includeElementsInFrames: true\n    });\n\n    if (!selectedElements.length) {\n      return false;\n    }\n\n    const nextLockState = shouldLock(selectedElements);\n    const selectedElementsMap = (0,_utils__WEBPACK_IMPORTED_MODULE_2__.arrayToMap)(selectedElements);\n    return {\n      elements: elements.map(element => {\n        if (!selectedElementsMap.has(element.id)) {\n          return element;\n        }\n\n        return (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_0__.newElementWith)(element, {\n          locked: nextLockState\n        });\n      }),\n      appState: Object.assign(Object.assign({}, appState), {\n        selectedLinearElement: nextLockState ? null : appState.selectedLinearElement\n      }),\n      commitToHistory: true\n    };\n  },\n  contextItemLabel: (elements, appState, app) => {\n    const selected = app.scene.getSelectedElements({\n      selectedElementIds: appState.selectedElementIds,\n      includeBoundTextElement: false\n    });\n\n    if (selected.length === 1 && selected[0].type !== "frame") {\n      return selected[0].locked ? "labels.elementLock.unlock" : "labels.elementLock.lock";\n    }\n\n    return shouldLock(selected) ? "labels.elementLock.lockAll" : "labels.elementLock.unlockAll";\n  },\n  keyTest: (event, appState, elements, app) => {\n    return event.key.toLocaleLowerCase() === _keys__WEBPACK_IMPORTED_MODULE_1__.KEYS.L && event[_keys__WEBPACK_IMPORTED_MODULE_1__.KEYS.CTRL_OR_CMD] && event.shiftKey && app.scene.getSelectedElements({\n      selectedElementIds: appState.selectedElementIds,\n      includeBoundTextElement: false\n    }).length > 0;\n  }\n});\nconst actionUnlockAllElements = (0,_register__WEBPACK_IMPORTED_MODULE_3__.register)({\n  name: "unlockAllElements",\n  trackEvent: {\n    category: "canvas"\n  },\n  viewMode: false,\n  predicate: elements => {\n    return elements.some(element => element.locked);\n  },\n  perform: (elements, appState) => {\n    const lockedElements = elements.filter(el => el.locked);\n    return {\n      elements: elements.map(element => {\n        if (element.locked) {\n          return (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_0__.newElementWith)(element, {\n            locked: false\n          });\n        }\n\n        return element;\n      }),\n      appState: Object.assign(Object.assign({}, appState), {\n        selectedElementIds: Object.fromEntries(lockedElements.map(el => [el.id, true]))\n      }),\n      commitToHistory: true\n    };\n  },\n  contextItemLabel: "labels.elementLock.unlockAll"\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5248 characters]\n//# sourceURL=webpack-internal:///../../actions/actionElementLock.ts\n');
              }
            ),
            /***/
            "../../actions/actionExport.tsx": (
              /*!**************************************!*\
                !*** ../../actions/actionExport.tsx ***!
                \**************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "actionChangeExportBackground": () => (/* binding */ actionChangeExportBackground),\n/* harmony export */   "actionChangeExportEmbedScene": () => (/* binding */ actionChangeExportEmbedScene),\n/* harmony export */   "actionChangeExportScale": () => (/* binding */ actionChangeExportScale),\n/* harmony export */   "actionChangeProjectName": () => (/* binding */ actionChangeProjectName),\n/* harmony export */   "actionExportWithDarkMode": () => (/* binding */ actionExportWithDarkMode),\n/* harmony export */   "actionLoadScene": () => (/* binding */ actionLoadScene),\n/* harmony export */   "actionSaveFileToDisk": () => (/* binding */ actionSaveFileToDisk),\n/* harmony export */   "actionSaveToActiveFile": () => (/* binding */ actionSaveToActiveFile)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _components_icons__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/icons */ "../../components/icons.tsx");\n/* harmony import */ var _components_ProjectName__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../components/ProjectName */ "../../components/ProjectName.tsx");\n/* harmony import */ var _components_ToolButton__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../components/ToolButton */ "../../components/ToolButton.tsx");\n/* harmony import */ var _components_Tooltip__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../components/Tooltip */ "../../components/Tooltip.tsx");\n/* harmony import */ var _components_DarkModeToggle__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../components/DarkModeToggle */ "../../components/DarkModeToggle.tsx");\n/* harmony import */ var _data__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../data */ "../../data/index.ts");\n/* harmony import */ var _data_resave__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../data/resave */ "../../data/resave.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _components_App__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../components/App */ "../../components/App.tsx");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./register */ "../../actions/register.ts");\n/* harmony import */ var _components_CheckboxItem__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../components/CheckboxItem */ "../../components/CheckboxItem.tsx");\n/* harmony import */ var _scene_export__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../scene/export */ "../../scene/export.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../scene */ "../../scene/index.ts");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _data_blob__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../data/blob */ "../../data/blob.ts");\n/* harmony import */ var _data_filesystem__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../data/filesystem */ "../../data/filesystem.ts");\n/* harmony import */ var _components_ToolIcon_scss__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../components/ToolIcon.scss */ "../../components/ToolIcon.scss");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator["throw"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst actionChangeProjectName = (0,_register__WEBPACK_IMPORTED_MODULE_11__.register)({\n  name: "changeProjectName",\n  trackEvent: false,\n  perform: (_elements, appState, value) => {\n    return {\n      appState: Object.assign(Object.assign({}, appState), {\n        name: value\n      }),\n      commitToHistory: false\n    };\n  },\n  PanelComponent: ({\n    appState,\n    updateData,\n    appProps,\n    data\n  }) => {\n    var _a;\n\n    return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ProjectName__WEBPACK_IMPORTED_MODULE_2__.ProjectName, {\n      label: (0,_i18n__WEBPACK_IMPORTED_MODULE_8__.t)("labels.fileTitle"),\n      value: appState.name || "Unnamed",\n      onChange: name => updateData(name),\n      isNameEditable: typeof appProps.name === "undefined" && !appState.viewModeEnabled,\n      ignoreFocus: (_a = data === null || data === void 0 ? void 0 : data.ignoreFocus) !== null && _a !== void 0 ? _a : false\n    });\n  }\n});\nconst actionChangeExportScale = (0,_register__WEBPACK_IMPORTED_MODULE_11__.register)({\n  name: "changeExportScale",\n  trackEvent: {\n    category: "export",\n    action: "scale"\n  },\n  perform: (_elements, appState, value) => {\n    return {\n      appState: Object.assign(Object.assign({}, appState), {\n        exportScale: value\n      }),\n      commitToHistory: false\n    };\n  },\n  PanelComponent: ({\n    elements: allElements,\n    appState,\n    updateData\n  }) => {\n    const elements = (0,_element__WEBPACK_IMPORTED_MODULE_16__.getNonDeletedElements)(allElements);\n    const exportSelected = (0,_scene__WEBPACK_IMPORTED_MODULE_15__.isSomeElementSelected)(elements, appState);\n    const exportedElements = exportSelected ? (0,_scene__WEBPACK_IMPORTED_MODULE_15__.getSelectedElements)(elements, appState) : elements;\n    return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n      children: _constants__WEBPACK_IMPORTED_MODULE_14__.EXPORT_SCALES.map(s => {\n        const [width, height] = (0,_scene_export__WEBPACK_IMPORTED_MODULE_13__.getExportSize)(exportedElements, _constants__WEBPACK_IMPORTED_MODULE_14__.DEFAULT_EXPORT_PADDING, s);\n        const scaleButtonTitle = `${(0,_i18n__WEBPACK_IMPORTED_MODULE_8__.t)("imageExportDialog.label.scale")} ${s}x (${width}x${height})`;\n        return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ToolButton__WEBPACK_IMPORTED_MODULE_3__.ToolButton, {\n          size: "small",\n          type: "radio",\n          icon: `${s}x`,\n          name: "export-canvas-scale",\n          title: scaleButtonTitle,\n          "aria-label": scaleButtonTitle,\n          id: "export-canvas-scale",\n          checked: s === appState.exportScale,\n          onChange: () => updateData(s)\n        }, s);\n      })\n    });\n  }\n});\nconst actionChangeExportBackground = (0,_register__WEBPACK_IMPORTED_MODULE_11__.register)({\n  name: "changeExportBackground",\n  trackEvent: {\n    category: "export",\n    action: "toggleBackground"\n  },\n  perform: (_elements, appState, value) => {\n    return {\n      appState: Object.assign(Object.assign({}, appState), {\n        exportBackground: value\n      }),\n      commitToHistory: false\n    };\n  },\n  PanelComponent: ({\n    appState,\n    updateData\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_CheckboxItem__WEBPACK_IMPORTED_MODULE_12__.CheckboxItem, Object.assign({\n    checked: appState.exportBackground,\n    onChange: checked => updateData(checked)\n  }, {\n    children: (0,_i18n__WEBPACK_IMPORTED_MODULE_8__.t)("imageExportDialog.label.withBackground")\n  }))\n});\nconst actionChangeExportEmbedScene = (0,_register__WEBPACK_IMPORTED_MODULE_11__.register)({\n  name: "changeExportEmbedScene",\n  trackEvent: {\n    category: "export",\n    action: "embedScene"\n  },\n  perform: (_elements, appState, value) => {\n    return {\n      appState: Object.assign(Object.assign({}, appState), {\n        exportEmbedScene: value\n      }),\n      commitToHistory: false\n    };\n  },\n  PanelComponent: ({\n    appState,\n    updateData\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components_CheckboxItem__WEBPACK_IMPORTED_MODULE_12__.CheckboxItem, Object.assign({\n    checked: appState.exportEmbedScene,\n    onChange: checked => updateData(checked)\n  }, {\n    children: [(0,_i18n__WEBPACK_IMPORTED_MODULE_8__.t)("imageExportDialog.label.embedScene"), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_Tooltip__WEBPACK_IMPORTED_MODULE_4__.Tooltip, Object.assign({\n      label: (0,_i18n__WEBPACK_IMPORTED_MODULE_8__.t)("imageExportDialog.tooltip.embedScene"),\n      long: true\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n        className: "excalidraw-tooltip-icon"\n      }, {\n        children: _components_icons__WEBPACK_IMPORTED_MODULE_1__.questionCircle\n      }))\n    }))]\n  }))\n});\nconst actionSaveToActiveFile = (0,_register__WEBPACK_IMPORTED_MODULE_11__.register)({\n  name: "saveToActiveFile",\n  trackEvent: {\n    category: "export"\n  },\n  predicate: (elements, appState, props, app) => {\n    return !!app.props.UIOptions.canvasActions.saveToActiveFile && !!appState.fileHandle && !appState.viewModeEnabled;\n  },\n  perform: (elements, appState, value, app) => __awaiter(void 0, void 0, void 0, function* () {\n    const fileHandleExists = !!appState.fileHandle;\n\n    try {\n      const {\n        fileHandle\n      } = (0,_data_blob__WEBPACK_IMPORTED_MODULE_17__.isImageFileHandle)(appState.fileHandle) ? yield (0,_data_resave__WEBPACK_IMPORTED_MODULE_7__.resaveAsImageWithScene)(elements, appState, app.files) : yield (0,_data__WEBPACK_IMPORTED_MODULE_6__.saveAsJSON)(elements, appState, app.files);\n      return {\n        commitToHistory: false,\n        appState: Object.assign(Object.assign({}, appState), {\n          fileHandle,\n          toast: fileHandleExists ? {\n            message: (fileHandle === null || fileHandle === void 0 ? void 0 : fileHandle.name) ? (0,_i18n__WEBPACK_IMPORTED_MODULE_8__.t)("toast.fileSavedToFilename").replace("{filename}", `"${fileHandle.name}"`) : (0,_i18n__WEBPACK_IMPORTED_MODULE_8__.t)("toast.fileSaved")\n          } : null\n        })\n      };\n    } catch (error) {\n      if ((error === null || error === void 0 ? void 0 : error.name) !== "AbortError") {\n        console.error(error);\n      } else {\n        console.warn(error);\n      }\n\n      return {\n        commitToHistory: false\n      };\n    }\n  }),\n  keyTest: event => event.key === _keys__WEBPACK_IMPORTED_MODULE_10__.KEYS.S && event[_keys__WEBPACK_IMPORTED_MODULE_10__.KEYS.CTRL_OR_CMD] && !event.shiftKey\n});\nconst actionSaveFileToDisk = (0,_register__WEBPACK_IMPORTED_MODULE_11__.register)({\n  name: "saveFileToDisk",\n  viewMode: true,\n  trackEvent: {\n    category: "export"\n  },\n  perform: (elements, appState, value, app) => __awaiter(void 0, void 0, void 0, function* () {\n    try {\n      const {\n        fileHandle\n      } = yield (0,_data__WEBPACK_IMPORTED_MODULE_6__.saveAsJSON)(elements, Object.assign(Object.assign({}, appState), {\n        fileHandle: null\n      }), app.files);\n      return {\n        commitToHistory: false,\n        appState: Object.assign(Object.assign({}, appState), {\n          openDialog: null,\n          fileHandle,\n          toast: {\n            message: (0,_i18n__WEBPACK_IMPORTED_MODULE_8__.t)("toast.fileSaved")\n          }\n        })\n      };\n    } catch (error) {\n      if ((error === null || error === void 0 ? void 0 : error.name) !== "AbortError") {\n        console.error(error);\n      } else {\n        console.warn(error);\n      }\n\n      return {\n        commitToHistory: false\n      };\n    }\n  }),\n  keyTest: event => event.key === _keys__WEBPACK_IMPORTED_MODULE_10__.KEYS.S && event.shiftKey && event[_keys__WEBPACK_IMPORTED_MODULE_10__.KEYS.CTRL_OR_CMD],\n  PanelComponent: ({\n    updateData\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ToolButton__WEBPACK_IMPORTED_MODULE_3__.ToolButton, {\n    type: "button",\n    icon: _components_icons__WEBPACK_IMPORTED_MODULE_1__.saveAs,\n    title: (0,_i18n__WEBPACK_IMPORTED_MODULE_8__.t)("buttons.saveAs"),\n    "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_8__.t)("buttons.saveAs"),\n    showAriaLabel: (0,_components_App__WEBPACK_IMPORTED_MODULE_9__.useDevice)().editor.isMobile,\n    hidden: !_data_filesystem__WEBPACK_IMPORTED_MODULE_18__.nativeFileSystemSupported,\n    onClick: () => updateData(null),\n    "data-testid": "save-as-button"\n  })\n});\nconst actionLoadScene = (0,_register__WEBPACK_IMPORTED_MODULE_11__.register)({\n  name: "loadScene",\n  trackEvent: {\n    category: "export"\n  },\n  predicate: (elements, appState, props, app) => {\n    return !!app.props.UIOptions.canvasActions.loadScene && !appState.viewModeEnabled;\n  },\n  perform: (elements, appState, _, app) => __awaiter(void 0, void 0, void 0, function* () {\n    try {\n      const {\n        elements: loadedElements,\n        appState: loadedAppState,\n        files\n      } = yield (0,_data__WEBPACK_IMPORTED_MODULE_6__.loadFromJSON)(appState, elements);\n      return {\n        elements: loadedElements,\n        appState: loadedAppState,\n        files,\n        commitToHistory: true\n      };\n    } catch (error) {\n      if ((error === null || error === void 0 ? void 0 : error.name) === "AbortError") {\n        console.warn(error);\n        return false;\n      }\n\n      return {\n        elements,\n        appState: Object.assign(Object.assign({}, appState), {\n          errorMessage: error.message\n        }),\n        files: app.files,\n        commitToHistory: false\n      };\n    }\n  }),\n  keyTest: event => event[_keys__WEBPACK_IMPORTED_MODULE_10__.KEYS.CTRL_OR_CMD] && event.key === _keys__WEBPACK_IMPORTED_MODULE_10__.KEYS.O\n});\nconst actionExportWithDarkMode = (0,_register__WEBPACK_IMPORTED_MODULE_11__.register)({\n  name: "exportWithDarkMode",\n  trackEvent: {\n    category: "export",\n    action: "toggleTheme"\n  },\n  perform: (_elements, appState, value) => {\n    return {\n      appState: Object.assign(Object.assign({}, appState), {\n        exportWithDarkMode: value\n      }),\n      commitToHistory: false\n    };\n  },\n  PanelComponent: ({\n    appState,\n    updateData\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    style: {\n      display: "flex",\n      justifyContent: "flex-end",\n      marginTop: "-45px",\n      marginBottom: "10px"\n    }\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_DarkModeToggle__WEBPACK_IMPORTED_MODULE_5__.DarkModeToggle, {\n      value: appState.exportWithDarkMode ? _constants__WEBPACK_IMPORTED_MODULE_14__.THEME.DARK : _constants__WEBPACK_IMPORTED_MODULE_14__.THEME.LIGHT,\n      onChange: theme => {\n        updateData(theme === _constants__WEBPACK_IMPORTED_MODULE_14__.THEME.DARK);\n      },\n      title: (0,_i18n__WEBPACK_IMPORTED_MODULE_8__.t)("imageExportDialog.label.darkMode")\n    })\n  }))\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 18352 characters]\n//# sourceURL=webpack-internal:///../../actions/actionExport.tsx\n');
              }
            ),
            /***/
            "../../actions/actionFinalize.tsx": (
              /*!****************************************!*\
                !*** ../../actions/actionFinalize.tsx ***!
                \****************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "actionFinalize": () => (/* binding */ actionFinalize)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _components_ToolButton__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../components/ToolButton */ "../../components/ToolButton.tsx");\n/* harmony import */ var _components_icons__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../components/icons */ "../../components/icons.tsx");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./register */ "../../actions/register.ts");\n/* harmony import */ var _element_mutateElement__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../element/mutateElement */ "../../element/mutateElement.ts");\n/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../math */ "../../math.ts");\n/* harmony import */ var _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../element/linearElementEditor */ "../../element/linearElementEditor.ts");\n/* harmony import */ var _scene_Scene__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../scene/Scene */ "../../scene/Scene.ts");\n/* harmony import */ var _element_binding__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../element/binding */ "../../element/binding.ts");\n/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../element/typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var _cursor__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../cursor */ "../../cursor.ts");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst actionFinalize = (0,_register__WEBPACK_IMPORTED_MODULE_7__.register)({\n  name: "finalize",\n  trackEvent: false,\n  perform: (elements, appState, _, {\n    interactiveCanvas,\n    focusContainer,\n    scene\n  }) => {\n    var _a;\n\n    if (appState.editingLinearElement) {\n      const {\n        elementId,\n        startBindingElement,\n        endBindingElement\n      } = appState.editingLinearElement;\n      const element = _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_10__.LinearElementEditor.getElement(elementId);\n\n      if (element) {\n        if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_13__.isBindingElement)(element)) {\n          (0,_element_binding__WEBPACK_IMPORTED_MODULE_12__.bindOrUnbindLinearElement)(element, startBindingElement, endBindingElement);\n        }\n\n        return {\n          elements: element.points.length < 2 || (0,_element__WEBPACK_IMPORTED_MODULE_2__.isInvisiblySmallElement)(element) ? elements.filter(el => el.id !== element.id) : undefined,\n          appState: Object.assign(Object.assign({}, appState), {\n            cursorButton: "up",\n            editingLinearElement: null\n          }),\n          commitToHistory: true\n        };\n      }\n    }\n\n    let newElements = elements;\n    const pendingImageElement = appState.pendingImageElementId && scene.getElement(appState.pendingImageElementId);\n\n    if (pendingImageElement) {\n      (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_8__.mutateElement)(pendingImageElement, {\n        isDeleted: true\n      }, false);\n    }\n\n    if (window.document.activeElement instanceof HTMLElement) {\n      focusContainer();\n    }\n\n    const multiPointElement = appState.multiElement ? appState.multiElement : ((_a = appState.editingElement) === null || _a === void 0 ? void 0 : _a.type) === "freedraw" ? appState.editingElement : null;\n\n    if (multiPointElement) {\n      // pen and mouse have hover\n      if (multiPointElement.type !== "freedraw" && appState.lastPointerDownWith !== "touch") {\n        const {\n          points,\n          lastCommittedPoint\n        } = multiPointElement;\n\n        if (!lastCommittedPoint || points[points.length - 1] !== lastCommittedPoint) {\n          (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_8__.mutateElement)(multiPointElement, {\n            points: multiPointElement.points.slice(0, -1)\n          });\n        }\n      }\n\n      if ((0,_element__WEBPACK_IMPORTED_MODULE_2__.isInvisiblySmallElement)(multiPointElement)) {\n        newElements = newElements.filter(el => el.id !== multiPointElement.id);\n      } // If the multi point line closes the loop,\n      // set the last point to first point.\n      // This ensures that loop remains closed at different scales.\n\n\n      const isLoop = (0,_math__WEBPACK_IMPORTED_MODULE_9__.isPathALoop)(multiPointElement.points, appState.zoom.value);\n\n      if (multiPointElement.type === "line" || multiPointElement.type === "freedraw") {\n        if (isLoop) {\n          const linePoints = multiPointElement.points;\n          const firstPoint = linePoints[0];\n          (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_8__.mutateElement)(multiPointElement, {\n            points: linePoints.map((point, index) => index === linePoints.length - 1 ? [firstPoint[0], firstPoint[1]] : point)\n          });\n        }\n      }\n\n      if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_13__.isBindingElement)(multiPointElement) && !isLoop && multiPointElement.points.length > 1) {\n        const [x, y] = _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_10__.LinearElementEditor.getPointAtIndexGlobalCoordinates(multiPointElement, -1);\n        (0,_element_binding__WEBPACK_IMPORTED_MODULE_12__.maybeBindLinearElement)(multiPointElement, appState, _scene_Scene__WEBPACK_IMPORTED_MODULE_11__["default"].getScene(multiPointElement), {\n          x,\n          y\n        });\n      }\n    }\n\n    if (!appState.activeTool.locked && appState.activeTool.type !== "freedraw" || !multiPointElement) {\n      (0,_cursor__WEBPACK_IMPORTED_MODULE_14__.resetCursor)(interactiveCanvas);\n    }\n\n    let activeTool;\n\n    if (appState.activeTool.type === "eraser") {\n      activeTool = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.updateActiveTool)(appState, Object.assign(Object.assign({}, appState.activeTool.lastActiveTool || {\n        type: "selection"\n      }), {\n        lastActiveToolBeforeEraser: null\n      }));\n    } else {\n      activeTool = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.updateActiveTool)(appState, {\n        type: "selection"\n      });\n    }\n\n    return {\n      elements: newElements,\n      appState: Object.assign(Object.assign({}, appState), {\n        cursorButton: "up",\n        activeTool: (appState.activeTool.locked || appState.activeTool.type === "freedraw") && multiPointElement ? appState.activeTool : activeTool,\n        activeEmbeddable: null,\n        draggingElement: null,\n        multiElement: null,\n        editingElement: null,\n        startBoundElement: null,\n        suggestedBindings: [],\n        selectedElementIds: multiPointElement && !appState.activeTool.locked && appState.activeTool.type !== "freedraw" ? Object.assign(Object.assign({}, appState.selectedElementIds), {\n          [multiPointElement.id]: true\n        }) : appState.selectedElementIds,\n        // To select the linear element when user has finished mutipoint editing\n        selectedLinearElement: multiPointElement && (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_13__.isLinearElement)(multiPointElement) ? new _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_10__.LinearElementEditor(multiPointElement, scene) : appState.selectedLinearElement,\n        pendingImageElementId: null\n      }),\n      commitToHistory: appState.activeTool.type === "freedraw"\n    };\n  },\n  keyTest: (event, appState) => event.key === _keys__WEBPACK_IMPORTED_MODULE_1__.KEYS.ESCAPE && (appState.editingLinearElement !== null || !appState.draggingElement && appState.multiElement === null) || (event.key === _keys__WEBPACK_IMPORTED_MODULE_1__.KEYS.ESCAPE || event.key === _keys__WEBPACK_IMPORTED_MODULE_1__.KEYS.ENTER) && appState.multiElement !== null,\n  PanelComponent: ({\n    appState,\n    updateData,\n    data\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ToolButton__WEBPACK_IMPORTED_MODULE_4__.ToolButton, {\n    type: "button",\n    icon: _components_icons__WEBPACK_IMPORTED_MODULE_5__.done,\n    title: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("buttons.done"),\n    "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("buttons.done"),\n    onClick: updateData,\n    visible: appState.multiElement != null,\n    size: (data === null || data === void 0 ? void 0 : data.size) || "medium"\n  })\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 10408 characters]\n//# sourceURL=webpack-internal:///../../actions/actionFinalize.tsx\n');
              }
            ),
            /***/
            "../../actions/actionFlip.ts": (
              /*!***********************************!*\
                !*** ../../actions/actionFlip.ts ***!
                \***********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "actionFlipHorizontal": () => (/* binding */ actionFlipHorizontal),\n/* harmony export */   "actionFlipVertical": () => (/* binding */ actionFlipVertical)\n/* harmony export */ });\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./register */ "../../actions/register.ts");\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../scene */ "../../scene/index.ts");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _element_resizeElements__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../element/resizeElements */ "../../element/resizeElements.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _element_bounds__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../element/bounds */ "../../element/bounds.ts");\n/* harmony import */ var _element_binding__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../element/binding */ "../../element/binding.ts");\n/* harmony import */ var _frame__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../frame */ "../../frame.ts");\n\n\n\n\n\n\n\n\n\nconst actionFlipHorizontal = (0,_register__WEBPACK_IMPORTED_MODULE_0__.register)({\n  name: "flipHorizontal",\n  trackEvent: {\n    category: "element"\n  },\n  perform: (elements, appState, _, app) => {\n    return {\n      elements: (0,_frame__WEBPACK_IMPORTED_MODULE_8__.updateFrameMembershipOfSelectedElements)(flipSelectedElements(elements, appState, "horizontal"), appState, app),\n      appState,\n      commitToHistory: true\n    };\n  },\n  keyTest: event => event.shiftKey && event.code === _keys__WEBPACK_IMPORTED_MODULE_5__.CODES.H,\n  contextItemLabel: "labels.flipHorizontal"\n});\nconst actionFlipVertical = (0,_register__WEBPACK_IMPORTED_MODULE_0__.register)({\n  name: "flipVertical",\n  trackEvent: {\n    category: "element"\n  },\n  perform: (elements, appState, _, app) => {\n    return {\n      elements: (0,_frame__WEBPACK_IMPORTED_MODULE_8__.updateFrameMembershipOfSelectedElements)(flipSelectedElements(elements, appState, "vertical"), appState, app),\n      appState,\n      commitToHistory: true\n    };\n  },\n  keyTest: event => event.shiftKey && event.code === _keys__WEBPACK_IMPORTED_MODULE_5__.CODES.V && !event[_keys__WEBPACK_IMPORTED_MODULE_5__.KEYS.CTRL_OR_CMD],\n  contextItemLabel: "labels.flipVertical"\n});\n\nconst flipSelectedElements = (elements, appState, flipDirection) => {\n  const selectedElements = (0,_scene__WEBPACK_IMPORTED_MODULE_1__.getSelectedElements)((0,_element__WEBPACK_IMPORTED_MODULE_2__.getNonDeletedElements)(elements), appState, {\n    includeBoundTextElement: true,\n    includeElementsInFrames: true\n  });\n  const updatedElements = flipElements(selectedElements, appState, flipDirection);\n  const updatedElementsMap = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.arrayToMap)(updatedElements);\n  return elements.map(element => updatedElementsMap.get(element.id) || element);\n};\n\nconst flipElements = (elements, appState, flipDirection) => {\n  const {\n    minX,\n    minY,\n    maxX,\n    maxY\n  } = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_6__.getCommonBoundingBox)(elements);\n  (0,_element_resizeElements__WEBPACK_IMPORTED_MODULE_3__.resizeMultipleElements)({\n    originalElements: (0,_utils__WEBPACK_IMPORTED_MODULE_4__.arrayToMap)(elements)\n  }, elements, "nw", true, flipDirection === "horizontal" ? maxX : minX, flipDirection === "horizontal" ? minY : maxY);\n  ((0,_element_binding__WEBPACK_IMPORTED_MODULE_7__.isBindingEnabled)(appState) ? _element_binding__WEBPACK_IMPORTED_MODULE_7__.bindOrUnbindSelectedElements : _element_binding__WEBPACK_IMPORTED_MODULE_7__.unbindLinearElements)(elements);\n  return elements;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4352 characters]\n//# sourceURL=webpack-internal:///../../actions/actionFlip.ts\n');
              }
            ),
            /***/
            "../../actions/actionFrame.ts": (
              /*!************************************!*\
                !*** ../../actions/actionFrame.ts ***!
                \************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "actionRemoveAllElementsFromFrame": () => (/* binding */ actionRemoveAllElementsFromFrame),\n/* harmony export */   "actionSelectAllElementsInFrame": () => (/* binding */ actionSelectAllElementsInFrame),\n/* harmony export */   "actionSetFrameAsActiveTool": () => (/* binding */ actionSetFrameAsActiveTool),\n/* harmony export */   "actionupdateFrameRendering": () => (/* binding */ actionupdateFrameRendering)\n/* harmony export */ });\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _frame__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../frame */ "../../frame.ts");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _cursor__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../cursor */ "../../cursor.ts");\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./register */ "../../actions/register.ts");\n\n\n\n\n\n\n\n\nconst isSingleFrameSelected = (appState, app) => {\n  const selectedElements = app.scene.getSelectedElements(appState);\n  return selectedElements.length === 1 && selectedElements[0].type === "frame";\n};\n\nconst actionSelectAllElementsInFrame = (0,_register__WEBPACK_IMPORTED_MODULE_5__.register)({\n  name: "selectAllElementsInFrame",\n  trackEvent: {\n    category: "canvas"\n  },\n  perform: (elements, appState, _, app) => {\n    const selectedFrame = app.scene.getSelectedElements(appState)[0];\n\n    if (selectedFrame && selectedFrame.type === "frame") {\n      const elementsInFrame = (0,_frame__WEBPACK_IMPORTED_MODULE_1__.getFrameChildren)((0,_element__WEBPACK_IMPORTED_MODULE_0__.getNonDeletedElements)(elements), selectedFrame.id).filter(element => !(element.type === "text" && element.containerId));\n      return {\n        elements,\n        appState: Object.assign(Object.assign({}, appState), {\n          selectedElementIds: elementsInFrame.reduce((acc, element) => {\n            acc[element.id] = true;\n            return acc;\n          }, {})\n        }),\n        commitToHistory: false\n      };\n    }\n\n    return {\n      elements,\n      appState,\n      commitToHistory: false\n    };\n  },\n  contextItemLabel: "labels.selectAllElementsInFrame",\n  predicate: (elements, appState, _, app) => isSingleFrameSelected(appState, app)\n});\nconst actionRemoveAllElementsFromFrame = (0,_register__WEBPACK_IMPORTED_MODULE_5__.register)({\n  name: "removeAllElementsFromFrame",\n  trackEvent: {\n    category: "history"\n  },\n  perform: (elements, appState, _, app) => {\n    const selectedFrame = app.scene.getSelectedElements(appState)[0];\n\n    if (selectedFrame && selectedFrame.type === "frame") {\n      return {\n        elements: (0,_frame__WEBPACK_IMPORTED_MODULE_1__.removeAllElementsFromFrame)(elements, selectedFrame, appState),\n        appState: Object.assign(Object.assign({}, appState), {\n          selectedElementIds: {\n            [selectedFrame.id]: true\n          }\n        }),\n        commitToHistory: true\n      };\n    }\n\n    return {\n      elements,\n      appState,\n      commitToHistory: false\n    };\n  },\n  contextItemLabel: "labels.removeAllElementsFromFrame",\n  predicate: (elements, appState, _, app) => isSingleFrameSelected(appState, app)\n});\nconst actionupdateFrameRendering = (0,_register__WEBPACK_IMPORTED_MODULE_5__.register)({\n  name: "updateFrameRendering",\n  viewMode: true,\n  trackEvent: {\n    category: "canvas"\n  },\n  perform: (elements, appState) => {\n    return {\n      elements,\n      appState: Object.assign(Object.assign({}, appState), {\n        frameRendering: Object.assign(Object.assign({}, appState.frameRendering), {\n          enabled: !appState.frameRendering.enabled\n        })\n      }),\n      commitToHistory: false\n    };\n  },\n  contextItemLabel: "labels.updateFrameRendering",\n  checked: appState => appState.frameRendering.enabled\n});\nconst actionSetFrameAsActiveTool = (0,_register__WEBPACK_IMPORTED_MODULE_5__.register)({\n  name: "setFrameAsActiveTool",\n  trackEvent: {\n    category: "toolbar"\n  },\n  perform: (elements, appState, _, app) => {\n    const nextActiveTool = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.updateActiveTool)(appState, {\n      type: "frame"\n    });\n    (0,_cursor__WEBPACK_IMPORTED_MODULE_4__.setCursorForShape)(app.interactiveCanvas, Object.assign(Object.assign({}, appState), {\n      activeTool: nextActiveTool\n    }));\n    return {\n      elements,\n      appState: Object.assign(Object.assign({}, appState), {\n        activeTool: (0,_utils__WEBPACK_IMPORTED_MODULE_3__.updateActiveTool)(appState, {\n          type: "frame"\n        })\n      }),\n      commitToHistory: false\n    };\n  },\n  keyTest: event => !event[_keys__WEBPACK_IMPORTED_MODULE_2__.KEYS.CTRL_OR_CMD] && !event.shiftKey && !event.altKey && event.key.toLocaleLowerCase() === _keys__WEBPACK_IMPORTED_MODULE_2__.KEYS.F\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6592 characters]\n//# sourceURL=webpack-internal:///../../actions/actionFrame.ts\n');
              }
            ),
            /***/
            "../../actions/actionGroup.tsx": (
              /*!*************************************!*\
                !*** ../../actions/actionGroup.tsx ***!
                \*************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "actionGroup": () => (/* binding */ actionGroup),\n/* harmony export */   "actionUngroup": () => (/* binding */ actionUngroup)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./register */ "../../actions/register.ts");\n/* harmony import */ var _components_icons__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../components/icons */ "../../components/icons.tsx");\n/* harmony import */ var _element_mutateElement__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../element/mutateElement */ "../../element/mutateElement.ts");\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../scene */ "../../scene/index.ts");\n/* harmony import */ var _groups__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../groups */ "../../groups.ts");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _random__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../random */ "../../random.ts");\n/* harmony import */ var _components_ToolButton__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../components/ToolButton */ "../../components/ToolButton.tsx");\n/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../element/typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var _frame__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../frame */ "../../frame.ts");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst allElementsInSameGroup = elements => {\n  if (elements.length >= 2) {\n    const groupIds = elements[0].groupIds;\n\n    for (const groupId of groupIds) {\n      if (elements.reduce((acc, element) => acc && (0,_groups__WEBPACK_IMPORTED_MODULE_8__.isElementInGroup)(element, groupId), true)) {\n        return true;\n      }\n    }\n  }\n\n  return false;\n};\n\nconst enableActionGroup = (elements, appState, app) => {\n  const selectedElements = app.scene.getSelectedElements({\n    selectedElementIds: appState.selectedElementIds,\n    includeBoundTextElement: true\n  });\n  return selectedElements.length >= 2 && !allElementsInSameGroup(selectedElements);\n};\n\nconst actionGroup = (0,_register__WEBPACK_IMPORTED_MODULE_4__.register)({\n  name: "group",\n  trackEvent: {\n    category: "element"\n  },\n  perform: (elements, appState, _, app) => {\n    const selectedElements = app.scene.getSelectedElements({\n      selectedElementIds: appState.selectedElementIds,\n      includeBoundTextElement: true\n    });\n\n    if (selectedElements.length < 2) {\n      // nothing to group\n      return {\n        appState,\n        elements,\n        commitToHistory: false\n      };\n    } // if everything is already grouped into 1 group, there is nothing to do\n\n\n    const selectedGroupIds = (0,_groups__WEBPACK_IMPORTED_MODULE_8__.getSelectedGroupIds)(appState);\n\n    if (selectedGroupIds.length === 1) {\n      const selectedGroupId = selectedGroupIds[0];\n      const elementIdsInGroup = new Set((0,_groups__WEBPACK_IMPORTED_MODULE_8__.getElementsInGroup)(elements, selectedGroupId).map(element => element.id));\n      const selectedElementIds = new Set(selectedElements.map(element => element.id));\n      const combinedSet = new Set([...Array.from(elementIdsInGroup), ...Array.from(selectedElementIds)]);\n\n      if (combinedSet.size === elementIdsInGroup.size) {\n        // no incremental ids in the selected ids\n        return {\n          appState,\n          elements,\n          commitToHistory: false\n        };\n      }\n    }\n\n    let nextElements = [...elements]; // this includes the case where we are grouping elements inside a frame\n    // and elements outside that frame\n\n    const groupingElementsFromDifferentFrames = new Set(selectedElements.map(element => element.frameId)).size > 1; // when it happens, we want to remove elements that are in the frame\n    // and are going to be grouped from the frame (mouthful, I know)\n\n    if (groupingElementsFromDifferentFrames) {\n      const frameElementsMap = (0,_frame__WEBPACK_IMPORTED_MODULE_13__.groupByFrames)(selectedElements);\n      frameElementsMap.forEach((elementsInFrame, frameId) => {\n        nextElements = (0,_frame__WEBPACK_IMPORTED_MODULE_13__.removeElementsFromFrame)(nextElements, elementsInFrame, appState);\n      });\n    }\n\n    const newGroupId = (0,_random__WEBPACK_IMPORTED_MODULE_10__.randomId)();\n    const selectElementIds = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.arrayToMap)(selectedElements);\n    nextElements = nextElements.map(element => {\n      if (!selectElementIds.get(element.id)) {\n        return element;\n      }\n\n      return (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_6__.newElementWith)(element, {\n        groupIds: (0,_groups__WEBPACK_IMPORTED_MODULE_8__.addToGroup)(element.groupIds, newGroupId, appState.editingGroupId)\n      });\n    }); // keep the z order within the group the same, but move them\n    // to the z order of the highest element in the layer stack\n\n    const elementsInGroup = (0,_groups__WEBPACK_IMPORTED_MODULE_8__.getElementsInGroup)(nextElements, newGroupId);\n    const lastElementInGroup = elementsInGroup[elementsInGroup.length - 1];\n    const lastGroupElementIndex = nextElements.lastIndexOf(lastElementInGroup);\n    const elementsAfterGroup = nextElements.slice(lastGroupElementIndex + 1);\n    const elementsBeforeGroup = nextElements.slice(0, lastGroupElementIndex).filter(updatedElement => !(0,_groups__WEBPACK_IMPORTED_MODULE_8__.isElementInGroup)(updatedElement, newGroupId));\n    nextElements = [...elementsBeforeGroup, ...elementsInGroup, ...elementsAfterGroup];\n    return {\n      appState: Object.assign(Object.assign({}, appState), (0,_groups__WEBPACK_IMPORTED_MODULE_8__.selectGroup)(newGroupId, Object.assign(Object.assign({}, appState), {\n        selectedGroupIds: {}\n      }), (0,_element__WEBPACK_IMPORTED_MODULE_9__.getNonDeletedElements)(nextElements))),\n      elements: nextElements,\n      commitToHistory: true\n    };\n  },\n  contextItemLabel: "labels.group",\n  predicate: (elements, appState, _, app) => enableActionGroup(elements, appState, app),\n  keyTest: event => !event.shiftKey && event[_keys__WEBPACK_IMPORTED_MODULE_1__.KEYS.CTRL_OR_CMD] && event.key === _keys__WEBPACK_IMPORTED_MODULE_1__.KEYS.G,\n  PanelComponent: ({\n    elements,\n    appState,\n    updateData,\n    app\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ToolButton__WEBPACK_IMPORTED_MODULE_11__.ToolButton, {\n    hidden: !enableActionGroup(elements, appState, app),\n    type: "button",\n    icon: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_icons__WEBPACK_IMPORTED_MODULE_5__.GroupIcon, {\n      theme: appState.theme\n    }),\n    onClick: () => updateData(null),\n    title: `${(0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.group")} \u2014 ${(0,_utils__WEBPACK_IMPORTED_MODULE_3__.getShortcutKey)("CtrlOrCmd+G")}`,\n    "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.group"),\n    visible: (0,_scene__WEBPACK_IMPORTED_MODULE_7__.isSomeElementSelected)((0,_element__WEBPACK_IMPORTED_MODULE_9__.getNonDeletedElements)(elements), appState)\n  })\n});\nconst actionUngroup = (0,_register__WEBPACK_IMPORTED_MODULE_4__.register)({\n  name: "ungroup",\n  trackEvent: {\n    category: "element"\n  },\n  perform: (elements, appState, _, app) => {\n    const groupIds = (0,_groups__WEBPACK_IMPORTED_MODULE_8__.getSelectedGroupIds)(appState);\n\n    if (groupIds.length === 0) {\n      return {\n        appState,\n        elements,\n        commitToHistory: false\n      };\n    }\n\n    let nextElements = [...elements];\n    const boundTextElementIds = [];\n    nextElements = nextElements.map(element => {\n      if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_12__.isBoundToContainer)(element)) {\n        boundTextElementIds.push(element.id);\n      }\n\n      const nextGroupIds = (0,_groups__WEBPACK_IMPORTED_MODULE_8__.removeFromSelectedGroups)(element.groupIds, appState.selectedGroupIds);\n\n      if (nextGroupIds.length === element.groupIds.length) {\n        return element;\n      }\n\n      return (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_6__.newElementWith)(element, {\n        groupIds: nextGroupIds\n      });\n    });\n    const updateAppState = (0,_groups__WEBPACK_IMPORTED_MODULE_8__.selectGroupsForSelectedElements)(appState, (0,_element__WEBPACK_IMPORTED_MODULE_9__.getNonDeletedElements)(nextElements), appState, null);\n    const selectedElements = app.scene.getSelectedElements(appState);\n    const selectedElementFrameIds = new Set(selectedElements.filter(element => element.frameId).map(element => element.frameId));\n    const targetFrames = (0,_frame__WEBPACK_IMPORTED_MODULE_13__.getFrameElements)(elements).filter(frame => selectedElementFrameIds.has(frame.id));\n    targetFrames.forEach(frame => {\n      if (frame) {\n        nextElements = (0,_frame__WEBPACK_IMPORTED_MODULE_13__.replaceAllElementsInFrame)(nextElements, (0,_frame__WEBPACK_IMPORTED_MODULE_13__.getElementsInResizingFrame)(nextElements, frame, appState), frame, appState);\n      }\n    }); // remove binded text elements from selection\n\n    updateAppState.selectedElementIds = Object.entries(updateAppState.selectedElementIds).reduce((acc, [id, selected]) => {\n      if (selected && !boundTextElementIds.includes(id)) {\n        acc[id] = true;\n      }\n\n      return acc;\n    }, {});\n    return {\n      appState: Object.assign(Object.assign({}, appState), updateAppState),\n      elements: nextElements,\n      commitToHistory: true\n    };\n  },\n  keyTest: event => event.shiftKey && event[_keys__WEBPACK_IMPORTED_MODULE_1__.KEYS.CTRL_OR_CMD] && event.key === _keys__WEBPACK_IMPORTED_MODULE_1__.KEYS.G.toUpperCase(),\n  contextItemLabel: "labels.ungroup",\n  predicate: (elements, appState) => (0,_groups__WEBPACK_IMPORTED_MODULE_8__.getSelectedGroupIds)(appState).length > 0,\n  PanelComponent: ({\n    elements,\n    appState,\n    updateData\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ToolButton__WEBPACK_IMPORTED_MODULE_11__.ToolButton, {\n    type: "button",\n    hidden: (0,_groups__WEBPACK_IMPORTED_MODULE_8__.getSelectedGroupIds)(appState).length === 0,\n    icon: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_icons__WEBPACK_IMPORTED_MODULE_5__.UngroupIcon, {\n      theme: appState.theme\n    }),\n    onClick: () => updateData(null),\n    title: `${(0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.ungroup")} \u2014 ${(0,_utils__WEBPACK_IMPORTED_MODULE_3__.getShortcutKey)("CtrlOrCmd+Shift+G")}`,\n    "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.ungroup"),\n    visible: (0,_scene__WEBPACK_IMPORTED_MODULE_7__.isSomeElementSelected)((0,_element__WEBPACK_IMPORTED_MODULE_9__.getNonDeletedElements)(elements), appState)\n  })\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 13760 characters]\n//# sourceURL=webpack-internal:///../../actions/actionGroup.tsx\n');
              }
            ),
            /***/
            "../../actions/actionHistory.tsx": (
              /*!***************************************!*\
                !*** ../../actions/actionHistory.tsx ***!
                \***************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "createRedoAction": () => (/* binding */ createRedoAction),\n/* harmony export */   "createUndoAction": () => (/* binding */ createUndoAction)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _components_icons__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/icons */ "../../components/icons.tsx");\n/* harmony import */ var _components_ToolButton__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../components/ToolButton */ "../../components/ToolButton.tsx");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _element_mutateElement__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../element/mutateElement */ "../../element/mutateElement.ts");\n/* harmony import */ var _element_binding__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../element/binding */ "../../element/binding.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n\n\n\n\n\n\n\n\n\n\nconst writeData = (prevElements, appState, updater) => {\n  const commitToHistory = false;\n\n  if (!appState.multiElement && !appState.resizingElement && !appState.editingElement && !appState.draggingElement) {\n    const data = updater();\n\n    if (data === null) {\n      return {\n        commitToHistory\n      };\n    }\n\n    const prevElementMap = (0,_utils__WEBPACK_IMPORTED_MODULE_7__.arrayToMap)(prevElements);\n    const nextElements = data.elements;\n    const nextElementMap = (0,_utils__WEBPACK_IMPORTED_MODULE_7__.arrayToMap)(nextElements);\n    const deletedElements = prevElements.filter(prevElement => !nextElementMap.has(prevElement.id));\n    const elements = nextElements.map(nextElement => (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_5__.newElementWith)(prevElementMap.get(nextElement.id) || nextElement, nextElement)).concat(deletedElements.map(prevElement => (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_5__.newElementWith)(prevElement, {\n      isDeleted: true\n    })));\n    (0,_element_binding__WEBPACK_IMPORTED_MODULE_6__.fixBindingsAfterDeletion)(elements, deletedElements);\n    return {\n      elements,\n      appState: Object.assign(Object.assign({}, appState), data.appState),\n      commitToHistory,\n      syncHistory: true\n    };\n  }\n\n  return {\n    commitToHistory\n  };\n};\n\nconst createUndoAction = history => ({\n  name: "undo",\n  trackEvent: {\n    category: "history"\n  },\n  perform: (elements, appState) => writeData(elements, appState, () => history.undoOnce()),\n  keyTest: event => event[_keys__WEBPACK_IMPORTED_MODULE_4__.KEYS.CTRL_OR_CMD] && event.key.toLowerCase() === _keys__WEBPACK_IMPORTED_MODULE_4__.KEYS.Z && !event.shiftKey,\n  PanelComponent: ({\n    updateData,\n    data\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ToolButton__WEBPACK_IMPORTED_MODULE_2__.ToolButton, {\n    type: "button",\n    icon: _components_icons__WEBPACK_IMPORTED_MODULE_1__.UndoIcon,\n    "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("buttons.undo"),\n    onClick: updateData,\n    size: (data === null || data === void 0 ? void 0 : data.size) || "medium"\n  }),\n  commitToHistory: () => false\n});\nconst createRedoAction = history => ({\n  name: "redo",\n  trackEvent: {\n    category: "history"\n  },\n  perform: (elements, appState) => writeData(elements, appState, () => history.redoOnce()),\n  keyTest: event => event[_keys__WEBPACK_IMPORTED_MODULE_4__.KEYS.CTRL_OR_CMD] && event.shiftKey && event.key.toLowerCase() === _keys__WEBPACK_IMPORTED_MODULE_4__.KEYS.Z || _constants__WEBPACK_IMPORTED_MODULE_8__.isWindows && event.ctrlKey && !event.shiftKey && event.key === _keys__WEBPACK_IMPORTED_MODULE_4__.KEYS.Y,\n  PanelComponent: ({\n    updateData,\n    data\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ToolButton__WEBPACK_IMPORTED_MODULE_2__.ToolButton, {\n    type: "button",\n    icon: _components_icons__WEBPACK_IMPORTED_MODULE_1__.RedoIcon,\n    "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("buttons.redo"),\n    onClick: updateData,\n    size: (data === null || data === void 0 ? void 0 : data.size) || "medium"\n  }),\n  commitToHistory: () => false\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5004 characters]\n//# sourceURL=webpack-internal:///../../actions/actionHistory.tsx\n');
              }
            ),
            /***/
            "../../actions/actionLinearEditor.ts": (
              /*!*******************************************!*\
                !*** ../../actions/actionLinearEditor.ts ***!
                \*******************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "actionToggleLinearEditor": () => (/* binding */ actionToggleLinearEditor)\n/* harmony export */ });\n/* harmony import */ var _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../element/linearElementEditor */ "../../element/linearElementEditor.ts");\n/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../element/typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./register */ "../../actions/register.ts");\n\n\n\nconst actionToggleLinearEditor = (0,_register__WEBPACK_IMPORTED_MODULE_2__.register)({\n  name: "toggleLinearEditor",\n  trackEvent: {\n    category: "element"\n  },\n  predicate: (elements, appState, _, app) => {\n    const selectedElements = app.scene.getSelectedElements(appState);\n\n    if (selectedElements.length === 1 && (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isLinearElement)(selectedElements[0])) {\n      return true;\n    }\n\n    return false;\n  },\n\n  perform(elements, appState, _, app) {\n    var _a;\n\n    const selectedElement = app.scene.getSelectedElements({\n      selectedElementIds: appState.selectedElementIds,\n      includeBoundTextElement: true\n    })[0];\n    const editingLinearElement = ((_a = appState.editingLinearElement) === null || _a === void 0 ? void 0 : _a.elementId) === selectedElement.id ? null : new _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_0__.LinearElementEditor(selectedElement, app.scene);\n    return {\n      appState: Object.assign(Object.assign({}, appState), {\n        editingLinearElement\n      }),\n      commitToHistory: false\n    };\n  },\n\n  contextItemLabel: (elements, appState, app) => {\n    var _a;\n\n    const selectedElement = app.scene.getSelectedElements({\n      selectedElementIds: appState.selectedElementIds,\n      includeBoundTextElement: true\n    })[0];\n    return ((_a = appState.editingLinearElement) === null || _a === void 0 ? void 0 : _a.elementId) === selectedElement.id ? "labels.lineEditor.exit" : "labels.lineEditor.edit";\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vYWN0aW9ucy9hY3Rpb25MaW5lYXJFZGl0b3IudHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFxRTtBQUNiO0FBQ2xCO0FBQy9CLGlDQUFpQyxtREFBUTtBQUNoRDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQSx5Q0FBeUMsb0VBQWU7QUFDeEQ7QUFDQTs7QUFFQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsOEpBQThKLDZFQUFtQjtBQUNqTDtBQUNBLDhDQUE4QztBQUM5QztBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9hY3Rpb25zL2FjdGlvbkxpbmVhckVkaXRvci50cz81ZjllIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExpbmVhckVsZW1lbnRFZGl0b3IgfSBmcm9tIFwiLi4vZWxlbWVudC9saW5lYXJFbGVtZW50RWRpdG9yXCI7XG5pbXBvcnQgeyBpc0xpbmVhckVsZW1lbnQgfSBmcm9tIFwiLi4vZWxlbWVudC90eXBlQ2hlY2tzXCI7XG5pbXBvcnQgeyByZWdpc3RlciB9IGZyb20gXCIuL3JlZ2lzdGVyXCI7XG5leHBvcnQgY29uc3QgYWN0aW9uVG9nZ2xlTGluZWFyRWRpdG9yID0gcmVnaXN0ZXIoe1xuICBuYW1lOiBcInRvZ2dsZUxpbmVhckVkaXRvclwiLFxuICB0cmFja0V2ZW50OiB7XG4gICAgY2F0ZWdvcnk6IFwiZWxlbWVudFwiXG4gIH0sXG4gIHByZWRpY2F0ZTogKGVsZW1lbnRzLCBhcHBTdGF0ZSwgXywgYXBwKSA9PiB7XG4gICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGFwcC5zY2VuZS5nZXRTZWxlY3RlZEVsZW1lbnRzKGFwcFN0YXRlKTtcblxuICAgIGlmIChzZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCA9PT0gMSAmJiBpc0xpbmVhckVsZW1lbnQoc2VsZWN0ZWRFbGVtZW50c1swXSkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfSxcblxuICBwZXJmb3JtKGVsZW1lbnRzLCBhcHBTdGF0ZSwgXywgYXBwKSB7XG4gICAgdmFyIF9hO1xuXG4gICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50ID0gYXBwLnNjZW5lLmdldFNlbGVjdGVkRWxlbWVudHMoe1xuICAgICAgc2VsZWN0ZWRFbGVtZW50SWRzOiBhcHBTdGF0ZS5zZWxlY3RlZEVsZW1lbnRJZHMsXG4gICAgICBpbmNsdWRlQm91bmRUZXh0RWxlbWVudDogdHJ1ZVxuICAgIH0pWzBdO1xuICAgIGNvbnN0IGVkaXRpbmdMaW5lYXJFbGVtZW50ID0gKChfYSA9IGFwcFN0YXRlLmVkaXRpbmdMaW5lYXJFbGVtZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZWxlbWVudElkKSA9PT0gc2VsZWN0ZWRFbGVtZW50LmlkID8gbnVsbCA6IG5ldyBMaW5lYXJFbGVtZW50RWRpdG9yKHNlbGVjdGVkRWxlbWVudCwgYXBwLnNjZW5lKTtcbiAgICByZXR1cm4ge1xuICAgICAgYXBwU3RhdGU6IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgYXBwU3RhdGUpLCB7XG4gICAgICAgIGVkaXRpbmdMaW5lYXJFbGVtZW50XG4gICAgICB9KSxcbiAgICAgIGNvbW1pdFRvSGlzdG9yeTogZmFsc2VcbiAgICB9O1xuICB9LFxuXG4gIGNvbnRleHRJdGVtTGFiZWw6IChlbGVtZW50cywgYXBwU3RhdGUsIGFwcCkgPT4ge1xuICAgIHZhciBfYTtcblxuICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudCA9IGFwcC5zY2VuZS5nZXRTZWxlY3RlZEVsZW1lbnRzKHtcbiAgICAgIHNlbGVjdGVkRWxlbWVudElkczogYXBwU3RhdGUuc2VsZWN0ZWRFbGVtZW50SWRzLFxuICAgICAgaW5jbHVkZUJvdW5kVGV4dEVsZW1lbnQ6IHRydWVcbiAgICB9KVswXTtcbiAgICByZXR1cm4gKChfYSA9IGFwcFN0YXRlLmVkaXRpbmdMaW5lYXJFbGVtZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZWxlbWVudElkKSA9PT0gc2VsZWN0ZWRFbGVtZW50LmlkID8gXCJsYWJlbHMubGluZUVkaXRvci5leGl0XCIgOiBcImxhYmVscy5saW5lRWRpdG9yLmVkaXRcIjtcbiAgfVxufSk7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../actions/actionLinearEditor.ts\n');
              }
            ),
            /***/
            "../../actions/actionMenu.tsx": (
              /*!************************************!*\
                !*** ../../actions/actionMenu.tsx ***!
                \************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "actionShortcuts": () => (/* binding */ actionShortcuts),\n/* harmony export */   "actionToggleCanvasMenu": () => (/* binding */ actionToggleCanvasMenu),\n/* harmony export */   "actionToggleEditMenu": () => (/* binding */ actionToggleEditMenu)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _components_icons__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/icons */ "../../components/icons.tsx");\n/* harmony import */ var _components_ToolButton__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../components/ToolButton */ "../../components/ToolButton.tsx");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./register */ "../../actions/register.ts");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n\n\n\n\n\n\n\nconst actionToggleCanvasMenu = (0,_register__WEBPACK_IMPORTED_MODULE_5__.register)({\n  name: "toggleCanvasMenu",\n  trackEvent: {\n    category: "menu"\n  },\n  perform: (_, appState) => ({\n    appState: Object.assign(Object.assign({}, appState), {\n      openMenu: appState.openMenu === "canvas" ? null : "canvas"\n    }),\n    commitToHistory: false\n  }),\n  PanelComponent: ({\n    appState,\n    updateData\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ToolButton__WEBPACK_IMPORTED_MODULE_2__.ToolButton, {\n    type: "button",\n    icon: _components_icons__WEBPACK_IMPORTED_MODULE_1__.HamburgerMenuIcon,\n    "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("buttons.menu"),\n    onClick: updateData,\n    selected: appState.openMenu === "canvas"\n  })\n});\nconst actionToggleEditMenu = (0,_register__WEBPACK_IMPORTED_MODULE_5__.register)({\n  name: "toggleEditMenu",\n  trackEvent: {\n    category: "menu"\n  },\n  perform: (_elements, appState) => ({\n    appState: Object.assign(Object.assign({}, appState), {\n      openMenu: appState.openMenu === "shape" ? null : "shape"\n    }),\n    commitToHistory: false\n  }),\n  PanelComponent: ({\n    elements,\n    appState,\n    updateData\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ToolButton__WEBPACK_IMPORTED_MODULE_2__.ToolButton, {\n    visible: (0,_element__WEBPACK_IMPORTED_MODULE_4__.showSelectedShapeActions)(appState, (0,_element__WEBPACK_IMPORTED_MODULE_4__.getNonDeletedElements)(elements)),\n    type: "button",\n    icon: _components_icons__WEBPACK_IMPORTED_MODULE_1__.palette,\n    "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("buttons.edit"),\n    onClick: updateData,\n    selected: appState.openMenu === "shape"\n  })\n});\nconst actionShortcuts = (0,_register__WEBPACK_IMPORTED_MODULE_5__.register)({\n  name: "toggleShortcuts",\n  viewMode: true,\n  trackEvent: {\n    category: "menu",\n    action: "toggleHelpDialog"\n  },\n  perform: (_elements, appState, _, {\n    focusContainer\n  }) => {\n    if (appState.openDialog === "help") {\n      focusContainer();\n    }\n\n    return {\n      appState: Object.assign(Object.assign({}, appState), {\n        openDialog: appState.openDialog === "help" ? null : "help"\n      }),\n      commitToHistory: false\n    };\n  },\n  keyTest: event => event.key === _keys__WEBPACK_IMPORTED_MODULE_6__.KEYS.QUESTION_MARK\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4124 characters]\n//# sourceURL=webpack-internal:///../../actions/actionMenu.tsx\n');
              }
            ),
            /***/
            "../../actions/actionNavigate.tsx": (
              /*!****************************************!*\
                !*** ../../actions/actionNavigate.tsx ***!
                \****************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "actionGoToCollaborator": () => (/* binding */ actionGoToCollaborator)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _clients__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../clients */ "../../clients.ts");\n/* harmony import */ var _components_Avatar__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../components/Avatar */ "../../components/Avatar.tsx");\n/* harmony import */ var _scene_scroll__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../scene/scroll */ "../../scene/scroll.ts");\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./register */ "../../actions/register.ts");\n\n\n\n\n\nconst actionGoToCollaborator = (0,_register__WEBPACK_IMPORTED_MODULE_4__.register)({\n  name: "goToCollaborator",\n  viewMode: true,\n  trackEvent: {\n    category: "collab"\n  },\n  perform: (_elements, appState, value) => {\n    const point = value;\n\n    if (!point) {\n      return {\n        appState,\n        commitToHistory: false\n      };\n    }\n\n    return {\n      appState: Object.assign(Object.assign(Object.assign({}, appState), (0,_scene_scroll__WEBPACK_IMPORTED_MODULE_3__.centerScrollOn)({\n        scenePoint: point,\n        viewportDimensions: {\n          width: appState.width,\n          height: appState.height\n        },\n        zoom: appState.zoom\n      })), {\n        // Close mobile menu\n        openMenu: appState.openMenu === "canvas" ? null : appState.openMenu\n      }),\n      commitToHistory: false\n    };\n  },\n  PanelComponent: ({\n    updateData,\n    data\n  }) => {\n    const [clientId, collaborator] = data;\n    const background = (0,_clients__WEBPACK_IMPORTED_MODULE_1__.getClientColor)(clientId);\n    return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_Avatar__WEBPACK_IMPORTED_MODULE_2__.Avatar, {\n      color: background,\n      onClick: () => updateData(collaborator.pointer),\n      name: collaborator.username || "",\n      src: collaborator.avatarUrl\n    });\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vYWN0aW9ucy9hY3Rpb25OYXZpZ2F0ZS50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFnRDtBQUNKO0FBQ0U7QUFDRztBQUNYO0FBQy9CLCtCQUErQixtREFBUTtBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDREQUE0RCxhQUFhLDZEQUFjO0FBQ3ZGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSx1QkFBdUIsd0RBQWM7QUFDckMsV0FBVyxzREFBSSxDQUFDLHNEQUFNO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9hY3Rpb25zL2FjdGlvbk5hdmlnYXRlLnRzeD8xNTY1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBnZXRDbGllbnRDb2xvciB9IGZyb20gXCIuLi9jbGllbnRzXCI7XG5pbXBvcnQgeyBBdmF0YXIgfSBmcm9tIFwiLi4vY29tcG9uZW50cy9BdmF0YXJcIjtcbmltcG9ydCB7IGNlbnRlclNjcm9sbE9uIH0gZnJvbSBcIi4uL3NjZW5lL3Njcm9sbFwiO1xuaW1wb3J0IHsgcmVnaXN0ZXIgfSBmcm9tIFwiLi9yZWdpc3RlclwiO1xuZXhwb3J0IGNvbnN0IGFjdGlvbkdvVG9Db2xsYWJvcmF0b3IgPSByZWdpc3Rlcih7XG4gIG5hbWU6IFwiZ29Ub0NvbGxhYm9yYXRvclwiLFxuICB2aWV3TW9kZTogdHJ1ZSxcbiAgdHJhY2tFdmVudDoge1xuICAgIGNhdGVnb3J5OiBcImNvbGxhYlwiXG4gIH0sXG4gIHBlcmZvcm06IChfZWxlbWVudHMsIGFwcFN0YXRlLCB2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IHBvaW50ID0gdmFsdWU7XG5cbiAgICBpZiAoIXBvaW50KSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBhcHBTdGF0ZSxcbiAgICAgICAgY29tbWl0VG9IaXN0b3J5OiBmYWxzZVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgYXBwU3RhdGU6IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBhcHBTdGF0ZSksIGNlbnRlclNjcm9sbE9uKHtcbiAgICAgICAgc2NlbmVQb2ludDogcG9pbnQsXG4gICAgICAgIHZpZXdwb3J0RGltZW5zaW9uczoge1xuICAgICAgICAgIHdpZHRoOiBhcHBTdGF0ZS53aWR0aCxcbiAgICAgICAgICBoZWlnaHQ6IGFwcFN0YXRlLmhlaWdodFxuICAgICAgICB9LFxuICAgICAgICB6b29tOiBhcHBTdGF0ZS56b29tXG4gICAgICB9KSksIHtcbiAgICAgICAgLy8gQ2xvc2UgbW9iaWxlIG1lbnVcbiAgICAgICAgb3Blbk1lbnU6IGFwcFN0YXRlLm9wZW5NZW51ID09PSBcImNhbnZhc1wiID8gbnVsbCA6IGFwcFN0YXRlLm9wZW5NZW51XG4gICAgICB9KSxcbiAgICAgIGNvbW1pdFRvSGlzdG9yeTogZmFsc2VcbiAgICB9O1xuICB9LFxuICBQYW5lbENvbXBvbmVudDogKHtcbiAgICB1cGRhdGVEYXRhLFxuICAgIGRhdGFcbiAgfSkgPT4ge1xuICAgIGNvbnN0IFtjbGllbnRJZCwgY29sbGFib3JhdG9yXSA9IGRhdGE7XG4gICAgY29uc3QgYmFja2dyb3VuZCA9IGdldENsaWVudENvbG9yKGNsaWVudElkKTtcbiAgICByZXR1cm4gX2pzeChBdmF0YXIsIHtcbiAgICAgIGNvbG9yOiBiYWNrZ3JvdW5kLFxuICAgICAgb25DbGljazogKCkgPT4gdXBkYXRlRGF0YShjb2xsYWJvcmF0b3IucG9pbnRlciksXG4gICAgICBuYW1lOiBjb2xsYWJvcmF0b3IudXNlcm5hbWUgfHwgXCJcIixcbiAgICAgIHNyYzogY29sbGFib3JhdG9yLmF2YXRhclVybFxuICAgIH0pO1xuICB9XG59KTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../actions/actionNavigate.tsx\n');
              }
            ),
            /***/
            "../../actions/actionProperties.tsx": (
              /*!******************************************!*\
                !*** ../../actions/actionProperties.tsx ***!
                \******************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "actionChangeArrowhead": () => (/* binding */ actionChangeArrowhead),\n/* harmony export */   "actionChangeBackgroundColor": () => (/* binding */ actionChangeBackgroundColor),\n/* harmony export */   "actionChangeFillStyle": () => (/* binding */ actionChangeFillStyle),\n/* harmony export */   "actionChangeFontFamily": () => (/* binding */ actionChangeFontFamily),\n/* harmony export */   "actionChangeFontSize": () => (/* binding */ actionChangeFontSize),\n/* harmony export */   "actionChangeOpacity": () => (/* binding */ actionChangeOpacity),\n/* harmony export */   "actionChangeRoundness": () => (/* binding */ actionChangeRoundness),\n/* harmony export */   "actionChangeSloppiness": () => (/* binding */ actionChangeSloppiness),\n/* harmony export */   "actionChangeStrokeColor": () => (/* binding */ actionChangeStrokeColor),\n/* harmony export */   "actionChangeStrokeStyle": () => (/* binding */ actionChangeStrokeStyle),\n/* harmony export */   "actionChangeStrokeWidth": () => (/* binding */ actionChangeStrokeWidth),\n/* harmony export */   "actionChangeTextAlign": () => (/* binding */ actionChangeTextAlign),\n/* harmony export */   "actionChangeVerticalAlign": () => (/* binding */ actionChangeVerticalAlign),\n/* harmony export */   "actionDecreaseFontSize": () => (/* binding */ actionDecreaseFontSize),\n/* harmony export */   "actionIncreaseFontSize": () => (/* binding */ actionIncreaseFontSize),\n/* harmony export */   "changeProperty": () => (/* binding */ changeProperty),\n/* harmony export */   "getFormValue": () => (/* binding */ getFormValue)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _colors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../colors */ "../../colors.ts");\n/* harmony import */ var _analytics__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../analytics */ "../../analytics.ts");\n/* harmony import */ var _components_ButtonIconSelect__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../components/ButtonIconSelect */ "../../components/ButtonIconSelect.tsx");\n/* harmony import */ var _components_ColorPicker_ColorPicker__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../components/ColorPicker/ColorPicker */ "../../components/ColorPicker/ColorPicker.tsx");\n/* harmony import */ var _components_IconPicker__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../components/IconPicker */ "../../components/IconPicker.tsx");\n/* harmony import */ var _components_icons__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../components/icons */ "../../components/icons.tsx");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _element_mutateElement__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../element/mutateElement */ "../../element/mutateElement.ts");\n/* harmony import */ var _element_textElement__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../element/textElement */ "../../element/textElement.ts");\n/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../element/typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _random__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../random */ "../../random.ts");\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../scene */ "../../scene/index.ts");\n/* harmony import */ var _scene_comparisons__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../scene/comparisons */ "../../scene/comparisons.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./register */ "../../actions/register.ts");\n\n\n\n\n\n // TODO barnabasmolnar/editor-redesign\n// TextAlignTopIcon, TextAlignBottomIcon,TextAlignMiddleIcon,\n// ArrowHead icons\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst FONT_SIZE_RELATIVE_INCREASE_STEP = 0.1;\nconst changeProperty = (elements, appState, callback, includeBoundText = false) => {\n  const selectedElementIds = (0,_utils__WEBPACK_IMPORTED_MODULE_17__.arrayToMap)((0,_scene__WEBPACK_IMPORTED_MODULE_15__.getSelectedElements)(elements, appState, {\n    includeBoundTextElement: includeBoundText\n  }));\n  return elements.map(element => {\n    var _a;\n\n    if (selectedElementIds.get(element.id) || element.id === ((_a = appState.editingElement) === null || _a === void 0 ? void 0 : _a.id)) {\n      return callback(element);\n    }\n\n    return element;\n  });\n};\nconst getFormValue = function (elements, appState, getAttribute, isRelevantElement, defaultValue) {\n  var _a;\n\n  const editingElement = appState.editingElement;\n  const nonDeletedElements = (0,_element__WEBPACK_IMPORTED_MODULE_8__.getNonDeletedElements)(elements);\n  let ret = null;\n\n  if (editingElement) {\n    ret = getAttribute(editingElement);\n  }\n\n  if (!ret) {\n    const hasSelection = (0,_scene__WEBPACK_IMPORTED_MODULE_15__.isSomeElementSelected)(nonDeletedElements, appState);\n\n    if (hasSelection) {\n      ret = (_a = (0,_scene__WEBPACK_IMPORTED_MODULE_15__.getCommonAttributeOfSelectedElements)(isRelevantElement === true ? nonDeletedElements : nonDeletedElements.filter(el => isRelevantElement(el)), appState, getAttribute)) !== null && _a !== void 0 ? _a : typeof defaultValue === "function" ? defaultValue(true) : defaultValue;\n    } else {\n      ret = typeof defaultValue === "function" ? defaultValue(false) : defaultValue;\n    }\n  }\n\n  return ret;\n};\n\nconst offsetElementAfterFontResize = (prevElement, nextElement) => {\n  if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_11__.isBoundToContainer)(nextElement)) {\n    return nextElement;\n  }\n\n  return (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_9__.mutateElement)(nextElement, {\n    x: prevElement.textAlign === "left" ? prevElement.x : prevElement.x + (prevElement.width - nextElement.width) / (prevElement.textAlign === "center" ? 2 : 1),\n    // centering vertically is non-standard, but for Excalidraw I think\n    // it makes sense\n    y: prevElement.y + (prevElement.height - nextElement.height) / 2\n  }, false);\n};\n\nconst changeFontSize = (elements, appState, getNewFontSize, fallbackValue) => {\n  const newFontSizes = new Set();\n  return {\n    elements: changeProperty(elements, appState, oldElement => {\n      if ((0,_element__WEBPACK_IMPORTED_MODULE_8__.isTextElement)(oldElement)) {\n        const newFontSize = getNewFontSize(oldElement);\n        newFontSizes.add(newFontSize);\n        let newElement = (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_9__.newElementWith)(oldElement, {\n          fontSize: newFontSize\n        });\n        (0,_element__WEBPACK_IMPORTED_MODULE_8__.redrawTextBoundingBox)(newElement, (0,_element_textElement__WEBPACK_IMPORTED_MODULE_10__.getContainerElement)(oldElement));\n        newElement = offsetElementAfterFontResize(oldElement, newElement);\n        return newElement;\n      }\n\n      return oldElement;\n    }, true),\n    appState: Object.assign(Object.assign({}, appState), {\n      // update state only if we\'ve set all select text elements to\n      // the same font size\n      currentItemFontSize: newFontSizes.size === 1 ? [...newFontSizes][0] : fallbackValue !== null && fallbackValue !== void 0 ? fallbackValue : appState.currentItemFontSize\n    }),\n    commitToHistory: true\n  };\n}; // -----------------------------------------------------------------------------\n\n\nconst actionChangeStrokeColor = (0,_register__WEBPACK_IMPORTED_MODULE_18__.register)({\n  name: "changeStrokeColor",\n  trackEvent: false,\n  perform: (elements, appState, value) => {\n    return Object.assign(Object.assign({}, value.currentItemStrokeColor && {\n      elements: changeProperty(elements, appState, el => {\n        return (0,_scene_comparisons__WEBPACK_IMPORTED_MODULE_16__.hasStrokeColor)(el.type) ? (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_9__.newElementWith)(el, {\n          strokeColor: value.currentItemStrokeColor\n        }) : el;\n      }, true)\n    }), {\n      appState: Object.assign(Object.assign({}, appState), value),\n      commitToHistory: !!value.currentItemStrokeColor\n    });\n  },\n  PanelComponent: ({\n    elements,\n    appState,\n    updateData,\n    appProps\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("h3", Object.assign({\n      "aria-hidden": "true"\n    }, {\n      children: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.stroke")\n    })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ColorPicker_ColorPicker__WEBPACK_IMPORTED_MODULE_4__.ColorPicker, {\n      topPicks: _colors__WEBPACK_IMPORTED_MODULE_1__.DEFAULT_ELEMENT_STROKE_PICKS,\n      palette: _colors__WEBPACK_IMPORTED_MODULE_1__.DEFAULT_ELEMENT_STROKE_COLOR_PALETTE,\n      type: "elementStroke",\n      label: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.stroke"),\n      color: getFormValue(elements, appState, element => element.strokeColor, true, appState.currentItemStrokeColor),\n      onChange: color => updateData({\n        currentItemStrokeColor: color\n      }),\n      elements: elements,\n      appState: appState,\n      updateData: updateData\n    })]\n  })\n});\nconst actionChangeBackgroundColor = (0,_register__WEBPACK_IMPORTED_MODULE_18__.register)({\n  name: "changeBackgroundColor",\n  trackEvent: false,\n  perform: (elements, appState, value) => {\n    return Object.assign(Object.assign({}, value.currentItemBackgroundColor && {\n      elements: changeProperty(elements, appState, el => (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_9__.newElementWith)(el, {\n        backgroundColor: value.currentItemBackgroundColor\n      }))\n    }), {\n      appState: Object.assign(Object.assign({}, appState), value),\n      commitToHistory: !!value.currentItemBackgroundColor\n    });\n  },\n  PanelComponent: ({\n    elements,\n    appState,\n    updateData,\n    appProps\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("h3", Object.assign({\n      "aria-hidden": "true"\n    }, {\n      children: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.background")\n    })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ColorPicker_ColorPicker__WEBPACK_IMPORTED_MODULE_4__.ColorPicker, {\n      topPicks: _colors__WEBPACK_IMPORTED_MODULE_1__.DEFAULT_ELEMENT_BACKGROUND_PICKS,\n      palette: _colors__WEBPACK_IMPORTED_MODULE_1__.DEFAULT_ELEMENT_BACKGROUND_COLOR_PALETTE,\n      type: "elementBackground",\n      label: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.background"),\n      color: getFormValue(elements, appState, element => element.backgroundColor, true, appState.currentItemBackgroundColor),\n      onChange: color => updateData({\n        currentItemBackgroundColor: color\n      }),\n      elements: elements,\n      appState: appState,\n      updateData: updateData\n    })]\n  })\n});\nconst actionChangeFillStyle = (0,_register__WEBPACK_IMPORTED_MODULE_18__.register)({\n  name: "changeFillStyle",\n  trackEvent: false,\n  perform: (elements, appState, value, app) => {\n    (0,_analytics__WEBPACK_IMPORTED_MODULE_2__.trackEvent)("element", "changeFillStyle", `${value} (${app.device.editor.isMobile ? "mobile" : "desktop"})`);\n    return {\n      elements: changeProperty(elements, appState, el => (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_9__.newElementWith)(el, {\n        fillStyle: value\n      })),\n      appState: Object.assign(Object.assign({}, appState), {\n        currentItemFillStyle: value\n      }),\n      commitToHistory: true\n    };\n  },\n  PanelComponent: ({\n    elements,\n    appState,\n    updateData\n  }) => {\n    const selectedElements = (0,_scene__WEBPACK_IMPORTED_MODULE_15__.getSelectedElements)(elements, appState);\n    const allElementsZigZag = selectedElements.length > 0 && selectedElements.every(el => el.fillStyle === "zigzag");\n    return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("fieldset", {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("legend", {\n        children: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.fill")\n      }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ButtonIconSelect__WEBPACK_IMPORTED_MODULE_3__.ButtonIconSelect, {\n        type: "button",\n        options: [{\n          value: "hachure",\n          text: `${allElementsZigZag ? (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.zigzag") : (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.hachure")} (${(0,_utils__WEBPACK_IMPORTED_MODULE_17__.getShortcutKey)("Alt-Click")})`,\n          icon: allElementsZigZag ? _components_icons__WEBPACK_IMPORTED_MODULE_6__.FillZigZagIcon : _components_icons__WEBPACK_IMPORTED_MODULE_6__.FillHachureIcon,\n          active: allElementsZigZag ? true : undefined,\n          testId: `fill-hachure`\n        }, {\n          value: "cross-hatch",\n          text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.crossHatch"),\n          icon: _components_icons__WEBPACK_IMPORTED_MODULE_6__.FillCrossHatchIcon,\n          testId: `fill-cross-hatch`\n        }, {\n          value: "solid",\n          text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.solid"),\n          icon: _components_icons__WEBPACK_IMPORTED_MODULE_6__.FillSolidIcon,\n          testId: `fill-solid`\n        }],\n        value: getFormValue(elements, appState, element => element.fillStyle, element => element.hasOwnProperty("fillStyle"), hasSelection => hasSelection ? null : appState.currentItemFillStyle),\n        onClick: (value, event) => {\n          const nextValue = event.altKey && value === "hachure" && selectedElements.every(el => el.fillStyle === "hachure") ? "zigzag" : value;\n          updateData(nextValue);\n        }\n      })]\n    });\n  }\n});\nconst actionChangeStrokeWidth = (0,_register__WEBPACK_IMPORTED_MODULE_18__.register)({\n  name: "changeStrokeWidth",\n  trackEvent: false,\n  perform: (elements, appState, value) => {\n    return {\n      elements: changeProperty(elements, appState, el => (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_9__.newElementWith)(el, {\n        strokeWidth: value\n      })),\n      appState: Object.assign(Object.assign({}, appState), {\n        currentItemStrokeWidth: value\n      }),\n      commitToHistory: true\n    };\n  },\n  PanelComponent: ({\n    elements,\n    appState,\n    updateData\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("fieldset", {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("legend", {\n      children: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.strokeWidth")\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ButtonIconSelect__WEBPACK_IMPORTED_MODULE_3__.ButtonIconSelect, {\n      group: "stroke-width",\n      options: [{\n        value: _constants__WEBPACK_IMPORTED_MODULE_7__.STROKE_WIDTH.thin,\n        text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.thin"),\n        icon: _components_icons__WEBPACK_IMPORTED_MODULE_6__.StrokeWidthBaseIcon,\n        testId: "strokeWidth-thin"\n      }, {\n        value: _constants__WEBPACK_IMPORTED_MODULE_7__.STROKE_WIDTH.bold,\n        text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.bold"),\n        icon: _components_icons__WEBPACK_IMPORTED_MODULE_6__.StrokeWidthBoldIcon,\n        testId: "strokeWidth-bold"\n      }, {\n        value: _constants__WEBPACK_IMPORTED_MODULE_7__.STROKE_WIDTH.extraBold,\n        text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.extraBold"),\n        icon: _components_icons__WEBPACK_IMPORTED_MODULE_6__.StrokeWidthExtraBoldIcon,\n        testId: "strokeWidth-extraBold"\n      }],\n      value: getFormValue(elements, appState, element => element.strokeWidth, element => element.hasOwnProperty("strokeWidth"), hasSelection => hasSelection ? null : appState.currentItemStrokeWidth),\n      onChange: value => updateData(value)\n    })]\n  })\n});\nconst actionChangeSloppiness = (0,_register__WEBPACK_IMPORTED_MODULE_18__.register)({\n  name: "changeSloppiness",\n  trackEvent: false,\n  perform: (elements, appState, value) => {\n    return {\n      elements: changeProperty(elements, appState, el => (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_9__.newElementWith)(el, {\n        seed: (0,_random__WEBPACK_IMPORTED_MODULE_14__.randomInteger)(),\n        roughness: value\n      })),\n      appState: Object.assign(Object.assign({}, appState), {\n        currentItemRoughness: value\n      }),\n      commitToHistory: true\n    };\n  },\n  PanelComponent: ({\n    elements,\n    appState,\n    updateData\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("fieldset", {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("legend", {\n      children: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.sloppiness")\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ButtonIconSelect__WEBPACK_IMPORTED_MODULE_3__.ButtonIconSelect, {\n      group: "sloppiness",\n      options: [{\n        value: 0,\n        text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.architect"),\n        icon: _components_icons__WEBPACK_IMPORTED_MODULE_6__.SloppinessArchitectIcon\n      }, {\n        value: 1,\n        text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.artist"),\n        icon: _components_icons__WEBPACK_IMPORTED_MODULE_6__.SloppinessArtistIcon\n      }, {\n        value: 2,\n        text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.cartoonist"),\n        icon: _components_icons__WEBPACK_IMPORTED_MODULE_6__.SloppinessCartoonistIcon\n      }],\n      value: getFormValue(elements, appState, element => element.roughness, element => element.hasOwnProperty("roughness"), hasSelection => hasSelection ? null : appState.currentItemRoughness),\n      onChange: value => updateData(value)\n    })]\n  })\n});\nconst actionChangeStrokeStyle = (0,_register__WEBPACK_IMPORTED_MODULE_18__.register)({\n  name: "changeStrokeStyle",\n  trackEvent: false,\n  perform: (elements, appState, value) => {\n    return {\n      elements: changeProperty(elements, appState, el => (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_9__.newElementWith)(el, {\n        strokeStyle: value\n      })),\n      appState: Object.assign(Object.assign({}, appState), {\n        currentItemStrokeStyle: value\n      }),\n      commitToHistory: true\n    };\n  },\n  PanelComponent: ({\n    elements,\n    appState,\n    updateData\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("fieldset", {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("legend", {\n      children: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.strokeStyle")\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ButtonIconSelect__WEBPACK_IMPORTED_MODULE_3__.ButtonIconSelect, {\n      group: "strokeStyle",\n      options: [{\n        value: "solid",\n        text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.strokeStyle_solid"),\n        icon: _components_icons__WEBPACK_IMPORTED_MODULE_6__.StrokeWidthBaseIcon\n      }, {\n        value: "dashed",\n        text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.strokeStyle_dashed"),\n        icon: _components_icons__WEBPACK_IMPORTED_MODULE_6__.StrokeStyleDashedIcon\n      }, {\n        value: "dotted",\n        text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.strokeStyle_dotted"),\n        icon: _components_icons__WEBPACK_IMPORTED_MODULE_6__.StrokeStyleDottedIcon\n      }],\n      value: getFormValue(elements, appState, element => element.strokeStyle, element => element.hasOwnProperty("strokeStyle"), hasSelection => hasSelection ? null : appState.currentItemStrokeStyle),\n      onChange: value => updateData(value)\n    })]\n  })\n});\nconst actionChangeOpacity = (0,_register__WEBPACK_IMPORTED_MODULE_18__.register)({\n  name: "changeOpacity",\n  trackEvent: false,\n  perform: (elements, appState, value) => {\n    return {\n      elements: changeProperty(elements, appState, el => (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_9__.newElementWith)(el, {\n        opacity: value\n      }), true),\n      appState: Object.assign(Object.assign({}, appState), {\n        currentItemOpacity: value\n      }),\n      commitToHistory: true\n    };\n  },\n  PanelComponent: ({\n    elements,\n    appState,\n    updateData\n  }) => {\n    var _a;\n\n    return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("label", Object.assign({\n      className: "control-label"\n    }, {\n      children: [(0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.opacity"), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input", {\n        type: "range",\n        min: "0",\n        max: "100",\n        step: "10",\n        onChange: event => updateData(+event.target.value),\n        value: (_a = getFormValue(elements, appState, element => element.opacity, true, appState.currentItemOpacity)) !== null && _a !== void 0 ? _a : undefined\n      })]\n    }));\n  }\n});\nconst actionChangeFontSize = (0,_register__WEBPACK_IMPORTED_MODULE_18__.register)({\n  name: "changeFontSize",\n  trackEvent: false,\n  perform: (elements, appState, value) => {\n    return changeFontSize(elements, appState, () => value, value);\n  },\n  PanelComponent: ({\n    elements,\n    appState,\n    updateData\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("fieldset", {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("legend", {\n      children: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.fontSize")\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ButtonIconSelect__WEBPACK_IMPORTED_MODULE_3__.ButtonIconSelect, {\n      group: "font-size",\n      options: [{\n        value: 16,\n        text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.small"),\n        icon: _components_icons__WEBPACK_IMPORTED_MODULE_6__.FontSizeSmallIcon,\n        testId: "fontSize-small"\n      }, {\n        value: 20,\n        text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.medium"),\n        icon: _components_icons__WEBPACK_IMPORTED_MODULE_6__.FontSizeMediumIcon,\n        testId: "fontSize-medium"\n      }, {\n        value: 28,\n        text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.large"),\n        icon: _components_icons__WEBPACK_IMPORTED_MODULE_6__.FontSizeLargeIcon,\n        testId: "fontSize-large"\n      }, {\n        value: 36,\n        text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.veryLarge"),\n        icon: _components_icons__WEBPACK_IMPORTED_MODULE_6__.FontSizeExtraLargeIcon,\n        testId: "fontSize-veryLarge"\n      }],\n      value: getFormValue(elements, appState, element => {\n        if ((0,_element__WEBPACK_IMPORTED_MODULE_8__.isTextElement)(element)) {\n          return element.fontSize;\n        }\n\n        const boundTextElement = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_10__.getBoundTextElement)(element);\n\n        if (boundTextElement) {\n          return boundTextElement.fontSize;\n        }\n\n        return null;\n      }, element => (0,_element__WEBPACK_IMPORTED_MODULE_8__.isTextElement)(element) || (0,_element_textElement__WEBPACK_IMPORTED_MODULE_10__.getBoundTextElement)(element) !== null, hasSelection => hasSelection ? null : appState.currentItemFontSize || _constants__WEBPACK_IMPORTED_MODULE_7__.DEFAULT_FONT_SIZE),\n      onChange: value => updateData(value)\n    })]\n  })\n});\nconst actionDecreaseFontSize = (0,_register__WEBPACK_IMPORTED_MODULE_18__.register)({\n  name: "decreaseFontSize",\n  trackEvent: false,\n  perform: (elements, appState, value) => {\n    return changeFontSize(elements, appState, element => Math.round( // get previous value before relative increase (doesn\'t work fully\n    // due to rounding and float precision issues)\n    1 / (1 + FONT_SIZE_RELATIVE_INCREASE_STEP) * element.fontSize));\n  },\n  keyTest: event => {\n    return event[_keys__WEBPACK_IMPORTED_MODULE_13__.KEYS.CTRL_OR_CMD] && event.shiftKey && ( // KEYS.COMMA needed for MacOS\n    event.key === _keys__WEBPACK_IMPORTED_MODULE_13__.KEYS.CHEVRON_LEFT || event.key === _keys__WEBPACK_IMPORTED_MODULE_13__.KEYS.COMMA);\n  }\n});\nconst actionIncreaseFontSize = (0,_register__WEBPACK_IMPORTED_MODULE_18__.register)({\n  name: "increaseFontSize",\n  trackEvent: false,\n  perform: (elements, appState, value) => {\n    return changeFontSize(elements, appState, element => Math.round(element.fontSize * (1 + FONT_SIZE_RELATIVE_INCREASE_STEP)));\n  },\n  keyTest: event => {\n    return event[_keys__WEBPACK_IMPORTED_MODULE_13__.KEYS.CTRL_OR_CMD] && event.shiftKey && ( // KEYS.PERIOD needed for MacOS\n    event.key === _keys__WEBPACK_IMPORTED_MODULE_13__.KEYS.CHEVRON_RIGHT || event.key === _keys__WEBPACK_IMPORTED_MODULE_13__.KEYS.PERIOD);\n  }\n});\nconst actionChangeFontFamily = (0,_register__WEBPACK_IMPORTED_MODULE_18__.register)({\n  name: "changeFontFamily",\n  trackEvent: false,\n  perform: (elements, appState, value) => {\n    return {\n      elements: changeProperty(elements, appState, oldElement => {\n        if ((0,_element__WEBPACK_IMPORTED_MODULE_8__.isTextElement)(oldElement)) {\n          const newElement = (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_9__.newElementWith)(oldElement, {\n            fontFamily: value,\n            lineHeight: (0,_element_textElement__WEBPACK_IMPORTED_MODULE_10__.getDefaultLineHeight)(value)\n          });\n          (0,_element__WEBPACK_IMPORTED_MODULE_8__.redrawTextBoundingBox)(newElement, (0,_element_textElement__WEBPACK_IMPORTED_MODULE_10__.getContainerElement)(oldElement));\n          return newElement;\n        }\n\n        return oldElement;\n      }, true),\n      appState: Object.assign(Object.assign({}, appState), {\n        currentItemFontFamily: value\n      }),\n      commitToHistory: true\n    };\n  },\n  PanelComponent: ({\n    elements,\n    appState,\n    updateData\n  }) => {\n    const options = [{\n      value: _constants__WEBPACK_IMPORTED_MODULE_7__.FONT_FAMILY.Virgil,\n      text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.handDrawn"),\n      icon: _components_icons__WEBPACK_IMPORTED_MODULE_6__.FreedrawIcon,\n      testId: "font-family-virgil"\n    }, {\n      value: _constants__WEBPACK_IMPORTED_MODULE_7__.FONT_FAMILY.Helvetica,\n      text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.normal"),\n      icon: _components_icons__WEBPACK_IMPORTED_MODULE_6__.FontFamilyNormalIcon,\n      testId: "font-family-normal"\n    }, {\n      value: _constants__WEBPACK_IMPORTED_MODULE_7__.FONT_FAMILY.Cascadia,\n      text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.code"),\n      icon: _components_icons__WEBPACK_IMPORTED_MODULE_6__.FontFamilyCodeIcon,\n      testId: "font-family-code"\n    }];\n    return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("fieldset", {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("legend", {\n        children: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.fontFamily")\n      }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ButtonIconSelect__WEBPACK_IMPORTED_MODULE_3__.ButtonIconSelect, {\n        group: "font-family",\n        options: options,\n        value: getFormValue(elements, appState, element => {\n          if ((0,_element__WEBPACK_IMPORTED_MODULE_8__.isTextElement)(element)) {\n            return element.fontFamily;\n          }\n\n          const boundTextElement = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_10__.getBoundTextElement)(element);\n\n          if (boundTextElement) {\n            return boundTextElement.fontFamily;\n          }\n\n          return null;\n        }, element => (0,_element__WEBPACK_IMPORTED_MODULE_8__.isTextElement)(element) || (0,_element_textElement__WEBPACK_IMPORTED_MODULE_10__.getBoundTextElement)(element) !== null, hasSelection => hasSelection ? null : appState.currentItemFontFamily || _constants__WEBPACK_IMPORTED_MODULE_7__.DEFAULT_FONT_FAMILY),\n        onChange: value => updateData(value)\n      })]\n    });\n  }\n});\nconst actionChangeTextAlign = (0,_register__WEBPACK_IMPORTED_MODULE_18__.register)({\n  name: "changeTextAlign",\n  trackEvent: false,\n  perform: (elements, appState, value) => {\n    return {\n      elements: changeProperty(elements, appState, oldElement => {\n        if ((0,_element__WEBPACK_IMPORTED_MODULE_8__.isTextElement)(oldElement)) {\n          const newElement = (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_9__.newElementWith)(oldElement, {\n            textAlign: value\n          });\n          (0,_element__WEBPACK_IMPORTED_MODULE_8__.redrawTextBoundingBox)(newElement, (0,_element_textElement__WEBPACK_IMPORTED_MODULE_10__.getContainerElement)(oldElement));\n          return newElement;\n        }\n\n        return oldElement;\n      }, true),\n      appState: Object.assign(Object.assign({}, appState), {\n        currentItemTextAlign: value\n      }),\n      commitToHistory: true\n    };\n  },\n  PanelComponent: ({\n    elements,\n    appState,\n    updateData\n  }) => {\n    return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("fieldset", {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("legend", {\n        children: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.textAlign")\n      }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ButtonIconSelect__WEBPACK_IMPORTED_MODULE_3__.ButtonIconSelect, {\n        group: "text-align",\n        options: [{\n          value: "left",\n          text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.left"),\n          icon: _components_icons__WEBPACK_IMPORTED_MODULE_6__.TextAlignLeftIcon,\n          testId: "align-left"\n        }, {\n          value: "center",\n          text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.center"),\n          icon: _components_icons__WEBPACK_IMPORTED_MODULE_6__.TextAlignCenterIcon,\n          testId: "align-horizontal-center"\n        }, {\n          value: "right",\n          text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.right"),\n          icon: _components_icons__WEBPACK_IMPORTED_MODULE_6__.TextAlignRightIcon,\n          testId: "align-right"\n        }],\n        value: getFormValue(elements, appState, element => {\n          if ((0,_element__WEBPACK_IMPORTED_MODULE_8__.isTextElement)(element)) {\n            return element.textAlign;\n          }\n\n          const boundTextElement = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_10__.getBoundTextElement)(element);\n\n          if (boundTextElement) {\n            return boundTextElement.textAlign;\n          }\n\n          return null;\n        }, element => (0,_element__WEBPACK_IMPORTED_MODULE_8__.isTextElement)(element) || (0,_element_textElement__WEBPACK_IMPORTED_MODULE_10__.getBoundTextElement)(element) !== null, hasSelection => hasSelection ? null : appState.currentItemTextAlign),\n        onChange: value => updateData(value)\n      })]\n    });\n  }\n});\nconst actionChangeVerticalAlign = (0,_register__WEBPACK_IMPORTED_MODULE_18__.register)({\n  name: "changeVerticalAlign",\n  trackEvent: {\n    category: "element"\n  },\n  perform: (elements, appState, value) => {\n    return {\n      elements: changeProperty(elements, appState, oldElement => {\n        if ((0,_element__WEBPACK_IMPORTED_MODULE_8__.isTextElement)(oldElement)) {\n          const newElement = (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_9__.newElementWith)(oldElement, {\n            verticalAlign: value\n          });\n          (0,_element__WEBPACK_IMPORTED_MODULE_8__.redrawTextBoundingBox)(newElement, (0,_element_textElement__WEBPACK_IMPORTED_MODULE_10__.getContainerElement)(oldElement));\n          return newElement;\n        }\n\n        return oldElement;\n      }, true),\n      appState: Object.assign({}, appState),\n      commitToHistory: true\n    };\n  },\n  PanelComponent: ({\n    elements,\n    appState,\n    updateData\n  }) => {\n    return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("fieldset", {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ButtonIconSelect__WEBPACK_IMPORTED_MODULE_3__.ButtonIconSelect, {\n        group: "text-align",\n        options: [{\n          value: _constants__WEBPACK_IMPORTED_MODULE_7__.VERTICAL_ALIGN.TOP,\n          text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.alignTop"),\n          icon: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_icons__WEBPACK_IMPORTED_MODULE_6__.TextAlignTopIcon, {\n            theme: appState.theme\n          }),\n          testId: "align-top"\n        }, {\n          value: _constants__WEBPACK_IMPORTED_MODULE_7__.VERTICAL_ALIGN.MIDDLE,\n          text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.centerVertically"),\n          icon: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_icons__WEBPACK_IMPORTED_MODULE_6__.TextAlignMiddleIcon, {\n            theme: appState.theme\n          }),\n          testId: "align-middle"\n        }, {\n          value: _constants__WEBPACK_IMPORTED_MODULE_7__.VERTICAL_ALIGN.BOTTOM,\n          text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.alignBottom"),\n          icon: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_icons__WEBPACK_IMPORTED_MODULE_6__.TextAlignBottomIcon, {\n            theme: appState.theme\n          }),\n          testId: "align-bottom"\n        }],\n        value: getFormValue(elements, appState, element => {\n          if ((0,_element__WEBPACK_IMPORTED_MODULE_8__.isTextElement)(element) && element.containerId) {\n            return element.verticalAlign;\n          }\n\n          const boundTextElement = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_10__.getBoundTextElement)(element);\n\n          if (boundTextElement) {\n            return boundTextElement.verticalAlign;\n          }\n\n          return null;\n        }, element => (0,_element__WEBPACK_IMPORTED_MODULE_8__.isTextElement)(element) || (0,_element_textElement__WEBPACK_IMPORTED_MODULE_10__.getBoundTextElement)(element) !== null, hasSelection => hasSelection ? null : _constants__WEBPACK_IMPORTED_MODULE_7__.VERTICAL_ALIGN.MIDDLE),\n        onChange: value => updateData(value)\n      })\n    });\n  }\n});\nconst actionChangeRoundness = (0,_register__WEBPACK_IMPORTED_MODULE_18__.register)({\n  name: "changeRoundness",\n  trackEvent: false,\n  perform: (elements, appState, value) => {\n    return {\n      elements: changeProperty(elements, appState, el => (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_9__.newElementWith)(el, {\n        roundness: value === "round" ? {\n          type: (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_11__.isUsingAdaptiveRadius)(el.type) ? _constants__WEBPACK_IMPORTED_MODULE_7__.ROUNDNESS.ADAPTIVE_RADIUS : _constants__WEBPACK_IMPORTED_MODULE_7__.ROUNDNESS.PROPORTIONAL_RADIUS\n        } : null\n      })),\n      appState: Object.assign(Object.assign({}, appState), {\n        currentItemRoundness: value\n      }),\n      commitToHistory: true\n    };\n  },\n  PanelComponent: ({\n    elements,\n    appState,\n    updateData\n  }) => {\n    const targetElements = (0,_scene__WEBPACK_IMPORTED_MODULE_15__.getTargetElements)((0,_element__WEBPACK_IMPORTED_MODULE_8__.getNonDeletedElements)(elements), appState);\n    const hasLegacyRoundness = targetElements.some(el => {\n      var _a;\n\n      return ((_a = el.roundness) === null || _a === void 0 ? void 0 : _a.type) === _constants__WEBPACK_IMPORTED_MODULE_7__.ROUNDNESS.LEGACY;\n    });\n    return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("fieldset", {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("legend", {\n        children: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.edges")\n      }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ButtonIconSelect__WEBPACK_IMPORTED_MODULE_3__.ButtonIconSelect, {\n        group: "edges",\n        options: [{\n          value: "sharp",\n          text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.sharp"),\n          icon: _components_icons__WEBPACK_IMPORTED_MODULE_6__.EdgeSharpIcon\n        }, {\n          value: "round",\n          text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.round"),\n          icon: _components_icons__WEBPACK_IMPORTED_MODULE_6__.EdgeRoundIcon\n        }],\n        value: getFormValue(elements, appState, element => hasLegacyRoundness ? null : element.roundness ? "round" : "sharp", element => element.hasOwnProperty("roundness"), hasSelection => hasSelection ? null : appState.currentItemRoundness),\n        onChange: value => updateData(value)\n      })]\n    });\n  }\n});\nconst actionChangeArrowhead = (0,_register__WEBPACK_IMPORTED_MODULE_18__.register)({\n  name: "changeArrowhead",\n  trackEvent: false,\n  perform: (elements, appState, value) => {\n    return {\n      elements: changeProperty(elements, appState, el => {\n        if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_11__.isLinearElement)(el)) {\n          const {\n            position,\n            type\n          } = value;\n\n          if (position === "start") {\n            const element = (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_9__.newElementWith)(el, {\n              startArrowhead: type\n            });\n            return element;\n          } else if (position === "end") {\n            const element = (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_9__.newElementWith)(el, {\n              endArrowhead: type\n            });\n            return element;\n          }\n        }\n\n        return el;\n      }),\n      appState: Object.assign(Object.assign({}, appState), {\n        [value.position === "start" ? "currentItemStartArrowhead" : "currentItemEndArrowhead"]: value.type\n      }),\n      commitToHistory: true\n    };\n  },\n  PanelComponent: ({\n    elements,\n    appState,\n    updateData\n  }) => {\n    const isRTL = (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.getLanguage)().rtl;\n    return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("fieldset", {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("legend", {\n        children: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.arrowheads")\n      }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n        className: "iconSelectList buttonList"\n      }, {\n        children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_IconPicker__WEBPACK_IMPORTED_MODULE_5__.IconPicker, {\n          label: "arrowhead_start",\n          options: [{\n            value: null,\n            text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.arrowhead_none"),\n            icon: _components_icons__WEBPACK_IMPORTED_MODULE_6__.ArrowheadNoneIcon,\n            keyBinding: "q"\n          }, {\n            value: "arrow",\n            text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.arrowhead_arrow"),\n            icon: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_icons__WEBPACK_IMPORTED_MODULE_6__.ArrowheadArrowIcon, {\n              flip: !isRTL\n            }),\n            keyBinding: "w"\n          }, {\n            value: "bar",\n            text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.arrowhead_bar"),\n            icon: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_icons__WEBPACK_IMPORTED_MODULE_6__.ArrowheadBarIcon, {\n              flip: !isRTL\n            }),\n            keyBinding: "e"\n          }, {\n            value: "dot",\n            text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.arrowhead_dot"),\n            icon: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_icons__WEBPACK_IMPORTED_MODULE_6__.ArrowheadDotIcon, {\n              flip: !isRTL\n            }),\n            keyBinding: "r"\n          }, {\n            value: "triangle",\n            text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.arrowhead_triangle"),\n            icon: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_icons__WEBPACK_IMPORTED_MODULE_6__.ArrowheadTriangleIcon, {\n              flip: !isRTL\n            }),\n            keyBinding: "t"\n          }],\n          value: getFormValue(elements, appState, element => (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_11__.isLinearElement)(element) && (0,_scene__WEBPACK_IMPORTED_MODULE_15__.canHaveArrowheads)(element.type) ? element.startArrowhead : appState.currentItemStartArrowhead, true, appState.currentItemStartArrowhead),\n          onChange: value => updateData({\n            position: "start",\n            type: value\n          })\n        }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_IconPicker__WEBPACK_IMPORTED_MODULE_5__.IconPicker, {\n          label: "arrowhead_end",\n          group: "arrowheads",\n          options: [{\n            value: null,\n            text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.arrowhead_none"),\n            keyBinding: "q",\n            icon: _components_icons__WEBPACK_IMPORTED_MODULE_6__.ArrowheadNoneIcon\n          }, {\n            value: "arrow",\n            text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.arrowhead_arrow"),\n            keyBinding: "w",\n            icon: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_icons__WEBPACK_IMPORTED_MODULE_6__.ArrowheadArrowIcon, {\n              flip: isRTL\n            })\n          }, {\n            value: "bar",\n            text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.arrowhead_bar"),\n            keyBinding: "e",\n            icon: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_icons__WEBPACK_IMPORTED_MODULE_6__.ArrowheadBarIcon, {\n              flip: isRTL\n            })\n          }, {\n            value: "dot",\n            text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.arrowhead_dot"),\n            keyBinding: "r",\n            icon: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_icons__WEBPACK_IMPORTED_MODULE_6__.ArrowheadDotIcon, {\n              flip: isRTL\n            })\n          }, {\n            value: "triangle",\n            text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.arrowhead_triangle"),\n            icon: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_icons__WEBPACK_IMPORTED_MODULE_6__.ArrowheadTriangleIcon, {\n              flip: isRTL\n            }),\n            keyBinding: "t"\n          }],\n          value: getFormValue(elements, appState, element => (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_11__.isLinearElement)(element) && (0,_scene__WEBPACK_IMPORTED_MODULE_15__.canHaveArrowheads)(element.type) ? element.endArrowhead : appState.currentItemEndArrowhead, true, appState.currentItemEndArrowhead),\n          onChange: value => updateData({\n            position: "end",\n            type: value\n          })\n        })]\n      }))]\n    });\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 52136 characters]\n//# sourceURL=webpack-internal:///../../actions/actionProperties.tsx\n');
              }
            ),
            /***/
            "../../actions/actionSelectAll.ts": (
              /*!****************************************!*\
                !*** ../../actions/actionSelectAll.ts ***!
                \****************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "actionSelectAll": () => (/* binding */ actionSelectAll)\n/* harmony export */ });\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./register */ "../../actions/register.ts");\n/* harmony import */ var _groups__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../groups */ "../../groups.ts");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../element/typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../element/linearElementEditor */ "../../element/linearElementEditor.ts");\n/* harmony import */ var _scene_selection__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../scene/selection */ "../../scene/selection.ts");\n\n\n\n\n\n\n\nconst actionSelectAll = (0,_register__WEBPACK_IMPORTED_MODULE_1__.register)({\n  name: "selectAll",\n  trackEvent: {\n    category: "canvas"\n  },\n  perform: (elements, appState, value, app) => {\n    if (appState.editingLinearElement) {\n      return false;\n    }\n\n    const selectedElementIds = (0,_scene_selection__WEBPACK_IMPORTED_MODULE_6__.excludeElementsInFramesFromSelection)(elements.filter(element => !element.isDeleted && !((0,_element__WEBPACK_IMPORTED_MODULE_3__.isTextElement)(element) && element.containerId) && !element.locked)).reduce((map, element) => {\n      map[element.id] = true;\n      return map;\n    }, {});\n    return {\n      appState: Object.assign(Object.assign(Object.assign({}, appState), (0,_groups__WEBPACK_IMPORTED_MODULE_2__.selectGroupsForSelectedElements)({\n        editingGroupId: null,\n        selectedElementIds\n      }, (0,_element__WEBPACK_IMPORTED_MODULE_3__.getNonDeletedElements)(elements), appState, app)), {\n        selectedLinearElement: // single linear element selected\n        Object.keys(selectedElementIds).length === 1 && (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_4__.isLinearElement)(elements[0]) ? new _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_5__.LinearElementEditor(elements[0], app.scene) : null\n      }),\n      commitToHistory: true\n    };\n  },\n  contextItemLabel: "labels.selectAll",\n  keyTest: event => event[_keys__WEBPACK_IMPORTED_MODULE_0__.KEYS.CTRL_OR_CMD] && event.key === _keys__WEBPACK_IMPORTED_MODULE_0__.KEYS.A\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vYWN0aW9ucy9hY3Rpb25TZWxlY3RBbGwudHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBK0I7QUFDTztBQUNzQjtBQUNNO0FBQ1Y7QUFDYTtBQUNLO0FBQ25FLHdCQUF3QixtREFBUTtBQUN2QztBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsK0JBQStCLHNGQUFvQyxvREFBb0QsdURBQWE7QUFDcEk7QUFDQTtBQUNBLEtBQUssSUFBSTtBQUNUO0FBQ0EsNERBQTRELGFBQWEsd0VBQStCO0FBQ3hHO0FBQ0E7QUFDQSxPQUFPLEVBQUUsK0RBQXFCO0FBQzlCO0FBQ0Esd0RBQXdELG9FQUFlLG9CQUFvQiw2RUFBbUI7QUFDOUcsT0FBTztBQUNQO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSwwQkFBMEIsbURBQWdCLG1CQUFtQix5Q0FBTTtBQUNuRSxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2FjdGlvbnMvYWN0aW9uU2VsZWN0QWxsLnRzPzE3MTAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgS0VZUyB9IGZyb20gXCIuLi9rZXlzXCI7XG5pbXBvcnQgeyByZWdpc3RlciB9IGZyb20gXCIuL3JlZ2lzdGVyXCI7XG5pbXBvcnQgeyBzZWxlY3RHcm91cHNGb3JTZWxlY3RlZEVsZW1lbnRzIH0gZnJvbSBcIi4uL2dyb3Vwc1wiO1xuaW1wb3J0IHsgZ2V0Tm9uRGVsZXRlZEVsZW1lbnRzLCBpc1RleHRFbGVtZW50IH0gZnJvbSBcIi4uL2VsZW1lbnRcIjtcbmltcG9ydCB7IGlzTGluZWFyRWxlbWVudCB9IGZyb20gXCIuLi9lbGVtZW50L3R5cGVDaGVja3NcIjtcbmltcG9ydCB7IExpbmVhckVsZW1lbnRFZGl0b3IgfSBmcm9tIFwiLi4vZWxlbWVudC9saW5lYXJFbGVtZW50RWRpdG9yXCI7XG5pbXBvcnQgeyBleGNsdWRlRWxlbWVudHNJbkZyYW1lc0Zyb21TZWxlY3Rpb24gfSBmcm9tIFwiLi4vc2NlbmUvc2VsZWN0aW9uXCI7XG5leHBvcnQgY29uc3QgYWN0aW9uU2VsZWN0QWxsID0gcmVnaXN0ZXIoe1xuICBuYW1lOiBcInNlbGVjdEFsbFwiLFxuICB0cmFja0V2ZW50OiB7XG4gICAgY2F0ZWdvcnk6IFwiY2FudmFzXCJcbiAgfSxcbiAgcGVyZm9ybTogKGVsZW1lbnRzLCBhcHBTdGF0ZSwgdmFsdWUsIGFwcCkgPT4ge1xuICAgIGlmIChhcHBTdGF0ZS5lZGl0aW5nTGluZWFyRWxlbWVudCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudElkcyA9IGV4Y2x1ZGVFbGVtZW50c0luRnJhbWVzRnJvbVNlbGVjdGlvbihlbGVtZW50cy5maWx0ZXIoZWxlbWVudCA9PiAhZWxlbWVudC5pc0RlbGV0ZWQgJiYgIShpc1RleHRFbGVtZW50KGVsZW1lbnQpICYmIGVsZW1lbnQuY29udGFpbmVySWQpICYmICFlbGVtZW50LmxvY2tlZCkpLnJlZHVjZSgobWFwLCBlbGVtZW50KSA9PiB7XG4gICAgICBtYXBbZWxlbWVudC5pZF0gPSB0cnVlO1xuICAgICAgcmV0dXJuIG1hcDtcbiAgICB9LCB7fSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFwcFN0YXRlOiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgYXBwU3RhdGUpLCBzZWxlY3RHcm91cHNGb3JTZWxlY3RlZEVsZW1lbnRzKHtcbiAgICAgICAgZWRpdGluZ0dyb3VwSWQ6IG51bGwsXG4gICAgICAgIHNlbGVjdGVkRWxlbWVudElkc1xuICAgICAgfSwgZ2V0Tm9uRGVsZXRlZEVsZW1lbnRzKGVsZW1lbnRzKSwgYXBwU3RhdGUsIGFwcCkpLCB7XG4gICAgICAgIHNlbGVjdGVkTGluZWFyRWxlbWVudDogLy8gc2luZ2xlIGxpbmVhciBlbGVtZW50IHNlbGVjdGVkXG4gICAgICAgIE9iamVjdC5rZXlzKHNlbGVjdGVkRWxlbWVudElkcykubGVuZ3RoID09PSAxICYmIGlzTGluZWFyRWxlbWVudChlbGVtZW50c1swXSkgPyBuZXcgTGluZWFyRWxlbWVudEVkaXRvcihlbGVtZW50c1swXSwgYXBwLnNjZW5lKSA6IG51bGxcbiAgICAgIH0pLFxuICAgICAgY29tbWl0VG9IaXN0b3J5OiB0cnVlXG4gICAgfTtcbiAgfSxcbiAgY29udGV4dEl0ZW1MYWJlbDogXCJsYWJlbHMuc2VsZWN0QWxsXCIsXG4gIGtleVRlc3Q6IGV2ZW50ID0+IGV2ZW50W0tFWVMuQ1RSTF9PUl9DTURdICYmIGV2ZW50LmtleSA9PT0gS0VZUy5BXG59KTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../actions/actionSelectAll.ts\n');
              }
            ),
            /***/
            "../../actions/actionStyles.ts": (
              /*!*************************************!*\
                !*** ../../actions/actionStyles.ts ***!
                \*************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "actionCopyStyles": () => (/* binding */ actionCopyStyles),\n/* harmony export */   "actionPasteStyles": () => (/* binding */ actionPasteStyles),\n/* harmony export */   "copiedStyles": () => (/* binding */ copiedStyles)\n/* harmony export */ });\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./register */ "../../actions/register.ts");\n/* harmony import */ var _element_mutateElement__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../element/mutateElement */ "../../element/mutateElement.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _element_textElement__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../element/textElement */ "../../element/textElement.ts");\n/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../element/typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../scene */ "../../scene/index.ts");\n\n\n\n\n\n\n\n\n // `copiedStyles` is exported only for tests.\n\nlet copiedStyles = "{}";\nconst actionCopyStyles = (0,_register__WEBPACK_IMPORTED_MODULE_3__.register)({\n  name: "copyStyles",\n  trackEvent: {\n    category: "element"\n  },\n  perform: (elements, appState) => {\n    const elementsCopied = [];\n    const element = elements.find(el => appState.selectedElementIds[el.id]);\n    elementsCopied.push(element);\n\n    if (element && (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_7__.hasBoundTextElement)(element)) {\n      const boundTextElement = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_6__.getBoundTextElement)(element);\n      elementsCopied.push(boundTextElement);\n    }\n\n    if (element) {\n      copiedStyles = JSON.stringify(elementsCopied);\n    }\n\n    return {\n      appState: Object.assign(Object.assign({}, appState), {\n        toast: {\n          message: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("toast.copyStyles")\n        }\n      }),\n      commitToHistory: false\n    };\n  },\n  contextItemLabel: "labels.copyStyles",\n  keyTest: event => event[_keys__WEBPACK_IMPORTED_MODULE_1__.KEYS.CTRL_OR_CMD] && event.altKey && event.code === _keys__WEBPACK_IMPORTED_MODULE_1__.CODES.C\n});\nconst actionPasteStyles = (0,_register__WEBPACK_IMPORTED_MODULE_3__.register)({\n  name: "pasteStyles",\n  trackEvent: {\n    category: "element"\n  },\n  perform: (elements, appState) => {\n    const elementsCopied = JSON.parse(copiedStyles);\n    const pastedElement = elementsCopied[0];\n    const boundTextElement = elementsCopied[1];\n\n    if (!(0,_element__WEBPACK_IMPORTED_MODULE_0__.isExcalidrawElement)(pastedElement)) {\n      return {\n        elements,\n        commitToHistory: false\n      };\n    }\n\n    const selectedElements = (0,_scene__WEBPACK_IMPORTED_MODULE_8__.getSelectedElements)(elements, appState, {\n      includeBoundTextElement: true\n    });\n    const selectedElementIds = selectedElements.map(element => element.id);\n    return {\n      elements: elements.map(element => {\n        if (selectedElementIds.includes(element.id)) {\n          let elementStylesToCopyFrom = pastedElement;\n\n          if ((0,_element__WEBPACK_IMPORTED_MODULE_0__.isTextElement)(element) && element.containerId) {\n            elementStylesToCopyFrom = boundTextElement;\n          }\n\n          if (!elementStylesToCopyFrom) {\n            return element;\n          }\n\n          let newElement = (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_4__.newElementWith)(element, {\n            backgroundColor: elementStylesToCopyFrom === null || elementStylesToCopyFrom === void 0 ? void 0 : elementStylesToCopyFrom.backgroundColor,\n            strokeWidth: elementStylesToCopyFrom === null || elementStylesToCopyFrom === void 0 ? void 0 : elementStylesToCopyFrom.strokeWidth,\n            strokeColor: elementStylesToCopyFrom === null || elementStylesToCopyFrom === void 0 ? void 0 : elementStylesToCopyFrom.strokeColor,\n            strokeStyle: elementStylesToCopyFrom === null || elementStylesToCopyFrom === void 0 ? void 0 : elementStylesToCopyFrom.strokeStyle,\n            fillStyle: elementStylesToCopyFrom === null || elementStylesToCopyFrom === void 0 ? void 0 : elementStylesToCopyFrom.fillStyle,\n            opacity: elementStylesToCopyFrom === null || elementStylesToCopyFrom === void 0 ? void 0 : elementStylesToCopyFrom.opacity,\n            roughness: elementStylesToCopyFrom === null || elementStylesToCopyFrom === void 0 ? void 0 : elementStylesToCopyFrom.roughness,\n            roundness: elementStylesToCopyFrom.roundness ? (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_7__.canApplyRoundnessTypeToElement)(elementStylesToCopyFrom.roundness.type, element) ? elementStylesToCopyFrom.roundness : (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_7__.getDefaultRoundnessTypeForElement)(element) : null\n          });\n\n          if ((0,_element__WEBPACK_IMPORTED_MODULE_0__.isTextElement)(newElement)) {\n            const fontSize = elementStylesToCopyFrom.fontSize || _constants__WEBPACK_IMPORTED_MODULE_5__.DEFAULT_FONT_SIZE;\n            const fontFamily = elementStylesToCopyFrom.fontFamily || _constants__WEBPACK_IMPORTED_MODULE_5__.DEFAULT_FONT_FAMILY;\n            newElement = (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_4__.newElementWith)(newElement, {\n              fontSize,\n              fontFamily,\n              textAlign: elementStylesToCopyFrom.textAlign || _constants__WEBPACK_IMPORTED_MODULE_5__.DEFAULT_TEXT_ALIGN,\n              lineHeight: elementStylesToCopyFrom.lineHeight || (0,_element_textElement__WEBPACK_IMPORTED_MODULE_6__.getDefaultLineHeight)(fontFamily)\n            });\n            let container = null;\n\n            if (newElement.containerId) {\n              container = selectedElements.find(element => (0,_element__WEBPACK_IMPORTED_MODULE_0__.isTextElement)(newElement) && element.id === newElement.containerId) || null;\n            }\n\n            (0,_element__WEBPACK_IMPORTED_MODULE_0__.redrawTextBoundingBox)(newElement, container);\n          }\n\n          if (newElement.type === "arrow" && (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_7__.isArrowElement)(elementStylesToCopyFrom)) {\n            newElement = (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_4__.newElementWith)(newElement, {\n              startArrowhead: elementStylesToCopyFrom.startArrowhead,\n              endArrowhead: elementStylesToCopyFrom.endArrowhead\n            });\n          }\n\n          if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_7__.isFrameElement)(element)) {\n            newElement = (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_4__.newElementWith)(newElement, {\n              roundness: null,\n              backgroundColor: "transparent"\n            });\n          }\n\n          return newElement;\n        }\n\n        return element;\n      }),\n      commitToHistory: true\n    };\n  },\n  contextItemLabel: "labels.pasteStyles",\n  keyTest: event => event[_keys__WEBPACK_IMPORTED_MODULE_1__.KEYS.CTRL_OR_CMD] && event.altKey && event.code === _keys__WEBPACK_IMPORTED_MODULE_1__.CODES.V\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 9128 characters]\n//# sourceURL=webpack-internal:///../../actions/actionStyles.ts\n');
              }
            ),
            /***/
            "../../actions/actionToggleGridMode.tsx": (
              /*!**********************************************!*\
                !*** ../../actions/actionToggleGridMode.tsx ***!
                \**********************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "actionToggleGridMode": () => (/* binding */ actionToggleGridMode)\n/* harmony export */ });\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./register */ "../../actions/register.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n\n\n\nconst actionToggleGridMode = (0,_register__WEBPACK_IMPORTED_MODULE_1__.register)({\n  name: "gridMode",\n  viewMode: true,\n  trackEvent: {\n    category: "canvas",\n    predicate: appState => !appState.gridSize\n  },\n\n  perform(elements, appState) {\n    return {\n      appState: Object.assign(Object.assign({}, appState), {\n        gridSize: this.checked(appState) ? null : _constants__WEBPACK_IMPORTED_MODULE_2__.GRID_SIZE,\n        objectsSnapModeEnabled: false\n      }),\n      commitToHistory: false\n    };\n  },\n\n  checked: appState => appState.gridSize !== null,\n  predicate: (element, appState, props) => {\n    return typeof props.gridModeEnabled === "undefined";\n  },\n  contextItemLabel: "labels.showGrid",\n  keyTest: event => event[_keys__WEBPACK_IMPORTED_MODULE_0__.KEYS.CTRL_OR_CMD] && event.code === _keys__WEBPACK_IMPORTED_MODULE_0__.CODES.QUOTE\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vYWN0aW9ucy9hY3Rpb25Ub2dnbGVHcmlkTW9kZS50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFzQztBQUNBO0FBQ0c7QUFDbEMsNkJBQTZCLG1EQUFRO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSw4Q0FBOEM7QUFDOUMsa0RBQWtELGlEQUFTO0FBQzNEO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLDBCQUEwQixtREFBZ0Isb0JBQW9CLDhDQUFXO0FBQ3pFLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vYWN0aW9ucy9hY3Rpb25Ub2dnbGVHcmlkTW9kZS50c3g/YjBlNCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDT0RFUywgS0VZUyB9IGZyb20gXCIuLi9rZXlzXCI7XG5pbXBvcnQgeyByZWdpc3RlciB9IGZyb20gXCIuL3JlZ2lzdGVyXCI7XG5pbXBvcnQgeyBHUklEX1NJWkUgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5leHBvcnQgY29uc3QgYWN0aW9uVG9nZ2xlR3JpZE1vZGUgPSByZWdpc3Rlcih7XG4gIG5hbWU6IFwiZ3JpZE1vZGVcIixcbiAgdmlld01vZGU6IHRydWUsXG4gIHRyYWNrRXZlbnQ6IHtcbiAgICBjYXRlZ29yeTogXCJjYW52YXNcIixcbiAgICBwcmVkaWNhdGU6IGFwcFN0YXRlID0+ICFhcHBTdGF0ZS5ncmlkU2l6ZVxuICB9LFxuXG4gIHBlcmZvcm0oZWxlbWVudHMsIGFwcFN0YXRlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFwcFN0YXRlOiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGFwcFN0YXRlKSwge1xuICAgICAgICBncmlkU2l6ZTogdGhpcy5jaGVja2VkKGFwcFN0YXRlKSA/IG51bGwgOiBHUklEX1NJWkUsXG4gICAgICAgIG9iamVjdHNTbmFwTW9kZUVuYWJsZWQ6IGZhbHNlXG4gICAgICB9KSxcbiAgICAgIGNvbW1pdFRvSGlzdG9yeTogZmFsc2VcbiAgICB9O1xuICB9LFxuXG4gIGNoZWNrZWQ6IGFwcFN0YXRlID0+IGFwcFN0YXRlLmdyaWRTaXplICE9PSBudWxsLFxuICBwcmVkaWNhdGU6IChlbGVtZW50LCBhcHBTdGF0ZSwgcHJvcHMpID0+IHtcbiAgICByZXR1cm4gdHlwZW9mIHByb3BzLmdyaWRNb2RlRW5hYmxlZCA9PT0gXCJ1bmRlZmluZWRcIjtcbiAgfSxcbiAgY29udGV4dEl0ZW1MYWJlbDogXCJsYWJlbHMuc2hvd0dyaWRcIixcbiAga2V5VGVzdDogZXZlbnQgPT4gZXZlbnRbS0VZUy5DVFJMX09SX0NNRF0gJiYgZXZlbnQuY29kZSA9PT0gQ09ERVMuUVVPVEVcbn0pOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../actions/actionToggleGridMode.tsx\n');
              }
            ),
            /***/
            "../../actions/actionToggleObjectsSnapMode.tsx": (
              /*!*****************************************************!*\
                !*** ../../actions/actionToggleObjectsSnapMode.tsx ***!
                \*****************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "actionToggleObjectsSnapMode": () => (/* binding */ actionToggleObjectsSnapMode)\n/* harmony export */ });\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./register */ "../../actions/register.ts");\n\n\nconst actionToggleObjectsSnapMode = (0,_register__WEBPACK_IMPORTED_MODULE_1__.register)({\n  name: "objectsSnapMode",\n  viewMode: true,\n  trackEvent: {\n    category: "canvas",\n    predicate: appState => !appState.objectsSnapModeEnabled\n  },\n\n  perform(elements, appState) {\n    return {\n      appState: Object.assign(Object.assign({}, appState), {\n        objectsSnapModeEnabled: !this.checked(appState),\n        gridSize: null\n      }),\n      commitToHistory: false\n    };\n  },\n\n  checked: appState => appState.objectsSnapModeEnabled,\n  predicate: (elements, appState, appProps) => {\n    return typeof appProps.objectsSnapModeEnabled === "undefined";\n  },\n  contextItemLabel: "buttons.objectsSnapMode",\n  keyTest: event => !event[_keys__WEBPACK_IMPORTED_MODULE_0__.KEYS.CTRL_OR_CMD] && event.altKey && event.code === _keys__WEBPACK_IMPORTED_MODULE_0__.CODES.S\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vYWN0aW9ucy9hY3Rpb25Ub2dnbGVPYmplY3RzU25hcE1vZGUudHN4LmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUFzQztBQUNBO0FBQy9CLG9DQUFvQyxtREFBUTtBQUNuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsOENBQThDO0FBQzlDO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsMkJBQTJCLG1EQUFnQixvQ0FBb0MsMENBQU87QUFDdEYsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9hY3Rpb25zL2FjdGlvblRvZ2dsZU9iamVjdHNTbmFwTW9kZS50c3g/MmQ5ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDT0RFUywgS0VZUyB9IGZyb20gXCIuLi9rZXlzXCI7XG5pbXBvcnQgeyByZWdpc3RlciB9IGZyb20gXCIuL3JlZ2lzdGVyXCI7XG5leHBvcnQgY29uc3QgYWN0aW9uVG9nZ2xlT2JqZWN0c1NuYXBNb2RlID0gcmVnaXN0ZXIoe1xuICBuYW1lOiBcIm9iamVjdHNTbmFwTW9kZVwiLFxuICB2aWV3TW9kZTogdHJ1ZSxcbiAgdHJhY2tFdmVudDoge1xuICAgIGNhdGVnb3J5OiBcImNhbnZhc1wiLFxuICAgIHByZWRpY2F0ZTogYXBwU3RhdGUgPT4gIWFwcFN0YXRlLm9iamVjdHNTbmFwTW9kZUVuYWJsZWRcbiAgfSxcblxuICBwZXJmb3JtKGVsZW1lbnRzLCBhcHBTdGF0ZSkge1xuICAgIHJldHVybiB7XG4gICAgICBhcHBTdGF0ZTogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBhcHBTdGF0ZSksIHtcbiAgICAgICAgb2JqZWN0c1NuYXBNb2RlRW5hYmxlZDogIXRoaXMuY2hlY2tlZChhcHBTdGF0ZSksXG4gICAgICAgIGdyaWRTaXplOiBudWxsXG4gICAgICB9KSxcbiAgICAgIGNvbW1pdFRvSGlzdG9yeTogZmFsc2VcbiAgICB9O1xuICB9LFxuXG4gIGNoZWNrZWQ6IGFwcFN0YXRlID0+IGFwcFN0YXRlLm9iamVjdHNTbmFwTW9kZUVuYWJsZWQsXG4gIHByZWRpY2F0ZTogKGVsZW1lbnRzLCBhcHBTdGF0ZSwgYXBwUHJvcHMpID0+IHtcbiAgICByZXR1cm4gdHlwZW9mIGFwcFByb3BzLm9iamVjdHNTbmFwTW9kZUVuYWJsZWQgPT09IFwidW5kZWZpbmVkXCI7XG4gIH0sXG4gIGNvbnRleHRJdGVtTGFiZWw6IFwiYnV0dG9ucy5vYmplY3RzU25hcE1vZGVcIixcbiAga2V5VGVzdDogZXZlbnQgPT4gIWV2ZW50W0tFWVMuQ1RSTF9PUl9DTURdICYmIGV2ZW50LmFsdEtleSAmJiBldmVudC5jb2RlID09PSBDT0RFUy5TXG59KTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../actions/actionToggleObjectsSnapMode.tsx\n');
              }
            ),
            /***/
            "../../actions/actionToggleStats.tsx": (
              /*!*******************************************!*\
                !*** ../../actions/actionToggleStats.tsx ***!
                \*******************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "actionToggleStats": () => (/* binding */ actionToggleStats)\n/* harmony export */ });\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./register */ "../../actions/register.ts");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n\n\nconst actionToggleStats = (0,_register__WEBPACK_IMPORTED_MODULE_0__.register)({\n  name: "stats",\n  viewMode: true,\n  trackEvent: {\n    category: "menu"\n  },\n\n  perform(elements, appState) {\n    return {\n      appState: Object.assign(Object.assign({}, appState), {\n        showStats: !this.checked(appState)\n      }),\n      commitToHistory: false\n    };\n  },\n\n  checked: appState => appState.showStats,\n  contextItemLabel: "stats.title",\n  keyTest: event => !event[_keys__WEBPACK_IMPORTED_MODULE_1__.KEYS.CTRL_OR_CMD] && event.altKey && event.code === _keys__WEBPACK_IMPORTED_MODULE_1__.CODES.SLASH\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vYWN0aW9ucy9hY3Rpb25Ub2dnbGVTdGF0cy50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQXNDO0FBQ0E7QUFDL0IsMEJBQTBCLG1EQUFRO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsOENBQThDO0FBQzlDO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSwyQkFBMkIsbURBQWdCLG9DQUFvQyw4Q0FBVztBQUMxRixDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2FjdGlvbnMvYWN0aW9uVG9nZ2xlU3RhdHMudHN4PzBlNTIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVnaXN0ZXIgfSBmcm9tIFwiLi9yZWdpc3RlclwiO1xuaW1wb3J0IHsgQ09ERVMsIEtFWVMgfSBmcm9tIFwiLi4va2V5c1wiO1xuZXhwb3J0IGNvbnN0IGFjdGlvblRvZ2dsZVN0YXRzID0gcmVnaXN0ZXIoe1xuICBuYW1lOiBcInN0YXRzXCIsXG4gIHZpZXdNb2RlOiB0cnVlLFxuICB0cmFja0V2ZW50OiB7XG4gICAgY2F0ZWdvcnk6IFwibWVudVwiXG4gIH0sXG5cbiAgcGVyZm9ybShlbGVtZW50cywgYXBwU3RhdGUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYXBwU3RhdGU6IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgYXBwU3RhdGUpLCB7XG4gICAgICAgIHNob3dTdGF0czogIXRoaXMuY2hlY2tlZChhcHBTdGF0ZSlcbiAgICAgIH0pLFxuICAgICAgY29tbWl0VG9IaXN0b3J5OiBmYWxzZVxuICAgIH07XG4gIH0sXG5cbiAgY2hlY2tlZDogYXBwU3RhdGUgPT4gYXBwU3RhdGUuc2hvd1N0YXRzLFxuICBjb250ZXh0SXRlbUxhYmVsOiBcInN0YXRzLnRpdGxlXCIsXG4gIGtleVRlc3Q6IGV2ZW50ID0+ICFldmVudFtLRVlTLkNUUkxfT1JfQ01EXSAmJiBldmVudC5hbHRLZXkgJiYgZXZlbnQuY29kZSA9PT0gQ09ERVMuU0xBU0hcbn0pOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../actions/actionToggleStats.tsx\n');
              }
            ),
            /***/
            "../../actions/actionToggleViewMode.tsx": (
              /*!**********************************************!*\
                !*** ../../actions/actionToggleViewMode.tsx ***!
                \**********************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "actionToggleViewMode": () => (/* binding */ actionToggleViewMode)\n/* harmony export */ });\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./register */ "../../actions/register.ts");\n\n\nconst actionToggleViewMode = (0,_register__WEBPACK_IMPORTED_MODULE_1__.register)({\n  name: "viewMode",\n  viewMode: true,\n  trackEvent: {\n    category: "canvas",\n    predicate: appState => !appState.viewModeEnabled\n  },\n\n  perform(elements, appState) {\n    return {\n      appState: Object.assign(Object.assign({}, appState), {\n        viewModeEnabled: !this.checked(appState)\n      }),\n      commitToHistory: false\n    };\n  },\n\n  checked: appState => appState.viewModeEnabled,\n  predicate: (elements, appState, appProps) => {\n    return typeof appProps.viewModeEnabled === "undefined";\n  },\n  contextItemLabel: "labels.viewMode",\n  keyTest: event => !event[_keys__WEBPACK_IMPORTED_MODULE_0__.KEYS.CTRL_OR_CMD] && event.altKey && event.code === _keys__WEBPACK_IMPORTED_MODULE_0__.CODES.R\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vYWN0aW9ucy9hY3Rpb25Ub2dnbGVWaWV3TW9kZS50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQXNDO0FBQ0E7QUFDL0IsNkJBQTZCLG1EQUFRO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSw4Q0FBOEM7QUFDOUM7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsMkJBQTJCLG1EQUFnQixvQ0FBb0MsMENBQU87QUFDdEYsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9hY3Rpb25zL2FjdGlvblRvZ2dsZVZpZXdNb2RlLnRzeD9iZWNiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENPREVTLCBLRVlTIH0gZnJvbSBcIi4uL2tleXNcIjtcbmltcG9ydCB7IHJlZ2lzdGVyIH0gZnJvbSBcIi4vcmVnaXN0ZXJcIjtcbmV4cG9ydCBjb25zdCBhY3Rpb25Ub2dnbGVWaWV3TW9kZSA9IHJlZ2lzdGVyKHtcbiAgbmFtZTogXCJ2aWV3TW9kZVwiLFxuICB2aWV3TW9kZTogdHJ1ZSxcbiAgdHJhY2tFdmVudDoge1xuICAgIGNhdGVnb3J5OiBcImNhbnZhc1wiLFxuICAgIHByZWRpY2F0ZTogYXBwU3RhdGUgPT4gIWFwcFN0YXRlLnZpZXdNb2RlRW5hYmxlZFxuICB9LFxuXG4gIHBlcmZvcm0oZWxlbWVudHMsIGFwcFN0YXRlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFwcFN0YXRlOiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGFwcFN0YXRlKSwge1xuICAgICAgICB2aWV3TW9kZUVuYWJsZWQ6ICF0aGlzLmNoZWNrZWQoYXBwU3RhdGUpXG4gICAgICB9KSxcbiAgICAgIGNvbW1pdFRvSGlzdG9yeTogZmFsc2VcbiAgICB9O1xuICB9LFxuXG4gIGNoZWNrZWQ6IGFwcFN0YXRlID0+IGFwcFN0YXRlLnZpZXdNb2RlRW5hYmxlZCxcbiAgcHJlZGljYXRlOiAoZWxlbWVudHMsIGFwcFN0YXRlLCBhcHBQcm9wcykgPT4ge1xuICAgIHJldHVybiB0eXBlb2YgYXBwUHJvcHMudmlld01vZGVFbmFibGVkID09PSBcInVuZGVmaW5lZFwiO1xuICB9LFxuICBjb250ZXh0SXRlbUxhYmVsOiBcImxhYmVscy52aWV3TW9kZVwiLFxuICBrZXlUZXN0OiBldmVudCA9PiAhZXZlbnRbS0VZUy5DVFJMX09SX0NNRF0gJiYgZXZlbnQuYWx0S2V5ICYmIGV2ZW50LmNvZGUgPT09IENPREVTLlJcbn0pOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../actions/actionToggleViewMode.tsx\n');
              }
            ),
            /***/
            "../../actions/actionToggleZenMode.tsx": (
              /*!*********************************************!*\
                !*** ../../actions/actionToggleZenMode.tsx ***!
                \*********************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "actionToggleZenMode": () => (/* binding */ actionToggleZenMode)\n/* harmony export */ });\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./register */ "../../actions/register.ts");\n\n\nconst actionToggleZenMode = (0,_register__WEBPACK_IMPORTED_MODULE_1__.register)({\n  name: "zenMode",\n  viewMode: true,\n  trackEvent: {\n    category: "canvas",\n    predicate: appState => !appState.zenModeEnabled\n  },\n\n  perform(elements, appState) {\n    return {\n      appState: Object.assign(Object.assign({}, appState), {\n        zenModeEnabled: !this.checked(appState)\n      }),\n      commitToHistory: false\n    };\n  },\n\n  checked: appState => appState.zenModeEnabled,\n  predicate: (elements, appState, appProps) => {\n    return typeof appProps.zenModeEnabled === "undefined";\n  },\n  contextItemLabel: "buttons.zenMode",\n  keyTest: event => !event[_keys__WEBPACK_IMPORTED_MODULE_0__.KEYS.CTRL_OR_CMD] && event.altKey && event.code === _keys__WEBPACK_IMPORTED_MODULE_0__.CODES.Z\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vYWN0aW9ucy9hY3Rpb25Ub2dnbGVaZW5Nb2RlLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBc0M7QUFDQTtBQUMvQiw0QkFBNEIsbURBQVE7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLDhDQUE4QztBQUM5QztBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSwyQkFBMkIsbURBQWdCLG9DQUFvQywwQ0FBTztBQUN0RixDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2FjdGlvbnMvYWN0aW9uVG9nZ2xlWmVuTW9kZS50c3g/MDg2MyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDT0RFUywgS0VZUyB9IGZyb20gXCIuLi9rZXlzXCI7XG5pbXBvcnQgeyByZWdpc3RlciB9IGZyb20gXCIuL3JlZ2lzdGVyXCI7XG5leHBvcnQgY29uc3QgYWN0aW9uVG9nZ2xlWmVuTW9kZSA9IHJlZ2lzdGVyKHtcbiAgbmFtZTogXCJ6ZW5Nb2RlXCIsXG4gIHZpZXdNb2RlOiB0cnVlLFxuICB0cmFja0V2ZW50OiB7XG4gICAgY2F0ZWdvcnk6IFwiY2FudmFzXCIsXG4gICAgcHJlZGljYXRlOiBhcHBTdGF0ZSA9PiAhYXBwU3RhdGUuemVuTW9kZUVuYWJsZWRcbiAgfSxcblxuICBwZXJmb3JtKGVsZW1lbnRzLCBhcHBTdGF0ZSkge1xuICAgIHJldHVybiB7XG4gICAgICBhcHBTdGF0ZTogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBhcHBTdGF0ZSksIHtcbiAgICAgICAgemVuTW9kZUVuYWJsZWQ6ICF0aGlzLmNoZWNrZWQoYXBwU3RhdGUpXG4gICAgICB9KSxcbiAgICAgIGNvbW1pdFRvSGlzdG9yeTogZmFsc2VcbiAgICB9O1xuICB9LFxuXG4gIGNoZWNrZWQ6IGFwcFN0YXRlID0+IGFwcFN0YXRlLnplbk1vZGVFbmFibGVkLFxuICBwcmVkaWNhdGU6IChlbGVtZW50cywgYXBwU3RhdGUsIGFwcFByb3BzKSA9PiB7XG4gICAgcmV0dXJuIHR5cGVvZiBhcHBQcm9wcy56ZW5Nb2RlRW5hYmxlZCA9PT0gXCJ1bmRlZmluZWRcIjtcbiAgfSxcbiAgY29udGV4dEl0ZW1MYWJlbDogXCJidXR0b25zLnplbk1vZGVcIixcbiAga2V5VGVzdDogZXZlbnQgPT4gIWV2ZW50W0tFWVMuQ1RSTF9PUl9DTURdICYmIGV2ZW50LmFsdEtleSAmJiBldmVudC5jb2RlID09PSBDT0RFUy5aXG59KTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../actions/actionToggleZenMode.tsx\n');
              }
            ),
            /***/
            "../../actions/actionZindex.tsx": (
              /*!**************************************!*\
                !*** ../../actions/actionZindex.tsx ***!
                \**************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "actionBringForward": () => (/* binding */ actionBringForward),\n/* harmony export */   "actionBringToFront": () => (/* binding */ actionBringToFront),\n/* harmony export */   "actionSendBackward": () => (/* binding */ actionSendBackward),\n/* harmony export */   "actionSendToBack": () => (/* binding */ actionSendToBack)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _zindex__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../zindex */ "../../zindex.ts");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./register */ "../../actions/register.ts");\n/* harmony import */ var _components_icons__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../components/icons */ "../../components/icons.tsx");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n\n\n\n\n\n\n\n\n\nconst actionSendBackward = (0,_register__WEBPACK_IMPORTED_MODULE_6__.register)({\n  name: "sendBackward",\n  trackEvent: {\n    category: "element"\n  },\n  perform: (elements, appState) => {\n    return {\n      elements: (0,_zindex__WEBPACK_IMPORTED_MODULE_2__.moveOneLeft)(elements, appState),\n      appState,\n      commitToHistory: true\n    };\n  },\n  contextItemLabel: "labels.sendBackward",\n  keyPriority: 40,\n  keyTest: event => event[_keys__WEBPACK_IMPORTED_MODULE_3__.KEYS.CTRL_OR_CMD] && !event.shiftKey && event.code === _keys__WEBPACK_IMPORTED_MODULE_3__.CODES.BRACKET_LEFT,\n  PanelComponent: ({\n    updateData,\n    appState\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("button", Object.assign({\n    type: "button",\n    className: "zIndexButton",\n    onClick: () => updateData(null),\n    title: `${(0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("labels.sendBackward")} \u2014 ${(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+[")}`\n  }, {\n    children: _components_icons__WEBPACK_IMPORTED_MODULE_7__.SendBackwardIcon\n  }))\n});\nconst actionBringForward = (0,_register__WEBPACK_IMPORTED_MODULE_6__.register)({\n  name: "bringForward",\n  trackEvent: {\n    category: "element"\n  },\n  perform: (elements, appState) => {\n    return {\n      elements: (0,_zindex__WEBPACK_IMPORTED_MODULE_2__.moveOneRight)(elements, appState),\n      appState,\n      commitToHistory: true\n    };\n  },\n  contextItemLabel: "labels.bringForward",\n  keyPriority: 40,\n  keyTest: event => event[_keys__WEBPACK_IMPORTED_MODULE_3__.KEYS.CTRL_OR_CMD] && !event.shiftKey && event.code === _keys__WEBPACK_IMPORTED_MODULE_3__.CODES.BRACKET_RIGHT,\n  PanelComponent: ({\n    updateData,\n    appState\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("button", Object.assign({\n    type: "button",\n    className: "zIndexButton",\n    onClick: () => updateData(null),\n    title: `${(0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("labels.bringForward")} \u2014 ${(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+]")}`\n  }, {\n    children: _components_icons__WEBPACK_IMPORTED_MODULE_7__.BringForwardIcon\n  }))\n});\nconst actionSendToBack = (0,_register__WEBPACK_IMPORTED_MODULE_6__.register)({\n  name: "sendToBack",\n  trackEvent: {\n    category: "element"\n  },\n  perform: (elements, appState) => {\n    return {\n      elements: (0,_zindex__WEBPACK_IMPORTED_MODULE_2__.moveAllLeft)(elements, appState),\n      appState,\n      commitToHistory: true\n    };\n  },\n  contextItemLabel: "labels.sendToBack",\n  keyTest: event => _constants__WEBPACK_IMPORTED_MODULE_8__.isDarwin ? event[_keys__WEBPACK_IMPORTED_MODULE_3__.KEYS.CTRL_OR_CMD] && event.altKey && event.code === _keys__WEBPACK_IMPORTED_MODULE_3__.CODES.BRACKET_LEFT : event[_keys__WEBPACK_IMPORTED_MODULE_3__.KEYS.CTRL_OR_CMD] && event.shiftKey && event.code === _keys__WEBPACK_IMPORTED_MODULE_3__.CODES.BRACKET_LEFT,\n  PanelComponent: ({\n    updateData,\n    appState\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("button", Object.assign({\n    type: "button",\n    className: "zIndexButton",\n    onClick: () => updateData(null),\n    title: `${(0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("labels.sendToBack")} \u2014 ${_constants__WEBPACK_IMPORTED_MODULE_8__.isDarwin ? (0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+Alt+[") : (0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+Shift+[")}`\n  }, {\n    children: _components_icons__WEBPACK_IMPORTED_MODULE_7__.SendToBackIcon\n  }))\n});\nconst actionBringToFront = (0,_register__WEBPACK_IMPORTED_MODULE_6__.register)({\n  name: "bringToFront",\n  trackEvent: {\n    category: "element"\n  },\n  perform: (elements, appState) => {\n    return {\n      elements: (0,_zindex__WEBPACK_IMPORTED_MODULE_2__.moveAllRight)(elements, appState),\n      appState,\n      commitToHistory: true\n    };\n  },\n  contextItemLabel: "labels.bringToFront",\n  keyTest: event => _constants__WEBPACK_IMPORTED_MODULE_8__.isDarwin ? event[_keys__WEBPACK_IMPORTED_MODULE_3__.KEYS.CTRL_OR_CMD] && event.altKey && event.code === _keys__WEBPACK_IMPORTED_MODULE_3__.CODES.BRACKET_RIGHT : event[_keys__WEBPACK_IMPORTED_MODULE_3__.KEYS.CTRL_OR_CMD] && event.shiftKey && event.code === _keys__WEBPACK_IMPORTED_MODULE_3__.CODES.BRACKET_RIGHT,\n  PanelComponent: ({\n    updateData,\n    appState\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("button", Object.assign({\n    type: "button",\n    className: "zIndexButton",\n    onClick: event => updateData(null),\n    title: `${(0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("labels.bringToFront")} \u2014 ${_constants__WEBPACK_IMPORTED_MODULE_8__.isDarwin ? (0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+Alt+]") : (0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+Shift+]")}`\n  }, {\n    children: _components_icons__WEBPACK_IMPORTED_MODULE_7__.BringToFrontIcon\n  }))\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 7112 characters]\n//# sourceURL=webpack-internal:///../../actions/actionZindex.tsx\n');
              }
            ),
            /***/
            "../../actions/index.ts": (
              /*!******************************!*\
                !*** ../../actions/index.ts ***!
                \******************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "actionAddToLibrary": () => (/* reexport safe */ _actionAddToLibrary__WEBPACK_IMPORTED_MODULE_12__.actionAddToLibrary),\n/* harmony export */   "actionAlignBottom": () => (/* reexport safe */ _actionAlign__WEBPACK_IMPORTED_MODULE_13__.actionAlignBottom),\n/* harmony export */   "actionAlignHorizontallyCentered": () => (/* reexport safe */ _actionAlign__WEBPACK_IMPORTED_MODULE_13__.actionAlignHorizontallyCentered),\n/* harmony export */   "actionAlignLeft": () => (/* reexport safe */ _actionAlign__WEBPACK_IMPORTED_MODULE_13__.actionAlignLeft),\n/* harmony export */   "actionAlignRight": () => (/* reexport safe */ _actionAlign__WEBPACK_IMPORTED_MODULE_13__.actionAlignRight),\n/* harmony export */   "actionAlignTop": () => (/* reexport safe */ _actionAlign__WEBPACK_IMPORTED_MODULE_13__.actionAlignTop),\n/* harmony export */   "actionAlignVerticallyCentered": () => (/* reexport safe */ _actionAlign__WEBPACK_IMPORTED_MODULE_13__.actionAlignVerticallyCentered),\n/* harmony export */   "actionBindText": () => (/* reexport safe */ _actionBoundText__WEBPACK_IMPORTED_MODULE_21__.actionBindText),\n/* harmony export */   "actionBringForward": () => (/* reexport safe */ _actionZindex__WEBPACK_IMPORTED_MODULE_1__.actionBringForward),\n/* harmony export */   "actionBringToFront": () => (/* reexport safe */ _actionZindex__WEBPACK_IMPORTED_MODULE_1__.actionBringToFront),\n/* harmony export */   "actionChangeBackgroundColor": () => (/* reexport safe */ _actionProperties__WEBPACK_IMPORTED_MODULE_4__.actionChangeBackgroundColor),\n/* harmony export */   "actionChangeExportBackground": () => (/* reexport safe */ _actionExport__WEBPACK_IMPORTED_MODULE_7__.actionChangeExportBackground),\n/* harmony export */   "actionChangeFillStyle": () => (/* reexport safe */ _actionProperties__WEBPACK_IMPORTED_MODULE_4__.actionChangeFillStyle),\n/* harmony export */   "actionChangeFontFamily": () => (/* reexport safe */ _actionProperties__WEBPACK_IMPORTED_MODULE_4__.actionChangeFontFamily),\n/* harmony export */   "actionChangeFontSize": () => (/* reexport safe */ _actionProperties__WEBPACK_IMPORTED_MODULE_4__.actionChangeFontSize),\n/* harmony export */   "actionChangeOpacity": () => (/* reexport safe */ _actionProperties__WEBPACK_IMPORTED_MODULE_4__.actionChangeOpacity),\n/* harmony export */   "actionChangeProjectName": () => (/* reexport safe */ _actionExport__WEBPACK_IMPORTED_MODULE_7__.actionChangeProjectName),\n/* harmony export */   "actionChangeSloppiness": () => (/* reexport safe */ _actionProperties__WEBPACK_IMPORTED_MODULE_4__.actionChangeSloppiness),\n/* harmony export */   "actionChangeStrokeColor": () => (/* reexport safe */ _actionProperties__WEBPACK_IMPORTED_MODULE_4__.actionChangeStrokeColor),\n/* harmony export */   "actionChangeStrokeWidth": () => (/* reexport safe */ _actionProperties__WEBPACK_IMPORTED_MODULE_4__.actionChangeStrokeWidth),\n/* harmony export */   "actionChangeTextAlign": () => (/* reexport safe */ _actionProperties__WEBPACK_IMPORTED_MODULE_4__.actionChangeTextAlign),\n/* harmony export */   "actionChangeVerticalAlign": () => (/* reexport safe */ _actionProperties__WEBPACK_IMPORTED_MODULE_4__.actionChangeVerticalAlign),\n/* harmony export */   "actionChangeViewBackgroundColor": () => (/* reexport safe */ _actionCanvas__WEBPACK_IMPORTED_MODULE_5__.actionChangeViewBackgroundColor),\n/* harmony export */   "actionClearCanvas": () => (/* reexport safe */ _actionCanvas__WEBPACK_IMPORTED_MODULE_5__.actionClearCanvas),\n/* harmony export */   "actionCopy": () => (/* reexport safe */ _actionClipboard__WEBPACK_IMPORTED_MODULE_16__.actionCopy),\n/* harmony export */   "actionCopyAsPng": () => (/* reexport safe */ _actionClipboard__WEBPACK_IMPORTED_MODULE_16__.actionCopyAsPng),\n/* harmony export */   "actionCopyAsSvg": () => (/* reexport safe */ _actionClipboard__WEBPACK_IMPORTED_MODULE_16__.actionCopyAsSvg),\n/* harmony export */   "actionCopyStyles": () => (/* reexport safe */ _actionStyles__WEBPACK_IMPORTED_MODULE_8__.actionCopyStyles),\n/* harmony export */   "actionCut": () => (/* reexport safe */ _actionClipboard__WEBPACK_IMPORTED_MODULE_16__.actionCut),\n/* harmony export */   "actionDeleteSelected": () => (/* reexport safe */ _actionDeleteSelected__WEBPACK_IMPORTED_MODULE_0__.actionDeleteSelected),\n/* harmony export */   "actionDuplicateSelection": () => (/* reexport safe */ _actionDuplicateSelection__WEBPACK_IMPORTED_MODULE_3__.actionDuplicateSelection),\n/* harmony export */   "actionFinalize": () => (/* reexport safe */ _actionFinalize__WEBPACK_IMPORTED_MODULE_6__.actionFinalize),\n/* harmony export */   "actionFlipHorizontal": () => (/* reexport safe */ _actionFlip__WEBPACK_IMPORTED_MODULE_15__.actionFlipHorizontal),\n/* harmony export */   "actionFlipVertical": () => (/* reexport safe */ _actionFlip__WEBPACK_IMPORTED_MODULE_15__.actionFlipVertical),\n/* harmony export */   "actionGoToCollaborator": () => (/* reexport safe */ _actionNavigate__WEBPACK_IMPORTED_MODULE_11__.actionGoToCollaborator),\n/* harmony export */   "actionGroup": () => (/* reexport safe */ _actionGroup__WEBPACK_IMPORTED_MODULE_10__.actionGroup),\n/* harmony export */   "actionLink": () => (/* reexport safe */ _element_Hyperlink__WEBPACK_IMPORTED_MODULE_22__.actionLink),\n/* harmony export */   "actionLoadScene": () => (/* reexport safe */ _actionExport__WEBPACK_IMPORTED_MODULE_7__.actionLoadScene),\n/* harmony export */   "actionPasteStyles": () => (/* reexport safe */ _actionStyles__WEBPACK_IMPORTED_MODULE_8__.actionPasteStyles),\n/* harmony export */   "actionResetZoom": () => (/* reexport safe */ _actionCanvas__WEBPACK_IMPORTED_MODULE_5__.actionResetZoom),\n/* harmony export */   "actionSaveFileToDisk": () => (/* reexport safe */ _actionExport__WEBPACK_IMPORTED_MODULE_7__.actionSaveFileToDisk),\n/* harmony export */   "actionSaveToActiveFile": () => (/* reexport safe */ _actionExport__WEBPACK_IMPORTED_MODULE_7__.actionSaveToActiveFile),\n/* harmony export */   "actionSelectAll": () => (/* reexport safe */ _actionSelectAll__WEBPACK_IMPORTED_MODULE_2__.actionSelectAll),\n/* harmony export */   "actionSendBackward": () => (/* reexport safe */ _actionZindex__WEBPACK_IMPORTED_MODULE_1__.actionSendBackward),\n/* harmony export */   "actionSendToBack": () => (/* reexport safe */ _actionZindex__WEBPACK_IMPORTED_MODULE_1__.actionSendToBack),\n/* harmony export */   "actionShortcuts": () => (/* reexport safe */ _actionMenu__WEBPACK_IMPORTED_MODULE_9__.actionShortcuts),\n/* harmony export */   "actionToggleCanvasMenu": () => (/* reexport safe */ _actionMenu__WEBPACK_IMPORTED_MODULE_9__.actionToggleCanvasMenu),\n/* harmony export */   "actionToggleEditMenu": () => (/* reexport safe */ _actionMenu__WEBPACK_IMPORTED_MODULE_9__.actionToggleEditMenu),\n/* harmony export */   "actionToggleElementLock": () => (/* reexport safe */ _actionElementLock__WEBPACK_IMPORTED_MODULE_23__.actionToggleElementLock),\n/* harmony export */   "actionToggleGridMode": () => (/* reexport safe */ _actionToggleGridMode__WEBPACK_IMPORTED_MODULE_17__.actionToggleGridMode),\n/* harmony export */   "actionToggleLinearEditor": () => (/* reexport safe */ _actionLinearEditor__WEBPACK_IMPORTED_MODULE_24__.actionToggleLinearEditor),\n/* harmony export */   "actionToggleObjectsSnapMode": () => (/* reexport safe */ _actionToggleObjectsSnapMode__WEBPACK_IMPORTED_MODULE_19__.actionToggleObjectsSnapMode),\n/* harmony export */   "actionToggleStats": () => (/* reexport safe */ _actionToggleStats__WEBPACK_IMPORTED_MODULE_20__.actionToggleStats),\n/* harmony export */   "actionToggleTheme": () => (/* reexport safe */ _actionCanvas__WEBPACK_IMPORTED_MODULE_5__.actionToggleTheme),\n/* harmony export */   "actionToggleZenMode": () => (/* reexport safe */ _actionToggleZenMode__WEBPACK_IMPORTED_MODULE_18__.actionToggleZenMode),\n/* harmony export */   "actionUnbindText": () => (/* reexport safe */ _actionBoundText__WEBPACK_IMPORTED_MODULE_21__.actionUnbindText),\n/* harmony export */   "actionUngroup": () => (/* reexport safe */ _actionGroup__WEBPACK_IMPORTED_MODULE_10__.actionUngroup),\n/* harmony export */   "actionZoomIn": () => (/* reexport safe */ _actionCanvas__WEBPACK_IMPORTED_MODULE_5__.actionZoomIn),\n/* harmony export */   "actionZoomOut": () => (/* reexport safe */ _actionCanvas__WEBPACK_IMPORTED_MODULE_5__.actionZoomOut),\n/* harmony export */   "actionZoomToFit": () => (/* reexport safe */ _actionCanvas__WEBPACK_IMPORTED_MODULE_5__.actionZoomToFit),\n/* harmony export */   "copyText": () => (/* reexport safe */ _actionClipboard__WEBPACK_IMPORTED_MODULE_16__.copyText),\n/* harmony export */   "distributeHorizontally": () => (/* reexport safe */ _actionDistribute__WEBPACK_IMPORTED_MODULE_14__.distributeHorizontally),\n/* harmony export */   "distributeVertically": () => (/* reexport safe */ _actionDistribute__WEBPACK_IMPORTED_MODULE_14__.distributeVertically)\n/* harmony export */ });\n/* harmony import */ var _actionDeleteSelected__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./actionDeleteSelected */ "../../actions/actionDeleteSelected.tsx");\n/* harmony import */ var _actionZindex__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./actionZindex */ "../../actions/actionZindex.tsx");\n/* harmony import */ var _actionSelectAll__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./actionSelectAll */ "../../actions/actionSelectAll.ts");\n/* harmony import */ var _actionDuplicateSelection__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./actionDuplicateSelection */ "../../actions/actionDuplicateSelection.tsx");\n/* harmony import */ var _actionProperties__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./actionProperties */ "../../actions/actionProperties.tsx");\n/* harmony import */ var _actionCanvas__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./actionCanvas */ "../../actions/actionCanvas.tsx");\n/* harmony import */ var _actionFinalize__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./actionFinalize */ "../../actions/actionFinalize.tsx");\n/* harmony import */ var _actionExport__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./actionExport */ "../../actions/actionExport.tsx");\n/* harmony import */ var _actionStyles__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./actionStyles */ "../../actions/actionStyles.ts");\n/* harmony import */ var _actionMenu__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./actionMenu */ "../../actions/actionMenu.tsx");\n/* harmony import */ var _actionGroup__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./actionGroup */ "../../actions/actionGroup.tsx");\n/* harmony import */ var _actionNavigate__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./actionNavigate */ "../../actions/actionNavigate.tsx");\n/* harmony import */ var _actionAddToLibrary__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./actionAddToLibrary */ "../../actions/actionAddToLibrary.ts");\n/* harmony import */ var _actionAlign__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./actionAlign */ "../../actions/actionAlign.tsx");\n/* harmony import */ var _actionDistribute__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./actionDistribute */ "../../actions/actionDistribute.tsx");\n/* harmony import */ var _actionFlip__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./actionFlip */ "../../actions/actionFlip.ts");\n/* harmony import */ var _actionClipboard__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./actionClipboard */ "../../actions/actionClipboard.tsx");\n/* harmony import */ var _actionToggleGridMode__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./actionToggleGridMode */ "../../actions/actionToggleGridMode.tsx");\n/* harmony import */ var _actionToggleZenMode__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./actionToggleZenMode */ "../../actions/actionToggleZenMode.tsx");\n/* harmony import */ var _actionToggleObjectsSnapMode__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./actionToggleObjectsSnapMode */ "../../actions/actionToggleObjectsSnapMode.tsx");\n/* harmony import */ var _actionToggleStats__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./actionToggleStats */ "../../actions/actionToggleStats.tsx");\n/* harmony import */ var _actionBoundText__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./actionBoundText */ "../../actions/actionBoundText.tsx");\n/* harmony import */ var _element_Hyperlink__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../element/Hyperlink */ "../../element/Hyperlink.tsx");\n/* harmony import */ var _actionElementLock__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./actionElementLock */ "../../actions/actionElementLock.ts");\n/* harmony import */ var _actionLinearEditor__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./actionLinearEditor */ "../../actions/actionLinearEditor.ts");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vYWN0aW9ucy9pbmRleC50cy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQThEO0FBQ2dEO0FBQzFEO0FBQ2tCO0FBQ2lOO0FBQ2pIO0FBQ3BIO0FBQ29HO0FBQ2pGO0FBQ3dCO0FBQ2xDO0FBQ0Q7QUFDQTtBQUMyRztBQUNuRjtBQUNWO0FBQzhCO0FBQ3hDO0FBQ0Y7QUFDZ0I7QUFDcEI7QUFDYTtBQUNuQjtBQUNZIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2FjdGlvbnMvaW5kZXgudHM/OWJlMyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBhY3Rpb25EZWxldGVTZWxlY3RlZCB9IGZyb20gXCIuL2FjdGlvbkRlbGV0ZVNlbGVjdGVkXCI7XG5leHBvcnQgeyBhY3Rpb25CcmluZ0ZvcndhcmQsIGFjdGlvbkJyaW5nVG9Gcm9udCwgYWN0aW9uU2VuZEJhY2t3YXJkLCBhY3Rpb25TZW5kVG9CYWNrIH0gZnJvbSBcIi4vYWN0aW9uWmluZGV4XCI7XG5leHBvcnQgeyBhY3Rpb25TZWxlY3RBbGwgfSBmcm9tIFwiLi9hY3Rpb25TZWxlY3RBbGxcIjtcbmV4cG9ydCB7IGFjdGlvbkR1cGxpY2F0ZVNlbGVjdGlvbiB9IGZyb20gXCIuL2FjdGlvbkR1cGxpY2F0ZVNlbGVjdGlvblwiO1xuZXhwb3J0IHsgYWN0aW9uQ2hhbmdlU3Ryb2tlQ29sb3IsIGFjdGlvbkNoYW5nZUJhY2tncm91bmRDb2xvciwgYWN0aW9uQ2hhbmdlU3Ryb2tlV2lkdGgsIGFjdGlvbkNoYW5nZUZpbGxTdHlsZSwgYWN0aW9uQ2hhbmdlU2xvcHBpbmVzcywgYWN0aW9uQ2hhbmdlT3BhY2l0eSwgYWN0aW9uQ2hhbmdlRm9udFNpemUsIGFjdGlvbkNoYW5nZUZvbnRGYW1pbHksIGFjdGlvbkNoYW5nZVRleHRBbGlnbiwgYWN0aW9uQ2hhbmdlVmVydGljYWxBbGlnbiB9IGZyb20gXCIuL2FjdGlvblByb3BlcnRpZXNcIjtcbmV4cG9ydCB7IGFjdGlvbkNoYW5nZVZpZXdCYWNrZ3JvdW5kQ29sb3IsIGFjdGlvbkNsZWFyQ2FudmFzLCBhY3Rpb25ab29tSW4sIGFjdGlvblpvb21PdXQsIGFjdGlvblJlc2V0Wm9vbSwgYWN0aW9uWm9vbVRvRml0LCBhY3Rpb25Ub2dnbGVUaGVtZSB9IGZyb20gXCIuL2FjdGlvbkNhbnZhc1wiO1xuZXhwb3J0IHsgYWN0aW9uRmluYWxpemUgfSBmcm9tIFwiLi9hY3Rpb25GaW5hbGl6ZVwiO1xuZXhwb3J0IHsgYWN0aW9uQ2hhbmdlUHJvamVjdE5hbWUsIGFjdGlvbkNoYW5nZUV4cG9ydEJhY2tncm91bmQsIGFjdGlvblNhdmVUb0FjdGl2ZUZpbGUsIGFjdGlvblNhdmVGaWxlVG9EaXNrLCBhY3Rpb25Mb2FkU2NlbmUgfSBmcm9tIFwiLi9hY3Rpb25FeHBvcnRcIjtcbmV4cG9ydCB7IGFjdGlvbkNvcHlTdHlsZXMsIGFjdGlvblBhc3RlU3R5bGVzIH0gZnJvbSBcIi4vYWN0aW9uU3R5bGVzXCI7XG5leHBvcnQgeyBhY3Rpb25Ub2dnbGVDYW52YXNNZW51LCBhY3Rpb25Ub2dnbGVFZGl0TWVudSwgYWN0aW9uU2hvcnRjdXRzIH0gZnJvbSBcIi4vYWN0aW9uTWVudVwiO1xuZXhwb3J0IHsgYWN0aW9uR3JvdXAsIGFjdGlvblVuZ3JvdXAgfSBmcm9tIFwiLi9hY3Rpb25Hcm91cFwiO1xuZXhwb3J0IHsgYWN0aW9uR29Ub0NvbGxhYm9yYXRvciB9IGZyb20gXCIuL2FjdGlvbk5hdmlnYXRlXCI7XG5leHBvcnQgeyBhY3Rpb25BZGRUb0xpYnJhcnkgfSBmcm9tIFwiLi9hY3Rpb25BZGRUb0xpYnJhcnlcIjtcbmV4cG9ydCB7IGFjdGlvbkFsaWduVG9wLCBhY3Rpb25BbGlnbkJvdHRvbSwgYWN0aW9uQWxpZ25MZWZ0LCBhY3Rpb25BbGlnblJpZ2h0LCBhY3Rpb25BbGlnblZlcnRpY2FsbHlDZW50ZXJlZCwgYWN0aW9uQWxpZ25Ib3Jpem9udGFsbHlDZW50ZXJlZCB9IGZyb20gXCIuL2FjdGlvbkFsaWduXCI7XG5leHBvcnQgeyBkaXN0cmlidXRlSG9yaXpvbnRhbGx5LCBkaXN0cmlidXRlVmVydGljYWxseSB9IGZyb20gXCIuL2FjdGlvbkRpc3RyaWJ1dGVcIjtcbmV4cG9ydCB7IGFjdGlvbkZsaXBIb3Jpem9udGFsLCBhY3Rpb25GbGlwVmVydGljYWwgfSBmcm9tIFwiLi9hY3Rpb25GbGlwXCI7XG5leHBvcnQgeyBhY3Rpb25Db3B5LCBhY3Rpb25DdXQsIGFjdGlvbkNvcHlBc1BuZywgYWN0aW9uQ29weUFzU3ZnLCBjb3B5VGV4dCB9IGZyb20gXCIuL2FjdGlvbkNsaXBib2FyZFwiO1xuZXhwb3J0IHsgYWN0aW9uVG9nZ2xlR3JpZE1vZGUgfSBmcm9tIFwiLi9hY3Rpb25Ub2dnbGVHcmlkTW9kZVwiO1xuZXhwb3J0IHsgYWN0aW9uVG9nZ2xlWmVuTW9kZSB9IGZyb20gXCIuL2FjdGlvblRvZ2dsZVplbk1vZGVcIjtcbmV4cG9ydCB7IGFjdGlvblRvZ2dsZU9iamVjdHNTbmFwTW9kZSB9IGZyb20gXCIuL2FjdGlvblRvZ2dsZU9iamVjdHNTbmFwTW9kZVwiO1xuZXhwb3J0IHsgYWN0aW9uVG9nZ2xlU3RhdHMgfSBmcm9tIFwiLi9hY3Rpb25Ub2dnbGVTdGF0c1wiO1xuZXhwb3J0IHsgYWN0aW9uVW5iaW5kVGV4dCwgYWN0aW9uQmluZFRleHQgfSBmcm9tIFwiLi9hY3Rpb25Cb3VuZFRleHRcIjtcbmV4cG9ydCB7IGFjdGlvbkxpbmsgfSBmcm9tIFwiLi4vZWxlbWVudC9IeXBlcmxpbmtcIjtcbmV4cG9ydCB7IGFjdGlvblRvZ2dsZUVsZW1lbnRMb2NrIH0gZnJvbSBcIi4vYWN0aW9uRWxlbWVudExvY2tcIjtcbmV4cG9ydCB7IGFjdGlvblRvZ2dsZUxpbmVhckVkaXRvciB9IGZyb20gXCIuL2FjdGlvbkxpbmVhckVkaXRvclwiOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../actions/index.ts\n');
              }
            ),
            /***/
            "../../actions/manager.tsx": (
              /*!*********************************!*\
                !*** ../../actions/manager.tsx ***!
                \*********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "ActionManager": () => (/* binding */ ActionManager)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _analytics__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../analytics */ "../../analytics.ts");\n\n\n\n\nconst trackAction = (action, source, appState, elements, app, value) => {\n  if (action.trackEvent) {\n    try {\n      if (typeof action.trackEvent === "object") {\n        const shouldTrack = action.trackEvent.predicate ? action.trackEvent.predicate(appState, elements, value) : true;\n\n        if (shouldTrack) {\n          (0,_analytics__WEBPACK_IMPORTED_MODULE_2__.trackEvent)(action.trackEvent.category, action.trackEvent.action || action.name, `${source} (${app.device.editor.isMobile ? "mobile" : "desktop"})`);\n        }\n      }\n    } catch (error) {\n      console.error("error while logging action:", error);\n    }\n  }\n};\n\nclass ActionManager {\n  constructor(updater, getAppState, getElementsIncludingDeleted, app) {\n    this.actions = {};\n    /**\n     * @param data additional data sent to the PanelComponent\n     */\n\n    this.renderAction = (name, data) => {\n      const canvasActions = this.app.props.UIOptions.canvasActions;\n\n      if (this.actions[name] && "PanelComponent" in this.actions[name] && (name in canvasActions ? canvasActions[name] : true)) {\n        const action = this.actions[name];\n        const PanelComponent = action.PanelComponent;\n        PanelComponent.displayName = "PanelComponent";\n        const elements = this.getElementsIncludingDeleted();\n        const appState = this.getAppState();\n\n        const updateData = formState => {\n          trackAction(action, "ui", appState, elements, this.app, formState);\n          this.updater(action.perform(this.getElementsIncludingDeleted(), this.getAppState(), formState, this.app));\n        };\n\n        return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(PanelComponent, {\n          elements: this.getElementsIncludingDeleted(),\n          appState: this.getAppState(),\n          updateData: updateData,\n          appProps: this.app.props,\n          app: this.app,\n          data: data\n        });\n      }\n\n      return null;\n    };\n\n    this.isActionEnabled = action => {\n      const elements = this.getElementsIncludingDeleted();\n      const appState = this.getAppState();\n      return !action.predicate || action.predicate(elements, appState, this.app.props, this.app);\n    };\n\n    this.updater = actionResult => {\n      if (actionResult && "then" in actionResult) {\n        actionResult.then(actionResult => {\n          return updater(actionResult);\n        });\n      } else {\n        return updater(actionResult);\n      }\n    };\n\n    this.getAppState = getAppState;\n    this.getElementsIncludingDeleted = getElementsIncludingDeleted;\n    this.app = app;\n  }\n\n  registerAction(action) {\n    this.actions[action.name] = action;\n  }\n\n  registerAll(actions) {\n    actions.forEach(action => this.registerAction(action));\n  }\n\n  handleKeyDown(event) {\n    const canvasActions = this.app.props.UIOptions.canvasActions;\n    const data = Object.values(this.actions).sort((a, b) => (b.keyPriority || 0) - (a.keyPriority || 0)).filter(action => (action.name in canvasActions ? canvasActions[action.name] : true) && action.keyTest && action.keyTest(event, this.getAppState(), this.getElementsIncludingDeleted(), this.app));\n\n    if (data.length !== 1) {\n      if (data.length > 1) {\n        console.warn("Canceling as multiple actions match this shortcut", data);\n      }\n\n      return false;\n    }\n\n    const action = data[0];\n\n    if (this.getAppState().viewModeEnabled && action.viewMode !== true) {\n      return false;\n    }\n\n    const elements = this.getElementsIncludingDeleted();\n    const appState = this.getAppState();\n    const value = null;\n    trackAction(action, "keyboard", appState, elements, this.app, null);\n    event.preventDefault();\n    event.stopPropagation();\n    this.updater(data[0].perform(elements, appState, value, this.app));\n    return true;\n  }\n\n  executeAction(action, source = "api", value = null) {\n    const elements = this.getElementsIncludingDeleted();\n    const appState = this.getAppState();\n    trackAction(action, source, appState, elements, this.app, value);\n    this.updater(action.perform(elements, appState, value, this.app));\n  }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6672 characters]\n//# sourceURL=webpack-internal:///../../actions/manager.tsx\n');
              }
            ),
            /***/
            "../../actions/register.ts": (
              /*!*********************************!*\
                !*** ../../actions/register.ts ***!
                \*********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "actions": () => (/* binding */ actions),\n/* harmony export */   "register": () => (/* binding */ register)\n/* harmony export */ });\nlet actions = [];\nconst register = action => {\n  actions = actions.concat(action);\n  return action;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vYWN0aW9ucy9yZWdpc3Rlci50cy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFPO0FBQ0E7QUFDUDtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vYWN0aW9ucy9yZWdpc3Rlci50cz83Y2FhIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBsZXQgYWN0aW9ucyA9IFtdO1xuZXhwb3J0IGNvbnN0IHJlZ2lzdGVyID0gYWN0aW9uID0+IHtcbiAgYWN0aW9ucyA9IGFjdGlvbnMuY29uY2F0KGFjdGlvbik7XG4gIHJldHVybiBhY3Rpb247XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../actions/register.ts\n');
              }
            ),
            /***/
            "../../actions/shortcuts.ts": (
              /*!**********************************!*\
                !*** ../../actions/shortcuts.ts ***!
                \**********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "getShortcutFromShortcutName": () => (/* binding */ getShortcutFromShortcutName)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n\n\n\nconst shortcutMap = {\n  toggleTheme: [(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("Shift+Alt+D")],\n  saveScene: [(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("CtrlOrCmd+S")],\n  loadScene: [(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("CtrlOrCmd+O")],\n  clearCanvas: [(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("CtrlOrCmd+Delete")],\n  imageExport: [(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("CtrlOrCmd+Shift+E")],\n  cut: [(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("CtrlOrCmd+X")],\n  copy: [(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("CtrlOrCmd+C")],\n  paste: [(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("CtrlOrCmd+V")],\n  copyStyles: [(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("CtrlOrCmd+Alt+C")],\n  pasteStyles: [(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("CtrlOrCmd+Alt+V")],\n  selectAll: [(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("CtrlOrCmd+A")],\n  deleteSelectedElements: [(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("Delete")],\n  duplicateSelection: [(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("CtrlOrCmd+D"), (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)(`Alt+${(0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("helpDialog.drag")}`)],\n  sendBackward: [(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("CtrlOrCmd+[")],\n  bringForward: [(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("CtrlOrCmd+]")],\n  sendToBack: [_constants__WEBPACK_IMPORTED_MODULE_0__.isDarwin ? (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("CtrlOrCmd+Alt+[") : (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("CtrlOrCmd+Shift+[")],\n  bringToFront: [_constants__WEBPACK_IMPORTED_MODULE_0__.isDarwin ? (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("CtrlOrCmd+Alt+]") : (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("CtrlOrCmd+Shift+]")],\n  copyAsPng: [(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("Shift+Alt+C")],\n  copyAsSvg: [],\n  group: [(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("CtrlOrCmd+G")],\n  ungroup: [(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("CtrlOrCmd+Shift+G")],\n  gridMode: [(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("CtrlOrCmd+\'")],\n  zenMode: [(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("Alt+Z")],\n  objectsSnapMode: [(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("Alt+S")],\n  stats: [(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("Alt+/")],\n  addToLibrary: [],\n  flipHorizontal: [(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("Shift+H")],\n  flipVertical: [(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("Shift+V")],\n  viewMode: [(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("Alt+R")],\n  hyperlink: [(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("CtrlOrCmd+K")],\n  toggleElementLock: [(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("CtrlOrCmd+Shift+L")]\n};\nconst getShortcutFromShortcutName = name => {\n  const shortcuts = shortcutMap[name]; // if multiple shortcuts available, take the first one\n\n  return shortcuts && shortcuts.length > 0 ? shortcuts[0] : "";\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vYWN0aW9ucy9zaG9ydGN1dHMudHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUF3QztBQUNaO0FBQ2M7QUFDMUM7QUFDQSxnQkFBZ0Isc0RBQWM7QUFDOUIsY0FBYyxzREFBYztBQUM1QixjQUFjLHNEQUFjO0FBQzVCLGdCQUFnQixzREFBYztBQUM5QixnQkFBZ0Isc0RBQWM7QUFDOUIsUUFBUSxzREFBYztBQUN0QixTQUFTLHNEQUFjO0FBQ3ZCLFVBQVUsc0RBQWM7QUFDeEIsZUFBZSxzREFBYztBQUM3QixnQkFBZ0Isc0RBQWM7QUFDOUIsY0FBYyxzREFBYztBQUM1QiwyQkFBMkIsc0RBQWM7QUFDekMsdUJBQXVCLHNEQUFjLGlCQUFpQixzREFBYyxRQUFRLHdDQUFDLG9CQUFvQjtBQUNqRyxpQkFBaUIsc0RBQWM7QUFDL0IsaUJBQWlCLHNEQUFjO0FBQy9CLGVBQWUsZ0RBQVEsR0FBRyxzREFBYyxzQkFBc0Isc0RBQWM7QUFDNUUsaUJBQWlCLGdEQUFRLEdBQUcsc0RBQWMsc0JBQXNCLHNEQUFjO0FBQzlFLGNBQWMsc0RBQWM7QUFDNUI7QUFDQSxVQUFVLHNEQUFjO0FBQ3hCLFlBQVksc0RBQWM7QUFDMUIsYUFBYSxzREFBYztBQUMzQixZQUFZLHNEQUFjO0FBQzFCLG9CQUFvQixzREFBYztBQUNsQyxVQUFVLHNEQUFjO0FBQ3hCO0FBQ0EsbUJBQW1CLHNEQUFjO0FBQ2pDLGlCQUFpQixzREFBYztBQUMvQixhQUFhLHNEQUFjO0FBQzNCLGNBQWMsc0RBQWM7QUFDNUIsc0JBQXNCLHNEQUFjO0FBQ3BDO0FBQ087QUFDUCx1Q0FBdUM7O0FBRXZDO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vYWN0aW9ucy9zaG9ydGN1dHMudHM/OTZhMiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0RhcndpbiB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IHQgfSBmcm9tIFwiLi4vaTE4blwiO1xuaW1wb3J0IHsgZ2V0U2hvcnRjdXRLZXkgfSBmcm9tIFwiLi4vdXRpbHNcIjtcbmNvbnN0IHNob3J0Y3V0TWFwID0ge1xuICB0b2dnbGVUaGVtZTogW2dldFNob3J0Y3V0S2V5KFwiU2hpZnQrQWx0K0RcIildLFxuICBzYXZlU2NlbmU6IFtnZXRTaG9ydGN1dEtleShcIkN0cmxPckNtZCtTXCIpXSxcbiAgbG9hZFNjZW5lOiBbZ2V0U2hvcnRjdXRLZXkoXCJDdHJsT3JDbWQrT1wiKV0sXG4gIGNsZWFyQ2FudmFzOiBbZ2V0U2hvcnRjdXRLZXkoXCJDdHJsT3JDbWQrRGVsZXRlXCIpXSxcbiAgaW1hZ2VFeHBvcnQ6IFtnZXRTaG9ydGN1dEtleShcIkN0cmxPckNtZCtTaGlmdCtFXCIpXSxcbiAgY3V0OiBbZ2V0U2hvcnRjdXRLZXkoXCJDdHJsT3JDbWQrWFwiKV0sXG4gIGNvcHk6IFtnZXRTaG9ydGN1dEtleShcIkN0cmxPckNtZCtDXCIpXSxcbiAgcGFzdGU6IFtnZXRTaG9ydGN1dEtleShcIkN0cmxPckNtZCtWXCIpXSxcbiAgY29weVN0eWxlczogW2dldFNob3J0Y3V0S2V5KFwiQ3RybE9yQ21kK0FsdCtDXCIpXSxcbiAgcGFzdGVTdHlsZXM6IFtnZXRTaG9ydGN1dEtleShcIkN0cmxPckNtZCtBbHQrVlwiKV0sXG4gIHNlbGVjdEFsbDogW2dldFNob3J0Y3V0S2V5KFwiQ3RybE9yQ21kK0FcIildLFxuICBkZWxldGVTZWxlY3RlZEVsZW1lbnRzOiBbZ2V0U2hvcnRjdXRLZXkoXCJEZWxldGVcIildLFxuICBkdXBsaWNhdGVTZWxlY3Rpb246IFtnZXRTaG9ydGN1dEtleShcIkN0cmxPckNtZCtEXCIpLCBnZXRTaG9ydGN1dEtleShgQWx0KyR7dChcImhlbHBEaWFsb2cuZHJhZ1wiKX1gKV0sXG4gIHNlbmRCYWNrd2FyZDogW2dldFNob3J0Y3V0S2V5KFwiQ3RybE9yQ21kK1tcIildLFxuICBicmluZ0ZvcndhcmQ6IFtnZXRTaG9ydGN1dEtleShcIkN0cmxPckNtZCtdXCIpXSxcbiAgc2VuZFRvQmFjazogW2lzRGFyd2luID8gZ2V0U2hvcnRjdXRLZXkoXCJDdHJsT3JDbWQrQWx0K1tcIikgOiBnZXRTaG9ydGN1dEtleShcIkN0cmxPckNtZCtTaGlmdCtbXCIpXSxcbiAgYnJpbmdUb0Zyb250OiBbaXNEYXJ3aW4gPyBnZXRTaG9ydGN1dEtleShcIkN0cmxPckNtZCtBbHQrXVwiKSA6IGdldFNob3J0Y3V0S2V5KFwiQ3RybE9yQ21kK1NoaWZ0K11cIildLFxuICBjb3B5QXNQbmc6IFtnZXRTaG9ydGN1dEtleShcIlNoaWZ0K0FsdCtDXCIpXSxcbiAgY29weUFzU3ZnOiBbXSxcbiAgZ3JvdXA6IFtnZXRTaG9ydGN1dEtleShcIkN0cmxPckNtZCtHXCIpXSxcbiAgdW5ncm91cDogW2dldFNob3J0Y3V0S2V5KFwiQ3RybE9yQ21kK1NoaWZ0K0dcIildLFxuICBncmlkTW9kZTogW2dldFNob3J0Y3V0S2V5KFwiQ3RybE9yQ21kKydcIildLFxuICB6ZW5Nb2RlOiBbZ2V0U2hvcnRjdXRLZXkoXCJBbHQrWlwiKV0sXG4gIG9iamVjdHNTbmFwTW9kZTogW2dldFNob3J0Y3V0S2V5KFwiQWx0K1NcIildLFxuICBzdGF0czogW2dldFNob3J0Y3V0S2V5KFwiQWx0Ky9cIildLFxuICBhZGRUb0xpYnJhcnk6IFtdLFxuICBmbGlwSG9yaXpvbnRhbDogW2dldFNob3J0Y3V0S2V5KFwiU2hpZnQrSFwiKV0sXG4gIGZsaXBWZXJ0aWNhbDogW2dldFNob3J0Y3V0S2V5KFwiU2hpZnQrVlwiKV0sXG4gIHZpZXdNb2RlOiBbZ2V0U2hvcnRjdXRLZXkoXCJBbHQrUlwiKV0sXG4gIGh5cGVybGluazogW2dldFNob3J0Y3V0S2V5KFwiQ3RybE9yQ21kK0tcIildLFxuICB0b2dnbGVFbGVtZW50TG9jazogW2dldFNob3J0Y3V0S2V5KFwiQ3RybE9yQ21kK1NoaWZ0K0xcIildXG59O1xuZXhwb3J0IGNvbnN0IGdldFNob3J0Y3V0RnJvbVNob3J0Y3V0TmFtZSA9IG5hbWUgPT4ge1xuICBjb25zdCBzaG9ydGN1dHMgPSBzaG9ydGN1dE1hcFtuYW1lXTsgLy8gaWYgbXVsdGlwbGUgc2hvcnRjdXRzIGF2YWlsYWJsZSwgdGFrZSB0aGUgZmlyc3Qgb25lXG5cbiAgcmV0dXJuIHNob3J0Y3V0cyAmJiBzaG9ydGN1dHMubGVuZ3RoID4gMCA/IHNob3J0Y3V0c1swXSA6IFwiXCI7XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../actions/shortcuts.ts\n');
              }
            ),
            /***/
            "../../align.ts": (
              /*!**********************!*\
                !*** ../../align.ts ***!
                \**********************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "alignElements": () => (/* binding */ alignElements)\n/* harmony export */ });\n/* harmony import */ var _element_mutateElement__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./element/mutateElement */ "../../element/mutateElement.ts");\n/* harmony import */ var _element_bounds__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./element/bounds */ "../../element/bounds.ts");\n/* harmony import */ var _groups__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./groups */ "../../groups.ts");\n\n\n\nconst alignElements = (selectedElements, alignment) => {\n  const groups = (0,_groups__WEBPACK_IMPORTED_MODULE_2__.getMaximumGroups)(selectedElements);\n  const selectionBoundingBox = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_1__.getCommonBoundingBox)(selectedElements);\n  return groups.flatMap(group => {\n    const translation = calculateTranslation(group, selectionBoundingBox, alignment);\n    return group.map(element => (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_0__.newElementWith)(element, {\n      x: element.x + translation.x,\n      y: element.y + translation.y\n    }));\n  });\n};\n\nconst calculateTranslation = (group, selectionBoundingBox, {\n  axis,\n  position\n}) => {\n  const groupBoundingBox = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_1__.getCommonBoundingBox)(group);\n  const [min, max] = axis === "x" ? ["minX", "maxX"] : ["minY", "maxY"];\n  const noTranslation = {\n    x: 0,\n    y: 0\n  };\n\n  if (position === "start") {\n    return Object.assign(Object.assign({}, noTranslation), {\n      [axis]: selectionBoundingBox[min] - groupBoundingBox[min]\n    });\n  } else if (position === "end") {\n    return Object.assign(Object.assign({}, noTranslation), {\n      [axis]: selectionBoundingBox[max] - groupBoundingBox[max]\n    });\n  } // else if (position === "center") {\n\n\n  return Object.assign(Object.assign({}, noTranslation), {\n    [axis]: (selectionBoundingBox[min] + selectionBoundingBox[max]) / 2 - (groupBoundingBox[min] + groupBoundingBox[max]) / 2\n  });\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vYWxpZ24udHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUF5RDtBQUNEO0FBQ1o7QUFDckM7QUFDUCxpQkFBaUIseURBQWdCO0FBQ2pDLCtCQUErQixxRUFBb0I7QUFDbkQ7QUFDQTtBQUNBLGdDQUFnQyxzRUFBYztBQUM5QztBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsMkJBQTJCLHFFQUFvQjtBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EseUNBQXlDO0FBQ3pDO0FBQ0EsS0FBSztBQUNMLElBQUk7QUFDSix5Q0FBeUM7QUFDekM7QUFDQSxLQUFLO0FBQ0wsSUFBSTs7O0FBR0osdUNBQXVDO0FBQ3ZDO0FBQ0EsR0FBRztBQUNIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2FsaWduLnRzPzUzNDAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbmV3RWxlbWVudFdpdGggfSBmcm9tIFwiLi9lbGVtZW50L211dGF0ZUVsZW1lbnRcIjtcbmltcG9ydCB7IGdldENvbW1vbkJvdW5kaW5nQm94IH0gZnJvbSBcIi4vZWxlbWVudC9ib3VuZHNcIjtcbmltcG9ydCB7IGdldE1heGltdW1Hcm91cHMgfSBmcm9tIFwiLi9ncm91cHNcIjtcbmV4cG9ydCBjb25zdCBhbGlnbkVsZW1lbnRzID0gKHNlbGVjdGVkRWxlbWVudHMsIGFsaWdubWVudCkgPT4ge1xuICBjb25zdCBncm91cHMgPSBnZXRNYXhpbXVtR3JvdXBzKHNlbGVjdGVkRWxlbWVudHMpO1xuICBjb25zdCBzZWxlY3Rpb25Cb3VuZGluZ0JveCA9IGdldENvbW1vbkJvdW5kaW5nQm94KHNlbGVjdGVkRWxlbWVudHMpO1xuICByZXR1cm4gZ3JvdXBzLmZsYXRNYXAoZ3JvdXAgPT4ge1xuICAgIGNvbnN0IHRyYW5zbGF0aW9uID0gY2FsY3VsYXRlVHJhbnNsYXRpb24oZ3JvdXAsIHNlbGVjdGlvbkJvdW5kaW5nQm94LCBhbGlnbm1lbnQpO1xuICAgIHJldHVybiBncm91cC5tYXAoZWxlbWVudCA9PiBuZXdFbGVtZW50V2l0aChlbGVtZW50LCB7XG4gICAgICB4OiBlbGVtZW50LnggKyB0cmFuc2xhdGlvbi54LFxuICAgICAgeTogZWxlbWVudC55ICsgdHJhbnNsYXRpb24ueVxuICAgIH0pKTtcbiAgfSk7XG59O1xuXG5jb25zdCBjYWxjdWxhdGVUcmFuc2xhdGlvbiA9IChncm91cCwgc2VsZWN0aW9uQm91bmRpbmdCb3gsIHtcbiAgYXhpcyxcbiAgcG9zaXRpb25cbn0pID0+IHtcbiAgY29uc3QgZ3JvdXBCb3VuZGluZ0JveCA9IGdldENvbW1vbkJvdW5kaW5nQm94KGdyb3VwKTtcbiAgY29uc3QgW21pbiwgbWF4XSA9IGF4aXMgPT09IFwieFwiID8gW1wibWluWFwiLCBcIm1heFhcIl0gOiBbXCJtaW5ZXCIsIFwibWF4WVwiXTtcbiAgY29uc3Qgbm9UcmFuc2xhdGlvbiA9IHtcbiAgICB4OiAwLFxuICAgIHk6IDBcbiAgfTtcblxuICBpZiAocG9zaXRpb24gPT09IFwic3RhcnRcIikge1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIG5vVHJhbnNsYXRpb24pLCB7XG4gICAgICBbYXhpc106IHNlbGVjdGlvbkJvdW5kaW5nQm94W21pbl0gLSBncm91cEJvdW5kaW5nQm94W21pbl1cbiAgICB9KTtcbiAgfSBlbHNlIGlmIChwb3NpdGlvbiA9PT0gXCJlbmRcIikge1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIG5vVHJhbnNsYXRpb24pLCB7XG4gICAgICBbYXhpc106IHNlbGVjdGlvbkJvdW5kaW5nQm94W21heF0gLSBncm91cEJvdW5kaW5nQm94W21heF1cbiAgICB9KTtcbiAgfSAvLyBlbHNlIGlmIChwb3NpdGlvbiA9PT0gXCJjZW50ZXJcIikge1xuXG5cbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgbm9UcmFuc2xhdGlvbiksIHtcbiAgICBbYXhpc106IChzZWxlY3Rpb25Cb3VuZGluZ0JveFttaW5dICsgc2VsZWN0aW9uQm91bmRpbmdCb3hbbWF4XSkgLyAyIC0gKGdyb3VwQm91bmRpbmdCb3hbbWluXSArIGdyb3VwQm91bmRpbmdCb3hbbWF4XSkgLyAyXG4gIH0pO1xufTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../align.ts\n');
              }
            ),
            /***/
            "../../analytics.ts": (
              /*!**************************!*\
                !*** ../../analytics.ts ***!
                \**************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "trackEvent": () => (/* binding */ trackEvent)\n/* harmony export */ });\nconst trackEvent = (category, action, label, value) => {\n  try {\n    // place here categories that you want to track as events\n    // KEEP IN MIND THE PRICING\n    const ALLOWED_CATEGORIES_TO_TRACK = []; // Uncomment the next line to track locally\n    // console.log("Track Event", { category, action, label, value });\n\n    if (typeof window === "undefined" || ({"VITE_APP_BACKEND_V2_GET_URL":"https://json-dev.excalidraw.com/api/v2/","VITE_APP_BACKEND_V2_POST_URL":"https://json-dev.excalidraw.com/api/v2/post/","VITE_APP_LIBRARY_URL":"https://libraries.excalidraw.com","VITE_APP_LIBRARY_BACKEND":"https://us-central1-excalidraw-room-persistence.cloudfunctions.net/libraries","VITE_APP_WS_SERVER_URL":"http://localhost:3002","VITE_APP_PORTAL_URL":"","VITE_APP_PLUS_LP":"https://plus.excalidraw.com","VITE_APP_PLUS_APP":"https://app.excalidraw.com","VITE_APP_FIREBASE_CONFIG":"{\\"apiKey\\":\\"AIzaSyCMkxA60XIW8KbqMYL7edC4qT5l4qHX2h8\\",\\"authDomain\\":\\"excalidraw-oss-dev.firebaseapp.com\\",\\"projectId\\":\\"excalidraw-oss-dev\\",\\"storageBucket\\":\\"excalidraw-oss-dev.appspot.com\\",\\"messagingSenderId\\":\\"664559512677\\",\\"appId\\":\\"1:664559512677:web:a385181f2928d328a7aa8c\\"}","VITE_APP_DEV_ENABLE_SW":"","VITE_APP_DEV_DISABLE_LIVE_RELOAD":"","VITE_APP_DISABLE_TRACKING":"true","FAST_REFRESH":"false","VITE_APP_PORT":"3000","VITE_APP_DEBUG_ENABLE_TEXT_CONTAINER_BOUNDING_BOX":"","VITE_APP_COLLAPSE_OVERLAY":"true","VITE_APP_ENABLE_ESLINT":"true","VITE_PKG_NAME":"@excalidraw/excalidraw","VITE_PKG_VERSION":"0.17.6","VITE_IS_EXCALIDRAW_NPM_PACKAGE":true}).VITE_WORKER_ID) {\n      return;\n    }\n\n    if (!ALLOWED_CATEGORIES_TO_TRACK.includes(category)) {\n      return;\n    }\n\n    if (window.sa_event) {\n      window.sa_event(action, {\n        category,\n        label,\n        value\n      });\n    }\n  } catch (error) {\n    console.error("error during analytics", error);\n  }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vYW5hbHl0aWNzLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLDRDQUE0QztBQUM1QyxvQ0FBb0MsZ0NBQWdDOztBQUVwRSx5Q0FBeUMsc3FDQUFXO0FBQ3BEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2FuYWx5dGljcy50cz81NDIxIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCB0cmFja0V2ZW50ID0gKGNhdGVnb3J5LCBhY3Rpb24sIGxhYmVsLCB2YWx1ZSkgPT4ge1xuICB0cnkge1xuICAgIC8vIHBsYWNlIGhlcmUgY2F0ZWdvcmllcyB0aGF0IHlvdSB3YW50IHRvIHRyYWNrIGFzIGV2ZW50c1xuICAgIC8vIEtFRVAgSU4gTUlORCBUSEUgUFJJQ0lOR1xuICAgIGNvbnN0IEFMTE9XRURfQ0FURUdPUklFU19UT19UUkFDSyA9IFtdOyAvLyBVbmNvbW1lbnQgdGhlIG5leHQgbGluZSB0byB0cmFjayBsb2NhbGx5XG4gICAgLy8gY29uc29sZS5sb2coXCJUcmFjayBFdmVudFwiLCB7IGNhdGVnb3J5LCBhY3Rpb24sIGxhYmVsLCB2YWx1ZSB9KTtcblxuICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSBcInVuZGVmaW5lZFwiIHx8IHByb2Nlc3MuZW52LlZJVEVfV09SS0VSX0lEKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFBTExPV0VEX0NBVEVHT1JJRVNfVE9fVFJBQ0suaW5jbHVkZXMoY2F0ZWdvcnkpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHdpbmRvdy5zYV9ldmVudCkge1xuICAgICAgd2luZG93LnNhX2V2ZW50KGFjdGlvbiwge1xuICAgICAgICBjYXRlZ29yeSxcbiAgICAgICAgbGFiZWwsXG4gICAgICAgIHZhbHVlXG4gICAgICB9KTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcihcImVycm9yIGR1cmluZyBhbmFseXRpY3NcIiwgZXJyb3IpO1xuICB9XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../analytics.ts\n');
              }
            ),
            /***/
            "../../appState.ts": (
              /*!*************************!*\
                !*** ../../appState.ts ***!
                \*************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "cleanAppStateForExport": () => (/* binding */ cleanAppStateForExport),\n/* harmony export */   "clearAppStateForDatabase": () => (/* binding */ clearAppStateForDatabase),\n/* harmony export */   "clearAppStateForLocalStorage": () => (/* binding */ clearAppStateForLocalStorage),\n/* harmony export */   "getDefaultAppState": () => (/* binding */ getDefaultAppState),\n/* harmony export */   "isEraserActive": () => (/* binding */ isEraserActive),\n/* harmony export */   "isHandToolActive": () => (/* binding */ isHandToolActive)\n/* harmony export */ });\n/* harmony import */ var _colors__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./colors */ "../../colors.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constants */ "../../constants.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./i18n */ "../../i18n.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils */ "../../utils.ts");\n\n\n\n\nconst defaultExportScale = _constants__WEBPACK_IMPORTED_MODULE_1__.EXPORT_SCALES.includes(devicePixelRatio) ? devicePixelRatio : 1;\nconst getDefaultAppState = () => {\n  return {\n    showWelcomeScreen: false,\n    theme: _constants__WEBPACK_IMPORTED_MODULE_1__.THEME.LIGHT,\n    collaborators: new Map(),\n    currentChartType: "bar",\n    currentItemBackgroundColor: _constants__WEBPACK_IMPORTED_MODULE_1__.DEFAULT_ELEMENT_PROPS.backgroundColor,\n    currentItemEndArrowhead: "arrow",\n    currentItemFillStyle: _constants__WEBPACK_IMPORTED_MODULE_1__.DEFAULT_ELEMENT_PROPS.fillStyle,\n    currentItemFontFamily: _constants__WEBPACK_IMPORTED_MODULE_1__.DEFAULT_FONT_FAMILY,\n    currentItemFontSize: _constants__WEBPACK_IMPORTED_MODULE_1__.DEFAULT_FONT_SIZE,\n    currentItemOpacity: _constants__WEBPACK_IMPORTED_MODULE_1__.DEFAULT_ELEMENT_PROPS.opacity,\n    currentItemRoughness: _constants__WEBPACK_IMPORTED_MODULE_1__.DEFAULT_ELEMENT_PROPS.roughness,\n    currentItemStartArrowhead: null,\n    currentItemStrokeColor: _constants__WEBPACK_IMPORTED_MODULE_1__.DEFAULT_ELEMENT_PROPS.strokeColor,\n    currentItemRoundness: "round",\n    currentItemStrokeStyle: _constants__WEBPACK_IMPORTED_MODULE_1__.DEFAULT_ELEMENT_PROPS.strokeStyle,\n    currentItemStrokeWidth: _constants__WEBPACK_IMPORTED_MODULE_1__.DEFAULT_ELEMENT_PROPS.strokeWidth,\n    currentItemTextAlign: _constants__WEBPACK_IMPORTED_MODULE_1__.DEFAULT_TEXT_ALIGN,\n    cursorButton: "up",\n    activeEmbeddable: null,\n    draggingElement: null,\n    editingElement: null,\n    editingGroupId: null,\n    editingLinearElement: null,\n    activeTool: {\n      type: "selection",\n      customType: null,\n      locked: _constants__WEBPACK_IMPORTED_MODULE_1__.DEFAULT_ELEMENT_PROPS.locked,\n      lastActiveTool: null\n    },\n    penMode: false,\n    penDetected: false,\n    errorMessage: null,\n    exportBackground: true,\n    exportScale: defaultExportScale,\n    exportEmbedScene: false,\n    exportWithDarkMode: false,\n    fileHandle: null,\n    gridSize: null,\n    isBindingEnabled: true,\n    defaultSidebarDockedPreference: false,\n    isLoading: false,\n    isResizing: false,\n    isRotating: false,\n    lastPointerDownWith: "mouse",\n    multiElement: null,\n    name: `${(0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.untitled")}-${(0,_utils__WEBPACK_IMPORTED_MODULE_3__.getDateTime)()}`,\n    contextMenu: null,\n    openMenu: null,\n    openPopup: null,\n    openSidebar: null,\n    openDialog: null,\n    pasteDialog: {\n      shown: false,\n      data: null\n    },\n    previousSelectedElementIds: {},\n    resizingElement: null,\n    scrolledOutside: false,\n    scrollX: 0,\n    scrollY: 0,\n    selectedElementIds: {},\n    selectedGroupIds: {},\n    selectedElementsAreBeingDragged: false,\n    selectionElement: null,\n    shouldCacheIgnoreZoom: false,\n    showStats: false,\n    startBoundElement: null,\n    suggestedBindings: [],\n    frameRendering: {\n      enabled: true,\n      clip: true,\n      name: true,\n      outline: true\n    },\n    frameToHighlight: null,\n    editingFrame: null,\n    elementsToHighlight: null,\n    toast: null,\n    viewBackgroundColor: _colors__WEBPACK_IMPORTED_MODULE_0__.COLOR_PALETTE.white,\n    zenModeEnabled: false,\n    zoom: {\n      value: 1\n    },\n    viewModeEnabled: false,\n    pendingImageElementId: null,\n    showHyperlinkPopup: false,\n    selectedLinearElement: null,\n    snapLines: [],\n    originSnapOffset: {\n      x: 0,\n      y: 0\n    },\n    objectsSnapModeEnabled: false\n  };\n};\n/**\n * Config containing all AppState keys. Used to determine whether given state\n *  prop should be stripped when exporting to given storage type.\n */\n\nconst APP_STATE_STORAGE_CONF = (config => config)({\n  showWelcomeScreen: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  theme: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  collaborators: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  currentChartType: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  currentItemBackgroundColor: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  currentItemEndArrowhead: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  currentItemFillStyle: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  currentItemFontFamily: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  currentItemFontSize: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  currentItemRoundness: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  currentItemOpacity: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  currentItemRoughness: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  currentItemStartArrowhead: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  currentItemStrokeColor: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  currentItemStrokeStyle: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  currentItemStrokeWidth: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  currentItemTextAlign: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  cursorButton: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  activeEmbeddable: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  draggingElement: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  editingElement: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  editingGroupId: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  editingLinearElement: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  activeTool: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  penMode: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  penDetected: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  errorMessage: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  exportBackground: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  exportEmbedScene: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  exportScale: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  exportWithDarkMode: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  fileHandle: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  gridSize: {\n    browser: true,\n    export: true,\n    server: true\n  },\n  height: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  isBindingEnabled: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  defaultSidebarDockedPreference: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  isLoading: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  isResizing: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  isRotating: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  lastPointerDownWith: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  multiElement: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  name: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  offsetLeft: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  offsetTop: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  contextMenu: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  openMenu: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  openPopup: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  openSidebar: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  openDialog: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  pasteDialog: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  previousSelectedElementIds: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  resizingElement: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  scrolledOutside: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  scrollX: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  scrollY: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  selectedElementIds: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  selectedGroupIds: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  selectedElementsAreBeingDragged: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  selectionElement: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  shouldCacheIgnoreZoom: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  showStats: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  startBoundElement: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  suggestedBindings: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  frameRendering: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  frameToHighlight: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  editingFrame: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  elementsToHighlight: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  toast: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  viewBackgroundColor: {\n    browser: true,\n    export: true,\n    server: true\n  },\n  width: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  zenModeEnabled: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  zoom: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  viewModeEnabled: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  pendingImageElementId: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  showHyperlinkPopup: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  selectedLinearElement: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  snapLines: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  originSnapOffset: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  objectsSnapModeEnabled: {\n    browser: true,\n    export: false,\n    server: false\n  }\n});\n\nconst _clearAppStateForStorage = (appState, exportType) => {\n  const stateForExport = {};\n\n  for (const key of Object.keys(appState)) {\n    const propConfig = APP_STATE_STORAGE_CONF[key];\n\n    if (propConfig === null || propConfig === void 0 ? void 0 : propConfig[exportType]) {\n      const nextValue = appState[key]; // https://github.com/microsoft/TypeScript/issues/31445\n\n      stateForExport[key] = nextValue;\n    }\n  }\n\n  return stateForExport;\n};\n\nconst clearAppStateForLocalStorage = appState => {\n  return _clearAppStateForStorage(appState, "browser");\n};\nconst cleanAppStateForExport = appState => {\n  return _clearAppStateForStorage(appState, "export");\n};\nconst clearAppStateForDatabase = appState => {\n  return _clearAppStateForStorage(appState, "server");\n};\nconst isEraserActive = ({\n  activeTool\n}) => activeTool.type === "eraser";\nconst isHandToolActive = ({\n  activeTool\n}) => {\n  return activeTool.type === "hand";\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 19800 characters]\n//# sourceURL=webpack-internal:///../../appState.ts\n');
              }
            ),
            /***/
            "../../charts.ts": (
              /*!***********************!*\
                !*** ../../charts.ts ***!
                \***********************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "NOT_SPREADSHEET": () => (/* binding */ NOT_SPREADSHEET),\n/* harmony export */   "VALID_SPREADSHEET": () => (/* binding */ VALID_SPREADSHEET),\n/* harmony export */   "renderSpreadsheet": () => (/* binding */ renderSpreadsheet),\n/* harmony export */   "tryParseCells": () => (/* binding */ tryParseCells),\n/* harmony export */   "tryParseNumber": () => (/* binding */ tryParseNumber),\n/* harmony export */   "tryParseSpreadsheet": () => (/* binding */ tryParseSpreadsheet)\n/* harmony export */ });\n/* harmony import */ var _colors__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./colors */ "../../colors.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constants */ "../../constants.ts");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./element */ "../../element/index.ts");\n/* harmony import */ var _random__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./random */ "../../random.ts");\n\n\n\n\nconst BAR_WIDTH = 32;\nconst BAR_GAP = 12;\nconst BAR_HEIGHT = 256;\nconst GRID_OPACITY = 50;\nconst NOT_SPREADSHEET = "NOT_SPREADSHEET";\nconst VALID_SPREADSHEET = "VALID_SPREADSHEET";\n/**\n * @private exported for testing\n */\n\nconst tryParseNumber = s => {\n  const match = /^([-+]?)[$\u20AC\xA3\xA5\u20A9]?([-+]?)([\\d.,]+)[%]?$/.exec(s);\n\n  if (!match) {\n    return null;\n  }\n\n  return parseFloat(`${(match[1] || match[2]) + match[3]}`.replace(/,/g, ""));\n};\n\nconst isNumericColumn = (lines, columnIndex) => lines.slice(1).every(line => tryParseNumber(line[columnIndex]) !== null);\n/**\n * @private exported for testing\n */\n\n\nconst tryParseCells = cells => {\n  const numCols = cells[0].length;\n\n  if (numCols > 2) {\n    return {\n      type: NOT_SPREADSHEET,\n      reason: "More than 2 columns"\n    };\n  }\n\n  if (numCols === 1) {\n    if (!isNumericColumn(cells, 0)) {\n      return {\n        type: NOT_SPREADSHEET,\n        reason: "Value is not numeric"\n      };\n    }\n\n    const hasHeader = tryParseNumber(cells[0][0]) === null;\n    const values = (hasHeader ? cells.slice(1) : cells).map(line => tryParseNumber(line[0]));\n\n    if (values.length < 2) {\n      return {\n        type: NOT_SPREADSHEET,\n        reason: "Less than two rows"\n      };\n    }\n\n    return {\n      type: VALID_SPREADSHEET,\n      spreadsheet: {\n        title: hasHeader ? cells[0][0] : null,\n        labels: null,\n        values: values\n      }\n    };\n  }\n\n  const labelColumnNumeric = isNumericColumn(cells, 0);\n  const valueColumnNumeric = isNumericColumn(cells, 1);\n\n  if (!labelColumnNumeric && !valueColumnNumeric) {\n    return {\n      type: NOT_SPREADSHEET,\n      reason: "Value is not numeric"\n    };\n  }\n\n  const [labelColumnIndex, valueColumnIndex] = valueColumnNumeric ? [0, 1] : [1, 0];\n  const hasHeader = tryParseNumber(cells[0][valueColumnIndex]) === null;\n  const rows = hasHeader ? cells.slice(1) : cells;\n\n  if (rows.length < 2) {\n    return {\n      type: NOT_SPREADSHEET,\n      reason: "Less than 2 rows"\n    };\n  }\n\n  return {\n    type: VALID_SPREADSHEET,\n    spreadsheet: {\n      title: hasHeader ? cells[0][valueColumnIndex] : null,\n      labels: rows.map(row => row[labelColumnIndex]),\n      values: rows.map(row => tryParseNumber(row[valueColumnIndex]))\n    }\n  };\n};\n\nconst transposeCells = cells => {\n  const nextCells = [];\n\n  for (let col = 0; col < cells[0].length; col++) {\n    const nextCellRow = [];\n\n    for (let row = 0; row < cells.length; row++) {\n      nextCellRow.push(cells[row][col]);\n    }\n\n    nextCells.push(nextCellRow);\n  }\n\n  return nextCells;\n};\n\nconst tryParseSpreadsheet = text => {\n  // Copy/paste from excel, spreadsheets, tsv, csv.\n  // For now we only accept 2 columns with an optional header\n  // Check for tab separated values\n  let lines = text.trim().split("\\n").map(line => line.trim().split("\\t")); // Check for comma separated files\n\n  if (lines.length && lines[0].length !== 2) {\n    lines = text.trim().split("\\n").map(line => line.trim().split(","));\n  }\n\n  if (lines.length === 0) {\n    return {\n      type: NOT_SPREADSHEET,\n      reason: "No values"\n    };\n  }\n\n  const numColsFirstLine = lines[0].length;\n  const isSpreadsheet = lines.every(line => line.length === numColsFirstLine);\n\n  if (!isSpreadsheet) {\n    return {\n      type: NOT_SPREADSHEET,\n      reason: "All rows don\'t have same number of columns"\n    };\n  }\n\n  const result = tryParseCells(lines);\n\n  if (result.type !== VALID_SPREADSHEET) {\n    const transposedResults = tryParseCells(transposeCells(lines));\n\n    if (transposedResults.type === VALID_SPREADSHEET) {\n      return transposedResults;\n    }\n  }\n\n  return result;\n};\nconst bgColors = (0,_colors__WEBPACK_IMPORTED_MODULE_0__.getAllColorsSpecificShade)(_colors__WEBPACK_IMPORTED_MODULE_0__.DEFAULT_CHART_COLOR_INDEX); // Put all the common properties here so when the whole chart is selected\n// the properties dialog shows the correct selected values\n\nconst commonProps = {\n  fillStyle: "hachure",\n  fontFamily: _constants__WEBPACK_IMPORTED_MODULE_1__.DEFAULT_FONT_FAMILY,\n  fontSize: _constants__WEBPACK_IMPORTED_MODULE_1__.DEFAULT_FONT_SIZE,\n  opacity: 100,\n  roughness: 1,\n  strokeColor: _colors__WEBPACK_IMPORTED_MODULE_0__.COLOR_PALETTE.black,\n  roundness: null,\n  strokeStyle: "solid",\n  strokeWidth: 1,\n  verticalAlign: _constants__WEBPACK_IMPORTED_MODULE_1__.VERTICAL_ALIGN.MIDDLE,\n  locked: false\n};\n\nconst getChartDimensions = spreadsheet => {\n  const chartWidth = (BAR_WIDTH + BAR_GAP) * spreadsheet.values.length + BAR_GAP;\n  const chartHeight = BAR_HEIGHT + BAR_GAP * 2;\n  return {\n    chartWidth,\n    chartHeight\n  };\n};\n\nconst chartXLabels = (spreadsheet, x, y, groupId, backgroundColor) => {\n  var _a;\n\n  return ((_a = spreadsheet.labels) === null || _a === void 0 ? void 0 : _a.map((label, index) => {\n    return (0,_element__WEBPACK_IMPORTED_MODULE_2__.newTextElement)(Object.assign(Object.assign({\n      groupIds: [groupId],\n      backgroundColor\n    }, commonProps), {\n      text: label.length > 8 ? `${label.slice(0, 5)}...` : label,\n      x: x + index * (BAR_WIDTH + BAR_GAP) + BAR_GAP * 2,\n      y: y + BAR_GAP / 2,\n      width: BAR_WIDTH,\n      angle: 5.87,\n      fontSize: 16,\n      textAlign: "center",\n      verticalAlign: "top"\n    }));\n  })) || [];\n};\n\nconst chartYLabels = (spreadsheet, x, y, groupId, backgroundColor) => {\n  const minYLabel = (0,_element__WEBPACK_IMPORTED_MODULE_2__.newTextElement)(Object.assign(Object.assign({\n    groupIds: [groupId],\n    backgroundColor\n  }, commonProps), {\n    x: x - BAR_GAP,\n    y: y - BAR_GAP,\n    text: "0",\n    textAlign: "right"\n  }));\n  const maxYLabel = (0,_element__WEBPACK_IMPORTED_MODULE_2__.newTextElement)(Object.assign(Object.assign({\n    groupIds: [groupId],\n    backgroundColor\n  }, commonProps), {\n    x: x - BAR_GAP,\n    y: y - BAR_HEIGHT - minYLabel.height / 2,\n    text: Math.max(...spreadsheet.values).toLocaleString(),\n    textAlign: "right"\n  }));\n  return [minYLabel, maxYLabel];\n};\n\nconst chartLines = (spreadsheet, x, y, groupId, backgroundColor) => {\n  const {\n    chartWidth,\n    chartHeight\n  } = getChartDimensions(spreadsheet);\n  const xLine = (0,_element__WEBPACK_IMPORTED_MODULE_2__.newLinearElement)(Object.assign(Object.assign({\n    backgroundColor,\n    groupIds: [groupId]\n  }, commonProps), {\n    type: "line",\n    x,\n    y,\n    startArrowhead: null,\n    endArrowhead: null,\n    width: chartWidth,\n    points: [[0, 0], [chartWidth, 0]]\n  }));\n  const yLine = (0,_element__WEBPACK_IMPORTED_MODULE_2__.newLinearElement)(Object.assign(Object.assign({\n    backgroundColor,\n    groupIds: [groupId]\n  }, commonProps), {\n    type: "line",\n    x,\n    y,\n    startArrowhead: null,\n    endArrowhead: null,\n    height: chartHeight,\n    points: [[0, 0], [0, -chartHeight]]\n  }));\n  const maxLine = (0,_element__WEBPACK_IMPORTED_MODULE_2__.newLinearElement)(Object.assign(Object.assign({\n    backgroundColor,\n    groupIds: [groupId]\n  }, commonProps), {\n    type: "line",\n    x,\n    y: y - BAR_HEIGHT - BAR_GAP,\n    startArrowhead: null,\n    endArrowhead: null,\n    strokeStyle: "dotted",\n    width: chartWidth,\n    opacity: GRID_OPACITY,\n    points: [[0, 0], [chartWidth, 0]]\n  }));\n  return [xLine, yLine, maxLine];\n}; // For the maths behind it https://excalidraw.com/#json=6320864370884608,O_5xfD-Agh32tytHpRJx1g\n\n\nconst chartBaseElements = (spreadsheet, x, y, groupId, backgroundColor, debug) => {\n  const {\n    chartWidth,\n    chartHeight\n  } = getChartDimensions(spreadsheet);\n  const title = spreadsheet.title ? (0,_element__WEBPACK_IMPORTED_MODULE_2__.newTextElement)(Object.assign(Object.assign({\n    backgroundColor,\n    groupIds: [groupId]\n  }, commonProps), {\n    text: spreadsheet.title,\n    x: x + chartWidth / 2,\n    y: y - BAR_HEIGHT - BAR_GAP * 2 - _constants__WEBPACK_IMPORTED_MODULE_1__.DEFAULT_FONT_SIZE,\n    roundness: null,\n    textAlign: "center"\n  })) : null;\n  const debugRect = debug ? (0,_element__WEBPACK_IMPORTED_MODULE_2__.newElement)(Object.assign(Object.assign({\n    backgroundColor,\n    groupIds: [groupId]\n  }, commonProps), {\n    type: "rectangle",\n    x,\n    y: y - chartHeight,\n    width: chartWidth,\n    height: chartHeight,\n    strokeColor: _colors__WEBPACK_IMPORTED_MODULE_0__.COLOR_PALETTE.black,\n    fillStyle: "solid",\n    opacity: 6\n  })) : null;\n  return [...(debugRect ? [debugRect] : []), ...(title ? [title] : []), ...chartXLabels(spreadsheet, x, y, groupId, backgroundColor), ...chartYLabels(spreadsheet, x, y, groupId, backgroundColor), ...chartLines(spreadsheet, x, y, groupId, backgroundColor)];\n};\n\nconst chartTypeBar = (spreadsheet, x, y) => {\n  const max = Math.max(...spreadsheet.values);\n  const groupId = (0,_random__WEBPACK_IMPORTED_MODULE_3__.randomId)();\n  const backgroundColor = bgColors[Math.floor(Math.random() * bgColors.length)];\n  const bars = spreadsheet.values.map((value, index) => {\n    const barHeight = value / max * BAR_HEIGHT;\n    return (0,_element__WEBPACK_IMPORTED_MODULE_2__.newElement)(Object.assign(Object.assign({\n      backgroundColor,\n      groupIds: [groupId]\n    }, commonProps), {\n      type: "rectangle",\n      x: x + index * (BAR_WIDTH + BAR_GAP) + BAR_GAP,\n      y: y - barHeight - BAR_GAP,\n      width: BAR_WIDTH,\n      height: barHeight\n    }));\n  });\n  return [...bars, ...chartBaseElements(spreadsheet, x, y, groupId, backgroundColor, "development" !== "production")];\n};\n\nconst chartTypeLine = (spreadsheet, x, y) => {\n  const max = Math.max(...spreadsheet.values);\n  const groupId = (0,_random__WEBPACK_IMPORTED_MODULE_3__.randomId)();\n  const backgroundColor = bgColors[Math.floor(Math.random() * bgColors.length)];\n  let index = 0;\n  const points = [];\n\n  for (const value of spreadsheet.values) {\n    const cx = index * (BAR_WIDTH + BAR_GAP);\n    const cy = -(value / max) * BAR_HEIGHT;\n    points.push([cx, cy]);\n    index++;\n  }\n\n  const maxX = Math.max(...points.map(element => element[0]));\n  const maxY = Math.max(...points.map(element => element[1]));\n  const minX = Math.min(...points.map(element => element[0]));\n  const minY = Math.min(...points.map(element => element[1]));\n  const line = (0,_element__WEBPACK_IMPORTED_MODULE_2__.newLinearElement)(Object.assign(Object.assign({\n    backgroundColor,\n    groupIds: [groupId]\n  }, commonProps), {\n    type: "line",\n    x: x + BAR_GAP + BAR_WIDTH / 2,\n    y: y - BAR_GAP,\n    startArrowhead: null,\n    endArrowhead: null,\n    height: maxY - minY,\n    width: maxX - minX,\n    strokeWidth: 2,\n    points: points\n  }));\n  const dots = spreadsheet.values.map((value, index) => {\n    const cx = index * (BAR_WIDTH + BAR_GAP) + BAR_GAP / 2;\n    const cy = -(value / max) * BAR_HEIGHT + BAR_GAP / 2;\n    return (0,_element__WEBPACK_IMPORTED_MODULE_2__.newElement)(Object.assign(Object.assign({\n      backgroundColor,\n      groupIds: [groupId]\n    }, commonProps), {\n      fillStyle: "solid",\n      strokeWidth: 2,\n      type: "ellipse",\n      x: x + cx + BAR_WIDTH / 2,\n      y: y + cy - BAR_GAP * 2,\n      width: BAR_GAP,\n      height: BAR_GAP\n    }));\n  });\n  const lines = spreadsheet.values.map((value, index) => {\n    const cx = index * (BAR_WIDTH + BAR_GAP) + BAR_GAP / 2;\n    const cy = value / max * BAR_HEIGHT + BAR_GAP / 2 + BAR_GAP;\n    return (0,_element__WEBPACK_IMPORTED_MODULE_2__.newLinearElement)(Object.assign(Object.assign({\n      backgroundColor,\n      groupIds: [groupId]\n    }, commonProps), {\n      type: "line",\n      x: x + cx + BAR_WIDTH / 2 + BAR_GAP / 2,\n      y: y - cy,\n      startArrowhead: null,\n      endArrowhead: null,\n      height: cy,\n      strokeStyle: "dotted",\n      opacity: GRID_OPACITY,\n      points: [[0, 0], [0, cy]]\n    }));\n  });\n  return [...chartBaseElements(spreadsheet, x, y, groupId, backgroundColor, "development" !== "production"), line, ...lines, ...dots];\n};\n\nconst renderSpreadsheet = (chartType, spreadsheet, x, y) => {\n  if (chartType === "line") {\n    return chartTypeLine(spreadsheet, x, y);\n  }\n\n  return chartTypeBar(spreadsheet, x, y);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 19136 characters]\n//# sourceURL=webpack-internal:///../../charts.ts\n');
              }
            ),
            /***/
            "../../clients.ts": (
              /*!************************!*\
                !*** ../../clients.ts ***!
                \************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "getClientColor": () => (/* binding */ getClientColor),\n/* harmony export */   "getNameInitial": () => (/* binding */ getNameInitial)\n/* harmony export */ });\nfunction hashToInteger(id) {\n  let hash = 0;\n\n  if (id.length === 0) {\n    return hash;\n  }\n\n  for (let i = 0; i < id.length; i++) {\n    const char = id.charCodeAt(i);\n    hash = (hash << 5) - hash + char;\n  }\n\n  return hash;\n}\n\nconst getClientColor = (\n/**\n * any uniquely identifying key, such as user id or socket id\n */\nid) => {\n  // to get more even distribution in case `id` is not uniformly distributed to\n  // begin with, we hash it\n  const hash = Math.abs(hashToInteger(id)); // we want to get a multiple of 10 number in the range of 0-360 (in other\n  // words a hue value of step size 10). There are 37 such values including 0.\n\n  const hue = hash % 37 * 10;\n  const saturation = 100;\n  const lightness = 83;\n  return `hsl(${hue}, ${saturation}%, ${lightness}%)`;\n};\n/**\n * returns first char, capitalized\n */\n\nconst getNameInitial = name => {\n  var _a; // first char can be a surrogate pair, hence using codePointAt\n\n\n  const firstCodePoint = (_a = name === null || name === void 0 ? void 0 : name.trim()) === null || _a === void 0 ? void 0 : _a.codePointAt(0);\n  return (firstCodePoint ? String.fromCodePoint(firstCodePoint) : "?").toUpperCase();\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY2xpZW50cy50cy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLGtCQUFrQixlQUFlO0FBQ2pDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNENBQTRDO0FBQzVDOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixJQUFJLElBQUksV0FBVyxLQUFLLFVBQVU7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUCxVQUFVOzs7QUFHVjtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY2xpZW50cy50cz9jN2QxIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIGhhc2hUb0ludGVnZXIoaWQpIHtcbiAgbGV0IGhhc2ggPSAwO1xuXG4gIGlmIChpZC5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gaGFzaDtcbiAgfVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgaWQubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBjaGFyID0gaWQuY2hhckNvZGVBdChpKTtcbiAgICBoYXNoID0gKGhhc2ggPDwgNSkgLSBoYXNoICsgY2hhcjtcbiAgfVxuXG4gIHJldHVybiBoYXNoO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0Q2xpZW50Q29sb3IgPSAoXG4vKipcbiAqIGFueSB1bmlxdWVseSBpZGVudGlmeWluZyBrZXksIHN1Y2ggYXMgdXNlciBpZCBvciBzb2NrZXQgaWRcbiAqL1xuaWQpID0+IHtcbiAgLy8gdG8gZ2V0IG1vcmUgZXZlbiBkaXN0cmlidXRpb24gaW4gY2FzZSBgaWRgIGlzIG5vdCB1bmlmb3JtbHkgZGlzdHJpYnV0ZWQgdG9cbiAgLy8gYmVnaW4gd2l0aCwgd2UgaGFzaCBpdFxuICBjb25zdCBoYXNoID0gTWF0aC5hYnMoaGFzaFRvSW50ZWdlcihpZCkpOyAvLyB3ZSB3YW50IHRvIGdldCBhIG11bHRpcGxlIG9mIDEwIG51bWJlciBpbiB0aGUgcmFuZ2Ugb2YgMC0zNjAgKGluIG90aGVyXG4gIC8vIHdvcmRzIGEgaHVlIHZhbHVlIG9mIHN0ZXAgc2l6ZSAxMCkuIFRoZXJlIGFyZSAzNyBzdWNoIHZhbHVlcyBpbmNsdWRpbmcgMC5cblxuICBjb25zdCBodWUgPSBoYXNoICUgMzcgKiAxMDtcbiAgY29uc3Qgc2F0dXJhdGlvbiA9IDEwMDtcbiAgY29uc3QgbGlnaHRuZXNzID0gODM7XG4gIHJldHVybiBgaHNsKCR7aHVlfSwgJHtzYXR1cmF0aW9ufSUsICR7bGlnaHRuZXNzfSUpYDtcbn07XG4vKipcbiAqIHJldHVybnMgZmlyc3QgY2hhciwgY2FwaXRhbGl6ZWRcbiAqL1xuXG5leHBvcnQgY29uc3QgZ2V0TmFtZUluaXRpYWwgPSBuYW1lID0+IHtcbiAgdmFyIF9hOyAvLyBmaXJzdCBjaGFyIGNhbiBiZSBhIHN1cnJvZ2F0ZSBwYWlyLCBoZW5jZSB1c2luZyBjb2RlUG9pbnRBdFxuXG5cbiAgY29uc3QgZmlyc3RDb2RlUG9pbnQgPSAoX2EgPSBuYW1lID09PSBudWxsIHx8IG5hbWUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG5hbWUudHJpbSgpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY29kZVBvaW50QXQoMCk7XG4gIHJldHVybiAoZmlyc3RDb2RlUG9pbnQgPyBTdHJpbmcuZnJvbUNvZGVQb2ludChmaXJzdENvZGVQb2ludCkgOiBcIj9cIikudG9VcHBlckNhc2UoKTtcbn07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../clients.ts\n');
              }
            ),
            /***/
            "../../clipboard.ts": (
              /*!**************************!*\
                !*** ../../clipboard.ts ***!
                \**************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "copyBlobToClipboardAsPng": () => (/* binding */ copyBlobToClipboardAsPng),\n/* harmony export */   "copyTextToSystemClipboard": () => (/* binding */ copyTextToSystemClipboard),\n/* harmony export */   "copyToClipboard": () => (/* binding */ copyToClipboard),\n/* harmony export */   "createPasteEvent": () => (/* binding */ createPasteEvent),\n/* harmony export */   "parseClipboard": () => (/* binding */ parseClipboard),\n/* harmony export */   "probablySupportsClipboardBlob": () => (/* binding */ probablySupportsClipboardBlob),\n/* harmony export */   "probablySupportsClipboardReadText": () => (/* binding */ probablySupportsClipboardReadText),\n/* harmony export */   "probablySupportsClipboardWriteText": () => (/* binding */ probablySupportsClipboardWriteText),\n/* harmony export */   "readSystemClipboard": () => (/* binding */ readSystemClipboard),\n/* harmony export */   "serializeAsClipboardJSON": () => (/* binding */ serializeAsClipboardJSON)\n/* harmony export */ });\n/* harmony import */ var _charts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./charts */ "../../charts.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constants */ "../../constants.ts");\n/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./element/typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var _element_newElement__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./element/newElement */ "../../element/newElement.ts");\n/* harmony import */ var _element_mutateElement__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./element/mutateElement */ "../../element/mutateElement.ts");\n/* harmony import */ var _frame__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./frame */ "../../frame.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./utils */ "../../utils.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./i18n */ "../../i18n.ts");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator["throw"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n\n\n\n\n\n\nconst probablySupportsClipboardReadText = "clipboard" in navigator && "readText" in navigator.clipboard;\nconst probablySupportsClipboardWriteText = "clipboard" in navigator && "writeText" in navigator.clipboard;\nconst probablySupportsClipboardBlob = "clipboard" in navigator && "write" in navigator.clipboard && "ClipboardItem" in window && "toBlob" in HTMLCanvasElement.prototype;\n\nconst clipboardContainsElements = contents => {\n  if ([_constants__WEBPACK_IMPORTED_MODULE_1__.EXPORT_DATA_TYPES.excalidraw, _constants__WEBPACK_IMPORTED_MODULE_1__.EXPORT_DATA_TYPES.excalidrawClipboard, _constants__WEBPACK_IMPORTED_MODULE_1__.EXPORT_DATA_TYPES.excalidrawClipboardWithAPI].includes(contents === null || contents === void 0 ? void 0 : contents.type) && Array.isArray(contents.elements)) {\n    return true;\n  }\n\n  return false;\n};\n\nconst createPasteEvent = ({\n  types,\n  files\n}) => {\n  var _a, _b, _c, _d;\n\n  if (!types && !files) {\n    console.warn("createPasteEvent: no types or files provided");\n  }\n\n  const event = new ClipboardEvent("paste", {\n    clipboardData: new DataTransfer()\n  });\n\n  if (types) {\n    for (const [type, value] of Object.entries(types)) {\n      try {\n        (_a = event.clipboardData) === null || _a === void 0 ? void 0 : _a.setData(type, value);\n\n        if (((_b = event.clipboardData) === null || _b === void 0 ? void 0 : _b.getData(type)) !== value) {\n          throw new Error(`Failed to set "${type}" as clipboardData item`);\n        }\n      } catch (error) {\n        throw new Error(error.message);\n      }\n    }\n  }\n\n  if (files) {\n    let idx = -1;\n\n    for (const file of files) {\n      idx++;\n\n      try {\n        (_c = event.clipboardData) === null || _c === void 0 ? void 0 : _c.items.add(file);\n\n        if (((_d = event.clipboardData) === null || _d === void 0 ? void 0 : _d.files[idx]) !== file) {\n          throw new Error(`Failed to set file "${file.name}" as clipboardData item`);\n        }\n      } catch (error) {\n        throw new Error(error.message);\n      }\n    }\n  }\n\n  return event;\n};\nconst serializeAsClipboardJSON = ({\n  elements,\n  files\n}) => {\n  const framesToCopy = new Set(elements.filter(element => element.type === "frame"));\n  let foundFile = false;\n\n  const _files = elements.reduce((acc, element) => {\n    if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_2__.isInitializedImageElement)(element)) {\n      foundFile = true;\n\n      if (files && files[element.fileId]) {\n        acc[element.fileId] = files[element.fileId];\n      }\n    }\n\n    return acc;\n  }, {});\n\n  if (foundFile && !files) {\n    console.warn("copyToClipboard: attempting to file element(s) without providing associated `files` object.");\n  } // select bound text elements when copying\n\n\n  const contents = {\n    type: _constants__WEBPACK_IMPORTED_MODULE_1__.EXPORT_DATA_TYPES.excalidrawClipboard,\n    elements: elements.map(element => {\n      if ((0,_frame__WEBPACK_IMPORTED_MODULE_5__.getContainingFrame)(element) && !framesToCopy.has((0,_frame__WEBPACK_IMPORTED_MODULE_5__.getContainingFrame)(element))) {\n        const copiedElement = (0,_element_newElement__WEBPACK_IMPORTED_MODULE_3__.deepCopyElement)(element);\n        (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_4__.mutateElement)(copiedElement, {\n          frameId: null\n        });\n        return copiedElement;\n      }\n\n      return element;\n    }),\n    files: files ? _files : undefined\n  };\n  return JSON.stringify(contents);\n};\nconst copyToClipboard = (elements, files,\n/** supply if available to make the operation more certain to succeed */\nclipboardEvent) => __awaiter(void 0, void 0, void 0, function* () {\n  yield copyTextToSystemClipboard(serializeAsClipboardJSON({\n    elements,\n    files\n  }), clipboardEvent);\n});\n\nconst parsePotentialSpreadsheet = text => {\n  const result = (0,_charts__WEBPACK_IMPORTED_MODULE_0__.tryParseSpreadsheet)(text);\n\n  if (result.type === _charts__WEBPACK_IMPORTED_MODULE_0__.VALID_SPREADSHEET) {\n    return {\n      spreadsheet: result.spreadsheet\n    };\n  }\n\n  return null;\n};\n/** internal, specific to parsing paste events. Do not reuse. */\n\n\nfunction parseHTMLTree(el) {\n  var _a;\n\n  let result = [];\n\n  for (const node of el.childNodes) {\n    if (node.nodeType === 3) {\n      const text = (_a = node.textContent) === null || _a === void 0 ? void 0 : _a.trim();\n\n      if (text) {\n        result.push({\n          type: "text",\n          value: text\n        });\n      }\n    } else if (node instanceof HTMLImageElement) {\n      const url = node.getAttribute("src");\n\n      if (url && url.startsWith("http")) {\n        result.push({\n          type: "imageUrl",\n          value: url\n        });\n      }\n    } else {\n      result = result.concat(parseHTMLTree(node));\n    }\n  }\n\n  return result;\n}\n\nconst maybeParseHTMLPaste = event => {\n  var _a;\n\n  const html = (_a = event.clipboardData) === null || _a === void 0 ? void 0 : _a.getData("text/html");\n\n  if (!html) {\n    return null;\n  }\n\n  try {\n    const doc = new DOMParser().parseFromString(html, "text/html");\n    const content = parseHTMLTree(doc.body);\n\n    if (content.length) {\n      return {\n        type: "mixedContent",\n        value: content\n      };\n    }\n  } catch (error) {\n    console.error(`error in parseHTMLFromPaste: ${error.message}`);\n  }\n\n  return null;\n};\n\nconst readSystemClipboard = () => __awaiter(void 0, void 0, void 0, function* () {\n  var _a, _b, _c, _d;\n\n  const types = {};\n\n  try {\n    if ((_a = navigator.clipboard) === null || _a === void 0 ? void 0 : _a.readText) {\n      return {\n        "text/plain": yield (_b = navigator.clipboard) === null || _b === void 0 ? void 0 : _b.readText()\n      };\n    }\n  } catch (error) {\n    // @ts-ignore\n    if ((_c = navigator.clipboard) === null || _c === void 0 ? void 0 : _c.read) {\n      console.warn(`navigator.clipboard.readText() failed (${error.message}). Failling back to navigator.clipboard.read()`);\n    } else {\n      throw error;\n    }\n  }\n\n  let clipboardItems;\n\n  try {\n    clipboardItems = yield (_d = navigator.clipboard) === null || _d === void 0 ? void 0 : _d.read();\n  } catch (error) {\n    if (error.name === "DataError") {\n      console.warn(`navigator.clipboard.read() error, clipboard is probably empty: ${error.message}`);\n      return types;\n    }\n\n    throw error;\n  }\n\n  for (const item of clipboardItems) {\n    for (const type of item.types) {\n      if (!(0,_utils__WEBPACK_IMPORTED_MODULE_6__.isMemberOf)(_constants__WEBPACK_IMPORTED_MODULE_1__.ALLOWED_PASTE_MIME_TYPES, type)) {\n        continue;\n      }\n\n      try {\n        types[type] = yield (yield item.getType(type)).text();\n      } catch (error) {\n        console.warn(`Cannot retrieve ${type} from clipboardItem: ${error.message}`);\n      }\n    }\n  }\n\n  if (Object.keys(types).length === 0) {\n    console.warn("No clipboard data found from clipboard.read().");\n    return types;\n  }\n\n  return types;\n});\n/**\n * Parses "paste" ClipboardEvent.\n */\n\nconst parseClipboardEvent = (event, isPlainPaste = false) => __awaiter(void 0, void 0, void 0, function* () {\n  var _e, _f;\n\n  try {\n    const mixedContent = !isPlainPaste && event && maybeParseHTMLPaste(event);\n\n    if (mixedContent) {\n      if (mixedContent.value.every(item => item.type === "text")) {\n        return {\n          type: "text",\n          value: ((_e = event.clipboardData) === null || _e === void 0 ? void 0 : _e.getData("text/plain")) || mixedContent.value.map(item => item.value).join("\\n").trim()\n        };\n      }\n\n      return mixedContent;\n    }\n\n    const text = (_f = event.clipboardData) === null || _f === void 0 ? void 0 : _f.getData("text/plain");\n    return {\n      type: "text",\n      value: (text || "").trim()\n    };\n  } catch (_g) {\n    return {\n      type: "text",\n      value: ""\n    };\n  }\n});\n/**\n * Attempts to parse clipboard. Prefers system clipboard.\n */\n\n\nconst parseClipboard = (event, isPlainPaste = false) => __awaiter(void 0, void 0, void 0, function* () {\n  const parsedEventData = yield parseClipboardEvent(event, isPlainPaste);\n\n  if (parsedEventData.type === "mixedContent") {\n    return {\n      mixedContent: parsedEventData.value\n    };\n  }\n\n  try {\n    // if system clipboard contains spreadsheet, use it even though it\'s\n    // technically possible it\'s staler than in-app clipboard\n    const spreadsheetResult = !isPlainPaste && parsePotentialSpreadsheet(parsedEventData.value);\n\n    if (spreadsheetResult) {\n      return spreadsheetResult;\n    }\n  } catch (error) {\n    console.error(error);\n  }\n\n  try {\n    const systemClipboardData = JSON.parse(parsedEventData.value);\n    const programmaticAPI = systemClipboardData.type === _constants__WEBPACK_IMPORTED_MODULE_1__.EXPORT_DATA_TYPES.excalidrawClipboardWithAPI;\n\n    if (clipboardContainsElements(systemClipboardData)) {\n      return {\n        elements: systemClipboardData.elements,\n        files: systemClipboardData.files,\n        text: isPlainPaste ? JSON.stringify(systemClipboardData.elements, null, 2) : undefined,\n        programmaticAPI\n      };\n    }\n  } catch (_h) {}\n\n  return {\n    text: parsedEventData.value\n  };\n});\nconst copyBlobToClipboardAsPng = blob => __awaiter(void 0, void 0, void 0, function* () {\n  try {\n    // in Safari so far we need to construct the ClipboardItem synchronously\n    // (i.e. in the same tick) otherwise browser will complain for lack of\n    // user intent. Using a Promise ClipboardItem constructor solves this.\n    // https://bugs.webkit.org/show_bug.cgi?id=222262\n    //\n    // Note that Firefox (and potentially others) seems to support Promise\n    // ClipboardItem constructor, but throws on an unrelated MIME type error.\n    // So we need to await this and fallback to awaiting the blob if applicable.\n    yield navigator.clipboard.write([new window.ClipboardItem({\n      [_constants__WEBPACK_IMPORTED_MODULE_1__.MIME_TYPES.png]: blob\n    })]);\n  } catch (error) {\n    // if we\'re using a Promise ClipboardItem, let\'s try constructing\n    // with resolution value instead\n    if ((0,_utils__WEBPACK_IMPORTED_MODULE_6__.isPromiseLike)(blob)) {\n      yield navigator.clipboard.write([new window.ClipboardItem({\n        [_constants__WEBPACK_IMPORTED_MODULE_1__.MIME_TYPES.png]: yield blob\n      })]);\n    } else {\n      throw error;\n    }\n  }\n});\nconst copyTextToSystemClipboard = (text, clipboardEvent) => __awaiter(void 0, void 0, void 0, function* () {\n  var _j, _k; // (1) first try using Async Clipboard API\n\n\n  if (probablySupportsClipboardWriteText) {\n    try {\n      // NOTE: doesn\'t work on FF on non-HTTPS domains, or when document\n      // not focused\n      yield navigator.clipboard.writeText(text || "");\n      return;\n    } catch (error) {\n      console.error(error);\n    }\n  } // (2) if fails and we have access to ClipboardEvent, use plain old setData()\n\n\n  try {\n    if (clipboardEvent) {\n      (_j = clipboardEvent.clipboardData) === null || _j === void 0 ? void 0 : _j.setData("text/plain", text || "");\n\n      if (((_k = clipboardEvent.clipboardData) === null || _k === void 0 ? void 0 : _k.getData("text/plain")) !== text) {\n        throw new Error("Failed to setData on clipboardEvent");\n      }\n\n      return;\n    }\n  } catch (error) {\n    console.error(error);\n  } // (3) if that fails, use document.execCommand\n\n\n  if (!copyTextViaExecCommand(text)) {\n    throw new Error((0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)("errors.copyToSystemClipboardFailed"));\n  }\n}); // adapted from https://github.com/zenorocha/clipboard.js/blob/ce79f170aa655c408b6aab33c9472e8e4fa52e19/src/clipboard-action.js#L48\n\nconst copyTextViaExecCommand = text => {\n  // execCommand doesn\'t allow copying empty strings, so if we\'re\n  // clearing clipboard using this API, we must copy at least an empty char\n  if (!text) {\n    text = " ";\n  }\n\n  const isRTL = document.documentElement.getAttribute("dir") === "rtl";\n  const textarea = document.createElement("textarea");\n  textarea.style.border = "0";\n  textarea.style.padding = "0";\n  textarea.style.margin = "0";\n  textarea.style.position = "absolute";\n  textarea.style[isRTL ? "right" : "left"] = "-9999px";\n  const yPosition = window.pageYOffset || document.documentElement.scrollTop;\n  textarea.style.top = `${yPosition}px`; // Prevent zooming on iOS\n\n  textarea.style.fontSize = "12pt";\n  textarea.setAttribute("readonly", "");\n  textarea.value = text;\n  document.body.appendChild(textarea);\n  let success = false;\n\n  try {\n    textarea.select();\n    textarea.setSelectionRange(0, textarea.value.length);\n    success = document.execCommand("copy");\n  } catch (error) {\n    console.error(error);\n  }\n\n  textarea.remove();\n  return success;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 21828 characters]\n//# sourceURL=webpack-internal:///../../clipboard.ts\n');
              }
            ),
            /***/
            "../../colors.ts": (
              /*!***********************!*\
                !*** ../../colors.ts ***!
                \***********************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "CANVAS_PALETTE_SHADE_INDEXES": () => (/* binding */ CANVAS_PALETTE_SHADE_INDEXES),\n/* harmony export */   "COLORS_PER_ROW": () => (/* binding */ COLORS_PER_ROW),\n/* harmony export */   "COLOR_PALETTE": () => (/* binding */ COLOR_PALETTE),\n/* harmony export */   "DEFAULT_CANVAS_BACKGROUND_PICKS": () => (/* binding */ DEFAULT_CANVAS_BACKGROUND_PICKS),\n/* harmony export */   "DEFAULT_CHART_COLOR_INDEX": () => (/* binding */ DEFAULT_CHART_COLOR_INDEX),\n/* harmony export */   "DEFAULT_ELEMENT_BACKGROUND_COLOR_INDEX": () => (/* binding */ DEFAULT_ELEMENT_BACKGROUND_COLOR_INDEX),\n/* harmony export */   "DEFAULT_ELEMENT_BACKGROUND_COLOR_PALETTE": () => (/* binding */ DEFAULT_ELEMENT_BACKGROUND_COLOR_PALETTE),\n/* harmony export */   "DEFAULT_ELEMENT_BACKGROUND_PICKS": () => (/* binding */ DEFAULT_ELEMENT_BACKGROUND_PICKS),\n/* harmony export */   "DEFAULT_ELEMENT_STROKE_COLOR_INDEX": () => (/* binding */ DEFAULT_ELEMENT_STROKE_COLOR_INDEX),\n/* harmony export */   "DEFAULT_ELEMENT_STROKE_COLOR_PALETTE": () => (/* binding */ DEFAULT_ELEMENT_STROKE_COLOR_PALETTE),\n/* harmony export */   "DEFAULT_ELEMENT_STROKE_PICKS": () => (/* binding */ DEFAULT_ELEMENT_STROKE_PICKS),\n/* harmony export */   "ELEMENTS_PALETTE_SHADE_INDEXES": () => (/* binding */ ELEMENTS_PALETTE_SHADE_INDEXES),\n/* harmony export */   "MAX_CUSTOM_COLORS_USED_IN_CANVAS": () => (/* binding */ MAX_CUSTOM_COLORS_USED_IN_CANVAS),\n/* harmony export */   "getAllColorsSpecificShade": () => (/* binding */ getAllColorsSpecificShade),\n/* harmony export */   "getSpecificColorShades": () => (/* binding */ getSpecificColorShades),\n/* harmony export */   "rgbToHex": () => (/* binding */ rgbToHex)\n/* harmony export */ });\n/* harmony import */ var open_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! open-color */ "../../../node_modules/open-color/open-color.json");\n // FIXME can\'t put to utils.ts rn because of circular dependency\n\nconst pick = (source, keys) => {\n  return keys.reduce((acc, key) => {\n    if (key in source) {\n      acc[key] = source[key];\n    }\n\n    return acc;\n  }, {});\n};\n\nconst MAX_CUSTOM_COLORS_USED_IN_CANVAS = 5;\nconst COLORS_PER_ROW = 5;\nconst DEFAULT_CHART_COLOR_INDEX = 4;\nconst DEFAULT_ELEMENT_STROKE_COLOR_INDEX = 4;\nconst DEFAULT_ELEMENT_BACKGROUND_COLOR_INDEX = 1;\nconst ELEMENTS_PALETTE_SHADE_INDEXES = [0, 2, 4, 6, 8];\nconst CANVAS_PALETTE_SHADE_INDEXES = [0, 1, 2, 3, 4];\nconst getSpecificColorShades = (color, indexArr) => {\n  return indexArr.map(index => open_color__WEBPACK_IMPORTED_MODULE_0__[color][index]);\n};\nconst COLOR_PALETTE = {\n  transparent: "transparent",\n  black: "#1e1e1e",\n  white: "#ffffff",\n  // open-colors\n  gray: getSpecificColorShades("gray", ELEMENTS_PALETTE_SHADE_INDEXES),\n  red: getSpecificColorShades("red", ELEMENTS_PALETTE_SHADE_INDEXES),\n  pink: getSpecificColorShades("pink", ELEMENTS_PALETTE_SHADE_INDEXES),\n  grape: getSpecificColorShades("grape", ELEMENTS_PALETTE_SHADE_INDEXES),\n  violet: getSpecificColorShades("violet", ELEMENTS_PALETTE_SHADE_INDEXES),\n  blue: getSpecificColorShades("blue", ELEMENTS_PALETTE_SHADE_INDEXES),\n  cyan: getSpecificColorShades("cyan", ELEMENTS_PALETTE_SHADE_INDEXES),\n  teal: getSpecificColorShades("teal", ELEMENTS_PALETTE_SHADE_INDEXES),\n  green: getSpecificColorShades("green", ELEMENTS_PALETTE_SHADE_INDEXES),\n  yellow: getSpecificColorShades("yellow", ELEMENTS_PALETTE_SHADE_INDEXES),\n  orange: getSpecificColorShades("orange", ELEMENTS_PALETTE_SHADE_INDEXES),\n  // radix bronze shades 3,5,7,9,11\n  bronze: ["#f8f1ee", "#eaddd7", "#d2bab0", "#a18072", "#846358"]\n};\nconst COMMON_ELEMENT_SHADES = pick(COLOR_PALETTE, ["cyan", "blue", "violet", "grape", "pink", "green", "teal", "yellow", "orange", "red"]); // -----------------------------------------------------------------------------\n// quick picks defaults\n// -----------------------------------------------------------------------------\n// ORDER matters for positioning in quick picker\n\nconst DEFAULT_ELEMENT_STROKE_PICKS = [COLOR_PALETTE.black, COLOR_PALETTE.red[DEFAULT_ELEMENT_STROKE_COLOR_INDEX], COLOR_PALETTE.green[DEFAULT_ELEMENT_STROKE_COLOR_INDEX], COLOR_PALETTE.blue[DEFAULT_ELEMENT_STROKE_COLOR_INDEX], COLOR_PALETTE.yellow[DEFAULT_ELEMENT_STROKE_COLOR_INDEX]]; // ORDER matters for positioning in quick picker\n\nconst DEFAULT_ELEMENT_BACKGROUND_PICKS = [COLOR_PALETTE.transparent, COLOR_PALETTE.red[DEFAULT_ELEMENT_BACKGROUND_COLOR_INDEX], COLOR_PALETTE.green[DEFAULT_ELEMENT_BACKGROUND_COLOR_INDEX], COLOR_PALETTE.blue[DEFAULT_ELEMENT_BACKGROUND_COLOR_INDEX], COLOR_PALETTE.yellow[DEFAULT_ELEMENT_BACKGROUND_COLOR_INDEX]]; // ORDER matters for positioning in quick picker\n\nconst DEFAULT_CANVAS_BACKGROUND_PICKS = [COLOR_PALETTE.white, // radix slate2\n"#f8f9fa", // radix blue2\n"#f5faff", // radix yellow2\n"#fffce8", // radix bronze2\n"#fdf8f6"]; // -----------------------------------------------------------------------------\n// palette defaults\n// -----------------------------------------------------------------------------\n\nconst DEFAULT_ELEMENT_STROKE_COLOR_PALETTE = Object.assign({\n  // 1st row\n  transparent: COLOR_PALETTE.transparent,\n  white: COLOR_PALETTE.white,\n  gray: COLOR_PALETTE.gray,\n  black: COLOR_PALETTE.black,\n  bronze: COLOR_PALETTE.bronze\n}, COMMON_ELEMENT_SHADES); // ORDER matters for positioning in pallete (5x3 grid)s\n\nconst DEFAULT_ELEMENT_BACKGROUND_COLOR_PALETTE = Object.assign({\n  transparent: COLOR_PALETTE.transparent,\n  white: COLOR_PALETTE.white,\n  gray: COLOR_PALETTE.gray,\n  black: COLOR_PALETTE.black,\n  bronze: COLOR_PALETTE.bronze\n}, COMMON_ELEMENT_SHADES); // -----------------------------------------------------------------------------\n// helpers\n// -----------------------------------------------------------------------------\n// !!!MUST BE WITHOUT GRAY, TRANSPARENT AND BLACK!!!\n\nconst getAllColorsSpecificShade = index => [// 2nd row\nCOLOR_PALETTE.cyan[index], COLOR_PALETTE.blue[index], COLOR_PALETTE.violet[index], COLOR_PALETTE.grape[index], COLOR_PALETTE.pink[index], // 3rd row\nCOLOR_PALETTE.green[index], COLOR_PALETTE.teal[index], COLOR_PALETTE.yellow[index], COLOR_PALETTE.orange[index], COLOR_PALETTE.red[index]];\nconst rgbToHex = (r, g, b) => `#${((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1)}`; // -----------------------------------------------------------------------------//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 7144 characters]\n//# sourceURL=webpack-internal:///../../colors.ts\n');
              }
            ),
            /***/
            "../../components/Actions.tsx": (
              /*!************************************!*\
                !*** ../../components/Actions.tsx ***!
                \************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "ExitZenModeAction": () => (/* binding */ ExitZenModeAction),\n/* harmony export */   "FinalizeAction": () => (/* binding */ FinalizeAction),\n/* harmony export */   "SelectedShapeActions": () => (/* binding */ SelectedShapeActions),\n/* harmony export */   "ShapesSwitcher": () => (/* binding */ ShapesSwitcher),\n/* harmony export */   "UndoRedoActions": () => (/* binding */ UndoRedoActions),\n/* harmony export */   "ZoomActions": () => (/* binding */ ZoomActions)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _components_App__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../components/App */ "../../components/App.tsx");\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../scene */ "../../scene/index.ts");\n/* harmony import */ var _shapes__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../shapes */ "../../shapes.tsx");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _Stack__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Stack */ "../../components/Stack.tsx");\n/* harmony import */ var _ToolButton__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./ToolButton */ "../../components/ToolButton.tsx");\n/* harmony import */ var _scene_comparisons__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../scene/comparisons */ "../../scene/comparisons.ts");\n/* harmony import */ var _analytics__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../analytics */ "../../analytics.ts");\n/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../element/typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../actions */ "../../actions/index.ts");\n/* harmony import */ var _Tooltip__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./Tooltip */ "../../components/Tooltip.tsx");\n/* harmony import */ var _element_textElement__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../element/textElement */ "../../element/textElement.ts");\n/* harmony import */ var _Actions_scss__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./Actions.scss */ "../../components/Actions.scss");\n/* harmony import */ var _dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./dropdownMenu/DropdownMenu */ "../../components/dropdownMenu/DropdownMenu.tsx");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./icons */ "../../components/icons.tsx");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst SelectedShapeActions = ({\n  appState,\n  elements,\n  renderAction\n}) => {\n  var _a;\n\n  const targetElements = (0,_scene__WEBPACK_IMPORTED_MODULE_5__.getTargetElements)((0,_element__WEBPACK_IMPORTED_MODULE_2__.getNonDeletedElements)(elements), appState);\n  let isSingleElementBoundContainer = false;\n\n  if (targetElements.length === 2 && ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_12__.hasBoundTextElement)(targetElements[0]) || (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_12__.hasBoundTextElement)(targetElements[1]))) {\n    isSingleElementBoundContainer = true;\n  }\n\n  const isEditing = Boolean(appState.editingElement);\n  const device = (0,_components_App__WEBPACK_IMPORTED_MODULE_4__.useDevice)();\n  const isRTL = document.documentElement.getAttribute("dir") === "rtl";\n  const showFillIcons = (0,_scene__WEBPACK_IMPORTED_MODULE_5__.hasBackground)(appState.activeTool.type) && !(0,_utils__WEBPACK_IMPORTED_MODULE_7__.isTransparent)(appState.currentItemBackgroundColor) || targetElements.some(element => (0,_scene__WEBPACK_IMPORTED_MODULE_5__.hasBackground)(element.type) && !(0,_utils__WEBPACK_IMPORTED_MODULE_7__.isTransparent)(element.backgroundColor));\n  const showChangeBackgroundIcons = (0,_scene__WEBPACK_IMPORTED_MODULE_5__.hasBackground)(appState.activeTool.type) || targetElements.some(element => (0,_scene__WEBPACK_IMPORTED_MODULE_5__.hasBackground)(element.type));\n  const showLinkIcon = targetElements.length === 1 || isSingleElementBoundContainer;\n  let commonSelectedType = ((_a = targetElements[0]) === null || _a === void 0 ? void 0 : _a.type) || null;\n\n  for (const element of targetElements) {\n    if (element.type !== commonSelectedType) {\n      commonSelectedType = null;\n      break;\n    }\n  }\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n    className: "panelColumn"\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n      children: ((0,_scene_comparisons__WEBPACK_IMPORTED_MODULE_10__.hasStrokeColor)(appState.activeTool.type) && appState.activeTool.type !== "image" && commonSelectedType !== "image" && commonSelectedType !== "frame" || targetElements.some(element => (0,_scene_comparisons__WEBPACK_IMPORTED_MODULE_10__.hasStrokeColor)(element.type))) && renderAction("changeStrokeColor")\n    }), showChangeBackgroundIcons && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n      children: renderAction("changeBackgroundColor")\n    }), showFillIcons && renderAction("changeFillStyle"), ((0,_scene__WEBPACK_IMPORTED_MODULE_5__.hasStrokeWidth)(appState.activeTool.type) || targetElements.some(element => (0,_scene__WEBPACK_IMPORTED_MODULE_5__.hasStrokeWidth)(element.type))) && renderAction("changeStrokeWidth"), (appState.activeTool.type === "freedraw" || targetElements.some(element => element.type === "freedraw")) && renderAction("changeStrokeShape"), ((0,_scene__WEBPACK_IMPORTED_MODULE_5__.hasStrokeStyle)(appState.activeTool.type) || targetElements.some(element => (0,_scene__WEBPACK_IMPORTED_MODULE_5__.hasStrokeStyle)(element.type))) && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n      children: [renderAction("changeStrokeStyle"), renderAction("changeSloppiness")]\n    }), ((0,_scene__WEBPACK_IMPORTED_MODULE_5__.canChangeRoundness)(appState.activeTool.type) || targetElements.some(element => (0,_scene__WEBPACK_IMPORTED_MODULE_5__.canChangeRoundness)(element.type))) && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n      children: renderAction("changeRoundness")\n    }), (appState.activeTool.type === "text" || targetElements.some(_element_typeChecks__WEBPACK_IMPORTED_MODULE_12__.isTextElement)) && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n      children: [renderAction("changeFontSize"), renderAction("changeFontFamily"), (appState.activeTool.type === "text" || (0,_element_textElement__WEBPACK_IMPORTED_MODULE_16__.suppportsHorizontalAlign)(targetElements)) && renderAction("changeTextAlign")]\n    }), (0,_element_textElement__WEBPACK_IMPORTED_MODULE_16__.shouldAllowVerticalAlign)(targetElements) && renderAction("changeVerticalAlign"), ((0,_scene__WEBPACK_IMPORTED_MODULE_5__.canHaveArrowheads)(appState.activeTool.type) || targetElements.some(element => (0,_scene__WEBPACK_IMPORTED_MODULE_5__.canHaveArrowheads)(element.type))) && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n      children: renderAction("changeArrowhead")\n    }), renderAction("changeOpacity"), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("fieldset", {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("legend", {\n        children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("labels.layers")\n      }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n        className: "buttonList"\n      }, {\n        children: [renderAction("sendToBack"), renderAction("sendBackward"), renderAction("bringToFront"), renderAction("bringForward")]\n      }))]\n    }), targetElements.length > 1 && !isSingleElementBoundContainer && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("fieldset", {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("legend", {\n        children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("labels.align")\n      }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n        className: "buttonList"\n      }, {\n        children: [isRTL ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n          children: [renderAction("alignRight"), renderAction("alignHorizontallyCentered"), renderAction("alignLeft")]\n        }) : (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n          children: [renderAction("alignLeft"), renderAction("alignHorizontallyCentered"), renderAction("alignRight")]\n        }), targetElements.length > 2 && renderAction("distributeHorizontally"), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n          style: {\n            flexBasis: "100%",\n            height: 0\n          }\n        }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n          style: {\n            display: "flex",\n            flexWrap: "wrap",\n            gap: ".5rem",\n            marginTop: "-0.5rem"\n          }\n        }, {\n          children: [renderAction("alignTop"), renderAction("alignVerticallyCentered"), renderAction("alignBottom"), targetElements.length > 2 && renderAction("distributeVertically")]\n        }))]\n      }))]\n    }), !isEditing && targetElements.length > 0 && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("fieldset", {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("legend", {\n        children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("labels.actions")\n      }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n        className: "buttonList"\n      }, {\n        children: [!device.editor.isMobile && renderAction("duplicateSelection"), !device.editor.isMobile && renderAction("deleteSelectedElements"), renderAction("group"), renderAction("ungroup"), showLinkIcon && renderAction("hyperlink")]\n      }))]\n    })]\n  }));\n};\nconst ShapesSwitcher = ({\n  activeTool,\n  appState,\n  app,\n  UIOptions\n}) => {\n  const [isExtraToolsMenuOpen, setIsExtraToolsMenuOpen] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n  const frameToolSelected = activeTool.type === "frame";\n  const laserToolSelected = activeTool.type === "laser";\n  const embeddableToolSelected = activeTool.type === "embeddable";\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n    children: [_shapes__WEBPACK_IMPORTED_MODULE_6__.SHAPES.map(({\n      value,\n      icon,\n      key,\n      numericKey,\n      fillable\n    }, index) => {\n      var _a;\n\n      if (((_a = UIOptions.tools) === null || _a === void 0 ? void 0 : _a[value]) === false) {\n        return null;\n      }\n\n      const label = (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)(`toolBar.${value}`);\n      const letter = key && (0,_utils__WEBPACK_IMPORTED_MODULE_7__.capitalizeString)(typeof key === "string" ? key : key[0]);\n      const shortcut = letter ? `${letter} ${(0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("helpDialog.or")} ${numericKey}` : `${numericKey}`;\n      return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ToolButton__WEBPACK_IMPORTED_MODULE_9__.ToolButton, {\n        className: (0,clsx__WEBPACK_IMPORTED_MODULE_13__["default"])("Shape", {\n          fillable\n        }),\n        type: "radio",\n        icon: icon,\n        checked: activeTool.type === value,\n        name: "editor-current-shape",\n        title: `${(0,_utils__WEBPACK_IMPORTED_MODULE_7__.capitalizeString)(label)} \u2014 ${shortcut}`,\n        keyBindingLabel: numericKey || letter,\n        "aria-label": (0,_utils__WEBPACK_IMPORTED_MODULE_7__.capitalizeString)(label),\n        "aria-keyshortcuts": shortcut,\n        "data-testid": `toolbar-${value}`,\n        onPointerDown: ({\n          pointerType\n        }) => {\n          if (!appState.penDetected && pointerType === "pen") {\n            app.togglePenMode(true);\n          }\n        },\n        onChange: ({\n          pointerType\n        }) => {\n          if (appState.activeTool.type !== value) {\n            (0,_analytics__WEBPACK_IMPORTED_MODULE_11__.trackEvent)("toolbar", value, "ui");\n          }\n\n          if (value === "image") {\n            app.setActiveTool({\n              type: value,\n              insertOnCanvasDirectly: pointerType !== "mouse"\n            });\n          } else {\n            app.setActiveTool({\n              type: value\n            });\n          }\n        }\n      }, value);\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n      className: "App-toolbar__divider"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_18__["default"], Object.assign({\n      open: isExtraToolsMenuOpen\n    }, {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_18__["default"].Trigger, Object.assign({\n        className: (0,clsx__WEBPACK_IMPORTED_MODULE_13__["default"])("App-toolbar__extra-tools-trigger", {\n          "App-toolbar__extra-tools-trigger--selected": frameToolSelected || embeddableToolSelected || // in collab we\'re already highlighting the laser button\n          // outside toolbar, so let\'s not highlight extra-tools button\n          // on top of it\n          laserToolSelected && !app.props.isCollaborating\n        }),\n        onToggle: () => setIsExtraToolsMenuOpen(!isExtraToolsMenuOpen),\n        title: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("toolBar.extraTools")\n      }, {\n        children: _icons__WEBPACK_IMPORTED_MODULE_19__.extraToolsIcon\n      })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_18__["default"].Content, Object.assign({\n        onClickOutside: () => setIsExtraToolsMenuOpen(false),\n        onSelect: () => setIsExtraToolsMenuOpen(false),\n        className: "App-toolbar__extra-tools-dropdown"\n      }, {\n        children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_18__["default"].Item, Object.assign({\n          onSelect: () => app.setActiveTool({\n            type: "frame"\n          }),\n          icon: _icons__WEBPACK_IMPORTED_MODULE_19__.frameToolIcon,\n          shortcut: _keys__WEBPACK_IMPORTED_MODULE_20__.KEYS.F.toLocaleUpperCase(),\n          "data-testid": "toolbar-frame",\n          selected: frameToolSelected\n        }, {\n          children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("toolBar.frame")\n        })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_18__["default"].Item, Object.assign({\n          onSelect: () => app.setActiveTool({\n            type: "embeddable"\n          }),\n          icon: _icons__WEBPACK_IMPORTED_MODULE_19__.EmbedIcon,\n          "data-testid": "toolbar-embeddable",\n          selected: embeddableToolSelected\n        }, {\n          children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("toolBar.embeddable")\n        })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_18__["default"].Item, Object.assign({\n          onSelect: () => app.setActiveTool({\n            type: "laser"\n          }),\n          icon: _icons__WEBPACK_IMPORTED_MODULE_19__.laserPointerToolIcon,\n          "data-testid": "toolbar-laser",\n          selected: laserToolSelected,\n          shortcut: _keys__WEBPACK_IMPORTED_MODULE_20__.KEYS.K.toLocaleUpperCase()\n        }, {\n          children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("toolBar.laser")\n        })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_18__["default"].Item, Object.assign({\n          onSelect: () => app.setOpenDialog("mermaid"),\n          icon: _icons__WEBPACK_IMPORTED_MODULE_19__.mermaidLogoIcon,\n          "data-testid": "toolbar-embeddable"\n        }, {\n          children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("toolBar.mermaidToExcalidraw")\n        }))]\n      }))]\n    }))]\n  });\n};\nconst ZoomActions = ({\n  renderAction,\n  zoom\n}) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Stack__WEBPACK_IMPORTED_MODULE_8__["default"].Col, Object.assign({\n  gap: 1,\n  className: "zoom-actions"\n}, {\n  children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Stack__WEBPACK_IMPORTED_MODULE_8__["default"].Row, Object.assign({\n    align: "center"\n  }, {\n    children: [renderAction("zoomOut"), renderAction("resetZoom"), renderAction("zoomIn")]\n  }))\n}));\nconst UndoRedoActions = ({\n  renderAction,\n  className\n}) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n  className: `undo-redo-buttons ${className}`\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: "undo-button-container"\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Tooltip__WEBPACK_IMPORTED_MODULE_15__.Tooltip, Object.assign({\n      label: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("buttons.undo")\n    }, {\n      children: renderAction("undo")\n    }))\n  })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: "redo-button-container"\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Tooltip__WEBPACK_IMPORTED_MODULE_15__.Tooltip, Object.assign({\n      label: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("buttons.redo")\n    }, {\n      children: [" ", renderAction("redo")]\n    }))\n  }))]\n}));\nconst ExitZenModeAction = ({\n  actionManager,\n  showExitZenModeBtn\n}) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("button", Object.assign({\n  className: (0,clsx__WEBPACK_IMPORTED_MODULE_13__["default"])("disable-zen-mode", {\n    "disable-zen-mode--visible": showExitZenModeBtn\n  }),\n  onClick: () => actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_14__.actionToggleZenMode)\n}, {\n  children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("buttons.exitZenMode")\n}));\nconst FinalizeAction = ({\n  renderAction,\n  className\n}) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n  className: `finalize-button ${className}`\n}, {\n  children: renderAction("finalize", {\n    size: "small"\n  })\n}));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 21548 characters]\n//# sourceURL=webpack-internal:///../../components/Actions.tsx\n');
              }
            ),
            /***/
            "../../components/ActiveConfirmDialog.tsx": (
              /*!************************************************!*\
                !*** ../../components/ActiveConfirmDialog.tsx ***!
                \************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "ActiveConfirmDialog": () => (/* binding */ ActiveConfirmDialog),\n/* harmony export */   "activeConfirmDialogAtom": () => (/* binding */ activeConfirmDialogAtom)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var jotai__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! jotai */ "../../../node_modules/jotai/esm/index.mjs");\n/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../actions */ "../../actions/index.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _jotai__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../jotai */ "../../jotai.ts");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./App */ "../../components/App.tsx");\n/* harmony import */ var _ConfirmDialog__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./ConfirmDialog */ "../../components/ConfirmDialog.tsx");\n\n\n\n\n\n\n\nconst activeConfirmDialogAtom = (0,jotai__WEBPACK_IMPORTED_MODULE_6__.atom)(null);\nconst ActiveConfirmDialog = () => {\n  const [activeConfirmDialog, setActiveConfirmDialog] = (0,jotai__WEBPACK_IMPORTED_MODULE_6__.useAtom)(activeConfirmDialogAtom, _jotai__WEBPACK_IMPORTED_MODULE_3__.jotaiScope);\n  const actionManager = (0,_App__WEBPACK_IMPORTED_MODULE_4__.useExcalidrawActionManager)();\n\n  if (!activeConfirmDialog) {\n    return null;\n  }\n\n  if (activeConfirmDialog === "clearCanvas") {\n    return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ConfirmDialog__WEBPACK_IMPORTED_MODULE_5__["default"], Object.assign({\n      onConfirm: () => {\n        actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_1__.actionClearCanvas);\n        setActiveConfirmDialog(null);\n      },\n      onCancel: () => setActiveConfirmDialog(null),\n      title: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("clearCanvasDialog.title")\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("p", Object.assign({\n        className: "clear-canvas__content"\n      }, {\n        children: [" ", (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("alerts.clearReset")]\n      }))\n    }));\n  }\n\n  return null;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9BY3RpdmVDb25maXJtRGlhbG9nLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQStEO0FBQ3pCO0FBQ1M7QUFDbkI7QUFDVTtBQUNhO0FBQ1A7QUFDckMsZ0NBQWdDLDJDQUFJO0FBQ3BDO0FBQ1Asd0RBQXdELDhDQUFPLDBCQUEwQiw4Q0FBVTtBQUNuRyx3QkFBd0IsZ0VBQTBCOztBQUVsRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLHNEQUFJLENBQUMsc0RBQWE7QUFDN0I7QUFDQSxvQ0FBb0MsdURBQWlCO0FBQ3JEO0FBQ0EsT0FBTztBQUNQO0FBQ0EsYUFBYSx3Q0FBQztBQUNkLEtBQUs7QUFDTCxnQkFBZ0IsdURBQUs7QUFDckI7QUFDQSxPQUFPO0FBQ1Asd0JBQXdCLHdDQUFDO0FBQ3pCLE9BQU87QUFDUCxLQUFLO0FBQ0w7O0FBRUE7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL0FjdGl2ZUNvbmZpcm1EaWFsb2cudHN4PzcwOWQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsganN4cyBhcyBfanN4cywganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGF0b20sIHVzZUF0b20gfSBmcm9tIFwiam90YWlcIjtcbmltcG9ydCB7IGFjdGlvbkNsZWFyQ2FudmFzIH0gZnJvbSBcIi4uL2FjdGlvbnNcIjtcbmltcG9ydCB7IHQgfSBmcm9tIFwiLi4vaTE4blwiO1xuaW1wb3J0IHsgam90YWlTY29wZSB9IGZyb20gXCIuLi9qb3RhaVwiO1xuaW1wb3J0IHsgdXNlRXhjYWxpZHJhd0FjdGlvbk1hbmFnZXIgfSBmcm9tIFwiLi9BcHBcIjtcbmltcG9ydCBDb25maXJtRGlhbG9nIGZyb20gXCIuL0NvbmZpcm1EaWFsb2dcIjtcbmV4cG9ydCBjb25zdCBhY3RpdmVDb25maXJtRGlhbG9nQXRvbSA9IGF0b20obnVsbCk7XG5leHBvcnQgY29uc3QgQWN0aXZlQ29uZmlybURpYWxvZyA9ICgpID0+IHtcbiAgY29uc3QgW2FjdGl2ZUNvbmZpcm1EaWFsb2csIHNldEFjdGl2ZUNvbmZpcm1EaWFsb2ddID0gdXNlQXRvbShhY3RpdmVDb25maXJtRGlhbG9nQXRvbSwgam90YWlTY29wZSk7XG4gIGNvbnN0IGFjdGlvbk1hbmFnZXIgPSB1c2VFeGNhbGlkcmF3QWN0aW9uTWFuYWdlcigpO1xuXG4gIGlmICghYWN0aXZlQ29uZmlybURpYWxvZykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYgKGFjdGl2ZUNvbmZpcm1EaWFsb2cgPT09IFwiY2xlYXJDYW52YXNcIikge1xuICAgIHJldHVybiBfanN4KENvbmZpcm1EaWFsb2csIE9iamVjdC5hc3NpZ24oe1xuICAgICAgb25Db25maXJtOiAoKSA9PiB7XG4gICAgICAgIGFjdGlvbk1hbmFnZXIuZXhlY3V0ZUFjdGlvbihhY3Rpb25DbGVhckNhbnZhcyk7XG4gICAgICAgIHNldEFjdGl2ZUNvbmZpcm1EaWFsb2cobnVsbCk7XG4gICAgICB9LFxuICAgICAgb25DYW5jZWw6ICgpID0+IHNldEFjdGl2ZUNvbmZpcm1EaWFsb2cobnVsbCksXG4gICAgICB0aXRsZTogdChcImNsZWFyQ2FudmFzRGlhbG9nLnRpdGxlXCIpXG4gICAgfSwge1xuICAgICAgY2hpbGRyZW46IF9qc3hzKFwicFwiLCBPYmplY3QuYXNzaWduKHtcbiAgICAgICAgY2xhc3NOYW1lOiBcImNsZWFyLWNhbnZhc19fY29udGVudFwiXG4gICAgICB9LCB7XG4gICAgICAgIGNoaWxkcmVuOiBbXCIgXCIsIHQoXCJhbGVydHMuY2xlYXJSZXNldFwiKV1cbiAgICAgIH0pKVxuICAgIH0pKTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/ActiveConfirmDialog.tsx\n');
              }
            ),
            /***/
            "../../components/App.tsx": (
              /*!********************************!*\
                !*** ../../components/App.tsx ***!
                \********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "ExcalidrawContainerContext": () => (/* binding */ ExcalidrawContainerContext),\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */   "useApp": () => (/* binding */ useApp),\n/* harmony export */   "useAppProps": () => (/* binding */ useAppProps),\n/* harmony export */   "useDevice": () => (/* binding */ useDevice),\n/* harmony export */   "useExcalidrawActionManager": () => (/* binding */ useExcalidrawActionManager),\n/* harmony export */   "useExcalidrawAppState": () => (/* binding */ useExcalidrawAppState),\n/* harmony export */   "useExcalidrawContainer": () => (/* binding */ useExcalidrawContainer),\n/* harmony export */   "useExcalidrawElements": () => (/* binding */ useExcalidrawElements),\n/* harmony export */   "useExcalidrawSetAppState": () => (/* binding */ useExcalidrawSetAppState)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-dom */ "react-dom");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! roughjs/bin/rough */ "../../../node_modules/roughjs/bin/rough.js");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var nanoid__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(/*! nanoid */ "../../../node_modules/nanoid/index.browser.js");\n/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../actions */ "../../actions/index.ts");\n/* harmony import */ var _actions_actionHistory__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../actions/actionHistory */ "../../actions/actionHistory.tsx");\n/* harmony import */ var _actions_manager__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../actions/manager */ "../../actions/manager.tsx");\n/* harmony import */ var _actions_register__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../actions/register */ "../../actions/register.ts");\n/* harmony import */ var _analytics__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../analytics */ "../../analytics.ts");\n/* harmony import */ var _appState__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../appState */ "../../appState.ts");\n/* harmony import */ var _clipboard__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../clipboard */ "../../clipboard.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _data__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../data */ "../../data/index.ts");\n/* harmony import */ var _data_library__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../data/library */ "../../data/library.ts");\n/* harmony import */ var _data_restore__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../data/restore */ "../../data/restore.ts");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _element_binding__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../element/binding */ "../../element/binding.ts");\n/* harmony import */ var _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../element/linearElementEditor */ "../../element/linearElementEditor.ts");\n/* harmony import */ var _element_mutateElement__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../element/mutateElement */ "../../element/mutateElement.ts");\n/* harmony import */ var _element_newElement__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../element/newElement */ "../../element/newElement.ts");\n/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../element/typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var _gesture__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../gesture */ "../../gesture.ts");\n/* harmony import */ var _groups__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../groups */ "../../groups.ts");\n/* harmony import */ var _history__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../history */ "../../history.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _element_sizeHelpers__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ../element/sizeHelpers */ "../../element/sizeHelpers.ts");\n/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ../math */ "../../math.ts");\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ../scene */ "../../scene/index.ts");\n/* harmony import */ var _scene_Scene__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ../scene/Scene */ "../../scene/Scene.ts");\n/* harmony import */ var _scene_zoom__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ../scene/zoom */ "../../scene/zoom.ts");\n/* harmony import */ var _shapes__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ../shapes */ "../../shapes.tsx");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _element_embeddable__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ../element/embeddable */ "../../element/embeddable.ts");\n/* harmony import */ var _ContextMenu__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./ContextMenu */ "../../components/ContextMenu.tsx");\n/* harmony import */ var _LayerUI__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./LayerUI */ "../../components/LayerUI.tsx");\n/* harmony import */ var _Toast__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./Toast */ "../../components/Toast.tsx");\n/* harmony import */ var _actions_actionToggleViewMode__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ../actions/actionToggleViewMode */ "../../actions/actionToggleViewMode.tsx");\n/* harmony import */ var _data_blob__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ../data/blob */ "../../data/blob.ts");\n/* harmony import */ var _element_image__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ../element/image */ "../../element/image.ts");\n/* harmony import */ var lodash_throttle__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! lodash.throttle */ "../../../node_modules/lodash.throttle/index.js");\n/* harmony import */ var lodash_throttle__WEBPACK_IMPORTED_MODULE_41___default = /*#__PURE__*/__webpack_require__.n(lodash_throttle__WEBPACK_IMPORTED_MODULE_41__);\n/* harmony import */ var _data_filesystem__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ../data/filesystem */ "../../data/filesystem.ts");\n/* harmony import */ var _element_textElement__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ../element/textElement */ "../../element/textElement.ts");\n/* harmony import */ var _element_collision__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ../element/collision */ "../../element/collision.ts");\n/* harmony import */ var _element_Hyperlink__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ../element/Hyperlink */ "../../element/Hyperlink.tsx");\n/* harmony import */ var _data_url__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ../data/url */ "../../data/url.ts");\n/* harmony import */ var _element_transformHandles__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! ../element/transformHandles */ "../../element/transformHandles.ts");\n/* harmony import */ var _actions_actionElementLock__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! ../actions/actionElementLock */ "../../actions/actionElementLock.ts");\n/* harmony import */ var _scene_Fonts__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(/*! ../scene/Fonts */ "../../scene/Fonts.ts");\n/* harmony import */ var _frame__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(/*! ../frame */ "../../frame.ts");\n/* harmony import */ var _scene_selection__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(/*! ../scene/selection */ "../../scene/selection.ts");\n/* harmony import */ var _actions_actionClipboard__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(/*! ../actions/actionClipboard */ "../../actions/actionClipboard.tsx");\n/* harmony import */ var _actions_actionFrame__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(/*! ../actions/actionFrame */ "../../actions/actionFrame.ts");\n/* harmony import */ var _actions_actionCanvas__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(/*! ../actions/actionCanvas */ "../../actions/actionCanvas.tsx");\n/* harmony import */ var _jotai__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(/*! ../jotai */ "../../jotai.ts");\n/* harmony import */ var _ActiveConfirmDialog__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(/*! ./ActiveConfirmDialog */ "../../components/ActiveConfirmDialog.tsx");\n/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(/*! ../errors */ "../../errors.ts");\n/* harmony import */ var _snapping__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(/*! ../snapping */ "../../snapping.ts");\n/* harmony import */ var _actions_actionBoundText__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(/*! ../actions/actionBoundText */ "../../actions/actionBoundText.tsx");\n/* harmony import */ var _BraveMeasureTextError__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(/*! ./BraveMeasureTextError */ "../../components/BraveMeasureTextError.tsx");\n/* harmony import */ var _EyeDropper__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(/*! ./EyeDropper */ "../../components/EyeDropper.tsx");\n/* harmony import */ var _data_transform__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(/*! ../data/transform */ "../../data/transform.ts");\n/* harmony import */ var _Sidebar_Sidebar__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(/*! ./Sidebar/Sidebar */ "../../components/Sidebar/Sidebar.tsx");\n/* harmony import */ var _canvases__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(/*! ./canvases */ "../../components/canvases/index.tsx");\n/* harmony import */ var _scene_Renderer__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(/*! ../scene/Renderer */ "../../scene/Renderer.ts");\n/* harmony import */ var _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(/*! ../scene/ShapeCache */ "../../scene/ShapeCache.ts");\n/* harmony import */ var _MermaidToExcalidraw__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(/*! ./MermaidToExcalidraw */ "../../components/MermaidToExcalidraw.tsx");\n/* harmony import */ var _LaserTool_LaserTool__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(/*! ./LaserTool/LaserTool */ "../../components/LaserTool/LaserTool.tsx");\n/* harmony import */ var _LaserTool_LaserPathManager__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(/*! ./LaserTool/LaserPathManager */ "../../components/LaserTool/LaserPathManager.ts");\n/* harmony import */ var _cursor__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(/*! ../cursor */ "../../cursor.ts");\n/* harmony import */ var _emitter__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(/*! ../emitter */ "../../emitter.ts");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator["throw"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst AppContext = react__WEBPACK_IMPORTED_MODULE_1___default().createContext(null);\nconst AppPropsContext = react__WEBPACK_IMPORTED_MODULE_1___default().createContext(null);\nconst deviceContextInitialValue = {\n  viewport: {\n    isMobile: false,\n    isLandscape: false\n  },\n  editor: {\n    isMobile: false,\n    canFitSidebar: false\n  },\n  isTouchScreen: false\n};\nconst DeviceContext = react__WEBPACK_IMPORTED_MODULE_1___default().createContext(deviceContextInitialValue);\nDeviceContext.displayName = "DeviceContext";\nconst ExcalidrawContainerContext = react__WEBPACK_IMPORTED_MODULE_1___default().createContext({\n  container: null,\n  id: null\n});\nExcalidrawContainerContext.displayName = "ExcalidrawContainerContext";\nconst ExcalidrawElementsContext = react__WEBPACK_IMPORTED_MODULE_1___default().createContext([]);\nExcalidrawElementsContext.displayName = "ExcalidrawElementsContext";\nconst ExcalidrawAppStateContext = react__WEBPACK_IMPORTED_MODULE_1___default().createContext(Object.assign(Object.assign({}, (0,_appState__WEBPACK_IMPORTED_MODULE_10__.getDefaultAppState)()), {\n  width: 0,\n  height: 0,\n  offsetLeft: 0,\n  offsetTop: 0\n}));\nExcalidrawAppStateContext.displayName = "ExcalidrawAppStateContext";\nconst ExcalidrawSetAppStateContext = react__WEBPACK_IMPORTED_MODULE_1___default().createContext(() => {\n  console.warn("unitialized ExcalidrawSetAppStateContext context!");\n});\nExcalidrawSetAppStateContext.displayName = "ExcalidrawSetAppStateContext";\nconst ExcalidrawActionManagerContext = react__WEBPACK_IMPORTED_MODULE_1___default().createContext(null);\nExcalidrawActionManagerContext.displayName = "ExcalidrawActionManagerContext";\nconst useApp = () => (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(AppContext);\nconst useAppProps = () => (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(AppPropsContext);\nconst useDevice = () => (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(DeviceContext);\nconst useExcalidrawContainer = () => (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(ExcalidrawContainerContext);\nconst useExcalidrawElements = () => (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(ExcalidrawElementsContext);\nconst useExcalidrawAppState = () => (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(ExcalidrawAppStateContext);\nconst useExcalidrawSetAppState = () => (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(ExcalidrawSetAppStateContext);\nconst useExcalidrawActionManager = () => (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(ExcalidrawActionManagerContext);\nconst supportsResizeObserver = typeof window !== "undefined" && "ResizeObserver" in window;\nlet didTapTwice = false;\nlet tappedTwiceTimer = 0;\nlet isHoldingSpace = false;\nlet isPanning = false;\nlet isDraggingScrollBar = false;\nlet currentScrollBars = {\n  horizontal: null,\n  vertical: null\n};\nlet touchTimeout = 0;\nlet invalidateContextMenu = false;\n/**\n * Map of youtube embed video states\n */\n\nconst YOUTUBE_VIDEO_STATES = new Map();\nlet IS_PLAIN_PASTE = false;\nlet IS_PLAIN_PASTE_TIMER = 0;\nlet PLAIN_PASTE_TOAST_SHOWN = false;\nlet lastPointerUp = null;\nconst gesture = {\n  pointers: new Map(),\n  lastCenter: null,\n  initialDistance: null,\n  initialScale: null\n};\n\nclass App extends (react__WEBPACK_IMPORTED_MODULE_1___default().Component) {\n  constructor(props) {\n    super(props);\n    this.interactiveCanvas = null;\n    this.unmounted = false;\n    this.device = deviceContextInitialValue;\n    this.excalidrawContainerRef = react__WEBPACK_IMPORTED_MODULE_1___default().createRef();\n    this.files = {};\n    this.imageCache = new Map();\n    this.iFrameRefs = new Map();\n    this.lastPointerDownEvent = null;\n    this.lastPointerUpEvent = null;\n    this.lastViewportPosition = {\n      x: 0,\n      y: 0\n    };\n    this.laserPathManager = new _LaserTool_LaserPathManager__WEBPACK_IMPORTED_MODULE_69__.LaserPathManager(this);\n    this.onChangeEmitter = new _emitter__WEBPACK_IMPORTED_MODULE_71__.Emitter();\n    this.onPointerDownEmitter = new _emitter__WEBPACK_IMPORTED_MODULE_71__.Emitter();\n    this.onPointerUpEmitter = new _emitter__WEBPACK_IMPORTED_MODULE_71__.Emitter();\n\n    this.updateEmbeddables = () => {\n      const embeddableElements = new Map();\n      let updated = false;\n      this.scene.getNonDeletedElements().filter(element => {\n        if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isEmbeddableElement)(element)) {\n          embeddableElements.set(element.id, true);\n\n          if (element.validated == null) {\n            updated = true;\n            const validated = (0,_element_embeddable__WEBPACK_IMPORTED_MODULE_34__.embeddableURLValidator)(element.link, this.props.validateEmbeddable);\n            (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(element, {\n              validated\n            }, false);\n            _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_66__.ShapeCache["delete"](element);\n          }\n        }\n\n        return false;\n      });\n\n      if (updated) {\n        this.scene.informMutation();\n      } // GC\n\n\n      this.iFrameRefs.forEach((ref, id) => {\n        if (!embeddableElements.has(id)) {\n          this.iFrameRefs.delete(id);\n        }\n      });\n    };\n\n    this.getFrameNameDOMId = frameElement => {\n      return `${this.id}-frame-name-${frameElement.id}`;\n    };\n\n    this.frameNameBoundsCache = {\n      get: frameElement => {\n        let bounds = this.frameNameBoundsCache._cache.get(frameElement.id);\n\n        if (!bounds || bounds.zoom !== this.state.zoom.value || bounds.versionNonce !== frameElement.versionNonce) {\n          const frameNameDiv = document.getElementById(this.getFrameNameDOMId(frameElement));\n\n          if (frameNameDiv) {\n            const box = frameNameDiv.getBoundingClientRect();\n            const boxSceneTopLeft = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.viewportCoordsToSceneCoords)({\n              clientX: box.x,\n              clientY: box.y\n            }, this.state);\n            const boxSceneBottomRight = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.viewportCoordsToSceneCoords)({\n              clientX: box.right,\n              clientY: box.bottom\n            }, this.state);\n            bounds = {\n              x: boxSceneTopLeft.x,\n              y: boxSceneTopLeft.y,\n              width: boxSceneBottomRight.x - boxSceneTopLeft.x,\n              height: boxSceneBottomRight.y - boxSceneTopLeft.y,\n              angle: 0,\n              zoom: this.state.zoom.value,\n              versionNonce: frameElement.versionNonce\n            };\n\n            this.frameNameBoundsCache._cache.set(frameElement.id, bounds);\n\n            return bounds;\n          }\n\n          return null;\n        }\n\n        return bounds;\n      },\n\n      /**\n       * @private\n       */\n      _cache: new Map()\n    };\n\n    this.renderFrameNames = () => {\n      if (!this.state.frameRendering.enabled || !this.state.frameRendering.name) {\n        return null;\n      }\n\n      const isDarkTheme = this.state.theme === "dark";\n      return this.scene.getNonDeletedFrames().map((f, index) => {\n        if (!(0,_element_sizeHelpers__WEBPACK_IMPORTED_MODULE_27__.isElementInViewport)(f, this.canvas.width / window.devicePixelRatio, this.canvas.height / window.devicePixelRatio, {\n          offsetLeft: this.state.offsetLeft,\n          offsetTop: this.state.offsetTop,\n          scrollX: this.state.scrollX,\n          scrollY: this.state.scrollY,\n          zoom: this.state.zoom\n        })) {\n          // if frame not visible, don\'t render its name\n          return null;\n        }\n\n        const {\n          x: x1,\n          y: y1\n        } = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.sceneCoordsToViewportCoords)({\n          sceneX: f.x,\n          sceneY: f.y\n        }, this.state);\n        const FRAME_NAME_EDIT_PADDING = 6;\n\n        const reset = () => {\n          var _a;\n\n          if (((_a = f.name) === null || _a === void 0 ? void 0 : _a.trim()) === "") {\n            (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(f, {\n              name: null\n            });\n          }\n\n          this.setState({\n            editingFrame: null\n          });\n        };\n\n        let frameNameJSX;\n\n        if (f.id === this.state.editingFrame) {\n          const frameNameInEdit = f.name == null ? `Frame ${index + 1}` : f.name;\n          frameNameJSX = (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input", {\n            autoFocus: true,\n            value: frameNameInEdit,\n            onChange: e => {\n              (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(f, {\n                name: e.target.value\n              });\n            },\n            onBlur: () => reset(),\n            onKeyDown: event => {\n              // for some inexplicable reason, `onBlur` triggered on ESC\n              // does not reset `state.editingFrame` despite being called,\n              // and we need to reset it here as well\n              if (event.key === _keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.ESCAPE || event.key === _keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.ENTER) {\n                reset();\n              }\n            },\n            style: {\n              background: this.state.viewBackgroundColor,\n              filter: isDarkTheme ? _constants__WEBPACK_IMPORTED_MODULE_12__.THEME_FILTER : "none",\n              zIndex: 2,\n              border: "none",\n              display: "block",\n              padding: `${FRAME_NAME_EDIT_PADDING}px`,\n              borderRadius: 4,\n              boxShadow: "inset 0 0 0 1px var(--color-primary)",\n              fontFamily: "Assistant",\n              fontSize: "14px",\n              transform: `translate(-${FRAME_NAME_EDIT_PADDING}px, ${FRAME_NAME_EDIT_PADDING}px)`,\n              color: "var(--color-gray-80)",\n              overflow: "hidden",\n              maxWidth: `${document.body.clientWidth - x1 - FRAME_NAME_EDIT_PADDING}px`\n            },\n            size: frameNameInEdit.length + 1 || 1,\n            dir: "auto",\n            autoComplete: "off",\n            autoCapitalize: "off",\n            autoCorrect: "off"\n          });\n        } else {\n          frameNameJSX = f.name == null || f.name.trim() === "" ? `Frame ${index + 1}` : f.name.trim();\n        }\n\n        return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n          id: this.getFrameNameDOMId(f),\n          style: {\n            position: "absolute",\n            // Positioning from bottom so that we don\'t to either\n            // calculate text height or adjust using transform (which)\n            // messes up input position when editing the frame name.\n            // This makes the positioning deterministic and we can calculate\n            // the same position when rendering to canvas / svg.\n            bottom: `${this.state.height + _constants__WEBPACK_IMPORTED_MODULE_12__.FRAME_STYLE.nameOffsetY - y1 + this.state.offsetTop}px`,\n            left: `${x1 - this.state.offsetLeft}px`,\n            zIndex: 2,\n            fontSize: _constants__WEBPACK_IMPORTED_MODULE_12__.FRAME_STYLE.nameFontSize,\n            color: isDarkTheme ? _constants__WEBPACK_IMPORTED_MODULE_12__.FRAME_STYLE.nameColorDarkTheme : _constants__WEBPACK_IMPORTED_MODULE_12__.FRAME_STYLE.nameColorLightTheme,\n            lineHeight: _constants__WEBPACK_IMPORTED_MODULE_12__.FRAME_STYLE.nameLineHeight,\n            width: "max-content",\n            maxWidth: `${f.width}px`,\n            overflow: f.id === this.state.editingFrame ? "visible" : "hidden",\n            whiteSpace: "nowrap",\n            textOverflow: "ellipsis",\n            cursor: _constants__WEBPACK_IMPORTED_MODULE_12__.CURSOR_TYPE.MOVE,\n            pointerEvents: this.state.viewModeEnabled ? _constants__WEBPACK_IMPORTED_MODULE_12__.POINTER_EVENTS.disabled : _constants__WEBPACK_IMPORTED_MODULE_12__.POINTER_EVENTS.enabled\n          },\n          onPointerDown: event => this.handleCanvasPointerDown(event),\n          onWheel: event => this.handleWheel(event),\n          onContextMenu: this.handleCanvasContextMenu,\n          onDoubleClick: () => {\n            this.setState({\n              editingFrame: f.id\n            });\n          }\n        }, {\n          children: frameNameJSX\n        }), f.id);\n      });\n    };\n\n    this.focusContainer = () => {\n      var _a;\n\n      (_a = this.excalidrawContainerRef.current) === null || _a === void 0 ? void 0 : _a.focus();\n    };\n\n    this.getSceneElementsIncludingDeleted = () => {\n      return this.scene.getElementsIncludingDeleted();\n    };\n\n    this.getSceneElements = () => {\n      return this.scene.getNonDeletedElements();\n    };\n\n    this.onInsertElements = elements => {\n      this.addElementsFromPasteOrLibrary({\n        elements,\n        position: "center",\n        files: null\n      });\n    };\n\n    this.onExportImage = (type, elements, opts) => __awaiter(this, void 0, void 0, function* () {\n      (0,_analytics__WEBPACK_IMPORTED_MODULE_9__.trackEvent)("export", type, "ui");\n      const fileHandle = yield (0,_data__WEBPACK_IMPORTED_MODULE_13__.exportCanvas)(type, elements, this.state, this.files, {\n        exportBackground: this.state.exportBackground,\n        name: this.state.name,\n        viewBackgroundColor: this.state.viewBackgroundColor,\n        exportingFrame: opts.exportingFrame\n      }).catch(_utils__WEBPACK_IMPORTED_MODULE_33__.muteFSAbortError).catch(error => {\n        console.error(error);\n        this.setState({\n          errorMessage: error.message\n        });\n      });\n\n      if (this.state.exportEmbedScene && fileHandle && (0,_data_blob__WEBPACK_IMPORTED_MODULE_39__.isImageFileHandle)(fileHandle)) {\n        this.setState({\n          fileHandle\n        });\n      }\n    });\n\n    this.openEyeDropper = ({\n      type\n    }) => {\n      _jotai__WEBPACK_IMPORTED_MODULE_55__.jotaiStore.set(_EyeDropper__WEBPACK_IMPORTED_MODULE_61__.activeEyeDropperAtom, {\n        swapPreviewOnAlt: true,\n        colorPickerType: type === "stroke" ? "elementStroke" : "elementBackground",\n        onSelect: (color, event) => {\n          const shouldUpdateStrokeColor = type === "background" && event.altKey || type === "stroke" && !event.altKey;\n          const selectedElements = this.scene.getSelectedElements(this.state);\n\n          if (!selectedElements.length || this.state.activeTool.type !== "selection") {\n            if (shouldUpdateStrokeColor) {\n              this.syncActionResult({\n                appState: Object.assign(Object.assign({}, this.state), {\n                  currentItemStrokeColor: color\n                }),\n                commitToHistory: true\n              });\n            } else {\n              this.syncActionResult({\n                appState: Object.assign(Object.assign({}, this.state), {\n                  currentItemBackgroundColor: color\n                }),\n                commitToHistory: true\n              });\n            }\n          } else {\n            this.updateScene({\n              elements: this.scene.getElementsIncludingDeleted().map(el => {\n                if (this.state.selectedElementIds[el.id]) {\n                  return (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.newElementWith)(el, {\n                    [shouldUpdateStrokeColor ? "strokeColor" : "backgroundColor"]: color\n                  });\n                }\n\n                return el;\n              })\n            });\n          }\n        },\n        keepOpenOnAlt: false\n      });\n    };\n\n    this.syncActionResult = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.withBatchedUpdates)(actionResult => {\n      var _a, _b, _c, _d, _e, _f, _g, _h, _j;\n\n      if (this.unmounted || actionResult === false) {\n        return;\n      }\n\n      let editingElement = null;\n\n      if (actionResult.elements) {\n        actionResult.elements.forEach(element => {\n          var _a;\n\n          if (((_a = this.state.editingElement) === null || _a === void 0 ? void 0 : _a.id) === element.id && this.state.editingElement !== element && (0,_element__WEBPACK_IMPORTED_MODULE_16__.isNonDeletedElement)(element)) {\n            editingElement = element;\n          }\n        });\n        this.scene.replaceAllElements(actionResult.elements);\n\n        if (actionResult.commitToHistory) {\n          this.history.resumeRecording();\n        }\n      }\n\n      if (actionResult.files) {\n        this.files = actionResult.replaceFiles ? actionResult.files : Object.assign(Object.assign({}, this.files), actionResult.files);\n        this.addNewImagesToImageCache();\n      }\n\n      if (actionResult.appState || editingElement || this.state.contextMenu) {\n        if (actionResult.commitToHistory) {\n          this.history.resumeRecording();\n        }\n\n        let viewModeEnabled = ((_a = actionResult === null || actionResult === void 0 ? void 0 : actionResult.appState) === null || _a === void 0 ? void 0 : _a.viewModeEnabled) || false;\n        let zenModeEnabled = ((_b = actionResult === null || actionResult === void 0 ? void 0 : actionResult.appState) === null || _b === void 0 ? void 0 : _b.zenModeEnabled) || false;\n        let gridSize = ((_c = actionResult === null || actionResult === void 0 ? void 0 : actionResult.appState) === null || _c === void 0 ? void 0 : _c.gridSize) || null;\n        const theme = ((_d = actionResult === null || actionResult === void 0 ? void 0 : actionResult.appState) === null || _d === void 0 ? void 0 : _d.theme) || this.props.theme || _constants__WEBPACK_IMPORTED_MODULE_12__.THEME.LIGHT;\n        let name = (_f = (_e = actionResult === null || actionResult === void 0 ? void 0 : actionResult.appState) === null || _e === void 0 ? void 0 : _e.name) !== null && _f !== void 0 ? _f : this.state.name;\n        const errorMessage = (_h = (_g = actionResult === null || actionResult === void 0 ? void 0 : actionResult.appState) === null || _g === void 0 ? void 0 : _g.errorMessage) !== null && _h !== void 0 ? _h : this.state.errorMessage;\n\n        if (typeof this.props.viewModeEnabled !== "undefined") {\n          viewModeEnabled = this.props.viewModeEnabled;\n        }\n\n        if (typeof this.props.zenModeEnabled !== "undefined") {\n          zenModeEnabled = this.props.zenModeEnabled;\n        }\n\n        if (typeof this.props.gridModeEnabled !== "undefined") {\n          gridSize = this.props.gridModeEnabled ? _constants__WEBPACK_IMPORTED_MODULE_12__.GRID_SIZE : null;\n        }\n\n        if (typeof this.props.name !== "undefined") {\n          name = this.props.name;\n        }\n\n        editingElement = editingElement || ((_j = actionResult.appState) === null || _j === void 0 ? void 0 : _j.editingElement) || null;\n\n        if (editingElement === null || editingElement === void 0 ? void 0 : editingElement.isDeleted) {\n          editingElement = null;\n        }\n\n        this.setState(state => {\n          // using Object.assign instead of spread to fool TS 4.2.2+ into\n          // regarding the resulting type as not containing undefined\n          // (which the following expression will never contain)\n          return Object.assign(actionResult.appState || {}, {\n            // NOTE this will prevent opening context menu using an action\n            // or programmatically from the host, so it will need to be\n            // rewritten later\n            contextMenu: null,\n            editingElement,\n            viewModeEnabled,\n            zenModeEnabled,\n            gridSize,\n            theme,\n            name,\n            errorMessage\n          });\n        }, () => {\n          if (actionResult.syncHistory) {\n            this.history.setCurrentState(this.state, this.scene.getElementsIncludingDeleted());\n          }\n        });\n      }\n    }); // Lifecycle\n\n    this.onBlur = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.withBatchedUpdates)(() => {\n      isHoldingSpace = false;\n      this.setState({\n        isBindingEnabled: true\n      });\n    });\n\n    this.onUnload = () => {\n      this.onBlur();\n    };\n\n    this.disableEvent = event => {\n      event.preventDefault();\n    };\n\n    this.resetHistory = () => {\n      this.history.clear();\n    };\n    /**\n     * Resets scene & history.\n     * ! Do not use to clear scene user action !\n     */\n\n\n    this.resetScene = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.withBatchedUpdates)(opts => {\n      this.scene.replaceAllElements([]);\n      this.setState(state => Object.assign(Object.assign({}, (0,_appState__WEBPACK_IMPORTED_MODULE_10__.getDefaultAppState)()), {\n        isLoading: (opts === null || opts === void 0 ? void 0 : opts.resetLoadingState) ? false : state.isLoading,\n        theme: this.state.theme\n      }));\n      this.resetHistory();\n    });\n\n    this.initializeScene = () => __awaiter(this, void 0, void 0, function* () {\n      var _a;\n\n      if ("launchQueue" in window && "LaunchParams" in window) {\n        window.launchQueue.setConsumer(launchParams => __awaiter(this, void 0, void 0, function* () {\n          if (!launchParams.files.length) {\n            return;\n          }\n\n          const fileHandle = launchParams.files[0];\n          const blob = yield fileHandle.getFile();\n          this.loadFileToCanvas(new File([blob], blob.name || "", {\n            type: blob.type\n          }), fileHandle);\n        }));\n      }\n\n      if (this.props.theme) {\n        this.setState({\n          theme: this.props.theme\n        });\n      }\n\n      if (!this.state.isLoading) {\n        this.setState({\n          isLoading: true\n        });\n      }\n\n      let initialData = null;\n\n      try {\n        initialData = (yield this.props.initialData) || null;\n\n        if (initialData === null || initialData === void 0 ? void 0 : initialData.libraryItems) {\n          this.library.updateLibrary({\n            libraryItems: initialData.libraryItems,\n            merge: true\n          }).catch(error => {\n            console.error(error);\n          });\n        }\n      } catch (error) {\n        console.error(error);\n        initialData = {\n          appState: {\n            errorMessage: error.message || "Encountered an error during importing or restoring scene data"\n          }\n        };\n      }\n\n      const scene = (0,_data_restore__WEBPACK_IMPORTED_MODULE_15__.restore)(initialData, null, null, {\n        repairBindings: true\n      });\n      scene.appState = Object.assign(Object.assign({}, scene.appState), {\n        theme: this.props.theme || scene.appState.theme,\n        // we\'re falling back to current (pre-init) state when deciding\n        // whether to open the library, to handle a case where we\n        // update the state outside of initialData (e.g. when loading the app\n        // with a library install link, which should auto-open the library)\n        openSidebar: ((_a = scene.appState) === null || _a === void 0 ? void 0 : _a.openSidebar) || this.state.openSidebar,\n        activeTool: scene.appState.activeTool.type === "image" ? Object.assign(Object.assign({}, scene.appState.activeTool), {\n          type: "selection"\n        }) : scene.appState.activeTool,\n        isLoading: false,\n        toast: this.state.toast\n      });\n\n      if (initialData === null || initialData === void 0 ? void 0 : initialData.scrollToContent) {\n        scene.appState = Object.assign(Object.assign({}, scene.appState), (0,_scene__WEBPACK_IMPORTED_MODULE_29__.calculateScrollCenter)(scene.elements, Object.assign(Object.assign({}, scene.appState), {\n          width: this.state.width,\n          height: this.state.height,\n          offsetTop: this.state.offsetTop,\n          offsetLeft: this.state.offsetLeft\n        })));\n      } // FontFaceSet loadingdone event we listen on may not always fire\n      // (looking at you Safari), so on init we manually load fonts for current\n      // text elements on canvas, and rerender them once done. This also\n      // seems faster even in browsers that do fire the loadingdone event.\n\n\n      this.fonts.loadFontsForElements(scene.elements);\n      this.resetHistory();\n      this.syncActionResult(Object.assign(Object.assign({}, scene), {\n        commitToHistory: true\n      }));\n    });\n\n    this.isMobileBreakpoint = (width, height) => {\n      return width < _constants__WEBPACK_IMPORTED_MODULE_12__.MQ_MAX_WIDTH_PORTRAIT || height < _constants__WEBPACK_IMPORTED_MODULE_12__.MQ_MAX_HEIGHT_LANDSCAPE && width < _constants__WEBPACK_IMPORTED_MODULE_12__.MQ_MAX_WIDTH_LANDSCAPE;\n    };\n\n    this.refreshViewportBreakpoints = () => {\n      const container = this.excalidrawContainerRef.current;\n\n      if (!container) {\n        return;\n      }\n\n      const {\n        clientWidth: viewportWidth,\n        clientHeight: viewportHeight\n      } = document.body;\n      const prevViewportState = this.device.viewport;\n      const nextViewportState = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.updateObject)(prevViewportState, {\n        isLandscape: viewportWidth > viewportHeight,\n        isMobile: this.isMobileBreakpoint(viewportWidth, viewportHeight)\n      });\n\n      if (prevViewportState !== nextViewportState) {\n        this.device = Object.assign(Object.assign({}, this.device), {\n          viewport: nextViewportState\n        });\n        return true;\n      }\n\n      return false;\n    };\n\n    this.refreshEditorBreakpoints = () => {\n      const container = this.excalidrawContainerRef.current;\n\n      if (!container) {\n        return;\n      }\n\n      const {\n        width: editorWidth,\n        height: editorHeight\n      } = container.getBoundingClientRect();\n      const sidebarBreakpoint = this.props.UIOptions.dockedSidebarBreakpoint != null ? this.props.UIOptions.dockedSidebarBreakpoint : _constants__WEBPACK_IMPORTED_MODULE_12__.MQ_RIGHT_SIDEBAR_MIN_WIDTH;\n      const prevEditorState = this.device.editor;\n      const nextEditorState = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.updateObject)(prevEditorState, {\n        isMobile: this.isMobileBreakpoint(editorWidth, editorHeight),\n        canFitSidebar: editorWidth > sidebarBreakpoint\n      });\n\n      if (prevEditorState !== nextEditorState) {\n        this.device = Object.assign(Object.assign({}, this.device), {\n          editor: nextEditorState\n        });\n        return true;\n      }\n\n      return false;\n    };\n\n    this.onResize = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.withBatchedUpdates)(() => {\n      this.scene.getElementsIncludingDeleted().forEach(element => _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_66__.ShapeCache["delete"](element));\n      this.refreshViewportBreakpoints();\n      this.updateDOMRect();\n\n      if (!supportsResizeObserver) {\n        this.refreshEditorBreakpoints();\n      }\n\n      this.setState({});\n    });\n\n    this.renderInteractiveSceneCallback = ({\n      atLeastOneVisibleElement,\n      scrollBars,\n      elements\n    }) => {\n      if (scrollBars) {\n        currentScrollBars = scrollBars;\n      }\n\n      const scrolledOutside = // hide when editing text\n      (0,_element__WEBPACK_IMPORTED_MODULE_16__.isTextElement)(this.state.editingElement) ? false : !atLeastOneVisibleElement && elements.length > 0;\n\n      if (this.state.scrolledOutside !== scrolledOutside) {\n        this.setState({\n          scrolledOutside\n        });\n      }\n\n      this.scheduleImageRefresh();\n    };\n\n    this.onScroll = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.debounce)(() => {\n      const {\n        offsetTop,\n        offsetLeft\n      } = this.getCanvasOffsets();\n      this.setState(state => {\n        if (state.offsetLeft === offsetLeft && state.offsetTop === offsetTop) {\n          return null;\n        }\n\n        return {\n          offsetTop,\n          offsetLeft\n        };\n      });\n    }, _constants__WEBPACK_IMPORTED_MODULE_12__.SCROLL_TIMEOUT); // Copy/paste\n\n    this.onCut = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.withBatchedUpdates)(event => {\n      var _a;\n\n      const isExcalidrawActive = (_a = this.excalidrawContainerRef.current) === null || _a === void 0 ? void 0 : _a.contains(document.activeElement);\n\n      if (!isExcalidrawActive || (0,_utils__WEBPACK_IMPORTED_MODULE_33__.isWritableElement)(event.target)) {\n        return;\n      }\n\n      this.actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_5__.actionCut, "keyboard", event);\n      event.preventDefault();\n      event.stopPropagation();\n    });\n    this.onCopy = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.withBatchedUpdates)(event => {\n      var _a;\n\n      const isExcalidrawActive = (_a = this.excalidrawContainerRef.current) === null || _a === void 0 ? void 0 : _a.contains(document.activeElement);\n\n      if (!isExcalidrawActive || (0,_utils__WEBPACK_IMPORTED_MODULE_33__.isWritableElement)(event.target)) {\n        return;\n      }\n\n      this.actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_5__.actionCopy, "keyboard", event);\n      event.preventDefault();\n      event.stopPropagation();\n    });\n\n    this.onTouchStart = event => {\n      // fix for Apple Pencil Scribble\n      // On Android, preventing the event would disable contextMenu on tap-hold\n      if (!_constants__WEBPACK_IMPORTED_MODULE_12__.isAndroid) {\n        event.preventDefault();\n      }\n\n      if (!didTapTwice) {\n        didTapTwice = true;\n        clearTimeout(tappedTwiceTimer);\n        tappedTwiceTimer = window.setTimeout(App.resetTapTwice, _constants__WEBPACK_IMPORTED_MODULE_12__.TAP_TWICE_TIMEOUT);\n        return;\n      } // insert text only if we tapped twice with a single finger\n      // event.touches.length === 1 will also prevent inserting text when user\'s zooming\n\n\n      if (didTapTwice && event.touches.length === 1) {\n        const touch = event.touches[0]; // @ts-ignore\n\n        this.handleCanvasDoubleClick({\n          clientX: touch.clientX,\n          clientY: touch.clientY\n        });\n        didTapTwice = false;\n        clearTimeout(tappedTwiceTimer);\n      }\n\n      if (_constants__WEBPACK_IMPORTED_MODULE_12__.isAndroid) {\n        event.preventDefault();\n      }\n\n      if (event.touches.length === 2) {\n        this.setState({\n          selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)({}, this.state),\n          activeEmbeddable: null\n        });\n      }\n    };\n\n    this.onTouchEnd = event => {\n      this.resetContextMenuTimer();\n\n      if (event.touches.length > 0) {\n        this.setState({\n          previousSelectedElementIds: {},\n          selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)(this.state.previousSelectedElementIds, this.state)\n        });\n      } else {\n        gesture.pointers.clear();\n      }\n    };\n\n    this.pasteFromClipboard = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.withBatchedUpdates)(event => __awaiter(this, void 0, void 0, function* () {\n      var _b, _c, _d;\n\n      const isPlainPaste = !!IS_PLAIN_PASTE; // #686\n\n      const target = document.activeElement;\n      const isExcalidrawActive = (_b = this.excalidrawContainerRef.current) === null || _b === void 0 ? void 0 : _b.contains(target);\n\n      if (event && !isExcalidrawActive) {\n        return;\n      }\n\n      const elementUnderCursor = document.elementFromPoint(this.lastViewportPosition.x, this.lastViewportPosition.y);\n\n      if (event && (!(elementUnderCursor instanceof HTMLCanvasElement) || (0,_utils__WEBPACK_IMPORTED_MODULE_33__.isWritableElement)(target))) {\n        return;\n      }\n\n      const {\n        x: sceneX,\n        y: sceneY\n      } = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.viewportCoordsToSceneCoords)({\n        clientX: this.lastViewportPosition.x,\n        clientY: this.lastViewportPosition.y\n      }, this.state); // must be called in the same frame (thus before any awaits) as the paste\n      // event else some browsers (FF...) will clear the clipboardData\n      // (something something security)\n\n      let file = (_c = event === null || event === void 0 ? void 0 : event.clipboardData) === null || _c === void 0 ? void 0 : _c.files[0];\n      const data = yield (0,_clipboard__WEBPACK_IMPORTED_MODULE_11__.parseClipboard)(event, isPlainPaste);\n\n      if (!file && !isPlainPaste) {\n        if (data.mixedContent) {\n          return this.addElementsFromMixedContentPaste(data.mixedContent, {\n            isPlainPaste,\n            sceneX,\n            sceneY\n          });\n        } else if (data.text) {\n          const string = data.text.trim();\n\n          if (string.startsWith("<svg") && string.endsWith("</svg>")) {\n            // ignore SVG validation/normalization which will be done during image\n            // initialization\n            file = (0,_data_blob__WEBPACK_IMPORTED_MODULE_39__.SVGStringToFile)(string);\n          }\n        }\n      } // prefer spreadsheet data over image file (MS Office/Libre Office)\n\n\n      if ((0,_data_blob__WEBPACK_IMPORTED_MODULE_39__.isSupportedImageFile)(file) && !data.spreadsheet) {\n        if (!this.isToolSupported("image")) {\n          this.setState({\n            errorMessage: (0,_i18n__WEBPACK_IMPORTED_MODULE_25__.t)("errors.imageToolNotSupported")\n          });\n          return;\n        }\n\n        const imageElement = this.createImageElement({\n          sceneX,\n          sceneY\n        });\n        this.insertImageElement(imageElement, file);\n        this.initializeImageDimensions(imageElement);\n        this.setState({\n          selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)({\n            [imageElement.id]: true\n          }, this.state)\n        });\n        return;\n      }\n\n      if (this.props.onPaste) {\n        try {\n          if ((yield this.props.onPaste(data, event)) === false) {\n            return;\n          }\n        } catch (error) {\n          console.error(error);\n        }\n      }\n\n      if (data.errorMessage) {\n        this.setState({\n          errorMessage: data.errorMessage\n        });\n      } else if (data.spreadsheet && !isPlainPaste) {\n        this.setState({\n          pasteDialog: {\n            data: data.spreadsheet,\n            shown: true\n          }\n        });\n      } else if (data.elements) {\n        const elements = data.programmaticAPI ? (0,_data_transform__WEBPACK_IMPORTED_MODULE_62__.convertToExcalidrawElements)(data.elements) : data.elements; // TODO remove formatting from elements if isPlainPaste\n\n        this.addElementsFromPasteOrLibrary({\n          elements,\n          files: data.files || null,\n          position: "cursor",\n          retainSeed: isPlainPaste\n        });\n      } else if (data.text) {\n        const maybeUrl = (0,_element_embeddable__WEBPACK_IMPORTED_MODULE_34__.extractSrc)(data.text);\n\n        if (!isPlainPaste && (0,_element_embeddable__WEBPACK_IMPORTED_MODULE_34__.embeddableURLValidator)(maybeUrl, this.props.validateEmbeddable) && (/^(http|https):\\/\\/[^\\s/$.?#].[^\\s]*$/.test(maybeUrl) || ((_d = (0,_element_embeddable__WEBPACK_IMPORTED_MODULE_34__.getEmbedLink)(maybeUrl)) === null || _d === void 0 ? void 0 : _d.type) === "video")) {\n          const embeddable = this.insertEmbeddableElement({\n            sceneX,\n            sceneY,\n            link: (0,_data_url__WEBPACK_IMPORTED_MODULE_46__.normalizeLink)(maybeUrl)\n          });\n\n          if (embeddable) {\n            this.setState({\n              selectedElementIds: {\n                [embeddable.id]: true\n              }\n            });\n          }\n\n          return;\n        }\n\n        this.addTextFromPaste(data.text, isPlainPaste);\n      }\n\n      this.setActiveTool({\n        type: "selection"\n      });\n      event === null || event === void 0 ? void 0 : event.preventDefault();\n    }));\n\n    this.addElementsFromPasteOrLibrary = opts => {\n      const elements = (0,_data_restore__WEBPACK_IMPORTED_MODULE_15__.restoreElements)(opts.elements, null, undefined);\n      const [minX, minY, maxX, maxY] = (0,_element__WEBPACK_IMPORTED_MODULE_16__.getCommonBounds)(elements);\n      const elementsCenterX = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.distance)(minX, maxX) / 2;\n      const elementsCenterY = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.distance)(minY, maxY) / 2;\n      const clientX = typeof opts.position === "object" ? opts.position.clientX : opts.position === "cursor" ? this.lastViewportPosition.x : this.state.width / 2 + this.state.offsetLeft;\n      const clientY = typeof opts.position === "object" ? opts.position.clientY : opts.position === "cursor" ? this.lastViewportPosition.y : this.state.height / 2 + this.state.offsetTop;\n      const {\n        x,\n        y\n      } = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.viewportCoordsToSceneCoords)({\n        clientX,\n        clientY\n      }, this.state);\n      const dx = x - elementsCenterX;\n      const dy = y - elementsCenterY;\n      const [gridX, gridY] = (0,_math__WEBPACK_IMPORTED_MODULE_28__.getGridPoint)(dx, dy, this.state.gridSize);\n      const newElements = (0,_element_newElement__WEBPACK_IMPORTED_MODULE_20__.duplicateElements)(elements.map(element => {\n        return (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.newElementWith)(element, {\n          x: element.x + gridX - minX,\n          y: element.y + gridY - minY\n        });\n      }), {\n        randomizeSeed: !opts.retainSeed\n      });\n      const nextElements = [...this.scene.getElementsIncludingDeleted(), ...newElements];\n      this.scene.replaceAllElements(nextElements);\n      newElements.forEach(newElement => {\n        if ((0,_element__WEBPACK_IMPORTED_MODULE_16__.isTextElement)(newElement) && (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isBoundToContainer)(newElement)) {\n          const container = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_43__.getContainerElement)(newElement);\n          (0,_element__WEBPACK_IMPORTED_MODULE_16__.redrawTextBoundingBox)(newElement, container);\n        }\n      });\n\n      if (opts.files) {\n        this.files = Object.assign(Object.assign({}, this.files), opts.files);\n      }\n\n      this.history.resumeRecording();\n      const nextElementsToSelect = (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.excludeElementsInFramesFromSelection)(newElements);\n      this.setState(Object.assign(Object.assign(Object.assign({}, this.state), {\n        // keep sidebar (presumably the library) open if it\'s docked and\n        // can fit.\n        //\n        // Note, we should close the sidebar only if we\'re dropping items\n        // from library, not when pasting from clipboard. Alas.\n        openSidebar: this.state.openSidebar && this.device.editor.canFitSidebar && _jotai__WEBPACK_IMPORTED_MODULE_55__.jotaiStore.get(_Sidebar_Sidebar__WEBPACK_IMPORTED_MODULE_63__.isSidebarDockedAtom) ? this.state.openSidebar : null\n      }), (0,_groups__WEBPACK_IMPORTED_MODULE_23__.selectGroupsForSelectedElements)({\n        editingGroupId: null,\n        selectedElementIds: nextElementsToSelect.reduce((acc, element) => {\n          if (!(0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isBoundToContainer)(element)) {\n            acc[element.id] = true;\n          }\n\n          return acc;\n        }, {})\n      }, this.scene.getNonDeletedElements(), this.state, this)), () => {\n        if (opts.files) {\n          this.addNewImagesToImageCache();\n        }\n      });\n      this.setActiveTool({\n        type: "selection"\n      });\n\n      if (opts.fitToContent) {\n        this.scrollToContent(newElements, {\n          fitToContent: true\n        });\n      }\n    };\n\n    this.setAppState = (state, callback) => {\n      this.setState(state, callback);\n    };\n\n    this.removePointer = event => {\n      if (touchTimeout) {\n        this.resetContextMenuTimer();\n      }\n\n      gesture.pointers.delete(event.pointerId);\n    };\n\n    this.toggleLock = (source = "ui") => {\n      if (!this.state.activeTool.locked) {\n        (0,_analytics__WEBPACK_IMPORTED_MODULE_9__.trackEvent)("toolbar", "toggleLock", `${source} (${this.device.editor.isMobile ? "mobile" : "desktop"})`);\n      }\n\n      this.setState(prevState => {\n        return {\n          activeTool: Object.assign(Object.assign(Object.assign({}, prevState.activeTool), (0,_utils__WEBPACK_IMPORTED_MODULE_33__.updateActiveTool)(this.state, prevState.activeTool.locked ? {\n            type: "selection"\n          } : prevState.activeTool)), {\n            locked: !prevState.activeTool.locked\n          })\n        };\n      });\n    };\n\n    this.updateFrameRendering = opts => {\n      this.setState(prevState => {\n        var _a, _b, _c, _d;\n\n        const next = typeof opts === "function" ? opts(prevState.frameRendering) : opts;\n        return {\n          frameRendering: {\n            enabled: (_a = next === null || next === void 0 ? void 0 : next.enabled) !== null && _a !== void 0 ? _a : prevState.frameRendering.enabled,\n            clip: (_b = next === null || next === void 0 ? void 0 : next.clip) !== null && _b !== void 0 ? _b : prevState.frameRendering.clip,\n            name: (_c = next === null || next === void 0 ? void 0 : next.name) !== null && _c !== void 0 ? _c : prevState.frameRendering.name,\n            outline: (_d = next === null || next === void 0 ? void 0 : next.outline) !== null && _d !== void 0 ? _d : prevState.frameRendering.outline\n          }\n        };\n      });\n    };\n\n    this.togglePenMode = force => {\n      this.setState(prevState => {\n        return {\n          penMode: force !== null && force !== void 0 ? force : !prevState.penMode,\n          penDetected: true\n        };\n      });\n    };\n\n    this.onHandToolToggle = () => {\n      this.actionManager.executeAction(_actions_actionCanvas__WEBPACK_IMPORTED_MODULE_54__.actionToggleHandTool);\n    };\n    /**\n     * Zooms on canvas viewport center\n     */\n\n\n    this.zoomCanvas = (\n    /** decimal fraction between 0.1 (10% zoom) and 30 (3000% zoom) */\n    value) => {\n      this.setState(Object.assign({}, (0,_scene_zoom__WEBPACK_IMPORTED_MODULE_31__.getStateForZoom)({\n        viewportX: this.state.width / 2 + this.state.offsetLeft,\n        viewportY: this.state.height / 2 + this.state.offsetTop,\n        nextZoom: (0,_scene__WEBPACK_IMPORTED_MODULE_29__.getNormalizedZoom)(value)\n      }, this.state)));\n    };\n\n    this.cancelInProgresAnimation = null;\n\n    this.scrollToContent = (target = this.scene.getNonDeletedElements(), opts) => {\n      var _a, _b;\n\n      (_a = this.cancelInProgresAnimation) === null || _a === void 0 ? void 0 : _a.call(this); // convert provided target into ExcalidrawElement[] if necessary\n\n      const targetElements = Array.isArray(target) ? target : [target];\n      let zoom = this.state.zoom;\n      let scrollX = this.state.scrollX;\n      let scrollY = this.state.scrollY;\n\n      if ((opts === null || opts === void 0 ? void 0 : opts.fitToContent) || (opts === null || opts === void 0 ? void 0 : opts.fitToViewport)) {\n        const {\n          appState\n        } = (0,_actions_actionCanvas__WEBPACK_IMPORTED_MODULE_54__.zoomToFit)({\n          targetElements,\n          appState: this.state,\n          fitToViewport: !!(opts === null || opts === void 0 ? void 0 : opts.fitToViewport),\n          viewportZoomFactor: opts === null || opts === void 0 ? void 0 : opts.viewportZoomFactor\n        });\n        zoom = appState.zoom;\n        scrollX = appState.scrollX;\n        scrollY = appState.scrollY;\n      } else {\n        // compute only the viewport location, without any zoom adjustment\n        const scroll = (0,_scene__WEBPACK_IMPORTED_MODULE_29__.calculateScrollCenter)(targetElements, this.state);\n        scrollX = scroll.scrollX;\n        scrollY = scroll.scrollY;\n      } // when animating, we use RequestAnimationFrame to prevent the animation\n      // from slowing down other processes\n\n\n      if (opts === null || opts === void 0 ? void 0 : opts.animate) {\n        const origScrollX = this.state.scrollX;\n        const origScrollY = this.state.scrollY;\n        const origZoom = this.state.zoom.value;\n        const cancel = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.easeToValuesRAF)({\n          fromValues: {\n            scrollX: origScrollX,\n            scrollY: origScrollY,\n            zoom: origZoom\n          },\n          toValues: {\n            scrollX,\n            scrollY,\n            zoom: zoom.value\n          },\n          interpolateValue: (from, to, progress, key) => {\n            // for zoom, use different easing\n            if (key === "zoom") {\n              return from * Math.pow(to / from, (0,_utils__WEBPACK_IMPORTED_MODULE_33__.easeOut)(progress));\n            } // handle using default\n\n\n            return undefined;\n          },\n          onStep: ({\n            scrollX,\n            scrollY,\n            zoom\n          }) => {\n            this.setState({\n              scrollX,\n              scrollY,\n              zoom: {\n                value: zoom\n              }\n            });\n          },\n          onStart: () => {\n            this.setState({\n              shouldCacheIgnoreZoom: true\n            });\n          },\n          onEnd: () => {\n            this.setState({\n              shouldCacheIgnoreZoom: false\n            });\n          },\n          onCancel: () => {\n            this.setState({\n              shouldCacheIgnoreZoom: false\n            });\n          },\n          duration: (_b = opts === null || opts === void 0 ? void 0 : opts.duration) !== null && _b !== void 0 ? _b : 500\n        });\n\n        this.cancelInProgresAnimation = () => {\n          cancel();\n          this.cancelInProgresAnimation = null;\n        };\n      } else {\n        this.setState({\n          scrollX,\n          scrollY,\n          zoom\n        });\n      }\n    };\n    /** use when changing scrollX/scrollY/zoom based on user interaction */\n\n\n    this.translateCanvas = state => {\n      var _a;\n\n      (_a = this.cancelInProgresAnimation) === null || _a === void 0 ? void 0 : _a.call(this);\n      this.setState(state);\n    };\n\n    this.setToast = toast => {\n      this.setState({\n        toast\n      });\n    };\n\n    this.restoreFileFromShare = () => __awaiter(this, void 0, void 0, function* () {\n      try {\n        const webShareTargetCache = yield caches.open("web-share-target");\n        const response = yield webShareTargetCache.match("shared-file");\n\n        if (response) {\n          const blob = yield response.blob();\n          const file = new File([blob], blob.name || "", {\n            type: blob.type\n          });\n          this.loadFileToCanvas(file, null);\n          yield webShareTargetCache.delete("shared-file");\n          window.history.replaceState(null, _constants__WEBPACK_IMPORTED_MODULE_12__.APP_NAME, window.location.pathname);\n        }\n      } catch (error) {\n        this.setState({\n          errorMessage: error.message\n        });\n      }\n    });\n    /** adds supplied files to existing files in the appState */\n\n\n    this.addFiles = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.withBatchedUpdates)(files => {\n      const filesMap = files.reduce((acc, fileData) => {\n        acc.set(fileData.id, fileData);\n        return acc;\n      }, new Map());\n      this.files = Object.assign(Object.assign({}, this.files), Object.fromEntries(filesMap));\n      this.scene.getNonDeletedElements().forEach(element => {\n        if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isInitializedImageElement)(element) && filesMap.has(element.fileId)) {\n          this.imageCache.delete(element.fileId);\n          _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_66__.ShapeCache["delete"](element);\n        }\n      });\n      this.scene.informMutation();\n      this.addNewImagesToImageCache();\n    });\n    this.updateScene = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.withBatchedUpdates)(sceneData => {\n      if (sceneData.commitToHistory) {\n        this.history.resumeRecording();\n      }\n\n      if (sceneData.appState) {\n        this.setState(sceneData.appState);\n      }\n\n      if (sceneData.elements) {\n        this.scene.replaceAllElements(sceneData.elements);\n      }\n\n      if (sceneData.collaborators) {\n        this.setState({\n          collaborators: sceneData.collaborators\n        });\n      }\n    });\n\n    this.onSceneUpdated = () => {\n      this.setState({});\n    };\n    /**\n     * @returns whether the menu was toggled on or off\n     */\n\n\n    this.toggleSidebar = ({\n      name,\n      tab,\n      force\n    }) => {\n      var _a;\n\n      let nextName;\n\n      if (force === undefined) {\n        nextName = ((_a = this.state.openSidebar) === null || _a === void 0 ? void 0 : _a.name) === name ? null : name;\n      } else {\n        nextName = force ? name : null;\n      }\n\n      this.setState({\n        openSidebar: nextName ? {\n          name: nextName,\n          tab\n        } : null\n      });\n      return !!nextName;\n    };\n\n    this.updateCurrentCursorPosition = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.withBatchedUpdates)(event => {\n      this.lastViewportPosition.x = event.clientX;\n      this.lastViewportPosition.y = event.clientY;\n    }); // Input handling\n\n    this.onKeyDown = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.withBatchedUpdates)(event => {\n      // normalize `event.key` when CapsLock is pressed #2372\n      if ("Proxy" in window && (!event.shiftKey && /^[A-Z]$/.test(event.key) || event.shiftKey && /^[a-z]$/.test(event.key))) {\n        event = new Proxy(event, {\n          get(ev, prop) {\n            const value = ev[prop];\n\n            if (typeof value === "function") {\n              // fix for Proxies hijacking `this`\n              return value.bind(ev);\n            }\n\n            return prop === "key" ? // CapsLock inverts capitalization based on ShiftKey, so invert\n            // it back\n            event.shiftKey ? ev.key.toUpperCase() : ev.key.toLowerCase() : value;\n          }\n\n        });\n      }\n\n      if (event[_keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.CTRL_OR_CMD] && event.key.toLowerCase() === _keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.V) {\n        IS_PLAIN_PASTE = event.shiftKey;\n        clearTimeout(IS_PLAIN_PASTE_TIMER); // reset (100ms to be safe that we it runs after the ensuing\n        // paste event). Though, technically unnecessary to reset since we\n        // (re)set the flag before each paste event.\n\n        IS_PLAIN_PASTE_TIMER = window.setTimeout(() => {\n          IS_PLAIN_PASTE = false;\n        }, 100);\n      } // prevent browser zoom in input fields\n\n\n      if (event[_keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.CTRL_OR_CMD] && (0,_utils__WEBPACK_IMPORTED_MODULE_33__.isWritableElement)(event.target)) {\n        if (event.code === _keys__WEBPACK_IMPORTED_MODULE_26__.CODES.MINUS || event.code === _keys__WEBPACK_IMPORTED_MODULE_26__.CODES.EQUAL) {\n          event.preventDefault();\n          return;\n        }\n      } // bail if\n\n\n      if ( // inside an input\n      (0,_utils__WEBPACK_IMPORTED_MODULE_33__.isWritableElement)(event.target) && // unless pressing escape (finalize action)\n      event.key !== _keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.ESCAPE || // or unless using arrows (to move between buttons)\n      (0,_keys__WEBPACK_IMPORTED_MODULE_26__.isArrowKey)(event.key) && (0,_utils__WEBPACK_IMPORTED_MODULE_33__.isInputLike)(event.target)) {\n        return;\n      }\n\n      if (event.key === _keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.QUESTION_MARK) {\n        this.setState({\n          openDialog: "help"\n        });\n        return;\n      } else if (event.key.toLowerCase() === _keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.E && event.shiftKey && event[_keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.CTRL_OR_CMD]) {\n        event.preventDefault();\n        this.setState({\n          openDialog: "imageExport"\n        });\n        return;\n      }\n\n      if (event.key === _keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.PAGE_UP || event.key === _keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.PAGE_DOWN) {\n        let offset = (event.shiftKey ? this.state.width : this.state.height) / this.state.zoom.value;\n\n        if (event.key === _keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.PAGE_DOWN) {\n          offset = -offset;\n        }\n\n        if (event.shiftKey) {\n          this.translateCanvas(state => ({\n            scrollX: state.scrollX + offset\n          }));\n        } else {\n          this.translateCanvas(state => ({\n            scrollY: state.scrollY + offset\n          }));\n        }\n      }\n\n      if (this.actionManager.handleKeyDown(event)) {\n        return;\n      }\n\n      if (this.state.viewModeEnabled) {\n        return;\n      }\n\n      if (event[_keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.CTRL_OR_CMD] && this.state.isBindingEnabled) {\n        this.setState({\n          isBindingEnabled: false\n        });\n      }\n\n      if ((0,_keys__WEBPACK_IMPORTED_MODULE_26__.isArrowKey)(event.key)) {\n        const step = this.state.gridSize && (event.shiftKey ? _constants__WEBPACK_IMPORTED_MODULE_12__.ELEMENT_TRANSLATE_AMOUNT : this.state.gridSize) || (event.shiftKey ? _constants__WEBPACK_IMPORTED_MODULE_12__.ELEMENT_SHIFT_TRANSLATE_AMOUNT : _constants__WEBPACK_IMPORTED_MODULE_12__.ELEMENT_TRANSLATE_AMOUNT);\n        let offsetX = 0;\n        let offsetY = 0;\n\n        if (event.key === _keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.ARROW_LEFT) {\n          offsetX = -step;\n        } else if (event.key === _keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.ARROW_RIGHT) {\n          offsetX = step;\n        } else if (event.key === _keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.ARROW_UP) {\n          offsetY = -step;\n        } else if (event.key === _keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.ARROW_DOWN) {\n          offsetY = step;\n        }\n\n        const selectedElements = this.scene.getSelectedElements({\n          selectedElementIds: this.state.selectedElementIds,\n          includeBoundTextElement: true,\n          includeElementsInFrames: true\n        });\n        selectedElements.forEach(element => {\n          (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(element, {\n            x: element.x + offsetX,\n            y: element.y + offsetY\n          });\n          (0,_element_binding__WEBPACK_IMPORTED_MODULE_17__.updateBoundElements)(element, {\n            simultaneouslyUpdated: selectedElements\n          });\n        });\n        this.maybeSuggestBindingForAll(selectedElements);\n        event.preventDefault();\n      } else if (event.key === _keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.ENTER) {\n        const selectedElements = this.scene.getSelectedElements(this.state);\n\n        if (selectedElements.length === 1) {\n          const selectedElement = selectedElements[0];\n\n          if (event[_keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.CTRL_OR_CMD]) {\n            if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isLinearElement)(selectedElement)) {\n              if (!this.state.editingLinearElement || this.state.editingLinearElement.elementId !== selectedElements[0].id) {\n                this.history.resumeRecording();\n                this.setState({\n                  editingLinearElement: new _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_18__.LinearElementEditor(selectedElement, this.scene)\n                });\n              }\n            }\n          } else if ((0,_element__WEBPACK_IMPORTED_MODULE_16__.isTextElement)(selectedElement) || (0,_element_textElement__WEBPACK_IMPORTED_MODULE_43__.isValidTextContainer)(selectedElement)) {\n            let container;\n\n            if (!(0,_element__WEBPACK_IMPORTED_MODULE_16__.isTextElement)(selectedElement)) {\n              container = selectedElement;\n            }\n\n            const midPoint = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_43__.getContainerCenter)(selectedElement, this.state);\n            const sceneX = midPoint.x;\n            const sceneY = midPoint.y;\n            this.startTextEditing({\n              sceneX,\n              sceneY,\n              container\n            });\n            event.preventDefault();\n            return;\n          } else if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isFrameElement)(selectedElement)) {\n            this.setState({\n              editingFrame: selectedElement.id\n            });\n          }\n        }\n      } else if (!event.ctrlKey && !event.altKey && !event.metaKey && this.state.draggingElement === null) {\n        const shape = (0,_shapes__WEBPACK_IMPORTED_MODULE_32__.findShapeByKey)(event.key);\n\n        if (shape) {\n          if (this.state.activeTool.type !== shape) {\n            (0,_analytics__WEBPACK_IMPORTED_MODULE_9__.trackEvent)("toolbar", shape, `keyboard (${this.device.editor.isMobile ? "mobile" : "desktop"})`);\n          }\n\n          this.setActiveTool({\n            type: shape\n          });\n          event.stopPropagation();\n        } else if (event.key === _keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.Q) {\n          this.toggleLock("keyboard");\n          event.stopPropagation();\n        }\n      }\n\n      if (event.key === _keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.SPACE && gesture.pointers.size === 0) {\n        isHoldingSpace = true;\n        (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursor)(this.interactiveCanvas, _constants__WEBPACK_IMPORTED_MODULE_12__.CURSOR_TYPE.GRAB);\n        event.preventDefault();\n      }\n\n      if ((event.key === _keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.G || event.key === _keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.S) && !event.altKey && !event[_keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.CTRL_OR_CMD]) {\n        const selectedElements = this.scene.getSelectedElements(this.state);\n\n        if (this.state.activeTool.type === "selection" && !selectedElements.length) {\n          return;\n        }\n\n        if (event.key === _keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.G && ((0,_scene__WEBPACK_IMPORTED_MODULE_29__.hasBackground)(this.state.activeTool.type) || selectedElements.some(element => (0,_scene__WEBPACK_IMPORTED_MODULE_29__.hasBackground)(element.type)))) {\n          this.setState({\n            openPopup: "elementBackground"\n          });\n          event.stopPropagation();\n        }\n\n        if (event.key === _keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.S) {\n          this.setState({\n            openPopup: "elementStroke"\n          });\n          event.stopPropagation();\n        }\n      }\n\n      if (event.key === _keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.K && !event.altKey && !event[_keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.CTRL_OR_CMD]) {\n        if (this.state.activeTool.type === "laser") {\n          this.setActiveTool({\n            type: "selection"\n          });\n        } else {\n          this.setActiveTool({\n            type: "laser"\n          });\n        }\n\n        return;\n      }\n\n      if (event[_keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.CTRL_OR_CMD] && (event.key === _keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.BACKSPACE || event.key === _keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.DELETE)) {\n        _jotai__WEBPACK_IMPORTED_MODULE_55__.jotaiStore.set(_ActiveConfirmDialog__WEBPACK_IMPORTED_MODULE_56__.activeConfirmDialogAtom, "clearCanvas");\n      } // eye dropper\n      // -----------------------------------------------------------------------\n\n\n      const lowerCased = event.key.toLocaleLowerCase();\n      const isPickingStroke = lowerCased === _keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.S && event.shiftKey;\n      const isPickingBackground = event.key === _keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.I || lowerCased === _keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.G && event.shiftKey;\n\n      if (isPickingStroke || isPickingBackground) {\n        this.openEyeDropper({\n          type: isPickingStroke ? "stroke" : "background"\n        });\n      } // -----------------------------------------------------------------------\n\n    });\n    this.onWheel = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.withBatchedUpdates)(event => {\n      // prevent browser pinch zoom on DOM elements\n      if (!(event.target instanceof HTMLCanvasElement) && event.ctrlKey) {\n        event.preventDefault();\n      }\n    });\n    this.onKeyUp = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.withBatchedUpdates)(event => {\n      if (event.key === _keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.SPACE) {\n        if (this.state.viewModeEnabled) {\n          (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursor)(this.interactiveCanvas, _constants__WEBPACK_IMPORTED_MODULE_12__.CURSOR_TYPE.GRAB);\n        } else if (this.state.activeTool.type === "selection") {\n          (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.resetCursor)(this.interactiveCanvas);\n        } else {\n          (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursorForShape)(this.interactiveCanvas, this.state);\n          this.setState({\n            selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)({}, this.state),\n            selectedGroupIds: {},\n            editingGroupId: null,\n            activeEmbeddable: null\n          });\n        }\n\n        isHoldingSpace = false;\n      }\n\n      if (!event[_keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.CTRL_OR_CMD] && !this.state.isBindingEnabled) {\n        this.setState({\n          isBindingEnabled: true\n        });\n      }\n\n      if ((0,_keys__WEBPACK_IMPORTED_MODULE_26__.isArrowKey)(event.key)) {\n        const selectedElements = this.scene.getSelectedElements(this.state);\n        (0,_element_binding__WEBPACK_IMPORTED_MODULE_17__.isBindingEnabled)(this.state) ? (0,_element_binding__WEBPACK_IMPORTED_MODULE_17__.bindOrUnbindSelectedElements)(selectedElements) : (0,_element_binding__WEBPACK_IMPORTED_MODULE_17__.unbindLinearElements)(selectedElements);\n        this.setState({\n          suggestedBindings: []\n        });\n      }\n    }); // We purposely widen the `tool` type so this helper can be called with\n    // any tool without having to type check it\n\n    this.isToolSupported = tool => {\n      var _a;\n\n      return ((_a = this.props.UIOptions.tools) === null || _a === void 0 ? void 0 : _a[tool]) !== false;\n    };\n\n    this.setActiveTool = tool => {\n      var _a;\n\n      if (!this.isToolSupported(tool.type)) {\n        console.warn(`"${tool.type}" tool is disabled via "UIOptions.canvasActions.tools.${tool.type}"`);\n        return;\n      }\n\n      const nextActiveTool = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.updateActiveTool)(this.state, tool);\n\n      if (nextActiveTool.type === "hand") {\n        (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursor)(this.interactiveCanvas, _constants__WEBPACK_IMPORTED_MODULE_12__.CURSOR_TYPE.GRAB);\n      } else if (!isHoldingSpace) {\n        (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursorForShape)(this.interactiveCanvas, this.state);\n      }\n\n      if ((0,_utils__WEBPACK_IMPORTED_MODULE_33__.isToolIcon)(document.activeElement)) {\n        this.focusContainer();\n      }\n\n      if (!(0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isLinearElementType)(nextActiveTool.type)) {\n        this.setState({\n          suggestedBindings: []\n        });\n      }\n\n      if (nextActiveTool.type === "image") {\n        this.onImageAction({\n          insertOnCanvasDirectly: (_a = tool.type === "image" && tool.insertOnCanvasDirectly) !== null && _a !== void 0 ? _a : false\n        });\n      }\n\n      this.setState(prevState => {\n        const commonResets = {\n          snapLines: prevState.snapLines.length ? [] : prevState.snapLines,\n          originSnapOffset: null,\n          activeEmbeddable: null\n        };\n\n        if (nextActiveTool.type !== "selection") {\n          return Object.assign(Object.assign(Object.assign({}, prevState), {\n            activeTool: nextActiveTool,\n            selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)({}, prevState),\n            selectedGroupIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)({}, prevState),\n            editingGroupId: null,\n            multiElement: null\n          }), commonResets);\n        }\n\n        return Object.assign(Object.assign(Object.assign({}, prevState), {\n          activeTool: nextActiveTool\n        }), commonResets);\n      });\n    };\n\n    this.setOpenDialog = dialogType => {\n      this.setState({\n        openDialog: dialogType\n      });\n    };\n\n    this.setCursor = cursor => {\n      (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursor)(this.interactiveCanvas, cursor);\n    };\n\n    this.resetCursor = () => {\n      (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.resetCursor)(this.interactiveCanvas);\n    };\n    /**\n     * returns whether user is making a gesture with >= 2 fingers (points)\n     * on o touch screen (not on a trackpad). Currently only relates to Darwin\n     * (iOS/iPadOS,MacOS), but may work on other devices in the future if\n     * GestureEvent is standardized.\n     */\n\n\n    this.isTouchScreenMultiTouchGesture = () => {\n      // we don\'t want to deselect when using trackpad, and multi-point gestures\n      // only work on touch screens, so checking for >= pointers means we\'re on a\n      // touchscreen\n      return gesture.pointers.size >= 2;\n    }; // fires only on Safari\n\n\n    this.onGestureStart = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.withBatchedUpdates)(event => {\n      event.preventDefault(); // we only want to deselect on touch screens because user may have selected\n      // elements by mistake while zooming\n\n      if (this.isTouchScreenMultiTouchGesture()) {\n        this.setState({\n          selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)({}, this.state),\n          activeEmbeddable: null\n        });\n      }\n\n      gesture.initialScale = this.state.zoom.value;\n    }); // fires only on Safari\n\n    this.onGestureChange = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.withBatchedUpdates)(event => {\n      event.preventDefault(); // onGestureChange only has zoom factor but not the center.\n      // If we\'re on iPad or iPhone, then we recognize multi-touch and will\n      // zoom in at the right location in the touchmove handler\n      // (handleCanvasPointerMove).\n      //\n      // On Macbook trackpad, we don\'t have those events so will zoom in at the\n      // current location instead.\n      //\n      // As such, bail from this handler on touch devices.\n\n      if (this.isTouchScreenMultiTouchGesture()) {\n        return;\n      }\n\n      const initialScale = gesture.initialScale;\n\n      if (initialScale) {\n        this.setState(state => Object.assign({}, (0,_scene_zoom__WEBPACK_IMPORTED_MODULE_31__.getStateForZoom)({\n          viewportX: this.lastViewportPosition.x,\n          viewportY: this.lastViewportPosition.y,\n          nextZoom: (0,_scene__WEBPACK_IMPORTED_MODULE_29__.getNormalizedZoom)(initialScale * event.scale)\n        }, state)));\n      }\n    }); // fires only on Safari\n\n    this.onGestureEnd = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.withBatchedUpdates)(event => {\n      event.preventDefault(); // reselect elements only on touch screens (see onGestureStart)\n\n      if (this.isTouchScreenMultiTouchGesture()) {\n        this.setState({\n          previousSelectedElementIds: {},\n          selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)(this.state.previousSelectedElementIds, this.state)\n        });\n      }\n\n      gesture.initialScale = null;\n    });\n\n    this.startTextEditing = ({\n      sceneX,\n      sceneY,\n      insertAtParentCenter = true,\n      container\n    }) => {\n      var _a, _b;\n\n      let shouldBindToContainer = false;\n      let parentCenterPosition = insertAtParentCenter && this.getTextWysiwygSnappedToCenterPosition(sceneX, sceneY, this.state, container);\n\n      if (container && parentCenterPosition) {\n        const boundTextElementToContainer = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_43__.getBoundTextElement)(container);\n\n        if (!boundTextElementToContainer) {\n          shouldBindToContainer = true;\n        }\n      }\n\n      let existingTextElement = null;\n      const selectedElements = this.scene.getSelectedElements(this.state);\n\n      if (selectedElements.length === 1) {\n        if ((0,_element__WEBPACK_IMPORTED_MODULE_16__.isTextElement)(selectedElements[0])) {\n          existingTextElement = selectedElements[0];\n        } else if (container) {\n          existingTextElement = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_43__.getBoundTextElement)(selectedElements[0]);\n        } else {\n          existingTextElement = this.getTextElementAtPosition(sceneX, sceneY);\n        }\n      } else {\n        existingTextElement = this.getTextElementAtPosition(sceneX, sceneY);\n      }\n\n      const fontFamily = (existingTextElement === null || existingTextElement === void 0 ? void 0 : existingTextElement.fontFamily) || this.state.currentItemFontFamily;\n      const lineHeight = (existingTextElement === null || existingTextElement === void 0 ? void 0 : existingTextElement.lineHeight) || (0,_element_textElement__WEBPACK_IMPORTED_MODULE_43__.getDefaultLineHeight)(fontFamily);\n      const fontSize = this.state.currentItemFontSize;\n\n      if (!existingTextElement && shouldBindToContainer && container && !(0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isArrowElement)(container)) {\n        const fontString = {\n          fontSize,\n          fontFamily\n        };\n        const minWidth = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_43__.getApproxMinLineWidth)((0,_utils__WEBPACK_IMPORTED_MODULE_33__.getFontString)(fontString), lineHeight);\n        const minHeight = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_43__.getApproxMinLineHeight)(fontSize, lineHeight);\n        const newHeight = Math.max(container.height, minHeight);\n        const newWidth = Math.max(container.width, minWidth);\n        (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(container, {\n          height: newHeight,\n          width: newWidth\n        });\n        sceneX = container.x + newWidth / 2;\n        sceneY = container.y + newHeight / 2;\n\n        if (parentCenterPosition) {\n          parentCenterPosition = this.getTextWysiwygSnappedToCenterPosition(sceneX, sceneY, this.state, container);\n        }\n      }\n\n      const topLayerFrame = this.getTopLayerFrameAtSceneCoords({\n        x: sceneX,\n        y: sceneY\n      });\n      const element = existingTextElement ? existingTextElement : (0,_element__WEBPACK_IMPORTED_MODULE_16__.newTextElement)({\n        x: parentCenterPosition ? parentCenterPosition.elementCenterX : sceneX,\n        y: parentCenterPosition ? parentCenterPosition.elementCenterY : sceneY,\n        strokeColor: this.state.currentItemStrokeColor,\n        backgroundColor: this.state.currentItemBackgroundColor,\n        fillStyle: this.state.currentItemFillStyle,\n        strokeWidth: this.state.currentItemStrokeWidth,\n        strokeStyle: this.state.currentItemStrokeStyle,\n        roughness: this.state.currentItemRoughness,\n        opacity: this.state.currentItemOpacity,\n        text: "",\n        fontSize,\n        fontFamily,\n        textAlign: parentCenterPosition ? "center" : this.state.currentItemTextAlign,\n        verticalAlign: parentCenterPosition ? _constants__WEBPACK_IMPORTED_MODULE_12__.VERTICAL_ALIGN.MIDDLE : _constants__WEBPACK_IMPORTED_MODULE_12__.DEFAULT_VERTICAL_ALIGN,\n        containerId: shouldBindToContainer ? container === null || container === void 0 ? void 0 : container.id : undefined,\n        groupIds: (_a = container === null || container === void 0 ? void 0 : container.groupIds) !== null && _a !== void 0 ? _a : [],\n        lineHeight,\n        angle: (_b = container === null || container === void 0 ? void 0 : container.angle) !== null && _b !== void 0 ? _b : 0,\n        frameId: topLayerFrame ? topLayerFrame.id : null\n      });\n\n      if (!existingTextElement && shouldBindToContainer && container) {\n        (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(container, {\n          boundElements: (container.boundElements || []).concat({\n            type: "text",\n            id: element.id\n          })\n        });\n      }\n\n      this.setState({\n        editingElement: element\n      });\n\n      if (!existingTextElement) {\n        if (container && shouldBindToContainer) {\n          const containerIndex = this.scene.getElementIndex(container.id);\n          this.scene.insertElementAtIndex(element, containerIndex + 1);\n        } else {\n          this.scene.addNewElement(element);\n        }\n      }\n\n      this.setState({\n        editingElement: element\n      });\n      this.handleTextWysiwyg(element, {\n        isExistingElement: !!existingTextElement\n      });\n    };\n\n    this.handleCanvasDoubleClick = event => {\n      // case: double-clicking with arrow/line tool selected would both create\n      // text and enter multiElement mode\n      if (this.state.multiElement) {\n        return;\n      } // we should only be able to double click when mode is selection\n\n\n      if (this.state.activeTool.type !== "selection") {\n        return;\n      }\n\n      const selectedElements = this.scene.getSelectedElements(this.state);\n\n      if (selectedElements.length === 1 && (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isLinearElement)(selectedElements[0])) {\n        if (event[_keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.CTRL_OR_CMD] && (!this.state.editingLinearElement || this.state.editingLinearElement.elementId !== selectedElements[0].id)) {\n          this.history.resumeRecording();\n          this.setState({\n            editingLinearElement: new _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_18__.LinearElementEditor(selectedElements[0], this.scene)\n          });\n          return;\n        } else if (this.state.editingLinearElement && this.state.editingLinearElement.elementId === selectedElements[0].id) {\n          return;\n        }\n      }\n\n      (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.resetCursor)(this.interactiveCanvas);\n      let {\n        x: sceneX,\n        y: sceneY\n      } = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.viewportCoordsToSceneCoords)(event, this.state);\n      const selectedGroupIds = (0,_groups__WEBPACK_IMPORTED_MODULE_23__.getSelectedGroupIds)(this.state);\n\n      if (selectedGroupIds.length > 0) {\n        const hitElement = this.getElementAtPosition(sceneX, sceneY);\n        const selectedGroupId = hitElement && (0,_groups__WEBPACK_IMPORTED_MODULE_23__.getSelectedGroupIdForElement)(hitElement, this.state.selectedGroupIds);\n\n        if (selectedGroupId) {\n          this.setState(prevState => Object.assign(Object.assign({}, prevState), (0,_groups__WEBPACK_IMPORTED_MODULE_23__.selectGroupsForSelectedElements)({\n            editingGroupId: selectedGroupId,\n            selectedElementIds: {\n              [hitElement.id]: true\n            }\n          }, this.scene.getNonDeletedElements(), prevState, this)));\n          return;\n        }\n      }\n\n      (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.resetCursor)(this.interactiveCanvas);\n\n      if (!event[_keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.CTRL_OR_CMD] && !this.state.viewModeEnabled) {\n        const hitElement = this.getElementAtPosition(sceneX, sceneY);\n\n        if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isEmbeddableElement)(hitElement)) {\n          this.setState({\n            activeEmbeddable: {\n              element: hitElement,\n              state: "active"\n            }\n          });\n          return;\n        }\n\n        const container = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_43__.getTextBindableContainerAtPosition)(this.scene.getNonDeletedElements(), this.state, sceneX, sceneY);\n\n        if (container) {\n          if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.hasBoundTextElement)(container) || !(0,_utils__WEBPACK_IMPORTED_MODULE_33__.isTransparent)(container.backgroundColor) || (0,_element_collision__WEBPACK_IMPORTED_MODULE_44__.isHittingElementNotConsideringBoundingBox)(container, this.state, this.frameNameBoundsCache, [sceneX, sceneY])) {\n            const midPoint = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_43__.getContainerCenter)(container, this.state);\n            sceneX = midPoint.x;\n            sceneY = midPoint.y;\n          }\n        }\n\n        this.startTextEditing({\n          sceneX,\n          sceneY,\n          insertAtParentCenter: !event.altKey,\n          container\n        });\n      }\n    };\n\n    this.getElementLinkAtPosition = (scenePointer, hitElement) => {\n      // Reversing so we traverse the elements in decreasing order\n      // of z-index\n      const elements = this.scene.getNonDeletedElements().slice().reverse();\n      let hitElementIndex = Infinity;\n      return elements.find((element, index) => {\n        if (hitElement && element.id === hitElement.id) {\n          hitElementIndex = index;\n        }\n\n        return element.link && index <= hitElementIndex && (0,_element_Hyperlink__WEBPACK_IMPORTED_MODULE_45__.isPointHittingLink)(element, this.state, [scenePointer.x, scenePointer.y], this.device.editor.isMobile);\n      });\n    };\n\n    this.redirectToLink = (event, isTouchScreen) => {\n      const draggedDistance = (0,_math__WEBPACK_IMPORTED_MODULE_28__.distance2d)(this.lastPointerDownEvent.clientX, this.lastPointerDownEvent.clientY, this.lastPointerUpEvent.clientX, this.lastPointerUpEvent.clientY);\n\n      if (!this.hitLinkElement || // For touch screen allow dragging threshold else strict check\n      isTouchScreen && draggedDistance > _constants__WEBPACK_IMPORTED_MODULE_12__.DRAGGING_THRESHOLD || !isTouchScreen && draggedDistance !== 0) {\n        return;\n      }\n\n      const lastPointerDownCoords = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.viewportCoordsToSceneCoords)(this.lastPointerDownEvent, this.state);\n      const lastPointerDownHittingLinkIcon = (0,_element_Hyperlink__WEBPACK_IMPORTED_MODULE_45__.isPointHittingLink)(this.hitLinkElement, this.state, [lastPointerDownCoords.x, lastPointerDownCoords.y], this.device.editor.isMobile);\n      const lastPointerUpCoords = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.viewportCoordsToSceneCoords)(this.lastPointerUpEvent, this.state);\n      const lastPointerUpHittingLinkIcon = (0,_element_Hyperlink__WEBPACK_IMPORTED_MODULE_45__.isPointHittingLink)(this.hitLinkElement, this.state, [lastPointerUpCoords.x, lastPointerUpCoords.y], this.device.editor.isMobile);\n\n      if (lastPointerDownHittingLinkIcon && lastPointerUpHittingLinkIcon) {\n        let url = this.hitLinkElement.link;\n\n        if (url) {\n          url = (0,_data_url__WEBPACK_IMPORTED_MODULE_46__.normalizeLink)(url);\n          let customEvent;\n\n          if (this.props.onLinkOpen) {\n            customEvent = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.wrapEvent)(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.EXCALIDRAW_LINK, event.nativeEvent);\n            this.props.onLinkOpen(Object.assign(Object.assign({}, this.hitLinkElement), {\n              link: url\n            }), customEvent);\n          }\n\n          if (!(customEvent === null || customEvent === void 0 ? void 0 : customEvent.defaultPrevented)) {\n            const target = (0,_data_url__WEBPACK_IMPORTED_MODULE_46__.isLocalLink)(url) ? "_self" : "_blank";\n            const newWindow = window.open(undefined, target); // https://mathiasbynens.github.io/rel-noopener/\n\n            if (newWindow) {\n              newWindow.opener = null;\n              newWindow.location = url;\n            }\n          }\n        }\n      }\n    };\n\n    this.getTopLayerFrameAtSceneCoords = sceneCoords => {\n      const frames = this.scene.getNonDeletedFrames().filter(frame => (0,_frame__WEBPACK_IMPORTED_MODULE_50__.isCursorInFrame)(sceneCoords, frame));\n      return frames.length ? frames[frames.length - 1] : null;\n    };\n\n    this.handleCanvasPointerMove = event => {\n      var _a, _b;\n\n      this.savePointer(event.clientX, event.clientY, this.state.cursorButton);\n\n      if (gesture.pointers.has(event.pointerId)) {\n        gesture.pointers.set(event.pointerId, {\n          x: event.clientX,\n          y: event.clientY\n        });\n      }\n\n      const initialScale = gesture.initialScale;\n\n      if (gesture.pointers.size === 2 && gesture.lastCenter && initialScale && gesture.initialDistance) {\n        const center = (0,_gesture__WEBPACK_IMPORTED_MODULE_22__.getCenter)(gesture.pointers);\n        const deltaX = center.x - gesture.lastCenter.x;\n        const deltaY = center.y - gesture.lastCenter.y;\n        gesture.lastCenter = center;\n        const distance = (0,_gesture__WEBPACK_IMPORTED_MODULE_22__.getDistance)(Array.from(gesture.pointers.values()));\n        const scaleFactor = this.state.activeTool.type === "freedraw" && this.state.penMode ? 1 : distance / gesture.initialDistance;\n        const nextZoom = scaleFactor ? (0,_scene__WEBPACK_IMPORTED_MODULE_29__.getNormalizedZoom)(initialScale * scaleFactor) : this.state.zoom.value;\n        this.setState(state => {\n          const zoomState = (0,_scene_zoom__WEBPACK_IMPORTED_MODULE_31__.getStateForZoom)({\n            viewportX: center.x,\n            viewportY: center.y,\n            nextZoom\n          }, state);\n          this.translateCanvas({\n            zoom: zoomState.zoom,\n            scrollX: zoomState.scrollX + deltaX / nextZoom,\n            scrollY: zoomState.scrollY + deltaY / nextZoom,\n            shouldCacheIgnoreZoom: true\n          });\n        });\n        this.resetShouldCacheIgnoreZoomDebounced();\n      } else {\n        gesture.lastCenter = gesture.initialDistance = gesture.initialScale = null;\n      }\n\n      if (isHoldingSpace || isPanning || isDraggingScrollBar || (0,_appState__WEBPACK_IMPORTED_MODULE_10__.isHandToolActive)(this.state)) {\n        return;\n      }\n\n      const isPointerOverScrollBars = (0,_scene__WEBPACK_IMPORTED_MODULE_29__.isOverScrollBars)(currentScrollBars, event.clientX - this.state.offsetLeft, event.clientY - this.state.offsetTop);\n      const isOverScrollBar = isPointerOverScrollBars.isOverEither;\n\n      if (!this.state.draggingElement && !this.state.multiElement) {\n        if (isOverScrollBar) {\n          (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.resetCursor)(this.interactiveCanvas);\n        } else {\n          (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursorForShape)(this.interactiveCanvas, this.state);\n        }\n      }\n\n      const scenePointer = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.viewportCoordsToSceneCoords)(event, this.state);\n      const {\n        x: scenePointerX,\n        y: scenePointerY\n      } = scenePointer;\n\n      if (!this.state.draggingElement && (0,_snapping__WEBPACK_IMPORTED_MODULE_58__.isActiveToolNonLinearSnappable)(this.state.activeTool.type)) {\n        const {\n          originOffset,\n          snapLines\n        } = (0,_snapping__WEBPACK_IMPORTED_MODULE_58__.getSnapLinesAtPointer)(this.scene.getNonDeletedElements(), this.state, {\n          x: scenePointerX,\n          y: scenePointerY\n        }, event);\n        this.setState({\n          snapLines,\n          originSnapOffset: originOffset\n        });\n      } else if (!this.state.draggingElement) {\n        this.setState({\n          snapLines: []\n        });\n      }\n\n      if (this.state.editingLinearElement && !this.state.editingLinearElement.isDragging) {\n        const editingLinearElement = _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_18__.LinearElementEditor.handlePointerMove(event, scenePointerX, scenePointerY, this.state);\n\n        if (editingLinearElement && editingLinearElement !== this.state.editingLinearElement) {\n          // Since we are reading from previous state which is not possible with\n          // automatic batching in React 18 hence using flush sync to synchronously\n          // update the state. Check https://github.com/excalidraw/excalidraw/pull/5508 for more details.\n          (0,react_dom__WEBPACK_IMPORTED_MODULE_2__.flushSync)(() => {\n            this.setState({\n              editingLinearElement\n            });\n          });\n        }\n\n        if ((editingLinearElement === null || editingLinearElement === void 0 ? void 0 : editingLinearElement.lastUncommittedPoint) != null) {\n          this.maybeSuggestBindingAtCursor(scenePointer);\n        } else {\n          // causes stack overflow if not sync\n          (0,react_dom__WEBPACK_IMPORTED_MODULE_2__.flushSync)(() => {\n            this.setState({\n              suggestedBindings: []\n            });\n          });\n        }\n      }\n\n      if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isBindingElementType)(this.state.activeTool.type)) {\n        // Hovering with a selected tool or creating new linear element via click\n        // and point\n        const {\n          draggingElement\n        } = this.state;\n\n        if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isBindingElement)(draggingElement, false)) {\n          this.maybeSuggestBindingsForLinearElementAtCoords(draggingElement, [scenePointer], this.state.startBoundElement);\n        } else {\n          this.maybeSuggestBindingAtCursor(scenePointer);\n        }\n      }\n\n      if (this.state.multiElement) {\n        const {\n          multiElement\n        } = this.state;\n        const {\n          x: rx,\n          y: ry\n        } = multiElement;\n        const {\n          points,\n          lastCommittedPoint\n        } = multiElement;\n        const lastPoint = points[points.length - 1];\n        (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursorForShape)(this.interactiveCanvas, this.state);\n\n        if (lastPoint === lastCommittedPoint) {\n          // if we haven\'t yet created a temp point and we\'re beyond commit-zone\n          // threshold, add a point\n          if ((0,_math__WEBPACK_IMPORTED_MODULE_28__.distance2d)(scenePointerX - rx, scenePointerY - ry, lastPoint[0], lastPoint[1]) >= _constants__WEBPACK_IMPORTED_MODULE_12__.LINE_CONFIRM_THRESHOLD) {\n            (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(multiElement, {\n              points: [...points, [scenePointerX - rx, scenePointerY - ry]]\n            });\n          } else {\n            (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursor)(this.interactiveCanvas, _constants__WEBPACK_IMPORTED_MODULE_12__.CURSOR_TYPE.POINTER); // in this branch, we\'re inside the commit zone, and no uncommitted\n            // point exists. Thus do nothing (don\'t add/remove points).\n          }\n        } else if (points.length > 2 && lastCommittedPoint && (0,_math__WEBPACK_IMPORTED_MODULE_28__.distance2d)(scenePointerX - rx, scenePointerY - ry, lastCommittedPoint[0], lastCommittedPoint[1]) < _constants__WEBPACK_IMPORTED_MODULE_12__.LINE_CONFIRM_THRESHOLD) {\n          (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursor)(this.interactiveCanvas, _constants__WEBPACK_IMPORTED_MODULE_12__.CURSOR_TYPE.POINTER);\n          (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(multiElement, {\n            points: points.slice(0, -1)\n          });\n        } else {\n          const [gridX, gridY] = (0,_math__WEBPACK_IMPORTED_MODULE_28__.getGridPoint)(scenePointerX, scenePointerY, event[_keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.CTRL_OR_CMD] ? null : this.state.gridSize);\n          const [lastCommittedX, lastCommittedY] = (_a = multiElement === null || multiElement === void 0 ? void 0 : multiElement.lastCommittedPoint) !== null && _a !== void 0 ? _a : [0, 0];\n          let dxFromLastCommitted = gridX - rx - lastCommittedX;\n          let dyFromLastCommitted = gridY - ry - lastCommittedY;\n\n          if ((0,_keys__WEBPACK_IMPORTED_MODULE_26__.shouldRotateWithDiscreteAngle)(event)) {\n            ({\n              width: dxFromLastCommitted,\n              height: dyFromLastCommitted\n            } = (0,_element__WEBPACK_IMPORTED_MODULE_16__.getLockedLinearCursorAlignSize)( // actual coordinate of the last committed point\n            lastCommittedX + rx, lastCommittedY + ry, // cursor-grid coordinate\n            gridX, gridY));\n          }\n\n          if ((0,_math__WEBPACK_IMPORTED_MODULE_28__.isPathALoop)(points, this.state.zoom.value)) {\n            (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursor)(this.interactiveCanvas, _constants__WEBPACK_IMPORTED_MODULE_12__.CURSOR_TYPE.POINTER);\n          } // update last uncommitted point\n\n\n          (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(multiElement, {\n            points: [...points.slice(0, -1), [lastCommittedX + dxFromLastCommitted, lastCommittedY + dyFromLastCommitted]]\n          });\n        }\n\n        return;\n      }\n\n      const hasDeselectedButton = Boolean(event.buttons);\n\n      if (hasDeselectedButton || this.state.activeTool.type !== "selection" && this.state.activeTool.type !== "text" && this.state.activeTool.type !== "eraser") {\n        return;\n      }\n\n      const elements = this.scene.getNonDeletedElements();\n      const selectedElements = this.scene.getSelectedElements(this.state);\n\n      if (selectedElements.length === 1 && !isOverScrollBar && !this.state.editingLinearElement) {\n        const elementWithTransformHandleType = (0,_element__WEBPACK_IMPORTED_MODULE_16__.getElementWithTransformHandleType)(elements, this.state, scenePointerX, scenePointerY, this.state.zoom, event.pointerType);\n\n        if (elementWithTransformHandleType && elementWithTransformHandleType.transformHandleType) {\n          (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursor)(this.interactiveCanvas, (0,_element__WEBPACK_IMPORTED_MODULE_16__.getCursorForResizingElement)(elementWithTransformHandleType));\n          return;\n        }\n      } else if (selectedElements.length > 1 && !isOverScrollBar) {\n        const transformHandleType = (0,_element__WEBPACK_IMPORTED_MODULE_16__.getTransformHandleTypeFromCoords)((0,_element__WEBPACK_IMPORTED_MODULE_16__.getCommonBounds)(selectedElements), scenePointerX, scenePointerY, this.state.zoom, event.pointerType);\n\n        if (transformHandleType) {\n          (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursor)(this.interactiveCanvas, (0,_element__WEBPACK_IMPORTED_MODULE_16__.getCursorForResizingElement)({\n            transformHandleType\n          }));\n          return;\n        }\n      }\n\n      const hitElement = this.getElementAtPosition(scenePointer.x, scenePointer.y);\n      this.hitLinkElement = this.getElementLinkAtPosition(scenePointer, hitElement);\n\n      if ((0,_appState__WEBPACK_IMPORTED_MODULE_10__.isEraserActive)(this.state)) {\n        return;\n      }\n\n      if (this.hitLinkElement && !this.state.selectedElementIds[this.hitLinkElement.id]) {\n        (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursor)(this.interactiveCanvas, _constants__WEBPACK_IMPORTED_MODULE_12__.CURSOR_TYPE.POINTER);\n        (0,_element_Hyperlink__WEBPACK_IMPORTED_MODULE_45__.showHyperlinkTooltip)(this.hitLinkElement, this.state);\n      } else {\n        (0,_element_Hyperlink__WEBPACK_IMPORTED_MODULE_45__.hideHyperlinkToolip)();\n\n        if (hitElement && (hitElement.link || (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isEmbeddableElement)(hitElement)) && this.state.selectedElementIds[hitElement.id] && !this.state.contextMenu && !this.state.showHyperlinkPopup) {\n          this.setState({\n            showHyperlinkPopup: "info"\n          });\n        } else if (this.state.activeTool.type === "text") {\n          (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursor)(this.interactiveCanvas, (0,_element__WEBPACK_IMPORTED_MODULE_16__.isTextElement)(hitElement) ? _constants__WEBPACK_IMPORTED_MODULE_12__.CURSOR_TYPE.TEXT : _constants__WEBPACK_IMPORTED_MODULE_12__.CURSOR_TYPE.CROSSHAIR);\n        } else if (this.state.viewModeEnabled) {\n          (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursor)(this.interactiveCanvas, _constants__WEBPACK_IMPORTED_MODULE_12__.CURSOR_TYPE.GRAB);\n        } else if (isOverScrollBar) {\n          (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursor)(this.interactiveCanvas, _constants__WEBPACK_IMPORTED_MODULE_12__.CURSOR_TYPE.AUTO);\n        } else if (this.state.selectedLinearElement) {\n          this.handleHoverSelectedLinearElement(this.state.selectedLinearElement, scenePointerX, scenePointerY);\n        } else if ( // if using cmd/ctrl, we\'re not dragging\n        !event[_keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.CTRL_OR_CMD]) {\n          if ((hitElement || this.isHittingCommonBoundingBoxOfSelectedElements(scenePointer, selectedElements)) && !(hitElement === null || hitElement === void 0 ? void 0 : hitElement.locked)) {\n            if (hitElement && (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isEmbeddableElement)(hitElement) && this.isEmbeddableCenter(hitElement, event, scenePointerX, scenePointerY)) {\n              (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursor)(this.interactiveCanvas, _constants__WEBPACK_IMPORTED_MODULE_12__.CURSOR_TYPE.POINTER);\n              this.setState({\n                activeEmbeddable: {\n                  element: hitElement,\n                  state: "hover"\n                }\n              });\n            } else {\n              (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursor)(this.interactiveCanvas, _constants__WEBPACK_IMPORTED_MODULE_12__.CURSOR_TYPE.MOVE);\n\n              if (((_b = this.state.activeEmbeddable) === null || _b === void 0 ? void 0 : _b.state) === "hover") {\n                this.setState({\n                  activeEmbeddable: null\n                });\n              }\n            }\n          }\n        } else {\n          (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursor)(this.interactiveCanvas, _constants__WEBPACK_IMPORTED_MODULE_12__.CURSOR_TYPE.AUTO);\n        }\n      }\n    };\n\n    this.handleEraser = (event, pointerDownState, scenePointer) => {\n      const updateElementIds = elements => {\n        elements.forEach(element => {\n          if (element.locked) {\n            return;\n          }\n\n          idsToUpdate.push(element.id);\n\n          if (event.altKey) {\n            if (pointerDownState.elementIdsToErase[element.id] && pointerDownState.elementIdsToErase[element.id].erase) {\n              pointerDownState.elementIdsToErase[element.id].erase = false;\n            }\n          } else if (!pointerDownState.elementIdsToErase[element.id]) {\n            pointerDownState.elementIdsToErase[element.id] = {\n              erase: true,\n              opacity: element.opacity\n            };\n          }\n        });\n      };\n\n      const idsToUpdate = [];\n      const distance = (0,_math__WEBPACK_IMPORTED_MODULE_28__.distance2d)(pointerDownState.lastCoords.x, pointerDownState.lastCoords.y, scenePointer.x, scenePointer.y);\n      const threshold = 10 / this.state.zoom.value;\n      const point = Object.assign({}, pointerDownState.lastCoords);\n      let samplingInterval = 0;\n\n      while (samplingInterval <= distance) {\n        const hitElements = this.getElementsAtPosition(point.x, point.y);\n        updateElementIds(hitElements); // Exit since we reached current point\n\n        if (samplingInterval === distance) {\n          break;\n        } // Calculate next point in the line at a distance of sampling interval\n\n\n        samplingInterval = Math.min(samplingInterval + threshold, distance);\n        const distanceRatio = samplingInterval / distance;\n        const nextX = (1 - distanceRatio) * point.x + distanceRatio * scenePointer.x;\n        const nextY = (1 - distanceRatio) * point.y + distanceRatio * scenePointer.y;\n        point.x = nextX;\n        point.y = nextY;\n      }\n\n      const elements = this.scene.getElementsIncludingDeleted().map(ele => {\n        const id = (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isBoundToContainer)(ele) && idsToUpdate.includes(ele.containerId) ? ele.containerId : ele.id;\n\n        if (idsToUpdate.includes(id)) {\n          if (event.altKey) {\n            if (pointerDownState.elementIdsToErase[id] && pointerDownState.elementIdsToErase[id].erase === false) {\n              return (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.newElementWith)(ele, {\n                opacity: pointerDownState.elementIdsToErase[id].opacity\n              });\n            }\n          } else {\n            return (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.newElementWith)(ele, {\n              opacity: _constants__WEBPACK_IMPORTED_MODULE_12__.ELEMENT_READY_TO_ERASE_OPACITY\n            });\n          }\n        }\n\n        return ele;\n      });\n      this.scene.replaceAllElements(elements);\n      pointerDownState.lastCoords.x = scenePointer.x;\n      pointerDownState.lastCoords.y = scenePointer.y;\n    }; // set touch moving for mobile context menu\n\n\n    this.handleTouchMove = event => {\n      invalidateContextMenu = true;\n    };\n\n    this.handleCanvasPointerDown = event => {\n      var _a, _b; // since contextMenu options are potentially evaluated on each render,\n      // and an contextMenu action may depend on selection state, we must\n      // close the contextMenu before we update the selection on pointerDown\n      // (e.g. resetting selection)\n\n\n      if (this.state.contextMenu) {\n        this.setState({\n          contextMenu: null\n        });\n      }\n\n      if (this.state.snapLines) {\n        this.setAppState({\n          snapLines: []\n        });\n      }\n\n      this.updateGestureOnPointerDown(event); // if dragging element is freedraw and another pointerdown event occurs\n      // a second finger is on the screen\n      // discard the freedraw element if it is very short because it is likely\n      // just a spike, otherwise finalize the freedraw element when the second\n      // finger is lifted\n\n      if (event.pointerType === "touch" && this.state.draggingElement && this.state.draggingElement.type === "freedraw") {\n        const element = this.state.draggingElement;\n        this.updateScene(Object.assign(Object.assign({}, element.points.length < 10 ? {\n          elements: this.scene.getElementsIncludingDeleted().filter(el => el.id !== element.id)\n        } : {}), {\n          appState: {\n            draggingElement: null,\n            editingElement: null,\n            startBoundElement: null,\n            suggestedBindings: [],\n            selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)(Object.keys(this.state.selectedElementIds).filter(key => key !== element.id).reduce((obj, key) => {\n              obj[key] = this.state.selectedElementIds[key];\n              return obj;\n            }, {}), this.state)\n          }\n        }));\n        return;\n      } // remove any active selection when we start to interact with canvas\n      // (mainly, we care about removing selection outside the component which\n      //  would prevent our copy handling otherwise)\n\n\n      const selection = document.getSelection();\n\n      if (selection === null || selection === void 0 ? void 0 : selection.anchorNode) {\n        selection.removeAllRanges();\n      }\n\n      this.maybeOpenContextMenuAfterPointerDownOnTouchDevices(event);\n      this.maybeCleanupAfterMissingPointerUp(event); //fires only once, if pen is detected, penMode is enabled\n      //the user can disable this by toggling the penMode button\n\n      if (!this.state.penDetected && event.pointerType === "pen") {\n        this.setState(prevState => {\n          return {\n            penMode: true,\n            penDetected: true\n          };\n        });\n      }\n\n      if (!this.device.isTouchScreen && ["pen", "touch"].includes(event.pointerType)) {\n        this.device = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.updateObject)(this.device, {\n          isTouchScreen: true\n        });\n      }\n\n      if (isPanning) {\n        return;\n      }\n\n      this.lastPointerDownEvent = event; // we must exit before we set `cursorButton` state and `savePointer`\n      // else it will send pointer state & laser pointer events in collab when\n      // panning\n\n      if (this.handleCanvasPanUsingWheelOrSpaceDrag(event)) {\n        return;\n      }\n\n      this.setState({\n        lastPointerDownWith: event.pointerType,\n        cursorButton: "down"\n      });\n      this.savePointer(event.clientX, event.clientY, "down"); // only handle left mouse button or touch\n\n      if (event.button !== _constants__WEBPACK_IMPORTED_MODULE_12__.POINTER_BUTTON.MAIN && event.button !== _constants__WEBPACK_IMPORTED_MODULE_12__.POINTER_BUTTON.TOUCH) {\n        return;\n      } // don\'t select while panning\n\n\n      if (gesture.pointers.size > 1) {\n        return;\n      } // State for the duration of a pointer interaction, which starts with a\n      // pointerDown event, ends with a pointerUp event (or another pointerDown)\n\n\n      const pointerDownState = this.initialPointerDownState(event);\n      this.setState({\n        selectedElementsAreBeingDragged: false\n      });\n\n      if (this.handleDraggingScrollBar(event, pointerDownState)) {\n        return;\n      }\n\n      this.clearSelectionIfNotUsingSelection();\n      this.updateBindingEnabledOnPointerMove(event);\n\n      if (this.handleSelectionOnPointerDown(event, pointerDownState)) {\n        return;\n      }\n\n      const allowOnPointerDown = !this.state.penMode || event.pointerType !== "touch" || this.state.activeTool.type === "selection" || this.state.activeTool.type === "text" || this.state.activeTool.type === "image";\n\n      if (!allowOnPointerDown) {\n        return;\n      }\n\n      if (this.state.activeTool.type === "text") {\n        this.handleTextOnPointerDown(event, pointerDownState);\n        return;\n      } else if (this.state.activeTool.type === "arrow" || this.state.activeTool.type === "line") {\n        this.handleLinearElementOnPointerDown(event, this.state.activeTool.type, pointerDownState);\n      } else if (this.state.activeTool.type === "image") {\n        // reset image preview on pointerdown\n        (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursor)(this.interactiveCanvas, _constants__WEBPACK_IMPORTED_MODULE_12__.CURSOR_TYPE.CROSSHAIR); // retrieve the latest element as the state may be stale\n\n        const pendingImageElement = this.state.pendingImageElementId && this.scene.getElement(this.state.pendingImageElementId);\n\n        if (!pendingImageElement) {\n          return;\n        }\n\n        this.setState({\n          draggingElement: pendingImageElement,\n          editingElement: pendingImageElement,\n          pendingImageElementId: null,\n          multiElement: null\n        });\n        const {\n          x,\n          y\n        } = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.viewportCoordsToSceneCoords)(event, this.state);\n        const frame = this.getTopLayerFrameAtSceneCoords({\n          x,\n          y\n        });\n        (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(pendingImageElement, {\n          x,\n          y,\n          frameId: frame ? frame.id : null\n        });\n      } else if (this.state.activeTool.type === "freedraw") {\n        this.handleFreeDrawElementOnPointerDown(event, this.state.activeTool.type, pointerDownState);\n      } else if (this.state.activeTool.type === "custom") {\n        (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursorForShape)(this.interactiveCanvas, this.state);\n      } else if (this.state.activeTool.type === "frame") {\n        this.createFrameElementOnPointerDown(pointerDownState);\n      } else if (this.state.activeTool.type === "laser") {\n        this.laserPathManager.startPath(pointerDownState.lastCoords.x, pointerDownState.lastCoords.y);\n      } else if (this.state.activeTool.type !== "eraser" && this.state.activeTool.type !== "hand") {\n        this.createGenericElementOnPointerDown(this.state.activeTool.type, pointerDownState);\n      }\n\n      (_b = (_a = this.props) === null || _a === void 0 ? void 0 : _a.onPointerDown) === null || _b === void 0 ? void 0 : _b.call(_a, this.state.activeTool, pointerDownState);\n      this.onPointerDownEmitter.trigger(this.state.activeTool, pointerDownState, event);\n      const onPointerMove = this.onPointerMoveFromPointerDownHandler(pointerDownState);\n      const onPointerUp = this.onPointerUpFromPointerDownHandler(pointerDownState);\n      const onKeyDown = this.onKeyDownFromPointerDownHandler(pointerDownState);\n      const onKeyUp = this.onKeyUpFromPointerDownHandler(pointerDownState);\n      lastPointerUp = onPointerUp;\n\n      if (!this.state.viewModeEnabled || this.state.activeTool.type === "laser") {\n        window.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.POINTER_MOVE, onPointerMove);\n        window.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.POINTER_UP, onPointerUp);\n        window.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.KEYDOWN, onKeyDown);\n        window.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.KEYUP, onKeyUp);\n        pointerDownState.eventListeners.onMove = onPointerMove;\n        pointerDownState.eventListeners.onUp = onPointerUp;\n        pointerDownState.eventListeners.onKeyUp = onKeyUp;\n        pointerDownState.eventListeners.onKeyDown = onKeyDown;\n      }\n    };\n\n    this.handleCanvasPointerUp = event => {\n      var _a, _b;\n\n      this.removePointer(event);\n      this.lastPointerUpEvent = event;\n      const scenePointer = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.viewportCoordsToSceneCoords)({\n        clientX: event.clientX,\n        clientY: event.clientY\n      }, this.state);\n      const clicklength = event.timeStamp - ((_b = (_a = this.lastPointerDownEvent) === null || _a === void 0 ? void 0 : _a.timeStamp) !== null && _b !== void 0 ? _b : 0);\n\n      if (this.device.editor.isMobile && clicklength < 300) {\n        const hitElement = this.getElementAtPosition(scenePointer.x, scenePointer.y);\n\n        if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isEmbeddableElement)(hitElement) && this.isEmbeddableCenter(hitElement, event, scenePointer.x, scenePointer.y)) {\n          this.handleEmbeddableCenterClick(hitElement);\n          return;\n        }\n      }\n\n      if (this.device.isTouchScreen) {\n        const hitElement = this.getElementAtPosition(scenePointer.x, scenePointer.y);\n        this.hitLinkElement = this.getElementLinkAtPosition(scenePointer, hitElement);\n      }\n\n      if (this.hitLinkElement && !this.state.selectedElementIds[this.hitLinkElement.id]) {\n        if (clicklength < 300 && this.hitLinkElement.type === "embeddable" && !(0,_element_Hyperlink__WEBPACK_IMPORTED_MODULE_45__.isPointHittingLinkIcon)(this.hitLinkElement, this.state, [scenePointer.x, scenePointer.y])) {\n          this.handleEmbeddableCenterClick(this.hitLinkElement);\n        } else {\n          this.redirectToLink(event, this.device.isTouchScreen);\n        }\n      } else if (this.state.viewModeEnabled) {\n        this.setState({\n          activeEmbeddable: null,\n          selectedElementIds: {}\n        });\n      }\n    };\n\n    this.maybeOpenContextMenuAfterPointerDownOnTouchDevices = event => {\n      // deal with opening context menu on touch devices\n      if (event.pointerType === "touch") {\n        invalidateContextMenu = false;\n\n        if (touchTimeout) {\n          // If there\'s already a touchTimeout, this means that there\'s another\n          // touch down and we are doing another touch, so we shouldn\'t open the\n          // context menu.\n          invalidateContextMenu = true;\n        } else {\n          // open the context menu with the first touch\'s clientX and clientY\n          // if the touch is not moving\n          touchTimeout = window.setTimeout(() => {\n            touchTimeout = 0;\n\n            if (!invalidateContextMenu) {\n              this.handleCanvasContextMenu(event);\n            }\n          }, _constants__WEBPACK_IMPORTED_MODULE_12__.TOUCH_CTX_MENU_TIMEOUT);\n        }\n      }\n    };\n\n    this.resetContextMenuTimer = () => {\n      clearTimeout(touchTimeout);\n      touchTimeout = 0;\n      invalidateContextMenu = false;\n    }; // Returns whether the event is a panning\n\n\n    this.handleCanvasPanUsingWheelOrSpaceDrag = event => {\n      if (!(gesture.pointers.size <= 1 && (event.button === _constants__WEBPACK_IMPORTED_MODULE_12__.POINTER_BUTTON.WHEEL || event.button === _constants__WEBPACK_IMPORTED_MODULE_12__.POINTER_BUTTON.MAIN && isHoldingSpace || (0,_appState__WEBPACK_IMPORTED_MODULE_10__.isHandToolActive)(this.state) || this.state.viewModeEnabled)) || (0,_element__WEBPACK_IMPORTED_MODULE_16__.isTextElement)(this.state.editingElement)) {\n        return false;\n      }\n\n      isPanning = true;\n      event.preventDefault();\n      let nextPastePrevented = false;\n      const isLinux = /Linux/.test(window.navigator.platform);\n      (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursor)(this.interactiveCanvas, _constants__WEBPACK_IMPORTED_MODULE_12__.CURSOR_TYPE.GRABBING);\n      let {\n        clientX: lastX,\n        clientY: lastY\n      } = event;\n      const onPointerMove = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.withBatchedUpdatesThrottled)(event => {\n        const deltaX = lastX - event.clientX;\n        const deltaY = lastY - event.clientY;\n        lastX = event.clientX;\n        lastY = event.clientY;\n        /*\n         * Prevent paste event if we move while middle clicking on Linux.\n         * See issue #1383.\n         */\n\n        if (isLinux && !nextPastePrevented && (Math.abs(deltaX) > 1 || Math.abs(deltaY) > 1)) {\n          nextPastePrevented = true;\n          /* Prevent the next paste event */\n\n          const preventNextPaste = event => {\n            document.body.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.PASTE, preventNextPaste);\n            event.stopPropagation();\n          };\n          /*\n           * Reenable next paste in case of disabled middle click paste for\n           * any reason:\n           * - right click paste\n           * - empty clipboard\n           */\n\n\n          const enableNextPaste = () => {\n            setTimeout(() => {\n              document.body.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.PASTE, preventNextPaste);\n              window.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.POINTER_UP, enableNextPaste);\n            }, 100);\n          };\n\n          document.body.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.PASTE, preventNextPaste);\n          window.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.POINTER_UP, enableNextPaste);\n        }\n\n        this.translateCanvas({\n          scrollX: this.state.scrollX - deltaX / this.state.zoom.value,\n          scrollY: this.state.scrollY - deltaY / this.state.zoom.value\n        });\n      });\n      const teardown = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.withBatchedUpdates)(lastPointerUp = () => {\n        lastPointerUp = null;\n        isPanning = false;\n\n        if (!isHoldingSpace) {\n          if (this.state.viewModeEnabled) {\n            (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursor)(this.interactiveCanvas, _constants__WEBPACK_IMPORTED_MODULE_12__.CURSOR_TYPE.GRAB);\n          } else {\n            (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursorForShape)(this.interactiveCanvas, this.state);\n          }\n        }\n\n        this.setState({\n          cursorButton: "up"\n        });\n        this.savePointer(event.clientX, event.clientY, "up");\n        window.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.POINTER_MOVE, onPointerMove);\n        window.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.POINTER_UP, teardown);\n        window.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.BLUR, teardown);\n        onPointerMove.flush();\n      });\n      window.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.BLUR, teardown);\n      window.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.POINTER_MOVE, onPointerMove, {\n        passive: true\n      });\n      window.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.POINTER_UP, teardown);\n      return true;\n    };\n\n    this.clearSelectionIfNotUsingSelection = () => {\n      if (this.state.activeTool.type !== "selection") {\n        this.setState({\n          selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)({}, this.state),\n          selectedGroupIds: {},\n          editingGroupId: null,\n          activeEmbeddable: null\n        });\n      }\n    };\n    /**\n     * @returns whether the pointer event has been completely handled\n     */\n\n\n    this.handleSelectionOnPointerDown = (event, pointerDownState) => {\n      var _a;\n\n      if (this.state.activeTool.type === "selection") {\n        const elements = this.scene.getNonDeletedElements();\n        const selectedElements = this.scene.getSelectedElements(this.state);\n\n        if (selectedElements.length === 1 && !this.state.editingLinearElement) {\n          const elementWithTransformHandleType = (0,_element__WEBPACK_IMPORTED_MODULE_16__.getElementWithTransformHandleType)(elements, this.state, pointerDownState.origin.x, pointerDownState.origin.y, this.state.zoom, event.pointerType);\n\n          if (elementWithTransformHandleType != null) {\n            this.setState({\n              resizingElement: elementWithTransformHandleType.element\n            });\n            pointerDownState.resize.handleType = elementWithTransformHandleType.transformHandleType;\n          }\n        } else if (selectedElements.length > 1) {\n          pointerDownState.resize.handleType = (0,_element__WEBPACK_IMPORTED_MODULE_16__.getTransformHandleTypeFromCoords)((0,_element__WEBPACK_IMPORTED_MODULE_16__.getCommonBounds)(selectedElements), pointerDownState.origin.x, pointerDownState.origin.y, this.state.zoom, event.pointerType);\n        }\n\n        if (pointerDownState.resize.handleType) {\n          pointerDownState.resize.isResizing = true;\n          pointerDownState.resize.offset = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.tupleToCoors)((0,_element__WEBPACK_IMPORTED_MODULE_16__.getResizeOffsetXY)(pointerDownState.resize.handleType, selectedElements, pointerDownState.origin.x, pointerDownState.origin.y));\n\n          if (selectedElements.length === 1 && (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isLinearElement)(selectedElements[0]) && selectedElements[0].points.length === 2) {\n            pointerDownState.resize.arrowDirection = (0,_element__WEBPACK_IMPORTED_MODULE_16__.getResizeArrowDirection)(pointerDownState.resize.handleType, selectedElements[0]);\n          }\n        } else {\n          if (this.state.selectedLinearElement) {\n            const linearElementEditor = this.state.editingLinearElement || this.state.selectedLinearElement;\n            const ret = _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_18__.LinearElementEditor.handlePointerDown(event, this.state, this.history, pointerDownState.origin, linearElementEditor);\n\n            if (ret.hitElement) {\n              pointerDownState.hit.element = ret.hitElement;\n            }\n\n            if (ret.linearElementEditor) {\n              this.setState({\n                selectedLinearElement: ret.linearElementEditor\n              });\n\n              if (this.state.editingLinearElement) {\n                this.setState({\n                  editingLinearElement: ret.linearElementEditor\n                });\n              }\n            }\n\n            if (ret.didAddPoint) {\n              return true;\n            }\n          } // hitElement may already be set above, so check first\n\n\n          pointerDownState.hit.element = (_a = pointerDownState.hit.element) !== null && _a !== void 0 ? _a : this.getElementAtPosition(pointerDownState.origin.x, pointerDownState.origin.y);\n\n          if (pointerDownState.hit.element) {\n            // Early return if pointer is hitting link icon\n            const hitLinkElement = this.getElementLinkAtPosition({\n              x: pointerDownState.origin.x,\n              y: pointerDownState.origin.y\n            }, pointerDownState.hit.element);\n\n            if (hitLinkElement) {\n              return false;\n            }\n          } // For overlapped elements one position may hit\n          // multiple elements\n\n\n          pointerDownState.hit.allHitElements = this.getElementsAtPosition(pointerDownState.origin.x, pointerDownState.origin.y);\n          const hitElement = pointerDownState.hit.element;\n          const someHitElementIsSelected = pointerDownState.hit.allHitElements.some(element => this.isASelectedElement(element));\n\n          if ((hitElement === null || !someHitElementIsSelected) && !event.shiftKey && !pointerDownState.hit.hasHitCommonBoundingBoxOfSelectedElements) {\n            this.clearSelection(hitElement);\n          }\n\n          if (this.state.editingLinearElement) {\n            this.setState({\n              selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)({\n                [this.state.editingLinearElement.elementId]: true\n              }, this.state)\n            }); // If we click on something\n          } else if (hitElement != null) {\n            // on CMD/CTRL, drill down to hit element regardless of groups etc.\n            if (event[_keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.CTRL_OR_CMD]) {\n              if (!this.state.selectedElementIds[hitElement.id]) {\n                pointerDownState.hit.wasAddedToSelection = true;\n              }\n\n              this.setState(prevState => Object.assign(Object.assign({}, (0,_groups__WEBPACK_IMPORTED_MODULE_23__.editGroupForSelectedElement)(prevState, hitElement)), {\n                previousSelectedElementIds: this.state.selectedElementIds\n              })); // mark as not completely handled so as to allow dragging etc.\n\n              return false;\n            } // deselect if item is selected\n            // if shift is not clicked, this will always return true\n            // otherwise, it will trigger selection based on current\n            // state of the box\n\n\n            if (!this.state.selectedElementIds[hitElement.id]) {\n              // if we are currently editing a group, exiting editing mode and deselect the group.\n              if (this.state.editingGroupId && !(0,_groups__WEBPACK_IMPORTED_MODULE_23__.isElementInGroup)(hitElement, this.state.editingGroupId)) {\n                this.setState({\n                  selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)({}, this.state),\n                  selectedGroupIds: {},\n                  editingGroupId: null,\n                  activeEmbeddable: null\n                });\n              } // Add hit element to selection. At this point if we\'re not holding\n              // SHIFT the previously selected element(s) were deselected above\n              // (make sure you use setState updater to use latest state)\n              // With shift-selection, we want to make sure that frames and their containing\n              // elements are not selected at the same time.\n\n\n              if (!someHitElementIsSelected && !pointerDownState.hit.hasHitCommonBoundingBoxOfSelectedElements) {\n                this.setState(prevState => {\n                  const nextSelectedElementIds = Object.assign(Object.assign({}, prevState.selectedElementIds), {\n                    [hitElement.id]: true\n                  });\n                  const previouslySelectedElements = [];\n                  Object.keys(prevState.selectedElementIds).forEach(id => {\n                    const element = this.scene.getElement(id);\n                    element && previouslySelectedElements.push(element);\n                  }); // if hitElement is frame, deselect all of its elements if they are selected\n\n                  if (hitElement.type === "frame") {\n                    (0,_frame__WEBPACK_IMPORTED_MODULE_50__.getFrameChildren)(previouslySelectedElements, hitElement.id).forEach(element => {\n                      delete nextSelectedElementIds[element.id];\n                    });\n                  } else if (hitElement.frameId) {\n                    // if hitElement is in a frame and its frame has been selected\n                    // disable selection for the given element\n                    if (nextSelectedElementIds[hitElement.frameId]) {\n                      delete nextSelectedElementIds[hitElement.id];\n                    }\n                  } else {\n                    // hitElement is neither a frame nor an element in a frame\n                    // but since hitElement could be in a group with some frames\n                    // this means selecting hitElement will have the frames selected as well\n                    // because we want to keep the invariant:\n                    // - frames and their elements are not selected at the same time\n                    // we deselect elements in those frames that were previously selected\n                    const groupIds = hitElement.groupIds;\n                    const framesInGroups = new Set(groupIds.flatMap(gid => (0,_groups__WEBPACK_IMPORTED_MODULE_23__.getElementsInGroup)(this.scene.getNonDeletedElements(), gid)).filter(element => element.type === "frame").map(frame => frame.id));\n\n                    if (framesInGroups.size > 0) {\n                      previouslySelectedElements.forEach(element => {\n                        if (element.frameId && framesInGroups.has(element.frameId)) {\n                          // deselect element and groups containing the element\n                          delete nextSelectedElementIds[element.id];\n                          element.groupIds.flatMap(gid => (0,_groups__WEBPACK_IMPORTED_MODULE_23__.getElementsInGroup)(this.scene.getNonDeletedElements(), gid)).forEach(element => {\n                            delete nextSelectedElementIds[element.id];\n                          });\n                        }\n                      });\n                    }\n                  }\n\n                  return Object.assign(Object.assign({}, (0,_groups__WEBPACK_IMPORTED_MODULE_23__.selectGroupsForSelectedElements)({\n                    editingGroupId: prevState.editingGroupId,\n                    selectedElementIds: nextSelectedElementIds\n                  }, this.scene.getNonDeletedElements(), prevState, this)), {\n                    showHyperlinkPopup: hitElement.link || (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isEmbeddableElement)(hitElement) ? "info" : false\n                  });\n                });\n                pointerDownState.hit.wasAddedToSelection = true;\n              }\n            }\n          }\n\n          this.setState({\n            previousSelectedElementIds: this.state.selectedElementIds\n          });\n        }\n      }\n\n      return false;\n    };\n\n    this.handleTextOnPointerDown = (event, pointerDownState) => {\n      // if we\'re currently still editing text, clicking outside\n      // should only finalize it, not create another (irrespective\n      // of state.activeTool.locked)\n      if ((0,_element__WEBPACK_IMPORTED_MODULE_16__.isTextElement)(this.state.editingElement)) {\n        return;\n      }\n\n      let sceneX = pointerDownState.origin.x;\n      let sceneY = pointerDownState.origin.y;\n      const element = this.getElementAtPosition(sceneX, sceneY, {\n        includeBoundTextElement: true\n      }); // FIXME\n\n      let container = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_43__.getTextBindableContainerAtPosition)(this.scene.getNonDeletedElements(), this.state, sceneX, sceneY);\n\n      if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.hasBoundTextElement)(element)) {\n        container = element;\n        sceneX = element.x + element.width / 2;\n        sceneY = element.y + element.height / 2;\n      }\n\n      this.startTextEditing({\n        sceneX,\n        sceneY,\n        insertAtParentCenter: !event.altKey,\n        container\n      });\n      (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.resetCursor)(this.interactiveCanvas);\n\n      if (!this.state.activeTool.locked) {\n        this.setState({\n          activeTool: (0,_utils__WEBPACK_IMPORTED_MODULE_33__.updateActiveTool)(this.state, {\n            type: "selection"\n          })\n        });\n      }\n    };\n\n    this.handleFreeDrawElementOnPointerDown = (event, elementType, pointerDownState) => {\n      // Begin a mark capture. This does not have to update state yet.\n      const [gridX, gridY] = (0,_math__WEBPACK_IMPORTED_MODULE_28__.getGridPoint)(pointerDownState.origin.x, pointerDownState.origin.y, null);\n      const topLayerFrame = this.getTopLayerFrameAtSceneCoords({\n        x: gridX,\n        y: gridY\n      });\n      const element = (0,_element_newElement__WEBPACK_IMPORTED_MODULE_20__.newFreeDrawElement)({\n        type: elementType,\n        x: gridX,\n        y: gridY,\n        strokeColor: this.state.currentItemStrokeColor,\n        backgroundColor: this.state.currentItemBackgroundColor,\n        fillStyle: this.state.currentItemFillStyle,\n        strokeWidth: this.state.currentItemStrokeWidth,\n        strokeStyle: this.state.currentItemStrokeStyle,\n        roughness: this.state.currentItemRoughness,\n        opacity: this.state.currentItemOpacity,\n        roundness: null,\n        simulatePressure: event.pressure === 0.5,\n        locked: false,\n        frameId: topLayerFrame ? topLayerFrame.id : null\n      });\n      this.setState(prevState => {\n        const nextSelectedElementIds = Object.assign({}, prevState.selectedElementIds);\n        delete nextSelectedElementIds[element.id];\n        return {\n          selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)(nextSelectedElementIds, prevState)\n        };\n      });\n      const pressures = element.simulatePressure ? element.pressures : [...element.pressures, event.pressure];\n      (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(element, {\n        points: [[0, 0]],\n        pressures\n      });\n      const boundElement = (0,_element_binding__WEBPACK_IMPORTED_MODULE_17__.getHoveredElementForBinding)(pointerDownState.origin, this.scene);\n      this.scene.addNewElement(element);\n      this.setState({\n        draggingElement: element,\n        editingElement: element,\n        startBoundElement: boundElement,\n        suggestedBindings: []\n      });\n    }; //create rectangle element with youtube top left on nearest grid point width / hight 640/360\n\n\n    this.insertEmbeddableElement = ({\n      sceneX,\n      sceneY,\n      link\n    }) => {\n      var _a;\n\n      const [gridX, gridY] = (0,_math__WEBPACK_IMPORTED_MODULE_28__.getGridPoint)(sceneX, sceneY, ((_a = this.lastPointerDownEvent) === null || _a === void 0 ? void 0 : _a[_keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.CTRL_OR_CMD]) ? null : this.state.gridSize);\n      const embedLink = (0,_element_embeddable__WEBPACK_IMPORTED_MODULE_34__.getEmbedLink)(link);\n\n      if (!embedLink) {\n        return;\n      }\n\n      if (embedLink.warning) {\n        this.setToast({\n          message: embedLink.warning,\n          closable: true\n        });\n      }\n\n      const element = (0,_element_newElement__WEBPACK_IMPORTED_MODULE_20__.newEmbeddableElement)({\n        type: "embeddable",\n        x: gridX,\n        y: gridY,\n        strokeColor: "transparent",\n        backgroundColor: "transparent",\n        fillStyle: this.state.currentItemFillStyle,\n        strokeWidth: this.state.currentItemStrokeWidth,\n        strokeStyle: this.state.currentItemStrokeStyle,\n        roughness: this.state.currentItemRoughness,\n        roundness: this.getCurrentItemRoundness("embeddable"),\n        opacity: this.state.currentItemOpacity,\n        locked: false,\n        width: embedLink.aspectRatio.w,\n        height: embedLink.aspectRatio.h,\n        link,\n        validated: null\n      });\n      this.scene.replaceAllElements([...this.scene.getElementsIncludingDeleted(), element]);\n      return element;\n    };\n\n    this.createImageElement = ({\n      sceneX,\n      sceneY,\n      addToFrameUnderCursor = true\n    }) => {\n      var _a;\n\n      const [gridX, gridY] = (0,_math__WEBPACK_IMPORTED_MODULE_28__.getGridPoint)(sceneX, sceneY, ((_a = this.lastPointerDownEvent) === null || _a === void 0 ? void 0 : _a[_keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.CTRL_OR_CMD]) ? null : this.state.gridSize);\n      const topLayerFrame = addToFrameUnderCursor ? this.getTopLayerFrameAtSceneCoords({\n        x: gridX,\n        y: gridY\n      }) : null;\n      const element = (0,_element__WEBPACK_IMPORTED_MODULE_16__.newImageElement)({\n        type: "image",\n        x: gridX,\n        y: gridY,\n        strokeColor: this.state.currentItemStrokeColor,\n        backgroundColor: this.state.currentItemBackgroundColor,\n        fillStyle: this.state.currentItemFillStyle,\n        strokeWidth: this.state.currentItemStrokeWidth,\n        strokeStyle: this.state.currentItemStrokeStyle,\n        roughness: this.state.currentItemRoughness,\n        roundness: null,\n        opacity: this.state.currentItemOpacity,\n        locked: false,\n        frameId: topLayerFrame ? topLayerFrame.id : null\n      });\n      return element;\n    };\n\n    this.handleLinearElementOnPointerDown = (event, elementType, pointerDownState) => {\n      if (this.state.multiElement) {\n        const {\n          multiElement\n        } = this.state; // finalize if completing a loop\n\n        if (multiElement.type === "line" && (0,_math__WEBPACK_IMPORTED_MODULE_28__.isPathALoop)(multiElement.points, this.state.zoom.value)) {\n          (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(multiElement, {\n            lastCommittedPoint: multiElement.points[multiElement.points.length - 1]\n          });\n          this.actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_5__.actionFinalize);\n          return;\n        }\n\n        const {\n          x: rx,\n          y: ry,\n          lastCommittedPoint\n        } = multiElement; // clicking inside commit zone \u2192 finalize arrow\n\n        if (multiElement.points.length > 1 && lastCommittedPoint && (0,_math__WEBPACK_IMPORTED_MODULE_28__.distance2d)(pointerDownState.origin.x - rx, pointerDownState.origin.y - ry, lastCommittedPoint[0], lastCommittedPoint[1]) < _constants__WEBPACK_IMPORTED_MODULE_12__.LINE_CONFIRM_THRESHOLD) {\n          this.actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_5__.actionFinalize);\n          return;\n        }\n\n        this.setState(prevState => ({\n          selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)(Object.assign(Object.assign({}, prevState.selectedElementIds), {\n            [multiElement.id]: true\n          }), prevState)\n        })); // clicking outside commit zone \u2192 update reference for last committed\n        // point\n\n        (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(multiElement, {\n          lastCommittedPoint: multiElement.points[multiElement.points.length - 1]\n        });\n        (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursor)(this.interactiveCanvas, _constants__WEBPACK_IMPORTED_MODULE_12__.CURSOR_TYPE.POINTER);\n      } else {\n        const [gridX, gridY] = (0,_math__WEBPACK_IMPORTED_MODULE_28__.getGridPoint)(pointerDownState.origin.x, pointerDownState.origin.y, event[_keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.CTRL_OR_CMD] ? null : this.state.gridSize);\n        const topLayerFrame = this.getTopLayerFrameAtSceneCoords({\n          x: gridX,\n          y: gridY\n        });\n        /* If arrow is pre-arrowheads, it will have undefined for both start and end arrowheads.\n        If so, we want it to be null for start and "arrow" for end. If the linear item is not\n        an arrow, we want it to be null for both. Otherwise, we want it to use the\n        values from appState. */\n\n        const {\n          currentItemStartArrowhead,\n          currentItemEndArrowhead\n        } = this.state;\n        const [startArrowhead, endArrowhead] = elementType === "arrow" ? [currentItemStartArrowhead, currentItemEndArrowhead] : [null, null];\n        const element = (0,_element__WEBPACK_IMPORTED_MODULE_16__.newLinearElement)({\n          type: elementType,\n          x: gridX,\n          y: gridY,\n          strokeColor: this.state.currentItemStrokeColor,\n          backgroundColor: this.state.currentItemBackgroundColor,\n          fillStyle: this.state.currentItemFillStyle,\n          strokeWidth: this.state.currentItemStrokeWidth,\n          strokeStyle: this.state.currentItemStrokeStyle,\n          roughness: this.state.currentItemRoughness,\n          opacity: this.state.currentItemOpacity,\n          roundness: this.state.currentItemRoundness === "round" ? {\n            type: _constants__WEBPACK_IMPORTED_MODULE_12__.ROUNDNESS.PROPORTIONAL_RADIUS\n          } : null,\n          startArrowhead,\n          endArrowhead,\n          locked: false,\n          frameId: topLayerFrame ? topLayerFrame.id : null\n        });\n        this.setState(prevState => {\n          const nextSelectedElementIds = Object.assign({}, prevState.selectedElementIds);\n          delete nextSelectedElementIds[element.id];\n          return {\n            selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)(nextSelectedElementIds, prevState)\n          };\n        });\n        (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(element, {\n          points: [...element.points, [0, 0]]\n        });\n        const boundElement = (0,_element_binding__WEBPACK_IMPORTED_MODULE_17__.getHoveredElementForBinding)(pointerDownState.origin, this.scene);\n        this.scene.addNewElement(element);\n        this.setState({\n          draggingElement: element,\n          editingElement: element,\n          startBoundElement: boundElement,\n          suggestedBindings: []\n        });\n      }\n    };\n\n    this.createGenericElementOnPointerDown = (elementType, pointerDownState) => {\n      var _a;\n\n      const [gridX, gridY] = (0,_math__WEBPACK_IMPORTED_MODULE_28__.getGridPoint)(pointerDownState.origin.x, pointerDownState.origin.y, ((_a = this.lastPointerDownEvent) === null || _a === void 0 ? void 0 : _a[_keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.CTRL_OR_CMD]) ? null : this.state.gridSize);\n      const topLayerFrame = this.getTopLayerFrameAtSceneCoords({\n        x: gridX,\n        y: gridY\n      });\n      const baseElementAttributes = {\n        x: gridX,\n        y: gridY,\n        strokeColor: this.state.currentItemStrokeColor,\n        backgroundColor: this.state.currentItemBackgroundColor,\n        fillStyle: this.state.currentItemFillStyle,\n        strokeWidth: this.state.currentItemStrokeWidth,\n        strokeStyle: this.state.currentItemStrokeStyle,\n        roughness: this.state.currentItemRoughness,\n        opacity: this.state.currentItemOpacity,\n        roundness: this.getCurrentItemRoundness(elementType),\n        locked: false,\n        frameId: topLayerFrame ? topLayerFrame.id : null\n      };\n      let element;\n\n      if (elementType === "embeddable") {\n        element = (0,_element_newElement__WEBPACK_IMPORTED_MODULE_20__.newEmbeddableElement)(Object.assign({\n          type: "embeddable",\n          validated: null\n        }, baseElementAttributes));\n      } else {\n        element = (0,_element__WEBPACK_IMPORTED_MODULE_16__.newElement)(Object.assign({\n          type: elementType\n        }, baseElementAttributes));\n      }\n\n      if (element.type === "selection") {\n        this.setState({\n          selectionElement: element,\n          draggingElement: element\n        });\n      } else {\n        this.scene.addNewElement(element);\n        this.setState({\n          multiElement: null,\n          draggingElement: element,\n          editingElement: element\n        });\n      }\n    };\n\n    this.createFrameElementOnPointerDown = pointerDownState => {\n      var _a;\n\n      const [gridX, gridY] = (0,_math__WEBPACK_IMPORTED_MODULE_28__.getGridPoint)(pointerDownState.origin.x, pointerDownState.origin.y, ((_a = this.lastPointerDownEvent) === null || _a === void 0 ? void 0 : _a[_keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.CTRL_OR_CMD]) ? null : this.state.gridSize);\n      const frame = (0,_element_newElement__WEBPACK_IMPORTED_MODULE_20__.newFrameElement)(Object.assign({\n        x: gridX,\n        y: gridY,\n        opacity: this.state.currentItemOpacity,\n        locked: false\n      }, _constants__WEBPACK_IMPORTED_MODULE_12__.FRAME_STYLE));\n      this.scene.replaceAllElements([...this.scene.getElementsIncludingDeleted(), frame]);\n      this.setState({\n        multiElement: null,\n        draggingElement: frame,\n        editingElement: frame\n      });\n    };\n\n    this.restoreReadyToEraseElements = pointerDownState => {\n      const elements = this.scene.getElementsIncludingDeleted().map(ele => {\n        if (pointerDownState.elementIdsToErase[ele.id] && pointerDownState.elementIdsToErase[ele.id].erase) {\n          return (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.newElementWith)(ele, {\n            opacity: pointerDownState.elementIdsToErase[ele.id].opacity\n          });\n        } else if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isBoundToContainer)(ele) && pointerDownState.elementIdsToErase[ele.containerId] && pointerDownState.elementIdsToErase[ele.containerId].erase) {\n          return (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.newElementWith)(ele, {\n            opacity: pointerDownState.elementIdsToErase[ele.containerId].opacity\n          });\n        } else if (ele.frameId && pointerDownState.elementIdsToErase[ele.frameId] && pointerDownState.elementIdsToErase[ele.frameId].erase) {\n          return (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.newElementWith)(ele, {\n            opacity: pointerDownState.elementIdsToErase[ele.frameId].opacity\n          });\n        }\n\n        return ele;\n      });\n      this.scene.replaceAllElements(elements);\n    };\n\n    this.eraseElements = pointerDownState => {\n      const elements = this.scene.getElementsIncludingDeleted().map(ele => {\n        if (pointerDownState.elementIdsToErase[ele.id] && pointerDownState.elementIdsToErase[ele.id].erase) {\n          return (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.newElementWith)(ele, {\n            isDeleted: true\n          });\n        } else if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isBoundToContainer)(ele) && pointerDownState.elementIdsToErase[ele.containerId] && pointerDownState.elementIdsToErase[ele.containerId].erase) {\n          return (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.newElementWith)(ele, {\n            isDeleted: true\n          });\n        } else if (ele.frameId && pointerDownState.elementIdsToErase[ele.frameId] && pointerDownState.elementIdsToErase[ele.frameId].erase) {\n          return (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.newElementWith)(ele, {\n            isDeleted: true\n          });\n        }\n\n        return ele;\n      });\n      this.history.resumeRecording();\n      this.scene.replaceAllElements(elements);\n    };\n\n    this.initializeImage = ({\n      imageFile,\n      imageElement: _imageElement,\n      showCursorImagePreview = false\n    }) => __awaiter(this, void 0, void 0, function* () {\n      var _e, _f, _g, _h; // at this point this should be guaranteed image file, but we do this check\n      // to satisfy TS down the line\n\n\n      if (!(0,_data_blob__WEBPACK_IMPORTED_MODULE_39__.isSupportedImageFile)(imageFile)) {\n        throw new Error((0,_i18n__WEBPACK_IMPORTED_MODULE_25__.t)("errors.unsupportedFileType"));\n      }\n\n      const mimeType = imageFile.type;\n      (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursor)(this.interactiveCanvas, "wait");\n\n      if (mimeType === _constants__WEBPACK_IMPORTED_MODULE_12__.MIME_TYPES.svg) {\n        try {\n          imageFile = (0,_data_blob__WEBPACK_IMPORTED_MODULE_39__.SVGStringToFile)(yield (0,_element_image__WEBPACK_IMPORTED_MODULE_40__.normalizeSVG)(yield imageFile.text()), imageFile.name);\n        } catch (error) {\n          console.warn(error);\n          throw new Error((0,_i18n__WEBPACK_IMPORTED_MODULE_25__.t)("errors.svgImageInsertError"));\n        }\n      } // generate image id (by default the file digest) before any\n      // resizing/compression takes place to keep it more portable\n\n\n      const fileId = yield ((_f = (_e = this.props).generateIdForFile) === null || _f === void 0 ? void 0 : _f.call(_e, imageFile)) || (0,_data_blob__WEBPACK_IMPORTED_MODULE_39__.generateIdFromFile)(imageFile);\n\n      if (!fileId) {\n        console.warn("Couldn\'t generate file id or the supplied `generateIdForFile` didn\'t resolve to one.");\n        throw new Error((0,_i18n__WEBPACK_IMPORTED_MODULE_25__.t)("errors.imageInsertError"));\n      }\n\n      const existingFileData = this.files[fileId];\n\n      if (!(existingFileData === null || existingFileData === void 0 ? void 0 : existingFileData.dataURL)) {\n        try {\n          imageFile = yield (0,_data_blob__WEBPACK_IMPORTED_MODULE_39__.resizeImageFile)(imageFile, {\n            maxWidthOrHeight: _constants__WEBPACK_IMPORTED_MODULE_12__.DEFAULT_MAX_IMAGE_WIDTH_OR_HEIGHT\n          });\n        } catch (error) {\n          console.error("error trying to resing image file on insertion", error);\n        }\n\n        if (imageFile.size > _constants__WEBPACK_IMPORTED_MODULE_12__.MAX_ALLOWED_FILE_BYTES) {\n          throw new Error((0,_i18n__WEBPACK_IMPORTED_MODULE_25__.t)("errors.fileTooBig", {\n            maxSize: `${Math.trunc(_constants__WEBPACK_IMPORTED_MODULE_12__.MAX_ALLOWED_FILE_BYTES / 1024 / 1024)}MB`\n          }));\n        }\n      }\n\n      if (showCursorImagePreview) {\n        const dataURL = (_g = this.files[fileId]) === null || _g === void 0 ? void 0 : _g.dataURL; // optimization so that we don\'t unnecessarily resize the original\n        // full-size file for cursor preview\n        // (it\'s much faster to convert the resized dataURL to File)\n\n        const resizedFile = dataURL && (0,_data_blob__WEBPACK_IMPORTED_MODULE_39__.dataURLToFile)(dataURL);\n        this.setImagePreviewCursor(resizedFile || imageFile);\n      }\n\n      const dataURL = ((_h = this.files[fileId]) === null || _h === void 0 ? void 0 : _h.dataURL) || (yield (0,_data_blob__WEBPACK_IMPORTED_MODULE_39__.getDataURL)(imageFile));\n      const imageElement = (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(_imageElement, {\n        fileId\n      }, false);\n      return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {\n        var _j;\n\n        try {\n          this.files = Object.assign(Object.assign({}, this.files), {\n            [fileId]: {\n              mimeType,\n              id: fileId,\n              dataURL,\n              created: Date.now(),\n              lastRetrieved: Date.now()\n            }\n          });\n          const cachedImageData = this.imageCache.get(fileId);\n\n          if (!cachedImageData) {\n            this.addNewImagesToImageCache();\n            yield this.updateImageCache([imageElement]);\n          }\n\n          if ((cachedImageData === null || cachedImageData === void 0 ? void 0 : cachedImageData.image) instanceof Promise) {\n            yield cachedImageData.image;\n          }\n\n          if (this.state.pendingImageElementId !== imageElement.id && ((_j = this.state.draggingElement) === null || _j === void 0 ? void 0 : _j.id) !== imageElement.id) {\n            this.initializeImageDimensions(imageElement, true);\n          }\n\n          resolve(imageElement);\n        } catch (error) {\n          console.error(error);\n          reject(new Error((0,_i18n__WEBPACK_IMPORTED_MODULE_25__.t)("errors.imageInsertError")));\n        } finally {\n          if (!showCursorImagePreview) {\n            (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.resetCursor)(this.interactiveCanvas);\n          }\n        }\n      }));\n    });\n    /**\n     * inserts image into elements array and rerenders\n     */\n\n\n    this.insertImageElement = (imageElement, imageFile, showCursorImagePreview) => __awaiter(this, void 0, void 0, function* () {\n      // we should be handling all cases upstream, but in case we forget to handle\n      // a future case, let\'s throw here\n      if (!this.isToolSupported("image")) {\n        this.setState({\n          errorMessage: (0,_i18n__WEBPACK_IMPORTED_MODULE_25__.t)("errors.imageToolNotSupported")\n        });\n        return;\n      }\n\n      this.scene.addNewElement(imageElement);\n\n      try {\n        return yield this.initializeImage({\n          imageFile,\n          imageElement,\n          showCursorImagePreview\n        });\n      } catch (error) {\n        (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(imageElement, {\n          isDeleted: true\n        });\n        this.actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_5__.actionFinalize);\n        this.setState({\n          errorMessage: error.message || (0,_i18n__WEBPACK_IMPORTED_MODULE_25__.t)("errors.imageInsertError")\n        });\n        return null;\n      }\n    });\n\n    this.setImagePreviewCursor = imageFile => __awaiter(this, void 0, void 0, function* () {\n      // mustn\'t be larger than 128 px\n      // https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Basic_User_Interface/Using_URL_values_for_the_cursor_property\n      const cursorImageSizePx = 96;\n      const imagePreview = yield (0,_data_blob__WEBPACK_IMPORTED_MODULE_39__.resizeImageFile)(imageFile, {\n        maxWidthOrHeight: cursorImageSizePx\n      });\n      let previewDataURL = yield (0,_data_blob__WEBPACK_IMPORTED_MODULE_39__.getDataURL)(imagePreview); // SVG cannot be resized via `resizeImageFile` so we resize by rendering to\n      // a small canvas\n\n      if (imageFile.type === _constants__WEBPACK_IMPORTED_MODULE_12__.MIME_TYPES.svg) {\n        const img = yield (0,_element_image__WEBPACK_IMPORTED_MODULE_40__.loadHTMLImageElement)(previewDataURL);\n        let height = Math.min(img.height, cursorImageSizePx);\n        let width = height * (img.width / img.height);\n\n        if (width > cursorImageSizePx) {\n          width = cursorImageSizePx;\n          height = width * (img.height / img.width);\n        }\n\n        const canvas = document.createElement("canvas");\n        canvas.height = height;\n        canvas.width = width;\n        const context = canvas.getContext("2d");\n        context.drawImage(img, 0, 0, width, height);\n        previewDataURL = canvas.toDataURL(_constants__WEBPACK_IMPORTED_MODULE_12__.MIME_TYPES.svg);\n      }\n\n      if (this.state.pendingImageElementId) {\n        (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursor)(this.interactiveCanvas, `url(${previewDataURL}) 4 4, auto`);\n      }\n    });\n\n    this.onImageAction = ({\n      insertOnCanvasDirectly\n    }) => __awaiter(this, void 0, void 0, function* () {\n      try {\n        const clientX = this.state.width / 2 + this.state.offsetLeft;\n        const clientY = this.state.height / 2 + this.state.offsetTop;\n        const {\n          x,\n          y\n        } = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.viewportCoordsToSceneCoords)({\n          clientX,\n          clientY\n        }, this.state);\n        const imageFile = yield (0,_data_filesystem__WEBPACK_IMPORTED_MODULE_42__.fileOpen)({\n          description: "Image",\n          extensions: Object.keys(_constants__WEBPACK_IMPORTED_MODULE_12__.IMAGE_MIME_TYPES)\n        });\n        const imageElement = this.createImageElement({\n          sceneX: x,\n          sceneY: y,\n          addToFrameUnderCursor: false\n        });\n\n        if (insertOnCanvasDirectly) {\n          this.insertImageElement(imageElement, imageFile);\n          this.initializeImageDimensions(imageElement);\n          this.setState({\n            selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)({\n              [imageElement.id]: true\n            }, this.state)\n          }, () => {\n            this.actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_5__.actionFinalize);\n          });\n        } else {\n          this.setState({\n            pendingImageElementId: imageElement.id\n          }, () => {\n            this.insertImageElement(imageElement, imageFile,\n            /* showCursorImagePreview */\n            true);\n          });\n        }\n      } catch (error) {\n        if (error.name !== "AbortError") {\n          console.error(error);\n        } else {\n          console.warn(error);\n        }\n\n        this.setState({\n          pendingImageElementId: null,\n          editingElement: null,\n          activeTool: (0,_utils__WEBPACK_IMPORTED_MODULE_33__.updateActiveTool)(this.state, {\n            type: "selection"\n          })\n        }, () => {\n          this.actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_5__.actionFinalize);\n        });\n      }\n    });\n\n    this.initializeImageDimensions = (imageElement, forceNaturalSize = false) => {\n      var _a;\n\n      const image = (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isInitializedImageElement)(imageElement) && ((_a = this.imageCache.get(imageElement.fileId)) === null || _a === void 0 ? void 0 : _a.image);\n\n      if (!image || image instanceof Promise) {\n        if (imageElement.width < _constants__WEBPACK_IMPORTED_MODULE_12__.DRAGGING_THRESHOLD / this.state.zoom.value && imageElement.height < _constants__WEBPACK_IMPORTED_MODULE_12__.DRAGGING_THRESHOLD / this.state.zoom.value) {\n          const placeholderSize = 100 / this.state.zoom.value;\n          (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(imageElement, {\n            x: imageElement.x - placeholderSize / 2,\n            y: imageElement.y - placeholderSize / 2,\n            width: placeholderSize,\n            height: placeholderSize\n          });\n        }\n\n        return;\n      }\n\n      if (forceNaturalSize || // if user-created bounding box is below threshold, assume the\n      // intention was to click instead of drag, and use the image\'s\n      // intrinsic size\n      imageElement.width < _constants__WEBPACK_IMPORTED_MODULE_12__.DRAGGING_THRESHOLD / this.state.zoom.value && imageElement.height < _constants__WEBPACK_IMPORTED_MODULE_12__.DRAGGING_THRESHOLD / this.state.zoom.value) {\n        const minHeight = Math.max(this.state.height - 120, 160); // max 65% of canvas height, clamped to <300px, vh - 120px>\n\n        const maxHeight = Math.min(minHeight, Math.floor(this.state.height * 0.5) / this.state.zoom.value);\n        const height = Math.min(image.naturalHeight, maxHeight);\n        const width = height * (image.naturalWidth / image.naturalHeight); // add current imageElement width/height to account for previous centering\n        // of the placeholder image\n\n        const x = imageElement.x + imageElement.width / 2 - width / 2;\n        const y = imageElement.y + imageElement.height / 2 - height / 2;\n        (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(imageElement, {\n          x,\n          y,\n          width,\n          height\n        });\n      }\n    };\n    /** updates image cache, refreshing updated elements and/or setting status\n        to error for images that fail during <img> element creation */\n\n\n    this.updateImageCache = (elements, files = this.files) => __awaiter(this, void 0, void 0, function* () {\n      const {\n        updatedFiles,\n        erroredFiles\n      } = yield (0,_element_image__WEBPACK_IMPORTED_MODULE_40__.updateImageCache)({\n        imageCache: this.imageCache,\n        fileIds: elements.map(element => element.fileId),\n        files\n      });\n\n      if (updatedFiles.size || erroredFiles.size) {\n        for (const element of elements) {\n          if (updatedFiles.has(element.fileId)) {\n            _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_66__.ShapeCache["delete"](element);\n          }\n        }\n      }\n\n      if (erroredFiles.size) {\n        this.scene.replaceAllElements(this.scene.getElementsIncludingDeleted().map(element => {\n          if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isInitializedImageElement)(element) && erroredFiles.has(element.fileId)) {\n            return (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.newElementWith)(element, {\n              status: "error"\n            });\n          }\n\n          return element;\n        }));\n      }\n\n      return {\n        updatedFiles,\n        erroredFiles\n      };\n    });\n    /** adds new images to imageCache and re-renders if needed */\n\n\n    this.addNewImagesToImageCache = (imageElements = (0,_element_image__WEBPACK_IMPORTED_MODULE_40__.getInitializedImageElements)(this.scene.getNonDeletedElements()), files = this.files) => __awaiter(this, void 0, void 0, function* () {\n      const uncachedImageElements = imageElements.filter(element => !element.isDeleted && !this.imageCache.has(element.fileId));\n\n      if (uncachedImageElements.length) {\n        const {\n          updatedFiles\n        } = yield this.updateImageCache(uncachedImageElements, files);\n\n        if (updatedFiles.size) {\n          this.scene.informMutation();\n        }\n      }\n    });\n    /** generally you should use `addNewImagesToImageCache()` directly if you need\n     *  to render new images. This is just a failsafe  */\n\n\n    this.scheduleImageRefresh = lodash_throttle__WEBPACK_IMPORTED_MODULE_41___default()(() => {\n      this.addNewImagesToImageCache();\n    }, _constants__WEBPACK_IMPORTED_MODULE_12__.IMAGE_RENDER_TIMEOUT);\n\n    this.updateBindingEnabledOnPointerMove = event => {\n      const shouldEnableBinding = (0,_element_binding__WEBPACK_IMPORTED_MODULE_17__.shouldEnableBindingForPointerEvent)(event);\n\n      if (this.state.isBindingEnabled !== shouldEnableBinding) {\n        this.setState({\n          isBindingEnabled: shouldEnableBinding\n        });\n      }\n    };\n\n    this.maybeSuggestBindingAtCursor = pointerCoords => {\n      const hoveredBindableElement = (0,_element_binding__WEBPACK_IMPORTED_MODULE_17__.getHoveredElementForBinding)(pointerCoords, this.scene);\n      this.setState({\n        suggestedBindings: hoveredBindableElement != null ? [hoveredBindableElement] : []\n      });\n    };\n\n    this.maybeSuggestBindingsForLinearElementAtCoords = (linearElement,\n    /** scene coords */\n    pointerCoords, // During line creation the start binding hasn\'t been written yet\n    // into `linearElement`\n    oppositeBindingBoundElement) => {\n      if (!pointerCoords.length) {\n        return;\n      }\n\n      const suggestedBindings = pointerCoords.reduce((acc, coords) => {\n        const hoveredBindableElement = (0,_element_binding__WEBPACK_IMPORTED_MODULE_17__.getHoveredElementForBinding)(coords, this.scene);\n\n        if (hoveredBindableElement != null && !(0,_element_binding__WEBPACK_IMPORTED_MODULE_17__.isLinearElementSimpleAndAlreadyBound)(linearElement, oppositeBindingBoundElement === null || oppositeBindingBoundElement === void 0 ? void 0 : oppositeBindingBoundElement.id, hoveredBindableElement)) {\n          acc.push(hoveredBindableElement);\n        }\n\n        return acc;\n      }, []);\n      this.setState({\n        suggestedBindings\n      });\n    };\n\n    this.handleInteractiveCanvasRef = canvas => {\n      var _a, _b, _c; // canvas is null when unmounting\n\n\n      if (canvas !== null) {\n        this.interactiveCanvas = canvas; // -----------------------------------------------------------------------\n        // NOTE wheel, touchstart, touchend events must be registered outside\n        // of react because react binds them them passively (so we can\'t prevent\n        // default on them)\n\n        this.interactiveCanvas.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.WHEEL, this.handleWheel);\n        this.interactiveCanvas.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.TOUCH_START, this.onTouchStart);\n        this.interactiveCanvas.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.TOUCH_END, this.onTouchEnd); // -----------------------------------------------------------------------\n      } else {\n        (_a = this.interactiveCanvas) === null || _a === void 0 ? void 0 : _a.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.WHEEL, this.handleWheel);\n        (_b = this.interactiveCanvas) === null || _b === void 0 ? void 0 : _b.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.TOUCH_START, this.onTouchStart);\n        (_c = this.interactiveCanvas) === null || _c === void 0 ? void 0 : _c.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.TOUCH_END, this.onTouchEnd);\n      }\n    };\n\n    this.handleAppOnDrop = event => __awaiter(this, void 0, void 0, function* () {\n      var _k, _l, _m, _o; // must be retrieved first, in the same frame\n\n\n      const {\n        file,\n        fileHandle\n      } = yield (0,_data_blob__WEBPACK_IMPORTED_MODULE_39__.getFileFromEvent)(event);\n      const {\n        x: sceneX,\n        y: sceneY\n      } = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.viewportCoordsToSceneCoords)(event, this.state);\n\n      try {\n        // if image tool not supported, don\'t show an error here and let it fall\n        // through so we still support importing scene data from images. If no\n        // scene data encoded, we\'ll show an error then\n        if ((0,_data_blob__WEBPACK_IMPORTED_MODULE_39__.isSupportedImageFile)(file) && this.isToolSupported("image")) {\n          // first attempt to decode scene from the image if it\'s embedded\n          // ---------------------------------------------------------------------\n          if ((file === null || file === void 0 ? void 0 : file.type) === _constants__WEBPACK_IMPORTED_MODULE_12__.MIME_TYPES.png || (file === null || file === void 0 ? void 0 : file.type) === _constants__WEBPACK_IMPORTED_MODULE_12__.MIME_TYPES.svg) {\n            try {\n              const scene = yield (0,_data__WEBPACK_IMPORTED_MODULE_13__.loadFromBlob)(file, this.state, this.scene.getElementsIncludingDeleted(), fileHandle);\n              this.syncActionResult(Object.assign(Object.assign({}, scene), {\n                appState: Object.assign(Object.assign({}, scene.appState || this.state), {\n                  isLoading: false\n                }),\n                replaceFiles: true,\n                commitToHistory: true\n              }));\n              return;\n            } catch (error) {\n              if (error.name !== "EncodingError") {\n                throw error;\n              }\n            }\n          } // if no scene is embedded or we fail for whatever reason, fall back\n          // to importing as regular image\n          // ---------------------------------------------------------------------\n\n\n          const imageElement = this.createImageElement({\n            sceneX,\n            sceneY\n          });\n          this.insertImageElement(imageElement, file);\n          this.initializeImageDimensions(imageElement);\n          this.setState({\n            selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)({\n              [imageElement.id]: true\n            }, this.state)\n          });\n          return;\n        }\n      } catch (error) {\n        return this.setState({\n          isLoading: false,\n          errorMessage: error.message\n        });\n      }\n\n      const libraryJSON = event.dataTransfer.getData(_constants__WEBPACK_IMPORTED_MODULE_12__.MIME_TYPES.excalidrawlib);\n\n      if (libraryJSON && typeof libraryJSON === "string") {\n        try {\n          const libraryItems = (0,_data_blob__WEBPACK_IMPORTED_MODULE_39__.parseLibraryJSON)(libraryJSON);\n          this.addElementsFromPasteOrLibrary({\n            elements: (0,_data_library__WEBPACK_IMPORTED_MODULE_14__.distributeLibraryItemsOnSquareGrid)(libraryItems),\n            position: event,\n            files: null\n          });\n        } catch (error) {\n          this.setState({\n            errorMessage: error.message\n          });\n        }\n\n        return;\n      }\n\n      if (file) {\n        // atetmpt to parse an excalidraw/excalidrawlib file\n        yield this.loadFileToCanvas(file, fileHandle);\n      }\n\n      if ((_l = (_k = event.dataTransfer) === null || _k === void 0 ? void 0 : _k.types) === null || _l === void 0 ? void 0 : _l.includes("text/plain")) {\n        const text = (_m = event.dataTransfer) === null || _m === void 0 ? void 0 : _m.getData("text");\n\n        if (text && (0,_element_embeddable__WEBPACK_IMPORTED_MODULE_34__.embeddableURLValidator)(text, this.props.validateEmbeddable) && (/^(http|https):\\/\\/[^\\s/$.?#].[^\\s]*$/.test(text) || ((_o = (0,_element_embeddable__WEBPACK_IMPORTED_MODULE_34__.getEmbedLink)(text)) === null || _o === void 0 ? void 0 : _o.type) === "video")) {\n          const embeddable = this.insertEmbeddableElement({\n            sceneX,\n            sceneY,\n            link: (0,_data_url__WEBPACK_IMPORTED_MODULE_46__.normalizeLink)(text)\n          });\n\n          if (embeddable) {\n            this.setState({\n              selectedElementIds: {\n                [embeddable.id]: true\n              }\n            });\n          }\n        }\n      }\n    });\n\n    this.loadFileToCanvas = (file, fileHandle) => __awaiter(this, void 0, void 0, function* () {\n      file = yield (0,_data_blob__WEBPACK_IMPORTED_MODULE_39__.normalizeFile)(file);\n\n      try {\n        const ret = yield (0,_data_blob__WEBPACK_IMPORTED_MODULE_39__.loadSceneOrLibraryFromBlob)(file, this.state, this.scene.getElementsIncludingDeleted(), fileHandle);\n\n        if (ret.type === _constants__WEBPACK_IMPORTED_MODULE_12__.MIME_TYPES.excalidraw) {\n          this.setState({\n            isLoading: true\n          });\n          this.syncActionResult(Object.assign(Object.assign({}, ret.data), {\n            appState: Object.assign(Object.assign({}, ret.data.appState || this.state), {\n              isLoading: false\n            }),\n            replaceFiles: true,\n            commitToHistory: true\n          }));\n        } else if (ret.type === _constants__WEBPACK_IMPORTED_MODULE_12__.MIME_TYPES.excalidrawlib) {\n          yield this.library.updateLibrary({\n            libraryItems: file,\n            merge: true,\n            openLibraryMenu: true\n          }).catch(error => {\n            console.error(error);\n            this.setState({\n              errorMessage: (0,_i18n__WEBPACK_IMPORTED_MODULE_25__.t)("errors.importLibraryError")\n            });\n          });\n        }\n      } catch (error) {\n        if (error instanceof _errors__WEBPACK_IMPORTED_MODULE_57__.ImageSceneDataError && error.code === "IMAGE_NOT_CONTAINS_SCENE_DATA" && !this.isToolSupported("image")) {\n          this.setState({\n            isLoading: false,\n            errorMessage: (0,_i18n__WEBPACK_IMPORTED_MODULE_25__.t)("errors.imageToolNotSupported")\n          });\n          return;\n        }\n\n        this.setState({\n          isLoading: false,\n          errorMessage: error.message\n        });\n      }\n    });\n\n    this.handleCanvasContextMenu = event => {\n      event.preventDefault();\n\n      if (("pointerType" in event.nativeEvent && event.nativeEvent.pointerType === "touch" || "pointerType" in event.nativeEvent && event.nativeEvent.pointerType === "pen" && // always allow if user uses a pen secondary button\n      event.button !== _constants__WEBPACK_IMPORTED_MODULE_12__.POINTER_BUTTON.SECONDARY) && this.state.activeTool.type !== "selection") {\n        return;\n      }\n\n      const {\n        x,\n        y\n      } = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.viewportCoordsToSceneCoords)(event, this.state);\n      const element = this.getElementAtPosition(x, y, {\n        preferSelected: true,\n        includeLockedElements: true\n      });\n      const selectedElements = this.scene.getSelectedElements(this.state);\n      const isHittignCommonBoundBox = this.isHittingCommonBoundingBoxOfSelectedElements({\n        x,\n        y\n      }, selectedElements);\n      const type = element || isHittignCommonBoundBox ? "element" : "canvas";\n      const container = this.excalidrawContainerRef.current;\n      const {\n        top: offsetTop,\n        left: offsetLeft\n      } = container.getBoundingClientRect();\n      const left = event.clientX - offsetLeft;\n      const top = event.clientY - offsetTop;\n      (0,_analytics__WEBPACK_IMPORTED_MODULE_9__.trackEvent)("contextMenu", "openContextMenu", type);\n      this.setState(Object.assign(Object.assign({}, element && !this.state.selectedElementIds[element.id] ? Object.assign(Object.assign(Object.assign({}, this.state), (0,_groups__WEBPACK_IMPORTED_MODULE_23__.selectGroupsForSelectedElements)({\n        editingGroupId: this.state.editingGroupId,\n        selectedElementIds: {\n          [element.id]: true\n        }\n      }, this.scene.getNonDeletedElements(), this.state, this)), {\n        selectedLinearElement: (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isLinearElement)(element) ? new _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_18__.LinearElementEditor(element, this.scene) : null\n      }) : this.state), {\n        showHyperlinkPopup: false\n      }), () => {\n        this.setState({\n          contextMenu: {\n            top,\n            left,\n            items: this.getContextMenuItems(type)\n          }\n        });\n      });\n    };\n\n    this.maybeDragNewGenericElement = (pointerDownState, event) => {\n      var _a, _b, _c, _d, _e;\n\n      const draggingElement = this.state.draggingElement;\n      const pointerCoords = pointerDownState.lastCoords;\n\n      if (!draggingElement) {\n        return;\n      }\n\n      if (draggingElement.type === "selection" && this.state.activeTool.type !== "eraser") {\n        (0,_element__WEBPACK_IMPORTED_MODULE_16__.dragNewElement)(draggingElement, this.state.activeTool.type, pointerDownState.origin.x, pointerDownState.origin.y, pointerCoords.x, pointerCoords.y, (0,_utils__WEBPACK_IMPORTED_MODULE_33__.distance)(pointerDownState.origin.x, pointerCoords.x), (0,_utils__WEBPACK_IMPORTED_MODULE_33__.distance)(pointerDownState.origin.y, pointerCoords.y), (0,_keys__WEBPACK_IMPORTED_MODULE_26__.shouldMaintainAspectRatio)(event), (0,_keys__WEBPACK_IMPORTED_MODULE_26__.shouldResizeFromCenter)(event));\n      } else {\n        let [gridX, gridY] = (0,_math__WEBPACK_IMPORTED_MODULE_28__.getGridPoint)(pointerCoords.x, pointerCoords.y, event[_keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.CTRL_OR_CMD] ? null : this.state.gridSize);\n        const image = (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isInitializedImageElement)(draggingElement) && ((_a = this.imageCache.get(draggingElement.fileId)) === null || _a === void 0 ? void 0 : _a.image);\n        const aspectRatio = image && !(image instanceof Promise) ? image.width / image.height : null;\n        this.maybeCacheReferenceSnapPoints(event, [draggingElement]);\n        const {\n          snapOffset,\n          snapLines\n        } = (0,_snapping__WEBPACK_IMPORTED_MODULE_58__.snapNewElement)(draggingElement, this.state, event, {\n          x: pointerDownState.originInGrid.x + ((_c = (_b = this.state.originSnapOffset) === null || _b === void 0 ? void 0 : _b.x) !== null && _c !== void 0 ? _c : 0),\n          y: pointerDownState.originInGrid.y + ((_e = (_d = this.state.originSnapOffset) === null || _d === void 0 ? void 0 : _d.y) !== null && _e !== void 0 ? _e : 0)\n        }, {\n          x: gridX - pointerDownState.originInGrid.x,\n          y: gridY - pointerDownState.originInGrid.y\n        });\n        gridX += snapOffset.x;\n        gridY += snapOffset.y;\n        this.setState({\n          snapLines\n        });\n        (0,_element__WEBPACK_IMPORTED_MODULE_16__.dragNewElement)(draggingElement, this.state.activeTool.type, pointerDownState.originInGrid.x, pointerDownState.originInGrid.y, gridX, gridY, (0,_utils__WEBPACK_IMPORTED_MODULE_33__.distance)(pointerDownState.originInGrid.x, gridX), (0,_utils__WEBPACK_IMPORTED_MODULE_33__.distance)(pointerDownState.originInGrid.y, gridY), (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isImageElement)(draggingElement) ? !(0,_keys__WEBPACK_IMPORTED_MODULE_26__.shouldMaintainAspectRatio)(event) : (0,_keys__WEBPACK_IMPORTED_MODULE_26__.shouldMaintainAspectRatio)(event), (0,_keys__WEBPACK_IMPORTED_MODULE_26__.shouldResizeFromCenter)(event), aspectRatio, this.state.originSnapOffset);\n        this.maybeSuggestBindingForAll([draggingElement]); // highlight elements that are to be added to frames on frames creation\n\n        if (this.state.activeTool.type === "frame") {\n          this.setState({\n            elementsToHighlight: (0,_frame__WEBPACK_IMPORTED_MODULE_50__.getElementsInResizingFrame)(this.scene.getNonDeletedElements(), draggingElement, this.state)\n          });\n        }\n      }\n    };\n\n    this.maybeHandleResize = (pointerDownState, event) => {\n      const selectedElements = this.scene.getSelectedElements(this.state);\n      const selectedFrames = selectedElements.filter(element => element.type === "frame");\n      const transformHandleType = pointerDownState.resize.handleType;\n\n      if (selectedFrames.length > 0 && transformHandleType === "rotation") {\n        return false;\n      }\n\n      this.setState({\n        // TODO: rename this state field to "isScaling" to distinguish\n        // it from the generic "isResizing" which includes scaling and\n        // rotating\n        isResizing: transformHandleType && transformHandleType !== "rotation",\n        isRotating: transformHandleType === "rotation",\n        activeEmbeddable: null\n      });\n      const pointerCoords = pointerDownState.lastCoords;\n      let [resizeX, resizeY] = (0,_math__WEBPACK_IMPORTED_MODULE_28__.getGridPoint)(pointerCoords.x - pointerDownState.resize.offset.x, pointerCoords.y - pointerDownState.resize.offset.y, event[_keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.CTRL_OR_CMD] ? null : this.state.gridSize);\n      const frameElementsOffsetsMap = new Map();\n      selectedFrames.forEach(frame => {\n        const elementsInFrame = (0,_frame__WEBPACK_IMPORTED_MODULE_50__.getFrameChildren)(this.scene.getNonDeletedElements(), frame.id);\n        elementsInFrame.forEach(element => {\n          frameElementsOffsetsMap.set(frame.id + element.id, {\n            x: element.x - frame.x,\n            y: element.y - frame.y\n          });\n        });\n      }); // check needed for avoiding flickering when a key gets pressed\n      // during dragging\n\n      if (!this.state.selectedElementsAreBeingDragged) {\n        const [gridX, gridY] = (0,_math__WEBPACK_IMPORTED_MODULE_28__.getGridPoint)(pointerCoords.x, pointerCoords.y, event[_keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.CTRL_OR_CMD] ? null : this.state.gridSize);\n        const dragOffset = {\n          x: gridX - pointerDownState.originInGrid.x,\n          y: gridY - pointerDownState.originInGrid.y\n        };\n        const originalElements = [...pointerDownState.originalElements.values()];\n        this.maybeCacheReferenceSnapPoints(event, selectedElements);\n        const {\n          snapOffset,\n          snapLines\n        } = (0,_snapping__WEBPACK_IMPORTED_MODULE_58__.snapResizingElements)(selectedElements, (0,_scene__WEBPACK_IMPORTED_MODULE_29__.getSelectedElements)(originalElements, this.state), this.state, event, dragOffset, transformHandleType);\n        resizeX += snapOffset.x;\n        resizeY += snapOffset.y;\n        this.setState({\n          snapLines\n        });\n      }\n\n      if ((0,_element__WEBPACK_IMPORTED_MODULE_16__.transformElements)(pointerDownState, transformHandleType, selectedElements, pointerDownState.resize.arrowDirection, (0,_keys__WEBPACK_IMPORTED_MODULE_26__.shouldRotateWithDiscreteAngle)(event), (0,_keys__WEBPACK_IMPORTED_MODULE_26__.shouldResizeFromCenter)(event), selectedElements.length === 1 && (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isImageElement)(selectedElements[0]) ? !(0,_keys__WEBPACK_IMPORTED_MODULE_26__.shouldMaintainAspectRatio)(event) : (0,_keys__WEBPACK_IMPORTED_MODULE_26__.shouldMaintainAspectRatio)(event), resizeX, resizeY, pointerDownState.resize.center.x, pointerDownState.resize.center.y, this.state)) {\n        this.maybeSuggestBindingForAll(selectedElements);\n        const elementsToHighlight = new Set();\n        selectedFrames.forEach(frame => {\n          const elementsInFrame = (0,_frame__WEBPACK_IMPORTED_MODULE_50__.getFrameChildren)(this.scene.getNonDeletedElements(), frame.id); // keep elements\' positions relative to their frames on frames resizing\n\n          if (transformHandleType) {\n            if (transformHandleType.includes("w")) {\n              elementsInFrame.forEach(element => {\n                var _a, _b;\n\n                (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(element, {\n                  x: frame.x + (((_a = frameElementsOffsetsMap.get(frame.id + element.id)) === null || _a === void 0 ? void 0 : _a.x) || 0),\n                  y: frame.y + (((_b = frameElementsOffsetsMap.get(frame.id + element.id)) === null || _b === void 0 ? void 0 : _b.y) || 0)\n                });\n              });\n            }\n\n            if (transformHandleType.includes("n")) {\n              elementsInFrame.forEach(element => {\n                var _a, _b;\n\n                (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(element, {\n                  x: frame.x + (((_a = frameElementsOffsetsMap.get(frame.id + element.id)) === null || _a === void 0 ? void 0 : _a.x) || 0),\n                  y: frame.y + (((_b = frameElementsOffsetsMap.get(frame.id + element.id)) === null || _b === void 0 ? void 0 : _b.y) || 0)\n                });\n              });\n            }\n          }\n\n          (0,_frame__WEBPACK_IMPORTED_MODULE_50__.getElementsInResizingFrame)(this.scene.getNonDeletedElements(), frame, this.state).forEach(element => elementsToHighlight.add(element));\n        });\n        this.setState({\n          elementsToHighlight: [...elementsToHighlight]\n        });\n        return true;\n      }\n\n      return false;\n    };\n\n    this.getContextMenuItems = type => {\n      const options = [];\n      options.push(_actions__WEBPACK_IMPORTED_MODULE_5__.actionCopyAsPng, _actions__WEBPACK_IMPORTED_MODULE_5__.actionCopyAsSvg); // canvas contextMenu\n      // -------------------------------------------------------------------------\n\n      if (type === "canvas") {\n        if (this.state.viewModeEnabled) {\n          return [...options, _actions__WEBPACK_IMPORTED_MODULE_5__.actionToggleGridMode, _actions__WEBPACK_IMPORTED_MODULE_5__.actionToggleZenMode, _actions_actionToggleViewMode__WEBPACK_IMPORTED_MODULE_38__.actionToggleViewMode, _actions__WEBPACK_IMPORTED_MODULE_5__.actionToggleStats];\n        }\n\n        return [_actions_actionClipboard__WEBPACK_IMPORTED_MODULE_52__.actionPaste, _ContextMenu__WEBPACK_IMPORTED_MODULE_35__.CONTEXT_MENU_SEPARATOR, _actions__WEBPACK_IMPORTED_MODULE_5__.actionCopyAsPng, _actions__WEBPACK_IMPORTED_MODULE_5__.actionCopyAsSvg, _actions__WEBPACK_IMPORTED_MODULE_5__.copyText, _ContextMenu__WEBPACK_IMPORTED_MODULE_35__.CONTEXT_MENU_SEPARATOR, _actions__WEBPACK_IMPORTED_MODULE_5__.actionSelectAll, _actions_actionElementLock__WEBPACK_IMPORTED_MODULE_48__.actionUnlockAllElements, _ContextMenu__WEBPACK_IMPORTED_MODULE_35__.CONTEXT_MENU_SEPARATOR, _actions__WEBPACK_IMPORTED_MODULE_5__.actionToggleGridMode, _actions__WEBPACK_IMPORTED_MODULE_5__.actionToggleObjectsSnapMode, _actions__WEBPACK_IMPORTED_MODULE_5__.actionToggleZenMode, _actions_actionToggleViewMode__WEBPACK_IMPORTED_MODULE_38__.actionToggleViewMode, _actions__WEBPACK_IMPORTED_MODULE_5__.actionToggleStats];\n      } // element contextMenu\n      // -------------------------------------------------------------------------\n\n\n      options.push(_actions__WEBPACK_IMPORTED_MODULE_5__.copyText);\n\n      if (this.state.viewModeEnabled) {\n        return [_actions__WEBPACK_IMPORTED_MODULE_5__.actionCopy, ...options];\n      }\n\n      return [_actions__WEBPACK_IMPORTED_MODULE_5__.actionCut, _actions__WEBPACK_IMPORTED_MODULE_5__.actionCopy, _actions_actionClipboard__WEBPACK_IMPORTED_MODULE_52__.actionPaste, _actions_actionFrame__WEBPACK_IMPORTED_MODULE_53__.actionSelectAllElementsInFrame, _actions_actionFrame__WEBPACK_IMPORTED_MODULE_53__.actionRemoveAllElementsFromFrame, _ContextMenu__WEBPACK_IMPORTED_MODULE_35__.CONTEXT_MENU_SEPARATOR, ...options, _ContextMenu__WEBPACK_IMPORTED_MODULE_35__.CONTEXT_MENU_SEPARATOR, _actions__WEBPACK_IMPORTED_MODULE_5__.actionCopyStyles, _actions__WEBPACK_IMPORTED_MODULE_5__.actionPasteStyles, _ContextMenu__WEBPACK_IMPORTED_MODULE_35__.CONTEXT_MENU_SEPARATOR, _actions__WEBPACK_IMPORTED_MODULE_5__.actionGroup, _actions__WEBPACK_IMPORTED_MODULE_5__.actionUnbindText, _actions__WEBPACK_IMPORTED_MODULE_5__.actionBindText, _actions_actionBoundText__WEBPACK_IMPORTED_MODULE_59__.actionWrapTextInContainer, _actions__WEBPACK_IMPORTED_MODULE_5__.actionUngroup, _ContextMenu__WEBPACK_IMPORTED_MODULE_35__.CONTEXT_MENU_SEPARATOR, _actions__WEBPACK_IMPORTED_MODULE_5__.actionAddToLibrary, _ContextMenu__WEBPACK_IMPORTED_MODULE_35__.CONTEXT_MENU_SEPARATOR, _actions__WEBPACK_IMPORTED_MODULE_5__.actionSendBackward, _actions__WEBPACK_IMPORTED_MODULE_5__.actionBringForward, _actions__WEBPACK_IMPORTED_MODULE_5__.actionSendToBack, _actions__WEBPACK_IMPORTED_MODULE_5__.actionBringToFront, _ContextMenu__WEBPACK_IMPORTED_MODULE_35__.CONTEXT_MENU_SEPARATOR, _actions__WEBPACK_IMPORTED_MODULE_5__.actionFlipHorizontal, _actions__WEBPACK_IMPORTED_MODULE_5__.actionFlipVertical, _ContextMenu__WEBPACK_IMPORTED_MODULE_35__.CONTEXT_MENU_SEPARATOR, _actions__WEBPACK_IMPORTED_MODULE_5__.actionToggleLinearEditor, _actions__WEBPACK_IMPORTED_MODULE_5__.actionLink, _actions__WEBPACK_IMPORTED_MODULE_5__.actionDuplicateSelection, _actions__WEBPACK_IMPORTED_MODULE_5__.actionToggleElementLock, _ContextMenu__WEBPACK_IMPORTED_MODULE_35__.CONTEXT_MENU_SEPARATOR, _actions__WEBPACK_IMPORTED_MODULE_5__.actionDeleteSelected];\n    };\n\n    this.handleWheel = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.withBatchedUpdates)(event => {\n      event.preventDefault();\n\n      if (isPanning) {\n        return;\n      }\n\n      const {\n        deltaX,\n        deltaY\n      } = event; // note that event.ctrlKey is necessary to handle pinch zooming\n\n      if (event.metaKey || event.ctrlKey) {\n        const sign = Math.sign(deltaY);\n        const MAX_STEP = _constants__WEBPACK_IMPORTED_MODULE_12__.ZOOM_STEP * 100;\n        const absDelta = Math.abs(deltaY);\n        let delta = deltaY;\n\n        if (absDelta > MAX_STEP) {\n          delta = MAX_STEP * sign;\n        }\n\n        let newZoom = this.state.zoom.value - delta / 100; // increase zoom steps the more zoomed-in we are (applies to >100% only)\n\n        newZoom += Math.log10(Math.max(1, this.state.zoom.value)) * -sign * // reduced amplification for small deltas (small movements on a trackpad)\n        Math.min(1, absDelta / 20);\n        this.translateCanvas(state => Object.assign(Object.assign({}, (0,_scene_zoom__WEBPACK_IMPORTED_MODULE_31__.getStateForZoom)({\n          viewportX: this.lastViewportPosition.x,\n          viewportY: this.lastViewportPosition.y,\n          nextZoom: (0,_scene__WEBPACK_IMPORTED_MODULE_29__.getNormalizedZoom)(newZoom)\n        }, state)), {\n          shouldCacheIgnoreZoom: true\n        }));\n        this.resetShouldCacheIgnoreZoomDebounced();\n        return;\n      } // scroll horizontally when shift pressed\n\n\n      if (event.shiftKey) {\n        this.translateCanvas(({\n          zoom,\n          scrollX\n        }) => ({\n          // on Mac, shift+wheel tends to result in deltaX\n          scrollX: scrollX - (deltaY || deltaX) / zoom.value\n        }));\n        return;\n      }\n\n      this.translateCanvas(({\n        zoom,\n        scrollX,\n        scrollY\n      }) => ({\n        scrollX: scrollX - deltaX / zoom.value,\n        scrollY: scrollY - deltaY / zoom.value\n      }));\n    });\n\n    this.savePointer = (x, y, button) => {\n      var _a, _b;\n\n      if (!x || !y) {\n        return;\n      }\n\n      const {\n        x: sceneX,\n        y: sceneY\n      } = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.viewportCoordsToSceneCoords)({\n        clientX: x,\n        clientY: y\n      }, this.state);\n\n      if (isNaN(sceneX) || isNaN(sceneY)) {// sometimes the pointer goes off screen\n      }\n\n      const pointer = {\n        x: sceneX,\n        y: sceneY,\n        tool: this.state.activeTool.type === "laser" ? "laser" : "pointer"\n      };\n      (_b = (_a = this.props).onPointerUpdate) === null || _b === void 0 ? void 0 : _b.call(_a, {\n        pointer,\n        button,\n        pointersMap: gesture.pointers\n      });\n    };\n\n    this.resetShouldCacheIgnoreZoomDebounced = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.debounce)(() => {\n      if (!this.unmounted) {\n        this.setState({\n          shouldCacheIgnoreZoom: false\n        });\n      }\n    }, 300);\n\n    this.updateDOMRect = cb => {\n      var _a;\n\n      if ((_a = this.excalidrawContainerRef) === null || _a === void 0 ? void 0 : _a.current) {\n        const excalidrawContainer = this.excalidrawContainerRef.current;\n        const {\n          width,\n          height,\n          left: offsetLeft,\n          top: offsetTop\n        } = excalidrawContainer.getBoundingClientRect();\n        const {\n          width: currentWidth,\n          height: currentHeight,\n          offsetTop: currentOffsetTop,\n          offsetLeft: currentOffsetLeft\n        } = this.state;\n\n        if (width === currentWidth && height === currentHeight && offsetLeft === currentOffsetLeft && offsetTop === currentOffsetTop) {\n          if (cb) {\n            cb();\n          }\n\n          return;\n        }\n\n        this.setState({\n          width,\n          height,\n          offsetLeft,\n          offsetTop\n        }, () => {\n          cb && cb();\n        });\n      }\n    };\n\n    this.refresh = () => {\n      this.setState(Object.assign({}, this.getCanvasOffsets()));\n    };\n\n    const defaultAppState = (0,_appState__WEBPACK_IMPORTED_MODULE_10__.getDefaultAppState)();\n    const {\n      excalidrawAPI,\n      viewModeEnabled = false,\n      zenModeEnabled = false,\n      gridModeEnabled = false,\n      objectsSnapModeEnabled = false,\n      theme = defaultAppState.theme,\n      name = defaultAppState.name\n    } = props;\n    this.state = Object.assign(Object.assign(Object.assign(Object.assign({}, defaultAppState), {\n      theme,\n      isLoading: true\n    }), this.getCanvasOffsets()), {\n      viewModeEnabled,\n      zenModeEnabled,\n      objectsSnapModeEnabled,\n      gridSize: gridModeEnabled ? _constants__WEBPACK_IMPORTED_MODULE_12__.GRID_SIZE : null,\n      name,\n      width: window.innerWidth,\n      height: window.innerHeight\n    });\n    this.id = (0,nanoid__WEBPACK_IMPORTED_MODULE_72__.nanoid)();\n    this.library = new _data_library__WEBPACK_IMPORTED_MODULE_14__["default"](this);\n    this.scene = new _scene_Scene__WEBPACK_IMPORTED_MODULE_30__["default"]();\n    this.canvas = document.createElement("canvas");\n    this.rc = roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_3__["default"].canvas(this.canvas);\n    this.renderer = new _scene_Renderer__WEBPACK_IMPORTED_MODULE_65__.Renderer(this.scene);\n\n    if (excalidrawAPI) {\n      const api = {\n        updateScene: this.updateScene,\n        updateLibrary: this.library.updateLibrary,\n        addFiles: this.addFiles,\n        resetScene: this.resetScene,\n        getSceneElementsIncludingDeleted: this.getSceneElementsIncludingDeleted,\n        history: {\n          clear: this.resetHistory\n        },\n        scrollToContent: this.scrollToContent,\n        getSceneElements: this.getSceneElements,\n        getAppState: () => this.state,\n        getFiles: () => this.files,\n        refresh: this.refresh,\n        setToast: this.setToast,\n        id: this.id,\n        setActiveTool: this.setActiveTool,\n        setCursor: this.setCursor,\n        resetCursor: this.resetCursor,\n        updateFrameRendering: this.updateFrameRendering,\n        toggleSidebar: this.toggleSidebar,\n        onChange: cb => this.onChangeEmitter.on(cb),\n        onPointerDown: cb => this.onPointerDownEmitter.on(cb),\n        onPointerUp: cb => this.onPointerUpEmitter.on(cb)\n      };\n\n      if (typeof excalidrawAPI === "function") {\n        excalidrawAPI(api);\n      } else {\n        console.error("excalidrawAPI should be a function!");\n      }\n    }\n\n    this.excalidrawContainerValue = {\n      container: this.excalidrawContainerRef.current,\n      id: this.id\n    };\n    this.fonts = new _scene_Fonts__WEBPACK_IMPORTED_MODULE_49__.Fonts({\n      scene: this.scene,\n      onSceneUpdated: this.onSceneUpdated\n    });\n    this.history = new _history__WEBPACK_IMPORTED_MODULE_24__["default"]();\n    this.actionManager = new _actions_manager__WEBPACK_IMPORTED_MODULE_7__.ActionManager(this.syncActionResult, () => this.state, () => this.scene.getElementsIncludingDeleted(), this);\n    this.actionManager.registerAll(_actions_register__WEBPACK_IMPORTED_MODULE_8__.actions);\n    this.actionManager.registerAction((0,_actions_actionHistory__WEBPACK_IMPORTED_MODULE_6__.createUndoAction)(this.history));\n    this.actionManager.registerAction((0,_actions_actionHistory__WEBPACK_IMPORTED_MODULE_6__.createRedoAction)(this.history));\n  }\n\n  onWindowMessage(event) {\n    if (event.origin !== "https://player.vimeo.com" && event.origin !== "https://www.youtube.com") {\n      return;\n    }\n\n    let data = null;\n\n    try {\n      data = JSON.parse(event.data);\n    } catch (e) {}\n\n    if (!data) {\n      return;\n    }\n\n    switch (event.origin) {\n      case "https://player.vimeo.com":\n        //Allowing for multiple instances of Excalidraw running in the window\n        if (data.method === "paused") {\n          let source = null;\n          const iframes = document.body.querySelectorAll("iframe.excalidraw__embeddable");\n\n          if (!iframes) {\n            break;\n          }\n\n          for (const iframe of iframes) {\n            if (iframe.contentWindow === event.source) {\n              source = iframe.contentWindow;\n            }\n          }\n\n          source === null || source === void 0 ? void 0 : source.postMessage(JSON.stringify({\n            method: data.value ? "play" : "pause",\n            value: true\n          }), "*");\n        }\n\n        break;\n\n      case "https://www.youtube.com":\n        if (data.event === "infoDelivery" && data.info && data.id && typeof data.info.playerState === "number") {\n          const id = data.id;\n          const playerState = data.info.playerState;\n\n          if (Object.values(_constants__WEBPACK_IMPORTED_MODULE_12__.YOUTUBE_STATES).includes(playerState)) {\n            YOUTUBE_VIDEO_STATES.set(id, playerState);\n          }\n        }\n\n        break;\n    }\n  }\n\n  updateEmbeddableRef(id, ref) {\n    if (ref) {\n      this.iFrameRefs.set(id, ref);\n    }\n  }\n\n  getHTMLIFrameElement(id) {\n    return this.iFrameRefs.get(id);\n  }\n\n  handleEmbeddableCenterClick(element) {\n    var _a, _b, _c, _d;\n\n    if (((_a = this.state.activeEmbeddable) === null || _a === void 0 ? void 0 : _a.element) === element && ((_b = this.state.activeEmbeddable) === null || _b === void 0 ? void 0 : _b.state) === "active") {\n      return;\n    } // The delay serves two purposes\n    // 1. To prevent first click propagating to iframe on mobile,\n    //    else the click will immediately start and stop the video\n    // 2. If the user double clicks the frame center to activate it\n    //    without the delay youtube will immediately open the video\n    //    in fullscreen mode\n\n\n    setTimeout(() => {\n      this.setState({\n        activeEmbeddable: {\n          element,\n          state: "active"\n        },\n        selectedElementIds: {\n          [element.id]: true\n        },\n        draggingElement: null,\n        selectionElement: null\n      });\n    }, 100);\n    const iframe = this.getHTMLIFrameElement(element.id);\n\n    if (!(iframe === null || iframe === void 0 ? void 0 : iframe.contentWindow)) {\n      return;\n    }\n\n    if (iframe.src.includes("youtube")) {\n      const state = YOUTUBE_VIDEO_STATES.get(element.id);\n\n      if (!state) {\n        YOUTUBE_VIDEO_STATES.set(element.id, _constants__WEBPACK_IMPORTED_MODULE_12__.YOUTUBE_STATES.UNSTARTED);\n        iframe.contentWindow.postMessage(JSON.stringify({\n          event: "listening",\n          id: element.id\n        }), "*");\n      }\n\n      switch (state) {\n        case _constants__WEBPACK_IMPORTED_MODULE_12__.YOUTUBE_STATES.PLAYING:\n        case _constants__WEBPACK_IMPORTED_MODULE_12__.YOUTUBE_STATES.BUFFERING:\n          (_c = iframe.contentWindow) === null || _c === void 0 ? void 0 : _c.postMessage(JSON.stringify({\n            event: "command",\n            func: "pauseVideo",\n            args: ""\n          }), "*");\n          break;\n\n        default:\n          (_d = iframe.contentWindow) === null || _d === void 0 ? void 0 : _d.postMessage(JSON.stringify({\n            event: "command",\n            func: "playVideo",\n            args: ""\n          }), "*");\n      }\n    }\n\n    if (iframe.src.includes("player.vimeo.com")) {\n      iframe.contentWindow.postMessage(JSON.stringify({\n        method: "paused" //video play/pause in onWindowMessage handler\n\n      }), "*");\n    }\n  }\n\n  isEmbeddableCenter(el, event, sceneX, sceneY) {\n    var _a, _b;\n\n    return el && !event.altKey && !event.shiftKey && !event.metaKey && !event.ctrlKey && (((_a = this.state.activeEmbeddable) === null || _a === void 0 ? void 0 : _a.element) !== el || ((_b = this.state.activeEmbeddable) === null || _b === void 0 ? void 0 : _b.state) === "hover" || !this.state.activeEmbeddable) && sceneX >= el.x + el.width / 3 && sceneX <= el.x + 2 * el.width / 3 && sceneY >= el.y + el.height / 3 && sceneY <= el.y + 2 * el.height / 3;\n  }\n\n  renderEmbeddables() {\n    const scale = this.state.zoom.value;\n    const normalizedWidth = this.state.width;\n    const normalizedHeight = this.state.height;\n    const embeddableElements = this.scene.getNonDeletedElements().filter(el => (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isEmbeddableElement)(el) && !!el.validated);\n    return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n      children: embeddableElements.map(el => {\n        var _a, _b, _c, _d, _e, _f, _g, _h, _j;\n\n        const {\n          x,\n          y\n        } = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.sceneCoordsToViewportCoords)({\n          sceneX: el.x,\n          sceneY: el.y\n        }, this.state);\n        const embedLink = (0,_element_embeddable__WEBPACK_IMPORTED_MODULE_34__.getEmbedLink)((0,_data_url__WEBPACK_IMPORTED_MODULE_46__.toValidURL)(el.link || ""));\n        const isVisible = (0,_element_sizeHelpers__WEBPACK_IMPORTED_MODULE_27__.isElementInViewport)(el, normalizedWidth, normalizedHeight, this.state);\n        const isActive = ((_a = this.state.activeEmbeddable) === null || _a === void 0 ? void 0 : _a.element) === el && ((_b = this.state.activeEmbeddable) === null || _b === void 0 ? void 0 : _b.state) === "active";\n        const isHovered = ((_c = this.state.activeEmbeddable) === null || _c === void 0 ? void 0 : _c.element) === el && ((_d = this.state.activeEmbeddable) === null || _d === void 0 ? void 0 : _d.state) === "hover";\n        return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n          className: (0,clsx__WEBPACK_IMPORTED_MODULE_4__["default"])("excalidraw__embeddable-container", {\n            "is-hovered": isHovered\n          }),\n          style: {\n            transform: isVisible ? `translate(${x - this.state.offsetLeft}px, ${y - this.state.offsetTop}px) scale(${scale})` : "none",\n            display: isVisible ? "block" : "none",\n            opacity: el.opacity / 100,\n            ["--embeddable-radius"]: `${(0,_math__WEBPACK_IMPORTED_MODULE_28__.getCornerRadius)(Math.min(el.width, el.height), el)}px`\n          }\n        }, {\n          children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n            //this is a hack that addresses isse with embedded excalidraw.com embeddable\n            //https://github.com/excalidraw/excalidraw/pull/6691#issuecomment-1607383938\n\n            /*ref={(ref) => {\n              if (!this.excalidrawContainerRef.current) {\n                return;\n              }\n              const container = this.excalidrawContainerRef.current;\n              const sh = container.scrollHeight;\n              const ch = container.clientHeight;\n              if (sh !== ch) {\n                container.style.height = `${sh}px`;\n                setTimeout(() => {\n                  container.style.height = `100%`;\n                });\n              }\n            }}*/\n            className: "excalidraw__embeddable-container__inner",\n            style: {\n              width: isVisible ? `${el.width}px` : 0,\n              height: isVisible ? `${el.height}px` : 0,\n              transform: isVisible ? `rotate(${el.angle}rad)` : "none",\n              pointerEvents: isActive ? _constants__WEBPACK_IMPORTED_MODULE_12__.POINTER_EVENTS.enabled : _constants__WEBPACK_IMPORTED_MODULE_12__.POINTER_EVENTS.disabled\n            }\n          }, {\n            children: [isHovered && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n              className: "excalidraw__embeddable-hint"\n            }, {\n              children: (0,_i18n__WEBPACK_IMPORTED_MODULE_25__.t)("buttons.embeddableInteractionButton")\n            })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n              className: "excalidraw__embeddable__outer",\n              style: {\n                padding: `${el.strokeWidth}px`\n              }\n            }, {\n              children: (_g = (_f = (_e = this.props).renderEmbeddable) === null || _f === void 0 ? void 0 : _f.call(_e, el, this.state)) !== null && _g !== void 0 ? _g : (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("iframe", {\n                ref: ref => this.updateEmbeddableRef(el.id, ref),\n                className: "excalidraw__embeddable",\n                srcDoc: (embedLink === null || embedLink === void 0 ? void 0 : embedLink.type) === "document" ? embedLink.srcdoc(this.state.theme) : undefined,\n                src: (embedLink === null || embedLink === void 0 ? void 0 : embedLink.type) !== "document" ? (_h = embedLink === null || embedLink === void 0 ? void 0 : embedLink.link) !== null && _h !== void 0 ? _h : "" : undefined,\n                // https://stackoverflow.com/q/18470015\n                scrolling: "no",\n                referrerPolicy: "no-referrer-when-downgrade",\n                title: "Excalidraw Embedded Content",\n                allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",\n                allowFullScreen: true,\n                sandbox: `${((_j = embedLink === null || embedLink === void 0 ? void 0 : embedLink.sandbox) === null || _j === void 0 ? void 0 : _j.allowSameOrigin) ? "allow-same-origin" : ""} allow-scripts allow-forms allow-popups allow-popups-to-escape-sandbox allow-presentation allow-downloads`\n              })\n            }))]\n          }))\n        }), el.id);\n      })\n    });\n  }\n\n  render() {\n    var _a, _b, _c;\n\n    const selectedElements = this.scene.getSelectedElements(this.state);\n    const {\n      renderTopRightUI,\n      renderCustomStats\n    } = this.props;\n    const versionNonce = this.scene.getVersionNonce();\n    const {\n      canvasElements,\n      visibleElements\n    } = this.renderer.getRenderableElements({\n      versionNonce,\n      zoom: this.state.zoom,\n      offsetLeft: this.state.offsetLeft,\n      offsetTop: this.state.offsetTop,\n      scrollX: this.state.scrollX,\n      scrollY: this.state.scrollY,\n      height: this.state.height,\n      width: this.state.width,\n      editingElement: this.state.editingElement,\n      pendingImageElementId: this.state.pendingImageElementId\n    });\n    const shouldBlockPointerEvents = !(this.state.editingElement && (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isLinearElement)(this.state.editingElement)) && (this.state.selectionElement || this.state.draggingElement || this.state.resizingElement || this.state.activeTool.type === "laser" && // technically we can just test on this once we make it more safe\n    this.state.cursorButton === "down" || this.state.editingElement && !(0,_element__WEBPACK_IMPORTED_MODULE_16__.isTextElement)(this.state.editingElement));\n    return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_4__["default"])("excalidraw excalidraw-container", {\n        "excalidraw--view-mode": this.state.viewModeEnabled,\n        "excalidraw--mobile": this.device.editor.isMobile\n      }),\n      style: {\n        ["--ui-pointerEvents"]: shouldBlockPointerEvents ? _constants__WEBPACK_IMPORTED_MODULE_12__.POINTER_EVENTS.disabled : _constants__WEBPACK_IMPORTED_MODULE_12__.POINTER_EVENTS.enabled\n      },\n      ref: this.excalidrawContainerRef,\n      onDrop: this.handleAppOnDrop,\n      tabIndex: 0,\n      onKeyDown: this.props.handleKeyboardGlobally ? undefined : this.onKeyDown\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(AppContext.Provider, Object.assign({\n        value: this\n      }, {\n        children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(AppPropsContext.Provider, Object.assign({\n          value: this.props\n        }, {\n          children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(ExcalidrawContainerContext.Provider, Object.assign({\n            value: this.excalidrawContainerValue\n          }, {\n            children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(DeviceContext.Provider, Object.assign({\n              value: this.device\n            }, {\n              children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(ExcalidrawSetAppStateContext.Provider, Object.assign({\n                value: this.setAppState\n              }, {\n                children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(ExcalidrawAppStateContext.Provider, Object.assign({\n                  value: this.state\n                }, {\n                  children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(ExcalidrawElementsContext.Provider, Object.assign({\n                    value: this.scene.getNonDeletedElements()\n                  }, {\n                    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(ExcalidrawActionManagerContext.Provider, Object.assign({\n                      value: this.actionManager\n                    }, {\n                      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_LayerUI__WEBPACK_IMPORTED_MODULE_36__["default"], Object.assign({\n                        canvas: this.canvas,\n                        appState: this.state,\n                        files: this.files,\n                        setAppState: this.setAppState,\n                        actionManager: this.actionManager,\n                        elements: this.scene.getNonDeletedElements(),\n                        onLockToggle: this.toggleLock,\n                        onPenModeToggle: this.togglePenMode,\n                        onHandToolToggle: this.onHandToolToggle,\n                        langCode: (0,_i18n__WEBPACK_IMPORTED_MODULE_25__.getLanguage)().code,\n                        renderTopRightUI: renderTopRightUI,\n                        renderCustomStats: renderCustomStats,\n                        showExitZenModeBtn: typeof ((_a = this.props) === null || _a === void 0 ? void 0 : _a.zenModeEnabled) === "undefined" && this.state.zenModeEnabled,\n                        UIOptions: this.props.UIOptions,\n                        onExportImage: this.onExportImage,\n                        renderWelcomeScreen: !this.state.isLoading && this.state.showWelcomeScreen && this.state.activeTool.type === "selection" && !this.state.zenModeEnabled && !this.scene.getElementsIncludingDeleted().length,\n                        app: this,\n                        isCollaborating: this.props.isCollaborating\n                      }, {\n                        children: [this.props.children, this.state.openDialog === "mermaid" && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_MermaidToExcalidraw__WEBPACK_IMPORTED_MODULE_67__["default"], {})]\n                      })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n                        className: "excalidraw-textEditorContainer"\n                      }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n                        className: "excalidraw-contextMenuContainer"\n                      }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n                        className: "excalidraw-eye-dropper-container"\n                      }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LaserTool_LaserTool__WEBPACK_IMPORTED_MODULE_68__.LaserToolOverlay, {\n                        manager: this.laserPathManager\n                      }), selectedElements.length === 1 && !this.state.contextMenu && this.state.showHyperlinkPopup && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_element_Hyperlink__WEBPACK_IMPORTED_MODULE_45__.Hyperlink, {\n                        element: selectedElements[0],\n                        setAppState: this.setAppState,\n                        onLinkOpen: this.props.onLinkOpen,\n                        setToast: this.setToast\n                      }, selectedElements[0].id), this.state.toast !== null && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Toast__WEBPACK_IMPORTED_MODULE_37__.Toast, {\n                        message: this.state.toast.message,\n                        onClose: () => this.setToast(null),\n                        duration: this.state.toast.duration,\n                        closable: this.state.toast.closable\n                      }), this.state.contextMenu && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ContextMenu__WEBPACK_IMPORTED_MODULE_35__.ContextMenu, {\n                        items: this.state.contextMenu.items,\n                        top: this.state.contextMenu.top,\n                        left: this.state.contextMenu.left,\n                        actionManager: this.actionManager,\n                        onClose: callback => {\n                          this.setState({\n                            contextMenu: null\n                          }, () => {\n                            this.focusContainer();\n                            callback === null || callback === void 0 ? void 0 : callback();\n                          });\n                        }\n                      }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_canvases__WEBPACK_IMPORTED_MODULE_64__.StaticCanvas, {\n                        canvas: this.canvas,\n                        rc: this.rc,\n                        elements: canvasElements,\n                        visibleElements: visibleElements,\n                        versionNonce: versionNonce,\n                        selectionNonce: (_b = this.state.selectionElement) === null || _b === void 0 ? void 0 : _b.versionNonce,\n                        scale: window.devicePixelRatio,\n                        appState: this.state,\n                        renderConfig: {\n                          imageCache: this.imageCache,\n                          isExporting: false,\n                          renderGrid: true\n                        }\n                      }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_canvases__WEBPACK_IMPORTED_MODULE_64__.InteractiveCanvas, {\n                        containerRef: this.excalidrawContainerRef,\n                        canvas: this.interactiveCanvas,\n                        elements: canvasElements,\n                        visibleElements: visibleElements,\n                        selectedElements: selectedElements,\n                        versionNonce: versionNonce,\n                        selectionNonce: (_c = this.state.selectionElement) === null || _c === void 0 ? void 0 : _c.versionNonce,\n                        scale: window.devicePixelRatio,\n                        appState: this.state,\n                        renderInteractiveSceneCallback: this.renderInteractiveSceneCallback,\n                        handleCanvasRef: this.handleInteractiveCanvasRef,\n                        onContextMenu: this.handleCanvasContextMenu,\n                        onPointerMove: this.handleCanvasPointerMove,\n                        onPointerUp: this.handleCanvasPointerUp,\n                        onPointerCancel: this.removePointer,\n                        onTouchMove: this.handleTouchMove,\n                        onPointerDown: this.handleCanvasPointerDown,\n                        onDoubleClick: this.handleCanvasDoubleClick\n                      }), this.renderFrameNames()]\n                    })), this.renderEmbeddables()]\n                  }))\n                }))\n              }))\n            }))\n          }))\n        }))\n      }))\n    }));\n  }\n\n  componentDidMount() {\n    var _a;\n\n    return __awaiter(this, void 0, void 0, function* () {\n      this.unmounted = false;\n      this.excalidrawContainerValue.container = this.excalidrawContainerRef.current;\n\n      if ("development" === _constants__WEBPACK_IMPORTED_MODULE_12__.ENV.TEST || "development" !== "production") {\n        const setState = this.setState.bind(this);\n        Object.defineProperties(window.h, {\n          state: {\n            configurable: true,\n            get: () => {\n              return this.state;\n            }\n          },\n          setState: {\n            configurable: true,\n            value: (...args) => {\n              return this.setState(...args);\n            }\n          },\n          app: {\n            configurable: true,\n            value: this\n          },\n          history: {\n            configurable: true,\n            value: this.history\n          }\n        });\n      }\n\n      this.scene.addCallback(this.onSceneUpdated);\n      this.addEventListeners();\n\n      if (this.props.autoFocus && this.excalidrawContainerRef.current) {\n        this.focusContainer();\n      }\n\n      if ( // bounding rects don\'t work in tests so updating\n      // the state on init would result in making the test enviro run\n      // in mobile breakpoint (0 width/height), making everything fail\n      !(0,_utils__WEBPACK_IMPORTED_MODULE_33__.isTestEnv)()) {\n        this.refreshViewportBreakpoints();\n        this.refreshEditorBreakpoints();\n      }\n\n      if (supportsResizeObserver && this.excalidrawContainerRef.current) {\n        this.resizeObserver = new ResizeObserver(() => {\n          this.refreshEditorBreakpoints();\n          this.updateDOMRect();\n        });\n        (_a = this.resizeObserver) === null || _a === void 0 ? void 0 : _a.observe(this.excalidrawContainerRef.current);\n      }\n\n      const searchParams = new URLSearchParams(window.location.search.slice(1));\n\n      if (searchParams.has("web-share-target")) {\n        // Obtain a file that was shared via the Web Share Target API.\n        this.restoreFileFromShare();\n      } else {\n        this.updateDOMRect(this.initializeScene);\n      } // note that this check seems to always pass in localhost\n\n\n      if ((0,_constants__WEBPACK_IMPORTED_MODULE_12__.isBrave)() && !(0,_element_textElement__WEBPACK_IMPORTED_MODULE_43__.isMeasureTextSupported)()) {\n        this.setState({\n          errorMessage: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_BraveMeasureTextError__WEBPACK_IMPORTED_MODULE_60__["default"], {})\n        });\n      }\n    });\n  }\n\n  componentWillUnmount() {\n    var _a;\n\n    this.renderer.destroy();\n    this.scene = new _scene_Scene__WEBPACK_IMPORTED_MODULE_30__["default"]();\n    this.renderer = new _scene_Renderer__WEBPACK_IMPORTED_MODULE_65__.Renderer(this.scene);\n    this.files = {};\n    this.imageCache.clear();\n    (_a = this.resizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();\n    this.unmounted = true;\n    this.removeEventListeners();\n    this.scene.destroy();\n    this.library.destroy();\n    this.laserPathManager.destroy();\n    this.onChangeEmitter.destroy();\n    _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_66__.ShapeCache.destroy();\n    _snapping__WEBPACK_IMPORTED_MODULE_58__.SnapCache.destroy();\n    clearTimeout(touchTimeout);\n    _scene__WEBPACK_IMPORTED_MODULE_29__.isSomeElementSelected.clearCache();\n    _groups__WEBPACK_IMPORTED_MODULE_23__.selectGroupsForSelectedElements.clearCache();\n    touchTimeout = 0;\n  }\n\n  removeEventListeners() {\n    var _a, _b, _c, _d;\n\n    document.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.POINTER_UP, this.removePointer);\n    document.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.COPY, this.onCopy);\n    document.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.PASTE, this.pasteFromClipboard);\n    document.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.CUT, this.onCut);\n    (_a = this.excalidrawContainerRef.current) === null || _a === void 0 ? void 0 : _a.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.WHEEL, this.onWheel);\n    (_b = this.nearestScrollableContainer) === null || _b === void 0 ? void 0 : _b.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.SCROLL, this.onScroll);\n    document.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.KEYDOWN, this.onKeyDown, false);\n    document.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.MOUSE_MOVE, this.updateCurrentCursorPosition, false);\n    document.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.KEYUP, this.onKeyUp);\n    window.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.RESIZE, this.onResize, false);\n    window.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.UNLOAD, this.onUnload, false);\n    window.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.BLUR, this.onBlur, false);\n    (_c = this.excalidrawContainerRef.current) === null || _c === void 0 ? void 0 : _c.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.DRAG_OVER, this.disableEvent, false);\n    (_d = this.excalidrawContainerRef.current) === null || _d === void 0 ? void 0 : _d.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.DROP, this.disableEvent, false);\n    document.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.GESTURE_START, this.onGestureStart, false);\n    document.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.GESTURE_CHANGE, this.onGestureChange, false);\n    document.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.GESTURE_END, this.onGestureEnd, false);\n    window.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.MESSAGE, this.onWindowMessage, false);\n  }\n\n  addEventListeners() {\n    var _a, _b, _c, _d, _e;\n\n    this.removeEventListeners();\n    window.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.MESSAGE, this.onWindowMessage, false);\n    document.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.POINTER_UP, this.removePointer); // #3553\n\n    document.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.COPY, this.onCopy);\n    (_a = this.excalidrawContainerRef.current) === null || _a === void 0 ? void 0 : _a.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.WHEEL, this.onWheel, {\n      passive: false\n    });\n\n    if (this.props.handleKeyboardGlobally) {\n      document.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.KEYDOWN, this.onKeyDown, false);\n    }\n\n    document.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.KEYUP, this.onKeyUp, {\n      passive: true\n    });\n    document.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.MOUSE_MOVE, this.updateCurrentCursorPosition); // rerender text elements on font load to fix #637 && #1553\n\n    (_c = (_b = document.fonts) === null || _b === void 0 ? void 0 : _b.addEventListener) === null || _c === void 0 ? void 0 : _c.call(_b, "loadingdone", event => {\n      const loadedFontFaces = event.fontfaces;\n      this.fonts.onFontsLoaded(loadedFontFaces);\n    }); // Safari-only desktop pinch zoom\n\n    document.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.GESTURE_START, this.onGestureStart, false);\n    document.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.GESTURE_CHANGE, this.onGestureChange, false);\n    document.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.GESTURE_END, this.onGestureEnd, false);\n\n    if (this.state.viewModeEnabled) {\n      return;\n    }\n\n    document.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.PASTE, this.pasteFromClipboard);\n    document.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.CUT, this.onCut);\n\n    if (this.props.detectScroll) {\n      this.nearestScrollableContainer = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.getNearestScrollableContainer)(this.excalidrawContainerRef.current);\n      this.nearestScrollableContainer.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.SCROLL, this.onScroll);\n    }\n\n    window.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.RESIZE, this.onResize, false);\n    window.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.UNLOAD, this.onUnload, false);\n    window.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.BLUR, this.onBlur, false);\n    (_d = this.excalidrawContainerRef.current) === null || _d === void 0 ? void 0 : _d.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.DRAG_OVER, this.disableEvent, false);\n    (_e = this.excalidrawContainerRef.current) === null || _e === void 0 ? void 0 : _e.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.DROP, this.disableEvent, false);\n  }\n\n  componentDidUpdate(prevProps, prevState) {\n    var _a, _b, _c, _d, _e, _f;\n\n    this.updateEmbeddables();\n\n    if (!this.state.showWelcomeScreen && !this.scene.getElementsIncludingDeleted().length) {\n      this.setState({\n        showWelcomeScreen: true\n      });\n    }\n\n    if (prevProps.UIOptions.dockedSidebarBreakpoint !== this.props.UIOptions.dockedSidebarBreakpoint) {\n      this.refreshEditorBreakpoints();\n    }\n\n    if (prevState.scrollX !== this.state.scrollX || prevState.scrollY !== this.state.scrollY) {\n      (_b = (_a = this.props) === null || _a === void 0 ? void 0 : _a.onScrollChange) === null || _b === void 0 ? void 0 : _b.call(_a, this.state.scrollX, this.state.scrollY);\n    }\n\n    if (Object.keys(this.state.selectedElementIds).length && (0,_appState__WEBPACK_IMPORTED_MODULE_10__.isEraserActive)(this.state)) {\n      this.setState({\n        activeTool: (0,_utils__WEBPACK_IMPORTED_MODULE_33__.updateActiveTool)(this.state, {\n          type: "selection"\n        })\n      });\n    }\n\n    if (this.state.activeTool.type === "eraser" && prevState.theme !== this.state.theme) {\n      (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setEraserCursor)(this.interactiveCanvas, this.state.theme);\n    } // Hide hyperlink popup if shown when element type is not selection\n\n\n    if (prevState.activeTool.type === "selection" && this.state.activeTool.type !== "selection" && this.state.showHyperlinkPopup) {\n      this.setState({\n        showHyperlinkPopup: false\n      });\n    }\n\n    if (prevProps.langCode !== this.props.langCode) {\n      this.updateLanguage();\n    }\n\n    if (prevProps.viewModeEnabled !== this.props.viewModeEnabled) {\n      this.setState({\n        viewModeEnabled: !!this.props.viewModeEnabled\n      });\n    }\n\n    if (prevState.viewModeEnabled !== this.state.viewModeEnabled) {\n      this.addEventListeners();\n      this.deselectElements();\n    }\n\n    if (prevProps.zenModeEnabled !== this.props.zenModeEnabled) {\n      this.setState({\n        zenModeEnabled: !!this.props.zenModeEnabled\n      });\n    }\n\n    if (prevProps.theme !== this.props.theme && this.props.theme) {\n      this.setState({\n        theme: this.props.theme\n      });\n    }\n\n    if (prevProps.gridModeEnabled !== this.props.gridModeEnabled) {\n      this.setState({\n        gridSize: this.props.gridModeEnabled ? _constants__WEBPACK_IMPORTED_MODULE_12__.GRID_SIZE : null\n      });\n    }\n\n    if (this.props.name && prevProps.name !== this.props.name) {\n      this.setState({\n        name: this.props.name\n      });\n    }\n\n    (_c = this.excalidrawContainerRef.current) === null || _c === void 0 ? void 0 : _c.classList.toggle("theme--dark", this.state.theme === "dark");\n\n    if (this.state.editingLinearElement && !this.state.selectedElementIds[this.state.editingLinearElement.elementId]) {\n      // defer so that the commitToHistory flag isn\'t reset via current update\n      setTimeout(() => {\n        // execute only if the condition still holds when the deferred callback\n        // executes (it can be scheduled multiple times depending on how\n        // many times the component renders)\n        this.state.editingLinearElement && this.actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_5__.actionFinalize);\n      });\n    } // failsafe in case the state is being updated in incorrect order resulting\n    // in the editingElement being now a deleted element\n\n\n    if ((_d = this.state.editingElement) === null || _d === void 0 ? void 0 : _d.isDeleted) {\n      this.setState({\n        editingElement: null\n      });\n    }\n\n    if (this.state.selectedLinearElement && !this.state.selectedElementIds[this.state.selectedLinearElement.elementId]) {\n      // To make sure `selectedLinearElement` is in sync with `selectedElementIds`, however this shouldn\'t be needed once\n      // we have a single API to update `selectedElementIds`\n      this.setState({\n        selectedLinearElement: null\n      });\n    }\n\n    const {\n      multiElement\n    } = prevState;\n\n    if (prevState.activeTool !== this.state.activeTool && multiElement != null && (0,_element_binding__WEBPACK_IMPORTED_MODULE_17__.isBindingEnabled)(this.state) && (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isBindingElement)(multiElement, false)) {\n      (0,_element_binding__WEBPACK_IMPORTED_MODULE_17__.maybeBindLinearElement)(multiElement, this.state, this.scene, (0,_utils__WEBPACK_IMPORTED_MODULE_33__.tupleToCoors)(_element_linearElementEditor__WEBPACK_IMPORTED_MODULE_18__.LinearElementEditor.getPointAtIndexGlobalCoordinates(multiElement, -1)));\n    }\n\n    this.history.record(this.state, this.scene.getElementsIncludingDeleted()); // Do not notify consumers if we\'re still loading the scene. Among other\n    // potential issues, this fixes a case where the tab isn\'t focused during\n    // init, which would trigger onChange with empty elements, which would then\n    // override whatever is in localStorage currently.\n\n    if (!this.state.isLoading) {\n      (_f = (_e = this.props).onChange) === null || _f === void 0 ? void 0 : _f.call(_e, this.scene.getElementsIncludingDeleted(), this.state, this.files);\n      this.onChangeEmitter.trigger(this.scene.getElementsIncludingDeleted(), this.state, this.files);\n    }\n  }\n\n  static resetTapTwice() {\n    didTapTwice = false;\n  } // TODO rewrite this to paste both text & images at the same time if\n  // pasted data contains both\n\n\n  addElementsFromMixedContentPaste(mixedContent, {\n    isPlainPaste,\n    sceneX,\n    sceneY\n  }) {\n    return __awaiter(this, void 0, void 0, function* () {\n      if (!isPlainPaste && mixedContent.some(node => node.type === "imageUrl") && this.isToolSupported("image")) {\n        const imageURLs = mixedContent.filter(node => node.type === "imageUrl").map(node => node.value);\n        const responses = yield Promise.all(imageURLs.map(url => __awaiter(this, void 0, void 0, function* () {\n          try {\n            return {\n              file: yield (0,_data_blob__WEBPACK_IMPORTED_MODULE_39__.ImageURLToFile)(url)\n            };\n          } catch (error) {\n            return {\n              errorMessage: error.message\n            };\n          }\n        })));\n        let y = sceneY;\n        let firstImageYOffsetDone = false;\n        const nextSelectedIds = {};\n\n        for (const response of responses) {\n          if (response.file) {\n            const imageElement = this.createImageElement({\n              sceneX,\n              sceneY: y\n            });\n            const initializedImageElement = yield this.insertImageElement(imageElement, response.file);\n\n            if (initializedImageElement) {\n              // vertically center first image in the batch\n              if (!firstImageYOffsetDone) {\n                firstImageYOffsetDone = true;\n                y -= initializedImageElement.height / 2;\n              } // hack to reset the `y` coord because we vertically center during\n              // insertImageElement\n\n\n              (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(initializedImageElement, {\n                y\n              }, false);\n              y = imageElement.y + imageElement.height + 25;\n              nextSelectedIds[imageElement.id] = true;\n            }\n          }\n        }\n\n        this.setState({\n          selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)(nextSelectedIds, this.state)\n        });\n        const error = responses.find(response => !!response.errorMessage);\n\n        if (error && error.errorMessage) {\n          this.setState({\n            errorMessage: error.errorMessage\n          });\n        }\n      } else {\n        const textNodes = mixedContent.filter(node => node.type === "text");\n\n        if (textNodes.length) {\n          this.addTextFromPaste(textNodes.map(node => node.value).join("\\n\\n"), isPlainPaste);\n        }\n      }\n    });\n  }\n\n  addTextFromPaste(text, isPlainPaste = false) {\n    const {\n      x,\n      y\n    } = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.viewportCoordsToSceneCoords)({\n      clientX: this.lastViewportPosition.x,\n      clientY: this.lastViewportPosition.y\n    }, this.state);\n    const textElementProps = {\n      x,\n      y,\n      strokeColor: this.state.currentItemStrokeColor,\n      backgroundColor: this.state.currentItemBackgroundColor,\n      fillStyle: this.state.currentItemFillStyle,\n      strokeWidth: this.state.currentItemStrokeWidth,\n      strokeStyle: this.state.currentItemStrokeStyle,\n      roundness: null,\n      roughness: this.state.currentItemRoughness,\n      opacity: this.state.currentItemOpacity,\n      text,\n      fontSize: this.state.currentItemFontSize,\n      fontFamily: this.state.currentItemFontFamily,\n      textAlign: this.state.currentItemTextAlign,\n      verticalAlign: _constants__WEBPACK_IMPORTED_MODULE_12__.DEFAULT_VERTICAL_ALIGN,\n      locked: false\n    };\n    const LINE_GAP = 10;\n    let currentY = y;\n    const lines = isPlainPaste ? [text] : text.split("\\n");\n    const textElements = lines.reduce((acc, line, idx) => {\n      var _a;\n\n      const text = line.trim();\n      const lineHeight = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_43__.getDefaultLineHeight)(textElementProps.fontFamily);\n\n      if (text.length) {\n        const topLayerFrame = this.getTopLayerFrameAtSceneCoords({\n          x,\n          y: currentY\n        });\n        const element = (0,_element__WEBPACK_IMPORTED_MODULE_16__.newTextElement)(Object.assign(Object.assign({}, textElementProps), {\n          x,\n          y: currentY,\n          text,\n          lineHeight,\n          frameId: topLayerFrame ? topLayerFrame.id : null\n        }));\n        acc.push(element);\n        currentY += element.height + LINE_GAP;\n      } else {\n        const prevLine = (_a = lines[idx - 1]) === null || _a === void 0 ? void 0 : _a.trim(); // add paragraph only if previous line was not empty, IOW don\'t add\n        // more than one empty line\n\n        if (prevLine) {\n          currentY += (0,_element_textElement__WEBPACK_IMPORTED_MODULE_43__.getLineHeightInPx)(textElementProps.fontSize, lineHeight) + LINE_GAP;\n        }\n      }\n\n      return acc;\n    }, []);\n\n    if (textElements.length === 0) {\n      return;\n    }\n\n    const frameId = textElements[0].frameId;\n\n    if (frameId) {\n      this.scene.insertElementsAtIndex(textElements, this.scene.getElementIndex(frameId));\n    } else {\n      this.scene.replaceAllElements([...this.scene.getElementsIncludingDeleted(), ...textElements]);\n    }\n\n    this.setState({\n      selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)(Object.fromEntries(textElements.map(el => [el.id, true])), this.state)\n    });\n\n    if (!isPlainPaste && textElements.length > 1 && PLAIN_PASTE_TOAST_SHOWN === false && !this.device.editor.isMobile) {\n      this.setToast({\n        message: (0,_i18n__WEBPACK_IMPORTED_MODULE_25__.t)("toast.pasteAsSingleElement", {\n          shortcut: (0,_utils__WEBPACK_IMPORTED_MODULE_33__.getShortcutKey)("CtrlOrCmd+Shift+V")\n        }),\n        duration: 5000\n      });\n      PLAIN_PASTE_TOAST_SHOWN = true;\n    }\n\n    this.history.resumeRecording();\n  }\n\n  handleTextWysiwyg(element, {\n    isExistingElement = false\n  }) {\n    const updateElement = (text, originalText, isDeleted) => {\n      this.scene.replaceAllElements([...this.scene.getElementsIncludingDeleted().map(_element => {\n        if (_element.id === element.id && (0,_element__WEBPACK_IMPORTED_MODULE_16__.isTextElement)(_element)) {\n          return (0,_element__WEBPACK_IMPORTED_MODULE_16__.updateTextElement)(_element, {\n            text,\n            isDeleted,\n            originalText\n          });\n        }\n\n        return _element;\n      })]);\n    };\n\n    (0,_element__WEBPACK_IMPORTED_MODULE_16__.textWysiwyg)({\n      id: element.id,\n      canvas: this.canvas,\n      getViewportCoords: (x, y) => {\n        const {\n          x: viewportX,\n          y: viewportY\n        } = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.sceneCoordsToViewportCoords)({\n          sceneX: x,\n          sceneY: y\n        }, this.state);\n        return [viewportX - this.state.offsetLeft, viewportY - this.state.offsetTop];\n      },\n      onChange: (0,_utils__WEBPACK_IMPORTED_MODULE_33__.withBatchedUpdates)(text => {\n        updateElement(text, text, false);\n\n        if ((0,_element__WEBPACK_IMPORTED_MODULE_16__.isNonDeletedElement)(element)) {\n          (0,_element_binding__WEBPACK_IMPORTED_MODULE_17__.updateBoundElements)(element);\n        }\n      }),\n      onSubmit: (0,_utils__WEBPACK_IMPORTED_MODULE_33__.withBatchedUpdates)(({\n        text,\n        viaKeyboard,\n        originalText\n      }) => {\n        const isDeleted = !text.trim();\n        updateElement(text, originalText, isDeleted); // select the created text element only if submitting via keyboard\n        // (when submitting via click it should act as signal to deselect)\n\n        if (!isDeleted && viaKeyboard) {\n          const elementIdToSelect = element.containerId ? element.containerId : element.id;\n          this.setState(prevState => ({\n            selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)(Object.assign(Object.assign({}, prevState.selectedElementIds), {\n              [elementIdToSelect]: true\n            }), prevState)\n          }));\n        }\n\n        if (isDeleted) {\n          (0,_element_binding__WEBPACK_IMPORTED_MODULE_17__.fixBindingsAfterDeletion)(this.scene.getNonDeletedElements(), [element]);\n        }\n\n        if (!isDeleted || isExistingElement) {\n          this.history.resumeRecording();\n        }\n\n        this.setState({\n          draggingElement: null,\n          editingElement: null\n        });\n\n        if (this.state.activeTool.locked) {\n          (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursorForShape)(this.interactiveCanvas, this.state);\n        }\n\n        this.focusContainer();\n      }),\n      element,\n      excalidrawContainer: this.excalidrawContainerRef.current,\n      app: this\n    }); // deselect all other elements when inserting text\n\n    this.deselectElements(); // do an initial update to re-initialize element position since we were\n    // modifying element\'s x/y for sake of editor (case: syncing to remote)\n\n    updateElement(element.text, element.originalText, false);\n  }\n\n  deselectElements() {\n    this.setState({\n      selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)({}, this.state),\n      selectedGroupIds: {},\n      editingGroupId: null,\n      activeEmbeddable: null\n    });\n  }\n\n  getTextElementAtPosition(x, y) {\n    const element = this.getElementAtPosition(x, y, {\n      includeBoundTextElement: true\n    });\n\n    if (element && (0,_element__WEBPACK_IMPORTED_MODULE_16__.isTextElement)(element) && !element.isDeleted) {\n      return element;\n    }\n\n    return null;\n  }\n\n  getElementAtPosition(x, y, opts) {\n    const allHitElements = this.getElementsAtPosition(x, y, opts === null || opts === void 0 ? void 0 : opts.includeBoundTextElement, opts === null || opts === void 0 ? void 0 : opts.includeLockedElements);\n\n    if (allHitElements.length > 1) {\n      if (opts === null || opts === void 0 ? void 0 : opts.preferSelected) {\n        for (let index = allHitElements.length - 1; index > -1; index--) {\n          if (this.state.selectedElementIds[allHitElements[index].id]) {\n            return allHitElements[index];\n          }\n        }\n      }\n\n      const elementWithHighestZIndex = allHitElements[allHitElements.length - 1]; // If we\'re hitting element with highest z-index only on its bounding box\n      // while also hitting other element figure, the latter should be considered.\n\n      return (0,_element__WEBPACK_IMPORTED_MODULE_16__.isHittingElementBoundingBoxWithoutHittingElement)(elementWithHighestZIndex, this.state, this.frameNameBoundsCache, x, y) ? allHitElements[allHitElements.length - 2] : elementWithHighestZIndex;\n    }\n\n    if (allHitElements.length === 1) {\n      return allHitElements[0];\n    }\n\n    return null;\n  }\n\n  getElementsAtPosition(x, y, includeBoundTextElement = false, includeLockedElements = false) {\n    const elements = includeBoundTextElement && includeLockedElements ? this.scene.getNonDeletedElements() : this.scene.getNonDeletedElements().filter(element => (includeLockedElements || !element.locked) && (includeBoundTextElement || !((0,_element__WEBPACK_IMPORTED_MODULE_16__.isTextElement)(element) && element.containerId)));\n    return (0,_scene__WEBPACK_IMPORTED_MODULE_29__.getElementsAtPosition)(elements, element => (0,_element__WEBPACK_IMPORTED_MODULE_16__.hitTest)(element, this.state, this.frameNameBoundsCache, x, y)).filter(element => {\n      // hitting a frame\'s element from outside the frame is not considered a hit\n      const containingFrame = (0,_frame__WEBPACK_IMPORTED_MODULE_50__.getContainingFrame)(element);\n      return containingFrame && this.state.frameRendering.enabled && this.state.frameRendering.clip ? (0,_frame__WEBPACK_IMPORTED_MODULE_50__.isCursorInFrame)({\n        x,\n        y\n      }, containingFrame) : true;\n    });\n  }\n\n  handleHoverSelectedLinearElement(linearElementEditor, scenePointerX, scenePointerY) {\n    const element = _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_18__.LinearElementEditor.getElement(linearElementEditor.elementId);\n    const boundTextElement = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_43__.getBoundTextElement)(element);\n\n    if (!element) {\n      return;\n    }\n\n    if (this.state.selectedLinearElement) {\n      let hoverPointIndex = -1;\n      let segmentMidPointHoveredCoords = null;\n\n      if ((0,_element_collision__WEBPACK_IMPORTED_MODULE_44__.isHittingElementNotConsideringBoundingBox)(element, this.state, this.frameNameBoundsCache, [scenePointerX, scenePointerY])) {\n        hoverPointIndex = _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_18__.LinearElementEditor.getPointIndexUnderCursor(element, this.state.zoom, scenePointerX, scenePointerY);\n        segmentMidPointHoveredCoords = _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_18__.LinearElementEditor.getSegmentMidpointHitCoords(linearElementEditor, {\n          x: scenePointerX,\n          y: scenePointerY\n        }, this.state);\n\n        if (hoverPointIndex >= 0 || segmentMidPointHoveredCoords) {\n          (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursor)(this.interactiveCanvas, _constants__WEBPACK_IMPORTED_MODULE_12__.CURSOR_TYPE.POINTER);\n        } else {\n          (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursor)(this.interactiveCanvas, _constants__WEBPACK_IMPORTED_MODULE_12__.CURSOR_TYPE.MOVE);\n        }\n      } else if ((0,_element_transformHandles__WEBPACK_IMPORTED_MODULE_47__.shouldShowBoundingBox)([element], this.state) && (0,_element__WEBPACK_IMPORTED_MODULE_16__.isHittingElementBoundingBoxWithoutHittingElement)(element, this.state, this.frameNameBoundsCache, scenePointerX, scenePointerY)) {\n        (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursor)(this.interactiveCanvas, _constants__WEBPACK_IMPORTED_MODULE_12__.CURSOR_TYPE.MOVE);\n      } else if (boundTextElement && (0,_element__WEBPACK_IMPORTED_MODULE_16__.hitTest)(boundTextElement, this.state, this.frameNameBoundsCache, scenePointerX, scenePointerY)) {\n        (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursor)(this.interactiveCanvas, _constants__WEBPACK_IMPORTED_MODULE_12__.CURSOR_TYPE.MOVE);\n      }\n\n      if (this.state.selectedLinearElement.hoverPointIndex !== hoverPointIndex) {\n        this.setState({\n          selectedLinearElement: Object.assign(Object.assign({}, this.state.selectedLinearElement), {\n            hoverPointIndex\n          })\n        });\n      }\n\n      if (!_element_linearElementEditor__WEBPACK_IMPORTED_MODULE_18__.LinearElementEditor.arePointsEqual(this.state.selectedLinearElement.segmentMidPointHoveredCoords, segmentMidPointHoveredCoords)) {\n        this.setState({\n          selectedLinearElement: Object.assign(Object.assign({}, this.state.selectedLinearElement), {\n            segmentMidPointHoveredCoords\n          })\n        });\n      }\n    } else {\n      (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursor)(this.interactiveCanvas, _constants__WEBPACK_IMPORTED_MODULE_12__.CURSOR_TYPE.AUTO);\n    }\n  }\n\n  maybeCleanupAfterMissingPointerUp(event) {\n    if (lastPointerUp !== null) {\n      // Unfortunately, sometimes we don\'t get a pointerup after a pointerdown,\n      // this can happen when a contextual menu or alert is triggered. In order to avoid\n      // being in a weird state, we clean up on the next pointerdown\n      lastPointerUp(event);\n    }\n  }\n\n  updateGestureOnPointerDown(event) {\n    gesture.pointers.set(event.pointerId, {\n      x: event.clientX,\n      y: event.clientY\n    });\n\n    if (gesture.pointers.size === 2) {\n      gesture.lastCenter = (0,_gesture__WEBPACK_IMPORTED_MODULE_22__.getCenter)(gesture.pointers);\n      gesture.initialScale = this.state.zoom.value;\n      gesture.initialDistance = (0,_gesture__WEBPACK_IMPORTED_MODULE_22__.getDistance)(Array.from(gesture.pointers.values()));\n    }\n  }\n\n  initialPointerDownState(event) {\n    const origin = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.viewportCoordsToSceneCoords)(event, this.state);\n    const selectedElements = this.scene.getSelectedElements(this.state);\n    const [minX, minY, maxX, maxY] = (0,_element__WEBPACK_IMPORTED_MODULE_16__.getCommonBounds)(selectedElements);\n    return {\n      origin,\n      withCmdOrCtrl: event[_keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.CTRL_OR_CMD],\n      originInGrid: (0,_utils__WEBPACK_IMPORTED_MODULE_33__.tupleToCoors)((0,_math__WEBPACK_IMPORTED_MODULE_28__.getGridPoint)(origin.x, origin.y, event[_keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.CTRL_OR_CMD] ? null : this.state.gridSize)),\n      scrollbars: (0,_scene__WEBPACK_IMPORTED_MODULE_29__.isOverScrollBars)(currentScrollBars, event.clientX - this.state.offsetLeft, event.clientY - this.state.offsetTop),\n      // we need to duplicate because we\'ll be updating this state\n      lastCoords: Object.assign({}, origin),\n      originalElements: this.scene.getNonDeletedElements().reduce((acc, element) => {\n        acc.set(element.id, (0,_element_newElement__WEBPACK_IMPORTED_MODULE_20__.deepCopyElement)(element));\n        return acc;\n      }, new Map()),\n      resize: {\n        handleType: false,\n        isResizing: false,\n        offset: {\n          x: 0,\n          y: 0\n        },\n        arrowDirection: "origin",\n        center: {\n          x: (maxX + minX) / 2,\n          y: (maxY + minY) / 2\n        }\n      },\n      hit: {\n        element: null,\n        allHitElements: [],\n        wasAddedToSelection: false,\n        hasBeenDuplicated: false,\n        hasHitCommonBoundingBoxOfSelectedElements: this.isHittingCommonBoundingBoxOfSelectedElements(origin, selectedElements)\n      },\n      drag: {\n        hasOccurred: false,\n        offset: null\n      },\n      eventListeners: {\n        onMove: null,\n        onUp: null,\n        onKeyUp: null,\n        onKeyDown: null\n      },\n      boxSelection: {\n        hasOccurred: false\n      },\n      elementIdsToErase: {}\n    };\n  } // Returns whether the event is a dragging a scrollbar\n\n\n  handleDraggingScrollBar(event, pointerDownState) {\n    if (!(pointerDownState.scrollbars.isOverEither && !this.state.multiElement)) {\n      return false;\n    }\n\n    isDraggingScrollBar = true;\n    pointerDownState.lastCoords.x = event.clientX;\n    pointerDownState.lastCoords.y = event.clientY;\n    const onPointerMove = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.withBatchedUpdatesThrottled)(event => {\n      const target = event.target;\n\n      if (!(target instanceof HTMLElement)) {\n        return;\n      }\n\n      this.handlePointerMoveOverScrollbars(event, pointerDownState);\n    });\n    const onPointerUp = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.withBatchedUpdates)(() => {\n      isDraggingScrollBar = false;\n      (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursorForShape)(this.interactiveCanvas, this.state);\n      lastPointerUp = null;\n      this.setState({\n        cursorButton: "up"\n      });\n      this.savePointer(event.clientX, event.clientY, "up");\n      window.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.POINTER_MOVE, onPointerMove);\n      window.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.POINTER_UP, onPointerUp);\n      onPointerMove.flush();\n    });\n    lastPointerUp = onPointerUp;\n    window.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.POINTER_MOVE, onPointerMove);\n    window.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.POINTER_UP, onPointerUp);\n    return true;\n  }\n\n  isASelectedElement(hitElement) {\n    return hitElement != null && this.state.selectedElementIds[hitElement.id];\n  }\n\n  isHittingCommonBoundingBoxOfSelectedElements(point, selectedElements) {\n    if (selectedElements.length < 2) {\n      return false;\n    } // How many pixels off the shape boundary we still consider a hit\n\n\n    const threshold = 10 / this.state.zoom.value;\n    const [x1, y1, x2, y2] = (0,_element__WEBPACK_IMPORTED_MODULE_16__.getCommonBounds)(selectedElements);\n    return point.x > x1 - threshold && point.x < x2 + threshold && point.y > y1 - threshold && point.y < y2 + threshold;\n  }\n\n  getCurrentItemRoundness(elementType) {\n    return this.state.currentItemRoundness === "round" ? {\n      type: (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isUsingAdaptiveRadius)(elementType) ? _constants__WEBPACK_IMPORTED_MODULE_12__.ROUNDNESS.ADAPTIVE_RADIUS : _constants__WEBPACK_IMPORTED_MODULE_12__.ROUNDNESS.PROPORTIONAL_RADIUS\n    } : null;\n  }\n\n  maybeCacheReferenceSnapPoints(event, selectedElements, recomputeAnyways = false) {\n    if ((0,_snapping__WEBPACK_IMPORTED_MODULE_58__.isSnappingEnabled)({\n      event,\n      appState: this.state,\n      selectedElements\n    }) && (recomputeAnyways || !_snapping__WEBPACK_IMPORTED_MODULE_58__.SnapCache.getReferenceSnapPoints())) {\n      _snapping__WEBPACK_IMPORTED_MODULE_58__.SnapCache.setReferenceSnapPoints((0,_snapping__WEBPACK_IMPORTED_MODULE_58__.getReferenceSnapPoints)(this.scene.getNonDeletedElements(), selectedElements, this.state));\n    }\n  }\n\n  maybeCacheVisibleGaps(event, selectedElements, recomputeAnyways = false) {\n    if ((0,_snapping__WEBPACK_IMPORTED_MODULE_58__.isSnappingEnabled)({\n      event,\n      appState: this.state,\n      selectedElements\n    }) && (recomputeAnyways || !_snapping__WEBPACK_IMPORTED_MODULE_58__.SnapCache.getVisibleGaps())) {\n      _snapping__WEBPACK_IMPORTED_MODULE_58__.SnapCache.setVisibleGaps((0,_snapping__WEBPACK_IMPORTED_MODULE_58__.getVisibleGaps)(this.scene.getNonDeletedElements(), selectedElements, this.state));\n    }\n  }\n\n  onKeyDownFromPointerDownHandler(pointerDownState) {\n    return (0,_utils__WEBPACK_IMPORTED_MODULE_33__.withBatchedUpdates)(event => {\n      if (this.maybeHandleResize(pointerDownState, event)) {\n        return;\n      }\n\n      this.maybeDragNewGenericElement(pointerDownState, event);\n    });\n  }\n\n  onKeyUpFromPointerDownHandler(pointerDownState) {\n    return (0,_utils__WEBPACK_IMPORTED_MODULE_33__.withBatchedUpdates)(event => {\n      // Prevents focus from escaping excalidraw tab\n      event.key === _keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.ALT && event.preventDefault();\n\n      if (this.maybeHandleResize(pointerDownState, event)) {\n        return;\n      }\n\n      this.maybeDragNewGenericElement(pointerDownState, event);\n    });\n  }\n\n  onPointerMoveFromPointerDownHandler(pointerDownState) {\n    return (0,_utils__WEBPACK_IMPORTED_MODULE_33__.withBatchedUpdatesThrottled)(event => {\n      var _a, _b; // We need to initialize dragOffsetXY only after we\'ve updated\n      // `state.selectedElementIds` on pointerDown. Doing it here in pointerMove\n      // event handler should hopefully ensure we\'re already working with\n      // the updated state.\n\n\n      if (pointerDownState.drag.offset === null) {\n        pointerDownState.drag.offset = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.tupleToCoors)((0,_element__WEBPACK_IMPORTED_MODULE_16__.getDragOffsetXY)(this.scene.getSelectedElements(this.state), pointerDownState.origin.x, pointerDownState.origin.y));\n      }\n\n      const target = event.target;\n\n      if (!(target instanceof HTMLElement)) {\n        return;\n      }\n\n      if (this.handlePointerMoveOverScrollbars(event, pointerDownState)) {\n        return;\n      }\n\n      const pointerCoords = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.viewportCoordsToSceneCoords)(event, this.state);\n\n      if ((0,_appState__WEBPACK_IMPORTED_MODULE_10__.isEraserActive)(this.state)) {\n        this.handleEraser(event, pointerDownState, pointerCoords);\n        return;\n      }\n\n      if (this.state.activeTool.type === "laser") {\n        this.laserPathManager.addPointToPath(pointerCoords.x, pointerCoords.y);\n      }\n\n      const [gridX, gridY] = (0,_math__WEBPACK_IMPORTED_MODULE_28__.getGridPoint)(pointerCoords.x, pointerCoords.y, event[_keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.CTRL_OR_CMD] ? null : this.state.gridSize); // for arrows/lines, don\'t start dragging until a given threshold\n      // to ensure we don\'t create a 2-point arrow by mistake when\n      // user clicks mouse in a way that it moves a tiny bit (thus\n      // triggering pointermove)\n\n      if (!pointerDownState.drag.hasOccurred && (this.state.activeTool.type === "arrow" || this.state.activeTool.type === "line")) {\n        if ((0,_math__WEBPACK_IMPORTED_MODULE_28__.distance2d)(pointerCoords.x, pointerCoords.y, pointerDownState.origin.x, pointerDownState.origin.y) < _constants__WEBPACK_IMPORTED_MODULE_12__.DRAGGING_THRESHOLD) {\n          return;\n        }\n      }\n\n      if (pointerDownState.resize.isResizing) {\n        pointerDownState.lastCoords.x = pointerCoords.x;\n        pointerDownState.lastCoords.y = pointerCoords.y;\n\n        if (this.maybeHandleResize(pointerDownState, event)) {\n          return true;\n        }\n      }\n\n      if (this.state.selectedLinearElement) {\n        const linearElementEditor = this.state.editingLinearElement || this.state.selectedLinearElement;\n\n        if (_element_linearElementEditor__WEBPACK_IMPORTED_MODULE_18__.LinearElementEditor.shouldAddMidpoint(this.state.selectedLinearElement, pointerCoords, this.state)) {\n          const ret = _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_18__.LinearElementEditor.addMidpoint(this.state.selectedLinearElement, pointerCoords, this.state, !event[_keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.CTRL_OR_CMD]);\n\n          if (!ret) {\n            return;\n          } // Since we are reading from previous state which is not possible with\n          // automatic batching in React 18 hence using flush sync to synchronously\n          // update the state. Check https://github.com/excalidraw/excalidraw/pull/5508 for more details.\n\n\n          (0,react_dom__WEBPACK_IMPORTED_MODULE_2__.flushSync)(() => {\n            if (this.state.selectedLinearElement) {\n              this.setState({\n                selectedLinearElement: Object.assign(Object.assign({}, this.state.selectedLinearElement), {\n                  pointerDownState: ret.pointerDownState,\n                  selectedPointsIndices: ret.selectedPointsIndices\n                })\n              });\n            }\n\n            if (this.state.editingLinearElement) {\n              this.setState({\n                editingLinearElement: Object.assign(Object.assign({}, this.state.editingLinearElement), {\n                  pointerDownState: ret.pointerDownState,\n                  selectedPointsIndices: ret.selectedPointsIndices\n                })\n              });\n            }\n          });\n          return;\n        } else if (linearElementEditor.pointerDownState.segmentMidpoint.value !== null && !linearElementEditor.pointerDownState.segmentMidpoint.added) {\n          return;\n        }\n\n        const didDrag = _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_18__.LinearElementEditor.handlePointDragging(event, this.state, pointerCoords.x, pointerCoords.y, (element, pointsSceneCoords) => {\n          this.maybeSuggestBindingsForLinearElementAtCoords(element, pointsSceneCoords);\n        }, linearElementEditor);\n\n        if (didDrag) {\n          pointerDownState.lastCoords.x = pointerCoords.x;\n          pointerDownState.lastCoords.y = pointerCoords.y;\n          pointerDownState.drag.hasOccurred = true;\n\n          if (this.state.editingLinearElement && !this.state.editingLinearElement.isDragging) {\n            this.setState({\n              editingLinearElement: Object.assign(Object.assign({}, this.state.editingLinearElement), {\n                isDragging: true\n              })\n            });\n          }\n\n          if (!this.state.selectedLinearElement.isDragging) {\n            this.setState({\n              selectedLinearElement: Object.assign(Object.assign({}, this.state.selectedLinearElement), {\n                isDragging: true\n              })\n            });\n          }\n\n          return;\n        }\n      }\n\n      const hasHitASelectedElement = pointerDownState.hit.allHitElements.some(element => this.isASelectedElement(element));\n      const isSelectingPointsInLineEditor = this.state.editingLinearElement && event.shiftKey && this.state.editingLinearElement.elementId === ((_a = pointerDownState.hit.element) === null || _a === void 0 ? void 0 : _a.id);\n\n      if ((hasHitASelectedElement || pointerDownState.hit.hasHitCommonBoundingBoxOfSelectedElements) && !isSelectingPointsInLineEditor) {\n        const selectedElements = this.scene.getSelectedElements(this.state);\n\n        if (selectedElements.every(element => element.locked)) {\n          return;\n        }\n\n        const selectedElementsHasAFrame = selectedElements.find(e => (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isFrameElement)(e));\n        const topLayerFrame = this.getTopLayerFrameAtSceneCoords(pointerCoords);\n        this.setState({\n          frameToHighlight: topLayerFrame && !selectedElementsHasAFrame ? topLayerFrame : null\n        }); // Marking that click was used for dragging to check\n        // if elements should be deselected on pointerup\n\n        pointerDownState.drag.hasOccurred = true;\n        this.setState({\n          selectedElementsAreBeingDragged: true\n        }); // prevent dragging even if we\'re no longer holding cmd/ctrl otherwise\n        // it would have weird results (stuff jumping all over the screen)\n        // Checking for editingElement to avoid jump while editing on mobile #6503\n\n        if (selectedElements.length > 0 && !pointerDownState.withCmdOrCtrl && !this.state.editingElement && ((_b = this.state.activeEmbeddable) === null || _b === void 0 ? void 0 : _b.state) !== "active") {\n          const dragOffset = {\n            x: pointerCoords.x - pointerDownState.origin.x,\n            y: pointerCoords.y - pointerDownState.origin.y\n          };\n          const originalElements = [...pointerDownState.originalElements.values()]; // We only drag in one direction if shift is pressed\n\n          const lockDirection = event.shiftKey;\n\n          if (lockDirection) {\n            const distanceX = Math.abs(dragOffset.x);\n            const distanceY = Math.abs(dragOffset.y);\n            const lockX = lockDirection && distanceX < distanceY;\n            const lockY = lockDirection && distanceX > distanceY;\n\n            if (lockX) {\n              dragOffset.x = 0;\n            }\n\n            if (lockY) {\n              dragOffset.y = 0;\n            }\n          } // Snap cache *must* be synchronously popuplated before initial drag,\n          // otherwise the first drag even will not snap, causing a jump before\n          // it snaps to its position if previously snapped already.\n\n\n          this.maybeCacheVisibleGaps(event, selectedElements);\n          this.maybeCacheReferenceSnapPoints(event, selectedElements);\n          const {\n            snapOffset,\n            snapLines\n          } = (0,_snapping__WEBPACK_IMPORTED_MODULE_58__.snapDraggedElements)((0,_scene__WEBPACK_IMPORTED_MODULE_29__.getSelectedElements)(originalElements, this.state), dragOffset, this.state, event);\n          this.setState({\n            snapLines\n          }); // when we\'re editing the name of a frame, we want the user to be\n          // able to select and interact with the text input\n\n          !this.state.editingFrame && (0,_element__WEBPACK_IMPORTED_MODULE_16__.dragSelectedElements)(pointerDownState, selectedElements, dragOffset, this.state, this.scene, snapOffset, event[_keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.CTRL_OR_CMD] ? null : this.state.gridSize);\n          this.maybeSuggestBindingForAll(selectedElements); // We duplicate the selected element if alt is pressed on pointer move\n\n          if (event.altKey && !pointerDownState.hit.hasBeenDuplicated) {\n            // Move the currently selected elements to the top of the z index stack, and\n            // put the duplicates where the selected elements used to be.\n            // (the origin point where the dragging started)\n            pointerDownState.hit.hasBeenDuplicated = true;\n            const nextElements = [];\n            const elementsToAppend = [];\n            const groupIdMap = new Map();\n            const oldIdToDuplicatedId = new Map();\n            const hitElement = pointerDownState.hit.element;\n            const selectedElementIds = new Set(this.scene.getSelectedElements({\n              selectedElementIds: this.state.selectedElementIds,\n              includeBoundTextElement: true,\n              includeElementsInFrames: true\n            }).map(element => element.id));\n            const elements = this.scene.getElementsIncludingDeleted();\n\n            for (const element of elements) {\n              if (selectedElementIds.has(element.id) || // case: the state.selectedElementIds might not have been\n              // updated yet by the time this mousemove event is fired\n              element.id === (hitElement === null || hitElement === void 0 ? void 0 : hitElement.id) && pointerDownState.hit.wasAddedToSelection) {\n                const duplicatedElement = (0,_element__WEBPACK_IMPORTED_MODULE_16__.duplicateElement)(this.state.editingGroupId, groupIdMap, element);\n                const origElement = pointerDownState.originalElements.get(element.id);\n                (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(duplicatedElement, {\n                  x: origElement.x,\n                  y: origElement.y\n                }); // put duplicated element to pointerDownState.originalElements\n                // so that we can snap to the duplicated element without releasing\n\n                pointerDownState.originalElements.set(duplicatedElement.id, duplicatedElement);\n                nextElements.push(duplicatedElement);\n                elementsToAppend.push(element);\n                oldIdToDuplicatedId.set(element.id, duplicatedElement.id);\n              } else {\n                nextElements.push(element);\n              }\n            }\n\n            const nextSceneElements = [...nextElements, ...elementsToAppend];\n            (0,_element_textElement__WEBPACK_IMPORTED_MODULE_43__.bindTextToShapeAfterDuplication)(nextElements, elementsToAppend, oldIdToDuplicatedId);\n            (0,_element_binding__WEBPACK_IMPORTED_MODULE_17__.fixBindingsAfterDuplication)(nextSceneElements, elementsToAppend, oldIdToDuplicatedId, "duplicatesServeAsOld");\n            (0,_frame__WEBPACK_IMPORTED_MODULE_50__.bindElementsToFramesAfterDuplication)(nextSceneElements, elementsToAppend, oldIdToDuplicatedId);\n            this.scene.replaceAllElements(nextSceneElements);\n            this.maybeCacheVisibleGaps(event, selectedElements, true);\n            this.maybeCacheReferenceSnapPoints(event, selectedElements, true);\n          }\n\n          return;\n        }\n      } // It is very important to read this.state within each move event,\n      // otherwise we would read a stale one!\n\n\n      const draggingElement = this.state.draggingElement;\n\n      if (!draggingElement) {\n        return;\n      }\n\n      if (draggingElement.type === "freedraw") {\n        const points = draggingElement.points;\n        const dx = pointerCoords.x - draggingElement.x;\n        const dy = pointerCoords.y - draggingElement.y;\n        const lastPoint = points.length > 0 && points[points.length - 1];\n        const discardPoint = lastPoint && lastPoint[0] === dx && lastPoint[1] === dy;\n\n        if (!discardPoint) {\n          const pressures = draggingElement.simulatePressure ? draggingElement.pressures : [...draggingElement.pressures, event.pressure];\n          (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(draggingElement, {\n            points: [...points, [dx, dy]],\n            pressures\n          });\n        }\n      } else if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isLinearElement)(draggingElement)) {\n        pointerDownState.drag.hasOccurred = true;\n        this.setState({\n          selectedElementsAreBeingDragged: true\n        });\n        const points = draggingElement.points;\n        let dx = gridX - draggingElement.x;\n        let dy = gridY - draggingElement.y;\n\n        if ((0,_keys__WEBPACK_IMPORTED_MODULE_26__.shouldRotateWithDiscreteAngle)(event) && points.length === 2) {\n          ({\n            width: dx,\n            height: dy\n          } = (0,_element__WEBPACK_IMPORTED_MODULE_16__.getLockedLinearCursorAlignSize)(draggingElement.x, draggingElement.y, pointerCoords.x, pointerCoords.y));\n        }\n\n        if (points.length === 1) {\n          (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(draggingElement, {\n            points: [...points, [dx, dy]]\n          });\n        } else if (points.length === 2) {\n          (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(draggingElement, {\n            points: [...points.slice(0, -1), [dx, dy]]\n          });\n        }\n\n        if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isBindingElement)(draggingElement, false)) {\n          // When creating a linear element by dragging\n          this.maybeSuggestBindingsForLinearElementAtCoords(draggingElement, [pointerCoords], this.state.startBoundElement);\n        }\n      } else {\n        pointerDownState.lastCoords.x = pointerCoords.x;\n        pointerDownState.lastCoords.y = pointerCoords.y;\n        this.maybeDragNewGenericElement(pointerDownState, event);\n      }\n\n      if (this.state.activeTool.type === "selection") {\n        pointerDownState.boxSelection.hasOccurred = true;\n        const elements = this.scene.getNonDeletedElements(); // box-select line editor points\n\n        if (this.state.editingLinearElement) {\n          _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_18__.LinearElementEditor.handleBoxSelection(event, this.state, this.setState.bind(this)); // regular box-select\n        } else {\n          let shouldReuseSelection = true;\n\n          if (!event.shiftKey && (0,_scene__WEBPACK_IMPORTED_MODULE_29__.isSomeElementSelected)(elements, this.state)) {\n            if (pointerDownState.withCmdOrCtrl && pointerDownState.hit.element) {\n              this.setState(prevState => (0,_groups__WEBPACK_IMPORTED_MODULE_23__.selectGroupsForSelectedElements)(Object.assign(Object.assign({}, prevState), {\n                selectedElementIds: {\n                  [pointerDownState.hit.element.id]: true\n                }\n              }), this.scene.getNonDeletedElements(), prevState, this));\n            } else {\n              shouldReuseSelection = false;\n            }\n          }\n\n          const elementsWithinSelection = (0,_scene__WEBPACK_IMPORTED_MODULE_29__.getElementsWithinSelection)(elements, draggingElement);\n          this.setState(prevState => {\n            const nextSelectedElementIds = Object.assign(Object.assign({}, shouldReuseSelection && prevState.selectedElementIds), elementsWithinSelection.reduce((acc, element) => {\n              acc[element.id] = true;\n              return acc;\n            }, {}));\n\n            if (pointerDownState.hit.element) {\n              // if using ctrl/cmd, select the hitElement only if we\n              // haven\'t box-selected anything else\n              if (!elementsWithinSelection.length) {\n                nextSelectedElementIds[pointerDownState.hit.element.id] = true;\n              } else {\n                delete nextSelectedElementIds[pointerDownState.hit.element.id];\n              }\n            }\n\n            prevState = !shouldReuseSelection ? Object.assign(Object.assign({}, prevState), {\n              selectedGroupIds: {},\n              editingGroupId: null\n            }) : prevState;\n            return Object.assign(Object.assign({}, (0,_groups__WEBPACK_IMPORTED_MODULE_23__.selectGroupsForSelectedElements)({\n              editingGroupId: prevState.editingGroupId,\n              selectedElementIds: nextSelectedElementIds\n            }, this.scene.getNonDeletedElements(), prevState, this)), {\n              // select linear element only when we haven\'t box-selected anything else\n              selectedLinearElement: elementsWithinSelection.length === 1 && (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isLinearElement)(elementsWithinSelection[0]) ? new _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_18__.LinearElementEditor(elementsWithinSelection[0], this.scene) : null,\n              showHyperlinkPopup: elementsWithinSelection.length === 1 && (elementsWithinSelection[0].link || (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isEmbeddableElement)(elementsWithinSelection[0])) ? "info" : false\n            });\n          });\n        }\n      }\n    });\n  } // Returns whether the pointer move happened over either scrollbar\n\n\n  handlePointerMoveOverScrollbars(event, pointerDownState) {\n    if (pointerDownState.scrollbars.isOverHorizontal) {\n      const x = event.clientX;\n      const dx = x - pointerDownState.lastCoords.x;\n      this.translateCanvas({\n        scrollX: this.state.scrollX - dx / this.state.zoom.value\n      });\n      pointerDownState.lastCoords.x = x;\n      return true;\n    }\n\n    if (pointerDownState.scrollbars.isOverVertical) {\n      const y = event.clientY;\n      const dy = y - pointerDownState.lastCoords.y;\n      this.translateCanvas({\n        scrollY: this.state.scrollY - dy / this.state.zoom.value\n      });\n      pointerDownState.lastCoords.y = y;\n      return true;\n    }\n\n    return false;\n  }\n\n  onPointerUpFromPointerDownHandler(pointerDownState) {\n    return (0,_utils__WEBPACK_IMPORTED_MODULE_33__.withBatchedUpdates)(childEvent => {\n      var _a, _b, _c, _d, _e, _f;\n\n      if (pointerDownState.eventListeners.onMove) {\n        pointerDownState.eventListeners.onMove.flush();\n      }\n\n      const {\n        draggingElement,\n        resizingElement,\n        multiElement,\n        activeTool,\n        isResizing,\n        isRotating\n      } = this.state;\n      this.setState({\n        isResizing: false,\n        isRotating: false,\n        resizingElement: null,\n        selectionElement: null,\n        frameToHighlight: null,\n        elementsToHighlight: null,\n        cursorButton: "up",\n        // text elements are reset on finalize, and resetting on pointerup\n        // may cause issues with double taps\n        editingElement: multiElement || (0,_element__WEBPACK_IMPORTED_MODULE_16__.isTextElement)(this.state.editingElement) ? this.state.editingElement : null,\n        snapLines: [],\n        originSnapOffset: null\n      });\n      _snapping__WEBPACK_IMPORTED_MODULE_58__.SnapCache.setReferenceSnapPoints(null);\n      _snapping__WEBPACK_IMPORTED_MODULE_58__.SnapCache.setVisibleGaps(null);\n      this.savePointer(childEvent.clientX, childEvent.clientY, "up");\n      this.setState({\n        selectedElementsAreBeingDragged: false\n      }); // Handle end of dragging a point of a linear element, might close a loop\n      // and sets binding element\n\n      if (this.state.editingLinearElement) {\n        if (!pointerDownState.boxSelection.hasOccurred && ((_b = (_a = pointerDownState.hit) === null || _a === void 0 ? void 0 : _a.element) === null || _b === void 0 ? void 0 : _b.id) !== this.state.editingLinearElement.elementId) {\n          this.actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_5__.actionFinalize);\n        } else {\n          const editingLinearElement = _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_18__.LinearElementEditor.handlePointerUp(childEvent, this.state.editingLinearElement, this.state);\n\n          if (editingLinearElement !== this.state.editingLinearElement) {\n            this.setState({\n              editingLinearElement,\n              suggestedBindings: []\n            });\n          }\n        }\n      } else if (this.state.selectedLinearElement) {\n        if (((_d = (_c = pointerDownState.hit) === null || _c === void 0 ? void 0 : _c.element) === null || _d === void 0 ? void 0 : _d.id) !== this.state.selectedLinearElement.elementId) {\n          const selectedELements = this.scene.getSelectedElements(this.state); // set selectedLinearElement to null if there is more than one element selected since we don\'t want to show linear element handles\n\n          if (selectedELements.length > 1) {\n            this.setState({\n              selectedLinearElement: null\n            });\n          }\n        } else {\n          const linearElementEditor = _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_18__.LinearElementEditor.handlePointerUp(childEvent, this.state.selectedLinearElement, this.state);\n          const {\n            startBindingElement,\n            endBindingElement\n          } = linearElementEditor;\n          const element = this.scene.getElement(linearElementEditor.elementId);\n\n          if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isBindingElement)(element)) {\n            (0,_element_binding__WEBPACK_IMPORTED_MODULE_17__.bindOrUnbindLinearElement)(element, startBindingElement, endBindingElement);\n          }\n\n          if (linearElementEditor !== this.state.selectedLinearElement) {\n            this.setState({\n              selectedLinearElement: Object.assign(Object.assign({}, linearElementEditor), {\n                selectedPointsIndices: null\n              }),\n              suggestedBindings: []\n            });\n          }\n        }\n      }\n\n      lastPointerUp = null;\n      window.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.POINTER_MOVE, pointerDownState.eventListeners.onMove);\n      window.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.POINTER_UP, pointerDownState.eventListeners.onUp);\n      window.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.KEYDOWN, pointerDownState.eventListeners.onKeyDown);\n      window.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.KEYUP, pointerDownState.eventListeners.onKeyUp);\n\n      if (this.state.pendingImageElementId) {\n        this.setState({\n          pendingImageElementId: null\n        });\n      }\n\n      this.onPointerUpEmitter.trigger(this.state.activeTool, pointerDownState, childEvent);\n\n      if ((draggingElement === null || draggingElement === void 0 ? void 0 : draggingElement.type) === "freedraw") {\n        const pointerCoords = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.viewportCoordsToSceneCoords)(childEvent, this.state);\n        const points = draggingElement.points;\n        let dx = pointerCoords.x - draggingElement.x;\n        let dy = pointerCoords.y - draggingElement.y; // Allows dots to avoid being flagged as infinitely small\n\n        if (dx === points[0][0] && dy === points[0][1]) {\n          dy += 0.0001;\n          dx += 0.0001;\n        }\n\n        const pressures = draggingElement.simulatePressure ? [] : [...draggingElement.pressures, childEvent.pressure];\n        (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(draggingElement, {\n          points: [...points, [dx, dy]],\n          pressures,\n          lastCommittedPoint: [dx, dy]\n        });\n        this.actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_5__.actionFinalize);\n        return;\n      }\n\n      if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isImageElement)(draggingElement)) {\n        const imageElement = draggingElement;\n\n        try {\n          this.initializeImageDimensions(imageElement);\n          this.setState({\n            selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)({\n              [imageElement.id]: true\n            }, this.state)\n          }, () => {\n            this.actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_5__.actionFinalize);\n          });\n        } catch (error) {\n          console.error(error);\n          this.scene.replaceAllElements(this.scene.getElementsIncludingDeleted().filter(el => el.id !== imageElement.id));\n          this.actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_5__.actionFinalize);\n        }\n\n        return;\n      }\n\n      if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isLinearElement)(draggingElement)) {\n        if (draggingElement.points.length > 1) {\n          this.history.resumeRecording();\n        }\n\n        const pointerCoords = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.viewportCoordsToSceneCoords)(childEvent, this.state);\n\n        if (!pointerDownState.drag.hasOccurred && draggingElement && !multiElement) {\n          (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(draggingElement, {\n            points: [...draggingElement.points, [pointerCoords.x - draggingElement.x, pointerCoords.y - draggingElement.y]]\n          });\n          this.setState({\n            multiElement: draggingElement,\n            editingElement: this.state.draggingElement\n          });\n        } else if (pointerDownState.drag.hasOccurred && !multiElement) {\n          if ((0,_element_binding__WEBPACK_IMPORTED_MODULE_17__.isBindingEnabled)(this.state) && (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isBindingElement)(draggingElement, false)) {\n            (0,_element_binding__WEBPACK_IMPORTED_MODULE_17__.maybeBindLinearElement)(draggingElement, this.state, this.scene, pointerCoords);\n          }\n\n          this.setState({\n            suggestedBindings: [],\n            startBoundElement: null\n          });\n\n          if (!activeTool.locked) {\n            (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.resetCursor)(this.interactiveCanvas);\n            this.setState(prevState => ({\n              draggingElement: null,\n              activeTool: (0,_utils__WEBPACK_IMPORTED_MODULE_33__.updateActiveTool)(this.state, {\n                type: "selection"\n              }),\n              selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)(Object.assign(Object.assign({}, prevState.selectedElementIds), {\n                [draggingElement.id]: true\n              }), prevState),\n              selectedLinearElement: new _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_18__.LinearElementEditor(draggingElement, this.scene)\n            }));\n          } else {\n            this.setState(prevState => ({\n              draggingElement: null\n            }));\n          }\n        }\n\n        return;\n      }\n\n      if (activeTool.type !== "selection" && draggingElement && (0,_element__WEBPACK_IMPORTED_MODULE_16__.isInvisiblySmallElement)(draggingElement)) {\n        // remove invisible element which was added in onPointerDown\n        this.scene.replaceAllElements(this.scene.getElementsIncludingDeleted().filter(el => el.id !== draggingElement.id));\n        this.setState({\n          draggingElement: null\n        });\n        return;\n      }\n\n      if (draggingElement) {\n        if (pointerDownState.drag.hasOccurred) {\n          const sceneCoords = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.viewportCoordsToSceneCoords)(childEvent, this.state); // when editing the points of a linear element, we check if the\n          // linear element still is in the frame afterwards\n          // if not, the linear element will be removed from its frame (if any)\n\n          if (this.state.selectedLinearElement && this.state.selectedLinearElement.isDragging) {\n            const linearElement = this.scene.getElement(this.state.selectedLinearElement.elementId);\n\n            if (linearElement === null || linearElement === void 0 ? void 0 : linearElement.frameId) {\n              const frame = (0,_frame__WEBPACK_IMPORTED_MODULE_50__.getContainingFrame)(linearElement);\n\n              if (frame && linearElement) {\n                if (!(0,_frame__WEBPACK_IMPORTED_MODULE_50__.elementOverlapsWithFrame)(linearElement, frame)) {\n                  // remove the linear element from all groups\n                  // before removing it from the frame as well\n                  (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(linearElement, {\n                    groupIds: []\n                  });\n                  this.scene.replaceAllElements((0,_frame__WEBPACK_IMPORTED_MODULE_50__.removeElementsFromFrame)(this.scene.getElementsIncludingDeleted(), [linearElement], this.state));\n                }\n              }\n            }\n          } else {\n            // update the relationships between selected elements and frames\n            const topLayerFrame = this.getTopLayerFrameAtSceneCoords(sceneCoords);\n            const selectedElements = this.scene.getSelectedElements(this.state);\n            let nextElements = this.scene.getElementsIncludingDeleted();\n\n            const updateGroupIdsAfterEditingGroup = elements => {\n              if (elements.length > 0) {\n                for (const element of elements) {\n                  const index = element.groupIds.indexOf(this.state.editingGroupId);\n                  (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(element, {\n                    groupIds: element.groupIds.slice(0, index)\n                  }, false);\n                }\n\n                nextElements.forEach(element => {\n                  if (element.groupIds.length && (0,_groups__WEBPACK_IMPORTED_MODULE_23__.getElementsInGroup)(nextElements, element.groupIds[element.groupIds.length - 1]).length < 2) {\n                    (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(element, {\n                      groupIds: []\n                    }, false);\n                  }\n                });\n                this.setState({\n                  editingGroupId: null\n                });\n              }\n            };\n\n            if (topLayerFrame && !this.state.selectedElementIds[topLayerFrame.id]) {\n              const elementsToAdd = selectedElements.filter(element => element.frameId !== topLayerFrame.id && (0,_frame__WEBPACK_IMPORTED_MODULE_50__.isElementInFrame)(element, nextElements, this.state));\n\n              if (this.state.editingGroupId) {\n                updateGroupIdsAfterEditingGroup(elementsToAdd);\n              }\n\n              nextElements = (0,_frame__WEBPACK_IMPORTED_MODULE_50__.addElementsToFrame)(nextElements, elementsToAdd, topLayerFrame);\n            } else if (!topLayerFrame) {\n              if (this.state.editingGroupId) {\n                const elementsToRemove = selectedElements.filter(element => element.frameId && !(0,_frame__WEBPACK_IMPORTED_MODULE_50__.isElementInFrame)(element, nextElements, this.state));\n                updateGroupIdsAfterEditingGroup(elementsToRemove);\n              }\n            }\n\n            nextElements = (0,_frame__WEBPACK_IMPORTED_MODULE_50__.updateFrameMembershipOfSelectedElements)(nextElements, this.state, this);\n            this.scene.replaceAllElements(nextElements);\n          }\n        }\n\n        if (draggingElement.type === "frame") {\n          const elementsInsideFrame = (0,_frame__WEBPACK_IMPORTED_MODULE_50__.getElementsInNewFrame)(this.scene.getElementsIncludingDeleted(), draggingElement);\n          this.scene.replaceAllElements((0,_frame__WEBPACK_IMPORTED_MODULE_50__.addElementsToFrame)(this.scene.getElementsIncludingDeleted(), elementsInsideFrame, draggingElement));\n        }\n\n        (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(draggingElement, (0,_element__WEBPACK_IMPORTED_MODULE_16__.getNormalizedDimensions)(draggingElement));\n      }\n\n      if (resizingElement) {\n        this.history.resumeRecording();\n      }\n\n      if (resizingElement && (0,_element__WEBPACK_IMPORTED_MODULE_16__.isInvisiblySmallElement)(resizingElement)) {\n        this.scene.replaceAllElements(this.scene.getElementsIncludingDeleted().filter(el => el.id !== resizingElement.id));\n      } // handle frame membership for resizing frames and/or selected elements\n\n\n      if (pointerDownState.resize.isResizing) {\n        let nextElements = (0,_frame__WEBPACK_IMPORTED_MODULE_50__.updateFrameMembershipOfSelectedElements)(this.scene.getElementsIncludingDeleted(), this.state, this);\n        const selectedFrames = this.scene.getSelectedElements(this.state).filter(element => element.type === "frame");\n\n        for (const frame of selectedFrames) {\n          nextElements = (0,_frame__WEBPACK_IMPORTED_MODULE_50__.replaceAllElementsInFrame)(nextElements, (0,_frame__WEBPACK_IMPORTED_MODULE_50__.getElementsInResizingFrame)(this.scene.getElementsIncludingDeleted(), frame, this.state), frame, this.state);\n        }\n\n        this.scene.replaceAllElements(nextElements);\n      } // Code below handles selection when element(s) weren\'t\n      // drag or added to selection on pointer down phase.\n\n\n      const hitElement = pointerDownState.hit.element;\n\n      if (((_e = this.state.selectedLinearElement) === null || _e === void 0 ? void 0 : _e.elementId) !== (hitElement === null || hitElement === void 0 ? void 0 : hitElement.id) && (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isLinearElement)(hitElement)) {\n        const selectedELements = this.scene.getSelectedElements(this.state); // set selectedLinearElement when no other element selected except\n        // the one we\'ve hit\n\n        if (selectedELements.length === 1) {\n          this.setState({\n            selectedLinearElement: new _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_18__.LinearElementEditor(hitElement, this.scene)\n          });\n        }\n      }\n\n      if ((0,_appState__WEBPACK_IMPORTED_MODULE_10__.isEraserActive)(this.state)) {\n        const draggedDistance = (0,_math__WEBPACK_IMPORTED_MODULE_28__.distance2d)(this.lastPointerDownEvent.clientX, this.lastPointerDownEvent.clientY, this.lastPointerUpEvent.clientX, this.lastPointerUpEvent.clientY);\n\n        if (draggedDistance === 0) {\n          const scenePointer = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.viewportCoordsToSceneCoords)({\n            clientX: this.lastPointerUpEvent.clientX,\n            clientY: this.lastPointerUpEvent.clientY\n          }, this.state);\n          const hitElements = this.getElementsAtPosition(scenePointer.x, scenePointer.y);\n          hitElements.forEach(hitElement => pointerDownState.elementIdsToErase[hitElement.id] = {\n            erase: true,\n            opacity: hitElement.opacity\n          });\n        }\n\n        this.eraseElements(pointerDownState);\n        return;\n      } else if (Object.keys(pointerDownState.elementIdsToErase).length) {\n        this.restoreReadyToEraseElements(pointerDownState);\n      }\n\n      if (hitElement && !pointerDownState.drag.hasOccurred && !pointerDownState.hit.wasAddedToSelection && ( // if we\'re editing a line, pointerup shouldn\'t switch selection if\n      // box selected\n      !this.state.editingLinearElement || !pointerDownState.boxSelection.hasOccurred)) {\n        // when inside line editor, shift selects points instead\n        if (childEvent.shiftKey && !this.state.editingLinearElement) {\n          if (this.state.selectedElementIds[hitElement.id]) {\n            if ((0,_groups__WEBPACK_IMPORTED_MODULE_23__.isSelectedViaGroup)(this.state, hitElement)) {\n              this.setState(_prevState => {\n                const nextSelectedElementIds = Object.assign({}, _prevState.selectedElementIds); // We want to unselect all groups hitElement is part of\n                // as well as all elements that are part of the groups\n                // hitElement is part of\n\n                for (const groupedElement of hitElement.groupIds.flatMap(groupId => (0,_groups__WEBPACK_IMPORTED_MODULE_23__.getElementsInGroup)(this.scene.getNonDeletedElements(), groupId))) {\n                  delete nextSelectedElementIds[groupedElement.id];\n                }\n\n                return {\n                  selectedGroupIds: Object.assign(Object.assign({}, _prevState.selectedElementIds), hitElement.groupIds.map(gId => ({\n                    [gId]: false\n                  })).reduce((prev, acc) => Object.assign(Object.assign({}, prev), acc), {})),\n                  selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)(nextSelectedElementIds, _prevState)\n                };\n              }); // if not gragging a linear element point (outside editor)\n            } else if (!((_f = this.state.selectedLinearElement) === null || _f === void 0 ? void 0 : _f.isDragging)) {\n              // remove element from selection while\n              // keeping prev elements selected\n              this.setState(prevState => {\n                const newSelectedElementIds = Object.assign({}, prevState.selectedElementIds);\n                delete newSelectedElementIds[hitElement.id];\n                const newSelectedElements = (0,_scene__WEBPACK_IMPORTED_MODULE_29__.getSelectedElements)(this.scene.getNonDeletedElements(), {\n                  selectedElementIds: newSelectedElementIds\n                });\n                return Object.assign(Object.assign({}, (0,_groups__WEBPACK_IMPORTED_MODULE_23__.selectGroupsForSelectedElements)({\n                  editingGroupId: prevState.editingGroupId,\n                  selectedElementIds: newSelectedElementIds\n                }, this.scene.getNonDeletedElements(), prevState, this)), {\n                  // set selectedLinearElement only if thats the only element selected\n                  selectedLinearElement: newSelectedElements.length === 1 && (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isLinearElement)(newSelectedElements[0]) ? new _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_18__.LinearElementEditor(newSelectedElements[0], this.scene) : prevState.selectedLinearElement\n                });\n              });\n            }\n          } else if (hitElement.frameId && this.state.selectedElementIds[hitElement.frameId]) {\n            // when hitElement is part of a selected frame, deselect the frame\n            // to avoid frame and containing elements selected simultaneously\n            this.setState(prevState => {\n              var _a, _b;\n\n              const nextSelectedElementIds = Object.assign(Object.assign({}, prevState.selectedElementIds), {\n                [hitElement.id]: true\n              }); // deselect the frame\n\n              delete nextSelectedElementIds[hitElement.frameId]; // deselect groups containing the frame\n\n              ((_b = (_a = this.scene.getElement(hitElement.frameId)) === null || _a === void 0 ? void 0 : _a.groupIds) !== null && _b !== void 0 ? _b : []).flatMap(gid => (0,_groups__WEBPACK_IMPORTED_MODULE_23__.getElementsInGroup)(this.scene.getNonDeletedElements(), gid)).forEach(element => {\n                delete nextSelectedElementIds[element.id];\n              });\n              return Object.assign(Object.assign({}, (0,_groups__WEBPACK_IMPORTED_MODULE_23__.selectGroupsForSelectedElements)({\n                editingGroupId: prevState.editingGroupId,\n                selectedElementIds: nextSelectedElementIds\n              }, this.scene.getNonDeletedElements(), prevState, this)), {\n                showHyperlinkPopup: hitElement.link || (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isEmbeddableElement)(hitElement) ? "info" : false\n              });\n            });\n          } else {\n            // add element to selection while keeping prev elements selected\n            this.setState(_prevState => ({\n              selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)(Object.assign(Object.assign({}, _prevState.selectedElementIds), {\n                [hitElement.id]: true\n              }), _prevState)\n            }));\n          }\n        } else {\n          this.setState(prevState => {\n            var _a;\n\n            return Object.assign(Object.assign({}, (0,_groups__WEBPACK_IMPORTED_MODULE_23__.selectGroupsForSelectedElements)({\n              editingGroupId: prevState.editingGroupId,\n              selectedElementIds: {\n                [hitElement.id]: true\n              }\n            }, this.scene.getNonDeletedElements(), prevState, this)), {\n              selectedLinearElement: (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isLinearElement)(hitElement) && // Don\'t set `selectedLinearElement` if its same as the hitElement, this is mainly to prevent resetting the `hoverPointIndex` to -1.\n              // Future we should update the API to take care of setting the correct `hoverPointIndex` when initialized\n              ((_a = prevState.selectedLinearElement) === null || _a === void 0 ? void 0 : _a.elementId) !== hitElement.id ? new _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_18__.LinearElementEditor(hitElement, this.scene) : prevState.selectedLinearElement\n            });\n          });\n        }\n      }\n\n      if (!pointerDownState.drag.hasOccurred && !this.state.isResizing && (hitElement && (0,_element__WEBPACK_IMPORTED_MODULE_16__.isHittingElementBoundingBoxWithoutHittingElement)(hitElement, this.state, this.frameNameBoundsCache, pointerDownState.origin.x, pointerDownState.origin.y) || !hitElement && pointerDownState.hit.hasHitCommonBoundingBoxOfSelectedElements)) {\n        if (this.state.editingLinearElement) {\n          this.setState({\n            editingLinearElement: null\n          });\n        } else {\n          // Deselect selected elements\n          this.setState({\n            selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)({}, this.state),\n            selectedGroupIds: {},\n            editingGroupId: null,\n            activeEmbeddable: null\n          });\n        }\n\n        return;\n      }\n\n      if (!activeTool.locked && activeTool.type !== "freedraw" && draggingElement && draggingElement.type !== "selection") {\n        this.setState(prevState => ({\n          selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)(Object.assign(Object.assign({}, prevState.selectedElementIds), {\n            [draggingElement.id]: true\n          }), prevState),\n          showHyperlinkPopup: (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isEmbeddableElement)(draggingElement) && !draggingElement.link ? "editor" : prevState.showHyperlinkPopup\n        }));\n      }\n\n      if (activeTool.type !== "selection" || (0,_scene__WEBPACK_IMPORTED_MODULE_29__.isSomeElementSelected)(this.scene.getNonDeletedElements(), this.state)) {\n        this.history.resumeRecording();\n      }\n\n      if (pointerDownState.drag.hasOccurred || isResizing || isRotating) {\n        ((0,_element_binding__WEBPACK_IMPORTED_MODULE_17__.isBindingEnabled)(this.state) ? _element_binding__WEBPACK_IMPORTED_MODULE_17__.bindOrUnbindSelectedElements : _element_binding__WEBPACK_IMPORTED_MODULE_17__.unbindLinearElements)(this.scene.getSelectedElements(this.state));\n      }\n\n      if (activeTool.type === "laser") {\n        this.laserPathManager.endPath();\n        return;\n      }\n\n      if (!activeTool.locked && activeTool.type !== "freedraw") {\n        (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.resetCursor)(this.interactiveCanvas);\n        this.setState({\n          draggingElement: null,\n          suggestedBindings: [],\n          activeTool: (0,_utils__WEBPACK_IMPORTED_MODULE_33__.updateActiveTool)(this.state, {\n            type: "selection"\n          })\n        });\n      } else {\n        this.setState({\n          draggingElement: null,\n          suggestedBindings: []\n        });\n      }\n\n      if (hitElement && this.lastPointerUpEvent && this.lastPointerDownEvent && this.lastPointerUpEvent.timeStamp - this.lastPointerDownEvent.timeStamp < 300 && gesture.pointers.size <= 1 && (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isEmbeddableElement)(hitElement) && this.isEmbeddableCenter(hitElement, this.lastPointerUpEvent, pointerDownState.origin.x, pointerDownState.origin.y)) {\n        this.handleEmbeddableCenterClick(hitElement);\n      }\n    });\n  }\n\n  maybeSuggestBindingForAll(selectedElements) {\n    if (selectedElements.length > 50) {\n      return;\n    }\n\n    const suggestedBindings = (0,_element_binding__WEBPACK_IMPORTED_MODULE_17__.getEligibleElementsForBinding)(selectedElements);\n    this.setState({\n      suggestedBindings\n    });\n  }\n\n  clearSelection(hitElement) {\n    this.setState(prevState => ({\n      selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)({}, prevState),\n      activeEmbeddable: null,\n      selectedGroupIds: {},\n      // Continue editing the same group if the user selected a different\n      // element from it\n      editingGroupId: prevState.editingGroupId && hitElement != null && (0,_groups__WEBPACK_IMPORTED_MODULE_23__.isElementInGroup)(hitElement, prevState.editingGroupId) ? prevState.editingGroupId : null\n    }));\n    this.setState({\n      selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)({}, this.state),\n      activeEmbeddable: null,\n      previousSelectedElementIds: this.state.selectedElementIds\n    });\n  }\n\n  getTextWysiwygSnappedToCenterPosition(x, y, appState, container) {\n    if (container) {\n      let elementCenterX = container.x + container.width / 2;\n      let elementCenterY = container.y + container.height / 2;\n      const elementCenter = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_43__.getContainerCenter)(container, appState);\n\n      if (elementCenter) {\n        elementCenterX = elementCenter.x;\n        elementCenterY = elementCenter.y;\n      }\n\n      const distanceToCenter = Math.hypot(x - elementCenterX, y - elementCenterY);\n      const isSnappedToCenter = distanceToCenter < _constants__WEBPACK_IMPORTED_MODULE_12__.TEXT_TO_CENTER_SNAP_THRESHOLD;\n\n      if (isSnappedToCenter) {\n        const {\n          x: viewportX,\n          y: viewportY\n        } = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.sceneCoordsToViewportCoords)({\n          sceneX: elementCenterX,\n          sceneY: elementCenterY\n        }, appState);\n        return {\n          viewportX,\n          viewportY,\n          elementCenterX,\n          elementCenterY\n        };\n      }\n    }\n  }\n\n  getCanvasOffsets() {\n    var _a;\n\n    if ((_a = this.excalidrawContainerRef) === null || _a === void 0 ? void 0 : _a.current) {\n      const excalidrawContainer = this.excalidrawContainerRef.current;\n      const {\n        left,\n        top\n      } = excalidrawContainer.getBoundingClientRect();\n      return {\n        offsetLeft: left,\n        offsetTop: top\n      };\n    }\n\n    return {\n      offsetLeft: 0,\n      offsetTop: 0\n    };\n  }\n\n  updateLanguage() {\n    return __awaiter(this, void 0, void 0, function* () {\n      const currentLang = _i18n__WEBPACK_IMPORTED_MODULE_25__.languages.find(lang => lang.code === this.props.langCode) || _i18n__WEBPACK_IMPORTED_MODULE_25__.defaultLang;\n      yield (0,_i18n__WEBPACK_IMPORTED_MODULE_25__.setLanguage)(currentLang);\n      this.setAppState({});\n    });\n  }\n\n}\n\nApp.defaultProps = {\n  // needed for tests to pass since we directly render App in many tests\n  UIOptions: _constants__WEBPACK_IMPORTED_MODULE_12__.DEFAULT_UI_OPTIONS\n};\n\nif ("development" === _constants__WEBPACK_IMPORTED_MODULE_12__.ENV.TEST || "development" !== "production") {\n  window.h = window.h || {};\n  Object.defineProperties(window.h, {\n    elements: {\n      configurable: true,\n\n      get() {\n        var _a;\n\n        return (_a = this.app) === null || _a === void 0 ? void 0 : _a.scene.getElementsIncludingDeleted();\n      },\n\n      set(elements) {\n        var _a;\n\n        return (_a = this.app) === null || _a === void 0 ? void 0 : _a.scene.replaceAllElements(elements);\n      }\n\n    }\n  });\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (App);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 413052 characters]\n//# sourceURL=webpack-internal:///../../components/App.tsx\n');
              }
            ),
            /***/
            "../../components/Avatar.tsx": (
              /*!***********************************!*\
                !*** ../../components/Avatar.tsx ***!
                \***********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "Avatar": () => (/* binding */ Avatar)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Avatar_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Avatar.scss */ "../../components/Avatar.scss");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _clients__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../clients */ "../../clients.ts");\n\n\n\n\nconst Avatar = ({\n  color,\n  onClick,\n  name,\n  src\n}) => {\n  const shortName = (0,_clients__WEBPACK_IMPORTED_MODULE_3__.getNameInitial)(name);\n  const [error, setError] = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(false);\n  const loadImg = !error && src;\n  const style = loadImg ? undefined : {\n    background: color\n  };\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: "Avatar",\n    style: style,\n    onClick: onClick\n  }, {\n    children: loadImg ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("img", {\n      className: "Avatar-img",\n      src: src,\n      alt: shortName,\n      referrerPolicy: "no-referrer",\n      onError: () => setError(true)\n    }) : shortName\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9BdmF0YXIudHN4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBZ0Q7QUFDekI7QUFDaUI7QUFDSTtBQUNyQztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELG9CQUFvQix3REFBYztBQUNsQyw0QkFBNEIsK0NBQVE7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLHNEQUFJO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILHdCQUF3QixzREFBSTtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSCIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL0F2YXRhci50c3g/M2FlNiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IFwiLi9BdmF0YXIuc2Nzc1wiO1xuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBnZXROYW1lSW5pdGlhbCB9IGZyb20gXCIuLi9jbGllbnRzXCI7XG5leHBvcnQgY29uc3QgQXZhdGFyID0gKHtcbiAgY29sb3IsXG4gIG9uQ2xpY2ssXG4gIG5hbWUsXG4gIHNyY1xufSkgPT4ge1xuICBjb25zdCBzaG9ydE5hbWUgPSBnZXROYW1lSW5pdGlhbChuYW1lKTtcbiAgY29uc3QgW2Vycm9yLCBzZXRFcnJvcl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IGxvYWRJbWcgPSAhZXJyb3IgJiYgc3JjO1xuICBjb25zdCBzdHlsZSA9IGxvYWRJbWcgPyB1bmRlZmluZWQgOiB7XG4gICAgYmFja2dyb3VuZDogY29sb3JcbiAgfTtcbiAgcmV0dXJuIF9qc3goXCJkaXZcIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgY2xhc3NOYW1lOiBcIkF2YXRhclwiLFxuICAgIHN0eWxlOiBzdHlsZSxcbiAgICBvbkNsaWNrOiBvbkNsaWNrXG4gIH0sIHtcbiAgICBjaGlsZHJlbjogbG9hZEltZyA/IF9qc3goXCJpbWdcIiwge1xuICAgICAgY2xhc3NOYW1lOiBcIkF2YXRhci1pbWdcIixcbiAgICAgIHNyYzogc3JjLFxuICAgICAgYWx0OiBzaG9ydE5hbWUsXG4gICAgICByZWZlcnJlclBvbGljeTogXCJuby1yZWZlcnJlclwiLFxuICAgICAgb25FcnJvcjogKCkgPT4gc2V0RXJyb3IodHJ1ZSlcbiAgICB9KSA6IHNob3J0TmFtZVxuICB9KSk7XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/Avatar.tsx\n');
              }
            ),
            /***/
            "../../components/BraveMeasureTextError.tsx": (
              /*!**************************************************!*\
                !*** ../../components/BraveMeasureTextError.tsx ***!
                \**************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Trans__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Trans */ "../../components/Trans.tsx");\n\n\n\nconst BraveMeasureTextError = () => {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n    "data-testid": "brave-measure-text-error"\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("p", {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Trans__WEBPACK_IMPORTED_MODULE_1__["default"], {\n        i18nKey: "errors.brave_measure_text_error.line1",\n        bold: el => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", Object.assign({\n          style: {\n            fontWeight: 600\n          }\n        }, {\n          children: el\n        }))\n      })\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("p", {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Trans__WEBPACK_IMPORTED_MODULE_1__["default"], {\n        i18nKey: "errors.brave_measure_text_error.line2",\n        bold: el => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", Object.assign({\n          style: {\n            fontWeight: 600\n          }\n        }, {\n          children: el\n        }))\n      })\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("p", {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Trans__WEBPACK_IMPORTED_MODULE_1__["default"], {\n        i18nKey: "errors.brave_measure_text_error.line3",\n        link: el => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("a", Object.assign({\n          href: "http://docs.excalidraw.com/docs/@excalidraw/excalidraw/faq#turning-off-aggresive-block-fingerprinting-in-brave-browser"\n        }, {\n          children: el\n        }))\n      })\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("p", {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Trans__WEBPACK_IMPORTED_MODULE_1__["default"], {\n        i18nKey: "errors.brave_measure_text_error.line4",\n        issueLink: el => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("a", Object.assign({\n          href: "https://github.com/excalidraw/excalidraw/issues/new"\n        }, {\n          children: el\n        })),\n        discordLink: el => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("a", Object.assign({\n          href: "https://discord.gg/UexuTaE"\n        }, {\n          children: [el, "."]\n        }))\n      })\n    })]\n  }));\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (BraveMeasureTextError);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9CcmF2ZU1lYXN1cmVUZXh0RXJyb3IudHN4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBK0Q7QUFDbkM7O0FBRTVCO0FBQ0EsU0FBUyx1REFBSztBQUNkO0FBQ0EsR0FBRztBQUNILGVBQWUsc0RBQUk7QUFDbkIsZ0JBQWdCLHNEQUFJLENBQUMsOENBQUs7QUFDMUI7QUFDQSxvQkFBb0Isc0RBQUk7QUFDeEI7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUCxLQUFLLEdBQUcsc0RBQUk7QUFDWixnQkFBZ0Isc0RBQUksQ0FBQyw4Q0FBSztBQUMxQjtBQUNBLG9CQUFvQixzREFBSTtBQUN4QjtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQLEtBQUssR0FBRyxzREFBSTtBQUNaLGdCQUFnQixzREFBSSxDQUFDLDhDQUFLO0FBQzFCO0FBQ0Esb0JBQW9CLHNEQUFJO0FBQ3hCO0FBQ0EsU0FBUztBQUNUO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUCxLQUFLLEdBQUcsc0RBQUk7QUFDWixnQkFBZ0Isc0RBQUksQ0FBQyw4Q0FBSztBQUMxQjtBQUNBLHlCQUF5QixzREFBSTtBQUM3QjtBQUNBLFNBQVM7QUFDVDtBQUNBLFNBQVM7QUFDVCwyQkFBMkIsdURBQUs7QUFDaEM7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQLEtBQUs7QUFDTCxHQUFHO0FBQ0g7O0FBRUEsaUVBQWUscUJBQXFCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvQnJhdmVNZWFzdXJlVGV4dEVycm9yLnRzeD9jMGU0Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgVHJhbnMgZnJvbSBcIi4vVHJhbnNcIjtcblxuY29uc3QgQnJhdmVNZWFzdXJlVGV4dEVycm9yID0gKCkgPT4ge1xuICByZXR1cm4gX2pzeHMoXCJkaXZcIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgXCJkYXRhLXRlc3RpZFwiOiBcImJyYXZlLW1lYXN1cmUtdGV4dC1lcnJvclwiXG4gIH0sIHtcbiAgICBjaGlsZHJlbjogW19qc3goXCJwXCIsIHtcbiAgICAgIGNoaWxkcmVuOiBfanN4KFRyYW5zLCB7XG4gICAgICAgIGkxOG5LZXk6IFwiZXJyb3JzLmJyYXZlX21lYXN1cmVfdGV4dF9lcnJvci5saW5lMVwiLFxuICAgICAgICBib2xkOiBlbCA9PiBfanN4KFwic3BhblwiLCBPYmplY3QuYXNzaWduKHtcbiAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgZm9udFdlaWdodDogNjAwXG4gICAgICAgICAgfVxuICAgICAgICB9LCB7XG4gICAgICAgICAgY2hpbGRyZW46IGVsXG4gICAgICAgIH0pKVxuICAgICAgfSlcbiAgICB9KSwgX2pzeChcInBcIiwge1xuICAgICAgY2hpbGRyZW46IF9qc3goVHJhbnMsIHtcbiAgICAgICAgaTE4bktleTogXCJlcnJvcnMuYnJhdmVfbWVhc3VyZV90ZXh0X2Vycm9yLmxpbmUyXCIsXG4gICAgICAgIGJvbGQ6IGVsID0+IF9qc3goXCJzcGFuXCIsIE9iamVjdC5hc3NpZ24oe1xuICAgICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICBmb250V2VpZ2h0OiA2MDBcbiAgICAgICAgICB9XG4gICAgICAgIH0sIHtcbiAgICAgICAgICBjaGlsZHJlbjogZWxcbiAgICAgICAgfSkpXG4gICAgICB9KVxuICAgIH0pLCBfanN4KFwicFwiLCB7XG4gICAgICBjaGlsZHJlbjogX2pzeChUcmFucywge1xuICAgICAgICBpMThuS2V5OiBcImVycm9ycy5icmF2ZV9tZWFzdXJlX3RleHRfZXJyb3IubGluZTNcIixcbiAgICAgICAgbGluazogZWwgPT4gX2pzeChcImFcIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgICAgICAgaHJlZjogXCJodHRwOi8vZG9jcy5leGNhbGlkcmF3LmNvbS9kb2NzL0BleGNhbGlkcmF3L2V4Y2FsaWRyYXcvZmFxI3R1cm5pbmctb2ZmLWFnZ3Jlc2l2ZS1ibG9jay1maW5nZXJwcmludGluZy1pbi1icmF2ZS1icm93c2VyXCJcbiAgICAgICAgfSwge1xuICAgICAgICAgIGNoaWxkcmVuOiBlbFxuICAgICAgICB9KSlcbiAgICAgIH0pXG4gICAgfSksIF9qc3goXCJwXCIsIHtcbiAgICAgIGNoaWxkcmVuOiBfanN4KFRyYW5zLCB7XG4gICAgICAgIGkxOG5LZXk6IFwiZXJyb3JzLmJyYXZlX21lYXN1cmVfdGV4dF9lcnJvci5saW5lNFwiLFxuICAgICAgICBpc3N1ZUxpbms6IGVsID0+IF9qc3goXCJhXCIsIE9iamVjdC5hc3NpZ24oe1xuICAgICAgICAgIGhyZWY6IFwiaHR0cHM6Ly9naXRodWIuY29tL2V4Y2FsaWRyYXcvZXhjYWxpZHJhdy9pc3N1ZXMvbmV3XCJcbiAgICAgICAgfSwge1xuICAgICAgICAgIGNoaWxkcmVuOiBlbFxuICAgICAgICB9KSksXG4gICAgICAgIGRpc2NvcmRMaW5rOiBlbCA9PiBfanN4cyhcImFcIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgICAgICAgaHJlZjogXCJodHRwczovL2Rpc2NvcmQuZ2cvVWV4dVRhRVwiXG4gICAgICAgIH0sIHtcbiAgICAgICAgICBjaGlsZHJlbjogW2VsLCBcIi5cIl1cbiAgICAgICAgfSkpXG4gICAgICB9KVxuICAgIH0pXVxuICB9KSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBCcmF2ZU1lYXN1cmVUZXh0RXJyb3I7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/BraveMeasureTextError.tsx\n');
              }
            ),
            /***/
            "../../components/Button.tsx": (
              /*!***********************************!*\
                !*** ../../components/Button.tsx ***!
                \***********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "Button": () => (/* binding */ Button)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _Button_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Button.scss */ "../../components/Button.scss");\nvar __rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n\n  if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\n/**\n * A generic button component that follows Excalidraw\'s design system.\n * Style can be customised using `className` or `style` prop.\n * Accepts all props that a regular `button` element accepts.\n */\n\nconst Button = _a => {\n  var {\n    type = "button",\n    onSelect,\n    selected,\n    children,\n    className = ""\n  } = _a,\n      rest = __rest(_a, ["type", "onSelect", "selected", "children", "className"]);\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("button", Object.assign({\n    onClick: (0,_utils__WEBPACK_IMPORTED_MODULE_2__.composeEventHandlers)(rest.onClick, event => {\n      onSelect();\n    }),\n    type: type,\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__["default"])("excalidraw-button", className, {\n      selected\n    })\n  }, rest, {\n    children: children\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9CdXR0b24udHN4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLGFBQWEsU0FBSSxJQUFJLFNBQUk7QUFDekI7O0FBRUE7O0FBRUEsNEhBQTRILGNBQWM7QUFDMUk7QUFDQTtBQUNBO0FBQ0E7O0FBRWdEO0FBQ3hCO0FBQ3dCO0FBQ3pCO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7O0FBRUEsU0FBUyxzREFBSTtBQUNiLGFBQWEsNERBQW9CO0FBQ2pDO0FBQ0EsS0FBSztBQUNMO0FBQ0EsZUFBZSxnREFBSTtBQUNuQjtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0giLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9CdXR0b24udHN4PzgyZTUiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fcmVzdCA9IHRoaXMgJiYgdGhpcy5fX3Jlc3QgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgdmFyIHQgPSB7fTtcblxuICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMCkgdFtwXSA9IHNbcF07XG5cbiAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKSBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKSB0W3BbaV1dID0gc1twW2ldXTtcbiAgfVxuICByZXR1cm4gdDtcbn07XG5cbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgY2xzeCBmcm9tIFwiY2xzeFwiO1xuaW1wb3J0IHsgY29tcG9zZUV2ZW50SGFuZGxlcnMgfSBmcm9tIFwiLi4vdXRpbHNcIjtcbmltcG9ydCBcIi4vQnV0dG9uLnNjc3NcIjtcbi8qKlxuICogQSBnZW5lcmljIGJ1dHRvbiBjb21wb25lbnQgdGhhdCBmb2xsb3dzIEV4Y2FsaWRyYXcncyBkZXNpZ24gc3lzdGVtLlxuICogU3R5bGUgY2FuIGJlIGN1c3RvbWlzZWQgdXNpbmcgYGNsYXNzTmFtZWAgb3IgYHN0eWxlYCBwcm9wLlxuICogQWNjZXB0cyBhbGwgcHJvcHMgdGhhdCBhIHJlZ3VsYXIgYGJ1dHRvbmAgZWxlbWVudCBhY2NlcHRzLlxuICovXG5cbmV4cG9ydCBjb25zdCBCdXR0b24gPSBfYSA9PiB7XG4gIHZhciB7XG4gICAgdHlwZSA9IFwiYnV0dG9uXCIsXG4gICAgb25TZWxlY3QsXG4gICAgc2VsZWN0ZWQsXG4gICAgY2hpbGRyZW4sXG4gICAgY2xhc3NOYW1lID0gXCJcIlxuICB9ID0gX2EsXG4gICAgICByZXN0ID0gX19yZXN0KF9hLCBbXCJ0eXBlXCIsIFwib25TZWxlY3RcIiwgXCJzZWxlY3RlZFwiLCBcImNoaWxkcmVuXCIsIFwiY2xhc3NOYW1lXCJdKTtcblxuICByZXR1cm4gX2pzeChcImJ1dHRvblwiLCBPYmplY3QuYXNzaWduKHtcbiAgICBvbkNsaWNrOiBjb21wb3NlRXZlbnRIYW5kbGVycyhyZXN0Lm9uQ2xpY2ssIGV2ZW50ID0+IHtcbiAgICAgIG9uU2VsZWN0KCk7XG4gICAgfSksXG4gICAgdHlwZTogdHlwZSxcbiAgICBjbGFzc05hbWU6IGNsc3goXCJleGNhbGlkcmF3LWJ1dHRvblwiLCBjbGFzc05hbWUsIHtcbiAgICAgIHNlbGVjdGVkXG4gICAgfSlcbiAgfSwgcmVzdCwge1xuICAgIGNoaWxkcmVuOiBjaGlsZHJlblxuICB9KSk7XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/Button.tsx\n');
              }
            ),
            /***/
            "../../components/ButtonIconSelect.tsx": (
              /*!*********************************************!*\
                !*** ../../components/ButtonIconSelect.tsx ***!
                \*********************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "ButtonIconSelect": () => (/* binding */ ButtonIconSelect)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n\n // TODO: It might be "clever" to add option.icon to the existing component <ButtonSelect />\n\nconst ButtonIconSelect = props => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n  className: "buttonList buttonListIcon"\n}, {\n  children: props.options.map(option => {\n    var _a;\n\n    return props.type === "button" ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("button", Object.assign({\n      onClick: event => props.onClick(option.value, event),\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__["default"])({\n        active: (_a = option.active) !== null && _a !== void 0 ? _a : props.value === option.value\n      }),\n      "data-testid": option.testId,\n      title: option.text\n    }, {\n      children: option.icon\n    }), option.text) : (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("label", Object.assign({\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__["default"])({\n        active: props.value === option.value\n      }),\n      title: option.text\n    }, {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input", {\n        type: "radio",\n        name: props.group,\n        onChange: () => props.onChange(option.value),\n        checked: props.value === option.value,\n        "data-testid": option.testId\n      }), option.icon]\n    }), option.text);\n  })\n}));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9CdXR0b25JY29uU2VsZWN0LnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQStEO0FBQ3ZDLENBQUM7O0FBRWxCLGtDQUFrQyxzREFBSTtBQUM3QztBQUNBLENBQUM7QUFDRDtBQUNBOztBQUVBLHFDQUFxQyxzREFBSTtBQUN6QztBQUNBLGlCQUFpQixnREFBSTtBQUNyQjtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSyxrQkFBa0IsdURBQUs7QUFDNUIsaUJBQWlCLGdEQUFJO0FBQ3JCO0FBQ0EsT0FBTztBQUNQO0FBQ0EsS0FBSztBQUNMLGlCQUFpQixzREFBSTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTCxHQUFHO0FBQ0gsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL0J1dHRvbkljb25TZWxlY3QudHN4Pzc1YzciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCBjbHN4IGZyb20gXCJjbHN4XCI7IC8vIFRPRE86IEl0IG1pZ2h0IGJlIFwiY2xldmVyXCIgdG8gYWRkIG9wdGlvbi5pY29uIHRvIHRoZSBleGlzdGluZyBjb21wb25lbnQgPEJ1dHRvblNlbGVjdCAvPlxuXG5leHBvcnQgY29uc3QgQnV0dG9uSWNvblNlbGVjdCA9IHByb3BzID0+IF9qc3goXCJkaXZcIiwgT2JqZWN0LmFzc2lnbih7XG4gIGNsYXNzTmFtZTogXCJidXR0b25MaXN0IGJ1dHRvbkxpc3RJY29uXCJcbn0sIHtcbiAgY2hpbGRyZW46IHByb3BzLm9wdGlvbnMubWFwKG9wdGlvbiA9PiB7XG4gICAgdmFyIF9hO1xuXG4gICAgcmV0dXJuIHByb3BzLnR5cGUgPT09IFwiYnV0dG9uXCIgPyBfanN4KFwiYnV0dG9uXCIsIE9iamVjdC5hc3NpZ24oe1xuICAgICAgb25DbGljazogZXZlbnQgPT4gcHJvcHMub25DbGljayhvcHRpb24udmFsdWUsIGV2ZW50KSxcbiAgICAgIGNsYXNzTmFtZTogY2xzeCh7XG4gICAgICAgIGFjdGl2ZTogKF9hID0gb3B0aW9uLmFjdGl2ZSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogcHJvcHMudmFsdWUgPT09IG9wdGlvbi52YWx1ZVxuICAgICAgfSksXG4gICAgICBcImRhdGEtdGVzdGlkXCI6IG9wdGlvbi50ZXN0SWQsXG4gICAgICB0aXRsZTogb3B0aW9uLnRleHRcbiAgICB9LCB7XG4gICAgICBjaGlsZHJlbjogb3B0aW9uLmljb25cbiAgICB9KSwgb3B0aW9uLnRleHQpIDogX2pzeHMoXCJsYWJlbFwiLCBPYmplY3QuYXNzaWduKHtcbiAgICAgIGNsYXNzTmFtZTogY2xzeCh7XG4gICAgICAgIGFjdGl2ZTogcHJvcHMudmFsdWUgPT09IG9wdGlvbi52YWx1ZVxuICAgICAgfSksXG4gICAgICB0aXRsZTogb3B0aW9uLnRleHRcbiAgICB9LCB7XG4gICAgICBjaGlsZHJlbjogW19qc3goXCJpbnB1dFwiLCB7XG4gICAgICAgIHR5cGU6IFwicmFkaW9cIixcbiAgICAgICAgbmFtZTogcHJvcHMuZ3JvdXAsXG4gICAgICAgIG9uQ2hhbmdlOiAoKSA9PiBwcm9wcy5vbkNoYW5nZShvcHRpb24udmFsdWUpLFxuICAgICAgICBjaGVja2VkOiBwcm9wcy52YWx1ZSA9PT0gb3B0aW9uLnZhbHVlLFxuICAgICAgICBcImRhdGEtdGVzdGlkXCI6IG9wdGlvbi50ZXN0SWRcbiAgICAgIH0pLCBvcHRpb24uaWNvbl1cbiAgICB9KSwgb3B0aW9uLnRleHQpO1xuICB9KVxufSkpOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/ButtonIconSelect.tsx\n');
              }
            ),
            /***/
            "../../components/Card.tsx": (
              /*!*********************************!*\
                !*** ../../components/Card.tsx ***!
                \*********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "Card": () => (/* binding */ Card)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var open_color__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! open-color */ "../../../node_modules/open-color/open-color.json");\n/* harmony import */ var _Card_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Card.scss */ "../../components/Card.scss");\n\n\n\nconst Card = ({\n  children,\n  color\n}) => {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: "Card",\n    style: {\n      ["--card-color"]: color === "primary" ? "var(--color-primary)" : open_color__WEBPACK_IMPORTED_MODULE_1__[color][7],\n      ["--card-color-darker"]: color === "primary" ? "var(--color-primary-darker)" : open_color__WEBPACK_IMPORTED_MODULE_1__[color][8],\n      ["--card-color-darkest"]: color === "primary" ? "var(--color-primary-darkest)" : open_color__WEBPACK_IMPORTED_MODULE_1__[color][9]\n    }\n  }, {\n    children: children\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9DYXJkLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFnRDtBQUNiO0FBQ2Q7QUFDZDtBQUNQO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsU0FBUyxzREFBSTtBQUNiO0FBQ0E7QUFDQSx1RUFBdUUsdUNBQVM7QUFDaEYscUZBQXFGLHVDQUFTO0FBQzlGLHVGQUF1Rix1Q0FBUztBQUNoRztBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7QUFDSCIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL0NhcmQudHN4PzEzMjAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCBPcGVuQ29sb3IgZnJvbSBcIm9wZW4tY29sb3JcIjtcbmltcG9ydCBcIi4vQ2FyZC5zY3NzXCI7XG5leHBvcnQgY29uc3QgQ2FyZCA9ICh7XG4gIGNoaWxkcmVuLFxuICBjb2xvclxufSkgPT4ge1xuICByZXR1cm4gX2pzeChcImRpdlwiLCBPYmplY3QuYXNzaWduKHtcbiAgICBjbGFzc05hbWU6IFwiQ2FyZFwiLFxuICAgIHN0eWxlOiB7XG4gICAgICBbXCItLWNhcmQtY29sb3JcIl06IGNvbG9yID09PSBcInByaW1hcnlcIiA/IFwidmFyKC0tY29sb3ItcHJpbWFyeSlcIiA6IE9wZW5Db2xvcltjb2xvcl1bN10sXG4gICAgICBbXCItLWNhcmQtY29sb3ItZGFya2VyXCJdOiBjb2xvciA9PT0gXCJwcmltYXJ5XCIgPyBcInZhcigtLWNvbG9yLXByaW1hcnktZGFya2VyKVwiIDogT3BlbkNvbG9yW2NvbG9yXVs4XSxcbiAgICAgIFtcIi0tY2FyZC1jb2xvci1kYXJrZXN0XCJdOiBjb2xvciA9PT0gXCJwcmltYXJ5XCIgPyBcInZhcigtLWNvbG9yLXByaW1hcnktZGFya2VzdClcIiA6IE9wZW5Db2xvcltjb2xvcl1bOV1cbiAgICB9XG4gIH0sIHtcbiAgICBjaGlsZHJlbjogY2hpbGRyZW5cbiAgfSkpO1xufTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/Card.tsx\n');
              }
            ),
            /***/
            "../../components/CheckboxItem.tsx": (
              /*!*****************************************!*\
                !*** ../../components/CheckboxItem.tsx ***!
                \*****************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "CheckboxItem": () => (/* binding */ CheckboxItem)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./icons */ "../../components/icons.tsx");\n/* harmony import */ var _CheckboxItem_scss__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./CheckboxItem.scss */ "../../components/CheckboxItem.scss");\n\n\n\n\n\nconst CheckboxItem = ({\n  children,\n  checked,\n  onChange,\n  className\n}) => {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_2__["default"])("Checkbox", className, {\n      "is-checked": checked\n    }),\n    onClick: event => {\n      onChange(!checked, event);\n      event.currentTarget.querySelector(".Checkbox-box").focus();\n    }\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("button", Object.assign({\n      className: "Checkbox-box",\n      role: "checkbox",\n      "aria-checked": checked\n    }, {\n      children: _icons__WEBPACK_IMPORTED_MODULE_3__.checkIcon\n    })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: "Checkbox-label"\n    }, {\n      children: children\n    }))]\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9DaGVja2JveEl0ZW0udHN4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQStEO0FBQ3JDO0FBQ0Y7QUFDWTtBQUNQO0FBQ3RCO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsU0FBUyx1REFBSztBQUNkLGVBQWUsZ0RBQUk7QUFDbkI7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsZUFBZSxzREFBSTtBQUNuQjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsZ0JBQWdCLDZDQUFTO0FBQ3pCLEtBQUssSUFBSSxzREFBSTtBQUNiO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSCIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL0NoZWNrYm94SXRlbS50c3g/ZjZmYiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IGNsc3ggZnJvbSBcImNsc3hcIjtcbmltcG9ydCB7IGNoZWNrSWNvbiB9IGZyb20gXCIuL2ljb25zXCI7XG5pbXBvcnQgXCIuL0NoZWNrYm94SXRlbS5zY3NzXCI7XG5leHBvcnQgY29uc3QgQ2hlY2tib3hJdGVtID0gKHtcbiAgY2hpbGRyZW4sXG4gIGNoZWNrZWQsXG4gIG9uQ2hhbmdlLFxuICBjbGFzc05hbWVcbn0pID0+IHtcbiAgcmV0dXJuIF9qc3hzKFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oe1xuICAgIGNsYXNzTmFtZTogY2xzeChcIkNoZWNrYm94XCIsIGNsYXNzTmFtZSwge1xuICAgICAgXCJpcy1jaGVja2VkXCI6IGNoZWNrZWRcbiAgICB9KSxcbiAgICBvbkNsaWNrOiBldmVudCA9PiB7XG4gICAgICBvbkNoYW5nZSghY2hlY2tlZCwgZXZlbnQpO1xuICAgICAgZXZlbnQuY3VycmVudFRhcmdldC5xdWVyeVNlbGVjdG9yKFwiLkNoZWNrYm94LWJveFwiKS5mb2N1cygpO1xuICAgIH1cbiAgfSwge1xuICAgIGNoaWxkcmVuOiBbX2pzeChcImJ1dHRvblwiLCBPYmplY3QuYXNzaWduKHtcbiAgICAgIGNsYXNzTmFtZTogXCJDaGVja2JveC1ib3hcIixcbiAgICAgIHJvbGU6IFwiY2hlY2tib3hcIixcbiAgICAgIFwiYXJpYS1jaGVja2VkXCI6IGNoZWNrZWRcbiAgICB9LCB7XG4gICAgICBjaGlsZHJlbjogY2hlY2tJY29uXG4gICAgfSkpLCBfanN4KFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oe1xuICAgICAgY2xhc3NOYW1lOiBcIkNoZWNrYm94LWxhYmVsXCJcbiAgICB9LCB7XG4gICAgICBjaGlsZHJlbjogY2hpbGRyZW5cbiAgICB9KSldXG4gIH0pKTtcbn07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/CheckboxItem.tsx\n');
              }
            ),
            /***/
            "../../components/ColorPicker/ColorInput.tsx": (
              /*!***************************************************!*\
                !*** ../../components/ColorPicker/ColorInput.tsx ***!
                \***************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "ColorInput": () => (/* binding */ ColorInput)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _ColorPicker__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ColorPicker */ "../../components/ColorPicker/ColorPicker.tsx");\n/* harmony import */ var jotai__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! jotai */ "../../../node_modules/jotai/esm/index.mjs");\n/* harmony import */ var _colorPickerUtils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./colorPickerUtils */ "../../components/ColorPicker/colorPickerUtils.ts");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../icons */ "../../components/icons.tsx");\n/* harmony import */ var _jotai__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../jotai */ "../../jotai.ts");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../keys */ "../../keys.ts");\n/* harmony import */ var _EyeDropper__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../EyeDropper */ "../../components/EyeDropper.tsx");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../i18n */ "../../i18n.ts");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../App */ "../../components/App.tsx");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../utils */ "../../utils.ts");\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst ColorInput = ({\n  color,\n  onChange,\n  label,\n  colorPickerType\n}) => {\n  const device = (0,_App__WEBPACK_IMPORTED_MODULE_10__.useDevice)();\n  const [innerValue, setInnerValue] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(color);\n  const [activeSection, setActiveColorPickerSection] = (0,jotai__WEBPACK_IMPORTED_MODULE_12__.useAtom)(_colorPickerUtils__WEBPACK_IMPORTED_MODULE_3__.activeColorPickerSectionAtom);\n  (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {\n    setInnerValue(color);\n  }, [color]);\n  const changeColor = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(inputValue => {\n    const value = inputValue.toLowerCase();\n    const color = (0,_ColorPicker__WEBPACK_IMPORTED_MODULE_2__.getColor)(value);\n\n    if (color) {\n      onChange(color);\n    }\n\n    setInnerValue(value);\n  }, [onChange]);\n  const inputRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n  const eyeDropperTriggerRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n  (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {\n    if (inputRef.current) {\n      inputRef.current.focus();\n    }\n  }, [activeSection]);\n  const [eyeDropperState, setEyeDropperState] = (0,jotai__WEBPACK_IMPORTED_MODULE_12__.useAtom)(_EyeDropper__WEBPACK_IMPORTED_MODULE_7__.activeEyeDropperAtom, _jotai__WEBPACK_IMPORTED_MODULE_5__.jotaiScope);\n  (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {\n    return () => {\n      setEyeDropperState(null);\n    };\n  }, [setEyeDropperState]);\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n    className: "color-picker__input-label"\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: "color-picker__input-hash"\n    }, {\n      children: "#"\n    })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input", {\n      ref: activeSection === "hex" ? inputRef : undefined,\n      style: {\n        border: 0,\n        padding: 0\n      },\n      spellCheck: false,\n      className: "color-picker-input",\n      "aria-label": label,\n      onChange: event => {\n        changeColor(event.target.value);\n      },\n      value: (innerValue || "").replace(/^#/, ""),\n      onBlur: () => {\n        setInnerValue(color);\n      },\n      tabIndex: -1,\n      onFocus: () => setActiveColorPickerSection("hex"),\n      onKeyDown: event => {\n        var _a;\n\n        if (event.key === _keys__WEBPACK_IMPORTED_MODULE_6__.KEYS.TAB) {\n          return;\n        } else if (event.key === _keys__WEBPACK_IMPORTED_MODULE_6__.KEYS.ESCAPE) {\n          (_a = eyeDropperTriggerRef.current) === null || _a === void 0 ? void 0 : _a.focus();\n        }\n\n        event.stopPropagation();\n      }\n    }), !device.editor.isMobile && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n        style: {\n          width: "1px",\n          height: "1.25rem",\n          backgroundColor: "var(--default-border-color)"\n        }\n      }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n        ref: eyeDropperTriggerRef,\n        className: (0,clsx__WEBPACK_IMPORTED_MODULE_8__["default"])("excalidraw-eye-dropper-trigger", {\n          selected: eyeDropperState\n        }),\n        onClick: () => setEyeDropperState(s => s ? null : {\n          keepOpenOnAlt: false,\n          onSelect: color => onChange(color),\n          colorPickerType\n        }),\n        title: `${(0,_i18n__WEBPACK_IMPORTED_MODULE_9__.t)("labels.eyeDropper")} \u2014 ${_keys__WEBPACK_IMPORTED_MODULE_6__.KEYS.I.toLocaleUpperCase()} or ${(0,_utils__WEBPACK_IMPORTED_MODULE_11__.getShortcutKey)("Alt")} `\n      }, {\n        children: _icons__WEBPACK_IMPORTED_MODULE_4__.eyeDropperIcon\n      }))]\n    })]\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6268 characters]\n//# sourceURL=webpack-internal:///../../components/ColorPicker/ColorInput.tsx\n');
              }
            ),
            /***/
            "../../components/ColorPicker/ColorPicker.tsx": (
              /*!****************************************************!*\
                !*** ../../components/ColorPicker/ColorPicker.tsx ***!
                \****************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "ColorPicker": () => (/* binding */ ColorPicker),\n/* harmony export */   "getColor": () => (/* binding */ getColor)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils */ "../../utils.ts");\n/* harmony import */ var _TopPicks__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./TopPicks */ "../../components/ColorPicker/TopPicks.tsx");\n/* harmony import */ var _Picker__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Picker */ "../../components/ColorPicker/Picker.tsx");\n/* harmony import */ var _radix_ui_react_popover__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @radix-ui/react-popover */ "../../../node_modules/@radix-ui/react-popover/dist/index.module.js");\n/* harmony import */ var jotai__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! jotai */ "../../../node_modules/jotai/esm/index.mjs");\n/* harmony import */ var _colorPickerUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./colorPickerUtils */ "../../components/ColorPicker/colorPickerUtils.ts");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../App */ "../../components/App.tsx");\n/* harmony import */ var _colors__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../colors */ "../../colors.ts");\n/* harmony import */ var _PickerHeading__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./PickerHeading */ "../../components/ColorPicker/PickerHeading.tsx");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../i18n */ "../../i18n.ts");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _jotai__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../jotai */ "../../jotai.ts");\n/* harmony import */ var _ColorInput__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./ColorInput */ "../../components/ColorPicker/ColorInput.tsx");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var _EyeDropper__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../EyeDropper */ "../../components/EyeDropper.tsx");\n/* harmony import */ var _ColorPicker_scss__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./ColorPicker.scss */ "../../components/ColorPicker/ColorPicker.scss");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst isValidColor = color => {\n  const style = new Option().style;\n  style.color = color;\n  return !!style.color;\n};\n\nconst getColor = color => {\n  if ((0,_utils__WEBPACK_IMPORTED_MODULE_1__.isTransparent)(color)) {\n    return color;\n  } // testing for `#` first fixes a bug on Electron (more specfically, an\n  // Obsidian popout window), where a hex color without `#` is (incorrectly)\n  // considered valid\n\n\n  return isValidColor(`#${color}`) ? `#${color}` : isValidColor(color) ? color : null;\n};\n\nconst ColorPickerPopupContent = ({\n  type,\n  color,\n  onChange,\n  label,\n  elements,\n  palette = _colors__WEBPACK_IMPORTED_MODULE_6__.COLOR_PALETTE,\n  updateData\n}) => {\n  const [, setActiveColorPickerSection] = (0,jotai__WEBPACK_IMPORTED_MODULE_15__.useAtom)(_colorPickerUtils__WEBPACK_IMPORTED_MODULE_4__.activeColorPickerSectionAtom);\n  const [eyeDropperState, setEyeDropperState] = (0,jotai__WEBPACK_IMPORTED_MODULE_15__.useAtom)(_EyeDropper__WEBPACK_IMPORTED_MODULE_13__.activeEyeDropperAtom, _jotai__WEBPACK_IMPORTED_MODULE_10__.jotaiScope);\n  const {\n    container\n  } = (0,_App__WEBPACK_IMPORTED_MODULE_5__.useExcalidrawContainer)();\n  const device = (0,_App__WEBPACK_IMPORTED_MODULE_5__.useDevice)();\n\n  const colorInputJSX = (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_PickerHeading__WEBPACK_IMPORTED_MODULE_7__["default"], {\n      children: (0,_i18n__WEBPACK_IMPORTED_MODULE_8__.t)("colorPicker.hexCode")\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ColorInput__WEBPACK_IMPORTED_MODULE_11__.ColorInput, {\n      color: color,\n      label: label,\n      onChange: color => {\n        onChange(color);\n      },\n      colorPickerType: type\n    })]\n  });\n\n  const popoverRef = (0,react__WEBPACK_IMPORTED_MODULE_12__.useRef)(null);\n\n  const focusPickerContent = () => {\n    var _a, _b;\n\n    (_b = (_a = popoverRef.current) === null || _a === void 0 ? void 0 : _a.querySelector(".color-picker-content")) === null || _b === void 0 ? void 0 : _b.focus();\n  };\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_radix_ui_react_popover__WEBPACK_IMPORTED_MODULE_16__.Portal, Object.assign({\n    container: container\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_radix_ui_react_popover__WEBPACK_IMPORTED_MODULE_16__.Content, Object.assign({\n      ref: popoverRef,\n      className: "focus-visible-none",\n      "data-prevent-outside-click": true,\n      onFocusOutside: event => {\n        focusPickerContent();\n        event.preventDefault();\n      },\n      onPointerDownOutside: event => {\n        if (eyeDropperState) {\n          // prevent from closing if we click outside the popover\n          // while eyedropping (e.g. click when clicking the sidebar;\n          // the eye-dropper-backdrop is prevented downstream)\n          event.preventDefault();\n        }\n      },\n      onCloseAutoFocus: e => {\n        e.stopPropagation(); // prevents focusing the trigger\n\n        e.preventDefault(); // return focus to excalidraw container unless\n        // user focuses an interactive element, such as a button, or\n        // enters the text editor by clicking on canvas with the text tool\n\n        if (container && !(0,_utils__WEBPACK_IMPORTED_MODULE_1__.isInteractive)(document.activeElement)) {\n          container.focus();\n        }\n\n        updateData({\n          openPopup: null\n        });\n        setActiveColorPickerSection(null);\n      },\n      side: device.editor.isMobile && !device.viewport.isLandscape ? "bottom" : "right",\n      align: device.editor.isMobile && !device.viewport.isLandscape ? "center" : "start",\n      alignOffset: -16,\n      sideOffset: 20,\n      style: {\n        zIndex: "var(--zIndex-layerUI)",\n        backgroundColor: "var(--popup-bg-color)",\n        maxWidth: "208px",\n        maxHeight: window.innerHeight,\n        padding: "12px",\n        borderRadius: "8px",\n        boxSizing: "border-box",\n        overflowY: "auto",\n        boxShadow: "0px 7px 14px rgba(0, 0, 0, 0.05), 0px 0px 3.12708px rgba(0, 0, 0, 0.0798), 0px 0px 0.931014px rgba(0, 0, 0, 0.1702)"\n      }\n    }, {\n      children: [palette ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Picker__WEBPACK_IMPORTED_MODULE_3__.Picker, Object.assign({\n        palette: palette,\n        color: color,\n        onChange: changedColor => {\n          onChange(changedColor);\n        },\n        onEyeDropperToggle: force => {\n          setEyeDropperState(state => {\n            if (force) {\n              state = state || {\n                keepOpenOnAlt: true,\n                onSelect: onChange,\n                colorPickerType: type\n              };\n              state.keepOpenOnAlt = true;\n              return state;\n            }\n\n            return force === false || state ? null : {\n              keepOpenOnAlt: false,\n              onSelect: onChange,\n              colorPickerType: type\n            };\n          });\n        },\n        onEscape: event => {\n          if (eyeDropperState) {\n            setEyeDropperState(null);\n          } else if ((0,_utils__WEBPACK_IMPORTED_MODULE_1__.isWritableElement)(event.target)) {\n            focusPickerContent();\n          } else {\n            updateData({\n              openPopup: null\n            });\n          }\n        },\n        label: label,\n        type: type,\n        elements: elements,\n        updateData: updateData\n      }, {\n        children: colorInputJSX\n      })) : colorInputJSX, (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_radix_ui_react_popover__WEBPACK_IMPORTED_MODULE_16__.Arrow, {\n        width: 20,\n        height: 10,\n        style: {\n          fill: "var(--popup-bg-color)",\n          filter: "drop-shadow(rgba(0, 0, 0, 0.05) 0px 3px 2px)"\n        }\n      })]\n    }))\n  }));\n};\n\nconst ColorPickerTrigger = ({\n  label,\n  color,\n  type\n}) => {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_radix_ui_react_popover__WEBPACK_IMPORTED_MODULE_16__.Trigger, Object.assign({\n    type: "button",\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_9__["default"])("color-picker__button active-color", {\n      "is-transparent": color === "transparent" || !color\n    }),\n    "aria-label": label,\n    style: color ? {\n      "--swatch-color": color\n    } : undefined,\n    title: type === "elementStroke" ? (0,_i18n__WEBPACK_IMPORTED_MODULE_8__.t)("labels.showStroke") : (0,_i18n__WEBPACK_IMPORTED_MODULE_8__.t)("labels.showBackground")\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n      className: "color-picker__button-outline"\n    })\n  }));\n};\n\nconst ColorPicker = ({\n  type,\n  color,\n  onChange,\n  label,\n  elements,\n  palette = _colors__WEBPACK_IMPORTED_MODULE_6__.COLOR_PALETTE,\n  topPicks,\n  updateData,\n  appState\n}) => {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n      role: "dialog",\n      "aria-modal": "true",\n      className: "color-picker-container"\n    }, {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_TopPicks__WEBPACK_IMPORTED_MODULE_2__.TopPicks, {\n        activeColor: color,\n        onChange: onChange,\n        type: type,\n        topPicks: topPicks\n      }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n        style: {\n          width: 1,\n          height: "100%",\n          backgroundColor: "var(--default-border-color)",\n          margin: "0 auto"\n        }\n      }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_radix_ui_react_popover__WEBPACK_IMPORTED_MODULE_16__.Root, Object.assign({\n        open: appState.openPopup === type,\n        onOpenChange: open => {\n          updateData({\n            openPopup: open ? type : null\n          });\n        }\n      }, {\n        children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(ColorPickerTrigger, {\n          color: color,\n          label: label,\n          type: type\n        }), appState.openPopup === type && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(ColorPickerPopupContent, {\n          type: type,\n          color: color,\n          onChange: onChange,\n          label: label,\n          elements: elements,\n          palette: palette,\n          updateData: updateData\n        })]\n      }))]\n    }))\n  });\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 13168 characters]\n//# sourceURL=webpack-internal:///../../components/ColorPicker/ColorPicker.tsx\n');
              }
            ),
            /***/
            "../../components/ColorPicker/CustomColorList.tsx": (
              /*!********************************************************!*\
                !*** ../../components/ColorPicker/CustomColorList.tsx ***!
                \********************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "CustomColorList": () => (/* binding */ CustomColorList)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var jotai__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! jotai */ "../../../node_modules/jotai/esm/index.mjs");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _colorPickerUtils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./colorPickerUtils */ "../../components/ColorPicker/colorPickerUtils.ts");\n/* harmony import */ var _HotkeyLabel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./HotkeyLabel */ "../../components/ColorPicker/HotkeyLabel.tsx");\n\n\n\n\n\n\nconst CustomColorList = ({\n  colors,\n  color,\n  onChange,\n  label\n}) => {\n  const [activeColorPickerSection, setActiveColorPickerSection] = (0,jotai__WEBPACK_IMPORTED_MODULE_5__.useAtom)(_colorPickerUtils__WEBPACK_IMPORTED_MODULE_3__.activeColorPickerSectionAtom);\n  const btnRef = (0,react__WEBPACK_IMPORTED_MODULE_2__.useRef)(null);\n  (0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(() => {\n    if (btnRef.current) {\n      btnRef.current.focus();\n    }\n  }, [color, activeColorPickerSection]);\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: "color-picker-content--default"\n  }, {\n    children: colors.map((c, i) => {\n      return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("button", Object.assign({\n        ref: color === c ? btnRef : undefined,\n        tabIndex: -1,\n        type: "button",\n        className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__["default"])("color-picker__button color-picker__button--large", {\n          active: color === c,\n          "is-transparent": c === "transparent" || !c\n        }),\n        onClick: () => {\n          onChange(c);\n          setActiveColorPickerSection("custom");\n        },\n        title: c,\n        "aria-label": label,\n        style: {\n          "--swatch-color": c\n        }\n      }, {\n        children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n          className: "color-picker__button-outline"\n        }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_HotkeyLabel__WEBPACK_IMPORTED_MODULE_4__["default"], {\n          color: c,\n          keyLabel: i + 1,\n          isCustomColor: true\n        })]\n      }), i);\n    })\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9Db2xvclBpY2tlci9DdXN0b21Db2xvckxpc3QudHN4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUErRDtBQUN2QztBQUNRO0FBQ1U7QUFDd0I7QUFDMUI7QUFDakM7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCxrRUFBa0UsOENBQU8sQ0FBQywyRUFBNEI7QUFDdEcsaUJBQWlCLDZDQUFNO0FBQ3ZCLEVBQUUsZ0RBQVM7QUFDWDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsU0FBUyxzREFBSTtBQUNiO0FBQ0EsR0FBRztBQUNIO0FBQ0EsYUFBYSx1REFBSztBQUNsQjtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsZ0RBQUk7QUFDdkI7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxtQkFBbUIsc0RBQUk7QUFDdkI7QUFDQSxTQUFTLEdBQUcsc0RBQUksQ0FBQyxvREFBVztBQUM1QjtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQLEtBQUs7QUFDTCxHQUFHO0FBQ0giLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9Db2xvclBpY2tlci9DdXN0b21Db2xvckxpc3QudHN4P2YyYmIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCBjbHN4IGZyb20gXCJjbHN4XCI7XG5pbXBvcnQgeyB1c2VBdG9tIH0gZnJvbSBcImpvdGFpXCI7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgYWN0aXZlQ29sb3JQaWNrZXJTZWN0aW9uQXRvbSB9IGZyb20gXCIuL2NvbG9yUGlja2VyVXRpbHNcIjtcbmltcG9ydCBIb3RrZXlMYWJlbCBmcm9tIFwiLi9Ib3RrZXlMYWJlbFwiO1xuZXhwb3J0IGNvbnN0IEN1c3RvbUNvbG9yTGlzdCA9ICh7XG4gIGNvbG9ycyxcbiAgY29sb3IsXG4gIG9uQ2hhbmdlLFxuICBsYWJlbFxufSkgPT4ge1xuICBjb25zdCBbYWN0aXZlQ29sb3JQaWNrZXJTZWN0aW9uLCBzZXRBY3RpdmVDb2xvclBpY2tlclNlY3Rpb25dID0gdXNlQXRvbShhY3RpdmVDb2xvclBpY2tlclNlY3Rpb25BdG9tKTtcbiAgY29uc3QgYnRuUmVmID0gdXNlUmVmKG51bGwpO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChidG5SZWYuY3VycmVudCkge1xuICAgICAgYnRuUmVmLmN1cnJlbnQuZm9jdXMoKTtcbiAgICB9XG4gIH0sIFtjb2xvciwgYWN0aXZlQ29sb3JQaWNrZXJTZWN0aW9uXSk7XG4gIHJldHVybiBfanN4KFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oe1xuICAgIGNsYXNzTmFtZTogXCJjb2xvci1waWNrZXItY29udGVudC0tZGVmYXVsdFwiXG4gIH0sIHtcbiAgICBjaGlsZHJlbjogY29sb3JzLm1hcCgoYywgaSkgPT4ge1xuICAgICAgcmV0dXJuIF9qc3hzKFwiYnV0dG9uXCIsIE9iamVjdC5hc3NpZ24oe1xuICAgICAgICByZWY6IGNvbG9yID09PSBjID8gYnRuUmVmIDogdW5kZWZpbmVkLFxuICAgICAgICB0YWJJbmRleDogLTEsXG4gICAgICAgIHR5cGU6IFwiYnV0dG9uXCIsXG4gICAgICAgIGNsYXNzTmFtZTogY2xzeChcImNvbG9yLXBpY2tlcl9fYnV0dG9uIGNvbG9yLXBpY2tlcl9fYnV0dG9uLS1sYXJnZVwiLCB7XG4gICAgICAgICAgYWN0aXZlOiBjb2xvciA9PT0gYyxcbiAgICAgICAgICBcImlzLXRyYW5zcGFyZW50XCI6IGMgPT09IFwidHJhbnNwYXJlbnRcIiB8fCAhY1xuICAgICAgICB9KSxcbiAgICAgICAgb25DbGljazogKCkgPT4ge1xuICAgICAgICAgIG9uQ2hhbmdlKGMpO1xuICAgICAgICAgIHNldEFjdGl2ZUNvbG9yUGlja2VyU2VjdGlvbihcImN1c3RvbVwiKTtcbiAgICAgICAgfSxcbiAgICAgICAgdGl0bGU6IGMsXG4gICAgICAgIFwiYXJpYS1sYWJlbFwiOiBsYWJlbCxcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICBcIi0tc3dhdGNoLWNvbG9yXCI6IGNcbiAgICAgICAgfVxuICAgICAgfSwge1xuICAgICAgICBjaGlsZHJlbjogW19qc3goXCJkaXZcIiwge1xuICAgICAgICAgIGNsYXNzTmFtZTogXCJjb2xvci1waWNrZXJfX2J1dHRvbi1vdXRsaW5lXCJcbiAgICAgICAgfSksIF9qc3goSG90a2V5TGFiZWwsIHtcbiAgICAgICAgICBjb2xvcjogYyxcbiAgICAgICAgICBrZXlMYWJlbDogaSArIDEsXG4gICAgICAgICAgaXNDdXN0b21Db2xvcjogdHJ1ZVxuICAgICAgICB9KV1cbiAgICAgIH0pLCBpKTtcbiAgICB9KVxuICB9KSk7XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/ColorPicker/CustomColorList.tsx\n');
              }
            ),
            /***/
            "../../components/ColorPicker/HotkeyLabel.tsx": (
              /*!****************************************************!*\
                !*** ../../components/ColorPicker/HotkeyLabel.tsx ***!
                \****************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _colorPickerUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./colorPickerUtils */ "../../components/ColorPicker/colorPickerUtils.ts");\n\n\n\n\nconst HotkeyLabel = ({\n  color,\n  keyLabel,\n  isCustomColor = false,\n  isShade = false\n}) => {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n    className: "color-picker__button__hotkey-label",\n    style: {\n      color: (0,_colorPickerUtils__WEBPACK_IMPORTED_MODULE_2__.getContrastYIQ)(color, isCustomColor)\n    }\n  }, {\n    children: [isShade && "\u21E7", keyLabel]\n  }));\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (HotkeyLabel);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9Db2xvclBpY2tlci9Ib3RrZXlMYWJlbC50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQWtEO0FBQ3hCO0FBQzBCOztBQUVwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELFNBQVMsdURBQUs7QUFDZDtBQUNBO0FBQ0EsYUFBYSxpRUFBYztBQUMzQjtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7QUFDSDs7QUFFQSxpRUFBZSxXQUFXIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvQ29sb3JQaWNrZXIvSG90a2V5TGFiZWwudHN4Pzc0OGUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgZ2V0Q29udHJhc3RZSVEgfSBmcm9tIFwiLi9jb2xvclBpY2tlclV0aWxzXCI7XG5cbmNvbnN0IEhvdGtleUxhYmVsID0gKHtcbiAgY29sb3IsXG4gIGtleUxhYmVsLFxuICBpc0N1c3RvbUNvbG9yID0gZmFsc2UsXG4gIGlzU2hhZGUgPSBmYWxzZVxufSkgPT4ge1xuICByZXR1cm4gX2pzeHMoXCJkaXZcIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgY2xhc3NOYW1lOiBcImNvbG9yLXBpY2tlcl9fYnV0dG9uX19ob3RrZXktbGFiZWxcIixcbiAgICBzdHlsZToge1xuICAgICAgY29sb3I6IGdldENvbnRyYXN0WUlRKGNvbG9yLCBpc0N1c3RvbUNvbG9yKVxuICAgIH1cbiAgfSwge1xuICAgIGNoaWxkcmVuOiBbaXNTaGFkZSAmJiBcIuKHp1wiLCBrZXlMYWJlbF1cbiAgfSkpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgSG90a2V5TGFiZWw7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/ColorPicker/HotkeyLabel.tsx\n');
              }
            ),
            /***/
            "../../components/ColorPicker/Picker.tsx": (
              /*!***********************************************!*\
                !*** ../../components/ColorPicker/Picker.tsx ***!
                \***********************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "Picker": () => (/* binding */ Picker)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../i18n */ "../../i18n.ts");\n/* harmony import */ var _ShadeList__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./ShadeList */ "../../components/ColorPicker/ShadeList.tsx");\n/* harmony import */ var _PickerColorList__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./PickerColorList */ "../../components/ColorPicker/PickerColorList.tsx");\n/* harmony import */ var jotai__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! jotai */ "../../../node_modules/jotai/esm/index.mjs");\n/* harmony import */ var _CustomColorList__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./CustomColorList */ "../../components/ColorPicker/CustomColorList.tsx");\n/* harmony import */ var _keyboardNavHandlers__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./keyboardNavHandlers */ "../../components/ColorPicker/keyboardNavHandlers.ts");\n/* harmony import */ var _PickerHeading__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./PickerHeading */ "../../components/ColorPicker/PickerHeading.tsx");\n/* harmony import */ var _colorPickerUtils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./colorPickerUtils */ "../../components/ColorPicker/colorPickerUtils.ts");\n/* harmony import */ var _colors__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../colors */ "../../colors.ts");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../keys */ "../../keys.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../constants */ "../../constants.ts");\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst Picker = ({\n  color,\n  onChange,\n  label,\n  type,\n  elements,\n  palette,\n  updateData,\n  children,\n  onEyeDropperToggle,\n  onEscape\n}) => {\n  var _a;\n\n  const [customColors] = react__WEBPACK_IMPORTED_MODULE_1___default().useState(() => {\n    if (type === "canvasBackground") {\n      return [];\n    }\n\n    return (0,_colorPickerUtils__WEBPACK_IMPORTED_MODULE_8__.getMostUsedCustomColors)(elements, type, palette);\n  });\n  const [activeColorPickerSection, setActiveColorPickerSection] = (0,jotai__WEBPACK_IMPORTED_MODULE_12__.useAtom)(_colorPickerUtils__WEBPACK_IMPORTED_MODULE_8__.activeColorPickerSectionAtom);\n  const colorObj = (0,_colorPickerUtils__WEBPACK_IMPORTED_MODULE_8__.getColorNameAndShadeFromColor)({\n    color,\n    palette\n  });\n  (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {\n    if (!activeColorPickerSection) {\n      const isCustom = (0,_colorPickerUtils__WEBPACK_IMPORTED_MODULE_8__.isCustomColor)({\n        color,\n        palette\n      });\n      const isCustomButNotInList = isCustom && !customColors.includes(color);\n      setActiveColorPickerSection(isCustomButNotInList ? "hex" : isCustom ? "custom" : (colorObj === null || colorObj === void 0 ? void 0 : colorObj.shade) != null ? "shades" : "baseColors");\n    }\n  }, [activeColorPickerSection, color, palette, setActiveColorPickerSection, colorObj, customColors]);\n  const [activeShade, setActiveShade] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)((_a = colorObj === null || colorObj === void 0 ? void 0 : colorObj.shade) !== null && _a !== void 0 ? _a : type === "elementBackground" ? _colors__WEBPACK_IMPORTED_MODULE_9__.DEFAULT_ELEMENT_BACKGROUND_COLOR_INDEX : _colors__WEBPACK_IMPORTED_MODULE_9__.DEFAULT_ELEMENT_STROKE_COLOR_INDEX);\n  (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {\n    if ((colorObj === null || colorObj === void 0 ? void 0 : colorObj.shade) != null) {\n      setActiveShade(colorObj.shade);\n    }\n\n    const keyup = event => {\n      if (event.key === _keys__WEBPACK_IMPORTED_MODULE_10__.KEYS.ALT) {\n        onEyeDropperToggle(false);\n      }\n    };\n\n    document.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_11__.EVENT.KEYUP, keyup, {\n      capture: true\n    });\n    return () => {\n      document.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_11__.EVENT.KEYUP, keyup, {\n        capture: true\n      });\n    };\n  }, [colorObj, onEyeDropperToggle]);\n  const pickerRef = react__WEBPACK_IMPORTED_MODULE_1___default().useRef(null);\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    role: "dialog",\n    "aria-modal": "true",\n    "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.colorPicker")\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n      ref: pickerRef,\n      onKeyDown: event => {\n        const handled = (0,_keyboardNavHandlers__WEBPACK_IMPORTED_MODULE_6__.colorPickerKeyNavHandler)({\n          event,\n          activeColorPickerSection,\n          palette,\n          color,\n          onChange,\n          onEyeDropperToggle,\n          customColors,\n          setActiveColorPickerSection,\n          updateData,\n          activeShade,\n          onEscape\n        });\n\n        if (handled) {\n          event.preventDefault();\n          event.stopPropagation();\n        }\n      },\n      className: "color-picker-content",\n      // to allow focusing by clicking but not by tabbing\n      tabIndex: -1\n    }, {\n      children: [!!customColors.length && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", {\n        children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_PickerHeading__WEBPACK_IMPORTED_MODULE_7__["default"], {\n          children: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("colorPicker.mostUsedCustomColors")\n        }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_CustomColorList__WEBPACK_IMPORTED_MODULE_5__.CustomColorList, {\n          colors: customColors,\n          color: color,\n          label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("colorPicker.mostUsedCustomColors"),\n          onChange: onChange\n        })]\n      }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", {\n        children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_PickerHeading__WEBPACK_IMPORTED_MODULE_7__["default"], {\n          children: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("colorPicker.colors")\n        }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_PickerColorList__WEBPACK_IMPORTED_MODULE_4__["default"], {\n          color: color,\n          label: label,\n          palette: palette,\n          onChange: onChange,\n          activeShade: activeShade\n        })]\n      }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", {\n        children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_PickerHeading__WEBPACK_IMPORTED_MODULE_7__["default"], {\n          children: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("colorPicker.shades")\n        }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ShadeList__WEBPACK_IMPORTED_MODULE_3__.ShadeList, {\n          hex: color,\n          onChange: onChange,\n          palette: palette\n        })]\n      }), children]\n    }))\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 7980 characters]\n//# sourceURL=webpack-internal:///../../components/ColorPicker/Picker.tsx\n');
              }
            ),
            /***/
            "../../components/ColorPicker/PickerColorList.tsx": (
              /*!********************************************************!*\
                !*** ../../components/ColorPicker/PickerColorList.tsx ***!
                \********************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var jotai__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! jotai */ "../../../node_modules/jotai/esm/index.mjs");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _colorPickerUtils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./colorPickerUtils */ "../../components/ColorPicker/colorPickerUtils.ts");\n/* harmony import */ var _HotkeyLabel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./HotkeyLabel */ "../../components/ColorPicker/HotkeyLabel.tsx");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../i18n */ "../../i18n.ts");\n\n\n\n\n\n\n\n\nconst PickerColorList = ({\n  palette,\n  color,\n  onChange,\n  label,\n  activeShade\n}) => {\n  const colorObj = (0,_colorPickerUtils__WEBPACK_IMPORTED_MODULE_3__.getColorNameAndShadeFromColor)({\n    color: color || "transparent",\n    palette\n  });\n  const [activeColorPickerSection, setActiveColorPickerSection] = (0,jotai__WEBPACK_IMPORTED_MODULE_6__.useAtom)(_colorPickerUtils__WEBPACK_IMPORTED_MODULE_3__.activeColorPickerSectionAtom);\n  const btnRef = (0,react__WEBPACK_IMPORTED_MODULE_2__.useRef)(null);\n  (0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(() => {\n    if (btnRef.current && activeColorPickerSection === "baseColors") {\n      btnRef.current.focus();\n    }\n  }, [colorObj === null || colorObj === void 0 ? void 0 : colorObj.colorName, activeColorPickerSection]);\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: "color-picker-content--default"\n  }, {\n    children: Object.entries(palette).map(([key, value], index) => {\n      const color = (Array.isArray(value) ? value[activeShade] : value) || "transparent";\n      const keybinding = _colorPickerUtils__WEBPACK_IMPORTED_MODULE_3__.colorPickerHotkeyBindings[index];\n      const label = (0,_i18n__WEBPACK_IMPORTED_MODULE_5__.t)(`colors.${key.replace(/\\d+/, "")}`, null, "");\n      return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("button", Object.assign({\n        ref: (colorObj === null || colorObj === void 0 ? void 0 : colorObj.colorName) === key ? btnRef : undefined,\n        tabIndex: -1,\n        type: "button",\n        className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__["default"])("color-picker__button color-picker__button--large", {\n          active: (colorObj === null || colorObj === void 0 ? void 0 : colorObj.colorName) === key,\n          "is-transparent": color === "transparent" || !color\n        }),\n        onClick: () => {\n          onChange(color);\n          setActiveColorPickerSection("baseColors");\n        },\n        title: `${label}${color.startsWith("#") ? ` ${color}` : ""} \u2014 ${keybinding}`,\n        "aria-label": `${label} \u2014 ${keybinding}`,\n        style: color ? {\n          "--swatch-color": color\n        } : undefined,\n        "data-testid": `color-${key}`\n      }, {\n        children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n          className: "color-picker__button-outline"\n        }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_HotkeyLabel__WEBPACK_IMPORTED_MODULE_4__["default"], {\n          color: color,\n          keyLabel: keybinding\n        })]\n      }), key);\n    })\n  }));\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (PickerColorList);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4536 characters]\n//# sourceURL=webpack-internal:///../../components/ColorPicker/PickerColorList.tsx\n');
              }
            ),
            /***/
            "../../components/ColorPicker/PickerHeading.tsx": (
              /*!******************************************************!*\
                !*** ../../components/ColorPicker/PickerHeading.tsx ***!
                \******************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n\n\nconst PickerHeading = ({\n  children\n}) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n  className: "color-picker__heading"\n}, {\n  children: children\n}));\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (PickerHeading);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9Db2xvclBpY2tlci9QaWNrZXJIZWFkaW5nLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBZ0Q7O0FBRWhEO0FBQ0E7QUFDQSxDQUFDLEtBQUssc0RBQUk7QUFDVjtBQUNBLENBQUM7QUFDRDtBQUNBLENBQUM7O0FBRUQsaUVBQWUsYUFBYSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL0NvbG9yUGlja2VyL1BpY2tlckhlYWRpbmcudHN4P2FjYmMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcblxuY29uc3QgUGlja2VySGVhZGluZyA9ICh7XG4gIGNoaWxkcmVuXG59KSA9PiBfanN4KFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oe1xuICBjbGFzc05hbWU6IFwiY29sb3ItcGlja2VyX19oZWFkaW5nXCJcbn0sIHtcbiAgY2hpbGRyZW46IGNoaWxkcmVuXG59KSk7XG5cbmV4cG9ydCBkZWZhdWx0IFBpY2tlckhlYWRpbmc7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/ColorPicker/PickerHeading.tsx\n');
              }
            ),
            /***/
            "../../components/ColorPicker/ShadeList.tsx": (
              /*!**************************************************!*\
                !*** ../../components/ColorPicker/ShadeList.tsx ***!
                \**************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "ShadeList": () => (/* binding */ ShadeList)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var jotai__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! jotai */ "../../../node_modules/jotai/esm/index.mjs");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _colorPickerUtils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./colorPickerUtils */ "../../components/ColorPicker/colorPickerUtils.ts");\n/* harmony import */ var _HotkeyLabel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./HotkeyLabel */ "../../components/ColorPicker/HotkeyLabel.tsx");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../i18n */ "../../i18n.ts");\n\n\n\n\n\n\n\nconst ShadeList = ({\n  hex,\n  onChange,\n  palette\n}) => {\n  const colorObj = (0,_colorPickerUtils__WEBPACK_IMPORTED_MODULE_3__.getColorNameAndShadeFromColor)({\n    color: hex || "transparent",\n    palette\n  });\n  const [activeColorPickerSection, setActiveColorPickerSection] = (0,jotai__WEBPACK_IMPORTED_MODULE_6__.useAtom)(_colorPickerUtils__WEBPACK_IMPORTED_MODULE_3__.activeColorPickerSectionAtom);\n  const btnRef = (0,react__WEBPACK_IMPORTED_MODULE_2__.useRef)(null);\n  (0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(() => {\n    if (btnRef.current && activeColorPickerSection === "shades") {\n      btnRef.current.focus();\n    }\n  }, [colorObj, activeColorPickerSection]);\n\n  if (colorObj) {\n    const {\n      colorName,\n      shade\n    } = colorObj;\n    const shades = palette[colorName];\n\n    if (Array.isArray(shades)) {\n      return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n        className: "color-picker-content--default shades"\n      }, {\n        children: shades.map((color, i) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("button", Object.assign({\n          ref: i === shade && activeColorPickerSection === "shades" ? btnRef : undefined,\n          tabIndex: -1,\n          type: "button",\n          className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__["default"])("color-picker__button color-picker__button--large", {\n            active: i === shade\n          }),\n          "aria-label": "Shade",\n          title: `${colorName} - ${i + 1}`,\n          style: color ? {\n            "--swatch-color": color\n          } : undefined,\n          onClick: () => {\n            onChange(color);\n            setActiveColorPickerSection("shades");\n          }\n        }, {\n          children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n            className: "color-picker__button-outline"\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_HotkeyLabel__WEBPACK_IMPORTED_MODULE_4__["default"], {\n            color: color,\n            keyLabel: i + 1,\n            isShade: true\n          })]\n        }), i))\n      }));\n    }\n  }\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n    className: "color-picker-content--default",\n    style: {\n      position: "relative"\n    },\n    tabIndex: -1\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("button", {\n      type: "button",\n      tabIndex: -1,\n      className: "color-picker__button color-picker__button--large color-picker__button--no-focus-visible"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      tabIndex: -1,\n      style: {\n        position: "absolute",\n        top: 0,\n        left: 0,\n        right: 0,\n        bottom: 0,\n        display: "flex",\n        alignItems: "center",\n        justifyContent: "center",\n        textAlign: "center",\n        fontSize: "0.75rem"\n      }\n    }, {\n      children: (0,_i18n__WEBPACK_IMPORTED_MODULE_5__.t)("colorPicker.noShades")\n    }))]\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5120 characters]\n//# sourceURL=webpack-internal:///../../components/ColorPicker/ShadeList.tsx\n');
              }
            ),
            /***/
            "../../components/ColorPicker/TopPicks.tsx": (
              /*!*************************************************!*\
                !*** ../../components/ColorPicker/TopPicks.tsx ***!
                \*************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "TopPicks": () => (/* binding */ TopPicks)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _colors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../colors */ "../../colors.ts");\n\n\n\nconst TopPicks = ({\n  onChange,\n  type,\n  activeColor,\n  topPicks\n}) => {\n  let colors;\n\n  if (type === "elementStroke") {\n    colors = _colors__WEBPACK_IMPORTED_MODULE_2__.DEFAULT_ELEMENT_STROKE_PICKS;\n  }\n\n  if (type === "elementBackground") {\n    colors = _colors__WEBPACK_IMPORTED_MODULE_2__.DEFAULT_ELEMENT_BACKGROUND_PICKS;\n  }\n\n  if (type === "canvasBackground") {\n    colors = _colors__WEBPACK_IMPORTED_MODULE_2__.DEFAULT_CANVAS_BACKGROUND_PICKS;\n  } // this one can overwrite defaults\n\n\n  if (topPicks) {\n    colors = topPicks;\n  }\n\n  if (!colors) {\n    console.error("Invalid type for TopPicks");\n    return null;\n  }\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: "color-picker__top-picks"\n  }, {\n    children: colors.map(color => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("button", Object.assign({\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__["default"])("color-picker__button", {\n        active: color === activeColor,\n        "is-transparent": color === "transparent" || !color\n      }),\n      style: {\n        "--swatch-color": color\n      },\n      type: "button",\n      title: color,\n      onClick: () => onChange(color),\n      "data-testid": `color-top-pick-${color}`\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n        className: "color-picker__button-outline"\n      })\n    }), color))\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9Db2xvclBpY2tlci9Ub3BQaWNrcy50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBZ0Q7QUFDeEI7QUFDdUc7QUFDeEg7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDs7QUFFQTtBQUNBLGFBQWEsaUVBQTRCO0FBQ3pDOztBQUVBO0FBQ0EsYUFBYSxxRUFBZ0M7QUFDN0M7O0FBRUE7QUFDQSxhQUFhLG9FQUErQjtBQUM1QyxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsU0FBUyxzREFBSTtBQUNiO0FBQ0EsR0FBRztBQUNILGtDQUFrQyxzREFBSTtBQUN0QyxpQkFBaUIsZ0RBQUk7QUFDckI7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLHVDQUF1QyxNQUFNO0FBQzdDLEtBQUs7QUFDTCxnQkFBZ0Isc0RBQUk7QUFDcEI7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMLEdBQUc7QUFDSCIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL0NvbG9yUGlja2VyL1RvcFBpY2tzLnRzeD9kNzY3Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgY2xzeCBmcm9tIFwiY2xzeFwiO1xuaW1wb3J0IHsgREVGQVVMVF9DQU5WQVNfQkFDS0dST1VORF9QSUNLUywgREVGQVVMVF9FTEVNRU5UX0JBQ0tHUk9VTkRfUElDS1MsIERFRkFVTFRfRUxFTUVOVF9TVFJPS0VfUElDS1MgfSBmcm9tIFwiLi4vLi4vY29sb3JzXCI7XG5leHBvcnQgY29uc3QgVG9wUGlja3MgPSAoe1xuICBvbkNoYW5nZSxcbiAgdHlwZSxcbiAgYWN0aXZlQ29sb3IsXG4gIHRvcFBpY2tzXG59KSA9PiB7XG4gIGxldCBjb2xvcnM7XG5cbiAgaWYgKHR5cGUgPT09IFwiZWxlbWVudFN0cm9rZVwiKSB7XG4gICAgY29sb3JzID0gREVGQVVMVF9FTEVNRU5UX1NUUk9LRV9QSUNLUztcbiAgfVxuXG4gIGlmICh0eXBlID09PSBcImVsZW1lbnRCYWNrZ3JvdW5kXCIpIHtcbiAgICBjb2xvcnMgPSBERUZBVUxUX0VMRU1FTlRfQkFDS0dST1VORF9QSUNLUztcbiAgfVxuXG4gIGlmICh0eXBlID09PSBcImNhbnZhc0JhY2tncm91bmRcIikge1xuICAgIGNvbG9ycyA9IERFRkFVTFRfQ0FOVkFTX0JBQ0tHUk9VTkRfUElDS1M7XG4gIH0gLy8gdGhpcyBvbmUgY2FuIG92ZXJ3cml0ZSBkZWZhdWx0c1xuXG5cbiAgaWYgKHRvcFBpY2tzKSB7XG4gICAgY29sb3JzID0gdG9wUGlja3M7XG4gIH1cblxuICBpZiAoIWNvbG9ycykge1xuICAgIGNvbnNvbGUuZXJyb3IoXCJJbnZhbGlkIHR5cGUgZm9yIFRvcFBpY2tzXCIpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIF9qc3goXCJkaXZcIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgY2xhc3NOYW1lOiBcImNvbG9yLXBpY2tlcl9fdG9wLXBpY2tzXCJcbiAgfSwge1xuICAgIGNoaWxkcmVuOiBjb2xvcnMubWFwKGNvbG9yID0+IF9qc3goXCJidXR0b25cIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgICBjbGFzc05hbWU6IGNsc3goXCJjb2xvci1waWNrZXJfX2J1dHRvblwiLCB7XG4gICAgICAgIGFjdGl2ZTogY29sb3IgPT09IGFjdGl2ZUNvbG9yLFxuICAgICAgICBcImlzLXRyYW5zcGFyZW50XCI6IGNvbG9yID09PSBcInRyYW5zcGFyZW50XCIgfHwgIWNvbG9yXG4gICAgICB9KSxcbiAgICAgIHN0eWxlOiB7XG4gICAgICAgIFwiLS1zd2F0Y2gtY29sb3JcIjogY29sb3JcbiAgICAgIH0sXG4gICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgdGl0bGU6IGNvbG9yLFxuICAgICAgb25DbGljazogKCkgPT4gb25DaGFuZ2UoY29sb3IpLFxuICAgICAgXCJkYXRhLXRlc3RpZFwiOiBgY29sb3ItdG9wLXBpY2stJHtjb2xvcn1gXG4gICAgfSwge1xuICAgICAgY2hpbGRyZW46IF9qc3goXCJkaXZcIiwge1xuICAgICAgICBjbGFzc05hbWU6IFwiY29sb3ItcGlja2VyX19idXR0b24tb3V0bGluZVwiXG4gICAgICB9KVxuICAgIH0pLCBjb2xvcikpXG4gIH0pKTtcbn07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/ColorPicker/TopPicks.tsx\n');
              }
            ),
            /***/
            "../../components/ColorPicker/colorPickerUtils.ts": (
              /*!********************************************************!*\
                !*** ../../components/ColorPicker/colorPickerUtils.ts ***!
                \********************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "activeColorPickerSectionAtom": () => (/* binding */ activeColorPickerSectionAtom),\n/* harmony export */   "colorPickerHotkeyBindings": () => (/* binding */ colorPickerHotkeyBindings),\n/* harmony export */   "getColorNameAndShadeFromColor": () => (/* binding */ getColorNameAndShadeFromColor),\n/* harmony export */   "getContrastYIQ": () => (/* binding */ getContrastYIQ),\n/* harmony export */   "getMostUsedCustomColors": () => (/* binding */ getMostUsedCustomColors),\n/* harmony export */   "isCustomColor": () => (/* binding */ isCustomColor)\n/* harmony export */ });\n/* harmony import */ var jotai__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! jotai */ "../../../node_modules/jotai/esm/index.mjs");\n/* harmony import */ var _colors__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../colors */ "../../colors.ts");\n\n\nconst getColorNameAndShadeFromColor = ({\n  palette,\n  color\n}) => {\n  for (const [colorName, colorVal] of Object.entries(palette)) {\n    if (Array.isArray(colorVal)) {\n      const shade = colorVal.indexOf(color);\n\n      if (shade > -1) {\n        return {\n          colorName: colorName,\n          shade\n        };\n      }\n    } else if (colorVal === color) {\n      return {\n        colorName: colorName,\n        shade: null\n      };\n    }\n  }\n\n  return null;\n};\nconst colorPickerHotkeyBindings = [["q", "w", "e", "r", "t"], ["a", "s", "d", "f", "g"], ["z", "x", "c", "v", "b"]].flat();\nconst isCustomColor = ({\n  color,\n  palette\n}) => {\n  const paletteValues = Object.values(palette).flat();\n  return !paletteValues.includes(color);\n};\nconst getMostUsedCustomColors = (elements, type, palette) => {\n  const elementColorTypeMap = {\n    elementBackground: "backgroundColor",\n    elementStroke: "strokeColor"\n  };\n  const colors = elements.filter(element => {\n    if (element.isDeleted) {\n      return false;\n    }\n\n    const color = element[elementColorTypeMap[type]];\n    return isCustomColor({\n      color,\n      palette\n    });\n  });\n  const colorCountMap = new Map();\n  colors.forEach(element => {\n    const color = element[elementColorTypeMap[type]];\n\n    if (colorCountMap.has(color)) {\n      colorCountMap.set(color, colorCountMap.get(color) + 1);\n    } else {\n      colorCountMap.set(color, 1);\n    }\n  });\n  return [...colorCountMap.entries()].sort((a, b) => b[1] - a[1]).map(c => c[0]).slice(0, _colors__WEBPACK_IMPORTED_MODULE_0__.MAX_CUSTOM_COLORS_USED_IN_CANVAS);\n};\nconst activeColorPickerSectionAtom = (0,jotai__WEBPACK_IMPORTED_MODULE_1__.atom)(null);\n\nconst calculateContrast = (r, g, b) => {\n  const yiq = (r * 299 + g * 587 + b * 114) / 1000;\n  return yiq >= 160 ? "black" : "white";\n}; // inspiration from https://stackoverflow.com/a/11868398\n\n\nconst getContrastYIQ = (bgHex, isCustomColor) => {\n  if (isCustomColor) {\n    const style = new Option().style;\n    style.color = bgHex;\n\n    if (style.color) {\n      const rgb = style.color.replace(/^(rgb|rgba)\\(/, "").replace(/\\)$/, "").replace(/\\s/g, "").split(",");\n      const r = parseInt(rgb[0]);\n      const g = parseInt(rgb[1]);\n      const b = parseInt(rgb[2]);\n      return calculateContrast(r, g, b);\n    }\n  } // TODO: ? is this wanted?\n\n\n  if (bgHex === "transparent") {\n    return "black";\n  }\n\n  const r = parseInt(bgHex.substring(1, 3), 16);\n  const g = parseInt(bgHex.substring(3, 5), 16);\n  const b = parseInt(bgHex.substring(5, 7), 16);\n  return calculateContrast(r, g, b);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4668 characters]\n//# sourceURL=webpack-internal:///../../components/ColorPicker/colorPickerUtils.ts\n');
              }
            ),
            /***/
            "../../components/ColorPicker/keyboardNavHandlers.ts": (
              /*!***********************************************************!*\
                !*** ../../components/ColorPicker/keyboardNavHandlers.ts ***!
                \***********************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "colorPickerKeyNavHandler": () => (/* binding */ colorPickerKeyNavHandler)\n/* harmony export */ });\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../keys */ "../../keys.ts");\n/* harmony import */ var _colors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../colors */ "../../colors.ts");\n/* harmony import */ var _colorPickerUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./colorPickerUtils */ "../../components/ColorPicker/colorPickerUtils.ts");\n\n\n\n\nconst arrowHandler = (eventKey, currentIndex, length) => {\n  const rows = Math.ceil(length / _colors__WEBPACK_IMPORTED_MODULE_1__.COLORS_PER_ROW);\n  currentIndex = currentIndex !== null && currentIndex !== void 0 ? currentIndex : -1;\n\n  switch (eventKey) {\n    case "ArrowLeft":\n      {\n        const prevIndex = currentIndex - 1;\n        return prevIndex < 0 ? length - 1 : prevIndex;\n      }\n\n    case "ArrowRight":\n      {\n        return (currentIndex + 1) % length;\n      }\n\n    case "ArrowDown":\n      {\n        const nextIndex = currentIndex + _colors__WEBPACK_IMPORTED_MODULE_1__.COLORS_PER_ROW;\n        return nextIndex >= length ? currentIndex % _colors__WEBPACK_IMPORTED_MODULE_1__.COLORS_PER_ROW : nextIndex;\n      }\n\n    case "ArrowUp":\n      {\n        const prevIndex = currentIndex - _colors__WEBPACK_IMPORTED_MODULE_1__.COLORS_PER_ROW;\n        const newIndex = prevIndex < 0 ? _colors__WEBPACK_IMPORTED_MODULE_1__.COLORS_PER_ROW * rows + prevIndex : prevIndex;\n        return newIndex >= length ? undefined : newIndex;\n      }\n  }\n};\n/**\n * @returns true if the event was handled\n */\n\n\nconst hotkeyHandler = ({\n  e,\n  colorObj,\n  onChange,\n  palette,\n  customColors,\n  setActiveColorPickerSection,\n  activeShade\n}) => {\n  if ((colorObj === null || colorObj === void 0 ? void 0 : colorObj.shade) != null) {\n    // shift + numpad is extremely messed up on windows apparently\n    if (["Digit1", "Digit2", "Digit3", "Digit4", "Digit5"].includes(e.code) && e.shiftKey) {\n      const newShade = Number(e.code.slice(-1)) - 1;\n      onChange(palette[colorObj.colorName][newShade]);\n      setActiveColorPickerSection("shades");\n      return true;\n    }\n  }\n\n  if (["1", "2", "3", "4", "5"].includes(e.key)) {\n    const c = customColors[Number(e.key) - 1];\n\n    if (c) {\n      onChange(customColors[Number(e.key) - 1]);\n      setActiveColorPickerSection("custom");\n      return true;\n    }\n  }\n\n  if (_colorPickerUtils__WEBPACK_IMPORTED_MODULE_2__.colorPickerHotkeyBindings.includes(e.key)) {\n    const index = _colorPickerUtils__WEBPACK_IMPORTED_MODULE_2__.colorPickerHotkeyBindings.indexOf(e.key);\n    const paletteKey = Object.keys(palette)[index];\n    const paletteValue = palette[paletteKey];\n    const r = Array.isArray(paletteValue) ? paletteValue[activeShade] : paletteValue;\n    onChange(r);\n    setActiveColorPickerSection("baseColors");\n    return true;\n  }\n\n  return false;\n};\n/**\n * @returns true if the event was handled\n */\n\n\nconst colorPickerKeyNavHandler = ({\n  event,\n  activeColorPickerSection,\n  palette,\n  color,\n  onChange,\n  customColors,\n  setActiveColorPickerSection,\n  updateData,\n  activeShade,\n  onEyeDropperToggle,\n  onEscape\n}) => {\n  if (event[_keys__WEBPACK_IMPORTED_MODULE_0__.KEYS.CTRL_OR_CMD]) {\n    return false;\n  }\n\n  if (event.key === _keys__WEBPACK_IMPORTED_MODULE_0__.KEYS.ESCAPE) {\n    onEscape(event);\n    return true;\n  } // checkt using `key` to ignore combos with Alt modifier\n\n\n  if (event.key === _keys__WEBPACK_IMPORTED_MODULE_0__.KEYS.ALT) {\n    onEyeDropperToggle(true);\n    return true;\n  }\n\n  if (event.key === _keys__WEBPACK_IMPORTED_MODULE_0__.KEYS.I) {\n    onEyeDropperToggle();\n    return true;\n  }\n\n  const colorObj = (0,_colorPickerUtils__WEBPACK_IMPORTED_MODULE_2__.getColorNameAndShadeFromColor)({\n    color,\n    palette\n  });\n\n  if (event.key === _keys__WEBPACK_IMPORTED_MODULE_0__.KEYS.TAB) {\n    const sectionsMap = {\n      custom: !!customColors.length,\n      baseColors: true,\n      shades: (colorObj === null || colorObj === void 0 ? void 0 : colorObj.shade) != null,\n      hex: true\n    };\n    const sections = Object.entries(sectionsMap).reduce((acc, [key, value]) => {\n      if (value) {\n        acc.push(key);\n      }\n\n      return acc;\n    }, []);\n    const activeSectionIndex = sections.indexOf(activeColorPickerSection);\n    const indexOffset = event.shiftKey ? -1 : 1;\n    const nextSectionIndex = activeSectionIndex + indexOffset > sections.length - 1 ? 0 : activeSectionIndex + indexOffset < 0 ? sections.length - 1 : activeSectionIndex + indexOffset;\n    const nextSection = sections[nextSectionIndex];\n\n    if (nextSection) {\n      setActiveColorPickerSection(nextSection);\n    }\n\n    if (nextSection === "custom") {\n      onChange(customColors[0]);\n    } else if (nextSection === "baseColors") {\n      const baseColorName = Object.entries(palette).find(([name, shades]) => {\n        if (Array.isArray(shades)) {\n          return shades.includes(color);\n        } else if (shades === color) {\n          return name;\n        }\n\n        return null;\n      });\n\n      if (!baseColorName) {\n        onChange(_colors__WEBPACK_IMPORTED_MODULE_1__.COLOR_PALETTE.black);\n      }\n    }\n\n    event.preventDefault();\n    event.stopPropagation();\n    return true;\n  }\n\n  if (hotkeyHandler({\n    e: event,\n    colorObj,\n    onChange,\n    palette,\n    customColors,\n    setActiveColorPickerSection,\n    activeShade\n  })) {\n    return true;\n  }\n\n  if (activeColorPickerSection === "shades") {\n    if (colorObj) {\n      const {\n        shade\n      } = colorObj;\n      const newShade = arrowHandler(event.key, shade, _colors__WEBPACK_IMPORTED_MODULE_1__.COLORS_PER_ROW);\n\n      if (newShade !== undefined) {\n        onChange(palette[colorObj.colorName][newShade]);\n        return true;\n      }\n    }\n  }\n\n  if (activeColorPickerSection === "baseColors") {\n    if (colorObj) {\n      const {\n        colorName\n      } = colorObj;\n      const colorNames = Object.keys(palette);\n      const indexOfColorName = colorNames.indexOf(colorName);\n      const newColorIndex = arrowHandler(event.key, indexOfColorName, colorNames.length);\n\n      if (newColorIndex !== undefined) {\n        const newColorName = colorNames[newColorIndex];\n        const newColorNameValue = palette[newColorName];\n        onChange(Array.isArray(newColorNameValue) ? newColorNameValue[activeShade] : newColorNameValue);\n        return true;\n      }\n    }\n  }\n\n  if (activeColorPickerSection === "custom") {\n    const indexOfColor = customColors.indexOf(color);\n    const newColorIndex = arrowHandler(event.key, indexOfColor, customColors.length);\n\n    if (newColorIndex !== undefined) {\n      const newColor = customColors[newColorIndex];\n      onChange(newColor);\n      return true;\n    }\n  }\n\n  return false;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 10188 characters]\n//# sourceURL=webpack-internal:///../../components/ColorPicker/keyboardNavHandlers.ts\n');
              }
            ),
            /***/
            "../../components/ConfirmDialog.tsx": (
              /*!******************************************!*\
                !*** ../../components/ConfirmDialog.tsx ***!
                \******************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _Dialog__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Dialog */ "../../components/Dialog.tsx");\n/* harmony import */ var _ConfirmDialog_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./ConfirmDialog.scss */ "../../components/ConfirmDialog.scss");\n/* harmony import */ var _DialogActionButton__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./DialogActionButton */ "../../components/DialogActionButton.tsx");\n/* harmony import */ var jotai__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! jotai */ "../../../node_modules/jotai/esm/index.mjs");\n/* harmony import */ var _LibraryMenu__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./LibraryMenu */ "../../components/LibraryMenu.tsx");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./App */ "../../components/App.tsx");\n/* harmony import */ var _jotai__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../jotai */ "../../jotai.ts");\nvar __rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n\n  if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\n\n\n\n\n\n\nconst ConfirmDialog = props => {\n  const {\n    onConfirm,\n    onCancel,\n    children,\n    confirmText = (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("buttons.confirm"),\n    cancelText = (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("buttons.cancel"),\n    className = ""\n  } = props,\n        rest = __rest(props, ["onConfirm", "onCancel", "children", "confirmText", "cancelText", "className"]);\n\n  const setAppState = (0,_App__WEBPACK_IMPORTED_MODULE_6__.useExcalidrawSetAppState)();\n  const setIsLibraryMenuOpen = (0,jotai__WEBPACK_IMPORTED_MODULE_8__.useSetAtom)(_LibraryMenu__WEBPACK_IMPORTED_MODULE_5__.isLibraryMenuOpenAtom, _jotai__WEBPACK_IMPORTED_MODULE_7__.jotaiScope);\n  const {\n    container\n  } = (0,_App__WEBPACK_IMPORTED_MODULE_6__.useExcalidrawContainer)();\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Dialog__WEBPACK_IMPORTED_MODULE_2__.Dialog, Object.assign({\n    onCloseRequest: onCancel,\n    size: "small"\n  }, rest, {\n    className: `confirm-dialog ${className}`\n  }, {\n    children: [children, (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n      className: "confirm-dialog-buttons"\n    }, {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_DialogActionButton__WEBPACK_IMPORTED_MODULE_4__["default"], {\n        label: cancelText,\n        onClick: () => {\n          setAppState({\n            openMenu: null\n          });\n          setIsLibraryMenuOpen(false);\n          onCancel();\n          container === null || container === void 0 ? void 0 : container.focus();\n        }\n      }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_DialogActionButton__WEBPACK_IMPORTED_MODULE_4__["default"], {\n        label: confirmText,\n        onClick: () => {\n          setAppState({\n            openMenu: null\n          });\n          setIsLibraryMenuOpen(false);\n          onConfirm();\n          container === null || container === void 0 ? void 0 : container.focus();\n        },\n        actionType: "danger"\n      })]\n    }))]\n  }));\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ConfirmDialog);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4384 characters]\n//# sourceURL=webpack-internal:///../../components/ConfirmDialog.tsx\n');
              }
            ),
            /***/
            "../../components/ContextMenu.tsx": (
              /*!****************************************!*\
                !*** ../../components/ContextMenu.tsx ***!
                \****************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "CONTEXT_MENU_SEPARATOR": () => (/* binding */ CONTEXT_MENU_SEPARATOR),
/* harmony export */   "ContextMenu": () => (/* binding */ ContextMenu)
/* harmony export */ });
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");
/* harmony import */ var _Popover__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Popover */ "../../components/Popover.tsx");
/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");
/* harmony import */ var _ContextMenu_scss__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./ContextMenu.scss */ "../../components/ContextMenu.scss");
/* harmony import */ var _actions_shortcuts__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../actions/shortcuts */ "../../actions/shortcuts.ts");
/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./App */ "../../components/App.tsx");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_7__);








const CONTEXT_MENU_SEPARATOR = "separator";
const ContextMenu = react__WEBPACK_IMPORTED_MODULE_7___default().memo(({
  actionManager,
  items,
  top,
  left,
  onClose
}) => {
  const appState = (0,_App__WEBPACK_IMPORTED_MODULE_6__.useExcalidrawAppState)();
  const elements = (0,_App__WEBPACK_IMPORTED_MODULE_6__.useExcalidrawElements)();
  const filteredItems = items.reduce((acc, item) => {
    if (item && (item === CONTEXT_MENU_SEPARATOR || !item.predicate || item.predicate(elements, appState, actionManager.app.props, actionManager.app))) {
      acc.push(item);
    }

    return acc;
  }, []);
  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Popover__WEBPACK_IMPORTED_MODULE_2__.Popover, Object.assign({
    onCloseRequest: () => {
      onClose();
    },
    top: top,
    left: left,
    fitInViewport: true,
    offsetLeft: appState.offsetLeft,
    offsetTop: appState.offsetTop,
    viewportWidth: appState.width,
    viewportHeight: appState.height
  }, {
    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("ul", Object.assign({
      className: "context-menu",
      onContextMenu: event => event.preventDefault()
    }, {
      children: filteredItems.map((item, idx) => {
        var _a;

        if (item === CONTEXT_MENU_SEPARATOR) {
          if (!filteredItems[idx - 1] || filteredItems[idx - 1] === CONTEXT_MENU_SEPARATOR) {
            return null;
          }

          return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("hr", {
            className: "context-menu-item-separator"
          }, idx);
        }

        const actionName = item.name;
        let label = "";

        if (item.contextItemLabel) {
          if (typeof item.contextItemLabel === "function") {
            label = (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)(item.contextItemLabel(elements, appState, actionManager.app));
          } else {
            label = (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)(item.contextItemLabel);
          }
        }

        return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("li", Object.assign({
          "data-testid": actionName,
          onClick: () => {
            // we need update state before executing the action in case
            // the action uses the appState it's being passed (that still
            // contains a defined contextMenu) to return the next state.
            onClose(() => {
              actionManager.executeAction(item, "contextMenu");
            });
          }
        }, {
          children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("button", Object.assign({
            className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__["default"])("context-menu-item", {
              dangerous: actionName === "deleteSelectedElements",
              checkmark: (_a = item.checked) === null || _a === void 0 ? void 0 : _a.call(item, appState)
            })
          }, {
            children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({
              className: "context-menu-item__label"
            }, {
              children: label
            })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("kbd", Object.assign({
              className: "context-menu-item__shortcut"
            }, {
              children: actionName ? (0,_actions_shortcuts__WEBPACK_IMPORTED_MODULE_5__.getShortcutFromShortcutName)(actionName) : ""
            }))]
          }))
        }), idx);
      })
    }))
  }));
});//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5712 characters]
//# sourceURL=webpack-internal:///../../components/ContextMenu.tsx
`);
              }
            ),
            /***/
            "../../components/DarkModeToggle.tsx": (
              /*!*******************************************!*\
                !*** ../../components/DarkModeToggle.tsx ***!
                \*******************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "DarkModeToggle": () => (/* binding */ DarkModeToggle)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _ToolIcon_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ToolIcon.scss */ "../../components/ToolIcon.scss");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _ToolButton__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./ToolButton */ "../../components/ToolButton.tsx");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n\n\n\n\n // We chose to use only explicit toggle and not a third option for system value,\n// but this could be added in the future.\n\nconst DarkModeToggle = props => {\n  const title = props.title || (props.value === "dark" ? (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("buttons.lightMode") : (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("buttons.darkMode"));\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ToolButton__WEBPACK_IMPORTED_MODULE_3__.ToolButton, {\n    type: "icon",\n    icon: props.value === _constants__WEBPACK_IMPORTED_MODULE_4__.THEME.LIGHT ? ICONS.MOON : ICONS.SUN,\n    title: title,\n    "aria-label": title,\n    onClick: () => props.onChange(props.value === _constants__WEBPACK_IMPORTED_MODULE_4__.THEME.DARK ? _constants__WEBPACK_IMPORTED_MODULE_4__.THEME.LIGHT : _constants__WEBPACK_IMPORTED_MODULE_4__.THEME.DARK),\n    "data-testid": "toggle-dark-mode"\n  });\n};\nconst ICONS = {\n  SUN: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("svg", Object.assign({\n    width: "512",\n    height: "512",\n    className: "rtl-mirror",\n    viewBox: "0 0 512 512"\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      fill: "currentColor",\n      d: "M256 160c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm246.4 80.5l-94.7-47.3 33.5-100.4c4.5-13.6-8.4-26.5-21.9-21.9l-100.4 33.5-47.4-94.8c-6.4-12.8-24.6-12.8-31 0l-47.3 94.7L92.7 70.8c-13.6-4.5-26.5 8.4-21.9 21.9l33.5 100.4-94.7 47.4c-12.8 6.4-12.8 24.6 0 31l94.7 47.3-33.5 100.5c-4.5 13.6 8.4 26.5 21.9 21.9l100.4-33.5 47.3 94.7c6.4 12.8 24.6 12.8 31 0l47.3-94.7 100.4 33.5c13.6 4.5 26.5-8.4 21.9-21.9l-33.5-100.4 94.7-47.3c13-6.5 13-24.7.2-31.1zm-155.9 106c-49.9 49.9-131.1 49.9-181 0-49.9-49.9-49.9-131.1 0-181 49.9-49.9 131.1-49.9 181 0 49.9 49.9 49.9 131.1 0 181z"\n    })\n  })),\n  MOON: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("svg", Object.assign({\n    width: "512",\n    height: "512",\n    className: "rtl-mirror",\n    viewBox: "0 0 512 512"\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      fill: "currentColor",\n      d: "M283.211 512c78.962 0 151.079-35.925 198.857-94.792 7.068-8.708-.639-21.43-11.562-19.35-124.203 23.654-238.262-71.576-238.262-196.954 0-72.222 38.662-138.635 101.498-174.394 9.686-5.512 7.25-20.197-3.756-22.23A258.156 258.156 0 0 0 283.211 0c-141.309 0-256 114.511-256 256 0 141.309 114.511 256 256 256z"\n    })\n  }))\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9EYXJrTW9kZVRvZ2dsZS50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFnRDtBQUN2QjtBQUNHO0FBQ2M7QUFDTCxDQUFDO0FBQ3RDOztBQUVPO0FBQ1AseURBQXlELHdDQUFDLHdCQUF3Qix3Q0FBQztBQUNuRixTQUFTLHNEQUFJLENBQUMsbURBQVU7QUFDeEI7QUFDQSwwQkFBMEIsbURBQVc7QUFDckM7QUFDQTtBQUNBLGtEQUFrRCxrREFBVSxHQUFHLG1EQUFXLEdBQUcsa0RBQVU7QUFDdkY7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLE9BQU8sc0RBQUk7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCxjQUFjLHNEQUFJO0FBQ2xCO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNILFFBQVEsc0RBQUk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCxjQUFjLHNEQUFJO0FBQ2xCO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvRGFya01vZGVUb2dnbGUudHN4PzM5MWEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCBcIi4vVG9vbEljb24uc2Nzc1wiO1xuaW1wb3J0IHsgdCB9IGZyb20gXCIuLi9pMThuXCI7XG5pbXBvcnQgeyBUb29sQnV0dG9uIH0gZnJvbSBcIi4vVG9vbEJ1dHRvblwiO1xuaW1wb3J0IHsgVEhFTUUgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7IC8vIFdlIGNob3NlIHRvIHVzZSBvbmx5IGV4cGxpY2l0IHRvZ2dsZSBhbmQgbm90IGEgdGhpcmQgb3B0aW9uIGZvciBzeXN0ZW0gdmFsdWUsXG4vLyBidXQgdGhpcyBjb3VsZCBiZSBhZGRlZCBpbiB0aGUgZnV0dXJlLlxuXG5leHBvcnQgY29uc3QgRGFya01vZGVUb2dnbGUgPSBwcm9wcyA9PiB7XG4gIGNvbnN0IHRpdGxlID0gcHJvcHMudGl0bGUgfHwgKHByb3BzLnZhbHVlID09PSBcImRhcmtcIiA/IHQoXCJidXR0b25zLmxpZ2h0TW9kZVwiKSA6IHQoXCJidXR0b25zLmRhcmtNb2RlXCIpKTtcbiAgcmV0dXJuIF9qc3goVG9vbEJ1dHRvbiwge1xuICAgIHR5cGU6IFwiaWNvblwiLFxuICAgIGljb246IHByb3BzLnZhbHVlID09PSBUSEVNRS5MSUdIVCA/IElDT05TLk1PT04gOiBJQ09OUy5TVU4sXG4gICAgdGl0bGU6IHRpdGxlLFxuICAgIFwiYXJpYS1sYWJlbFwiOiB0aXRsZSxcbiAgICBvbkNsaWNrOiAoKSA9PiBwcm9wcy5vbkNoYW5nZShwcm9wcy52YWx1ZSA9PT0gVEhFTUUuREFSSyA/IFRIRU1FLkxJR0hUIDogVEhFTUUuREFSSyksXG4gICAgXCJkYXRhLXRlc3RpZFwiOiBcInRvZ2dsZS1kYXJrLW1vZGVcIlxuICB9KTtcbn07XG5jb25zdCBJQ09OUyA9IHtcbiAgU1VOOiBfanN4KFwic3ZnXCIsIE9iamVjdC5hc3NpZ24oe1xuICAgIHdpZHRoOiBcIjUxMlwiLFxuICAgIGhlaWdodDogXCI1MTJcIixcbiAgICBjbGFzc05hbWU6IFwicnRsLW1pcnJvclwiLFxuICAgIHZpZXdCb3g6IFwiMCAwIDUxMiA1MTJcIlxuICB9LCB7XG4gICAgY2hpbGRyZW46IF9qc3goXCJwYXRoXCIsIHtcbiAgICAgIGZpbGw6IFwiY3VycmVudENvbG9yXCIsXG4gICAgICBkOiBcIk0yNTYgMTYwYy01Mi45IDAtOTYgNDMuMS05NiA5NnM0My4xIDk2IDk2IDk2IDk2LTQzLjEgOTYtOTYtNDMuMS05Ni05Ni05NnptMjQ2LjQgODAuNWwtOTQuNy00Ny4zIDMzLjUtMTAwLjRjNC41LTEzLjYtOC40LTI2LjUtMjEuOS0yMS45bC0xMDAuNCAzMy41LTQ3LjQtOTQuOGMtNi40LTEyLjgtMjQuNi0xMi44LTMxIDBsLTQ3LjMgOTQuN0w5Mi43IDcwLjhjLTEzLjYtNC41LTI2LjUgOC40LTIxLjkgMjEuOWwzMy41IDEwMC40LTk0LjcgNDcuNGMtMTIuOCA2LjQtMTIuOCAyNC42IDAgMzFsOTQuNyA0Ny4zLTMzLjUgMTAwLjVjLTQuNSAxMy42IDguNCAyNi41IDIxLjkgMjEuOWwxMDAuNC0zMy41IDQ3LjMgOTQuN2M2LjQgMTIuOCAyNC42IDEyLjggMzEgMGw0Ny4zLTk0LjcgMTAwLjQgMzMuNWMxMy42IDQuNSAyNi41LTguNCAyMS45LTIxLjlsLTMzLjUtMTAwLjQgOTQuNy00Ny4zYzEzLTYuNSAxMy0yNC43LjItMzEuMXptLTE1NS45IDEwNmMtNDkuOSA0OS45LTEzMS4xIDQ5LjktMTgxIDAtNDkuOS00OS45LTQ5LjktMTMxLjEgMC0xODEgNDkuOS00OS45IDEzMS4xLTQ5LjkgMTgxIDAgNDkuOSA0OS45IDQ5LjkgMTMxLjEgMCAxODF6XCJcbiAgICB9KVxuICB9KSksXG4gIE1PT046IF9qc3goXCJzdmdcIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgd2lkdGg6IFwiNTEyXCIsXG4gICAgaGVpZ2h0OiBcIjUxMlwiLFxuICAgIGNsYXNzTmFtZTogXCJydGwtbWlycm9yXCIsXG4gICAgdmlld0JveDogXCIwIDAgNTEyIDUxMlwiXG4gIH0sIHtcbiAgICBjaGlsZHJlbjogX2pzeChcInBhdGhcIiwge1xuICAgICAgZmlsbDogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgIGQ6IFwiTTI4My4yMTEgNTEyYzc4Ljk2MiAwIDE1MS4wNzktMzUuOTI1IDE5OC44NTctOTQuNzkyIDcuMDY4LTguNzA4LS42MzktMjEuNDMtMTEuNTYyLTE5LjM1LTEyNC4yMDMgMjMuNjU0LTIzOC4yNjItNzEuNTc2LTIzOC4yNjItMTk2Ljk1NCAwLTcyLjIyMiAzOC42NjItMTM4LjYzNSAxMDEuNDk4LTE3NC4zOTQgOS42ODYtNS41MTIgNy4yNS0yMC4xOTctMy43NTYtMjIuMjNBMjU4LjE1NiAyNTguMTU2IDAgMCAwIDI4My4yMTEgMGMtMTQxLjMwOSAwLTI1NiAxMTQuNTExLTI1NiAyNTYgMCAxNDEuMzA5IDExNC41MTEgMjU2IDI1NiAyNTZ6XCJcbiAgICB9KVxuICB9KSlcbn07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/DarkModeToggle.tsx\n');
              }
            ),
            /***/
            "../../components/DefaultSidebar.tsx": (
              /*!*******************************************!*\
                !*** ../../components/DefaultSidebar.tsx ***!
                \*******************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "DefaultSidebar": () => (/* binding */ DefaultSidebar)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _context_tunnels__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../context/tunnels */ "../../context/tunnels.ts");\n/* harmony import */ var _context_ui_appState__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../context/ui-appState */ "../../context/ui-appState.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./App */ "../../components/App.tsx");\n/* harmony import */ var _hoc_withInternalFallback__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./hoc/withInternalFallback */ "../../components/hoc/withInternalFallback.tsx");\n/* harmony import */ var _LibraryMenu__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./LibraryMenu */ "../../components/LibraryMenu.tsx");\n/* harmony import */ var _Sidebar_Sidebar__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./Sidebar/Sidebar */ "../../components/Sidebar/Sidebar.tsx");\nvar __rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n\n  if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst DefaultSidebarTrigger = (0,_hoc_withInternalFallback__WEBPACK_IMPORTED_MODULE_9__.withInternalFallback)("DefaultSidebarTrigger", props => {\n  const {\n    DefaultSidebarTriggerTunnel\n  } = (0,_context_tunnels__WEBPACK_IMPORTED_MODULE_4__.useTunnels)();\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(DefaultSidebarTriggerTunnel.In, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_Sidebar_Sidebar__WEBPACK_IMPORTED_MODULE_11__.Sidebar.Trigger, Object.assign({}, props, {\n      className: "default-sidebar-trigger",\n      name: _constants__WEBPACK_IMPORTED_MODULE_3__.DEFAULT_SIDEBAR.name\n    }))\n  });\n});\nDefaultSidebarTrigger.displayName = "DefaultSidebarTrigger";\n\nconst DefaultTabTriggers = _a => {\n  var {\n    children\n  } = _a,\n      rest = __rest(_a, ["children"]);\n\n  const {\n    DefaultSidebarTabTriggersTunnel\n  } = (0,_context_tunnels__WEBPACK_IMPORTED_MODULE_4__.useTunnels)();\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(DefaultSidebarTabTriggersTunnel.In, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_Sidebar_Sidebar__WEBPACK_IMPORTED_MODULE_11__.Sidebar.TabTriggers, Object.assign({}, rest, {\n      children: children\n    }))\n  });\n};\n\nDefaultTabTriggers.displayName = "DefaultTabTriggers";\nconst DefaultSidebar = Object.assign((0,_hoc_withInternalFallback__WEBPACK_IMPORTED_MODULE_9__.withInternalFallback)("DefaultSidebar", _a => {\n  var {\n    children,\n    className,\n    onDock,\n    docked\n  } = _a,\n      rest = __rest(_a, ["children", "className", "onDock", "docked"]);\n\n  const appState = (0,_context_ui_appState__WEBPACK_IMPORTED_MODULE_5__.useUIAppState)();\n  const setAppState = (0,_App__WEBPACK_IMPORTED_MODULE_8__.useExcalidrawSetAppState)();\n  const {\n    DefaultSidebarTabTriggersTunnel\n  } = (0,_context_tunnels__WEBPACK_IMPORTED_MODULE_4__.useTunnels)();\n  return (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_Sidebar_Sidebar__WEBPACK_IMPORTED_MODULE_11__.Sidebar, Object.assign({}, rest, {\n    name: "default",\n    key: "default",\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_2__["default"])("default-sidebar", className),\n    docked: docked !== null && docked !== void 0 ? docked : appState.defaultSidebarDockedPreference,\n    onDock: // `onDock=false` disables docking.\n    // if `docked` passed, but no onDock passed, disable manual docking.\n    onDock === false || !onDock && docked != null ? undefined : // compose to allow the host app to listen on default behavior\n    (0,_utils__WEBPACK_IMPORTED_MODULE_7__.composeEventHandlers)(onDock, docked => {\n      setAppState({\n        defaultSidebarDockedPreference: docked\n      });\n    })\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsxs)(_Sidebar_Sidebar__WEBPACK_IMPORTED_MODULE_11__.Sidebar.Tabs, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsxs)(_Sidebar_Sidebar__WEBPACK_IMPORTED_MODULE_11__.Sidebar.Header, {\n      children: [rest.__fallback && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)("div", Object.assign({\n        style: {\n          color: "var(--color-primary)",\n          fontSize: "1.2em",\n          fontWeight: "bold",\n          textOverflow: "ellipsis",\n          overflow: "hidden",\n          whiteSpace: "nowrap",\n          paddingRight: "1em"\n        }\n      }, {\n        children: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("toolBar.library")\n      })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(DefaultSidebarTabTriggersTunnel.Out, {})]\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_Sidebar_Sidebar__WEBPACK_IMPORTED_MODULE_11__.Sidebar.Tab, Object.assign({\n      tab: _constants__WEBPACK_IMPORTED_MODULE_3__.LIBRARY_SIDEBAR_TAB\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_LibraryMenu__WEBPACK_IMPORTED_MODULE_10__.LibraryMenu, {})\n    })), children]\n  }));\n}), {\n  Trigger: DefaultSidebarTrigger,\n  TabTriggers: DefaultTabTriggers\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6684 characters]\n//# sourceURL=webpack-internal:///../../components/DefaultSidebar.tsx\n');
              }
            ),
            /***/
            "../../components/Dialog.tsx": (
              /*!***********************************!*\
                !*** ../../components/Dialog.tsx ***!
                \***********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "Dialog": () => (/* binding */ Dialog)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _hooks_useCallbackRefState__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../hooks/useCallbackRefState */ "../../hooks/useCallbackRefState.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _components_App__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../components/App */ "../../components/App.tsx");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _Dialog_scss__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./Dialog.scss */ "../../components/Dialog.scss");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./icons */ "../../components/icons.tsx");\n/* harmony import */ var _Island__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./Island */ "../../components/Island.tsx");\n/* harmony import */ var _Modal__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./Modal */ "../../components/Modal.tsx");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var jotai__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! jotai */ "../../../node_modules/jotai/esm/index.mjs");\n/* harmony import */ var _LibraryMenu__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./LibraryMenu */ "../../components/LibraryMenu.tsx");\n/* harmony import */ var _jotai__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../jotai */ "../../jotai.ts");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction getDialogSize(size) {\n  if (size && typeof size === "number") {\n    return size;\n  }\n\n  switch (size) {\n    case "small":\n      return 550;\n\n    case "wide":\n      return 1024;\n\n    case "regular":\n    default:\n      return 800;\n  }\n}\n\nconst Dialog = props => {\n  const [islandNode, setIslandNode] = (0,_hooks_useCallbackRefState__WEBPACK_IMPORTED_MODULE_3__.useCallbackRefState)();\n  const [lastActiveElement] = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(document.activeElement);\n  const {\n    id\n  } = (0,_components_App__WEBPACK_IMPORTED_MODULE_5__.useExcalidrawContainer)();\n  const isFullscreen = (0,_components_App__WEBPACK_IMPORTED_MODULE_5__.useDevice)().viewport.isMobile;\n  (0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(() => {\n    if (!islandNode) {\n      return;\n    }\n\n    const focusableElements = (0,_utils__WEBPACK_IMPORTED_MODULE_11__.queryFocusableElements)(islandNode);\n\n    if (focusableElements.length > 0 && props.autofocus !== false) {\n      // If there\'s an element other than close, focus it.\n      (focusableElements[1] || focusableElements[0]).focus();\n    }\n\n    const handleKeyDown = event => {\n      if (event.key === _keys__WEBPACK_IMPORTED_MODULE_6__.KEYS.TAB) {\n        const focusableElements = (0,_utils__WEBPACK_IMPORTED_MODULE_11__.queryFocusableElements)(islandNode);\n        const {\n          activeElement\n        } = document;\n        const currentIndex = focusableElements.findIndex(element => element === activeElement);\n\n        if (currentIndex === 0 && event.shiftKey) {\n          focusableElements[focusableElements.length - 1].focus();\n          event.preventDefault();\n        } else if (currentIndex === focusableElements.length - 1 && !event.shiftKey) {\n          focusableElements[0].focus();\n          event.preventDefault();\n        }\n      }\n    };\n\n    islandNode.addEventListener("keydown", handleKeyDown);\n    return () => islandNode.removeEventListener("keydown", handleKeyDown);\n  }, [islandNode, props.autofocus]);\n  const setAppState = (0,_components_App__WEBPACK_IMPORTED_MODULE_5__.useExcalidrawSetAppState)();\n  const setIsLibraryMenuOpen = (0,jotai__WEBPACK_IMPORTED_MODULE_14__.useSetAtom)(_LibraryMenu__WEBPACK_IMPORTED_MODULE_12__.isLibraryMenuOpenAtom, _jotai__WEBPACK_IMPORTED_MODULE_13__.jotaiScope);\n\n  const onClose = () => {\n    setAppState({\n      openMenu: null\n    });\n    setIsLibraryMenuOpen(false);\n    lastActiveElement.focus();\n    props.onCloseRequest();\n  };\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Modal__WEBPACK_IMPORTED_MODULE_10__.Modal, Object.assign({\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__["default"])("Dialog", props.className, {\n      "Dialog--fullscreen": isFullscreen\n    }),\n    labelledBy: "dialog-title",\n    maxWidth: getDialogSize(props.size),\n    onCloseRequest: onClose,\n    closeOnClickOutside: props.closeOnClickOutside\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Island__WEBPACK_IMPORTED_MODULE_9__.Island, Object.assign({\n      ref: setIslandNode\n    }, {\n      children: [props.title && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("h2", Object.assign({\n        id: `${id}-dialog-title`,\n        className: "Dialog__title"\n      }, {\n        children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", Object.assign({\n          className: "Dialog__titleContent"\n        }, {\n          children: props.title\n        }))\n      })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("button", Object.assign({\n        className: "Dialog__close",\n        onClick: onClose,\n        title: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("buttons.close"),\n        "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("buttons.close")\n      }, {\n        children: isFullscreen ? _icons__WEBPACK_IMPORTED_MODULE_8__.back : _icons__WEBPACK_IMPORTED_MODULE_8__.CloseIcon\n      })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n        className: "Dialog__content"\n      }, {\n        children: props.children\n      }))]\n    }))\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6752 characters]\n//# sourceURL=webpack-internal:///../../components/Dialog.tsx\n');
              }
            ),
            /***/
            "../../components/DialogActionButton.tsx": (
              /*!***********************************************!*\
                !*** ../../components/DialogActionButton.tsx ***!
                \***********************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _DialogActionButton_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./DialogActionButton.scss */ "../../components/DialogActionButton.scss");\n/* harmony import */ var _Spinner__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Spinner */ "../../components/Spinner.tsx");\nvar __rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n\n  if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\n\nconst DialogActionButton = _a => {\n  var {\n    label,\n    onClick,\n    className,\n    children,\n    actionType,\n    type = "button",\n    isLoading\n  } = _a,\n      rest = __rest(_a, ["label", "onClick", "className", "children", "actionType", "type", "isLoading"]);\n\n  const cs = actionType ? `Dialog__action-button--${actionType}` : "";\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("button", Object.assign({\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__["default"])("Dialog__action-button", cs, className),\n    type: type,\n    "aria-label": label,\n    onClick: onClick\n  }, rest, {\n    children: [children && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      style: isLoading ? {\n        visibility: "hidden"\n      } : {}\n    }, {\n      children: children\n    })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      style: isLoading ? {\n        visibility: "hidden"\n      } : {}\n    }, {\n      children: label\n    })), isLoading && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      style: {\n        position: "absolute",\n        inset: 0\n      }\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Spinner__WEBPACK_IMPORTED_MODULE_3__["default"], {})\n    }))]\n  }));\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (DialogActionButton);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9EaWFsb2dBY3Rpb25CdXR0b24udHN4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLGFBQWEsU0FBSSxJQUFJLFNBQUk7QUFDekI7O0FBRUE7O0FBRUEsNEhBQTRILGNBQWM7QUFDMUk7QUFDQTtBQUNBO0FBQ0E7O0FBRStEO0FBQ3ZDO0FBQ1c7QUFDSDs7QUFFaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKOztBQUVBLG9EQUFvRCxXQUFXO0FBQy9ELFNBQVMsdURBQUs7QUFDZCxlQUFlLGdEQUFJO0FBQ25CO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCwyQkFBMkIsc0RBQUk7QUFDL0I7QUFDQTtBQUNBLFFBQVE7QUFDUixLQUFLO0FBQ0w7QUFDQSxLQUFLLElBQUksc0RBQUk7QUFDYjtBQUNBO0FBQ0EsUUFBUTtBQUNSLEtBQUs7QUFDTDtBQUNBLEtBQUssaUJBQWlCLHNEQUFJO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLGdCQUFnQixzREFBSSxDQUFDLGdEQUFPLElBQUk7QUFDaEMsS0FBSztBQUNMLEdBQUc7QUFDSDs7QUFFQSxpRUFBZSxrQkFBa0IiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9EaWFsb2dBY3Rpb25CdXR0b24udHN4PzExYzgiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fcmVzdCA9IHRoaXMgJiYgdGhpcy5fX3Jlc3QgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgdmFyIHQgPSB7fTtcblxuICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMCkgdFtwXSA9IHNbcF07XG5cbiAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKSBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKSB0W3BbaV1dID0gc1twW2ldXTtcbiAgfVxuICByZXR1cm4gdDtcbn07XG5cbmltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgY2xzeCBmcm9tIFwiY2xzeFwiO1xuaW1wb3J0IFwiLi9EaWFsb2dBY3Rpb25CdXR0b24uc2Nzc1wiO1xuaW1wb3J0IFNwaW5uZXIgZnJvbSBcIi4vU3Bpbm5lclwiO1xuXG5jb25zdCBEaWFsb2dBY3Rpb25CdXR0b24gPSBfYSA9PiB7XG4gIHZhciB7XG4gICAgbGFiZWwsXG4gICAgb25DbGljayxcbiAgICBjbGFzc05hbWUsXG4gICAgY2hpbGRyZW4sXG4gICAgYWN0aW9uVHlwZSxcbiAgICB0eXBlID0gXCJidXR0b25cIixcbiAgICBpc0xvYWRpbmdcbiAgfSA9IF9hLFxuICAgICAgcmVzdCA9IF9fcmVzdChfYSwgW1wibGFiZWxcIiwgXCJvbkNsaWNrXCIsIFwiY2xhc3NOYW1lXCIsIFwiY2hpbGRyZW5cIiwgXCJhY3Rpb25UeXBlXCIsIFwidHlwZVwiLCBcImlzTG9hZGluZ1wiXSk7XG5cbiAgY29uc3QgY3MgPSBhY3Rpb25UeXBlID8gYERpYWxvZ19fYWN0aW9uLWJ1dHRvbi0tJHthY3Rpb25UeXBlfWAgOiBcIlwiO1xuICByZXR1cm4gX2pzeHMoXCJidXR0b25cIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgY2xhc3NOYW1lOiBjbHN4KFwiRGlhbG9nX19hY3Rpb24tYnV0dG9uXCIsIGNzLCBjbGFzc05hbWUpLFxuICAgIHR5cGU6IHR5cGUsXG4gICAgXCJhcmlhLWxhYmVsXCI6IGxhYmVsLFxuICAgIG9uQ2xpY2s6IG9uQ2xpY2tcbiAgfSwgcmVzdCwge1xuICAgIGNoaWxkcmVuOiBbY2hpbGRyZW4gJiYgX2pzeChcImRpdlwiLCBPYmplY3QuYXNzaWduKHtcbiAgICAgIHN0eWxlOiBpc0xvYWRpbmcgPyB7XG4gICAgICAgIHZpc2liaWxpdHk6IFwiaGlkZGVuXCJcbiAgICAgIH0gOiB7fVxuICAgIH0sIHtcbiAgICAgIGNoaWxkcmVuOiBjaGlsZHJlblxuICAgIH0pKSwgX2pzeChcImRpdlwiLCBPYmplY3QuYXNzaWduKHtcbiAgICAgIHN0eWxlOiBpc0xvYWRpbmcgPyB7XG4gICAgICAgIHZpc2liaWxpdHk6IFwiaGlkZGVuXCJcbiAgICAgIH0gOiB7fVxuICAgIH0sIHtcbiAgICAgIGNoaWxkcmVuOiBsYWJlbFxuICAgIH0pKSwgaXNMb2FkaW5nICYmIF9qc3goXCJkaXZcIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgICBzdHlsZToge1xuICAgICAgICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICAgICAgICBpbnNldDogMFxuICAgICAgfVxuICAgIH0sIHtcbiAgICAgIGNoaWxkcmVuOiBfanN4KFNwaW5uZXIsIHt9KVxuICAgIH0pKV1cbiAgfSkpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRGlhbG9nQWN0aW9uQnV0dG9uOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/DialogActionButton.tsx\n');
              }
            ),
            /***/
            "../../components/ErrorDialog.tsx": (
              /*!****************************************!*\
                !*** ../../components/ErrorDialog.tsx ***!
                \****************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "ErrorDialog": () => (/* binding */ ErrorDialog)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _Dialog__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Dialog */ "../../components/Dialog.tsx");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./App */ "../../components/App.tsx");\n\n\n\n\n\nconst ErrorDialog = ({\n  children,\n  onClose\n}) => {\n  const [modalIsShown, setModalIsShown] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(!!children);\n  const {\n    container: excalidrawContainer\n  } = (0,_App__WEBPACK_IMPORTED_MODULE_4__.useExcalidrawContainer)();\n  const handleClose = react__WEBPACK_IMPORTED_MODULE_1___default().useCallback(() => {\n    setModalIsShown(false);\n\n    if (onClose) {\n      onClose();\n    } // TODO: Fix the A11y issues so this is never needed since we should always focus on last active element\n\n\n    excalidrawContainer === null || excalidrawContainer === void 0 ? void 0 : excalidrawContainer.focus();\n  }, [onClose, excalidrawContainer]);\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n    children: modalIsShown && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Dialog__WEBPACK_IMPORTED_MODULE_3__.Dialog, Object.assign({\n      size: "small",\n      onCloseRequest: handleClose,\n      title: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("errorDialog.title")\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n        style: {\n          whiteSpace: "pre-wrap"\n        }\n      }, {\n        children: children\n      }))\n    }))\n  });\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9FcnJvckRpYWxvZy50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBdUU7QUFDL0I7QUFDWjtBQUNNO0FBQ2E7QUFDeEM7QUFDUDtBQUNBO0FBQ0EsQ0FBQztBQUNELDBDQUEwQywrQ0FBUTtBQUNsRDtBQUNBO0FBQ0EsSUFBSSxFQUFFLDREQUFzQjtBQUM1QixzQkFBc0Isd0RBQWlCO0FBQ3ZDOztBQUVBO0FBQ0E7QUFDQSxNQUFNOzs7QUFHTjtBQUNBLEdBQUc7QUFDSCxTQUFTLHNEQUFJLENBQUMsdURBQVM7QUFDdkIsOEJBQThCLHNEQUFJLENBQUMsMkNBQU07QUFDekM7QUFDQTtBQUNBLGFBQWEsd0NBQUM7QUFDZCxLQUFLO0FBQ0wsZ0JBQWdCLHNEQUFJO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0wsR0FBRztBQUNIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvRXJyb3JEaWFsb2cudHN4PzI4NzIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsganN4IGFzIF9qc3gsIEZyYWdtZW50IGFzIF9GcmFnbWVudCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB0IH0gZnJvbSBcIi4uL2kxOG5cIjtcbmltcG9ydCB7IERpYWxvZyB9IGZyb20gXCIuL0RpYWxvZ1wiO1xuaW1wb3J0IHsgdXNlRXhjYWxpZHJhd0NvbnRhaW5lciB9IGZyb20gXCIuL0FwcFwiO1xuZXhwb3J0IGNvbnN0IEVycm9yRGlhbG9nID0gKHtcbiAgY2hpbGRyZW4sXG4gIG9uQ2xvc2Vcbn0pID0+IHtcbiAgY29uc3QgW21vZGFsSXNTaG93biwgc2V0TW9kYWxJc1Nob3duXSA9IHVzZVN0YXRlKCEhY2hpbGRyZW4pO1xuICBjb25zdCB7XG4gICAgY29udGFpbmVyOiBleGNhbGlkcmF3Q29udGFpbmVyXG4gIH0gPSB1c2VFeGNhbGlkcmF3Q29udGFpbmVyKCk7XG4gIGNvbnN0IGhhbmRsZUNsb3NlID0gUmVhY3QudXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldE1vZGFsSXNTaG93bihmYWxzZSk7XG5cbiAgICBpZiAob25DbG9zZSkge1xuICAgICAgb25DbG9zZSgpO1xuICAgIH0gLy8gVE9ETzogRml4IHRoZSBBMTF5IGlzc3VlcyBzbyB0aGlzIGlzIG5ldmVyIG5lZWRlZCBzaW5jZSB3ZSBzaG91bGQgYWx3YXlzIGZvY3VzIG9uIGxhc3QgYWN0aXZlIGVsZW1lbnRcblxuXG4gICAgZXhjYWxpZHJhd0NvbnRhaW5lciA9PT0gbnVsbCB8fCBleGNhbGlkcmF3Q29udGFpbmVyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleGNhbGlkcmF3Q29udGFpbmVyLmZvY3VzKCk7XG4gIH0sIFtvbkNsb3NlLCBleGNhbGlkcmF3Q29udGFpbmVyXSk7XG4gIHJldHVybiBfanN4KF9GcmFnbWVudCwge1xuICAgIGNoaWxkcmVuOiBtb2RhbElzU2hvd24gJiYgX2pzeChEaWFsb2csIE9iamVjdC5hc3NpZ24oe1xuICAgICAgc2l6ZTogXCJzbWFsbFwiLFxuICAgICAgb25DbG9zZVJlcXVlc3Q6IGhhbmRsZUNsb3NlLFxuICAgICAgdGl0bGU6IHQoXCJlcnJvckRpYWxvZy50aXRsZVwiKVxuICAgIH0sIHtcbiAgICAgIGNoaWxkcmVuOiBfanN4KFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oe1xuICAgICAgICBzdHlsZToge1xuICAgICAgICAgIHdoaXRlU3BhY2U6IFwicHJlLXdyYXBcIlxuICAgICAgICB9XG4gICAgICB9LCB7XG4gICAgICAgIGNoaWxkcmVuOiBjaGlsZHJlblxuICAgICAgfSkpXG4gICAgfSkpXG4gIH0pO1xufTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/ErrorDialog.tsx\n');
              }
            ),
            /***/
            "../../components/ExcalidrawLogo.tsx": (
              /*!*******************************************!*\
                !*** ../../components/ExcalidrawLogo.tsx ***!
                \*******************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "ExcalidrawLogo": () => (/* binding */ ExcalidrawLogo)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _ExcalidrawLogo_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ExcalidrawLogo.scss */ "../../components/ExcalidrawLogo.scss");\n\n\n\nconst LogoIcon = () => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("svg", Object.assign({\n  viewBox: "0 0 40 40",\n  fill: "none",\n  xmlns: "http://www.w3.org/2000/svg",\n  className: "ExcalidrawLogo-icon"\n}, {\n  children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M39.9 32.889a.326.326 0 0 0-.279-.056c-2.094-3.083-4.774-6-7.343-8.833l-.419-.472a.212.212 0 0 0-.056-.139.586.586 0 0 0-.167-.111l-.084-.083-.056-.056c-.084-.167-.28-.278-.475-.167-.782.39-1.507.973-2.206 1.528-.92.722-1.842 1.445-2.708 2.25a8.405 8.405 0 0 0-.977 1.028c-.14.194-.028.361.14.444-.615.611-1.23 1.223-1.843 1.861a.315.315 0 0 0-.084.223c0 .083.056.166.111.194l1.09.833v.028c1.535 1.528 4.244 3.611 7.12 5.861.418.334.865.667 1.284 1 .195.223.39.473.558.695.084.11.28.139.391.055.056.056.14.111.196.167a.398.398 0 0 0 .167.056.255.255 0 0 0 .224-.111.394.394 0 0 0 .055-.167c.029 0 .028.028.056.028a.318.318 0 0 0 .224-.084l5.082-5.528a.309.309 0 0 0 0-.444Zm-14.63-1.917a.485.485 0 0 0 .111.14c.586.5 1.2 1 1.843 1.555l-2.569-1.945-.251-.166c-.056-.028-.112-.084-.168-.111l-.195-.167.056-.056.055-.055.112-.111c.866-.861 2.346-2.306 3.1-3.028-.81.805-2.43 3.167-2.095 3.944Zm8.767 6.89-2.122-1.612a44.713 44.713 0 0 0-2.625-2.5c1.145.861 2.122 1.611 2.262 1.75 1.117.972 1.06.806 1.815 1.445l.921.666a1.06 1.06 0 0 1-.251.25Zm.558.416-.056-.028c.084-.055.168-.111.252-.194l-.196.222ZM1.089 5.75c.055.361.14.722.195 1.056.335 1.833.67 3.5 1.284 4.75l.252.944c.084.361.223.806.363.917 1.424 1.25 3.602 3.11 5.947 4.889a.295.295 0 0 0 .363 0s0 .027.028.027a.254.254 0 0 0 .196.084.318.318 0 0 0 .223-.084c2.988-3.305 5.221-6.027 6.813-8.305.112-.111.14-.278.14-.417.111-.111.195-.25.307-.333.111-.111.111-.306 0-.39l-.028-.027c0-.055-.028-.139-.084-.167-.698-.666-1.2-1.138-1.731-1.638-.922-.862-1.871-1.75-3.881-3.75l-.028-.028c-.028-.028-.056-.056-.112-.056-.558-.194-1.703-.389-3.127-.639C6.087 2.223 3.21 1.723.614.944c0 0-.168 0-.196.028l-.083.084c-.028.027-.056.055-.224.11h.056-.056c.028.167.028.278.084.473 0 .055.112.5.112.555l.782 3.556Zm15.496 3.278-.335-.334c.084.112.196.195.335.334Zm-3.546 4.666-.056.056c0-.028.028-.056.056-.056Zm-2.038-10c.168.167.866.834 1.033.973-.726-.334-2.54-1.167-3.379-1.445.838.167 1.983.334 2.346.472ZM1.424 2.306c.419.722.754 3.222 1.089 5.666-.196-.778-.335-1.555-.503-2.278-.251-1.277-.503-2.416-.838-3.416.056 0 .14 0 .252.028Zm-.168-.584c-.112 0-.223-.028-.307-.028 0-.027 0-.055-.028-.055.14 0 .223.028.335.083Zm-1.089.222c0-.027 0-.027 0 0ZM39.453 1.333c.028-.11-.558-.61-.363-.639.42-.027.42-.666 0-.666-.558.028-1.144.166-1.675.25-.977.194-1.982.389-2.96.61-2.205.473-4.383.973-6.561 1.557-.67.194-1.424.333-2.066.666-.224.111-.196.333-.084.472-.056.028-.084.028-.14.056-.195.028-.363.056-.558.083-.168.028-.252.167-.224.334 0 .027.028.083.028.11-1.173 1.556-2.485 3.195-3.909 4.945-1.396 1.611-2.876 3.306-4.356 5.056-4.719 5.5-10.052 11.75-15.943 17.25a.268.268 0 0 0 0 .389c.028.027.056.055.084.055-.084.084-.168.14-.252.222-.056.056-.084.111-.084.167a.605.605 0 0 0-.111.139c-.112.111-.112.305.028.389.111.11.307.11.39-.028.029-.028.029-.056.056-.056a.44.44 0 0 1 .615 0c.335.362.67.723.977 1.028l-.698-.583c-.112-.111-.307-.083-.39.028-.113.11-.085.305.027.389l7.427 6.194c.056.056.112.056.196.056s.14-.028.195-.084l.168-.166c.028.027.083.027.111.027.084 0 .14-.027.196-.083 10.052-10.055 18.15-17.639 27.42-24.417.083-.055.111-.166.111-.25.112 0 .196-.083.251-.194 1.704-5.194 2.039-9.806 2.15-12.083v-.028c0-.028.028-.056.028-.083.028-.056.028-.084.028-.084a1.626 1.626 0 0 0-.111-1.028ZM21.472 9.5c.446-.5.893-1.028 1.34-1.5-2.876 3.778-7.65 9.583-14.408 16.5 4.607-5.083 9.242-10.333 13.068-15ZM5.193 35.778h.084-.084Zm3.462 3.194c-.027-.028-.027-.028 0-.028v.028Zm4.16-3.583c.224-.25.448-.472.699-.722 0 0 0 .027.028.027-.252.223-.475.445-.726.695Zm1.146-1.111c.14-.14.279-.334.446-.5l.028-.028c1.648-1.694 3.351-3.389 5.082-5.111l.028-.028c.419-.333.921-.694 1.368-1.028a379.003 379.003 0 0 0-6.952 6.695ZM24.794 6.472c-.921 1.195-1.954 2.778-2.82 4.028-2.736 3.944-11.532 13.583-11.727 13.75a1976.983 1976.983 0 0 1-8.042 7.639l-.167.167c-.14-.167-.14-.417.028-.556C14.49 19.861 22.03 10.167 25.074 5.917c-.084.194-.14.36-.28.555Zm4.83 5.695c-1.116-.64-1.646-1.64-1.34-2.611l.084-.334c.028-.083.084-.194.14-.277.307-.5.754-.917 1.257-1.167.027 0 .055 0 .083-.028-.028-.056-.028-.139-.028-.222.028-.167.14-.278.335-.278.335 0 1.369.306 1.76.639.111.083.223.194.335.305.14.167.363.445.474.667.056.028.112.306.196.445.056.222.111.472.084.694-.028.028 0 .194-.028.194a2.668 2.668 0 0 1-.363 1.028c-.028.028-.028.056-.056.084l-.028.027c-.14.223-.335.417-.53.556-.643.444-1.369.583-2.095.389 0 0-.195-.084-.28-.111Zm8.154-.834a39.098 39.098 0 0 1-.893 3.167c0 .028-.028.083 0 .111-.056 0-.084.028-.14.056-2.206 1.61-4.356 3.305-6.506 5.028 1.843-1.64 3.686-3.306 5.613-4.945.558-.5.949-1.139 1.06-1.861l.28-1.667v-.055c.14-.334.67-.195.586.166Z",\n    fill: "currentColor"\n  })\n}));\n\nconst LogoText = () => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("svg", Object.assign({\n  viewBox: "0 0 450 55",\n  xmlns: "http://www.w3.org/2000/svg",\n  fill: "none",\n  className: "ExcalidrawLogo-text"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M429.27 96.74c2.47-1.39 4.78-3.02 6.83-4.95 1.43-1.35 2.73-2.86 3.81-4.51-.66.9-1.4 1.77-2.23 2.59-2.91 2.84-5.72 5.09-8.42 6.87h.01ZM343.6 69.36c.33 3.13.58 6.27.79 9.4.09 1.37.18 2.75.25 4.12-.12-4.46-.27-8.93-.5-13.39-.11-2.08-.24-4.16-.4-6.24-.06 1.79-.11 3.85-.13 6.11h-.01ZM378.47 98.34c.01-.37.07-1.13.01-6.51-.11 1.9-.22 3.81-.31 5.71-.07 1.42-.22 2.91-.16 4.35.39.03.78.07 1.17.1-.92-.85-.76-2.01-.72-3.66l.01.01ZM344.09 86.12c-.09-2.41-.22-4.83-.39-7.24v12.21c.15-.05.32-.09.47-.14.05-1.61-.03-3.23-.09-4.83h.01ZM440.69 66.79c-.22-.34-.45-.67-.69-.99-3.71-4.87-9.91-7.14-15.65-8.55-1.05-.26-2.12-.49-3.18-.71 2.29.59 4.48 1.26 6.64 2.02 7.19 2.54 10.57 5.41 12.88 8.23ZM305.09 72.46l1.2 3.6c.84 2.53 1.67 5.06 2.46 7.61.24.78.5 1.57.73 2.36.22-.04.44-.08.67-.12a776.9 776.9 0 0 1-5.01-13.57c-.02.04-.03.09-.05.13v-.01ZM345.49 90.25v.31c1.48-.42 3.05-.83 4.66-1.2-1.56.25-3.12.52-4.66.89ZM371.02 90.22c0-.57-.04-1.14-.11-1.71-.06-.02-.12-.04-.19-.05-.21-.05-.43-.08-.65-.11.42.16.74.88.95 1.87ZM398.93 54.23c-.13 0-.27-.01-.4-.02l.03.4c.11-.15.23-.27.37-.38ZM401.57 62.28v-.15c-1.22-.24-2.86-.61-3.23-1.25-.09-.15-.18-.51-.27-.98-.09.37-.2.73-.33 1.09 1.24.56 2.52.98 3.83 1.29ZM421.73 88.68c-2.97 1.65-6.28 3.12-9.69 3.68v.18c4.72-.14 11.63-3.85 16.33-8.38-2.04 1.75-4.33 3.24-6.63 4.53l-.01-.01ZM411.28 80.92c-.05-1.2-.09-2.4-.15-3.6-.21 5.66-.46 11.38-.47 14.51.24-.02.48-.04.71-.07.15-3.61.05-7.23-.09-10.83v-.01Z",\n    transform: "translate(-144.023 -51.76)"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M425.38 67.41c-3.5-1.45-7.19-2.57-14.06-3.62.09 1.97.06 4.88-.03 8.12.03.04.06.09.06.15.19 1.36.28 2.73.37 4.1.25 3.77.39 7.55.41 11.33 0 1.38-.01 2.76-.07 4.13 1.4-.25 2.78-.65 4.12-1.15 4.07-1.5 7.94-3.78 11.28-6.54 2.33-1.92 5.13-4.49 5.88-7.58.63-3.53-2.45-6.68-7.97-8.96l.01.02ZM411.35 92.53v-.06l-.34.03c.11.01.22.03.34.03ZM314.26 64.06c-.23-.59-.47-1.17-.7-1.75.57 1.62 1.11 3.25 1.6 4.9l.15.54 2.35 6.05c.32.82.66 1.64.98 2.46-1.38-4.1-2.83-8.17-4.39-12.2h.01ZM156.82 103.07c-.18.13-.38.23-.58.33 1.32-.03 2.66-.2 3.93-.34.86-.09 1.72-.22 2.58-.33-2.12.1-4.12.17-5.94.34h.01ZM210.14 68.88s.03.04.05.07c.18-.31.39-.64.58-.96-.21.3-.42.6-.64.89h.01ZM201.65 82.8c-.5.77-1.02 1.56-1.49 2.37 1.11-1.55 2.21-3.1 3.2-4.59-.23.23-.49.51-.75.79-.32.47-.65.95-.96 1.43ZM194.03 98.66c-.33-.4-.65-.84-1.05-1.17-.24-.2-.07-.49.17-.56-.23-.26-.42-.5-.63-.75 1.51-2.55 3.93-5.87 6.4-9.28-.17-.08-.29-.28-.2-.49.04-.09.09-.17.13-.26-1.21 1.78-2.42 3.55-3.61 5.33-.87 1.31-1.74 2.64-2.54 4-.29.5-.63 1.04-.87 1.61.81.65 1.63 1.27 2.47 1.88-.09-.11-.18-.21-.27-.32v.01ZM307.79 82.93c-1-3.17-2.05-6.32-3.1-9.48-1.62 4.08-3.69 9.17-6.16 15.19 3.32-1.04 6.77-1.87 10.27-2.5-.32-1.08-.67-2.15-1.01-3.21ZM149.5 80.7c.05-1.71.04-3.43 0-5.14-.1 2.26-.16 4.51-.22 6.77-.02.73-.03 1.46-.04 2.19.14-1.27.2-2.55.24-3.82h.02ZM228.98 98.3c.39 1.25.91 3.03.94 3.91.06-.03.12-.07.17-.1.08-1.29-.55-2.65-1.11-3.81ZM307.72 53.36c.81.5 1.53 1.04 2.07 1.49-.38-.8-.78-1.58-1.21-2.35-.17.03-.34.06-.51.11-.43.12-.86.26-1.29.41.35-.01.53.1.94.34ZM283.69 96.14c3.91-7.25 6.89-13.35 8.88-18.15l1.1-2.66c-1.27 2.64-2.56 5.27-3.83 7.9-1.53 3.15-3.06 6.31-4.58 9.47-.87 1.81-1.76 3.62-2.54 5.47.04.02.07.04.11.07.05.05.1.09.15.14.05-.73.27-1.48.71-2.24ZM289.92 103.23s-.04.01-.05.03c0-.02.04-.03.05-.04.05-.05.11-.1.16-.15l.21-.21c-.55 0-1.5-.27-2.55-.72.4.26.8.51 1.22.74.24.13.48.26.73.37.05.02.1.03.14.05a.27.27 0 0 1 .08-.07h.01ZM269.23 68.49c-.39-.19-.82-.48-1.33-.87-3.06-1.56-6.31-2.78-9.36-2.35-3.5.49-5.7 1.11-7.74 2.44 5.71-2.6 12.82-2.07 18.44.79l-.01-.01ZM177.87 53.69l1.06.03c-.96-.22-2-.25-2.89-.3-4.95-.26-9.99.33-14.86 1.19-2.44.43-4.88.95-7.28 1.59 9.09-1.76 15.69-2.77 23.97-2.51ZM219.85 55.51c-.18.12-.36.27-.56.45-.45.53-.86 1.11-1.26 1.66-1.91 2.61-3.71 5.31-5.57 7.95l-.12.18 8.05-10.11c-.18-.05-.36-.1-.55-.13h.01ZM510.71 54.1c.12-.15.29-.3.53-.45.69-.4 3.72-.63 5.87-.74-.36-.02-.73-.04-1.09-.05-1.84-.03-3.67.09-5.49.35.05.3.12.59.18.88v.01ZM510.76 86.02c1.37-3.07 2.49-6.27 3.57-9.46.55-1.64 1.12-3.3 1.6-4.97-1.59 4.01-3.67 9.14-6.2 15.3.24-.08.5-.14.74-.22.1-.22.19-.44.29-.65ZM566.95 75.76c.11-.02.23.03.31.11-.05-.13-.09-.26-.14-.39-.05.09-.11.18-.17.28ZM511.33 86.41c3.08-.89 6.24-1.62 9.46-2.14-1.51-3.98-2.98-7.96-4.39-11.87-.05.15-.09.31-.14.46-1.02 3.32-2.15 6.61-3.39 9.85-.48 1.25-.98 2.49-1.53 3.7h-.01ZM578.24 74.45c.11-.44.23-.87.35-1.31-.31.7-.64 1.39-.97 2.08.09.21.19.4.28.61.12-.46.23-.92.35-1.38h-.01ZM520.62 53.11c-.09 0-.18-.01-.28-.02.38.34.29 1.08.93 2.53l6.65 17.15c2.2 5.68 4.69 11.36 7.41 16.87l1.06 2.17c-2.95-7.05-5.92-14.08-8.87-21.13-1.58-3.79-3.16-7.59-4.7-11.4-.78-1.92-1.73-3.89-2.25-5.91-.03-.1 0-.19.04-.26h.01ZM578.78 77.87c1.45-5.77 3.07-10.43 3.58-13.36.05-.34.16-.88.31-1.55-.67 1.79-1.37 3.56-2.08 5.33-.12.43-.23.86-.35 1.29-.65 2.43-1.29 4.86-1.9 7.3.14.33.29.65.43 1l.01-.01ZM545.3 94.66c.02-.44.03-.83.05-1.12.02-1.01.05-2.02.11-3.02.03-6.66-.46-14.33-1.46-22.8-.13-.42-.27-1.24-.56-2.89 0-.02 0-.04-.01-.06.62 6.61.95 13.25 1.32 19.87.17 3.08.33 6.16.52 9.23.02.25.03.52.04.78l-.01.01ZM580.77 102.81c.13.2.27.38.37.49.27-.11.53-.22.8-.32-.43.09-.82.05-1.17-.16v-.01ZM530.48 104.07h.33c-.36-.13-.71-.32-1.04-.56.14.24.3.47.45.7.06-.08.14-.13.26-.13v-.01ZM542.63 58.82c.06.23.11.47.15.71.14-.33.36-.62.7-.86-.28.05-.57.11-.85.15ZM583.81 57.87c.15-.7.29-1.41.42-2.11-.14.45-.28.9-.42 1.34-.46 1.44-.89 2.89-1.31 4.34.44-1.19.88-2.37 1.31-3.57ZM523.62 91.48c-4.66 1.17-9.05 2.89-14.02 5.27 4.65-1.84 9.48-3.29 14.28-4.63-.09-.22-.17-.41-.26-.64ZM460.64 78.3c-.04-2.9-.11-5.81-.28-8.71-.1-1.68-.17-3.43-.5-5.09-.07.02-.14.03-.2.05.3 6.54.45 12.17.51 17.12.17-.07.34-.14.51-.2 0-1.06-.01-2.11-.03-3.17h-.01ZM470.63 63.24c-3.38-.26-6.81.32-10.1 1.1.41 2.01.47 4.14.57 6.18.18 3.55.25 7.11.27 10.67 3.31-1.38 6.5-3.12 9.3-5.35 1.96-1.56 3.86-3.41 5.02-5.66.73-1.41 1.19-3.22.26-4.65-1.09-1.7-3.46-2.14-5.32-2.29ZM460.29 63.68c1-.24 2.01-.46 3.04-.65-1.15.16-2.37.38-3.71.69v.13c.07-.02.15-.04.22-.05.11-.13.3-.18.45-.11v-.01ZM457.24 100.96c.43-.03.86-.07 1.29-.11.14-.49.27-.99.38-1.49-.44.7-1 1.23-1.67 1.6ZM482.88 104.98c-.18.23-.36.38-.55.47.14.09.27.19.4.28a70.76 70.76 0 0 0 4.37-4.63c.76-.89 1.52-1.81 2.19-2.77-.3-.27-.61-.53-.92-.79-.07 1.94-4.62 6.32-5.49 7.45v-.01Z",\n    transform: "translate(-144.023 -51.76)"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M474.36 63.31c-.4-.16-.84-.27-1.29-.37 1.56.42 3.08 1.22 3.76 2.74.62 1.4.32 2.95-.28 4.32.7-1.22.94-2.34.74-3.47-.24-1.33-1.19-2.54-2.93-3.21v-.01ZM477.34 89.18c-1.2-.81-2.4-1.62-3.6-2.42-.14.1-.26.19-.4.29 1.4.67 2.73 1.39 4 2.13ZM465.88 93.85c.37.25.74.5 1.1.75.46.32.92.65 1.38.97-1.57-1.2-2.01-1.61-2.49-1.72h.01ZM574.92 90.06c-2.28-5.21-4.93-11.13-5.67-12.26-.1-.15-1.57-3.01-1.63-3.08 0 0-.01.02-.02.02.4 1.37 1.09 2.69 1.65 3.99 2.14 4.95 4.36 9.86 6.67 14.73.6 1.26 1.21 2.52 1.83 3.78-.75-2.01-1.64-4.45-2.83-7.18ZM448.73 65.29c.1.2.22.38.34.57.22-.02.43-.06.65-.08v-.08c-.14-.05-.25 0-.99-.41ZM460.16 94.81c-.02.31-.06.59-.1.89-.03 1.71-.33 3.43-.79 5.07.15-.02.3-.03.45-.05.01-.04.02-.08.03-.11.09-.34.15-.69.2-1.03.17-1.07.25-2.16.33-3.24.05-.69.08-1.39.12-2.08-.27.1-.27.26-.24.57v-.02Z",\n    transform: "translate(-144.023 -51.76)"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "m328.67 98.12-3.22-6.58c-1.29-2.63-2.53-5.29-3.72-7.97-.25-.85-.52-1.69-.79-2.53-.81-2.57-1.67-5.12-2.55-7.67-1.92-5.53-3.9-11.08-6.32-16.41-.72-1.58-1.46-3.44-2.63-4.79-.03-.17-.16-.29-.34-.36a.282.282 0 0 0-.23-.04c-.06-.01-.12 0-.18.01-.74.06-1.5.38-2.19.61-2.22.77-4.4 1.64-6.63 2.38-.03-.08-.06-.16-.09-.25-.15-.42-.82-.24-.67.19.03.09.07.19.1.28l-.18.06c-.36.11-.28.6 0 .68.18 1.18.63 2.36.98 3.49.03.09.06.17.08.26-.08.23-.17.46-.24.64-.37.98-.79 1.94-1.21 2.9-1.27 2.89-2.62 5.75-3.98 8.6-3.18 6.67-6.44 13.31-9.64 19.97-1.08 2.25-2.2 4.5-3.15 6.81-.13.32.24.5.5.37 1.34 1.33 2.84 2.5 4.4 3.57.65.44 1.31.87 2.01 1.24.4.22.86.48 1.33.5.24.01.35-.19.33-.37.11-.1.21-.21.28-.28.41-.41.81-.84 1.2-1.26.85-.92 1.69-1.87 2.5-2.84 6.31-2.34 12.6-4.31 18.71-5.84 2.14 5.3 3.43 8.43 3.97 9.58.55 1.05 1.15 1.88 1.82 2.52 1.32.56 6.96-.03 9.23-1.96.87-1.28 1.19-2.67.93-4.15-.09-.5-.22-.95-.4-1.33l-.01-.03Zm-20.09-45.61c.43.77.83 1.56 1.21 2.35-.54-.45-1.27-.99-2.07-1.49-.42-.24-.6-.35-.94-.34.43-.15.85-.29 1.29-.41.17-.05.34-.08.51-.11Zm-25.86 45.66c.78-1.85 1.67-3.66 2.54-5.47 1.51-3.16 3.05-6.31 4.58-9.47 1.28-2.63 2.56-5.26 3.83-7.9l-1.1 2.66c-1.99 4.79-4.97 10.9-8.88 18.15-.43.76-.66 1.51-.71 2.24-.05-.05-.1-.09-.15-.14a.259.259 0 0 0-.11-.07Zm6.24 4.71c-.42-.23-.82-.48-1.22-.74 1.05.45 2 .72 2.55.72l-.21.21c-.05.05-.11.1-.16.15-.01.01-.04.03-.05.04 0-.02.03-.02.05-.03a.27.27 0 0 0-.08.07c-.05-.02-.1-.03-.14-.05-.25-.1-.49-.24-.73-.37h-.01Zm15.73-29.43c1.05 3.15 2.1 6.31 3.1 9.48.34 1.06.69 2.13 1.01 3.21-3.5.63-6.95 1.46-10.27 2.5 2.48-6.03 4.54-11.11 6.16-15.19Zm4.79 12.57c-.23-.79-.49-1.58-.73-2.36-.79-2.54-1.63-5.08-2.46-7.61l-1.2-3.6c.02-.04.04-.09.05-.13 1.6 4.45 3.28 9 5.01 13.57l-.67.12v.01Zm5.83-18.27-.15-.54c-.49-1.64-1.03-3.28-1.6-4.9.23.58.47 1.17.7 1.75 1.56 4.03 3.01 8.1 4.39 12.2-.33-.82-.67-1.64-.98-2.46l-2.35-6.05h-.01ZM390.43 79.37c-.13-10.43-.22-17.5-.24-19.97-.24-1.6.21-2.88-.65-3.65-.14-.13-.32-.23-.52-.32h.03c.45 0 .45-.69 0-.7-1.75-.03-3.5-.04-5.25-.14-1.38-.08-2.76-.21-4.15-.31-.07 0-.12.01-.17.04-.21-.07-.47.03-.45.31l.03.45c-.11.14-.19.3-.22.5-.21 1.26-.32 13.67-.36 23.59-.32 5.79-.67 11.57-.97 17.36-.09 1.73-.29 3.54-.21 5.3-.39.02-.38.64.04.69v.12c.05.44.74.45.7 0v-.06c1.1.09 2.2.21 3.3.3 1.14.19 2.44.2 3.29.17 1.73-.05 2.92-.05 3.8-.37.45-.05.9-.11 1.35-.17.44-.06.25-.73-.19-.67h-.01c.24-.32.45-.72.62-1.25.66-1.84.41-6.36.34-11.33l-.13-9.9.02.01Zm-12.26 18.17c.09-1.91.2-3.81.31-5.71.06 5.38 0 6.14-.01 6.51-.05 1.65-.21 2.81.72 3.66-.39-.04-.78-.07-1.17-.1-.06-1.44.09-2.93.16-4.35l-.01-.01ZM588.97 53.85c-2.06-.25-3.17-.51-3.76-.6a.3.3 0 0 1 .04-.08c.22-.39-.39-.75-.6-.35-.56 1.02-.9 2.19-1.26 3.29-.61 1.88-1.17 3.78-1.72 5.68-.63 2.19-1.24 4.39-1.83 6.59-.81 2.03-1.67 4.05-2.61 6.03-1.7-3.64-3.11-6.04-4.03-7.57-2.26-3.74-2.85-5.48-3.57-6.08l.31-.09c.43-.12.25-.8-.19-.67-1.06.3-2.12.6-3.17.95-.93.32-1.85.69-2.76 1.07-.13.05-.19.16-.22.27-.04.02-.08.05-.11.07-.04-.06-.07-.12-.11-.18a.354.354 0 0 0-.48-.12c-.16.09-.22.32-.13.48l.33.54c0 .09.02.18.06.28.51 1.16.78 1.38.72 1.47-2.42 3.44-5.41 7.86-6.2 9.1-1.27 1.97-2.01 3.14-2.45 3.84l-.91-6.56-.43-4.1c-.19-1.85-.37-3.23-.53-4.13-.19-1.1-.3-2.15-.45-3.16-.2-1.36-.29-2.06-.47-2.42h.04c.45.02.45-.68 0-.7-3.43-.16-6.81.94-10.17 1.48-.24-.22-.73-.04-.58.32.24.59.33 1.25.43 1.87.17 1.06.29 2.13.4 3.2.32 3.09.53 6.2.74 9.3.44 6.75.77 13.51 1.17 20.26.11 1.95.13 3.96.46 5.89.05.3.37.31.55.14.74 1.71 2.87 1.27 6.13 1.27 1.34 0 2.39.04 2.99-.11.02.32.48.53.63.18 3.61-8.26 7.41-16.46 12.05-24.2.03-.05.04-.1.05-.15.3.73.64 1.45.94 2.16.97 2.26 1.97 4.52 2.98 6.76 2.26 5.03 4.54 10.07 7.09 14.96.47.9.94 1.79 1.47 2.65.2.32.4.67.66.96-.18.25 0 .68.34.54.91-.38 1.82-.75 2.76-1.07 1.04-.35 2.11-.65 3.17-.95.39-.11.28-.66-.07-.68.62-.4.95-.96.87-1.91-.3-3.34.72-7.47.86-8.52l2.14-11.43c1.75-10.74 3.13-17.51 3.23-20.86.02-.49.08-2.84.13-3.24.17-1.25.48-1-4.96-1.65l.03-.02Zm-46.19 5.67c-.04-.24-.09-.48-.15-.71l.85-.15c-.34.24-.56.53-.7.86Zm1.95 25.12c-.36-6.63-.7-13.26-1.32-19.87 0 .02 0 .04.01.06.29 1.65.44 2.47.56 2.89 1 8.46 1.5 16.14 1.46 22.8-.06.99-.1 2-.11 3.02-.01.29-.03.68-.05 1.12-.01-.26-.03-.53-.04-.78-.19-3.08-.35-6.16-.52-9.23l.01-.01Zm36.4 18.66c-.11-.11-.24-.29-.37-.49.35.21.74.26 1.17.16-.27.11-.53.22-.8.32v.01Zm-.89-33.72c.12-.43.23-.86.35-1.29.71-1.77 1.41-3.55 2.08-5.33-.15.68-.26 1.22-.31 1.55-.5 2.94-2.13 7.59-3.58 13.36-.15-.35-.29-.66-.43-1 .61-2.44 1.25-4.87 1.9-7.3l-.01.01Zm3.56-12.48c.14-.44.28-.89.42-1.34-.13.7-.27 1.41-.42 2.11-.43 1.19-.86 2.38-1.31 3.57.42-1.45.85-2.9 1.31-4.34Zm-5.22 16.05c-.11.44-.23.87-.35 1.31-.12.46-.23.92-.35 1.38-.1-.22-.19-.4-.28-.61.34-.69.66-1.38.97-2.08h.01Zm-11.64 2.62c.06-.1.12-.19.17-.28.05.13.09.26.14.39a.398.398 0 0 0-.31-.11Zm2.3 2.98c-.56-1.3-1.25-2.63-1.65-3.99 0 0 .01-.02.02-.02.06.08 1.52 2.93 1.63 3.08.73 1.13 3.38 7.04 5.67 12.26 1.2 2.73 2.08 5.17 2.83 7.18-.62-1.25-1.23-2.51-1.83-3.78-2.31-4.87-4.53-9.78-6.67-14.73ZM275.92 87.03c-1.06-2.18-1.13-3.45-2.44-2.93-1.52.57-2.94 1.3-4.5 2.1-1.4.72-2.68 1.44-3.92 2.12.01-.25-.24-.5-.51-.34-4.8 2.93-12.41 4.7-17.28 1.31-1.98-1.77-3.32-4.15-3.97-5.78-.29-.95-.49-1.94-.63-2.93-.14-3.34 1.58-6.53 3.9-9.12.8-.79 1.68-1.51 2.66-2.12 3.7-2.3 8.22-3.07 12.51-2.51 2.71.35 5.32 1.24 7.71 2.55.39.22.75-.39.35-.6-.18-.1-.37-.18-.55-.27.56.27 1.03.33 1.51.19l-.48.39c-.15.11-.23.3-.13.48.09.15.33.24.48.13 1.3-.97 2.46-2.09 3.45-3.37.37-.29.64-.6.65-.97v-.02c.08-.33-.03-.7-.21-1.08-.31-.87-.98-2.01-2.19-3.26-2.43-2.52-3.79-3.45-5.68-4.26-1.14-.49-3.12-1.06-4.42-1.23-3.28-.42-10.64-1.21-18.18 4.11-7.74 5.46-11.94 12.3-12.23 20.61-.08 2.06.04 3.98.34 5.71.74 4.18 2.57 8 5.44 11.34 4.26 4.99 9.76 7.52 16.34 7.52 4.85 0 9.69-1.77 14.89-4.62.23-.12.45-.23.68-.35 2.19-1.1 4.37-2.23 6.46-3.5.49-.3 1.03-.61 1.5-.98 1.47-.87 1.11-1.12.49-2.95-.39-1.14-.76-2.7-2.06-5.36l.02-.01Zm-17.38-21.76c3.05-.42 6.31.79 9.36 2.35.51.39.94.68 1.33.87-5.61-2.86-12.72-3.39-18.44-.79 2.05-1.33 4.24-1.95 7.74-2.44l.01.01ZM443.67 72.67c-.4-2.2-1.15-4.33-2.37-6.22-1.49-2.32-3.58-4.19-5.91-5.64-6.17-3.81-13.75-5.11-20.83-6.01-3.23-.41-6.47-.69-9.72-.92l-1.39-.12c-.85-.07-1.52-.1-2.05-.1-1.08-.06-2.17-.12-3.25-.17-.08 0-.14.02-.19.05-.1.05-.18.14-.16.3.27 2.55-.01 5.12-.92 7.52-.15.38.4.56.62.28 1.32.59 2.68 1.05 4.08 1.37 0 2.78-.14 7.58-.33 12.91 0 0 0 .02-.01.03-.61 3.66-.79 7.42-1 11.12-.23 4.01-.43 8.03-.44 12.05 0 .64 0 1.28.03 1.93.02.31 0 .68.15.96.06.11.14.16.24.17-.2.17-.21.54.11.59 3.83.67 7.78.71 11.68.25 2.3-.19 4.87-.65 7.65-1.56 1.85-.54 3.67-1.18 5.43-1.91 7.2-3.02 14.31-8.07 17.35-15.53.76-1.86 1.17-3.8 1.31-5.75.3-1.93.28-3.82-.09-5.58l.01-.02Zm-19.32-15.42c5.74 1.41 11.94 3.68 15.65 8.55.25.32.47.65.69.99-2.3-2.82-5.68-5.69-12.88-8.23-2.16-.76-4.35-1.43-6.64-2.02 1.06.21 2.13.45 3.18.71Zm-25.82-3.04c.13 0 .27.01.4.02-.14.1-.26.23-.37.38 0-.13-.02-.26-.03-.4Zm34.82 22.17c-.75 3.09-3.55 5.66-5.88 7.58-3.35 2.76-7.21 5.03-11.28 6.54-1.33.49-2.71.9-4.12 1.15.06-1.38.08-2.76.07-4.13-.02-3.78-.16-7.56-.41-11.33-.09-1.37-.18-2.74-.37-4.1 0-.06-.03-.11-.06-.15.09-3.25.12-6.16.03-8.12 6.86 1.05 10.56 2.17 14.06 3.62 5.52 2.28 8.59 5.44 7.97 8.96l-.01-.02Zm-22 16.15c-.12 0-.23-.02-.34-.03l.34-.03v.06Zm-.69-.7c0-3.13.26-8.84.47-14.51.06 1.2.11 2.41.15 3.6.15 3.6.25 7.23.09 10.83-.24.03-.48.05-.71.07v.01Zm-12.33-30.94c.37.63 2.01 1.01 3.23 1.25v.15c-1.31-.31-2.59-.73-3.83-1.29.12-.36.23-.72.33-1.09.08.48.18.84.27.98Zm13.7 31.65v-.18c3.41-.56 6.71-2.02 9.69-3.68 2.31-1.28 4.59-2.78 6.63-4.53-4.69 4.53-11.61 8.24-16.33 8.38l.01.01Zm24.07-.75c-2.05 1.93-4.37 3.56-6.83 4.95 2.7-1.78 5.52-4.03 8.42-6.87.82-.82 1.56-1.69 2.23-2.59-1.08 1.65-2.38 3.16-3.81 4.51h-.01ZM187.16 92.14c-.79-2.47-2.1-7.12-3.1-6.87-.19-.01-2.09.77-4.08 1.54-3.06 1.18-5.91 2.13-10.09 2.82-2.74.42-5.87 1.01-10.61 1.06.04-3.34.05-6.01.05-7.99 7.97-.65 12.33-2.11 16.37-3.55 1.11-.39 2.69-1.01 2.63-1.8-.08-.35-.55-1.39-1.17-2.61-.47-1.16-.98-2.31-1.61-3.38-.42-.71-1.04-1.69-1.86-2.06-.11-.08-.22-.13-.29-.12-.02 0-.04 0-.07.01-.19-.04-.39-.05-.6-.01-.17.03-.24.15-.25.28-.04.02-.09.04-.14.05-4.33 1.48-8.85 2.33-13.24 3.61a499.1 499.1 0 0 0-.31-8.19c4.51-.99 8.88-1.38 13.11-1.82 3.68-.38 6.28.12 7.47.34.59.11.9.16 1.16.18h.1c-.1.37.44.66.62.28.02-.04.03-.08.05-.13.15.2.53.22.62-.1.17-.58.19-1.21.21-1.81v-.36c.03-.15.05-.3.07-.45.52-2.47.33-5.09-.64-7.44-.11-.27-.44-.28-.6-.14-.08-.21-.15-.42-.24-.62-.19-.41-.79-.05-.6.35.03.07.05.15.09.22-.98-.42-2.15-.54-3.17-.63-2.17-.19-4.37-.14-6.54 0-5.7.35-11.4 1.3-16.91 2.79-2.08.56-4.13 1.22-6.14 2-4.54 1.05-3.79 1.51-2.17 6.07.18.51.46 1.68.54 1.94.82 2.47 1.08 2.13 3.1 2.13s0 .05 0 .08h.52c-.48 2.66-.51 5.45-.62 8.13-.15 3.48-.22 6.96-.28 10.45 0 .41-.01.82-.02 1.23-.16.29-.33.57-.51.85-.05.38-.09.77-.14 1.18-.42 3.52-.59 6.48-.52 8.8v.34c.02.47.05.76.06.87.16 1.57-.26 3.47 1.35 3.79 1.61.32 3.5.55 4.85.55.11 0 .22-.02.33-.02 1.79.24 3.67.05 5.45-.12 2.85-.28 5.69-.7 8.51-1.19 3.03-.53 6.05-1.14 9.04-1.86 2.4-.58 4.82-1.19 7.13-2.06.51-.19 1.73-.57 2.46-1.14 1.81-.68 2.18-1 1.57-2.67-.23-.62-.48-1.49-.91-2.78l-.03-.02Zm-11.12-38.71c.89.05 1.93.08 2.89.3-.33 0-.68-.02-1.06-.03-8.28-.26-14.88.75-23.97 2.51 2.41-.64 4.85-1.16 7.28-1.59 4.87-.86 9.91-1.45 14.86-1.19Zm-26.53 22.13c.03 1.71.04 3.43 0 5.14-.04 1.27-.11 2.55-.24 3.82 0-.73.02-1.46.04-2.19.05-2.26.12-4.51.22-6.77h-.02Zm6.73 27.85c.2-.1.4-.21.58-.33 1.82-.17 3.82-.24 5.94-.34-.86.11-1.72.24-2.58.33-1.27.14-2.61.31-3.93.34h-.01ZM534.48 85.44c-3.52-8.38-7.07-16.75-10.5-25.17-.63-1.54-1.25-3.09-1.86-4.65-.31-.8-.65-1.6-.87-2.43-.04-.17-.17-.24-.31-.25.1-.2 0-.51-.29-.53-1.59-.08-3.18-.22-4.78-.25-1.96-.03-3.91.13-5.84.42-.31.05-.31.38-.13.56-.03.06-.05.14-.04.22.23 1.54.63 3.06 1.16 4.53.13.35.27.7.41 1.06l-2.68 6.18c-.11.03-.2.09-.25.22-.67 1.9-1.52 3.73-2.34 5.56a536.85 536.85 0 0 1-3.9 8.45c-2.64 5.64-5.34 11.25-7.91 16.93-.44.97-.88 1.94-1.29 2.93-.2.48-.47 1-.55 1.52v.05c-.02.12.02.26.16.34 1.19.73 2.41 1.41 3.66 2.05 1.2.62 2.45 1.25 3.76 1.61.43.12.62-.55.19-.67-1.13-.31-2.2-.83-3.24-1.36 1.09.36 2.1.69 2.75.93 2.82 1.01 2.38 1.1 4.3-3.75 2.1-1.09 4.34-1.96 6.53-2.79 4.35-1.64 8.8-3.03 13.27-4.29.82 2.01 1.77 3.97 2.72 5.92.35.83.62 1.45.79 1.82.22.42.45.8.69 1.15.17.33.33.67.5 1 .42.8.84 1.63 1.4 2.35.23.29.6 0 .55-.31 1.53-.02 3.06-.07 4.58-.27.92-.12 1.82-.32 2.71-.54 1.39-.27 3.85-1.11 3.74-1.42-.67-1.96-1.55-3.87-2.34-5.78-1.57-3.78-3.16-7.56-4.75-11.33v-.01Zm-11.65-26.16c1.54 3.81 3.12 7.6 4.7 11.4 2.94 7.05 5.91 14.09 8.87 21.13l-1.06-2.17c-2.71-5.51-5.2-11.19-7.41-16.87l-6.65-17.15c-.65-1.45-.55-2.19-.93-2.53.09 0 .18.01.28.02a.29.29 0 0 0-.04.26c.52 2.02 1.47 3.98 2.25 5.91h-.01Zm-6.58 13.58c.05-.15.09-.31.14-.46 1.41 3.92 2.88 7.9 4.39 11.87-3.22.52-6.38 1.25-9.46 2.14.55-1.22 1.05-2.46 1.53-3.7 1.24-3.24 2.37-6.53 3.39-9.85h.01Zm-.23-20c.36 0 .73.03 1.09.05-2.15.1-5.18.33-5.87.74-.24.15-.41.3-.53.45-.06-.29-.13-.58-.18-.88 1.82-.26 3.65-.39 5.49-.35v-.01Zm-.09 18.72c-.49 1.67-1.05 3.33-1.6 4.97-1.07 3.19-2.19 6.38-3.57 9.46-.09.21-.19.43-.29.65-.25.07-.5.14-.74.22 2.53-6.16 4.61-11.29 6.2-15.3Zm-6.34 25.16c4.97-2.38 9.37-4.1 14.02-5.27l.26.64c-4.8 1.35-9.63 2.8-14.28 4.63Zm20.17 6.76c.33.23.68.42 1.04.56h-.33c-.12 0-.21.06-.26.13-.15-.23-.31-.45-.45-.7v.01ZM226.57 91.75c-3.55-4.74-6.68-9.11-9.31-12.99 9.2-15.25 10.05-17.81 10.35-18.38.17-.34 1.09-2.27.64-2.53-1.13-.65-1.03-.65-2.97-1.71-1.19-.65-3.04-1.61-4.53-2.12-1.71-.59-1.24-.36-3 2.77-.06.1-.11.2-.17.3-.75 1.02-1.48 2.05-2.2 3.09-1.88 2.71-3.73 5.45-5.69 8.1-3.68-4.91-6.88-8.76-9.51-11.43-.15-.15-.3-.29-.46-.42-1.27-1.28-7.24 3.53-7.93 5.58-.09.09-.19.16-.28.25-.27.26.03.64.33.58.19.65.5 1.29.94 1.91 3.85 5.06 7.19 9.76 9.94 14-1.23 2.61-3.06 5-4.67 7.38l-2.28 3.33c-.5.66-.93 1.23-1.29 1.69-.67.93-2.09 2.61-2.3 3.87-.51.85-1.16 1.84-1.29 2.83-.06.44.61.63.67.19.01-.08.04-.15.06-.22 1.36 1.08 2.76 2.11 4.19 3.11 1.3.91 2.62 1.85 4.04 2.56.21.1.4 0 .48-.17.24.07.48.14.72.2.44.1.62-.57.19-.67-2.02-.48-3.77-1.57-5.23-3.02-.47-.46-.9-.96-1.32-1.46 1.74 1.35 4.2 2.89 5.89 4.14 1.39 1.03 2.85-2.27 4.22-4.2 1.86-2.64 3.96-5.86 5.52-8.29l10.39 14.51c.67.81 1.14 1.21 1.57 1.36-.05.24.12.51.41.4 1.53-.58 3.05-1.19 4.54-1.87 1.52-.69 3.06-1.45 4.36-2.5a.28.28 0 0 0 .12-.23c1.66-1.1.81-1.74-1.41-4.91-1.13-1.58-1.71-2.36-3.7-5.01l-.03-.02Zm2.41 6.54c.56 1.15 1.19 2.52 1.11 3.81-.06.04-.12.07-.17.1-.03-.88-.55-2.66-.94-3.91Zm-16.51-32.73c1.86-2.65 3.65-5.35 5.57-7.95.4-.55.81-1.13 1.26-1.66.19-.18.38-.33.56-.45.18.03.36.08.55.13l-8.05 10.11.12-.18h-.01ZM192.7 95.48c.79-1.37 1.66-2.69 2.54-4 1.19-1.79 2.4-3.56 3.61-5.33-.04.09-.09.17-.13.26-.1.22.03.41.2.49-2.47 3.42-4.89 6.73-6.4 9.28.21.24.4.48.63.75-.24.07-.4.36-.17.56.4.33.72.77 1.05 1.17.09.11.18.21.27.32-.84-.61-1.66-1.24-2.47-1.88.24-.57.58-1.11.87-1.61v-.01Zm7.46-10.32c.47-.81.98-1.59 1.49-2.37.31-.48.64-.95.96-1.43.26-.29.52-.56.75-.79-.99 1.48-2.09 3.03-3.2 4.59Zm10.03-16.22s-.03-.05-.05-.07c.22-.29.43-.59.64-.89-.2.32-.4.65-.58.96h-.01ZM371.54 87.96c-.01-.08-.01-.16-.03-.23-.06-.38-.58-.29-.66.03-.3-.05-.6-.08-.81-.11-1.14-.15-2.29-.19-3.44-.2 1.04-.09 2.09-.18 3.14-.23.45-.02.45-.72 0-.7-6.57.35-13.14 1.23-19.65 2.11-1.53.21-3.05.42-4.57.68-.01 0-.02.01-.04.01-.04-3.33-.13-6.66-.24-9.99-.19-5.7-.4-11.41-.88-17.1-.13-1.51-.23-3.07-.49-4.58 0-.25 0-.48-.02-.68-.06-1.19-.04-2.61-.68-2.78-.16-.07-.72-.16-1.5-.24.22-.17.16-.62-.2-.63-1.19-.04-2.39.09-3.57.23-1.2.14-2.41.32-3.59.6-.16-.1-.41-.06-.5.12-.06.02-.13.03-.19.05-.35.1-.29.55-.03.66-.26.6-.19 2.27-.21 3-.02.66-.66 33.73-.9 40.3-.03.65.06 1.12.04 1.45-.16 3.05.87 4.96 6.34 3.93 1.09-.08 2.75-.77 5.36-1.43 4.13-1.04 5.78-1.52 6.2-1.65 6.43-1.69 6.78-1.97 11.72-2.43.55-.05 4.8-.38 6.03-.3.64.04 1.19.07 1.65.1.09 0 .16-.03.24-.05.1.27.56.33.66-.02.39-1.32.61-2.71.78-4.08.2-1.61.29-3.24.15-4.86.24.03.52-.23.38-.53-.09-.2-.27-.33-.49-.43v-.02Zm-.63.56c.07.57.11 1.14.11 1.71-.21-.99-.53-1.71-.95-1.87.22.03.44.06.65.11.06.01.12.04.19.05Zm-25.41 1.73c1.54-.36 3.1-.64 4.66-.89-1.61.37-3.18.77-4.66 1.2v-.31Zm-.86-7.37c-.07-1.37-.16-2.75-.25-4.12-.21-3.13-.45-6.27-.79-9.4.02-2.25.08-4.31.13-6.11.16 2.08.29 4.16.4 6.24.23 4.46.38 8.93.5 13.39h.01Zm-.94-4c.16 2.41.29 4.83.39 7.24.06 1.6.14 3.22.09 4.83-.15.05-.32.09-.47.14V78.88h-.01ZM483.72 92.83c-3.05-2.28-6.22-4.4-9.38-6.51 8.86-6.49 13.49-12.95 13.73-19.23.04-.76 0-1.5-.13-2.2-.67-3.82-3.5-6.68-8.39-8.48.13.04.27.08.4.13 3.92 1.39 7.74 4.23 8.5 8.56.34 1.95-.05 3.96-.98 5.69-.21.4.39.75.6.35 1.86-3.46 1.46-7.55-.97-10.63-3.53-4.47-9.76-5.88-15.16-6.16-2.32-.12-4.64-.04-6.95.19-6 .32-12.71 1.68-17.63 3.21-.37.11-.67.23-.92.35-.2-.17-.62.02-.57.37v.03c-.64.68-.18 1.64.48 3.21.38.91.67 1.89 1.15 2.58.32.76.68 1.51 1.13 2.19.14.21.38.19.53.07.19-.02.38-.05.57-.08v1.57c-.06.06-.1.13-.11.23-.27 4.18-.34 8.38-.48 12.57l-.3 9.03c-.24 3.91-.44 6.77-.46 7.26-.05.88-.11 1.95.07 2.81-.01.22-.02.43-.04.65 0 .11-.02.23-.03.35 0 .05-.03.27-.01.16-.05.4.5.59.64.28.05.04.12.08.2.08 1.75.13 3.5.28 5.25.3 1.69.02 3.38-.12 5.06-.32.08.23.36.39.55.15.06-.08.11-.17.16-.26.18-.09.24-.32.18-.48.05-.2.1-.4.13-.6.16-.86.25-1.74.33-2.62.11-1.17.17-2.34.23-3.51.15-.01.32-.03.52-.04.36-.03 1.73-.15 2.06-.15.39 0 .7-.02.95-.04 1.76 1.11 3.45 2.35 5.14 3.55 2.83 2.01 5.64 4.04 8.47 6.04 1.42 1 2.85 2 4.29 2.97.1.06.19.07.27.04.08 0 .17-.02.25-.1 1.61-1.56 3.15-3.18 4.6-4.88.75-.88 1.49-1.78 2.15-2.73.01.01.03.02.04.03.34.3.83-.2.49-.49-2.16-1.9-4.34-3.76-6.64-5.48l.03-.01Zm-6.38-3.65a55.72 55.72 0 0 0-4-2.13c.14-.1.26-.19.4-.29 1.2.81 2.4 1.61 3.6 2.42Zm-20.1 11.78c.67-.37 1.23-.91 1.67-1.6-.11.5-.24 1-.38 1.49-.43.04-.86.08-1.29.11Zm2.38-37.24c1.34-.31 2.56-.52 3.71-.69-1.03.19-2.04.41-3.04.65-.14-.07-.34-.02-.45.11-.07.02-.15.04-.22.05v-.13.01Zm.04.84c.07-.02.14-.03.2-.05.34 1.66.41 3.41.5 5.09.17 2.9.24 5.81.28 8.71l.03 3.17c-.17.07-.34.14-.51.2-.06-4.96-.21-10.58-.51-17.12h.01Zm16.04 5.62c-1.16 2.25-3.06 4.1-5.02 5.66-2.8 2.23-5.99 3.97-9.3 5.35-.01-3.56-.09-7.12-.27-10.67-.1-2.04-.16-4.16-.57-6.18 3.3-.78 6.72-1.36 10.1-1.1 1.85.14 4.23.59 5.32 2.29.92 1.43.46 3.24-.26 4.65Zm.85-.18c.6-1.37.9-2.92.28-4.32-.67-1.52-2.2-2.32-3.76-2.74.46.1.89.21 1.29.37 1.74.67 2.69 1.88 2.93 3.21.2 1.13-.05 2.25-.74 3.47V70Zm-27.47-4.14c-.12-.19-.23-.38-.34-.57.74.42.85.36.99.41v.08c-.22.03-.43.06-.65.08Zm11.21 30.46c-.08 1.08-.16 2.17-.33 3.24-.05.35-.11.69-.2 1.03 0 .04-.02.07-.03.11-.15.02-.3.04-.45.05.45-1.64.76-3.36.79-5.07.03-.29.08-.57.1-.89-.03-.31-.03-.47.24-.57-.04.69-.07 1.39-.12 2.08v.02Zm5.6-2.47c.48.11.92.52 2.49 1.72-.46-.32-.92-.65-1.38-.97-.37-.25-.73-.5-1.1-.75h-.01Zm21.23 7.24a70.76 70.76 0 0 1-4.37 4.63c-.14-.09-.27-.19-.4-.28.19-.09.37-.24.55-.47.87-1.14 5.43-5.51 5.49-7.45.31.26.62.53.92.79-.67.97-1.42 1.88-2.19 2.77v.01Z",\n    fill: "currentColor",\n    transform: "translate(-144.023 -51.76)"\n  })]\n}));\n\nconst ExcalidrawLogo = ({\n  style,\n  size = "small",\n  withText\n}) => {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n    className: `ExcalidrawLogo is-${size}`,\n    style: style\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(LogoIcon, {}), withText && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(LogoText, {})]\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 40024 characters]\n//# sourceURL=webpack-internal:///../../components/ExcalidrawLogo.tsx\n');
              }
            ),
            /***/
            "../../components/EyeDropper.tsx": (
              /*!***************************************!*\
                !*** ../../components/EyeDropper.tsx ***!
                \***************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "EyeDropper": () => (/* binding */ EyeDropper),\n/* harmony export */   "activeEyeDropperAtom": () => (/* binding */ activeEyeDropperAtom)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var jotai__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! jotai */ "../../../node_modules/jotai/esm/index.mjs");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-dom */ "react-dom");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _colors__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../colors */ "../../colors.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _context_ui_appState__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../context/ui-appState */ "../../context/ui-appState.ts");\n/* harmony import */ var _hooks_useCreatePortalContainer__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../hooks/useCreatePortalContainer */ "../../hooks/useCreatePortalContainer.ts");\n/* harmony import */ var _hooks_useOutsideClick__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../hooks/useOutsideClick */ "../../hooks/useOutsideClick.ts");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../scene */ "../../scene/index.ts");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./App */ "../../components/App.tsx");\n/* harmony import */ var _hooks_useStable__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../hooks/useStable */ "../../hooks/useStable.ts");\n/* harmony import */ var _EyeDropper_scss__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./EyeDropper.scss */ "../../components/EyeDropper.scss");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst activeEyeDropperAtom = (0,jotai__WEBPACK_IMPORTED_MODULE_13__.atom)(null);\nconst EyeDropper = ({\n  onCancel,\n  onChange,\n  onSelect,\n  colorPickerType\n}) => {\n  const eyeDropperContainer = (0,_hooks_useCreatePortalContainer__WEBPACK_IMPORTED_MODULE_6__.useCreatePortalContainer)({\n    className: "excalidraw-eye-dropper-backdrop",\n    parentSelector: ".excalidraw-eye-dropper-container"\n  });\n  const appState = (0,_context_ui_appState__WEBPACK_IMPORTED_MODULE_5__.useUIAppState)();\n  const elements = (0,_App__WEBPACK_IMPORTED_MODULE_10__.useExcalidrawElements)();\n  const app = (0,_App__WEBPACK_IMPORTED_MODULE_10__.useApp)();\n  const selectedElements = (0,_scene__WEBPACK_IMPORTED_MODULE_9__.getSelectedElements)(elements, appState);\n  const stableProps = (0,_hooks_useStable__WEBPACK_IMPORTED_MODULE_11__.useStable)({\n    app,\n    onCancel,\n    onChange,\n    onSelect,\n    selectedElements\n  });\n  const {\n    container: excalidrawContainer\n  } = (0,_App__WEBPACK_IMPORTED_MODULE_10__.useExcalidrawContainer)();\n  (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {\n    const colorPreviewDiv = ref.current;\n\n    if (!colorPreviewDiv || !app.canvas || !eyeDropperContainer) {\n      return;\n    }\n\n    let isHoldingPointerDown = false;\n    const ctx = app.canvas.getContext("2d");\n\n    const getCurrentColor = ({\n      clientX,\n      clientY\n    }) => {\n      const pixel = ctx.getImageData((clientX - appState.offsetLeft) * window.devicePixelRatio, (clientY - appState.offsetTop) * window.devicePixelRatio, 1, 1).data;\n      return (0,_colors__WEBPACK_IMPORTED_MODULE_3__.rgbToHex)(pixel[0], pixel[1], pixel[2]);\n    };\n\n    const mouseMoveListener = ({\n      clientX,\n      clientY,\n      altKey\n    }) => {\n      // FIXME swap offset when the preview gets outside viewport\n      colorPreviewDiv.style.top = `${clientY + 20}px`;\n      colorPreviewDiv.style.left = `${clientX + 20}px`;\n      const currentColor = getCurrentColor({\n        clientX,\n        clientY\n      });\n\n      if (isHoldingPointerDown) {\n        stableProps.onChange(colorPickerType, currentColor, stableProps.selectedElements, {\n          altKey\n        });\n      }\n\n      colorPreviewDiv.style.background = currentColor;\n    };\n\n    const onCancel = () => {\n      stableProps.onCancel();\n    };\n\n    const onSelect = (color, event) => {\n      stableProps.onSelect(color, event);\n    };\n\n    const pointerDownListener = event => {\n      isHoldingPointerDown = true; // NOTE we can\'t event.preventDefault() as that would stop\n      // pointermove events\n\n      event.stopImmediatePropagation();\n    };\n\n    const pointerUpListener = event => {\n      isHoldingPointerDown = false; // since we\'re not preventing default on pointerdown, the focus would\n      // goes back to `body` so we want to refocus the editor container instead\n\n      excalidrawContainer === null || excalidrawContainer === void 0 ? void 0 : excalidrawContainer.focus();\n      event.stopImmediatePropagation();\n      event.preventDefault();\n      onSelect(getCurrentColor(event), event);\n    };\n\n    const keyDownListener = event => {\n      if (event.key === _keys__WEBPACK_IMPORTED_MODULE_8__.KEYS.ESCAPE) {\n        event.preventDefault();\n        event.stopImmediatePropagation();\n        onCancel();\n      }\n    }; // -------------------------------------------------------------------------\n\n\n    eyeDropperContainer.tabIndex = -1; // focus container so we can listen on keydown events\n\n    eyeDropperContainer.focus(); // init color preview else it would show only after the first mouse move\n\n    mouseMoveListener({\n      clientX: stableProps.app.lastViewportPosition.x,\n      clientY: stableProps.app.lastViewportPosition.y,\n      altKey: false\n    });\n    eyeDropperContainer.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_4__.EVENT.KEYDOWN, keyDownListener);\n    eyeDropperContainer.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_4__.EVENT.POINTER_DOWN, pointerDownListener);\n    eyeDropperContainer.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_4__.EVENT.POINTER_UP, pointerUpListener);\n    window.addEventListener("pointermove", mouseMoveListener, {\n      passive: true\n    });\n    window.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_4__.EVENT.BLUR, onCancel);\n    return () => {\n      isHoldingPointerDown = false;\n      eyeDropperContainer.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_4__.EVENT.KEYDOWN, keyDownListener);\n      eyeDropperContainer.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_4__.EVENT.POINTER_DOWN, pointerDownListener);\n      eyeDropperContainer.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_4__.EVENT.POINTER_UP, pointerUpListener);\n      window.removeEventListener("pointermove", mouseMoveListener);\n      window.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_4__.EVENT.BLUR, onCancel);\n    };\n  }, [stableProps, app.canvas, eyeDropperContainer, colorPickerType, excalidrawContainer, appState.offsetLeft, appState.offsetTop]);\n  const ref = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n  (0,_hooks_useOutsideClick__WEBPACK_IMPORTED_MODULE_7__.useOutsideClick)(ref, () => {\n    onCancel();\n  }, event => {\n    if (event.target.closest(".excalidraw-eye-dropper-trigger, .excalidraw-eye-dropper-backdrop")) {\n      return true;\n    } // consider all other clicks as outside\n\n\n    return false;\n  });\n\n  if (!eyeDropperContainer) {\n    return null;\n  }\n\n  return (0,react_dom__WEBPACK_IMPORTED_MODULE_2__.createPortal)((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n    ref: ref,\n    className: "excalidraw-eye-dropper-preview"\n  }), eyeDropperContainer);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 9220 characters]\n//# sourceURL=webpack-internal:///../../components/EyeDropper.tsx\n');
              }
            ),
            /***/
            "../../components/FilledButton.tsx": (
              /*!*****************************************!*\
                !*** ../../components/FilledButton.tsx ***!
                \*****************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "FilledButton": () => (/* binding */ FilledButton)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _FilledButton_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./FilledButton.scss */ "../../components/FilledButton.scss");\n\n\n\n\nconst FilledButton = (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)(({\n  children,\n  startIcon,\n  onClick,\n  label,\n  variant = "filled",\n  color = "primary",\n  size = "medium",\n  fullWidth,\n  className\n}, ref) => {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("button", Object.assign({\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_2__["default"])("ExcButton", `ExcButton--color-${color}`, `ExcButton--variant-${variant}`, `ExcButton--size-${size}`, {\n      "ExcButton--fullWidth": fullWidth\n    }, className),\n    onClick: onClick,\n    type: "button",\n    "aria-label": label,\n    ref: ref\n  }, {\n    children: [startIcon && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: "ExcButton__icon",\n      "aria-hidden": true\n    }, {\n      children: startIcon\n    })), variant !== "icon" && (children !== null && children !== void 0 ? children : label)]\n  }));\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9GaWxsZWRCdXR0b24udHN4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBK0Q7QUFDckI7QUFDbEI7QUFDSztBQUN0QixxQkFBcUIsaURBQVU7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELFNBQVMsdURBQUs7QUFDZCxlQUFlLGdEQUFJLGtDQUFrQyxNQUFNLHlCQUF5QixRQUFRLHNCQUFzQixLQUFLO0FBQ3ZIO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILDRCQUE0QixzREFBSTtBQUNoQztBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSCxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvRmlsbGVkQnV0dG9uLnRzeD9hNjhjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgUmVhY3QsIHsgZm9yd2FyZFJlZiB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IGNsc3ggZnJvbSBcImNsc3hcIjtcbmltcG9ydCBcIi4vRmlsbGVkQnV0dG9uLnNjc3NcIjtcbmV4cG9ydCBjb25zdCBGaWxsZWRCdXR0b24gPSBmb3J3YXJkUmVmKCh7XG4gIGNoaWxkcmVuLFxuICBzdGFydEljb24sXG4gIG9uQ2xpY2ssXG4gIGxhYmVsLFxuICB2YXJpYW50ID0gXCJmaWxsZWRcIixcbiAgY29sb3IgPSBcInByaW1hcnlcIixcbiAgc2l6ZSA9IFwibWVkaXVtXCIsXG4gIGZ1bGxXaWR0aCxcbiAgY2xhc3NOYW1lXG59LCByZWYpID0+IHtcbiAgcmV0dXJuIF9qc3hzKFwiYnV0dG9uXCIsIE9iamVjdC5hc3NpZ24oe1xuICAgIGNsYXNzTmFtZTogY2xzeChcIkV4Y0J1dHRvblwiLCBgRXhjQnV0dG9uLS1jb2xvci0ke2NvbG9yfWAsIGBFeGNCdXR0b24tLXZhcmlhbnQtJHt2YXJpYW50fWAsIGBFeGNCdXR0b24tLXNpemUtJHtzaXplfWAsIHtcbiAgICAgIFwiRXhjQnV0dG9uLS1mdWxsV2lkdGhcIjogZnVsbFdpZHRoXG4gICAgfSwgY2xhc3NOYW1lKSxcbiAgICBvbkNsaWNrOiBvbkNsaWNrLFxuICAgIHR5cGU6IFwiYnV0dG9uXCIsXG4gICAgXCJhcmlhLWxhYmVsXCI6IGxhYmVsLFxuICAgIHJlZjogcmVmXG4gIH0sIHtcbiAgICBjaGlsZHJlbjogW3N0YXJ0SWNvbiAmJiBfanN4KFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oe1xuICAgICAgY2xhc3NOYW1lOiBcIkV4Y0J1dHRvbl9faWNvblwiLFxuICAgICAgXCJhcmlhLWhpZGRlblwiOiB0cnVlXG4gICAgfSwge1xuICAgICAgY2hpbGRyZW46IHN0YXJ0SWNvblxuICAgIH0pKSwgdmFyaWFudCAhPT0gXCJpY29uXCIgJiYgKGNoaWxkcmVuICE9PSBudWxsICYmIGNoaWxkcmVuICE9PSB2b2lkIDAgPyBjaGlsZHJlbiA6IGxhYmVsKV1cbiAgfSkpO1xufSk7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/FilledButton.tsx\n');
              }
            ),
            /***/
            "../../components/FixedSideContainer.tsx": (
              /*!***********************************************!*\
                !*** ../../components/FixedSideContainer.tsx ***!
                \***********************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "FixedSideContainer": () => (/* binding */ FixedSideContainer)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _FixedSideContainer_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./FixedSideContainer.scss */ "../../components/FixedSideContainer.scss");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n\n\n\n\nconst FixedSideContainer = ({\n  children,\n  side,\n  className\n}) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n  className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__["default"])("FixedSideContainer", `FixedSideContainer_side_${side}`, className)\n}, {\n  children: children\n}));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9GaXhlZFNpZGVDb250YWluZXIudHN4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBZ0Q7QUFDYjtBQUNUO0FBQ0Y7QUFDakI7QUFDUDtBQUNBO0FBQ0E7QUFDQSxDQUFDLEtBQUssc0RBQUk7QUFDVixhQUFhLGdEQUFJLGtEQUFrRCxLQUFLO0FBQ3hFLENBQUM7QUFDRDtBQUNBLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9GaXhlZFNpZGVDb250YWluZXIudHN4P2Y2NjUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCBcIi4vRml4ZWRTaWRlQ29udGFpbmVyLnNjc3NcIjtcbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBjbHN4IGZyb20gXCJjbHN4XCI7XG5leHBvcnQgY29uc3QgRml4ZWRTaWRlQ29udGFpbmVyID0gKHtcbiAgY2hpbGRyZW4sXG4gIHNpZGUsXG4gIGNsYXNzTmFtZVxufSkgPT4gX2pzeChcImRpdlwiLCBPYmplY3QuYXNzaWduKHtcbiAgY2xhc3NOYW1lOiBjbHN4KFwiRml4ZWRTaWRlQ29udGFpbmVyXCIsIGBGaXhlZFNpZGVDb250YWluZXJfc2lkZV8ke3NpZGV9YCwgY2xhc3NOYW1lKVxufSwge1xuICBjaGlsZHJlbjogY2hpbGRyZW5cbn0pKTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/FixedSideContainer.tsx\n');
              }
            ),
            /***/
            "../../components/HandButton.tsx": (
              /*!***************************************!*\
                !*** ../../components/HandButton.tsx ***!
                \***************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "HandButton": () => (/* binding */ HandButton)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _ToolIcon_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ToolIcon.scss */ "../../components/ToolIcon.scss");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _ToolButton__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./ToolButton */ "../../components/ToolButton.tsx");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./icons */ "../../components/icons.tsx");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n\n\n\n\n\n\nconst HandButton = props => {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ToolButton__WEBPACK_IMPORTED_MODULE_3__.ToolButton, {\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_2__["default"])("Shape", {\n      fillable: false\n    }),\n    type: "radio",\n    icon: _icons__WEBPACK_IMPORTED_MODULE_4__.handIcon,\n    name: "editor-current-shape",\n    checked: props.checked,\n    title: `${props.title} \u2014 H`,\n    keyBindingLabel: !props.isMobile ? _keys__WEBPACK_IMPORTED_MODULE_5__.KEYS.H.toLocaleUpperCase() : undefined,\n    "aria-label": `${props.title} \u2014 H`,\n    "aria-keyshortcuts": _keys__WEBPACK_IMPORTED_MODULE_5__.KEYS.H,\n    "data-testid": `toolbar-hand`,\n    onChange: () => {\n      var _a;\n\n      return (_a = props.onChange) === null || _a === void 0 ? void 0 : _a.call(props);\n    }\n  });\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9IYW5kQnV0dG9uLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFnRDtBQUN2QjtBQUNEO0FBQ2tCO0FBQ1A7QUFDSjtBQUN4QjtBQUNQLFNBQVMsc0RBQUksQ0FBQyxtREFBVTtBQUN4QixlQUFlLGdEQUFJO0FBQ25CO0FBQ0EsS0FBSztBQUNMO0FBQ0EsVUFBVSw0Q0FBUTtBQUNsQjtBQUNBO0FBQ0EsY0FBYyxhQUFhO0FBQzNCLHVDQUF1QywyREFBd0I7QUFDL0QscUJBQXFCLGFBQWE7QUFDbEMseUJBQXlCLHlDQUFNO0FBQy9CO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvSGFuZEJ1dHRvbi50c3g/OTkxMiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IFwiLi9Ub29sSWNvbi5zY3NzXCI7XG5pbXBvcnQgY2xzeCBmcm9tIFwiY2xzeFwiO1xuaW1wb3J0IHsgVG9vbEJ1dHRvbiB9IGZyb20gXCIuL1Rvb2xCdXR0b25cIjtcbmltcG9ydCB7IGhhbmRJY29uIH0gZnJvbSBcIi4vaWNvbnNcIjtcbmltcG9ydCB7IEtFWVMgfSBmcm9tIFwiLi4va2V5c1wiO1xuZXhwb3J0IGNvbnN0IEhhbmRCdXR0b24gPSBwcm9wcyA9PiB7XG4gIHJldHVybiBfanN4KFRvb2xCdXR0b24sIHtcbiAgICBjbGFzc05hbWU6IGNsc3goXCJTaGFwZVwiLCB7XG4gICAgICBmaWxsYWJsZTogZmFsc2VcbiAgICB9KSxcbiAgICB0eXBlOiBcInJhZGlvXCIsXG4gICAgaWNvbjogaGFuZEljb24sXG4gICAgbmFtZTogXCJlZGl0b3ItY3VycmVudC1zaGFwZVwiLFxuICAgIGNoZWNrZWQ6IHByb3BzLmNoZWNrZWQsXG4gICAgdGl0bGU6IGAke3Byb3BzLnRpdGxlfSDigJQgSGAsXG4gICAga2V5QmluZGluZ0xhYmVsOiAhcHJvcHMuaXNNb2JpbGUgPyBLRVlTLkgudG9Mb2NhbGVVcHBlckNhc2UoKSA6IHVuZGVmaW5lZCxcbiAgICBcImFyaWEtbGFiZWxcIjogYCR7cHJvcHMudGl0bGV9IOKAlCBIYCxcbiAgICBcImFyaWEta2V5c2hvcnRjdXRzXCI6IEtFWVMuSCxcbiAgICBcImRhdGEtdGVzdGlkXCI6IGB0b29sYmFyLWhhbmRgLFxuICAgIG9uQ2hhbmdlOiAoKSA9PiB7XG4gICAgICB2YXIgX2E7XG5cbiAgICAgIHJldHVybiAoX2EgPSBwcm9wcy5vbkNoYW5nZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwocHJvcHMpO1xuICAgIH1cbiAgfSk7XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/HandButton.tsx\n');
              }
            ),
            /***/
            "../../components/HelpButton.tsx": (
              /*!***************************************!*\
                !*** ../../components/HelpButton.tsx ***!
                \***************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "HelpButton": () => (/* binding */ HelpButton)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./icons */ "../../components/icons.tsx");\n\n\n\nconst HelpButton = props => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("button", Object.assign({\n  className: "help-icon",\n  onClick: props.onClick,\n  type: "button",\n  title: `${(0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("helpDialog.title")} \u2014 ?`,\n  "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("helpDialog.title")\n}, {\n  children: _icons__WEBPACK_IMPORTED_MODULE_2__.HelpIcon\n}));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9IZWxwQnV0dG9uLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFnRDtBQUNwQjtBQUNPO0FBQzVCLDRCQUE0QixzREFBSTtBQUN2QztBQUNBO0FBQ0E7QUFDQSxZQUFZLHdDQUFDLHNCQUFzQjtBQUNuQyxnQkFBZ0Isd0NBQUM7QUFDakIsQ0FBQztBQUNELFlBQVksNENBQVE7QUFDcEIsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL0hlbHBCdXR0b24udHN4P2Y3MjUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IHQgfSBmcm9tIFwiLi4vaTE4blwiO1xuaW1wb3J0IHsgSGVscEljb24gfSBmcm9tIFwiLi9pY29uc1wiO1xuZXhwb3J0IGNvbnN0IEhlbHBCdXR0b24gPSBwcm9wcyA9PiBfanN4KFwiYnV0dG9uXCIsIE9iamVjdC5hc3NpZ24oe1xuICBjbGFzc05hbWU6IFwiaGVscC1pY29uXCIsXG4gIG9uQ2xpY2s6IHByb3BzLm9uQ2xpY2ssXG4gIHR5cGU6IFwiYnV0dG9uXCIsXG4gIHRpdGxlOiBgJHt0KFwiaGVscERpYWxvZy50aXRsZVwiKX0g4oCUID9gLFxuICBcImFyaWEtbGFiZWxcIjogdChcImhlbHBEaWFsb2cudGl0bGVcIilcbn0sIHtcbiAgY2hpbGRyZW46IEhlbHBJY29uXG59KSk7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/HelpButton.tsx\n');
              }
            ),
            /***/
            "../../components/HelpDialog.tsx": (
              /*!***************************************!*\
                !*** ../../components/HelpDialog.tsx ***!
                \***************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "HelpDialog": () => (/* binding */ HelpDialog)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _Dialog__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Dialog */ "../../components/Dialog.tsx");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _HelpDialog_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./HelpDialog.scss */ "../../components/HelpDialog.scss");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./icons */ "../../components/icons.tsx");\n/* harmony import */ var _clipboard__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../clipboard */ "../../clipboard.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n\n\n\n\n\n\n\n\n\n\n\nconst Header = () => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n  className: "HelpDialog__header"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("a", Object.assign({\n    className: "HelpDialog__btn",\n    href: "https://docs.excalidraw.com",\n    target: "_blank",\n    rel: "noopener noreferrer"\n  }, {\n    children: [(0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.documentation"), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: "HelpDialog__link-icon"\n    }, {\n      children: _icons__WEBPACK_IMPORTED_MODULE_7__.ExternalLinkIcon\n    }))]\n  })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("a", Object.assign({\n    className: "HelpDialog__btn",\n    href: "https://blog.excalidraw.com",\n    target: "_blank",\n    rel: "noopener noreferrer"\n  }, {\n    children: [(0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.blog"), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: "HelpDialog__link-icon"\n    }, {\n      children: _icons__WEBPACK_IMPORTED_MODULE_7__.ExternalLinkIcon\n    }))]\n  })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("a", Object.assign({\n    className: "HelpDialog__btn",\n    href: "https://github.com/excalidraw/excalidraw/issues",\n    target: "_blank",\n    rel: "noopener noreferrer"\n  }, {\n    children: [(0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.github"), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: "HelpDialog__link-icon"\n    }, {\n      children: _icons__WEBPACK_IMPORTED_MODULE_7__.ExternalLinkIcon\n    }))]\n  }))]\n}));\n\nconst Section = props => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("h3", {\n    children: props.title\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: "HelpDialog__islands-container"\n  }, {\n    children: props.children\n  }))]\n});\n\nconst ShortcutIsland = props => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n  className: `HelpDialog__island ${props.className}`\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("h4", Object.assign({\n    className: "HelpDialog__island-title"\n  }, {\n    children: props.caption\n  })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: "HelpDialog__island-content"\n  }, {\n    children: props.children\n  }))]\n}));\n\nfunction* intersperse(as, delim) {\n  let first = true;\n\n  for (const x of as) {\n    if (!first) {\n      yield delim;\n    }\n\n    first = false;\n    yield x;\n  }\n}\n\nconst upperCaseSingleChars = str => {\n  return str.replace(/\\b[a-z]\\b/, c => c.toUpperCase());\n};\n\nconst Shortcut = ({\n  label,\n  shortcuts,\n  isOr = true\n}) => {\n  const splitShortcutKeys = shortcuts.map(shortcut => {\n    const keys = shortcut.endsWith("++") ? [...shortcut.slice(0, -2).split("+"), "+"] : shortcut.split("+");\n    return keys.map(key => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(ShortcutKey, {\n      children: upperCaseSingleChars(key)\n    }, key));\n  });\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n    className: "HelpDialog__shortcut"\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n      children: label\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: "HelpDialog__key-container"\n    }, {\n      children: [...intersperse(splitShortcutKeys, isOr ? (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.or") : null)]\n    }))]\n  }));\n};\n\nconst ShortcutKey = props => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("kbd", Object.assign({\n  className: "HelpDialog__key"\n}, props));\n\nconst HelpDialog = ({\n  onClose\n}) => {\n  const handleClose = react__WEBPACK_IMPORTED_MODULE_1___default().useCallback(() => {\n    if (onClose) {\n      onClose();\n    }\n  }, [onClose]);\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Dialog__WEBPACK_IMPORTED_MODULE_4__.Dialog, Object.assign({\n      onCloseRequest: handleClose,\n      title: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.title"),\n      className: "HelpDialog"\n    }, {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Header, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(Section, Object.assign({\n        title: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.shortcuts")\n      }, {\n        children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(ShortcutIsland, Object.assign({\n          className: "HelpDialog__island--tools",\n          caption: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.tools")\n        }, {\n          children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("toolBar.hand"),\n            shortcuts: [_keys__WEBPACK_IMPORTED_MODULE_3__.KEYS.H]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("toolBar.selection"),\n            shortcuts: [_keys__WEBPACK_IMPORTED_MODULE_3__.KEYS.V, _keys__WEBPACK_IMPORTED_MODULE_3__.KEYS[1]]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("toolBar.rectangle"),\n            shortcuts: [_keys__WEBPACK_IMPORTED_MODULE_3__.KEYS.R, _keys__WEBPACK_IMPORTED_MODULE_3__.KEYS[2]]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("toolBar.diamond"),\n            shortcuts: [_keys__WEBPACK_IMPORTED_MODULE_3__.KEYS.D, _keys__WEBPACK_IMPORTED_MODULE_3__.KEYS[3]]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("toolBar.ellipse"),\n            shortcuts: [_keys__WEBPACK_IMPORTED_MODULE_3__.KEYS.O, _keys__WEBPACK_IMPORTED_MODULE_3__.KEYS[4]]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("toolBar.arrow"),\n            shortcuts: [_keys__WEBPACK_IMPORTED_MODULE_3__.KEYS.A, _keys__WEBPACK_IMPORTED_MODULE_3__.KEYS[5]]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("toolBar.line"),\n            shortcuts: [_keys__WEBPACK_IMPORTED_MODULE_3__.KEYS.L, _keys__WEBPACK_IMPORTED_MODULE_3__.KEYS[6]]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("toolBar.freedraw"),\n            shortcuts: [_keys__WEBPACK_IMPORTED_MODULE_3__.KEYS.P, _keys__WEBPACK_IMPORTED_MODULE_3__.KEYS[7]]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("toolBar.text"),\n            shortcuts: [_keys__WEBPACK_IMPORTED_MODULE_3__.KEYS.T, _keys__WEBPACK_IMPORTED_MODULE_3__.KEYS[8]]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("toolBar.image"),\n            shortcuts: [_keys__WEBPACK_IMPORTED_MODULE_3__.KEYS[9]]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("toolBar.eraser"),\n            shortcuts: [_keys__WEBPACK_IMPORTED_MODULE_3__.KEYS.E, _keys__WEBPACK_IMPORTED_MODULE_3__.KEYS[0]]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("toolBar.frame"),\n            shortcuts: [_keys__WEBPACK_IMPORTED_MODULE_3__.KEYS.F]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("toolBar.laser"),\n            shortcuts: [_keys__WEBPACK_IMPORTED_MODULE_3__.KEYS.K]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.eyeDropper"),\n            shortcuts: [_keys__WEBPACK_IMPORTED_MODULE_3__.KEYS.I, "Shift+S", "Shift+G"]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.editLineArrowPoints"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+Enter")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.editText"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("Enter")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.textNewLine"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("Enter"), (0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("Shift+Enter")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.textFinish"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("Esc"), (0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+Enter")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.curvedArrow"),\n            shortcuts: ["A", (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.click"), (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.click"), (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.click")],\n            isOr: false\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.curvedLine"),\n            shortcuts: ["L", (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.click"), (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.click"), (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.click")],\n            isOr: false\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("toolBar.lock"),\n            shortcuts: [_keys__WEBPACK_IMPORTED_MODULE_3__.KEYS.Q]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.preventBinding"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("toolBar.link"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+K")]\n          })]\n        })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(ShortcutIsland, Object.assign({\n          className: "HelpDialog__island--view",\n          caption: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.view")\n        }, {\n          children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("buttons.zoomIn"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd++")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("buttons.zoomOut"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+-")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("buttons.resetZoom"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+0")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.zoomToFit"),\n            shortcuts: ["Shift+1"]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.zoomToSelection"),\n            shortcuts: ["Shift+2"]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.movePageUpDown"),\n            shortcuts: ["PgUp/PgDn"]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.movePageLeftRight"),\n            shortcuts: ["Shift+PgUp/PgDn"]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("buttons.zenMode"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("Alt+Z")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("buttons.objectsSnapMode"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("Alt+S")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.showGrid"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+\'")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.viewMode"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("Alt+R")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.toggleTheme"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("Alt+Shift+D")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("stats.title"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("Alt+/")]\n          })]\n        })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(ShortcutIsland, Object.assign({\n          className: "HelpDialog__island--editor",\n          caption: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.editor")\n        }, {\n          children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.moveCanvas"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)(`Space+${(0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.drag")}`), (0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)(`Wheel+${(0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.drag")}`)],\n            isOr: true\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("buttons.clearReset"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+Delete")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.delete"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("Delete")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.cut"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+X")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.copy"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+C")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.paste"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+V")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.pasteAsPlaintext"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+Shift+V")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.selectAll"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+A")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.multiSelect"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)(`Shift+${(0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.click")}`)]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.deepSelect"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)(`CtrlOrCmd+${(0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.click")}`)]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.deepBoxSelect"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)(`CtrlOrCmd+${(0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.drag")}`)]\n          }), (_clipboard__WEBPACK_IMPORTED_MODULE_8__.probablySupportsClipboardBlob || _constants__WEBPACK_IMPORTED_MODULE_9__.isFirefox) && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.copyAsPng"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("Shift+Alt+C")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.copyStyles"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+Alt+C")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.pasteStyles"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+Alt+V")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.sendToBack"),\n            shortcuts: [_constants__WEBPACK_IMPORTED_MODULE_9__.isDarwin ? (0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+Alt+[") : (0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+Shift+[")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.bringToFront"),\n            shortcuts: [_constants__WEBPACK_IMPORTED_MODULE_9__.isDarwin ? (0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+Alt+]") : (0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+Shift+]")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.sendBackward"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+[")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.bringForward"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+]")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.alignTop"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+Shift+Up")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.alignBottom"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+Shift+Down")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.alignLeft"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+Shift+Left")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.alignRight"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+Shift+Right")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.duplicateSelection"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+D"), (0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)(`Alt+${(0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.drag")}`)]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.toggleElementLock"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+Shift+L")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("buttons.undo"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+Z")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("buttons.redo"),\n            shortcuts: _constants__WEBPACK_IMPORTED_MODULE_9__.isWindows ? [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+Y"), (0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+Shift+Z")] : [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+Shift+Z")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.group"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+G")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.ungroup"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+Shift+G")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.flipHorizontal"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("Shift+H")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.flipVertical"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("Shift+V")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.showStroke"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("S")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.showBackground"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("G")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.decreaseFontSize"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+Shift+<")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.increaseFontSize"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+Shift+>")]\n          })]\n        }))]\n      }))]\n    }))\n  });\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 27640 characters]\n//# sourceURL=webpack-internal:///../../components/HelpDialog.tsx\n');
              }
            ),
            /***/
            "../../components/HintViewer.tsx": (
              /*!***************************************!*\
                !*** ../../components/HintViewer.tsx ***!
                \***************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "HintViewer": () => (/* binding */ HintViewer)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../element/typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _appState__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../appState */ "../../appState.ts");\n/* harmony import */ var _HintViewer_scss__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./HintViewer.scss */ "../../components/HintViewer.scss");\n\n\n\n\n\n\n\nconst getHints = ({\n  appState,\n  isMobile,\n  device,\n  app\n}) => {\n  var _a;\n\n  const {\n    activeTool,\n    isResizing,\n    isRotating,\n    lastPointerDownWith\n  } = appState;\n  const multiMode = appState.multiElement !== null;\n\n  if (appState.openSidebar && !device.editor.canFitSidebar) {\n    return null;\n  }\n\n  if ((0,_appState__WEBPACK_IMPORTED_MODULE_4__.isEraserActive)(appState)) {\n    return (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("hints.eraserRevert");\n  }\n\n  if (activeTool.type === "arrow" || activeTool.type === "line") {\n    if (!multiMode) {\n      return (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("hints.linearElement");\n    }\n\n    return (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("hints.linearElementMulti");\n  }\n\n  if (activeTool.type === "freedraw") {\n    return (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("hints.freeDraw");\n  }\n\n  if (activeTool.type === "text") {\n    return (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("hints.text");\n  }\n\n  if (activeTool.type === "embeddable") {\n    return (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("hints.embeddable");\n  }\n\n  if (appState.activeTool.type === "image" && appState.pendingImageElementId) {\n    return (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("hints.placeImage");\n  }\n\n  const selectedElements = app.scene.getSelectedElements(appState);\n\n  if (isResizing && lastPointerDownWith === "mouse" && selectedElements.length === 1) {\n    const targetElement = selectedElements[0];\n\n    if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_2__.isLinearElement)(targetElement) && targetElement.points.length === 2) {\n      return (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("hints.lockAngle");\n    }\n\n    return (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_2__.isImageElement)(targetElement) ? (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("hints.resizeImage") : (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("hints.resize");\n  }\n\n  if (isRotating && lastPointerDownWith === "mouse") {\n    return (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("hints.rotate");\n  }\n\n  if (selectedElements.length === 1 && (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_2__.isTextElement)(selectedElements[0])) {\n    return (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("hints.text_selected");\n  }\n\n  if (appState.editingElement && (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_2__.isTextElement)(appState.editingElement)) {\n    return (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("hints.text_editing");\n  }\n\n  if (activeTool.type === "selection") {\n    if (((_a = appState.draggingElement) === null || _a === void 0 ? void 0 : _a.type) === "selection" && !selectedElements.length && !appState.editingElement && !appState.editingLinearElement) {\n      return (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("hints.deepBoxSelect");\n    }\n\n    if (appState.gridSize && appState.draggingElement) {\n      return (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("hints.disableSnapping");\n    }\n\n    if (!selectedElements.length && !isMobile) {\n      return (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("hints.canvasPanning");\n    }\n\n    if (selectedElements.length === 1) {\n      if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_2__.isLinearElement)(selectedElements[0])) {\n        if (appState.editingLinearElement) {\n          return appState.editingLinearElement.selectedPointsIndices ? (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("hints.lineEditor_pointSelected") : (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("hints.lineEditor_nothingSelected");\n        }\n\n        return (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("hints.lineEditor_info");\n      }\n\n      if (!appState.draggingElement && (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_2__.isTextBindableContainer)(selectedElements[0])) {\n        return (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("hints.bindTextToElement");\n      }\n    }\n  }\n\n  return null;\n};\n\nconst HintViewer = ({\n  appState,\n  isMobile,\n  device,\n  app\n}) => {\n  let hint = getHints({\n    appState,\n    isMobile,\n    device,\n    app\n  });\n\n  if (!hint) {\n    return null;\n  }\n\n  hint = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.getShortcutKey)(hint);\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: "HintViewer"\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", {\n      children: hint\n    })\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6276 characters]\n//# sourceURL=webpack-internal:///../../components/HintViewer.tsx\n');
              }
            ),
            /***/
            "../../components/IconPicker.tsx": (
              /*!***************************************!*\
                !*** ../../components/IconPicker.tsx ***!
                \***************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "IconPicker": () => (/* binding */ IconPicker)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _Popover__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Popover */ "../../components/Popover.tsx");\n/* harmony import */ var _IconPicker_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./IconPicker.scss */ "../../components/IconPicker.scss");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n\n\n\n\n\n\n\n\nfunction Picker({\n  options,\n  value,\n  label,\n  onChange,\n  onClose\n}) {\n  const rFirstItem = react__WEBPACK_IMPORTED_MODULE_1___default().useRef();\n  const rActiveItem = react__WEBPACK_IMPORTED_MODULE_1___default().useRef();\n  const rGallery = react__WEBPACK_IMPORTED_MODULE_1___default().useRef(null);\n  react__WEBPACK_IMPORTED_MODULE_1___default().useEffect(() => {\n    // After the component is first mounted focus on first input\n    if (rActiveItem.current) {\n      rActiveItem.current.focus();\n    } else if (rGallery.current) {\n      rGallery.current.focus();\n    }\n  }, []);\n\n  const handleKeyDown = event => {\n    const pressedOption = options.find(option => option.keyBinding === event.key.toLowerCase());\n\n    if (!(event.metaKey || event.altKey || event.ctrlKey) && pressedOption) {\n      // Keybinding navigation\n      const index = options.indexOf(pressedOption);\n      rGallery.current.children[index].focus();\n      event.preventDefault();\n    } else if (event.key === _keys__WEBPACK_IMPORTED_MODULE_4__.KEYS.TAB) {\n      // Tab navigation cycle through options. If the user tabs\n      // away from the picker, close the picker. We need to use\n      // a timeout here to let the stack clear before checking.\n      setTimeout(() => {\n        const active = rActiveItem.current;\n        const docActive = document.activeElement;\n\n        if (active !== docActive) {\n          onClose();\n        }\n      }, 0);\n    } else if ((0,_keys__WEBPACK_IMPORTED_MODULE_4__.isArrowKey)(event.key)) {\n      // Arrow navigation\n      const {\n        activeElement\n      } = document;\n      const isRTL = (0,_i18n__WEBPACK_IMPORTED_MODULE_5__.getLanguage)().rtl;\n      const index = Array.prototype.indexOf.call(rGallery.current.children, activeElement);\n\n      if (index !== -1) {\n        const length = options.length;\n        let nextIndex = index;\n\n        switch (event.key) {\n          // Select the next option\n          case isRTL ? _keys__WEBPACK_IMPORTED_MODULE_4__.KEYS.ARROW_LEFT : _keys__WEBPACK_IMPORTED_MODULE_4__.KEYS.ARROW_RIGHT:\n          case _keys__WEBPACK_IMPORTED_MODULE_4__.KEYS.ARROW_DOWN:\n            {\n              nextIndex = (index + 1) % length;\n              break;\n            }\n          // Select the previous option\n\n          case isRTL ? _keys__WEBPACK_IMPORTED_MODULE_4__.KEYS.ARROW_RIGHT : _keys__WEBPACK_IMPORTED_MODULE_4__.KEYS.ARROW_LEFT:\n          case _keys__WEBPACK_IMPORTED_MODULE_4__.KEYS.ARROW_UP:\n            {\n              nextIndex = (length + index - 1) % length;\n              break;\n            }\n        }\n\n        rGallery.current.children[nextIndex].focus();\n      }\n\n      event.preventDefault();\n    } else if (event.key === _keys__WEBPACK_IMPORTED_MODULE_4__.KEYS.ESCAPE || event.key === _keys__WEBPACK_IMPORTED_MODULE_4__.KEYS.ENTER) {\n      // Close on escape or enter\n      event.preventDefault();\n      onClose();\n    }\n\n    event.nativeEvent.stopImmediatePropagation();\n    event.stopPropagation();\n  };\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: `picker`,\n    role: "dialog",\n    "aria-modal": "true",\n    "aria-label": label,\n    onKeyDown: handleKeyDown\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: "picker-content",\n      ref: rGallery\n    }, {\n      children: options.map((option, i) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("button", Object.assign({\n        className: (0,clsx__WEBPACK_IMPORTED_MODULE_6__["default"])("picker-option", {\n          active: value === option.value\n        }),\n        onClick: event => {\n          event.currentTarget.focus();\n          onChange(option.value);\n        },\n        title: `${option.text} \u2014 ${option.keyBinding.toUpperCase()}`,\n        "aria-label": option.text || "none",\n        "aria-keyshortcuts": option.keyBinding,\n        ref: el => {\n          if (el && i === 0) {\n            rFirstItem.current = el;\n          }\n\n          if (el && option.value === value) {\n            rActiveItem.current = el;\n          }\n        },\n        onFocus: () => {\n          onChange(option.value);\n        }\n      }, {\n        children: [option.icon, (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", Object.assign({\n          className: "picker-keybinding"\n        }, {\n          children: option.keyBinding\n        }))]\n      }), option.text))\n    }))\n  }));\n}\n\nfunction IconPicker({\n  value,\n  label,\n  options,\n  onChange,\n  group = ""\n}) {\n  var _a;\n\n  const [isActive, setActive] = react__WEBPACK_IMPORTED_MODULE_1___default().useState(false);\n  const rPickerButton = react__WEBPACK_IMPORTED_MODULE_1___default().useRef(null);\n  const isRTL = (0,_i18n__WEBPACK_IMPORTED_MODULE_5__.getLanguage)().rtl;\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("button", Object.assign({\n      name: group,\n      className: isActive ? "active" : "",\n      "aria-label": label,\n      onClick: () => setActive(!isActive),\n      ref: rPickerButton\n    }, {\n      children: (_a = options.find(option => option.value === value)) === null || _a === void 0 ? void 0 : _a.icon\n    })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)((react__WEBPACK_IMPORTED_MODULE_1___default().Suspense), Object.assign({\n      fallback: ""\n    }, {\n      children: isActive ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n        children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Popover__WEBPACK_IMPORTED_MODULE_2__.Popover, Object.assign({\n          onCloseRequest: event => event.target !== rPickerButton.current && setActive(false)\n        }, isRTL ? {\n          right: 5.5\n        } : {\n          left: -5.5\n        }, {\n          children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Picker, {\n            options: options,\n            value: value,\n            label: label,\n            onChange: onChange,\n            onClose: () => {\n              var _a;\n\n              setActive(false);\n              (_a = rPickerButton.current) === null || _a === void 0 ? void 0 : _a.focus();\n            }\n          })\n        })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n          className: "picker-triangle"\n        })]\n      }) : null\n    }))]\n  });\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 9680 characters]\n//# sourceURL=webpack-internal:///../../components/IconPicker.tsx\n');
              }
            ),
            /***/
            "../../components/ImageExportDialog.tsx": (
              /*!**********************************************!*\
                !*** ../../components/ImageExportDialog.tsx ***!
                \**********************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "ErrorCanvasPreview": () => (/* binding */ ErrorCanvasPreview),\n/* harmony export */   "ImageExportDialog": () => (/* binding */ ImageExportDialog)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _actions_actionExport__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../actions/actionExport */ "../../actions/actionExport.tsx");\n/* harmony import */ var _clipboard__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../clipboard */ "../../clipboard.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _data_blob__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../data/blob */ "../../data/blob.ts");\n/* harmony import */ var _data_filesystem__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../data/filesystem */ "../../data/filesystem.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../scene */ "../../scene/index.ts");\n/* harmony import */ var _packages_utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../packages/utils */ "../utils.ts");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./icons */ "../../components/icons.tsx");\n/* harmony import */ var _Dialog__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./Dialog */ "../../components/Dialog.tsx");\n/* harmony import */ var _RadioGroup__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./RadioGroup */ "../../components/RadioGroup.tsx");\n/* harmony import */ var _Switch__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./Switch */ "../../components/Switch.tsx");\n/* harmony import */ var _Tooltip__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./Tooltip */ "../../components/Tooltip.tsx");\n/* harmony import */ var _ImageExportDialog_scss__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./ImageExportDialog.scss */ "../../components/ImageExportDialog.scss");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./App */ "../../components/App.tsx");\n/* harmony import */ var _FilledButton__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./FilledButton */ "../../components/FilledButton.tsx");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _data__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../data */ "../../data/index.ts");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst supportsContextFilters = ("filter" in document.createElement("canvas").getContext("2d"));\nconst ErrorCanvasPreview = () => {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("h3", {\n      children: (0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)("canvasError.cannotShowPreview")\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("p", {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", {\n        children: (0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)("canvasError.canvasTooBig")\n      })\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("em", {\n      children: ["(", (0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)("canvasError.canvasTooBigTip"), ")"]\n    })]\n  });\n};\n\nconst ImageExportModal = ({\n  appStateSnapshot,\n  elementsSnapshot,\n  files,\n  actionManager,\n  onExportImage\n}) => {\n  const hasSelection = (0,_scene__WEBPACK_IMPORTED_MODULE_8__.isSomeElementSelected)(elementsSnapshot, appStateSnapshot);\n  const appProps = (0,_App__WEBPACK_IMPORTED_MODULE_16__.useAppProps)();\n  const [projectName, setProjectName] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(appStateSnapshot.name);\n  const [exportSelectionOnly, setExportSelectionOnly] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(hasSelection);\n  const [exportWithBackground, setExportWithBackground] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(appStateSnapshot.exportBackground);\n  const [exportDarkMode, setExportDarkMode] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(appStateSnapshot.exportWithDarkMode);\n  const [embedScene, setEmbedScene] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(appStateSnapshot.exportEmbedScene);\n  const [exportScale, setExportScale] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(appStateSnapshot.exportScale);\n  const previewRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n  const [renderError, setRenderError] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n  const {\n    exportedElements,\n    exportingFrame\n  } = (0,_data__WEBPACK_IMPORTED_MODULE_19__.prepareElementsForExport)(elementsSnapshot, appStateSnapshot, exportSelectionOnly);\n  (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {\n    const previewNode = previewRef.current;\n\n    if (!previewNode) {\n      return;\n    }\n\n    const maxWidth = previewNode.offsetWidth;\n    const maxHeight = previewNode.offsetHeight;\n\n    if (!maxWidth) {\n      return;\n    }\n\n    (0,_packages_utils__WEBPACK_IMPORTED_MODULE_9__.exportToCanvas)({\n      elements: exportedElements,\n      appState: Object.assign(Object.assign({}, appStateSnapshot), {\n        name: projectName,\n        exportBackground: exportWithBackground,\n        exportWithDarkMode: exportDarkMode,\n        exportScale,\n        exportEmbedScene: embedScene\n      }),\n      files,\n      exportPadding: _constants__WEBPACK_IMPORTED_MODULE_4__.DEFAULT_EXPORT_PADDING,\n      maxWidthOrHeight: Math.max(maxWidth, maxHeight),\n      exportingFrame\n    }).then(canvas => {\n      setRenderError(null); // if converting to blob fails, there\'s some problem that will\n      // likely prevent preview and export (e.g. canvas too big)\n\n      return (0,_data_blob__WEBPACK_IMPORTED_MODULE_5__.canvasToBlob)(canvas).then(() => {\n        previewNode.replaceChildren(canvas);\n      });\n    }).catch(error => {\n      console.error(error);\n      setRenderError(error);\n    });\n  }, [appStateSnapshot, files, exportedElements, exportingFrame, projectName, exportWithBackground, exportDarkMode, exportScale, embedScene]);\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n    className: "ImageExportModal"\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("h3", {\n      children: (0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)("imageExportDialog.header")\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n      className: "ImageExportModal__preview"\n    }, {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n        className: "ImageExportModal__preview__canvas",\n        ref: previewRef\n      }, {\n        children: renderError && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(ErrorCanvasPreview, {})\n      })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n        className: "ImageExportModal__preview__filename"\n      }, {\n        children: !_data_filesystem__WEBPACK_IMPORTED_MODULE_6__.nativeFileSystemSupported && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input", {\n          type: "text",\n          className: "TextInput",\n          value: projectName,\n          style: {\n            width: "30ch"\n          },\n          disabled: typeof appProps.name !== "undefined" || appStateSnapshot.viewModeEnabled,\n          onChange: event => {\n            setProjectName(event.target.value);\n            actionManager.executeAction(_actions_actionExport__WEBPACK_IMPORTED_MODULE_2__.actionChangeProjectName, "ui", event.target.value);\n          }\n        })\n      }))]\n    })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n      className: "ImageExportModal__settings"\n    }, {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("h3", {\n        children: (0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)("imageExportDialog.header")\n      }), hasSelection && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(ExportSetting, Object.assign({\n        label: (0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)("imageExportDialog.label.onlySelected"),\n        name: "exportOnlySelected"\n      }, {\n        children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Switch__WEBPACK_IMPORTED_MODULE_13__.Switch, {\n          name: "exportOnlySelected",\n          checked: exportSelectionOnly,\n          onChange: checked => {\n            setExportSelectionOnly(checked);\n          }\n        })\n      })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(ExportSetting, Object.assign({\n        label: (0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)("imageExportDialog.label.withBackground"),\n        name: "exportBackgroundSwitch"\n      }, {\n        children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Switch__WEBPACK_IMPORTED_MODULE_13__.Switch, {\n          name: "exportBackgroundSwitch",\n          checked: exportWithBackground,\n          onChange: checked => {\n            setExportWithBackground(checked);\n            actionManager.executeAction(_actions_actionExport__WEBPACK_IMPORTED_MODULE_2__.actionChangeExportBackground, "ui", checked);\n          }\n        })\n      })), supportsContextFilters && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(ExportSetting, Object.assign({\n        label: (0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)("imageExportDialog.label.darkMode"),\n        name: "exportDarkModeSwitch"\n      }, {\n        children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Switch__WEBPACK_IMPORTED_MODULE_13__.Switch, {\n          name: "exportDarkModeSwitch",\n          checked: exportDarkMode,\n          onChange: checked => {\n            setExportDarkMode(checked);\n            actionManager.executeAction(_actions_actionExport__WEBPACK_IMPORTED_MODULE_2__.actionExportWithDarkMode, "ui", checked);\n          }\n        })\n      })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(ExportSetting, Object.assign({\n        label: (0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)("imageExportDialog.label.embedScene"),\n        tooltip: (0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)("imageExportDialog.tooltip.embedScene"),\n        name: "exportEmbedSwitch"\n      }, {\n        children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Switch__WEBPACK_IMPORTED_MODULE_13__.Switch, {\n          name: "exportEmbedSwitch",\n          checked: embedScene,\n          onChange: checked => {\n            setEmbedScene(checked);\n            actionManager.executeAction(_actions_actionExport__WEBPACK_IMPORTED_MODULE_2__.actionChangeExportEmbedScene, "ui", checked);\n          }\n        })\n      })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(ExportSetting, Object.assign({\n        label: (0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)("imageExportDialog.label.scale"),\n        name: "exportScale"\n      }, {\n        children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_RadioGroup__WEBPACK_IMPORTED_MODULE_12__.RadioGroup, {\n          name: "exportScale",\n          value: exportScale,\n          onChange: scale => {\n            setExportScale(scale);\n            actionManager.executeAction(_actions_actionExport__WEBPACK_IMPORTED_MODULE_2__.actionChangeExportScale, "ui", scale);\n          },\n          choices: _constants__WEBPACK_IMPORTED_MODULE_4__.EXPORT_SCALES.map(scale => ({\n            value: scale,\n            label: `${scale}\\u00d7`\n          }))\n        })\n      })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n        className: "ImageExportModal__settings__buttons"\n      }, {\n        children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_FilledButton__WEBPACK_IMPORTED_MODULE_17__.FilledButton, Object.assign({\n          className: "ImageExportModal__settings__buttons__button",\n          label: (0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)("imageExportDialog.title.exportToPng"),\n          onClick: () => onExportImage(_constants__WEBPACK_IMPORTED_MODULE_4__.EXPORT_IMAGE_TYPES.png, exportedElements, {\n            exportingFrame\n          }),\n          startIcon: _icons__WEBPACK_IMPORTED_MODULE_10__.downloadIcon\n        }, {\n          children: (0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)("imageExportDialog.button.exportToPng")\n        })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_FilledButton__WEBPACK_IMPORTED_MODULE_17__.FilledButton, Object.assign({\n          className: "ImageExportModal__settings__buttons__button",\n          label: (0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)("imageExportDialog.title.exportToSvg"),\n          onClick: () => onExportImage(_constants__WEBPACK_IMPORTED_MODULE_4__.EXPORT_IMAGE_TYPES.svg, exportedElements, {\n            exportingFrame\n          }),\n          startIcon: _icons__WEBPACK_IMPORTED_MODULE_10__.downloadIcon\n        }, {\n          children: (0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)("imageExportDialog.button.exportToSvg")\n        })), (_clipboard__WEBPACK_IMPORTED_MODULE_3__.probablySupportsClipboardBlob || _constants__WEBPACK_IMPORTED_MODULE_4__.isFirefox) && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_FilledButton__WEBPACK_IMPORTED_MODULE_17__.FilledButton, Object.assign({\n          className: "ImageExportModal__settings__buttons__button",\n          label: (0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)("imageExportDialog.title.copyPngToClipboard"),\n          onClick: () => onExportImage(_constants__WEBPACK_IMPORTED_MODULE_4__.EXPORT_IMAGE_TYPES.clipboard, exportedElements, {\n            exportingFrame\n          }),\n          startIcon: _icons__WEBPACK_IMPORTED_MODULE_10__.copyIcon\n        }, {\n          children: (0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)("imageExportDialog.button.copyPngToClipboard")\n        }))]\n      }))]\n    }))]\n  }));\n};\n\nconst ExportSetting = ({\n  label,\n  children,\n  tooltip,\n  name\n}) => {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n    className: "ImageExportModal__settings__setting",\n    title: label\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("label", Object.assign({\n      htmlFor: name,\n      className: "ImageExportModal__settings__setting__label"\n    }, {\n      children: [label, tooltip && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Tooltip__WEBPACK_IMPORTED_MODULE_14__.Tooltip, Object.assign({\n        label: tooltip,\n        long: true\n      }, {\n        children: _icons__WEBPACK_IMPORTED_MODULE_10__.helpIcon\n      }))]\n    })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: "ImageExportModal__settings__setting__content"\n    }, {\n      children: children\n    }))]\n  }));\n};\n\nconst ImageExportDialog = ({\n  elements,\n  appState,\n  files,\n  actionManager,\n  onExportImage,\n  onCloseRequest\n}) => {\n  // we need to take a snapshot so that the exported state can\'t be modified\n  // while the dialog is open\n  const [{\n    appStateSnapshot,\n    elementsSnapshot\n  }] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(() => {\n    return {\n      appStateSnapshot: (0,_utils__WEBPACK_IMPORTED_MODULE_18__.cloneJSON)(appState),\n      elementsSnapshot: (0,_utils__WEBPACK_IMPORTED_MODULE_18__.cloneJSON)(elements)\n    };\n  });\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Dialog__WEBPACK_IMPORTED_MODULE_11__.Dialog, Object.assign({\n    onCloseRequest: onCloseRequest,\n    size: "wide",\n    title: false\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(ImageExportModal, {\n      elementsSnapshot: elementsSnapshot,\n      appStateSnapshot: appStateSnapshot,\n      files: files,\n      actionManager: actionManager,\n      onExportImage: onExportImage\n    })\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 18544 characters]\n//# sourceURL=webpack-internal:///../../components/ImageExportDialog.tsx\n');
              }
            ),
            /***/
            "../../components/InitializeApp.tsx": (
              /*!******************************************!*\
                !*** ../../components/InitializeApp.tsx ***!
                \******************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "InitializeApp": () => (/* binding */ InitializeApp)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _LoadingMessage__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./LoadingMessage */ "../../components/LoadingMessage.tsx");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator["throw"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n\n\nconst InitializeApp = props => {\n  const [loading, setLoading] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n  (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {\n    const updateLang = () => __awaiter(void 0, void 0, void 0, function* () {\n      yield (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.setLanguage)(currentLang);\n      setLoading(false);\n    });\n\n    const currentLang = _i18n__WEBPACK_IMPORTED_MODULE_3__.languages.find(lang => lang.code === props.langCode) || _i18n__WEBPACK_IMPORTED_MODULE_3__.defaultLang;\n    updateLang();\n  }, [props.langCode]);\n  return loading ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LoadingMessage__WEBPACK_IMPORTED_MODULE_2__.LoadingMessage, {\n    theme: props.theme\n  }) : props.children;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9Jbml0aWFsaXplQXBwLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsZ0JBQWdCLFNBQUksSUFBSSxTQUFJO0FBQzVCO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7O0FBRWdEO0FBQ0c7QUFDRDtBQUNZO0FBQ3ZEO0FBQ1AsZ0NBQWdDLCtDQUFRO0FBQ3hDLEVBQUUsZ0RBQVM7QUFDWDtBQUNBLFlBQVksa0RBQVc7QUFDdkI7QUFDQSxLQUFLOztBQUVMLHdCQUF3QixpREFBYywwQ0FBMEMsOENBQVc7QUFDM0Y7QUFDQSxHQUFHO0FBQ0gsbUJBQW1CLHNEQUFJLENBQUMsMkRBQWM7QUFDdEM7QUFDQSxHQUFHO0FBQ0giLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9Jbml0aWFsaXplQXBwLnRzeD8xZTljIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBfX2F3YWl0ZXIgPSB0aGlzICYmIHRoaXMuX19hd2FpdGVyIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkge1xuICAgICAgcmVzb2x2ZSh2YWx1ZSk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7XG4gICAgICB0cnkge1xuICAgICAgICBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJlamVjdChlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkge1xuICAgICAgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7XG4gICAgfVxuXG4gICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICB9KTtcbn07XG5cbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgTG9hZGluZ01lc3NhZ2UgfSBmcm9tIFwiLi9Mb2FkaW5nTWVzc2FnZVwiO1xuaW1wb3J0IHsgZGVmYXVsdExhbmcsIGxhbmd1YWdlcywgc2V0TGFuZ3VhZ2UgfSBmcm9tIFwiLi4vaTE4blwiO1xuZXhwb3J0IGNvbnN0IEluaXRpYWxpemVBcHAgPSBwcm9wcyA9PiB7XG4gIGNvbnN0IFtsb2FkaW5nLCBzZXRMb2FkaW5nXSA9IHVzZVN0YXRlKHRydWUpO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHVwZGF0ZUxhbmcgPSAoKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgIHlpZWxkIHNldExhbmd1YWdlKGN1cnJlbnRMYW5nKTtcbiAgICAgIHNldExvYWRpbmcoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgY3VycmVudExhbmcgPSBsYW5ndWFnZXMuZmluZChsYW5nID0+IGxhbmcuY29kZSA9PT0gcHJvcHMubGFuZ0NvZGUpIHx8IGRlZmF1bHRMYW5nO1xuICAgIHVwZGF0ZUxhbmcoKTtcbiAgfSwgW3Byb3BzLmxhbmdDb2RlXSk7XG4gIHJldHVybiBsb2FkaW5nID8gX2pzeChMb2FkaW5nTWVzc2FnZSwge1xuICAgIHRoZW1lOiBwcm9wcy50aGVtZVxuICB9KSA6IHByb3BzLmNoaWxkcmVuO1xufTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/InitializeApp.tsx\n');
              }
            ),
            /***/
            "../../components/Island.tsx": (
              /*!***********************************!*\
                !*** ../../components/Island.tsx ***!
                \***********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "Island": () => (/* binding */ Island)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Island_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Island.scss */ "../../components/Island.scss");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n\n\n\n\nconst Island = react__WEBPACK_IMPORTED_MODULE_2___default().forwardRef(({\n  children,\n  padding,\n  className,\n  style\n}, ref) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n  className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__["default"])("Island", className),\n  style: Object.assign({\n    "--padding": padding\n  }, style),\n  ref: ref\n}, {\n  children: children\n})));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9Jc2xhbmQudHN4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBZ0Q7QUFDekI7QUFDRztBQUNGO0FBQ2pCLGVBQWUsdURBQWdCO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxVQUFVLHNEQUFJO0FBQ2YsYUFBYSxnREFBSTtBQUNqQjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsQ0FBQztBQUNEO0FBQ0EsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL0lzbGFuZC50c3g/YzlmNCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IFwiLi9Jc2xhbmQuc2Nzc1wiO1xuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IGNsc3ggZnJvbSBcImNsc3hcIjtcbmV4cG9ydCBjb25zdCBJc2xhbmQgPSBSZWFjdC5mb3J3YXJkUmVmKCh7XG4gIGNoaWxkcmVuLFxuICBwYWRkaW5nLFxuICBjbGFzc05hbWUsXG4gIHN0eWxlXG59LCByZWYpID0+IF9qc3goXCJkaXZcIiwgT2JqZWN0LmFzc2lnbih7XG4gIGNsYXNzTmFtZTogY2xzeChcIklzbGFuZFwiLCBjbGFzc05hbWUpLFxuICBzdHlsZTogT2JqZWN0LmFzc2lnbih7XG4gICAgXCItLXBhZGRpbmdcIjogcGFkZGluZ1xuICB9LCBzdHlsZSksXG4gIHJlZjogcmVmXG59LCB7XG4gIGNoaWxkcmVuOiBjaGlsZHJlblxufSkpKTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/Island.tsx\n');
              }
            ),
            /***/
            "../../components/JSONExportDialog.tsx": (
              /*!*********************************************!*\
                !*** ../../components/JSONExportDialog.tsx ***!
                \*********************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "JSONExportDialog": () => (/* binding */ JSONExportDialog)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _Dialog__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Dialog */ "../../components/Dialog.tsx");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./icons */ "../../components/icons.tsx");\n/* harmony import */ var _ToolButton__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./ToolButton */ "../../components/ToolButton.tsx");\n/* harmony import */ var _actions_actionExport__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../actions/actionExport */ "../../actions/actionExport.tsx");\n/* harmony import */ var _Card__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./Card */ "../../components/Card.tsx");\n/* harmony import */ var _ExportDialog_scss__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./ExportDialog.scss */ "../../components/ExportDialog.scss");\n/* harmony import */ var _data_filesystem__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../data/filesystem */ "../../data/filesystem.ts");\n/* harmony import */ var _analytics__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../analytics */ "../../analytics.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator["throw"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst JSONExportModal = ({\n  elements,\n  appState,\n  setAppState,\n  files,\n  actionManager,\n  exportOpts,\n  canvas,\n  onCloseRequest\n}) => {\n  const {\n    onExportToBackend\n  } = exportOpts;\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: "ExportDialog ExportDialog--json"\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n      className: "ExportDialog-cards"\n    }, {\n      children: [exportOpts.saveFileToDisk && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Card__WEBPACK_IMPORTED_MODULE_7__.Card, Object.assign({\n        color: "lime"\n      }, {\n        children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n          className: "Card-icon"\n        }, {\n          children: _icons__WEBPACK_IMPORTED_MODULE_4__.exportToFileIcon\n        })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("h2", {\n          children: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("exportDialog.disk_title")\n        }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n          className: "Card-details"\n        }, {\n          children: [(0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("exportDialog.disk_details"), !_data_filesystem__WEBPACK_IMPORTED_MODULE_9__.nativeFileSystemSupported && actionManager.renderAction("changeProjectName")]\n        })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ToolButton__WEBPACK_IMPORTED_MODULE_5__.ToolButton, {\n          className: "Card-button",\n          type: "button",\n          title: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("exportDialog.disk_button"),\n          "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("exportDialog.disk_button"),\n          showAriaLabel: true,\n          onClick: () => {\n            actionManager.executeAction(_actions_actionExport__WEBPACK_IMPORTED_MODULE_6__.actionSaveFileToDisk, "ui");\n          }\n        })]\n      })), onExportToBackend && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Card__WEBPACK_IMPORTED_MODULE_7__.Card, Object.assign({\n        color: "pink"\n      }, {\n        children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n          className: "Card-icon"\n        }, {\n          children: _icons__WEBPACK_IMPORTED_MODULE_4__.LinkIcon\n        })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("h2", {\n          children: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("exportDialog.link_title")\n        }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n          className: "Card-details"\n        }, {\n          children: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("exportDialog.link_details")\n        })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ToolButton__WEBPACK_IMPORTED_MODULE_5__.ToolButton, {\n          className: "Card-button",\n          type: "button",\n          title: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("exportDialog.link_button"),\n          "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("exportDialog.link_button"),\n          showAriaLabel: true,\n          onClick: () => __awaiter(void 0, void 0, void 0, function* () {\n            try {\n              (0,_analytics__WEBPACK_IMPORTED_MODULE_10__.trackEvent)("export", "link", `ui (${(0,_utils__WEBPACK_IMPORTED_MODULE_11__.getFrame)()})`);\n              yield onExportToBackend(elements, appState, files, canvas);\n              onCloseRequest();\n            } catch (error) {\n              setAppState({\n                errorMessage: error.message\n              });\n            }\n          })\n        })]\n      })), exportOpts.renderCustomUI && exportOpts.renderCustomUI(elements, appState, files, canvas)]\n    }))\n  }));\n};\n\nconst JSONExportDialog = ({\n  elements,\n  appState,\n  files,\n  actionManager,\n  exportOpts,\n  canvas,\n  setAppState\n}) => {\n  const handleClose = react__WEBPACK_IMPORTED_MODULE_1___default().useCallback(() => {\n    setAppState({\n      openDialog: null\n    });\n  }, [setAppState]);\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n    children: appState.openDialog === "jsonExport" && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Dialog__WEBPACK_IMPORTED_MODULE_3__.Dialog, Object.assign({\n      onCloseRequest: handleClose,\n      title: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("buttons.export")\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(JSONExportModal, {\n        elements: elements,\n        appState: appState,\n        setAppState: setAppState,\n        files: files,\n        actionManager: actionManager,\n        onCloseRequest: handleClose,\n        exportOpts: exportOpts,\n        canvas: canvas\n      })\n    }))\n  });\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 8552 characters]\n//# sourceURL=webpack-internal:///../../components/JSONExportDialog.tsx\n');
              }
            ),
            /***/
            "../../components/LaserTool/LaserPathManager.ts": (
              /*!******************************************************!*\
                !*** ../../components/LaserTool/LaserPathManager.ts ***!
                \******************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "LaserPathManager": () => (/* binding */ LaserPathManager)\n/* harmony export */ });\n/* harmony import */ var _excalidraw_laser_pointer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @excalidraw/laser-pointer */ "../../../node_modules/@excalidraw/laser-pointer/dist/esm.js");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils */ "../../utils.ts");\n/* harmony import */ var _clients__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../clients */ "../../clients.ts");\n\n\n // decay time in milliseconds\n\nconst DECAY_TIME = 1000; // length of line in points before it starts decaying\n\nconst DECAY_LENGTH = 50;\n\nconst average = (a, b) => (a + b) / 2;\n\nfunction getSvgPathFromStroke(points, closed = true) {\n  const len = points.length;\n\n  if (len < 4) {\n    return ``;\n  }\n\n  let a = points[0];\n  let b = points[1];\n  const c = points[2];\n  let result = `M${a[0].toFixed(2)},${a[1].toFixed(2)} Q${b[0].toFixed(2)},${b[1].toFixed(2)} ${average(b[0], c[0]).toFixed(2)},${average(b[1], c[1]).toFixed(2)} T`;\n\n  for (let i = 2, max = len - 1; i < max; i++) {\n    a = points[i];\n    b = points[i + 1];\n    result += `${average(a[0], b[0]).toFixed(2)},${average(a[1], b[1]).toFixed(2)} `;\n  }\n\n  if (closed) {\n    result += "Z";\n  }\n\n  return result;\n}\n\nfunction easeOutCubic(t) {\n  return 1 - Math.pow(1 - t, 3);\n}\n\nfunction instantiateCollabolatorState() {\n  return {\n    currentPath: undefined,\n    finishedPaths: [],\n    lastPoint: [-10000, -10000],\n    svg: document.createElementNS("http://www.w3.org/2000/svg", "path")\n  };\n}\n\nfunction instantiatePath() {\n  _excalidraw_laser_pointer__WEBPACK_IMPORTED_MODULE_0__.LaserPointer.constants.cornerDetectionMaxAngle = 70;\n  return new _excalidraw_laser_pointer__WEBPACK_IMPORTED_MODULE_0__.LaserPointer({\n    simplify: 0,\n    streamline: 0.4,\n    sizeMapping: c => {\n      const pt = DECAY_TIME;\n      const pl = DECAY_LENGTH;\n      const t = Math.max(0, 1 - (performance.now() - c.pressure) / pt);\n      const l = (pl - Math.min(pl, c.totalLength - c.currentIndex)) / pl;\n      return Math.min(easeOutCubic(l), easeOutCubic(t));\n    }\n  });\n}\n\nclass LaserPathManager {\n  constructor(app) {\n    this.app = app;\n    this.collaboratorsState = new Map();\n    this.isDrawing = false;\n    this.isRunning = false;\n    this.ownState = instantiateCollabolatorState();\n  }\n\n  destroy() {\n    this.stop();\n    this.isDrawing = false;\n    this.ownState = instantiateCollabolatorState();\n    this.collaboratorsState = new Map();\n  }\n\n  startPath(x, y) {\n    this.ownState.currentPath = instantiatePath();\n    this.ownState.currentPath.addPoint([x, y, performance.now()]);\n    this.updatePath(this.ownState);\n  }\n\n  addPointToPath(x, y) {\n    var _a;\n\n    if (this.ownState.currentPath) {\n      (_a = this.ownState.currentPath) === null || _a === void 0 ? void 0 : _a.addPoint([x, y, performance.now()]);\n      this.updatePath(this.ownState);\n    }\n  }\n\n  endPath() {\n    if (this.ownState.currentPath) {\n      this.ownState.currentPath.close();\n      this.ownState.finishedPaths.push(this.ownState.currentPath);\n      this.updatePath(this.ownState);\n    }\n  }\n\n  updatePath(state) {\n    this.isDrawing = true;\n\n    if (!this.isRunning) {\n      this.start();\n    }\n  }\n\n  start(svg) {\n    if (svg) {\n      this.container = svg;\n      this.container.appendChild(this.ownState.svg);\n    }\n\n    this.stop();\n    this.isRunning = true;\n    this.loop();\n  }\n\n  stop() {\n    this.isRunning = false;\n\n    if (this.rafId) {\n      cancelAnimationFrame(this.rafId);\n    }\n\n    this.rafId = undefined;\n  }\n\n  loop() {\n    this.rafId = requestAnimationFrame(this.loop.bind(this));\n    this.updateCollabolatorsState();\n\n    if (this.isDrawing) {\n      this.update();\n    } else {\n      this.isRunning = false;\n    }\n  }\n\n  draw(path) {\n    const stroke = path.getStrokeOutline(path.options.size / this.app.state.zoom.value).map(([x, y]) => {\n      const result = (0,_utils__WEBPACK_IMPORTED_MODULE_1__.sceneCoordsToViewportCoords)({\n        sceneX: x,\n        sceneY: y\n      }, this.app.state);\n      return [result.x, result.y];\n    });\n    return getSvgPathFromStroke(stroke, true);\n  }\n\n  updateCollabolatorsState() {\n    if (!this.container || !this.app.state.collaborators.size) {\n      return;\n    }\n\n    for (const [key, collabolator] of this.app.state.collaborators.entries()) {\n      if (!this.collaboratorsState.has(key)) {\n        const state = instantiateCollabolatorState();\n        this.container.appendChild(state.svg);\n        this.collaboratorsState.set(key, state);\n        this.updatePath(state);\n      }\n\n      const state = this.collaboratorsState.get(key);\n\n      if (collabolator.pointer && collabolator.pointer.tool === "laser") {\n        if (collabolator.button === "down" && state.currentPath === undefined) {\n          state.lastPoint = [collabolator.pointer.x, collabolator.pointer.y];\n          state.currentPath = instantiatePath();\n          state.currentPath.addPoint([collabolator.pointer.x, collabolator.pointer.y, performance.now()]);\n          this.updatePath(state);\n        }\n\n        if (collabolator.button === "down" && state.currentPath !== undefined) {\n          if (collabolator.pointer.x !== state.lastPoint[0] || collabolator.pointer.y !== state.lastPoint[1]) {\n            state.lastPoint = [collabolator.pointer.x, collabolator.pointer.y];\n            state.currentPath.addPoint([collabolator.pointer.x, collabolator.pointer.y, performance.now()]);\n            this.updatePath(state);\n          }\n        }\n\n        if (collabolator.button === "up" && state.currentPath !== undefined) {\n          state.lastPoint = [collabolator.pointer.x, collabolator.pointer.y];\n          state.currentPath.addPoint([collabolator.pointer.x, collabolator.pointer.y, performance.now()]);\n          state.currentPath.close();\n          state.finishedPaths.push(state.currentPath);\n          state.currentPath = undefined;\n          this.updatePath(state);\n        }\n      }\n    }\n  }\n\n  update() {\n    if (!this.container) {\n      return;\n    }\n\n    let somePathsExist = false;\n\n    for (const [key, state] of this.collaboratorsState.entries()) {\n      if (!this.app.state.collaborators.has(key)) {\n        state.svg.remove();\n        this.collaboratorsState.delete(key);\n        continue;\n      }\n\n      state.finishedPaths = state.finishedPaths.filter(path => {\n        const lastPoint = path.originalPoints[path.originalPoints.length - 1];\n        return !(lastPoint && lastPoint[2] < performance.now() - DECAY_TIME);\n      });\n      let paths = state.finishedPaths.map(path => this.draw(path)).join(" ");\n\n      if (state.currentPath) {\n        paths += ` ${this.draw(state.currentPath)}`;\n      }\n\n      if (paths.trim()) {\n        somePathsExist = true;\n      }\n\n      state.svg.setAttribute("d", paths);\n      state.svg.setAttribute("fill", (0,_clients__WEBPACK_IMPORTED_MODULE_2__.getClientColor)(key));\n    }\n\n    this.ownState.finishedPaths = this.ownState.finishedPaths.filter(path => {\n      const lastPoint = path.originalPoints[path.originalPoints.length - 1];\n      return !(lastPoint && lastPoint[2] < performance.now() - DECAY_TIME);\n    });\n    let paths = this.ownState.finishedPaths.map(path => this.draw(path)).join(" ");\n\n    if (this.ownState.currentPath) {\n      paths += ` ${this.draw(this.ownState.currentPath)}`;\n    }\n\n    paths = paths.trim();\n\n    if (paths) {\n      somePathsExist = true;\n    }\n\n    this.ownState.svg.setAttribute("d", paths);\n    this.ownState.svg.setAttribute("fill", "red");\n\n    if (!somePathsExist) {\n      this.isDrawing = false;\n    }\n  }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 11832 characters]\n//# sourceURL=webpack-internal:///../../components/LaserTool/LaserPathManager.ts\n');
              }
            ),
            /***/
            "../../components/LaserTool/LaserPointerButton.tsx": (
              /*!*********************************************************!*\
                !*** ../../components/LaserTool/LaserPointerButton.tsx ***!
                \*********************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "LaserPointerButton": () => (/* binding */ LaserPointerButton)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _ToolIcon_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ToolIcon.scss */ "../../components/ToolIcon.scss");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../icons */ "../../components/icons.tsx");\n\n\n\n\nconst DEFAULT_SIZE = "small";\nconst LaserPointerButton = props => {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("label", Object.assign({\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_2__["default"])("ToolIcon ToolIcon__LaserPointer", `ToolIcon_size_${DEFAULT_SIZE}`, {\n      "is-mobile": props.isMobile\n    }),\n    title: `${props.title}`\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input", {\n      className: "ToolIcon_type_checkbox",\n      type: "checkbox",\n      name: props.name,\n      onChange: props.onChange,\n      checked: props.checked,\n      "aria-label": props.title,\n      "data-testid": "toolbar-LaserPointer"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: "ToolIcon__icon"\n    }, {\n      children: _icons__WEBPACK_IMPORTED_MODULE_3__.laserPointerToolIcon\n    }))]\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9MYXNlclRvb2wvTGFzZXJQb2ludGVyQnV0dG9uLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBK0Q7QUFDckM7QUFDRjtBQUN3QjtBQUNoRDtBQUNPO0FBQ1AsU0FBUyx1REFBSztBQUNkLGVBQWUsZ0RBQUkscURBQXFELGFBQWE7QUFDckY7QUFDQSxLQUFLO0FBQ0wsY0FBYyxZQUFZO0FBQzFCLEdBQUc7QUFDSCxlQUFlLHNEQUFJO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSyxHQUFHLHNEQUFJO0FBQ1o7QUFDQSxLQUFLO0FBQ0wsZ0JBQWdCLHdEQUFvQjtBQUNwQyxLQUFLO0FBQ0wsR0FBRztBQUNIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvTGFzZXJUb29sL0xhc2VyUG9pbnRlckJ1dHRvbi50c3g/NzBmMyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IFwiLi4vVG9vbEljb24uc2Nzc1wiO1xuaW1wb3J0IGNsc3ggZnJvbSBcImNsc3hcIjtcbmltcG9ydCB7IGxhc2VyUG9pbnRlclRvb2xJY29uIH0gZnJvbSBcIi4uL2ljb25zXCI7XG5jb25zdCBERUZBVUxUX1NJWkUgPSBcInNtYWxsXCI7XG5leHBvcnQgY29uc3QgTGFzZXJQb2ludGVyQnV0dG9uID0gcHJvcHMgPT4ge1xuICByZXR1cm4gX2pzeHMoXCJsYWJlbFwiLCBPYmplY3QuYXNzaWduKHtcbiAgICBjbGFzc05hbWU6IGNsc3goXCJUb29sSWNvbiBUb29sSWNvbl9fTGFzZXJQb2ludGVyXCIsIGBUb29sSWNvbl9zaXplXyR7REVGQVVMVF9TSVpFfWAsIHtcbiAgICAgIFwiaXMtbW9iaWxlXCI6IHByb3BzLmlzTW9iaWxlXG4gICAgfSksXG4gICAgdGl0bGU6IGAke3Byb3BzLnRpdGxlfWBcbiAgfSwge1xuICAgIGNoaWxkcmVuOiBbX2pzeChcImlucHV0XCIsIHtcbiAgICAgIGNsYXNzTmFtZTogXCJUb29sSWNvbl90eXBlX2NoZWNrYm94XCIsXG4gICAgICB0eXBlOiBcImNoZWNrYm94XCIsXG4gICAgICBuYW1lOiBwcm9wcy5uYW1lLFxuICAgICAgb25DaGFuZ2U6IHByb3BzLm9uQ2hhbmdlLFxuICAgICAgY2hlY2tlZDogcHJvcHMuY2hlY2tlZCxcbiAgICAgIFwiYXJpYS1sYWJlbFwiOiBwcm9wcy50aXRsZSxcbiAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJ0b29sYmFyLUxhc2VyUG9pbnRlclwiXG4gICAgfSksIF9qc3goXCJkaXZcIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgICBjbGFzc05hbWU6IFwiVG9vbEljb25fX2ljb25cIlxuICAgIH0sIHtcbiAgICAgIGNoaWxkcmVuOiBsYXNlclBvaW50ZXJUb29sSWNvblxuICAgIH0pKV1cbiAgfSkpO1xufTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/LaserTool/LaserPointerButton.tsx\n');
              }
            ),
            /***/
            "../../components/LaserTool/LaserTool.tsx": (
              /*!************************************************!*\
                !*** ../../components/LaserTool/LaserTool.tsx ***!
                \************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "LaserToolOverlay": () => (/* binding */ LaserToolOverlay)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _LaserToolOverlay_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./LaserToolOverlay.scss */ "../../components/LaserTool/LaserToolOverlay.scss");\n\n\n\nconst LaserToolOverlay = ({\n  manager\n}) => {\n  const svgRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n  (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {\n    if (svgRef.current) {\n      manager.start(svgRef.current);\n    }\n\n    return () => {\n      manager.stop();\n    };\n  }, [manager]);\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: "LaserToolOverlay"\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("svg", {\n      ref: svgRef,\n      className: "LaserToolOverlayCanvas"\n    })\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9MYXNlclRvb2wvTGFzZXJUb29sLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBZ0Q7QUFDTjtBQUNUO0FBQzFCO0FBQ1A7QUFDQSxDQUFDO0FBQ0QsaUJBQWlCLDZDQUFNO0FBQ3ZCLEVBQUUsZ0RBQVM7QUFDWDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILFNBQVMsc0RBQUk7QUFDYjtBQUNBLEdBQUc7QUFDSCxjQUFjLHNEQUFJO0FBQ2xCO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvTGFzZXJUb29sL0xhc2VyVG9vbC50c3g/M2U4NSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBcIi4vTGFzZXJUb29sT3ZlcmxheS5zY3NzXCI7XG5leHBvcnQgY29uc3QgTGFzZXJUb29sT3ZlcmxheSA9ICh7XG4gIG1hbmFnZXJcbn0pID0+IHtcbiAgY29uc3Qgc3ZnUmVmID0gdXNlUmVmKG51bGwpO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzdmdSZWYuY3VycmVudCkge1xuICAgICAgbWFuYWdlci5zdGFydChzdmdSZWYuY3VycmVudCk7XG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIG1hbmFnZXIuc3RvcCgpO1xuICAgIH07XG4gIH0sIFttYW5hZ2VyXSk7XG4gIHJldHVybiBfanN4KFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oe1xuICAgIGNsYXNzTmFtZTogXCJMYXNlclRvb2xPdmVybGF5XCJcbiAgfSwge1xuICAgIGNoaWxkcmVuOiBfanN4KFwic3ZnXCIsIHtcbiAgICAgIHJlZjogc3ZnUmVmLFxuICAgICAgY2xhc3NOYW1lOiBcIkxhc2VyVG9vbE92ZXJsYXlDYW52YXNcIlxuICAgIH0pXG4gIH0pKTtcbn07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/LaserTool/LaserTool.tsx\n');
              }
            ),
            /***/
            "../../components/LayerUI.tsx": (
              /*!************************************!*\
                !*** ../../components/LayerUI.tsx ***!
                \************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../scene */ "../../scene/index.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _Actions__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Actions */ "../../components/Actions.tsx");\n/* harmony import */ var _ErrorDialog__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./ErrorDialog */ "../../components/ErrorDialog.tsx");\n/* harmony import */ var _ImageExportDialog__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./ImageExportDialog */ "../../components/ImageExportDialog.tsx");\n/* harmony import */ var _FixedSideContainer__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./FixedSideContainer */ "../../components/FixedSideContainer.tsx");\n/* harmony import */ var _HintViewer__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./HintViewer */ "../../components/HintViewer.tsx");\n/* harmony import */ var _Island__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./Island */ "../../components/Island.tsx");\n/* harmony import */ var _LoadingMessage__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./LoadingMessage */ "../../components/LoadingMessage.tsx");\n/* harmony import */ var _LockButton__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./LockButton */ "../../components/LockButton.tsx");\n/* harmony import */ var _MobileMenu__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./MobileMenu */ "../../components/MobileMenu.tsx");\n/* harmony import */ var _PasteChartDialog__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./PasteChartDialog */ "../../components/PasteChartDialog.tsx");\n/* harmony import */ var _Section__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./Section */ "../../components/Section.tsx");\n/* harmony import */ var _HelpDialog__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./HelpDialog */ "../../components/HelpDialog.tsx");\n/* harmony import */ var _Stack__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./Stack */ "../../components/Stack.tsx");\n/* harmony import */ var _UserList__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./UserList */ "../../components/UserList.tsx");\n/* harmony import */ var _JSONExportDialog__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./JSONExportDialog */ "../../components/JSONExportDialog.tsx");\n/* harmony import */ var _PenModeButton__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./PenModeButton */ "../../components/PenModeButton.tsx");\n/* harmony import */ var _analytics__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../analytics */ "../../analytics.ts");\n/* harmony import */ var _components_App__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../components/App */ "../../components/App.tsx");\n/* harmony import */ var _Stats__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./Stats */ "../../components/Stats.tsx");\n/* harmony import */ var _actions_actionToggleStats__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ../actions/actionToggleStats */ "../../actions/actionToggleStats.tsx");\n/* harmony import */ var _footer_Footer__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./footer/Footer */ "../../components/footer/Footer.tsx");\n/* harmony import */ var _Sidebar_Sidebar__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./Sidebar/Sidebar */ "../../components/Sidebar/Sidebar.tsx");\n/* harmony import */ var _jotai__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ../jotai */ "../../jotai.ts");\n/* harmony import */ var jotai__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! jotai */ "../../../node_modules/jotai/esm/index.mjs");\n/* harmony import */ var _main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./main-menu/MainMenu */ "../../components/main-menu/MainMenu.tsx");\n/* harmony import */ var _ActiveConfirmDialog__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./ActiveConfirmDialog */ "../../components/ActiveConfirmDialog.tsx");\n/* harmony import */ var _OverwriteConfirm_OverwriteConfirm__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./OverwriteConfirm/OverwriteConfirm */ "../../components/OverwriteConfirm/OverwriteConfirm.tsx");\n/* harmony import */ var _HandButton__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./HandButton */ "../../components/HandButton.tsx");\n/* harmony import */ var _appState__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ../appState */ "../../appState.ts");\n/* harmony import */ var _context_tunnels__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ../context/tunnels */ "../../context/tunnels.ts");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./icons */ "../../components/icons.tsx");\n/* harmony import */ var _context_ui_appState__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ../context/ui-appState */ "../../context/ui-appState.ts");\n/* harmony import */ var _DefaultSidebar__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./DefaultSidebar */ "../../components/DefaultSidebar.tsx");\n/* harmony import */ var _EyeDropper__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./EyeDropper */ "../../components/EyeDropper.tsx");\n/* harmony import */ var _LayerUI_scss__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./LayerUI.scss */ "../../components/LayerUI.scss");\n/* harmony import */ var _Toolbar_scss__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./Toolbar.scss */ "../../components/Toolbar.scss");\n/* harmony import */ var _element_mutateElement__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ../element/mutateElement */ "../../element/mutateElement.ts");\n/* harmony import */ var _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ../scene/ShapeCache */ "../../scene/ShapeCache.ts");\n/* harmony import */ var _scene_Scene__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ../scene/Scene */ "../../scene/Scene.ts");\n/* harmony import */ var _LaserTool_LaserPointerButton__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ./LaserTool/LaserPointerButton */ "../../components/LaserTool/LaserPointerButton.tsx");\nvar __rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n\n  if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst DefaultMainMenu = ({\n  UIOptions\n}) => {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_31__["default"], Object.assign({\n    __fallback: true\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_31__["default"].DefaultItems.LoadScene, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_31__["default"].DefaultItems.SaveToActiveFile, {}), UIOptions.canvasActions.export && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_31__["default"].DefaultItems.Export, {}), UIOptions.canvasActions.saveAsImage && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_31__["default"].DefaultItems.SaveAsImage, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_31__["default"].DefaultItems.Help, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_31__["default"].DefaultItems.ClearCanvas, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_31__["default"].Separator, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_31__["default"].Group, Object.assign({\n      title: "Excalidraw links"\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_31__["default"].DefaultItems.Socials, {})\n    })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_31__["default"].Separator, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_31__["default"].DefaultItems.ToggleTheme, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_31__["default"].DefaultItems.ChangeCanvasBackground, {})]\n  }));\n};\n\nconst DefaultOverwriteConfirmDialog = () => {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_OverwriteConfirm_OverwriteConfirm__WEBPACK_IMPORTED_MODULE_33__.OverwriteConfirmDialog, Object.assign({\n    __fallback: true\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_OverwriteConfirm_OverwriteConfirm__WEBPACK_IMPORTED_MODULE_33__.OverwriteConfirmDialog.Actions.SaveToDisk, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_OverwriteConfirm_OverwriteConfirm__WEBPACK_IMPORTED_MODULE_33__.OverwriteConfirmDialog.Actions.ExportToImage, {})]\n  }));\n};\n\nconst LayerUI = ({\n  actionManager,\n  appState,\n  files,\n  setAppState,\n  elements,\n  canvas,\n  onLockToggle,\n  onHandToolToggle,\n  onPenModeToggle,\n  showExitZenModeBtn,\n  renderTopRightUI,\n  renderCustomStats,\n  UIOptions,\n  onExportImage,\n  renderWelcomeScreen,\n  children,\n  app,\n  isCollaborating\n}) => {\n  const device = (0,_components_App__WEBPACK_IMPORTED_MODULE_25__.useDevice)();\n  const tunnels = (0,_context_tunnels__WEBPACK_IMPORTED_MODULE_36__.useInitializeTunnels)();\n  const [eyeDropperState, setEyeDropperState] = (0,jotai__WEBPACK_IMPORTED_MODULE_47__.useAtom)(_EyeDropper__WEBPACK_IMPORTED_MODULE_40__.activeEyeDropperAtom, _jotai__WEBPACK_IMPORTED_MODULE_30__.jotaiScope);\n\n  const renderJSONExportDialog = () => {\n    if (!UIOptions.canvasActions.export) {\n      return null;\n    }\n\n    return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_JSONExportDialog__WEBPACK_IMPORTED_MODULE_22__.JSONExportDialog, {\n      elements: elements,\n      appState: appState,\n      files: files,\n      actionManager: actionManager,\n      exportOpts: UIOptions.canvasActions.export,\n      canvas: canvas,\n      setAppState: setAppState\n    });\n  };\n\n  const renderImageExportDialog = () => {\n    if (!UIOptions.canvasActions.saveAsImage || appState.openDialog !== "imageExport") {\n      return null;\n    }\n\n    return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ImageExportDialog__WEBPACK_IMPORTED_MODULE_10__.ImageExportDialog, {\n      elements: elements,\n      appState: appState,\n      files: files,\n      actionManager: actionManager,\n      onExportImage: onExportImage,\n      onCloseRequest: () => setAppState({\n        openDialog: null\n      })\n    });\n  };\n\n  const renderCanvasActions = () => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n    style: {\n      position: "relative"\n    }\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(tunnels.MainMenuTunnel.Out, {}), renderWelcomeScreen && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(tunnels.WelcomeScreenMenuHintTunnel.Out, {})]\n  }));\n\n  const renderSelectedShapeActions = () => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Section__WEBPACK_IMPORTED_MODULE_18__.Section, Object.assign({\n    heading: "selectedShapeActions",\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__["default"])("selected-shape-actions zen-mode-transition", {\n      "transition-left": appState.zenModeEnabled\n    })\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Island__WEBPACK_IMPORTED_MODULE_13__.Island, Object.assign({\n      className: _constants__WEBPACK_IMPORTED_MODULE_3__.CLASSES.SHAPE_ACTIONS_MENU,\n      padding: 2,\n      style: {\n        // we want to make sure this doesn\'t overflow so subtracting the\n        // approximate height of hamburgerMenu + footer\n        maxHeight: `${appState.height - 166}px`\n      }\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Actions__WEBPACK_IMPORTED_MODULE_8__.SelectedShapeActions, {\n        appState: appState,\n        elements: elements,\n        renderAction: actionManager.renderAction\n      })\n    }))\n  }));\n\n  const renderFixedSideContainer = () => {\n    var _a;\n\n    const shouldRenderSelectedShapeActions = (0,_element__WEBPACK_IMPORTED_MODULE_4__.showSelectedShapeActions)(appState, elements);\n    return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_FixedSideContainer__WEBPACK_IMPORTED_MODULE_11__.FixedSideContainer, Object.assign({\n      side: "top"\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n        className: "App-menu App-menu_top"\n      }, {\n        children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Stack__WEBPACK_IMPORTED_MODULE_20__["default"].Col, Object.assign({\n          gap: 6,\n          className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__["default"])("App-menu_top__left")\n        }, {\n          children: [renderCanvasActions(), shouldRenderSelectedShapeActions && renderSelectedShapeActions()]\n        })), !appState.viewModeEnabled && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Section__WEBPACK_IMPORTED_MODULE_18__.Section, Object.assign({\n          heading: "shapes",\n          className: "shapes-section"\n        }, {\n          children: heading => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n            style: {\n              position: "relative"\n            }\n          }, {\n            children: [renderWelcomeScreen && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(tunnels.WelcomeScreenToolbarHintTunnel.Out, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Stack__WEBPACK_IMPORTED_MODULE_20__["default"].Col, Object.assign({\n              gap: 4,\n              align: "start"\n            }, {\n              children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Stack__WEBPACK_IMPORTED_MODULE_20__["default"].Row, Object.assign({\n                gap: 1,\n                className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__["default"])("App-toolbar-container", {\n                  "zen-mode": appState.zenModeEnabled\n                })\n              }, {\n                children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Island__WEBPACK_IMPORTED_MODULE_13__.Island, Object.assign({\n                  padding: 1,\n                  className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__["default"])("App-toolbar", {\n                    "zen-mode": appState.zenModeEnabled\n                  })\n                }, {\n                  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_HintViewer__WEBPACK_IMPORTED_MODULE_12__.HintViewer, {\n                    appState: appState,\n                    isMobile: device.editor.isMobile,\n                    device: device,\n                    app: app\n                  }), heading, (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Stack__WEBPACK_IMPORTED_MODULE_20__["default"].Row, Object.assign({\n                    gap: 1\n                  }, {\n                    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_PenModeButton__WEBPACK_IMPORTED_MODULE_23__.PenModeButton, {\n                      zenModeEnabled: appState.zenModeEnabled,\n                      checked: appState.penMode,\n                      onChange: () => onPenModeToggle(null),\n                      title: (0,_i18n__WEBPACK_IMPORTED_MODULE_5__.t)("toolBar.penMode"),\n                      penDetected: appState.penDetected\n                    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LockButton__WEBPACK_IMPORTED_MODULE_15__.LockButton, {\n                      checked: appState.activeTool.locked,\n                      onChange: onLockToggle,\n                      title: (0,_i18n__WEBPACK_IMPORTED_MODULE_5__.t)("toolBar.lock")\n                    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n                      className: "App-toolbar__divider"\n                    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_HandButton__WEBPACK_IMPORTED_MODULE_34__.HandButton, {\n                      checked: (0,_appState__WEBPACK_IMPORTED_MODULE_35__.isHandToolActive)(appState),\n                      onChange: () => onHandToolToggle(),\n                      title: (0,_i18n__WEBPACK_IMPORTED_MODULE_5__.t)("toolBar.hand"),\n                      isMobile: true\n                    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Actions__WEBPACK_IMPORTED_MODULE_8__.ShapesSwitcher, {\n                      appState: appState,\n                      activeTool: appState.activeTool,\n                      UIOptions: UIOptions,\n                      app: app\n                    })]\n                  }))]\n                })), isCollaborating && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Island__WEBPACK_IMPORTED_MODULE_13__.Island, Object.assign({\n                  style: {\n                    marginLeft: 8,\n                    alignSelf: "center",\n                    height: "fit-content"\n                  }\n                }, {\n                  children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LaserTool_LaserPointerButton__WEBPACK_IMPORTED_MODULE_46__.LaserPointerButton, {\n                    title: (0,_i18n__WEBPACK_IMPORTED_MODULE_5__.t)("toolBar.laser"),\n                    checked: appState.activeTool.type === "laser",\n                    onChange: () => app.setActiveTool({\n                      type: "laser"\n                    }),\n                    isMobile: true\n                  })\n                }))]\n              }))\n            }))]\n          }))\n        })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n          className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__["default"])("layer-ui__wrapper__top-right zen-mode-transition", {\n            "transition-right": appState.zenModeEnabled\n          })\n        }, {\n          children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_UserList__WEBPACK_IMPORTED_MODULE_21__.UserList, {\n            collaborators: appState.collaborators\n          }), renderTopRightUI === null || renderTopRightUI === void 0 ? void 0 : renderTopRightUI(device.editor.isMobile, appState), !appState.viewModeEnabled && ( // hide button when sidebar docked\n          !isSidebarDocked || ((_a = appState.openSidebar) === null || _a === void 0 ? void 0 : _a.name) !== _constants__WEBPACK_IMPORTED_MODULE_3__.DEFAULT_SIDEBAR.name) && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(tunnels.DefaultSidebarTriggerTunnel.Out, {})]\n        }))]\n      }))\n    }));\n  };\n\n  const renderSidebars = () => {\n    return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_DefaultSidebar__WEBPACK_IMPORTED_MODULE_39__.DefaultSidebar, {\n      __fallback: true,\n      onDock: docked => {\n        (0,_analytics__WEBPACK_IMPORTED_MODULE_24__.trackEvent)("sidebar", `toggleDock (${docked ? "dock" : "undock"})`, `(${device.editor.isMobile ? "mobile" : "desktop"})`);\n      }\n    });\n  };\n\n  const isSidebarDocked = (0,jotai__WEBPACK_IMPORTED_MODULE_47__.useAtomValue)(_Sidebar_Sidebar__WEBPACK_IMPORTED_MODULE_29__.isSidebarDockedAtom, _jotai__WEBPACK_IMPORTED_MODULE_30__.jotaiScope);\n\n  const layerUIJSX = (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n    children: [children, (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(DefaultMainMenu, {\n      UIOptions: UIOptions\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_DefaultSidebar__WEBPACK_IMPORTED_MODULE_39__.DefaultSidebar.Trigger, Object.assign({\n      __fallback: true,\n      icon: _icons__WEBPACK_IMPORTED_MODULE_37__.LibraryIcon,\n      title: (0,_utils__WEBPACK_IMPORTED_MODULE_7__.capitalizeString)((0,_i18n__WEBPACK_IMPORTED_MODULE_5__.t)("toolBar.library")),\n      onToggle: open => {\n        if (open) {\n          (0,_analytics__WEBPACK_IMPORTED_MODULE_24__.trackEvent)("sidebar", `${_constants__WEBPACK_IMPORTED_MODULE_3__.DEFAULT_SIDEBAR.name} (open)`, `button (${device.editor.isMobile ? "mobile" : "desktop"})`);\n        }\n      },\n      tab: _constants__WEBPACK_IMPORTED_MODULE_3__.DEFAULT_SIDEBAR.defaultTab\n    }, {\n      children: (0,_i18n__WEBPACK_IMPORTED_MODULE_5__.t)("toolBar.library")\n    })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(DefaultOverwriteConfirmDialog, {}), appState.isLoading && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LoadingMessage__WEBPACK_IMPORTED_MODULE_14__.LoadingMessage, {\n      delay: 250\n    }), appState.errorMessage && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ErrorDialog__WEBPACK_IMPORTED_MODULE_9__.ErrorDialog, Object.assign({\n      onClose: () => setAppState({\n        errorMessage: null\n      })\n    }, {\n      children: appState.errorMessage\n    })), eyeDropperState && !device.editor.isMobile && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_EyeDropper__WEBPACK_IMPORTED_MODULE_40__.EyeDropper, {\n      colorPickerType: eyeDropperState.colorPickerType,\n      onCancel: () => {\n        setEyeDropperState(null);\n      },\n      onChange: (colorPickerType, color, selectedElements, {\n        altKey\n      }) => {\n        var _a;\n\n        if (colorPickerType !== "elementBackground" && colorPickerType !== "elementStroke") {\n          return;\n        }\n\n        if (selectedElements.length) {\n          for (const element of selectedElements) {\n            (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_43__.mutateElement)(element, {\n              [altKey && eyeDropperState.swapPreviewOnAlt ? colorPickerType === "elementBackground" ? "strokeColor" : "backgroundColor" : colorPickerType === "elementBackground" ? "backgroundColor" : "strokeColor"]: color\n            }, false);\n            _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_44__.ShapeCache["delete"](element);\n          }\n\n          (_a = _scene_Scene__WEBPACK_IMPORTED_MODULE_45__["default"].getScene(selectedElements[0])) === null || _a === void 0 ? void 0 : _a.informMutation();\n        } else if (colorPickerType === "elementBackground") {\n          setAppState({\n            currentItemBackgroundColor: color\n          });\n        } else {\n          setAppState({\n            currentItemStrokeColor: color\n          });\n        }\n      },\n      onSelect: (color, event) => {\n        var _a;\n\n        setEyeDropperState(state => {\n          return (state === null || state === void 0 ? void 0 : state.keepOpenOnAlt) && event.altKey ? state : null;\n        });\n        (_a = eyeDropperState === null || eyeDropperState === void 0 ? void 0 : eyeDropperState.onSelect) === null || _a === void 0 ? void 0 : _a.call(eyeDropperState, color, event);\n      }\n    }), appState.openDialog === "help" && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_HelpDialog__WEBPACK_IMPORTED_MODULE_19__.HelpDialog, {\n      onClose: () => {\n        setAppState({\n          openDialog: null\n        });\n      }\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ActiveConfirmDialog__WEBPACK_IMPORTED_MODULE_32__.ActiveConfirmDialog, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(tunnels.OverwriteConfirmDialogTunnel.Out, {}), renderImageExportDialog(), renderJSONExportDialog(), appState.pasteDialog.shown && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_PasteChartDialog__WEBPACK_IMPORTED_MODULE_17__.PasteChartDialog, {\n      setAppState: setAppState,\n      appState: appState,\n      onClose: () => setAppState({\n        pasteDialog: {\n          shown: false,\n          data: null\n        }\n      })\n    }), device.editor.isMobile && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_MobileMenu__WEBPACK_IMPORTED_MODULE_16__.MobileMenu, {\n      app: app,\n      appState: appState,\n      elements: elements,\n      actionManager: actionManager,\n      renderJSONExportDialog: renderJSONExportDialog,\n      renderImageExportDialog: renderImageExportDialog,\n      setAppState: setAppState,\n      onLockToggle: onLockToggle,\n      onHandToolToggle: onHandToolToggle,\n      onPenModeToggle: onPenModeToggle,\n      renderTopRightUI: renderTopRightUI,\n      renderCustomStats: renderCustomStats,\n      renderSidebars: renderSidebars,\n      device: device,\n      renderWelcomeScreen: renderWelcomeScreen,\n      UIOptions: UIOptions\n    }), !device.editor.isMobile && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n        className: "layer-ui__wrapper",\n        style: appState.openSidebar && isSidebarDocked && device.editor.canFitSidebar ? {\n          width: `calc(100% - ${_constants__WEBPACK_IMPORTED_MODULE_3__.LIBRARY_SIDEBAR_WIDTH}px)`\n        } : {}\n      }, {\n        children: [renderWelcomeScreen && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(tunnels.WelcomeScreenCenterTunnel.Out, {}), renderFixedSideContainer(), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_footer_Footer__WEBPACK_IMPORTED_MODULE_28__["default"], {\n          appState: appState,\n          actionManager: actionManager,\n          showExitZenModeBtn: showExitZenModeBtn,\n          renderWelcomeScreen: renderWelcomeScreen\n        }), appState.showStats && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Stats__WEBPACK_IMPORTED_MODULE_26__.Stats, {\n          appState: appState,\n          setAppState: setAppState,\n          elements: elements,\n          onClose: () => {\n            actionManager.executeAction(_actions_actionToggleStats__WEBPACK_IMPORTED_MODULE_27__.actionToggleStats);\n          },\n          renderCustomStats: renderCustomStats\n        }), appState.scrolledOutside && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("button", Object.assign({\n          className: "scroll-back-to-content",\n          onClick: () => {\n            setAppState(appState => Object.assign({}, (0,_scene__WEBPACK_IMPORTED_MODULE_6__.calculateScrollCenter)(elements, appState)));\n          }\n        }, {\n          children: (0,_i18n__WEBPACK_IMPORTED_MODULE_5__.t)("buttons.scrollBackToContent")\n        }))]\n      })), renderSidebars()]\n    })]\n  });\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_context_ui_appState__WEBPACK_IMPORTED_MODULE_38__.UIAppStateContext.Provider, Object.assign({\n    value: appState\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(jotai__WEBPACK_IMPORTED_MODULE_47__.Provider, Object.assign({\n      scope: tunnels.jotaiScope\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_context_tunnels__WEBPACK_IMPORTED_MODULE_36__.TunnelsContext.Provider, Object.assign({\n        value: tunnels\n      }, {\n        children: layerUIJSX\n      }))\n    }))\n  }));\n};\n\nconst stripIrrelevantAppStateProps = appState => {\n  const {\n    suggestedBindings,\n    startBoundElement,\n    cursorButton,\n    scrollX,\n    scrollY\n  } = appState,\n        ret = __rest(appState, ["suggestedBindings", "startBoundElement", "cursorButton", "scrollX", "scrollY"]);\n\n  return ret;\n};\n\nconst areEqual = (prevProps, nextProps) => {\n  // short-circuit early\n  if (prevProps.children !== nextProps.children) {\n    return false;\n  }\n\n  const {\n    canvas: _pC,\n    appState: prevAppState\n  } = prevProps,\n        prev = __rest(prevProps, ["canvas", "appState"]);\n\n  const {\n    canvas: _nC,\n    appState: nextAppState\n  } = nextProps,\n        next = __rest(nextProps, ["canvas", "appState"]);\n\n  return (0,_utils__WEBPACK_IMPORTED_MODULE_7__.isShallowEqual)( // asserting AppState because we\'re being passed the whole AppState\n  // but resolve to only the UI-relevant props\n  stripIrrelevantAppStateProps(prevAppState), stripIrrelevantAppStateProps(nextAppState), {\n    selectedElementIds: _utils__WEBPACK_IMPORTED_MODULE_7__.isShallowEqual,\n    selectedGroupIds: _utils__WEBPACK_IMPORTED_MODULE_7__.isShallowEqual\n  }) && (0,_utils__WEBPACK_IMPORTED_MODULE_7__.isShallowEqual)(prev, next);\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (react__WEBPACK_IMPORTED_MODULE_2___default().memo(LayerUI, areEqual));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 30832 characters]\n//# sourceURL=webpack-internal:///../../components/LayerUI.tsx\n');
              }
            ),
            /***/
            "../../components/LibraryMenu.tsx": (
              /*!****************************************!*\
                !*** ../../components/LibraryMenu.tsx ***!
                \****************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "LibraryMenu": () => (/* binding */ LibraryMenu),\n/* harmony export */   "LibraryMenuContent": () => (/* binding */ LibraryMenuContent),\n/* harmony export */   "isLibraryMenuOpenAtom": () => (/* binding */ isLibraryMenuOpenAtom)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _data_library__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../data/library */ "../../data/library.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _random__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../random */ "../../random.ts");\n/* harmony import */ var _LibraryMenuItems__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./LibraryMenuItems */ "../../components/LibraryMenuItems.tsx");\n/* harmony import */ var _analytics__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../analytics */ "../../analytics.ts");\n/* harmony import */ var jotai__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! jotai */ "../../../node_modules/jotai/esm/index.mjs");\n/* harmony import */ var _jotai__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../jotai */ "../../jotai.ts");\n/* harmony import */ var _Spinner__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Spinner */ "../../components/Spinner.tsx");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./App */ "../../components/App.tsx");\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../scene */ "../../scene/index.ts");\n/* harmony import */ var _context_ui_appState__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../context/ui-appState */ "../../context/ui-appState.ts");\n/* harmony import */ var _LibraryMenu_scss__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./LibraryMenu.scss */ "../../components/LibraryMenu.scss");\n/* harmony import */ var _LibraryMenuControlButtons__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./LibraryMenuControlButtons */ "../../components/LibraryMenuControlButtons.tsx");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator["throw"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst isLibraryMenuOpenAtom = (0,jotai__WEBPACK_IMPORTED_MODULE_16__.atom)(false);\n\nconst LibraryMenuWrapper = ({\n  children\n}) => {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: "layer-ui__library"\n  }, {\n    children: children\n  }));\n};\n\nconst LibraryMenuContent = ({\n  onInsertLibraryItems,\n  pendingElements,\n  onAddToLibrary,\n  setAppState,\n  libraryReturnUrl,\n  library,\n  id,\n  theme,\n  selectedItems,\n  onSelectItems\n}) => {\n  const [libraryItemsData] = (0,jotai__WEBPACK_IMPORTED_MODULE_16__.useAtom)(_data_library__WEBPACK_IMPORTED_MODULE_2__.libraryItemsAtom, _jotai__WEBPACK_IMPORTED_MODULE_7__.jotaiScope);\n\n  const _onAddToLibrary = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(elements => {\n    const addToLibrary = (processedElements, libraryItems) => __awaiter(void 0, void 0, void 0, function* () {\n      (0,_analytics__WEBPACK_IMPORTED_MODULE_6__.trackEvent)("element", "addToLibrary", "ui");\n\n      for (const type of _constants__WEBPACK_IMPORTED_MODULE_15__.LIBRARY_DISABLED_TYPES) {\n        if (processedElements.some(element => element.type === type)) {\n          return setAppState({\n            errorMessage: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)(`errors.libraryElementTypeError.${type}`)\n          });\n        }\n      }\n\n      const nextItems = [{\n        status: "unpublished",\n        elements: processedElements,\n        id: (0,_random__WEBPACK_IMPORTED_MODULE_4__.randomId)(),\n        created: Date.now()\n      }, ...libraryItems];\n      onAddToLibrary();\n      library.setLibrary(nextItems).catch(() => {\n        setAppState({\n          errorMessage: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("alerts.errorAddingToLibrary")\n        });\n      });\n    });\n\n    addToLibrary(elements, libraryItemsData.libraryItems);\n  }, [onAddToLibrary, library, setAppState, libraryItemsData.libraryItems]);\n\n  const libraryItems = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(() => libraryItemsData.libraryItems, [libraryItemsData]);\n\n  if (libraryItemsData.status === "loading" && !libraryItemsData.isInitialized) {\n    return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(LibraryMenuWrapper, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n        className: "layer-ui__library-message"\n      }, {\n        children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", {\n          children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Spinner__WEBPACK_IMPORTED_MODULE_8__["default"], {\n            size: "2em"\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", {\n            children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("labels.libraryLoadingMessage")\n          })]\n        })\n      }))\n    });\n  }\n\n  const showBtn = libraryItemsData.libraryItems.length > 0 || pendingElements.length > 0;\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(LibraryMenuWrapper, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LibraryMenuItems__WEBPACK_IMPORTED_MODULE_5__["default"], {\n      isLoading: libraryItemsData.status === "loading",\n      libraryItems: libraryItems,\n      onAddToLibrary: _onAddToLibrary,\n      onInsertLibraryItems: onInsertLibraryItems,\n      pendingElements: pendingElements,\n      id: id,\n      libraryReturnUrl: libraryReturnUrl,\n      theme: theme,\n      onSelectItems: onSelectItems,\n      selectedItems: selectedItems\n    }), showBtn && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LibraryMenuControlButtons__WEBPACK_IMPORTED_MODULE_13__.LibraryMenuControlButtons, {\n      className: "library-menu-control-buttons--at-bottom",\n      style: {\n        padding: "16px 12px 0 12px"\n      },\n      id: id,\n      libraryReturnUrl: libraryReturnUrl,\n      theme: theme\n    })]\n  });\n};\n\nconst usePendingElementsMemo = (appState, elements) => {\n  const create = () => (0,_scene__WEBPACK_IMPORTED_MODULE_10__.getSelectedElements)(elements, appState, {\n    includeBoundTextElement: true,\n    includeElementsInFrames: true\n  });\n\n  const val = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(create());\n  const prevAppState = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(appState);\n  const prevElements = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(elements);\n\n  if (!(0,_utils__WEBPACK_IMPORTED_MODULE_14__.isShallowEqual)(appState.selectedElementIds, prevAppState.current.selectedElementIds) || !(0,_utils__WEBPACK_IMPORTED_MODULE_14__.isShallowEqual)(elements, prevElements.current)) {\n    val.current = create();\n    prevAppState.current = appState;\n    prevElements.current = elements;\n  }\n\n  return val.current;\n};\n/**\n * This component is meant to be rendered inside <Sidebar.Tab/> inside our\n * <DefaultSidebar/> or host apps Sidebar components.\n */\n\n\nconst LibraryMenu = () => {\n  const {\n    library,\n    id,\n    onInsertElements\n  } = (0,_App__WEBPACK_IMPORTED_MODULE_9__.useApp)();\n  const appProps = (0,_App__WEBPACK_IMPORTED_MODULE_9__.useAppProps)();\n  const appState = (0,_context_ui_appState__WEBPACK_IMPORTED_MODULE_11__.useUIAppState)();\n  const setAppState = (0,_App__WEBPACK_IMPORTED_MODULE_9__.useExcalidrawSetAppState)();\n  const elements = (0,_App__WEBPACK_IMPORTED_MODULE_9__.useExcalidrawElements)();\n  const [selectedItems, setSelectedItems] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n  const memoizedLibrary = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(() => library, [library]); // BUG: pendingElements are still causing some unnecessary rerenders because clicking into canvas returns some ids even when no element is selected.\n\n  const pendingElements = usePendingElementsMemo(appState, elements);\n  const onInsertLibraryItems = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(libraryItems => {\n    onInsertElements((0,_data_library__WEBPACK_IMPORTED_MODULE_2__.distributeLibraryItemsOnSquareGrid)(libraryItems));\n  }, [onInsertElements]);\n  const deselectItems = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(() => {\n    setAppState({\n      selectedElementIds: {},\n      selectedGroupIds: {},\n      activeEmbeddable: null\n    });\n  }, [setAppState]);\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(LibraryMenuContent, {\n    pendingElements: pendingElements,\n    onInsertLibraryItems: onInsertLibraryItems,\n    onAddToLibrary: deselectItems,\n    setAppState: setAppState,\n    libraryReturnUrl: appProps.libraryReturnUrl,\n    library: memoizedLibrary,\n    id: id,\n    theme: appState.theme,\n    selectedItems: selectedItems,\n    onSelectItems: setSelectedItems\n  });\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 11596 characters]\n//# sourceURL=webpack-internal:///../../components/LibraryMenu.tsx\n');
              }
            ),
            /***/
            "../../components/LibraryMenuBrowseButton.tsx": (
              /*!****************************************************!*\
                !*** ../../components/LibraryMenuBrowseButton.tsx ***!
                \****************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n\n\n\n\nconst LibraryMenuBrowseButton = ({\n  theme,\n  id,\n  libraryReturnUrl\n}) => {\n  const referrer = libraryReturnUrl || window.location.origin + window.location.pathname;\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("a", Object.assign({\n    className: "library-menu-browse-button",\n    href: `${"https://libraries.excalidraw.com"}?target=${window.name || "_blank"}&referrer=${referrer}&useHash=true&token=${id}&theme=${theme}&version=${_constants__WEBPACK_IMPORTED_MODULE_1__.VERSIONS.excalidrawLibrary}`,\n    target: "_excalidraw_libraries"\n  }, {\n    children: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.libraries")\n  }));\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (LibraryMenuBrowseButton);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9MaWJyYXJ5TWVudUJyb3dzZUJ1dHRvbi50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBZ0Q7QUFDUjtBQUNaOztBQUU1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBLFNBQVMsc0RBQUk7QUFDYjtBQUNBLGFBQWEsa0NBQWdDLENBQUMsVUFBVSx3QkFBd0IsWUFBWSxTQUFTLHNCQUFzQixHQUFHLFNBQVMsTUFBTSxXQUFXLGtFQUEwQixDQUFDO0FBQ25MO0FBQ0EsR0FBRztBQUNILGNBQWMsd0NBQUM7QUFDZixHQUFHO0FBQ0g7O0FBRUEsaUVBQWUsdUJBQXVCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvTGlicmFyeU1lbnVCcm93c2VCdXR0b24udHN4PzJiOWQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IFZFUlNJT05TIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgdCB9IGZyb20gXCIuLi9pMThuXCI7XG5cbmNvbnN0IExpYnJhcnlNZW51QnJvd3NlQnV0dG9uID0gKHtcbiAgdGhlbWUsXG4gIGlkLFxuICBsaWJyYXJ5UmV0dXJuVXJsXG59KSA9PiB7XG4gIGNvbnN0IHJlZmVycmVyID0gbGlicmFyeVJldHVyblVybCB8fCB3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lO1xuICByZXR1cm4gX2pzeChcImFcIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgY2xhc3NOYW1lOiBcImxpYnJhcnktbWVudS1icm93c2UtYnV0dG9uXCIsXG4gICAgaHJlZjogYCR7cHJvY2Vzcy5lbnYuVklURV9BUFBfTElCUkFSWV9VUkx9P3RhcmdldD0ke3dpbmRvdy5uYW1lIHx8IFwiX2JsYW5rXCJ9JnJlZmVycmVyPSR7cmVmZXJyZXJ9JnVzZUhhc2g9dHJ1ZSZ0b2tlbj0ke2lkfSZ0aGVtZT0ke3RoZW1lfSZ2ZXJzaW9uPSR7VkVSU0lPTlMuZXhjYWxpZHJhd0xpYnJhcnl9YCxcbiAgICB0YXJnZXQ6IFwiX2V4Y2FsaWRyYXdfbGlicmFyaWVzXCJcbiAgfSwge1xuICAgIGNoaWxkcmVuOiB0KFwibGFiZWxzLmxpYnJhcmllc1wiKVxuICB9KSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBMaWJyYXJ5TWVudUJyb3dzZUJ1dHRvbjsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/LibraryMenuBrowseButton.tsx\n');
              }
            ),
            /***/
            "../../components/LibraryMenuControlButtons.tsx": (
              /*!******************************************************!*\
                !*** ../../components/LibraryMenuControlButtons.tsx ***!
                \******************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "LibraryMenuControlButtons": () => (/* binding */ LibraryMenuControlButtons)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _LibraryMenuBrowseButton__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./LibraryMenuBrowseButton */ "../../components/LibraryMenuBrowseButton.tsx");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n\n\n\nconst LibraryMenuControlButtons = ({\n  libraryReturnUrl,\n  theme,\n  id,\n  style,\n  children,\n  className\n}) => {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_2__["default"])("library-menu-control-buttons", className),\n    style: style\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LibraryMenuBrowseButton__WEBPACK_IMPORTED_MODULE_1__["default"], {\n      id: id,\n      libraryReturnUrl: libraryReturnUrl,\n      theme: theme\n    }), children]\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9MaWJyYXJ5TWVudUNvbnRyb2xCdXR0b25zLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUErRDtBQUNDO0FBQ3hDO0FBQ2pCO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELFNBQVMsdURBQUs7QUFDZCxlQUFlLGdEQUFJO0FBQ25CO0FBQ0EsR0FBRztBQUNILGVBQWUsc0RBQUksQ0FBQyxnRUFBdUI7QUFDM0M7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSCIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL0xpYnJhcnlNZW51Q29udHJvbEJ1dHRvbnMudHN4PzJkZjQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCBMaWJyYXJ5TWVudUJyb3dzZUJ1dHRvbiBmcm9tIFwiLi9MaWJyYXJ5TWVudUJyb3dzZUJ1dHRvblwiO1xuaW1wb3J0IGNsc3ggZnJvbSBcImNsc3hcIjtcbmV4cG9ydCBjb25zdCBMaWJyYXJ5TWVudUNvbnRyb2xCdXR0b25zID0gKHtcbiAgbGlicmFyeVJldHVyblVybCxcbiAgdGhlbWUsXG4gIGlkLFxuICBzdHlsZSxcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZVxufSkgPT4ge1xuICByZXR1cm4gX2pzeHMoXCJkaXZcIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgY2xhc3NOYW1lOiBjbHN4KFwibGlicmFyeS1tZW51LWNvbnRyb2wtYnV0dG9uc1wiLCBjbGFzc05hbWUpLFxuICAgIHN0eWxlOiBzdHlsZVxuICB9LCB7XG4gICAgY2hpbGRyZW46IFtfanN4KExpYnJhcnlNZW51QnJvd3NlQnV0dG9uLCB7XG4gICAgICBpZDogaWQsXG4gICAgICBsaWJyYXJ5UmV0dXJuVXJsOiBsaWJyYXJ5UmV0dXJuVXJsLFxuICAgICAgdGhlbWU6IHRoZW1lXG4gICAgfSksIGNoaWxkcmVuXVxuICB9KSk7XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/LibraryMenuControlButtons.tsx\n');
              }
            ),
            /***/
            "../../components/LibraryMenuHeaderContent.tsx": (
              /*!*****************************************************!*\
                !*** ../../components/LibraryMenuHeaderContent.tsx ***!
                \*****************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "LibraryDropdownMenu": () => (/* binding */ LibraryDropdownMenu),\n/* harmony export */   "LibraryDropdownMenuButton": () => (/* binding */ LibraryDropdownMenuButton)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _Trans__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Trans */ "../../components/Trans.tsx");\n/* harmony import */ var _jotai__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../jotai */ "../../jotai.ts");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./App */ "../../components/App.tsx");\n/* harmony import */ var _data_json__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../data/json */ "../../data/json.ts");\n/* harmony import */ var _data_library__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../data/library */ "../../data/library.ts");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./icons */ "../../components/icons.tsx");\n/* harmony import */ var _ToolButton__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./ToolButton */ "../../components/ToolButton.tsx");\n/* harmony import */ var _data_filesystem__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../data/filesystem */ "../../data/filesystem.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var jotai__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! jotai */ "../../../node_modules/jotai/esm/index.mjs");\n/* harmony import */ var _ConfirmDialog__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./ConfirmDialog */ "../../components/ConfirmDialog.tsx");\n/* harmony import */ var _PublishLibrary__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./PublishLibrary */ "../../components/PublishLibrary.tsx");\n/* harmony import */ var _Dialog__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./Dialog */ "../../components/Dialog.tsx");\n/* harmony import */ var _dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./dropdownMenu/DropdownMenu */ "../../components/dropdownMenu/DropdownMenu.tsx");\n/* harmony import */ var _LibraryMenu__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./LibraryMenu */ "../../components/LibraryMenu.tsx");\n/* harmony import */ var _context_ui_appState__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../context/ui-appState */ "../../context/ui-appState.ts");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _hooks_useLibraryItemSvg__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../hooks/useLibraryItemSvg */ "../../hooks/useLibraryItemSvg.ts");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator["throw"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst getSelectedItems = (libraryItems, selectedItems) => libraryItems.filter(item => selectedItems.includes(item.id));\n\nconst LibraryDropdownMenuButton = ({\n  setAppState,\n  selectedItems,\n  library,\n  onRemoveFromLibrary,\n  resetLibrary,\n  onSelectItems,\n  appState,\n  className\n}) => {\n  const [libraryItemsData] = (0,jotai__WEBPACK_IMPORTED_MODULE_20__.useAtom)(_data_library__WEBPACK_IMPORTED_MODULE_7__.libraryItemsAtom, _jotai__WEBPACK_IMPORTED_MODULE_4__.jotaiScope);\n  const [isLibraryMenuOpen, setIsLibraryMenuOpen] = (0,jotai__WEBPACK_IMPORTED_MODULE_20__.useAtom)(_LibraryMenu__WEBPACK_IMPORTED_MODULE_16__.isLibraryMenuOpenAtom, _jotai__WEBPACK_IMPORTED_MODULE_4__.jotaiScope);\n\n  const renderRemoveLibAlert = () => {\n    const content = selectedItems.length ? (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("alerts.removeItemsFromsLibrary", {\n      count: selectedItems.length\n    }) : (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("alerts.resetLibrary");\n    const title = selectedItems.length ? (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("confirmDialog.removeItemsFromLib") : (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("confirmDialog.resetLibrary");\n    return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ConfirmDialog__WEBPACK_IMPORTED_MODULE_12__["default"], Object.assign({\n      onConfirm: () => {\n        if (selectedItems.length) {\n          onRemoveFromLibrary();\n        } else {\n          resetLibrary();\n        }\n\n        setShowRemoveLibAlert(false);\n      },\n      onCancel: () => {\n        setShowRemoveLibAlert(false);\n      },\n      title: title\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("p", {\n        children: content\n      })\n    }));\n  };\n\n  const [showRemoveLibAlert, setShowRemoveLibAlert] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n  const itemsSelected = !!selectedItems.length;\n  const items = itemsSelected ? libraryItemsData.libraryItems.filter(item => selectedItems.includes(item.id)) : libraryItemsData.libraryItems;\n  const resetLabel = itemsSelected ? (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("buttons.remove") : (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("buttons.resetLibrary");\n  const [showPublishLibraryDialog, setShowPublishLibraryDialog] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n  const [publishLibSuccess, setPublishLibSuccess] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n  const renderPublishSuccess = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(() => {\n    return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Dialog__WEBPACK_IMPORTED_MODULE_14__.Dialog, Object.assign({\n      onCloseRequest: () => setPublishLibSuccess(null),\n      title: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("publishSuccessDialog.title"),\n      className: "publish-library-success",\n      size: "small"\n    }, {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("p", {\n        children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Trans__WEBPACK_IMPORTED_MODULE_3__["default"], {\n          i18nKey: "publishSuccessDialog.content",\n          authorName: publishLibSuccess.authorName,\n          link: el => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("a", Object.assign({\n            href: publishLibSuccess === null || publishLibSuccess === void 0 ? void 0 : publishLibSuccess.url,\n            target: "_blank",\n            rel: "noopener noreferrer"\n          }, {\n            children: el\n          }))\n        })\n      }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ToolButton__WEBPACK_IMPORTED_MODULE_9__.ToolButton, {\n        type: "button",\n        title: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("buttons.close"),\n        "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("buttons.close"),\n        label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("buttons.close"),\n        onClick: () => setPublishLibSuccess(null),\n        "data-testid": "publish-library-success-close",\n        className: "publish-library-success-close"\n      })]\n    }));\n  }, [setPublishLibSuccess, publishLibSuccess]);\n\n  const onPublishLibSuccess = (data, libraryItems) => {\n    setShowPublishLibraryDialog(false);\n    setPublishLibSuccess({\n      url: data.url,\n      authorName: data.authorName\n    });\n    const nextLibItems = libraryItems.slice();\n    nextLibItems.forEach(libItem => {\n      if (selectedItems.includes(libItem.id)) {\n        libItem.status = "published";\n      }\n    });\n    library.setLibrary(nextLibItems);\n  };\n\n  const onLibraryImport = () => __awaiter(void 0, void 0, void 0, function* () {\n    try {\n      yield library.updateLibrary({\n        libraryItems: (0,_data_filesystem__WEBPACK_IMPORTED_MODULE_10__.fileOpen)({\n          description: "Excalidraw library files" // ToDo: Be over-permissive until https://bugs.webkit.org/show_bug.cgi?id=34442\n          // gets resolved. Else, iOS users cannot open `.excalidraw` files.\n\n          /*\n            extensions: [".json", ".excalidrawlib"],\n            */\n\n        }),\n        merge: true,\n        openLibraryMenu: true\n      });\n    } catch (error) {\n      if ((error === null || error === void 0 ? void 0 : error.name) === "AbortError") {\n        console.warn(error);\n        return;\n      }\n\n      setAppState({\n        errorMessage: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("errors.importLibraryError")\n      });\n    }\n  });\n\n  const onLibraryExport = () => __awaiter(void 0, void 0, void 0, function* () {\n    const libraryItems = itemsSelected ? items : yield library.getLatestLibrary();\n    (0,_data_json__WEBPACK_IMPORTED_MODULE_6__.saveLibraryAsJSON)(libraryItems).catch(_utils__WEBPACK_IMPORTED_MODULE_11__.muteFSAbortError).catch(error => {\n      setAppState({\n        errorMessage: error.message\n      });\n    });\n  });\n\n  const renderLibraryMenu = () => {\n    return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_15__["default"], Object.assign({\n      open: isLibraryMenuOpen\n    }, {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_15__["default"].Trigger, Object.assign({\n        onToggle: () => setIsLibraryMenuOpen(!isLibraryMenuOpen)\n      }, {\n        children: _icons__WEBPACK_IMPORTED_MODULE_8__.DotsIcon\n      })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_15__["default"].Content, Object.assign({\n        onClickOutside: () => setIsLibraryMenuOpen(false),\n        onSelect: () => setIsLibraryMenuOpen(false),\n        className: "library-menu"\n      }, {\n        children: [!itemsSelected && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_15__["default"].Item, Object.assign({\n          onSelect: onLibraryImport,\n          icon: _icons__WEBPACK_IMPORTED_MODULE_8__.LoadIcon,\n          "data-testid": "lib-dropdown--load"\n        }, {\n          children: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("buttons.load")\n        })), !!items.length && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_15__["default"].Item, Object.assign({\n          onSelect: onLibraryExport,\n          icon: _icons__WEBPACK_IMPORTED_MODULE_8__.ExportIcon,\n          "data-testid": "lib-dropdown--export"\n        }, {\n          children: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("buttons.export")\n        })), !!items.length && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_15__["default"].Item, Object.assign({\n          onSelect: () => setShowRemoveLibAlert(true),\n          icon: _icons__WEBPACK_IMPORTED_MODULE_8__.TrashIcon\n        }, {\n          children: resetLabel\n        })), itemsSelected && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_15__["default"].Item, Object.assign({\n          icon: _icons__WEBPACK_IMPORTED_MODULE_8__.publishIcon,\n          onSelect: () => setShowPublishLibraryDialog(true),\n          "data-testid": "lib-dropdown--remove"\n        }, {\n          children: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("buttons.publishLibrary")\n        }))]\n      }))]\n    }));\n  };\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_18__["default"])("library-menu-dropdown-container", className)\n  }, {\n    children: [renderLibraryMenu(), selectedItems.length > 0 && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: "library-actions-counter"\n    }, {\n      children: selectedItems.length\n    })), showRemoveLibAlert && renderRemoveLibAlert(), showPublishLibraryDialog && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_PublishLibrary__WEBPACK_IMPORTED_MODULE_13__["default"], {\n      onClose: () => setShowPublishLibraryDialog(false),\n      libraryItems: getSelectedItems(libraryItemsData.libraryItems, selectedItems),\n      appState: appState,\n      onSuccess: data => onPublishLibSuccess(data, libraryItemsData.libraryItems),\n      onError: error => window.alert(error),\n      updateItemsInStorage: () => library.setLibrary(libraryItemsData.libraryItems),\n      onRemove: id => onSelectItems(selectedItems.filter(_id => _id !== id))\n    }), publishLibSuccess && renderPublishSuccess()]\n  }));\n};\nconst LibraryDropdownMenu = ({\n  selectedItems,\n  onSelectItems,\n  className\n}) => {\n  const {\n    library\n  } = (0,_App__WEBPACK_IMPORTED_MODULE_5__.useApp)();\n  const {\n    clearLibraryCache,\n    deleteItemsFromLibraryCache\n  } = (0,_hooks_useLibraryItemSvg__WEBPACK_IMPORTED_MODULE_19__.useLibraryCache)();\n  const appState = (0,_context_ui_appState__WEBPACK_IMPORTED_MODULE_17__.useUIAppState)();\n  const setAppState = (0,_App__WEBPACK_IMPORTED_MODULE_5__.useExcalidrawSetAppState)();\n  const [libraryItemsData] = (0,jotai__WEBPACK_IMPORTED_MODULE_20__.useAtom)(_data_library__WEBPACK_IMPORTED_MODULE_7__.libraryItemsAtom, _jotai__WEBPACK_IMPORTED_MODULE_4__.jotaiScope);\n\n  const removeFromLibrary = libraryItems => __awaiter(void 0, void 0, void 0, function* () {\n    const nextItems = libraryItems.filter(item => !selectedItems.includes(item.id));\n    library.setLibrary(nextItems).catch(() => {\n      setAppState({\n        errorMessage: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("alerts.errorRemovingFromLibrary")\n      });\n    });\n    deleteItemsFromLibraryCache(selectedItems);\n    onSelectItems([]);\n  });\n\n  const resetLibrary = () => {\n    library.resetLibrary();\n    clearLibraryCache();\n  };\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(LibraryDropdownMenuButton, {\n    appState: appState,\n    setAppState: setAppState,\n    selectedItems: selectedItems,\n    onSelectItems: onSelectItems,\n    library: library,\n    onRemoveFromLibrary: () => removeFromLibrary(libraryItemsData.libraryItems),\n    resetLibrary: resetLibrary,\n    className: className\n  });\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 17200 characters]\n//# sourceURL=webpack-internal:///../../components/LibraryMenuHeaderContent.tsx\n');
              }
            ),
            /***/
            "../../components/LibraryMenuItems.tsx": (
              /*!*********************************************!*\
                !*** ../../components/LibraryMenuItems.tsx ***!
                \*********************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (/* binding */ LibraryMenuItems)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _data_json__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../data/json */ "../../data/json.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _Stack__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Stack */ "../../components/Stack.tsx");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _Spinner__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./Spinner */ "../../components/Spinner.tsx");\n/* harmony import */ var _element_newElement__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../element/newElement */ "../../element/newElement.ts");\n/* harmony import */ var _LibraryMenuControlButtons__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./LibraryMenuControlButtons */ "../../components/LibraryMenuControlButtons.tsx");\n/* harmony import */ var _LibraryMenuHeaderContent__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./LibraryMenuHeaderContent */ "../../components/LibraryMenuHeaderContent.tsx");\n/* harmony import */ var _LibraryMenuSection__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./LibraryMenuSection */ "../../components/LibraryMenuSection.tsx");\n/* harmony import */ var _hooks_useScrollPosition__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../hooks/useScrollPosition */ "../../hooks/useScrollPosition.ts");\n/* harmony import */ var _hooks_useLibraryItemSvg__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../hooks/useLibraryItemSvg */ "../../hooks/useLibraryItemSvg.ts");\n/* harmony import */ var _LibraryMenuItems_scss__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./LibraryMenuItems.scss */ "../../components/LibraryMenuItems.scss");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n // using an odd number of items per batch so the rendering creates an irregular\n// pattern which looks more organic\n\nconst ITEMS_RENDERED_PER_BATCH = 17; // when render outputs cached we can render many more items per batch to\n// speed it up\n\nconst CACHED_ITEMS_RENDERED_PER_BATCH = 64;\nfunction LibraryMenuItems({\n  isLoading,\n  libraryItems,\n  onAddToLibrary,\n  onInsertLibraryItems,\n  pendingElements,\n  theme,\n  id,\n  libraryReturnUrl,\n  onSelectItems,\n  selectedItems\n}) {\n  const libraryContainerRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n  const scrollPosition = (0,_hooks_useScrollPosition__WEBPACK_IMPORTED_MODULE_12__.useScrollPosition)(libraryContainerRef); // This effect has to be called only on first render, therefore  `scrollPosition` isn\'t in the dependency array\n\n  (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {\n    var _a;\n\n    if (scrollPosition > 0) {\n      (_a = libraryContainerRef.current) === null || _a === void 0 ? void 0 : _a.scrollTo(0, scrollPosition);\n    }\n  }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n  const {\n    svgCache\n  } = (0,_hooks_useLibraryItemSvg__WEBPACK_IMPORTED_MODULE_13__.useLibraryCache)();\n  const unpublishedItems = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(() => libraryItems.filter(item => item.status !== "published"), [libraryItems]);\n  const publishedItems = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(() => libraryItems.filter(item => item.status === "published"), [libraryItems]);\n  const showBtn = !libraryItems.length && !pendingElements.length;\n  const isLibraryEmpty = !pendingElements.length && !unpublishedItems.length && !publishedItems.length;\n  const [lastSelectedItem, setLastSelectedItem] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n  const onItemSelectToggle = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)((id, event) => {\n    const shouldSelect = !selectedItems.includes(id);\n    const orderedItems = [...unpublishedItems, ...publishedItems];\n\n    if (shouldSelect) {\n      if (event.shiftKey && lastSelectedItem) {\n        const rangeStart = orderedItems.findIndex(item => item.id === lastSelectedItem);\n        const rangeEnd = orderedItems.findIndex(item => item.id === id);\n\n        if (rangeStart === -1 || rangeEnd === -1) {\n          onSelectItems([...selectedItems, id]);\n          return;\n        }\n\n        const selectedItemsMap = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.arrayToMap)(selectedItems);\n        const nextSelectedIds = orderedItems.reduce((acc, item, idx) => {\n          if (idx >= rangeStart && idx <= rangeEnd || selectedItemsMap.has(item.id)) {\n            acc.push(item.id);\n          }\n\n          return acc;\n        }, []);\n        onSelectItems(nextSelectedIds);\n      } else {\n        onSelectItems([...selectedItems, id]);\n      }\n\n      setLastSelectedItem(id);\n    } else {\n      setLastSelectedItem(null);\n      onSelectItems(selectedItems.filter(_id => _id !== id));\n    }\n  }, [lastSelectedItem, onSelectItems, publishedItems, selectedItems, unpublishedItems]);\n  const getInsertedElements = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(id => {\n    let targetElements;\n\n    if (selectedItems.includes(id)) {\n      targetElements = libraryItems.filter(item => selectedItems.includes(item.id));\n    } else {\n      targetElements = libraryItems.filter(item => item.id === id);\n    }\n\n    return targetElements.map(item => {\n      return Object.assign(Object.assign({}, item), {\n        // duplicate each library item before inserting on canvas to confine\n        // ids and bindings to each library item. See #6465\n        elements: (0,_element_newElement__WEBPACK_IMPORTED_MODULE_8__.duplicateElements)(item.elements, {\n          randomizeSeed: true\n        })\n      });\n    });\n  }, [libraryItems, selectedItems]);\n  const onItemDrag = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)((id, event) => {\n    event.dataTransfer.setData(_constants__WEBPACK_IMPORTED_MODULE_6__.MIME_TYPES.excalidrawlib, (0,_data_json__WEBPACK_IMPORTED_MODULE_2__.serializeLibraryAsJSON)(getInsertedElements(id)));\n  }, [getInsertedElements]);\n  const isItemSelected = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(id => {\n    if (!id) {\n      return false;\n    }\n\n    return selectedItems.includes(id);\n  }, [selectedItems]);\n  const onAddToLibraryClick = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(() => {\n    onAddToLibrary(pendingElements);\n  }, [pendingElements, onAddToLibrary]);\n  const onItemClick = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(id => {\n    if (id) {\n      onInsertLibraryItems(getInsertedElements(id));\n    }\n  }, [getInsertedElements, onInsertLibraryItems]);\n  const itemsRenderedPerBatch = svgCache.size >= libraryItems.length ? CACHED_ITEMS_RENDERED_PER_BATCH : ITEMS_RENDERED_PER_BATCH;\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n    className: "library-menu-items-container",\n    style: pendingElements.length || unpublishedItems.length || publishedItems.length ? {\n      justifyContent: "flex-start"\n    } : {\n      borderBottom: 0\n    }\n  }, {\n    children: [!isLibraryEmpty && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LibraryMenuHeaderContent__WEBPACK_IMPORTED_MODULE_10__.LibraryDropdownMenu, {\n      selectedItems: selectedItems,\n      onSelectItems: onSelectItems,\n      className: "library-menu-dropdown-container--in-heading"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Stack__WEBPACK_IMPORTED_MODULE_5__["default"].Col, Object.assign({\n      className: "library-menu-items-container__items",\n      align: "start",\n      gap: 1,\n      style: {\n        flex: publishedItems.length > 0 ? 1 : "0 1 auto",\n        marginBottom: 0\n      },\n      ref: libraryContainerRef\n    }, {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n        children: [!isLibraryEmpty && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n          className: "library-menu-items-container__header"\n        }, {\n          children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("labels.personalLib")\n        })), isLoading && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n          style: {\n            position: "absolute",\n            top: "var(--container-padding-y)",\n            right: "var(--container-padding-x)",\n            transform: "translateY(50%)"\n          }\n        }, {\n          children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Spinner__WEBPACK_IMPORTED_MODULE_7__["default"], {})\n        })), !pendingElements.length && !unpublishedItems.length ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n          className: "library-menu-items__no-items"\n        }, {\n          children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n            className: "library-menu-items__no-items__label"\n          }, {\n            children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("library.noItems")\n          })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n            className: "library-menu-items__no-items__hint"\n          }, {\n            children: publishedItems.length > 0 ? (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("library.hint_emptyPrivateLibrary") : (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("library.hint_emptyLibrary")\n          }))]\n        })) : (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_LibraryMenuSection__WEBPACK_IMPORTED_MODULE_11__.LibraryMenuSectionGrid, {\n          children: [pendingElements.length > 0 && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LibraryMenuSection__WEBPACK_IMPORTED_MODULE_11__.LibraryMenuSection, {\n            itemsRenderedPerBatch: itemsRenderedPerBatch,\n            items: [{\n              id: null,\n              elements: pendingElements\n            }],\n            onItemSelectToggle: onItemSelectToggle,\n            onItemDrag: onItemDrag,\n            onClick: onAddToLibraryClick,\n            isItemSelected: isItemSelected,\n            svgCache: svgCache\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LibraryMenuSection__WEBPACK_IMPORTED_MODULE_11__.LibraryMenuSection, {\n            itemsRenderedPerBatch: itemsRenderedPerBatch,\n            items: unpublishedItems,\n            onItemSelectToggle: onItemSelectToggle,\n            onItemDrag: onItemDrag,\n            onClick: onItemClick,\n            isItemSelected: isItemSelected,\n            svgCache: svgCache\n          })]\n        })]\n      }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n        children: [(publishedItems.length > 0 || pendingElements.length > 0 || unpublishedItems.length > 0) && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n          className: "library-menu-items-container__header library-menu-items-container__header--excal"\n        }, {\n          children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("labels.excalidrawLib")\n        })), publishedItems.length > 0 ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LibraryMenuSection__WEBPACK_IMPORTED_MODULE_11__.LibraryMenuSectionGrid, {\n          children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LibraryMenuSection__WEBPACK_IMPORTED_MODULE_11__.LibraryMenuSection, {\n            itemsRenderedPerBatch: itemsRenderedPerBatch,\n            items: publishedItems,\n            onItemSelectToggle: onItemSelectToggle,\n            onItemDrag: onItemDrag,\n            onClick: onItemClick,\n            isItemSelected: isItemSelected,\n            svgCache: svgCache\n          })\n        }) : unpublishedItems.length > 0 ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n          style: {\n            margin: "1rem 0",\n            display: "flex",\n            flexDirection: "column",\n            alignItems: "center",\n            justifyContent: "center",\n            width: "100%",\n            fontSize: ".9rem"\n          }\n        }, {\n          children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("library.noItems")\n        })) : null]\n      }), showBtn && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LibraryMenuControlButtons__WEBPACK_IMPORTED_MODULE_9__.LibraryMenuControlButtons, Object.assign({\n        style: {\n          padding: "16px 0",\n          width: "100%"\n        },\n        id: id,\n        libraryReturnUrl: libraryReturnUrl,\n        theme: theme\n      }, {\n        children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LibraryMenuHeaderContent__WEBPACK_IMPORTED_MODULE_10__.LibraryDropdownMenu, {\n          selectedItems: selectedItems,\n          onSelectItems: onSelectItems\n        })\n      }))]\n    }))]\n  }));\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 15852 characters]\n//# sourceURL=webpack-internal:///../../components/LibraryMenuItems.tsx\n');
              }
            ),
            /***/
            "../../components/LibraryMenuSection.tsx": (
              /*!***********************************************!*\
                !*** ../../components/LibraryMenuSection.tsx ***!
                \***********************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "LibraryMenuSection": () => (/* binding */ LibraryMenuSection),\n/* harmony export */   "LibraryMenuSectionGrid": () => (/* binding */ LibraryMenuSectionGrid)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _LibraryUnit__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./LibraryUnit */ "../../components/LibraryUnit.tsx");\n/* harmony import */ var _hooks_useTransition__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../hooks/useTransition */ "../../hooks/useTransition.ts");\n\n\n\n\nconst LibraryMenuSectionGrid = ({\n  children\n}) => {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: "library-menu-items-container__grid"\n  }, {\n    children: children\n  }));\n};\nconst LibraryMenuSection = (0,react__WEBPACK_IMPORTED_MODULE_1__.memo)(({\n  items,\n  onItemSelectToggle,\n  onItemDrag,\n  isItemSelected,\n  onClick,\n  svgCache,\n  itemsRenderedPerBatch\n}) => {\n  const [, startTransition] = (0,_hooks_useTransition__WEBPACK_IMPORTED_MODULE_3__.useTransition)();\n  const [index, setIndex] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(0);\n  (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {\n    if (index < items.length) {\n      startTransition(() => {\n        setIndex(index + itemsRenderedPerBatch);\n      });\n    }\n  }, [index, items.length, startTransition, itemsRenderedPerBatch]);\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n    children: items.map((item, i) => {\n      var _a;\n\n      return i < index ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LibraryUnit__WEBPACK_IMPORTED_MODULE_2__.LibraryUnit, {\n        elements: item === null || item === void 0 ? void 0 : item.elements,\n        isPending: !(item === null || item === void 0 ? void 0 : item.id) && !!(item === null || item === void 0 ? void 0 : item.elements),\n        onClick: onClick,\n        svgCache: svgCache,\n        id: item === null || item === void 0 ? void 0 : item.id,\n        selected: isItemSelected(item.id),\n        onToggle: onItemSelectToggle,\n        onDrag: onItemDrag\n      }, (_a = item === null || item === void 0 ? void 0 : item.id) !== null && _a !== void 0 ? _a : i) : (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LibraryUnit__WEBPACK_IMPORTED_MODULE_2__.EmptyLibraryUnit, {}, i);\n    })\n  });\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9MaWJyYXJ5TWVudVNlY3Rpb24udHN4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQXVFO0FBQ2Q7QUFDSztBQUNQO0FBQ2hEO0FBQ1A7QUFDQSxDQUFDO0FBQ0QsU0FBUyxzREFBSTtBQUNiO0FBQ0EsR0FBRztBQUNIO0FBQ0EsR0FBRztBQUNIO0FBQ08sMkJBQTJCLDJDQUFJO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELDhCQUE4QixtRUFBYTtBQUMzQyw0QkFBNEIsK0NBQVE7QUFDcEMsRUFBRSxnREFBUztBQUNYO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSCxTQUFTLHNEQUFJLENBQUMsdURBQVM7QUFDdkI7QUFDQTs7QUFFQSx5QkFBeUIsc0RBQUksQ0FBQyxxREFBVztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxtR0FBbUcsc0RBQUksQ0FBQywwREFBZ0IsSUFBSTtBQUNuSSxLQUFLO0FBQ0wsR0FBRztBQUNILENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9MaWJyYXJ5TWVudVNlY3Rpb24udHN4PzQ4MjQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsganN4IGFzIF9qc3gsIEZyYWdtZW50IGFzIF9GcmFnbWVudCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IFJlYWN0LCB7IG1lbW8sIHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IEVtcHR5TGlicmFyeVVuaXQsIExpYnJhcnlVbml0IH0gZnJvbSBcIi4vTGlicmFyeVVuaXRcIjtcbmltcG9ydCB7IHVzZVRyYW5zaXRpb24gfSBmcm9tIFwiLi4vaG9va3MvdXNlVHJhbnNpdGlvblwiO1xuZXhwb3J0IGNvbnN0IExpYnJhcnlNZW51U2VjdGlvbkdyaWQgPSAoe1xuICBjaGlsZHJlblxufSkgPT4ge1xuICByZXR1cm4gX2pzeChcImRpdlwiLCBPYmplY3QuYXNzaWduKHtcbiAgICBjbGFzc05hbWU6IFwibGlicmFyeS1tZW51LWl0ZW1zLWNvbnRhaW5lcl9fZ3JpZFwiXG4gIH0sIHtcbiAgICBjaGlsZHJlbjogY2hpbGRyZW5cbiAgfSkpO1xufTtcbmV4cG9ydCBjb25zdCBMaWJyYXJ5TWVudVNlY3Rpb24gPSBtZW1vKCh7XG4gIGl0ZW1zLFxuICBvbkl0ZW1TZWxlY3RUb2dnbGUsXG4gIG9uSXRlbURyYWcsXG4gIGlzSXRlbVNlbGVjdGVkLFxuICBvbkNsaWNrLFxuICBzdmdDYWNoZSxcbiAgaXRlbXNSZW5kZXJlZFBlckJhdGNoXG59KSA9PiB7XG4gIGNvbnN0IFssIHN0YXJ0VHJhbnNpdGlvbl0gPSB1c2VUcmFuc2l0aW9uKCk7XG4gIGNvbnN0IFtpbmRleCwgc2V0SW5kZXhdID0gdXNlU3RhdGUoMCk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGluZGV4IDwgaXRlbXMubGVuZ3RoKSB7XG4gICAgICBzdGFydFRyYW5zaXRpb24oKCkgPT4ge1xuICAgICAgICBzZXRJbmRleChpbmRleCArIGl0ZW1zUmVuZGVyZWRQZXJCYXRjaCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIFtpbmRleCwgaXRlbXMubGVuZ3RoLCBzdGFydFRyYW5zaXRpb24sIGl0ZW1zUmVuZGVyZWRQZXJCYXRjaF0pO1xuICByZXR1cm4gX2pzeChfRnJhZ21lbnQsIHtcbiAgICBjaGlsZHJlbjogaXRlbXMubWFwKChpdGVtLCBpKSA9PiB7XG4gICAgICB2YXIgX2E7XG5cbiAgICAgIHJldHVybiBpIDwgaW5kZXggPyBfanN4KExpYnJhcnlVbml0LCB7XG4gICAgICAgIGVsZW1lbnRzOiBpdGVtID09PSBudWxsIHx8IGl0ZW0gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGl0ZW0uZWxlbWVudHMsXG4gICAgICAgIGlzUGVuZGluZzogIShpdGVtID09PSBudWxsIHx8IGl0ZW0gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGl0ZW0uaWQpICYmICEhKGl0ZW0gPT09IG51bGwgfHwgaXRlbSA9PT0gdm9pZCAwID8gdm9pZCAwIDogaXRlbS5lbGVtZW50cyksXG4gICAgICAgIG9uQ2xpY2s6IG9uQ2xpY2ssXG4gICAgICAgIHN2Z0NhY2hlOiBzdmdDYWNoZSxcbiAgICAgICAgaWQ6IGl0ZW0gPT09IG51bGwgfHwgaXRlbSA9PT0gdm9pZCAwID8gdm9pZCAwIDogaXRlbS5pZCxcbiAgICAgICAgc2VsZWN0ZWQ6IGlzSXRlbVNlbGVjdGVkKGl0ZW0uaWQpLFxuICAgICAgICBvblRvZ2dsZTogb25JdGVtU2VsZWN0VG9nZ2xlLFxuICAgICAgICBvbkRyYWc6IG9uSXRlbURyYWdcbiAgICAgIH0sIChfYSA9IGl0ZW0gPT09IG51bGwgfHwgaXRlbSA9PT0gdm9pZCAwID8gdm9pZCAwIDogaXRlbS5pZCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogaSkgOiBfanN4KEVtcHR5TGlicmFyeVVuaXQsIHt9LCBpKTtcbiAgICB9KVxuICB9KTtcbn0pOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/LibraryMenuSection.tsx\n');
              }
            ),
            /***/
            "../../components/LibraryUnit.tsx": (
              /*!****************************************!*\
                !*** ../../components/LibraryUnit.tsx ***!
                \****************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "EmptyLibraryUnit": () => (/* binding */ EmptyLibraryUnit),\n/* harmony export */   "LibraryUnit": () => (/* binding */ LibraryUnit)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _components_App__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../components/App */ "../../components/App.tsx");\n/* harmony import */ var _LibraryUnit_scss__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./LibraryUnit.scss */ "../../components/LibraryUnit.scss");\n/* harmony import */ var _CheckboxItem__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./CheckboxItem */ "../../components/CheckboxItem.tsx");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./icons */ "../../components/icons.tsx");\n/* harmony import */ var _hooks_useLibraryItemSvg__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../hooks/useLibraryItemSvg */ "../../hooks/useLibraryItemSvg.ts");\n\n\n\n\n\n\n\n\nconst LibraryUnit = (0,react__WEBPACK_IMPORTED_MODULE_2__.memo)(({\n  id,\n  elements,\n  isPending,\n  onClick,\n  selected,\n  onToggle,\n  onDrag,\n  svgCache\n}) => {\n  const ref = (0,react__WEBPACK_IMPORTED_MODULE_2__.useRef)(null);\n  const svg = (0,_hooks_useLibraryItemSvg__WEBPACK_IMPORTED_MODULE_7__.useLibraryItemSvg)(id, elements, svgCache);\n  (0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(() => {\n    const node = ref.current;\n\n    if (!node) {\n      return;\n    }\n\n    if (svg) {\n      node.innerHTML = svg.outerHTML;\n    }\n\n    return () => {\n      node.innerHTML = "";\n    };\n  }, [svg]);\n  const [isHovered, setIsHovered] = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(false);\n  const isMobile = (0,_components_App__WEBPACK_IMPORTED_MODULE_3__.useDevice)().editor.isMobile;\n\n  const adder = isPending && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: "library-unit__adder"\n  }, {\n    children: _icons__WEBPACK_IMPORTED_MODULE_6__.PlusIcon\n  }));\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__["default"])("library-unit", {\n      "library-unit__active": elements,\n      "library-unit--hover": elements && isHovered,\n      "library-unit--selected": selected,\n      "library-unit--skeleton": !svg\n    }),\n    onMouseEnter: () => setIsHovered(true),\n    onMouseLeave: () => setIsHovered(false)\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__["default"])("library-unit__dragger", {\n        "library-unit__pulse": !!isPending\n      }),\n      ref: ref,\n      draggable: !!elements,\n      onClick: !!elements || !!isPending ? event => {\n        if (id && event.shiftKey) {\n          onToggle(id, event);\n        } else {\n          onClick(id);\n        }\n      } : undefined,\n      onDragStart: event => {\n        if (!id) {\n          event.preventDefault();\n          return;\n        }\n\n        setIsHovered(false);\n        onDrag(id, event);\n      }\n    }), adder, id && elements && (isHovered || isMobile || selected) && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_CheckboxItem__WEBPACK_IMPORTED_MODULE_5__.CheckboxItem, {\n      checked: selected,\n      onChange: (checked, event) => onToggle(id, event),\n      className: "library-unit__checkbox"\n    })]\n  }));\n});\nconst EmptyLibraryUnit = () => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n  className: "library-unit library-unit--skeleton"\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4368 characters]\n//# sourceURL=webpack-internal:///../../components/LibraryUnit.tsx\n');
              }
            ),
            /***/
            "../../components/LoadingMessage.tsx": (
              /*!*******************************************!*\
                !*** ../../components/LoadingMessage.tsx ***!
                \*******************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "LoadingMessage": () => (/* binding */ LoadingMessage)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _Spinner__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Spinner */ "../../components/Spinner.tsx");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n\n\n\n\n\n\nconst LoadingMessage = ({\n  delay,\n  theme\n}) => {\n  const [isWaiting, setIsWaiting] = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(!!delay);\n  (0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(() => {\n    if (!delay) {\n      return;\n    }\n\n    const timer = setTimeout(() => {\n      setIsWaiting(false);\n    }, delay);\n    return () => clearTimeout(timer);\n  }, [delay]);\n\n  if (isWaiting) {\n    return null;\n  }\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_4__["default"])("LoadingMessage", {\n      "LoadingMessage--dark": theme === _constants__WEBPACK_IMPORTED_MODULE_5__.THEME.DARK\n    })\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Spinner__WEBPACK_IMPORTED_MODULE_3__["default"], {})\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: "LoadingMessage-text"\n    }, {\n      children: (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("labels.loadingScene")\n    }))]\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9Mb2FkaW5nTWVzc2FnZS50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQStEO0FBQ25DO0FBQ2dCO0FBQ1o7QUFDUjtBQUNhO0FBQzlCO0FBQ1A7QUFDQTtBQUNBLENBQUM7QUFDRCxvQ0FBb0MsK0NBQVE7QUFDNUMsRUFBRSxnREFBUztBQUNYO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7O0FBRUEsU0FBUyx1REFBSztBQUNkLGVBQWUsZ0RBQUk7QUFDbkIsd0NBQXdDLGtEQUFVO0FBQ2xELEtBQUs7QUFDTCxHQUFHO0FBQ0gsZUFBZSxzREFBSTtBQUNuQixnQkFBZ0Isc0RBQUksQ0FBQyxnREFBTyxJQUFJO0FBQ2hDLEtBQUssR0FBRyxzREFBSTtBQUNaO0FBQ0EsS0FBSztBQUNMLGdCQUFnQix3Q0FBQztBQUNqQixLQUFLO0FBQ0wsR0FBRztBQUNIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvTG9hZGluZ01lc3NhZ2UudHN4PzM4ZjEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IHQgfSBmcm9tIFwiLi4vaTE4blwiO1xuaW1wb3J0IHsgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFNwaW5uZXIgZnJvbSBcIi4vU3Bpbm5lclwiO1xuaW1wb3J0IGNsc3ggZnJvbSBcImNsc3hcIjtcbmltcG9ydCB7IFRIRU1FIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuZXhwb3J0IGNvbnN0IExvYWRpbmdNZXNzYWdlID0gKHtcbiAgZGVsYXksXG4gIHRoZW1lXG59KSA9PiB7XG4gIGNvbnN0IFtpc1dhaXRpbmcsIHNldElzV2FpdGluZ10gPSB1c2VTdGF0ZSghIWRlbGF5KTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWRlbGF5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHNldElzV2FpdGluZyhmYWxzZSk7XG4gICAgfSwgZGVsYXkpO1xuICAgIHJldHVybiAoKSA9PiBjbGVhclRpbWVvdXQodGltZXIpO1xuICB9LCBbZGVsYXldKTtcblxuICBpZiAoaXNXYWl0aW5nKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gX2pzeHMoXCJkaXZcIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgY2xhc3NOYW1lOiBjbHN4KFwiTG9hZGluZ01lc3NhZ2VcIiwge1xuICAgICAgXCJMb2FkaW5nTWVzc2FnZS0tZGFya1wiOiB0aGVtZSA9PT0gVEhFTUUuREFSS1xuICAgIH0pXG4gIH0sIHtcbiAgICBjaGlsZHJlbjogW19qc3goXCJkaXZcIiwge1xuICAgICAgY2hpbGRyZW46IF9qc3goU3Bpbm5lciwge30pXG4gICAgfSksIF9qc3goXCJkaXZcIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgICBjbGFzc05hbWU6IFwiTG9hZGluZ01lc3NhZ2UtdGV4dFwiXG4gICAgfSwge1xuICAgICAgY2hpbGRyZW46IHQoXCJsYWJlbHMubG9hZGluZ1NjZW5lXCIpXG4gICAgfSkpXVxuICB9KSk7XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/LoadingMessage.tsx\n');
              }
            ),
            /***/
            "../../components/LockButton.tsx": (
              /*!***************************************!*\
                !*** ../../components/LockButton.tsx ***!
                \***************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "LockButton": () => (/* binding */ LockButton)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _ToolIcon_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ToolIcon.scss */ "../../components/ToolIcon.scss");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./icons */ "../../components/icons.tsx");\n\n\n\n\nconst DEFAULT_SIZE = "medium";\nconst ICONS = {\n  CHECKED: _icons__WEBPACK_IMPORTED_MODULE_3__.LockedIcon,\n  UNCHECKED: _icons__WEBPACK_IMPORTED_MODULE_3__.UnlockedIcon\n};\nconst LockButton = props => {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("label", Object.assign({\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_2__["default"])("ToolIcon ToolIcon__lock", `ToolIcon_size_${DEFAULT_SIZE}`, {\n      "is-mobile": props.isMobile\n    }),\n    title: `${props.title} \u2014 Q`\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input", {\n      className: "ToolIcon_type_checkbox",\n      type: "checkbox",\n      name: props.name,\n      onChange: props.onChange,\n      checked: props.checked,\n      "aria-label": props.title,\n      "data-testid": "toolbar-lock"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: "ToolIcon__icon"\n    }, {\n      children: props.checked ? ICONS.CHECKED : ICONS.UNCHECKED\n    }))]\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9Mb2NrQnV0dG9uLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBK0Q7QUFDdEM7QUFDRDtBQUMyQjtBQUNuRDtBQUNBO0FBQ0EsV0FBVyw4Q0FBVTtBQUNyQixhQUFhLGdEQUFZO0FBQ3pCO0FBQ087QUFDUCxTQUFTLHVEQUFLO0FBQ2QsZUFBZSxnREFBSSw2Q0FBNkMsYUFBYTtBQUM3RTtBQUNBLEtBQUs7QUFDTCxjQUFjLGFBQWE7QUFDM0IsR0FBRztBQUNILGVBQWUsc0RBQUk7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLLEdBQUcsc0RBQUk7QUFDWjtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0giLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9Mb2NrQnV0dG9uLnRzeD8wY2UwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgXCIuL1Rvb2xJY29uLnNjc3NcIjtcbmltcG9ydCBjbHN4IGZyb20gXCJjbHN4XCI7XG5pbXBvcnQgeyBMb2NrZWRJY29uLCBVbmxvY2tlZEljb24gfSBmcm9tIFwiLi9pY29uc1wiO1xuY29uc3QgREVGQVVMVF9TSVpFID0gXCJtZWRpdW1cIjtcbmNvbnN0IElDT05TID0ge1xuICBDSEVDS0VEOiBMb2NrZWRJY29uLFxuICBVTkNIRUNLRUQ6IFVubG9ja2VkSWNvblxufTtcbmV4cG9ydCBjb25zdCBMb2NrQnV0dG9uID0gcHJvcHMgPT4ge1xuICByZXR1cm4gX2pzeHMoXCJsYWJlbFwiLCBPYmplY3QuYXNzaWduKHtcbiAgICBjbGFzc05hbWU6IGNsc3goXCJUb29sSWNvbiBUb29sSWNvbl9fbG9ja1wiLCBgVG9vbEljb25fc2l6ZV8ke0RFRkFVTFRfU0laRX1gLCB7XG4gICAgICBcImlzLW1vYmlsZVwiOiBwcm9wcy5pc01vYmlsZVxuICAgIH0pLFxuICAgIHRpdGxlOiBgJHtwcm9wcy50aXRsZX0g4oCUIFFgXG4gIH0sIHtcbiAgICBjaGlsZHJlbjogW19qc3goXCJpbnB1dFwiLCB7XG4gICAgICBjbGFzc05hbWU6IFwiVG9vbEljb25fdHlwZV9jaGVja2JveFwiLFxuICAgICAgdHlwZTogXCJjaGVja2JveFwiLFxuICAgICAgbmFtZTogcHJvcHMubmFtZSxcbiAgICAgIG9uQ2hhbmdlOiBwcm9wcy5vbkNoYW5nZSxcbiAgICAgIGNoZWNrZWQ6IHByb3BzLmNoZWNrZWQsXG4gICAgICBcImFyaWEtbGFiZWxcIjogcHJvcHMudGl0bGUsXG4gICAgICBcImRhdGEtdGVzdGlkXCI6IFwidG9vbGJhci1sb2NrXCJcbiAgICB9KSwgX2pzeChcImRpdlwiLCBPYmplY3QuYXNzaWduKHtcbiAgICAgIGNsYXNzTmFtZTogXCJUb29sSWNvbl9faWNvblwiXG4gICAgfSwge1xuICAgICAgY2hpbGRyZW46IHByb3BzLmNoZWNrZWQgPyBJQ09OUy5DSEVDS0VEIDogSUNPTlMuVU5DSEVDS0VEXG4gICAgfSkpXVxuICB9KSk7XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/LockButton.tsx\n');
              }
            ),
            /***/
            "../../components/MermaidToExcalidraw.tsx": (
              /*!************************************************!*\
                !*** ../../components/MermaidToExcalidraw.tsx ***!
                \************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./App */ "../../components/App.tsx");
/* harmony import */ var _Button__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Button */ "../../components/Button.tsx");
/* harmony import */ var _Dialog__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Dialog */ "../../components/Dialog.tsx");
/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../constants */ "../../constants.ts");
/* harmony import */ var _packages_excalidraw_index__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../packages/excalidraw/index */ "./index.tsx");
/* harmony import */ var _data_blob__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../data/blob */ "../../data/blob.ts");
/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./icons */ "../../components/icons.tsx");
/* harmony import */ var _Spinner__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./Spinner */ "../../components/Spinner.tsx");
/* harmony import */ var _MermaidToExcalidraw_scss__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./MermaidToExcalidraw.scss */ "../../components/MermaidToExcalidraw.scss");
/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");
/* harmony import */ var _Trans__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./Trans */ "../../components/Trans.tsx");
var __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {
  function adopt(value) {
    return value instanceof P ? value : new P(function (resolve) {
      resolve(value);
    });
  }

  return new (P || (P = Promise))(function (resolve, reject) {
    function fulfilled(value) {
      try {
        step(generator.next(value));
      } catch (e) {
        reject(e);
      }
    }

    function rejected(value) {
      try {
        step(generator["throw"](value));
      } catch (e) {
        reject(e);
      }
    }

    function step(result) {
      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
    }

    step((generator = generator.apply(thisArg, _arguments || [])).next());
  });
};














const LOCAL_STORAGE_KEY_MERMAID_TO_EXCALIDRAW = "mermaid-to-excalidraw";
const MERMAID_EXAMPLE = "flowchart TD\\n A[Christmas] -->|Get money| B(Go shopping)\\n B --> C{Let me think}\\n C -->|One| D[Laptop]\\n C -->|Two| E[iPhone]\\n C -->|Three| F[Car]";

const saveMermaidDataToStorage = data => {
  try {
    localStorage.setItem(LOCAL_STORAGE_KEY_MERMAID_TO_EXCALIDRAW, data);
  } catch (error) {
    // Unable to access window.localStorage
    console.error(error);
  }
};

const importMermaidDataFromStorage = () => {
  try {
    const data = localStorage.getItem(LOCAL_STORAGE_KEY_MERMAID_TO_EXCALIDRAW);

    if (data) {
      return data;
    }
  } catch (error) {
    // Unable to access localStorage
    console.error(error);
  }

  return null;
};

const ErrorComp = ({
  error
}) => {
  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({
    "data-testid": "mermaid-error",
    className: "mermaid-error"
  }, {
    children: ["Error! ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("p", {
      children: error
    })]
  }));
};

const MermaidToExcalidraw = () => {
  const [mermaidToExcalidrawLib, setMermaidToExcalidrawLib] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({
    loaded: false,
    api: null
  });
  const [text, setText] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)("");
  const deferredText = (0,react__WEBPACK_IMPORTED_MODULE_1__.useDeferredValue)(text.trim());
  const [error, setError] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);
  const canvasRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);
  const data = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)({
    elements: [],
    files: null
  });
  const app = (0,_App__WEBPACK_IMPORTED_MODULE_2__.useApp)();

  const resetPreview = () => {
    const canvasNode = canvasRef.current;

    if (!canvasNode) {
      return;
    }

    const parent = canvasNode.parentElement;

    if (!parent) {
      return;
    }

    parent.style.background = "";
    setError(null);
    canvasNode.replaceChildren();
  };

  (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {
    const loadMermaidToExcalidrawLib = () => __awaiter(void 0, void 0, void 0, function* () {
      const api = yield __webpack_require__.e(/*! import() | mermaid-to-excalidraw */ "vendor").then(__webpack_require__.bind(__webpack_require__, /*! @excalidraw/mermaid-to-excalidraw */ "../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/index.js"));
      setMermaidToExcalidrawLib({
        loaded: true,
        api
      });
    });

    loadMermaidToExcalidrawLib();
  }, []);
  (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {
    const data = importMermaidDataFromStorage() || MERMAID_EXAMPLE;
    setText(data);
  }, []);
  (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {
    const renderExcalidrawPreview = () => __awaiter(void 0, void 0, void 0, function* () {
      const canvasNode = canvasRef.current;
      const parent = canvasNode === null || canvasNode === void 0 ? void 0 : canvasNode.parentElement;

      if (!mermaidToExcalidrawLib.loaded || !canvasNode || !parent || !mermaidToExcalidrawLib.api) {
        return;
      }

      if (!deferredText) {
        resetPreview();
        return;
      }

      try {
        const {
          elements,
          files
        } = yield mermaidToExcalidrawLib.api.parseMermaidToExcalidraw(deferredText, {
          fontSize: _constants__WEBPACK_IMPORTED_MODULE_5__.DEFAULT_FONT_SIZE
        });
        setError(null);
        data.current = {
          elements: (0,_packages_excalidraw_index__WEBPACK_IMPORTED_MODULE_6__.convertToExcalidrawElements)(elements, {
            regenerateIds: true
          }),
          files
        };
        const canvas = yield (0,_packages_excalidraw_index__WEBPACK_IMPORTED_MODULE_6__.exportToCanvas)({
          elements: data.current.elements,
          files: data.current.files,
          exportPadding: _constants__WEBPACK_IMPORTED_MODULE_5__.DEFAULT_EXPORT_PADDING,
          maxWidthOrHeight: Math.max(parent.offsetWidth, parent.offsetHeight) * window.devicePixelRatio
        }); // if converting to blob fails, there's some problem that will
        // likely prevent preview and export (e.g. canvas too big)

        yield (0,_data_blob__WEBPACK_IMPORTED_MODULE_7__.canvasToBlob)(canvas);
        parent.style.background = "var(--default-bg-color)";
        canvasNode.replaceChildren(canvas);
      } catch (e) {
        parent.style.background = "var(--default-bg-color)";

        if (deferredText) {
          setError(e.message);
        }
      }
    });

    renderExcalidrawPreview();
  }, [deferredText, mermaidToExcalidrawLib]);

  const onClose = () => {
    app.setOpenDialog(null);
    saveMermaidDataToStorage(text);
  };

  const onSelect = () => {
    const {
      elements: newElements,
      files
    } = data.current;
    app.addElementsFromPasteOrLibrary({
      elements: newElements,
      files,
      position: "center",
      fitToContent: true
    });
    onClose();
  };

  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Dialog__WEBPACK_IMPORTED_MODULE_4__.Dialog, Object.assign({
    className: "dialog-mermaid",
    onCloseRequest: onClose,
    size: 1200,
    title: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {
      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("p", Object.assign({
        className: "dialog-mermaid-title"
      }, {
        children: (0,_i18n__WEBPACK_IMPORTED_MODULE_11__.t)("mermaid.title")
      })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("span", Object.assign({
        className: "dialog-mermaid-desc"
      }, {
        children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Trans__WEBPACK_IMPORTED_MODULE_12__["default"], {
          i18nKey: "mermaid.description",
          flowchartLink: el => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("a", Object.assign({
            href: "https://mermaid.js.org/syntax/flowchart.html"
          }, {
            children: el
          })),
          sequenceLink: el => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("a", Object.assign({
            href: "https://mermaid.js.org/syntax/sequenceDiagram.html"
          }, {
            children: el
          }))
        }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("br", {})]
      }))]
    })
  }, {
    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({
      className: "dialog-mermaid-body"
    }, {
      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({
        className: "dialog-mermaid-panels"
      }, {
        children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({
          className: "dialog-mermaid-panels-text"
        }, {
          children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("label", {
            children: (0,_i18n__WEBPACK_IMPORTED_MODULE_11__.t)("mermaid.syntax")
          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("textarea", {
            onChange: event => setText(event.target.value),
            value: text
          })]
        })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({
          className: "dialog-mermaid-panels-preview"
        }, {
          children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("label", {
            children: (0,_i18n__WEBPACK_IMPORTED_MODULE_11__.t)("mermaid.preview")
          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({
            className: "dialog-mermaid-panels-preview-wrapper"
          }, {
            children: [error && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(ErrorComp, {
              error: error
            }), mermaidToExcalidrawLib.loaded ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {
              ref: canvasRef,
              style: {
                opacity: error ? "0.15" : 1
              },
              className: "dialog-mermaid-panels-preview-canvas-container"
            }) : (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Spinner__WEBPACK_IMPORTED_MODULE_9__["default"], {
              size: "2rem"
            })]
          }))]
        }))]
      })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({
        className: "dialog-mermaid-buttons"
      }, {
        children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Button__WEBPACK_IMPORTED_MODULE_3__.Button, Object.assign({
          className: "dialog-mermaid-insert",
          onSelect: onSelect
        }, {
          children: [(0,_i18n__WEBPACK_IMPORTED_MODULE_11__.t)("mermaid.button"), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", {
            children: _icons__WEBPACK_IMPORTED_MODULE_8__.ArrowRightIcon
          })]
        }))
      }))]
    }))
  }));
};

/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (MermaidToExcalidraw);//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 14776 characters]
//# sourceURL=webpack-internal:///../../components/MermaidToExcalidraw.tsx
`);
              }
            ),
            /***/
            "../../components/MobileMenu.tsx": (
              /*!***************************************!*\
                !*** ../../components/MobileMenu.tsx ***!
                \***************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "MobileMenu": () => (/* binding */ MobileMenu)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _Stack__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Stack */ "../../components/Stack.tsx");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _FixedSideContainer__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./FixedSideContainer */ "../../components/FixedSideContainer.tsx");\n/* harmony import */ var _Island__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Island */ "../../components/Island.tsx");\n/* harmony import */ var _HintViewer__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./HintViewer */ "../../components/HintViewer.tsx");\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../scene */ "../../scene/index.ts");\n/* harmony import */ var _Actions__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./Actions */ "../../components/Actions.tsx");\n/* harmony import */ var _Section__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./Section */ "../../components/Section.tsx");\n/* harmony import */ var _scene_scrollbars__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../scene/scrollbars */ "../../scene/scrollbars.ts");\n/* harmony import */ var _LockButton__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./LockButton */ "../../components/LockButton.tsx");\n/* harmony import */ var _PenModeButton__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./PenModeButton */ "../../components/PenModeButton.tsx");\n/* harmony import */ var _Stats__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./Stats */ "../../components/Stats.tsx");\n/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../actions */ "../../actions/index.ts");\n/* harmony import */ var _HandButton__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./HandButton */ "../../components/HandButton.tsx");\n/* harmony import */ var _appState__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../appState */ "../../appState.ts");\n/* harmony import */ var _context_tunnels__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../context/tunnels */ "../../context/tunnels.ts");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst MobileMenu = ({\n  appState,\n  elements,\n  actionManager,\n  setAppState,\n  onLockToggle,\n  onHandToolToggle,\n  onPenModeToggle,\n  renderTopRightUI,\n  renderCustomStats,\n  renderSidebars,\n  device,\n  renderWelcomeScreen,\n  UIOptions,\n  app\n}) => {\n  const {\n    WelcomeScreenCenterTunnel,\n    MainMenuTunnel,\n    DefaultSidebarTriggerTunnel\n  } = (0,_context_tunnels__WEBPACK_IMPORTED_MODULE_18__.useTunnels)();\n\n  const renderToolbar = () => {\n    return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_FixedSideContainer__WEBPACK_IMPORTED_MODULE_5__.FixedSideContainer, Object.assign({\n      side: "top",\n      className: "App-top-bar"\n    }, {\n      children: [renderWelcomeScreen && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(WelcomeScreenCenterTunnel.Out, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Section__WEBPACK_IMPORTED_MODULE_10__.Section, Object.assign({\n        heading: "shapes"\n      }, {\n        children: heading => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Stack__WEBPACK_IMPORTED_MODULE_3__["default"].Col, Object.assign({\n          gap: 4,\n          align: "center"\n        }, {\n          children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Stack__WEBPACK_IMPORTED_MODULE_3__["default"].Row, Object.assign({\n            gap: 1,\n            className: "App-toolbar-container"\n          }, {\n            children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Island__WEBPACK_IMPORTED_MODULE_6__.Island, Object.assign({\n              padding: 1,\n              className: "App-toolbar App-toolbar--mobile"\n            }, {\n              children: [heading, (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Stack__WEBPACK_IMPORTED_MODULE_3__["default"].Row, Object.assign({\n                gap: 1\n              }, {\n                children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Actions__WEBPACK_IMPORTED_MODULE_9__.ShapesSwitcher, {\n                  appState: appState,\n                  activeTool: appState.activeTool,\n                  UIOptions: UIOptions,\n                  app: app\n                })\n              }))]\n            })), renderTopRightUI && renderTopRightUI(true, appState), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n              className: "mobile-misc-tools-container"\n            }, {\n              children: [!appState.viewModeEnabled && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(DefaultSidebarTriggerTunnel.Out, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_PenModeButton__WEBPACK_IMPORTED_MODULE_13__.PenModeButton, {\n                checked: appState.penMode,\n                onChange: () => onPenModeToggle(null),\n                title: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("toolBar.penMode"),\n                isMobile: true,\n                penDetected: appState.penDetected\n              }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LockButton__WEBPACK_IMPORTED_MODULE_12__.LockButton, {\n                checked: appState.activeTool.locked,\n                onChange: onLockToggle,\n                title: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("toolBar.lock"),\n                isMobile: true\n              }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_HandButton__WEBPACK_IMPORTED_MODULE_16__.HandButton, {\n                checked: (0,_appState__WEBPACK_IMPORTED_MODULE_17__.isHandToolActive)(appState),\n                onChange: () => onHandToolToggle(),\n                title: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("toolBar.hand"),\n                isMobile: true\n              })]\n            }))]\n          }))\n        }))\n      })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_HintViewer__WEBPACK_IMPORTED_MODULE_7__.HintViewer, {\n        appState: appState,\n        isMobile: true,\n        device: device,\n        app: app\n      })]\n    }));\n  };\n\n  const renderAppToolbar = () => {\n    if (appState.viewModeEnabled) {\n      return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n        className: "App-toolbar-content"\n      }, {\n        children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(MainMenuTunnel.Out, {})\n      }));\n    }\n\n    return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n      className: "App-toolbar-content"\n    }, {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(MainMenuTunnel.Out, {}), actionManager.renderAction("toggleEditMenu"), actionManager.renderAction("undo"), actionManager.renderAction("redo"), actionManager.renderAction(appState.multiElement ? "finalize" : "duplicateSelection"), actionManager.renderAction("deleteSelectedElements")]\n    }));\n  };\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n    children: [renderSidebars(), !appState.viewModeEnabled && renderToolbar(), !appState.openMenu && appState.showStats && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Stats__WEBPACK_IMPORTED_MODULE_14__.Stats, {\n      appState: appState,\n      setAppState: setAppState,\n      elements: elements,\n      onClose: () => {\n        actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_15__.actionToggleStats);\n      },\n      renderCustomStats: renderCustomStats\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: "App-bottom-bar",\n      style: {\n        marginBottom: _scene_scrollbars__WEBPACK_IMPORTED_MODULE_11__.SCROLLBAR_WIDTH + _scene_scrollbars__WEBPACK_IMPORTED_MODULE_11__.SCROLLBAR_MARGIN * 2,\n        marginLeft: _scene_scrollbars__WEBPACK_IMPORTED_MODULE_11__.SCROLLBAR_WIDTH + _scene_scrollbars__WEBPACK_IMPORTED_MODULE_11__.SCROLLBAR_MARGIN * 2,\n        marginRight: _scene_scrollbars__WEBPACK_IMPORTED_MODULE_11__.SCROLLBAR_WIDTH + _scene_scrollbars__WEBPACK_IMPORTED_MODULE_11__.SCROLLBAR_MARGIN * 2\n      }\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Island__WEBPACK_IMPORTED_MODULE_6__.Island, Object.assign({\n        padding: 0\n      }, {\n        children: [appState.openMenu === "shape" && !appState.viewModeEnabled && (0,_element__WEBPACK_IMPORTED_MODULE_4__.showSelectedShapeActions)(appState, elements) ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Section__WEBPACK_IMPORTED_MODULE_10__.Section, Object.assign({\n          className: "App-mobile-menu",\n          heading: "selectedShapeActions"\n        }, {\n          children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Actions__WEBPACK_IMPORTED_MODULE_9__.SelectedShapeActions, {\n            appState: appState,\n            elements: elements,\n            renderAction: actionManager.renderAction\n          })\n        })) : null, (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("footer", Object.assign({\n          className: "App-toolbar"\n        }, {\n          children: [renderAppToolbar(), appState.scrolledOutside && !appState.openMenu && !appState.openSidebar && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("button", Object.assign({\n            className: "scroll-back-to-content",\n            onClick: () => {\n              setAppState(appState => Object.assign({}, (0,_scene__WEBPACK_IMPORTED_MODULE_8__.calculateScrollCenter)(elements, appState)));\n            }\n          }, {\n            children: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("buttons.scrollBackToContent")\n          }))]\n        }))]\n      }))\n    }))]\n  });\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 10776 characters]\n//# sourceURL=webpack-internal:///../../components/MobileMenu.tsx\n');
              }
            ),
            /***/
            "../../components/Modal.tsx": (
              /*!**********************************!*\
                !*** ../../components/Modal.tsx ***!
                \**********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "Modal": () => (/* binding */ Modal)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Modal_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Modal.scss */ "../../components/Modal.scss");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-dom */ "react-dom");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _hooks_useCreatePortalContainer__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../hooks/useCreatePortalContainer */ "../../hooks/useCreatePortalContainer.ts");\n\n\n\n\n\n\n\nconst Modal = props => {\n  const {\n    closeOnClickOutside = true\n  } = props;\n  const modalRoot = (0,_hooks_useCreatePortalContainer__WEBPACK_IMPORTED_MODULE_6__.useCreatePortalContainer)({\n    className: "excalidraw-modal-container"\n  });\n\n  if (!modalRoot) {\n    return null;\n  }\n\n  const handleKeydown = event => {\n    if (event.key === _keys__WEBPACK_IMPORTED_MODULE_5__.KEYS.ESCAPE) {\n      event.nativeEvent.stopImmediatePropagation();\n      event.stopPropagation();\n      props.onCloseRequest();\n    }\n  };\n\n  return (0,react_dom__WEBPACK_IMPORTED_MODULE_3__.createPortal)((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_4__["default"])("Modal", props.className),\n    role: "dialog",\n    "aria-modal": "true",\n    onKeyDown: handleKeydown,\n    "aria-labelledby": props.labelledBy,\n    "data-prevent-outside-click": true\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n      className: "Modal__background",\n      onClick: closeOnClickOutside ? props.onCloseRequest : undefined\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: "Modal__content",\n      style: {\n        "--max-width": `${props.maxWidth}px`\n      },\n      tabIndex: 0\n    }, {\n      children: props.children\n    }))]\n  })), modalRoot);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9Nb2RhbC50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBK0Q7QUFDekM7QUFDSTtBQUNlO0FBQ2pCO0FBQ087QUFDOEM7QUFDdEU7QUFDUDtBQUNBO0FBQ0EsSUFBSTtBQUNKLG9CQUFvQix5RkFBd0I7QUFDNUM7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHNCQUFzQiw4Q0FBVztBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFNBQVMsdURBQVksQ0FBQyx1REFBSztBQUMzQixlQUFlLGdEQUFJO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsZUFBZSxzREFBSTtBQUNuQjtBQUNBO0FBQ0EsS0FBSyxHQUFHLHNEQUFJO0FBQ1o7QUFDQTtBQUNBLDBCQUEwQixlQUFlO0FBQ3pDLE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0giLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9Nb2RhbC50c3g/NjAzNCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IFwiLi9Nb2RhbC5zY3NzXCI7XG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tIFwicmVhY3QtZG9tXCI7XG5pbXBvcnQgY2xzeCBmcm9tIFwiY2xzeFwiO1xuaW1wb3J0IHsgS0VZUyB9IGZyb20gXCIuLi9rZXlzXCI7XG5pbXBvcnQgeyB1c2VDcmVhdGVQb3J0YWxDb250YWluZXIgfSBmcm9tIFwiLi4vaG9va3MvdXNlQ3JlYXRlUG9ydGFsQ29udGFpbmVyXCI7XG5leHBvcnQgY29uc3QgTW9kYWwgPSBwcm9wcyA9PiB7XG4gIGNvbnN0IHtcbiAgICBjbG9zZU9uQ2xpY2tPdXRzaWRlID0gdHJ1ZVxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IG1vZGFsUm9vdCA9IHVzZUNyZWF0ZVBvcnRhbENvbnRhaW5lcih7XG4gICAgY2xhc3NOYW1lOiBcImV4Y2FsaWRyYXctbW9kYWwtY29udGFpbmVyXCJcbiAgfSk7XG5cbiAgaWYgKCFtb2RhbFJvb3QpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUtleWRvd24gPSBldmVudCA9PiB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gS0VZUy5FU0NBUEUpIHtcbiAgICAgIGV2ZW50Lm5hdGl2ZUV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBwcm9wcy5vbkNsb3NlUmVxdWVzdCgpO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gY3JlYXRlUG9ydGFsKF9qc3hzKFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oe1xuICAgIGNsYXNzTmFtZTogY2xzeChcIk1vZGFsXCIsIHByb3BzLmNsYXNzTmFtZSksXG4gICAgcm9sZTogXCJkaWFsb2dcIixcbiAgICBcImFyaWEtbW9kYWxcIjogXCJ0cnVlXCIsXG4gICAgb25LZXlEb3duOiBoYW5kbGVLZXlkb3duLFxuICAgIFwiYXJpYS1sYWJlbGxlZGJ5XCI6IHByb3BzLmxhYmVsbGVkQnksXG4gICAgXCJkYXRhLXByZXZlbnQtb3V0c2lkZS1jbGlja1wiOiB0cnVlXG4gIH0sIHtcbiAgICBjaGlsZHJlbjogW19qc3goXCJkaXZcIiwge1xuICAgICAgY2xhc3NOYW1lOiBcIk1vZGFsX19iYWNrZ3JvdW5kXCIsXG4gICAgICBvbkNsaWNrOiBjbG9zZU9uQ2xpY2tPdXRzaWRlID8gcHJvcHMub25DbG9zZVJlcXVlc3QgOiB1bmRlZmluZWRcbiAgICB9KSwgX2pzeChcImRpdlwiLCBPYmplY3QuYXNzaWduKHtcbiAgICAgIGNsYXNzTmFtZTogXCJNb2RhbF9fY29udGVudFwiLFxuICAgICAgc3R5bGU6IHtcbiAgICAgICAgXCItLW1heC13aWR0aFwiOiBgJHtwcm9wcy5tYXhXaWR0aH1weGBcbiAgICAgIH0sXG4gICAgICB0YWJJbmRleDogMFxuICAgIH0sIHtcbiAgICAgIGNoaWxkcmVuOiBwcm9wcy5jaGlsZHJlblxuICAgIH0pKV1cbiAgfSkpLCBtb2RhbFJvb3QpO1xufTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/Modal.tsx\n');
              }
            ),
            /***/
            "../../components/OverwriteConfirm/OverwriteConfirm.tsx": (
              /*!**************************************************************!*\
                !*** ../../components/OverwriteConfirm/OverwriteConfirm.tsx ***!
                \**************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "OverwriteConfirmDialog": () => (/* binding */ OverwriteConfirmDialog)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var jotai__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! jotai */ "../../../node_modules/jotai/esm/index.mjs");\n/* harmony import */ var _context_tunnels__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../context/tunnels */ "../../context/tunnels.ts");\n/* harmony import */ var _jotai__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../jotai */ "../../jotai.ts");\n/* harmony import */ var _Dialog__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../Dialog */ "../../components/Dialog.tsx");\n/* harmony import */ var _hoc_withInternalFallback__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../hoc/withInternalFallback */ "../../components/hoc/withInternalFallback.tsx");\n/* harmony import */ var _OverwriteConfirmState__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./OverwriteConfirmState */ "../../components/OverwriteConfirm/OverwriteConfirmState.ts");\n/* harmony import */ var _FilledButton__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../FilledButton */ "../../components/FilledButton.tsx");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../icons */ "../../components/icons.tsx");\n/* harmony import */ var _OverwriteConfirmActions__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./OverwriteConfirmActions */ "../../components/OverwriteConfirm/OverwriteConfirmActions.tsx");\n/* harmony import */ var _OverwriteConfirm_scss__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./OverwriteConfirm.scss */ "../../components/OverwriteConfirm/OverwriteConfirm.scss");\n\n\n\n\n\n\n\n\n\n\n\n\nconst OverwriteConfirmDialog = Object.assign((0,_hoc_withInternalFallback__WEBPACK_IMPORTED_MODULE_5__.withInternalFallback)("OverwriteConfirmDialog", ({\n  children\n}) => {\n  const {\n    OverwriteConfirmDialogTunnel\n  } = (0,_context_tunnels__WEBPACK_IMPORTED_MODULE_2__.useTunnels)();\n  const [overwriteConfirmState, setState] = (0,jotai__WEBPACK_IMPORTED_MODULE_11__.useAtom)(_OverwriteConfirmState__WEBPACK_IMPORTED_MODULE_6__.overwriteConfirmStateAtom, _jotai__WEBPACK_IMPORTED_MODULE_3__.jotaiScope);\n\n  if (!overwriteConfirmState.active) {\n    return null;\n  }\n\n  const handleClose = () => {\n    overwriteConfirmState.onClose();\n    setState(state => Object.assign(Object.assign({}, state), {\n      active: false\n    }));\n  };\n\n  const handleConfirm = () => {\n    overwriteConfirmState.onConfirm();\n    setState(state => Object.assign(Object.assign({}, state), {\n      active: false\n    }));\n  };\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(OverwriteConfirmDialogTunnel.In, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Dialog__WEBPACK_IMPORTED_MODULE_4__.Dialog, Object.assign({\n      onCloseRequest: handleClose,\n      title: false,\n      size: 916\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n        className: "OverwriteConfirm"\n      }, {\n        children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("h3", {\n          children: overwriteConfirmState.title\n        }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n          className: `OverwriteConfirm__Description OverwriteConfirm__Description--color-${overwriteConfirmState.color}`\n        }, {\n          children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n            className: "OverwriteConfirm__Description__icon"\n          }, {\n            children: _icons__WEBPACK_IMPORTED_MODULE_8__.alertTriangleIcon\n          })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n            children: overwriteConfirmState.description\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n            className: "OverwriteConfirm__Description__spacer"\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_FilledButton__WEBPACK_IMPORTED_MODULE_7__.FilledButton, {\n            color: overwriteConfirmState.color,\n            size: "large",\n            label: overwriteConfirmState.actionLabel,\n            onClick: handleConfirm\n          })]\n        })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_OverwriteConfirmActions__WEBPACK_IMPORTED_MODULE_9__.Actions, {\n          children: children\n        })]\n      }))\n    }))\n  });\n}), {\n  Actions: _OverwriteConfirmActions__WEBPACK_IMPORTED_MODULE_9__.Actions,\n  Action: _OverwriteConfirmActions__WEBPACK_IMPORTED_MODULE_9__.Action\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4796 characters]\n//# sourceURL=webpack-internal:///../../components/OverwriteConfirm/OverwriteConfirm.tsx\n');
              }
            ),
            /***/
            "../../components/OverwriteConfirm/OverwriteConfirmActions.tsx": (
              /*!*********************************************************************!*\
                !*** ../../components/OverwriteConfirm/OverwriteConfirmActions.tsx ***!
                \*********************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "Action": () => (/* binding */ Action),\n/* harmony export */   "Actions": () => (/* binding */ Actions),\n/* harmony export */   "ExportToImage": () => (/* binding */ ExportToImage),\n/* harmony export */   "SaveToDisk": () => (/* binding */ SaveToDisk)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _FilledButton__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../FilledButton */ "../../components/FilledButton.tsx");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../App */ "../../components/App.tsx");\n/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../actions */ "../../actions/index.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../i18n */ "../../i18n.ts");\n/* harmony import */ var _actions_actionExport__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../actions/actionExport */ "../../actions/actionExport.tsx");\n\n\n\n\n\n\n\nconst Action = ({\n  title,\n  children,\n  actionLabel,\n  onClick\n}) => {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n    className: "OverwriteConfirm__Actions__Action"\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("h4", {\n      children: title\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: "OverwriteConfirm__Actions__Action__content"\n    }, {\n      children: children\n    })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_FilledButton__WEBPACK_IMPORTED_MODULE_2__.FilledButton, {\n      variant: "outlined",\n      color: "muted",\n      label: actionLabel,\n      size: "large",\n      fullWidth: true,\n      onClick: onClick\n    })]\n  }));\n};\nconst ExportToImage = () => {\n  const {\n    t\n  } = (0,_i18n__WEBPACK_IMPORTED_MODULE_5__.useI18n)();\n  const actionManager = (0,_App__WEBPACK_IMPORTED_MODULE_3__.useExcalidrawActionManager)();\n  const setAppState = (0,_App__WEBPACK_IMPORTED_MODULE_3__.useExcalidrawSetAppState)();\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Action, Object.assign({\n    title: t("overwriteConfirm.action.exportToImage.title"),\n    actionLabel: t("overwriteConfirm.action.exportToImage.button"),\n    onClick: () => {\n      actionManager.executeAction(_actions_actionExport__WEBPACK_IMPORTED_MODULE_6__.actionChangeExportEmbedScene, "ui", true);\n      setAppState({\n        openDialog: "imageExport"\n      });\n    }\n  }, {\n    children: t("overwriteConfirm.action.exportToImage.description")\n  }));\n};\nconst SaveToDisk = () => {\n  const {\n    t\n  } = (0,_i18n__WEBPACK_IMPORTED_MODULE_5__.useI18n)();\n  const actionManager = (0,_App__WEBPACK_IMPORTED_MODULE_3__.useExcalidrawActionManager)();\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Action, Object.assign({\n    title: t("overwriteConfirm.action.saveToDisk.title"),\n    actionLabel: t("overwriteConfirm.action.saveToDisk.button"),\n    onClick: () => {\n      actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_4__.actionSaveFileToDisk, "ui");\n    }\n  }, {\n    children: t("overwriteConfirm.action.saveToDisk.description")\n  }));\n};\nconst Actions = Object.assign(({\n  children\n}) => {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: "OverwriteConfirm__Actions"\n  }, {\n    children: children\n  }));\n}, {\n  ExportToImage,\n  SaveToDisk\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4368 characters]\n//# sourceURL=webpack-internal:///../../components/OverwriteConfirm/OverwriteConfirmActions.tsx\n');
              }
            ),
            /***/
            "../../components/OverwriteConfirm/OverwriteConfirmState.ts": (
              /*!******************************************************************!*\
                !*** ../../components/OverwriteConfirm/OverwriteConfirmState.ts ***!
                \******************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "openConfirmModal": () => (/* binding */ openConfirmModal),\n/* harmony export */   "overwriteConfirmStateAtom": () => (/* binding */ overwriteConfirmStateAtom)\n/* harmony export */ });\n/* harmony import */ var jotai__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! jotai */ "../../../node_modules/jotai/esm/index.mjs");\n/* harmony import */ var _jotai__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../jotai */ "../../jotai.ts");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator["throw"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\nconst overwriteConfirmStateAtom = (0,jotai__WEBPACK_IMPORTED_MODULE_1__.atom)({\n  active: false\n});\nfunction openConfirmModal({\n  title,\n  description,\n  actionLabel,\n  color\n}) {\n  return __awaiter(this, void 0, void 0, function* () {\n    return new Promise(resolve => {\n      _jotai__WEBPACK_IMPORTED_MODULE_0__.jotaiStore.set(overwriteConfirmStateAtom, {\n        active: true,\n        onConfirm: () => resolve(true),\n        onClose: () => resolve(false),\n        onReject: () => resolve(false),\n        title,\n        description,\n        actionLabel,\n        color\n      });\n    });\n  });\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9PdmVyd3JpdGVDb25maXJtL092ZXJ3cml0ZUNvbmZpcm1TdGF0ZS50cy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsZ0JBQWdCLFNBQUksSUFBSSxTQUFJO0FBQzVCO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7O0FBRTZCO0FBQ1k7QUFDbEMsa0NBQWtDLDJDQUFJO0FBQzdDO0FBQ0EsQ0FBQztBQUNNO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBLE1BQU0sa0RBQWM7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0wsR0FBRztBQUNIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvT3ZlcndyaXRlQ29uZmlybS9PdmVyd3JpdGVDb25maXJtU3RhdGUudHM/MTFlOSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19hd2FpdGVyID0gdGhpcyAmJiB0aGlzLl9fYXdhaXRlciB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAgIHJlc29sdmUodmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7XG4gICAgICB0cnkge1xuICAgICAgICBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJlamVjdChlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZWplY3QoZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHtcbiAgICAgIHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpO1xuICAgIH1cblxuICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgfSk7XG59O1xuXG5pbXBvcnQgeyBhdG9tIH0gZnJvbSBcImpvdGFpXCI7XG5pbXBvcnQgeyBqb3RhaVN0b3JlIH0gZnJvbSBcIi4uLy4uL2pvdGFpXCI7XG5leHBvcnQgY29uc3Qgb3ZlcndyaXRlQ29uZmlybVN0YXRlQXRvbSA9IGF0b20oe1xuICBhY3RpdmU6IGZhbHNlXG59KTtcbmV4cG9ydCBmdW5jdGlvbiBvcGVuQ29uZmlybU1vZGFsKHtcbiAgdGl0bGUsXG4gIGRlc2NyaXB0aW9uLFxuICBhY3Rpb25MYWJlbCxcbiAgY29sb3Jcbn0pIHtcbiAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICBqb3RhaVN0b3JlLnNldChvdmVyd3JpdGVDb25maXJtU3RhdGVBdG9tLCB7XG4gICAgICAgIGFjdGl2ZTogdHJ1ZSxcbiAgICAgICAgb25Db25maXJtOiAoKSA9PiByZXNvbHZlKHRydWUpLFxuICAgICAgICBvbkNsb3NlOiAoKSA9PiByZXNvbHZlKGZhbHNlKSxcbiAgICAgICAgb25SZWplY3Q6ICgpID0+IHJlc29sdmUoZmFsc2UpLFxuICAgICAgICB0aXRsZSxcbiAgICAgICAgZGVzY3JpcHRpb24sXG4gICAgICAgIGFjdGlvbkxhYmVsLFxuICAgICAgICBjb2xvclxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/OverwriteConfirm/OverwriteConfirmState.ts\n');
              }
            ),
            /***/
            "../../components/PasteChartDialog.tsx": (
              /*!*********************************************!*\
                !*** ../../components/PasteChartDialog.tsx ***!
                \*********************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "PasteChartDialog": () => (/* binding */ PasteChartDialog)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var open_color__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! open-color */ "../../../node_modules/open-color/open-color.json");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _analytics__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../analytics */ "../../analytics.ts");\n/* harmony import */ var _charts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../charts */ "../../charts.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _scene_export__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../scene/export */ "../../scene/export.ts");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./App */ "../../components/App.tsx");\n/* harmony import */ var _Dialog__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Dialog */ "../../components/Dialog.tsx");\n/* harmony import */ var _PasteChartDialog_scss__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./PasteChartDialog.scss */ "../../components/PasteChartDialog.scss");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator["throw"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n\n\n\n\n\n\n\n\n\nconst ChartPreviewBtn = props => {\n  const previewRef = (0,react__WEBPACK_IMPORTED_MODULE_2__.useRef)(null);\n  const [chartElements, setChartElements] = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(null);\n  (0,react__WEBPACK_IMPORTED_MODULE_2__.useLayoutEffect)(() => {\n    if (!props.spreadsheet) {\n      return;\n    }\n\n    const elements = (0,_charts__WEBPACK_IMPORTED_MODULE_4__.renderSpreadsheet)(props.chartType, props.spreadsheet, 0, 0);\n    setChartElements(elements);\n    let svg;\n    const previewNode = previewRef.current;\n\n    (() => __awaiter(void 0, void 0, void 0, function* () {\n      var _a;\n\n      svg = yield (0,_scene_export__WEBPACK_IMPORTED_MODULE_6__.exportToSvg)(elements, {\n        exportBackground: false,\n        viewBackgroundColor: open_color__WEBPACK_IMPORTED_MODULE_1__.white\n      }, null);\n      (_a = svg.querySelector(".style-fonts")) === null || _a === void 0 ? void 0 : _a.remove();\n      previewNode.replaceChildren();\n      previewNode.appendChild(svg);\n\n      if (props.selected) {\n        previewNode.parentNode.focus();\n      }\n    }))();\n\n    return () => {\n      previewNode.replaceChildren();\n    };\n  }, [props.spreadsheet, props.chartType, props.selected]);\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("button", Object.assign({\n    className: "ChartPreview",\n    onClick: () => {\n      if (chartElements) {\n        props.onClick(props.chartType, chartElements);\n      }\n    }\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n      ref: previewRef\n    })\n  }));\n};\n\nconst PasteChartDialog = ({\n  setAppState,\n  appState,\n  onClose\n}) => {\n  const {\n    onInsertElements\n  } = (0,_App__WEBPACK_IMPORTED_MODULE_7__.useApp)();\n  const handleClose = react__WEBPACK_IMPORTED_MODULE_2___default().useCallback(() => {\n    if (onClose) {\n      onClose();\n    }\n  }, [onClose]);\n\n  const handleChartClick = (chartType, elements) => {\n    onInsertElements(elements);\n    (0,_analytics__WEBPACK_IMPORTED_MODULE_3__.trackEvent)("magic", "chart", chartType);\n    setAppState({\n      currentChartType: chartType,\n      pasteDialog: {\n        shown: false,\n        data: null\n      }\n    });\n  };\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Dialog__WEBPACK_IMPORTED_MODULE_8__.Dialog, Object.assign({\n    size: "small",\n    onCloseRequest: handleClose,\n    title: (0,_i18n__WEBPACK_IMPORTED_MODULE_5__.t)("labels.pasteCharts"),\n    className: "PasteChartDialog",\n    autofocus: false\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n      className: "container"\n    }, {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(ChartPreviewBtn, {\n        chartType: "bar",\n        spreadsheet: appState.pasteDialog.data,\n        selected: appState.currentChartType === "bar",\n        onClick: handleChartClick\n      }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(ChartPreviewBtn, {\n        chartType: "line",\n        spreadsheet: appState.pasteDialog.data,\n        selected: appState.currentChartType === "line",\n        onClick: handleChartClick\n      })]\n    }))\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6680 characters]\n//# sourceURL=webpack-internal:///../../components/PasteChartDialog.tsx\n');
              }
            ),
            /***/
            "../../components/PenModeButton.tsx": (
              /*!******************************************!*\
                !*** ../../components/PenModeButton.tsx ***!
                \******************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "PenModeButton": () => (/* binding */ PenModeButton)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _ToolIcon_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ToolIcon.scss */ "../../components/ToolIcon.scss");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./icons */ "../../components/icons.tsx");\n\n\n\n\nconst DEFAULT_SIZE = "medium";\nconst PenModeButton = props => {\n  if (!props.penDetected) {\n    return null;\n  }\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("label", Object.assign({\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_2__["default"])("ToolIcon ToolIcon__penMode", `ToolIcon_size_${DEFAULT_SIZE}`, {\n      "is-mobile": props.isMobile\n    }),\n    title: `${props.title}`\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input", {\n      className: "ToolIcon_type_checkbox",\n      type: "checkbox",\n      name: props.name,\n      onChange: props.onChange,\n      checked: props.checked,\n      "aria-label": props.title\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: "ToolIcon__icon"\n    }, {\n      children: _icons__WEBPACK_IMPORTED_MODULE_3__.PenModeIcon\n    }))]\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9QZW5Nb2RlQnV0dG9uLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBK0Q7QUFDdEM7QUFDRDtBQUNjO0FBQ3RDO0FBQ087QUFDUDtBQUNBO0FBQ0E7O0FBRUEsU0FBUyx1REFBSztBQUNkLGVBQWUsZ0RBQUksZ0RBQWdELGFBQWE7QUFDaEY7QUFDQSxLQUFLO0FBQ0wsY0FBYyxZQUFZO0FBQzFCLEdBQUc7QUFDSCxlQUFlLHNEQUFJO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUssR0FBRyxzREFBSTtBQUNaO0FBQ0EsS0FBSztBQUNMLGdCQUFnQiwrQ0FBVztBQUMzQixLQUFLO0FBQ0wsR0FBRztBQUNIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvUGVuTW9kZUJ1dHRvbi50c3g/OTJkNiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IFwiLi9Ub29sSWNvbi5zY3NzXCI7XG5pbXBvcnQgY2xzeCBmcm9tIFwiY2xzeFwiO1xuaW1wb3J0IHsgUGVuTW9kZUljb24gfSBmcm9tIFwiLi9pY29uc1wiO1xuY29uc3QgREVGQVVMVF9TSVpFID0gXCJtZWRpdW1cIjtcbmV4cG9ydCBjb25zdCBQZW5Nb2RlQnV0dG9uID0gcHJvcHMgPT4ge1xuICBpZiAoIXByb3BzLnBlbkRldGVjdGVkKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gX2pzeHMoXCJsYWJlbFwiLCBPYmplY3QuYXNzaWduKHtcbiAgICBjbGFzc05hbWU6IGNsc3goXCJUb29sSWNvbiBUb29sSWNvbl9fcGVuTW9kZVwiLCBgVG9vbEljb25fc2l6ZV8ke0RFRkFVTFRfU0laRX1gLCB7XG4gICAgICBcImlzLW1vYmlsZVwiOiBwcm9wcy5pc01vYmlsZVxuICAgIH0pLFxuICAgIHRpdGxlOiBgJHtwcm9wcy50aXRsZX1gXG4gIH0sIHtcbiAgICBjaGlsZHJlbjogW19qc3goXCJpbnB1dFwiLCB7XG4gICAgICBjbGFzc05hbWU6IFwiVG9vbEljb25fdHlwZV9jaGVja2JveFwiLFxuICAgICAgdHlwZTogXCJjaGVja2JveFwiLFxuICAgICAgbmFtZTogcHJvcHMubmFtZSxcbiAgICAgIG9uQ2hhbmdlOiBwcm9wcy5vbkNoYW5nZSxcbiAgICAgIGNoZWNrZWQ6IHByb3BzLmNoZWNrZWQsXG4gICAgICBcImFyaWEtbGFiZWxcIjogcHJvcHMudGl0bGVcbiAgICB9KSwgX2pzeChcImRpdlwiLCBPYmplY3QuYXNzaWduKHtcbiAgICAgIGNsYXNzTmFtZTogXCJUb29sSWNvbl9faWNvblwiXG4gICAgfSwge1xuICAgICAgY2hpbGRyZW46IFBlbk1vZGVJY29uXG4gICAgfSkpXVxuICB9KSk7XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/PenModeButton.tsx\n');
              }
            ),
            /***/
            "../../components/Popover.tsx": (
              /*!************************************!*\
                !*** ../../components/Popover.tsx ***!
                \************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "Popover": () => (/* binding */ Popover)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _Popover_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Popover.scss */ "../../components/Popover.scss");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-dom */ "react-dom");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n\n\n\n\n\n\nconst Popover = ({\n  children,\n  left,\n  top,\n  onCloseRequest,\n  fitInViewport = false,\n  offsetLeft = 0,\n  offsetTop = 0,\n  viewportWidth = window.innerWidth,\n  viewportHeight = window.innerHeight\n}) => {\n  const popoverRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n  (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {\n    const container = popoverRef.current;\n\n    if (!container) {\n      return;\n    } // focus popover only if the caller didn\'t focus on something else nested\n    // within the popover, which should take precedence. Fixes cases\n    // like color picker listening to keydown events on containers nested\n    // in the popover.\n\n\n    if (!container.contains(document.activeElement)) {\n      container.focus();\n    }\n\n    const handleKeyDown = event => {\n      var _a, _b, _c;\n\n      if (event.key === _keys__WEBPACK_IMPORTED_MODULE_5__.KEYS.TAB) {\n        const focusableElements = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.queryFocusableElements)(container);\n        const {\n          activeElement\n        } = document;\n        const currentIndex = focusableElements.findIndex(element => element === activeElement);\n\n        if (activeElement === container) {\n          if (event.shiftKey) {\n            (_a = focusableElements[focusableElements.length - 1]) === null || _a === void 0 ? void 0 : _a.focus();\n          } else {\n            focusableElements[0].focus();\n          }\n\n          event.preventDefault();\n          event.stopImmediatePropagation();\n        } else if (currentIndex === 0 && event.shiftKey) {\n          (_b = focusableElements[focusableElements.length - 1]) === null || _b === void 0 ? void 0 : _b.focus();\n          event.preventDefault();\n          event.stopImmediatePropagation();\n        } else if (currentIndex === focusableElements.length - 1 && !event.shiftKey) {\n          (_c = focusableElements[0]) === null || _c === void 0 ? void 0 : _c.focus();\n          event.preventDefault();\n          event.stopImmediatePropagation();\n        }\n      }\n    };\n\n    container.addEventListener("keydown", handleKeyDown);\n    return () => container.removeEventListener("keydown", handleKeyDown);\n  }, []);\n  const lastInitializedPosRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null); // ensure the popover doesn\'t overflow the viewport\n\n  (0,react__WEBPACK_IMPORTED_MODULE_1__.useLayoutEffect)(() => {\n    var _a, _b;\n\n    if (fitInViewport && popoverRef.current && top != null && left != null) {\n      const container = popoverRef.current;\n      const {\n        width,\n        height\n      } = container.getBoundingClientRect(); // hack for StrictMode so this effect only runs once for\n      // the same top/left position, otherwise\n      // we\'d potentically reposition twice (once for viewport overflow)\n      // and once for top/left position afterwards\n\n      if (((_a = lastInitializedPosRef.current) === null || _a === void 0 ? void 0 : _a.top) === top && ((_b = lastInitializedPosRef.current) === null || _b === void 0 ? void 0 : _b.left) === left) {\n        return;\n      }\n\n      lastInitializedPosRef.current = {\n        top,\n        left\n      };\n\n      if (width >= viewportWidth) {\n        container.style.width = `${viewportWidth}px`;\n        container.style.left = "0px";\n        container.style.overflowX = "scroll";\n      } else if (left + width - offsetLeft > viewportWidth) {\n        container.style.left = `${viewportWidth - width - 10}px`;\n      } else {\n        container.style.left = `${left}px`;\n      }\n\n      if (height >= viewportHeight) {\n        container.style.height = `${viewportHeight - 20}px`;\n        container.style.top = "10px";\n        container.style.overflowY = "scroll";\n      } else if (top + height - offsetTop > viewportHeight) {\n        container.style.top = `${viewportHeight - height}px`;\n      } else {\n        container.style.top = `${top}px`;\n      }\n    }\n  }, [top, left, fitInViewport, viewportWidth, viewportHeight, offsetLeft, offsetTop]);\n  (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {\n    if (onCloseRequest) {\n      const handler = event => {\n        var _a;\n\n        if (!((_a = popoverRef.current) === null || _a === void 0 ? void 0 : _a.contains(event.target))) {\n          (0,react_dom__WEBPACK_IMPORTED_MODULE_3__.unstable_batchedUpdates)(() => onCloseRequest(event));\n        }\n      };\n\n      document.addEventListener("pointerdown", handler, false);\n      return () => document.removeEventListener("pointerdown", handler, false);\n    }\n  }, [onCloseRequest]);\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: "popover",\n    ref: popoverRef,\n    tabIndex: -1\n  }, {\n    children: children\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 7836 characters]\n//# sourceURL=webpack-internal:///../../components/Popover.tsx\n');
              }
            ),
            /***/
            "../../components/ProjectName.tsx": (
              /*!****************************************!*\
                !*** ../../components/ProjectName.tsx ***!
                \****************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "ProjectName": () => (/* binding */ ProjectName)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _TextInput_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./TextInput.scss */ "../../components/TextInput.scss");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _ProjectName_scss__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./ProjectName.scss */ "../../components/ProjectName.scss");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./App */ "../../components/App.tsx");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n\n\n\n\n\n\n\nconst ProjectName = props => {\n  const {\n    id\n  } = (0,_App__WEBPACK_IMPORTED_MODULE_5__.useExcalidrawContainer)();\n  const [fileName, setFileName] = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(props.value);\n\n  const handleBlur = event => {\n    if (!props.ignoreFocus) {\n      (0,_utils__WEBPACK_IMPORTED_MODULE_3__.focusNearestParent)(event.target);\n    }\n\n    const value = event.target.value;\n\n    if (value !== props.value) {\n      props.onChange(value);\n    }\n  };\n\n  const handleKeyDown = event => {\n    if (event.key === _keys__WEBPACK_IMPORTED_MODULE_6__.KEYS.ENTER) {\n      event.preventDefault();\n\n      if (event.nativeEvent.isComposing || event.keyCode === 229) {\n        return;\n      }\n\n      event.currentTarget.blur();\n    }\n  };\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n    className: "ProjectName"\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("label", Object.assign({\n      className: "ProjectName-label",\n      htmlFor: "filename"\n    }, {\n      children: `${props.label}${props.isNameEditable ? "" : ":"}`\n    })), props.isNameEditable ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input", {\n      type: "text",\n      className: "TextInput",\n      onBlur: handleBlur,\n      onKeyDown: handleKeyDown,\n      id: `${id}-filename`,\n      value: fileName,\n      onChange: event => setFileName(event.target.value)\n    }) : (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", Object.assign({\n      className: "TextInput TextInput--readonly",\n      id: `${id}-filename`\n    }, {\n      children: props.value\n    }))]\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9Qcm9qZWN0TmFtZS50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUErRDtBQUNyQztBQUNjO0FBQ007QUFDbEI7QUFDbUI7QUFDaEI7QUFDeEI7QUFDUDtBQUNBO0FBQ0EsSUFBSSxFQUFFLDREQUFzQjtBQUM1QixrQ0FBa0MsK0NBQVE7O0FBRTFDO0FBQ0E7QUFDQSxNQUFNLDBEQUFrQjtBQUN4Qjs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHNCQUFzQiw2Q0FBVTtBQUNoQzs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLFNBQVMsdURBQUs7QUFDZDtBQUNBLEdBQUc7QUFDSCxlQUFlLHNEQUFJO0FBQ25CO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsbUJBQW1CLFlBQVksRUFBRSxnQ0FBZ0M7QUFDakUsS0FBSywyQkFBMkIsc0RBQUk7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLEdBQUc7QUFDaEI7QUFDQTtBQUNBLEtBQUssSUFBSSxzREFBSTtBQUNiO0FBQ0EsYUFBYSxHQUFHO0FBQ2hCLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0giLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9Qcm9qZWN0TmFtZS50c3g/Y2U1OCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IFwiLi9UZXh0SW5wdXQuc2Nzc1wiO1xuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBmb2N1c05lYXJlc3RQYXJlbnQgfSBmcm9tIFwiLi4vdXRpbHNcIjtcbmltcG9ydCBcIi4vUHJvamVjdE5hbWUuc2Nzc1wiO1xuaW1wb3J0IHsgdXNlRXhjYWxpZHJhd0NvbnRhaW5lciB9IGZyb20gXCIuL0FwcFwiO1xuaW1wb3J0IHsgS0VZUyB9IGZyb20gXCIuLi9rZXlzXCI7XG5leHBvcnQgY29uc3QgUHJvamVjdE5hbWUgPSBwcm9wcyA9PiB7XG4gIGNvbnN0IHtcbiAgICBpZFxuICB9ID0gdXNlRXhjYWxpZHJhd0NvbnRhaW5lcigpO1xuICBjb25zdCBbZmlsZU5hbWUsIHNldEZpbGVOYW1lXSA9IHVzZVN0YXRlKHByb3BzLnZhbHVlKTtcblxuICBjb25zdCBoYW5kbGVCbHVyID0gZXZlbnQgPT4ge1xuICAgIGlmICghcHJvcHMuaWdub3JlRm9jdXMpIHtcbiAgICAgIGZvY3VzTmVhcmVzdFBhcmVudChldmVudC50YXJnZXQpO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuXG4gICAgaWYgKHZhbHVlICE9PSBwcm9wcy52YWx1ZSkge1xuICAgICAgcHJvcHMub25DaGFuZ2UodmFsdWUpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVLZXlEb3duID0gZXZlbnQgPT4ge1xuICAgIGlmIChldmVudC5rZXkgPT09IEtFWVMuRU5URVIpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgIGlmIChldmVudC5uYXRpdmVFdmVudC5pc0NvbXBvc2luZyB8fCBldmVudC5rZXlDb2RlID09PSAyMjkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBldmVudC5jdXJyZW50VGFyZ2V0LmJsdXIoKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIF9qc3hzKFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oe1xuICAgIGNsYXNzTmFtZTogXCJQcm9qZWN0TmFtZVwiXG4gIH0sIHtcbiAgICBjaGlsZHJlbjogW19qc3goXCJsYWJlbFwiLCBPYmplY3QuYXNzaWduKHtcbiAgICAgIGNsYXNzTmFtZTogXCJQcm9qZWN0TmFtZS1sYWJlbFwiLFxuICAgICAgaHRtbEZvcjogXCJmaWxlbmFtZVwiXG4gICAgfSwge1xuICAgICAgY2hpbGRyZW46IGAke3Byb3BzLmxhYmVsfSR7cHJvcHMuaXNOYW1lRWRpdGFibGUgPyBcIlwiIDogXCI6XCJ9YFxuICAgIH0pKSwgcHJvcHMuaXNOYW1lRWRpdGFibGUgPyBfanN4KFwiaW5wdXRcIiwge1xuICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICBjbGFzc05hbWU6IFwiVGV4dElucHV0XCIsXG4gICAgICBvbkJsdXI6IGhhbmRsZUJsdXIsXG4gICAgICBvbktleURvd246IGhhbmRsZUtleURvd24sXG4gICAgICBpZDogYCR7aWR9LWZpbGVuYW1lYCxcbiAgICAgIHZhbHVlOiBmaWxlTmFtZSxcbiAgICAgIG9uQ2hhbmdlOiBldmVudCA9PiBzZXRGaWxlTmFtZShldmVudC50YXJnZXQudmFsdWUpXG4gICAgfSkgOiBfanN4KFwic3BhblwiLCBPYmplY3QuYXNzaWduKHtcbiAgICAgIGNsYXNzTmFtZTogXCJUZXh0SW5wdXQgVGV4dElucHV0LS1yZWFkb25seVwiLFxuICAgICAgaWQ6IGAke2lkfS1maWxlbmFtZWBcbiAgICB9LCB7XG4gICAgICBjaGlsZHJlbjogcHJvcHMudmFsdWVcbiAgICB9KSldXG4gIH0pKTtcbn07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/ProjectName.tsx\n');
              }
            ),
            /***/
            "../../components/PublishLibrary.tsx": (
              /*!*******************************************!*\
                !*** ../../components/PublishLibrary.tsx ***!
                \*******************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var open_color__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! open-color */ "../../../node_modules/open-color/open-color.json");\n/* harmony import */ var _Dialog__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Dialog */ "../../components/Dialog.tsx");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _Trans__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Trans */ "../../components/Trans.tsx");\n/* harmony import */ var _packages_utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../packages/utils */ "../utils.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _data_blob__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../data/blob */ "../../data/blob.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _DialogActionButton__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./DialogActionButton */ "../../components/DialogActionButton.tsx");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./icons */ "../../components/icons.tsx");\n/* harmony import */ var _ToolButton__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./ToolButton */ "../../components/ToolButton.tsx");\n/* harmony import */ var _PublishLibrary_scss__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./PublishLibrary.scss */ "../../components/PublishLibrary.scss");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator["throw"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst LOCAL_STORAGE_KEY_PUBLISH_LIBRARY = "publish-library-data";\n\nconst savePublishLibDataToStorage = data => {\n  try {\n    localStorage.setItem(LOCAL_STORAGE_KEY_PUBLISH_LIBRARY, JSON.stringify(data));\n  } catch (error) {\n    // Unable to access window.localStorage\n    console.error(error);\n  }\n};\n\nconst importPublishLibDataFromStorage = () => {\n  try {\n    const data = localStorage.getItem(LOCAL_STORAGE_KEY_PUBLISH_LIBRARY);\n\n    if (data) {\n      return JSON.parse(data);\n    }\n  } catch (error) {\n    // Unable to access localStorage\n    console.error(error);\n  }\n\n  return null;\n};\n\nconst generatePreviewImage = libraryItems => __awaiter(void 0, void 0, void 0, function* () {\n  const MAX_ITEMS_PER_ROW = 6;\n  const BOX_SIZE = 128;\n  const BOX_PADDING = Math.round(BOX_SIZE / 16);\n  const BORDER_WIDTH = Math.max(Math.round(BOX_SIZE / 64), 2);\n  const rows = (0,_utils__WEBPACK_IMPORTED_MODULE_9__.chunk)(libraryItems, MAX_ITEMS_PER_ROW);\n  const canvas = document.createElement("canvas");\n  canvas.width = rows[0].length * BOX_SIZE + (rows[0].length + 1) * (BOX_PADDING * 2) - BOX_PADDING * 2;\n  canvas.height = rows.length * BOX_SIZE + (rows.length + 1) * (BOX_PADDING * 2) - BOX_PADDING * 2;\n  const ctx = canvas.getContext("2d");\n  ctx.fillStyle = open_color__WEBPACK_IMPORTED_MODULE_2__.white;\n  ctx.fillRect(0, 0, canvas.width, canvas.height); // draw items\n  // ---------------------------------------------------------------------------\n\n  for (const [index, item] of libraryItems.entries()) {\n    const itemCanvas = yield (0,_packages_utils__WEBPACK_IMPORTED_MODULE_6__.exportToCanvas)({\n      elements: item.elements,\n      files: null,\n      maxWidthOrHeight: BOX_SIZE\n    });\n    const {\n      width,\n      height\n    } = itemCanvas; // draw item\n    // -------------------------------------------------------------------------\n\n    const rowOffset = Math.floor(index / MAX_ITEMS_PER_ROW) * (BOX_SIZE + BOX_PADDING * 2);\n    const colOffset = index % MAX_ITEMS_PER_ROW * (BOX_SIZE + BOX_PADDING * 2);\n    ctx.drawImage(itemCanvas, colOffset + (BOX_SIZE - width) / 2 + BOX_PADDING, rowOffset + (BOX_SIZE - height) / 2 + BOX_PADDING); // draw item border\n    // -------------------------------------------------------------------------\n\n    ctx.lineWidth = BORDER_WIDTH;\n    ctx.strokeStyle = open_color__WEBPACK_IMPORTED_MODULE_2__.gray[4];\n    ctx.strokeRect(colOffset + BOX_PADDING / 2, rowOffset + BOX_PADDING / 2, BOX_SIZE + BOX_PADDING, BOX_SIZE + BOX_PADDING);\n  }\n\n  return yield (0,_data_blob__WEBPACK_IMPORTED_MODULE_8__.resizeImageFile)(new File([yield (0,_data_blob__WEBPACK_IMPORTED_MODULE_8__.canvasToBlob)(canvas)], "preview", {\n    type: _constants__WEBPACK_IMPORTED_MODULE_7__.MIME_TYPES.png\n  }), {\n    outputType: _constants__WEBPACK_IMPORTED_MODULE_7__.MIME_TYPES.jpg,\n    maxWidthOrHeight: 5000\n  });\n});\n\nconst SingleLibraryItem = ({\n  libItem,\n  appState,\n  index,\n  onChange,\n  onRemove\n}) => {\n  const svgRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n  const inputRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n  (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {\n    const node = svgRef.current;\n\n    if (!node) {\n      return;\n    }\n\n    (() => __awaiter(void 0, void 0, void 0, function* () {\n      const svg = yield (0,_packages_utils__WEBPACK_IMPORTED_MODULE_6__.exportToSvg)({\n        elements: libItem.elements,\n        appState: Object.assign(Object.assign({}, appState), {\n          viewBackgroundColor: open_color__WEBPACK_IMPORTED_MODULE_2__.white,\n          exportBackground: true\n        }),\n        files: null\n      });\n      node.innerHTML = svg.outerHTML;\n    }))();\n  }, [libItem.elements, appState]);\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n    className: "single-library-item"\n  }, {\n    children: [libItem.status === "published" && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", Object.assign({\n      className: "single-library-item-status"\n    }, {\n      children: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("labels.statusPublished")\n    })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n      ref: svgRef,\n      className: "single-library-item__svg"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ToolButton__WEBPACK_IMPORTED_MODULE_12__.ToolButton, {\n      "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("buttons.remove"),\n      type: "button",\n      icon: _icons__WEBPACK_IMPORTED_MODULE_11__.CloseIcon,\n      className: "single-library-item--remove",\n      onClick: onRemove.bind(null, libItem.id),\n      title: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("buttons.remove")\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n      style: {\n        display: "flex",\n        margin: "0.8rem 0",\n        width: "100%",\n        fontSize: "14px",\n        fontWeight: 500,\n        flexDirection: "column"\n      }\n    }, {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("label", Object.assign({\n        style: {\n          display: "flex",\n          justifyContent: "space-between",\n          flexDirection: "column"\n        }\n      }, {\n        children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n          style: {\n            padding: "0.5em 0"\n          }\n        }, {\n          children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", Object.assign({\n            style: {\n              fontWeight: 500,\n              color: open_color__WEBPACK_IMPORTED_MODULE_2__.gray[6]\n            }\n          }, {\n            children: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("publishDialog.itemName")\n          })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", Object.assign({\n            "aria-hidden": "true",\n            className: "required"\n          }, {\n            children: "*"\n          }))]\n        })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input", {\n          type: "text",\n          ref: inputRef,\n          style: {\n            width: "80%",\n            padding: "0.2rem"\n          },\n          defaultValue: libItem.name,\n          placeholder: "Item name",\n          onChange: event => {\n            onChange(event.target.value, index);\n          }\n        })]\n      })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", Object.assign({\n        className: "error"\n      }, {\n        children: libItem.error\n      }))]\n    }))]\n  }));\n};\n\nconst PublishLibrary = ({\n  onClose,\n  libraryItems,\n  appState,\n  onSuccess,\n  onError,\n  updateItemsInStorage,\n  onRemove\n}) => {\n  const [libraryData, setLibraryData] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({\n    authorName: "",\n    githubHandle: "",\n    name: "",\n    description: "",\n    twitterHandle: "",\n    website: ""\n  });\n  const [isSubmitting, setIsSubmitting] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n  (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {\n    const data = importPublishLibDataFromStorage();\n\n    if (data) {\n      setLibraryData(data);\n    }\n  }, []);\n  const [clonedLibItems, setClonedLibItems] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(libraryItems.slice());\n  (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {\n    setClonedLibItems(libraryItems.slice());\n  }, [libraryItems]);\n\n  const onInputChange = event => {\n    setLibraryData(Object.assign(Object.assign({}, libraryData), {\n      [event.target.name]: event.target.value\n    }));\n  };\n\n  const onSubmit = event => __awaiter(void 0, void 0, void 0, function* () {\n    event.preventDefault();\n    setIsSubmitting(true);\n    const erroredLibItems = [];\n    let isError = false;\n    clonedLibItems.forEach(libItem => {\n      let error = "";\n\n      if (!libItem.name) {\n        error = (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("publishDialog.errors.required");\n        isError = true;\n      }\n\n      erroredLibItems.push(Object.assign(Object.assign({}, libItem), {\n        error\n      }));\n    });\n\n    if (isError) {\n      setClonedLibItems(erroredLibItems);\n      setIsSubmitting(false);\n      return;\n    }\n\n    const previewImage = yield generatePreviewImage(clonedLibItems);\n    const libContent = {\n      type: _constants__WEBPACK_IMPORTED_MODULE_7__.EXPORT_DATA_TYPES.excalidrawLibrary,\n      version: _constants__WEBPACK_IMPORTED_MODULE_7__.VERSIONS.excalidrawLibrary,\n      source: _constants__WEBPACK_IMPORTED_MODULE_7__.EXPORT_SOURCE,\n      libraryItems: clonedLibItems\n    };\n    const content = JSON.stringify(libContent, null, 2);\n    const lib = new Blob([content], {\n      type: "application/json"\n    });\n    const formData = new FormData();\n    formData.append("excalidrawLib", lib);\n    formData.append("previewImage", previewImage);\n    formData.append("previewImageType", previewImage.type);\n    formData.append("title", libraryData.name);\n    formData.append("authorName", libraryData.authorName);\n    formData.append("githubHandle", libraryData.githubHandle);\n    formData.append("name", libraryData.name);\n    formData.append("description", libraryData.description);\n    formData.append("twitterHandle", libraryData.twitterHandle);\n    formData.append("website", libraryData.website);\n    fetch(`${"https://us-central1-excalidraw-room-persistence.cloudfunctions.net/libraries"}/submit`, {\n      method: "post",\n      body: formData\n    }).then(response => {\n      if (response.ok) {\n        return response.json().then(({\n          url\n        }) => {\n          // flush data from local storage\n          localStorage.removeItem(LOCAL_STORAGE_KEY_PUBLISH_LIBRARY);\n          onSuccess({\n            url,\n            authorName: libraryData.authorName,\n            items: clonedLibItems\n          });\n        });\n      }\n\n      return response.json().catch(() => {\n        throw new Error(response.statusText || "something went wrong");\n      }).then(error => {\n        throw new Error(error.message || response.statusText || "something went wrong");\n      });\n    }, err => {\n      console.error(err);\n      onError(err);\n      setIsSubmitting(false);\n    }).catch(err => {\n      console.error(err);\n      onError(err);\n      setIsSubmitting(false);\n    });\n  });\n\n  const renderLibraryItems = () => {\n    const items = [];\n    clonedLibItems.forEach((libItem, index) => {\n      items.push((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n        className: "single-library-item-wrapper"\n      }, {\n        children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(SingleLibraryItem, {\n          libItem: libItem,\n          appState: appState,\n          index: index,\n          onChange: (val, index) => {\n            const items = clonedLibItems.slice();\n            items[index].name = val;\n            setClonedLibItems(items);\n          },\n          onRemove: onRemove\n        })\n      }), index));\n    });\n    return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: "selected-library-items"\n    }, {\n      children: items\n    }));\n  };\n\n  const onDialogClose = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(() => {\n    updateItemsInStorage(clonedLibItems);\n    savePublishLibDataToStorage(libraryData);\n    onClose();\n  }, [clonedLibItems, onClose, updateItemsInStorage, libraryData]);\n  const shouldRenderForm = !!libraryItems.length;\n  const containsPublishedItems = libraryItems.some(item => item.status === "published");\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Dialog__WEBPACK_IMPORTED_MODULE_3__.Dialog, Object.assign({\n    onCloseRequest: onDialogClose,\n    title: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("publishDialog.title"),\n    className: "publish-library"\n  }, {\n    children: shouldRenderForm ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("form", Object.assign({\n      onSubmit: onSubmit\n    }, {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n        className: "publish-library-note"\n      }, {\n        children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Trans__WEBPACK_IMPORTED_MODULE_5__["default"], {\n          i18nKey: "publishDialog.noteDescription",\n          link: el => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("a", Object.assign({\n            href: "https://libraries.excalidraw.com",\n            target: "_blank",\n            rel: "noopener noreferrer"\n          }, {\n            children: el\n          }))\n        })\n      })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", Object.assign({\n        className: "publish-library-note"\n      }, {\n        children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Trans__WEBPACK_IMPORTED_MODULE_5__["default"], {\n          i18nKey: "publishDialog.noteGuidelines",\n          link: el => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("a", Object.assign({\n            href: "https://github.com/excalidraw/excalidraw-libraries#guidelines",\n            target: "_blank",\n            rel: "noopener noreferrer"\n          }, {\n            children: el\n          }))\n        })\n      })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n        className: "publish-library-note"\n      }, {\n        children: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("publishDialog.noteItems")\n      })), containsPublishedItems && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", Object.assign({\n        className: "publish-library-note publish-library-warning"\n      }, {\n        children: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("publishDialog.republishWarning")\n      })), renderLibraryItems(), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n        className: "publish-library__fields"\n      }, {\n        children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("label", {\n          children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", {\n            children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", {\n              children: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("publishDialog.libraryName")\n            }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", Object.assign({\n              "aria-hidden": "true",\n              className: "required"\n            }, {\n              children: "*"\n            }))]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input", {\n            type: "text",\n            name: "name",\n            required: true,\n            value: libraryData.name,\n            onChange: onInputChange,\n            placeholder: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("publishDialog.placeholder.libraryName")\n          })]\n        }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("label", Object.assign({\n          style: {\n            alignItems: "flex-start"\n          }\n        }, {\n          children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", {\n            children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", {\n              children: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("publishDialog.libraryDesc")\n            }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", Object.assign({\n              "aria-hidden": "true",\n              className: "required"\n            }, {\n              children: "*"\n            }))]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("textarea", {\n            name: "description",\n            rows: 4,\n            required: true,\n            value: libraryData.description,\n            onChange: onInputChange,\n            placeholder: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("publishDialog.placeholder.libraryDesc")\n          })]\n        })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("label", {\n          children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", {\n            children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", {\n              children: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("publishDialog.authorName")\n            }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", Object.assign({\n              "aria-hidden": "true",\n              className: "required"\n            }, {\n              children: "*"\n            }))]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input", {\n            type: "text",\n            name: "authorName",\n            required: true,\n            value: libraryData.authorName,\n            onChange: onInputChange,\n            placeholder: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("publishDialog.placeholder.authorName")\n          })]\n        }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("label", {\n          children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", {\n            children: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("publishDialog.githubUsername")\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input", {\n            type: "text",\n            name: "githubHandle",\n            value: libraryData.githubHandle,\n            onChange: onInputChange,\n            placeholder: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("publishDialog.placeholder.githubHandle")\n          })]\n        }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("label", {\n          children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", {\n            children: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("publishDialog.twitterUsername")\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input", {\n            type: "text",\n            name: "twitterHandle",\n            value: libraryData.twitterHandle,\n            onChange: onInputChange,\n            placeholder: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("publishDialog.placeholder.twitterHandle")\n          })]\n        }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("label", {\n          children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", {\n            children: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("publishDialog.website")\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input", {\n            type: "text",\n            name: "website",\n            pattern: "https?://.+",\n            title: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("publishDialog.errors.website"),\n            value: libraryData.website,\n            onChange: onInputChange,\n            placeholder: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("publishDialog.placeholder.website")\n          })]\n        }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", Object.assign({\n          className: "publish-library-note"\n        }, {\n          children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Trans__WEBPACK_IMPORTED_MODULE_5__["default"], {\n            i18nKey: "publishDialog.noteLicense",\n            link: el => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("a", Object.assign({\n              href: "https://github.com/excalidraw/excalidraw-libraries/blob/main/LICENSE",\n              target: "_blank",\n              rel: "noopener noreferrer"\n            }, {\n              children: el\n            }))\n          })\n        }))]\n      })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n        className: "publish-library__buttons"\n      }, {\n        children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_DialogActionButton__WEBPACK_IMPORTED_MODULE_10__["default"], {\n          label: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("buttons.cancel"),\n          onClick: onDialogClose,\n          "data-testid": "cancel-clear-canvas-button"\n        }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_DialogActionButton__WEBPACK_IMPORTED_MODULE_10__["default"], {\n          type: "submit",\n          label: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("buttons.submit"),\n          actionType: "primary",\n          isLoading: isSubmitting\n        })]\n      }))]\n    })) : (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("p", Object.assign({\n      style: {\n        padding: "1em",\n        textAlign: "center",\n        fontWeight: 500\n      }\n    }, {\n      children: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("publishDialog.atleastOneLibItem")\n    }))\n  }));\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (PublishLibrary);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 30380 characters]\n//# sourceURL=webpack-internal:///../../components/PublishLibrary.tsx\n');
              }
            ),
            /***/
            "../../components/RadioGroup.tsx": (
              /*!***************************************!*\
                !*** ../../components/RadioGroup.tsx ***!
                \***************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "RadioGroup": () => (/* binding */ RadioGroup)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _RadioGroup_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./RadioGroup.scss */ "../../components/RadioGroup.scss");\n\n\n\nconst RadioGroup = function ({\n  onChange,\n  value,\n  choices,\n  name\n}) {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: "RadioGroup"\n  }, {\n    children: choices.map(choice => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__["default"])("RadioGroup__choice", {\n        active: choice.value === value\n      })\n    }, {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input", {\n        name: name,\n        type: "radio",\n        checked: choice.value === value,\n        onChange: () => onChange(choice.value)\n      }), choice.label]\n    }), choice.label))\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9SYWRpb0dyb3VwLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUErRDtBQUN2QztBQUNHO0FBQ3BCO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsU0FBUyxzREFBSTtBQUNiO0FBQ0EsR0FBRztBQUNILG9DQUFvQyx1REFBSztBQUN6QyxpQkFBaUIsZ0RBQUk7QUFDckI7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMLGlCQUFpQixzREFBSTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0wsR0FBRztBQUNIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvUmFkaW9Hcm91cC50c3g/MDdhMyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IGNsc3ggZnJvbSBcImNsc3hcIjtcbmltcG9ydCBcIi4vUmFkaW9Hcm91cC5zY3NzXCI7XG5leHBvcnQgY29uc3QgUmFkaW9Hcm91cCA9IGZ1bmN0aW9uICh7XG4gIG9uQ2hhbmdlLFxuICB2YWx1ZSxcbiAgY2hvaWNlcyxcbiAgbmFtZVxufSkge1xuICByZXR1cm4gX2pzeChcImRpdlwiLCBPYmplY3QuYXNzaWduKHtcbiAgICBjbGFzc05hbWU6IFwiUmFkaW9Hcm91cFwiXG4gIH0sIHtcbiAgICBjaGlsZHJlbjogY2hvaWNlcy5tYXAoY2hvaWNlID0+IF9qc3hzKFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oe1xuICAgICAgY2xhc3NOYW1lOiBjbHN4KFwiUmFkaW9Hcm91cF9fY2hvaWNlXCIsIHtcbiAgICAgICAgYWN0aXZlOiBjaG9pY2UudmFsdWUgPT09IHZhbHVlXG4gICAgICB9KVxuICAgIH0sIHtcbiAgICAgIGNoaWxkcmVuOiBbX2pzeChcImlucHV0XCIsIHtcbiAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgdHlwZTogXCJyYWRpb1wiLFxuICAgICAgICBjaGVja2VkOiBjaG9pY2UudmFsdWUgPT09IHZhbHVlLFxuICAgICAgICBvbkNoYW5nZTogKCkgPT4gb25DaGFuZ2UoY2hvaWNlLnZhbHVlKVxuICAgICAgfSksIGNob2ljZS5sYWJlbF1cbiAgICB9KSwgY2hvaWNlLmxhYmVsKSlcbiAgfSkpO1xufTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/RadioGroup.tsx\n');
              }
            ),
            /***/
            "../../components/Section.tsx": (
              /*!************************************!*\
                !*** ../../components/Section.tsx ***!
                \************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "Section": () => (/* binding */ Section)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./App */ "../../components/App.tsx");\nvar __rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n\n  if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\nconst Section = _a => {\n  var {\n    heading,\n    children\n  } = _a,\n      props = __rest(_a, ["heading", "children"]);\n\n  const {\n    id\n  } = (0,_App__WEBPACK_IMPORTED_MODULE_3__.useExcalidrawContainer)();\n\n  const header = (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("h2", Object.assign({\n    className: "visually-hidden",\n    id: `${id}-${heading}-title`\n  }, {\n    children: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)(`headings.${heading}`)\n  }));\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("section", Object.assign({}, props, {\n    "aria-labelledby": `${id}-${heading}-title`\n  }, {\n    children: typeof children === "function" ? children(header) : (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n      children: [header, children]\n    })\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9TZWN0aW9uLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsYUFBYSxTQUFJLElBQUksU0FBSTtBQUN6Qjs7QUFFQTs7QUFFQSw0SEFBNEgsY0FBYztBQUMxSTtBQUNBO0FBQ0E7QUFDQTs7QUFFc0Y7QUFDNUQ7QUFDRTtBQUNtQjtBQUN4QztBQUNQO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjs7QUFFQTtBQUNBO0FBQ0EsSUFBSSxFQUFFLDREQUFzQjs7QUFFNUIsaUJBQWlCLHNEQUFJO0FBQ3JCO0FBQ0EsV0FBVyxHQUFHLEdBQUcsUUFBUTtBQUN6QixHQUFHO0FBQ0gsY0FBYyx3Q0FBQyxhQUFhLFFBQVE7QUFDcEMsR0FBRzs7QUFFSCxTQUFTLHNEQUFJLDRCQUE0QjtBQUN6QywwQkFBMEIsR0FBRyxHQUFHLFFBQVE7QUFDeEMsR0FBRztBQUNILGtFQUFrRSx1REFBSyxDQUFDLHVEQUFTO0FBQ2pGO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSCIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL1NlY3Rpb24udHN4PzNhZWUiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fcmVzdCA9IHRoaXMgJiYgdGhpcy5fX3Jlc3QgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgdmFyIHQgPSB7fTtcblxuICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMCkgdFtwXSA9IHNbcF07XG5cbiAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKSBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKSB0W3BbaV1dID0gc1twW2ldXTtcbiAgfVxuICByZXR1cm4gdDtcbn07XG5cbmltcG9ydCB7IGpzeCBhcyBfanN4LCBGcmFnbWVudCBhcyBfRnJhZ21lbnQsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHQgfSBmcm9tIFwiLi4vaTE4blwiO1xuaW1wb3J0IHsgdXNlRXhjYWxpZHJhd0NvbnRhaW5lciB9IGZyb20gXCIuL0FwcFwiO1xuZXhwb3J0IGNvbnN0IFNlY3Rpb24gPSBfYSA9PiB7XG4gIHZhciB7XG4gICAgaGVhZGluZyxcbiAgICBjaGlsZHJlblxuICB9ID0gX2EsXG4gICAgICBwcm9wcyA9IF9fcmVzdChfYSwgW1wiaGVhZGluZ1wiLCBcImNoaWxkcmVuXCJdKTtcblxuICBjb25zdCB7XG4gICAgaWRcbiAgfSA9IHVzZUV4Y2FsaWRyYXdDb250YWluZXIoKTtcblxuICBjb25zdCBoZWFkZXIgPSBfanN4KFwiaDJcIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgY2xhc3NOYW1lOiBcInZpc3VhbGx5LWhpZGRlblwiLFxuICAgIGlkOiBgJHtpZH0tJHtoZWFkaW5nfS10aXRsZWBcbiAgfSwge1xuICAgIGNoaWxkcmVuOiB0KGBoZWFkaW5ncy4ke2hlYWRpbmd9YClcbiAgfSkpO1xuXG4gIHJldHVybiBfanN4KFwic2VjdGlvblwiLCBPYmplY3QuYXNzaWduKHt9LCBwcm9wcywge1xuICAgIFwiYXJpYS1sYWJlbGxlZGJ5XCI6IGAke2lkfS0ke2hlYWRpbmd9LXRpdGxlYFxuICB9LCB7XG4gICAgY2hpbGRyZW46IHR5cGVvZiBjaGlsZHJlbiA9PT0gXCJmdW5jdGlvblwiID8gY2hpbGRyZW4oaGVhZGVyKSA6IF9qc3hzKF9GcmFnbWVudCwge1xuICAgICAgY2hpbGRyZW46IFtoZWFkZXIsIGNoaWxkcmVuXVxuICAgIH0pXG4gIH0pKTtcbn07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/Section.tsx\n');
              }
            ),
            /***/
            "../../components/Sidebar/Sidebar.tsx": (
              /*!********************************************!*\
                !*** ../../components/Sidebar/Sidebar.tsx ***!
                \********************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "Sidebar": () => (/* binding */ Sidebar),\n/* harmony export */   "SidebarInner": () => (/* binding */ SidebarInner),\n/* harmony export */   "isSidebarDockedAtom": () => (/* binding */ isSidebarDockedAtom)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _Island__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! .././Island */ "../../components/Island.tsx");\n/* harmony import */ var jotai__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! jotai */ "../../../node_modules/jotai/esm/index.mjs");\n/* harmony import */ var _jotai__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../jotai */ "../../jotai.ts");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./common */ "../../components/Sidebar/common.ts");\n/* harmony import */ var _SidebarHeader__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./SidebarHeader */ "../../components/Sidebar/SidebarHeader.tsx");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../App */ "../../components/App.tsx");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../utils */ "../../utils.ts");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../keys */ "../../keys.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../constants */ "../../constants.ts");\n/* harmony import */ var _SidebarTrigger__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./SidebarTrigger */ "../../components/Sidebar/SidebarTrigger.tsx");\n/* harmony import */ var _SidebarTabTriggers__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./SidebarTabTriggers */ "../../components/Sidebar/SidebarTabTriggers.tsx");\n/* harmony import */ var _SidebarTabTrigger__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./SidebarTabTrigger */ "../../components/Sidebar/SidebarTabTrigger.tsx");\n/* harmony import */ var _SidebarTabs__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./SidebarTabs */ "../../components/Sidebar/SidebarTabs.tsx");\n/* harmony import */ var _SidebarTab__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./SidebarTab */ "../../components/Sidebar/SidebarTab.tsx");\n/* harmony import */ var _context_ui_appState__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../context/ui-appState */ "../../context/ui-appState.ts");\n/* harmony import */ var _hooks_useOutsideClick__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../hooks/useOutsideClick */ "../../hooks/useOutsideClick.ts");\n/* harmony import */ var _Sidebar_scss__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./Sidebar.scss */ "../../components/Sidebar/Sidebar.scss");\nvar __rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n\n  if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Flags whether the currently rendered Sidebar is docked or not, for use\n * in upstream components that need to act on this (e.g. LayerUI to shift the\n * UI). We use an atom because of potential host app sidebars (for the default\n * sidebar we could just read from appState.defaultSidebarDockedPreference).\n *\n * Since we can only render one Sidebar at a time, we can use a simple flag.\n */\n\nconst isSidebarDockedAtom = (0,jotai__WEBPACK_IMPORTED_MODULE_19__.atom)(false);\nconst SidebarInner = (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)((_a, ref) => {\n  var {\n    name,\n    children,\n    onDock,\n    docked,\n    className\n  } = _a,\n      rest = __rest(_a, ["name", "children", "onDock", "docked", "className"]);\n\n  if ( true && onDock && docked == null) {\n    console.warn("Sidebar: `docked` must be set when `onDock` is supplied for the sidebar to be user-dockable. To hide this message, either pass `docked` or remove `onDock`");\n  }\n\n  const setAppState = (0,_App__WEBPACK_IMPORTED_MODULE_7__.useExcalidrawSetAppState)();\n  const setIsSidebarDockedAtom = (0,jotai__WEBPACK_IMPORTED_MODULE_19__.useSetAtom)(isSidebarDockedAtom, _jotai__WEBPACK_IMPORTED_MODULE_3__.jotaiScope);\n  (0,react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect)(() => {\n    setIsSidebarDockedAtom(!!docked);\n    return () => {\n      setIsSidebarDockedAtom(false);\n    };\n  }, [setIsSidebarDockedAtom, docked]);\n  const headerPropsRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)({});\n\n  headerPropsRef.current.onCloseRequest = () => {\n    setAppState({\n      openSidebar: null\n    });\n  };\n\n  headerPropsRef.current.onDock = isDocked => onDock === null || onDock === void 0 ? void 0 : onDock(isDocked); // renew the ref object if the following props change since we want to\n  // rerender. We can\'t pass down as component props manually because\n  // the <Sidebar.Header/> can be rendered upstream.\n\n\n  headerPropsRef.current = (0,_utils__WEBPACK_IMPORTED_MODULE_8__.updateObject)(headerPropsRef.current, {\n    docked,\n    // explicit prop to rerender on update\n    shouldRenderDockButton: !!onDock && docked != null\n  });\n  const islandRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n  (0,react__WEBPACK_IMPORTED_MODULE_0__.useImperativeHandle)(ref, () => {\n    return islandRef.current;\n  });\n  const device = (0,_App__WEBPACK_IMPORTED_MODULE_7__.useDevice)();\n  const closeLibrary = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(() => {\n    const isDialogOpen = !!document.querySelector(".Dialog"); // Prevent closing if any dialog is open\n\n    if (isDialogOpen) {\n      return;\n    }\n\n    setAppState({\n      openSidebar: null\n    });\n  }, [setAppState]);\n  (0,_hooks_useOutsideClick__WEBPACK_IMPORTED_MODULE_17__.useOutsideClick)(islandRef, (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(event => {\n    // If click on the library icon, do nothing so that LibraryButton\n    // can toggle library menu\n    if (event.target.closest(".sidebar-trigger")) {\n      return;\n    }\n\n    if (!docked || !device.editor.canFitSidebar) {\n      closeLibrary();\n    }\n  }, [closeLibrary, docked, device.editor.canFitSidebar]));\n  (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n    const handleKeyDown = event => {\n      if (event.key === _keys__WEBPACK_IMPORTED_MODULE_9__.KEYS.ESCAPE && (!docked || !device.editor.canFitSidebar)) {\n        closeLibrary();\n      }\n    };\n\n    document.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_10__.EVENT.KEYDOWN, handleKeyDown);\n    return () => {\n      document.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_10__.EVENT.KEYDOWN, handleKeyDown);\n    };\n  }, [closeLibrary, docked, device.editor.canFitSidebar]);\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_Island__WEBPACK_IMPORTED_MODULE_2__.Island, Object.assign({}, rest, {\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_6__["default"])("sidebar", {\n      "sidebar--docked": docked\n    }, className),\n    ref: islandRef\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_common__WEBPACK_IMPORTED_MODULE_4__.SidebarPropsContext.Provider, Object.assign({\n      value: headerPropsRef.current\n    }, {\n      children: children\n    }))\n  }));\n});\nSidebarInner.displayName = "SidebarInner";\nconst Sidebar = Object.assign((0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)((props, ref) => {\n  var _a;\n\n  const appState = (0,_context_ui_appState__WEBPACK_IMPORTED_MODULE_16__.useUIAppState)();\n  const {\n    onStateChange\n  } = props;\n  const refPrevOpenSidebar = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(appState.openSidebar);\n  (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n    var _a, _b, _c, _d, _e;\n\n    if ( // closing sidebar\n    (!appState.openSidebar && ((_a = refPrevOpenSidebar === null || refPrevOpenSidebar === void 0 ? void 0 : refPrevOpenSidebar.current) === null || _a === void 0 ? void 0 : _a.name) === props.name || // opening current sidebar\n    ((_b = appState.openSidebar) === null || _b === void 0 ? void 0 : _b.name) === props.name && ((_c = refPrevOpenSidebar === null || refPrevOpenSidebar === void 0 ? void 0 : refPrevOpenSidebar.current) === null || _c === void 0 ? void 0 : _c.name) !== props.name || // switching tabs or switching to a different sidebar\n    ((_d = refPrevOpenSidebar.current) === null || _d === void 0 ? void 0 : _d.name) === props.name) && appState.openSidebar !== refPrevOpenSidebar.current) {\n      onStateChange === null || onStateChange === void 0 ? void 0 : onStateChange(((_e = appState.openSidebar) === null || _e === void 0 ? void 0 : _e.name) !== props.name ? null : appState.openSidebar);\n    }\n\n    refPrevOpenSidebar.current = appState.openSidebar;\n  }, [appState.openSidebar, onStateChange, props.name]);\n  const [mounted, setMounted] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n  (0,react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect)(() => {\n    setMounted(true);\n    return () => setMounted(false);\n  }, []); // We want to render in the next tick (hence `mounted` flag) so that it\'s\n  // guaranteed to happen after unmount of the previous sidebar (in case the\n  // previous sidebar is mounted after the next one). This is necessary to\n  // prevent flicker of subcomponents that support fallbacks\n  // (e.g. SidebarHeader). This is because we\'re using flags to determine\n  // whether prefer the fallback component or not (otherwise both will render\n  // initially), and the flag won\'t be reset in time if the unmount order\n  // it not correct.\n  //\n  // Alternative, and more general solution would be to namespace the fallback\n  // HoC so that state is not shared between subcomponents when the wrapping\n  // component is of the same type (e.g. Sidebar -> SidebarHeader).\n\n  const shouldRender = mounted && ((_a = appState.openSidebar) === null || _a === void 0 ? void 0 : _a.name) === props.name;\n\n  if (!shouldRender) {\n    return null;\n  }\n\n  return (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(SidebarInner, Object.assign({}, props, {\n    ref: ref,\n    key: props.name\n  }));\n}), {\n  Header: _SidebarHeader__WEBPACK_IMPORTED_MODULE_5__.SidebarHeader,\n  TabTriggers: _SidebarTabTriggers__WEBPACK_IMPORTED_MODULE_12__.SidebarTabTriggers,\n  TabTrigger: _SidebarTabTrigger__WEBPACK_IMPORTED_MODULE_13__.SidebarTabTrigger,\n  Tabs: _SidebarTabs__WEBPACK_IMPORTED_MODULE_14__.SidebarTabs,\n  Tab: _SidebarTab__WEBPACK_IMPORTED_MODULE_15__.SidebarTab,\n  Trigger: _SidebarTrigger__WEBPACK_IMPORTED_MODULE_11__.SidebarTrigger\n});\nSidebar.displayName = "Sidebar";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 12772 characters]\n//# sourceURL=webpack-internal:///../../components/Sidebar/Sidebar.tsx\n');
              }
            ),
            /***/
            "../../components/Sidebar/SidebarHeader.tsx": (
              /*!**************************************************!*\
                !*** ../../components/Sidebar/SidebarHeader.tsx ***!
                \**************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "SidebarHeader": () => (/* binding */ SidebarHeader)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../i18n */ "../../i18n.ts");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../App */ "../../components/App.tsx");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./common */ "../../components/Sidebar/common.ts");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../icons */ "../../components/icons.tsx");\n/* harmony import */ var _Tooltip__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../Tooltip */ "../../components/Tooltip.tsx");\n/* harmony import */ var _Button__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../Button */ "../../components/Button.tsx");\n\n\n\n\n\n\n\n\n\nconst SidebarHeader = ({\n  children,\n  className\n}) => {\n  const device = (0,_App__WEBPACK_IMPORTED_MODULE_4__.useDevice)();\n  const props = (0,react__WEBPACK_IMPORTED_MODULE_2__.useContext)(_common__WEBPACK_IMPORTED_MODULE_5__.SidebarPropsContext);\n  const renderDockButton = !!(device.editor.canFitSidebar && props.shouldRenderDockButton);\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__["default"])("sidebar__header", className),\n    "data-testid": "sidebar-header"\n  }, {\n    children: [children, (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n      className: "sidebar__header__buttons"\n    }, {\n      children: [renderDockButton && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Tooltip__WEBPACK_IMPORTED_MODULE_7__.Tooltip, Object.assign({\n        label: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("labels.sidebarLock")\n      }, {\n        children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Button__WEBPACK_IMPORTED_MODULE_8__.Button, Object.assign({\n          onSelect: () => {\n            var _a;\n\n            return (_a = props.onDock) === null || _a === void 0 ? void 0 : _a.call(props, !props.docked);\n          },\n          selected: !!props.docked,\n          className: "sidebar__dock",\n          "data-testid": "sidebar-dock",\n          "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("labels.sidebarLock")\n        }, {\n          children: _icons__WEBPACK_IMPORTED_MODULE_6__.PinIcon\n        }))\n      })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Button__WEBPACK_IMPORTED_MODULE_8__.Button, Object.assign({\n        "data-testid": "sidebar-close",\n        className: "sidebar__close",\n        onSelect: props.onCloseRequest,\n        "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("buttons.close")\n      }, {\n        children: _icons__WEBPACK_IMPORTED_MODULE_6__.CloseIcon\n      }))]\n    }))]\n  }));\n};\nSidebarHeader.displayName = "SidebarHeader";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9TaWRlYmFyL1NpZGViYXJIZWFkZXIudHN4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUErRDtBQUN2QztBQUNXO0FBQ0o7QUFDSTtBQUNZO0FBQ0Q7QUFDVDtBQUNGO0FBQzVCO0FBQ1A7QUFDQTtBQUNBLENBQUM7QUFDRCxpQkFBaUIsK0NBQVM7QUFDMUIsZ0JBQWdCLGlEQUFVLENBQUMsd0RBQW1CO0FBQzlDO0FBQ0EsU0FBUyx1REFBSztBQUNkLGVBQWUsZ0RBQUk7QUFDbkI7QUFDQSxHQUFHO0FBQ0gseUJBQXlCLHVEQUFLO0FBQzlCO0FBQ0EsS0FBSztBQUNMLHFDQUFxQyxzREFBSSxDQUFDLDZDQUFPO0FBQ2pELGVBQWUsd0NBQUM7QUFDaEIsT0FBTztBQUNQLGtCQUFrQixzREFBSSxDQUFDLDJDQUFNO0FBQzdCO0FBQ0E7O0FBRUE7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLHdDQUFDO0FBQ3pCLFNBQVM7QUFDVCxvQkFBb0IsMkNBQU87QUFDM0IsU0FBUztBQUNULE9BQU8sSUFBSSxzREFBSSxDQUFDLDJDQUFNO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQix3Q0FBQztBQUN2QixPQUFPO0FBQ1Asa0JBQWtCLDZDQUFTO0FBQzNCLE9BQU87QUFDUCxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9TaWRlYmFyL1NpZGViYXJIZWFkZXIudHN4PzJjZjQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCBjbHN4IGZyb20gXCJjbHN4XCI7XG5pbXBvcnQgeyB1c2VDb250ZXh0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB0IH0gZnJvbSBcIi4uLy4uL2kxOG5cIjtcbmltcG9ydCB7IHVzZURldmljZSB9IGZyb20gXCIuLi9BcHBcIjtcbmltcG9ydCB7IFNpZGViYXJQcm9wc0NvbnRleHQgfSBmcm9tIFwiLi9jb21tb25cIjtcbmltcG9ydCB7IENsb3NlSWNvbiwgUGluSWNvbiB9IGZyb20gXCIuLi9pY29uc1wiO1xuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gXCIuLi9Ub29sdGlwXCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiLi4vQnV0dG9uXCI7XG5leHBvcnQgY29uc3QgU2lkZWJhckhlYWRlciA9ICh7XG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWVcbn0pID0+IHtcbiAgY29uc3QgZGV2aWNlID0gdXNlRGV2aWNlKCk7XG4gIGNvbnN0IHByb3BzID0gdXNlQ29udGV4dChTaWRlYmFyUHJvcHNDb250ZXh0KTtcbiAgY29uc3QgcmVuZGVyRG9ja0J1dHRvbiA9ICEhKGRldmljZS5lZGl0b3IuY2FuRml0U2lkZWJhciAmJiBwcm9wcy5zaG91bGRSZW5kZXJEb2NrQnV0dG9uKTtcbiAgcmV0dXJuIF9qc3hzKFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oe1xuICAgIGNsYXNzTmFtZTogY2xzeChcInNpZGViYXJfX2hlYWRlclwiLCBjbGFzc05hbWUpLFxuICAgIFwiZGF0YS10ZXN0aWRcIjogXCJzaWRlYmFyLWhlYWRlclwiXG4gIH0sIHtcbiAgICBjaGlsZHJlbjogW2NoaWxkcmVuLCBfanN4cyhcImRpdlwiLCBPYmplY3QuYXNzaWduKHtcbiAgICAgIGNsYXNzTmFtZTogXCJzaWRlYmFyX19oZWFkZXJfX2J1dHRvbnNcIlxuICAgIH0sIHtcbiAgICAgIGNoaWxkcmVuOiBbcmVuZGVyRG9ja0J1dHRvbiAmJiBfanN4KFRvb2x0aXAsIE9iamVjdC5hc3NpZ24oe1xuICAgICAgICBsYWJlbDogdChcImxhYmVscy5zaWRlYmFyTG9ja1wiKVxuICAgICAgfSwge1xuICAgICAgICBjaGlsZHJlbjogX2pzeChCdXR0b24sIE9iamVjdC5hc3NpZ24oe1xuICAgICAgICAgIG9uU2VsZWN0OiAoKSA9PiB7XG4gICAgICAgICAgICB2YXIgX2E7XG5cbiAgICAgICAgICAgIHJldHVybiAoX2EgPSBwcm9wcy5vbkRvY2spID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKHByb3BzLCAhcHJvcHMuZG9ja2VkKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGVjdGVkOiAhIXByb3BzLmRvY2tlZCxcbiAgICAgICAgICBjbGFzc05hbWU6IFwic2lkZWJhcl9fZG9ja1wiLFxuICAgICAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJzaWRlYmFyLWRvY2tcIixcbiAgICAgICAgICBcImFyaWEtbGFiZWxcIjogdChcImxhYmVscy5zaWRlYmFyTG9ja1wiKVxuICAgICAgICB9LCB7XG4gICAgICAgICAgY2hpbGRyZW46IFBpbkljb25cbiAgICAgICAgfSkpXG4gICAgICB9KSksIF9qc3goQnV0dG9uLCBPYmplY3QuYXNzaWduKHtcbiAgICAgICAgXCJkYXRhLXRlc3RpZFwiOiBcInNpZGViYXItY2xvc2VcIixcbiAgICAgICAgY2xhc3NOYW1lOiBcInNpZGViYXJfX2Nsb3NlXCIsXG4gICAgICAgIG9uU2VsZWN0OiBwcm9wcy5vbkNsb3NlUmVxdWVzdCxcbiAgICAgICAgXCJhcmlhLWxhYmVsXCI6IHQoXCJidXR0b25zLmNsb3NlXCIpXG4gICAgICB9LCB7XG4gICAgICAgIGNoaWxkcmVuOiBDbG9zZUljb25cbiAgICAgIH0pKV1cbiAgICB9KSldXG4gIH0pKTtcbn07XG5TaWRlYmFySGVhZGVyLmRpc3BsYXlOYW1lID0gXCJTaWRlYmFySGVhZGVyXCI7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/Sidebar/SidebarHeader.tsx\n');
              }
            ),
            /***/
            "../../components/Sidebar/SidebarTab.tsx": (
              /*!***********************************************!*\
                !*** ../../components/Sidebar/SidebarTab.tsx ***!
                \***********************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "SidebarTab": () => (/* binding */ SidebarTab)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _radix_ui_react_tabs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @radix-ui/react-tabs */ "../../../node_modules/@radix-ui/react-tabs/dist/index.module.js");\nvar __rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n\n  if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\nconst SidebarTab = _a => {\n  var {\n    tab,\n    children\n  } = _a,\n      rest = __rest(_a, ["tab", "children"]);\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_radix_ui_react_tabs__WEBPACK_IMPORTED_MODULE_1__.Content, Object.assign({}, rest, {\n    value: tab\n  }, {\n    children: children\n  }));\n};\nSidebarTab.displayName = "SidebarTab";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9TaWRlYmFyL1NpZGViYXJUYWIudHN4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxhQUFhLFNBQUksSUFBSSxTQUFJO0FBQ3pCOztBQUVBOztBQUVBLDRIQUE0SCxjQUFjO0FBQzFJO0FBQ0E7QUFDQTtBQUNBOztBQUVnRDtBQUNFO0FBQzNDO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKOztBQUVBLFNBQVMsc0RBQUksQ0FBQyx5REFBaUIsa0JBQWtCO0FBQ2pEO0FBQ0EsR0FBRztBQUNIO0FBQ0EsR0FBRztBQUNIO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9TaWRlYmFyL1NpZGViYXJUYWIudHN4P2IxNzgiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fcmVzdCA9IHRoaXMgJiYgdGhpcy5fX3Jlc3QgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgdmFyIHQgPSB7fTtcblxuICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMCkgdFtwXSA9IHNbcF07XG5cbiAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKSBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKSB0W3BbaV1dID0gc1twW2ldXTtcbiAgfVxuICByZXR1cm4gdDtcbn07XG5cbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgKiBhcyBSYWRpeFRhYnMgZnJvbSBcIkByYWRpeC11aS9yZWFjdC10YWJzXCI7XG5leHBvcnQgY29uc3QgU2lkZWJhclRhYiA9IF9hID0+IHtcbiAgdmFyIHtcbiAgICB0YWIsXG4gICAgY2hpbGRyZW5cbiAgfSA9IF9hLFxuICAgICAgcmVzdCA9IF9fcmVzdChfYSwgW1widGFiXCIsIFwiY2hpbGRyZW5cIl0pO1xuXG4gIHJldHVybiBfanN4KFJhZGl4VGFicy5Db250ZW50LCBPYmplY3QuYXNzaWduKHt9LCByZXN0LCB7XG4gICAgdmFsdWU6IHRhYlxuICB9LCB7XG4gICAgY2hpbGRyZW46IGNoaWxkcmVuXG4gIH0pKTtcbn07XG5TaWRlYmFyVGFiLmRpc3BsYXlOYW1lID0gXCJTaWRlYmFyVGFiXCI7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/Sidebar/SidebarTab.tsx\n');
              }
            ),
            /***/
            "../../components/Sidebar/SidebarTabTrigger.tsx": (
              /*!******************************************************!*\
                !*** ../../components/Sidebar/SidebarTabTrigger.tsx ***!
                \******************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "SidebarTabTrigger": () => (/* binding */ SidebarTabTrigger)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _radix_ui_react_tabs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @radix-ui/react-tabs */ "../../../node_modules/@radix-ui/react-tabs/dist/index.module.js");\nvar __rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n\n  if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\nconst SidebarTabTrigger = _a => {\n  var {\n    children,\n    tab,\n    onSelect\n  } = _a,\n      rest = __rest(_a, ["children", "tab", "onSelect"]);\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_radix_ui_react_tabs__WEBPACK_IMPORTED_MODULE_1__.Trigger, Object.assign({\n    value: tab,\n    asChild: true,\n    onSelect: onSelect\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("button", Object.assign({\n      type: "button",\n      className: `excalidraw-button sidebar-tab-trigger`\n    }, rest, {\n      children: children\n    }))\n  }));\n};\nSidebarTabTrigger.displayName = "SidebarTabTrigger";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9TaWRlYmFyL1NpZGViYXJUYWJUcmlnZ2VyLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsYUFBYSxTQUFJLElBQUksU0FBSTtBQUN6Qjs7QUFFQTs7QUFFQSw0SEFBNEgsY0FBYztBQUMxSTtBQUNBO0FBQ0E7QUFDQTs7QUFFZ0Q7QUFDRTtBQUMzQztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKOztBQUVBLFNBQVMsc0RBQUksQ0FBQyx5REFBaUI7QUFDL0I7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILGNBQWMsc0RBQUk7QUFDbEI7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL1NpZGViYXIvU2lkZWJhclRhYlRyaWdnZXIudHN4PzEzY2QiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fcmVzdCA9IHRoaXMgJiYgdGhpcy5fX3Jlc3QgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgdmFyIHQgPSB7fTtcblxuICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMCkgdFtwXSA9IHNbcF07XG5cbiAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKSBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKSB0W3BbaV1dID0gc1twW2ldXTtcbiAgfVxuICByZXR1cm4gdDtcbn07XG5cbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgKiBhcyBSYWRpeFRhYnMgZnJvbSBcIkByYWRpeC11aS9yZWFjdC10YWJzXCI7XG5leHBvcnQgY29uc3QgU2lkZWJhclRhYlRyaWdnZXIgPSBfYSA9PiB7XG4gIHZhciB7XG4gICAgY2hpbGRyZW4sXG4gICAgdGFiLFxuICAgIG9uU2VsZWN0XG4gIH0gPSBfYSxcbiAgICAgIHJlc3QgPSBfX3Jlc3QoX2EsIFtcImNoaWxkcmVuXCIsIFwidGFiXCIsIFwib25TZWxlY3RcIl0pO1xuXG4gIHJldHVybiBfanN4KFJhZGl4VGFicy5UcmlnZ2VyLCBPYmplY3QuYXNzaWduKHtcbiAgICB2YWx1ZTogdGFiLFxuICAgIGFzQ2hpbGQ6IHRydWUsXG4gICAgb25TZWxlY3Q6IG9uU2VsZWN0XG4gIH0sIHtcbiAgICBjaGlsZHJlbjogX2pzeChcImJ1dHRvblwiLCBPYmplY3QuYXNzaWduKHtcbiAgICAgIHR5cGU6IFwiYnV0dG9uXCIsXG4gICAgICBjbGFzc05hbWU6IGBleGNhbGlkcmF3LWJ1dHRvbiBzaWRlYmFyLXRhYi10cmlnZ2VyYFxuICAgIH0sIHJlc3QsIHtcbiAgICAgIGNoaWxkcmVuOiBjaGlsZHJlblxuICAgIH0pKVxuICB9KSk7XG59O1xuU2lkZWJhclRhYlRyaWdnZXIuZGlzcGxheU5hbWUgPSBcIlNpZGViYXJUYWJUcmlnZ2VyXCI7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/Sidebar/SidebarTabTrigger.tsx\n');
              }
            ),
            /***/
            "../../components/Sidebar/SidebarTabTriggers.tsx": (
              /*!*******************************************************!*\
                !*** ../../components/Sidebar/SidebarTabTriggers.tsx ***!
                \*******************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "SidebarTabTriggers": () => (/* binding */ SidebarTabTriggers)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _radix_ui_react_tabs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @radix-ui/react-tabs */ "../../../node_modules/@radix-ui/react-tabs/dist/index.module.js");\nvar __rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n\n  if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\nconst SidebarTabTriggers = _a => {\n  var {\n    children\n  } = _a,\n      rest = __rest(_a, ["children"]);\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_radix_ui_react_tabs__WEBPACK_IMPORTED_MODULE_1__.List, Object.assign({\n    className: "sidebar-triggers"\n  }, rest, {\n    children: children\n  }));\n};\nSidebarTabTriggers.displayName = "SidebarTabTriggers";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9TaWRlYmFyL1NpZGViYXJUYWJUcmlnZ2Vycy50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLGFBQWEsU0FBSSxJQUFJLFNBQUk7QUFDekI7O0FBRUE7O0FBRUEsNEhBQTRILGNBQWM7QUFDMUk7QUFDQTtBQUNBO0FBQ0E7O0FBRWdEO0FBQ0U7QUFDM0M7QUFDUDtBQUNBO0FBQ0EsSUFBSTtBQUNKOztBQUVBLFNBQVMsc0RBQUksQ0FBQyxzREFBYztBQUM1QjtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7QUFDSDtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvU2lkZWJhci9TaWRlYmFyVGFiVHJpZ2dlcnMudHN4PzY2MTkiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fcmVzdCA9IHRoaXMgJiYgdGhpcy5fX3Jlc3QgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgdmFyIHQgPSB7fTtcblxuICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMCkgdFtwXSA9IHNbcF07XG5cbiAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKSBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKSB0W3BbaV1dID0gc1twW2ldXTtcbiAgfVxuICByZXR1cm4gdDtcbn07XG5cbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgKiBhcyBSYWRpeFRhYnMgZnJvbSBcIkByYWRpeC11aS9yZWFjdC10YWJzXCI7XG5leHBvcnQgY29uc3QgU2lkZWJhclRhYlRyaWdnZXJzID0gX2EgPT4ge1xuICB2YXIge1xuICAgIGNoaWxkcmVuXG4gIH0gPSBfYSxcbiAgICAgIHJlc3QgPSBfX3Jlc3QoX2EsIFtcImNoaWxkcmVuXCJdKTtcblxuICByZXR1cm4gX2pzeChSYWRpeFRhYnMuTGlzdCwgT2JqZWN0LmFzc2lnbih7XG4gICAgY2xhc3NOYW1lOiBcInNpZGViYXItdHJpZ2dlcnNcIlxuICB9LCByZXN0LCB7XG4gICAgY2hpbGRyZW46IGNoaWxkcmVuXG4gIH0pKTtcbn07XG5TaWRlYmFyVGFiVHJpZ2dlcnMuZGlzcGxheU5hbWUgPSBcIlNpZGViYXJUYWJUcmlnZ2Vyc1wiOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/Sidebar/SidebarTabTriggers.tsx\n');
              }
            ),
            /***/
            "../../components/Sidebar/SidebarTabs.tsx": (
              /*!************************************************!*\
                !*** ../../components/Sidebar/SidebarTabs.tsx ***!
                \************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "SidebarTabs": () => (/* binding */ SidebarTabs)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _radix_ui_react_tabs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @radix-ui/react-tabs */ "../../../node_modules/@radix-ui/react-tabs/dist/index.module.js");\n/* harmony import */ var _context_ui_appState__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../context/ui-appState */ "../../context/ui-appState.ts");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../App */ "../../components/App.tsx");\nvar __rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n\n  if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\nconst SidebarTabs = _a => {\n  var {\n    children\n  } = _a,\n      rest = __rest(_a, ["children"]);\n\n  const appState = (0,_context_ui_appState__WEBPACK_IMPORTED_MODULE_1__.useUIAppState)();\n  const setAppState = (0,_App__WEBPACK_IMPORTED_MODULE_2__.useExcalidrawSetAppState)();\n\n  if (!appState.openSidebar) {\n    return null;\n  }\n\n  const {\n    name\n  } = appState.openSidebar;\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_radix_ui_react_tabs__WEBPACK_IMPORTED_MODULE_3__.Root, Object.assign({\n    className: "sidebar-tabs-root",\n    value: appState.openSidebar.tab,\n    onValueChange: tab => setAppState(state => Object.assign(Object.assign({}, state), {\n      openSidebar: Object.assign(Object.assign({}, state.openSidebar), {\n        name,\n        tab\n      })\n    }))\n  }, rest, {\n    children: children\n  }));\n};\nSidebarTabs.displayName = "SidebarTabs";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9TaWRlYmFyL1NpZGViYXJUYWJzLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxhQUFhLFNBQUksSUFBSSxTQUFJO0FBQ3pCOztBQUVBOztBQUVBLDRIQUE0SCxjQUFjO0FBQzFJO0FBQ0E7QUFDQTtBQUNBOztBQUVnRDtBQUNFO0FBQ1E7QUFDUjtBQUMzQztBQUNQO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7O0FBRUEsbUJBQW1CLG1FQUFhO0FBQ2hDLHNCQUFzQiw4REFBd0I7O0FBRTlDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLFNBQVMsc0RBQUksQ0FBQyxzREFBYztBQUM1QjtBQUNBO0FBQ0EsNkVBQTZFO0FBQzdFLGlEQUFpRDtBQUNqRDtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL1NpZGViYXIvU2lkZWJhclRhYnMudHN4PzAxOWQiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fcmVzdCA9IHRoaXMgJiYgdGhpcy5fX3Jlc3QgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgdmFyIHQgPSB7fTtcblxuICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMCkgdFtwXSA9IHNbcF07XG5cbiAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKSBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKSB0W3BbaV1dID0gc1twW2ldXTtcbiAgfVxuICByZXR1cm4gdDtcbn07XG5cbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgKiBhcyBSYWRpeFRhYnMgZnJvbSBcIkByYWRpeC11aS9yZWFjdC10YWJzXCI7XG5pbXBvcnQgeyB1c2VVSUFwcFN0YXRlIH0gZnJvbSBcIi4uLy4uL2NvbnRleHQvdWktYXBwU3RhdGVcIjtcbmltcG9ydCB7IHVzZUV4Y2FsaWRyYXdTZXRBcHBTdGF0ZSB9IGZyb20gXCIuLi9BcHBcIjtcbmV4cG9ydCBjb25zdCBTaWRlYmFyVGFicyA9IF9hID0+IHtcbiAgdmFyIHtcbiAgICBjaGlsZHJlblxuICB9ID0gX2EsXG4gICAgICByZXN0ID0gX19yZXN0KF9hLCBbXCJjaGlsZHJlblwiXSk7XG5cbiAgY29uc3QgYXBwU3RhdGUgPSB1c2VVSUFwcFN0YXRlKCk7XG4gIGNvbnN0IHNldEFwcFN0YXRlID0gdXNlRXhjYWxpZHJhd1NldEFwcFN0YXRlKCk7XG5cbiAgaWYgKCFhcHBTdGF0ZS5vcGVuU2lkZWJhcikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3Qge1xuICAgIG5hbWVcbiAgfSA9IGFwcFN0YXRlLm9wZW5TaWRlYmFyO1xuICByZXR1cm4gX2pzeChSYWRpeFRhYnMuUm9vdCwgT2JqZWN0LmFzc2lnbih7XG4gICAgY2xhc3NOYW1lOiBcInNpZGViYXItdGFicy1yb290XCIsXG4gICAgdmFsdWU6IGFwcFN0YXRlLm9wZW5TaWRlYmFyLnRhYixcbiAgICBvblZhbHVlQ2hhbmdlOiB0YWIgPT4gc2V0QXBwU3RhdGUoc3RhdGUgPT4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBzdGF0ZSksIHtcbiAgICAgIG9wZW5TaWRlYmFyOiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLm9wZW5TaWRlYmFyKSwge1xuICAgICAgICBuYW1lLFxuICAgICAgICB0YWJcbiAgICAgIH0pXG4gICAgfSkpXG4gIH0sIHJlc3QsIHtcbiAgICBjaGlsZHJlbjogY2hpbGRyZW5cbiAgfSkpO1xufTtcblNpZGViYXJUYWJzLmRpc3BsYXlOYW1lID0gXCJTaWRlYmFyVGFic1wiOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/Sidebar/SidebarTabs.tsx\n');
              }
            ),
            /***/
            "../../components/Sidebar/SidebarTrigger.tsx": (
              /*!***************************************************!*\
                !*** ../../components/Sidebar/SidebarTrigger.tsx ***!
                \***************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "SidebarTrigger": () => (/* binding */ SidebarTrigger)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../App */ "../../components/App.tsx");\n/* harmony import */ var _context_ui_appState__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../context/ui-appState */ "../../context/ui-appState.ts");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _SidebarTrigger_scss__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./SidebarTrigger.scss */ "../../components/Sidebar/SidebarTrigger.scss");\n\n\n\n\n\nconst SidebarTrigger = ({\n  name,\n  tab,\n  icon,\n  title,\n  children,\n  onToggle,\n  className,\n  style\n}) => {\n  var _a;\n\n  const setAppState = (0,_App__WEBPACK_IMPORTED_MODULE_1__.useExcalidrawSetAppState)();\n  const appState = (0,_context_ui_appState__WEBPACK_IMPORTED_MODULE_2__.useUIAppState)();\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("label", Object.assign({\n    title: title\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input", {\n      className: "ToolIcon_type_checkbox",\n      type: "checkbox",\n      onChange: event => {\n        var _a;\n\n        (_a = document.querySelector(".layer-ui__wrapper")) === null || _a === void 0 ? void 0 : _a.classList.remove("animate");\n        const isOpen = event.target.checked;\n        setAppState({\n          openSidebar: isOpen ? {\n            name,\n            tab\n          } : null\n        });\n        onToggle === null || onToggle === void 0 ? void 0 : onToggle(isOpen);\n      },\n      checked: ((_a = appState.openSidebar) === null || _a === void 0 ? void 0 : _a.name) === name,\n      "aria-label": title,\n      "aria-keyshortcuts": "0"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__["default"])("sidebar-trigger", className),\n      style: style\n    }, {\n      children: [icon && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n        children: icon\n      }), children && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n        className: "sidebar-trigger__label"\n      }, {\n        children: children\n      }))]\n    }))]\n  }));\n};\nSidebarTrigger.displayName = "SidebarTrigger";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9TaWRlYmFyL1NpZGViYXJUcmlnZ2VyLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQStEO0FBQ2I7QUFDUTtBQUNsQztBQUNPO0FBQ3hCO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDs7QUFFQSxzQkFBc0IsOERBQXdCO0FBQzlDLG1CQUFtQixtRUFBYTtBQUNoQyxTQUFTLHVEQUFLO0FBQ2Q7QUFDQSxHQUFHO0FBQ0gsZUFBZSxzREFBSTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1osU0FBUztBQUNUO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEtBQUssR0FBRyx1REFBSztBQUNiLGlCQUFpQixnREFBSTtBQUNyQjtBQUNBLEtBQUs7QUFDTCx5QkFBeUIsc0RBQUk7QUFDN0I7QUFDQSxPQUFPLGVBQWUsc0RBQUk7QUFDMUI7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvU2lkZWJhci9TaWRlYmFyVHJpZ2dlci50c3g/ZWE4MyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgdXNlRXhjYWxpZHJhd1NldEFwcFN0YXRlIH0gZnJvbSBcIi4uL0FwcFwiO1xuaW1wb3J0IHsgdXNlVUlBcHBTdGF0ZSB9IGZyb20gXCIuLi8uLi9jb250ZXh0L3VpLWFwcFN0YXRlXCI7XG5pbXBvcnQgY2xzeCBmcm9tIFwiY2xzeFwiO1xuaW1wb3J0IFwiLi9TaWRlYmFyVHJpZ2dlci5zY3NzXCI7XG5leHBvcnQgY29uc3QgU2lkZWJhclRyaWdnZXIgPSAoe1xuICBuYW1lLFxuICB0YWIsXG4gIGljb24sXG4gIHRpdGxlLFxuICBjaGlsZHJlbixcbiAgb25Ub2dnbGUsXG4gIGNsYXNzTmFtZSxcbiAgc3R5bGVcbn0pID0+IHtcbiAgdmFyIF9hO1xuXG4gIGNvbnN0IHNldEFwcFN0YXRlID0gdXNlRXhjYWxpZHJhd1NldEFwcFN0YXRlKCk7XG4gIGNvbnN0IGFwcFN0YXRlID0gdXNlVUlBcHBTdGF0ZSgpO1xuICByZXR1cm4gX2pzeHMoXCJsYWJlbFwiLCBPYmplY3QuYXNzaWduKHtcbiAgICB0aXRsZTogdGl0bGVcbiAgfSwge1xuICAgIGNoaWxkcmVuOiBbX2pzeChcImlucHV0XCIsIHtcbiAgICAgIGNsYXNzTmFtZTogXCJUb29sSWNvbl90eXBlX2NoZWNrYm94XCIsXG4gICAgICB0eXBlOiBcImNoZWNrYm94XCIsXG4gICAgICBvbkNoYW5nZTogZXZlbnQgPT4ge1xuICAgICAgICB2YXIgX2E7XG5cbiAgICAgICAgKF9hID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5sYXllci11aV9fd3JhcHBlclwiKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNsYXNzTGlzdC5yZW1vdmUoXCJhbmltYXRlXCIpO1xuICAgICAgICBjb25zdCBpc09wZW4gPSBldmVudC50YXJnZXQuY2hlY2tlZDtcbiAgICAgICAgc2V0QXBwU3RhdGUoe1xuICAgICAgICAgIG9wZW5TaWRlYmFyOiBpc09wZW4gPyB7XG4gICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgdGFiXG4gICAgICAgICAgfSA6IG51bGxcbiAgICAgICAgfSk7XG4gICAgICAgIG9uVG9nZ2xlID09PSBudWxsIHx8IG9uVG9nZ2xlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblRvZ2dsZShpc09wZW4pO1xuICAgICAgfSxcbiAgICAgIGNoZWNrZWQ6ICgoX2EgPSBhcHBTdGF0ZS5vcGVuU2lkZWJhcikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm5hbWUpID09PSBuYW1lLFxuICAgICAgXCJhcmlhLWxhYmVsXCI6IHRpdGxlLFxuICAgICAgXCJhcmlhLWtleXNob3J0Y3V0c1wiOiBcIjBcIlxuICAgIH0pLCBfanN4cyhcImRpdlwiLCBPYmplY3QuYXNzaWduKHtcbiAgICAgIGNsYXNzTmFtZTogY2xzeChcInNpZGViYXItdHJpZ2dlclwiLCBjbGFzc05hbWUpLFxuICAgICAgc3R5bGU6IHN0eWxlXG4gICAgfSwge1xuICAgICAgY2hpbGRyZW46IFtpY29uICYmIF9qc3goXCJkaXZcIiwge1xuICAgICAgICBjaGlsZHJlbjogaWNvblxuICAgICAgfSksIGNoaWxkcmVuICYmIF9qc3goXCJkaXZcIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgICAgIGNsYXNzTmFtZTogXCJzaWRlYmFyLXRyaWdnZXJfX2xhYmVsXCJcbiAgICAgIH0sIHtcbiAgICAgICAgY2hpbGRyZW46IGNoaWxkcmVuXG4gICAgICB9KSldXG4gICAgfSkpXVxuICB9KSk7XG59O1xuU2lkZWJhclRyaWdnZXIuZGlzcGxheU5hbWUgPSBcIlNpZGViYXJUcmlnZ2VyXCI7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/Sidebar/SidebarTrigger.tsx\n');
              }
            ),
            /***/
            "../../components/Sidebar/common.ts": (
              /*!******************************************!*\
                !*** ../../components/Sidebar/common.ts ***!
                \******************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "SidebarPropsContext": () => (/* binding */ SidebarPropsContext)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n\nconst SidebarPropsContext = react__WEBPACK_IMPORTED_MODULE_0___default().createContext({});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9TaWRlYmFyL2NvbW1vbi50cy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBMEI7QUFDbkIsNEJBQTRCLDBEQUFtQixHQUFHIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvU2lkZWJhci9jb21tb24udHM/NmY4MCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5leHBvcnQgY29uc3QgU2lkZWJhclByb3BzQ29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQoe30pOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/Sidebar/common.ts\n');
              }
            ),
            /***/
            "../../components/Spinner.tsx": (
              /*!************************************!*\
                !*** ../../components/Spinner.tsx ***!
                \************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _Spinner_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Spinner.scss */ "../../components/Spinner.scss");\n\n\n\n\nconst Spinner = ({\n  size = "1em",\n  circleWidth = 8,\n  synchronized = false\n}) => {\n  const mountTime = react__WEBPACK_IMPORTED_MODULE_1___default().useRef(Date.now());\n  const mountDelay = -(mountTime.current % 1600);\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: "Spinner"\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("svg", Object.assign({\n      viewBox: "0 0 100 100",\n      style: {\n        width: size,\n        height: size,\n        // fix for remounting causing spinner flicker\n        ["--spinner-delay"]: synchronized ? `${mountDelay}ms` : 0\n      }\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("circle", {\n        cx: "50",\n        cy: "50",\n        r: 50 - circleWidth / 2,\n        strokeWidth: circleWidth,\n        fill: "none",\n        strokeMiterlimit: "10"\n      })\n    }))\n  }));\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Spinner);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9TcGlubmVyLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBZ0Q7QUFDdEI7QUFDRjs7QUFFeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Qsb0JBQW9CLG1EQUFZO0FBQ2hDO0FBQ0EsU0FBUyxzREFBSTtBQUNiO0FBQ0EsR0FBRztBQUNILGNBQWMsc0RBQUk7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtDQUErQyxXQUFXO0FBQzFEO0FBQ0EsS0FBSztBQUNMLGdCQUFnQixzREFBSTtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMLEdBQUc7QUFDSDs7QUFFQSxpRUFBZSxPQUFPIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvU3Bpbm5lci50c3g/NzQ2MiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFwiLi9TcGlubmVyLnNjc3NcIjtcblxuY29uc3QgU3Bpbm5lciA9ICh7XG4gIHNpemUgPSBcIjFlbVwiLFxuICBjaXJjbGVXaWR0aCA9IDgsXG4gIHN5bmNocm9uaXplZCA9IGZhbHNlXG59KSA9PiB7XG4gIGNvbnN0IG1vdW50VGltZSA9IFJlYWN0LnVzZVJlZihEYXRlLm5vdygpKTtcbiAgY29uc3QgbW91bnREZWxheSA9IC0obW91bnRUaW1lLmN1cnJlbnQgJSAxNjAwKTtcbiAgcmV0dXJuIF9qc3goXCJkaXZcIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgY2xhc3NOYW1lOiBcIlNwaW5uZXJcIlxuICB9LCB7XG4gICAgY2hpbGRyZW46IF9qc3goXCJzdmdcIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgICB2aWV3Qm94OiBcIjAgMCAxMDAgMTAwXCIsXG4gICAgICBzdHlsZToge1xuICAgICAgICB3aWR0aDogc2l6ZSxcbiAgICAgICAgaGVpZ2h0OiBzaXplLFxuICAgICAgICAvLyBmaXggZm9yIHJlbW91bnRpbmcgY2F1c2luZyBzcGlubmVyIGZsaWNrZXJcbiAgICAgICAgW1wiLS1zcGlubmVyLWRlbGF5XCJdOiBzeW5jaHJvbml6ZWQgPyBgJHttb3VudERlbGF5fW1zYCA6IDBcbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBjaGlsZHJlbjogX2pzeChcImNpcmNsZVwiLCB7XG4gICAgICAgIGN4OiBcIjUwXCIsXG4gICAgICAgIGN5OiBcIjUwXCIsXG4gICAgICAgIHI6IDUwIC0gY2lyY2xlV2lkdGggLyAyLFxuICAgICAgICBzdHJva2VXaWR0aDogY2lyY2xlV2lkdGgsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2VNaXRlcmxpbWl0OiBcIjEwXCJcbiAgICAgIH0pXG4gICAgfSkpXG4gIH0pKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFNwaW5uZXI7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/Spinner.tsx\n');
              }
            ),
            /***/
            "../../components/Stack.tsx": (
              /*!**********************************!*\
                !*** ../../components/Stack.tsx ***!
                \**********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Stack_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Stack.scss */ "../../components/Stack.scss");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n\n\n\n\nconst RowStack = (0,react__WEBPACK_IMPORTED_MODULE_2__.forwardRef)(({\n  children,\n  gap,\n  align,\n  justifyContent,\n  className,\n  style\n}, ref) => {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__["default"])("Stack Stack_horizontal", className),\n    style: Object.assign({\n      "--gap": gap,\n      alignItems: align,\n      justifyContent\n    }, style),\n    ref: ref\n  }, {\n    children: children\n  }));\n});\nconst ColStack = (0,react__WEBPACK_IMPORTED_MODULE_2__.forwardRef)(({\n  children,\n  gap,\n  align,\n  justifyContent,\n  className,\n  style\n}, ref) => {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__["default"])("Stack Stack_vertical", className),\n    style: Object.assign({\n      "--gap": gap,\n      justifyItems: align,\n      justifyContent\n    }, style),\n    ref: ref\n  }, {\n    children: children\n  }));\n});\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n  Row: RowStack,\n  Col: ColStack\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9TdGFjay50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFnRDtBQUMxQjtBQUNvQjtBQUNsQjtBQUN4QixpQkFBaUIsaURBQVU7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELFNBQVMsc0RBQUk7QUFDYixlQUFlLGdEQUFJO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsR0FBRztBQUNIO0FBQ0EsR0FBRztBQUNILENBQUM7QUFDRCxpQkFBaUIsaURBQVU7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELFNBQVMsc0RBQUk7QUFDYixlQUFlLGdEQUFJO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsR0FBRztBQUNIO0FBQ0EsR0FBRztBQUNILENBQUM7QUFDRCxpRUFBZTtBQUNmO0FBQ0E7QUFDQSxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvU3RhY2sudHN4PzI3ODQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCBcIi4vU3RhY2suc2Nzc1wiO1xuaW1wb3J0IFJlYWN0LCB7IGZvcndhcmRSZWYgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBjbHN4IGZyb20gXCJjbHN4XCI7XG5jb25zdCBSb3dTdGFjayA9IGZvcndhcmRSZWYoKHtcbiAgY2hpbGRyZW4sXG4gIGdhcCxcbiAgYWxpZ24sXG4gIGp1c3RpZnlDb250ZW50LFxuICBjbGFzc05hbWUsXG4gIHN0eWxlXG59LCByZWYpID0+IHtcbiAgcmV0dXJuIF9qc3goXCJkaXZcIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgY2xhc3NOYW1lOiBjbHN4KFwiU3RhY2sgU3RhY2tfaG9yaXpvbnRhbFwiLCBjbGFzc05hbWUpLFxuICAgIHN0eWxlOiBPYmplY3QuYXNzaWduKHtcbiAgICAgIFwiLS1nYXBcIjogZ2FwLFxuICAgICAgYWxpZ25JdGVtczogYWxpZ24sXG4gICAgICBqdXN0aWZ5Q29udGVudFxuICAgIH0sIHN0eWxlKSxcbiAgICByZWY6IHJlZlxuICB9LCB7XG4gICAgY2hpbGRyZW46IGNoaWxkcmVuXG4gIH0pKTtcbn0pO1xuY29uc3QgQ29sU3RhY2sgPSBmb3J3YXJkUmVmKCh7XG4gIGNoaWxkcmVuLFxuICBnYXAsXG4gIGFsaWduLFxuICBqdXN0aWZ5Q29udGVudCxcbiAgY2xhc3NOYW1lLFxuICBzdHlsZVxufSwgcmVmKSA9PiB7XG4gIHJldHVybiBfanN4KFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oe1xuICAgIGNsYXNzTmFtZTogY2xzeChcIlN0YWNrIFN0YWNrX3ZlcnRpY2FsXCIsIGNsYXNzTmFtZSksXG4gICAgc3R5bGU6IE9iamVjdC5hc3NpZ24oe1xuICAgICAgXCItLWdhcFwiOiBnYXAsXG4gICAgICBqdXN0aWZ5SXRlbXM6IGFsaWduLFxuICAgICAganVzdGlmeUNvbnRlbnRcbiAgICB9LCBzdHlsZSksXG4gICAgcmVmOiByZWZcbiAgfSwge1xuICAgIGNoaWxkcmVuOiBjaGlsZHJlblxuICB9KSk7XG59KTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgUm93OiBSb3dTdGFjayxcbiAgQ29sOiBDb2xTdGFja1xufTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/Stack.tsx\n');
              }
            ),
            /***/
            "../../components/Stats.tsx": (
              /*!**********************************!*\
                !*** ../../components/Stats.tsx ***!
                \**********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "Stats": () => (/* binding */ Stats)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _element_bounds__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../element/bounds */ "../../element/bounds.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../scene */ "../../scene/index.ts");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./icons */ "../../components/icons.tsx");\n/* harmony import */ var _Island__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Island */ "../../components/Island.tsx");\n/* harmony import */ var _Stats_scss__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./Stats.scss */ "../../components/Stats.scss");\n\n\n\n\n\n\n\n\nconst Stats = props => {\n  var _a;\n\n  const boundingBox = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_2__.getCommonBounds)(props.elements);\n  const selectedElements = (0,_scene__WEBPACK_IMPORTED_MODULE_4__.getTargetElements)(props.elements, props.appState);\n  const selectedBoundingBox = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_2__.getCommonBounds)(selectedElements);\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: "Stats"\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Island__WEBPACK_IMPORTED_MODULE_6__.Island, Object.assign({\n      padding: 2\n    }, {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n        className: "close",\n        onClick: props.onClose\n      }, {\n        children: _icons__WEBPACK_IMPORTED_MODULE_5__.CloseIcon\n      })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("h3", {\n        children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("stats.title")\n      }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("table", {\n        children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("tbody", {\n          children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("tr", {\n            children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("th", Object.assign({\n              colSpan: 2\n            }, {\n              children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("stats.scene")\n            }))\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("tr", {\n            children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("td", {\n              children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("stats.elements")\n            }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("td", {\n              children: props.elements.length\n            })]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("tr", {\n            children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("td", {\n              children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("stats.width")\n            }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("td", {\n              children: Math.round(boundingBox[2]) - Math.round(boundingBox[0])\n            })]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("tr", {\n            children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("td", {\n              children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("stats.height")\n            }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("td", {\n              children: Math.round(boundingBox[3]) - Math.round(boundingBox[1])\n            })]\n          }), selectedElements.length === 1 && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("tr", {\n            children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("th", Object.assign({\n              colSpan: 2\n            }, {\n              children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("stats.element")\n            }))\n          }), selectedElements.length > 1 && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n            children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("tr", {\n              children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("th", Object.assign({\n                colSpan: 2\n              }, {\n                children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("stats.selected")\n              }))\n            }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("tr", {\n              children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("td", {\n                children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("stats.elements")\n              }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("td", {\n                children: selectedElements.length\n              })]\n            })]\n          }), selectedElements.length > 0 && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n            children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("tr", {\n              children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("td", {\n                children: "x"\n              }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("td", {\n                children: Math.round(selectedBoundingBox[0])\n              })]\n            }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("tr", {\n              children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("td", {\n                children: "y"\n              }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("td", {\n                children: Math.round(selectedBoundingBox[1])\n              })]\n            }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("tr", {\n              children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("td", {\n                children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("stats.width")\n              }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("td", {\n                children: Math.round(selectedBoundingBox[2] - selectedBoundingBox[0])\n              })]\n            }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("tr", {\n              children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("td", {\n                children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("stats.height")\n              }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("td", {\n                children: Math.round(selectedBoundingBox[3] - selectedBoundingBox[1])\n              })]\n            })]\n          }), selectedElements.length === 1 && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("tr", {\n            children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("td", {\n              children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("stats.angle")\n            }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("td", {\n              children: `${Math.round(selectedElements[0].angle * 180 / Math.PI)}\xB0`\n            })]\n          }), (_a = props.renderCustomStats) === null || _a === void 0 ? void 0 : _a.call(props, props.elements, props.appState)]\n        })\n      })]\n    }))\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 7936 characters]\n//# sourceURL=webpack-internal:///../../components/Stats.tsx\n');
              }
            ),
            /***/
            "../../components/Switch.tsx": (
              /*!***********************************!*\
                !*** ../../components/Switch.tsx ***!
                \***********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "Switch": () => (/* binding */ Switch)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _Switch_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Switch.scss */ "../../components/Switch.scss");\n\n\n\nconst Switch = ({\n  title,\n  name,\n  checked,\n  onChange,\n  disabled = false\n}) => {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__["default"])("Switch", {\n      toggled: checked,\n      disabled\n    })\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input", {\n      name: name,\n      id: name,\n      title: title,\n      type: "checkbox",\n      checked: checked,\n      disabled: disabled,\n      onChange: () => onChange(!checked),\n      onKeyDown: event => {\n        if (event.key === " ") {\n          onChange(!checked);\n        }\n      }\n    })\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9Td2l0Y2gudHN4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQWdEO0FBQ3hCO0FBQ0Q7QUFDaEI7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELFNBQVMsc0RBQUk7QUFDYixlQUFlLGdEQUFJO0FBQ25CO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNILGNBQWMsc0RBQUk7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSCIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL1N3aXRjaC50c3g/ZGFkYSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IGNsc3ggZnJvbSBcImNsc3hcIjtcbmltcG9ydCBcIi4vU3dpdGNoLnNjc3NcIjtcbmV4cG9ydCBjb25zdCBTd2l0Y2ggPSAoe1xuICB0aXRsZSxcbiAgbmFtZSxcbiAgY2hlY2tlZCxcbiAgb25DaGFuZ2UsXG4gIGRpc2FibGVkID0gZmFsc2Vcbn0pID0+IHtcbiAgcmV0dXJuIF9qc3goXCJkaXZcIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgY2xhc3NOYW1lOiBjbHN4KFwiU3dpdGNoXCIsIHtcbiAgICAgIHRvZ2dsZWQ6IGNoZWNrZWQsXG4gICAgICBkaXNhYmxlZFxuICAgIH0pXG4gIH0sIHtcbiAgICBjaGlsZHJlbjogX2pzeChcImlucHV0XCIsIHtcbiAgICAgIG5hbWU6IG5hbWUsXG4gICAgICBpZDogbmFtZSxcbiAgICAgIHRpdGxlOiB0aXRsZSxcbiAgICAgIHR5cGU6IFwiY2hlY2tib3hcIixcbiAgICAgIGNoZWNrZWQ6IGNoZWNrZWQsXG4gICAgICBkaXNhYmxlZDogZGlzYWJsZWQsXG4gICAgICBvbkNoYW5nZTogKCkgPT4gb25DaGFuZ2UoIWNoZWNrZWQpLFxuICAgICAgb25LZXlEb3duOiBldmVudCA9PiB7XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09IFwiIFwiKSB7XG4gICAgICAgICAgb25DaGFuZ2UoIWNoZWNrZWQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSlcbiAgfSkpO1xufTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/Switch.tsx\n');
              }
            ),
            /***/
            "../../components/Toast.tsx": (
              /*!**********************************!*\
                !*** ../../components/Toast.tsx ***!
                \**********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "Toast": () => (/* binding */ Toast)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./icons */ "../../components/icons.tsx");\n/* harmony import */ var _Toast_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Toast.scss */ "../../components/Toast.scss");\n/* harmony import */ var _ToolButton__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./ToolButton */ "../../components/ToolButton.tsx");\n\n\n\n\n\nconst DEFAULT_TOAST_TIMEOUT = 5000;\nconst Toast = ({\n  message,\n  onClose,\n  closable = false,\n  // To prevent autoclose, pass duration as Infinity\n  duration = DEFAULT_TOAST_TIMEOUT\n}) => {\n  const timerRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(0);\n  const shouldAutoClose = duration !== Infinity;\n  const scheduleTimeout = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(() => {\n    if (!shouldAutoClose) {\n      return;\n    }\n\n    timerRef.current = window.setTimeout(() => onClose(), duration);\n  }, [onClose, duration, shouldAutoClose]);\n  (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {\n    if (!shouldAutoClose) {\n      return;\n    }\n\n    scheduleTimeout();\n    return () => clearTimeout(timerRef.current);\n  }, [scheduleTimeout, message, duration, shouldAutoClose]);\n  const onMouseEnter = shouldAutoClose ? () => clearTimeout(timerRef === null || timerRef === void 0 ? void 0 : timerRef.current) : undefined;\n  const onMouseLeave = shouldAutoClose ? scheduleTimeout : undefined;\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n    className: "Toast",\n    onMouseEnter: onMouseEnter,\n    onMouseLeave: onMouseLeave\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("p", Object.assign({\n      className: "Toast__message"\n    }, {\n      children: message\n    })), closable && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ToolButton__WEBPACK_IMPORTED_MODULE_4__.ToolButton, {\n      icon: _icons__WEBPACK_IMPORTED_MODULE_2__.CloseIcon,\n      "aria-label": "close",\n      type: "icon",\n      onClick: onClose,\n      className: "close"\n    })]\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9Ub2FzdC50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBK0Q7QUFDUjtBQUNuQjtBQUNkO0FBQ29CO0FBQzFDO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELG1CQUFtQiw2Q0FBTTtBQUN6QjtBQUNBLDBCQUEwQixrREFBVztBQUNyQztBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0gsRUFBRSxnREFBUztBQUNYO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxTQUFTLHVEQUFLO0FBQ2Q7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILGVBQWUsc0RBQUk7QUFDbkI7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLLGdCQUFnQixzREFBSSxDQUFDLG1EQUFVO0FBQ3BDLFlBQVksNkNBQVM7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvVG9hc3QudHN4PzRkYjkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgQ2xvc2VJY29uIH0gZnJvbSBcIi4vaWNvbnNcIjtcbmltcG9ydCBcIi4vVG9hc3Quc2Nzc1wiO1xuaW1wb3J0IHsgVG9vbEJ1dHRvbiB9IGZyb20gXCIuL1Rvb2xCdXR0b25cIjtcbmNvbnN0IERFRkFVTFRfVE9BU1RfVElNRU9VVCA9IDUwMDA7XG5leHBvcnQgY29uc3QgVG9hc3QgPSAoe1xuICBtZXNzYWdlLFxuICBvbkNsb3NlLFxuICBjbG9zYWJsZSA9IGZhbHNlLFxuICAvLyBUbyBwcmV2ZW50IGF1dG9jbG9zZSwgcGFzcyBkdXJhdGlvbiBhcyBJbmZpbml0eVxuICBkdXJhdGlvbiA9IERFRkFVTFRfVE9BU1RfVElNRU9VVFxufSkgPT4ge1xuICBjb25zdCB0aW1lclJlZiA9IHVzZVJlZigwKTtcbiAgY29uc3Qgc2hvdWxkQXV0b0Nsb3NlID0gZHVyYXRpb24gIT09IEluZmluaXR5O1xuICBjb25zdCBzY2hlZHVsZVRpbWVvdXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKCFzaG91bGRBdXRvQ2xvc2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aW1lclJlZi5jdXJyZW50ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4gb25DbG9zZSgpLCBkdXJhdGlvbik7XG4gIH0sIFtvbkNsb3NlLCBkdXJhdGlvbiwgc2hvdWxkQXV0b0Nsb3NlXSk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFzaG91bGRBdXRvQ2xvc2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzY2hlZHVsZVRpbWVvdXQoKTtcbiAgICByZXR1cm4gKCkgPT4gY2xlYXJUaW1lb3V0KHRpbWVyUmVmLmN1cnJlbnQpO1xuICB9LCBbc2NoZWR1bGVUaW1lb3V0LCBtZXNzYWdlLCBkdXJhdGlvbiwgc2hvdWxkQXV0b0Nsb3NlXSk7XG4gIGNvbnN0IG9uTW91c2VFbnRlciA9IHNob3VsZEF1dG9DbG9zZSA/ICgpID0+IGNsZWFyVGltZW91dCh0aW1lclJlZiA9PT0gbnVsbCB8fCB0aW1lclJlZiA9PT0gdm9pZCAwID8gdm9pZCAwIDogdGltZXJSZWYuY3VycmVudCkgOiB1bmRlZmluZWQ7XG4gIGNvbnN0IG9uTW91c2VMZWF2ZSA9IHNob3VsZEF1dG9DbG9zZSA/IHNjaGVkdWxlVGltZW91dCA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIF9qc3hzKFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oe1xuICAgIGNsYXNzTmFtZTogXCJUb2FzdFwiLFxuICAgIG9uTW91c2VFbnRlcjogb25Nb3VzZUVudGVyLFxuICAgIG9uTW91c2VMZWF2ZTogb25Nb3VzZUxlYXZlXG4gIH0sIHtcbiAgICBjaGlsZHJlbjogW19qc3goXCJwXCIsIE9iamVjdC5hc3NpZ24oe1xuICAgICAgY2xhc3NOYW1lOiBcIlRvYXN0X19tZXNzYWdlXCJcbiAgICB9LCB7XG4gICAgICBjaGlsZHJlbjogbWVzc2FnZVxuICAgIH0pKSwgY2xvc2FibGUgJiYgX2pzeChUb29sQnV0dG9uLCB7XG4gICAgICBpY29uOiBDbG9zZUljb24sXG4gICAgICBcImFyaWEtbGFiZWxcIjogXCJjbG9zZVwiLFxuICAgICAgdHlwZTogXCJpY29uXCIsXG4gICAgICBvbkNsaWNrOiBvbkNsb3NlLFxuICAgICAgY2xhc3NOYW1lOiBcImNsb3NlXCJcbiAgICB9KV1cbiAgfSkpO1xufTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/Toast.tsx\n');
              }
            ),
            /***/
            "../../components/ToolButton.tsx": (
              /*!***************************************!*\
                !*** ../../components/ToolButton.tsx ***!
                \***************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "ToolButton": () => (/* binding */ ToolButton)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _ToolIcon_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ToolIcon.scss */ "../../components/ToolIcon.scss");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./App */ "../../components/App.tsx");\n/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../errors */ "../../errors.ts");\n/* harmony import */ var _Spinner__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Spinner */ "../../components/Spinner.tsx");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator["throw"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n\n\n\n\n\nconst ToolButton = react__WEBPACK_IMPORTED_MODULE_2___default().forwardRef((props, ref) => {\n  const {\n    id: excalId\n  } = (0,_App__WEBPACK_IMPORTED_MODULE_4__.useExcalidrawContainer)();\n  const innerRef = react__WEBPACK_IMPORTED_MODULE_2___default().useRef(null);\n  react__WEBPACK_IMPORTED_MODULE_2___default().useImperativeHandle(ref, () => innerRef.current);\n  const sizeCn = `ToolIcon_size_${props.size}`;\n  const [isLoading, setIsLoading] = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(false);\n  const isMountedRef = (0,react__WEBPACK_IMPORTED_MODULE_2__.useRef)(true);\n\n  const onClick = event => __awaiter(void 0, void 0, void 0, function* () {\n    var _a;\n\n    const ret = "onClick" in props && ((_a = props.onClick) === null || _a === void 0 ? void 0 : _a.call(props, event));\n\n    if (ret && "then" in ret) {\n      try {\n        setIsLoading(true);\n        yield ret;\n      } catch (error) {\n        if (!(error instanceof _errors__WEBPACK_IMPORTED_MODULE_5__.AbortError)) {\n          throw error;\n        } else {\n          console.warn(error);\n        }\n      } finally {\n        if (isMountedRef.current) {\n          setIsLoading(false);\n        }\n      }\n    }\n  });\n\n  (0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(() => {\n    isMountedRef.current = true;\n    return () => {\n      isMountedRef.current = false;\n    };\n  }, []);\n  const lastPointerTypeRef = (0,react__WEBPACK_IMPORTED_MODULE_2__.useRef)(null);\n\n  if (props.type === "button" || props.type === "icon" || props.type === "submit") {\n    const type = props.type === "icon" ? "button" : props.type;\n    return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("button", Object.assign({\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__["default"])("ToolIcon_type_button", sizeCn, props.className, props.visible && !props.hidden ? "ToolIcon_type_button--show" : "ToolIcon_type_button--hide", {\n        ToolIcon: !props.hidden,\n        "ToolIcon--selected": props.selected,\n        "ToolIcon--plain": props.type === "icon"\n      }),\n      style: props.style,\n      "data-testid": props["data-testid"],\n      hidden: props.hidden,\n      title: props.title,\n      "aria-label": props["aria-label"],\n      type: type,\n      onClick: onClick,\n      ref: innerRef,\n      disabled: isLoading || props.isLoading\n    }, {\n      children: [(props.icon || props.label) && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n        className: "ToolIcon__icon",\n        "aria-hidden": "true"\n      }, {\n        children: [props.icon || props.label, props.keyBindingLabel && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", Object.assign({\n          className: "ToolIcon__keybinding"\n        }, {\n          children: props.keyBindingLabel\n        })), props.isLoading && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Spinner__WEBPACK_IMPORTED_MODULE_6__["default"], {})]\n      })), props.showAriaLabel && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n        className: "ToolIcon__label"\n      }, {\n        children: [props["aria-label"], " ", isLoading && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Spinner__WEBPACK_IMPORTED_MODULE_6__["default"], {})]\n      })), props.children]\n    }));\n  }\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("label", Object.assign({\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__["default"])("ToolIcon", props.className),\n    title: props.title,\n    onPointerDown: event => {\n      var _a;\n\n      lastPointerTypeRef.current = event.pointerType || null;\n      (_a = props.onPointerDown) === null || _a === void 0 ? void 0 : _a.call(props, {\n        pointerType: event.pointerType || null\n      });\n    },\n    onPointerUp: () => {\n      requestAnimationFrame(() => {\n        lastPointerTypeRef.current = null;\n      });\n    }\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input", {\n      className: `ToolIcon_type_radio ${sizeCn}`,\n      type: "radio",\n      name: props.name,\n      "aria-label": props["aria-label"],\n      "aria-keyshortcuts": props["aria-keyshortcuts"],\n      "data-testid": props["data-testid"],\n      id: `${excalId}-${props.id}`,\n      onChange: () => {\n        var _a;\n\n        (_a = props.onChange) === null || _a === void 0 ? void 0 : _a.call(props, {\n          pointerType: lastPointerTypeRef.current\n        });\n      },\n      checked: props.checked,\n      ref: innerRef\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n      className: "ToolIcon__icon"\n    }, {\n      children: [props.icon, props.keyBindingLabel && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", Object.assign({\n        className: "ToolIcon__keybinding"\n      }, {\n        children: props.keyBindingLabel\n      }))]\n    }))]\n  }));\n});\nToolButton.defaultProps = {\n  visible: true,\n  className: "",\n  size: "medium"\n};\nToolButton.displayName = "ToolButton";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 9076 characters]\n//# sourceURL=webpack-internal:///../../components/ToolButton.tsx\n');
              }
            ),
            /***/
            "../../components/Tooltip.tsx": (
              /*!************************************!*\
                !*** ../../components/Tooltip.tsx ***!
                \************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "Tooltip": () => (/* binding */ Tooltip),\n/* harmony export */   "getTooltipDiv": () => (/* binding */ getTooltipDiv),\n/* harmony export */   "updateTooltipPosition": () => (/* binding */ updateTooltipPosition)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Tooltip_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Tooltip.scss */ "../../components/Tooltip.scss");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\nconst getTooltipDiv = () => {\n  const existingDiv = document.querySelector(".excalidraw-tooltip");\n\n  if (existingDiv) {\n    return existingDiv;\n  }\n\n  const div = document.createElement("div");\n  document.body.appendChild(div);\n  div.classList.add("excalidraw-tooltip");\n  return div;\n};\nconst updateTooltipPosition = (tooltip, item, position = "bottom") => {\n  const tooltipRect = tooltip.getBoundingClientRect();\n  const viewportWidth = window.innerWidth;\n  const viewportHeight = window.innerHeight;\n  const margin = 5;\n  let left = item.left + item.width / 2 - tooltipRect.width / 2;\n\n  if (left < 0) {\n    left = margin;\n  } else if (left + tooltipRect.width >= viewportWidth) {\n    left = viewportWidth - tooltipRect.width - margin;\n  }\n\n  let top;\n\n  if (position === "bottom") {\n    top = item.top + item.height + margin;\n\n    if (top + tooltipRect.height >= viewportHeight) {\n      top = item.top - tooltipRect.height - margin;\n    }\n  } else {\n    top = item.top - tooltipRect.height - margin;\n\n    if (top < 0) {\n      top = item.top + item.height + margin;\n    }\n  }\n\n  Object.assign(tooltip.style, {\n    top: `${top}px`,\n    left: `${left}px`\n  });\n};\n\nconst updateTooltip = (item, tooltip, label, long) => {\n  tooltip.classList.add("excalidraw-tooltip--visible");\n  tooltip.style.minWidth = long ? "50ch" : "10ch";\n  tooltip.style.maxWidth = long ? "50ch" : "15ch";\n  tooltip.textContent = label;\n  const itemRect = item.getBoundingClientRect();\n  updateTooltipPosition(tooltip, itemRect);\n};\n\nconst Tooltip = ({\n  children,\n  label,\n  long = false,\n  style\n}) => {\n  (0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(() => {\n    return () => getTooltipDiv().classList.remove("excalidraw-tooltip--visible");\n  }, []);\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: "excalidraw-tooltip-wrapper",\n    onPointerEnter: event => updateTooltip(event.currentTarget, getTooltipDiv(), label, long),\n    onPointerLeave: () => getTooltipDiv().classList.remove("excalidraw-tooltip--visible"),\n    style: style\n  }, {\n    children: children\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9Ub29sdGlwLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFnRDtBQUN4QjtBQUNpQjtBQUNsQztBQUNQOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFlBQVksSUFBSTtBQUNoQixhQUFhLEtBQUs7QUFDbEIsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCxFQUFFLGdEQUFTO0FBQ1g7QUFDQSxHQUFHO0FBQ0gsU0FBUyxzREFBSTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsR0FBRztBQUNIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvVG9vbHRpcC50c3g/YjA1MyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IFwiLi9Ub29sdGlwLnNjc3NcIjtcbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmV4cG9ydCBjb25zdCBnZXRUb29sdGlwRGl2ID0gKCkgPT4ge1xuICBjb25zdCBleGlzdGluZ0RpdiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuZXhjYWxpZHJhdy10b29sdGlwXCIpO1xuXG4gIGlmIChleGlzdGluZ0Rpdikge1xuICAgIHJldHVybiBleGlzdGluZ0RpdjtcbiAgfVxuXG4gIGNvbnN0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGl2KTtcbiAgZGl2LmNsYXNzTGlzdC5hZGQoXCJleGNhbGlkcmF3LXRvb2x0aXBcIik7XG4gIHJldHVybiBkaXY7XG59O1xuZXhwb3J0IGNvbnN0IHVwZGF0ZVRvb2x0aXBQb3NpdGlvbiA9ICh0b29sdGlwLCBpdGVtLCBwb3NpdGlvbiA9IFwiYm90dG9tXCIpID0+IHtcbiAgY29uc3QgdG9vbHRpcFJlY3QgPSB0b29sdGlwLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBjb25zdCB2aWV3cG9ydFdpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG4gIGNvbnN0IHZpZXdwb3J0SGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0O1xuICBjb25zdCBtYXJnaW4gPSA1O1xuICBsZXQgbGVmdCA9IGl0ZW0ubGVmdCArIGl0ZW0ud2lkdGggLyAyIC0gdG9vbHRpcFJlY3Qud2lkdGggLyAyO1xuXG4gIGlmIChsZWZ0IDwgMCkge1xuICAgIGxlZnQgPSBtYXJnaW47XG4gIH0gZWxzZSBpZiAobGVmdCArIHRvb2x0aXBSZWN0LndpZHRoID49IHZpZXdwb3J0V2lkdGgpIHtcbiAgICBsZWZ0ID0gdmlld3BvcnRXaWR0aCAtIHRvb2x0aXBSZWN0LndpZHRoIC0gbWFyZ2luO1xuICB9XG5cbiAgbGV0IHRvcDtcblxuICBpZiAocG9zaXRpb24gPT09IFwiYm90dG9tXCIpIHtcbiAgICB0b3AgPSBpdGVtLnRvcCArIGl0ZW0uaGVpZ2h0ICsgbWFyZ2luO1xuXG4gICAgaWYgKHRvcCArIHRvb2x0aXBSZWN0LmhlaWdodCA+PSB2aWV3cG9ydEhlaWdodCkge1xuICAgICAgdG9wID0gaXRlbS50b3AgLSB0b29sdGlwUmVjdC5oZWlnaHQgLSBtYXJnaW47XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRvcCA9IGl0ZW0udG9wIC0gdG9vbHRpcFJlY3QuaGVpZ2h0IC0gbWFyZ2luO1xuXG4gICAgaWYgKHRvcCA8IDApIHtcbiAgICAgIHRvcCA9IGl0ZW0udG9wICsgaXRlbS5oZWlnaHQgKyBtYXJnaW47XG4gICAgfVxuICB9XG5cbiAgT2JqZWN0LmFzc2lnbih0b29sdGlwLnN0eWxlLCB7XG4gICAgdG9wOiBgJHt0b3B9cHhgLFxuICAgIGxlZnQ6IGAke2xlZnR9cHhgXG4gIH0pO1xufTtcblxuY29uc3QgdXBkYXRlVG9vbHRpcCA9IChpdGVtLCB0b29sdGlwLCBsYWJlbCwgbG9uZykgPT4ge1xuICB0b29sdGlwLmNsYXNzTGlzdC5hZGQoXCJleGNhbGlkcmF3LXRvb2x0aXAtLXZpc2libGVcIik7XG4gIHRvb2x0aXAuc3R5bGUubWluV2lkdGggPSBsb25nID8gXCI1MGNoXCIgOiBcIjEwY2hcIjtcbiAgdG9vbHRpcC5zdHlsZS5tYXhXaWR0aCA9IGxvbmcgPyBcIjUwY2hcIiA6IFwiMTVjaFwiO1xuICB0b29sdGlwLnRleHRDb250ZW50ID0gbGFiZWw7XG4gIGNvbnN0IGl0ZW1SZWN0ID0gaXRlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgdXBkYXRlVG9vbHRpcFBvc2l0aW9uKHRvb2x0aXAsIGl0ZW1SZWN0KTtcbn07XG5cbmV4cG9ydCBjb25zdCBUb29sdGlwID0gKHtcbiAgY2hpbGRyZW4sXG4gIGxhYmVsLFxuICBsb25nID0gZmFsc2UsXG4gIHN0eWxlXG59KSA9PiB7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmV0dXJuICgpID0+IGdldFRvb2x0aXBEaXYoKS5jbGFzc0xpc3QucmVtb3ZlKFwiZXhjYWxpZHJhdy10b29sdGlwLS12aXNpYmxlXCIpO1xuICB9LCBbXSk7XG4gIHJldHVybiBfanN4KFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oe1xuICAgIGNsYXNzTmFtZTogXCJleGNhbGlkcmF3LXRvb2x0aXAtd3JhcHBlclwiLFxuICAgIG9uUG9pbnRlckVudGVyOiBldmVudCA9PiB1cGRhdGVUb29sdGlwKGV2ZW50LmN1cnJlbnRUYXJnZXQsIGdldFRvb2x0aXBEaXYoKSwgbGFiZWwsIGxvbmcpLFxuICAgIG9uUG9pbnRlckxlYXZlOiAoKSA9PiBnZXRUb29sdGlwRGl2KCkuY2xhc3NMaXN0LnJlbW92ZShcImV4Y2FsaWRyYXctdG9vbHRpcC0tdmlzaWJsZVwiKSxcbiAgICBzdHlsZTogc3R5bGVcbiAgfSwge1xuICAgIGNoaWxkcmVuOiBjaGlsZHJlblxuICB9KSk7XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/Tooltip.tsx\n');
              }
            ),
            /***/
            "../../components/Trans.tsx": (
              /*!**********************************!*\
                !*** ../../components/Trans.tsx ***!
                \**********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\nvar __rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n\n  if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n // Used for splitting i18nKey into tokens in Trans component\n// Example:\n// "Please <link>click {{location}}</link> to continue.".split(SPLIT_REGEX).filter(Boolean)\n// produces\n// ["Please ", "<link>", "click ", "{{location}}", "</link>", " to continue."]\n\nconst SPLIT_REGEX = /({{[\\w-]+}})|(<[\\w-]+>)|(<\\/[\\w-]+>)/g; // Used for extracting "location" from "{{location}}"\n\nconst KEY_REGEXP = /{{([\\w-]+)}}/; // Used for extracting "link" from "<link>"\n\nconst TAG_START_REGEXP = /<([\\w-]+)>/; // Used for extracting "link" from "</link>"\n\nconst TAG_END_REGEXP = /<\\/([\\w-]+)>/;\n\nconst getTransChildren = (format, props) => {\n  const stack = [{\n    name: "",\n    children: []\n  }];\n  format.split(SPLIT_REGEX).filter(Boolean).forEach(match => {\n    const tagStartMatch = match.match(TAG_START_REGEXP);\n    const tagEndMatch = match.match(TAG_END_REGEXP);\n    const keyMatch = match.match(KEY_REGEXP);\n\n    if (tagStartMatch !== null) {\n      // The match is <tag>. Set the tag name as the name if it\'s one of the\n      // props, e.g. for "Please <link>click the button</link> to continue"\n      // tagStartMatch[1] = "link" and props contain "link" then it will be\n      // pushed to stack.\n      const name = tagStartMatch[1];\n\n      if (props.hasOwnProperty(name)) {\n        stack.push({\n          name,\n          children: []\n        });\n      } else {\n        console.warn(`Trans: missed to pass in prop ${name} for interpolating ${format}`);\n      }\n    } else if (tagEndMatch !== null) {\n      // If tag end match is found, this means we need to replace the content with\n      // its actual value in prop e.g. format = "Please <link>click the\n      // button</link> to continue", tagEndMatch is for "</link>", stack last item name =\n      // "link" and props.link = (el) => <a\n      // href="https://example.com">{el}</a> then its prop value will be\n      // pushed to "link"\'s children so on DOM when rendering it\'s rendered as\n      // <a href="https://example.com">click the button</a>\n      const name = tagEndMatch[1];\n\n      if (name === stack[stack.length - 1].name) {\n        const item = stack.pop();\n        const itemChildren = react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), {}, ...item.children);\n        const fn = props[item.name];\n\n        if (typeof fn === "function") {\n          stack[stack.length - 1].children.push(fn(itemChildren));\n        }\n      } else {\n        console.warn(`Trans: unexpected end tag ${match} for interpolating ${format}`);\n      }\n    } else if (keyMatch !== null) {\n      // The match is for {{key}}. Check if the key is present in props and set\n      // the prop value as children of last stack item e.g. format = "Hello\n      // {{name}}", key = "name" and props.name = "Excalidraw" then its prop\n      // value will be pushed to "name"\'s children so it\'s rendered on DOM as\n      // "Hello Excalidraw"\n      const name = keyMatch[1];\n\n      if (props.hasOwnProperty(name)) {\n        stack[stack.length - 1].children.push(props[name]);\n      } else {\n        console.warn(`Trans: key ${name} not in props for interpolating ${format}`);\n      }\n    } else {\n      // If none of cases match means we just need to push the string\n      // to stack eg - "Hello {{name}} Whats up?" "Hello", "Whats up" will be pushed\n      stack[stack.length - 1].children.push(match);\n    }\n  });\n\n  if (stack.length !== 1) {\n    console.warn(`Trans: stack not empty for interpolating ${format}`);\n  }\n\n  return stack[0].children;\n};\n/*\nTrans component is used for translating JSX.\n\n```json\n{\n  "example1": "Hello {{audience}}",\n  "example2": "Please <link>click the button</link> to continue.",\n  "example3": "Please <link>click {{location}}</link> to continue.",\n  "example4": "Please <link>click <bold>{{location}}</bold></link> to continue.",\n}\n```\n\n```jsx\n<Trans i18nKey="example1" audience="world" />\n\n<Trans\n  i18nKey="example2"\n  connectLink={(el) => <a href="https://example.com">{el}</a>}\n/>\n\n<Trans\n  i18nKey="example3"\n  connectLink={(el) => <a href="https://example.com">{el}</a>}\n  location="the button"\n/>\n\n<Trans\n  i18nKey="example4"\n  connectLink={(el) => <a href="https://example.com">{el}</a>}\n  location="the button"\n  bold={(el) => <strong>{el}</strong>}\n/>\n```\n\nOutput:\n\n```html\nHello world\nPlease <a href="https://example.com">click the button</a> to continue.\nPlease <a href="https://example.com">click the button</a> to continue.\nPlease <a href="https://example.com">click <strong>the button</strong></a> to continue.\n```\n*/\n\n\nconst Trans = _a => {\n  var {\n    i18nKey,\n    children\n  } = _a,\n      props = __rest(_a, ["i18nKey", "children"]);\n\n  const {\n    t\n  } = (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.useI18n)(); // This is needed to avoid unique key error in list which gets rendered from getTransChildren\n\n  return react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), {}, ...getTransChildren(t(i18nKey), props));\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Trans);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 9320 characters]\n//# sourceURL=webpack-internal:///../../components/Trans.tsx\n');
              }
            ),
            /***/
            "../../components/UserList.tsx": (
              /*!*************************************!*\
                !*** ../../components/UserList.tsx ***!
                \*************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "UserList": () => (/* binding */ UserList)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _UserList_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./UserList.scss */ "../../components/UserList.scss");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _Tooltip__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Tooltip */ "../../components/Tooltip.tsx");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./App */ "../../components/App.tsx");\n\n\n\n\n\n\nconst UserList = ({\n  className,\n  mobile,\n  collaborators\n}) => {\n  const actionManager = (0,_App__WEBPACK_IMPORTED_MODULE_5__.useExcalidrawActionManager)();\n  const uniqueCollaborators = new Map();\n  collaborators.forEach((collaborator, socketId) => {\n    uniqueCollaborators.set( // filter on user id, else fall back on unique socketId\n    collaborator.id || socketId, collaborator);\n  });\n  const avatars = uniqueCollaborators.size > 0 && Array.from(uniqueCollaborators).filter(([_, client]) => Object.keys(client).length !== 0).map(([clientId, collaborator]) => {\n    const avatarJSX = actionManager.renderAction("goToCollaborator", [clientId, collaborator]);\n    return mobile ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Tooltip__WEBPACK_IMPORTED_MODULE_4__.Tooltip, Object.assign({\n      label: collaborator.username || "Unknown user"\n    }, {\n      children: avatarJSX\n    }), clientId) : (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)((react__WEBPACK_IMPORTED_MODULE_2___default().Fragment), {\n      children: avatarJSX\n    }, clientId);\n  });\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__["default"])("UserList", className, {\n      UserList_mobile: mobile\n    })\n  }, {\n    children: avatars\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9Vc2VyTGlzdC50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQWdEO0FBQ3ZCO0FBQ0M7QUFDRjtBQUNZO0FBQ2U7QUFDNUM7QUFDUDtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Qsd0JBQXdCLGdFQUEwQjtBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0Esb0JBQW9CLHNEQUFJLENBQUMsNkNBQU87QUFDaEM7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLLGVBQWUsc0RBQUksQ0FBQyx1REFBYztBQUN2QztBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0gsU0FBUyxzREFBSTtBQUNiLGVBQWUsZ0RBQUk7QUFDbkI7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0EsR0FBRztBQUNIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvVXNlckxpc3QudHN4PzYzN2MiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCBcIi4vVXNlckxpc3Quc2Nzc1wiO1xuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IGNsc3ggZnJvbSBcImNsc3hcIjtcbmltcG9ydCB7IFRvb2x0aXAgfSBmcm9tIFwiLi9Ub29sdGlwXCI7XG5pbXBvcnQgeyB1c2VFeGNhbGlkcmF3QWN0aW9uTWFuYWdlciB9IGZyb20gXCIuL0FwcFwiO1xuZXhwb3J0IGNvbnN0IFVzZXJMaXN0ID0gKHtcbiAgY2xhc3NOYW1lLFxuICBtb2JpbGUsXG4gIGNvbGxhYm9yYXRvcnNcbn0pID0+IHtcbiAgY29uc3QgYWN0aW9uTWFuYWdlciA9IHVzZUV4Y2FsaWRyYXdBY3Rpb25NYW5hZ2VyKCk7XG4gIGNvbnN0IHVuaXF1ZUNvbGxhYm9yYXRvcnMgPSBuZXcgTWFwKCk7XG4gIGNvbGxhYm9yYXRvcnMuZm9yRWFjaCgoY29sbGFib3JhdG9yLCBzb2NrZXRJZCkgPT4ge1xuICAgIHVuaXF1ZUNvbGxhYm9yYXRvcnMuc2V0KCAvLyBmaWx0ZXIgb24gdXNlciBpZCwgZWxzZSBmYWxsIGJhY2sgb24gdW5pcXVlIHNvY2tldElkXG4gICAgY29sbGFib3JhdG9yLmlkIHx8IHNvY2tldElkLCBjb2xsYWJvcmF0b3IpO1xuICB9KTtcbiAgY29uc3QgYXZhdGFycyA9IHVuaXF1ZUNvbGxhYm9yYXRvcnMuc2l6ZSA+IDAgJiYgQXJyYXkuZnJvbSh1bmlxdWVDb2xsYWJvcmF0b3JzKS5maWx0ZXIoKFtfLCBjbGllbnRdKSA9PiBPYmplY3Qua2V5cyhjbGllbnQpLmxlbmd0aCAhPT0gMCkubWFwKChbY2xpZW50SWQsIGNvbGxhYm9yYXRvcl0pID0+IHtcbiAgICBjb25zdCBhdmF0YXJKU1ggPSBhY3Rpb25NYW5hZ2VyLnJlbmRlckFjdGlvbihcImdvVG9Db2xsYWJvcmF0b3JcIiwgW2NsaWVudElkLCBjb2xsYWJvcmF0b3JdKTtcbiAgICByZXR1cm4gbW9iaWxlID8gX2pzeChUb29sdGlwLCBPYmplY3QuYXNzaWduKHtcbiAgICAgIGxhYmVsOiBjb2xsYWJvcmF0b3IudXNlcm5hbWUgfHwgXCJVbmtub3duIHVzZXJcIlxuICAgIH0sIHtcbiAgICAgIGNoaWxkcmVuOiBhdmF0YXJKU1hcbiAgICB9KSwgY2xpZW50SWQpIDogX2pzeChSZWFjdC5GcmFnbWVudCwge1xuICAgICAgY2hpbGRyZW46IGF2YXRhckpTWFxuICAgIH0sIGNsaWVudElkKTtcbiAgfSk7XG4gIHJldHVybiBfanN4KFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oe1xuICAgIGNsYXNzTmFtZTogY2xzeChcIlVzZXJMaXN0XCIsIGNsYXNzTmFtZSwge1xuICAgICAgVXNlckxpc3RfbW9iaWxlOiBtb2JpbGVcbiAgICB9KVxuICB9LCB7XG4gICAgY2hpbGRyZW46IGF2YXRhcnNcbiAgfSkpO1xufTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/UserList.tsx\n');
              }
            ),
            /***/
            "../../components/canvases/InteractiveCanvas.tsx": (
              /*!*******************************************************!*\
                !*** ../../components/canvases/InteractiveCanvas.tsx ***!
                \*******************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _renderer_renderScene__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../renderer/renderScene */ "../../renderer/renderScene.ts");
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../utils */ "../../utils.ts");
/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../constants */ "../../constants.ts");
/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../i18n */ "../../i18n.ts");







const InteractiveCanvas = props => {
  const isComponentMounted = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(false);
  (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {
    var _a;

    if (!isComponentMounted.current) {
      isComponentMounted.current = true;
      return;
    }

    const cursorButton = {};
    const pointerViewportCoords = {};
    const remoteSelectedElementIds = {};
    const pointerUsernames = {};
    const pointerUserStates = {};
    props.appState.collaborators.forEach((user, socketId) => {
      if (user.selectedElementIds) {
        for (const id of Object.keys(user.selectedElementIds)) {
          if (!(id in remoteSelectedElementIds)) {
            remoteSelectedElementIds[id] = [];
          }

          remoteSelectedElementIds[id].push(socketId);
        }
      }

      if (!user.pointer) {
        return;
      }

      if (user.username) {
        pointerUsernames[socketId] = user.username;
      }

      if (user.userState) {
        pointerUserStates[socketId] = user.userState;
      }

      pointerViewportCoords[socketId] = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.sceneCoordsToViewportCoords)({
        sceneX: user.pointer.x,
        sceneY: user.pointer.y
      }, props.appState);
      cursorButton[socketId] = user.button;
    });
    const selectionColor = ((_a = props.containerRef) === null || _a === void 0 ? void 0 : _a.current) && getComputedStyle(props.containerRef.current).getPropertyValue("--color-selection") || "#6965db";
    (0,_renderer_renderScene__WEBPACK_IMPORTED_MODULE_2__.renderInteractiveScene)({
      canvas: props.canvas,
      elements: props.elements,
      visibleElements: props.visibleElements,
      selectedElements: props.selectedElements,
      scale: window.devicePixelRatio,
      appState: props.appState,
      renderConfig: {
        remotePointerViewportCoords: pointerViewportCoords,
        remotePointerButton: cursorButton,
        remoteSelectedElementIds,
        remotePointerUsernames: pointerUsernames,
        remotePointerUserStates: pointerUserStates,
        selectionColor,
        renderScrollbars: false
      },
      callback: props.renderInteractiveSceneCallback
    }, (0,_utils__WEBPACK_IMPORTED_MODULE_3__.isRenderThrottlingEnabled)());
  });
  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("canvas", Object.assign({
    className: "excalidraw__canvas interactive",
    style: {
      width: props.appState.width,
      height: props.appState.height,
      cursor: props.appState.viewModeEnabled ? _constants__WEBPACK_IMPORTED_MODULE_4__.CURSOR_TYPE.GRAB : _constants__WEBPACK_IMPORTED_MODULE_4__.CURSOR_TYPE.AUTO
    },
    width: props.appState.width * props.scale,
    height: props.appState.height * props.scale,
    ref: props.handleCanvasRef,
    onContextMenu: props.onContextMenu,
    onPointerMove: props.onPointerMove,
    onPointerUp: props.onPointerUp,
    onPointerCancel: props.onPointerCancel,
    onTouchMove: props.onTouchMove,
    onPointerDown: props.onPointerDown,
    onDoubleClick: props.appState.viewModeEnabled ? undefined : props.onDoubleClick
  }, {
    children: (0,_i18n__WEBPACK_IMPORTED_MODULE_5__.t)("labels.drawingCanvas")
  }));
};

const getRelevantAppStateProps = appState => ({
  zoom: appState.zoom,
  scrollX: appState.scrollX,
  scrollY: appState.scrollY,
  width: appState.width,
  height: appState.height,
  viewModeEnabled: appState.viewModeEnabled,
  editingGroupId: appState.editingGroupId,
  editingLinearElement: appState.editingLinearElement,
  selectedElementIds: appState.selectedElementIds,
  frameToHighlight: appState.frameToHighlight,
  offsetLeft: appState.offsetLeft,
  offsetTop: appState.offsetTop,
  theme: appState.theme,
  pendingImageElementId: appState.pendingImageElementId,
  selectionElement: appState.selectionElement,
  selectedGroupIds: appState.selectedGroupIds,
  selectedLinearElement: appState.selectedLinearElement,
  multiElement: appState.multiElement,
  isBindingEnabled: appState.isBindingEnabled,
  suggestedBindings: appState.suggestedBindings,
  isRotating: appState.isRotating,
  elementsToHighlight: appState.elementsToHighlight,
  openSidebar: appState.openSidebar,
  showHyperlinkPopup: appState.showHyperlinkPopup,
  collaborators: appState.collaborators,
  activeEmbeddable: appState.activeEmbeddable,
  snapLines: appState.snapLines,
  zenModeEnabled: appState.zenModeEnabled
});

const areEqual = (prevProps, nextProps) => {
  // This could be further optimised if needed, as we don't have to render interactive canvas on each scene mutation
  if (prevProps.selectionNonce !== nextProps.selectionNonce || prevProps.versionNonce !== nextProps.versionNonce || prevProps.scale !== nextProps.scale || // we need to memoize on element arrays because they may have renewed
  // even if versionNonce didn't change (e.g. we filter elements out based
  // on appState)
  prevProps.elements !== nextProps.elements || prevProps.visibleElements !== nextProps.visibleElements || prevProps.selectedElements !== nextProps.selectedElements) {
    return false;
  } // Comparing the interactive appState for changes in case of some edge cases


  return (0,_utils__WEBPACK_IMPORTED_MODULE_3__.isShallowEqual)( // asserting AppState because we're being passed the whole AppState
  // but resolve to only the InteractiveCanvas-relevant props
  getRelevantAppStateProps(prevProps.appState), getRelevantAppStateProps(nextProps.appState));
};

/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (react__WEBPACK_IMPORTED_MODULE_1___default().memo(InteractiveCanvas, areEqual));//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 8900 characters]
//# sourceURL=webpack-internal:///../../components/canvases/InteractiveCanvas.tsx
`);
              }
            ),
            /***/
            "../../components/canvases/StaticCanvas.tsx": (
              /*!**************************************************!*\
                !*** ../../components/canvases/StaticCanvas.tsx ***!
                \**************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _renderer_renderScene__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../renderer/renderScene */ "../../renderer/renderScene.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../utils */ "../../utils.ts");\n\n\n\n\n\nconst StaticCanvas = props => {\n  const wrapperRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n  const isComponentMounted = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(false);\n  (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {\n    const wrapper = wrapperRef.current;\n\n    if (!wrapper) {\n      return;\n    }\n\n    const canvas = props.canvas;\n\n    if (!isComponentMounted.current) {\n      isComponentMounted.current = true;\n      wrapper.replaceChildren(canvas);\n      canvas.classList.add("excalidraw__canvas", "static");\n    }\n\n    const widthString = `${props.appState.width}px`;\n    const heightString = `${props.appState.height}px`;\n\n    if (canvas.style.width !== widthString) {\n      canvas.style.width = widthString;\n    }\n\n    if (canvas.style.height !== heightString) {\n      canvas.style.height = heightString;\n    }\n\n    const scaledWidth = props.appState.width * props.scale;\n    const scaledHeight = props.appState.height * props.scale; // setting width/height resets the canvas even if dimensions not changed,\n    // which would cause flicker when we skip frame (due to throttling)\n\n    if (canvas.width !== scaledWidth) {\n      canvas.width = scaledWidth;\n    }\n\n    if (canvas.height !== scaledHeight) {\n      canvas.height = scaledHeight;\n    }\n\n    (0,_renderer_renderScene__WEBPACK_IMPORTED_MODULE_2__.renderStaticScene)({\n      canvas,\n      rc: props.rc,\n      scale: props.scale,\n      elements: props.elements,\n      visibleElements: props.visibleElements,\n      appState: props.appState,\n      renderConfig: props.renderConfig\n    }, (0,_utils__WEBPACK_IMPORTED_MODULE_3__.isRenderThrottlingEnabled)());\n  });\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n    className: "excalidraw__canvas-wrapper",\n    ref: wrapperRef\n  });\n};\n\nconst getRelevantAppStateProps = appState => ({\n  zoom: appState.zoom,\n  scrollX: appState.scrollX,\n  scrollY: appState.scrollY,\n  width: appState.width,\n  height: appState.height,\n  viewModeEnabled: appState.viewModeEnabled,\n  offsetLeft: appState.offsetLeft,\n  offsetTop: appState.offsetTop,\n  theme: appState.theme,\n  pendingImageElementId: appState.pendingImageElementId,\n  shouldCacheIgnoreZoom: appState.shouldCacheIgnoreZoom,\n  viewBackgroundColor: appState.viewBackgroundColor,\n  exportScale: appState.exportScale,\n  selectedElementsAreBeingDragged: appState.selectedElementsAreBeingDragged,\n  gridSize: appState.gridSize,\n  frameRendering: appState.frameRendering,\n  selectedElementIds: appState.selectedElementIds,\n  frameToHighlight: appState.frameToHighlight,\n  editingGroupId: appState.editingGroupId\n});\n\nconst areEqual = (prevProps, nextProps) => {\n  if (prevProps.versionNonce !== nextProps.versionNonce || prevProps.scale !== nextProps.scale || // we need to memoize on element arrays because they may have renewed\n  // even if versionNonce didn\'t change (e.g. we filter elements out based\n  // on appState)\n  prevProps.elements !== nextProps.elements || prevProps.visibleElements !== nextProps.visibleElements) {\n    return false;\n  }\n\n  return (0,_utils__WEBPACK_IMPORTED_MODULE_3__.isShallowEqual)( // asserting AppState because we\'re being passed the whole AppState\n  // but resolve to only the StaticCanvas-relevant props\n  getRelevantAppStateProps(prevProps.appState), getRelevantAppStateProps(nextProps.appState)) && (0,_utils__WEBPACK_IMPORTED_MODULE_3__.isShallowEqual)(prevProps.renderConfig, nextProps.renderConfig);\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (react__WEBPACK_IMPORTED_MODULE_1___default().memo(StaticCanvas, areEqual));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5780 characters]\n//# sourceURL=webpack-internal:///../../components/canvases/StaticCanvas.tsx\n');
              }
            ),
            /***/
            "../../components/canvases/index.tsx": (
              /*!*******************************************!*\
                !*** ../../components/canvases/index.tsx ***!
                \*******************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "InteractiveCanvas": () => (/* reexport safe */ _InteractiveCanvas__WEBPACK_IMPORTED_MODULE_0__["default"]),\n/* harmony export */   "StaticCanvas": () => (/* reexport safe */ _StaticCanvas__WEBPACK_IMPORTED_MODULE_1__["default"])\n/* harmony export */ });\n/* harmony import */ var _InteractiveCanvas__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./InteractiveCanvas */ "../../components/canvases/InteractiveCanvas.tsx");\n/* harmony import */ var _StaticCanvas__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./StaticCanvas */ "../../components/canvases/StaticCanvas.tsx");\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9jYW52YXNlcy9pbmRleC50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFvRDtBQUNWIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvY2FudmFzZXMvaW5kZXgudHN4PzMyODciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEludGVyYWN0aXZlQ2FudmFzIGZyb20gXCIuL0ludGVyYWN0aXZlQ2FudmFzXCI7XG5pbXBvcnQgU3RhdGljQ2FudmFzIGZyb20gXCIuL1N0YXRpY0NhbnZhc1wiO1xuZXhwb3J0IHsgSW50ZXJhY3RpdmVDYW52YXMsIFN0YXRpY0NhbnZhcyB9OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/canvases/index.tsx\n');
              }
            ),
            /***/
            "../../components/dropdownMenu/DropdownMenu.tsx": (
              /*!******************************************************!*\
                !*** ../../components/dropdownMenu/DropdownMenu.tsx ***!
                \******************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _DropdownMenuTrigger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./DropdownMenuTrigger */ "../../components/dropdownMenu/DropdownMenuTrigger.tsx");\n/* harmony import */ var _DropdownMenuItem__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./DropdownMenuItem */ "../../components/dropdownMenu/DropdownMenuItem.tsx");\n/* harmony import */ var _DropdownMenuSeparator__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./DropdownMenuSeparator */ "../../components/dropdownMenu/DropdownMenuSeparator.tsx");\n/* harmony import */ var _DropdownMenuGroup__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./DropdownMenuGroup */ "../../components/dropdownMenu/DropdownMenuGroup.tsx");\n/* harmony import */ var _DropdownMenuContent__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./DropdownMenuContent */ "../../components/dropdownMenu/DropdownMenuContent.tsx");\n/* harmony import */ var _DropdownMenuItemLink__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./DropdownMenuItemLink */ "../../components/dropdownMenu/DropdownMenuItemLink.tsx");\n/* harmony import */ var _DropdownMenuItemCustom__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./DropdownMenuItemCustom */ "../../components/dropdownMenu/DropdownMenuItemCustom.tsx");\n/* harmony import */ var _dropdownMenuUtils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./dropdownMenuUtils */ "../../components/dropdownMenu/dropdownMenuUtils.ts");\n/* harmony import */ var _DropdownMenu_scss__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./DropdownMenu.scss */ "../../components/dropdownMenu/DropdownMenu.scss");\n\n\n\n\n\n\n\n\n\n\n\n\nconst DropdownMenu = ({\n  children,\n  open\n}) => {\n  const MenuTriggerComp = (0,_dropdownMenuUtils__WEBPACK_IMPORTED_MODULE_9__.getMenuTriggerComponent)(children);\n  const MenuContentComp = (0,_dropdownMenuUtils__WEBPACK_IMPORTED_MODULE_9__.getMenuContentComponent)(children);\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n    children: [MenuTriggerComp, open && MenuContentComp]\n  });\n};\n\nDropdownMenu.Trigger = _DropdownMenuTrigger__WEBPACK_IMPORTED_MODULE_2__["default"];\nDropdownMenu.Content = _DropdownMenuContent__WEBPACK_IMPORTED_MODULE_6__["default"];\nDropdownMenu.Item = _DropdownMenuItem__WEBPACK_IMPORTED_MODULE_3__["default"];\nDropdownMenu.ItemLink = _DropdownMenuItemLink__WEBPACK_IMPORTED_MODULE_7__["default"];\nDropdownMenu.ItemCustom = _DropdownMenuItemCustom__WEBPACK_IMPORTED_MODULE_8__["default"];\nDropdownMenu.Group = _DropdownMenuGroup__WEBPACK_IMPORTED_MODULE_5__["default"];\nDropdownMenu.Separator = _DropdownMenuSeparator__WEBPACK_IMPORTED_MODULE_4__["default"];\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (DropdownMenu);\nDropdownMenu.displayName = "DropdownMenu";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9kcm9wZG93bk1lbnUvRHJvcGRvd25NZW51LnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUF5RTtBQUMvQztBQUM4QjtBQUNOO0FBQ0U7QUFDQTtBQUNJO0FBQ0U7QUFDSTtBQUN5QjtBQUMxRDs7QUFFN0I7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELDBCQUEwQiwyRUFBdUI7QUFDakQsMEJBQTBCLDJFQUF1QjtBQUNqRCxTQUFTLHVEQUFLLENBQUMsdURBQVM7QUFDeEI7QUFDQSxHQUFHO0FBQ0g7O0FBRUEsdUJBQXVCLDREQUFtQjtBQUMxQyx1QkFBdUIsNERBQW1CO0FBQzFDLG9CQUFvQix5REFBZ0I7QUFDcEMsd0JBQXdCLDZEQUFvQjtBQUM1QywwQkFBMEIsK0RBQXNCO0FBQ2hELHFCQUFxQiwwREFBaUI7QUFDdEMseUJBQXlCLDhEQUFhO0FBQ3RDLGlFQUFlLFlBQVksRUFBQztBQUM1QiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL2Ryb3Bkb3duTWVudS9Ecm9wZG93bk1lbnUudHN4PzY1ZGUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRnJhZ21lbnQgYXMgX0ZyYWdtZW50LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgRHJvcGRvd25NZW51VHJpZ2dlciBmcm9tIFwiLi9Ecm9wZG93bk1lbnVUcmlnZ2VyXCI7XG5pbXBvcnQgRHJvcGRvd25NZW51SXRlbSBmcm9tIFwiLi9Ecm9wZG93bk1lbnVJdGVtXCI7XG5pbXBvcnQgTWVudVNlcGFyYXRvciBmcm9tIFwiLi9Ecm9wZG93bk1lbnVTZXBhcmF0b3JcIjtcbmltcG9ydCBEcm9wZG93bk1lbnVHcm91cCBmcm9tIFwiLi9Ecm9wZG93bk1lbnVHcm91cFwiO1xuaW1wb3J0IERyb3Bkb3duTWVudUNvbnRlbnQgZnJvbSBcIi4vRHJvcGRvd25NZW51Q29udGVudFwiO1xuaW1wb3J0IERyb3Bkb3duTWVudUl0ZW1MaW5rIGZyb20gXCIuL0Ryb3Bkb3duTWVudUl0ZW1MaW5rXCI7XG5pbXBvcnQgRHJvcGRvd25NZW51SXRlbUN1c3RvbSBmcm9tIFwiLi9Ecm9wZG93bk1lbnVJdGVtQ3VzdG9tXCI7XG5pbXBvcnQgeyBnZXRNZW51Q29udGVudENvbXBvbmVudCwgZ2V0TWVudVRyaWdnZXJDb21wb25lbnQgfSBmcm9tIFwiLi9kcm9wZG93bk1lbnVVdGlsc1wiO1xuaW1wb3J0IFwiLi9Ecm9wZG93bk1lbnUuc2Nzc1wiO1xuXG5jb25zdCBEcm9wZG93bk1lbnUgPSAoe1xuICBjaGlsZHJlbixcbiAgb3BlblxufSkgPT4ge1xuICBjb25zdCBNZW51VHJpZ2dlckNvbXAgPSBnZXRNZW51VHJpZ2dlckNvbXBvbmVudChjaGlsZHJlbik7XG4gIGNvbnN0IE1lbnVDb250ZW50Q29tcCA9IGdldE1lbnVDb250ZW50Q29tcG9uZW50KGNoaWxkcmVuKTtcbiAgcmV0dXJuIF9qc3hzKF9GcmFnbWVudCwge1xuICAgIGNoaWxkcmVuOiBbTWVudVRyaWdnZXJDb21wLCBvcGVuICYmIE1lbnVDb250ZW50Q29tcF1cbiAgfSk7XG59O1xuXG5Ecm9wZG93bk1lbnUuVHJpZ2dlciA9IERyb3Bkb3duTWVudVRyaWdnZXI7XG5Ecm9wZG93bk1lbnUuQ29udGVudCA9IERyb3Bkb3duTWVudUNvbnRlbnQ7XG5Ecm9wZG93bk1lbnUuSXRlbSA9IERyb3Bkb3duTWVudUl0ZW07XG5Ecm9wZG93bk1lbnUuSXRlbUxpbmsgPSBEcm9wZG93bk1lbnVJdGVtTGluaztcbkRyb3Bkb3duTWVudS5JdGVtQ3VzdG9tID0gRHJvcGRvd25NZW51SXRlbUN1c3RvbTtcbkRyb3Bkb3duTWVudS5Hcm91cCA9IERyb3Bkb3duTWVudUdyb3VwO1xuRHJvcGRvd25NZW51LlNlcGFyYXRvciA9IE1lbnVTZXBhcmF0b3I7XG5leHBvcnQgZGVmYXVsdCBEcm9wZG93bk1lbnU7XG5Ecm9wZG93bk1lbnUuZGlzcGxheU5hbWUgPSBcIkRyb3Bkb3duTWVudVwiOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/dropdownMenu/DropdownMenu.tsx\n');
              }
            ),
            /***/
            "../../components/dropdownMenu/DropdownMenuContent.tsx": (
              /*!*************************************************************!*\
                !*** ../../components/dropdownMenu/DropdownMenuContent.tsx ***!
                \*************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Island__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Island */ "../../components/Island.tsx");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../App */ "../../components/App.tsx");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _Stack__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../Stack */ "../../components/Stack.tsx");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./common */ "../../components/dropdownMenu/common.ts");\n/* harmony import */ var _hooks_useOutsideClick__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../hooks/useOutsideClick */ "../../hooks/useOutsideClick.ts");\n\n\n\n\n\n\n\n\n\nconst MenuContent = ({\n  children,\n  onClickOutside,\n  className = "",\n  onSelect,\n  style\n}) => {\n  const device = (0,_App__WEBPACK_IMPORTED_MODULE_2__.useDevice)();\n  const menuRef = (0,react__WEBPACK_IMPORTED_MODULE_5__.useRef)(null);\n  (0,_hooks_useOutsideClick__WEBPACK_IMPORTED_MODULE_7__.useOutsideClick)(menuRef, () => {\n    onClickOutside === null || onClickOutside === void 0 ? void 0 : onClickOutside();\n  });\n  const classNames = (0,clsx__WEBPACK_IMPORTED_MODULE_3__["default"])(`dropdown-menu ${className}`, {\n    "dropdown-menu--mobile": device.editor.isMobile\n  }).trim();\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_common__WEBPACK_IMPORTED_MODULE_6__.DropdownMenuContentPropsContext.Provider, Object.assign({\n    value: {\n      onSelect\n    }\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      ref: menuRef,\n      className: classNames,\n      style: style,\n      "data-testid": "dropdown-menu"\n    }, {\n      children: device.editor.isMobile ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Stack__WEBPACK_IMPORTED_MODULE_4__["default"].Col, Object.assign({\n        className: "dropdown-menu-container"\n      }, {\n        children: children\n      })) : (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Island__WEBPACK_IMPORTED_MODULE_1__.Island, Object.assign({\n        className: "dropdown-menu-container",\n        padding: 2,\n        style: {\n          zIndex: 2\n        }\n      }, {\n        children: children\n      }))\n    }))\n  }));\n};\n\nMenuContent.displayName = "DropdownMenuContent";\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (MenuContent);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9kcm9wZG93bk1lbnUvRHJvcGRvd25NZW51Q29udGVudC50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBZ0Q7QUFDYjtBQUNBO0FBQ1g7QUFDSztBQUNTO0FBQ3FCO0FBQ0c7O0FBRTlEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCxpQkFBaUIsK0NBQVM7QUFDMUIsa0JBQWtCLDZDQUFNO0FBQ3hCLEVBQUUsdUVBQWU7QUFDakI7QUFDQSxHQUFHO0FBQ0gscUJBQXFCLGdEQUFJLGtCQUFrQixVQUFVO0FBQ3JEO0FBQ0EsR0FBRztBQUNILFNBQVMsc0RBQUksQ0FBQyw2RUFBd0M7QUFDdEQ7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILGNBQWMsc0RBQUk7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wseUNBQXlDLHNEQUFJLENBQUMsa0RBQVM7QUFDdkQ7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPLEtBQUssc0RBQUksQ0FBQywyQ0FBTTtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTCxHQUFHO0FBQ0g7O0FBRUE7QUFDQSxpRUFBZSxXQUFXIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvZHJvcGRvd25NZW51L0Ryb3Bkb3duTWVudUNvbnRlbnQudHN4Pzg2OTAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IElzbGFuZCB9IGZyb20gXCIuLi9Jc2xhbmRcIjtcbmltcG9ydCB7IHVzZURldmljZSB9IGZyb20gXCIuLi9BcHBcIjtcbmltcG9ydCBjbHN4IGZyb20gXCJjbHN4XCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIi4uL1N0YWNrXCI7XG5pbXBvcnQgUmVhY3QsIHsgdXNlUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBEcm9wZG93bk1lbnVDb250ZW50UHJvcHNDb250ZXh0IH0gZnJvbSBcIi4vY29tbW9uXCI7XG5pbXBvcnQgeyB1c2VPdXRzaWRlQ2xpY2sgfSBmcm9tIFwiLi4vLi4vaG9va3MvdXNlT3V0c2lkZUNsaWNrXCI7XG5cbmNvbnN0IE1lbnVDb250ZW50ID0gKHtcbiAgY2hpbGRyZW4sXG4gIG9uQ2xpY2tPdXRzaWRlLFxuICBjbGFzc05hbWUgPSBcIlwiLFxuICBvblNlbGVjdCxcbiAgc3R5bGVcbn0pID0+IHtcbiAgY29uc3QgZGV2aWNlID0gdXNlRGV2aWNlKCk7XG4gIGNvbnN0IG1lbnVSZWYgPSB1c2VSZWYobnVsbCk7XG4gIHVzZU91dHNpZGVDbGljayhtZW51UmVmLCAoKSA9PiB7XG4gICAgb25DbGlja091dHNpZGUgPT09IG51bGwgfHwgb25DbGlja091dHNpZGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2xpY2tPdXRzaWRlKCk7XG4gIH0pO1xuICBjb25zdCBjbGFzc05hbWVzID0gY2xzeChgZHJvcGRvd24tbWVudSAke2NsYXNzTmFtZX1gLCB7XG4gICAgXCJkcm9wZG93bi1tZW51LS1tb2JpbGVcIjogZGV2aWNlLmVkaXRvci5pc01vYmlsZVxuICB9KS50cmltKCk7XG4gIHJldHVybiBfanN4KERyb3Bkb3duTWVudUNvbnRlbnRQcm9wc0NvbnRleHQuUHJvdmlkZXIsIE9iamVjdC5hc3NpZ24oe1xuICAgIHZhbHVlOiB7XG4gICAgICBvblNlbGVjdFxuICAgIH1cbiAgfSwge1xuICAgIGNoaWxkcmVuOiBfanN4KFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oe1xuICAgICAgcmVmOiBtZW51UmVmLFxuICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzLFxuICAgICAgc3R5bGU6IHN0eWxlLFxuICAgICAgXCJkYXRhLXRlc3RpZFwiOiBcImRyb3Bkb3duLW1lbnVcIlxuICAgIH0sIHtcbiAgICAgIGNoaWxkcmVuOiBkZXZpY2UuZWRpdG9yLmlzTW9iaWxlID8gX2pzeChTdGFjay5Db2wsIE9iamVjdC5hc3NpZ24oe1xuICAgICAgICBjbGFzc05hbWU6IFwiZHJvcGRvd24tbWVudS1jb250YWluZXJcIlxuICAgICAgfSwge1xuICAgICAgICBjaGlsZHJlbjogY2hpbGRyZW5cbiAgICAgIH0pKSA6IF9qc3goSXNsYW5kLCBPYmplY3QuYXNzaWduKHtcbiAgICAgICAgY2xhc3NOYW1lOiBcImRyb3Bkb3duLW1lbnUtY29udGFpbmVyXCIsXG4gICAgICAgIHBhZGRpbmc6IDIsXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgekluZGV4OiAyXG4gICAgICAgIH1cbiAgICAgIH0sIHtcbiAgICAgICAgY2hpbGRyZW46IGNoaWxkcmVuXG4gICAgICB9KSlcbiAgICB9KSlcbiAgfSkpO1xufTtcblxuTWVudUNvbnRlbnQuZGlzcGxheU5hbWUgPSBcIkRyb3Bkb3duTWVudUNvbnRlbnRcIjtcbmV4cG9ydCBkZWZhdWx0IE1lbnVDb250ZW50OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/dropdownMenu/DropdownMenuContent.tsx\n');
              }
            ),
            /***/
            "../../components/dropdownMenu/DropdownMenuGroup.tsx": (
              /*!***********************************************************!*\
                !*** ../../components/dropdownMenu/DropdownMenuGroup.tsx ***!
                \***********************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n\n\n\nconst MenuGroup = ({\n  children,\n  className = "",\n  style,\n  title\n}) => {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n    className: `dropdown-menu-group ${className}`,\n    style: style\n  }, {\n    children: [title && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("p", Object.assign({\n      className: "dropdown-menu-group-title"\n    }, {\n      children: title\n    })), children]\n  }));\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (MenuGroup);\nMenuGroup.displayName = "DropdownMenuGroup";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9kcm9wZG93bk1lbnUvRHJvcGRvd25NZW51R3JvdXAudHN4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQStEO0FBQ3JDOztBQUUxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELFNBQVMsdURBQUs7QUFDZCxzQ0FBc0MsVUFBVTtBQUNoRDtBQUNBLEdBQUc7QUFDSCx3QkFBd0Isc0RBQUk7QUFDNUI7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIOztBQUVBLGlFQUFlLFNBQVMsRUFBQztBQUN6QiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL2Ryb3Bkb3duTWVudS9Ecm9wZG93bk1lbnVHcm91cC50c3g/N2NhZCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5jb25zdCBNZW51R3JvdXAgPSAoe1xuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lID0gXCJcIixcbiAgc3R5bGUsXG4gIHRpdGxlXG59KSA9PiB7XG4gIHJldHVybiBfanN4cyhcImRpdlwiLCBPYmplY3QuYXNzaWduKHtcbiAgICBjbGFzc05hbWU6IGBkcm9wZG93bi1tZW51LWdyb3VwICR7Y2xhc3NOYW1lfWAsXG4gICAgc3R5bGU6IHN0eWxlXG4gIH0sIHtcbiAgICBjaGlsZHJlbjogW3RpdGxlICYmIF9qc3goXCJwXCIsIE9iamVjdC5hc3NpZ24oe1xuICAgICAgY2xhc3NOYW1lOiBcImRyb3Bkb3duLW1lbnUtZ3JvdXAtdGl0bGVcIlxuICAgIH0sIHtcbiAgICAgIGNoaWxkcmVuOiB0aXRsZVxuICAgIH0pKSwgY2hpbGRyZW5dXG4gIH0pKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE1lbnVHcm91cDtcbk1lbnVHcm91cC5kaXNwbGF5TmFtZSA9IFwiRHJvcGRvd25NZW51R3JvdXBcIjsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/dropdownMenu/DropdownMenuGroup.tsx\n');
              }
            ),
            /***/
            "../../components/dropdownMenu/DropdownMenuItem.tsx": (
              /*!**********************************************************!*\
                !*** ../../components/dropdownMenu/DropdownMenuItem.tsx ***!
                \**********************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./common */ "../../components/dropdownMenu/common.ts");\n/* harmony import */ var _DropdownMenuItemContent__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./DropdownMenuItemContent */ "../../components/dropdownMenu/DropdownMenuItemContent.tsx");\nvar __rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n\n  if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\n\nconst DropdownMenuItem = _a => {\n  var _b;\n\n  var {\n    icon,\n    onSelect,\n    children,\n    shortcut,\n    className,\n    selected\n  } = _a,\n      rest = __rest(_a, ["icon", "onSelect", "children", "shortcut", "className", "selected"]);\n\n  const handleClick = (0,_common__WEBPACK_IMPORTED_MODULE_2__.useHandleDropdownMenuItemClick)(rest.onClick, onSelect);\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("button", Object.assign({}, rest, {\n    onClick: handleClick,\n    type: "button",\n    className: (0,_common__WEBPACK_IMPORTED_MODULE_2__.getDropdownMenuItemClassName)(className, selected),\n    title: (_b = rest.title) !== null && _b !== void 0 ? _b : rest["aria-label"]\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_DropdownMenuItemContent__WEBPACK_IMPORTED_MODULE_3__["default"], Object.assign({\n      icon: icon,\n      shortcut: shortcut\n    }, {\n      children: children\n    }))\n  }));\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (DropdownMenuItem);\nDropdownMenuItem.displayName = "DropdownMenuItem";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9kcm9wZG93bk1lbnUvRHJvcGRvd25NZW51SXRlbS50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLGFBQWEsU0FBSSxJQUFJLFNBQUk7QUFDekI7O0FBRUE7O0FBRUEsNEhBQTRILGNBQWM7QUFDMUk7QUFDQTtBQUNBO0FBQ0E7O0FBRWdEO0FBQ3RCO0FBQzhEO0FBQ2hDOztBQUV4RDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKOztBQUVBLHNCQUFzQix1RUFBOEI7QUFDcEQsU0FBUyxzREFBSSwyQkFBMkI7QUFDeEM7QUFDQTtBQUNBLGVBQWUscUVBQTRCO0FBQzNDO0FBQ0EsR0FBRztBQUNILGNBQWMsc0RBQUksQ0FBQyxnRUFBZTtBQUNsQztBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDs7QUFFQSxpRUFBZSxnQkFBZ0IsRUFBQztBQUNoQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL2Ryb3Bkb3duTWVudS9Ecm9wZG93bk1lbnVJdGVtLnRzeD80ZjkyIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBfX3Jlc3QgPSB0aGlzICYmIHRoaXMuX19yZXN0IHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gIHZhciB0ID0ge307XG5cbiAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApIHRbcF0gPSBzW3BdO1xuXG4gIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIikgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSkgdFtwW2ldXSA9IHNbcFtpXV07XG4gIH1cbiAgcmV0dXJuIHQ7XG59O1xuXG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgZ2V0RHJvcGRvd25NZW51SXRlbUNsYXNzTmFtZSwgdXNlSGFuZGxlRHJvcGRvd25NZW51SXRlbUNsaWNrIH0gZnJvbSBcIi4vY29tbW9uXCI7XG5pbXBvcnQgTWVudUl0ZW1Db250ZW50IGZyb20gXCIuL0Ryb3Bkb3duTWVudUl0ZW1Db250ZW50XCI7XG5cbmNvbnN0IERyb3Bkb3duTWVudUl0ZW0gPSBfYSA9PiB7XG4gIHZhciBfYjtcblxuICB2YXIge1xuICAgIGljb24sXG4gICAgb25TZWxlY3QsXG4gICAgY2hpbGRyZW4sXG4gICAgc2hvcnRjdXQsXG4gICAgY2xhc3NOYW1lLFxuICAgIHNlbGVjdGVkXG4gIH0gPSBfYSxcbiAgICAgIHJlc3QgPSBfX3Jlc3QoX2EsIFtcImljb25cIiwgXCJvblNlbGVjdFwiLCBcImNoaWxkcmVuXCIsIFwic2hvcnRjdXRcIiwgXCJjbGFzc05hbWVcIiwgXCJzZWxlY3RlZFwiXSk7XG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSB1c2VIYW5kbGVEcm9wZG93bk1lbnVJdGVtQ2xpY2socmVzdC5vbkNsaWNrLCBvblNlbGVjdCk7XG4gIHJldHVybiBfanN4KFwiYnV0dG9uXCIsIE9iamVjdC5hc3NpZ24oe30sIHJlc3QsIHtcbiAgICBvbkNsaWNrOiBoYW5kbGVDbGljayxcbiAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgIGNsYXNzTmFtZTogZ2V0RHJvcGRvd25NZW51SXRlbUNsYXNzTmFtZShjbGFzc05hbWUsIHNlbGVjdGVkKSxcbiAgICB0aXRsZTogKF9iID0gcmVzdC50aXRsZSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogcmVzdFtcImFyaWEtbGFiZWxcIl1cbiAgfSwge1xuICAgIGNoaWxkcmVuOiBfanN4KE1lbnVJdGVtQ29udGVudCwgT2JqZWN0LmFzc2lnbih7XG4gICAgICBpY29uOiBpY29uLFxuICAgICAgc2hvcnRjdXQ6IHNob3J0Y3V0XG4gICAgfSwge1xuICAgICAgY2hpbGRyZW46IGNoaWxkcmVuXG4gICAgfSkpXG4gIH0pKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IERyb3Bkb3duTWVudUl0ZW07XG5Ecm9wZG93bk1lbnVJdGVtLmRpc3BsYXlOYW1lID0gXCJEcm9wZG93bk1lbnVJdGVtXCI7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/dropdownMenu/DropdownMenuItem.tsx\n');
              }
            ),
            /***/
            "../../components/dropdownMenu/DropdownMenuItemContent.tsx": (
              /*!*****************************************************************!*\
                !*** ../../components/dropdownMenu/DropdownMenuItemContent.tsx ***!
                \*****************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../App */ "../../components/App.tsx");\n\n\n\nconst MenuItemContent = ({\n  icon,\n  shortcut,\n  children\n}) => {\n  const device = (0,_App__WEBPACK_IMPORTED_MODULE_1__.useDevice)();\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: "dropdown-menu-item__icon"\n    }, {\n      children: icon\n    })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: "dropdown-menu-item__text"\n    }, {\n      children: children\n    })), shortcut && !device.editor.isMobile && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: "dropdown-menu-item__shortcut"\n    }, {\n      children: shortcut\n    }))]\n  });\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (MenuItemContent);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9kcm9wZG93bk1lbnUvRHJvcGRvd25NZW51SXRlbUNvbnRlbnQudHN4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBc0Y7QUFDbkQ7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELGlCQUFpQiwrQ0FBUztBQUMxQixTQUFTLHVEQUFLLENBQUMsdURBQVM7QUFDeEIsZUFBZSxzREFBSTtBQUNuQjtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUssSUFBSSxzREFBSTtBQUNiO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSywyQ0FBMkMsc0RBQUk7QUFDcEQ7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIOztBQUVBLGlFQUFlLGVBQWUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9kcm9wZG93bk1lbnUvRHJvcGRvd25NZW51SXRlbUNvbnRlbnQudHN4Pzg4NTciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsganN4IGFzIF9qc3gsIEZyYWdtZW50IGFzIF9GcmFnbWVudCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgdXNlRGV2aWNlIH0gZnJvbSBcIi4uL0FwcFwiO1xuXG5jb25zdCBNZW51SXRlbUNvbnRlbnQgPSAoe1xuICBpY29uLFxuICBzaG9ydGN1dCxcbiAgY2hpbGRyZW5cbn0pID0+IHtcbiAgY29uc3QgZGV2aWNlID0gdXNlRGV2aWNlKCk7XG4gIHJldHVybiBfanN4cyhfRnJhZ21lbnQsIHtcbiAgICBjaGlsZHJlbjogW19qc3goXCJkaXZcIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgICBjbGFzc05hbWU6IFwiZHJvcGRvd24tbWVudS1pdGVtX19pY29uXCJcbiAgICB9LCB7XG4gICAgICBjaGlsZHJlbjogaWNvblxuICAgIH0pKSwgX2pzeChcImRpdlwiLCBPYmplY3QuYXNzaWduKHtcbiAgICAgIGNsYXNzTmFtZTogXCJkcm9wZG93bi1tZW51LWl0ZW1fX3RleHRcIlxuICAgIH0sIHtcbiAgICAgIGNoaWxkcmVuOiBjaGlsZHJlblxuICAgIH0pKSwgc2hvcnRjdXQgJiYgIWRldmljZS5lZGl0b3IuaXNNb2JpbGUgJiYgX2pzeChcImRpdlwiLCBPYmplY3QuYXNzaWduKHtcbiAgICAgIGNsYXNzTmFtZTogXCJkcm9wZG93bi1tZW51LWl0ZW1fX3Nob3J0Y3V0XCJcbiAgICB9LCB7XG4gICAgICBjaGlsZHJlbjogc2hvcnRjdXRcbiAgICB9KSldXG4gIH0pO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgTWVudUl0ZW1Db250ZW50OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/dropdownMenu/DropdownMenuItemContent.tsx\n');
              }
            ),
            /***/
            "../../components/dropdownMenu/DropdownMenuItemCustom.tsx": (
              /*!****************************************************************!*\
                !*** ../../components/dropdownMenu/DropdownMenuItemCustom.tsx ***!
                \****************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\nvar __rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n\n  if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\nconst DropdownMenuItemCustom = _a => {\n  var {\n    children,\n    className = "",\n    selected\n  } = _a,\n      rest = __rest(_a, ["children", "className", "selected"]);\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({}, rest, {\n    className: `dropdown-menu-item-base dropdown-menu-item-custom ${className} ${selected ? `dropdown-menu-item--selected` : ``}`.trim()\n  }, {\n    children: children\n  }));\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (DropdownMenuItemCustom);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9kcm9wZG93bk1lbnUvRHJvcGRvd25NZW51SXRlbUN1c3RvbS50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxhQUFhLFNBQUksSUFBSSxTQUFJO0FBQ3pCOztBQUVBOztBQUVBLDRIQUE0SCxjQUFjO0FBQzFJO0FBQ0E7QUFDQTtBQUNBOztBQUVnRDtBQUN0Qjs7QUFFMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjs7QUFFQSxTQUFTLHNEQUFJLHdCQUF3QjtBQUNyQyxvRUFBb0UsV0FBVyxFQUFFLCtDQUErQztBQUNoSSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7O0FBRUEsaUVBQWUsc0JBQXNCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvZHJvcGRvd25NZW51L0Ryb3Bkb3duTWVudUl0ZW1DdXN0b20udHN4P2UxNjMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fcmVzdCA9IHRoaXMgJiYgdGhpcy5fX3Jlc3QgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgdmFyIHQgPSB7fTtcblxuICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMCkgdFtwXSA9IHNbcF07XG5cbiAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKSBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKSB0W3BbaV1dID0gc1twW2ldXTtcbiAgfVxuICByZXR1cm4gdDtcbn07XG5cbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmNvbnN0IERyb3Bkb3duTWVudUl0ZW1DdXN0b20gPSBfYSA9PiB7XG4gIHZhciB7XG4gICAgY2hpbGRyZW4sXG4gICAgY2xhc3NOYW1lID0gXCJcIixcbiAgICBzZWxlY3RlZFxuICB9ID0gX2EsXG4gICAgICByZXN0ID0gX19yZXN0KF9hLCBbXCJjaGlsZHJlblwiLCBcImNsYXNzTmFtZVwiLCBcInNlbGVjdGVkXCJdKTtcblxuICByZXR1cm4gX2pzeChcImRpdlwiLCBPYmplY3QuYXNzaWduKHt9LCByZXN0LCB7XG4gICAgY2xhc3NOYW1lOiBgZHJvcGRvd24tbWVudS1pdGVtLWJhc2UgZHJvcGRvd24tbWVudS1pdGVtLWN1c3RvbSAke2NsYXNzTmFtZX0gJHtzZWxlY3RlZCA/IGBkcm9wZG93bi1tZW51LWl0ZW0tLXNlbGVjdGVkYCA6IGBgfWAudHJpbSgpXG4gIH0sIHtcbiAgICBjaGlsZHJlbjogY2hpbGRyZW5cbiAgfSkpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRHJvcGRvd25NZW51SXRlbUN1c3RvbTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/dropdownMenu/DropdownMenuItemCustom.tsx\n');
              }
            ),
            /***/
            "../../components/dropdownMenu/DropdownMenuItemLink.tsx": (
              /*!**************************************************************!*\
                !*** ../../components/dropdownMenu/DropdownMenuItemLink.tsx ***!
                \**************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _DropdownMenuItemContent__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./DropdownMenuItemContent */ "../../components/dropdownMenu/DropdownMenuItemContent.tsx");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./common */ "../../components/dropdownMenu/common.ts");\nvar __rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n\n  if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\n\nconst DropdownMenuItemLink = _a => {\n  var _b;\n\n  var {\n    icon,\n    shortcut,\n    href,\n    children,\n    onSelect,\n    className = "",\n    selected\n  } = _a,\n      rest = __rest(_a, ["icon", "shortcut", "href", "children", "onSelect", "className", "selected"]);\n\n  const handleClick = (0,_common__WEBPACK_IMPORTED_MODULE_3__.useHandleDropdownMenuItemClick)(rest.onClick, onSelect);\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("a", Object.assign({}, rest, {\n    href: href,\n    target: "_blank",\n    rel: "noreferrer",\n    className: (0,_common__WEBPACK_IMPORTED_MODULE_3__.getDropdownMenuItemClassName)(className, selected),\n    title: (_b = rest.title) !== null && _b !== void 0 ? _b : rest["aria-label"],\n    onClick: handleClick\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_DropdownMenuItemContent__WEBPACK_IMPORTED_MODULE_1__["default"], Object.assign({\n      icon: icon,\n      shortcut: shortcut\n    }, {\n      children: children\n    }))\n  }));\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (DropdownMenuItemLink);\nDropdownMenuItemLink.displayName = "DropdownMenuItemLink";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9kcm9wZG93bk1lbnUvRHJvcGRvd25NZW51SXRlbUxpbmsudHN4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxhQUFhLFNBQUksSUFBSSxTQUFJO0FBQ3pCOztBQUVBOztBQUVBLDRIQUE0SCxjQUFjO0FBQzFJO0FBQ0E7QUFDQTtBQUNBOztBQUVnRDtBQUNRO0FBQzlCO0FBQzhEOztBQUV4RjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7O0FBRUEsc0JBQXNCLHVFQUE4QjtBQUNwRCxTQUFTLHNEQUFJLHNCQUFzQjtBQUNuQztBQUNBO0FBQ0E7QUFDQSxlQUFlLHFFQUE0QjtBQUMzQztBQUNBO0FBQ0EsR0FBRztBQUNILGNBQWMsc0RBQUksQ0FBQyxnRUFBZTtBQUNsQztBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDs7QUFFQSxpRUFBZSxvQkFBb0IsRUFBQztBQUNwQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL2Ryb3Bkb3duTWVudS9Ecm9wZG93bk1lbnVJdGVtTGluay50c3g/MDk5MyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19yZXN0ID0gdGhpcyAmJiB0aGlzLl9fcmVzdCB8fCBmdW5jdGlvbiAocywgZSkge1xuICB2YXIgdCA9IHt9O1xuXG4gIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKSB0W3BdID0gc1twXTtcblxuICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpIHRbcFtpXV0gPSBzW3BbaV1dO1xuICB9XG4gIHJldHVybiB0O1xufTtcblxuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCBNZW51SXRlbUNvbnRlbnQgZnJvbSBcIi4vRHJvcGRvd25NZW51SXRlbUNvbnRlbnRcIjtcbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IGdldERyb3Bkb3duTWVudUl0ZW1DbGFzc05hbWUsIHVzZUhhbmRsZURyb3Bkb3duTWVudUl0ZW1DbGljayB9IGZyb20gXCIuL2NvbW1vblwiO1xuXG5jb25zdCBEcm9wZG93bk1lbnVJdGVtTGluayA9IF9hID0+IHtcbiAgdmFyIF9iO1xuXG4gIHZhciB7XG4gICAgaWNvbixcbiAgICBzaG9ydGN1dCxcbiAgICBocmVmLFxuICAgIGNoaWxkcmVuLFxuICAgIG9uU2VsZWN0LFxuICAgIGNsYXNzTmFtZSA9IFwiXCIsXG4gICAgc2VsZWN0ZWRcbiAgfSA9IF9hLFxuICAgICAgcmVzdCA9IF9fcmVzdChfYSwgW1wiaWNvblwiLCBcInNob3J0Y3V0XCIsIFwiaHJlZlwiLCBcImNoaWxkcmVuXCIsIFwib25TZWxlY3RcIiwgXCJjbGFzc05hbWVcIiwgXCJzZWxlY3RlZFwiXSk7XG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSB1c2VIYW5kbGVEcm9wZG93bk1lbnVJdGVtQ2xpY2socmVzdC5vbkNsaWNrLCBvblNlbGVjdCk7XG4gIHJldHVybiBfanN4KFwiYVwiLCBPYmplY3QuYXNzaWduKHt9LCByZXN0LCB7XG4gICAgaHJlZjogaHJlZixcbiAgICB0YXJnZXQ6IFwiX2JsYW5rXCIsXG4gICAgcmVsOiBcIm5vcmVmZXJyZXJcIixcbiAgICBjbGFzc05hbWU6IGdldERyb3Bkb3duTWVudUl0ZW1DbGFzc05hbWUoY2xhc3NOYW1lLCBzZWxlY3RlZCksXG4gICAgdGl0bGU6IChfYiA9IHJlc3QudGl0bGUpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IHJlc3RbXCJhcmlhLWxhYmVsXCJdLFxuICAgIG9uQ2xpY2s6IGhhbmRsZUNsaWNrXG4gIH0sIHtcbiAgICBjaGlsZHJlbjogX2pzeChNZW51SXRlbUNvbnRlbnQsIE9iamVjdC5hc3NpZ24oe1xuICAgICAgaWNvbjogaWNvbixcbiAgICAgIHNob3J0Y3V0OiBzaG9ydGN1dFxuICAgIH0sIHtcbiAgICAgIGNoaWxkcmVuOiBjaGlsZHJlblxuICAgIH0pKVxuICB9KSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBEcm9wZG93bk1lbnVJdGVtTGluaztcbkRyb3Bkb3duTWVudUl0ZW1MaW5rLmRpc3BsYXlOYW1lID0gXCJEcm9wZG93bk1lbnVJdGVtTGlua1wiOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/dropdownMenu/DropdownMenuItemLink.tsx\n');
              }
            ),
            /***/
            "../../components/dropdownMenu/DropdownMenuSeparator.tsx": (
              /*!***************************************************************!*\
                !*** ../../components/dropdownMenu/DropdownMenuSeparator.tsx ***!
                \***************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n\n\n\nconst MenuSeparator = () => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n  style: {\n    height: "1px",\n    backgroundColor: "var(--default-border-color)",\n    margin: ".5rem 0"\n  }\n});\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (MenuSeparator);\nMenuSeparator.displayName = "DropdownMenuSeparator";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9kcm9wZG93bk1lbnUvRHJvcGRvd25NZW51U2VwYXJhdG9yLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFnRDtBQUN0Qjs7QUFFMUIsNEJBQTRCLHNEQUFJO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVELGlFQUFlLGFBQWEsRUFBQztBQUM3QiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL2Ryb3Bkb3duTWVudS9Ecm9wZG93bk1lbnVTZXBhcmF0b3IudHN4P2IzZjMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuY29uc3QgTWVudVNlcGFyYXRvciA9ICgpID0+IF9qc3goXCJkaXZcIiwge1xuICBzdHlsZToge1xuICAgIGhlaWdodDogXCIxcHhcIixcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IFwidmFyKC0tZGVmYXVsdC1ib3JkZXItY29sb3IpXCIsXG4gICAgbWFyZ2luOiBcIi41cmVtIDBcIlxuICB9XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgTWVudVNlcGFyYXRvcjtcbk1lbnVTZXBhcmF0b3IuZGlzcGxheU5hbWUgPSBcIkRyb3Bkb3duTWVudVNlcGFyYXRvclwiOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/dropdownMenu/DropdownMenuSeparator.tsx\n');
              }
            ),
            /***/
            "../../components/dropdownMenu/DropdownMenuTrigger.tsx": (
              /*!*************************************************************!*\
                !*** ../../components/dropdownMenu/DropdownMenuTrigger.tsx ***!
                \*************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../App */ "../../components/App.tsx");\nvar __rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n\n  if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\nconst MenuTrigger = _a => {\n  var {\n    className = "",\n    children,\n    onToggle,\n    title\n  } = _a,\n      rest = __rest(_a, ["className", "children", "onToggle", "title"]);\n\n  const device = (0,_App__WEBPACK_IMPORTED_MODULE_2__.useDevice)();\n  const classNames = (0,clsx__WEBPACK_IMPORTED_MODULE_1__["default"])(`dropdown-menu-button ${className}`, "zen-mode-transition", {\n    "dropdown-menu-button--mobile": device.editor.isMobile\n  }).trim();\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("button", Object.assign({\n    "data-prevent-outside-click": true,\n    className: classNames,\n    onClick: onToggle,\n    type: "button",\n    "data-testid": "dropdown-menu-button",\n    title: title\n  }, rest, {\n    children: children\n  }));\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (MenuTrigger);\nMenuTrigger.displayName = "DropdownMenuTrigger";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9kcm9wZG93bk1lbnUvRHJvcGRvd25NZW51VHJpZ2dlci50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxhQUFhLFNBQUksSUFBSSxTQUFJO0FBQ3pCOztBQUVBOztBQUVBLDRIQUE0SCxjQUFjO0FBQzFJO0FBQ0E7QUFDQTtBQUNBOztBQUVnRDtBQUN4QjtBQUNXOztBQUVuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7O0FBRUEsaUJBQWlCLCtDQUFTO0FBQzFCLHFCQUFxQixnREFBSSx5QkFBeUIsVUFBVTtBQUM1RDtBQUNBLEdBQUc7QUFDSCxTQUFTLHNEQUFJO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsR0FBRztBQUNIOztBQUVBLGlFQUFlLFdBQVcsRUFBQztBQUMzQiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL2Ryb3Bkb3duTWVudS9Ecm9wZG93bk1lbnVUcmlnZ2VyLnRzeD80YjliIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBfX3Jlc3QgPSB0aGlzICYmIHRoaXMuX19yZXN0IHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gIHZhciB0ID0ge307XG5cbiAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApIHRbcF0gPSBzW3BdO1xuXG4gIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIikgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSkgdFtwW2ldXSA9IHNbcFtpXV07XG4gIH1cbiAgcmV0dXJuIHQ7XG59O1xuXG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IGNsc3ggZnJvbSBcImNsc3hcIjtcbmltcG9ydCB7IHVzZURldmljZSB9IGZyb20gXCIuLi9BcHBcIjtcblxuY29uc3QgTWVudVRyaWdnZXIgPSBfYSA9PiB7XG4gIHZhciB7XG4gICAgY2xhc3NOYW1lID0gXCJcIixcbiAgICBjaGlsZHJlbixcbiAgICBvblRvZ2dsZSxcbiAgICB0aXRsZVxuICB9ID0gX2EsXG4gICAgICByZXN0ID0gX19yZXN0KF9hLCBbXCJjbGFzc05hbWVcIiwgXCJjaGlsZHJlblwiLCBcIm9uVG9nZ2xlXCIsIFwidGl0bGVcIl0pO1xuXG4gIGNvbnN0IGRldmljZSA9IHVzZURldmljZSgpO1xuICBjb25zdCBjbGFzc05hbWVzID0gY2xzeChgZHJvcGRvd24tbWVudS1idXR0b24gJHtjbGFzc05hbWV9YCwgXCJ6ZW4tbW9kZS10cmFuc2l0aW9uXCIsIHtcbiAgICBcImRyb3Bkb3duLW1lbnUtYnV0dG9uLS1tb2JpbGVcIjogZGV2aWNlLmVkaXRvci5pc01vYmlsZVxuICB9KS50cmltKCk7XG4gIHJldHVybiBfanN4KFwiYnV0dG9uXCIsIE9iamVjdC5hc3NpZ24oe1xuICAgIFwiZGF0YS1wcmV2ZW50LW91dHNpZGUtY2xpY2tcIjogdHJ1ZSxcbiAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMsXG4gICAgb25DbGljazogb25Ub2dnbGUsXG4gICAgdHlwZTogXCJidXR0b25cIixcbiAgICBcImRhdGEtdGVzdGlkXCI6IFwiZHJvcGRvd24tbWVudS1idXR0b25cIixcbiAgICB0aXRsZTogdGl0bGVcbiAgfSwgcmVzdCwge1xuICAgIGNoaWxkcmVuOiBjaGlsZHJlblxuICB9KSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBNZW51VHJpZ2dlcjtcbk1lbnVUcmlnZ2VyLmRpc3BsYXlOYW1lID0gXCJEcm9wZG93bk1lbnVUcmlnZ2VyXCI7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/dropdownMenu/DropdownMenuTrigger.tsx\n');
              }
            ),
            /***/
            "../../components/dropdownMenu/common.ts": (
              /*!***********************************************!*\
                !*** ../../components/dropdownMenu/common.ts ***!
                \***********************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "DropdownMenuContentPropsContext": () => (/* binding */ DropdownMenuContentPropsContext),\n/* harmony export */   "getDropdownMenuItemClassName": () => (/* binding */ getDropdownMenuItemClassName),\n/* harmony export */   "useHandleDropdownMenuItemClick": () => (/* binding */ useHandleDropdownMenuItemClick)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../constants */ "../../constants.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils */ "../../utils.ts");\n\n\n\nconst DropdownMenuContentPropsContext = react__WEBPACK_IMPORTED_MODULE_0___default().createContext({});\nconst getDropdownMenuItemClassName = (className = "", selected = false) => {\n  return `dropdown-menu-item dropdown-menu-item-base ${className} ${selected ? "dropdown-menu-item--selected" : ""}`.trim();\n};\nconst useHandleDropdownMenuItemClick = (origOnClick, onSelect) => {\n  const DropdownMenuContentProps = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(DropdownMenuContentPropsContext);\n  return (0,_utils__WEBPACK_IMPORTED_MODULE_2__.composeEventHandlers)(origOnClick, event => {\n    var _a;\n\n    const itemSelectEvent = new CustomEvent(_constants__WEBPACK_IMPORTED_MODULE_1__.EVENT.MENU_ITEM_SELECT, {\n      bubbles: true,\n      cancelable: true\n    });\n    onSelect === null || onSelect === void 0 ? void 0 : onSelect(itemSelectEvent);\n\n    if (!itemSelectEvent.defaultPrevented) {\n      (_a = DropdownMenuContentProps.onSelect) === null || _a === void 0 ? void 0 : _a.call(DropdownMenuContentProps, itemSelectEvent);\n    }\n  });\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9kcm9wZG93bk1lbnUvY29tbW9uLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBMEM7QUFDRjtBQUNXO0FBQzVDLHdDQUF3QywwREFBbUIsR0FBRztBQUM5RDtBQUNQLHVEQUF1RCxXQUFXLEVBQUUsK0NBQStDO0FBQ25IO0FBQ087QUFDUCxtQ0FBbUMsaURBQVU7QUFDN0MsU0FBUyw0REFBb0I7QUFDN0I7O0FBRUEsNENBQTRDLDhEQUFzQjtBQUNsRTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL2Ryb3Bkb3duTWVudS9jb21tb24udHM/ZTVhYiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlQ29udGV4dCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgRVZFTlQgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBjb21wb3NlRXZlbnRIYW5kbGVycyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuZXhwb3J0IGNvbnN0IERyb3Bkb3duTWVudUNvbnRlbnRQcm9wc0NvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0KHt9KTtcbmV4cG9ydCBjb25zdCBnZXREcm9wZG93bk1lbnVJdGVtQ2xhc3NOYW1lID0gKGNsYXNzTmFtZSA9IFwiXCIsIHNlbGVjdGVkID0gZmFsc2UpID0+IHtcbiAgcmV0dXJuIGBkcm9wZG93bi1tZW51LWl0ZW0gZHJvcGRvd24tbWVudS1pdGVtLWJhc2UgJHtjbGFzc05hbWV9ICR7c2VsZWN0ZWQgPyBcImRyb3Bkb3duLW1lbnUtaXRlbS0tc2VsZWN0ZWRcIiA6IFwiXCJ9YC50cmltKCk7XG59O1xuZXhwb3J0IGNvbnN0IHVzZUhhbmRsZURyb3Bkb3duTWVudUl0ZW1DbGljayA9IChvcmlnT25DbGljaywgb25TZWxlY3QpID0+IHtcbiAgY29uc3QgRHJvcGRvd25NZW51Q29udGVudFByb3BzID0gdXNlQ29udGV4dChEcm9wZG93bk1lbnVDb250ZW50UHJvcHNDb250ZXh0KTtcbiAgcmV0dXJuIGNvbXBvc2VFdmVudEhhbmRsZXJzKG9yaWdPbkNsaWNrLCBldmVudCA9PiB7XG4gICAgdmFyIF9hO1xuXG4gICAgY29uc3QgaXRlbVNlbGVjdEV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KEVWRU5ULk1FTlVfSVRFTV9TRUxFQ1QsIHtcbiAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICBjYW5jZWxhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgb25TZWxlY3QgPT09IG51bGwgfHwgb25TZWxlY3QgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uU2VsZWN0KGl0ZW1TZWxlY3RFdmVudCk7XG5cbiAgICBpZiAoIWl0ZW1TZWxlY3RFdmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAoX2EgPSBEcm9wZG93bk1lbnVDb250ZW50UHJvcHMub25TZWxlY3QpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKERyb3Bkb3duTWVudUNvbnRlbnRQcm9wcywgaXRlbVNlbGVjdEV2ZW50KTtcbiAgICB9XG4gIH0pO1xufTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/dropdownMenu/common.ts\n');
              }
            ),
            /***/
            "../../components/dropdownMenu/dropdownMenuUtils.ts": (
              /*!**********************************************************!*\
                !*** ../../components/dropdownMenu/dropdownMenuUtils.ts ***!
                \**********************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "getMenuContentComponent": () => (/* binding */ getMenuContentComponent),\n/* harmony export */   "getMenuTriggerComponent": () => (/* binding */ getMenuTriggerComponent)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n\nconst getMenuTriggerComponent = children => {\n  const comp = react__WEBPACK_IMPORTED_MODULE_0___default().Children.toArray(children).find(child => react__WEBPACK_IMPORTED_MODULE_0___default().isValidElement(child) && typeof child.type !== "string" && ( //@ts-ignore\n  child === null || child === void 0 ? void 0 : child.type.displayName) && //@ts-ignore\n  child.type.displayName === "DropdownMenuTrigger");\n\n  if (!comp) {\n    return null;\n  } //@ts-ignore\n\n\n  return comp;\n};\nconst getMenuContentComponent = children => {\n  const comp = react__WEBPACK_IMPORTED_MODULE_0___default().Children.toArray(children).find(child => react__WEBPACK_IMPORTED_MODULE_0___default().isValidElement(child) && typeof child.type !== "string" && ( //@ts-ignore\n  child === null || child === void 0 ? void 0 : child.type.displayName) && //@ts-ignore\n  child.type.displayName === "DropdownMenuContent");\n\n  if (!comp) {\n    return null;\n  } //@ts-ignore\n\n\n  return comp;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9kcm9wZG93bk1lbnUvZHJvcGRvd25NZW51VXRpbHMudHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUEwQjtBQUNuQjtBQUNQLGVBQWUsNkRBQXNCLHlCQUF5QiwyREFBb0I7QUFDbEY7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNPO0FBQ1AsZUFBZSw2REFBc0IseUJBQXlCLDJEQUFvQjtBQUNsRjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJOzs7QUFHSjtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvZHJvcGRvd25NZW51L2Ryb3Bkb3duTWVudVV0aWxzLnRzP2IyMWQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuZXhwb3J0IGNvbnN0IGdldE1lbnVUcmlnZ2VyQ29tcG9uZW50ID0gY2hpbGRyZW4gPT4ge1xuICBjb25zdCBjb21wID0gUmVhY3QuQ2hpbGRyZW4udG9BcnJheShjaGlsZHJlbikuZmluZChjaGlsZCA9PiBSZWFjdC5pc1ZhbGlkRWxlbWVudChjaGlsZCkgJiYgdHlwZW9mIGNoaWxkLnR5cGUgIT09IFwic3RyaW5nXCIgJiYgKCAvL0B0cy1pZ25vcmVcbiAgY2hpbGQgPT09IG51bGwgfHwgY2hpbGQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNoaWxkLnR5cGUuZGlzcGxheU5hbWUpICYmIC8vQHRzLWlnbm9yZVxuICBjaGlsZC50eXBlLmRpc3BsYXlOYW1lID09PSBcIkRyb3Bkb3duTWVudVRyaWdnZXJcIik7XG5cbiAgaWYgKCFjb21wKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH0gLy9AdHMtaWdub3JlXG5cblxuICByZXR1cm4gY29tcDtcbn07XG5leHBvcnQgY29uc3QgZ2V0TWVudUNvbnRlbnRDb21wb25lbnQgPSBjaGlsZHJlbiA9PiB7XG4gIGNvbnN0IGNvbXAgPSBSZWFjdC5DaGlsZHJlbi50b0FycmF5KGNoaWxkcmVuKS5maW5kKGNoaWxkID0+IFJlYWN0LmlzVmFsaWRFbGVtZW50KGNoaWxkKSAmJiB0eXBlb2YgY2hpbGQudHlwZSAhPT0gXCJzdHJpbmdcIiAmJiAoIC8vQHRzLWlnbm9yZVxuICBjaGlsZCA9PT0gbnVsbCB8fCBjaGlsZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogY2hpbGQudHlwZS5kaXNwbGF5TmFtZSkgJiYgLy9AdHMtaWdub3JlXG4gIGNoaWxkLnR5cGUuZGlzcGxheU5hbWUgPT09IFwiRHJvcGRvd25NZW51Q29udGVudFwiKTtcblxuICBpZiAoIWNvbXApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfSAvL0B0cy1pZ25vcmVcblxuXG4gIHJldHVybiBjb21wO1xufTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/dropdownMenu/dropdownMenuUtils.ts\n');
              }
            ),
            /***/
            "../../components/footer/Footer.tsx": (
              /*!******************************************!*\
                !*** ../../components/footer/Footer.tsx ***!
                \******************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../actions */ "../../actions/index.ts");\n/* harmony import */ var _Actions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Actions */ "../../components/Actions.tsx");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../App */ "../../components/App.tsx");\n/* harmony import */ var _context_tunnels__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../context/tunnels */ "../../context/tunnels.ts");\n/* harmony import */ var _HelpButton__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../HelpButton */ "../../components/HelpButton.tsx");\n/* harmony import */ var _Section__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../Section */ "../../components/Section.tsx");\n/* harmony import */ var _Stack__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../Stack */ "../../components/Stack.tsx");\n\n\n\n\n\n\n\n\n\n\nconst Footer = ({\n  appState,\n  actionManager,\n  showExitZenModeBtn,\n  renderWelcomeScreen\n}) => {\n  const {\n    FooterCenterTunnel,\n    WelcomeScreenHelpHintTunnel\n  } = (0,_context_tunnels__WEBPACK_IMPORTED_MODULE_5__.useTunnels)();\n  const device = (0,_App__WEBPACK_IMPORTED_MODULE_4__.useDevice)();\n  const showFinalize = !appState.viewModeEnabled && appState.multiElement && device.isTouchScreen;\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("footer", Object.assign({\n    role: "contentinfo",\n    className: "layer-ui__wrapper__footer App-menu App-menu_bottom"\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__["default"])("layer-ui__wrapper__footer-left zen-mode-transition", {\n        "layer-ui__wrapper__footer-left--transition-left": appState.zenModeEnabled\n      })\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Stack__WEBPACK_IMPORTED_MODULE_8__["default"].Col, Object.assign({\n        gap: 2\n      }, {\n        children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Section__WEBPACK_IMPORTED_MODULE_7__.Section, Object.assign({\n          heading: "canvasActions"\n        }, {\n          children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Actions__WEBPACK_IMPORTED_MODULE_3__.ZoomActions, {\n            renderAction: actionManager.renderAction,\n            zoom: appState.zoom\n          }), !appState.viewModeEnabled && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Actions__WEBPACK_IMPORTED_MODULE_3__.UndoRedoActions, {\n            renderAction: actionManager.renderAction,\n            className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__["default"])("zen-mode-transition", {\n              "layer-ui__wrapper__footer-left--transition-bottom": appState.zenModeEnabled\n            })\n          }), showFinalize && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Actions__WEBPACK_IMPORTED_MODULE_3__.FinalizeAction, {\n            renderAction: actionManager.renderAction,\n            className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__["default"])("zen-mode-transition", {\n              "layer-ui__wrapper__footer-left--transition-left": appState.zenModeEnabled\n            })\n          })]\n        }))\n      }))\n    })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(FooterCenterTunnel.Out, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__["default"])("layer-ui__wrapper__footer-right zen-mode-transition", {\n        "transition-right": appState.zenModeEnabled\n      })\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n        style: {\n          position: "relative"\n        }\n      }, {\n        children: [renderWelcomeScreen && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(WelcomeScreenHelpHintTunnel.Out, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_HelpButton__WEBPACK_IMPORTED_MODULE_6__.HelpButton, {\n          onClick: () => actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_2__.actionShortcuts)\n        })]\n      }))\n    })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Actions__WEBPACK_IMPORTED_MODULE_3__.ExitZenModeAction, {\n      actionManager: actionManager,\n      showExitZenModeBtn: showExitZenModeBtn\n    })]\n  }));\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Footer);\nFooter.displayName = "Footer";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5200 characters]\n//# sourceURL=webpack-internal:///../../components/footer/Footer.tsx\n');
              }
            ),
            /***/
            "../../components/footer/FooterCenter.tsx": (
              /*!************************************************!*\
                !*** ../../components/footer/FooterCenter.tsx ***!
                \************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _context_tunnels__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../context/tunnels */ "../../context/tunnels.ts");\n/* harmony import */ var _FooterCenter_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./FooterCenter.scss */ "../../components/footer/FooterCenter.scss");\n/* harmony import */ var _context_ui_appState__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../context/ui-appState */ "../../context/ui-appState.ts");\n\n\n\n\n\n\nconst FooterCenter = ({\n  children\n}) => {\n  const {\n    FooterCenterTunnel\n  } = (0,_context_tunnels__WEBPACK_IMPORTED_MODULE_2__.useTunnels)();\n  const appState = (0,_context_ui_appState__WEBPACK_IMPORTED_MODULE_4__.useUIAppState)();\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(FooterCenterTunnel.In, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__["default"])("footer-center zen-mode-transition", {\n        "layer-ui__wrapper__footer-left--transition-bottom": appState.zenModeEnabled\n      })\n    }, {\n      children: children\n    }))\n  });\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (FooterCenter);\nFooterCenter.displayName = "FooterCenter";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9mb290ZXIvRm9vdGVyQ2VudGVyLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQWdEO0FBQ3hCO0FBQzJCO0FBQ3RCO0FBQzZCOztBQUUxRDtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQSxJQUFJLEVBQUUsNERBQVU7QUFDaEIsbUJBQW1CLG1FQUFhO0FBQ2hDLFNBQVMsc0RBQUk7QUFDYixjQUFjLHNEQUFJO0FBQ2xCLGlCQUFpQixnREFBSTtBQUNyQjtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIOztBQUVBLGlFQUFlLFlBQVksRUFBQztBQUM1QiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL2Zvb3Rlci9Gb290ZXJDZW50ZXIudHN4PzI3MmYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCBjbHN4IGZyb20gXCJjbHN4XCI7XG5pbXBvcnQgeyB1c2VUdW5uZWxzIH0gZnJvbSBcIi4uLy4uL2NvbnRleHQvdHVubmVsc1wiO1xuaW1wb3J0IFwiLi9Gb290ZXJDZW50ZXIuc2Nzc1wiO1xuaW1wb3J0IHsgdXNlVUlBcHBTdGF0ZSB9IGZyb20gXCIuLi8uLi9jb250ZXh0L3VpLWFwcFN0YXRlXCI7XG5cbmNvbnN0IEZvb3RlckNlbnRlciA9ICh7XG4gIGNoaWxkcmVuXG59KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBGb290ZXJDZW50ZXJUdW5uZWxcbiAgfSA9IHVzZVR1bm5lbHMoKTtcbiAgY29uc3QgYXBwU3RhdGUgPSB1c2VVSUFwcFN0YXRlKCk7XG4gIHJldHVybiBfanN4KEZvb3RlckNlbnRlclR1bm5lbC5Jbiwge1xuICAgIGNoaWxkcmVuOiBfanN4KFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oe1xuICAgICAgY2xhc3NOYW1lOiBjbHN4KFwiZm9vdGVyLWNlbnRlciB6ZW4tbW9kZS10cmFuc2l0aW9uXCIsIHtcbiAgICAgICAgXCJsYXllci11aV9fd3JhcHBlcl9fZm9vdGVyLWxlZnQtLXRyYW5zaXRpb24tYm90dG9tXCI6IGFwcFN0YXRlLnplbk1vZGVFbmFibGVkXG4gICAgICB9KVxuICAgIH0sIHtcbiAgICAgIGNoaWxkcmVuOiBjaGlsZHJlblxuICAgIH0pKVxuICB9KTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEZvb3RlckNlbnRlcjtcbkZvb3RlckNlbnRlci5kaXNwbGF5TmFtZSA9IFwiRm9vdGVyQ2VudGVyXCI7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/footer/FooterCenter.tsx\n');
              }
            ),
            /***/
            "../../components/hoc/withInternalFallback.tsx": (
              /*!*****************************************************!*\
                !*** ../../components/hoc/withInternalFallback.tsx ***!
                \*****************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "withInternalFallback": () => (/* binding */ withInternalFallback)
/* harmony export */ });
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var jotai__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! jotai */ "../../../node_modules/jotai/esm/index.mjs");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _context_tunnels__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../context/tunnels */ "../../context/tunnels.ts");




const withInternalFallback = (componentName, Component) => {
  const renderAtom = (0,jotai__WEBPACK_IMPORTED_MODULE_3__.atom)(0);

  const WrapperComponent = props => {
    const {
      jotaiScope
    } = (0,_context_tunnels__WEBPACK_IMPORTED_MODULE_2__.useTunnels)(); // for rerenders

    const [, setCounter] = (0,jotai__WEBPACK_IMPORTED_MODULE_3__.useAtom)(renderAtom, jotaiScope); // for initial & subsequent renders. Tracked as component state
    // due to excalidraw multi-instance scanerios.

    const metaRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)({
      // flag set on initial render to tell the fallback component to skip the
      // render until mount counter are initialized. This is because the counter
      // is initialized in an effect, and thus we could end rendering both
      // components at the same time until counter is initialized.
      preferHost: false,
      counter: 0
    });
    (0,react__WEBPACK_IMPORTED_MODULE_1__.useLayoutEffect)(() => {
      const meta = metaRef.current;
      setCounter(c => {
        const next = c + 1;
        meta.counter = next;
        return next;
      });
      return () => {
        setCounter(c => {
          const next = c - 1;
          meta.counter = next;

          if (!next) {
            meta.preferHost = false;
          }

          return next;
        });
      };
    }, [setCounter]);

    if (!props.__fallback) {
      metaRef.current.preferHost = true;
    } // ensure we don't render fallback and host components at the same time


    if ( // either before the counters are initialized
    !metaRef.current.counter && props.__fallback && metaRef.current.preferHost || // or after the counters are initialized, and both are rendered
    // (this is the default when host renders as well)
    metaRef.current.counter > 1 && props.__fallback) {
      return null;
    }

    return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Component, Object.assign({}, props));
  };

  WrapperComponent.displayName = componentName;
  return WrapperComponent;
};//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9ob2Mvd2l0aEludGVybmFsRmFsbGJhY2sudHN4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBZ0Q7QUFDVjtBQUNpQjtBQUNKO0FBQzVDO0FBQ1AscUJBQXFCLDJDQUFJOztBQUV6QjtBQUNBO0FBQ0E7QUFDQSxNQUFNLEVBQUUsNERBQVUsSUFBSTs7QUFFdEIsMkJBQTJCLDhDQUFPLDBCQUEwQjtBQUM1RDs7QUFFQSxvQkFBb0IsNkNBQU07QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLElBQUksc0RBQWU7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxNQUFNOzs7QUFHTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsV0FBVyxzREFBSSw0QkFBNEI7QUFDM0M7O0FBRUE7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvaG9jL3dpdGhJbnRlcm5hbEZhbGxiYWNrLnRzeD9lNTRjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBhdG9tLCB1c2VBdG9tIH0gZnJvbSBcImpvdGFpXCI7XG5pbXBvcnQgUmVhY3QsIHsgdXNlTGF5b3V0RWZmZWN0LCB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVR1bm5lbHMgfSBmcm9tIFwiLi4vLi4vY29udGV4dC90dW5uZWxzXCI7XG5leHBvcnQgY29uc3Qgd2l0aEludGVybmFsRmFsbGJhY2sgPSAoY29tcG9uZW50TmFtZSwgQ29tcG9uZW50KSA9PiB7XG4gIGNvbnN0IHJlbmRlckF0b20gPSBhdG9tKDApO1xuXG4gIGNvbnN0IFdyYXBwZXJDb21wb25lbnQgPSBwcm9wcyA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgam90YWlTY29wZVxuICAgIH0gPSB1c2VUdW5uZWxzKCk7IC8vIGZvciByZXJlbmRlcnNcblxuICAgIGNvbnN0IFssIHNldENvdW50ZXJdID0gdXNlQXRvbShyZW5kZXJBdG9tLCBqb3RhaVNjb3BlKTsgLy8gZm9yIGluaXRpYWwgJiBzdWJzZXF1ZW50IHJlbmRlcnMuIFRyYWNrZWQgYXMgY29tcG9uZW50IHN0YXRlXG4gICAgLy8gZHVlIHRvIGV4Y2FsaWRyYXcgbXVsdGktaW5zdGFuY2Ugc2NhbmVyaW9zLlxuXG4gICAgY29uc3QgbWV0YVJlZiA9IHVzZVJlZih7XG4gICAgICAvLyBmbGFnIHNldCBvbiBpbml0aWFsIHJlbmRlciB0byB0ZWxsIHRoZSBmYWxsYmFjayBjb21wb25lbnQgdG8gc2tpcCB0aGVcbiAgICAgIC8vIHJlbmRlciB1bnRpbCBtb3VudCBjb3VudGVyIGFyZSBpbml0aWFsaXplZC4gVGhpcyBpcyBiZWNhdXNlIHRoZSBjb3VudGVyXG4gICAgICAvLyBpcyBpbml0aWFsaXplZCBpbiBhbiBlZmZlY3QsIGFuZCB0aHVzIHdlIGNvdWxkIGVuZCByZW5kZXJpbmcgYm90aFxuICAgICAgLy8gY29tcG9uZW50cyBhdCB0aGUgc2FtZSB0aW1lIHVudGlsIGNvdW50ZXIgaXMgaW5pdGlhbGl6ZWQuXG4gICAgICBwcmVmZXJIb3N0OiBmYWxzZSxcbiAgICAgIGNvdW50ZXI6IDBcbiAgICB9KTtcbiAgICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgbWV0YSA9IG1ldGFSZWYuY3VycmVudDtcbiAgICAgIHNldENvdW50ZXIoYyA9PiB7XG4gICAgICAgIGNvbnN0IG5leHQgPSBjICsgMTtcbiAgICAgICAgbWV0YS5jb3VudGVyID0gbmV4dDtcbiAgICAgICAgcmV0dXJuIG5leHQ7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIHNldENvdW50ZXIoYyA9PiB7XG4gICAgICAgICAgY29uc3QgbmV4dCA9IGMgLSAxO1xuICAgICAgICAgIG1ldGEuY291bnRlciA9IG5leHQ7XG5cbiAgICAgICAgICBpZiAoIW5leHQpIHtcbiAgICAgICAgICAgIG1ldGEucHJlZmVySG9zdCA9IGZhbHNlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgICB9KTtcbiAgICAgIH07XG4gICAgfSwgW3NldENvdW50ZXJdKTtcblxuICAgIGlmICghcHJvcHMuX19mYWxsYmFjaykge1xuICAgICAgbWV0YVJlZi5jdXJyZW50LnByZWZlckhvc3QgPSB0cnVlO1xuICAgIH0gLy8gZW5zdXJlIHdlIGRvbid0IHJlbmRlciBmYWxsYmFjayBhbmQgaG9zdCBjb21wb25lbnRzIGF0IHRoZSBzYW1lIHRpbWVcblxuXG4gICAgaWYgKCAvLyBlaXRoZXIgYmVmb3JlIHRoZSBjb3VudGVycyBhcmUgaW5pdGlhbGl6ZWRcbiAgICAhbWV0YVJlZi5jdXJyZW50LmNvdW50ZXIgJiYgcHJvcHMuX19mYWxsYmFjayAmJiBtZXRhUmVmLmN1cnJlbnQucHJlZmVySG9zdCB8fCAvLyBvciBhZnRlciB0aGUgY291bnRlcnMgYXJlIGluaXRpYWxpemVkLCBhbmQgYm90aCBhcmUgcmVuZGVyZWRcbiAgICAvLyAodGhpcyBpcyB0aGUgZGVmYXVsdCB3aGVuIGhvc3QgcmVuZGVycyBhcyB3ZWxsKVxuICAgIG1ldGFSZWYuY3VycmVudC5jb3VudGVyID4gMSAmJiBwcm9wcy5fX2ZhbGxiYWNrKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gX2pzeChDb21wb25lbnQsIE9iamVjdC5hc3NpZ24oe30sIHByb3BzKSk7XG4gIH07XG5cbiAgV3JhcHBlckNvbXBvbmVudC5kaXNwbGF5TmFtZSA9IGNvbXBvbmVudE5hbWU7XG4gIHJldHVybiBXcmFwcGVyQ29tcG9uZW50O1xufTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=
//# sourceURL=webpack-internal:///../../components/hoc/withInternalFallback.tsx
`);
              }
            ),
            /***/
            "../../components/icons.tsx": (
              /*!**********************************!*\
                !*** ../../components/icons.tsx ***!
                \**********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "AlignBottomIcon": () => (/* binding */ AlignBottomIcon),\n/* harmony export */   "AlignLeftIcon": () => (/* binding */ AlignLeftIcon),\n/* harmony export */   "AlignRightIcon": () => (/* binding */ AlignRightIcon),\n/* harmony export */   "AlignTopIcon": () => (/* binding */ AlignTopIcon),\n/* harmony export */   "ArrowIcon": () => (/* binding */ ArrowIcon),\n/* harmony export */   "ArrowRightIcon": () => (/* binding */ ArrowRightIcon),\n/* harmony export */   "ArrowheadArrowIcon": () => (/* binding */ ArrowheadArrowIcon),\n/* harmony export */   "ArrowheadBarIcon": () => (/* binding */ ArrowheadBarIcon),\n/* harmony export */   "ArrowheadDotIcon": () => (/* binding */ ArrowheadDotIcon),\n/* harmony export */   "ArrowheadNoneIcon": () => (/* binding */ ArrowheadNoneIcon),\n/* harmony export */   "ArrowheadTriangleIcon": () => (/* binding */ ArrowheadTriangleIcon),\n/* harmony export */   "BringForwardIcon": () => (/* binding */ BringForwardIcon),\n/* harmony export */   "BringToFrontIcon": () => (/* binding */ BringToFrontIcon),\n/* harmony export */   "CenterHorizontallyIcon": () => (/* binding */ CenterHorizontallyIcon),\n/* harmony export */   "CenterVerticallyIcon": () => (/* binding */ CenterVerticallyIcon),\n/* harmony export */   "CloseIcon": () => (/* binding */ CloseIcon),\n/* harmony export */   "DiamondIcon": () => (/* binding */ DiamondIcon),\n/* harmony export */   "DiscordIcon": () => (/* binding */ DiscordIcon),\n/* harmony export */   "DistributeHorizontallyIcon": () => (/* binding */ DistributeHorizontallyIcon),\n/* harmony export */   "DistributeVerticallyIcon": () => (/* binding */ DistributeVerticallyIcon),\n/* harmony export */   "DotsIcon": () => (/* binding */ DotsIcon),\n/* harmony export */   "DuplicateIcon": () => (/* binding */ DuplicateIcon),\n/* harmony export */   "EdgeRoundIcon": () => (/* binding */ EdgeRoundIcon),\n/* harmony export */   "EdgeSharpIcon": () => (/* binding */ EdgeSharpIcon),\n/* harmony export */   "EllipseIcon": () => (/* binding */ EllipseIcon),\n/* harmony export */   "EmbedIcon": () => (/* binding */ EmbedIcon),\n/* harmony export */   "EraserIcon": () => (/* binding */ EraserIcon),\n/* harmony export */   "ExcalLogo": () => (/* binding */ ExcalLogo),\n/* harmony export */   "ExportIcon": () => (/* binding */ ExportIcon),\n/* harmony export */   "ExportImageIcon": () => (/* binding */ ExportImageIcon),\n/* harmony export */   "ExternalLinkIcon": () => (/* binding */ ExternalLinkIcon),\n/* harmony export */   "FillCrossHatchIcon": () => (/* binding */ FillCrossHatchIcon),\n/* harmony export */   "FillHachureIcon": () => (/* binding */ FillHachureIcon),\n/* harmony export */   "FillSolidIcon": () => (/* binding */ FillSolidIcon),\n/* harmony export */   "FillZigZagIcon": () => (/* binding */ FillZigZagIcon),\n/* harmony export */   "FontFamilyCodeIcon": () => (/* binding */ FontFamilyCodeIcon),\n/* harmony export */   "FontFamilyNormalIcon": () => (/* binding */ FontFamilyNormalIcon),\n/* harmony export */   "FontSizeExtraLargeIcon": () => (/* binding */ FontSizeExtraLargeIcon),\n/* harmony export */   "FontSizeLargeIcon": () => (/* binding */ FontSizeLargeIcon),\n/* harmony export */   "FontSizeMediumIcon": () => (/* binding */ FontSizeMediumIcon),\n/* harmony export */   "FontSizeSmallIcon": () => (/* binding */ FontSizeSmallIcon),\n/* harmony export */   "FreedrawIcon": () => (/* binding */ FreedrawIcon),\n/* harmony export */   "GithubIcon": () => (/* binding */ GithubIcon),\n/* harmony export */   "GroupIcon": () => (/* binding */ GroupIcon),\n/* harmony export */   "HamburgerMenuIcon": () => (/* binding */ HamburgerMenuIcon),\n/* harmony export */   "HelpIcon": () => (/* binding */ HelpIcon),\n/* harmony export */   "ImageIcon": () => (/* binding */ ImageIcon),\n/* harmony export */   "LibraryIcon": () => (/* binding */ LibraryIcon),\n/* harmony export */   "LineIcon": () => (/* binding */ LineIcon),\n/* harmony export */   "LinkIcon": () => (/* binding */ LinkIcon),\n/* harmony export */   "LoadIcon": () => (/* binding */ LoadIcon),\n/* harmony export */   "LockedIcon": () => (/* binding */ LockedIcon),\n/* harmony export */   "MoonIcon": () => (/* binding */ MoonIcon),\n/* harmony export */   "PenModeIcon": () => (/* binding */ PenModeIcon),\n/* harmony export */   "PinIcon": () => (/* binding */ PinIcon),\n/* harmony export */   "PlusIcon": () => (/* binding */ PlusIcon),\n/* harmony export */   "PlusPromoIcon": () => (/* binding */ PlusPromoIcon),\n/* harmony export */   "RectangleIcon": () => (/* binding */ RectangleIcon),\n/* harmony export */   "RedoIcon": () => (/* binding */ RedoIcon),\n/* harmony export */   "SelectionIcon": () => (/* binding */ SelectionIcon),\n/* harmony export */   "SendBackwardIcon": () => (/* binding */ SendBackwardIcon),\n/* harmony export */   "SendToBackIcon": () => (/* binding */ SendToBackIcon),\n/* harmony export */   "SloppinessArchitectIcon": () => (/* binding */ SloppinessArchitectIcon),\n/* harmony export */   "SloppinessArtistIcon": () => (/* binding */ SloppinessArtistIcon),\n/* harmony export */   "SloppinessCartoonistIcon": () => (/* binding */ SloppinessCartoonistIcon),\n/* harmony export */   "StrokeStyleDashedIcon": () => (/* binding */ StrokeStyleDashedIcon),\n/* harmony export */   "StrokeStyleDottedIcon": () => (/* binding */ StrokeStyleDottedIcon),\n/* harmony export */   "StrokeStyleSolidIcon": () => (/* binding */ StrokeStyleSolidIcon),\n/* harmony export */   "StrokeWidthBaseIcon": () => (/* binding */ StrokeWidthBaseIcon),\n/* harmony export */   "StrokeWidthBoldIcon": () => (/* binding */ StrokeWidthBoldIcon),\n/* harmony export */   "StrokeWidthExtraBoldIcon": () => (/* binding */ StrokeWidthExtraBoldIcon),\n/* harmony export */   "SunIcon": () => (/* binding */ SunIcon),\n/* harmony export */   "TextAlignBottomIcon": () => (/* binding */ TextAlignBottomIcon),\n/* harmony export */   "TextAlignCenterIcon": () => (/* binding */ TextAlignCenterIcon),\n/* harmony export */   "TextAlignLeftIcon": () => (/* binding */ TextAlignLeftIcon),\n/* harmony export */   "TextAlignMiddleIcon": () => (/* binding */ TextAlignMiddleIcon),\n/* harmony export */   "TextAlignRightIcon": () => (/* binding */ TextAlignRightIcon),\n/* harmony export */   "TextAlignTopIcon": () => (/* binding */ TextAlignTopIcon),\n/* harmony export */   "TextIcon": () => (/* binding */ TextIcon),\n/* harmony export */   "TrashIcon": () => (/* binding */ TrashIcon),\n/* harmony export */   "TwitterIcon": () => (/* binding */ TwitterIcon),\n/* harmony export */   "UndoIcon": () => (/* binding */ UndoIcon),\n/* harmony export */   "UngroupIcon": () => (/* binding */ UngroupIcon),\n/* harmony export */   "UnlockedIcon": () => (/* binding */ UnlockedIcon),\n/* harmony export */   "WelcomeScreenHelpArrow": () => (/* binding */ WelcomeScreenHelpArrow),\n/* harmony export */   "WelcomeScreenMenuArrow": () => (/* binding */ WelcomeScreenMenuArrow),\n/* harmony export */   "WelcomeScreenTopToolbarArrow": () => (/* binding */ WelcomeScreenTopToolbarArrow),\n/* harmony export */   "ZoomInIcon": () => (/* binding */ ZoomInIcon),\n/* harmony export */   "ZoomOutIcon": () => (/* binding */ ZoomOutIcon),\n/* harmony export */   "alertTriangleIcon": () => (/* binding */ alertTriangleIcon),\n/* harmony export */   "back": () => (/* binding */ back),\n/* harmony export */   "checkIcon": () => (/* binding */ checkIcon),\n/* harmony export */   "clipboard": () => (/* binding */ clipboard),\n/* harmony export */   "clone": () => (/* binding */ clone),\n/* harmony export */   "copyIcon": () => (/* binding */ copyIcon),\n/* harmony export */   "createIcon": () => (/* binding */ createIcon),\n/* harmony export */   "done": () => (/* binding */ done),\n/* harmony export */   "downloadIcon": () => (/* binding */ downloadIcon),\n/* harmony export */   "eraser": () => (/* binding */ eraser),\n/* harmony export */   "exportToFileIcon": () => (/* binding */ exportToFileIcon),\n/* harmony export */   "extraToolsIcon": () => (/* binding */ extraToolsIcon),\n/* harmony export */   "eyeDropperIcon": () => (/* binding */ eyeDropperIcon),\n/* harmony export */   "file": () => (/* binding */ file),\n/* harmony export */   "frameToolIcon": () => (/* binding */ frameToolIcon),\n/* harmony export */   "handIcon": () => (/* binding */ handIcon),\n/* harmony export */   "helpIcon": () => (/* binding */ helpIcon),\n/* harmony export */   "iconFillColor": () => (/* binding */ iconFillColor),\n/* harmony export */   "laserPointerToolIcon": () => (/* binding */ laserPointerToolIcon),\n/* harmony export */   "menu": () => (/* binding */ menu),\n/* harmony export */   "mermaidLogoIcon": () => (/* binding */ mermaidLogoIcon),\n/* harmony export */   "palette": () => (/* binding */ palette),\n/* harmony export */   "playerPlayIcon": () => (/* binding */ playerPlayIcon),\n/* harmony export */   "playerStopFilledIcon": () => (/* binding */ playerStopFilledIcon),\n/* harmony export */   "publishIcon": () => (/* binding */ publishIcon),\n/* harmony export */   "questionCircle": () => (/* binding */ questionCircle),\n/* harmony export */   "resetZoom": () => (/* binding */ resetZoom),\n/* harmony export */   "save": () => (/* binding */ save),\n/* harmony export */   "saveAs": () => (/* binding */ saveAs),\n/* harmony export */   "share": () => (/* binding */ share),\n/* harmony export */   "shareIOS": () => (/* binding */ shareIOS),\n/* harmony export */   "shareWindows": () => (/* binding */ shareWindows),\n/* harmony export */   "shield": () => (/* binding */ shield),\n/* harmony export */   "start": () => (/* binding */ start),\n/* harmony export */   "stop": () => (/* binding */ stop),\n/* harmony export */   "tablerCheckIcon": () => (/* binding */ tablerCheckIcon),\n/* harmony export */   "usersIcon": () => (/* binding */ usersIcon),\n/* harmony export */   "zoomIn": () => (/* binding */ zoomIn),\n/* harmony export */   "zoomOut": () => (/* binding */ zoomOut)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var open_color__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! open-color */ "../../../node_modules/open-color/open-color.json");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\nvar __rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n\n  if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n //\n// All icons are imported from https://fontawesome.com/icons?d=gallery\n// Icons are under the license https://fontawesome.com/license\n//\n// Note: when adding new icons, review https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/RTL_Guidelines\n// to determine whether or not the icons should be mirrored in right-to-left languages.\n\n\n\n\n\nconst iconFillColor = theme => "var(--icon-fill-color)";\n\nconst handlerColor = theme => theme === _constants__WEBPACK_IMPORTED_MODULE_4__.THEME.LIGHT ? open_color__WEBPACK_IMPORTED_MODULE_2__.white : "#1e1e1e";\n\nconst createIcon = (d, opts = 512) => {\n  const _a = typeof opts === "number" ? {\n    width: opts\n  } : opts,\n        {\n    width = 512,\n    height = width,\n    mirror,\n    style\n  } = _a,\n        rest = __rest(_a, ["width", "height", "mirror", "style"]);\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("svg", Object.assign({\n    "aria-hidden": "true",\n    focusable: "false",\n    role: "img",\n    viewBox: `0 0 ${width} ${height}`,\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__["default"])({\n      "rtl-mirror": mirror\n    }),\n    style: style\n  }, rest, {\n    children: typeof d === "string" ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      fill: "currentColor",\n      d: d\n    }) : d\n  }));\n};\nconst tablerIconProps = {\n  width: 24,\n  height: 24,\n  fill: "none",\n  strokeWidth: 2,\n  stroke: "currentColor",\n  strokeLinecap: "round",\n  strokeLinejoin: "round"\n};\nconst modifiedTablerIconProps = {\n  width: 20,\n  height: 20,\n  fill: "none",\n  stroke: "currentColor",\n  strokeLinecap: "round",\n  strokeLinejoin: "round"\n}; // -----------------------------------------------------------------------------\n// tabler-icons: present\n\nconst PlusPromoIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "1.5"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("rect", {\n    x: 3,\n    y: 8,\n    width: 18,\n    height: 4,\n    rx: 1\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: 12,\n    y1: 8,\n    x2: 12,\n    y2: 21\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M19 12v7a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2v-7"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M7.5 8a2.5 2.5 0 0 1 0 -5a4.8 8 0 0 1 4.5 5a4.8 8 0 0 1 4.5 -5a2.5 2.5 0 0 1 0 5"\n  })]\n})), tablerIconProps); // tabler-icons: book\n\nconst LibraryIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "1.5"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M3 19a9 9 0 0 1 9 0a9 9 0 0 1 9 0"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M3 6a9 9 0 0 1 9 0a9 9 0 0 1 9 0"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "3",\n    y1: "6",\n    x2: "3",\n    y2: "19"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "12",\n    y1: "6",\n    x2: "12",\n    y2: "19"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "21",\n    y1: "6",\n    x2: "21",\n    y2: "19"\n  })]\n})), tablerIconProps); // tabler-icons: plus\n\nconst PlusIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("svg", Object.assign({\n  strokeWidth: "1.5"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "12",\n    y1: "5",\n    x2: "12",\n    y2: "19"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "5",\n    y1: "12",\n    x2: "19",\n    y2: "12"\n  })]\n})), tablerIconProps); // tabler-icons: dots-vertical\n\nconst DotsIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "1.5"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("circle", {\n    cx: "12",\n    cy: "12",\n    r: "1"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("circle", {\n    cx: "12",\n    cy: "19",\n    r: "1"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("circle", {\n    cx: "12",\n    cy: "5",\n    r: "1"\n  })]\n})), tablerIconProps); // tabler-icons: pinned\n\nconst PinIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("svg", Object.assign({\n  strokeWidth: "1.5"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M9 4v6l-2 4v2h10v-2l-2 -4v-6"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "12",\n    y1: "16",\n    x2: "12",\n    y2: "21"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "8",\n    y1: "4",\n    x2: "16",\n    y2: "4"\n  })]\n})), tablerIconProps); // tabler-icons: lock-open (via Figma)\n\nconst UnlockedIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M13.542 8.542H6.458a2.5 2.5 0 0 0-2.5 2.5v3.75a2.5 2.5 0 0 0 2.5 2.5h7.084a2.5 2.5 0 0 0 2.5-2.5v-3.75a2.5 2.5 0 0 0-2.5-2.5Z",\n    stroke: "currentColor",\n    strokeWidth: "1.25"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M10 13.958a1.042 1.042 0 1 0 0-2.083 1.042 1.042 0 0 0 0 2.083Z",\n    stroke: "currentColor",\n    strokeWidth: "1.25"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("mask", Object.assign({\n    id: "UnlockedIcon",\n    style: {\n      maskType: "alpha"\n    },\n    maskUnits: "userSpaceOnUse",\n    x: 6,\n    y: 1,\n    width: 9,\n    height: 9\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      stroke: "none",\n      d: "M6.399 9.561V5.175c0-.93.401-1.823 1.116-2.48a3.981 3.981 0 0 1 2.693-1.028c1.01 0 1.98.37 2.694 1.027.715.658 1.116 1.55 1.116 2.481",\n      fill: "#fff"\n    })\n  })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("g", Object.assign({\n    mask: "url(#UnlockedIcon)"\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      stroke: "none",\n      d: "M5.149 9.561v1.25h2.5v-1.25h-2.5Zm5.06-7.894V.417v1.25Zm2.559 3.508v1.25h2.5v-1.25h-2.5ZM7.648 8.51V5.175h-2.5V8.51h2.5Zm0-3.334c0-.564.243-1.128.713-1.561L6.668 1.775c-.959.883-1.52 2.104-1.52 3.4h2.5Zm.713-1.561a2.732 2.732 0 0 1 1.847-.697v-2.5c-1.31 0-2.585.478-3.54 1.358L8.36 3.614Zm1.847-.697c.71 0 1.374.26 1.847.697l1.694-1.839a5.231 5.231 0 0 0-3.54-1.358v2.5Zm1.847.697c.47.433.713.997.713 1.561h2.5c0-1.296-.56-2.517-1.52-3.4l-1.693 1.839Z",\n      fill: "currentColor"\n    })\n  }))]\n}), modifiedTablerIconProps); // tabler-icons: lock (via Figma)\n\nconst LockedIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "1.25"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M13.542 8.542H6.458a2.5 2.5 0 0 0-2.5 2.5v3.75a2.5 2.5 0 0 0 2.5 2.5h7.084a2.5 2.5 0 0 0 2.5-2.5v-3.75a2.5 2.5 0 0 0-2.5-2.5Z"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M10 13.958a1.042 1.042 0 1 0 0-2.083 1.042 1.042 0 0 0 0 2.083Z"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M6.667 8.333V5.417C6.667 3.806 8.159 2.5 10 2.5c1.841 0 3.333 1.306 3.333 2.917v2.916"\n  })]\n})), modifiedTablerIconProps); // custom\n\nconst WelcomeScreenMenuArrow = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M38.5 83.5c-14-2-17.833-10.473-21-22.5C14.333 48.984 12 22 12 12.5",\n    stroke: "currentColor",\n    strokeWidth: 2,\n    strokeLinecap: "round"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    fillRule: "evenodd",\n    clipRule: "evenodd",\n    d: "m12.005 10.478 7.905 14.423L6 25.75l6.005-15.273Z",\n    fill: "currentColor"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M12.005 10.478c1.92 3.495 3.838 7 7.905 14.423m-7.905-14.423c3.11 5.683 6.23 11.368 7.905 14.423m0 0c-3.68.226-7.35.455-13.91.85m13.91-.85c-5.279.33-10.566.647-13.91.85m0 0c1.936-4.931 3.882-9.86 6.005-15.273M6 25.75c2.069-5.257 4.135-10.505 6.005-15.272",\n    stroke: "currentColor",\n    strokeWidth: 2,\n    strokeLinecap: "round"\n  })]\n}), {\n  width: 41,\n  height: 94,\n  fill: "none"\n}); // custom\n\nconst WelcomeScreenHelpArrow = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M18.026 1.232c-5.268 13.125-5.548 33.555 3.285 42.311 8.823 8.75 33.31 12.304 42.422 13.523",\n    stroke: "currentColor",\n    strokeWidth: 2,\n    strokeLinecap: "round"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    fillRule: "evenodd",\n    clipRule: "evenodd",\n    d: "m72.181 59.247-13.058-10-2.948 13.62 16.006-3.62Z",\n    fill: "currentColor"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M72.181 59.247c-3.163-2.429-6.337-4.856-13.058-10m13.058 10c-5.145-3.936-10.292-7.882-13.058-10m0 0c-.78 3.603-1.563 7.196-2.948 13.62m2.948-13.62c-1.126 5.168-2.24 10.346-2.948 13.62m0 0c5.168-1.166 10.334-2.343 16.006-3.62m-16.006 3.62c5.51-1.248 11.01-2.495 16.006-3.62",\n    stroke: "currentColor",\n    strokeWidth: 2,\n    strokeLinecap: "round"\n  })]\n}), {\n  width: 85,\n  height: 71,\n  fill: "none"\n}); // custom\n\nconst WelcomeScreenTopToolbarArrow = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M1 77c14-2 31.833-11.973 35-24 3.167-12.016-6-35-9.5-43.5",\n    stroke: "currentColor",\n    strokeWidth: 2,\n    strokeLinecap: "round"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    fillRule: "evenodd",\n    clipRule: "evenodd",\n    d: "m24.165 1.093-2.132 16.309 13.27-4.258-11.138-12.05Z",\n    fill: "currentColor"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M24.165 1.093c-.522 3.953-1.037 7.916-2.132 16.309m2.131-16.309c-.835 6.424-1.68 12.854-2.13 16.308m0 0c3.51-1.125 7.013-2.243 13.27-4.257m-13.27 4.257c5.038-1.608 10.08-3.232 13.27-4.257m0 0c-3.595-3.892-7.197-7.777-11.14-12.05m11.14 12.05c-3.837-4.148-7.667-8.287-11.14-12.05",\n    stroke: "currentColor",\n    strokeWidth: 2,\n    strokeLinecap: "round"\n  })]\n}), {\n  width: 38,\n  height: 78,\n  fill: "none"\n}); // custom\n\nconst ExcalLogo = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("g", Object.assign({\n  fill: "currentColor"\n}, {\n  children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M39.9 32.889a.326.326 0 0 0-.279-.056c-2.094-3.083-4.774-6-7.343-8.833l-.419-.472a.212.212 0 0 0-.056-.139.586.586 0 0 0-.167-.111l-.084-.083-.056-.056c-.084-.167-.28-.278-.475-.167-.782.39-1.507.973-2.206 1.528-.92.722-1.842 1.445-2.708 2.25a8.405 8.405 0 0 0-.977 1.028c-.14.194-.028.361.14.444-.615.611-1.23 1.223-1.843 1.861a.315.315 0 0 0-.084.223c0 .083.056.166.111.194l1.09.833v.028c1.535 1.528 4.244 3.611 7.12 5.861.418.334.865.667 1.284 1 .195.223.39.473.558.695.084.11.28.139.391.055.056.056.14.111.196.167a.398.398 0 0 0 .167.056.255.255 0 0 0 .224-.111.394.394 0 0 0 .055-.167c.029 0 .028.028.056.028a.318.318 0 0 0 .224-.084l5.082-5.528a.309.309 0 0 0 0-.444Zm-14.63-1.917a.485.485 0 0 0 .111.14c.586.5 1.2 1 1.843 1.555l-2.569-1.945-.251-.166c-.056-.028-.112-.084-.168-.111l-.195-.167.056-.056.055-.055.112-.111c.866-.861 2.346-2.306 3.1-3.028-.81.805-2.43 3.167-2.095 3.944Zm8.767 6.89-2.122-1.612a44.713 44.713 0 0 0-2.625-2.5c1.145.861 2.122 1.611 2.262 1.75 1.117.972 1.06.806 1.815 1.445l.921.666a1.06 1.06 0 0 1-.251.25Zm.558.416-.056-.028c.084-.055.168-.111.252-.194l-.196.222ZM1.089 5.75c.055.361.14.722.195 1.056.335 1.833.67 3.5 1.284 4.75l.252.944c.084.361.223.806.363.917 1.424 1.25 3.602 3.11 5.947 4.889a.295.295 0 0 0 .363 0s0 .027.028.027a.254.254 0 0 0 .196.084.318.318 0 0 0 .223-.084c2.988-3.305 5.221-6.027 6.813-8.305.112-.111.14-.278.14-.417.111-.111.195-.25.307-.333.111-.111.111-.306 0-.39l-.028-.027c0-.055-.028-.139-.084-.167-.698-.666-1.2-1.138-1.731-1.638-.922-.862-1.871-1.75-3.881-3.75l-.028-.028c-.028-.028-.056-.056-.112-.056-.558-.194-1.703-.389-3.127-.639C6.087 2.223 3.21 1.723.614.944c0 0-.168 0-.196.028l-.083.084c-.028.027-.056.055-.224.11h.056-.056c.028.167.028.278.084.473 0 .055.112.5.112.555l.782 3.556Zm15.496 3.278-.335-.334c.084.112.196.195.335.334Zm-3.546 4.666-.056.056c0-.028.028-.056.056-.056Zm-2.038-10c.168.167.866.834 1.033.973-.726-.334-2.54-1.167-3.379-1.445.838.167 1.983.334 2.346.472ZM1.424 2.306c.419.722.754 3.222 1.089 5.666-.196-.778-.335-1.555-.503-2.278-.251-1.277-.503-2.416-.838-3.416.056 0 .14 0 .252.028Zm-.168-.584c-.112 0-.223-.028-.307-.028 0-.027 0-.055-.028-.055.14 0 .223.028.335.083Zm-1.089.222c0-.027 0-.027 0 0ZM39.453 1.333c.028-.11-.558-.61-.363-.639.42-.027.42-.666 0-.666-.558.028-1.144.166-1.675.25-.977.194-1.982.389-2.96.61-2.205.473-4.383.973-6.561 1.557-.67.194-1.424.333-2.066.666-.224.111-.196.333-.084.472-.056.028-.084.028-.14.056-.195.028-.363.056-.558.083-.168.028-.252.167-.224.334 0 .027.028.083.028.11-1.173 1.556-2.485 3.195-3.909 4.945-1.396 1.611-2.876 3.306-4.356 5.056-4.719 5.5-10.052 11.75-15.943 17.25a.268.268 0 0 0 0 .389c.028.027.056.055.084.055-.084.084-.168.14-.252.222-.056.056-.084.111-.084.167a.605.605 0 0 0-.111.139c-.112.111-.112.305.028.389.111.11.307.11.39-.028.029-.028.029-.056.056-.056a.44.44 0 0 1 .615 0c.335.362.67.723.977 1.028l-.698-.583c-.112-.111-.307-.083-.39.028-.113.11-.085.305.027.389l7.427 6.194c.056.056.112.056.196.056s.14-.028.195-.084l.168-.166c.028.027.083.027.111.027.084 0 .14-.027.196-.083 10.052-10.055 18.15-17.639 27.42-24.417.083-.055.111-.166.111-.25.112 0 .196-.083.251-.194 1.704-5.194 2.039-9.806 2.15-12.083v-.028c0-.028.028-.056.028-.083.028-.056.028-.084.028-.084a1.626 1.626 0 0 0-.111-1.028ZM21.472 9.5c.446-.5.893-1.028 1.34-1.5-2.876 3.778-7.65 9.583-14.408 16.5 4.607-5.083 9.242-10.333 13.068-15ZM5.193 35.778h.084-.084Zm3.462 3.194c-.027-.028-.027-.028 0-.028v.028Zm4.16-3.583c.224-.25.448-.472.699-.722 0 0 0 .027.028.027-.252.223-.475.445-.726.695Zm1.146-1.111c.14-.14.279-.334.446-.5l.028-.028c1.648-1.694 3.351-3.389 5.082-5.111l.028-.028c.419-.333.921-.694 1.368-1.028a379.003 379.003 0 0 0-6.952 6.695ZM24.794 6.472c-.921 1.195-1.954 2.778-2.82 4.028-2.736 3.944-11.532 13.583-11.727 13.75a1976.983 1976.983 0 0 1-8.042 7.639l-.167.167c-.14-.167-.14-.417.028-.556C14.49 19.861 22.03 10.167 25.074 5.917c-.084.194-.14.36-.28.555Zm4.83 5.695c-1.116-.64-1.646-1.64-1.34-2.611l.084-.334c.028-.083.084-.194.14-.277.307-.5.754-.917 1.257-1.167.027 0 .055 0 .083-.028-.028-.056-.028-.139-.028-.222.028-.167.14-.278.335-.278.335 0 1.369.306 1.76.639.111.083.223.194.335.305.14.167.363.445.474.667.056.028.112.306.196.445.056.222.111.472.084.694-.028.028 0 .194-.028.194a2.668 2.668 0 0 1-.363 1.028c-.028.028-.028.056-.056.084l-.028.027c-.14.223-.335.417-.53.556-.643.444-1.369.583-2.095.389 0 0-.195-.084-.28-.111Zm8.154-.834a39.098 39.098 0 0 1-.893 3.167c0 .028-.028.083 0 .111-.056 0-.084.028-.14.056-2.206 1.61-4.356 3.305-6.506 5.028 1.843-1.64 3.686-3.306 5.613-4.945.558-.5.949-1.139 1.06-1.861l.28-1.667v-.055c.14-.334.67-.195.586.166Z",\n    fill: "currentColor"\n  })\n})), {\n  width: 40,\n  height: 40,\n  fill: "none"\n}); // custom\n\nconst SelectionIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  stroke: "currentColor",\n  strokeLinecap: "round",\n  strokeLinejoin: "round"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M6 6l4.153 11.793a0.365 .365 0 0 0 .331 .207a0.366 .366 0 0 0 .332 -.207l2.184 -4.793l4.787 -1.994a0.355 .355 0 0 0 .213 -.323a0.355 .355 0 0 0 -.213 -.323l-11.787 -4.36z"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M13.5 13.5l4.5 4.5"\n  })]\n})), {\n  fill: "none",\n  width: 22,\n  height: 22,\n  strokeWidth: 1.25\n}); // tabler-icons: square\n\nconst RectangleIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "1.5"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("rect", {\n    x: "4",\n    y: "4",\n    width: "16",\n    height: "16",\n    rx: "2"\n  })]\n})), tablerIconProps); // tabler-icons: square-rotated\n\nconst DiamondIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "1.5"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M10.5 20.4l-6.9 -6.9c-.781 -.781 -.781 -2.219 0 -3l6.9 -6.9c.781 -.781 2.219 -.781 3 0l6.9 6.9c.781 .781 .781 2.219 0 3l-6.9 6.9c-.781 .781 -2.219 .781 -3 0z"\n  })]\n})), tablerIconProps); // tabler-icons: circle\n\nconst EllipseIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "1.5"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("circle", {\n    cx: "12",\n    cy: "12",\n    r: "9"\n  })]\n})), tablerIconProps); // tabler-icons: arrow-narrow-right\n\nconst ArrowIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "1.5"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "5",\n    y1: "12",\n    x2: "19",\n    y2: "12"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "15",\n    y1: "16",\n    x2: "19",\n    y2: "12"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "15",\n    y1: "8",\n    x2: "19",\n    y2: "12"\n  })]\n})), tablerIconProps); // custom?\n\nconst LineIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n  d: "M4.167 10h11.666",\n  strokeWidth: "1.5"\n}), modifiedTablerIconProps);\nconst PenModeIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "1.25"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M20 17v-12c0 -1.121 -.879 -2 -2 -2s-2 .879 -2 2v12l2 2l2 -2z"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M16 7h4"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M18 19h-13a2 2 0 1 1 0 -4h4a2 2 0 1 0 0 -4h-3"\n  })]\n})), tablerIconProps); // modified tabler-icons: pencil\n\nconst FreedrawIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "1.25"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    clipRule: "evenodd",\n    d: "m7.643 15.69 7.774-7.773a2.357 2.357 0 1 0-3.334-3.334L4.31 12.357a3.333 3.333 0 0 0-.977 2.357v1.953h1.953c.884 0 1.732-.352 2.357-.977Z"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "m11.25 5.417 3.333 3.333"\n  })]\n})), modifiedTablerIconProps); // tabler-icons: typography\n\nconst TextIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "1.5"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "4",\n    y1: "20",\n    x2: "7",\n    y2: "20"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "14",\n    y1: "20",\n    x2: "21",\n    y2: "20"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "6.9",\n    y1: "15",\n    x2: "13.8",\n    y2: "15"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "10.2",\n    y1: "6.3",\n    x2: "16",\n    y2: "20"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("polyline", {\n    points: "5 20 11 4 13 4 20 20"\n  })]\n})), tablerIconProps); // modified tabler-icons: photo\n\nconst ImageIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "1.25"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M12.5 6.667h.01"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M4.91 2.625h10.18a2.284 2.284 0 0 1 2.285 2.284v10.182a2.284 2.284 0 0 1-2.284 2.284H4.909a2.284 2.284 0 0 1-2.284-2.284V4.909a2.284 2.284 0 0 1 2.284-2.284Z"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "m3.333 12.5 3.334-3.333c.773-.745 1.726-.745 2.5 0l4.166 4.166"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "m11.667 11.667.833-.834c.774-.744 1.726-.744 2.5 0l1.667 1.667"\n  })]\n})), modifiedTablerIconProps); // tabler-icons: eraser\n\nconst EraserIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "1.5"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M19 20h-10.5l-4.21 -4.3a1 1 0 0 1 0 -1.41l10 -10a1 1 0 0 1 1.41 0l5 5a1 1 0 0 1 0 1.41l-9.2 9.3"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M18 13.3l-6.3 -6.3"\n  })]\n})), tablerIconProps);\nconst ZoomInIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n  strokeWidth: "1.25",\n  d: "M10 4.167v11.666M4.167 10h11.666"\n}), modifiedTablerIconProps);\nconst ZoomOutIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n  d: "M5 10h10",\n  strokeWidth: "1.25"\n}), modifiedTablerIconProps);\nconst TrashIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n  strokeWidth: "1.25",\n  d: "M3.333 5.833h13.334M8.333 9.167v5M11.667 9.167v5M4.167 5.833l.833 10c0 .92.746 1.667 1.667 1.667h6.666c.92 0 1.667-.746 1.667-1.667l.833-10M7.5 5.833v-2.5c0-.46.373-.833.833-.833h3.334c.46 0 .833.373.833.833v2.5"\n}), modifiedTablerIconProps);\nconst EmbedIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "1.25"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("polyline", {\n    points: "12 16 18 10 12 4"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("polyline", {\n    points: "8 4 2 10 8 16"\n  })]\n})), modifiedTablerIconProps);\nconst DuplicateIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "1.25"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M14.375 6.458H8.958a2.5 2.5 0 0 0-2.5 2.5v5.417a2.5 2.5 0 0 0 2.5 2.5h5.417a2.5 2.5 0 0 0 2.5-2.5V8.958a2.5 2.5 0 0 0-2.5-2.5Z"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    clipRule: "evenodd",\n    d: "M11.667 3.125c.517 0 .986.21 1.325.55.34.338.55.807.55 1.325v1.458H8.333c-.485 0-.927.185-1.26.487-.343.312-.57.75-.609 1.24l-.005 5.357H5a1.87 1.87 0 0 1-1.326-.55 1.87 1.87 0 0 1-.549-1.325V5c0-.518.21-.987.55-1.326.338-.34.807-.549 1.325-.549h6.667Z"\n  })]\n})), modifiedTablerIconProps);\nconst MoonIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n  clipRule: "evenodd",\n  d: "M10 2.5h.328a6.25 6.25 0 0 0 6.6 10.372A7.5 7.5 0 1 1 10 2.493V2.5Z",\n  stroke: "currentColor"\n}), modifiedTablerIconProps);\nconst SunIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("g", Object.assign({\n  stroke: "currentColor",\n  strokeWidth: "1.25",\n  strokeLinecap: "round",\n  strokeLinejoin: "round"\n}, {\n  children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M10 12.5a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5ZM10 4.167V2.5M14.167 5.833l1.166-1.166M15.833 10H17.5M14.167 14.167l1.166 1.166M10 15.833V17.5M5.833 14.167l-1.166 1.166M5 10H3.333M5.833 5.833 4.667 4.667"\n  })\n})), modifiedTablerIconProps);\nconst HamburgerMenuIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "1.5"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "4",\n    y1: "6",\n    x2: "20",\n    y2: "6"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "4",\n    y1: "12",\n    x2: "20",\n    y2: "12"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "4",\n    y1: "18",\n    x2: "20",\n    y2: "18"\n  })]\n})), tablerIconProps);\nconst ExportIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n  strokeWidth: "1.25",\n  d: "M3.333 14.167v1.666c0 .92.747 1.667 1.667 1.667h10c.92 0 1.667-.746 1.667-1.667v-1.666M5.833 9.167 10 13.333l4.167-4.166M10 3.333v10"\n}), modifiedTablerIconProps);\nconst HelpIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "1.5"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("circle", {\n    cx: "12",\n    cy: "12",\n    r: "9"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "12",\n    y1: "17",\n    x2: "12",\n    y2: "17.01"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M12 13.5a1.5 1.5 0 0 1 1 -1.5a2.6 2.6 0 1 0 -3 -4"\n  })]\n})), tablerIconProps);\nconst ExternalLinkIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n  strokeWidth: "1.25",\n  d: "M9.167 5.833H5.833c-1.254 0-2.5 1.282-2.5 2.5v5.834c0 1.283 1.252 2.5 2.5 2.5h5.834c1.251 0 2.5-1.25 2.5-2.5v-3.334M8.333 11.667l8.334-8.334M12.5 3.333h4.167V7.5"\n}), modifiedTablerIconProps);\nconst GithubIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n  d: "M7.5 15.833c-3.583 1.167-3.583-2.083-5-2.5m10 4.167v-2.917c0-.833.083-1.166-.417-1.666 2.334-.25 4.584-1.167 4.584-5a3.833 3.833 0 0 0-1.084-2.667 3.5 3.5 0 0 0-.083-2.667s-.917-.25-2.917 1.084a10.25 10.25 0 0 0-5.166 0C5.417 2.333 4.5 2.583 4.5 2.583a3.5 3.5 0 0 0-.083 2.667 3.833 3.833 0 0 0-1.084 2.667c0 3.833 2.25 4.75 4.584 5-.5.5-.5 1-.417 1.666V17.5",\n  strokeWidth: "1.25"\n}), modifiedTablerIconProps);\nconst DiscordIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "1.25"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M7.5 10.833a.833.833 0 1 0 0-1.666.833.833 0 0 0 0 1.666ZM12.5 10.833a.833.833 0 1 0 0-1.666.833.833 0 0 0 0 1.666ZM6.25 6.25c2.917-.833 4.583-.833 7.5 0M5.833 13.75c2.917.833 5.417.833 8.334 0"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M12.917 14.167c0 .833 1.25 2.5 1.666 2.5 1.25 0 2.361-1.39 2.917-2.5.556-1.39.417-4.861-1.25-9.584-1.214-.846-2.5-1.116-3.75-1.25l-.833 2.084M7.083 14.167c0 .833-1.13 2.5-1.526 2.5-1.191 0-2.249-1.39-2.778-2.5-.529-1.39-.397-4.861 1.19-9.584 1.157-.846 2.318-1.116 3.531-1.25l.833 2.084"\n  })]\n})), modifiedTablerIconProps);\nconst TwitterIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "1.25"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M22 4.01c-1 .49 -1.98 .689 -3 .99c-1.121 -1.265 -2.783 -1.335 -4.38 -.737s-2.643 2.06 -2.62 3.737v1c-3.245 .083 -6.135 -1.395 -8 -4c0 0 -4.182 7.433 4 11c-1.872 1.247 -3.739 2.088 -6 2c3.308 1.803 6.913 2.423 10.034 1.517c3.58 -1.04 6.522 -3.723 7.651 -7.742a13.84 13.84 0 0 0 .497 -3.753c-.002 -.249 1.51 -2.772 1.818 -4.013z"\n  })]\n})), tablerIconProps);\nconst checkIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("polyline", {\n  fill: "none",\n  stroke: "currentColor",\n  points: "20 6 9 17 4 12"\n}), {\n  width: 24,\n  height: 24\n});\nconst LinkIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "1.25"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M8.333 11.667a2.917 2.917 0 0 0 4.167 0l3.333-3.334a2.946 2.946 0 1 0-4.166-4.166l-.417.416"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M11.667 8.333a2.917 2.917 0 0 0-4.167 0l-3.333 3.334a2.946 2.946 0 0 0 4.166 4.166l.417-.416"\n  })]\n})), modifiedTablerIconProps);\nconst save = createIcon("M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM224 416c-35.346 0-64-28.654-64-64 0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64zm96-304.52V212c0 6.627-5.373 12-12 12H76c-6.627 0-12-5.373-12-12V108c0-6.627 5.373-12 12-12h228.52c3.183 0 6.235 1.264 8.485 3.515l3.48 3.48A11.996 11.996 0 0 1 320 111.48z", {\n  width: 448,\n  height: 512\n});\nconst saveAs = createIcon("M252 54L203 8a28 27 0 00-20-8H28C12 0 0 12 0 27v195c0 15 12 26 28 26h204c15 0 28-11 28-26V73a28 27 0 00-8-19zM130 213c-21 0-37-16-37-36 0-19 16-35 37-35 20 0 37 16 37 35 0 20-17 36-37 36zm56-169v56c0 4-4 6-7 6H44c-4 0-7-2-7-6V42c0-4 3-7 7-7h133l4 2 3 2a7 7 0 012 5z M296 201l87 95-188 205-78 9c-10 1-19-8-18-20l9-84zm141-14l-41-44a31 31 0 00-46 0l-38 41 87 95 38-42c13-14 13-36 0-50z", {\n  width: 448,\n  height: 512\n}); // tabler-icon: folder\n\nconst LoadIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n  d: "m9.257 6.351.183.183H15.819c.34 0 .727.182 1.051.506.323.323.505.708.505 1.05v5.819c0 .316-.183.7-.52 1.035-.337.338-.723.522-1.037.522H4.182c-.352 0-.74-.181-1.058-.5-.318-.318-.499-.705-.499-1.057V5.182c0-.351.181-.736.5-1.054.32-.321.71-.503 1.057-.503H6.53l2.726 2.726Z",\n  strokeWidth: "1.25"\n}), modifiedTablerIconProps);\nconst clipboard = createIcon("M384 112v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h80c0-35.29 28.71-64 64-64s64 28.71 64 64h80c26.51 0 48 21.49 48 48zM192 40c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24m96 114v-20a6 6 0 0 0-6-6H102a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6h180a6 6 0 0 0 6-6z", {\n  width: 384,\n  height: 512\n});\nconst palette = createIcon("M204.3 5C104.9 24.4 24.8 104.3 5.2 203.4c-37 187 131.7 326.4 258.8 306.7 41.2-6.4 61.4-54.6 42.5-91.7-23.1-45.4 9.9-98.4 60.9-98.4h79.7c35.8 0 64.8-29.6 64.9-65.3C511.5 97.1 368.1-26.9 204.3 5zM96 320c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm32-128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128-64c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 64c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z");\nconst ExportImageIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "1.25"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M15 8h.01"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M12 20h-5a3 3 0 0 1 -3 -3v-10a3 3 0 0 1 3 -3h10a3 3 0 0 1 3 3v5"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M4 15l4 -4c.928 -.893 2.072 -.893 3 0l4 4"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M14 14l1 -1c.617 -.593 1.328 -.793 2.009 -.598"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M19 16v6"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M22 19l-3 3l-3 -3"\n  })]\n})), tablerIconProps);\nconst exportToFileIcon = createIcon("M216 0h80c13.3 0 24 10.7 24 24v168h87.7c17.8 0 26.7 21.5 14.1 34.1L269.7 378.3c-7.5 7.5-19.8 7.5-27.3 0L90.1 226.1c-12.6-12.6-3.7-34.1 14.1-34.1H192V24c0-13.3 10.7-24 24-24zm296 376v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h146.7l49 49c20.1 20.1 52.5 20.1 72.6 0l49-49H488c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z", {\n  width: 512,\n  height: 512\n});\nconst zoomIn = createIcon("M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z", {\n  width: 448,\n  height: 512\n});\nconst zoomOut = createIcon("M416 208H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z", {\n  width: 448,\n  height: 512\n});\nconst done = createIcon("M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z");\nconst menu = createIcon("M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z");\nconst UndoIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n  d: "M7.5 10.833 4.167 7.5 7.5 4.167M4.167 7.5h9.166a3.333 3.333 0 0 1 0 6.667H12.5",\n  strokeWidth: "1.25"\n}), modifiedTablerIconProps);\nconst RedoIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n  d: "M12.5 10.833 15.833 7.5 12.5 4.167M15.833 7.5H6.667a3.333 3.333 0 1 0 0 6.667H7.5",\n  strokeWidth: "1.25"\n}), modifiedTablerIconProps);\nconst questionCircle = createIcon("M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zM262.655 90c-54.497 0-89.255 22.957-116.549 63.758-3.536 5.286-2.353 12.415 2.715 16.258l34.699 26.31c5.205 3.947 12.621 3.008 16.665-2.122 17.864-22.658 30.113-35.797 57.303-35.797 20.429 0 45.698 13.148 45.698 32.958 0 14.976-12.363 22.667-32.534 33.976C247.128 238.528 216 254.941 216 296v4c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12v-1.333c0-28.462 83.186-29.647 83.186-106.667 0-58.002-60.165-102-116.531-102zM256 338c-25.365 0-46 20.635-46 46 0 25.364 20.635 46 46 46s46-20.636 46-46c0-25.365-20.635-46-46-46z", {\n  mirror: true\n});\nconst share = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n  d: "M5 12.5a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5ZM15 7.5a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5ZM15 17.5a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5ZM7.25 8.917l5.5-2.834M7.25 11.083l5.5 2.834",\n  strokeWidth: "1.5"\n}), modifiedTablerIconProps);\nconst shareIOS = createIcon("M16 5l-1.42 1.42-1.59-1.59V16h-1.98V4.83L9.42 6.42 8 5l4-4 4 4zm4 5v11c0 1.1-.9 2-2 2H6c-1.11 0-2-.9-2-2V10c0-1.11.89-2 2-2h3v2H6v11h12V10h-3V8h3c1.1 0 2 .89 2 2z", {\n  width: 24,\n  height: 24\n});\nconst shareWindows = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    fill: "currentColor",\n    d: "M40 5.6v6.1l-4.1.7c-8.9 1.4-16.5 6.9-20.6 15C13 32 10.9 43 12.4 43c.4 0 2.4-1.3 4.4-3 5-3.9 12.1-7 18.2-7.7l5-.6v12.8l11.2-11.3L62.5 22 51.2 10.8 40-.5v6.1zm10.2 22.6L44 34.5v-6.8l-6.9.6c-3.9.3-9.8 1.7-13.2 3.1-3.5 1.4-6.5 2.4-6.7 2.2-.9-1 3-7.5 6.4-10.8C28 18.6 34.4 16 40.1 16c3.7 0 3.9-.1 3.9-3.2V9.5l6.2 6.3 6.3 6.2-6.3 6.2z"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "currentColor",\n    fill: "currentColor",\n    d: "M0 36v20h48v-6.2c0-6 0-6.1-2-4.3-1.1 1-2 2.9-2 4.2V52H4V34c0-17.3-.1-18-2-18s-2 .7-2 20z"\n  })]\n}), {\n  width: 64,\n  height: 64\n}); // Icon imported form Storybook\n// Storybook is licensed under MIT https://github.com/storybookjs/storybook/blob/next/LICENSE\n\nconst resetZoom = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n  stroke: "currentColor",\n  strokeWidth: "40",\n  fill: "currentColor",\n  d: "M148 560a318 318 0 0 0 522 110 316 316 0 0 0 0-450 316 316 0 0 0-450 0c-11 11-21 22-30 34v4h47c25 0 46 21 46 46s-21 45-46 45H90c-13 0-25-6-33-14-9-9-14-20-14-33V156c0-25 20-45 45-45s45 20 45 45v32l1 1a401 401 0 0 1 623 509l212 212a42 42 0 0 1-59 59L698 757A401 401 0 0 1 65 570a42 42 0 0 1 83-10z"\n}), {\n  width: 1024\n});\nconst BringForwardIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n    clipPath: "url(#a)",\n    stroke: "currentColor",\n    strokeWidth: "1.25",\n    strokeLinecap: "round",\n    strokeLinejoin: "round"\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M13.889 4.167H8.333c-.767 0-1.389.622-1.389 1.389v5.555c0 .767.622 1.389 1.39 1.389h5.555c.767 0 1.389-.622 1.389-1.389V5.556c0-.767-.622-1.39-1.39-1.39Z",\n      fill: "currentColor"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M12.5 12.5v1.389a1.389 1.389 0 0 1-1.389 1.389H5.556a1.389 1.389 0 0 1-1.39-1.39V8.334a1.389 1.389 0 0 1 1.39-1.389h1.388"\n    })]\n  })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("defs", {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("clipPath", Object.assign({\n      id: "a"\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n        fill: "#fff",\n        d: "M0 0h20v20H0z"\n      })\n    }))\n  })]\n}), modifiedTablerIconProps);\nconst SendBackwardIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n    clipPath: "url(#a)",\n    stroke: "currentColor",\n    strokeWidth: "1.25",\n    strokeLinecap: "round",\n    strokeLinejoin: "round"\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      fillRule: "evenodd",\n      clipRule: "evenodd",\n      d: "M6.944 12.5H12.5v1.389a1.389 1.389 0 0 1-1.389 1.389H5.556a1.389 1.389 0 0 1-1.39-1.39V8.334a1.389 1.389 0 0 1 1.39-1.389h1.388",\n      fill: "currentColor"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M13.889 4.167H8.333c-.767 0-1.389.621-1.389 1.389v5.555c0 .767.622 1.389 1.39 1.389h5.555c.767 0 1.389-.622 1.389-1.389V5.556c0-.768-.622-1.39-1.39-1.39Z"\n    })]\n  })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("defs", {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("clipPath", Object.assign({\n      id: "a"\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n        fill: "#fff",\n        d: "M0 0h20v20H0z"\n      })\n    }))\n  })]\n}), modifiedTablerIconProps);\nconst BringToFrontIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n    clipPath: "url(#a)",\n    stroke: "currentColor",\n    strokeWidth: "1.25"\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M8.775 6.458h2.45a2.316 2.316 0 0 1 2.317 2.316v2.452a2.316 2.316 0 0 1-2.316 2.316H8.774a2.316 2.316 0 0 1-2.317-2.316V8.774a2.316 2.316 0 0 1 2.317-2.316Z",\n      fill: "currentColor"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M5.441 9.792h2.451a2.316 2.316 0 0 1 2.316 2.316v2.45a2.316 2.316 0 0 1-2.316 2.317h-2.45a2.316 2.316 0 0 1-2.317-2.316v-2.451a2.316 2.316 0 0 1 2.316-2.316ZM12.108 3.125h2.45a2.316 2.316 0 0 1 2.317 2.316v2.451a2.316 2.316 0 0 1-2.316 2.316h-2.451a2.316 2.316 0 0 1-2.316-2.316v-2.45a2.316 2.316 0 0 1 2.316-2.317Z"\n    })]\n  })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("defs", {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("clipPath", Object.assign({\n      id: "a"\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n        fill: "#fff",\n        d: "M0 0h20v20H0z"\n      })\n    }))\n  })]\n}), modifiedTablerIconProps);\nconst SendToBackIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n    clipPath: "url(#a)"\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M5.441 9.792h2.451a2.316 2.316 0 0 1 2.316 2.316v2.45a2.316 2.316 0 0 1-2.316 2.317h-2.45a2.316 2.316 0 0 1-2.317-2.316v-2.451a2.316 2.316 0 0 1 2.316-2.316Z",\n      stroke: "currentColor",\n      strokeWidth: "1.25"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M5.441 9.792h2.451a2.316 2.316 0 0 1 2.316 2.316v2.45a2.316 2.316 0 0 1-2.316 2.317h-2.45a2.316 2.316 0 0 1-2.317-2.316v-2.451a2.316 2.316 0 0 1 2.316-2.316Z",\n      stroke: "currentColor",\n      strokeWidth: "1.25"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("mask", Object.assign({\n      id: "SendToBackIcon",\n      fill: "#fff"\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n        fillRule: "evenodd",\n        clipRule: "evenodd",\n        d: "M9.167 5.833v2.06a2.941 2.941 0 0 0 2.94 2.94h2.06v.393a2.941 2.941 0 0 1-2.941 2.94h-.393v-2.058a2.941 2.941 0 0 0-2.94-2.941h-2.06v-.393a2.941 2.941 0 0 1 2.942-2.94h.392Z"\n      })\n    })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      fillRule: "evenodd",\n      clipRule: "evenodd",\n      d: "M9.167 5.833v2.06a2.941 2.941 0 0 0 2.94 2.94h2.06v.393a2.941 2.941 0 0 1-2.941 2.94h-.393v-2.058a2.941 2.941 0 0 0-2.94-2.941h-2.06v-.393a2.941 2.941 0 0 1 2.942-2.94h.392Z",\n      fill: "currentColor"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M9.167 5.833h1.25v-1.25h-1.25v1.25Zm5 5h1.25v-1.25h-1.25v1.25Zm-3.334 3.334h-1.25v1.25h1.25v-1.25Zm-5-5h-1.25v1.25h1.25v-1.25Zm2.084-3.334v2.06h2.5v-2.06h-2.5Zm0 2.06a4.191 4.191 0 0 0 4.19 4.19v-2.5a1.691 1.691 0 0 1-1.69-1.69h-2.5Zm4.19 4.19h2.06v-2.5h-2.06v2.5Zm.81-1.25v.393h2.5v-.393h-2.5Zm0 .393c0 .933-.758 1.69-1.691 1.69v2.5a4.191 4.191 0 0 0 4.19-4.19h-2.5Zm-1.691 1.69h-.393v2.5h.393v-2.5Zm.857 1.25v-2.058h-2.5v2.059h2.5Zm0-2.058a4.191 4.191 0 0 0-4.19-4.191v2.5c.933 0 1.69.757 1.69 1.69h2.5Zm-4.19-4.191h-2.06v2.5h2.06v-2.5Zm-.81 1.25v-.393h-2.5v.393h2.5Zm0-.393c0-.934.758-1.69 1.692-1.69v-2.5a4.191 4.191 0 0 0-4.192 4.19h2.5Zm1.692-1.69h.392v-2.5h-.392v2.5Z",\n      fill: "currentColor",\n      mask: "url(#SendToBackIcon)"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M12.108 3.125h2.45a2.316 2.316 0 0 1 2.317 2.316v2.451a2.316 2.316 0 0 1-2.316 2.316h-2.451a2.316 2.316 0 0 1-2.316-2.316v-2.45a2.316 2.316 0 0 1 2.316-2.317Z",\n      stroke: "currentColor",\n      strokeWidth: "1.25"\n    })]\n  })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("defs", {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("clipPath", Object.assign({\n      id: "a"\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n        fill: "#fff",\n        d: "M0 0h20v20H0z"\n      })\n    }))\n  })]\n}), modifiedTablerIconProps); //\n// Align action icons created from scratch to match those of z-index actions\n// Note: vertical align icons are flipped so the larger item is always the\n// first one the user sees. Horizontal align icons should not be flipped since\n// that would make them lie about their function.\n//\n\nconst AlignTopIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n    clipPath: "url(#a)",\n    stroke: "currentColor",\n    strokeWidth: "1.25"\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M3.333 3.333h13.334",\n      strokeLinecap: "round",\n      strokeLinejoin: "round"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M13.542 6.458h-.417c-.92 0-1.667.747-1.667 1.667v7.083c0 .92.746 1.667 1.667 1.667h.417c.92 0 1.666-.746 1.666-1.667V8.125c0-.92-.746-1.667-1.666-1.667ZM6.875 6.458h-.417c-.92 0-1.666.747-1.666 1.667v3.75c0 .92.746 1.667 1.666 1.667h.417c.92 0 1.667-.746 1.667-1.667v-3.75c0-.92-.747-1.667-1.667-1.667Z"\n    })]\n  })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("defs", {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("clipPath", Object.assign({\n      id: "a"\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n        fill: "#fff",\n        d: "M0 0h20v20H0z"\n      })\n    }))\n  })]\n}), modifiedTablerIconProps);\nconst AlignBottomIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n    clipPath: "url(#a)",\n    stroke: "currentColor",\n    strokeWidth: "1.25"\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M3.333 16.667h13.334",\n      strokeLinecap: "round",\n      strokeLinejoin: "round"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M6.875 3.125h-.417c-.92 0-1.666.746-1.666 1.667v7.083c0 .92.746 1.667 1.666 1.667h.417c.92 0 1.667-.746 1.667-1.667V4.792c0-.92-.747-1.667-1.667-1.667ZM13.542 5.817h-.417c-.92 0-1.667.747-1.667 1.667v4.391c0 .92.746 1.667 1.667 1.667h.417c.92 0 1.666-.746 1.666-1.667V7.484c0-.92-.746-1.667-1.666-1.667Z"\n    })]\n  })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("defs", {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("clipPath", Object.assign({\n      id: "a"\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n        fill: "#fff",\n        d: "M0 0h20v20H0z"\n      })\n    }))\n  })]\n}), modifiedTablerIconProps);\nconst AlignLeftIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n    clipPath: "url(#a)",\n    stroke: "currentColor",\n    strokeWidth: "1.25"\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M3.333 3.333v13.334",\n      strokeLinecap: "round",\n      strokeLinejoin: "round"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M15.208 4.792H8.125c-.92 0-1.667.746-1.667 1.666v.417c0 .92.747 1.667 1.667 1.667h7.083c.92 0 1.667-.747 1.667-1.667v-.417c0-.92-.746-1.666-1.667-1.666ZM12.516 11.458H8.125c-.92 0-1.667.746-1.667 1.667v.417c0 .92.747 1.666 1.667 1.666h4.391c.92 0 1.667-.746 1.667-1.666v-.417c0-.92-.746-1.667-1.667-1.667Z"\n    })]\n  })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("defs", {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("clipPath", Object.assign({\n      id: "a"\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n        fill: "#fff",\n        d: "M0 0h20v20H0z"\n      })\n    }))\n  })]\n}), modifiedTablerIconProps);\nconst AlignRightIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n    clipPath: "url(#a)",\n    stroke: "currentColor",\n    strokeWidth: "1.25"\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M16.667 3.333v13.334",\n      strokeLinecap: "round",\n      strokeLinejoin: "round"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M11.875 4.792H4.792c-.92 0-1.667.746-1.667 1.666v.417c0 .92.746 1.667 1.667 1.667h7.083c.92 0 1.667-.747 1.667-1.667v-.417c0-.92-.746-1.666-1.667-1.666ZM11.683 11.458H7.292c-.92 0-1.667.746-1.667 1.667v.417c0 .92.746 1.666 1.667 1.666h4.39c.921 0 1.667-.746 1.667-1.666v-.417c0-.92-.746-1.667-1.666-1.667Z"\n    })]\n  })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("defs", {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("clipPath", Object.assign({\n      id: "a"\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n        fill: "#fff",\n        d: "M0 0h20v20H0z"\n      })\n    }))\n  })]\n}), modifiedTablerIconProps);\nconst DistributeHorizontallyIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n    clipPath: "url(#a)",\n    stroke: "currentColor",\n    strokeWidth: "1.25"\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M16.667 3.333v13.334M3.333 3.333v13.334",\n      strokeLinecap: "round",\n      strokeLinejoin: "round"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M14.375 10.208v-.416c0-.92-.746-1.667-1.667-1.667H7.292c-.92 0-1.667.746-1.667 1.667v.416c0 .92.746 1.667 1.667 1.667h5.416c.92 0 1.667-.746 1.667-1.667Z"\n    })]\n  })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("defs", {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("clipPath", Object.assign({\n      id: "a"\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n        fill: "#fff",\n        d: "M0 0h20v20H0z"\n      })\n    }))\n  })]\n}), modifiedTablerIconProps);\nconst DistributeVerticallyIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n    clipPath: "url(#a)",\n    stroke: "currentColor",\n    strokeWidth: "1.25"\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M3.333 3.333h13.334M3.333 16.667h13.334",\n      strokeLinecap: "round",\n      strokeLinejoin: "round"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M10.208 5.625h-.416c-.92 0-1.667.746-1.667 1.667v5.416c0 .92.746 1.667 1.667 1.667h.416c.92 0 1.667-.746 1.667-1.667V7.292c0-.92-.746-1.667-1.667-1.667Z"\n    })]\n  })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("defs", {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("clipPath", Object.assign({\n      id: "a"\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n        fill: "#fff",\n        d: "M0 0h20v20H0z"\n      })\n    }))\n  })]\n}), modifiedTablerIconProps);\nconst CenterVerticallyIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  stroke: "currentColor",\n  strokeWidth: "1.25"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M1.667 10h2.916",\n    strokeLinecap: "round",\n    strokeLinejoin: "round"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M8.333 10h3.334",\n    strokeLinejoin: "round"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M15.417 10h2.916",\n    strokeLinecap: "round",\n    strokeLinejoin: "round"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M6.875 4.792h-.417c-.92 0-1.666.746-1.666 1.666v7.084c0 .92.746 1.666 1.666 1.666h.417c.92 0 1.667-.746 1.667-1.666V6.458c0-.92-.747-1.666-1.667-1.666ZM13.542 6.458h-.417c-.92 0-1.667.747-1.667 1.667v3.75c0 .92.746 1.667 1.667 1.667h.417c.92 0 1.666-.746 1.666-1.667v-3.75c0-.92-.746-1.667-1.666-1.667Z"\n  })]\n})), modifiedTablerIconProps);\nconst CenterHorizontallyIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  stroke: "currentColor",\n  strokeWidth: "1.25"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M10 18.333v-2.916",\n    strokeLinecap: "round",\n    strokeLinejoin: "round"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M10 11.667V8.333",\n    strokeLinejoin: "round"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M10 4.583V1.667",\n    strokeLinecap: "round",\n    strokeLinejoin: "round"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M4.792 13.125v.417c0 .92.746 1.666 1.666 1.666h7.084c.92 0 1.666-.746 1.666-1.666v-.417c0-.92-.746-1.667-1.666-1.667H6.458c-.92 0-1.666.746-1.666 1.667ZM6.458 6.458v.417c0 .92.747 1.667 1.667 1.667h3.75c.92 0 1.667-.747 1.667-1.667v-.417c0-.92-.746-1.666-1.667-1.666h-3.75c-.92 0-1.667.746-1.667 1.666Z"\n  })]\n})), modifiedTablerIconProps);\nconst usersIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "1.5"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("circle", {\n    cx: "9",\n    cy: "7",\n    r: "4"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M3 21v-2a4 4 0 0 1 4 -4h4a4 4 0 0 1 4 4v2"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M16 3.13a4 4 0 0 1 0 7.75"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M21 21v-2a4 4 0 0 0 -3 -3.85"\n  })]\n})), tablerIconProps); // not mirrored because it\'s inspired by a playback control, which is always RTL\n\nconst start = createIcon("M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm115.7 272l-176 101c-15.8 8.8-35.7-2.5-35.7-21V152c0-18.4 19.8-29.8 35.7-21l176 107c16.4 9.2 16.4 32.9 0 42z");\nconst stop = createIcon("M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm96 328c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h160c8.8 0 16 7.2 16 16v160z");\nconst CloseIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("g", Object.assign({\n    clipPath: "url(#a)",\n    stroke: "currentColor",\n    strokeWidth: "1.25",\n    strokeLinecap: "round",\n    strokeLinejoin: "round"\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M15 5 5 15M5 5l10 10"\n    })\n  })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("defs", {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("clipPath", Object.assign({\n      id: "a"\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n        fill: "#fff",\n        d: "M0 0h20v20H0z"\n      })\n    }))\n  })]\n}), modifiedTablerIconProps);\nconst back = createIcon("M34.52 239.03L228.87 44.69c9.37-9.37 24.57-9.37 33.94 0l22.67 22.67c9.36 9.36 9.37 24.52.04 33.9L131.49 256l154.02 154.75c9.34 9.38 9.32 24.54-.04 33.9l-22.67 22.67c-9.37 9.37-24.57 9.37-33.94 0L34.52 272.97c-9.37-9.37-9.37-24.57 0-33.94z", {\n  width: 320,\n  height: 512,\n  style: {\n    marginLeft: "-0.2rem"\n  },\n  mirror: true\n});\nconst clone = createIcon("M464 0c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48H176c-26.51 0-48-21.49-48-48V48c0-26.51 21.49-48 48-48h288M176 416c-44.112 0-80-35.888-80-80V128H48c-26.51 0-48 21.49-48 48v288c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48v-48H176z", {\n  mirror: true\n}); // modified https://feathericons.com/?query=shield\n\nconst shield = createIcon("M11.553 22.894a.998.998 0 00.894 0s3.037-1.516 5.465-4.097C19.616 16.987 21 14.663 21 12V5a1 1 0 00-.649-.936l-8-3a.998.998 0 00-.702 0l-8 3A1 1 0 003 5v7c0 2.663 1.384 4.987 3.088 6.797 2.428 2.581 5.465 4.097 5.465 4.097zm-1.303-8.481l6.644-6.644a.856.856 0 111.212 1.212l-7.25 7.25a.856.856 0 01-1.212 0l-3.75-3.75a.856.856 0 111.212-1.212l3.144 3.144z", {\n  width: 24\n});\nconst file = createIcon("M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm32-48h224V288l-23.5-23.5c-4.7-4.7-12.3-4.7-17 0L176 352l-39.5-39.5c-4.7-4.7-12.3-4.7-17 0L80 352v64zm48-240c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48z", {\n  width: 384,\n  height: 512\n}); // TODO barnabasmolnar/editor-redesign\n// couldn\'t find a new icon for this\n\nconst GroupIcon = react__WEBPACK_IMPORTED_MODULE_1___default().memo(({\n  theme\n}) => createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M25 26H111V111H25",\n    fill: iconFillColor(theme)\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M25 111C25 80.2068 25 49.4135 25 26M25 26C48.6174 26 72.2348 26 111 26H25ZM25 26C53.3671 26 81.7343 26 111 26H25ZM111 26C111 52.303 111 78.606 111 111V26ZM111 26C111 51.2947 111 76.5893 111 111V26ZM111 111C87.0792 111 63.1585 111 25 111H111ZM111 111C87.4646 111 63.9293 111 25 111H111ZM25 111C25 81.1514 25 51.3028 25 26V111Z",\n    stroke: iconFillColor(theme),\n    strokeWidth: "2"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M100 100H160V160H100",\n    fill: iconFillColor(theme)\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M100 160C100 144.106 100 128.211 100 100M100 100C117.706 100 135.412 100 160 100H100ZM100 100C114.214 100 128.428 100 160 100H100ZM160 100C160 120.184 160 140.369 160 160V100ZM160 100C160 113.219 160 126.437 160 160V100ZM160 160C145.534 160 131.068 160 100 160H160ZM160 160C143.467 160 126.934 160 100 160H160ZM100 160C100 143.661 100 127.321 100 100V160Z",\n    stroke: iconFillColor(theme),\n    strokeWidth: "2"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n    fill: handlerColor(theme),\n    stroke: iconFillColor(theme),\n    strokeWidth: "6"\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("rect", {\n      x: "2.5",\n      y: "2.5",\n      width: "30",\n      height: "30"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("rect", {\n      x: "2.5",\n      y: "149.5",\n      width: "30",\n      height: "30"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("rect", {\n      x: "147.5",\n      y: "149.5",\n      width: "30",\n      height: "30"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("rect", {\n      x: "147.5",\n      y: "2.5",\n      width: "30",\n      height: "30"\n    })]\n  }))]\n}), {\n  width: 182,\n  height: 182,\n  mirror: true\n}));\nconst UngroupIcon = react__WEBPACK_IMPORTED_MODULE_1___default().memo(({\n  theme\n}) => createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M25 26H111V111H25",\n    fill: iconFillColor(theme)\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M25 111C25 80.2068 25 49.4135 25 26M25 26C48.6174 26 72.2348 26 111 26H25ZM25 26C53.3671 26 81.7343 26 111 26H25ZM111 26C111 52.303 111 78.606 111 111V26ZM111 26C111 51.2947 111 76.5893 111 111V26ZM111 111C87.0792 111 63.1585 111 25 111H111ZM111 111C87.4646 111 63.9293 111 25 111H111ZM25 111C25 81.1514 25 51.3028 25 26V111Z",\n    stroke: iconFillColor(theme),\n    strokeWidth: "2"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M100 100H160V160H100",\n    fill: iconFillColor(theme)\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M100 160C100 144.106 100 128.211 100 100M100 100C117.706 100 135.412 100 160 100H100ZM100 100C114.214 100 128.428 100 160 100H100ZM160 100C160 120.184 160 140.369 160 160V100ZM160 100C160 113.219 160 126.437 160 160V100ZM160 160C145.534 160 131.068 160 100 160H160ZM160 160C143.467 160 126.934 160 100 160H160ZM100 160C100 143.661 100 127.321 100 100V160Z",\n    stroke: iconFillColor(theme),\n    strokeWidth: "2"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n    fill: handlerColor(theme),\n    stroke: iconFillColor(theme),\n    strokeWidth: "6"\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("rect", {\n      x: "2.5",\n      y: "2.5",\n      width: "30",\n      height: "30"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("rect", {\n      x: "78.5",\n      y: "149.5",\n      width: "30",\n      height: "30"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("rect", {\n      x: "147.5",\n      y: "149.5",\n      width: "30",\n      height: "30"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("rect", {\n      x: "147.5",\n      y: "78.5",\n      width: "30",\n      height: "30"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("rect", {\n      x: "105.5",\n      y: "2.5",\n      width: "30",\n      height: "30"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("rect", {\n      x: "2.5",\n      y: "102.5",\n      width: "30",\n      height: "30"\n    })]\n  }))]\n}), {\n  width: 182,\n  height: 182,\n  mirror: true\n}));\nconst FillZigZagIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("g", Object.assign({\n  strokeWidth: 1.25\n}, {\n  children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M5.879 2.625h8.242a3.27 3.27 0 0 1 3.254 3.254v8.242a3.27 3.27 0 0 1-3.254 3.254H5.88a3.27 3.27 0 0 1-3.254-3.254V5.88A3.27 3.27 0 0 1 5.88 2.626l-.001-.001ZM4.518 16.118l7.608-12.83m.198 13.934 5.051-9.897M2.778 9.675l9.348-6.387m-7.608 12.83 12.857-8.793"\n  })\n})), modifiedTablerIconProps);\nconst FillHachureIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M5.879 2.625h8.242a3.254 3.254 0 0 1 3.254 3.254v8.242a3.254 3.254 0 0 1-3.254 3.254H5.88a3.254 3.254 0 0 1-3.254-3.254V5.88a3.254 3.254 0 0 1 3.254-3.254Z",\n    stroke: "currentColor",\n    strokeWidth: "1.25"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("mask", Object.assign({\n    id: "FillHachureIcon",\n    style: {\n      maskType: "alpha"\n    },\n    maskUnits: "userSpaceOnUse",\n    x: 2,\n    y: 2,\n    width: 16,\n    height: 16\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M5.879 2.625h8.242a3.254 3.254 0 0 1 3.254 3.254v8.242a3.254 3.254 0 0 1-3.254 3.254H5.88a3.254 3.254 0 0 1-3.254-3.254V5.88a3.254 3.254 0 0 1 3.254-3.254Z",\n      fill: "currentColor",\n      stroke: "currentColor",\n      strokeWidth: "1.25"\n    })\n  })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("g", Object.assign({\n    mask: "url(#FillHachureIcon)"\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M2.258 15.156 15.156 2.258M7.324 20.222 20.222 7.325m-20.444 5.35L12.675-.222m-8.157 18.34L17.416 5.22",\n      stroke: "currentColor",\n      strokeWidth: "1.25",\n      strokeLinecap: "round",\n      strokeLinejoin: "round"\n    })\n  }))]\n}), modifiedTablerIconProps);\nconst FillCrossHatchIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n    clipPath: "url(#a)"\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M5.879 2.625h8.242a3.254 3.254 0 0 1 3.254 3.254v8.242a3.254 3.254 0 0 1-3.254 3.254H5.88a3.254 3.254 0 0 1-3.254-3.254V5.88a3.254 3.254 0 0 1 3.254-3.254Z",\n      stroke: "currentColor",\n      strokeWidth: "1.25"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("mask", Object.assign({\n      id: "FillCrossHatchIcon",\n      style: {\n        maskType: "alpha"\n      },\n      maskUnits: "userSpaceOnUse",\n      x: -1,\n      y: -1,\n      width: 22,\n      height: 22\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n        d: "M2.426 15.044 15.044 2.426M7.383 20 20 7.383M0 12.617 12.617 0m-7.98 17.941L17.256 5.324m-2.211 12.25L2.426 4.956M20 12.617 7.383 0m5.234 20L0 7.383m17.941 7.98L5.324 2.745",\n        stroke: "currentColor",\n        strokeWidth: "1.25",\n        strokeLinecap: "round",\n        strokeLinejoin: "round"\n      })\n    })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("g", Object.assign({\n      mask: "url(#FillCrossHatchIcon)"\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n        d: "M14.121 2H5.88A3.879 3.879 0 0 0 2 5.879v8.242A3.879 3.879 0 0 0 5.879 18h8.242A3.879 3.879 0 0 0 18 14.121V5.88A3.879 3.879 0 0 0 14.121 2Z",\n        fill: "currentColor"\n      })\n    }))]\n  })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("defs", {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("clipPath", Object.assign({\n      id: "a"\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n        fill: "#fff",\n        d: "M0 0h20v20H0z"\n      })\n    }))\n  })]\n}), modifiedTablerIconProps);\nconst FillSolidIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("g", Object.assign({\n    clipPath: "url(#a)"\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M4.91 2.625h10.18a2.284 2.284 0 0 1 2.285 2.284v10.182a2.284 2.284 0 0 1-2.284 2.284H4.909a2.284 2.284 0 0 1-2.284-2.284V4.909a2.284 2.284 0 0 1 2.284-2.284Z",\n      stroke: "currentColor",\n      strokeWidth: "1.25"\n    })\n  })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("defs", {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("clipPath", Object.assign({\n      id: "a"\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n        fill: "#fff",\n        d: "M0 0h20v20H0z"\n      })\n    }))\n  })]\n}), Object.assign(Object.assign({}, modifiedTablerIconProps), {\n  fill: "currentColor"\n}));\nconst StrokeWidthBaseIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M4.167 10h11.666",\n    stroke: "currentColor",\n    strokeWidth: "1.25",\n    strokeLinecap: "round",\n    strokeLinejoin: "round"\n  })\n}), modifiedTablerIconProps);\nconst StrokeWidthBoldIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n  d: "M5 10h10",\n  stroke: "currentColor",\n  strokeWidth: "2.5",\n  strokeLinecap: "round",\n  strokeLinejoin: "round"\n}), modifiedTablerIconProps);\nconst StrokeWidthExtraBoldIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n  d: "M5 10h10",\n  stroke: "currentColor",\n  strokeWidth: "3.75",\n  strokeLinecap: "round",\n  strokeLinejoin: "round"\n}), modifiedTablerIconProps);\nconst StrokeStyleSolidIcon = react__WEBPACK_IMPORTED_MODULE_1___default().memo(({\n  theme\n}) => createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n  d: "M6 10H34",\n  stroke: iconFillColor(theme),\n  strokeWidth: 2,\n  fill: "none",\n  strokeLinecap: "round"\n}), {\n  width: 40,\n  height: 20\n}));\nconst StrokeStyleDashedIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "2"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M5 12h2"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M17 12h2"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M11 12h2"\n  })]\n})), tablerIconProps); // tabler-icons: line-dotted\n\nconst StrokeStyleDottedIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "2"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M4 12v.01"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M8 12v.01"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M12 12v.01"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M16 12v.01"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M20 12v.01"\n  })]\n})), tablerIconProps);\nconst SloppinessArchitectIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n  d: "M2.5 12.038c1.655-.885 5.9-3.292 8.568-4.354 2.668-1.063.101 2.821 1.32 3.104 1.218.283 5.112-1.814 5.112-1.814",\n  strokeWidth: "1.25"\n}), modifiedTablerIconProps);\nconst SloppinessArtistIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n  d: "M2.5 12.563c1.655-.886 5.9-3.293 8.568-4.355 2.668-1.062.101 2.822 1.32 3.105 1.218.283 5.112-1.814 5.112-1.814m-13.469 2.23c2.963-1.586 6.13-5.62 7.468-4.998 1.338.623-1.153 4.11-.132 5.595 1.02 1.487 6.133-1.43 6.133-1.43",\n  strokeWidth: "1.25"\n}), modifiedTablerIconProps);\nconst SloppinessCartoonistIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n  d: "M2.5 11.936c1.737-.879 8.627-5.346 10.42-5.268 1.795.078-.418 5.138.345 5.736.763.598 3.53-1.789 4.235-2.147M2.929 9.788c1.164-.519 5.47-3.28 6.987-3.114 1.519.165 1 3.827 2.121 4.109 1.122.281 3.839-2.016 4.606-2.42",\n  strokeWidth: "1.25"\n}), modifiedTablerIconProps);\nconst EdgeSharpIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("svg", Object.assign({\n  strokeWidth: "1.5"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M3.33334 9.99998V6.66665C3.33334 6.04326 3.33403 4.9332 3.33539 3.33646C4.95233 3.33436 6.06276 3.33331 6.66668 3.33331H10"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M13.3333 3.33331V3.34331"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M16.6667 3.33331V3.34331"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M16.6667 6.66669V6.67669"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M16.6667 10V10.01"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M3.33334 13.3333V13.3433"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M16.6667 13.3333V13.3433"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M3.33334 16.6667V16.6767"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M6.66666 16.6667V16.6767"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M10 16.6667V16.6767"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M13.3333 16.6667V16.6767"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M16.6667 16.6667V16.6767"\n  })]\n})), modifiedTablerIconProps); // tabler-icons: border-radius\n\nconst EdgeRoundIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "1.5",\n  stroke: "currentColor",\n  strokeLinecap: "round",\n  strokeLinejoin: "round"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M4 12v-4a4 4 0 0 1 4 -4h4"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "16",\n    y1: "4",\n    x2: "16",\n    y2: "4.01"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "20",\n    y1: "4",\n    x2: "20",\n    y2: "4.01"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "20",\n    y1: "8",\n    x2: "20",\n    y2: "8.01"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "20",\n    y1: "12",\n    x2: "20",\n    y2: "12.01"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "4",\n    y1: "16",\n    x2: "4",\n    y2: "16.01"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "20",\n    y1: "16",\n    x2: "20",\n    y2: "16.01"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "4",\n    y1: "20",\n    x2: "4",\n    y2: "20.01"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "8",\n    y1: "20",\n    x2: "8",\n    y2: "20.01"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "12",\n    y1: "20",\n    x2: "12",\n    y2: "20.01"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "16",\n    y1: "20",\n    x2: "16",\n    y2: "20.01"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "20",\n    y1: "20",\n    x2: "20",\n    y2: "20.01"\n  })]\n})), tablerIconProps);\nconst ArrowheadNoneIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n  d: "M6 10H34",\n  stroke: "currentColor",\n  strokeWidth: 2,\n  fill: "none"\n}), {\n  width: 40,\n  height: 20\n});\nconst ArrowheadArrowIcon = react__WEBPACK_IMPORTED_MODULE_1___default().memo(({\n  flip = false\n}) => createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  transform: flip ? "translate(40, 0) scale(-1, 1)" : "",\n  stroke: "currentColor",\n  strokeWidth: 2,\n  fill: "none"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M34 10H6M34 10L27 5M34 10L27 15"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M27.5 5L34.5 10L27.5 15"\n  })]\n})), {\n  width: 40,\n  height: 20\n}));\nconst ArrowheadDotIcon = react__WEBPACK_IMPORTED_MODULE_1___default().memo(({\n  flip = false\n}) => createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  stroke: "currentColor",\n  fill: "currentColor",\n  transform: flip ? "translate(40, 0) scale(-1, 1)" : ""\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M32 10L6 10",\n    strokeWidth: 2\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("circle", {\n    r: "4",\n    transform: "matrix(-1 0 0 1 30 10)"\n  })]\n})), {\n  width: 40,\n  height: 20\n}));\nconst ArrowheadBarIcon = react__WEBPACK_IMPORTED_MODULE_1___default().memo(({\n  flip = false\n}) => createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("g", Object.assign({\n  transform: flip ? "translate(40, 0) scale(-1, 1)" : ""\n}, {\n  children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M34 10H5.99996M34 10L34 5M34 10L34 15",\n    stroke: "currentColor",\n    strokeWidth: 2,\n    fill: "none"\n  })\n})), {\n  width: 40,\n  height: 20\n}));\nconst ArrowheadTriangleIcon = react__WEBPACK_IMPORTED_MODULE_1___default().memo(({\n  flip = false\n}) => createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  stroke: "currentColor",\n  fill: "currentColor",\n  transform: flip ? "translate(40, 0) scale(-1, 1)" : ""\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M32 10L6 10",\n    strokeWidth: 2\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M27.5 5.5L34.5 10L27.5 14.5L27.5 5.5"\n  })]\n})), {\n  width: 40,\n  height: 20\n}));\nconst FontSizeSmallIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("g", Object.assign({\n    clipPath: "url(#a)"\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M14.167 6.667a3.333 3.333 0 0 0-3.334-3.334H9.167a3.333 3.333 0 0 0 0 6.667h1.666a3.333 3.333 0 0 1 0 6.667H9.167a3.333 3.333 0 0 1-3.334-3.334",\n      stroke: "currentColor",\n      strokeWidth: "1.25",\n      strokeLinecap: "round",\n      strokeLinejoin: "round"\n    })\n  })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("defs", {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("clipPath", Object.assign({\n      id: "a"\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n        fill: "#fff",\n        d: "M0 0h20v20H0z"\n      })\n    }))\n  })]\n}), modifiedTablerIconProps);\nconst FontSizeMediumIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("g", Object.assign({\n    clipPath: "url(#a)"\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M5 16.667V3.333L10 15l5-11.667v13.334",\n      stroke: "currentColor",\n      strokeWidth: "1.25",\n      strokeLinecap: "round",\n      strokeLinejoin: "round"\n    })\n  })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("defs", {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("clipPath", Object.assign({\n      id: "a"\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n        fill: "#fff",\n        d: "M0 0h20v20H0z"\n      })\n    }))\n  })]\n}), modifiedTablerIconProps);\nconst FontSizeLargeIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("g", Object.assign({\n    clipPath: "url(#a)"\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M5.833 3.333v13.334h8.334",\n      stroke: "currentColor",\n      strokeWidth: "1.25",\n      strokeLinecap: "round",\n      strokeLinejoin: "round"\n    })\n  })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("defs", {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("clipPath", Object.assign({\n      id: "a"\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n        fill: "#fff",\n        d: "M0 0h20v20H0z"\n      })\n    }))\n  })]\n}), modifiedTablerIconProps);\nconst FontSizeExtraLargeIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "m1.667 3.333 6.666 13.334M8.333 3.333 1.667 16.667M11.667 3.333v13.334h6.666",\n    stroke: "currentColor",\n    strokeWidth: "1.25",\n    strokeLinecap: "round",\n    strokeLinejoin: "round"\n  })\n}), modifiedTablerIconProps);\nconst FontFamilyNormalIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("g", Object.assign({\n    stroke: "currentColor",\n    strokeWidth: "1.25",\n    strokeLinecap: "round",\n    strokeLinejoin: "round"\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M5.833 16.667v-10a3.333 3.333 0 0 1 3.334-3.334h1.666a3.333 3.333 0 0 1 3.334 3.334v10M5.833 10.833h8.334"\n    })\n  }))\n}), modifiedTablerIconProps);\nconst FontFamilyCodeIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("g", Object.assign({\n    clipPath: "url(#a)",\n    stroke: "currentColor",\n    strokeWidth: "1.25",\n    strokeLinecap: "round",\n    strokeLinejoin: "round"\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M5.833 6.667 2.5 10l3.333 3.333M14.167 6.667 17.5 10l-3.333 3.333M11.667 3.333 8.333 16.667"\n    })\n  })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("defs", {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("clipPath", Object.assign({\n      id: "a"\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n        fill: "#fff",\n        d: "M0 0h20v20H0z"\n      })\n    }))\n  })]\n}), modifiedTablerIconProps);\nconst TextAlignLeftIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  stroke: "currentColor",\n  fill: "none",\n  strokeLinecap: "round",\n  strokeLinejoin: "round",\n  strokeWidth: 2\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "4",\n    y1: "8",\n    x2: "20",\n    y2: "8"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "4",\n    y1: "12",\n    x2: "12",\n    y2: "12"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "4",\n    y1: "16",\n    x2: "16",\n    y2: "16"\n  })]\n})), tablerIconProps);\nconst TextAlignCenterIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  stroke: "currentColor",\n  fill: "none",\n  strokeLinecap: "round",\n  strokeLinejoin: "round"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "4",\n    y1: "8",\n    x2: "20",\n    y2: "8"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "8",\n    y1: "12",\n    x2: "16",\n    y2: "12"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "6",\n    y1: "16",\n    x2: "18",\n    y2: "16"\n  })]\n})), tablerIconProps);\nconst TextAlignRightIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  stroke: "currentColor",\n  fill: "none",\n  strokeLinecap: "round",\n  strokeLinejoin: "round"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "4",\n    y1: "8",\n    x2: "20",\n    y2: "8"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "10",\n    y1: "12",\n    x2: "20",\n    y2: "12"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "8",\n    y1: "16",\n    x2: "20",\n    y2: "16"\n  })]\n})), tablerIconProps); // tabler-icons: layout-align-top\n\nconst TextAlignTopIcon = react__WEBPACK_IMPORTED_MODULE_1___default().memo(({\n  theme\n}) => createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "1.5",\n  stroke: "currentColor",\n  fill: "none",\n  strokeLinecap: "round",\n  strokeLinejoin: "round"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "4",\n    y1: "4",\n    x2: "20",\n    y2: "4"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("rect", {\n    x: "9",\n    y: "8",\n    width: "6",\n    height: "12",\n    rx: "2"\n  })]\n})), tablerIconProps)); // tabler-icons: layout-align-bottom\n\nconst TextAlignBottomIcon = react__WEBPACK_IMPORTED_MODULE_1___default().memo(({\n  theme\n}) => createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "2",\n  stroke: "currentColor",\n  fill: "none",\n  strokeLinecap: "round",\n  strokeLinejoin: "round"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "4",\n    y1: "20",\n    x2: "20",\n    y2: "20"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("rect", {\n    x: "9",\n    y: "4",\n    width: "6",\n    height: "12",\n    rx: "2"\n  })]\n})), tablerIconProps)); // tabler-icons: layout-align-middle\n\nconst TextAlignMiddleIcon = react__WEBPACK_IMPORTED_MODULE_1___default().memo(({\n  theme\n}) => createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "1.5",\n  stroke: "currentColor",\n  fill: "none",\n  strokeLinecap: "round",\n  strokeLinejoin: "round"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "4",\n    y1: "12",\n    x2: "9",\n    y2: "12"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "15",\n    y1: "12",\n    x2: "20",\n    y2: "12"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("rect", {\n    x: "9",\n    y: "6",\n    width: "6",\n    height: "12",\n    rx: "2"\n  })]\n})), tablerIconProps));\nconst publishIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n  d: "M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zM393.4 288H328v112c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V288h-65.4c-14.3 0-21.4-17.2-11.3-27.3l105.4-105.4c6.2-6.2 16.4-6.2 22.6 0l105.4 105.4c10.1 10.1 2.9 27.3-11.3 27.3z",\n  fill: "currentColor"\n}), {\n  width: 640,\n  height: 512\n});\nconst eraser = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n  d: "M480 416C497.7 416 512 430.3 512 448C512 465.7 497.7 480 480 480H150.6C133.7 480 117.4 473.3 105.4 461.3L25.37 381.3C.3786 356.3 .3786 315.7 25.37 290.7L258.7 57.37C283.7 32.38 324.3 32.38 349.3 57.37L486.6 194.7C511.6 219.7 511.6 260.3 486.6 285.3L355.9 416H480zM265.4 416L332.7 348.7L195.3 211.3L70.63 336L150.6 416L265.4 416z"\n}));\nconst handIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: 1.25\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M8 13v-7.5a1.5 1.5 0 0 1 3 0v6.5"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M11 5.5v-2a1.5 1.5 0 1 1 3 0v8.5"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M14 5.5a1.5 1.5 0 0 1 3 0v6.5"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M17 7.5a1.5 1.5 0 0 1 3 0v8.5a6 6 0 0 1 -6 6h-2h.208a6 6 0 0 1 -5.012 -2.7a69.74 69.74 0 0 1 -.196 -.3c-.312 -.479 -1.407 -2.388 -3.286 -5.728a1.5 1.5 0 0 1 .536 -2.022a1.867 1.867 0 0 1 2.28 .28l1.47 1.47"\n  })]\n})), tablerIconProps);\nconst downloadIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M4 17v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2 -2v-2"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M7 11l5 5l5 -5"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M12 4l0 12"\n  })]\n}), tablerIconProps);\nconst copyIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M8 8m0 2a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2z"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M16 8v-2a2 2 0 0 0 -2 -2h-8a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h2"\n  })]\n}), tablerIconProps);\nconst helpIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M12 17l0 .01"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M12 13.5a1.5 1.5 0 0 1 1 -1.5a2.6 2.6 0 1 0 -3 -4"\n  })]\n}), tablerIconProps);\nconst playerPlayIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M7 4v16l13 -8z"\n  })]\n}), tablerIconProps);\nconst playerStopFilledIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M17 4h-10a3 3 0 0 0 -3 3v10a3 3 0 0 0 3 3h10a3 3 0 0 0 3 -3v-10a3 3 0 0 0 -3 -3z",\n    strokeWidth: "0",\n    fill: "currentColor"\n  })]\n}), tablerIconProps);\nconst tablerCheckIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M5 12l5 5l10 -10"\n  })]\n}), tablerIconProps);\nconst alertTriangleIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M10.24 3.957l-8.422 14.06a1.989 1.989 0 0 0 1.7 2.983h16.845a1.989 1.989 0 0 0 1.7 -2.983l-8.423 -14.06a1.989 1.989 0 0 0 -3.4 0z"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M12 9v4"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M12 17h.01"\n  })]\n}), tablerIconProps);\nconst eyeDropperIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: 1.25\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M11 7l6 6"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M4 16l11.7 -11.7a1 1 0 0 1 1.4 0l2.6 2.6a1 1 0 0 1 0 1.4l-11.7 11.7h-4v-4z"\n  })]\n})), tablerIconProps);\nconst extraToolsIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: 1.5\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M12 3l-4 7h8z"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M17 17m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M4 14m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z"\n  })]\n})), tablerIconProps);\nconst frameToolIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: 1.5\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M4 7l16 0"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M4 17l16 0"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M7 4l0 16"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M17 4l0 16"\n  })]\n})), tablerIconProps);\nconst mermaidLogoIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n  fill: "currentColor",\n  d: "M407.48,111.18C335.587,108.103 269.573,152.338 245.08,220C220.587,152.338 154.573,108.103 82.68,111.18C80.285,168.229 107.577,222.632 154.74,254.82C178.908,271.419 193.35,298.951 193.27,328.27L193.27,379.13L296.9,379.13L296.9,328.27C296.816,298.953 311.255,271.42 335.42,254.82C382.596,222.644 409.892,168.233 407.48,111.18Z"\n}));\nconst ArrowRightIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "1.25"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M4.16602 10H15.8327"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M12.5 13.3333L15.8333 10"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M12.5 6.66666L15.8333 9.99999"\n  })]\n})), modifiedTablerIconProps);\nconst laserPointerToolIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  fill: "none",\n  stroke: "currentColor",\n  strokeWidth: "1.25",\n  strokeLinecap: "round",\n  strokeLinejoin: "round",\n  transform: "rotate(90 10 10)"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    clipRule: "evenodd",\n    d: "m9.644 13.69 7.774-7.773a2.357 2.357 0 0 0-3.334-3.334l-7.773 7.774L8 12l1.643 1.69Z"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "m13.25 3.417 3.333 3.333M10 10l2-2M5 15l3-3M2.156 17.894l1-1M5.453 19.029l-.144-1.407M2.377 11.887l.866 1.118M8.354 17.273l-1.194-.758M.953 14.652l1.408.13"\n  })]\n})), 20);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 131220 characters]\n//# sourceURL=webpack-internal:///../../components/icons.tsx\n');
              }
            ),
            /***/
            "../../components/live-collaboration/LiveCollaborationTrigger.tsx": (
              /*!************************************************************************!*\
                !*** ../../components/live-collaboration/LiveCollaborationTrigger.tsx ***!
                \************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../i18n */ "../../i18n.ts");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../icons */ "../../components/icons.tsx");\n/* harmony import */ var _Button__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Button */ "../../components/Button.tsx");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _LiveCollaborationTrigger_scss__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./LiveCollaborationTrigger.scss */ "../../components/live-collaboration/LiveCollaborationTrigger.scss");\n/* harmony import */ var _context_ui_appState__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../context/ui-appState */ "../../context/ui-appState.ts");\nvar __rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n\n  if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\n\n\n\n\nconst LiveCollaborationTrigger = _a => {\n  var {\n    isCollaborating,\n    onSelect\n  } = _a,\n      rest = __rest(_a, ["isCollaborating", "onSelect"]);\n\n  const appState = (0,_context_ui_appState__WEBPACK_IMPORTED_MODULE_6__.useUIAppState)();\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Button__WEBPACK_IMPORTED_MODULE_3__.Button, Object.assign({}, rest, {\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_4__["default"])("collab-button", {\n      active: isCollaborating\n    }),\n    type: "button",\n    onSelect: onSelect,\n    style: {\n      position: "relative"\n    },\n    title: (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("labels.liveCollaboration")\n  }, {\n    children: [_icons__WEBPACK_IMPORTED_MODULE_2__.usersIcon, appState.collaborators.size > 0 && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: "CollabButton-collaborators"\n    }, {\n      children: appState.collaborators.size\n    }))]\n  }));\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (LiveCollaborationTrigger);\nLiveCollaborationTrigger.displayName = "LiveCollaborationTrigger";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9saXZlLWNvbGxhYm9yYXRpb24vTGl2ZUNvbGxhYm9yYXRpb25UcmlnZ2VyLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSxhQUFhLFNBQUksSUFBSSxTQUFJO0FBQ3pCOztBQUVBOztBQUVBLDRIQUE0SCxjQUFjO0FBQzFJO0FBQ0E7QUFDQTtBQUNBOztBQUUrRDtBQUNoQztBQUNNO0FBQ0Y7QUFDWDtBQUNpQjtBQUNpQjs7QUFFMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7O0FBRUEsbUJBQW1CLG1FQUFhO0FBQ2hDLFNBQVMsdURBQUssQ0FBQywyQ0FBTSxrQkFBa0I7QUFDdkMsZUFBZSxnREFBSTtBQUNuQjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxXQUFXLHdDQUFDO0FBQ1osR0FBRztBQUNILGVBQWUsNkNBQVMscUNBQXFDLHNEQUFJO0FBQ2pFO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDs7QUFFQSxpRUFBZSx3QkFBd0IsRUFBQztBQUN4QyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL2xpdmUtY29sbGFib3JhdGlvbi9MaXZlQ29sbGFib3JhdGlvblRyaWdnZXIudHN4PzNlYTUiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fcmVzdCA9IHRoaXMgJiYgdGhpcy5fX3Jlc3QgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgdmFyIHQgPSB7fTtcblxuICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMCkgdFtwXSA9IHNbcF07XG5cbiAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKSBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKSB0W3BbaV1dID0gc1twW2ldXTtcbiAgfVxuICByZXR1cm4gdDtcbn07XG5cbmltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyB0IH0gZnJvbSBcIi4uLy4uL2kxOG5cIjtcbmltcG9ydCB7IHVzZXJzSWNvbiB9IGZyb20gXCIuLi9pY29uc1wiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIi4uL0J1dHRvblwiO1xuaW1wb3J0IGNsc3ggZnJvbSBcImNsc3hcIjtcbmltcG9ydCBcIi4vTGl2ZUNvbGxhYm9yYXRpb25UcmlnZ2VyLnNjc3NcIjtcbmltcG9ydCB7IHVzZVVJQXBwU3RhdGUgfSBmcm9tIFwiLi4vLi4vY29udGV4dC91aS1hcHBTdGF0ZVwiO1xuXG5jb25zdCBMaXZlQ29sbGFib3JhdGlvblRyaWdnZXIgPSBfYSA9PiB7XG4gIHZhciB7XG4gICAgaXNDb2xsYWJvcmF0aW5nLFxuICAgIG9uU2VsZWN0XG4gIH0gPSBfYSxcbiAgICAgIHJlc3QgPSBfX3Jlc3QoX2EsIFtcImlzQ29sbGFib3JhdGluZ1wiLCBcIm9uU2VsZWN0XCJdKTtcblxuICBjb25zdCBhcHBTdGF0ZSA9IHVzZVVJQXBwU3RhdGUoKTtcbiAgcmV0dXJuIF9qc3hzKEJ1dHRvbiwgT2JqZWN0LmFzc2lnbih7fSwgcmVzdCwge1xuICAgIGNsYXNzTmFtZTogY2xzeChcImNvbGxhYi1idXR0b25cIiwge1xuICAgICAgYWN0aXZlOiBpc0NvbGxhYm9yYXRpbmdcbiAgICB9KSxcbiAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgIG9uU2VsZWN0OiBvblNlbGVjdCxcbiAgICBzdHlsZToge1xuICAgICAgcG9zaXRpb246IFwicmVsYXRpdmVcIlxuICAgIH0sXG4gICAgdGl0bGU6IHQoXCJsYWJlbHMubGl2ZUNvbGxhYm9yYXRpb25cIilcbiAgfSwge1xuICAgIGNoaWxkcmVuOiBbdXNlcnNJY29uLCBhcHBTdGF0ZS5jb2xsYWJvcmF0b3JzLnNpemUgPiAwICYmIF9qc3goXCJkaXZcIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgICBjbGFzc05hbWU6IFwiQ29sbGFiQnV0dG9uLWNvbGxhYm9yYXRvcnNcIlxuICAgIH0sIHtcbiAgICAgIGNoaWxkcmVuOiBhcHBTdGF0ZS5jb2xsYWJvcmF0b3JzLnNpemVcbiAgICB9KSldXG4gIH0pKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IExpdmVDb2xsYWJvcmF0aW9uVHJpZ2dlcjtcbkxpdmVDb2xsYWJvcmF0aW9uVHJpZ2dlci5kaXNwbGF5TmFtZSA9IFwiTGl2ZUNvbGxhYm9yYXRpb25UcmlnZ2VyXCI7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/live-collaboration/LiveCollaborationTrigger.tsx\n');
              }
            ),
            /***/
            "../../components/main-menu/DefaultItems.tsx": (
              /*!***************************************************!*\
                !*** ../../components/main-menu/DefaultItems.tsx ***!
                \***************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "ChangeCanvasBackground": () => (/* binding */ ChangeCanvasBackground),\n/* harmony export */   "ClearCanvas": () => (/* binding */ ClearCanvas),\n/* harmony export */   "Export": () => (/* binding */ Export),\n/* harmony export */   "Help": () => (/* binding */ Help),\n/* harmony export */   "LiveCollaborationTrigger": () => (/* binding */ LiveCollaborationTrigger),\n/* harmony export */   "LoadScene": () => (/* binding */ LoadScene),\n/* harmony export */   "SaveAsImage": () => (/* binding */ SaveAsImage),\n/* harmony export */   "SaveToActiveFile": () => (/* binding */ SaveToActiveFile),\n/* harmony export */   "Socials": () => (/* binding */ Socials),\n/* harmony export */   "ToggleTheme": () => (/* binding */ ToggleTheme)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _actions_shortcuts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../actions/shortcuts */ "../../actions/shortcuts.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../i18n */ "../../i18n.ts");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../App */ "../../components/App.tsx");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../icons */ "../../components/icons.tsx");\n/* harmony import */ var _dropdownMenu_DropdownMenuItem__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../dropdownMenu/DropdownMenuItem */ "../../components/dropdownMenu/DropdownMenuItem.tsx");\n/* harmony import */ var _dropdownMenu_DropdownMenuItemLink__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../dropdownMenu/DropdownMenuItemLink */ "../../components/dropdownMenu/DropdownMenuItemLink.tsx");\n/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../actions */ "../../actions/index.ts");\n/* harmony import */ var _DefaultItems_scss__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./DefaultItems.scss */ "../../components/main-menu/DefaultItems.scss");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var jotai__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! jotai */ "../../../node_modules/jotai/esm/index.mjs");\n/* harmony import */ var _ActiveConfirmDialog__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../ActiveConfirmDialog */ "../../components/ActiveConfirmDialog.tsx");\n/* harmony import */ var _jotai__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../jotai */ "../../jotai.ts");\n/* harmony import */ var _context_ui_appState__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../context/ui-appState */ "../../context/ui-appState.ts");\n/* harmony import */ var _OverwriteConfirm_OverwriteConfirmState__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../OverwriteConfirm/OverwriteConfirmState */ "../../components/OverwriteConfirm/OverwriteConfirmState.ts");\n/* harmony import */ var _Trans__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../Trans */ "../../components/Trans.tsx");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator["throw"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst LoadScene = () => {\n  const {\n    t\n  } = (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.useI18n)();\n  const actionManager = (0,_App__WEBPACK_IMPORTED_MODULE_3__.useExcalidrawActionManager)();\n  const elements = (0,_App__WEBPACK_IMPORTED_MODULE_3__.useExcalidrawElements)();\n\n  if (!actionManager.isActionEnabled(_actions__WEBPACK_IMPORTED_MODULE_7__.actionLoadScene)) {\n    return null;\n  }\n\n  const handleSelect = () => __awaiter(void 0, void 0, void 0, function* () {\n    if (!elements.length || (yield (0,_OverwriteConfirm_OverwriteConfirmState__WEBPACK_IMPORTED_MODULE_13__.openConfirmModal)({\n      title: t("overwriteConfirm.modal.loadFromFile.title"),\n      actionLabel: t("overwriteConfirm.modal.loadFromFile.button"),\n      color: "warning",\n      description: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Trans__WEBPACK_IMPORTED_MODULE_14__["default"], {\n        i18nKey: "overwriteConfirm.modal.loadFromFile.description",\n        bold: text => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("strong", {\n          children: text\n        }),\n        br: () => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("br", {})\n      })\n    }))) {\n      actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_7__.actionLoadScene);\n    }\n  });\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_dropdownMenu_DropdownMenuItem__WEBPACK_IMPORTED_MODULE_5__["default"], Object.assign({\n    icon: _icons__WEBPACK_IMPORTED_MODULE_4__.LoadIcon,\n    onSelect: handleSelect,\n    "data-testid": "load-button",\n    shortcut: (0,_actions_shortcuts__WEBPACK_IMPORTED_MODULE_1__.getShortcutFromShortcutName)("loadScene"),\n    "aria-label": t("buttons.load")\n  }, {\n    children: t("buttons.load")\n  }));\n};\nLoadScene.displayName = "LoadScene";\nconst SaveToActiveFile = () => {\n  const {\n    t\n  } = (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.useI18n)();\n  const actionManager = (0,_App__WEBPACK_IMPORTED_MODULE_3__.useExcalidrawActionManager)();\n\n  if (!actionManager.isActionEnabled(_actions__WEBPACK_IMPORTED_MODULE_7__.actionSaveToActiveFile)) {\n    return null;\n  }\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_dropdownMenu_DropdownMenuItem__WEBPACK_IMPORTED_MODULE_5__["default"], Object.assign({\n    shortcut: (0,_actions_shortcuts__WEBPACK_IMPORTED_MODULE_1__.getShortcutFromShortcutName)("saveScene"),\n    "data-testid": "save-button",\n    onSelect: () => actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_7__.actionSaveToActiveFile),\n    icon: _icons__WEBPACK_IMPORTED_MODULE_4__.save,\n    "aria-label": `${t("buttons.save")}`\n  }, {\n    children: `${t("buttons.save")}`\n  }));\n};\nSaveToActiveFile.displayName = "SaveToActiveFile";\nconst SaveAsImage = () => {\n  const setAppState = (0,_App__WEBPACK_IMPORTED_MODULE_3__.useExcalidrawSetAppState)();\n  const {\n    t\n  } = (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.useI18n)();\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_dropdownMenu_DropdownMenuItem__WEBPACK_IMPORTED_MODULE_5__["default"], Object.assign({\n    icon: _icons__WEBPACK_IMPORTED_MODULE_4__.ExportImageIcon,\n    "data-testid": "image-export-button",\n    onSelect: () => setAppState({\n      openDialog: "imageExport"\n    }),\n    shortcut: (0,_actions_shortcuts__WEBPACK_IMPORTED_MODULE_1__.getShortcutFromShortcutName)("imageExport"),\n    "aria-label": t("buttons.exportImage")\n  }, {\n    children: t("buttons.exportImage")\n  }));\n};\nSaveAsImage.displayName = "SaveAsImage";\nconst Help = () => {\n  const {\n    t\n  } = (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.useI18n)();\n  const actionManager = (0,_App__WEBPACK_IMPORTED_MODULE_3__.useExcalidrawActionManager)();\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_dropdownMenu_DropdownMenuItem__WEBPACK_IMPORTED_MODULE_5__["default"], Object.assign({\n    "data-testid": "help-menu-item",\n    icon: _icons__WEBPACK_IMPORTED_MODULE_4__.HelpIcon,\n    onSelect: () => actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_7__.actionShortcuts),\n    shortcut: "?",\n    "aria-label": t("helpDialog.title")\n  }, {\n    children: t("helpDialog.title")\n  }));\n};\nHelp.displayName = "Help";\nconst ClearCanvas = () => {\n  const {\n    t\n  } = (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.useI18n)();\n  const setActiveConfirmDialog = (0,jotai__WEBPACK_IMPORTED_MODULE_15__.useSetAtom)(_ActiveConfirmDialog__WEBPACK_IMPORTED_MODULE_10__.activeConfirmDialogAtom, _jotai__WEBPACK_IMPORTED_MODULE_11__.jotaiScope);\n  const actionManager = (0,_App__WEBPACK_IMPORTED_MODULE_3__.useExcalidrawActionManager)();\n\n  if (!actionManager.isActionEnabled(_actions__WEBPACK_IMPORTED_MODULE_7__.actionClearCanvas)) {\n    return null;\n  }\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_dropdownMenu_DropdownMenuItem__WEBPACK_IMPORTED_MODULE_5__["default"], Object.assign({\n    icon: _icons__WEBPACK_IMPORTED_MODULE_4__.TrashIcon,\n    onSelect: () => setActiveConfirmDialog("clearCanvas"),\n    "data-testid": "clear-canvas-button",\n    "aria-label": t("buttons.clearReset")\n  }, {\n    children: t("buttons.clearReset")\n  }));\n};\nClearCanvas.displayName = "ClearCanvas";\nconst ToggleTheme = () => {\n  const {\n    t\n  } = (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.useI18n)();\n  const appState = (0,_context_ui_appState__WEBPACK_IMPORTED_MODULE_12__.useUIAppState)();\n  const actionManager = (0,_App__WEBPACK_IMPORTED_MODULE_3__.useExcalidrawActionManager)();\n\n  if (!actionManager.isActionEnabled(_actions__WEBPACK_IMPORTED_MODULE_7__.actionToggleTheme)) {\n    return null;\n  }\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_dropdownMenu_DropdownMenuItem__WEBPACK_IMPORTED_MODULE_5__["default"], Object.assign({\n    onSelect: event => {\n      // do not close the menu when changing theme\n      event.preventDefault();\n      return actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_7__.actionToggleTheme);\n    },\n    icon: appState.theme === "dark" ? _icons__WEBPACK_IMPORTED_MODULE_4__.SunIcon : _icons__WEBPACK_IMPORTED_MODULE_4__.MoonIcon,\n    "data-testid": "toggle-dark-mode",\n    shortcut: (0,_actions_shortcuts__WEBPACK_IMPORTED_MODULE_1__.getShortcutFromShortcutName)("toggleTheme"),\n    "aria-label": appState.theme === "dark" ? t("buttons.lightMode") : t("buttons.darkMode")\n  }, {\n    children: appState.theme === "dark" ? t("buttons.lightMode") : t("buttons.darkMode")\n  }));\n};\nToggleTheme.displayName = "ToggleTheme";\nconst ChangeCanvasBackground = () => {\n  const {\n    t\n  } = (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.useI18n)();\n  const appState = (0,_context_ui_appState__WEBPACK_IMPORTED_MODULE_12__.useUIAppState)();\n  const actionManager = (0,_App__WEBPACK_IMPORTED_MODULE_3__.useExcalidrawActionManager)();\n  const appProps = (0,_App__WEBPACK_IMPORTED_MODULE_3__.useAppProps)();\n\n  if (appState.viewModeEnabled || !appProps.UIOptions.canvasActions.changeViewBackgroundColor) {\n    return null;\n  }\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n    style: {\n      marginTop: "0.5rem"\n    }\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      "data-testid": "canvas-background-label",\n      style: {\n        fontSize: ".75rem",\n        marginBottom: ".5rem"\n      }\n    }, {\n      children: t("labels.canvasBackground")\n    })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      style: {\n        padding: "0 0.625rem"\n      }\n    }, {\n      children: actionManager.renderAction("changeViewBackgroundColor")\n    }))]\n  }));\n};\nChangeCanvasBackground.displayName = "ChangeCanvasBackground";\nconst Export = () => {\n  const {\n    t\n  } = (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.useI18n)();\n  const setAppState = (0,_App__WEBPACK_IMPORTED_MODULE_3__.useExcalidrawSetAppState)();\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_dropdownMenu_DropdownMenuItem__WEBPACK_IMPORTED_MODULE_5__["default"], Object.assign({\n    icon: _icons__WEBPACK_IMPORTED_MODULE_4__.ExportIcon,\n    onSelect: () => {\n      setAppState({\n        openDialog: "jsonExport"\n      });\n    },\n    "data-testid": "json-export-button",\n    "aria-label": t("buttons.export")\n  }, {\n    children: t("buttons.export")\n  }));\n};\nExport.displayName = "Export";\nconst Socials = () => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_dropdownMenu_DropdownMenuItemLink__WEBPACK_IMPORTED_MODULE_6__["default"], Object.assign({\n    icon: _icons__WEBPACK_IMPORTED_MODULE_4__.GithubIcon,\n    href: "https://github.com/excalidraw/excalidraw",\n    "aria-label": "GitHub"\n  }, {\n    children: "GitHub"\n  })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_dropdownMenu_DropdownMenuItemLink__WEBPACK_IMPORTED_MODULE_6__["default"], Object.assign({\n    icon: _icons__WEBPACK_IMPORTED_MODULE_4__.DiscordIcon,\n    href: "https://discord.gg/UexuTaE",\n    "aria-label": "Discord"\n  }, {\n    children: "Discord"\n  })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_dropdownMenu_DropdownMenuItemLink__WEBPACK_IMPORTED_MODULE_6__["default"], Object.assign({\n    icon: _icons__WEBPACK_IMPORTED_MODULE_4__.TwitterIcon,\n    href: "https://twitter.com/excalidraw",\n    "aria-label": "Twitter"\n  }, {\n    children: "Twitter"\n  }))]\n});\nSocials.displayName = "Socials";\nconst LiveCollaborationTrigger = ({\n  onSelect,\n  isCollaborating\n}) => {\n  const {\n    t\n  } = (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.useI18n)();\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_dropdownMenu_DropdownMenuItem__WEBPACK_IMPORTED_MODULE_5__["default"], Object.assign({\n    "data-testid": "collab-button",\n    icon: _icons__WEBPACK_IMPORTED_MODULE_4__.usersIcon,\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_9__["default"])({\n      "active-collab": isCollaborating\n    }),\n    onSelect: onSelect\n  }, {\n    children: t("labels.liveCollaboration")\n  }));\n};\nLiveCollaborationTrigger.displayName = "LiveCollaborationTrigger";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 15800 characters]\n//# sourceURL=webpack-internal:///../../components/main-menu/DefaultItems.tsx\n');
              }
            ),
            /***/
            "../../components/main-menu/MainMenu.tsx": (
              /*!***********************************************!*\
                !*** ../../components/main-menu/MainMenu.tsx ***!
                \***********************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../App */ "../../components/App.tsx");\n/* harmony import */ var _dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../dropdownMenu/DropdownMenu */ "../../components/dropdownMenu/DropdownMenu.tsx");\n/* harmony import */ var _DefaultItems__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./DefaultItems */ "../../components/main-menu/DefaultItems.tsx");\n/* harmony import */ var _UserList__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../UserList */ "../../components/UserList.tsx");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../i18n */ "../../i18n.ts");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../icons */ "../../components/icons.tsx");\n/* harmony import */ var _hoc_withInternalFallback__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../hoc/withInternalFallback */ "../../components/hoc/withInternalFallback.tsx");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../utils */ "../../utils.ts");\n/* harmony import */ var _context_tunnels__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../context/tunnels */ "../../context/tunnels.ts");\n/* harmony import */ var _context_ui_appState__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../context/ui-appState */ "../../context/ui-appState.ts");\n\n\n\n\n\n\n\n\n\n\n\n\nconst MainMenu = Object.assign((0,_hoc_withInternalFallback__WEBPACK_IMPORTED_MODULE_8__.withInternalFallback)("MainMenu", ({\n  children,\n  onSelect\n}) => {\n  const {\n    MainMenuTunnel\n  } = (0,_context_tunnels__WEBPACK_IMPORTED_MODULE_10__.useTunnels)();\n  const device = (0,_App__WEBPACK_IMPORTED_MODULE_2__.useDevice)();\n  const appState = (0,_context_ui_appState__WEBPACK_IMPORTED_MODULE_11__.useUIAppState)();\n  const setAppState = (0,_App__WEBPACK_IMPORTED_MODULE_2__.useExcalidrawSetAppState)();\n  const onClickOutside = device.editor.isMobile ? undefined : () => setAppState({\n    openMenu: null\n  });\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(MainMenuTunnel.In, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_3__["default"], Object.assign({\n      open: appState.openMenu === "canvas"\n    }, {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_3__["default"].Trigger, Object.assign({\n        onToggle: () => {\n          setAppState({\n            openMenu: appState.openMenu === "canvas" ? null : "canvas"\n          });\n        },\n        "data-testid": "main-menu-trigger",\n        className: "main-menu-trigger"\n      }, {\n        children: _icons__WEBPACK_IMPORTED_MODULE_7__.HamburgerMenuIcon\n      })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_3__["default"].Content, Object.assign({\n        onClickOutside: onClickOutside,\n        onSelect: (0,_utils__WEBPACK_IMPORTED_MODULE_9__.composeEventHandlers)(onSelect, () => {\n          setAppState({\n            openMenu: null\n          });\n        })\n      }, {\n        children: [children, device.editor.isMobile && appState.collaborators.size > 0 && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("fieldset", Object.assign({\n          className: "UserList-Wrapper"\n        }, {\n          children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("legend", {\n            children: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("labels.collaborators")\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_UserList__WEBPACK_IMPORTED_MODULE_5__.UserList, {\n            mobile: true,\n            collaborators: appState.collaborators\n          })]\n        }))]\n      }))]\n    }))\n  });\n}), {\n  Trigger: _dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_3__["default"].Trigger,\n  Item: _dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_3__["default"].Item,\n  ItemLink: _dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_3__["default"].ItemLink,\n  ItemCustom: _dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_3__["default"].ItemCustom,\n  Group: _dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_3__["default"].Group,\n  Separator: _dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_3__["default"].Separator,\n  DefaultItems: _DefaultItems__WEBPACK_IMPORTED_MODULE_4__\n});\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (MainMenu);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4652 characters]\n//# sourceURL=webpack-internal:///../../components/main-menu/MainMenu.tsx\n');
              }
            ),
            /***/
            "../../components/welcome-screen/WelcomeScreen.Center.tsx": (
              /*!****************************************************************!*\
                !*** ../../components/welcome-screen/WelcomeScreen.Center.tsx ***!
                \****************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "Center": () => (/* binding */ Center)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../actions */ "../../actions/index.ts");\n/* harmony import */ var _actions_shortcuts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../actions/shortcuts */ "../../actions/shortcuts.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../i18n */ "../../i18n.ts");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../App */ "../../components/App.tsx");\n/* harmony import */ var _context_tunnels__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../context/tunnels */ "../../context/tunnels.ts");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../icons */ "../../components/icons.tsx");\n/* harmony import */ var _context_ui_appState__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../context/ui-appState */ "../../context/ui-appState.ts");\n/* harmony import */ var _ExcalidrawLogo__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../ExcalidrawLogo */ "../../components/ExcalidrawLogo.tsx");\nvar __rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n\n  if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\n\n\n\n\n\n\nconst WelcomeScreenMenuItemContent = ({\n  icon,\n  shortcut,\n  children\n}) => {\n  const device = (0,_App__WEBPACK_IMPORTED_MODULE_4__.useDevice)();\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: "welcome-screen-menu-item__icon"\n    }, {\n      children: icon\n    })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: "welcome-screen-menu-item__text"\n    }, {\n      children: children\n    })), shortcut && !device.editor.isMobile && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: "welcome-screen-menu-item__shortcut"\n    }, {\n      children: shortcut\n    }))]\n  });\n};\n\nWelcomeScreenMenuItemContent.displayName = "WelcomeScreenMenuItemContent";\n\nconst WelcomeScreenMenuItem = _a => {\n  var {\n    onSelect,\n    children,\n    icon,\n    shortcut,\n    className = ""\n  } = _a,\n      props = __rest(_a, ["onSelect", "children", "icon", "shortcut", "className"]);\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("button", Object.assign({}, props, {\n    type: "button",\n    className: `welcome-screen-menu-item ${className}`,\n    onClick: onSelect\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(WelcomeScreenMenuItemContent, Object.assign({\n      icon: icon,\n      shortcut: shortcut\n    }, {\n      children: children\n    }))\n  }));\n};\n\nWelcomeScreenMenuItem.displayName = "WelcomeScreenMenuItem";\n\nconst WelcomeScreenMenuItemLink = _a => {\n  var {\n    children,\n    href,\n    icon,\n    shortcut,\n    className = ""\n  } = _a,\n      props = __rest(_a, ["children", "href", "icon", "shortcut", "className"]);\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("a", Object.assign({}, props, {\n    className: `welcome-screen-menu-item ${className}`,\n    href: href,\n    target: "_blank",\n    rel: "noreferrer"\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(WelcomeScreenMenuItemContent, Object.assign({\n      icon: icon,\n      shortcut: shortcut\n    }, {\n      children: children\n    }))\n  }));\n};\n\nWelcomeScreenMenuItemLink.displayName = "WelcomeScreenMenuItemLink";\n\nconst Center = ({\n  children\n}) => {\n  const {\n    WelcomeScreenCenterTunnel\n  } = (0,_context_tunnels__WEBPACK_IMPORTED_MODULE_5__.useTunnels)();\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(WelcomeScreenCenterTunnel.In, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: "welcome-screen-center"\n    }, {\n      children: children || (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n        children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Logo, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Heading, {\n          children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("welcomeScreen.defaults.center_heading")\n        }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(Menu, {\n          children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(MenuItemLoadScene, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(MenuItemHelp, {})]\n        })]\n      })\n    }))\n  });\n};\n\nCenter.displayName = "Center";\n\nconst Logo = ({\n  children\n}) => {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: "welcome-screen-center__logo virgil welcome-screen-decor"\n  }, {\n    children: children || (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ExcalidrawLogo__WEBPACK_IMPORTED_MODULE_8__.ExcalidrawLogo, {\n      withText: true\n    })\n  }));\n};\n\nLogo.displayName = "Logo";\n\nconst Heading = ({\n  children\n}) => {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: "welcome-screen-center__heading welcome-screen-decor virgil"\n  }, {\n    children: children\n  }));\n};\n\nHeading.displayName = "Heading";\n\nconst Menu = ({\n  children\n}) => {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: "welcome-screen-menu"\n  }, {\n    children: children\n  }));\n};\n\nMenu.displayName = "Menu";\n\nconst MenuItemHelp = () => {\n  const actionManager = (0,_App__WEBPACK_IMPORTED_MODULE_4__.useExcalidrawActionManager)();\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(WelcomeScreenMenuItem, Object.assign({\n    onSelect: () => actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_1__.actionShortcuts),\n    shortcut: "?",\n    icon: _icons__WEBPACK_IMPORTED_MODULE_6__.HelpIcon\n  }, {\n    children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("helpDialog.title")\n  }));\n};\n\nMenuItemHelp.displayName = "MenuItemHelp";\n\nconst MenuItemLoadScene = () => {\n  const appState = (0,_context_ui_appState__WEBPACK_IMPORTED_MODULE_7__.useUIAppState)();\n  const actionManager = (0,_App__WEBPACK_IMPORTED_MODULE_4__.useExcalidrawActionManager)();\n\n  if (appState.viewModeEnabled) {\n    return null;\n  }\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(WelcomeScreenMenuItem, Object.assign({\n    onSelect: () => actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_1__.actionLoadScene),\n    shortcut: (0,_actions_shortcuts__WEBPACK_IMPORTED_MODULE_2__.getShortcutFromShortcutName)("loadScene"),\n    icon: _icons__WEBPACK_IMPORTED_MODULE_6__.LoadIcon\n  }, {\n    children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("buttons.load")\n  }));\n};\n\nMenuItemLoadScene.displayName = "MenuItemLoadScene";\n\nconst MenuItemLiveCollaborationTrigger = ({\n  onSelect\n}) => {\n  const {\n    t\n  } = (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.useI18n)();\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(WelcomeScreenMenuItem, Object.assign({\n    shortcut: null,\n    onSelect: onSelect,\n    icon: _icons__WEBPACK_IMPORTED_MODULE_6__.usersIcon\n  }, {\n    children: t("labels.liveCollaboration")\n  }));\n};\n\nMenuItemLiveCollaborationTrigger.displayName = "MenuItemLiveCollaborationTrigger"; // -----------------------------------------------------------------------------\n\nCenter.Logo = Logo;\nCenter.Heading = Heading;\nCenter.Menu = Menu;\nCenter.MenuItem = WelcomeScreenMenuItem;\nCenter.MenuItemLink = WelcomeScreenMenuItemLink;\nCenter.MenuItemHelp = MenuItemHelp;\nCenter.MenuItemLoadScene = MenuItemLoadScene;\nCenter.MenuItemLiveCollaborationTrigger = MenuItemLiveCollaborationTrigger;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 10716 characters]\n//# sourceURL=webpack-internal:///../../components/welcome-screen/WelcomeScreen.Center.tsx\n');
              }
            ),
            /***/
            "../../components/welcome-screen/WelcomeScreen.Hints.tsx": (
              /*!***************************************************************!*\
                !*** ../../components/welcome-screen/WelcomeScreen.Hints.tsx ***!
                \***************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "HelpHint": () => (/* binding */ HelpHint),\n/* harmony export */   "MenuHint": () => (/* binding */ MenuHint),\n/* harmony export */   "ToolbarHint": () => (/* binding */ ToolbarHint)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../i18n */ "../../i18n.ts");\n/* harmony import */ var _context_tunnels__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../context/tunnels */ "../../context/tunnels.ts");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../icons */ "../../components/icons.tsx");\n\n\n\n\n\nconst MenuHint = ({\n  children\n}) => {\n  const {\n    WelcomeScreenMenuHintTunnel\n  } = (0,_context_tunnels__WEBPACK_IMPORTED_MODULE_2__.useTunnels)();\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(WelcomeScreenMenuHintTunnel.In, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n      className: "virgil welcome-screen-decor welcome-screen-decor-hint welcome-screen-decor-hint--menu"\n    }, {\n      children: [_icons__WEBPACK_IMPORTED_MODULE_3__.WelcomeScreenMenuArrow, (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n        className: "welcome-screen-decor-hint__label"\n      }, {\n        children: children || (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("welcomeScreen.defaults.menuHint")\n      }))]\n    }))\n  });\n};\n\nMenuHint.displayName = "MenuHint";\n\nconst ToolbarHint = ({\n  children\n}) => {\n  const {\n    WelcomeScreenToolbarHintTunnel\n  } = (0,_context_tunnels__WEBPACK_IMPORTED_MODULE_2__.useTunnels)();\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(WelcomeScreenToolbarHintTunnel.In, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n      className: "virgil welcome-screen-decor welcome-screen-decor-hint welcome-screen-decor-hint--toolbar"\n    }, {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n        className: "welcome-screen-decor-hint__label"\n      }, {\n        children: children || (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("welcomeScreen.defaults.toolbarHint")\n      })), _icons__WEBPACK_IMPORTED_MODULE_3__.WelcomeScreenTopToolbarArrow]\n    }))\n  });\n};\n\nToolbarHint.displayName = "ToolbarHint";\n\nconst HelpHint = ({\n  children\n}) => {\n  const {\n    WelcomeScreenHelpHintTunnel\n  } = (0,_context_tunnels__WEBPACK_IMPORTED_MODULE_2__.useTunnels)();\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(WelcomeScreenHelpHintTunnel.In, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n      className: "virgil welcome-screen-decor welcome-screen-decor-hint welcome-screen-decor-hint--help"\n    }, {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n        children: children || (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("welcomeScreen.defaults.helpHint")\n      }), _icons__WEBPACK_IMPORTED_MODULE_3__.WelcomeScreenHelpArrow]\n    }))\n  });\n};\n\nHelpHint.displayName = "HelpHint";\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy93ZWxjb21lLXNjcmVlbi9XZWxjb21lU2NyZWVuLkhpbnRzLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUErRDtBQUNoQztBQUNvQjtBQUNxRDs7QUFFeEc7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0EsSUFBSSxFQUFFLDREQUFVO0FBQ2hCLFNBQVMsc0RBQUk7QUFDYixjQUFjLHVEQUFLO0FBQ25CO0FBQ0EsS0FBSztBQUNMLGlCQUFpQiwwREFBc0IsRUFBRSxzREFBSTtBQUM3QztBQUNBLE9BQU87QUFDUCw4QkFBOEIsd0NBQUM7QUFDL0IsT0FBTztBQUNQLEtBQUs7QUFDTCxHQUFHO0FBQ0g7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0EsSUFBSSxFQUFFLDREQUFVO0FBQ2hCLFNBQVMsc0RBQUk7QUFDYixjQUFjLHVEQUFLO0FBQ25CO0FBQ0EsS0FBSztBQUNMLGlCQUFpQixzREFBSTtBQUNyQjtBQUNBLE9BQU87QUFDUCw4QkFBOEIsd0NBQUM7QUFDL0IsT0FBTyxJQUFJLGdFQUE0QjtBQUN2QyxLQUFLO0FBQ0wsR0FBRztBQUNIOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBLElBQUksRUFBRSw0REFBVTtBQUNoQixTQUFTLHNEQUFJO0FBQ2IsY0FBYyx1REFBSztBQUNuQjtBQUNBLEtBQUs7QUFDTCxpQkFBaUIsc0RBQUk7QUFDckIsOEJBQThCLHdDQUFDO0FBQy9CLE9BQU8sR0FBRywwREFBc0I7QUFDaEMsS0FBSztBQUNMLEdBQUc7QUFDSDs7QUFFQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL3dlbGNvbWUtc2NyZWVuL1dlbGNvbWVTY3JlZW4uSGludHMudHN4PzFmNGUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IHQgfSBmcm9tIFwiLi4vLi4vaTE4blwiO1xuaW1wb3J0IHsgdXNlVHVubmVscyB9IGZyb20gXCIuLi8uLi9jb250ZXh0L3R1bm5lbHNcIjtcbmltcG9ydCB7IFdlbGNvbWVTY3JlZW5IZWxwQXJyb3csIFdlbGNvbWVTY3JlZW5NZW51QXJyb3csIFdlbGNvbWVTY3JlZW5Ub3BUb29sYmFyQXJyb3cgfSBmcm9tIFwiLi4vaWNvbnNcIjtcblxuY29uc3QgTWVudUhpbnQgPSAoe1xuICBjaGlsZHJlblxufSkgPT4ge1xuICBjb25zdCB7XG4gICAgV2VsY29tZVNjcmVlbk1lbnVIaW50VHVubmVsXG4gIH0gPSB1c2VUdW5uZWxzKCk7XG4gIHJldHVybiBfanN4KFdlbGNvbWVTY3JlZW5NZW51SGludFR1bm5lbC5Jbiwge1xuICAgIGNoaWxkcmVuOiBfanN4cyhcImRpdlwiLCBPYmplY3QuYXNzaWduKHtcbiAgICAgIGNsYXNzTmFtZTogXCJ2aXJnaWwgd2VsY29tZS1zY3JlZW4tZGVjb3Igd2VsY29tZS1zY3JlZW4tZGVjb3ItaGludCB3ZWxjb21lLXNjcmVlbi1kZWNvci1oaW50LS1tZW51XCJcbiAgICB9LCB7XG4gICAgICBjaGlsZHJlbjogW1dlbGNvbWVTY3JlZW5NZW51QXJyb3csIF9qc3goXCJkaXZcIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgICAgIGNsYXNzTmFtZTogXCJ3ZWxjb21lLXNjcmVlbi1kZWNvci1oaW50X19sYWJlbFwiXG4gICAgICB9LCB7XG4gICAgICAgIGNoaWxkcmVuOiBjaGlsZHJlbiB8fCB0KFwid2VsY29tZVNjcmVlbi5kZWZhdWx0cy5tZW51SGludFwiKVxuICAgICAgfSkpXVxuICAgIH0pKVxuICB9KTtcbn07XG5cbk1lbnVIaW50LmRpc3BsYXlOYW1lID0gXCJNZW51SGludFwiO1xuXG5jb25zdCBUb29sYmFySGludCA9ICh7XG4gIGNoaWxkcmVuXG59KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBXZWxjb21lU2NyZWVuVG9vbGJhckhpbnRUdW5uZWxcbiAgfSA9IHVzZVR1bm5lbHMoKTtcbiAgcmV0dXJuIF9qc3goV2VsY29tZVNjcmVlblRvb2xiYXJIaW50VHVubmVsLkluLCB7XG4gICAgY2hpbGRyZW46IF9qc3hzKFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oe1xuICAgICAgY2xhc3NOYW1lOiBcInZpcmdpbCB3ZWxjb21lLXNjcmVlbi1kZWNvciB3ZWxjb21lLXNjcmVlbi1kZWNvci1oaW50IHdlbGNvbWUtc2NyZWVuLWRlY29yLWhpbnQtLXRvb2xiYXJcIlxuICAgIH0sIHtcbiAgICAgIGNoaWxkcmVuOiBbX2pzeChcImRpdlwiLCBPYmplY3QuYXNzaWduKHtcbiAgICAgICAgY2xhc3NOYW1lOiBcIndlbGNvbWUtc2NyZWVuLWRlY29yLWhpbnRfX2xhYmVsXCJcbiAgICAgIH0sIHtcbiAgICAgICAgY2hpbGRyZW46IGNoaWxkcmVuIHx8IHQoXCJ3ZWxjb21lU2NyZWVuLmRlZmF1bHRzLnRvb2xiYXJIaW50XCIpXG4gICAgICB9KSksIFdlbGNvbWVTY3JlZW5Ub3BUb29sYmFyQXJyb3ddXG4gICAgfSkpXG4gIH0pO1xufTtcblxuVG9vbGJhckhpbnQuZGlzcGxheU5hbWUgPSBcIlRvb2xiYXJIaW50XCI7XG5cbmNvbnN0IEhlbHBIaW50ID0gKHtcbiAgY2hpbGRyZW5cbn0pID0+IHtcbiAgY29uc3Qge1xuICAgIFdlbGNvbWVTY3JlZW5IZWxwSGludFR1bm5lbFxuICB9ID0gdXNlVHVubmVscygpO1xuICByZXR1cm4gX2pzeChXZWxjb21lU2NyZWVuSGVscEhpbnRUdW5uZWwuSW4sIHtcbiAgICBjaGlsZHJlbjogX2pzeHMoXCJkaXZcIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgICBjbGFzc05hbWU6IFwidmlyZ2lsIHdlbGNvbWUtc2NyZWVuLWRlY29yIHdlbGNvbWUtc2NyZWVuLWRlY29yLWhpbnQgd2VsY29tZS1zY3JlZW4tZGVjb3ItaGludC0taGVscFwiXG4gICAgfSwge1xuICAgICAgY2hpbGRyZW46IFtfanN4KFwiZGl2XCIsIHtcbiAgICAgICAgY2hpbGRyZW46IGNoaWxkcmVuIHx8IHQoXCJ3ZWxjb21lU2NyZWVuLmRlZmF1bHRzLmhlbHBIaW50XCIpXG4gICAgICB9KSwgV2VsY29tZVNjcmVlbkhlbHBBcnJvd11cbiAgICB9KSlcbiAgfSk7XG59O1xuXG5IZWxwSGludC5kaXNwbGF5TmFtZSA9IFwiSGVscEhpbnRcIjtcbmV4cG9ydCB7IEhlbHBIaW50LCBNZW51SGludCwgVG9vbGJhckhpbnQgfTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/welcome-screen/WelcomeScreen.Hints.tsx\n');
              }
            ),
            /***/
            "../../components/welcome-screen/WelcomeScreen.tsx": (
              /*!*********************************************************!*\
                !*** ../../components/welcome-screen/WelcomeScreen.tsx ***!
                \*********************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _WelcomeScreen_Center__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./WelcomeScreen.Center */ "../../components/welcome-screen/WelcomeScreen.Center.tsx");\n/* harmony import */ var _WelcomeScreen_Hints__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./WelcomeScreen.Hints */ "../../components/welcome-screen/WelcomeScreen.Hints.tsx");\n/* harmony import */ var _WelcomeScreen_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./WelcomeScreen.scss */ "../../components/welcome-screen/WelcomeScreen.scss");\n\n\n\n\n\nconst WelcomeScreen = props => {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n    children: props.children || (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_WelcomeScreen_Center__WEBPACK_IMPORTED_MODULE_1__.Center, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_WelcomeScreen_Hints__WEBPACK_IMPORTED_MODULE_2__.MenuHint, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_WelcomeScreen_Hints__WEBPACK_IMPORTED_MODULE_2__.ToolbarHint, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_WelcomeScreen_Hints__WEBPACK_IMPORTED_MODULE_2__.HelpHint, {})]\n    })\n  });\n};\n\nWelcomeScreen.displayName = "WelcomeScreen";\nWelcomeScreen.Center = _WelcomeScreen_Center__WEBPACK_IMPORTED_MODULE_1__.Center;\nWelcomeScreen.Hints = {\n  MenuHint: _WelcomeScreen_Hints__WEBPACK_IMPORTED_MODULE_2__.MenuHint,\n  ToolbarHint: _WelcomeScreen_Hints__WEBPACK_IMPORTED_MODULE_2__.ToolbarHint,\n  HelpHint: _WelcomeScreen_Hints__WEBPACK_IMPORTED_MODULE_2__.HelpHint\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (WelcomeScreen);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy93ZWxjb21lLXNjcmVlbi9XZWxjb21lU2NyZWVuLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBc0Y7QUFDdEM7QUFDd0I7QUFDMUM7O0FBRTlCO0FBQ0EsU0FBUyxzREFBSSxDQUFDLHVEQUFTO0FBQ3ZCLGdDQUFnQyx1REFBSyxDQUFDLHVEQUFTO0FBQy9DLGlCQUFpQixzREFBSSxDQUFDLHlEQUFNLElBQUksR0FBRyxzREFBSSxDQUFDLDBEQUFRLElBQUksR0FBRyxzREFBSSxDQUFDLDZEQUFXLElBQUksR0FBRyxzREFBSSxDQUFDLDBEQUFRLElBQUk7QUFDL0YsS0FBSztBQUNMLEdBQUc7QUFDSDs7QUFFQTtBQUNBLHVCQUF1Qix5REFBTTtBQUM3QjtBQUNBLFVBQVU7QUFDVixhQUFhO0FBQ2IsVUFBVTtBQUNWO0FBQ0EsaUVBQWUsYUFBYSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL3dlbGNvbWUtc2NyZWVuL1dlbGNvbWVTY3JlZW4udHN4PzE2MjEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsganN4IGFzIF9qc3gsIEZyYWdtZW50IGFzIF9GcmFnbWVudCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgQ2VudGVyIH0gZnJvbSBcIi4vV2VsY29tZVNjcmVlbi5DZW50ZXJcIjtcbmltcG9ydCB7IE1lbnVIaW50LCBUb29sYmFySGludCwgSGVscEhpbnQgfSBmcm9tIFwiLi9XZWxjb21lU2NyZWVuLkhpbnRzXCI7XG5pbXBvcnQgXCIuL1dlbGNvbWVTY3JlZW4uc2Nzc1wiO1xuXG5jb25zdCBXZWxjb21lU2NyZWVuID0gcHJvcHMgPT4ge1xuICByZXR1cm4gX2pzeChfRnJhZ21lbnQsIHtcbiAgICBjaGlsZHJlbjogcHJvcHMuY2hpbGRyZW4gfHwgX2pzeHMoX0ZyYWdtZW50LCB7XG4gICAgICBjaGlsZHJlbjogW19qc3goQ2VudGVyLCB7fSksIF9qc3goTWVudUhpbnQsIHt9KSwgX2pzeChUb29sYmFySGludCwge30pLCBfanN4KEhlbHBIaW50LCB7fSldXG4gICAgfSlcbiAgfSk7XG59O1xuXG5XZWxjb21lU2NyZWVuLmRpc3BsYXlOYW1lID0gXCJXZWxjb21lU2NyZWVuXCI7XG5XZWxjb21lU2NyZWVuLkNlbnRlciA9IENlbnRlcjtcbldlbGNvbWVTY3JlZW4uSGludHMgPSB7XG4gIE1lbnVIaW50LFxuICBUb29sYmFySGludCxcbiAgSGVscEhpbnRcbn07XG5leHBvcnQgZGVmYXVsdCBXZWxjb21lU2NyZWVuOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/welcome-screen/WelcomeScreen.tsx\n');
              }
            ),
            /***/
            "../../constants.ts": (
              /*!**************************!*\
                !*** ../../constants.ts ***!
                \**************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "ACTIVE_THRESHOLD": () => (/* binding */ ACTIVE_THRESHOLD),
/* harmony export */   "ALLOWED_PASTE_MIME_TYPES": () => (/* binding */ ALLOWED_PASTE_MIME_TYPES),
/* harmony export */   "APP_NAME": () => (/* binding */ APP_NAME),
/* harmony export */   "ARROW_LABEL_FONT_SIZE_TO_MIN_WIDTH_RATIO": () => (/* binding */ ARROW_LABEL_FONT_SIZE_TO_MIN_WIDTH_RATIO),
/* harmony export */   "ARROW_LABEL_WIDTH_FRACTION": () => (/* binding */ ARROW_LABEL_WIDTH_FRACTION),
/* harmony export */   "BOUND_TEXT_PADDING": () => (/* binding */ BOUND_TEXT_PADDING),
/* harmony export */   "CANVAS_ONLY_ACTIONS": () => (/* binding */ CANVAS_ONLY_ACTIONS),
/* harmony export */   "CLASSES": () => (/* binding */ CLASSES),
/* harmony export */   "CURSOR_TYPE": () => (/* binding */ CURSOR_TYPE),
/* harmony export */   "DEFAULT_ADAPTIVE_RADIUS": () => (/* binding */ DEFAULT_ADAPTIVE_RADIUS),
/* harmony export */   "DEFAULT_ELEMENT_PROPS": () => (/* binding */ DEFAULT_ELEMENT_PROPS),
/* harmony export */   "DEFAULT_EXPORT_PADDING": () => (/* binding */ DEFAULT_EXPORT_PADDING),
/* harmony export */   "DEFAULT_FONT_FAMILY": () => (/* binding */ DEFAULT_FONT_FAMILY),
/* harmony export */   "DEFAULT_FONT_SIZE": () => (/* binding */ DEFAULT_FONT_SIZE),
/* harmony export */   "DEFAULT_MAX_IMAGE_WIDTH_OR_HEIGHT": () => (/* binding */ DEFAULT_MAX_IMAGE_WIDTH_OR_HEIGHT),
/* harmony export */   "DEFAULT_PROPORTIONAL_RADIUS": () => (/* binding */ DEFAULT_PROPORTIONAL_RADIUS),
/* harmony export */   "DEFAULT_SIDEBAR": () => (/* binding */ DEFAULT_SIDEBAR),
/* harmony export */   "DEFAULT_TEXT_ALIGN": () => (/* binding */ DEFAULT_TEXT_ALIGN),
/* harmony export */   "DEFAULT_UI_OPTIONS": () => (/* binding */ DEFAULT_UI_OPTIONS),
/* harmony export */   "DEFAULT_VERSION": () => (/* binding */ DEFAULT_VERSION),
/* harmony export */   "DEFAULT_VERTICAL_ALIGN": () => (/* binding */ DEFAULT_VERTICAL_ALIGN),
/* harmony export */   "DRAGGING_THRESHOLD": () => (/* binding */ DRAGGING_THRESHOLD),
/* harmony export */   "ELEMENT_READY_TO_ERASE_OPACITY": () => (/* binding */ ELEMENT_READY_TO_ERASE_OPACITY),
/* harmony export */   "ELEMENT_SHIFT_TRANSLATE_AMOUNT": () => (/* binding */ ELEMENT_SHIFT_TRANSLATE_AMOUNT),
/* harmony export */   "ELEMENT_TRANSLATE_AMOUNT": () => (/* binding */ ELEMENT_TRANSLATE_AMOUNT),
/* harmony export */   "ENCRYPTION_KEY_BITS": () => (/* binding */ ENCRYPTION_KEY_BITS),
/* harmony export */   "ENV": () => (/* binding */ ENV),
/* harmony export */   "EVENT": () => (/* binding */ EVENT),
/* harmony export */   "EXPORT_DATA_TYPES": () => (/* binding */ EXPORT_DATA_TYPES),
/* harmony export */   "EXPORT_IMAGE_TYPES": () => (/* binding */ EXPORT_IMAGE_TYPES),
/* harmony export */   "EXPORT_SCALES": () => (/* binding */ EXPORT_SCALES),
/* harmony export */   "EXPORT_SOURCE": () => (/* binding */ EXPORT_SOURCE),
/* harmony export */   "FONT_FAMILY": () => (/* binding */ FONT_FAMILY),
/* harmony export */   "FRAME_STYLE": () => (/* binding */ FRAME_STYLE),
/* harmony export */   "GRID_SIZE": () => (/* binding */ GRID_SIZE),
/* harmony export */   "HYPERLINK_TOOLTIP_DELAY": () => (/* binding */ HYPERLINK_TOOLTIP_DELAY),
/* harmony export */   "IDLE_THRESHOLD": () => (/* binding */ IDLE_THRESHOLD),
/* harmony export */   "IMAGE_MIME_TYPES": () => (/* binding */ IMAGE_MIME_TYPES),
/* harmony export */   "IMAGE_RENDER_TIMEOUT": () => (/* binding */ IMAGE_RENDER_TIMEOUT),
/* harmony export */   "LIBRARY_DISABLED_TYPES": () => (/* binding */ LIBRARY_DISABLED_TYPES),
/* harmony export */   "LIBRARY_SIDEBAR_TAB": () => (/* binding */ LIBRARY_SIDEBAR_TAB),
/* harmony export */   "LIBRARY_SIDEBAR_WIDTH": () => (/* binding */ LIBRARY_SIDEBAR_WIDTH),
/* harmony export */   "LINE_CONFIRM_THRESHOLD": () => (/* binding */ LINE_CONFIRM_THRESHOLD),
/* harmony export */   "MAX_ALLOWED_FILE_BYTES": () => (/* binding */ MAX_ALLOWED_FILE_BYTES),
/* harmony export */   "MAX_DECIMALS_FOR_SVG_EXPORT": () => (/* binding */ MAX_DECIMALS_FOR_SVG_EXPORT),
/* harmony export */   "MIME_TYPES": () => (/* binding */ MIME_TYPES),
/* harmony export */   "MIN_FONT_SIZE": () => (/* binding */ MIN_FONT_SIZE),
/* harmony export */   "MIN_ZOOM": () => (/* binding */ MIN_ZOOM),
/* harmony export */   "MQ_MAX_HEIGHT_LANDSCAPE": () => (/* binding */ MQ_MAX_HEIGHT_LANDSCAPE),
/* harmony export */   "MQ_MAX_WIDTH_LANDSCAPE": () => (/* binding */ MQ_MAX_WIDTH_LANDSCAPE),
/* harmony export */   "MQ_MAX_WIDTH_PORTRAIT": () => (/* binding */ MQ_MAX_WIDTH_PORTRAIT),
/* harmony export */   "MQ_RIGHT_SIDEBAR_MIN_WIDTH": () => (/* binding */ MQ_RIGHT_SIDEBAR_MIN_WIDTH),
/* harmony export */   "POINTER_BUTTON": () => (/* binding */ POINTER_BUTTON),
/* harmony export */   "POINTER_EVENTS": () => (/* binding */ POINTER_EVENTS),
/* harmony export */   "PRECEDING_ELEMENT_KEY": () => (/* binding */ PRECEDING_ELEMENT_KEY),
/* harmony export */   "ROUGHNESS": () => (/* binding */ ROUGHNESS),
/* harmony export */   "ROUNDNESS": () => (/* binding */ ROUNDNESS),
/* harmony export */   "SCROLL_TIMEOUT": () => (/* binding */ SCROLL_TIMEOUT),
/* harmony export */   "SHIFT_LOCKING_ANGLE": () => (/* binding */ SHIFT_LOCKING_ANGLE),
/* harmony export */   "STROKE_WIDTH": () => (/* binding */ STROKE_WIDTH),
/* harmony export */   "SVG_NS": () => (/* binding */ SVG_NS),
/* harmony export */   "TAP_TWICE_TIMEOUT": () => (/* binding */ TAP_TWICE_TIMEOUT),
/* harmony export */   "TEXT_ALIGN": () => (/* binding */ TEXT_ALIGN),
/* harmony export */   "TEXT_TO_CENTER_SNAP_THRESHOLD": () => (/* binding */ TEXT_TO_CENTER_SNAP_THRESHOLD),
/* harmony export */   "THEME": () => (/* binding */ THEME),
/* harmony export */   "THEME_FILTER": () => (/* binding */ THEME_FILTER),
/* harmony export */   "TITLE_TIMEOUT": () => (/* binding */ TITLE_TIMEOUT),
/* harmony export */   "TOUCH_CTX_MENU_TIMEOUT": () => (/* binding */ TOUCH_CTX_MENU_TIMEOUT),
/* harmony export */   "URL_HASH_KEYS": () => (/* binding */ URL_HASH_KEYS),
/* harmony export */   "URL_QUERY_KEYS": () => (/* binding */ URL_QUERY_KEYS),
/* harmony export */   "VERSIONS": () => (/* binding */ VERSIONS),
/* harmony export */   "VERSION_TIMEOUT": () => (/* binding */ VERSION_TIMEOUT),
/* harmony export */   "VERTICAL_ALIGN": () => (/* binding */ VERTICAL_ALIGN),
/* harmony export */   "WINDOWS_EMOJI_FALLBACK_FONT": () => (/* binding */ WINDOWS_EMOJI_FALLBACK_FONT),
/* harmony export */   "YOUTUBE_STATES": () => (/* binding */ YOUTUBE_STATES),
/* harmony export */   "ZOOM_STEP": () => (/* binding */ ZOOM_STEP),
/* harmony export */   "isAndroid": () => (/* binding */ isAndroid),
/* harmony export */   "isBrave": () => (/* binding */ isBrave),
/* harmony export */   "isChrome": () => (/* binding */ isChrome),
/* harmony export */   "isDarwin": () => (/* binding */ isDarwin),
/* harmony export */   "isFirefox": () => (/* binding */ isFirefox),
/* harmony export */   "isSafari": () => (/* binding */ isSafari),
/* harmony export */   "isWindows": () => (/* binding */ isWindows)
/* harmony export */ });
/* harmony import */ var _css_variables_module_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./css/variables.module.scss */ "../../css/variables.module.scss");
/* harmony import */ var _colors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./colors */ "../../colors.ts");


const isDarwin = /Mac|iPod|iPhone|iPad/.test(navigator.platform);
const isWindows = /^Win/.test(navigator.platform);
const isAndroid = /\\b(android)\\b/i.test(navigator.userAgent);
const isFirefox = "netscape" in window && navigator.userAgent.indexOf("rv:") > 1 && navigator.userAgent.indexOf("Gecko") > 1;
const isChrome = navigator.userAgent.indexOf("Chrome") !== -1;
const isSafari = !isChrome && navigator.userAgent.indexOf("Safari") !== -1; // keeping function so it can be mocked in test

const isBrave = () => {
  var _a, _b;

  return ((_b = (_a = navigator.brave) === null || _a === void 0 ? void 0 : _a.isBrave) === null || _b === void 0 ? void 0 : _b.name) === "isBrave";
};
const APP_NAME = "Excalidraw";
const DRAGGING_THRESHOLD = 10; // px

const LINE_CONFIRM_THRESHOLD = 8; // px

const ELEMENT_SHIFT_TRANSLATE_AMOUNT = 5;
const ELEMENT_TRANSLATE_AMOUNT = 1;
const TEXT_TO_CENTER_SNAP_THRESHOLD = 30;
const SHIFT_LOCKING_ANGLE = Math.PI / 12;
const CURSOR_TYPE = {
  TEXT: "text",
  CROSSHAIR: "crosshair",
  GRABBING: "grabbing",
  GRAB: "grab",
  POINTER: "pointer",
  MOVE: "move",
  AUTO: ""
};
const POINTER_BUTTON = {
  MAIN: 0,
  WHEEL: 1,
  SECONDARY: 2,
  TOUCH: -1
};
const POINTER_EVENTS = {
  enabled: "all",
  disabled: "none",
  // asserted as any so it can be freely assigned to React Element
  // "pointerEnvets" CSS prop
  inheritFromUI: "var(--ui-pointerEvents)"
};
var EVENT;

(function (EVENT) {
  EVENT["COPY"] = "copy";
  EVENT["PASTE"] = "paste";
  EVENT["CUT"] = "cut";
  EVENT["KEYDOWN"] = "keydown";
  EVENT["KEYUP"] = "keyup";
  EVENT["MOUSE_MOVE"] = "mousemove";
  EVENT["RESIZE"] = "resize";
  EVENT["UNLOAD"] = "unload";
  EVENT["FOCUS"] = "focus";
  EVENT["BLUR"] = "blur";
  EVENT["DRAG_OVER"] = "dragover";
  EVENT["DROP"] = "drop";
  EVENT["GESTURE_END"] = "gestureend";
  EVENT["BEFORE_UNLOAD"] = "beforeunload";
  EVENT["GESTURE_START"] = "gesturestart";
  EVENT["GESTURE_CHANGE"] = "gesturechange";
  EVENT["POINTER_MOVE"] = "pointermove";
  EVENT["POINTER_DOWN"] = "pointerdown";
  EVENT["POINTER_UP"] = "pointerup";
  EVENT["STATE_CHANGE"] = "statechange";
  EVENT["WHEEL"] = "wheel";
  EVENT["TOUCH_START"] = "touchstart";
  EVENT["TOUCH_END"] = "touchend";
  EVENT["HASHCHANGE"] = "hashchange";
  EVENT["VISIBILITY_CHANGE"] = "visibilitychange";
  EVENT["SCROLL"] = "scroll"; // custom events

  EVENT["EXCALIDRAW_LINK"] = "excalidraw-link";
  EVENT["MENU_ITEM_SELECT"] = "menu.itemSelect";
  EVENT["MESSAGE"] = "message";
})(EVENT || (EVENT = {}));

const YOUTUBE_STATES = {
  UNSTARTED: -1,
  ENDED: 0,
  PLAYING: 1,
  PAUSED: 2,
  BUFFERING: 3,
  CUED: 5
};
const ENV = {
  TEST: "test",
  DEVELOPMENT: "development"
};
const CLASSES = {
  SHAPE_ACTIONS_MENU: "App-menu__left"
}; // 1-based in case we ever do \`if(element.fontFamily)\`

const FONT_FAMILY = {
  Virgil: 1,
  Helvetica: 2,
  Cascadia: 3,
  Assistant: 4
};
const THEME = {
  LIGHT: "light",
  DARK: "dark"
};
const FRAME_STYLE = {
  strokeColor: "#bbb",
  strokeWidth: 2,
  strokeStyle: "solid",
  fillStyle: "solid",
  roughness: 0,
  roundness: null,
  backgroundColor: "transparent",
  radius: 8,
  nameOffsetY: 3,
  nameColorLightTheme: "#999999",
  nameColorDarkTheme: "#7a7a7a",
  nameFontSize: 14,
  nameLineHeight: 1.25
};
const WINDOWS_EMOJI_FALLBACK_FONT = "Segoe UI Emoji";
const MIN_FONT_SIZE = 1;
const DEFAULT_FONT_SIZE = 20;
const DEFAULT_FONT_FAMILY = FONT_FAMILY.Virgil;
const DEFAULT_TEXT_ALIGN = "left";
const DEFAULT_VERTICAL_ALIGN = "top";
const DEFAULT_VERSION = "{version}";
const CANVAS_ONLY_ACTIONS = ["selectAll"];
const GRID_SIZE = 20; // TODO make it configurable?

const IMAGE_MIME_TYPES = {
  svg: "image/svg+xml",
  png: "image/png",
  jpg: "image/jpeg",
  gif: "image/gif",
  webp: "image/webp",
  bmp: "image/bmp",
  ico: "image/x-icon",
  avif: "image/avif",
  jfif: "image/jfif"
};
const ALLOWED_PASTE_MIME_TYPES = ["text/plain", "text/html"];
const MIME_TYPES = Object.assign({
  json: "application/json",
  // excalidraw data
  excalidraw: "application/vnd.excalidraw+json",
  excalidrawlib: "application/vnd.excalidrawlib+json",
  // image-encoded excalidraw data
  "excalidraw.svg": "image/svg+xml",
  "excalidraw.png": "image/png",
  // binary
  binary: "application/octet-stream"
}, IMAGE_MIME_TYPES);
const EXPORT_IMAGE_TYPES = {
  png: "png",
  svg: "svg",
  clipboard: "clipboard"
};
const EXPORT_DATA_TYPES = {
  excalidraw: "excalidraw",
  excalidrawClipboard: "excalidraw/clipboard",
  excalidrawLibrary: "excalidrawlib",
  excalidrawClipboardWithAPI: "excalidraw-api/clipboard"
};
const EXPORT_SOURCE = window.EXCALIDRAW_EXPORT_SOURCE || window.location.origin; // time in milliseconds

const IMAGE_RENDER_TIMEOUT = 500;
const TAP_TWICE_TIMEOUT = 300;
const TOUCH_CTX_MENU_TIMEOUT = 500;
const TITLE_TIMEOUT = 10000;
const VERSION_TIMEOUT = 30000;
const SCROLL_TIMEOUT = 100;
const ZOOM_STEP = 0.1;
const MIN_ZOOM = 0.1;
const HYPERLINK_TOOLTIP_DELAY = 300; // Report a user inactive after IDLE_THRESHOLD milliseconds

const IDLE_THRESHOLD = 60000; // Report a user active each ACTIVE_THRESHOLD milliseconds

const ACTIVE_THRESHOLD = 3000;
const THEME_FILTER = _css_variables_module_scss__WEBPACK_IMPORTED_MODULE_0__["default"].themeFilter;
const URL_QUERY_KEYS = {
  addLibrary: "addLibrary"
};
const URL_HASH_KEYS = {
  addLibrary: "addLibrary"
};
const DEFAULT_UI_OPTIONS = {
  canvasActions: {
    changeViewBackgroundColor: true,
    clearCanvas: true,
    export: {
      saveFileToDisk: true
    },
    loadScene: true,
    saveToActiveFile: true,
    toggleTheme: null,
    saveAsImage: true
  },
  tools: {
    image: true
  }
}; // breakpoints
// -----------------------------------------------------------------------------
// md screen

const MQ_MAX_WIDTH_PORTRAIT = 730;
const MQ_MAX_WIDTH_LANDSCAPE = 1000;
const MQ_MAX_HEIGHT_LANDSCAPE = 500; // sidebar

const MQ_RIGHT_SIDEBAR_MIN_WIDTH = 1229; // -----------------------------------------------------------------------------

const LIBRARY_SIDEBAR_WIDTH = parseInt(_css_variables_module_scss__WEBPACK_IMPORTED_MODULE_0__["default"].rightSidebarWidth);
const MAX_DECIMALS_FOR_SVG_EXPORT = 2;
const EXPORT_SCALES = [1, 2, 3];
const DEFAULT_EXPORT_PADDING = 10; // px

const DEFAULT_MAX_IMAGE_WIDTH_OR_HEIGHT = 1440;
const MAX_ALLOWED_FILE_BYTES = 2 * 1024 * 1024;
const SVG_NS = "http://www.w3.org/2000/svg";
const ENCRYPTION_KEY_BITS = 128;
const VERSIONS = {
  excalidraw: 2,
  excalidrawLibrary: 2
};
const BOUND_TEXT_PADDING = 5;
const ARROW_LABEL_WIDTH_FRACTION = 0.7;
const ARROW_LABEL_FONT_SIZE_TO_MIN_WIDTH_RATIO = 11;
const VERTICAL_ALIGN = {
  TOP: "top",
  MIDDLE: "middle",
  BOTTOM: "bottom"
};
const TEXT_ALIGN = {
  LEFT: "left",
  CENTER: "center",
  RIGHT: "right"
};
const ELEMENT_READY_TO_ERASE_OPACITY = 20; // Radius represented as 25% of element's largest side (width/height).
// Used for LEGACY and PROPORTIONAL_RADIUS algorithms, or when the element is
// below the cutoff size.

const DEFAULT_PROPORTIONAL_RADIUS = 0.25; // Fixed radius for the ADAPTIVE_RADIUS algorithm. In pixels.

const DEFAULT_ADAPTIVE_RADIUS = 32; // roundness type (algorithm)

const ROUNDNESS = {
  // Used for legacy rounding (rectangles), which currently works the same
  // as PROPORTIONAL_RADIUS, but we need to differentiate for UI purposes and
  // forwards-compat.
  LEGACY: 1,
  // Used for linear elements & diamonds
  PROPORTIONAL_RADIUS: 2,
  // Current default algorithm for rectangles, using fixed pixel radius.
  // It's working similarly to a regular border-radius, but attemps to make
  // radius visually similar across differnt element sizes, especially
  // very large and very small elements.
  //
  // NOTE right now we don't allow configuration and use a constant radius
  // (see DEFAULT_ADAPTIVE_RADIUS constant)
  ADAPTIVE_RADIUS: 3
};
/** key containt id of precedeing elemnt id we use in reconciliation during
 * collaboration */

const PRECEDING_ELEMENT_KEY = "__precedingElement__";
const ROUGHNESS = {
  architect: 0,
  artist: 1,
  cartoonist: 2
};
const STROKE_WIDTH = {
  thin: 1,
  bold: 2,
  extraBold: 4
};
const DEFAULT_ELEMENT_PROPS = {
  strokeColor: _colors__WEBPACK_IMPORTED_MODULE_1__.COLOR_PALETTE.black,
  backgroundColor: _colors__WEBPACK_IMPORTED_MODULE_1__.COLOR_PALETTE.transparent,
  fillStyle: "solid",
  strokeWidth: 2,
  strokeStyle: "solid",
  roughness: ROUGHNESS.artist,
  opacity: 100,
  locked: false
};
const LIBRARY_SIDEBAR_TAB = "library";
const DEFAULT_SIDEBAR = {
  name: "default",
  defaultTab: LIBRARY_SIDEBAR_TAB
};
const LIBRARY_DISABLED_TYPES = new Set(["embeddable", "image"]);//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 15316 characters]
//# sourceURL=webpack-internal:///../../constants.ts
`);
              }
            ),
            /***/
            "../../context/tunnels.ts": (
              /*!********************************!*\
                !*** ../../context/tunnels.ts ***!
                \********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "TunnelsContext": () => (/* binding */ TunnelsContext),\n/* harmony export */   "useInitializeTunnels": () => (/* binding */ useInitializeTunnels),\n/* harmony export */   "useTunnels": () => (/* binding */ useTunnels)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var tunnel_rat__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! tunnel-rat */ "../../../node_modules/tunnel-rat/dist/index.js");\n\n\nconst TunnelsContext = react__WEBPACK_IMPORTED_MODULE_0___default().createContext(null);\nconst useTunnels = () => react__WEBPACK_IMPORTED_MODULE_0___default().useContext(TunnelsContext);\nconst useInitializeTunnels = () => {\n  return react__WEBPACK_IMPORTED_MODULE_0___default().useMemo(() => {\n    return {\n      MainMenuTunnel: (0,tunnel_rat__WEBPACK_IMPORTED_MODULE_1__["default"])(),\n      WelcomeScreenMenuHintTunnel: (0,tunnel_rat__WEBPACK_IMPORTED_MODULE_1__["default"])(),\n      WelcomeScreenToolbarHintTunnel: (0,tunnel_rat__WEBPACK_IMPORTED_MODULE_1__["default"])(),\n      WelcomeScreenHelpHintTunnel: (0,tunnel_rat__WEBPACK_IMPORTED_MODULE_1__["default"])(),\n      WelcomeScreenCenterTunnel: (0,tunnel_rat__WEBPACK_IMPORTED_MODULE_1__["default"])(),\n      FooterCenterTunnel: (0,tunnel_rat__WEBPACK_IMPORTED_MODULE_1__["default"])(),\n      DefaultSidebarTriggerTunnel: (0,tunnel_rat__WEBPACK_IMPORTED_MODULE_1__["default"])(),\n      DefaultSidebarTabTriggersTunnel: (0,tunnel_rat__WEBPACK_IMPORTED_MODULE_1__["default"])(),\n      OverwriteConfirmDialogTunnel: (0,tunnel_rat__WEBPACK_IMPORTED_MODULE_1__["default"])(),\n      jotaiScope: Symbol()\n    };\n  }, []);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29udGV4dC90dW5uZWxzLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUEwQjtBQUNNO0FBQ3pCLHVCQUF1QiwwREFBbUI7QUFDMUMseUJBQXlCLHVEQUFnQjtBQUN6QztBQUNQLFNBQVMsb0RBQWE7QUFDdEI7QUFDQSxzQkFBc0Isc0RBQU07QUFDNUIsbUNBQW1DLHNEQUFNO0FBQ3pDLHNDQUFzQyxzREFBTTtBQUM1QyxtQ0FBbUMsc0RBQU07QUFDekMsaUNBQWlDLHNEQUFNO0FBQ3ZDLDBCQUEwQixzREFBTTtBQUNoQyxtQ0FBbUMsc0RBQU07QUFDekMsdUNBQXVDLHNEQUFNO0FBQzdDLG9DQUFvQyxzREFBTTtBQUMxQztBQUNBO0FBQ0EsR0FBRztBQUNIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbnRleHQvdHVubmVscy50cz82ZmFkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB0dW5uZWwgZnJvbSBcInR1bm5lbC1yYXRcIjtcbmV4cG9ydCBjb25zdCBUdW5uZWxzQ29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQobnVsbCk7XG5leHBvcnQgY29uc3QgdXNlVHVubmVscyA9ICgpID0+IFJlYWN0LnVzZUNvbnRleHQoVHVubmVsc0NvbnRleHQpO1xuZXhwb3J0IGNvbnN0IHVzZUluaXRpYWxpemVUdW5uZWxzID0gKCkgPT4ge1xuICByZXR1cm4gUmVhY3QudXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIE1haW5NZW51VHVubmVsOiB0dW5uZWwoKSxcbiAgICAgIFdlbGNvbWVTY3JlZW5NZW51SGludFR1bm5lbDogdHVubmVsKCksXG4gICAgICBXZWxjb21lU2NyZWVuVG9vbGJhckhpbnRUdW5uZWw6IHR1bm5lbCgpLFxuICAgICAgV2VsY29tZVNjcmVlbkhlbHBIaW50VHVubmVsOiB0dW5uZWwoKSxcbiAgICAgIFdlbGNvbWVTY3JlZW5DZW50ZXJUdW5uZWw6IHR1bm5lbCgpLFxuICAgICAgRm9vdGVyQ2VudGVyVHVubmVsOiB0dW5uZWwoKSxcbiAgICAgIERlZmF1bHRTaWRlYmFyVHJpZ2dlclR1bm5lbDogdHVubmVsKCksXG4gICAgICBEZWZhdWx0U2lkZWJhclRhYlRyaWdnZXJzVHVubmVsOiB0dW5uZWwoKSxcbiAgICAgIE92ZXJ3cml0ZUNvbmZpcm1EaWFsb2dUdW5uZWw6IHR1bm5lbCgpLFxuICAgICAgam90YWlTY29wZTogU3ltYm9sKClcbiAgICB9O1xuICB9LCBbXSk7XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../context/tunnels.ts\n');
              }
            ),
            /***/
            "../../context/ui-appState.ts": (
              /*!************************************!*\
                !*** ../../context/ui-appState.ts ***!
                \************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "UIAppStateContext": () => (/* binding */ UIAppStateContext),\n/* harmony export */   "useUIAppState": () => (/* binding */ useUIAppState)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n\nconst UIAppStateContext = react__WEBPACK_IMPORTED_MODULE_0___default().createContext(null);\nconst useUIAppState = () => react__WEBPACK_IMPORTED_MODULE_0___default().useContext(UIAppStateContext);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29udGV4dC91aS1hcHBTdGF0ZS50cy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQTBCO0FBQ25CLDBCQUEwQiwwREFBbUI7QUFDN0MsNEJBQTRCLHVEQUFnQiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb250ZXh0L3VpLWFwcFN0YXRlLnRzPzBiODEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuZXhwb3J0IGNvbnN0IFVJQXBwU3RhdGVDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dChudWxsKTtcbmV4cG9ydCBjb25zdCB1c2VVSUFwcFN0YXRlID0gKCkgPT4gUmVhY3QudXNlQ29udGV4dChVSUFwcFN0YXRlQ29udGV4dCk7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../context/ui-appState.ts\n');
              }
            ),
            /***/
            "../../cursor.ts": (
              /*!***********************!*\
                !*** ../../cursor.ts ***!
                \***********************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "resetCursor": () => (/* binding */ resetCursor),\n/* harmony export */   "setCursor": () => (/* binding */ setCursor),\n/* harmony export */   "setCursorForShape": () => (/* binding */ setCursorForShape),\n/* harmony export */   "setEraserCursor": () => (/* binding */ setEraserCursor)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constants */ "../../constants.ts");\n/* harmony import */ var open_color__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! open-color */ "../../../node_modules/open-color/open-color.json");\n/* harmony import */ var _appState__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./appState */ "../../appState.ts");\n\n\n\nconst laserPointerCursorSVG_tag = `<svg viewBox="0 0 24 24" stroke-width="1" width="28" height="28" xmlns="http://www.w3.org/2000/svg">`;\nconst laserPointerCursorBackgroundSVG = `<path d="M6.164 11.755a5.314 5.314 0 0 1-4.932-5.298 5.314 5.314 0 0 1 5.311-5.311 5.314 5.314 0 0 1 5.307 5.113l8.773 8.773a3.322 3.322 0 0 1 0 4.696l-.895.895a3.322 3.322 0 0 1-4.696 0l-8.868-8.868Z" style="fill:#fff"/>`;\nconst laserPointerCursorIconSVG = `<path stroke="#1b1b1f" fill="#fff" d="m7.868 11.113 7.773 7.774a2.359 2.359 0 0 0 1.667.691 2.368 2.368 0 0 0 2.357-2.358c0-.625-.248-1.225-.69-1.667L11.201 7.78 9.558 9.469l-1.69 1.643v.001Zm10.273 3.606-3.333 3.333m-3.25-6.583 2 2m-7-7 3 3M3.664 3.625l1 1M2.529 6.922l1.407-.144m5.735-2.932-1.118.866M4.285 9.823l.758-1.194m1.863-6.207-.13 1.408"/>`;\nconst laserPointerCursorDataURL_lightMode = `data:${_constants__WEBPACK_IMPORTED_MODULE_0__.MIME_TYPES.svg},${encodeURIComponent(`${laserPointerCursorSVG_tag}${laserPointerCursorIconSVG}</svg>`)}`;\nconst laserPointerCursorDataURL_darkMode = `data:${_constants__WEBPACK_IMPORTED_MODULE_0__.MIME_TYPES.svg},${encodeURIComponent(`${laserPointerCursorSVG_tag}${laserPointerCursorBackgroundSVG}${laserPointerCursorIconSVG}</svg>`)}`;\nconst resetCursor = interactiveCanvas => {\n  if (interactiveCanvas) {\n    interactiveCanvas.style.cursor = "";\n  }\n};\nconst setCursor = (interactiveCanvas, cursor) => {\n  if (interactiveCanvas) {\n    interactiveCanvas.style.cursor = cursor;\n  }\n};\nlet eraserCanvasCache;\nlet previewDataURL;\nconst setEraserCursor = (interactiveCanvas, theme) => {\n  const cursorImageSizePx = 20;\n\n  const drawCanvas = () => {\n    const isDarkTheme = theme === _constants__WEBPACK_IMPORTED_MODULE_0__.THEME.DARK;\n    eraserCanvasCache = document.createElement("canvas");\n    eraserCanvasCache.theme = theme;\n    eraserCanvasCache.height = cursorImageSizePx;\n    eraserCanvasCache.width = cursorImageSizePx;\n    const context = eraserCanvasCache.getContext("2d");\n    context.lineWidth = 1;\n    context.beginPath();\n    context.arc(eraserCanvasCache.width / 2, eraserCanvasCache.height / 2, 5, 0, 2 * Math.PI);\n    context.fillStyle = isDarkTheme ? open_color__WEBPACK_IMPORTED_MODULE_1__.black : open_color__WEBPACK_IMPORTED_MODULE_1__.white;\n    context.fill();\n    context.strokeStyle = isDarkTheme ? open_color__WEBPACK_IMPORTED_MODULE_1__.white : open_color__WEBPACK_IMPORTED_MODULE_1__.black;\n    context.stroke();\n    previewDataURL = eraserCanvasCache.toDataURL(_constants__WEBPACK_IMPORTED_MODULE_0__.MIME_TYPES.svg);\n  };\n\n  if (!eraserCanvasCache || eraserCanvasCache.theme !== theme) {\n    drawCanvas();\n  }\n\n  setCursor(interactiveCanvas, `url(${previewDataURL}) ${cursorImageSizePx / 2} ${cursorImageSizePx / 2}, auto`);\n};\nconst setCursorForShape = (interactiveCanvas, appState) => {\n  if (!interactiveCanvas) {\n    return;\n  }\n\n  if (appState.activeTool.type === "selection") {\n    resetCursor(interactiveCanvas);\n  } else if ((0,_appState__WEBPACK_IMPORTED_MODULE_2__.isHandToolActive)(appState)) {\n    interactiveCanvas.style.cursor = _constants__WEBPACK_IMPORTED_MODULE_0__.CURSOR_TYPE.GRAB;\n  } else if ((0,_appState__WEBPACK_IMPORTED_MODULE_2__.isEraserActive)(appState)) {\n    setEraserCursor(interactiveCanvas, appState.theme); // do nothing if image tool is selected which suggests there\'s\n    // a image-preview set as the cursor\n    // Ignore custom type as well and let host decide\n  } else if (appState.activeTool.type === "laser") {\n    const url = appState.theme === _constants__WEBPACK_IMPORTED_MODULE_0__.THEME.LIGHT ? laserPointerCursorDataURL_lightMode : laserPointerCursorDataURL_darkMode;\n    interactiveCanvas.style.cursor = `url(${url}), auto`;\n  } else if (!["image", "custom"].includes(appState.activeTool.type)) {\n    interactiveCanvas.style.cursor = _constants__WEBPACK_IMPORTED_MODULE_0__.CURSOR_TYPE.CROSSHAIR;\n  } else if (appState.activeTool.type !== "image") {\n    interactiveCanvas.style.cursor = _constants__WEBPACK_IMPORTED_MODULE_0__.CURSOR_TYPE.AUTO;\n  }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6184 characters]\n//# sourceURL=webpack-internal:///../../cursor.ts\n');
              }
            ),
            /***/
            "../../data/blob.ts": (
              /*!**************************!*\
                !*** ../../data/blob.ts ***!
                \**************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "ImageURLToFile": () => (/* binding */ ImageURLToFile),\n/* harmony export */   "SVGStringToFile": () => (/* binding */ SVGStringToFile),\n/* harmony export */   "blobToArrayBuffer": () => (/* binding */ blobToArrayBuffer),\n/* harmony export */   "canvasToBlob": () => (/* binding */ canvasToBlob),\n/* harmony export */   "createFile": () => (/* binding */ createFile),\n/* harmony export */   "dataURLToFile": () => (/* binding */ dataURLToFile),\n/* harmony export */   "generateIdFromFile": () => (/* binding */ generateIdFromFile),\n/* harmony export */   "getDataURL": () => (/* binding */ getDataURL),\n/* harmony export */   "getFileFromEvent": () => (/* binding */ getFileFromEvent),\n/* harmony export */   "getFileHandle": () => (/* binding */ getFileHandle),\n/* harmony export */   "getFileHandleType": () => (/* binding */ getFileHandleType),\n/* harmony export */   "getMimeType": () => (/* binding */ getMimeType),\n/* harmony export */   "isImageFileHandle": () => (/* binding */ isImageFileHandle),\n/* harmony export */   "isImageFileHandleType": () => (/* binding */ isImageFileHandleType),\n/* harmony export */   "isSupportedImageFile": () => (/* binding */ isSupportedImageFile),\n/* harmony export */   "loadFromBlob": () => (/* binding */ loadFromBlob),\n/* harmony export */   "loadLibraryFromBlob": () => (/* binding */ loadLibraryFromBlob),\n/* harmony export */   "loadSceneOrLibraryFromBlob": () => (/* binding */ loadSceneOrLibraryFromBlob),\n/* harmony export */   "normalizeFile": () => (/* binding */ normalizeFile),\n/* harmony export */   "parseLibraryJSON": () => (/* binding */ parseLibraryJSON),\n/* harmony export */   "resizeImageFile": () => (/* binding */ resizeImageFile)\n/* harmony export */ });\n/* harmony import */ var nanoid__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! nanoid */ "../../../node_modules/nanoid/index.browser.js");\n/* harmony import */ var _appState__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../appState */ "../../appState.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../errors */ "../../errors.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../scene */ "../../scene/index.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _filesystem__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./filesystem */ "../../data/filesystem.ts");\n/* harmony import */ var _json__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./json */ "../../data/json.ts");\n/* harmony import */ var _restore__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./restore */ "../../data/restore.ts");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator["throw"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst parseFileContents = blob => __awaiter(void 0, void 0, void 0, function* () {\n  let contents;\n\n  if (blob.type === _constants__WEBPACK_IMPORTED_MODULE_1__.MIME_TYPES.png) {\n    try {\n      return yield (yield Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ./image */ "../../data/image.ts"))).decodePngMetadata(blob);\n    } catch (error) {\n      if (error.message === "INVALID") {\n        throw new _errors__WEBPACK_IMPORTED_MODULE_3__.ImageSceneDataError((0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("alerts.imageDoesNotContainScene"), "IMAGE_NOT_CONTAINS_SCENE_DATA");\n      } else {\n        throw new _errors__WEBPACK_IMPORTED_MODULE_3__.ImageSceneDataError((0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("alerts.cannotRestoreFromImage"));\n      }\n    }\n  } else {\n    if ("text" in Blob) {\n      contents = yield blob.text();\n    } else {\n      contents = yield new Promise(resolve => {\n        const reader = new FileReader();\n        reader.readAsText(blob, "utf8");\n\n        reader.onloadend = () => {\n          if (reader.readyState === FileReader.DONE) {\n            resolve(reader.result);\n          }\n        };\n      });\n    }\n\n    if (blob.type === _constants__WEBPACK_IMPORTED_MODULE_1__.MIME_TYPES.svg) {\n      try {\n        return yield (yield Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ./image */ "../../data/image.ts"))).decodeSvgMetadata({\n          svg: contents\n        });\n      } catch (error) {\n        if (error.message === "INVALID") {\n          throw new _errors__WEBPACK_IMPORTED_MODULE_3__.ImageSceneDataError((0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("alerts.imageDoesNotContainScene"), "IMAGE_NOT_CONTAINS_SCENE_DATA");\n        } else {\n          throw new _errors__WEBPACK_IMPORTED_MODULE_3__.ImageSceneDataError((0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("alerts.cannotRestoreFromImage"));\n        }\n      }\n    }\n  }\n\n  return contents;\n});\n\nconst getMimeType = blob => {\n  let name;\n\n  if (typeof blob === "string") {\n    name = blob;\n  } else {\n    if (blob.type) {\n      return blob.type;\n    }\n\n    name = blob.name || "";\n  }\n\n  if (/\\.(excalidraw|json)$/.test(name)) {\n    return _constants__WEBPACK_IMPORTED_MODULE_1__.MIME_TYPES.json;\n  } else if (/\\.png$/.test(name)) {\n    return _constants__WEBPACK_IMPORTED_MODULE_1__.MIME_TYPES.png;\n  } else if (/\\.jpe?g$/.test(name)) {\n    return _constants__WEBPACK_IMPORTED_MODULE_1__.MIME_TYPES.jpg;\n  } else if (/\\.svg$/.test(name)) {\n    return _constants__WEBPACK_IMPORTED_MODULE_1__.MIME_TYPES.svg;\n  }\n\n  return "";\n};\nconst getFileHandleType = handle => {\n  var _a;\n\n  if (!handle) {\n    return null;\n  }\n\n  return ((_a = handle.name.match(/\\.(json|excalidraw|png|svg)$/)) === null || _a === void 0 ? void 0 : _a[1]) || null;\n};\nconst isImageFileHandleType = type => {\n  return type === "png" || type === "svg";\n};\nconst isImageFileHandle = handle => {\n  const type = getFileHandleType(handle);\n  return type === "png" || type === "svg";\n};\nconst isSupportedImageFile = blob => {\n  const {\n    type\n  } = blob || {};\n  return !!type && Object.values(_constants__WEBPACK_IMPORTED_MODULE_1__.IMAGE_MIME_TYPES).includes(type);\n};\nconst loadSceneOrLibraryFromBlob = (blob,\n/** @see restore.localAppState */\nlocalAppState, localElements,\n/** FileSystemHandle. Defaults to `blob.handle` if defined, otherwise null. */\nfileHandle) => __awaiter(void 0, void 0, void 0, function* () {\n  const contents = yield parseFileContents(blob);\n  let data;\n\n  try {\n    try {\n      data = JSON.parse(contents);\n    } catch (error) {\n      if (isSupportedImageFile(blob)) {\n        throw new _errors__WEBPACK_IMPORTED_MODULE_3__.ImageSceneDataError((0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("alerts.imageDoesNotContainScene"), "IMAGE_NOT_CONTAINS_SCENE_DATA");\n      }\n\n      throw error;\n    }\n\n    if ((0,_json__WEBPACK_IMPORTED_MODULE_8__.isValidExcalidrawData)(data)) {\n      return {\n        type: _constants__WEBPACK_IMPORTED_MODULE_1__.MIME_TYPES.excalidraw,\n        data: (0,_restore__WEBPACK_IMPORTED_MODULE_9__.restore)({\n          elements: (0,_element__WEBPACK_IMPORTED_MODULE_2__.clearElementsForExport)(data.elements || []),\n          appState: Object.assign(Object.assign({\n            theme: localAppState === null || localAppState === void 0 ? void 0 : localAppState.theme,\n            fileHandle: fileHandle || blob.handle || null\n          }, (0,_appState__WEBPACK_IMPORTED_MODULE_0__.cleanAppStateForExport)(data.appState || {})), localAppState ? (0,_scene__WEBPACK_IMPORTED_MODULE_5__.calculateScrollCenter)(data.elements || [], localAppState) : {}),\n          files: data.files\n        }, localAppState, localElements, {\n          repairBindings: true,\n          refreshDimensions: false\n        })\n      };\n    } else if ((0,_json__WEBPACK_IMPORTED_MODULE_8__.isValidLibrary)(data)) {\n      return {\n        type: _constants__WEBPACK_IMPORTED_MODULE_1__.MIME_TYPES.excalidrawlib,\n        data\n      };\n    }\n\n    throw new Error((0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("alerts.couldNotLoadInvalidFile"));\n  } catch (error) {\n    if (error instanceof _errors__WEBPACK_IMPORTED_MODULE_3__.ImageSceneDataError) {\n      throw error;\n    }\n\n    throw new Error((0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("alerts.couldNotLoadInvalidFile"));\n  }\n});\nconst loadFromBlob = (blob,\n/** @see restore.localAppState */\nlocalAppState, localElements,\n/** FileSystemHandle. Defaults to `blob.handle` if defined, otherwise null. */\nfileHandle) => __awaiter(void 0, void 0, void 0, function* () {\n  const ret = yield loadSceneOrLibraryFromBlob(blob, localAppState, localElements, fileHandle);\n\n  if (ret.type !== _constants__WEBPACK_IMPORTED_MODULE_1__.MIME_TYPES.excalidraw) {\n    throw new Error((0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("alerts.couldNotLoadInvalidFile"));\n  }\n\n  return ret.data;\n});\nconst parseLibraryJSON = (json, defaultStatus = "unpublished") => {\n  const data = JSON.parse(json);\n\n  if (!(0,_json__WEBPACK_IMPORTED_MODULE_8__.isValidLibrary)(data)) {\n    throw new Error("Invalid library");\n  }\n\n  const libraryItems = data.libraryItems || data.library;\n  return (0,_restore__WEBPACK_IMPORTED_MODULE_9__.restoreLibraryItems)(libraryItems, defaultStatus);\n};\nconst loadLibraryFromBlob = (blob, defaultStatus = "unpublished") => __awaiter(void 0, void 0, void 0, function* () {\n  return parseLibraryJSON(yield parseFileContents(blob), defaultStatus);\n});\nconst canvasToBlob = canvas => __awaiter(void 0, void 0, void 0, function* () {\n  return new Promise((resolve, reject) => __awaiter(void 0, void 0, void 0, function* () {\n    try {\n      if ((0,_utils__WEBPACK_IMPORTED_MODULE_6__.isPromiseLike)(canvas)) {\n        canvas = yield canvas;\n      }\n\n      canvas.toBlob(blob => {\n        if (!blob) {\n          return reject(new _errors__WEBPACK_IMPORTED_MODULE_3__.CanvasError((0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("canvasError.canvasTooBig"), "CANVAS_POSSIBLY_TOO_BIG"));\n        }\n\n        resolve(blob);\n      });\n    } catch (error) {\n      reject(error);\n    }\n  }));\n});\n/** generates SHA-1 digest from supplied file (if not supported, falls back\n    to a 40-char base64 random id) */\n\nconst generateIdFromFile = file => __awaiter(void 0, void 0, void 0, function* () {\n  try {\n    const hashBuffer = yield window.crypto.subtle.digest("SHA-1", yield blobToArrayBuffer(file));\n    return (0,_utils__WEBPACK_IMPORTED_MODULE_6__.bytesToHexString)(new Uint8Array(hashBuffer));\n  } catch (error) {\n    console.error(error); // length 40 to align with the HEX length of SHA-1 (which is 160 bit)\n\n    return (0,nanoid__WEBPACK_IMPORTED_MODULE_10__.nanoid)(40);\n  }\n});\nconst getDataURL = file => __awaiter(void 0, void 0, void 0, function* () {\n  return new Promise((resolve, reject) => {\n    const reader = new FileReader();\n\n    reader.onload = () => {\n      const dataURL = reader.result;\n      resolve(dataURL);\n    };\n\n    reader.onerror = error => reject(error);\n\n    reader.readAsDataURL(file);\n  });\n});\nconst dataURLToFile = (dataURL, filename = "") => {\n  const dataIndexStart = dataURL.indexOf(",");\n  const byteString = atob(dataURL.slice(dataIndexStart + 1));\n  const mimeType = dataURL.slice(0, dataIndexStart).split(":")[1].split(";")[0];\n  const ab = new ArrayBuffer(byteString.length);\n  const ia = new Uint8Array(ab);\n\n  for (let i = 0; i < byteString.length; i++) {\n    ia[i] = byteString.charCodeAt(i);\n  }\n\n  return new File([ab], filename, {\n    type: mimeType\n  });\n};\nconst resizeImageFile = (file, opts) => __awaiter(void 0, void 0, void 0, function* () {\n  // SVG files shouldn\'t a can\'t be resized\n  if (file.type === _constants__WEBPACK_IMPORTED_MODULE_1__.MIME_TYPES.svg) {\n    return file;\n  }\n\n  const [pica, imageBlobReduce] = yield Promise.all([__webpack_require__.e(/*! import() */ "vendor").then(__webpack_require__.t.bind(__webpack_require__, /*! pica */ "../../../node_modules/pica/dist/pica.js", 23)).then(res => res.default), // a wrapper for pica for better API\n  __webpack_require__.e(/*! import() */ "vendor").then(__webpack_require__.bind(__webpack_require__, /*! image-blob-reduce */ "../../../node_modules/image-blob-reduce/dist/image-blob-reduce.esm.mjs")).then(res => res.default)]); // CRA\'s minification settings break pica in WebWorkers, so let\'s disable\n  // them for now\n  // https://github.com/nodeca/image-blob-reduce/issues/21#issuecomment-757365513\n\n  const reduce = imageBlobReduce({\n    pica: pica({\n      features: ["js", "wasm"]\n    })\n  });\n\n  if (opts.outputType) {\n    const {\n      outputType\n    } = opts;\n\n    reduce._create_blob = function (env) {\n      return this.pica.toBlob(env.out_canvas, outputType, 0.8).then(blob => {\n        env.out_blob = blob;\n        return env;\n      });\n    };\n  }\n\n  if (!isSupportedImageFile(file)) {\n    throw new Error((0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("errors.unsupportedFileType"));\n  }\n\n  return new File([yield reduce.toBlob(file, {\n    max: opts.maxWidthOrHeight\n  })], file.name, {\n    type: opts.outputType || file.type\n  });\n});\nconst SVGStringToFile = (SVGString, filename = "") => {\n  return new File([new TextEncoder().encode(SVGString)], filename, {\n    type: _constants__WEBPACK_IMPORTED_MODULE_1__.MIME_TYPES.svg\n  });\n};\nconst ImageURLToFile = (imageUrl, filename = "") => __awaiter(void 0, void 0, void 0, function* () {\n  let response;\n\n  try {\n    response = yield fetch(imageUrl);\n  } catch (error) {\n    throw new Error((0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("errors.failedToFetchImage"));\n  }\n\n  if (!response.ok) {\n    throw new Error((0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("errors.failedToFetchImage"));\n  }\n\n  const blob = yield response.blob();\n\n  if (blob.type && isSupportedImageFile(blob)) {\n    const name = filename || blob.name || "";\n    return new File([blob], name, {\n      type: blob.type\n    });\n  }\n\n  throw new Error((0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("errors.unsupportedFileType"));\n});\nconst getFileFromEvent = event => __awaiter(void 0, void 0, void 0, function* () {\n  const file = event.dataTransfer.files.item(0);\n  const fileHandle = yield getFileHandle(event);\n  return {\n    file: file ? yield normalizeFile(file) : null,\n    fileHandle\n  };\n});\nconst getFileHandle = event => __awaiter(void 0, void 0, void 0, function* () {\n  if (_filesystem__WEBPACK_IMPORTED_MODULE_7__.nativeFileSystemSupported) {\n    try {\n      const item = event.dataTransfer.items[0];\n      const handle = (yield item.getAsFileSystemHandle()) || null;\n      return handle;\n    } catch (error) {\n      console.warn(error.name, error.message);\n      return null;\n    }\n  }\n\n  return null;\n});\n/**\n * attempts to detect if a buffer is a valid image by checking its leading bytes\n */\n\nconst getActualMimeTypeFromImage = buffer => {\n  let mimeType = null;\n  const first8Bytes = `${[...new Uint8Array(buffer).slice(0, 8)].join(" ")} `; // uint8 leading bytes\n\n  const headerBytes = {\n    // https://en.wikipedia.org/wiki/Portable_Network_Graphics#File_header\n    png: "137 80 78 71 13 10 26 10 ",\n    // https://en.wikipedia.org/wiki/JPEG#Syntax_and_structure\n    // jpg is a bit wonky. Checking the first three bytes should be enough,\n    // but may yield false positives. (https://stackoverflow.com/a/23360709/927631)\n    jpg: "255 216 255 ",\n    // https://en.wikipedia.org/wiki/GIF#Example_GIF_file\n    gif: "71 73 70 56 57 97 "\n  };\n\n  if (first8Bytes === headerBytes.png) {\n    mimeType = _constants__WEBPACK_IMPORTED_MODULE_1__.MIME_TYPES.png;\n  } else if (first8Bytes.startsWith(headerBytes.jpg)) {\n    mimeType = _constants__WEBPACK_IMPORTED_MODULE_1__.MIME_TYPES.jpg;\n  } else if (first8Bytes.startsWith(headerBytes.gif)) {\n    mimeType = _constants__WEBPACK_IMPORTED_MODULE_1__.MIME_TYPES.gif;\n  }\n\n  return mimeType;\n};\n\nconst createFile = (blob, mimeType, name) => {\n  return new File([blob], name || "", {\n    type: mimeType\n  });\n};\n/** attempts to detect correct mimeType if none is set, or if an image\n * has an incorrect extension.\n * Note: doesn\'t handle missing .excalidraw/.excalidrawlib extension  */\n\nconst normalizeFile = file => __awaiter(void 0, void 0, void 0, function* () {\n  var _a, _b;\n\n  if (!file.type) {\n    if ((_a = file === null || file === void 0 ? void 0 : file.name) === null || _a === void 0 ? void 0 : _a.endsWith(".excalidrawlib")) {\n      file = createFile(yield blobToArrayBuffer(file), _constants__WEBPACK_IMPORTED_MODULE_1__.MIME_TYPES.excalidrawlib, file.name);\n    } else if ((_b = file === null || file === void 0 ? void 0 : file.name) === null || _b === void 0 ? void 0 : _b.endsWith(".excalidraw")) {\n      file = createFile(yield blobToArrayBuffer(file), _constants__WEBPACK_IMPORTED_MODULE_1__.MIME_TYPES.excalidraw, file.name);\n    } else {\n      const buffer = yield blobToArrayBuffer(file);\n      const mimeType = getActualMimeTypeFromImage(buffer);\n\n      if (mimeType) {\n        file = createFile(buffer, mimeType, file.name);\n      }\n    } // when the file is an image, make sure the extension corresponds to the\n    // actual mimeType (this is an edge case, but happens sometime)\n\n  } else if (isSupportedImageFile(file)) {\n    const buffer = yield blobToArrayBuffer(file);\n    const mimeType = getActualMimeTypeFromImage(buffer);\n\n    if (mimeType && mimeType !== file.type) {\n      file = createFile(buffer, mimeType, file.name);\n    }\n  }\n\n  return file;\n});\nconst blobToArrayBuffer = blob => {\n  if ("arrayBuffer" in blob) {\n    return blob.arrayBuffer();\n  } // Safari\n\n\n  return new Promise((resolve, reject) => {\n    const reader = new FileReader();\n\n    reader.onload = event => {\n      var _a;\n\n      if (!((_a = event.target) === null || _a === void 0 ? void 0 : _a.result)) {\n        return reject(new Error("Couldn\'t convert blob to ArrayBuffer"));\n      }\n\n      resolve(event.target.result);\n    };\n\n    reader.readAsArrayBuffer(blob);\n  });\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 23832 characters]\n//# sourceURL=webpack-internal:///../../data/blob.ts\n');
              }
            ),
            /***/
            "../../data/encode.ts": (
              /*!****************************!*\
                !*** ../../data/encode.ts ***!
                \****************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "base64ToString": () => (/* binding */ base64ToString),\n/* harmony export */   "compressData": () => (/* binding */ compressData),\n/* harmony export */   "decode": () => (/* binding */ decode),\n/* harmony export */   "decompressData": () => (/* binding */ decompressData),\n/* harmony export */   "encode": () => (/* binding */ encode),\n/* harmony export */   "stringToBase64": () => (/* binding */ stringToBase64),\n/* harmony export */   "toByteString": () => (/* binding */ toByteString)\n/* harmony export */ });\n/* harmony import */ var pako__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! pako */ "../../../node_modules/pako/index.js");\n/* harmony import */ var pako__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(pako__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _encryption__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./encryption */ "../../data/encryption.ts");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator["throw"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n // -----------------------------------------------------------------------------\n// byte (binary) strings\n// -----------------------------------------------------------------------------\n// fast, Buffer-compatible implem\n\nconst toByteString = data => {\n  return new Promise((resolve, reject) => {\n    const blob = typeof data === "string" ? new Blob([new TextEncoder().encode(data)]) : new Blob([data instanceof Uint8Array ? data : new Uint8Array(data)]);\n    const reader = new FileReader();\n\n    reader.onload = event => {\n      if (!event.target || typeof event.target.result !== "string") {\n        return reject(new Error("couldn\'t convert to byte string"));\n      }\n\n      resolve(event.target.result);\n    };\n\n    reader.readAsBinaryString(blob);\n  });\n};\n\nconst byteStringToArrayBuffer = byteString => {\n  const buffer = new ArrayBuffer(byteString.length);\n  const bufferView = new Uint8Array(buffer);\n\n  for (let i = 0, len = byteString.length; i < len; i++) {\n    bufferView[i] = byteString.charCodeAt(i);\n  }\n\n  return buffer;\n};\n\nconst byteStringToString = byteString => {\n  return new TextDecoder("utf-8").decode(byteStringToArrayBuffer(byteString));\n}; // -----------------------------------------------------------------------------\n// base64\n// -----------------------------------------------------------------------------\n\n/**\n * @param isByteString set to true if already byte string to prevent bloat\n *  due to reencoding\n */\n\n\nconst stringToBase64 = (str, isByteString = false) => __awaiter(void 0, void 0, void 0, function* () {\n  return isByteString ? window.btoa(str) : window.btoa(yield toByteString(str));\n}); // async to align with stringToBase64\n\nconst base64ToString = (base64, isByteString = false) => __awaiter(void 0, void 0, void 0, function* () {\n  return isByteString ? window.atob(base64) : byteStringToString(window.atob(base64));\n});\n/**\n * Encodes (and potentially compresses via zlib) text to byte string\n */\n\nconst encode = ({\n  text,\n  compress\n}) => __awaiter(void 0, void 0, void 0, function* () {\n  let deflated;\n\n  if (compress !== false) {\n    try {\n      deflated = yield toByteString((0,pako__WEBPACK_IMPORTED_MODULE_0__.deflate)(text));\n    } catch (error) {\n      console.error("encode: cannot deflate", error);\n    }\n  }\n\n  return {\n    version: "1",\n    encoding: "bstring",\n    compressed: !!deflated,\n    encoded: deflated || (yield toByteString(text))\n  };\n});\nconst decode = data => __awaiter(void 0, void 0, void 0, function* () {\n  let decoded;\n\n  switch (data.encoding) {\n    case "bstring":\n      // if compressed, do not double decode the bstring\n      decoded = data.compressed ? data.encoded : yield byteStringToString(data.encoded);\n      break;\n\n    default:\n      throw new Error(`decode: unknown encoding "${data.encoding}"`);\n  }\n\n  if (data.compressed) {\n    return (0,pako__WEBPACK_IMPORTED_MODULE_0__.inflate)(new Uint8Array(byteStringToArrayBuffer(decoded)), {\n      to: "string"\n    });\n  }\n\n  return decoded;\n}); // -----------------------------------------------------------------------------\n\nconst CONCAT_BUFFERS_VERSION = 1;\n/** how many bytes we use to encode how many bytes the next chunk has.\n * Corresponds to DataView setter methods (setUint32, setUint16, etc).\n *\n * NOTE ! values must not be changed, which would be backwards incompatible !\n */\n\nconst VERSION_DATAVIEW_BYTES = 4;\nconst NEXT_CHUNK_SIZE_DATAVIEW_BYTES = 4; // -----------------------------------------------------------------------------\n\nconst DATA_VIEW_BITS_MAP = {\n  1: 8,\n  2: 16,\n  4: 32\n};\n/**\n * abstraction over DataView that serves as a typed getter/setter in case\n * you\'re using constants for the byte size and want to ensure there\'s no\n * discrepenancy in the encoding across refactors.\n *\n * DataView serves for an endian-agnostic handling of numbers in ArrayBuffers.\n */\n\nfunction dataView(buffer, bytes, offset, value) {\n  if (value != null) {\n    if (value > Math.pow(2, DATA_VIEW_BITS_MAP[bytes]) - 1) {\n      throw new Error(`attempting to set value higher than the allocated bytes (value: ${value}, bytes: ${bytes})`);\n    }\n\n    const method = `setUint${DATA_VIEW_BITS_MAP[bytes]}`;\n    new DataView(buffer.buffer)[method](offset, value);\n    return buffer;\n  }\n\n  const method = `getUint${DATA_VIEW_BITS_MAP[bytes]}`;\n  return new DataView(buffer.buffer)[method](offset);\n} // -----------------------------------------------------------------------------\n\n/**\n * Resulting concatenated buffer has this format:\n *\n * [\n *   VERSION chunk (4 bytes)\n *   LENGTH chunk 1 (4 bytes)\n *   DATA chunk 1 (up to 2^32 bits)\n *   LENGTH chunk 2 (4 bytes)\n *   DATA chunk 2 (up to 2^32 bits)\n *   ...\n * ]\n *\n * @param buffers each buffer (chunk) must be at most 2^32 bits large (~4GB)\n */\n\n\nconst concatBuffers = (...buffers) => {\n  const bufferView = new Uint8Array(VERSION_DATAVIEW_BYTES + NEXT_CHUNK_SIZE_DATAVIEW_BYTES * buffers.length + buffers.reduce((acc, buffer) => acc + buffer.byteLength, 0));\n  let cursor = 0; // as the first chunk we\'ll encode the version for backwards compatibility\n\n  dataView(bufferView, VERSION_DATAVIEW_BYTES, cursor, CONCAT_BUFFERS_VERSION);\n  cursor += VERSION_DATAVIEW_BYTES;\n\n  for (const buffer of buffers) {\n    dataView(bufferView, NEXT_CHUNK_SIZE_DATAVIEW_BYTES, cursor, buffer.byteLength);\n    cursor += NEXT_CHUNK_SIZE_DATAVIEW_BYTES;\n    bufferView.set(buffer, cursor);\n    cursor += buffer.byteLength;\n  }\n\n  return bufferView;\n};\n/** can only be used on buffers created via `concatBuffers()` */\n\n\nconst splitBuffers = concatenatedBuffer => {\n  const buffers = [];\n  let cursor = 0; // first chunk is the version\n\n  const version = dataView(concatenatedBuffer, NEXT_CHUNK_SIZE_DATAVIEW_BYTES, cursor); // If version is outside of the supported versions, throw an error.\n  // This usually means the buffer wasn\'t encoded using this API, so we\'d only\n  // waste compute.\n\n  if (version > CONCAT_BUFFERS_VERSION) {\n    throw new Error(`invalid version ${version}`);\n  }\n\n  cursor += VERSION_DATAVIEW_BYTES;\n\n  while (true) {\n    const chunkSize = dataView(concatenatedBuffer, NEXT_CHUNK_SIZE_DATAVIEW_BYTES, cursor);\n    cursor += NEXT_CHUNK_SIZE_DATAVIEW_BYTES;\n    buffers.push(concatenatedBuffer.slice(cursor, cursor + chunkSize));\n    cursor += chunkSize;\n\n    if (cursor >= concatenatedBuffer.byteLength) {\n      break;\n    }\n  }\n\n  return buffers;\n}; // helpers for (de)compressing data with JSON metadata including encryption\n// -----------------------------------------------------------------------------\n\n/** @private */\n\n\nconst _encryptAndCompress = (data, encryptionKey) => __awaiter(void 0, void 0, void 0, function* () {\n  const {\n    encryptedBuffer,\n    iv\n  } = yield (0,_encryption__WEBPACK_IMPORTED_MODULE_1__.encryptData)(encryptionKey, (0,pako__WEBPACK_IMPORTED_MODULE_0__.deflate)(data));\n  return {\n    iv,\n    buffer: new Uint8Array(encryptedBuffer)\n  };\n});\n/**\n * The returned buffer has following format:\n * `[]` refers to a buffers wrapper (see `concatBuffers`)\n *\n * [\n *   encodingMetadataBuffer,\n *   iv,\n *   [\n *      contentsMetadataBuffer\n *      contentsBuffer\n *   ]\n * ]\n */\n\n\nconst compressData = (dataBuffer, options) => __awaiter(void 0, void 0, void 0, function* () {\n  const fileInfo = {\n    version: 2,\n    compression: "pako@1",\n    encryption: "AES-GCM"\n  };\n  const encodingMetadataBuffer = new TextEncoder().encode(JSON.stringify(fileInfo));\n  const contentsMetadataBuffer = new TextEncoder().encode(JSON.stringify(options.metadata || null));\n  const {\n    iv,\n    buffer\n  } = yield _encryptAndCompress(concatBuffers(contentsMetadataBuffer, dataBuffer), options.encryptionKey);\n  return concatBuffers(encodingMetadataBuffer, iv, buffer);\n});\n/** @private */\n\nconst _decryptAndDecompress = (iv, decryptedBuffer, decryptionKey, isCompressed) => __awaiter(void 0, void 0, void 0, function* () {\n  decryptedBuffer = new Uint8Array(yield (0,_encryption__WEBPACK_IMPORTED_MODULE_1__.decryptData)(iv, decryptedBuffer, decryptionKey));\n\n  if (isCompressed) {\n    return (0,pako__WEBPACK_IMPORTED_MODULE_0__.inflate)(decryptedBuffer);\n  }\n\n  return decryptedBuffer;\n});\n\nconst decompressData = (bufferView, options) => __awaiter(void 0, void 0, void 0, function* () {\n  // first chunk is encoding metadata (ignored for now)\n  const [encodingMetadataBuffer, iv, buffer] = splitBuffers(bufferView);\n  const encodingMetadata = JSON.parse(new TextDecoder().decode(encodingMetadataBuffer));\n\n  try {\n    const [contentsMetadataBuffer, contentsBuffer] = splitBuffers(yield _decryptAndDecompress(iv, buffer, options.decryptionKey, !!encodingMetadata.compression));\n    const metadata = JSON.parse(new TextDecoder().decode(contentsMetadataBuffer));\n    return {\n      /** metadata source is always JSON so we can decode it here */\n      metadata,\n\n      /** data can be anything so the caller must decode it */\n      data: contentsBuffer\n    };\n  } catch (error) {\n    console.error(`Error during decompressing and decrypting the file.`, encodingMetadata);\n    throw error;\n  }\n}); // -----------------------------------------------------------------------------//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 15936 characters]\n//# sourceURL=webpack-internal:///../../data/encode.ts\n');
              }
            ),
            /***/
            "../../data/encryption.ts": (
              /*!********************************!*\
                !*** ../../data/encryption.ts ***!
                \********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "IV_LENGTH_BYTES": () => (/* binding */ IV_LENGTH_BYTES),\n/* harmony export */   "createIV": () => (/* binding */ createIV),\n/* harmony export */   "decryptData": () => (/* binding */ decryptData),\n/* harmony export */   "encryptData": () => (/* binding */ encryptData),\n/* harmony export */   "generateEncryptionKey": () => (/* binding */ generateEncryptionKey),\n/* harmony export */   "getCryptoKey": () => (/* binding */ getCryptoKey)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _blob__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./blob */ "../../data/blob.ts");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator["throw"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\nconst IV_LENGTH_BYTES = 12;\nconst createIV = () => {\n  const arr = new Uint8Array(IV_LENGTH_BYTES);\n  return window.crypto.getRandomValues(arr);\n};\nconst generateEncryptionKey = returnAs => __awaiter(void 0, void 0, void 0, function* () {\n  const key = yield window.crypto.subtle.generateKey({\n    name: "AES-GCM",\n    length: _constants__WEBPACK_IMPORTED_MODULE_0__.ENCRYPTION_KEY_BITS\n  }, true, // extractable\n  ["encrypt", "decrypt"]);\n  return returnAs === "cryptoKey" ? key : (yield window.crypto.subtle.exportKey("jwk", key)).k;\n});\nconst getCryptoKey = (key, usage) => window.crypto.subtle.importKey("jwk", {\n  alg: "A128GCM",\n  ext: true,\n  k: key,\n  key_ops: ["encrypt", "decrypt"],\n  kty: "oct"\n}, {\n  name: "AES-GCM",\n  length: _constants__WEBPACK_IMPORTED_MODULE_0__.ENCRYPTION_KEY_BITS\n}, false, // extractable\n[usage]);\nconst encryptData = (key, data) => __awaiter(void 0, void 0, void 0, function* () {\n  const importedKey = typeof key === "string" ? yield getCryptoKey(key, "encrypt") : key;\n  const iv = createIV();\n  const buffer = typeof data === "string" ? new TextEncoder().encode(data) : data instanceof Uint8Array ? data : data instanceof Blob ? yield (0,_blob__WEBPACK_IMPORTED_MODULE_1__.blobToArrayBuffer)(data) : data; // We use symmetric encryption. AES-GCM is the recommended algorithm and\n  // includes checks that the ciphertext has not been modified by an attacker.\n\n  const encryptedBuffer = yield window.crypto.subtle.encrypt({\n    name: "AES-GCM",\n    iv\n  }, importedKey, buffer);\n  return {\n    encryptedBuffer,\n    iv\n  };\n});\nconst decryptData = (iv, encrypted, privateKey) => __awaiter(void 0, void 0, void 0, function* () {\n  const key = yield getCryptoKey(privateKey, "decrypt");\n  return window.crypto.subtle.decrypt({\n    name: "AES-GCM",\n    iv\n  }, key, encrypted);\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4540 characters]\n//# sourceURL=webpack-internal:///../../data/encryption.ts\n');
              }
            ),
            /***/
            "../../data/filesystem.ts": (
              /*!********************************!*\
                !*** ../../data/filesystem.ts ***!
                \********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "fileOpen": () => (/* binding */ fileOpen),\n/* harmony export */   "fileSave": () => (/* binding */ fileSave),\n/* harmony export */   "nativeFileSystemSupported": () => (/* reexport safe */ browser_fs_access__WEBPACK_IMPORTED_MODULE_0__.supported)\n/* harmony export */ });\n/* harmony import */ var browser_fs_access__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! browser-fs-access */ "../../../node_modules/browser-fs-access/dist/index.mjs");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../errors */ "../../errors.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n\n\n\n\nconst INPUT_CHANGE_INTERVAL_MS = 500;\nconst fileOpen = opts => {\n  var _a, _b, _c;\n\n  const mimeTypes = (_a = opts.extensions) === null || _a === void 0 ? void 0 : _a.reduce((mimeTypes, type) => {\n    mimeTypes.push(_constants__WEBPACK_IMPORTED_MODULE_1__.MIME_TYPES[type]);\n    return mimeTypes;\n  }, []);\n  const extensions = (_b = opts.extensions) === null || _b === void 0 ? void 0 : _b.reduce((acc, ext) => {\n    if (ext === "jpg") {\n      return acc.concat(".jpg", ".jpeg");\n    }\n\n    return acc.concat(`.${ext}`);\n  }, []);\n  return (0,browser_fs_access__WEBPACK_IMPORTED_MODULE_0__.fileOpen)({\n    description: opts.description,\n    extensions,\n    mimeTypes,\n    multiple: (_c = opts.multiple) !== null && _c !== void 0 ? _c : false,\n    legacySetup: (resolve, reject, input) => {\n      const scheduleRejection = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.debounce)(reject, INPUT_CHANGE_INTERVAL_MS);\n\n      const focusHandler = () => {\n        checkForFile();\n        document.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_1__.EVENT.KEYUP, scheduleRejection);\n        document.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_1__.EVENT.POINTER_UP, scheduleRejection);\n        scheduleRejection();\n      };\n\n      const checkForFile = () => {\n        var _a; // this hack might not work when expecting multiple files\n\n\n        if ((_a = input.files) === null || _a === void 0 ? void 0 : _a.length) {\n          const ret = opts.multiple ? [...input.files] : input.files[0];\n          resolve(ret);\n        }\n      };\n\n      requestAnimationFrame(() => {\n        window.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_1__.EVENT.FOCUS, focusHandler);\n      });\n      const interval = window.setInterval(() => {\n        checkForFile();\n      }, INPUT_CHANGE_INTERVAL_MS);\n      return rejectPromise => {\n        clearInterval(interval);\n        scheduleRejection.cancel();\n        window.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_1__.EVENT.FOCUS, focusHandler);\n        document.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_1__.EVENT.KEYUP, scheduleRejection);\n        document.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_1__.EVENT.POINTER_UP, scheduleRejection);\n\n        if (rejectPromise) {\n          // so that something is shown in console if we need to debug this\n          console.warn("Opening the file was canceled (legacy-fs).");\n          rejectPromise(new _errors__WEBPACK_IMPORTED_MODULE_2__.AbortError());\n        }\n      };\n    }\n  });\n};\nconst fileSave = (blob, opts) => {\n  return (0,browser_fs_access__WEBPACK_IMPORTED_MODULE_0__.fileSave)(blob, {\n    fileName: `${opts.name}.${opts.extension}`,\n    description: opts.description,\n    extensions: [`.${opts.extension}`]\n  }, opts.fileHandle);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4604 characters]\n//# sourceURL=webpack-internal:///../../data/filesystem.ts\n');
              }
            ),
            /***/
            "../../data/image.ts": (
              /*!***************************!*\
                !*** ../../data/image.ts ***!
                \***************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "decodePngMetadata": () => (/* binding */ decodePngMetadata),\n/* harmony export */   "decodeSvgMetadata": () => (/* binding */ decodeSvgMetadata),\n/* harmony export */   "encodePngMetadata": () => (/* binding */ encodePngMetadata),\n/* harmony export */   "encodeSvgMetadata": () => (/* binding */ encodeSvgMetadata),\n/* harmony export */   "getTEXtChunk": () => (/* binding */ getTEXtChunk)\n/* harmony export */ });\n/* harmony import */ var png_chunks_extract__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! png-chunks-extract */ "../../../node_modules/png-chunks-extract/index.js");\n/* harmony import */ var png_chunks_extract__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(png_chunks_extract__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var png_chunk_text__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! png-chunk-text */ "../../../node_modules/png-chunk-text/index.js");\n/* harmony import */ var png_chunks_encode__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! png-chunks-encode */ "../../../node_modules/png-chunks-encode/index.js");\n/* harmony import */ var png_chunks_encode__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(png_chunks_encode__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _encode__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./encode */ "../../data/encode.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _blob__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./blob */ "../../data/blob.ts");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator["throw"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n\n\n\n // -----------------------------------------------------------------------------\n// PNG\n// -----------------------------------------------------------------------------\n\nconst getTEXtChunk = blob => __awaiter(void 0, void 0, void 0, function* () {\n  const chunks = png_chunks_extract__WEBPACK_IMPORTED_MODULE_0___default()(new Uint8Array(yield (0,_blob__WEBPACK_IMPORTED_MODULE_5__.blobToArrayBuffer)(blob)));\n  const metadataChunk = chunks.find(chunk => chunk.name === "tEXt");\n\n  if (metadataChunk) {\n    return png_chunk_text__WEBPACK_IMPORTED_MODULE_1__.decode(metadataChunk.data);\n  }\n\n  return null;\n});\nconst encodePngMetadata = ({\n  blob,\n  metadata\n}) => __awaiter(void 0, void 0, void 0, function* () {\n  const chunks = png_chunks_extract__WEBPACK_IMPORTED_MODULE_0___default()(new Uint8Array(yield (0,_blob__WEBPACK_IMPORTED_MODULE_5__.blobToArrayBuffer)(blob)));\n  const metadataChunk = png_chunk_text__WEBPACK_IMPORTED_MODULE_1__.encode(_constants__WEBPACK_IMPORTED_MODULE_4__.MIME_TYPES.excalidraw, JSON.stringify(yield (0,_encode__WEBPACK_IMPORTED_MODULE_3__.encode)({\n    text: metadata,\n    compress: true\n  }))); // insert metadata before last chunk (iEND)\n\n  chunks.splice(-1, 0, metadataChunk);\n  return new Blob([png_chunks_encode__WEBPACK_IMPORTED_MODULE_2___default()(chunks)], {\n    type: _constants__WEBPACK_IMPORTED_MODULE_4__.MIME_TYPES.png\n  });\n});\nconst decodePngMetadata = blob => __awaiter(void 0, void 0, void 0, function* () {\n  const metadata = yield getTEXtChunk(blob);\n\n  if ((metadata === null || metadata === void 0 ? void 0 : metadata.keyword) === _constants__WEBPACK_IMPORTED_MODULE_4__.MIME_TYPES.excalidraw) {\n    try {\n      const encodedData = JSON.parse(metadata.text);\n\n      if (!("encoded" in encodedData)) {\n        // legacy, un-encoded scene JSON\n        if ("type" in encodedData && encodedData.type === _constants__WEBPACK_IMPORTED_MODULE_4__.EXPORT_DATA_TYPES.excalidraw) {\n          return metadata.text;\n        }\n\n        throw new Error("FAILED");\n      }\n\n      return yield (0,_encode__WEBPACK_IMPORTED_MODULE_3__.decode)(encodedData);\n    } catch (error) {\n      console.error(error);\n      throw new Error("FAILED");\n    }\n  }\n\n  throw new Error("INVALID");\n}); // -----------------------------------------------------------------------------\n// SVG\n// -----------------------------------------------------------------------------\n\nconst encodeSvgMetadata = ({\n  text\n}) => __awaiter(void 0, void 0, void 0, function* () {\n  const base64 = yield (0,_encode__WEBPACK_IMPORTED_MODULE_3__.stringToBase64)(JSON.stringify(yield (0,_encode__WEBPACK_IMPORTED_MODULE_3__.encode)({\n    text\n  })), true\n  /* is already byte string */\n  );\n  let metadata = "";\n  metadata += `<!-- payload-type:${_constants__WEBPACK_IMPORTED_MODULE_4__.MIME_TYPES.excalidraw} -->`;\n  metadata += `<!-- payload-version:2 -->`;\n  metadata += "<!-- payload-start -->";\n  metadata += base64;\n  metadata += "<!-- payload-end -->";\n  return metadata;\n});\nconst decodeSvgMetadata = ({\n  svg\n}) => __awaiter(void 0, void 0, void 0, function* () {\n  if (svg.includes(`payload-type:${_constants__WEBPACK_IMPORTED_MODULE_4__.MIME_TYPES.excalidraw}`)) {\n    const match = svg.match(/<!-- payload-start -->\\s*(.+?)\\s*<!-- payload-end -->/);\n\n    if (!match) {\n      throw new Error("INVALID");\n    }\n\n    const versionMatch = svg.match(/<!-- payload-version:(\\d+) -->/);\n    const version = (versionMatch === null || versionMatch === void 0 ? void 0 : versionMatch[1]) || "1";\n    const isByteString = version !== "1";\n\n    try {\n      const json = yield (0,_encode__WEBPACK_IMPORTED_MODULE_3__.base64ToString)(match[1], isByteString);\n      const encodedData = JSON.parse(json);\n\n      if (!("encoded" in encodedData)) {\n        // legacy, un-encoded scene JSON\n        if ("type" in encodedData && encodedData.type === _constants__WEBPACK_IMPORTED_MODULE_4__.EXPORT_DATA_TYPES.excalidraw) {\n          return json;\n        }\n\n        throw new Error("FAILED");\n      }\n\n      return yield (0,_encode__WEBPACK_IMPORTED_MODULE_3__.decode)(encodedData);\n    } catch (error) {\n      console.error(error);\n      throw new Error("FAILED");\n    }\n  }\n\n  throw new Error("INVALID");\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 7872 characters]\n//# sourceURL=webpack-internal:///../../data/image.ts\n');
              }
            ),
            /***/
            "../../data/index.ts": (
              /*!***************************!*\
                !*** ../../data/index.ts ***!
                \***************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "exportCanvas": () => (/* binding */ exportCanvas),\n/* harmony export */   "loadFromBlob": () => (/* reexport safe */ _blob__WEBPACK_IMPORTED_MODULE_8__.loadFromBlob),\n/* harmony export */   "loadFromJSON": () => (/* reexport safe */ _json__WEBPACK_IMPORTED_MODULE_10__.loadFromJSON),\n/* harmony export */   "prepareElementsForExport": () => (/* binding */ prepareElementsForExport),\n/* harmony export */   "saveAsJSON": () => (/* reexport safe */ _json__WEBPACK_IMPORTED_MODULE_10__.saveAsJSON)\n/* harmony export */ });\n/* harmony import */ var _clipboard__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../clipboard */ "../../clipboard.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _packages_withinBounds__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../packages/withinBounds */ "../withinBounds.ts");\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../scene */ "../../scene/index.ts");\n/* harmony import */ var _scene_export__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../scene/export */ "../../scene/export.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _blob__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./blob */ "../../data/blob.ts");\n/* harmony import */ var _filesystem__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./filesystem */ "../../data/filesystem.ts");\n/* harmony import */ var _json__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./json */ "../../data/json.ts");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator["throw"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst prepareElementsForExport = (elements, {\n  selectedElementIds\n}, exportSelectionOnly) => {\n  elements = (0,_element__WEBPACK_IMPORTED_MODULE_2__.getNonDeletedElements)(elements);\n  const isExportingSelection = exportSelectionOnly && (0,_scene__WEBPACK_IMPORTED_MODULE_5__.isSomeElementSelected)(elements, {\n    selectedElementIds\n  });\n  let exportingFrame = null;\n  let exportedElements = isExportingSelection ? (0,_scene__WEBPACK_IMPORTED_MODULE_5__.getSelectedElements)(elements, {\n    selectedElementIds\n  }, {\n    includeBoundTextElement: true\n  }) : elements;\n\n  if (isExportingSelection) {\n    if (exportedElements.length === 1 && (0,_element__WEBPACK_IMPORTED_MODULE_2__.isFrameElement)(exportedElements[0])) {\n      exportingFrame = exportedElements[0];\n      exportedElements = (0,_packages_withinBounds__WEBPACK_IMPORTED_MODULE_4__.elementsOverlappingBBox)({\n        elements,\n        bounds: exportingFrame,\n        type: "overlap"\n      });\n    } else if (exportedElements.length > 1) {\n      exportedElements = (0,_scene__WEBPACK_IMPORTED_MODULE_5__.getSelectedElements)(elements, {\n        selectedElementIds\n      }, {\n        includeBoundTextElement: true,\n        includeElementsInFrames: true\n      });\n    }\n  }\n\n  return {\n    exportingFrame,\n    exportedElements: (0,_utils__WEBPACK_IMPORTED_MODULE_7__.cloneJSON)(exportedElements)\n  };\n};\nconst exportCanvas = (type, elements, appState, files, {\n  exportBackground,\n  exportPadding = _constants__WEBPACK_IMPORTED_MODULE_1__.DEFAULT_EXPORT_PADDING,\n  viewBackgroundColor,\n  name,\n  fileHandle = null,\n  exportingFrame = null\n}) => __awaiter(void 0, void 0, void 0, function* () {\n  if (elements.length === 0) {\n    throw new Error((0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("alerts.cannotExportEmptyCanvas"));\n  }\n\n  if (type === "svg" || type === "clipboard-svg") {\n    const tempSvg = yield (0,_scene_export__WEBPACK_IMPORTED_MODULE_6__.exportToSvg)(elements, {\n      exportBackground,\n      exportWithDarkMode: appState.exportWithDarkMode,\n      viewBackgroundColor,\n      exportPadding,\n      exportScale: appState.exportScale,\n      exportEmbedScene: appState.exportEmbedScene && type === "svg"\n    }, files, {\n      exportingFrame\n    });\n\n    if (type === "svg") {\n      return yield (0,_filesystem__WEBPACK_IMPORTED_MODULE_9__.fileSave)(new Blob([tempSvg.outerHTML], {\n        type: _constants__WEBPACK_IMPORTED_MODULE_1__.MIME_TYPES.svg\n      }), {\n        description: "Export to SVG",\n        name,\n        extension: appState.exportEmbedScene ? "excalidraw.svg" : "svg",\n        fileHandle\n      });\n    } else if (type === "clipboard-svg") {\n      yield (0,_clipboard__WEBPACK_IMPORTED_MODULE_0__.copyTextToSystemClipboard)(tempSvg.outerHTML);\n      return;\n    }\n  }\n\n  const tempCanvas = (0,_scene_export__WEBPACK_IMPORTED_MODULE_6__.exportToCanvas)(elements, appState, files, {\n    exportBackground,\n    viewBackgroundColor,\n    exportPadding,\n    exportingFrame\n  });\n\n  if (type === "png") {\n    let blob = yield (0,_blob__WEBPACK_IMPORTED_MODULE_8__.canvasToBlob)(tempCanvas);\n\n    if (appState.exportEmbedScene) {\n      blob = yield (yield Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ./image */ "../../data/image.ts"))).encodePngMetadata({\n        blob,\n        metadata: (0,_json__WEBPACK_IMPORTED_MODULE_10__.serializeAsJSON)(elements, appState, files, "local")\n      });\n    }\n\n    return yield (0,_filesystem__WEBPACK_IMPORTED_MODULE_9__.fileSave)(blob, {\n      description: "Export to PNG",\n      name,\n      // FIXME reintroduce `excalidraw.png` when most people upgrade away\n      // from 111.0.5563.64 (arm64), see #6349\n      extension:\n      /* appState.exportEmbedScene ? "excalidraw.png" : */\n      "png",\n      fileHandle\n    });\n  } else if (type === "clipboard") {\n    try {\n      const blob = (0,_blob__WEBPACK_IMPORTED_MODULE_8__.canvasToBlob)(tempCanvas);\n      yield (0,_clipboard__WEBPACK_IMPORTED_MODULE_0__.copyBlobToClipboardAsPng)(blob);\n    } catch (error) {\n      console.warn(error);\n\n      if (error.name === "CANVAS_POSSIBLY_TOO_BIG") {\n        throw error;\n      } // TypeError *probably* suggests ClipboardItem not defined, which\n      // people on Firefox can enable through a flag, so let\'s tell them.\n\n\n      if (_constants__WEBPACK_IMPORTED_MODULE_1__.isFirefox && error.name === "TypeError") {\n        throw new Error(`${(0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("alerts.couldNotCopyToClipboard")}\\n\\n${(0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("hints.firefox_clipboard_write")}`);\n      } else {\n        throw new Error((0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("alerts.couldNotCopyToClipboard"));\n      }\n    }\n  } else {\n    // shouldn\'t happen\n    throw new Error("Unsupported export type");\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 9292 characters]\n//# sourceURL=webpack-internal:///../../data/index.ts\n');
              }
            ),
            /***/
            "../../data/json.ts": (
              /*!**************************!*\
                !*** ../../data/json.ts ***!
                \**************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "isValidExcalidrawData": () => (/* binding */ isValidExcalidrawData),\n/* harmony export */   "isValidLibrary": () => (/* binding */ isValidLibrary),\n/* harmony export */   "loadFromJSON": () => (/* binding */ loadFromJSON),\n/* harmony export */   "saveAsJSON": () => (/* binding */ saveAsJSON),\n/* harmony export */   "saveLibraryAsJSON": () => (/* binding */ saveLibraryAsJSON),\n/* harmony export */   "serializeAsJSON": () => (/* binding */ serializeAsJSON),\n/* harmony export */   "serializeLibraryAsJSON": () => (/* binding */ serializeLibraryAsJSON)\n/* harmony export */ });\n/* harmony import */ var _filesystem__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./filesystem */ "../../data/filesystem.ts");\n/* harmony import */ var _appState__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../appState */ "../../appState.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _blob__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./blob */ "../../data/blob.ts");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator["throw"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n\n\n\n/**\n * Strips out files which are only referenced by deleted elements\n */\n\nconst filterOutDeletedFiles = (elements, files) => {\n  const nextFiles = {};\n\n  for (const element of elements) {\n    if (!element.isDeleted && "fileId" in element && element.fileId && files[element.fileId]) {\n      nextFiles[element.fileId] = files[element.fileId];\n    }\n  }\n\n  return nextFiles;\n};\n\nconst serializeAsJSON = (elements, appState, files, type) => {\n  const data = {\n    type: _constants__WEBPACK_IMPORTED_MODULE_2__.EXPORT_DATA_TYPES.excalidraw,\n    version: _constants__WEBPACK_IMPORTED_MODULE_2__.VERSIONS.excalidraw,\n    source: _constants__WEBPACK_IMPORTED_MODULE_2__.EXPORT_SOURCE,\n    elements: type === "local" ? (0,_element__WEBPACK_IMPORTED_MODULE_3__.clearElementsForExport)(elements) : (0,_element__WEBPACK_IMPORTED_MODULE_3__.clearElementsForDatabase)(elements),\n    appState: type === "local" ? (0,_appState__WEBPACK_IMPORTED_MODULE_1__.cleanAppStateForExport)(appState) : (0,_appState__WEBPACK_IMPORTED_MODULE_1__.clearAppStateForDatabase)(appState),\n    files: type === "local" ? filterOutDeletedFiles(elements, files) : // will be stripped from JSON\n    undefined\n  };\n  return JSON.stringify(data, null, 2);\n};\nconst saveAsJSON = (elements, appState, files) => __awaiter(void 0, void 0, void 0, function* () {\n  const serialized = serializeAsJSON(elements, appState, files, "local");\n  const blob = new Blob([serialized], {\n    type: _constants__WEBPACK_IMPORTED_MODULE_2__.MIME_TYPES.excalidraw\n  });\n  const fileHandle = yield (0,_filesystem__WEBPACK_IMPORTED_MODULE_0__.fileSave)(blob, {\n    name: appState.name,\n    extension: "excalidraw",\n    description: "Excalidraw file",\n    fileHandle: (0,_blob__WEBPACK_IMPORTED_MODULE_4__.isImageFileHandle)(appState.fileHandle) ? null : appState.fileHandle\n  });\n  return {\n    fileHandle\n  };\n});\nconst loadFromJSON = (localAppState, localElements) => __awaiter(void 0, void 0, void 0, function* () {\n  const file = yield (0,_filesystem__WEBPACK_IMPORTED_MODULE_0__.fileOpen)({\n    description: "Excalidraw files" // ToDo: Be over-permissive until https://bugs.webkit.org/show_bug.cgi?id=34442\n    // gets resolved. Else, iOS users cannot open `.excalidraw` files.\n    // extensions: ["json", "excalidraw", "png", "svg"],\n\n  });\n  return (0,_blob__WEBPACK_IMPORTED_MODULE_4__.loadFromBlob)(yield (0,_blob__WEBPACK_IMPORTED_MODULE_4__.normalizeFile)(file), localAppState, localElements, file.handle);\n});\nconst isValidExcalidrawData = data => {\n  return (data === null || data === void 0 ? void 0 : data.type) === _constants__WEBPACK_IMPORTED_MODULE_2__.EXPORT_DATA_TYPES.excalidraw && (!data.elements || Array.isArray(data.elements) && (!data.appState || typeof data.appState === "object"));\n};\nconst isValidLibrary = json => {\n  return typeof json === "object" && json && json.type === _constants__WEBPACK_IMPORTED_MODULE_2__.EXPORT_DATA_TYPES.excalidrawLibrary && (json.version === 1 || json.version === 2);\n};\nconst serializeLibraryAsJSON = libraryItems => {\n  const data = {\n    type: _constants__WEBPACK_IMPORTED_MODULE_2__.EXPORT_DATA_TYPES.excalidrawLibrary,\n    version: _constants__WEBPACK_IMPORTED_MODULE_2__.VERSIONS.excalidrawLibrary,\n    source: _constants__WEBPACK_IMPORTED_MODULE_2__.EXPORT_SOURCE,\n    libraryItems\n  };\n  return JSON.stringify(data, null, 2);\n};\nconst saveLibraryAsJSON = libraryItems => __awaiter(void 0, void 0, void 0, function* () {\n  const serialized = serializeLibraryAsJSON(libraryItems);\n  yield (0,_filesystem__WEBPACK_IMPORTED_MODULE_0__.fileSave)(new Blob([serialized], {\n    type: _constants__WEBPACK_IMPORTED_MODULE_2__.MIME_TYPES.excalidrawlib\n  }), {\n    name: "library",\n    extension: "excalidrawlib",\n    description: "Excalidraw library file"\n  });\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 7108 characters]\n//# sourceURL=webpack-internal:///../../data/json.ts\n');
              }
            ),
            /***/
            "../../data/library.ts": (
              /*!*****************************!*\
                !*** ../../data/library.ts ***!
                \*****************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */   "distributeLibraryItemsOnSquareGrid": () => (/* binding */ distributeLibraryItemsOnSquareGrid),\n/* harmony export */   "libraryItemsAtom": () => (/* binding */ libraryItemsAtom),\n/* harmony export */   "mergeLibraryItems": () => (/* binding */ mergeLibraryItems),\n/* harmony export */   "parseLibraryTokensFromUrl": () => (/* binding */ parseLibraryTokensFromUrl),\n/* harmony export */   "useHandleLibrary": () => (/* binding */ useHandleLibrary)\n/* harmony export */ });\n/* harmony import */ var _blob__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./blob */ "../../data/blob.ts");\n/* harmony import */ var _restore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./restore */ "../../data/restore.ts");\n/* harmony import */ var jotai__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! jotai */ "../../../node_modules/jotai/esm/index.mjs");\n/* harmony import */ var _jotai__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../jotai */ "../../jotai.ts");\n/* harmony import */ var _element_bounds__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../element/bounds */ "../../element/bounds.ts");\n/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../errors */ "../../errors.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _hooks_useLibraryItemSvg__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../hooks/useLibraryItemSvg */ "../../hooks/useLibraryItemSvg.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator["throw"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n\n\n\n\n\n\n\n\n\nconst libraryItemsAtom = (0,jotai__WEBPACK_IMPORTED_MODULE_10__.atom)({\n  status: "loaded",\n  isInitialized: true,\n  libraryItems: []\n});\n\nconst cloneLibraryItems = libraryItems => (0,_utils__WEBPACK_IMPORTED_MODULE_9__.cloneJSON)(libraryItems);\n/**\n * checks if library item does not exist already in current library\n */\n\n\nconst isUniqueItem = (existingLibraryItems, targetLibraryItem) => {\n  return !existingLibraryItems.find(libraryItem => {\n    if (libraryItem.elements.length !== targetLibraryItem.elements.length) {\n      return false;\n    } // detect z-index difference by checking the excalidraw elements\n    // are in order\n\n\n    return libraryItem.elements.every((libItemExcalidrawItem, idx) => {\n      return libItemExcalidrawItem.id === targetLibraryItem.elements[idx].id && libItemExcalidrawItem.versionNonce === targetLibraryItem.elements[idx].versionNonce;\n    });\n  });\n};\n/** Merges otherItems into localItems. Unique items in otherItems array are\n    sorted first. */\n\n\nconst mergeLibraryItems = (localItems, otherItems) => {\n  const newItems = [];\n\n  for (const item of otherItems) {\n    if (isUniqueItem(localItems, item)) {\n      newItems.push(item);\n    }\n  }\n\n  return [...newItems, ...localItems];\n};\n\nclass Library {\n  constructor(app) {\n    /** latest libraryItems */\n    this.lastLibraryItems = [];\n    /** indicates whether library is initialized with library items (has gone\n     * though at least one update) */\n\n    this.isInitialized = false;\n    this.updateQueue = [];\n\n    this.getLastUpdateTask = () => {\n      return this.updateQueue[this.updateQueue.length - 1];\n    };\n\n    this.notifyListeners = () => {\n      var _a, _b;\n\n      if (this.updateQueue.length > 0) {\n        _jotai__WEBPACK_IMPORTED_MODULE_2__.jotaiStore.set(libraryItemsAtom, {\n          status: "loading",\n          libraryItems: this.lastLibraryItems,\n          isInitialized: this.isInitialized\n        });\n      } else {\n        this.isInitialized = true;\n        _jotai__WEBPACK_IMPORTED_MODULE_2__.jotaiStore.set(libraryItemsAtom, {\n          status: "loaded",\n          libraryItems: this.lastLibraryItems,\n          isInitialized: this.isInitialized\n        });\n\n        try {\n          (_b = (_a = this.app.props).onLibraryChange) === null || _b === void 0 ? void 0 : _b.call(_a, cloneLibraryItems(this.lastLibraryItems));\n        } catch (error) {\n          console.error(error);\n        }\n      }\n    };\n    /** call on excalidraw instance unmount */\n\n\n    this.destroy = () => {\n      this.isInitialized = false;\n      this.updateQueue = [];\n      this.lastLibraryItems = [];\n      _jotai__WEBPACK_IMPORTED_MODULE_2__.jotaiStore.set(_hooks_useLibraryItemSvg__WEBPACK_IMPORTED_MODULE_8__.libraryItemSvgsCache, new Map()); // TODO uncomment after/if we make jotai store scoped to each excal instance\n      // jotaiStore.set(libraryItemsAtom, {\n      //   status: "loading",\n      //   isInitialized: false,\n      //   libraryItems: [],\n      // });\n    };\n\n    this.resetLibrary = () => {\n      return this.setLibrary([]);\n    };\n    /**\n     * @returns latest cloned libraryItems. Awaits all in-progress updates first.\n     */\n\n\n    this.getLatestLibrary = () => {\n      return new Promise(resolve => __awaiter(this, void 0, void 0, function* () {\n        try {\n          const libraryItems = yield this.getLastUpdateTask() || this.lastLibraryItems;\n\n          if (this.updateQueue.length > 0) {\n            resolve(this.getLatestLibrary());\n          } else {\n            resolve(cloneLibraryItems(libraryItems));\n          }\n        } catch (error) {\n          return resolve(this.lastLibraryItems);\n        }\n      }));\n    }; // NOTE this is a high-level public API (exposed on ExcalidrawAPI) with\n    // a slight overhead (always restoring library items). For internal use\n    // where merging isn\'t needed, use `library.setLibrary()` directly.\n\n\n    this.updateLibrary = ({\n      libraryItems,\n      prompt = false,\n      merge = false,\n      openLibraryMenu = false,\n      defaultStatus = "unpublished"\n    }) => __awaiter(this, void 0, void 0, function* () {\n      if (openLibraryMenu) {\n        this.app.setState({\n          openSidebar: {\n            name: _constants__WEBPACK_IMPORTED_MODULE_7__.DEFAULT_SIDEBAR.name,\n            tab: _constants__WEBPACK_IMPORTED_MODULE_7__.LIBRARY_SIDEBAR_TAB\n          }\n        });\n      }\n\n      return this.setLibrary(() => {\n        return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {\n          try {\n            const source = yield typeof libraryItems === "function" && !(libraryItems instanceof Blob) ? libraryItems(this.lastLibraryItems) : libraryItems;\n            let nextItems;\n\n            if (source instanceof Blob) {\n              nextItems = yield (0,_blob__WEBPACK_IMPORTED_MODULE_0__.loadLibraryFromBlob)(source, defaultStatus);\n            } else {\n              nextItems = (0,_restore__WEBPACK_IMPORTED_MODULE_1__.restoreLibraryItems)(source, defaultStatus);\n            }\n\n            if (!prompt || window.confirm((0,_i18n__WEBPACK_IMPORTED_MODULE_5__.t)("alerts.confirmAddLibrary", {\n              numShapes: nextItems.length\n            }))) {\n              if (prompt) {\n                // focus container if we\'ve prompted. We focus conditionally\n                // lest `props.autoFocus` is disabled (in which case we should\n                // focus only on user action such as prompt confirm)\n                this.app.focusContainer();\n              }\n\n              if (merge) {\n                resolve(mergeLibraryItems(this.lastLibraryItems, nextItems));\n              } else {\n                resolve(nextItems);\n              }\n            } else {\n              reject(new _errors__WEBPACK_IMPORTED_MODULE_4__.AbortError());\n            }\n          } catch (error) {\n            reject(error);\n          }\n        }));\n      });\n    });\n\n    this.setLibrary = (\n    /**\n     * LibraryItems that will replace current items. Can be a function which\n     * will be invoked after all previous tasks are resolved\n     * (this is the prefered way to update the library to avoid race conditions,\n     * but you\'ll want to manually merge the library items in the callback\n     *  - which is what we\'re doing in Library.importLibrary()).\n     *\n     * If supplied promise is rejected with AbortError, we swallow it and\n     * do not update the library.\n     */\n    libraryItems) => {\n      const task = new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {\n        try {\n          yield this.getLastUpdateTask();\n\n          if (typeof libraryItems === "function") {\n            libraryItems = libraryItems(this.lastLibraryItems);\n          }\n\n          this.lastLibraryItems = cloneLibraryItems(yield libraryItems);\n          resolve(this.lastLibraryItems);\n        } catch (error) {\n          reject(error);\n        }\n      })).catch(error => {\n        if (error.name === "AbortError") {\n          console.warn("Library update aborted by user");\n          return this.lastLibraryItems;\n        }\n\n        throw error;\n      }).finally(() => {\n        this.updateQueue = this.updateQueue.filter(_task => _task !== task);\n        this.notifyListeners();\n      });\n      this.updateQueue.push(task);\n      this.notifyListeners();\n      return task;\n    };\n\n    this.app = app;\n  }\n\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Library);\nconst distributeLibraryItemsOnSquareGrid = libraryItems => {\n  const PADDING = 50;\n  const ITEMS_PER_ROW = Math.ceil(Math.sqrt(libraryItems.length));\n  const resElements = [];\n\n  const getMaxHeightPerRow = row => {\n    const maxHeight = libraryItems.slice(row * ITEMS_PER_ROW, row * ITEMS_PER_ROW + ITEMS_PER_ROW).reduce((acc, item) => {\n      const {\n        height\n      } = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_3__.getCommonBoundingBox)(item.elements);\n      return Math.max(acc, height);\n    }, 0);\n    return maxHeight;\n  };\n\n  const getMaxWidthPerCol = targetCol => {\n    let index = 0;\n    let currCol = 0;\n    let maxWidth = 0;\n\n    for (const item of libraryItems) {\n      if (index % ITEMS_PER_ROW === 0) {\n        currCol = 0;\n      }\n\n      if (currCol === targetCol) {\n        const {\n          width\n        } = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_3__.getCommonBoundingBox)(item.elements);\n        maxWidth = Math.max(maxWidth, width);\n      }\n\n      index++;\n      currCol++;\n    }\n\n    return maxWidth;\n  };\n\n  let colOffsetX = 0;\n  let rowOffsetY = 0;\n  let maxHeightCurrRow = 0;\n  let maxWidthCurrCol = 0;\n  let index = 0;\n  let col = 0;\n  let row = 0;\n\n  for (const item of libraryItems) {\n    if (index && index % ITEMS_PER_ROW === 0) {\n      rowOffsetY += maxHeightCurrRow + PADDING;\n      colOffsetX = 0;\n      col = 0;\n      row++;\n    }\n\n    if (col === 0) {\n      maxHeightCurrRow = getMaxHeightPerRow(row);\n    }\n\n    maxWidthCurrCol = getMaxWidthPerCol(col);\n    const {\n      minX,\n      minY,\n      width,\n      height\n    } = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_3__.getCommonBoundingBox)(item.elements);\n    const offsetCenterX = (maxWidthCurrCol - width) / 2;\n    const offsetCenterY = (maxHeightCurrRow - height) / 2;\n    resElements.push( // eslint-disable-next-line no-loop-func\n    ...item.elements.map(element => Object.assign(Object.assign({}, element), {\n      x: element.x + // offset for column\n      colOffsetX + // offset to center in given square grid\n      offsetCenterX - // subtract minX so that given item starts at 0 coord\n      minX,\n      y: element.y + // offset for row\n      rowOffsetY + // offset to center in given square grid\n      offsetCenterY - // subtract minY so that given item starts at 0 coord\n      minY\n    })));\n    colOffsetX += maxWidthCurrCol + PADDING;\n    index++;\n    col++;\n  }\n\n  return resElements;\n};\nconst parseLibraryTokensFromUrl = () => {\n  const libraryUrl = // current\n  new URLSearchParams(window.location.hash.slice(1)).get(_constants__WEBPACK_IMPORTED_MODULE_7__.URL_HASH_KEYS.addLibrary) || // legacy, kept for compat reasons\n  new URLSearchParams(window.location.search).get(_constants__WEBPACK_IMPORTED_MODULE_7__.URL_QUERY_KEYS.addLibrary);\n  const idToken = libraryUrl ? new URLSearchParams(window.location.hash.slice(1)).get("token") : null;\n  return libraryUrl ? {\n    libraryUrl,\n    idToken\n  } : null;\n};\nconst useHandleLibrary = ({\n  excalidrawAPI,\n  getInitialLibraryItems\n}) => {\n  const getInitialLibraryRef = (0,react__WEBPACK_IMPORTED_MODULE_6__.useRef)(getInitialLibraryItems);\n  (0,react__WEBPACK_IMPORTED_MODULE_6__.useEffect)(() => {\n    if (!excalidrawAPI) {\n      return;\n    }\n\n    const importLibraryFromURL = ({\n      libraryUrl,\n      idToken\n    }) => __awaiter(void 0, void 0, void 0, function* () {\n      const libraryPromise = new Promise((resolve, reject) => __awaiter(void 0, void 0, void 0, function* () {\n        try {\n          const request = yield fetch(decodeURIComponent(libraryUrl));\n          const blob = yield request.blob();\n          resolve(blob);\n        } catch (error) {\n          reject(error);\n        }\n      }));\n      const shouldPrompt = idToken !== excalidrawAPI.id; // wait for the tab to be focused before continuing in case we\'ll prompt\n      // for confirmation\n\n      yield shouldPrompt && document.hidden ? new Promise(resolve => {\n        window.addEventListener("focus", () => resolve(), {\n          once: true\n        });\n      }) : null;\n\n      try {\n        yield excalidrawAPI.updateLibrary({\n          libraryItems: libraryPromise,\n          prompt: shouldPrompt,\n          merge: true,\n          defaultStatus: "published",\n          openLibraryMenu: true\n        });\n      } catch (error) {\n        throw error;\n      } finally {\n        if (window.location.hash.includes(_constants__WEBPACK_IMPORTED_MODULE_7__.URL_HASH_KEYS.addLibrary)) {\n          const hash = new URLSearchParams(window.location.hash.slice(1));\n          hash.delete(_constants__WEBPACK_IMPORTED_MODULE_7__.URL_HASH_KEYS.addLibrary);\n          window.history.replaceState({}, _constants__WEBPACK_IMPORTED_MODULE_7__.APP_NAME, `#${hash.toString()}`);\n        } else if (window.location.search.includes(_constants__WEBPACK_IMPORTED_MODULE_7__.URL_QUERY_KEYS.addLibrary)) {\n          const query = new URLSearchParams(window.location.search);\n          query.delete(_constants__WEBPACK_IMPORTED_MODULE_7__.URL_QUERY_KEYS.addLibrary);\n          window.history.replaceState({}, _constants__WEBPACK_IMPORTED_MODULE_7__.APP_NAME, `?${query.toString()}`);\n        }\n      }\n    });\n\n    const onHashChange = event => {\n      event.preventDefault();\n      const libraryUrlTokens = parseLibraryTokensFromUrl();\n\n      if (libraryUrlTokens) {\n        event.stopImmediatePropagation(); // If hash changed and it contains library url, import it and replace\n        // the url to its previous state (important in case of collaboration\n        // and similar).\n        // Using history API won\'t trigger another hashchange.\n\n        window.history.replaceState({}, "", event.oldURL);\n        importLibraryFromURL(libraryUrlTokens);\n      }\n    }; // -------------------------------------------------------------------------\n    // ------ init load --------------------------------------------------------\n\n\n    if (getInitialLibraryRef.current) {\n      excalidrawAPI.updateLibrary({\n        libraryItems: getInitialLibraryRef.current()\n      });\n    }\n\n    const libraryUrlTokens = parseLibraryTokensFromUrl();\n\n    if (libraryUrlTokens) {\n      importLibraryFromURL(libraryUrlTokens);\n    } // --------------------------------------------------------- init load -----\n\n\n    window.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_7__.EVENT.HASHCHANGE, onHashChange);\n    return () => {\n      window.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_7__.EVENT.HASHCHANGE, onHashChange);\n    };\n  }, [excalidrawAPI]);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 23364 characters]\n//# sourceURL=webpack-internal:///../../data/library.ts\n');
              }
            ),
            /***/
            "../../data/resave.ts": (
              /*!****************************!*\
                !*** ../../data/resave.ts ***!
                \****************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "resaveAsImageWithScene": () => (/* binding */ resaveAsImageWithScene)\n/* harmony export */ });\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! . */ "../../data/index.ts");\n/* harmony import */ var _blob__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./blob */ "../../data/blob.ts");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator["throw"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\nconst resaveAsImageWithScene = (elements, appState, files) => __awaiter(void 0, void 0, void 0, function* () {\n  const {\n    exportBackground,\n    viewBackgroundColor,\n    name,\n    fileHandle\n  } = appState;\n  const fileHandleType = (0,_blob__WEBPACK_IMPORTED_MODULE_1__.getFileHandleType)(fileHandle);\n\n  if (!fileHandle || !(0,_blob__WEBPACK_IMPORTED_MODULE_1__.isImageFileHandleType)(fileHandleType)) {\n    throw new Error("fileHandle should exist and should be of type svg or png when resaving");\n  }\n\n  appState = Object.assign(Object.assign({}, appState), {\n    exportEmbedScene: true\n  });\n  const {\n    exportedElements,\n    exportingFrame\n  } = (0,___WEBPACK_IMPORTED_MODULE_0__.prepareElementsForExport)(elements, appState, false);\n  yield (0,___WEBPACK_IMPORTED_MODULE_0__.exportCanvas)(fileHandleType, exportedElements, appState, files, {\n    exportBackground,\n    viewBackgroundColor,\n    name,\n    fileHandle,\n    exportingFrame\n  });\n  return {\n    fileHandle\n  };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZGF0YS9yZXNhdmUudHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsZ0JBQWdCLFNBQUksSUFBSSxTQUFJO0FBQzVCO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7O0FBRTJEO0FBQ087QUFDM0Q7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLHlCQUF5Qix3REFBaUI7O0FBRTFDLHNCQUFzQiw0REFBcUI7QUFDM0M7QUFDQTs7QUFFQSwyQ0FBMkM7QUFDM0M7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsSUFBSSxFQUFFLDJEQUF3QjtBQUM5QixRQUFRLCtDQUFZO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9kYXRhL3Jlc2F2ZS50cz82OTRiIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBfX2F3YWl0ZXIgPSB0aGlzICYmIHRoaXMuX19hd2FpdGVyIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkge1xuICAgICAgcmVzb2x2ZSh2YWx1ZSk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7XG4gICAgICB0cnkge1xuICAgICAgICBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJlamVjdChlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkge1xuICAgICAgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7XG4gICAgfVxuXG4gICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICB9KTtcbn07XG5cbmltcG9ydCB7IGV4cG9ydENhbnZhcywgcHJlcGFyZUVsZW1lbnRzRm9yRXhwb3J0IH0gZnJvbSBcIi5cIjtcbmltcG9ydCB7IGdldEZpbGVIYW5kbGVUeXBlLCBpc0ltYWdlRmlsZUhhbmRsZVR5cGUgfSBmcm9tIFwiLi9ibG9iXCI7XG5leHBvcnQgY29uc3QgcmVzYXZlQXNJbWFnZVdpdGhTY2VuZSA9IChlbGVtZW50cywgYXBwU3RhdGUsIGZpbGVzKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgY29uc3Qge1xuICAgIGV4cG9ydEJhY2tncm91bmQsXG4gICAgdmlld0JhY2tncm91bmRDb2xvcixcbiAgICBuYW1lLFxuICAgIGZpbGVIYW5kbGVcbiAgfSA9IGFwcFN0YXRlO1xuICBjb25zdCBmaWxlSGFuZGxlVHlwZSA9IGdldEZpbGVIYW5kbGVUeXBlKGZpbGVIYW5kbGUpO1xuXG4gIGlmICghZmlsZUhhbmRsZSB8fCAhaXNJbWFnZUZpbGVIYW5kbGVUeXBlKGZpbGVIYW5kbGVUeXBlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcImZpbGVIYW5kbGUgc2hvdWxkIGV4aXN0IGFuZCBzaG91bGQgYmUgb2YgdHlwZSBzdmcgb3IgcG5nIHdoZW4gcmVzYXZpbmdcIik7XG4gIH1cblxuICBhcHBTdGF0ZSA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgYXBwU3RhdGUpLCB7XG4gICAgZXhwb3J0RW1iZWRTY2VuZTogdHJ1ZVxuICB9KTtcbiAgY29uc3Qge1xuICAgIGV4cG9ydGVkRWxlbWVudHMsXG4gICAgZXhwb3J0aW5nRnJhbWVcbiAgfSA9IHByZXBhcmVFbGVtZW50c0ZvckV4cG9ydChlbGVtZW50cywgYXBwU3RhdGUsIGZhbHNlKTtcbiAgeWllbGQgZXhwb3J0Q2FudmFzKGZpbGVIYW5kbGVUeXBlLCBleHBvcnRlZEVsZW1lbnRzLCBhcHBTdGF0ZSwgZmlsZXMsIHtcbiAgICBleHBvcnRCYWNrZ3JvdW5kLFxuICAgIHZpZXdCYWNrZ3JvdW5kQ29sb3IsXG4gICAgbmFtZSxcbiAgICBmaWxlSGFuZGxlLFxuICAgIGV4cG9ydGluZ0ZyYW1lXG4gIH0pO1xuICByZXR1cm4ge1xuICAgIGZpbGVIYW5kbGVcbiAgfTtcbn0pOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../data/resave.ts\n');
              }
            ),
            /***/
            "../../data/restore.ts": (
              /*!*****************************!*\
                !*** ../../data/restore.ts ***!
                \*****************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "AllowedExcalidrawActiveTools": () => (/* binding */ AllowedExcalidrawActiveTools),
/* harmony export */   "restore": () => (/* binding */ restore),
/* harmony export */   "restoreAppState": () => (/* binding */ restoreAppState),
/* harmony export */   "restoreElements": () => (/* binding */ restoreElements),
/* harmony export */   "restoreLibraryItems": () => (/* binding */ restoreLibraryItems)
/* harmony export */ });
/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../element */ "../../element/index.ts");
/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../element/typeChecks */ "../../element/typeChecks.ts");
/* harmony import */ var _random__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../random */ "../../random.ts");
/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../constants */ "../../constants.ts");
/* harmony import */ var _appState__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../appState */ "../../appState.ts");
/* harmony import */ var _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../element/linearElementEditor */ "../../element/linearElementEditor.ts");
/* harmony import */ var _element_mutateElement__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../element/mutateElement */ "../../element/mutateElement.ts");
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils */ "../../utils.ts");
/* harmony import */ var _element_textElement__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../element/textElement */ "../../element/textElement.ts");
/* harmony import */ var _url__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./url */ "../../data/url.ts");











const AllowedExcalidrawActiveTools = {
  selection: true,
  text: true,
  rectangle: true,
  diamond: true,
  ellipse: true,
  line: true,
  image: true,
  arrow: true,
  freedraw: true,
  eraser: false,
  custom: true,
  frame: true,
  embeddable: true,
  hand: true,
  laser: false
};

const getFontFamilyByName = fontFamilyName => {
  if (Object.keys(_constants__WEBPACK_IMPORTED_MODULE_3__.FONT_FAMILY).includes(fontFamilyName)) {
    return _constants__WEBPACK_IMPORTED_MODULE_3__.FONT_FAMILY[fontFamilyName];
  }

  return _constants__WEBPACK_IMPORTED_MODULE_3__.DEFAULT_FONT_FAMILY;
};

const repairBinding = binding => {
  if (!binding) {
    return null;
  }

  return Object.assign(Object.assign({}, binding), {
    focus: binding.focus || 0
  });
};

const restoreElementWithProperties = (element, extra) => {
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;

  const base = {
    type: extra.type || element.type,
    // all elements must have version > 0 so getSceneVersion() will pick up
    // newly added elements
    version: element.version || 1,
    versionNonce: (_a = element.versionNonce) !== null && _a !== void 0 ? _a : 0,
    isDeleted: (_b = element.isDeleted) !== null && _b !== void 0 ? _b : false,
    id: element.id || (0,_random__WEBPACK_IMPORTED_MODULE_2__.randomId)(),
    fillStyle: element.fillStyle || _constants__WEBPACK_IMPORTED_MODULE_3__.DEFAULT_ELEMENT_PROPS.fillStyle,
    strokeWidth: element.strokeWidth || _constants__WEBPACK_IMPORTED_MODULE_3__.DEFAULT_ELEMENT_PROPS.strokeWidth,
    strokeStyle: (_c = element.strokeStyle) !== null && _c !== void 0 ? _c : _constants__WEBPACK_IMPORTED_MODULE_3__.DEFAULT_ELEMENT_PROPS.strokeStyle,
    roughness: (_d = element.roughness) !== null && _d !== void 0 ? _d : _constants__WEBPACK_IMPORTED_MODULE_3__.DEFAULT_ELEMENT_PROPS.roughness,
    opacity: element.opacity == null ? _constants__WEBPACK_IMPORTED_MODULE_3__.DEFAULT_ELEMENT_PROPS.opacity : element.opacity,
    angle: element.angle || 0,
    x: (_f = (_e = extra.x) !== null && _e !== void 0 ? _e : element.x) !== null && _f !== void 0 ? _f : 0,
    y: (_h = (_g = extra.y) !== null && _g !== void 0 ? _g : element.y) !== null && _h !== void 0 ? _h : 0,
    strokeColor: element.strokeColor || _constants__WEBPACK_IMPORTED_MODULE_3__.DEFAULT_ELEMENT_PROPS.strokeColor,
    backgroundColor: element.backgroundColor || _constants__WEBPACK_IMPORTED_MODULE_3__.DEFAULT_ELEMENT_PROPS.backgroundColor,
    width: element.width || 0,
    height: element.height || 0,
    seed: (_j = element.seed) !== null && _j !== void 0 ? _j : 1,
    groupIds: (_k = element.groupIds) !== null && _k !== void 0 ? _k : [],
    frameId: (_l = element.frameId) !== null && _l !== void 0 ? _l : null,
    roundness: element.roundness ? element.roundness : element.strokeSharpness === "round" ? {
      // for old elements that would now use adaptive radius algo,
      // use legacy algo instead
      type: (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isUsingAdaptiveRadius)(element.type) ? _constants__WEBPACK_IMPORTED_MODULE_3__.ROUNDNESS.LEGACY : _constants__WEBPACK_IMPORTED_MODULE_3__.ROUNDNESS.PROPORTIONAL_RADIUS
    } : null,
    boundElements: element.boundElementIds ? element.boundElementIds.map(id => ({
      type: "arrow",
      id
    })) : (_m = element.boundElements) !== null && _m !== void 0 ? _m : [],
    updated: (_o = element.updated) !== null && _o !== void 0 ? _o : (0,_utils__WEBPACK_IMPORTED_MODULE_7__.getUpdatedTimestamp)(),
    link: element.link ? (0,_url__WEBPACK_IMPORTED_MODULE_9__.normalizeLink)(element.link) : null,
    locked: (_p = element.locked) !== null && _p !== void 0 ? _p : false
  };

  if ("customData" in element) {
    base.customData = element.customData;
  }

  if (_constants__WEBPACK_IMPORTED_MODULE_3__.PRECEDING_ELEMENT_KEY in element) {
    base[_constants__WEBPACK_IMPORTED_MODULE_3__.PRECEDING_ELEMENT_KEY] = element[_constants__WEBPACK_IMPORTED_MODULE_3__.PRECEDING_ELEMENT_KEY];
  }

  return Object.assign(Object.assign(Object.assign({}, base), (0,_element__WEBPACK_IMPORTED_MODULE_0__.getNormalizedDimensions)(base)), extra);
};

const restoreElement = (element, refreshDimensions = false) => {
  var _a, _b;

  switch (element.type) {
    case "text":
      let fontSize = element.fontSize;
      let fontFamily = element.fontFamily;

      if ("font" in element) {
        const [fontPx, _fontFamily] = element.font.split(" ");
        fontSize = parseFloat(fontPx);
        fontFamily = getFontFamilyByName(_fontFamily);
      }

      const text = typeof element.text === "string" && element.text || ""; // line-height might not be specified either when creating elements
      // programmatically, or when importing old diagrams.
      // For the latter we want to detect the original line height which
      // will likely differ from our per-font fixed line height we now use,
      // to maintain backward compatibility.

      const lineHeight = element.lineHeight || (element.height ? // detect line-height from current element height and font-size
      (0,_element_textElement__WEBPACK_IMPORTED_MODULE_8__.detectLineHeight)(element) : // no element height likely means programmatic use, so default
      // to a fixed line height
      (0,_element_textElement__WEBPACK_IMPORTED_MODULE_8__.getDefaultLineHeight)(element.fontFamily));
      const baseline = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_8__.measureBaseline)(element.text, (0,_utils__WEBPACK_IMPORTED_MODULE_7__.getFontString)(element), lineHeight);
      element = restoreElementWithProperties(element, {
        fontSize,
        fontFamily,
        text,
        textAlign: element.textAlign || _constants__WEBPACK_IMPORTED_MODULE_3__.DEFAULT_TEXT_ALIGN,
        verticalAlign: element.verticalAlign || _constants__WEBPACK_IMPORTED_MODULE_3__.DEFAULT_VERTICAL_ALIGN,
        containerId: (_a = element.containerId) !== null && _a !== void 0 ? _a : null,
        originalText: element.originalText || text,
        lineHeight,
        baseline
      }); // if empty text, mark as deleted. We keep in array
      // for data integrity purposes (collab etc.)

      if (!text && !element.isDeleted) {
        element = Object.assign(Object.assign({}, element), {
          originalText: text,
          isDeleted: true
        });
        element = (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_6__.bumpVersion)(element);
      }

      if (refreshDimensions) {
        element = Object.assign(Object.assign({}, element), (0,_element__WEBPACK_IMPORTED_MODULE_0__.refreshTextDimensions)(element));
      }

      return element;

    case "freedraw":
      {
        return restoreElementWithProperties(element, {
          points: element.points,
          lastCommittedPoint: null,
          simulatePressure: element.simulatePressure,
          pressures: element.pressures
        });
      }

    case "image":
      return restoreElementWithProperties(element, {
        status: element.status || "pending",
        fileId: element.fileId,
        scale: element.scale || [1, 1]
      });

    case "line": // @ts-ignore LEGACY type
    // eslint-disable-next-line no-fallthrough

    case "draw":
    case "arrow":
      {
        const {
          startArrowhead = null,
          endArrowhead = element.type === "arrow" ? "arrow" : null
        } = element;
        let x = element.x;
        let y = element.y;
        let points = // migrate old arrow model to new one
        !Array.isArray(element.points) || element.points.length < 2 ? [[0, 0], [element.width, element.height]] : element.points;

        if (points[0][0] !== 0 || points[0][1] !== 0) {
          ({
            points,
            x,
            y
          } = _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_5__.LinearElementEditor.getNormalizedPoints(element));
        }

        return restoreElementWithProperties(element, {
          type: element.type === "draw" ? "line" : element.type,
          startBinding: repairBinding(element.startBinding),
          endBinding: repairBinding(element.endBinding),
          lastCommittedPoint: null,
          startArrowhead,
          endArrowhead,
          points,
          x,
          y
        });
      }
    // generic elements

    case "ellipse":
      return restoreElementWithProperties(element, {});

    case "rectangle":
      return restoreElementWithProperties(element, {});

    case "diamond":
      return restoreElementWithProperties(element, {});

    case "embeddable":
      return restoreElementWithProperties(element, {
        validated: null
      });

    case "frame":
      return restoreElementWithProperties(element, {
        name: (_b = element.name) !== null && _b !== void 0 ? _b : null
      });
    // Don't use default case so as to catch a missing an element type case.
    // We also don't want to throw, but instead return void so we filter
    // out these unsupported elements from the restored array.
  }

  return null;
};
/**
 * Repairs contaienr element's boundElements array by removing duplicates and
 * fixing containerId of bound elements if not present. Also removes any
 * bound elements that do not exist in the elements array.
 *
 * NOTE mutates elements.
 */


const repairContainerElement = (container, elementsMap) => {
  if (container.boundElements) {
    // copy because we're not cloning on restore, and we don't want to mutate upstream
    const boundElements = container.boundElements.slice(); // dedupe bindings & fix boundElement.containerId if not set already

    const boundIds = new Set();
    container.boundElements = boundElements.reduce((acc, binding) => {
      const boundElement = elementsMap.get(binding.id);

      if (boundElement && !boundIds.has(binding.id)) {
        boundIds.add(binding.id);

        if (boundElement.isDeleted) {
          return acc;
        }

        acc.push(binding);

        if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isTextElement)(boundElement) && // being slightly conservative here, preserving existing containerId
        // if defined, lest boundElements is stale
        !boundElement.containerId) {
          boundElement.containerId = container.id;
        }
      }

      return acc;
    }, []);
  }
};
/**
 * Repairs target bound element's container's boundElements array,
 * or removes contaienrId if container does not exist.
 *
 * NOTE mutates elements.
 */


const repairBoundElement = (boundElement, elementsMap) => {
  const container = boundElement.containerId ? elementsMap.get(boundElement.containerId) : null;

  if (!container) {
    boundElement.containerId = null;
    return;
  }

  if (boundElement.isDeleted) {
    return;
  }

  if (container.boundElements && !container.boundElements.find(binding => binding.id === boundElement.id)) {
    // copy because we're not cloning on restore, and we don't want to mutate upstream
    const boundElements = (container.boundElements || (container.boundElements = [])).slice();
    boundElements.push({
      type: "text",
      id: boundElement.id
    });
    container.boundElements = boundElements;
  }
};
/**
 * Remove an element's frameId if its containing frame is non-existent
 *
 * NOTE mutates elements.
 */


const repairFrameMembership = (element, elementsMap) => {
  if (element.frameId) {
    const containingFrame = elementsMap.get(element.frameId);

    if (!containingFrame) {
      element.frameId = null;
    }
  }
};

const restoreElements = (elements,
/** NOTE doesn't serve for reconciliation */
localElements, opts) => {
  // used to detect duplicate top-level element ids
  const existingIds = new Set();
  const localElementsMap = localElements ? (0,_utils__WEBPACK_IMPORTED_MODULE_7__.arrayToMap)(localElements) : null;
  const restoredElements = (elements || []).reduce((elements, element) => {
    // filtering out selection, which is legacy, no longer kept in elements,
    // and causing issues if retained
    if (element.type !== "selection" && !(0,_element__WEBPACK_IMPORTED_MODULE_0__.isInvisiblySmallElement)(element)) {
      let migratedElement = restoreElement(element, opts === null || opts === void 0 ? void 0 : opts.refreshDimensions);

      if (migratedElement) {
        const localElement = localElementsMap === null || localElementsMap === void 0 ? void 0 : localElementsMap.get(element.id);

        if (localElement && localElement.version > migratedElement.version) {
          migratedElement = (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_6__.bumpVersion)(migratedElement, localElement.version);
        }

        if (existingIds.has(migratedElement.id)) {
          migratedElement = Object.assign(Object.assign({}, migratedElement), {
            id: (0,_random__WEBPACK_IMPORTED_MODULE_2__.randomId)()
          });
        }

        existingIds.add(migratedElement.id);
        elements.push(migratedElement);
      }
    }

    return elements;
  }, []);

  if (!(opts === null || opts === void 0 ? void 0 : opts.repairBindings)) {
    return restoredElements;
  } // repair binding. Mutates elements.


  const restoredElementsMap = (0,_utils__WEBPACK_IMPORTED_MODULE_7__.arrayToMap)(restoredElements);

  for (const element of restoredElements) {
    if (element.frameId) {
      repairFrameMembership(element, restoredElementsMap);
    }

    if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isTextElement)(element) && element.containerId) {
      repairBoundElement(element, restoredElementsMap);
    } else if (element.boundElements) {
      repairContainerElement(element, restoredElementsMap);
    }
  }

  return restoredElements;
};

const coalesceAppStateValue = (key, appState, defaultAppState) => {
  const value = appState[key]; // NOTE the value! assertion is needed in TS 4.5.5 (fixed in newer versions)

  return value !== undefined ? value : defaultAppState[key];
};

const LegacyAppStateMigrations = {
  isSidebarDocked: (appState, defaultAppState) => {
    var _a;

    return ["defaultSidebarDockedPreference", (_a = appState.isSidebarDocked) !== null && _a !== void 0 ? _a : coalesceAppStateValue("defaultSidebarDockedPreference", appState, defaultAppState)];
  }
};
const restoreAppState = (appState, localAppState) => {
  var _a, _b, _c, _d;

  appState = appState || {};
  const defaultAppState = (0,_appState__WEBPACK_IMPORTED_MODULE_4__.getDefaultAppState)();
  const nextAppState = {}; // first, migrate all legacy AppState properties to new ones. We do it
  // in one go before migrate the rest of the properties in case the new ones
  // depend on checking any other key (i.e. they are coupled)

  for (const legacyKey of Object.keys(LegacyAppStateMigrations)) {
    if (legacyKey in appState) {
      const [nextKey, nextValue] = LegacyAppStateMigrations[legacyKey](appState, defaultAppState);
      nextAppState[nextKey] = nextValue;
    }
  }

  for (const [key, defaultValue] of Object.entries(defaultAppState)) {
    // if AppState contains a legacy key, prefer that one and migrate its
    // value to the new one
    const suppliedValue = appState[key];
    const localValue = localAppState ? localAppState[key] : undefined;
    nextAppState[key] = suppliedValue !== undefined ? suppliedValue : localValue !== undefined ? localValue : defaultValue;
  }

  return Object.assign(Object.assign({}, nextAppState), {
    cursorButton: (localAppState === null || localAppState === void 0 ? void 0 : localAppState.cursorButton) || "up",
    // reset on fresh restore so as to hide the UI button if penMode not active
    penDetected: (_a = localAppState === null || localAppState === void 0 ? void 0 : localAppState.penDetected) !== null && _a !== void 0 ? _a : appState.penMode ? (_b = appState.penDetected) !== null && _b !== void 0 ? _b : false : false,
    activeTool: Object.assign(Object.assign({}, (0,_utils__WEBPACK_IMPORTED_MODULE_7__.updateActiveTool)(defaultAppState, nextAppState.activeTool.type && AllowedExcalidrawActiveTools[nextAppState.activeTool.type] ? nextAppState.activeTool : {
      type: "selection"
    })), {
      lastActiveTool: null,
      locked: (_c = nextAppState.activeTool.locked) !== null && _c !== void 0 ? _c : false
    }),
    // Migrates from previous version where appState.zoom was a number
    zoom: typeof appState.zoom === "number" ? {
      value: appState.zoom
    } : ((_d = appState.zoom) === null || _d === void 0 ? void 0 : _d.value) ? appState.zoom : defaultAppState.zoom,
    openSidebar: // string (legacy)
    typeof appState.openSidebar === "string" ? {
      name: _constants__WEBPACK_IMPORTED_MODULE_3__.DEFAULT_SIDEBAR.name
    } : nextAppState.openSidebar
  });
};
const restore = (data,
/**
 * Local AppState (\`this.state\` or initial state from localStorage) so that we
 * don't overwrite local state with default values (when values not
 * explicitly specified).
 * Supply \`null\` if you can't get access to it.
 */
localAppState, localElements, elementsConfig) => {
  return {
    elements: restoreElements(data === null || data === void 0 ? void 0 : data.elements, localElements, elementsConfig),
    appState: restoreAppState(data === null || data === void 0 ? void 0 : data.appState, localAppState || null),
    files: (data === null || data === void 0 ? void 0 : data.files) || {}
  };
};

const restoreLibraryItem = libraryItem => {
  const elements = restoreElements((0,_element__WEBPACK_IMPORTED_MODULE_0__.getNonDeletedElements)(libraryItem.elements), null);
  return elements.length ? Object.assign(Object.assign({}, libraryItem), {
    elements
  }) : null;
};

const restoreLibraryItems = (libraryItems = [], defaultStatus) => {
  const restoredItems = [];

  for (const item of libraryItems) {
    // migrate older libraries
    if (Array.isArray(item)) {
      const restoredItem = restoreLibraryItem({
        status: defaultStatus,
        elements: item,
        id: (0,_random__WEBPACK_IMPORTED_MODULE_2__.randomId)(),
        created: Date.now()
      });

      if (restoredItem) {
        restoredItems.push(restoredItem);
      }
    } else {
      const _item = item;
      const restoredItem = restoreLibraryItem(Object.assign(Object.assign({}, _item), {
        id: _item.id || (0,_random__WEBPACK_IMPORTED_MODULE_2__.randomId)(),
        status: _item.status || defaultStatus,
        created: _item.created || Date.now()
      }));

      if (restoredItem) {
        restoredItems.push(restoredItem);
      }
    }
  }

  return restoredItems;
};//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 28304 characters]
//# sourceURL=webpack-internal:///../../data/restore.ts
`);
              }
            ),
            /***/
            "../../data/transform.ts": (
              /*!*******************************!*\
                !*** ../../data/transform.ts ***!
                \*******************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "convertToExcalidrawElements": () => (/* binding */ convertToExcalidrawElements)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _element_binding__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../element/binding */ "../../element/binding.ts");\n/* harmony import */ var _element_newElement__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../element/newElement */ "../../element/newElement.ts");\n/* harmony import */ var _element_textElement__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../element/textElement */ "../../element/textElement.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _points__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../points */ "../../points.ts");\n/* harmony import */ var _random__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../random */ "../../random.ts");\n\n\n\n\n\n\n\n\nconst DEFAULT_LINEAR_ELEMENT_PROPS = {\n  width: 100,\n  height: 0\n};\nconst DEFAULT_DIMENSION = 100;\n\nconst bindTextToContainer = (container, textProps) => {\n  const textElement = (0,_element_newElement__WEBPACK_IMPORTED_MODULE_3__.newTextElement)(Object.assign(Object.assign({\n    x: 0,\n    y: 0,\n    textAlign: _constants__WEBPACK_IMPORTED_MODULE_0__.TEXT_ALIGN.CENTER,\n    verticalAlign: _constants__WEBPACK_IMPORTED_MODULE_0__.VERTICAL_ALIGN.MIDDLE\n  }, textProps), {\n    containerId: container.id,\n    strokeColor: textProps.strokeColor || container.strokeColor\n  }));\n  Object.assign(container, {\n    boundElements: (container.boundElements || []).concat({\n      type: "text",\n      id: textElement.id\n    })\n  });\n  (0,_element__WEBPACK_IMPORTED_MODULE_1__.redrawTextBoundingBox)(textElement, container);\n  return [container, textElement];\n};\n\nconst bindLinearElementToElement = (linearElement, start, end, elementStore) => {\n  var _a, _b, _c, _d;\n\n  let startBoundElement;\n  let endBoundElement;\n  Object.assign(linearElement, {\n    startBinding: (linearElement === null || linearElement === void 0 ? void 0 : linearElement.startBinding) || null,\n    endBinding: linearElement.endBinding || null\n  });\n\n  if (start) {\n    const width = (_a = start === null || start === void 0 ? void 0 : start.width) !== null && _a !== void 0 ? _a : DEFAULT_DIMENSION;\n    const height = (_b = start === null || start === void 0 ? void 0 : start.height) !== null && _b !== void 0 ? _b : DEFAULT_DIMENSION;\n    let existingElement;\n\n    if (start.id) {\n      existingElement = elementStore.getElement(start.id);\n\n      if (!existingElement) {\n        console.error(`No element for start binding with id ${start.id} found`);\n      }\n    }\n\n    const startX = start.x || linearElement.x - width;\n    const startY = start.y || linearElement.y - height / 2;\n    const startType = existingElement ? existingElement.type : start.type;\n\n    if (startType) {\n      if (startType === "text") {\n        let text = "";\n\n        if (existingElement && existingElement.type === "text") {\n          text = existingElement.text;\n        } else if (start.type === "text") {\n          text = start.text;\n        }\n\n        if (!text) {\n          console.error(`No text found for start binding text element for ${linearElement.id}`);\n        }\n\n        startBoundElement = (0,_element_newElement__WEBPACK_IMPORTED_MODULE_3__.newTextElement)(Object.assign(Object.assign(Object.assign({\n          x: startX,\n          y: startY,\n          type: "text"\n        }, existingElement), start), {\n          text\n        })); // to position the text correctly when coordinates not provided\n\n        Object.assign(startBoundElement, {\n          x: start.x || linearElement.x - startBoundElement.width,\n          y: start.y || linearElement.y - startBoundElement.height / 2\n        });\n      } else {\n        switch (startType) {\n          case "rectangle":\n          case "ellipse":\n          case "diamond":\n            {\n              startBoundElement = (0,_element__WEBPACK_IMPORTED_MODULE_1__.newElement)(Object.assign(Object.assign(Object.assign({\n                x: startX,\n                y: startY,\n                width,\n                height\n              }, existingElement), start), {\n                type: startType\n              }));\n              break;\n            }\n\n          default:\n            {\n              (0,_utils__WEBPACK_IMPORTED_MODULE_5__.assertNever)(linearElement, `Unhandled element start type "${start.type}"`, true);\n            }\n        }\n      }\n\n      (0,_element_binding__WEBPACK_IMPORTED_MODULE_2__.bindLinearElement)(linearElement, startBoundElement, "start");\n    }\n  }\n\n  if (end) {\n    const height = (_c = end === null || end === void 0 ? void 0 : end.height) !== null && _c !== void 0 ? _c : DEFAULT_DIMENSION;\n    const width = (_d = end === null || end === void 0 ? void 0 : end.width) !== null && _d !== void 0 ? _d : DEFAULT_DIMENSION;\n    let existingElement;\n\n    if (end.id) {\n      existingElement = elementStore.getElement(end.id);\n\n      if (!existingElement) {\n        console.error(`No element for end binding with id ${end.id} found`);\n      }\n    }\n\n    const endX = end.x || linearElement.x + linearElement.width;\n    const endY = end.y || linearElement.y - height / 2;\n    const endType = existingElement ? existingElement.type : end.type;\n\n    if (endType) {\n      if (endType === "text") {\n        let text = "";\n\n        if (existingElement && existingElement.type === "text") {\n          text = existingElement.text;\n        } else if (end.type === "text") {\n          text = end.text;\n        }\n\n        if (!text) {\n          console.error(`No text found for end binding text element for ${linearElement.id}`);\n        }\n\n        endBoundElement = (0,_element_newElement__WEBPACK_IMPORTED_MODULE_3__.newTextElement)(Object.assign(Object.assign(Object.assign({\n          x: endX,\n          y: endY,\n          type: "text"\n        }, existingElement), end), {\n          text\n        })); // to position the text correctly when coordinates not provided\n\n        Object.assign(endBoundElement, {\n          y: end.y || linearElement.y - endBoundElement.height / 2\n        });\n      } else {\n        switch (endType) {\n          case "rectangle":\n          case "ellipse":\n          case "diamond":\n            {\n              endBoundElement = (0,_element__WEBPACK_IMPORTED_MODULE_1__.newElement)(Object.assign(Object.assign(Object.assign({\n                x: endX,\n                y: endY,\n                width,\n                height\n              }, existingElement), end), {\n                type: endType\n              }));\n              break;\n            }\n\n          default:\n            {\n              (0,_utils__WEBPACK_IMPORTED_MODULE_5__.assertNever)(linearElement, `Unhandled element end type "${endType}"`, true);\n            }\n        }\n      }\n\n      (0,_element_binding__WEBPACK_IMPORTED_MODULE_2__.bindLinearElement)(linearElement, endBoundElement, "end");\n    }\n  } // Update start/end points by 0.5 so bindings don\'t overlap with start/end bound element coordinates.\n\n\n  const endPointIndex = linearElement.points.length - 1;\n  const delta = 0.5;\n  const newPoints = (0,_utils__WEBPACK_IMPORTED_MODULE_5__.cloneJSON)(linearElement.points); // left to right so shift the arrow towards right\n\n  if (linearElement.points[endPointIndex][0] > linearElement.points[endPointIndex - 1][0]) {\n    newPoints[0][0] = delta;\n    newPoints[endPointIndex][0] -= delta;\n  } // right to left so shift the arrow towards left\n\n\n  if (linearElement.points[endPointIndex][0] < linearElement.points[endPointIndex - 1][0]) {\n    newPoints[0][0] = -delta;\n    newPoints[endPointIndex][0] += delta;\n  } // top to bottom so shift the arrow towards top\n\n\n  if (linearElement.points[endPointIndex][1] > linearElement.points[endPointIndex - 1][1]) {\n    newPoints[0][1] = delta;\n    newPoints[endPointIndex][1] -= delta;\n  } // bottom to top so shift the arrow towards bottom\n\n\n  if (linearElement.points[endPointIndex][1] < linearElement.points[endPointIndex - 1][1]) {\n    newPoints[0][1] = -delta;\n    newPoints[endPointIndex][1] += delta;\n  }\n\n  Object.assign(linearElement, {\n    points: newPoints\n  });\n  return {\n    linearElement,\n    startBoundElement,\n    endBoundElement\n  };\n};\n\nclass ElementStore {\n  constructor() {\n    this.excalidrawElements = new Map();\n\n    this.add = ele => {\n      if (!ele) {\n        return;\n      }\n\n      this.excalidrawElements.set(ele.id, ele);\n    };\n\n    this.getElements = () => {\n      return Array.from(this.excalidrawElements.values());\n    };\n\n    this.getElement = id => {\n      return this.excalidrawElements.get(id);\n    };\n  }\n\n}\n\nconst convertToExcalidrawElements = (elementsSkeleton, opts) => {\n  var _a, _b, _c, _d;\n\n  if (!elementsSkeleton) {\n    return [];\n  }\n\n  const elements = (0,_utils__WEBPACK_IMPORTED_MODULE_5__.cloneJSON)(elementsSkeleton);\n  const elementStore = new ElementStore();\n  const elementsWithIds = new Map();\n  const oldToNewElementIdMap = new Map(); // Create individual elements\n\n  for (const element of elements) {\n    let excalidrawElement;\n    const originalId = element.id;\n\n    if ((opts === null || opts === void 0 ? void 0 : opts.regenerateIds) !== false) {\n      Object.assign(element, {\n        id: (0,_random__WEBPACK_IMPORTED_MODULE_7__.randomId)()\n      });\n    }\n\n    switch (element.type) {\n      case "rectangle":\n      case "ellipse":\n      case "diamond":\n        {\n          const width = ((_a = element === null || element === void 0 ? void 0 : element.label) === null || _a === void 0 ? void 0 : _a.text) && element.width === undefined ? 0 : (element === null || element === void 0 ? void 0 : element.width) || DEFAULT_DIMENSION;\n          const height = ((_b = element === null || element === void 0 ? void 0 : element.label) === null || _b === void 0 ? void 0 : _b.text) && element.height === undefined ? 0 : (element === null || element === void 0 ? void 0 : element.height) || DEFAULT_DIMENSION;\n          excalidrawElement = (0,_element__WEBPACK_IMPORTED_MODULE_1__.newElement)(Object.assign(Object.assign({}, element), {\n            width,\n            height\n          }));\n          break;\n        }\n\n      case "line":\n        {\n          const width = element.width || DEFAULT_LINEAR_ELEMENT_PROPS.width;\n          const height = element.height || DEFAULT_LINEAR_ELEMENT_PROPS.height;\n          excalidrawElement = (0,_element__WEBPACK_IMPORTED_MODULE_1__.newLinearElement)(Object.assign({\n            width,\n            height,\n            points: [[0, 0], [width, height]]\n          }, element));\n          break;\n        }\n\n      case "arrow":\n        {\n          const width = element.width || DEFAULT_LINEAR_ELEMENT_PROPS.width;\n          const height = element.height || DEFAULT_LINEAR_ELEMENT_PROPS.height;\n          excalidrawElement = (0,_element__WEBPACK_IMPORTED_MODULE_1__.newLinearElement)(Object.assign({\n            width,\n            height,\n            endArrowhead: "arrow",\n            points: [[0, 0], [width, height]]\n          }, element));\n          Object.assign(excalidrawElement, (0,_points__WEBPACK_IMPORTED_MODULE_6__.getSizeFromPoints)(excalidrawElement.points));\n          break;\n        }\n\n      case "text":\n        {\n          const fontFamily = (element === null || element === void 0 ? void 0 : element.fontFamily) || _constants__WEBPACK_IMPORTED_MODULE_0__.DEFAULT_FONT_FAMILY;\n          const fontSize = (element === null || element === void 0 ? void 0 : element.fontSize) || _constants__WEBPACK_IMPORTED_MODULE_0__.DEFAULT_FONT_SIZE;\n          const lineHeight = (element === null || element === void 0 ? void 0 : element.lineHeight) || (0,_element_textElement__WEBPACK_IMPORTED_MODULE_4__.getDefaultLineHeight)(fontFamily);\n          const text = (_c = element.text) !== null && _c !== void 0 ? _c : "";\n          const normalizedText = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_4__.normalizeText)(text);\n          const metrics = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_4__.measureText)(normalizedText, (0,_utils__WEBPACK_IMPORTED_MODULE_5__.getFontString)({\n            fontFamily,\n            fontSize\n          }), lineHeight);\n          excalidrawElement = (0,_element_newElement__WEBPACK_IMPORTED_MODULE_3__.newTextElement)(Object.assign({\n            width: metrics.width,\n            height: metrics.height,\n            fontFamily,\n            fontSize\n          }, element));\n          break;\n        }\n\n      case "image":\n        {\n          excalidrawElement = (0,_element_newElement__WEBPACK_IMPORTED_MODULE_3__.newImageElement)(Object.assign({\n            width: (element === null || element === void 0 ? void 0 : element.width) || DEFAULT_DIMENSION,\n            height: (element === null || element === void 0 ? void 0 : element.height) || DEFAULT_DIMENSION\n          }, element));\n          break;\n        }\n\n      case "frame":\n        {\n          excalidrawElement = (0,_element_newElement__WEBPACK_IMPORTED_MODULE_3__.newFrameElement)(Object.assign({\n            x: 0,\n            y: 0\n          }, element));\n          break;\n        }\n\n      case "freedraw":\n      case "embeddable":\n        {\n          excalidrawElement = element;\n          break;\n        }\n\n      default:\n        {\n          excalidrawElement = element;\n          (0,_utils__WEBPACK_IMPORTED_MODULE_5__.assertNever)(element, `Unhandled element type "${element.type}"`, true);\n        }\n    }\n\n    const existingElement = elementStore.getElement(excalidrawElement.id);\n\n    if (existingElement) {\n      console.error(`Duplicate id found for ${excalidrawElement.id}`);\n    } else {\n      elementStore.add(excalidrawElement);\n      elementsWithIds.set(excalidrawElement.id, element);\n\n      if (originalId) {\n        oldToNewElementIdMap.set(originalId, excalidrawElement.id);\n      }\n    }\n  } // Add labels and arrow bindings\n\n\n  for (const [id, element] of elementsWithIds) {\n    const excalidrawElement = elementStore.getElement(id);\n\n    switch (element.type) {\n      case "rectangle":\n      case "ellipse":\n      case "diamond":\n      case "arrow":\n        {\n          if ((_d = element.label) === null || _d === void 0 ? void 0 : _d.text) {\n            let [container, text] = bindTextToContainer(excalidrawElement, element === null || element === void 0 ? void 0 : element.label);\n            elementStore.add(container);\n            elementStore.add(text);\n\n            if (container.type === "arrow") {\n              const originalStart = element.type === "arrow" ? element === null || element === void 0 ? void 0 : element.start : undefined;\n              const originalEnd = element.type === "arrow" ? element === null || element === void 0 ? void 0 : element.end : undefined;\n\n              if (originalStart && originalStart.id) {\n                const newStartId = oldToNewElementIdMap.get(originalStart.id);\n\n                if (newStartId) {\n                  Object.assign(originalStart, {\n                    id: newStartId\n                  });\n                }\n              }\n\n              if (originalEnd && originalEnd.id) {\n                const newEndId = oldToNewElementIdMap.get(originalEnd.id);\n\n                if (newEndId) {\n                  Object.assign(originalEnd, {\n                    id: newEndId\n                  });\n                }\n              }\n\n              const {\n                linearElement,\n                startBoundElement,\n                endBoundElement\n              } = bindLinearElementToElement(container, originalStart, originalEnd, elementStore);\n              container = linearElement;\n              elementStore.add(linearElement);\n              elementStore.add(startBoundElement);\n              elementStore.add(endBoundElement);\n            }\n          } else {\n            switch (element.type) {\n              case "arrow":\n                {\n                  const {\n                    start,\n                    end\n                  } = element;\n\n                  if (start && start.id) {\n                    const newStartId = oldToNewElementIdMap.get(start.id);\n                    Object.assign(start, {\n                      id: newStartId\n                    });\n                  }\n\n                  if (end && end.id) {\n                    const newEndId = oldToNewElementIdMap.get(end.id);\n                    Object.assign(end, {\n                      id: newEndId\n                    });\n                  }\n\n                  const {\n                    linearElement,\n                    startBoundElement,\n                    endBoundElement\n                  } = bindLinearElementToElement(excalidrawElement, start, end, elementStore);\n                  elementStore.add(linearElement);\n                  elementStore.add(startBoundElement);\n                  elementStore.add(endBoundElement);\n                  break;\n                }\n            }\n          }\n\n          break;\n        }\n    }\n  } // Once all the excalidraw elements are created, we can add frames since we\n  // need to calculate coordinates and dimensions of frame which is possibe after all\n  // frame children are processed.\n\n\n  for (const [id, element] of elementsWithIds) {\n    if (element.type !== "frame") {\n      continue;\n    }\n\n    const frame = elementStore.getElement(id);\n\n    if (!frame) {\n      throw new Error(`Excalidraw element with id ${id} doesn\'t exist`);\n    }\n\n    const childrenElements = [];\n    element.children.forEach(id => {\n      var _a;\n\n      const newElementId = oldToNewElementIdMap.get(id);\n\n      if (!newElementId) {\n        throw new Error(`Element with ${id} wasn\'t mapped correctly`);\n      }\n\n      const elementInFrame = elementStore.getElement(newElementId);\n\n      if (!elementInFrame) {\n        throw new Error(`Frame element with id ${newElementId} doesn\'t exist`);\n      }\n\n      Object.assign(elementInFrame, {\n        frameId: frame.id\n      });\n      (_a = elementInFrame === null || elementInFrame === void 0 ? void 0 : elementInFrame.boundElements) === null || _a === void 0 ? void 0 : _a.forEach(boundElement => {\n        const ele = elementStore.getElement(boundElement.id);\n\n        if (!ele) {\n          throw new Error(`Bound element with id ${boundElement.id} doesn\'t exist`);\n        }\n\n        Object.assign(ele, {\n          frameId: frame.id\n        });\n        childrenElements.push(ele);\n      });\n      childrenElements.push(elementInFrame);\n    });\n    let [minX, minY, maxX, maxY] = (0,_element__WEBPACK_IMPORTED_MODULE_1__.getCommonBounds)(childrenElements);\n    const PADDING = 10;\n    minX = minX - PADDING;\n    minY = minY - PADDING;\n    maxX = maxX + PADDING;\n    maxY = maxY + PADDING; // Take the max of calculated and provided frame dimensions, whichever is higher\n\n    const width = Math.max(frame === null || frame === void 0 ? void 0 : frame.width, maxX - minX);\n    const height = Math.max(frame === null || frame === void 0 ? void 0 : frame.height, maxY - minY);\n    Object.assign(frame, {\n      x: minX,\n      y: minY,\n      width,\n      height\n    });\n  }\n\n  return elementStore.getElements();\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 28480 characters]\n//# sourceURL=webpack-internal:///../../data/transform.ts\n');
              }
            ),
            /***/
            "../../data/url.ts": (
              /*!*************************!*\
                !*** ../../data/url.ts ***!
                \*************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "isLocalLink": () => (/* binding */ isLocalLink),\n/* harmony export */   "normalizeLink": () => (/* binding */ normalizeLink),\n/* harmony export */   "sanitizeHTMLAttribute": () => (/* binding */ sanitizeHTMLAttribute),\n/* harmony export */   "toValidURL": () => (/* binding */ toValidURL)\n/* harmony export */ });\n/* harmony import */ var _braintree_sanitize_url__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @braintree/sanitize-url */ "../../../node_modules/@braintree/sanitize-url/dist/index.js");\n\nconst sanitizeHTMLAttribute = html => {\n  return html.replace(/"/g, "&quot;");\n};\nconst normalizeLink = link => {\n  link = link.trim();\n\n  if (!link) {\n    return link;\n  }\n\n  return (0,_braintree_sanitize_url__WEBPACK_IMPORTED_MODULE_0__.sanitizeUrl)(sanitizeHTMLAttribute(link));\n};\nconst isLocalLink = link => {\n  return !!((link === null || link === void 0 ? void 0 : link.includes(location.origin)) || (link === null || link === void 0 ? void 0 : link.startsWith("/")));\n};\n/**\n * Returns URL sanitized and safe for usage in places such as\n * iframe\'s src attribute or <a> href attributes.\n */\n\nconst toValidURL = link => {\n  link = normalizeLink(link); // make relative links into fully-qualified urls\n\n  if (link.startsWith("/")) {\n    return `${location.origin}${link}`;\n  }\n\n  try {\n    new URL(link);\n  } catch (_a) {\n    // if link does not parse as URL, assume invalid and return blank page\n    return "about:blank";\n  }\n\n  return link;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZGF0YS91cmwudHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBc0Q7QUFDL0M7QUFDUCxtQ0FBbUM7QUFDbkM7QUFDTztBQUNQOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxTQUFTLG9FQUFXO0FBQ3BCO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUCw4QkFBOEI7O0FBRTlCO0FBQ0EsY0FBYyxnQkFBZ0IsRUFBRSxLQUFLO0FBQ3JDOztBQUVBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vZGF0YS91cmwudHM/ZDEzNyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzYW5pdGl6ZVVybCB9IGZyb20gXCJAYnJhaW50cmVlL3Nhbml0aXplLXVybFwiO1xuZXhwb3J0IGNvbnN0IHNhbml0aXplSFRNTEF0dHJpYnV0ZSA9IGh0bWwgPT4ge1xuICByZXR1cm4gaHRtbC5yZXBsYWNlKC9cIi9nLCBcIiZxdW90O1wiKTtcbn07XG5leHBvcnQgY29uc3Qgbm9ybWFsaXplTGluayA9IGxpbmsgPT4ge1xuICBsaW5rID0gbGluay50cmltKCk7XG5cbiAgaWYgKCFsaW5rKSB7XG4gICAgcmV0dXJuIGxpbms7XG4gIH1cblxuICByZXR1cm4gc2FuaXRpemVVcmwoc2FuaXRpemVIVE1MQXR0cmlidXRlKGxpbmspKTtcbn07XG5leHBvcnQgY29uc3QgaXNMb2NhbExpbmsgPSBsaW5rID0+IHtcbiAgcmV0dXJuICEhKChsaW5rID09PSBudWxsIHx8IGxpbmsgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGxpbmsuaW5jbHVkZXMobG9jYXRpb24ub3JpZ2luKSkgfHwgKGxpbmsgPT09IG51bGwgfHwgbGluayA9PT0gdm9pZCAwID8gdm9pZCAwIDogbGluay5zdGFydHNXaXRoKFwiL1wiKSkpO1xufTtcbi8qKlxuICogUmV0dXJucyBVUkwgc2FuaXRpemVkIGFuZCBzYWZlIGZvciB1c2FnZSBpbiBwbGFjZXMgc3VjaCBhc1xuICogaWZyYW1lJ3Mgc3JjIGF0dHJpYnV0ZSBvciA8YT4gaHJlZiBhdHRyaWJ1dGVzLlxuICovXG5cbmV4cG9ydCBjb25zdCB0b1ZhbGlkVVJMID0gbGluayA9PiB7XG4gIGxpbmsgPSBub3JtYWxpemVMaW5rKGxpbmspOyAvLyBtYWtlIHJlbGF0aXZlIGxpbmtzIGludG8gZnVsbHktcXVhbGlmaWVkIHVybHNcblxuICBpZiAobGluay5zdGFydHNXaXRoKFwiL1wiKSkge1xuICAgIHJldHVybiBgJHtsb2NhdGlvbi5vcmlnaW59JHtsaW5rfWA7XG4gIH1cblxuICB0cnkge1xuICAgIG5ldyBVUkwobGluayk7XG4gIH0gY2F0Y2ggKF9hKSB7XG4gICAgLy8gaWYgbGluayBkb2VzIG5vdCBwYXJzZSBhcyBVUkwsIGFzc3VtZSBpbnZhbGlkIGFuZCByZXR1cm4gYmxhbmsgcGFnZVxuICAgIHJldHVybiBcImFib3V0OmJsYW5rXCI7XG4gIH1cblxuICByZXR1cm4gbGluaztcbn07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../data/url.ts\n');
              }
            ),
            /***/
            "../../distribute.ts": (
              /*!***************************!*\
                !*** ../../distribute.ts ***!
                \***************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "distributeElements": () => (/* binding */ distributeElements)
/* harmony export */ });
/* harmony import */ var _element_mutateElement__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./element/mutateElement */ "../../element/mutateElement.ts");
/* harmony import */ var _groups__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./groups */ "../../groups.ts");
/* harmony import */ var _element_bounds__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./element/bounds */ "../../element/bounds.ts");



const distributeElements = (selectedElements, distribution) => {
  const [start, mid, end, extent] = distribution.axis === "x" ? ["minX", "midX", "maxX", "width"] : ["minY", "midY", "maxY", "height"];
  const bounds = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_2__.getCommonBoundingBox)(selectedElements);
  const groups = (0,_groups__WEBPACK_IMPORTED_MODULE_1__.getMaximumGroups)(selectedElements).map(group => [group, (0,_element_bounds__WEBPACK_IMPORTED_MODULE_2__.getCommonBoundingBox)(group)]).sort((a, b) => a[1][mid] - b[1][mid]);
  let span = 0;

  for (const group of groups) {
    span += group[1][extent];
  }

  const step = (bounds[extent] - span) / (groups.length - 1);

  if (step < 0) {
    // If we have a negative step, we'll need to distribute from centers
    // rather than from gaps. Buckle up, this is a weird one.
    // Get indices of boxes that define start and end of our bounding box
    const index0 = groups.findIndex(g => g[1][start] === bounds[start]);
    const index1 = groups.findIndex(g => g[1][end] === bounds[end]); // Get our step, based on the distance between the center points of our
    // start and end boxes

    const step = (groups[index1][1][mid] - groups[index0][1][mid]) / (groups.length - 1);
    let pos = groups[index0][1][mid];
    return groups.flatMap(([group, box], index) => {
      const translation = {
        x: 0,
        y: 0
      }; // Don't move our start and end boxes

      if (index !== index0 && index !== index1) {
        pos += step;
        translation[distribution.axis] = pos - box[mid];
      }

      return group.map(element => (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_0__.newElementWith)(element, {
        x: element.x + translation.x,
        y: element.y + translation.y
      }));
    });
  } // Distribute from gaps


  let pos = bounds[start];
  return groups.flatMap(([group, box]) => {
    const translation = {
      x: 0,
      y: 0
    };
    translation[distribution.axis] = pos - box[start];
    pos += step;
    pos += box[extent];
    return group.map(element => (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_0__.newElementWith)(element, {
      x: element.x + translation.x,
      y: element.y + translation.y
    }));
  });
};//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZGlzdHJpYnV0ZS50cy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQXlEO0FBQ2I7QUFDWTtBQUNqRDtBQUNQO0FBQ0EsaUJBQWlCLHFFQUFvQjtBQUNyQyxpQkFBaUIseURBQWdCLHdDQUF3QyxxRUFBb0I7QUFDN0Y7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxRUFBcUU7QUFDckU7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUzs7QUFFVDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxrQ0FBa0Msc0VBQWM7QUFDaEQ7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0wsSUFBSTs7O0FBR0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDLHNFQUFjO0FBQzlDO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2Rpc3RyaWJ1dGUudHM/NzZiOCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBuZXdFbGVtZW50V2l0aCB9IGZyb20gXCIuL2VsZW1lbnQvbXV0YXRlRWxlbWVudFwiO1xuaW1wb3J0IHsgZ2V0TWF4aW11bUdyb3VwcyB9IGZyb20gXCIuL2dyb3Vwc1wiO1xuaW1wb3J0IHsgZ2V0Q29tbW9uQm91bmRpbmdCb3ggfSBmcm9tIFwiLi9lbGVtZW50L2JvdW5kc1wiO1xuZXhwb3J0IGNvbnN0IGRpc3RyaWJ1dGVFbGVtZW50cyA9IChzZWxlY3RlZEVsZW1lbnRzLCBkaXN0cmlidXRpb24pID0+IHtcbiAgY29uc3QgW3N0YXJ0LCBtaWQsIGVuZCwgZXh0ZW50XSA9IGRpc3RyaWJ1dGlvbi5heGlzID09PSBcInhcIiA/IFtcIm1pblhcIiwgXCJtaWRYXCIsIFwibWF4WFwiLCBcIndpZHRoXCJdIDogW1wibWluWVwiLCBcIm1pZFlcIiwgXCJtYXhZXCIsIFwiaGVpZ2h0XCJdO1xuICBjb25zdCBib3VuZHMgPSBnZXRDb21tb25Cb3VuZGluZ0JveChzZWxlY3RlZEVsZW1lbnRzKTtcbiAgY29uc3QgZ3JvdXBzID0gZ2V0TWF4aW11bUdyb3VwcyhzZWxlY3RlZEVsZW1lbnRzKS5tYXAoZ3JvdXAgPT4gW2dyb3VwLCBnZXRDb21tb25Cb3VuZGluZ0JveChncm91cCldKS5zb3J0KChhLCBiKSA9PiBhWzFdW21pZF0gLSBiWzFdW21pZF0pO1xuICBsZXQgc3BhbiA9IDA7XG5cbiAgZm9yIChjb25zdCBncm91cCBvZiBncm91cHMpIHtcbiAgICBzcGFuICs9IGdyb3VwWzFdW2V4dGVudF07XG4gIH1cblxuICBjb25zdCBzdGVwID0gKGJvdW5kc1tleHRlbnRdIC0gc3BhbikgLyAoZ3JvdXBzLmxlbmd0aCAtIDEpO1xuXG4gIGlmIChzdGVwIDwgMCkge1xuICAgIC8vIElmIHdlIGhhdmUgYSBuZWdhdGl2ZSBzdGVwLCB3ZSdsbCBuZWVkIHRvIGRpc3RyaWJ1dGUgZnJvbSBjZW50ZXJzXG4gICAgLy8gcmF0aGVyIHRoYW4gZnJvbSBnYXBzLiBCdWNrbGUgdXAsIHRoaXMgaXMgYSB3ZWlyZCBvbmUuXG4gICAgLy8gR2V0IGluZGljZXMgb2YgYm94ZXMgdGhhdCBkZWZpbmUgc3RhcnQgYW5kIGVuZCBvZiBvdXIgYm91bmRpbmcgYm94XG4gICAgY29uc3QgaW5kZXgwID0gZ3JvdXBzLmZpbmRJbmRleChnID0+IGdbMV1bc3RhcnRdID09PSBib3VuZHNbc3RhcnRdKTtcbiAgICBjb25zdCBpbmRleDEgPSBncm91cHMuZmluZEluZGV4KGcgPT4gZ1sxXVtlbmRdID09PSBib3VuZHNbZW5kXSk7IC8vIEdldCBvdXIgc3RlcCwgYmFzZWQgb24gdGhlIGRpc3RhbmNlIGJldHdlZW4gdGhlIGNlbnRlciBwb2ludHMgb2Ygb3VyXG4gICAgLy8gc3RhcnQgYW5kIGVuZCBib3hlc1xuXG4gICAgY29uc3Qgc3RlcCA9IChncm91cHNbaW5kZXgxXVsxXVttaWRdIC0gZ3JvdXBzW2luZGV4MF1bMV1bbWlkXSkgLyAoZ3JvdXBzLmxlbmd0aCAtIDEpO1xuICAgIGxldCBwb3MgPSBncm91cHNbaW5kZXgwXVsxXVttaWRdO1xuICAgIHJldHVybiBncm91cHMuZmxhdE1hcCgoW2dyb3VwLCBib3hdLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgdHJhbnNsYXRpb24gPSB7XG4gICAgICAgIHg6IDAsXG4gICAgICAgIHk6IDBcbiAgICAgIH07IC8vIERvbid0IG1vdmUgb3VyIHN0YXJ0IGFuZCBlbmQgYm94ZXNcblxuICAgICAgaWYgKGluZGV4ICE9PSBpbmRleDAgJiYgaW5kZXggIT09IGluZGV4MSkge1xuICAgICAgICBwb3MgKz0gc3RlcDtcbiAgICAgICAgdHJhbnNsYXRpb25bZGlzdHJpYnV0aW9uLmF4aXNdID0gcG9zIC0gYm94W21pZF07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBncm91cC5tYXAoZWxlbWVudCA9PiBuZXdFbGVtZW50V2l0aChlbGVtZW50LCB7XG4gICAgICAgIHg6IGVsZW1lbnQueCArIHRyYW5zbGF0aW9uLngsXG4gICAgICAgIHk6IGVsZW1lbnQueSArIHRyYW5zbGF0aW9uLnlcbiAgICAgIH0pKTtcbiAgICB9KTtcbiAgfSAvLyBEaXN0cmlidXRlIGZyb20gZ2Fwc1xuXG5cbiAgbGV0IHBvcyA9IGJvdW5kc1tzdGFydF07XG4gIHJldHVybiBncm91cHMuZmxhdE1hcCgoW2dyb3VwLCBib3hdKSA9PiB7XG4gICAgY29uc3QgdHJhbnNsYXRpb24gPSB7XG4gICAgICB4OiAwLFxuICAgICAgeTogMFxuICAgIH07XG4gICAgdHJhbnNsYXRpb25bZGlzdHJpYnV0aW9uLmF4aXNdID0gcG9zIC0gYm94W3N0YXJ0XTtcbiAgICBwb3MgKz0gc3RlcDtcbiAgICBwb3MgKz0gYm94W2V4dGVudF07XG4gICAgcmV0dXJuIGdyb3VwLm1hcChlbGVtZW50ID0+IG5ld0VsZW1lbnRXaXRoKGVsZW1lbnQsIHtcbiAgICAgIHg6IGVsZW1lbnQueCArIHRyYW5zbGF0aW9uLngsXG4gICAgICB5OiBlbGVtZW50LnkgKyB0cmFuc2xhdGlvbi55XG4gICAgfSkpO1xuICB9KTtcbn07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9
//# sourceURL=webpack-internal:///../../distribute.ts
`);
              }
            ),
            /***/
            "../../element/Hyperlink.tsx": (
              /*!***********************************!*\
                !*** ../../element/Hyperlink.tsx ***!
                \***********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "EXTERNAL_LINK_IMG": () => (/* binding */ EXTERNAL_LINK_IMG),\n/* harmony export */   "Hyperlink": () => (/* binding */ Hyperlink),\n/* harmony export */   "actionLink": () => (/* binding */ actionLink),\n/* harmony export */   "getContextMenuLabel": () => (/* binding */ getContextMenuLabel),\n/* harmony export */   "getLinkHandleFromCoords": () => (/* binding */ getLinkHandleFromCoords),\n/* harmony export */   "hideHyperlinkToolip": () => (/* binding */ hideHyperlinkToolip),\n/* harmony export */   "isPointHittingLink": () => (/* binding */ isPointHittingLink),\n/* harmony export */   "isPointHittingLinkIcon": () => (/* binding */ isPointHittingLinkIcon),\n/* harmony export */   "shouldHideLinkPopup": () => (/* binding */ shouldHideLinkPopup),\n/* harmony export */   "showHyperlinkTooltip": () => (/* binding */ showHyperlinkTooltip)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _embeddable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./embeddable */ "../../element/embeddable.ts");\n/* harmony import */ var _mutateElement__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./mutateElement */ "../../element/mutateElement.ts");\n/* harmony import */ var _actions_register__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../actions/register */ "../../actions/register.ts");\n/* harmony import */ var _components_ToolButton__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../components/ToolButton */ "../../components/ToolButton.tsx");\n/* harmony import */ var _components_icons__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../components/icons */ "../../components/icons.tsx");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _renderer_renderElement__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../renderer/renderElement */ "../../renderer/renderElement.ts");\n/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../math */ "../../math.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _components_Tooltip__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../components/Tooltip */ "../../components/Tooltip.tsx");\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../scene */ "../../scene/index.ts");\n/* harmony import */ var _collision__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./collision */ "../../element/collision.ts");\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./ */ "../../element/index.ts");\n/* harmony import */ var _data_url__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../data/url */ "../../data/url.ts");\n/* harmony import */ var _Hyperlink_scss__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./Hyperlink.scss */ "../../element/Hyperlink.scss");\n/* harmony import */ var _analytics__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../analytics */ "../../analytics.ts");\n/* harmony import */ var _components_App__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../components/App */ "../../components/App.tsx");\n/* harmony import */ var _typeChecks__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../scene/ShapeCache */ "../../scene/ShapeCache.ts");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst CONTAINER_WIDTH = 320;\nconst SPACE_BOTTOM = 85;\nconst CONTAINER_PADDING = 5;\nconst CONTAINER_HEIGHT = 42;\nconst AUTO_HIDE_TIMEOUT = 500;\nconst EXTERNAL_LINK_IMG = document.createElement("img");\nEXTERNAL_LINK_IMG.src = `data:${_constants__WEBPACK_IMPORTED_MODULE_13__.MIME_TYPES.svg}, ${encodeURIComponent(`<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="#1971c2" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-external-link"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1="10" y1="14" x2="21" y2="3"></line></svg>`)}`;\nlet IS_HYPERLINK_TOOLTIP_VISIBLE = false;\nconst embeddableLinkCache = new Map();\nconst Hyperlink = ({\n  element,\n  setAppState,\n  onLinkOpen,\n  setToast\n}) => {\n  const appState = (0,_components_App__WEBPACK_IMPORTED_MODULE_21__.useExcalidrawAppState)();\n  const appProps = (0,_components_App__WEBPACK_IMPORTED_MODULE_21__.useAppProps)();\n  const linkVal = element.link || "";\n  const [inputVal, setInputVal] = (0,react__WEBPACK_IMPORTED_MODULE_8__.useState)(linkVal);\n  const inputRef = (0,react__WEBPACK_IMPORTED_MODULE_8__.useRef)(null);\n  const isEditing = appState.showHyperlinkPopup === "editor";\n  const handleSubmit = (0,react__WEBPACK_IMPORTED_MODULE_8__.useCallback)(() => {\n    var _a;\n\n    if (!inputRef.current) {\n      return;\n    }\n\n    const link = (0,_data_url__WEBPACK_IMPORTED_MODULE_18__.normalizeLink)(inputRef.current.value) || null;\n\n    if (!element.link && link) {\n      (0,_analytics__WEBPACK_IMPORTED_MODULE_20__.trackEvent)("hyperlink", "create");\n    }\n\n    if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_22__.isEmbeddableElement)(element)) {\n      if (((_a = appState.activeEmbeddable) === null || _a === void 0 ? void 0 : _a.element) === element) {\n        setAppState({\n          activeEmbeddable: null\n        });\n      }\n\n      if (!link) {\n        (0,_mutateElement__WEBPACK_IMPORTED_MODULE_3__.mutateElement)(element, {\n          validated: false,\n          link: null\n        });\n        return;\n      }\n\n      if (!(0,_embeddable__WEBPACK_IMPORTED_MODULE_2__.embeddableURLValidator)(link, appProps.validateEmbeddable)) {\n        if (link) {\n          setToast({\n            message: (0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)("toast.unableToEmbed"),\n            closable: true\n          });\n        }\n\n        element.link && embeddableLinkCache.set(element.id, element.link);\n        (0,_mutateElement__WEBPACK_IMPORTED_MODULE_3__.mutateElement)(element, {\n          validated: false,\n          link\n        });\n        _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_23__.ShapeCache["delete"](element);\n      } else {\n        const {\n          width,\n          height\n        } = element;\n        const embedLink = (0,_embeddable__WEBPACK_IMPORTED_MODULE_2__.getEmbedLink)(link);\n\n        if (embedLink === null || embedLink === void 0 ? void 0 : embedLink.warning) {\n          setToast({\n            message: embedLink.warning,\n            closable: true\n          });\n        }\n\n        const ar = embedLink ? embedLink.aspectRatio.w / embedLink.aspectRatio.h : 1;\n        const hasLinkChanged = embeddableLinkCache.get(element.id) !== element.link;\n        (0,_mutateElement__WEBPACK_IMPORTED_MODULE_3__.mutateElement)(element, Object.assign(Object.assign({}, hasLinkChanged ? {\n          width: (embedLink === null || embedLink === void 0 ? void 0 : embedLink.type) === "video" ? width > height ? width : height * ar : width,\n          height: (embedLink === null || embedLink === void 0 ? void 0 : embedLink.type) === "video" ? width > height ? width / ar : height : height\n        } : {}), {\n          validated: true,\n          link\n        }));\n        _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_23__.ShapeCache["delete"](element);\n\n        if (embeddableLinkCache.has(element.id)) {\n          embeddableLinkCache.delete(element.id);\n        }\n      }\n    } else {\n      (0,_mutateElement__WEBPACK_IMPORTED_MODULE_3__.mutateElement)(element, {\n        link\n      });\n    }\n  }, [element, setToast, appProps.validateEmbeddable, appState.activeEmbeddable, setAppState]);\n  (0,react__WEBPACK_IMPORTED_MODULE_8__.useLayoutEffect)(() => {\n    return () => {\n      handleSubmit();\n    };\n  }, [handleSubmit]);\n  (0,react__WEBPACK_IMPORTED_MODULE_8__.useEffect)(() => {\n    let timeoutId = null;\n\n    const handlePointerMove = event => {\n      if (isEditing) {\n        return;\n      }\n\n      if (timeoutId) {\n        clearTimeout(timeoutId);\n      }\n\n      const shouldHide = shouldHideLinkPopup(element, appState, [event.clientX, event.clientY]);\n\n      if (shouldHide) {\n        timeoutId = window.setTimeout(() => {\n          setAppState({\n            showHyperlinkPopup: false\n          });\n        }, AUTO_HIDE_TIMEOUT);\n      }\n    };\n\n    window.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_13__.EVENT.POINTER_MOVE, handlePointerMove, false);\n    return () => {\n      window.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_13__.EVENT.POINTER_MOVE, handlePointerMove, false);\n\n      if (timeoutId) {\n        clearTimeout(timeoutId);\n      }\n    };\n  }, [appState, element, isEditing, setAppState]);\n  const handleRemove = (0,react__WEBPACK_IMPORTED_MODULE_8__.useCallback)(() => {\n    (0,_analytics__WEBPACK_IMPORTED_MODULE_20__.trackEvent)("hyperlink", "delete");\n    (0,_mutateElement__WEBPACK_IMPORTED_MODULE_3__.mutateElement)(element, {\n      link: null\n    });\n\n    if (isEditing) {\n      inputRef.current.value = "";\n    }\n\n    setAppState({\n      showHyperlinkPopup: false\n    });\n  }, [setAppState, element, isEditing]);\n\n  const onEdit = () => {\n    (0,_analytics__WEBPACK_IMPORTED_MODULE_20__.trackEvent)("hyperlink", "edit", "popup-ui");\n    setAppState({\n      showHyperlinkPopup: "editor"\n    });\n  };\n\n  const {\n    x,\n    y\n  } = getCoordsForPopover(element, appState);\n\n  if (appState.draggingElement || appState.resizingElement || appState.isRotating || appState.openMenu || appState.viewModeEnabled) {\n    return null;\n  }\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n    className: "excalidraw-hyperlinkContainer",\n    style: {\n      top: `${y}px`,\n      left: `${x}px`,\n      width: CONTAINER_WIDTH,\n      padding: CONTAINER_PADDING\n    },\n    onClick: () => {\n      if (!element.link && !isEditing) {\n        setAppState({\n          showHyperlinkPopup: "editor"\n        });\n      }\n    }\n  }, {\n    children: [isEditing ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input", {\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_9__["default"])("excalidraw-hyperlinkContainer-input"),\n      placeholder: "Type or paste your link here",\n      ref: inputRef,\n      value: inputVal,\n      onChange: event => setInputVal(event.target.value),\n      autoFocus: true,\n      onKeyDown: event => {\n        event.stopPropagation(); // prevent cmd/ctrl+k shortcut when editing link\n\n        if (event[_keys__WEBPACK_IMPORTED_MODULE_10__.KEYS.CTRL_OR_CMD] && event.key === _keys__WEBPACK_IMPORTED_MODULE_10__.KEYS.K) {\n          event.preventDefault();\n        }\n\n        if (event.key === _keys__WEBPACK_IMPORTED_MODULE_10__.KEYS.ENTER || event.key === _keys__WEBPACK_IMPORTED_MODULE_10__.KEYS.ESCAPE) {\n          handleSubmit();\n          setAppState({\n            showHyperlinkPopup: "info"\n          });\n        }\n      }\n    }) : element.link ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("a", Object.assign({\n      href: (0,_data_url__WEBPACK_IMPORTED_MODULE_18__.normalizeLink)(element.link || ""),\n      className: "excalidraw-hyperlinkContainer-link",\n      target: (0,_data_url__WEBPACK_IMPORTED_MODULE_18__.isLocalLink)(element.link) ? "_self" : "_blank",\n      onClick: event => {\n        if (element.link && onLinkOpen) {\n          const customEvent = (0,_utils__WEBPACK_IMPORTED_MODULE_1__.wrapEvent)(_constants__WEBPACK_IMPORTED_MODULE_13__.EVENT.EXCALIDRAW_LINK, event.nativeEvent);\n          onLinkOpen(Object.assign(Object.assign({}, element), {\n            link: (0,_data_url__WEBPACK_IMPORTED_MODULE_18__.normalizeLink)(element.link)\n          }), customEvent);\n\n          if (customEvent.defaultPrevented) {\n            event.preventDefault();\n          }\n        }\n      },\n      rel: "noopener noreferrer"\n    }, {\n      children: element.link\n    })) : (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: "excalidraw-hyperlinkContainer-link"\n    }, {\n      children: (0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)("labels.link.empty")\n    })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n      className: "excalidraw-hyperlinkContainer__buttons"\n    }, {\n      children: [!isEditing && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ToolButton__WEBPACK_IMPORTED_MODULE_5__.ToolButton, {\n        type: "button",\n        title: (0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)("buttons.edit"),\n        "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)("buttons.edit"),\n        label: (0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)("buttons.edit"),\n        onClick: onEdit,\n        className: "excalidraw-hyperlinkContainer--edit",\n        icon: _components_icons__WEBPACK_IMPORTED_MODULE_6__.FreedrawIcon\n      }), linkVal && !(0,_typeChecks__WEBPACK_IMPORTED_MODULE_22__.isEmbeddableElement)(element) && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ToolButton__WEBPACK_IMPORTED_MODULE_5__.ToolButton, {\n        type: "button",\n        title: (0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)("buttons.remove"),\n        "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)("buttons.remove"),\n        label: (0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)("buttons.remove"),\n        onClick: handleRemove,\n        className: "excalidraw-hyperlinkContainer--remove",\n        icon: _components_icons__WEBPACK_IMPORTED_MODULE_6__.TrashIcon\n      })]\n    }))]\n  }));\n};\n\nconst getCoordsForPopover = (element, appState) => {\n  const [x1, y1] = (0,___WEBPACK_IMPORTED_MODULE_17__.getElementAbsoluteCoords)(element);\n  const {\n    x: viewportX,\n    y: viewportY\n  } = (0,_utils__WEBPACK_IMPORTED_MODULE_1__.sceneCoordsToViewportCoords)({\n    sceneX: x1 + element.width / 2,\n    sceneY: y1\n  }, appState);\n  const x = viewportX - appState.offsetLeft - CONTAINER_WIDTH / 2;\n  const y = viewportY - appState.offsetTop - SPACE_BOTTOM;\n  return {\n    x,\n    y\n  };\n};\n\nconst actionLink = (0,_actions_register__WEBPACK_IMPORTED_MODULE_4__.register)({\n  name: "hyperlink",\n  perform: (elements, appState) => {\n    if (appState.showHyperlinkPopup === "editor") {\n      return false;\n    }\n\n    return {\n      elements,\n      appState: Object.assign(Object.assign({}, appState), {\n        showHyperlinkPopup: "editor",\n        openMenu: null\n      }),\n      commitToHistory: true\n    };\n  },\n  trackEvent: {\n    category: "hyperlink",\n    action: "click"\n  },\n  keyTest: event => event[_keys__WEBPACK_IMPORTED_MODULE_10__.KEYS.CTRL_OR_CMD] && event.key === _keys__WEBPACK_IMPORTED_MODULE_10__.KEYS.K,\n  contextItemLabel: (elements, appState) => getContextMenuLabel(elements, appState),\n  predicate: (elements, appState) => {\n    const selectedElements = (0,_scene__WEBPACK_IMPORTED_MODULE_15__.getSelectedElements)(elements, appState);\n    return selectedElements.length === 1;\n  },\n  PanelComponent: ({\n    elements,\n    appState,\n    updateData\n  }) => {\n    const selectedElements = (0,_scene__WEBPACK_IMPORTED_MODULE_15__.getSelectedElements)(elements, appState);\n    return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ToolButton__WEBPACK_IMPORTED_MODULE_5__.ToolButton, {\n      type: "button",\n      icon: _components_icons__WEBPACK_IMPORTED_MODULE_6__.LinkIcon,\n      "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)(getContextMenuLabel(elements, appState)),\n      title: `${(0,_typeChecks__WEBPACK_IMPORTED_MODULE_22__.isEmbeddableElement)(elements[0]) ? (0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)("labels.link.labelEmbed") : (0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)("labels.link.label")} - ${(0,_utils__WEBPACK_IMPORTED_MODULE_1__.getShortcutKey)("CtrlOrCmd+K")}`,\n      onClick: () => updateData(null),\n      selected: selectedElements.length === 1 && !!selectedElements[0].link\n    });\n  }\n});\nconst getContextMenuLabel = (elements, appState) => {\n  const selectedElements = (0,_scene__WEBPACK_IMPORTED_MODULE_15__.getSelectedElements)(elements, appState);\n  const label = selectedElements[0].link ? (0,_typeChecks__WEBPACK_IMPORTED_MODULE_22__.isEmbeddableElement)(selectedElements[0]) ? "labels.link.editEmbed" : "labels.link.edit" : (0,_typeChecks__WEBPACK_IMPORTED_MODULE_22__.isEmbeddableElement)(selectedElements[0]) ? "labels.link.createEmbed" : "labels.link.create";\n  return label;\n};\nconst getLinkHandleFromCoords = ([x1, y1, x2, y2], angle, appState) => {\n  const size = _renderer_renderElement__WEBPACK_IMPORTED_MODULE_11__.DEFAULT_LINK_SIZE;\n  const linkWidth = size / appState.zoom.value;\n  const linkHeight = size / appState.zoom.value;\n  const linkMarginY = size / appState.zoom.value;\n  const centerX = (x1 + x2) / 2;\n  const centerY = (y1 + y2) / 2;\n  const centeringOffset = (size - 8) / (2 * appState.zoom.value);\n  const dashedLineMargin = 4 / appState.zoom.value; // Same as `ne` resize handle\n\n  const x = x2 + dashedLineMargin - centeringOffset;\n  const y = y1 - dashedLineMargin - linkMarginY + centeringOffset;\n  const [rotatedX, rotatedY] = (0,_math__WEBPACK_IMPORTED_MODULE_12__.rotate)(x + linkWidth / 2, y + linkHeight / 2, centerX, centerY, angle);\n  return [rotatedX - linkWidth / 2, rotatedY - linkHeight / 2, linkWidth, linkHeight];\n};\nconst isPointHittingLinkIcon = (element, appState, [x, y]) => {\n  const threshold = 4 / appState.zoom.value;\n  const [x1, y1, x2, y2] = (0,___WEBPACK_IMPORTED_MODULE_17__.getElementAbsoluteCoords)(element);\n  const [linkX, linkY, linkWidth, linkHeight] = getLinkHandleFromCoords([x1, y1, x2, y2], element.angle, appState);\n  const hitLink = x > linkX - threshold && x < linkX + threshold + linkWidth && y > linkY - threshold && y < linkY + linkHeight + threshold;\n  return hitLink;\n};\nconst isPointHittingLink = (element, appState, [x, y], isMobile) => {\n  if (!element.link || appState.selectedElementIds[element.id]) {\n    return false;\n  }\n\n  const threshold = 4 / appState.zoom.value;\n\n  if (!isMobile && appState.viewModeEnabled && (0,_collision__WEBPACK_IMPORTED_MODULE_16__.isPointHittingElementBoundingBox)(element, [x, y], threshold, null)) {\n    return true;\n  }\n\n  return isPointHittingLinkIcon(element, appState, [x, y]);\n};\nlet HYPERLINK_TOOLTIP_TIMEOUT_ID = null;\nconst showHyperlinkTooltip = (element, appState) => {\n  if (HYPERLINK_TOOLTIP_TIMEOUT_ID) {\n    clearTimeout(HYPERLINK_TOOLTIP_TIMEOUT_ID);\n  }\n\n  HYPERLINK_TOOLTIP_TIMEOUT_ID = window.setTimeout(() => renderTooltip(element, appState), _constants__WEBPACK_IMPORTED_MODULE_13__.HYPERLINK_TOOLTIP_DELAY);\n};\n\nconst renderTooltip = (element, appState) => {\n  if (!element.link) {\n    return;\n  }\n\n  const tooltipDiv = (0,_components_Tooltip__WEBPACK_IMPORTED_MODULE_14__.getTooltipDiv)();\n  tooltipDiv.classList.add("excalidraw-tooltip--visible");\n  tooltipDiv.style.maxWidth = "20rem";\n  tooltipDiv.textContent = element.link;\n  const [x1, y1, x2, y2] = (0,___WEBPACK_IMPORTED_MODULE_17__.getElementAbsoluteCoords)(element);\n  const [linkX, linkY, linkWidth, linkHeight] = getLinkHandleFromCoords([x1, y1, x2, y2], element.angle, appState);\n  const linkViewportCoords = (0,_utils__WEBPACK_IMPORTED_MODULE_1__.sceneCoordsToViewportCoords)({\n    sceneX: linkX,\n    sceneY: linkY\n  }, appState);\n  (0,_components_Tooltip__WEBPACK_IMPORTED_MODULE_14__.updateTooltipPosition)(tooltipDiv, {\n    left: linkViewportCoords.x,\n    top: linkViewportCoords.y,\n    width: linkWidth,\n    height: linkHeight\n  }, "top");\n  (0,_analytics__WEBPACK_IMPORTED_MODULE_20__.trackEvent)("hyperlink", "tooltip", "link-icon");\n  IS_HYPERLINK_TOOLTIP_VISIBLE = true;\n};\n\nconst hideHyperlinkToolip = () => {\n  if (HYPERLINK_TOOLTIP_TIMEOUT_ID) {\n    clearTimeout(HYPERLINK_TOOLTIP_TIMEOUT_ID);\n  }\n\n  if (IS_HYPERLINK_TOOLTIP_VISIBLE) {\n    IS_HYPERLINK_TOOLTIP_VISIBLE = false;\n    (0,_components_Tooltip__WEBPACK_IMPORTED_MODULE_14__.getTooltipDiv)().classList.remove("excalidraw-tooltip--visible");\n  }\n};\nconst shouldHideLinkPopup = (element, appState, [clientX, clientY]) => {\n  const {\n    x: sceneX,\n    y: sceneY\n  } = (0,_utils__WEBPACK_IMPORTED_MODULE_1__.viewportCoordsToSceneCoords)({\n    clientX,\n    clientY\n  }, appState);\n  const threshold = 15 / appState.zoom.value; // hitbox to prevent hiding when hovered in element bounding box\n\n  if ((0,_collision__WEBPACK_IMPORTED_MODULE_16__.isPointHittingElementBoundingBox)(element, [sceneX, sceneY], threshold, null)) {\n    return false;\n  }\n\n  const [x1, y1, x2] = (0,___WEBPACK_IMPORTED_MODULE_17__.getElementAbsoluteCoords)(element); // hit box to prevent hiding when hovered in the vertical area between element and popover\n\n  if (sceneX >= x1 && sceneX <= x2 && sceneY >= y1 - SPACE_BOTTOM && sceneY <= y1) {\n    return false;\n  } // hit box to prevent hiding when hovered around popover within threshold\n\n\n  const {\n    x: popoverX,\n    y: popoverY\n  } = getCoordsForPopover(element, appState);\n\n  if (clientX >= popoverX - threshold && clientX <= popoverX + CONTAINER_WIDTH + CONTAINER_PADDING * 2 + threshold && clientY >= popoverY - threshold && clientY <= popoverY + threshold + CONTAINER_PADDING * 2 + CONTAINER_HEIGHT) {\n    return false;\n  }\n\n  return true;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 26280 characters]\n//# sourceURL=webpack-internal:///../../element/Hyperlink.tsx\n');
              }
            ),
            /***/
            "../../element/binding.ts": (
              /*!********************************!*\
                !*** ../../element/binding.ts ***!
                \********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "bindLinearElement": () => (/* binding */ bindLinearElement),\n/* harmony export */   "bindOrUnbindLinearElement": () => (/* binding */ bindOrUnbindLinearElement),\n/* harmony export */   "bindOrUnbindSelectedElements": () => (/* binding */ bindOrUnbindSelectedElements),\n/* harmony export */   "fixBindingsAfterDeletion": () => (/* binding */ fixBindingsAfterDeletion),\n/* harmony export */   "fixBindingsAfterDuplication": () => (/* binding */ fixBindingsAfterDuplication),\n/* harmony export */   "getEligibleElementsForBinding": () => (/* binding */ getEligibleElementsForBinding),\n/* harmony export */   "getHoveredElementForBinding": () => (/* binding */ getHoveredElementForBinding),\n/* harmony export */   "isBindingEnabled": () => (/* binding */ isBindingEnabled),\n/* harmony export */   "isLinearElementSimpleAndAlreadyBound": () => (/* binding */ isLinearElementSimpleAndAlreadyBound),\n/* harmony export */   "maybeBindLinearElement": () => (/* binding */ maybeBindLinearElement),\n/* harmony export */   "shouldEnableBindingForPointerEvent": () => (/* binding */ shouldEnableBindingForPointerEvent),\n/* harmony export */   "unbindLinearElements": () => (/* binding */ unbindLinearElements),\n/* harmony export */   "updateBoundElements": () => (/* binding */ updateBoundElements)\n/* harmony export */ });\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../scene */ "../../scene/index.ts");\n/* harmony import */ var _typeChecks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var _collision__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./collision */ "../../element/collision.ts");\n/* harmony import */ var _mutateElement__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./mutateElement */ "../../element/mutateElement.ts");\n/* harmony import */ var _scene_Scene__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../scene/Scene */ "../../scene/Scene.ts");\n/* harmony import */ var _linearElementEditor__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./linearElementEditor */ "../../element/linearElementEditor.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _textElement__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./textElement */ "../../element/textElement.ts");\n\n\n\n\n\n\n\n\n\nconst shouldEnableBindingForPointerEvent = event => {\n  return !event[_keys__WEBPACK_IMPORTED_MODULE_7__.KEYS.CTRL_OR_CMD];\n};\nconst isBindingEnabled = appState => {\n  return appState.isBindingEnabled;\n};\n\nconst getNonDeletedElements = (scene, ids) => {\n  const result = [];\n  ids.forEach(id => {\n    const element = scene.getNonDeletedElement(id);\n\n    if (element != null) {\n      result.push(element);\n    }\n  });\n  return result;\n};\n\nconst bindOrUnbindLinearElement = (linearElement, startBindingElement, endBindingElement) => {\n  const boundToElementIds = new Set();\n  const unboundFromElementIds = new Set();\n  bindOrUnbindLinearElementEdge(linearElement, startBindingElement, endBindingElement, "start", boundToElementIds, unboundFromElementIds);\n  bindOrUnbindLinearElementEdge(linearElement, endBindingElement, startBindingElement, "end", boundToElementIds, unboundFromElementIds);\n  const onlyUnbound = Array.from(unboundFromElementIds).filter(id => !boundToElementIds.has(id));\n  getNonDeletedElements(_scene_Scene__WEBPACK_IMPORTED_MODULE_4__["default"].getScene(linearElement), onlyUnbound).forEach(element => {\n    var _a;\n\n    (0,_mutateElement__WEBPACK_IMPORTED_MODULE_3__.mutateElement)(element, {\n      boundElements: (_a = element.boundElements) === null || _a === void 0 ? void 0 : _a.filter(element => element.type !== "arrow" || element.id !== linearElement.id)\n    });\n  });\n};\n\nconst bindOrUnbindLinearElementEdge = (linearElement, bindableElement, otherEdgeBindableElement, startOrEnd, // Is mutated\nboundToElementIds, // Is mutated\nunboundFromElementIds) => {\n  if (bindableElement !== "keep") {\n    if (bindableElement != null) {\n      // Don\'t bind if we\'re trying to bind or are already bound to the same\n      // element on the other edge already ("start" edge takes precedence).\n      if (otherEdgeBindableElement == null || (otherEdgeBindableElement === "keep" ? !isLinearElementSimpleAndAlreadyBoundOnOppositeEdge(linearElement, bindableElement, startOrEnd) : startOrEnd === "start" || otherEdgeBindableElement.id !== bindableElement.id)) {\n        bindLinearElement(linearElement, bindableElement, startOrEnd);\n        boundToElementIds.add(bindableElement.id);\n      }\n    } else {\n      const unbound = unbindLinearElement(linearElement, startOrEnd);\n\n      if (unbound != null) {\n        unboundFromElementIds.add(unbound);\n      }\n    }\n  }\n};\n\nconst bindOrUnbindSelectedElements = elements => {\n  elements.forEach(element => {\n    if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isBindingElement)(element)) {\n      bindOrUnbindLinearElement(element, getElligibleElementForBindingElement(element, "start"), getElligibleElementForBindingElement(element, "end"));\n    } else if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isBindableElement)(element)) {\n      maybeBindBindableElement(element);\n    }\n  });\n};\n\nconst maybeBindBindableElement = bindableElement => {\n  getElligibleElementsForBindableElementAndWhere(bindableElement).forEach(([linearElement, where]) => bindOrUnbindLinearElement(linearElement, where === "end" ? "keep" : bindableElement, where === "start" ? "keep" : bindableElement));\n};\n\nconst maybeBindLinearElement = (linearElement, appState, scene, pointerCoords) => {\n  if (appState.startBoundElement != null) {\n    bindLinearElement(linearElement, appState.startBoundElement, "start");\n  }\n\n  const hoveredElement = getHoveredElementForBinding(pointerCoords, scene);\n\n  if (hoveredElement != null && !isLinearElementSimpleAndAlreadyBoundOnOppositeEdge(linearElement, hoveredElement, "end")) {\n    bindLinearElement(linearElement, hoveredElement, "end");\n  }\n};\nconst bindLinearElement = (linearElement, hoveredElement, startOrEnd) => {\n  (0,_mutateElement__WEBPACK_IMPORTED_MODULE_3__.mutateElement)(linearElement, {\n    [startOrEnd === "start" ? "startBinding" : "endBinding"]: Object.assign({\n      elementId: hoveredElement.id\n    }, calculateFocusAndGap(linearElement, hoveredElement, startOrEnd))\n  });\n  const boundElementsMap = (0,_utils__WEBPACK_IMPORTED_MODULE_6__.arrayToMap)(hoveredElement.boundElements || []);\n\n  if (!boundElementsMap.has(linearElement.id)) {\n    (0,_mutateElement__WEBPACK_IMPORTED_MODULE_3__.mutateElement)(hoveredElement, {\n      boundElements: (hoveredElement.boundElements || []).concat({\n        id: linearElement.id,\n        type: "arrow"\n      })\n    });\n  }\n}; // Don\'t bind both ends of a simple segment\n\nconst isLinearElementSimpleAndAlreadyBoundOnOppositeEdge = (linearElement, bindableElement, startOrEnd) => {\n  const otherBinding = linearElement[startOrEnd === "start" ? "endBinding" : "startBinding"];\n  return isLinearElementSimpleAndAlreadyBound(linearElement, otherBinding === null || otherBinding === void 0 ? void 0 : otherBinding.elementId, bindableElement);\n};\n\nconst isLinearElementSimpleAndAlreadyBound = (linearElement, alreadyBoundToId, bindableElement) => {\n  return alreadyBoundToId === bindableElement.id && linearElement.points.length < 3;\n};\nconst unbindLinearElements = elements => {\n  elements.forEach(element => {\n    if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isBindingElement)(element)) {\n      bindOrUnbindLinearElement(element, null, null);\n    }\n  });\n};\n\nconst unbindLinearElement = (linearElement, startOrEnd) => {\n  const field = startOrEnd === "start" ? "startBinding" : "endBinding";\n  const binding = linearElement[field];\n\n  if (binding == null) {\n    return null;\n  }\n\n  (0,_mutateElement__WEBPACK_IMPORTED_MODULE_3__.mutateElement)(linearElement, {\n    [field]: null\n  });\n  return binding.elementId;\n};\n\nconst getHoveredElementForBinding = (pointerCoords, scene) => {\n  const hoveredElement = (0,_scene__WEBPACK_IMPORTED_MODULE_0__.getElementAtPosition)(scene.getNonDeletedElements(), element => (0,_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isBindableElement)(element, false) && (0,_collision__WEBPACK_IMPORTED_MODULE_2__.bindingBorderTest)(element, pointerCoords));\n  return hoveredElement;\n};\n\nconst calculateFocusAndGap = (linearElement, hoveredElement, startOrEnd) => {\n  const direction = startOrEnd === "start" ? -1 : 1;\n  const edgePointIndex = direction === -1 ? 0 : linearElement.points.length - 1;\n  const adjacentPointIndex = edgePointIndex - direction;\n  const edgePoint = _linearElementEditor__WEBPACK_IMPORTED_MODULE_5__.LinearElementEditor.getPointAtIndexGlobalCoordinates(linearElement, edgePointIndex);\n  const adjacentPoint = _linearElementEditor__WEBPACK_IMPORTED_MODULE_5__.LinearElementEditor.getPointAtIndexGlobalCoordinates(linearElement, adjacentPointIndex);\n  return {\n    focus: (0,_collision__WEBPACK_IMPORTED_MODULE_2__.determineFocusDistance)(hoveredElement, adjacentPoint, edgePoint),\n    gap: Math.max(1, (0,_collision__WEBPACK_IMPORTED_MODULE_2__.distanceToBindableElement)(hoveredElement, edgePoint))\n  };\n}; // Supports translating, rotating and scaling `changedElement` with bound\n// linear elements.\n// Because scaling involves moving the focus points as well, it is\n// done before the `changedElement` is updated, and the `newSize` is passed\n// in explicitly.\n\n\nconst updateBoundElements = (changedElement, options) => {\n  var _a;\n\n  const boundLinearElements = ((_a = changedElement.boundElements) !== null && _a !== void 0 ? _a : []).filter(el => el.type === "arrow");\n\n  if (boundLinearElements.length === 0) {\n    return;\n  }\n\n  const {\n    newSize,\n    simultaneouslyUpdated\n  } = options !== null && options !== void 0 ? options : {};\n  const simultaneouslyUpdatedElementIds = getSimultaneouslyUpdatedElementIds(simultaneouslyUpdated);\n  getNonDeletedElements(_scene_Scene__WEBPACK_IMPORTED_MODULE_4__["default"].getScene(changedElement), boundLinearElements.map(el => el.id)).forEach(element => {\n    if (!(0,_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isLinearElement)(element)) {\n      return;\n    }\n\n    const bindableElement = changedElement; // In case the boundElements are stale\n\n    if (!doesNeedUpdate(element, bindableElement)) {\n      return;\n    }\n\n    const startBinding = maybeCalculateNewGapWhenScaling(bindableElement, element.startBinding, newSize);\n    const endBinding = maybeCalculateNewGapWhenScaling(bindableElement, element.endBinding, newSize); // `linearElement` is being moved/scaled already, just update the binding\n\n    if (simultaneouslyUpdatedElementIds.has(element.id)) {\n      (0,_mutateElement__WEBPACK_IMPORTED_MODULE_3__.mutateElement)(element, {\n        startBinding,\n        endBinding\n      });\n      return;\n    }\n\n    updateBoundPoint(element, "start", startBinding, changedElement);\n    updateBoundPoint(element, "end", endBinding, changedElement);\n    const boundText = (0,_textElement__WEBPACK_IMPORTED_MODULE_8__.getBoundTextElement)(element);\n\n    if (boundText) {\n      (0,_textElement__WEBPACK_IMPORTED_MODULE_8__.handleBindTextResize)(element, false);\n    }\n  });\n};\n\nconst doesNeedUpdate = (boundElement, changedElement) => {\n  var _a, _b;\n\n  return ((_a = boundElement.startBinding) === null || _a === void 0 ? void 0 : _a.elementId) === changedElement.id || ((_b = boundElement.endBinding) === null || _b === void 0 ? void 0 : _b.elementId) === changedElement.id;\n};\n\nconst getSimultaneouslyUpdatedElementIds = simultaneouslyUpdated => {\n  return new Set((simultaneouslyUpdated || []).map(element => element.id));\n};\n\nconst updateBoundPoint = (linearElement, startOrEnd, binding, changedElement) => {\n  if (binding == null || // We only need to update the other end if this is a 2 point line element\n  binding.elementId !== changedElement.id && linearElement.points.length > 2) {\n    return;\n  }\n\n  const bindingElement = _scene_Scene__WEBPACK_IMPORTED_MODULE_4__["default"].getScene(linearElement).getElement(binding.elementId);\n\n  if (bindingElement == null) {\n    // We\'re not cleaning up after deleted elements atm., so handle this case\n    return;\n  }\n\n  const direction = startOrEnd === "start" ? -1 : 1;\n  const edgePointIndex = direction === -1 ? 0 : linearElement.points.length - 1;\n  const adjacentPointIndex = edgePointIndex - direction;\n  const adjacentPoint = _linearElementEditor__WEBPACK_IMPORTED_MODULE_5__.LinearElementEditor.getPointAtIndexGlobalCoordinates(linearElement, adjacentPointIndex);\n  const focusPointAbsolute = (0,_collision__WEBPACK_IMPORTED_MODULE_2__.determineFocusPoint)(bindingElement, binding.focus, adjacentPoint);\n  let newEdgePoint; // The linear element was not originally pointing inside the bound shape,\n  // we can point directly at the focus point\n\n  if (binding.gap === 0) {\n    newEdgePoint = focusPointAbsolute;\n  } else {\n    const intersections = (0,_collision__WEBPACK_IMPORTED_MODULE_2__.intersectElementWithLine)(bindingElement, adjacentPoint, focusPointAbsolute, binding.gap);\n\n    if (intersections.length === 0) {\n      // This should never happen, since focusPoint should always be\n      // inside the element, but just in case, bail out\n      newEdgePoint = focusPointAbsolute;\n    } else {\n      // Guaranteed to intersect because focusPoint is always inside the shape\n      newEdgePoint = intersections[0];\n    }\n  }\n\n  _linearElementEditor__WEBPACK_IMPORTED_MODULE_5__.LinearElementEditor.movePoints(linearElement, [{\n    index: edgePointIndex,\n    point: _linearElementEditor__WEBPACK_IMPORTED_MODULE_5__.LinearElementEditor.pointFromAbsoluteCoords(linearElement, newEdgePoint)\n  }], {\n    [startOrEnd === "start" ? "startBinding" : "endBinding"]: binding\n  });\n};\n\nconst maybeCalculateNewGapWhenScaling = (changedElement, currentBinding, newSize) => {\n  if (currentBinding == null || newSize == null) {\n    return currentBinding;\n  }\n\n  const {\n    gap,\n    focus,\n    elementId\n  } = currentBinding;\n  const {\n    width: newWidth,\n    height: newHeight\n  } = newSize;\n  const {\n    width,\n    height\n  } = changedElement;\n  const newGap = Math.max(1, Math.min((0,_collision__WEBPACK_IMPORTED_MODULE_2__.maxBindingGap)(changedElement, newWidth, newHeight), gap * (newWidth < newHeight ? newWidth / width : newHeight / height)));\n  return {\n    elementId,\n    gap: newGap,\n    focus\n  };\n}; // TODO: this is a bottleneck, optimise\n\n\nconst getEligibleElementsForBinding = elements => {\n  const includedElementIds = new Set(elements.map(({\n    id\n  }) => id));\n  return elements.flatMap(element => (0,_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isBindingElement)(element, false) ? getElligibleElementsForBindingElement(element).filter(element => !includedElementIds.has(element.id)) : (0,_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isBindableElement)(element, false) ? getElligibleElementsForBindableElementAndWhere(element).filter(binding => !includedElementIds.has(binding[0].id)) : []);\n};\n\nconst getElligibleElementsForBindingElement = linearElement => {\n  return [getElligibleElementForBindingElement(linearElement, "start"), getElligibleElementForBindingElement(linearElement, "end")].filter(element => element != null);\n};\n\nconst getElligibleElementForBindingElement = (linearElement, startOrEnd) => {\n  return getHoveredElementForBinding(getLinearElementEdgeCoors(linearElement, startOrEnd), _scene_Scene__WEBPACK_IMPORTED_MODULE_4__["default"].getScene(linearElement));\n};\n\nconst getLinearElementEdgeCoors = (linearElement, startOrEnd) => {\n  const index = startOrEnd === "start" ? 0 : -1;\n  return (0,_utils__WEBPACK_IMPORTED_MODULE_6__.tupleToCoors)(_linearElementEditor__WEBPACK_IMPORTED_MODULE_5__.LinearElementEditor.getPointAtIndexGlobalCoordinates(linearElement, index));\n};\n\nconst getElligibleElementsForBindableElementAndWhere = bindableElement => {\n  return _scene_Scene__WEBPACK_IMPORTED_MODULE_4__["default"].getScene(bindableElement).getNonDeletedElements().map(element => {\n    if (!(0,_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isBindingElement)(element, false)) {\n      return null;\n    }\n\n    const canBindStart = isLinearElementEligibleForNewBindingByBindable(element, "start", bindableElement);\n    const canBindEnd = isLinearElementEligibleForNewBindingByBindable(element, "end", bindableElement);\n\n    if (!canBindStart && !canBindEnd) {\n      return null;\n    }\n\n    return [element, canBindStart && canBindEnd ? "both" : canBindStart ? "start" : "end", bindableElement];\n  }).filter(maybeElement => maybeElement != null);\n};\n\nconst isLinearElementEligibleForNewBindingByBindable = (linearElement, startOrEnd, bindableElement) => {\n  const existingBinding = linearElement[startOrEnd === "start" ? "startBinding" : "endBinding"];\n  return existingBinding == null && !isLinearElementSimpleAndAlreadyBoundOnOppositeEdge(linearElement, bindableElement, startOrEnd) && (0,_collision__WEBPACK_IMPORTED_MODULE_2__.bindingBorderTest)(bindableElement, getLinearElementEdgeCoors(linearElement, startOrEnd));\n}; // We need to:\n// 1: Update elements not selected to point to duplicated elements\n// 2: Update duplicated elements to point to other duplicated elements\n\n\nconst fixBindingsAfterDuplication = (sceneElements, oldElements, oldIdToDuplicatedId, // There are three copying mechanisms: Copy-paste, duplication and alt-drag.\n// Only when alt-dragging the new "duplicates" act as the "old", while\n// the "old" elements act as the "new copy" - essentially working reverse\n// to the other two.\nduplicatesServeAsOld) => {\n  // First collect all the binding/bindable elements, so we only update\n  // each once, regardless of whether they were duplicated or not.\n  const allBoundElementIds = new Set();\n  const allBindableElementIds = new Set();\n  const shouldReverseRoles = duplicatesServeAsOld === "duplicatesServeAsOld";\n  oldElements.forEach(oldElement => {\n    const {\n      boundElements\n    } = oldElement;\n\n    if (boundElements != null && boundElements.length > 0) {\n      boundElements.forEach(boundElement => {\n        if (shouldReverseRoles && !oldIdToDuplicatedId.has(boundElement.id)) {\n          allBoundElementIds.add(boundElement.id);\n        }\n      });\n      allBindableElementIds.add(oldIdToDuplicatedId.get(oldElement.id));\n    }\n\n    if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isBindingElement)(oldElement)) {\n      if (oldElement.startBinding != null) {\n        const {\n          elementId\n        } = oldElement.startBinding;\n\n        if (shouldReverseRoles && !oldIdToDuplicatedId.has(elementId)) {\n          allBindableElementIds.add(elementId);\n        }\n      }\n\n      if (oldElement.endBinding != null) {\n        const {\n          elementId\n        } = oldElement.endBinding;\n\n        if (shouldReverseRoles && !oldIdToDuplicatedId.has(elementId)) {\n          allBindableElementIds.add(elementId);\n        }\n      }\n\n      if (oldElement.startBinding != null || oldElement.endBinding != null) {\n        allBoundElementIds.add(oldIdToDuplicatedId.get(oldElement.id));\n      }\n    }\n  }); // Update the linear elements\n\n  sceneElements.filter(({\n    id\n  }) => allBoundElementIds.has(id)).forEach(element => {\n    const {\n      startBinding,\n      endBinding\n    } = element;\n    (0,_mutateElement__WEBPACK_IMPORTED_MODULE_3__.mutateElement)(element, {\n      startBinding: newBindingAfterDuplication(startBinding, oldIdToDuplicatedId),\n      endBinding: newBindingAfterDuplication(endBinding, oldIdToDuplicatedId)\n    });\n  }); // Update the bindable shapes\n\n  sceneElements.filter(({\n    id\n  }) => allBindableElementIds.has(id)).forEach(bindableElement => {\n    const {\n      boundElements\n    } = bindableElement;\n\n    if (boundElements != null && boundElements.length > 0) {\n      (0,_mutateElement__WEBPACK_IMPORTED_MODULE_3__.mutateElement)(bindableElement, {\n        boundElements: boundElements.map(boundElement => oldIdToDuplicatedId.has(boundElement.id) ? {\n          id: oldIdToDuplicatedId.get(boundElement.id),\n          type: boundElement.type\n        } : boundElement)\n      });\n    }\n  });\n};\n\nconst newBindingAfterDuplication = (binding, oldIdToDuplicatedId) => {\n  var _a;\n\n  if (binding == null) {\n    return null;\n  }\n\n  const {\n    elementId,\n    focus,\n    gap\n  } = binding;\n  return {\n    focus,\n    gap,\n    elementId: (_a = oldIdToDuplicatedId.get(elementId)) !== null && _a !== void 0 ? _a : elementId\n  };\n};\n\nconst fixBindingsAfterDeletion = (sceneElements, deletedElements) => {\n  const deletedElementIds = new Set(deletedElements.map(element => element.id)); // non-deleted which bindings need to be updated\n\n  const affectedElements = new Set();\n  deletedElements.forEach(deletedElement => {\n    var _a;\n\n    if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isBindableElement)(deletedElement)) {\n      (_a = deletedElement.boundElements) === null || _a === void 0 ? void 0 : _a.forEach(element => {\n        if (!deletedElementIds.has(element.id)) {\n          affectedElements.add(element.id);\n        }\n      });\n    } else if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isBindingElement)(deletedElement)) {\n      if (deletedElement.startBinding) {\n        affectedElements.add(deletedElement.startBinding.elementId);\n      }\n\n      if (deletedElement.endBinding) {\n        affectedElements.add(deletedElement.endBinding.elementId);\n      }\n    }\n  });\n  sceneElements.filter(({\n    id\n  }) => affectedElements.has(id)).forEach(element => {\n    if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isBindableElement)(element)) {\n      (0,_mutateElement__WEBPACK_IMPORTED_MODULE_3__.mutateElement)(element, {\n        boundElements: newBoundElementsAfterDeletion(element.boundElements, deletedElementIds)\n      });\n    } else if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isBindingElement)(element)) {\n      (0,_mutateElement__WEBPACK_IMPORTED_MODULE_3__.mutateElement)(element, {\n        startBinding: newBindingAfterDeletion(element.startBinding, deletedElementIds),\n        endBinding: newBindingAfterDeletion(element.endBinding, deletedElementIds)\n      });\n    }\n  });\n};\n\nconst newBindingAfterDeletion = (binding, deletedElementIds) => {\n  if (binding == null || deletedElementIds.has(binding.elementId)) {\n    return null;\n  }\n\n  return binding;\n};\n\nconst newBoundElementsAfterDeletion = (boundElements, deletedElementIds) => {\n  if (!boundElements) {\n    return null;\n  }\n\n  return boundElements.filter(ele => !deletedElementIds.has(ele.id));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 29932 characters]\n//# sourceURL=webpack-internal:///../../element/binding.ts\n');
              }
            ),
            /***/
            "../../element/bounds.ts": (
              /*!*******************************!*\
                !*** ../../element/bounds.ts ***!
                \*******************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "ElementBounds": () => (/* binding */ ElementBounds),\n/* harmony export */   "getArrowheadPoints": () => (/* binding */ getArrowheadPoints),\n/* harmony export */   "getBoundsFromPoints": () => (/* binding */ getBoundsFromPoints),\n/* harmony export */   "getClosestElementBounds": () => (/* binding */ getClosestElementBounds),\n/* harmony export */   "getCommonBoundingBox": () => (/* binding */ getCommonBoundingBox),\n/* harmony export */   "getCommonBounds": () => (/* binding */ getCommonBounds),\n/* harmony export */   "getCurvePathOps": () => (/* binding */ getCurvePathOps),\n/* harmony export */   "getDiamondPoints": () => (/* binding */ getDiamondPoints),\n/* harmony export */   "getDraggedElementsBounds": () => (/* binding */ getDraggedElementsBounds),\n/* harmony export */   "getElementAbsoluteCoords": () => (/* binding */ getElementAbsoluteCoords),\n/* harmony export */   "getElementBounds": () => (/* binding */ getElementBounds),\n/* harmony export */   "getElementLineSegments": () => (/* binding */ getElementLineSegments),\n/* harmony export */   "getElementPointsCoords": () => (/* binding */ getElementPointsCoords),\n/* harmony export */   "getMinMaxXYFromCurvePathOps": () => (/* binding */ getMinMaxXYFromCurvePathOps),\n/* harmony export */   "getRectangleBoxAbsoluteCoords": () => (/* binding */ getRectangleBoxAbsoluteCoords),\n/* harmony export */   "getResizedElementAbsoluteCoords": () => (/* binding */ getResizedElementAbsoluteCoords),\n/* harmony export */   "pointRelativeTo": () => (/* binding */ pointRelativeTo)\n/* harmony export */ });\n/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math */ "../../math.ts");\n/* harmony import */ var roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! roughjs/bin/rough */ "../../../node_modules/roughjs/bin/rough.js");\n/* harmony import */ var _scene_Shape__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../scene/Shape */ "../../scene/Shape.ts");\n/* harmony import */ var _typeChecks__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var _points__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../points */ "../../points.ts");\n/* harmony import */ var _textElement__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./textElement */ "../../element/textElement.ts");\n/* harmony import */ var _linearElementEditor__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./linearElementEditor */ "../../element/linearElementEditor.ts");\n/* harmony import */ var _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../scene/ShapeCache */ "../../scene/ShapeCache.ts");\n/* harmony import */ var _scene_Scene__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../scene/Scene */ "../../scene/Scene.ts");\n\n\n\n\n\n\n\n\n\nclass ElementBounds {\n  static getBounds(element) {\n    const cachedBounds = ElementBounds.boundsCache.get(element);\n\n    if ((cachedBounds === null || cachedBounds === void 0 ? void 0 : cachedBounds.version) && cachedBounds.version === element.version && // we don\'t invalidate cache when we update containers and not labels,\n    // which is causing problems down the line. Fix TBA.\n    !(0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isBoundToContainer)(element)) {\n      return cachedBounds.bounds;\n    }\n\n    const bounds = ElementBounds.calculateBounds(element); // hack to ensure that downstream checks could retrieve element Scene\n    // so as to have correctly calculated bounds\n    // FIXME remove when we get rid of all the id:Scene / element:Scene mapping\n\n    const shouldCache = _scene_Scene__WEBPACK_IMPORTED_MODULE_8__["default"].getScene(element);\n\n    if (shouldCache) {\n      ElementBounds.boundsCache.set(element, {\n        version: element.version,\n        bounds\n      });\n    }\n\n    return bounds;\n  }\n\n  static calculateBounds(element) {\n    let bounds;\n    const [x1, y1, x2, y2, cx, cy] = getElementAbsoluteCoords(element);\n\n    if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isFreeDrawElement)(element)) {\n      const [minX, minY, maxX, maxY] = getBoundsFromPoints(element.points.map(([x, y]) => (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(x, y, cx - element.x, cy - element.y, element.angle)));\n      return [minX + element.x, minY + element.y, maxX + element.x, maxY + element.y];\n    } else if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isLinearElement)(element)) {\n      bounds = getLinearElementRotatedBounds(element, cx, cy);\n    } else if (element.type === "diamond") {\n      const [x11, y11] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(cx, y1, cx, cy, element.angle);\n      const [x12, y12] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(cx, y2, cx, cy, element.angle);\n      const [x22, y22] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(x1, cy, cx, cy, element.angle);\n      const [x21, y21] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(x2, cy, cx, cy, element.angle);\n      const minX = Math.min(x11, x12, x22, x21);\n      const minY = Math.min(y11, y12, y22, y21);\n      const maxX = Math.max(x11, x12, x22, x21);\n      const maxY = Math.max(y11, y12, y22, y21);\n      bounds = [minX, minY, maxX, maxY];\n    } else if (element.type === "ellipse") {\n      const w = (x2 - x1) / 2;\n      const h = (y2 - y1) / 2;\n      const cos = Math.cos(element.angle);\n      const sin = Math.sin(element.angle);\n      const ww = Math.hypot(w * cos, h * sin);\n      const hh = Math.hypot(h * cos, w * sin);\n      bounds = [cx - ww, cy - hh, cx + ww, cy + hh];\n    } else {\n      const [x11, y11] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(x1, y1, cx, cy, element.angle);\n      const [x12, y12] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(x1, y2, cx, cy, element.angle);\n      const [x22, y22] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(x2, y2, cx, cy, element.angle);\n      const [x21, y21] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(x2, y1, cx, cy, element.angle);\n      const minX = Math.min(x11, x12, x22, x21);\n      const minY = Math.min(y11, y12, y22, y21);\n      const maxX = Math.max(x11, x12, x22, x21);\n      const maxY = Math.max(y11, y12, y22, y21);\n      bounds = [minX, minY, maxX, maxY];\n    }\n\n    return bounds;\n  }\n\n}\nElementBounds.boundsCache = new WeakMap(); // Scene -> Scene coords, but in x1,x2,y1,y2 format.\n//\n// If the element is created from right to left, the width is going to be negative\n// This set of functions retrieves the absolute position of the 4 points.\n\nconst getElementAbsoluteCoords = (element, includeBoundText = false) => {\n  if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isFreeDrawElement)(element)) {\n    return getFreeDrawElementAbsoluteCoords(element);\n  } else if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isLinearElement)(element)) {\n    return _linearElementEditor__WEBPACK_IMPORTED_MODULE_6__.LinearElementEditor.getElementAbsoluteCoords(element, includeBoundText);\n  } else if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isTextElement)(element)) {\n    const container = (0,_textElement__WEBPACK_IMPORTED_MODULE_5__.getContainerElement)(element);\n\n    if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isArrowElement)(container)) {\n      const coords = _linearElementEditor__WEBPACK_IMPORTED_MODULE_6__.LinearElementEditor.getBoundTextElementPosition(container, element);\n      return [coords.x, coords.y, coords.x + element.width, coords.y + element.height, coords.x + element.width / 2, coords.y + element.height / 2];\n    }\n  }\n\n  return [element.x, element.y, element.x + element.width, element.y + element.height, element.x + element.width / 2, element.y + element.height / 2];\n};\n/*\n * for a given element, `getElementLineSegments` returns line segments\n * that can be used for visual collision detection (useful for frames)\n * as opposed to bounding box collision detection\n */\n\nconst getElementLineSegments = element => {\n  const [x1, y1, x2, y2, cx, cy] = getElementAbsoluteCoords(element);\n  const center = [cx, cy];\n\n  if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isLinearElement)(element) || (0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isFreeDrawElement)(element)) {\n    const segments = [];\n    let i = 0;\n\n    while (i < element.points.length - 1) {\n      segments.push([(0,_math__WEBPACK_IMPORTED_MODULE_0__.rotatePoint)([element.points[i][0] + element.x, element.points[i][1] + element.y], center, element.angle), (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotatePoint)([element.points[i + 1][0] + element.x, element.points[i + 1][1] + element.y], center, element.angle)]);\n      i++;\n    }\n\n    return segments;\n  }\n\n  const [nw, ne, sw, se, n, s, w, e] = [[x1, y1], [x2, y1], [x1, y2], [x2, y2], [cx, y1], [cx, y2], [x1, cy], [x2, cy]].map(point => (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotatePoint)(point, center, element.angle));\n\n  if (element.type === "diamond") {\n    return [[n, w], [n, e], [s, w], [s, e]];\n  }\n\n  if (element.type === "ellipse") {\n    return [[n, w], [n, e], [s, w], [s, e], [n, w], [n, e], [s, w], [s, e]];\n  }\n\n  return [[nw, ne], [sw, se], [nw, sw], [ne, se], [nw, e], [sw, e], [ne, w], [se, w]];\n};\n/**\n * Scene -> Scene coords, but in x1,x2,y1,y2 format.\n *\n * Rectangle here means any rectangular frame, not an excalidraw element.\n */\n\nconst getRectangleBoxAbsoluteCoords = boxSceneCoords => {\n  return [boxSceneCoords.x, boxSceneCoords.y, boxSceneCoords.x + boxSceneCoords.width, boxSceneCoords.y + boxSceneCoords.height, boxSceneCoords.x + boxSceneCoords.width / 2, boxSceneCoords.y + boxSceneCoords.height / 2];\n};\nconst pointRelativeTo = (element, absoluteCoords) => {\n  return [absoluteCoords[0] - element.x, absoluteCoords[1] - element.y];\n};\nconst getDiamondPoints = element => {\n  // Here we add +1 to avoid these numbers to be 0\n  // otherwise rough.js will throw an error complaining about it\n  const topX = Math.floor(element.width / 2) + 1;\n  const topY = 0;\n  const rightX = element.width;\n  const rightY = Math.floor(element.height / 2) + 1;\n  const bottomX = topX;\n  const bottomY = element.height;\n  const leftX = 0;\n  const leftY = rightY;\n  return [topX, topY, rightX, rightY, bottomX, bottomY, leftX, leftY];\n};\nconst getCurvePathOps = shape => {\n  for (const set of shape.sets) {\n    if (set.type === "path") {\n      return set.ops;\n    }\n  }\n\n  return shape.sets[0].ops;\n}; // reference: https://eliot-jones.com/2019/12/cubic-bezier-curve-bounding-boxes\n\nconst getBezierValueForT = (t, p0, p1, p2, p3) => {\n  const oneMinusT = 1 - t;\n  return Math.pow(oneMinusT, 3) * p0 + 3 * Math.pow(oneMinusT, 2) * t * p1 + 3 * oneMinusT * Math.pow(t, 2) * p2 + Math.pow(t, 3) * p3;\n};\n\nconst solveQuadratic = (p0, p1, p2, p3) => {\n  const i = p1 - p0;\n  const j = p2 - p1;\n  const k = p3 - p2;\n  const a = 3 * i - 6 * j + 3 * k;\n  const b = 6 * j - 6 * i;\n  const c = 3 * i;\n  const sqrtPart = b * b - 4 * a * c;\n  const hasSolution = sqrtPart >= 0;\n\n  if (!hasSolution) {\n    return false;\n  }\n\n  let s1 = null;\n  let s2 = null;\n  let t1 = Infinity;\n  let t2 = Infinity;\n\n  if (a === 0) {\n    t1 = t2 = -c / b;\n  } else {\n    t1 = (-b + Math.sqrt(sqrtPart)) / (2 * a);\n    t2 = (-b - Math.sqrt(sqrtPart)) / (2 * a);\n  }\n\n  if (t1 >= 0 && t1 <= 1) {\n    s1 = getBezierValueForT(t1, p0, p1, p2, p3);\n  }\n\n  if (t2 >= 0 && t2 <= 1) {\n    s2 = getBezierValueForT(t2, p0, p1, p2, p3);\n  }\n\n  return [s1, s2];\n};\n\nconst getCubicBezierCurveBound = (p0, p1, p2, p3) => {\n  const solX = solveQuadratic(p0[0], p1[0], p2[0], p3[0]);\n  const solY = solveQuadratic(p0[1], p1[1], p2[1], p3[1]);\n  let minX = Math.min(p0[0], p3[0]);\n  let maxX = Math.max(p0[0], p3[0]);\n\n  if (solX) {\n    const xs = solX.filter(x => x !== null);\n    minX = Math.min(minX, ...xs);\n    maxX = Math.max(maxX, ...xs);\n  }\n\n  let minY = Math.min(p0[1], p3[1]);\n  let maxY = Math.max(p0[1], p3[1]);\n\n  if (solY) {\n    const ys = solY.filter(y => y !== null);\n    minY = Math.min(minY, ...ys);\n    maxY = Math.max(maxY, ...ys);\n  }\n\n  return [minX, minY, maxX, maxY];\n};\n\nconst getMinMaxXYFromCurvePathOps = (ops, transformXY) => {\n  let currentP = [0, 0];\n  const {\n    minX,\n    minY,\n    maxX,\n    maxY\n  } = ops.reduce((limits, {\n    op,\n    data\n  }) => {\n    // There are only four operation types:\n    // move, bcurveTo, lineTo, and curveTo\n    if (op === "move") {\n      // change starting point\n      currentP = data; // move operation does not draw anything; so, it always\n      // returns false\n    } else if (op === "bcurveTo") {\n      const _p1 = [data[0], data[1]];\n      const _p2 = [data[2], data[3]];\n      const _p3 = [data[4], data[5]];\n      const p1 = transformXY ? transformXY(..._p1) : _p1;\n      const p2 = transformXY ? transformXY(..._p2) : _p2;\n      const p3 = transformXY ? transformXY(..._p3) : _p3;\n      const p0 = transformXY ? transformXY(...currentP) : currentP;\n      currentP = _p3;\n      const [minX, minY, maxX, maxY] = getCubicBezierCurveBound(p0, p1, p2, p3);\n      limits.minX = Math.min(limits.minX, minX);\n      limits.minY = Math.min(limits.minY, minY);\n      limits.maxX = Math.max(limits.maxX, maxX);\n      limits.maxY = Math.max(limits.maxY, maxY);\n    } else if (op === "lineTo") {// TODO: Implement this\n    } else if (op === "qcurveTo") {// TODO: Implement this\n    }\n\n    return limits;\n  }, {\n    minX: Infinity,\n    minY: Infinity,\n    maxX: -Infinity,\n    maxY: -Infinity\n  });\n  return [minX, minY, maxX, maxY];\n};\nconst getBoundsFromPoints = points => {\n  let minX = Infinity;\n  let minY = Infinity;\n  let maxX = -Infinity;\n  let maxY = -Infinity;\n\n  for (const [x, y] of points) {\n    minX = Math.min(minX, x);\n    minY = Math.min(minY, y);\n    maxX = Math.max(maxX, x);\n    maxY = Math.max(maxY, y);\n  }\n\n  return [minX, minY, maxX, maxY];\n};\n\nconst getFreeDrawElementAbsoluteCoords = element => {\n  const [minX, minY, maxX, maxY] = getBoundsFromPoints(element.points);\n  const x1 = minX + element.x;\n  const y1 = minY + element.y;\n  const x2 = maxX + element.x;\n  const y2 = maxY + element.y;\n  return [x1, y1, x2, y2, (x1 + x2) / 2, (y1 + y2) / 2];\n};\n\nconst getArrowheadPoints = (element, shape, position, arrowhead) => {\n  const ops = getCurvePathOps(shape[0]);\n\n  if (ops.length < 1) {\n    return null;\n  } // The index of the bCurve operation to examine.\n\n\n  const index = position === "start" ? 1 : ops.length - 1;\n  const data = ops[index].data;\n  const p3 = [data[4], data[5]];\n  const p2 = [data[2], data[3]];\n  const p1 = [data[0], data[1]]; // We need to find p0 of the bezier curve.\n  // It is typically the last point of the previous\n  // curve; it can also be the position of moveTo operation.\n\n  const prevOp = ops[index - 1];\n  let p0 = [0, 0];\n\n  if (prevOp.op === "move") {\n    p0 = prevOp.data;\n  } else if (prevOp.op === "bcurveTo") {\n    p0 = [prevOp.data[4], prevOp.data[5]];\n  } // B(t) = p0 * (1-t)^3 + 3p1 * t * (1-t)^2 + 3p2 * t^2 * (1-t) + p3 * t^3\n\n\n  const equation = (t, idx) => Math.pow(1 - t, 3) * p3[idx] + 3 * t * Math.pow(1 - t, 2) * p2[idx] + 3 * Math.pow(t, 2) * (1 - t) * p1[idx] + p0[idx] * Math.pow(t, 3); // Ee know the last point of the arrow (or the first, if start arrowhead).\n\n\n  const [x2, y2] = position === "start" ? p0 : p3; // By using cubic bezier equation (B(t)) and the given parameters,\n  // we calculate a point that is closer to the last point.\n  // The value 0.3 is chosen arbitrarily and it works best for all\n  // the tested cases.\n\n  const [x1, y1] = [equation(0.3, 0), equation(0.3, 1)]; // Find the normalized direction vector based on the\n  // previously calculated points.\n\n  const distance = Math.hypot(x2 - x1, y2 - y1);\n  const nx = (x2 - x1) / distance;\n  const ny = (y2 - y1) / distance;\n  const size = {\n    arrow: 30,\n    bar: 15,\n    dot: 15,\n    triangle: 15\n  }[arrowhead]; // pixels (will differ for each arrowhead)\n\n  let length = 0;\n\n  if (arrowhead === "arrow") {\n    // Length for -> arrows is based on the length of the last section\n    const [cx, cy] = element.points[element.points.length - 1];\n    const [px, py] = element.points.length > 1 ? element.points[element.points.length - 2] : [0, 0];\n    length = Math.hypot(cx - px, cy - py);\n  } else {\n    // Length for other arrowhead types is based on the total length of the line\n    for (let i = 0; i < element.points.length; i++) {\n      const [px, py] = element.points[i - 1] || [0, 0];\n      const [cx, cy] = element.points[i];\n      length += Math.hypot(cx - px, cy - py);\n    }\n  } // Scale down the arrowhead until we hit a certain size so that it doesn\'t look weird.\n  // This value is selected by minimizing a minimum size with the last segment of the arrowhead\n\n\n  const minSize = Math.min(size, length / 2);\n  const xs = x2 - nx * minSize;\n  const ys = y2 - ny * minSize;\n\n  if (arrowhead === "dot") {\n    const r = Math.hypot(ys - y2, xs - x2) + element.strokeWidth;\n    return [x2, y2, r];\n  }\n\n  const angle = {\n    arrow: 20,\n    bar: 90,\n    triangle: 25\n  }[arrowhead]; // degrees\n  // Return points\n\n  const [x3, y3] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(xs, ys, x2, y2, -angle * Math.PI / 180);\n  const [x4, y4] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(xs, ys, x2, y2, angle * Math.PI / 180);\n  return [x2, y2, x3, y3, x4, y4];\n};\n\nconst generateLinearElementShape = element => {\n  const generator = roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_1__["default"].generator();\n  const options = (0,_scene_Shape__WEBPACK_IMPORTED_MODULE_2__.generateRoughOptions)(element);\n\n  const method = (() => {\n    if (element.roundness) {\n      return "curve";\n    }\n\n    if (options.fill) {\n      return "polygon";\n    }\n\n    return "linearPath";\n  })();\n\n  return generator[method](element.points, options);\n};\n\nconst getLinearElementRotatedBounds = (element, cx, cy) => {\n  var _a;\n\n  if (element.points.length < 2) {\n    const [pointX, pointY] = element.points[0];\n    const [x, y] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(element.x + pointX, element.y + pointY, cx, cy, element.angle);\n    let coords = [x, y, x, y];\n    const boundTextElement = (0,_textElement__WEBPACK_IMPORTED_MODULE_5__.getBoundTextElement)(element);\n\n    if (boundTextElement) {\n      const coordsWithBoundText = _linearElementEditor__WEBPACK_IMPORTED_MODULE_6__.LinearElementEditor.getMinMaxXYWithBoundText(element, [x, y, x, y], boundTextElement);\n      coords = [coordsWithBoundText[0], coordsWithBoundText[1], coordsWithBoundText[2], coordsWithBoundText[3]];\n    }\n\n    return coords;\n  } // first element is always the curve\n\n\n  const cachedShape = (_a = _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_7__.ShapeCache.get(element)) === null || _a === void 0 ? void 0 : _a[0];\n  const shape = cachedShape !== null && cachedShape !== void 0 ? cachedShape : generateLinearElementShape(element);\n  const ops = getCurvePathOps(shape);\n\n  const transformXY = (x, y) => (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(element.x + x, element.y + y, cx, cy, element.angle);\n\n  const res = getMinMaxXYFromCurvePathOps(ops, transformXY);\n  let coords = [res[0], res[1], res[2], res[3]];\n  const boundTextElement = (0,_textElement__WEBPACK_IMPORTED_MODULE_5__.getBoundTextElement)(element);\n\n  if (boundTextElement) {\n    const coordsWithBoundText = _linearElementEditor__WEBPACK_IMPORTED_MODULE_6__.LinearElementEditor.getMinMaxXYWithBoundText(element, coords, boundTextElement);\n    coords = [coordsWithBoundText[0], coordsWithBoundText[1], coordsWithBoundText[2], coordsWithBoundText[3]];\n  }\n\n  return coords;\n};\n\nconst getElementBounds = element => {\n  return ElementBounds.getBounds(element);\n};\nconst getCommonBounds = elements => {\n  if (!elements.length) {\n    return [0, 0, 0, 0];\n  }\n\n  let minX = Infinity;\n  let maxX = -Infinity;\n  let minY = Infinity;\n  let maxY = -Infinity;\n  elements.forEach(element => {\n    const [x1, y1, x2, y2] = getElementBounds(element);\n    minX = Math.min(minX, x1);\n    minY = Math.min(minY, y1);\n    maxX = Math.max(maxX, x2);\n    maxY = Math.max(maxY, y2);\n  });\n  return [minX, minY, maxX, maxY];\n};\nconst getDraggedElementsBounds = (elements, dragOffset) => {\n  const [minX, minY, maxX, maxY] = getCommonBounds(elements);\n  return [minX + dragOffset.x, minY + dragOffset.y, maxX + dragOffset.x, maxY + dragOffset.y];\n};\nconst getResizedElementAbsoluteCoords = (element, nextWidth, nextHeight, normalizePoints) => {\n  if (!((0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isLinearElement)(element) || (0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isFreeDrawElement)(element))) {\n    return [element.x, element.y, element.x + nextWidth, element.y + nextHeight];\n  }\n\n  const points = (0,_points__WEBPACK_IMPORTED_MODULE_4__.rescalePoints)(0, nextWidth, (0,_points__WEBPACK_IMPORTED_MODULE_4__.rescalePoints)(1, nextHeight, element.points, normalizePoints), normalizePoints);\n  let bounds;\n\n  if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isFreeDrawElement)(element)) {\n    // Free Draw\n    bounds = getBoundsFromPoints(points);\n  } else {\n    // Line\n    const gen = roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_1__["default"].generator();\n    const curve = !element.roundness ? gen.linearPath(points, (0,_scene_Shape__WEBPACK_IMPORTED_MODULE_2__.generateRoughOptions)(element)) : gen.curve(points, (0,_scene_Shape__WEBPACK_IMPORTED_MODULE_2__.generateRoughOptions)(element));\n    const ops = getCurvePathOps(curve);\n    bounds = getMinMaxXYFromCurvePathOps(ops);\n  }\n\n  const [minX, minY, maxX, maxY] = bounds;\n  return [minX + element.x, minY + element.y, maxX + element.x, maxY + element.y];\n};\nconst getElementPointsCoords = (element, points) => {\n  // This might be computationally heavey\n  const gen = roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_1__["default"].generator();\n  const curve = element.roundness == null ? gen.linearPath(points, (0,_scene_Shape__WEBPACK_IMPORTED_MODULE_2__.generateRoughOptions)(element)) : gen.curve(points, (0,_scene_Shape__WEBPACK_IMPORTED_MODULE_2__.generateRoughOptions)(element));\n  const ops = getCurvePathOps(curve);\n  const [minX, minY, maxX, maxY] = getMinMaxXYFromCurvePathOps(ops);\n  return [minX + element.x, minY + element.y, maxX + element.x, maxY + element.y];\n};\nconst getClosestElementBounds = (elements, from) => {\n  if (!elements.length) {\n    return [0, 0, 0, 0];\n  }\n\n  let minDistance = Infinity;\n  let closestElement = elements[0];\n  elements.forEach(element => {\n    const [x1, y1, x2, y2] = getElementBounds(element);\n    const distance = (0,_math__WEBPACK_IMPORTED_MODULE_0__.distance2d)((x1 + x2) / 2, (y1 + y2) / 2, from.x, from.y);\n\n    if (distance < minDistance) {\n      minDistance = distance;\n      closestElement = element;\n    }\n  });\n  return getElementBounds(closestElement);\n};\nconst getCommonBoundingBox = elements => {\n  const [minX, minY, maxX, maxY] = getCommonBounds(elements);\n  return {\n    minX,\n    minY,\n    maxX,\n    maxY,\n    width: maxX - minX,\n    height: maxY - minY,\n    midX: (minX + maxX) / 2,\n    midY: (minY + maxY) / 2\n  };\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 30044 characters]\n//# sourceURL=webpack-internal:///../../element/bounds.ts\n');
              }
            ),
            /***/
            "../../element/collision.ts": (
              /*!**********************************!*\
                !*** ../../element/collision.ts ***!
                \**********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "bindingBorderTest": () => (/* binding */ bindingBorderTest),\n/* harmony export */   "determineFocusDistance": () => (/* binding */ determineFocusDistance),\n/* harmony export */   "determineFocusPoint": () => (/* binding */ determineFocusPoint),\n/* harmony export */   "distanceToBindableElement": () => (/* binding */ distanceToBindableElement),\n/* harmony export */   "findFocusPointForEllipse": () => (/* binding */ findFocusPointForEllipse),\n/* harmony export */   "findFocusPointForRectangulars": () => (/* binding */ findFocusPointForRectangulars),\n/* harmony export */   "getCircleIntersections": () => (/* binding */ getCircleIntersections),\n/* harmony export */   "hitTest": () => (/* binding */ hitTest),\n/* harmony export */   "intersectElementWithLine": () => (/* binding */ intersectElementWithLine),\n/* harmony export */   "isHittingElementBoundingBoxWithoutHittingElement": () => (/* binding */ isHittingElementBoundingBoxWithoutHittingElement),\n/* harmony export */   "isHittingElementNotConsideringBoundingBox": () => (/* binding */ isHittingElementNotConsideringBoundingBox),\n/* harmony export */   "isPointHittingElementBoundingBox": () => (/* binding */ isPointHittingElementBoundingBox),\n/* harmony export */   "maxBindingGap": () => (/* binding */ maxBindingGap),\n/* harmony export */   "pointInAbsoluteCoords": () => (/* binding */ pointInAbsoluteCoords)\n/* harmony export */ });\n/* harmony import */ var _ga__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../ga */ "../../ga.ts");\n/* harmony import */ var _gapoints__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../gapoints */ "../../gapoints.ts");\n/* harmony import */ var _gadirections__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../gadirections */ "../../gadirections.ts");\n/* harmony import */ var _galines__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../galines */ "../../galines.ts");\n/* harmony import */ var _gatransforms__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../gatransforms */ "../../gatransforms.ts");\n/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../math */ "../../math.ts");\n/* harmony import */ var points_on_curve__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! points-on-curve */ "../../../node_modules/points-on-curve/lib/index.js");\n/* harmony import */ var _bounds__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./bounds */ "../../element/bounds.ts");\n/* harmony import */ var _typeChecks__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! . */ "../../element/index.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _transformHandles__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./transformHandles */ "../../element/transformHandles.ts");\n/* harmony import */ var _textElement__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./textElement */ "../../element/textElement.ts");\n/* harmony import */ var _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../scene/ShapeCache */ "../../scene/ShapeCache.ts");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst isElementDraggableFromInside = element => {\n  if (element.type === "arrow") {\n    return false;\n  }\n\n  if (element.type === "freedraw") {\n    return true;\n  }\n\n  const isDraggableFromInside = !(0,_utils__WEBPACK_IMPORTED_MODULE_10__.isTransparent)(element.backgroundColor) || (0,_typeChecks__WEBPACK_IMPORTED_MODULE_8__.hasBoundTextElement)(element) || (0,_typeChecks__WEBPACK_IMPORTED_MODULE_8__.isEmbeddableElement)(element);\n\n  if (element.type === "line") {\n    return isDraggableFromInside && (0,_math__WEBPACK_IMPORTED_MODULE_5__.isPathALoop)(element.points);\n  }\n\n  return isDraggableFromInside || (0,_typeChecks__WEBPACK_IMPORTED_MODULE_8__.isImageElement)(element);\n};\n\nconst hitTest = (element, appState, frameNameBoundsCache, x, y) => {\n  // How many pixels off the shape boundary we still consider a hit\n  const threshold = 10 / appState.zoom.value;\n  const point = [x, y];\n\n  if (isElementSelected(appState, element) && (0,_transformHandles__WEBPACK_IMPORTED_MODULE_11__.shouldShowBoundingBox)([element], appState)) {\n    return isPointHittingElementBoundingBox(element, point, threshold, frameNameBoundsCache);\n  }\n\n  const boundTextElement = (0,_textElement__WEBPACK_IMPORTED_MODULE_12__.getBoundTextElement)(element);\n\n  if (boundTextElement) {\n    const isHittingBoundTextElement = hitTest(boundTextElement, appState, frameNameBoundsCache, x, y);\n\n    if (isHittingBoundTextElement) {\n      return true;\n    }\n  }\n\n  return isHittingElementNotConsideringBoundingBox(element, appState, frameNameBoundsCache, point);\n};\nconst isHittingElementBoundingBoxWithoutHittingElement = (element, appState, frameNameBoundsCache, x, y) => {\n  const threshold = 10 / appState.zoom.value; // So that bound text element hit is considered within bounding box of container even if its outside actual bounding box of element\n  // eg for linear elements text can be outside the element bounding box\n\n  const boundTextElement = (0,_textElement__WEBPACK_IMPORTED_MODULE_12__.getBoundTextElement)(element);\n\n  if (boundTextElement && hitTest(boundTextElement, appState, frameNameBoundsCache, x, y)) {\n    return false;\n  }\n\n  return !isHittingElementNotConsideringBoundingBox(element, appState, frameNameBoundsCache, [x, y]) && isPointHittingElementBoundingBox(element, [x, y], threshold, frameNameBoundsCache);\n};\nconst isHittingElementNotConsideringBoundingBox = (element, appState, frameNameBoundsCache, point) => {\n  const threshold = 10 / appState.zoom.value;\n  const check = (0,___WEBPACK_IMPORTED_MODULE_9__.isTextElement)(element) ? isStrictlyInside : isElementDraggableFromInside(element) ? isInsideCheck : isNearCheck;\n  return hitTestPointAgainstElement({\n    element,\n    point,\n    threshold,\n    check,\n    frameNameBoundsCache\n  });\n};\n\nconst isElementSelected = (appState, element) => appState.selectedElementIds[element.id];\n\nconst isPointHittingElementBoundingBox = (element, [x, y], threshold, frameNameBoundsCache) => {\n  // frames needs be checked differently so as to be able to drag it\n  // by its frame, whether it has been selected or not\n  // this logic here is not ideal\n  // TODO: refactor it later...\n  if (element.type === "frame") {\n    return hitTestPointAgainstElement({\n      element,\n      point: [x, y],\n      threshold,\n      check: isInsideCheck,\n      frameNameBoundsCache\n    });\n  }\n\n  const [x1, y1, x2, y2] = (0,_bounds__WEBPACK_IMPORTED_MODULE_7__.getElementAbsoluteCoords)(element);\n  const elementCenterX = (x1 + x2) / 2;\n  const elementCenterY = (y1 + y2) / 2; // reverse rotate to take element\'s angle into account.\n\n  const [rotatedX, rotatedY] = (0,_math__WEBPACK_IMPORTED_MODULE_5__.rotate)(x, y, elementCenterX, elementCenterY, -element.angle);\n  return rotatedX > x1 - threshold && rotatedX < x2 + threshold && rotatedY > y1 - threshold && rotatedY < y2 + threshold;\n};\nconst bindingBorderTest = (element, {\n  x,\n  y\n}) => {\n  const threshold = maxBindingGap(element, element.width, element.height);\n  const check = isOutsideCheck;\n  const point = [x, y];\n  return hitTestPointAgainstElement({\n    element,\n    point,\n    threshold,\n    check,\n    frameNameBoundsCache: null\n  });\n};\nconst maxBindingGap = (element, elementWidth, elementHeight) => {\n  // Aligns diamonds with rectangles\n  const shapeRatio = element.type === "diamond" ? 1 / Math.sqrt(2) : 1;\n  const smallerDimension = shapeRatio * Math.min(elementWidth, elementHeight); // We make the bindable boundary bigger for bigger elements\n\n  return Math.max(16, Math.min(0.25 * smallerDimension, 32));\n};\n\nconst hitTestPointAgainstElement = args => {\n  var _a;\n\n  switch (args.element.type) {\n    case "rectangle":\n    case "embeddable":\n    case "image":\n    case "text":\n    case "diamond":\n    case "ellipse":\n      const distance = distanceToBindableElement(args.element, args.point);\n      return args.check(distance, args.threshold);\n\n    case "freedraw":\n      {\n        if (!args.check(distanceToRectangle(args.element, args.point), args.threshold)) {\n          return false;\n        }\n\n        return hitTestFreeDrawElement(args.element, args.point, args.threshold);\n      }\n\n    case "arrow":\n    case "line":\n      return hitTestLinear(args);\n\n    case "selection":\n      console.warn("This should not happen, we need to investigate why it does.");\n      return false;\n\n    case "frame":\n      {\n        // check distance to frame element first\n        if (args.check(distanceToBindableElement(args.element, args.point), args.threshold)) {\n          return true;\n        }\n\n        const frameNameBounds = (_a = args.frameNameBoundsCache) === null || _a === void 0 ? void 0 : _a.get(args.element);\n\n        if (frameNameBounds) {\n          return args.check(distanceToRectangleBox(frameNameBounds, args.point), args.threshold);\n        }\n\n        return false;\n      }\n  }\n};\n\nconst distanceToBindableElement = (element, point) => {\n  switch (element.type) {\n    case "rectangle":\n    case "image":\n    case "text":\n    case "embeddable":\n    case "frame":\n      return distanceToRectangle(element, point);\n\n    case "diamond":\n      return distanceToDiamond(element, point);\n\n    case "ellipse":\n      return distanceToEllipse(element, point);\n  }\n};\n\nconst isStrictlyInside = (distance, threshold) => {\n  return distance < 0;\n};\n\nconst isInsideCheck = (distance, threshold) => {\n  return distance < threshold;\n};\n\nconst isNearCheck = (distance, threshold) => {\n  return Math.abs(distance) < threshold;\n};\n\nconst isOutsideCheck = (distance, threshold) => {\n  return 0 <= distance && distance < threshold;\n};\n\nconst distanceToRectangle = (element, point) => {\n  const [, pointRel, hwidth, hheight] = pointRelativeToElement(element, point);\n  return Math.max(_gapoints__WEBPACK_IMPORTED_MODULE_1__.distanceToLine(pointRel, _galines__WEBPACK_IMPORTED_MODULE_3__.equation(0, 1, -hheight)), _gapoints__WEBPACK_IMPORTED_MODULE_1__.distanceToLine(pointRel, _galines__WEBPACK_IMPORTED_MODULE_3__.equation(1, 0, -hwidth)));\n};\n\nconst distanceToRectangleBox = (box, point) => {\n  const [, pointRel, hwidth, hheight] = pointRelativeToDivElement(point, box);\n  return Math.max(_gapoints__WEBPACK_IMPORTED_MODULE_1__.distanceToLine(pointRel, _galines__WEBPACK_IMPORTED_MODULE_3__.equation(0, 1, -hheight)), _gapoints__WEBPACK_IMPORTED_MODULE_1__.distanceToLine(pointRel, _galines__WEBPACK_IMPORTED_MODULE_3__.equation(1, 0, -hwidth)));\n};\n\nconst distanceToDiamond = (element, point) => {\n  const [, pointRel, hwidth, hheight] = pointRelativeToElement(element, point);\n  const side = _galines__WEBPACK_IMPORTED_MODULE_3__.equation(hheight, hwidth, -hheight * hwidth);\n  return _gapoints__WEBPACK_IMPORTED_MODULE_1__.distanceToLine(pointRel, side);\n};\n\nconst distanceToEllipse = (element, point) => {\n  const [pointRel, tangent] = ellipseParamsForTest(element, point);\n  return -_galines__WEBPACK_IMPORTED_MODULE_3__.sign(tangent) * _gapoints__WEBPACK_IMPORTED_MODULE_1__.distanceToLine(pointRel, tangent);\n};\n\nconst ellipseParamsForTest = (element, point) => {\n  const [, pointRel, hwidth, hheight] = pointRelativeToElement(element, point);\n  const [px, py] = _gapoints__WEBPACK_IMPORTED_MODULE_1__.toTuple(pointRel); // We\'re working in positive quadrant, so start with `t = 45deg`, `tx=cos(t)`\n\n  let tx = 0.707;\n  let ty = 0.707;\n  const a = hwidth;\n  const b = hheight; // This is a numerical method to find the params tx, ty at which\n  // the ellipse has the closest point to the given point\n\n  [0, 1, 2, 3].forEach(_ => {\n    const xx = a * tx;\n    const yy = b * ty;\n    const ex = (a * a - b * b) * Math.pow(tx, 3) / a;\n    const ey = (b * b - a * a) * Math.pow(ty, 3) / b;\n    const rx = xx - ex;\n    const ry = yy - ey;\n    const qx = px - ex;\n    const qy = py - ey;\n    const r = Math.hypot(ry, rx);\n    const q = Math.hypot(qy, qx);\n    tx = Math.min(1, Math.max(0, (qx * r / q + ex) / a));\n    ty = Math.min(1, Math.max(0, (qy * r / q + ey) / b));\n    const t = Math.hypot(ty, tx);\n    tx /= t;\n    ty /= t;\n  });\n  const closestPoint = _ga__WEBPACK_IMPORTED_MODULE_0__.point(a * tx, b * ty);\n  const tangent = _galines__WEBPACK_IMPORTED_MODULE_3__.orthogonalThrough(pointRel, closestPoint);\n  return [pointRel, tangent];\n};\n\nconst hitTestFreeDrawElement = (element, point, threshold) => {\n  // Check point-distance-to-line-segment for every segment in the\n  // element\'s points (its input points, not its outline points).\n  // This is... okay? It\'s plenty fast, but the GA library may\n  // have a faster option.\n  let x;\n  let y;\n\n  if (element.angle === 0) {\n    x = point[0] - element.x;\n    y = point[1] - element.y;\n  } else {\n    // Counter-rotate the point around center before testing\n    const [minX, minY, maxX, maxY] = (0,_bounds__WEBPACK_IMPORTED_MODULE_7__.getElementAbsoluteCoords)(element);\n    const rotatedPoint = (0,_math__WEBPACK_IMPORTED_MODULE_5__.rotatePoint)(point, [minX + (maxX - minX) / 2, minY + (maxY - minY) / 2], -element.angle);\n    x = rotatedPoint[0] - element.x;\n    y = rotatedPoint[1] - element.y;\n  }\n\n  let [A, B] = element.points;\n  let P; // For freedraw dots\n\n  if ((0,_math__WEBPACK_IMPORTED_MODULE_5__.distance2d)(A[0], A[1], x, y) < threshold || (0,_math__WEBPACK_IMPORTED_MODULE_5__.distance2d)(B[0], B[1], x, y) < threshold) {\n    return true;\n  } // For freedraw lines\n\n\n  for (let i = 0; i < element.points.length; i++) {\n    const delta = [B[0] - A[0], B[1] - A[1]];\n    const length = Math.hypot(delta[1], delta[0]);\n    const U = [delta[0] / length, delta[1] / length];\n    const C = [x - A[0], y - A[1]];\n    const d = (C[0] * U[0] + C[1] * U[1]) / Math.hypot(U[1], U[0]);\n    P = [A[0] + U[0] * d, A[1] + U[1] * d];\n    const da = (0,_math__WEBPACK_IMPORTED_MODULE_5__.distance2d)(P[0], P[1], A[0], A[1]);\n    const db = (0,_math__WEBPACK_IMPORTED_MODULE_5__.distance2d)(P[0], P[1], B[0], B[1]);\n    P = db < da && da > length ? B : da < db && db > length ? A : P;\n\n    if (Math.hypot(y - P[1], x - P[0]) < threshold) {\n      return true;\n    }\n\n    A = B;\n    B = element.points[i + 1];\n  }\n\n  const shape = _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_13__.ShapeCache.get(element); // for filled freedraw shapes, support\n  // selecting from inside\n\n  if (shape && shape.sets.length) {\n    return element.fillStyle === "solid" ? hitTestCurveInside(shape, x, y, "round") : hitTestRoughShape(shape, x, y, threshold);\n  }\n\n  return false;\n};\n\nconst hitTestLinear = args => {\n  const {\n    element,\n    threshold\n  } = args;\n\n  if (!_scene_ShapeCache__WEBPACK_IMPORTED_MODULE_13__.ShapeCache.get(element)) {\n    return false;\n  }\n\n  const [point, pointAbs, hwidth, hheight] = pointRelativeToElement(args.element, args.point);\n  const side1 = _galines__WEBPACK_IMPORTED_MODULE_3__.equation(0, 1, -hheight);\n  const side2 = _galines__WEBPACK_IMPORTED_MODULE_3__.equation(1, 0, -hwidth);\n\n  if (!isInsideCheck(_gapoints__WEBPACK_IMPORTED_MODULE_1__.distanceToLine(pointAbs, side1), threshold) || !isInsideCheck(_gapoints__WEBPACK_IMPORTED_MODULE_1__.distanceToLine(pointAbs, side2), threshold)) {\n    return false;\n  }\n\n  const [relX, relY] = _gapoints__WEBPACK_IMPORTED_MODULE_1__.toTuple(point);\n  const shape = _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_13__.ShapeCache.get(element);\n\n  if (!shape) {\n    return false;\n  }\n\n  if (args.check === isInsideCheck) {\n    const hit = shape.some(subshape => hitTestCurveInside(subshape, relX, relY, element.roundness ? "round" : "sharp"));\n\n    if (hit) {\n      return true;\n    }\n  } // hit test all "subshapes" of the linear element\n\n\n  return shape.some(subshape => hitTestRoughShape(subshape, relX, relY, threshold));\n}; // Returns:\n//   1. the point relative to the elements (x, y) position\n//   2. the point relative to the element\'s center with positive (x, y)\n//   3. half element width\n//   4. half element height\n//\n// Note that for linear elements the (x, y) position is not at the\n// top right corner of their boundary.\n//\n// Rectangles, diamonds and ellipses are symmetrical over axes,\n// and other elements have a rectangular boundary,\n// so we only need to perform hit tests for the positive quadrant.\n\n\nconst pointRelativeToElement = (element, pointTuple) => {\n  const point = _gapoints__WEBPACK_IMPORTED_MODULE_1__.from(pointTuple);\n  const [x1, y1, x2, y2] = (0,_bounds__WEBPACK_IMPORTED_MODULE_7__.getElementAbsoluteCoords)(element);\n  const center = coordsCenter(x1, y1, x2, y2); // GA has angle orientation opposite to `rotate`\n\n  const rotate = _gatransforms__WEBPACK_IMPORTED_MODULE_4__.rotation(center, element.angle);\n  const pointRotated = _gatransforms__WEBPACK_IMPORTED_MODULE_4__.apply(rotate, point);\n  const pointRelToCenter = _ga__WEBPACK_IMPORTED_MODULE_0__.sub(pointRotated, _gadirections__WEBPACK_IMPORTED_MODULE_2__.from(center));\n  const pointRelToCenterAbs = _gapoints__WEBPACK_IMPORTED_MODULE_1__.abs(pointRelToCenter);\n  const elementPos = _ga__WEBPACK_IMPORTED_MODULE_0__.offset(element.x, element.y);\n  const pointRelToPos = _ga__WEBPACK_IMPORTED_MODULE_0__.sub(pointRotated, elementPos);\n  const halfWidth = (x2 - x1) / 2;\n  const halfHeight = (y2 - y1) / 2;\n  return [pointRelToPos, pointRelToCenterAbs, halfWidth, halfHeight];\n};\n\nconst pointRelativeToDivElement = (pointTuple, rectangle) => {\n  const point = _gapoints__WEBPACK_IMPORTED_MODULE_1__.from(pointTuple);\n  const [x1, y1, x2, y2] = (0,_bounds__WEBPACK_IMPORTED_MODULE_7__.getRectangleBoxAbsoluteCoords)(rectangle);\n  const center = coordsCenter(x1, y1, x2, y2);\n  const rotate = _gatransforms__WEBPACK_IMPORTED_MODULE_4__.rotation(center, rectangle.angle);\n  const pointRotated = _gatransforms__WEBPACK_IMPORTED_MODULE_4__.apply(rotate, point);\n  const pointRelToCenter = _ga__WEBPACK_IMPORTED_MODULE_0__.sub(pointRotated, _gadirections__WEBPACK_IMPORTED_MODULE_2__.from(center));\n  const pointRelToCenterAbs = _gapoints__WEBPACK_IMPORTED_MODULE_1__.abs(pointRelToCenter);\n  const elementPos = _ga__WEBPACK_IMPORTED_MODULE_0__.offset(rectangle.x, rectangle.y);\n  const pointRelToPos = _ga__WEBPACK_IMPORTED_MODULE_0__.sub(pointRotated, elementPos);\n  const halfWidth = (x2 - x1) / 2;\n  const halfHeight = (y2 - y1) / 2;\n  return [pointRelToPos, pointRelToCenterAbs, halfWidth, halfHeight];\n}; // Returns point in absolute coordinates\n\n\nconst pointInAbsoluteCoords = (element, // Point relative to the element position\npoint) => {\n  const [x, y] = point;\n  const [x1, y1, x2, y2] = (0,_bounds__WEBPACK_IMPORTED_MODULE_7__.getElementAbsoluteCoords)(element);\n  const cx = (x2 - x1) / 2;\n  const cy = (y2 - y1) / 2;\n  const [rotatedX, rotatedY] = (0,_math__WEBPACK_IMPORTED_MODULE_5__.rotate)(x, y, cx, cy, element.angle);\n  return [element.x + rotatedX, element.y + rotatedY];\n};\n\nconst relativizationToElementCenter = element => {\n  const [x1, y1, x2, y2] = (0,_bounds__WEBPACK_IMPORTED_MODULE_7__.getElementAbsoluteCoords)(element);\n  const center = coordsCenter(x1, y1, x2, y2); // GA has angle orientation opposite to `rotate`\n\n  const rotate = _gatransforms__WEBPACK_IMPORTED_MODULE_4__.rotation(center, element.angle);\n  const translate = _ga__WEBPACK_IMPORTED_MODULE_0__.reverse(_gatransforms__WEBPACK_IMPORTED_MODULE_4__.translation(_gadirections__WEBPACK_IMPORTED_MODULE_2__.from(center)));\n  return _gatransforms__WEBPACK_IMPORTED_MODULE_4__.compose(rotate, translate);\n};\n\nconst coordsCenter = (x1, y1, x2, y2) => {\n  return _ga__WEBPACK_IMPORTED_MODULE_0__.point((x1 + x2) / 2, (y1 + y2) / 2);\n}; // The focus distance is the oriented ratio between the size of\n// the `element` and the "focus image" of the element on which\n// all focus points lie, so it\'s a number between -1 and 1.\n// The line going through `a` and `b` is a tangent to the "focus image"\n// of the element.\n\n\nconst determineFocusDistance = (element, // Point on the line, in absolute coordinates\na, // Another point on the line, in absolute coordinates (closer to element)\nb) => {\n  const relateToCenter = relativizationToElementCenter(element);\n  const aRel = _gatransforms__WEBPACK_IMPORTED_MODULE_4__.apply(relateToCenter, _gapoints__WEBPACK_IMPORTED_MODULE_1__.from(a));\n  const bRel = _gatransforms__WEBPACK_IMPORTED_MODULE_4__.apply(relateToCenter, _gapoints__WEBPACK_IMPORTED_MODULE_1__.from(b));\n  const line = _galines__WEBPACK_IMPORTED_MODULE_3__.through(aRel, bRel);\n  const q = element.height / element.width;\n  const hwidth = element.width / 2;\n  const hheight = element.height / 2;\n  const n = line[2];\n  const m = line[3];\n  const c = line[1];\n  const mabs = Math.abs(m);\n  const nabs = Math.abs(n);\n  let ret;\n\n  switch (element.type) {\n    case "rectangle":\n    case "image":\n    case "text":\n    case "embeddable":\n    case "frame":\n      ret = c / (hwidth * (nabs + q * mabs));\n      break;\n\n    case "diamond":\n      ret = mabs < nabs ? c / (nabs * hwidth) : c / (mabs * hheight);\n      break;\n\n    case "ellipse":\n      ret = c / (hwidth * Math.sqrt(Math.pow(n, 2) + Math.pow(q, 2) * Math.pow(m, 2)));\n      break;\n  }\n\n  return ret || 0;\n};\nconst determineFocusPoint = (element, // The oriented, relative distance from the center of `element` of the\n// returned focusPoint\nfocus, adjecentPoint) => {\n  if (focus === 0) {\n    const [x1, y1, x2, y2] = (0,_bounds__WEBPACK_IMPORTED_MODULE_7__.getElementAbsoluteCoords)(element);\n    const center = coordsCenter(x1, y1, x2, y2);\n    return _gapoints__WEBPACK_IMPORTED_MODULE_1__.toTuple(center);\n  }\n\n  const relateToCenter = relativizationToElementCenter(element);\n  const adjecentPointRel = _gatransforms__WEBPACK_IMPORTED_MODULE_4__.apply(relateToCenter, _gapoints__WEBPACK_IMPORTED_MODULE_1__.from(adjecentPoint));\n  const reverseRelateToCenter = _ga__WEBPACK_IMPORTED_MODULE_0__.reverse(relateToCenter);\n  let point;\n\n  switch (element.type) {\n    case "rectangle":\n    case "image":\n    case "text":\n    case "diamond":\n    case "embeddable":\n    case "frame":\n      point = findFocusPointForRectangulars(element, focus, adjecentPointRel);\n      break;\n\n    case "ellipse":\n      point = findFocusPointForEllipse(element, focus, adjecentPointRel);\n      break;\n  }\n\n  return _gapoints__WEBPACK_IMPORTED_MODULE_1__.toTuple(_gatransforms__WEBPACK_IMPORTED_MODULE_4__.apply(reverseRelateToCenter, point));\n}; // Returns 2 or 0 intersection points between line going through `a` and `b`\n// and the `element`, in ascending order of distance from `a`.\n\nconst intersectElementWithLine = (element, // Point on the line, in absolute coordinates\na, // Another point on the line, in absolute coordinates\nb, // If given, the element is inflated by this value\ngap = 0) => {\n  const relateToCenter = relativizationToElementCenter(element);\n  const aRel = _gatransforms__WEBPACK_IMPORTED_MODULE_4__.apply(relateToCenter, _gapoints__WEBPACK_IMPORTED_MODULE_1__.from(a));\n  const bRel = _gatransforms__WEBPACK_IMPORTED_MODULE_4__.apply(relateToCenter, _gapoints__WEBPACK_IMPORTED_MODULE_1__.from(b));\n  const line = _galines__WEBPACK_IMPORTED_MODULE_3__.through(aRel, bRel);\n  const reverseRelateToCenter = _ga__WEBPACK_IMPORTED_MODULE_0__.reverse(relateToCenter);\n  const intersections = getSortedElementLineIntersections(element, line, aRel, gap);\n  return intersections.map(point => _gapoints__WEBPACK_IMPORTED_MODULE_1__.toTuple(_gatransforms__WEBPACK_IMPORTED_MODULE_4__.apply(reverseRelateToCenter, point)));\n};\n\nconst getSortedElementLineIntersections = (element, // Relative to element center\nline, // Relative to element center\nnearPoint, gap = 0) => {\n  let intersections;\n\n  switch (element.type) {\n    case "rectangle":\n    case "image":\n    case "text":\n    case "diamond":\n    case "embeddable":\n    case "frame":\n      const corners = getCorners(element);\n      intersections = corners.flatMap((point, i) => {\n        const edge = [point, corners[(i + 1) % 4]];\n        return intersectSegment(line, offsetSegment(edge, gap));\n      }).concat(corners.flatMap(point => getCircleIntersections(point, gap, line)));\n      break;\n\n    case "ellipse":\n      intersections = getEllipseIntersections(element, gap, line);\n      break;\n  }\n\n  if (intersections.length < 2) {\n    // Ignore the "edge" case of only intersecting with a single corner\n    return [];\n  }\n\n  const sortedIntersections = intersections.sort((i1, i2) => _gapoints__WEBPACK_IMPORTED_MODULE_1__.distance(i1, nearPoint) - _gapoints__WEBPACK_IMPORTED_MODULE_1__.distance(i2, nearPoint));\n  return [sortedIntersections[0], sortedIntersections[sortedIntersections.length - 1]];\n};\n\nconst getCorners = (element, scale = 1) => {\n  const hx = scale * element.width / 2;\n  const hy = scale * element.height / 2;\n\n  switch (element.type) {\n    case "rectangle":\n    case "image":\n    case "text":\n    case "embeddable":\n    case "frame":\n      return [_ga__WEBPACK_IMPORTED_MODULE_0__.point(hx, hy), _ga__WEBPACK_IMPORTED_MODULE_0__.point(hx, -hy), _ga__WEBPACK_IMPORTED_MODULE_0__.point(-hx, -hy), _ga__WEBPACK_IMPORTED_MODULE_0__.point(-hx, hy)];\n\n    case "diamond":\n      return [_ga__WEBPACK_IMPORTED_MODULE_0__.point(0, hy), _ga__WEBPACK_IMPORTED_MODULE_0__.point(hx, 0), _ga__WEBPACK_IMPORTED_MODULE_0__.point(0, -hy), _ga__WEBPACK_IMPORTED_MODULE_0__.point(-hx, 0)];\n  }\n}; // Returns intersection of `line` with `segment`, with `segment` moved by\n// `gap` in its polar direction.\n// If intersection coincides with second segment point returns empty array.\n\n\nconst intersectSegment = (line, segment) => {\n  const [a, b] = segment;\n  const aDist = _gapoints__WEBPACK_IMPORTED_MODULE_1__.distanceToLine(a, line);\n  const bDist = _gapoints__WEBPACK_IMPORTED_MODULE_1__.distanceToLine(b, line);\n\n  if (aDist * bDist >= 0) {\n    // The intersection is outside segment `(a, b)`\n    return [];\n  }\n\n  return [_gapoints__WEBPACK_IMPORTED_MODULE_1__.intersect(line, _galines__WEBPACK_IMPORTED_MODULE_3__.through(a, b))];\n};\n\nconst offsetSegment = (segment, distance) => {\n  const [a, b] = segment;\n  const offset = _gatransforms__WEBPACK_IMPORTED_MODULE_4__.translationOrthogonal(_gadirections__WEBPACK_IMPORTED_MODULE_2__.fromTo(a, b), distance);\n  return [_gatransforms__WEBPACK_IMPORTED_MODULE_4__.apply(offset, a), _gatransforms__WEBPACK_IMPORTED_MODULE_4__.apply(offset, b)];\n};\n\nconst getEllipseIntersections = (element, gap, line) => {\n  const a = element.width / 2 + gap;\n  const b = element.height / 2 + gap;\n  const m = line[2];\n  const n = line[3];\n  const c = line[1];\n  const squares = a * a * m * m + b * b * n * n;\n  const discr = squares - c * c;\n\n  if (squares === 0 || discr <= 0) {\n    return [];\n  }\n\n  const discrRoot = Math.sqrt(discr);\n  const xn = -a * a * m * c;\n  const yn = -b * b * n * c;\n  return [_ga__WEBPACK_IMPORTED_MODULE_0__.point((xn + a * b * n * discrRoot) / squares, (yn - a * b * m * discrRoot) / squares), _ga__WEBPACK_IMPORTED_MODULE_0__.point((xn - a * b * n * discrRoot) / squares, (yn + a * b * m * discrRoot) / squares)];\n};\n\nconst getCircleIntersections = (center, radius, line) => {\n  if (radius === 0) {\n    return _gapoints__WEBPACK_IMPORTED_MODULE_1__.distanceToLine(line, center) === 0 ? [center] : [];\n  }\n\n  const m = line[2];\n  const n = line[3];\n  const c = line[1];\n  const [a, b] = _gapoints__WEBPACK_IMPORTED_MODULE_1__.toTuple(center);\n  const r = radius;\n  const squares = m * m + n * n;\n  const discr = r * r * squares - Math.pow(m * a + n * b + c, 2);\n\n  if (squares === 0 || discr <= 0) {\n    return [];\n  }\n\n  const discrRoot = Math.sqrt(discr);\n  const xn = a * n * n - b * m * n - m * c;\n  const yn = b * m * m - a * m * n - n * c;\n  return [_ga__WEBPACK_IMPORTED_MODULE_0__.point((xn + n * discrRoot) / squares, (yn - m * discrRoot) / squares), _ga__WEBPACK_IMPORTED_MODULE_0__.point((xn - n * discrRoot) / squares, (yn + m * discrRoot) / squares)];\n}; // The focus point is the tangent point of the "focus image" of the\n// `element`, where the tangent goes through `point`.\n\nconst findFocusPointForEllipse = (ellipse, // Between -1 and 1 (not 0) the relative size of the "focus image" of\n// the element on which the focus point lies\nrelativeDistance, // The point for which we\'re trying to find the focus point, relative\n// to the ellipse center.\npoint) => {\n  const relativeDistanceAbs = Math.abs(relativeDistance);\n  const a = ellipse.width * relativeDistanceAbs / 2;\n  const b = ellipse.height * relativeDistanceAbs / 2;\n  const orientation = Math.sign(relativeDistance);\n  const [px, pyo] = _gapoints__WEBPACK_IMPORTED_MODULE_1__.toTuple(point); // The calculation below can\'t handle py = 0\n\n  const py = pyo === 0 ? 0.0001 : pyo;\n  const squares = Math.pow(px, 2) * Math.pow(b, 2) + Math.pow(py, 2) * Math.pow(a, 2); // Tangent mx + ny + 1 = 0\n\n  const m = (-px * Math.pow(b, 2) + orientation * py * Math.sqrt(Math.max(0, squares - Math.pow(a, 2) * Math.pow(b, 2)))) / squares;\n  let n = (-m * px - 1) / py;\n\n  if (n === 0) {\n    // if zero {-0, 0}, fall back to a same-sign value in the similar range\n    n = (Object.is(n, -0) ? -1 : 1) * 0.01;\n  }\n\n  const x = -(Math.pow(a, 2) * m) / (Math.pow(n, 2) * Math.pow(b, 2) + Math.pow(m, 2) * Math.pow(a, 2));\n  return _ga__WEBPACK_IMPORTED_MODULE_0__.point(x, (-m * x - 1) / n);\n};\nconst findFocusPointForRectangulars = (element, // Between -1 and 1 for how far away should the focus point be relative\n// to the size of the element. Sign determines orientation.\nrelativeDistance, // The point for which we\'re trying to find the focus point, relative\n// to the element center.\npoint) => {\n  const relativeDistanceAbs = Math.abs(relativeDistance);\n  const orientation = Math.sign(relativeDistance);\n  const corners = getCorners(element, relativeDistanceAbs);\n  let maxDistance = 0;\n  let tangentPoint = null;\n  corners.forEach(corner => {\n    const distance = orientation * _galines__WEBPACK_IMPORTED_MODULE_3__.through(point, corner)[1];\n\n    if (distance > maxDistance) {\n      maxDistance = distance;\n      tangentPoint = corner;\n    }\n  });\n  return tangentPoint;\n};\n\nconst pointInBezierEquation = (p0, p1, p2, p3, [mx, my], lineThreshold) => {\n  // B(t) = p0 * (1-t)^3 + 3p1 * t * (1-t)^2 + 3p2 * t^2 * (1-t) + p3 * t^3\n  const equation = (t, idx) => Math.pow(1 - t, 3) * p3[idx] + 3 * t * Math.pow(1 - t, 2) * p2[idx] + 3 * Math.pow(t, 2) * (1 - t) * p1[idx] + p0[idx] * Math.pow(t, 3); // go through t in increments of 0.01\n\n\n  let t = 0;\n\n  while (t <= 1.0) {\n    const tx = equation(t, 0);\n    const ty = equation(t, 1);\n    const diff = Math.sqrt(Math.pow(tx - mx, 2) + Math.pow(ty - my, 2));\n\n    if (diff < lineThreshold) {\n      return true;\n    }\n\n    t += 0.01;\n  }\n\n  return false;\n};\n\nconst hitTestCurveInside = (drawable, x, y, roundness) => {\n  const ops = (0,_bounds__WEBPACK_IMPORTED_MODULE_7__.getCurvePathOps)(drawable);\n  const points = [];\n  let odd = false; // select one line out of double lines\n\n  for (const operation of ops) {\n    if (operation.op === "move") {\n      odd = !odd;\n\n      if (odd) {\n        points.push([operation.data[0], operation.data[1]]);\n      }\n    } else if (operation.op === "bcurveTo") {\n      if (odd) {\n        points.push([operation.data[0], operation.data[1]]);\n        points.push([operation.data[2], operation.data[3]]);\n        points.push([operation.data[4], operation.data[5]]);\n      }\n    } else if (operation.op === "lineTo") {\n      if (odd) {\n        points.push([operation.data[0], operation.data[1]]);\n      }\n    }\n  }\n\n  if (points.length >= 4) {\n    if (roundness === "sharp") {\n      return (0,_math__WEBPACK_IMPORTED_MODULE_5__.isPointInPolygon)(points, x, y);\n    }\n\n    const polygonPoints = (0,points_on_curve__WEBPACK_IMPORTED_MODULE_6__.pointsOnBezierCurves)(points, 10, 5);\n    return (0,_math__WEBPACK_IMPORTED_MODULE_5__.isPointInPolygon)(polygonPoints, x, y);\n  }\n\n  return false;\n};\n\nconst hitTestRoughShape = (drawable, x, y, lineThreshold) => {\n  // read operations from first opSet\n  const ops = (0,_bounds__WEBPACK_IMPORTED_MODULE_7__.getCurvePathOps)(drawable); // set start position as (0,0) just in case\n  // move operation does not exist (unlikely but it is worth safekeeping it)\n\n  let currentP = [0, 0];\n  return ops.some(({\n    op,\n    data\n  }, idx) => {\n    // There are only four operation types:\n    // move, bcurveTo, lineTo, and curveTo\n    if (op === "move") {\n      // change starting point\n      currentP = data; // move operation does not draw anything; so, it always\n      // returns false\n    } else if (op === "bcurveTo") {\n      // create points from bezier curve\n      // bezier curve stores data as a flattened array of three positions\n      // [x1, y1, x2, y2, x3, y3]\n      const p1 = [data[0], data[1]];\n      const p2 = [data[2], data[3]];\n      const p3 = [data[4], data[5]];\n      const p0 = currentP;\n      currentP = p3; // check if points are on the curve\n      // cubic bezier curves require four parameters\n      // the first parameter is the last stored position (p0)\n\n      const retVal = pointInBezierEquation(p0, p1, p2, p3, [x, y], lineThreshold); // set end point of bezier curve as the new starting point for\n      // upcoming operations as each operation is based on the last drawn\n      // position of the previous operation\n\n      return retVal;\n    } else if (op === "lineTo") {\n      return hitTestCurveInside(drawable, x, y, "sharp");\n    } else if (op === "qcurveTo") {\n      // TODO: Implement this\n      console.warn("qcurveTo is not implemented yet");\n    }\n\n    return false;\n  });\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 44508 characters]\n//# sourceURL=webpack-internal:///../../element/collision.ts\n');
              }
            ),
            /***/
            "../../element/dragElements.ts": (
              /*!*************************************!*\
                !*** ../../element/dragElements.ts ***!
                \*************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "dragNewElement": () => (/* binding */ dragNewElement),
/* harmony export */   "dragSelectedElements": () => (/* binding */ dragSelectedElements),
/* harmony export */   "getDragOffsetXY": () => (/* binding */ getDragOffsetXY)
/* harmony export */ });
/* harmony import */ var _binding__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./binding */ "../../element/binding.ts");
/* harmony import */ var _bounds__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./bounds */ "../../element/bounds.ts");
/* harmony import */ var _mutateElement__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./mutateElement */ "../../element/mutateElement.ts");
/* harmony import */ var _sizeHelpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./sizeHelpers */ "../../element/sizeHelpers.ts");
/* harmony import */ var _textElement__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./textElement */ "../../element/textElement.ts");
/* harmony import */ var _groups__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../groups */ "../../groups.ts");
/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../math */ "../../math.ts");
/* harmony import */ var _typeChecks__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./typeChecks */ "../../element/typeChecks.ts");








const dragSelectedElements = (pointerDownState, selectedElements, offset, appState, scene, snapOffset, gridSize) => {
  // we do not want a frame and its elements to be selected at the same time
  // but when it happens (due to some bug), we want to avoid updating element
  // in the frame twice, hence the use of set
  const elementsToUpdate = new Set(selectedElements);
  const frames = selectedElements.filter(e => (0,_typeChecks__WEBPACK_IMPORTED_MODULE_7__.isFrameElement)(e)).map(f => f.id);

  if (frames.length > 0) {
    const elementsInFrames = scene.getNonDeletedElements().filter(e => !(0,_typeChecks__WEBPACK_IMPORTED_MODULE_7__.isBoundToContainer)(e)).filter(e => e.frameId !== null).filter(e => frames.includes(e.frameId));
    elementsInFrames.forEach(element => elementsToUpdate.add(element));
  }

  const commonBounds = (0,_bounds__WEBPACK_IMPORTED_MODULE_1__.getCommonBounds)(Array.from(elementsToUpdate).map(el => {
    var _a;

    return (_a = pointerDownState.originalElements.get(el.id)) !== null && _a !== void 0 ? _a : el;
  }));
  const adjustedOffset = calculateOffset(commonBounds, offset, snapOffset, gridSize);
  elementsToUpdate.forEach(element => {
    updateElementCoords(pointerDownState, element, adjustedOffset); // update coords of bound text only if we're dragging the container directly
    // (we don't drag the group that it's part of)

    if ( // Don't update coords of arrow label since we calculate its position during render
    !(0,_typeChecks__WEBPACK_IMPORTED_MODULE_7__.isArrowElement)(element) && ( // container isn't part of any group
    // (perf optim so we don't check \`isSelectedViaGroup()\` in every case)
    !element.groupIds.length || // container is part of a group, but we're dragging the container directly
    appState.editingGroupId && !(0,_groups__WEBPACK_IMPORTED_MODULE_5__.isSelectedViaGroup)(appState, element))) {
      const textElement = (0,_textElement__WEBPACK_IMPORTED_MODULE_4__.getBoundTextElement)(element);

      if (textElement) {
        updateElementCoords(pointerDownState, textElement, adjustedOffset);
      }
    }

    (0,_binding__WEBPACK_IMPORTED_MODULE_0__.updateBoundElements)(element, {
      simultaneouslyUpdated: Array.from(elementsToUpdate)
    });
  });
};

const calculateOffset = (commonBounds, dragOffset, snapOffset, gridSize) => {
  const [x, y] = commonBounds;
  let nextX = x + dragOffset.x + snapOffset.x;
  let nextY = y + dragOffset.y + snapOffset.y;

  if (snapOffset.x === 0 || snapOffset.y === 0) {
    const [nextGridX, nextGridY] = (0,_math__WEBPACK_IMPORTED_MODULE_6__.getGridPoint)(x + dragOffset.x, y + dragOffset.y, gridSize);

    if (snapOffset.x === 0) {
      nextX = nextGridX;
    }

    if (snapOffset.y === 0) {
      nextY = nextGridY;
    }
  }

  return {
    x: nextX - x,
    y: nextY - y
  };
};

const updateElementCoords = (pointerDownState, element, dragOffset) => {
  var _a;

  const originalElement = (_a = pointerDownState.originalElements.get(element.id)) !== null && _a !== void 0 ? _a : element;
  const nextX = originalElement.x + dragOffset.x;
  const nextY = originalElement.y + dragOffset.y;
  (0,_mutateElement__WEBPACK_IMPORTED_MODULE_2__.mutateElement)(element, {
    x: nextX,
    y: nextY
  });
};

const getDragOffsetXY = (selectedElements, x, y) => {
  const [x1, y1] = (0,_bounds__WEBPACK_IMPORTED_MODULE_1__.getCommonBounds)(selectedElements);
  return [x - x1, y - y1];
};
const dragNewElement = (draggingElement, elementType, originX, originY, x, y, width, height, shouldMaintainAspectRatio, shouldResizeFromCenter,
/** whether to keep given aspect ratio when \`isResizeWithSidesSameLength\` is
    true */
widthAspectRatio, originOffset = null) => {
  var _a, _b;

  if (shouldMaintainAspectRatio && draggingElement.type !== "selection") {
    if (widthAspectRatio) {
      height = width / widthAspectRatio;
    } else {
      // Depending on where the cursor is at (x, y) relative to where the starting point is
      // (originX, originY), we use ONLY width or height to control size increase.
      // This allows the cursor to always "stick" to one of the sides of the bounding box.
      if (Math.abs(y - originY) > Math.abs(x - originX)) {
        ({
          width,
          height
        } = (0,_sizeHelpers__WEBPACK_IMPORTED_MODULE_3__.getPerfectElementSize)(elementType, height, x < originX ? -width : width));
      } else {
        ({
          width,
          height
        } = (0,_sizeHelpers__WEBPACK_IMPORTED_MODULE_3__.getPerfectElementSize)(elementType, width, y < originY ? -height : height));
      }

      if (height < 0) {
        height = -height;
      }
    }
  }

  let newX = x < originX ? originX - width : originX;
  let newY = y < originY ? originY - height : originY;

  if (shouldResizeFromCenter) {
    width += width;
    height += height;
    newX = originX - width / 2;
    newY = originY - height / 2;
  }

  if (width !== 0 && height !== 0) {
    (0,_mutateElement__WEBPACK_IMPORTED_MODULE_2__.mutateElement)(draggingElement, {
      x: newX + ((_a = originOffset === null || originOffset === void 0 ? void 0 : originOffset.x) !== null && _a !== void 0 ? _a : 0),
      y: newY + ((_b = originOffset === null || originOffset === void 0 ? void 0 : originOffset.y) !== null && _b !== void 0 ? _b : 0),
      width,
      height
    });
  }
};//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 8532 characters]
//# sourceURL=webpack-internal:///../../element/dragElements.ts
`);
              }
            ),
            /***/
            "../../element/embeddable.ts": (
              /*!***********************************!*\
                !*** ../../element/embeddable.ts ***!
                \***********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "actionSetEmbeddableAsActiveTool": () => (/* binding */ actionSetEmbeddableAsActiveTool),\n/* harmony export */   "createPlaceholderEmbeddableLabel": () => (/* binding */ createPlaceholderEmbeddableLabel),\n/* harmony export */   "embeddableURLValidator": () => (/* binding */ embeddableURLValidator),\n/* harmony export */   "extractSrc": () => (/* binding */ extractSrc),\n/* harmony export */   "getEmbedLink": () => (/* binding */ getEmbedLink),\n/* harmony export */   "isEmbeddableOrLabel": () => (/* binding */ isEmbeddableOrLabel)\n/* harmony export */ });\n/* harmony import */ var _actions_register__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../actions/register */ "../../actions/register.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _cursor__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../cursor */ "../../cursor.ts");\n/* harmony import */ var _newElement__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./newElement */ "../../element/newElement.ts");\n/* harmony import */ var _textElement__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./textElement */ "../../element/textElement.ts");\n/* harmony import */ var _typeChecks__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var _data_url__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../data/url */ "../../data/url.ts");\n\n\n\n\n\n\n\n\n\nconst embeddedLinkCache = new Map();\nconst RE_YOUTUBE = /^(?:http(?:s)?:\\/\\/)?(?:www\\.)?youtu(?:be\\.com|\\.be)\\/(embed\\/|watch\\?v=|shorts\\/|playlist\\?list=|embed\\/videoseries\\?list=)?([a-zA-Z0-9_-]+)(?:\\?t=|&t=|\\?start=|&start=)?([a-zA-Z0-9_-]+)?[^\\s]*$/;\nconst RE_VIMEO = /^(?:http(?:s)?:\\/\\/)?(?:(?:w){3}\\.)?(?:player\\.)?vimeo\\.com\\/(?:video\\/)?([^?\\s]+)(?:\\?.*)?$/;\nconst RE_FIGMA = /^https:\\/\\/(?:www\\.)?figma\\.com/;\nconst RE_GH_GIST = /^https:\\/\\/gist\\.github\\.com\\/([\\w_-]+)\\/([\\w_-]+)/;\nconst RE_GH_GIST_EMBED = /^<script[\\s\\S]*?\\ssrc=["\'](https:\\/\\/gist\\.github\\.com\\/.*?)\\.js["\']/i; // not anchored to start to allow <blockquote> twitter embeds\n\nconst RE_TWITTER = /(?:https?:\\/\\/)?(?:(?:w){3}\\.)?(?:twitter|x)\\.com\\/[^/]+\\/status\\/(\\d+)/;\nconst RE_TWITTER_EMBED = /^<blockquote[\\s\\S]*?\\shref=["\'](https?:\\/\\/(?:twitter|x)\\.com\\/[^"\']*)/i;\nconst RE_VALTOWN = /^https:\\/\\/(?:www\\.)?val\\.town\\/(v|embed)\\/[a-zA-Z_$][0-9a-zA-Z_$]+\\.[a-zA-Z_$][0-9a-zA-Z_$]+/;\nconst RE_GENERIC_EMBED = /^<(?:iframe|blockquote)[\\s\\S]*?\\s(?:src|href)=["\']([^"\']*)["\'][\\s\\S]*?>$/i;\nconst RE_GIPHY = /giphy.com\\/(?:clips|embed|gifs)\\/[a-zA-Z0-9]*?-?([a-zA-Z0-9]+)(?:[^a-zA-Z0-9]|$)/;\nconst ALLOWED_DOMAINS = new Set(["youtube.com", "youtu.be", "vimeo.com", "player.vimeo.com", "figma.com", "link.excalidraw.com", "gist.github.com", "twitter.com", "*.simplepdf.eu", "stackblitz.com", "val.town", "giphy.com"]);\nconst ALLOW_SAME_ORIGIN = new Set(["youtube.com", "youtu.be", "vimeo.com", "player.vimeo.com", "figma.com", "twitter.com", "x.com", "*.simplepdf.eu", "stackblitz.com"]);\n\nconst createSrcDoc = body => {\n  return `<html><body>${body}</body></html>`;\n};\n\nconst getEmbedLink = link => {\n  if (!link) {\n    return null;\n  }\n\n  if (embeddedLinkCache.has(link)) {\n    return embeddedLinkCache.get(link);\n  }\n\n  const originalLink = link;\n  const allowSameOrigin = ALLOW_SAME_ORIGIN.has(matchHostname(link, ALLOW_SAME_ORIGIN) || "");\n  let type = "generic";\n  let aspectRatio = {\n    w: 560,\n    h: 840\n  };\n  const ytLink = link.match(RE_YOUTUBE);\n\n  if (ytLink === null || ytLink === void 0 ? void 0 : ytLink[2]) {\n    const time = ytLink[3] ? `&start=${ytLink[3]}` : ``;\n    const isPortrait = link.includes("shorts");\n    type = "video";\n\n    switch (ytLink[1]) {\n      case "embed/":\n      case "watch?v=":\n      case "shorts/":\n        link = `https://www.youtube.com/embed/${ytLink[2]}?enablejsapi=1${time}`;\n        break;\n\n      case "playlist?list=":\n      case "embed/videoseries?list=":\n        link = `https://www.youtube.com/embed/videoseries?list=${ytLink[2]}&enablejsapi=1${time}`;\n        break;\n\n      default:\n        link = `https://www.youtube.com/embed/${ytLink[2]}?enablejsapi=1${time}`;\n        break;\n    }\n\n    aspectRatio = isPortrait ? {\n      w: 315,\n      h: 560\n    } : {\n      w: 560,\n      h: 315\n    };\n    embeddedLinkCache.set(originalLink, {\n      link,\n      aspectRatio,\n      type,\n      sandbox: {\n        allowSameOrigin\n      }\n    });\n    return {\n      link,\n      aspectRatio,\n      type,\n      sandbox: {\n        allowSameOrigin\n      }\n    };\n  }\n\n  const vimeoLink = link.match(RE_VIMEO);\n\n  if (vimeoLink === null || vimeoLink === void 0 ? void 0 : vimeoLink[1]) {\n    const target = vimeoLink === null || vimeoLink === void 0 ? void 0 : vimeoLink[1];\n    const warning = !/^\\d+$/.test(target) ? (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("toast.unrecognizedLinkFormat") : undefined;\n    type = "video";\n    link = `https://player.vimeo.com/video/${target}?api=1`;\n    aspectRatio = {\n      w: 560,\n      h: 315\n    }; //warning deliberately ommited so it is displayed only once per link\n    //same link next time will be served from cache\n\n    embeddedLinkCache.set(originalLink, {\n      link,\n      aspectRatio,\n      type,\n      sandbox: {\n        allowSameOrigin\n      }\n    });\n    return {\n      link,\n      aspectRatio,\n      type,\n      warning,\n      sandbox: {\n        allowSameOrigin\n      }\n    };\n  }\n\n  const figmaLink = link.match(RE_FIGMA);\n\n  if (figmaLink) {\n    type = "generic";\n    link = `https://www.figma.com/embed?embed_host=share&url=${encodeURIComponent(link)}`;\n    aspectRatio = {\n      w: 550,\n      h: 550\n    };\n    embeddedLinkCache.set(originalLink, {\n      link,\n      aspectRatio,\n      type,\n      sandbox: {\n        allowSameOrigin\n      }\n    });\n    return {\n      link,\n      aspectRatio,\n      type,\n      sandbox: {\n        allowSameOrigin\n      }\n    };\n  }\n\n  const valLink = link.match(RE_VALTOWN);\n\n  if (valLink) {\n    link = valLink[1] === "embed" ? valLink[0] : valLink[0].replace("/v", "/embed");\n    embeddedLinkCache.set(originalLink, {\n      link,\n      aspectRatio,\n      type,\n      sandbox: {\n        allowSameOrigin\n      }\n    });\n    return {\n      link,\n      aspectRatio,\n      type,\n      sandbox: {\n        allowSameOrigin\n      }\n    };\n  }\n\n  if (RE_TWITTER.test(link)) {\n    const postId = link.match(RE_TWITTER)[1]; // the embed srcdoc still supports twitter.com domain only.\n    // Note that we don\'t attempt to parse the username as it can consist of\n    // non-latin1 characters, and the username in the url can be set to anything\n    // without affecting the embed.\n\n    const safeURL = (0,_data_url__WEBPACK_IMPORTED_MODULE_8__.sanitizeHTMLAttribute)(`https://twitter.com/x/status/${postId}`);\n    const ret = {\n      type: "document",\n      srcdoc: theme => createSrcDoc(`<blockquote class="twitter-tweet" data-dnt="true" data-theme="${theme}"><a href="${safeURL}"></a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"><\/script>`),\n      aspectRatio: {\n        w: 480,\n        h: 480\n      },\n      sandbox: {\n        allowSameOrigin\n      }\n    };\n    embeddedLinkCache.set(originalLink, ret);\n    return ret;\n  }\n\n  if (RE_GH_GIST.test(link)) {\n    const [, user, gistId] = link.match(RE_GH_GIST);\n    const safeURL = (0,_data_url__WEBPACK_IMPORTED_MODULE_8__.sanitizeHTMLAttribute)(`https://gist.github.com/${user}/${gistId}`);\n    const ret = {\n      type: "document",\n      srcdoc: () => createSrcDoc(`\n          <script src="${safeURL}.js"><\/script>\n          <style type="text/css">\n            * { margin: 0px; }\n            table, .gist { height: 100%; }\n            .gist .gist-file { height: calc(100vh - 2px); padding: 0px; display: grid; grid-template-rows: 1fr auto; }\n          </style>\n        `),\n      aspectRatio: {\n        w: 550,\n        h: 720\n      },\n      sandbox: {\n        allowSameOrigin\n      }\n    };\n    embeddedLinkCache.set(link, ret);\n    return ret;\n  }\n\n  embeddedLinkCache.set(link, {\n    link,\n    aspectRatio,\n    type,\n    sandbox: {\n      allowSameOrigin\n    }\n  });\n  return {\n    link,\n    aspectRatio,\n    type,\n    sandbox: {\n      allowSameOrigin\n    }\n  };\n};\nconst isEmbeddableOrLabel = element => {\n  if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_7__.isEmbeddableElement)(element)) {\n    return true;\n  }\n\n  if (element.type === "text") {\n    const container = (0,_textElement__WEBPACK_IMPORTED_MODULE_6__.getContainerElement)(element);\n\n    if (container && (0,_typeChecks__WEBPACK_IMPORTED_MODULE_7__.isEmbeddableElement)(container)) {\n      return true;\n    }\n  }\n\n  return false;\n};\nconst createPlaceholderEmbeddableLabel = element => {\n  var _a;\n\n  const text = !element.link || (element === null || element === void 0 ? void 0 : element.link) === "" ? "Empty Web-Embed" : element.link;\n  const fontSize = Math.max(Math.min(element.width / 2, element.width / text.length), element.width / 30);\n  const fontFamily = _constants__WEBPACK_IMPORTED_MODULE_1__.FONT_FAMILY.Helvetica;\n  const fontString = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.getFontString)({\n    fontSize,\n    fontFamily\n  });\n  return (0,_newElement__WEBPACK_IMPORTED_MODULE_5__.newTextElement)({\n    x: element.x + element.width / 2,\n    y: element.y + element.height / 2,\n    strokeColor: element.strokeColor !== "transparent" ? element.strokeColor : "black",\n    backgroundColor: "transparent",\n    fontFamily,\n    fontSize,\n    text: (0,_textElement__WEBPACK_IMPORTED_MODULE_6__.wrapText)(text, fontString, element.width - 20),\n    textAlign: "center",\n    verticalAlign: _constants__WEBPACK_IMPORTED_MODULE_1__.VERTICAL_ALIGN.MIDDLE,\n    angle: (_a = element.angle) !== null && _a !== void 0 ? _a : 0\n  });\n};\nconst actionSetEmbeddableAsActiveTool = (0,_actions_register__WEBPACK_IMPORTED_MODULE_0__.register)({\n  name: "setEmbeddableAsActiveTool",\n  trackEvent: {\n    category: "toolbar"\n  },\n  perform: (elements, appState, _, app) => {\n    const nextActiveTool = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.updateActiveTool)(appState, {\n      type: "embeddable"\n    });\n    (0,_cursor__WEBPACK_IMPORTED_MODULE_4__.setCursorForShape)(app.canvas, Object.assign(Object.assign({}, appState), {\n      activeTool: nextActiveTool\n    }));\n    return {\n      elements,\n      appState: Object.assign(Object.assign({}, appState), {\n        activeTool: (0,_utils__WEBPACK_IMPORTED_MODULE_3__.updateActiveTool)(appState, {\n          type: "embeddable"\n        })\n      }),\n      commitToHistory: false\n    };\n  }\n});\n\nconst matchHostname = (url,\n/** using a Set assumes it already contains normalized bare domains */\nallowedHostnames) => {\n  try {\n    const {\n      hostname\n    } = new URL(url);\n    const bareDomain = hostname.replace(/^www\\./, "");\n\n    if (allowedHostnames instanceof Set) {\n      if (ALLOWED_DOMAINS.has(bareDomain)) {\n        return bareDomain;\n      }\n\n      const bareDomainWithFirstSubdomainWildcarded = bareDomain.replace(/^([^.]+)/, "*");\n\n      if (ALLOWED_DOMAINS.has(bareDomainWithFirstSubdomainWildcarded)) {\n        return bareDomainWithFirstSubdomainWildcarded;\n      }\n\n      return null;\n    }\n\n    const bareAllowedHostname = allowedHostnames.replace(/^www\\./, "");\n\n    if (bareDomain === bareAllowedHostname) {\n      return bareAllowedHostname;\n    }\n  } catch (error) {// ignore\n  }\n\n  return null;\n};\n\nconst extractSrc = htmlString => {\n  const twitterMatch = htmlString.match(RE_TWITTER_EMBED);\n\n  if (twitterMatch && twitterMatch.length === 2) {\n    return twitterMatch[1];\n  }\n\n  const gistMatch = htmlString.match(RE_GH_GIST_EMBED);\n\n  if (gistMatch && gistMatch.length === 2) {\n    return gistMatch[1];\n  }\n\n  if (RE_GIPHY.test(htmlString)) {\n    return `https://giphy.com/embed/${RE_GIPHY.exec(htmlString)[1]}`;\n  }\n\n  const match = htmlString.match(RE_GENERIC_EMBED);\n\n  if (match && match.length === 2) {\n    return match[1];\n  }\n\n  return htmlString;\n};\nconst embeddableURLValidator = (url, validateEmbeddable) => {\n  if (!url) {\n    return false;\n  }\n\n  if (validateEmbeddable != null) {\n    if (typeof validateEmbeddable === "function") {\n      const ret = validateEmbeddable(url); // if return value is undefined, leave validation to default\n\n      if (typeof ret === "boolean") {\n        return ret;\n      }\n    } else if (typeof validateEmbeddable === "boolean") {\n      return validateEmbeddable;\n    } else if (validateEmbeddable instanceof RegExp) {\n      return validateEmbeddable.test(url);\n    } else if (Array.isArray(validateEmbeddable)) {\n      for (const domain of validateEmbeddable) {\n        if (domain instanceof RegExp) {\n          if (url.match(domain)) {\n            return true;\n          }\n        } else if (matchHostname(url, domain)) {\n          return true;\n        }\n      }\n\n      return false;\n    }\n  }\n\n  return !!matchHostname(url, ALLOWED_DOMAINS);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 19328 characters]\n//# sourceURL=webpack-internal:///../../element/embeddable.ts\n');
              }
            ),
            /***/
            "../../element/image.ts": (
              /*!******************************!*\
                !*** ../../element/image.ts ***!
                \******************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "getInitializedImageElements": () => (/* binding */ getInitializedImageElements),
/* harmony export */   "isHTMLSVGElement": () => (/* binding */ isHTMLSVGElement),
/* harmony export */   "loadHTMLImageElement": () => (/* binding */ loadHTMLImageElement),
/* harmony export */   "normalizeSVG": () => (/* binding */ normalizeSVG),
/* harmony export */   "updateImageCache": () => (/* binding */ updateImageCache)
/* harmony export */ });
/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../constants */ "../../constants.ts");
/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");
/* harmony import */ var _typeChecks__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./typeChecks */ "../../element/typeChecks.ts");
// -----------------------------------------------------------------------------
// ExcalidrawImageElement & related helpers
// -----------------------------------------------------------------------------
var __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {
  function adopt(value) {
    return value instanceof P ? value : new P(function (resolve) {
      resolve(value);
    });
  }

  return new (P || (P = Promise))(function (resolve, reject) {
    function fulfilled(value) {
      try {
        step(generator.next(value));
      } catch (e) {
        reject(e);
      }
    }

    function rejected(value) {
      try {
        step(generator["throw"](value));
      } catch (e) {
        reject(e);
      }
    }

    function step(result) {
      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
    }

    step((generator = generator.apply(thisArg, _arguments || [])).next());
  });
};




const loadHTMLImageElement = dataURL => {
  return new Promise((resolve, reject) => {
    const image = new Image();

    image.onload = () => {
      resolve(image);
    };

    image.onerror = error => {
      reject(error);
    };

    image.src = dataURL;
  });
};
/** NOTE: updates cache even if already populated with given image. Thus,
 * you should filter out the images upstream if you want to optimize this. */

const updateImageCache = ({
  fileIds,
  files,
  imageCache
}) => __awaiter(void 0, void 0, void 0, function* () {
  const updatedFiles = new Map();
  const erroredFiles = new Map();
  yield Promise.all(fileIds.reduce((promises, fileId) => {
    const fileData = files[fileId];

    if (fileData && !updatedFiles.has(fileId)) {
      updatedFiles.set(fileId, true);
      return promises.concat((() => __awaiter(void 0, void 0, void 0, function* () {
        try {
          if (fileData.mimeType === _constants__WEBPACK_IMPORTED_MODULE_0__.MIME_TYPES.binary) {
            throw new Error("Only images can be added to ImageCache");
          }

          const imagePromise = loadHTMLImageElement(fileData.dataURL);
          const data = {
            image: imagePromise,
            mimeType: fileData.mimeType
          }; // store the promise immediately to indicate there's an in-progress
          // initialization

          imageCache.set(fileId, data);
          const image = yield imagePromise;
          imageCache.set(fileId, Object.assign(Object.assign({}, data), {
            image
          }));
        } catch (error) {
          erroredFiles.set(fileId, true);
        }
      }))());
    }

    return promises;
  }, []));
  return {
    imageCache,

    /** includes errored files because they cache was updated nonetheless */
    updatedFiles,

    /** files that failed when creating HTMLImageElement */
    erroredFiles
  };
});
const getInitializedImageElements = elements => elements.filter(element => (0,_typeChecks__WEBPACK_IMPORTED_MODULE_2__.isInitializedImageElement)(element));
const isHTMLSVGElement = node => {
  // lower-casing due to XML/HTML convention differences
  // https://johnresig.com/blog/nodename-case-sensitivity
  return (node === null || node === void 0 ? void 0 : node.nodeName.toLowerCase()) === "svg";
};
const normalizeSVG = SVGString => __awaiter(void 0, void 0, void 0, function* () {
  const doc = new DOMParser().parseFromString(SVGString, _constants__WEBPACK_IMPORTED_MODULE_0__.MIME_TYPES.svg);
  const svg = doc.querySelector("svg");
  const errorNode = doc.querySelector("parsererror");

  if (errorNode || !isHTMLSVGElement(svg)) {
    throw new Error((0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("errors.invalidSVGString"));
  } else {
    if (!svg.hasAttribute("xmlns")) {
      svg.setAttribute("xmlns", _constants__WEBPACK_IMPORTED_MODULE_0__.SVG_NS);
    }

    if (!svg.hasAttribute("width") || !svg.hasAttribute("height")) {
      const viewBox = svg.getAttribute("viewBox");
      let width = svg.getAttribute("width") || "50";
      let height = svg.getAttribute("height") || "50";

      if (viewBox) {
        const match = viewBox.match(/\\d+ +\\d+ +(\\d+) +(\\d+)/);

        if (match) {
          [, width, height] = match;
        }
      }

      svg.setAttribute("width", width);
      svg.setAttribute("height", height);
    }

    return svg.outerHTML;
  }
});//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 7284 characters]
//# sourceURL=webpack-internal:///../../element/image.ts
`);
              }
            ),
            /***/
            "../../element/index.ts": (
              /*!******************************!*\
                !*** ../../element/index.ts ***!
                \******************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "OMIT_SIDES_FOR_MULTIPLE_ELEMENTS": () => (/* reexport safe */ _transformHandles__WEBPACK_IMPORTED_MODULE_4__.OMIT_SIDES_FOR_MULTIPLE_ELEMENTS),\n/* harmony export */   "clearElementsForDatabase": () => (/* binding */ clearElementsForDatabase),\n/* harmony export */   "clearElementsForExport": () => (/* binding */ clearElementsForExport),\n/* harmony export */   "clearElementsForLocalStorage": () => (/* binding */ clearElementsForLocalStorage),\n/* harmony export */   "dragNewElement": () => (/* reexport safe */ _dragElements__WEBPACK_IMPORTED_MODULE_8__.dragNewElement),\n/* harmony export */   "dragSelectedElements": () => (/* reexport safe */ _dragElements__WEBPACK_IMPORTED_MODULE_8__.dragSelectedElements),\n/* harmony export */   "duplicateElement": () => (/* reexport safe */ _newElement__WEBPACK_IMPORTED_MODULE_2__.duplicateElement),\n/* harmony export */   "getArrowheadPoints": () => (/* reexport safe */ _bounds__WEBPACK_IMPORTED_MODULE_3__.getArrowheadPoints),\n/* harmony export */   "getClosestElementBounds": () => (/* reexport safe */ _bounds__WEBPACK_IMPORTED_MODULE_3__.getClosestElementBounds),\n/* harmony export */   "getCommonBounds": () => (/* reexport safe */ _bounds__WEBPACK_IMPORTED_MODULE_3__.getCommonBounds),\n/* harmony export */   "getCursorForResizingElement": () => (/* reexport safe */ _resizeTest__WEBPACK_IMPORTED_MODULE_6__.getCursorForResizingElement),\n/* harmony export */   "getDiamondPoints": () => (/* reexport safe */ _bounds__WEBPACK_IMPORTED_MODULE_3__.getDiamondPoints),\n/* harmony export */   "getDragOffsetXY": () => (/* reexport safe */ _dragElements__WEBPACK_IMPORTED_MODULE_8__.getDragOffsetXY),\n/* harmony export */   "getElementAbsoluteCoords": () => (/* reexport safe */ _bounds__WEBPACK_IMPORTED_MODULE_3__.getElementAbsoluteCoords),\n/* harmony export */   "getElementBounds": () => (/* reexport safe */ _bounds__WEBPACK_IMPORTED_MODULE_3__.getElementBounds),\n/* harmony export */   "getElementWithTransformHandleType": () => (/* reexport safe */ _resizeTest__WEBPACK_IMPORTED_MODULE_6__.getElementWithTransformHandleType),\n/* harmony export */   "getLockedLinearCursorAlignSize": () => (/* reexport safe */ _sizeHelpers__WEBPACK_IMPORTED_MODULE_0__.getLockedLinearCursorAlignSize),\n/* harmony export */   "getNonDeletedElements": () => (/* binding */ getNonDeletedElements),\n/* harmony export */   "getNonDeletedFrames": () => (/* binding */ getNonDeletedFrames),\n/* harmony export */   "getNormalizedDimensions": () => (/* reexport safe */ _sizeHelpers__WEBPACK_IMPORTED_MODULE_0__.getNormalizedDimensions),\n/* harmony export */   "getPerfectElementSize": () => (/* reexport safe */ _sizeHelpers__WEBPACK_IMPORTED_MODULE_0__.getPerfectElementSize),\n/* harmony export */   "getResizeArrowDirection": () => (/* reexport safe */ _resizeElements__WEBPACK_IMPORTED_MODULE_7__.getResizeArrowDirection),\n/* harmony export */   "getResizeOffsetXY": () => (/* reexport safe */ _resizeElements__WEBPACK_IMPORTED_MODULE_7__.getResizeOffsetXY),\n/* harmony export */   "getSceneVersion": () => (/* binding */ getSceneVersion),\n/* harmony export */   "getTransformHandleTypeFromCoords": () => (/* reexport safe */ _resizeTest__WEBPACK_IMPORTED_MODULE_6__.getTransformHandleTypeFromCoords),\n/* harmony export */   "getTransformHandles": () => (/* reexport safe */ _transformHandles__WEBPACK_IMPORTED_MODULE_4__.getTransformHandles),\n/* harmony export */   "getTransformHandlesFromCoords": () => (/* reexport safe */ _transformHandles__WEBPACK_IMPORTED_MODULE_4__.getTransformHandlesFromCoords),\n/* harmony export */   "getVisibleElements": () => (/* binding */ getVisibleElements),\n/* harmony export */   "hitTest": () => (/* reexport safe */ _collision__WEBPACK_IMPORTED_MODULE_5__.hitTest),\n/* harmony export */   "isExcalidrawElement": () => (/* reexport safe */ _typeChecks__WEBPACK_IMPORTED_MODULE_1__.isExcalidrawElement),\n/* harmony export */   "isFrameElement": () => (/* reexport safe */ _typeChecks__WEBPACK_IMPORTED_MODULE_1__.isFrameElement),\n/* harmony export */   "isHittingElementBoundingBoxWithoutHittingElement": () => (/* reexport safe */ _collision__WEBPACK_IMPORTED_MODULE_5__.isHittingElementBoundingBoxWithoutHittingElement),\n/* harmony export */   "isInvisiblySmallElement": () => (/* reexport safe */ _sizeHelpers__WEBPACK_IMPORTED_MODULE_0__.isInvisiblySmallElement),\n/* harmony export */   "isNonDeletedElement": () => (/* binding */ isNonDeletedElement),\n/* harmony export */   "isTextElement": () => (/* reexport safe */ _typeChecks__WEBPACK_IMPORTED_MODULE_1__.isTextElement),\n/* harmony export */   "newElement": () => (/* reexport safe */ _newElement__WEBPACK_IMPORTED_MODULE_2__.newElement),\n/* harmony export */   "newImageElement": () => (/* reexport safe */ _newElement__WEBPACK_IMPORTED_MODULE_2__.newImageElement),\n/* harmony export */   "newLinearElement": () => (/* reexport safe */ _newElement__WEBPACK_IMPORTED_MODULE_2__.newLinearElement),\n/* harmony export */   "newTextElement": () => (/* reexport safe */ _newElement__WEBPACK_IMPORTED_MODULE_2__.newTextElement),\n/* harmony export */   "redrawTextBoundingBox": () => (/* reexport safe */ _textElement__WEBPACK_IMPORTED_MODULE_10__.redrawTextBoundingBox),\n/* harmony export */   "refreshTextDimensions": () => (/* reexport safe */ _newElement__WEBPACK_IMPORTED_MODULE_2__.refreshTextDimensions),\n/* harmony export */   "resizePerfectLineForNWHandler": () => (/* reexport safe */ _sizeHelpers__WEBPACK_IMPORTED_MODULE_0__.resizePerfectLineForNWHandler),\n/* harmony export */   "resizeTest": () => (/* reexport safe */ _resizeTest__WEBPACK_IMPORTED_MODULE_6__.resizeTest),\n/* harmony export */   "showSelectedShapeActions": () => (/* reexport safe */ _showSelectedShapeActions__WEBPACK_IMPORTED_MODULE_11__.showSelectedShapeActions),\n/* harmony export */   "textWysiwyg": () => (/* reexport safe */ _textWysiwyg__WEBPACK_IMPORTED_MODULE_9__.textWysiwyg),\n/* harmony export */   "transformElements": () => (/* reexport safe */ _resizeElements__WEBPACK_IMPORTED_MODULE_7__.transformElements),\n/* harmony export */   "updateTextElement": () => (/* reexport safe */ _newElement__WEBPACK_IMPORTED_MODULE_2__.updateTextElement)\n/* harmony export */ });\n/* harmony import */ var _sizeHelpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./sizeHelpers */ "../../element/sizeHelpers.ts");\n/* harmony import */ var _typeChecks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var _newElement__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./newElement */ "../../element/newElement.ts");\n/* harmony import */ var _bounds__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./bounds */ "../../element/bounds.ts");\n/* harmony import */ var _transformHandles__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./transformHandles */ "../../element/transformHandles.ts");\n/* harmony import */ var _collision__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./collision */ "../../element/collision.ts");\n/* harmony import */ var _resizeTest__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./resizeTest */ "../../element/resizeTest.ts");\n/* harmony import */ var _resizeElements__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./resizeElements */ "../../element/resizeElements.ts");\n/* harmony import */ var _dragElements__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./dragElements */ "../../element/dragElements.ts");\n/* harmony import */ var _textWysiwyg__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./textWysiwyg */ "../../element/textWysiwyg.tsx");\n/* harmony import */ var _textElement__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./textElement */ "../../element/textElement.ts");\n/* harmony import */ var _showSelectedShapeActions__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./showSelectedShapeActions */ "../../element/showSelectedShapeActions.ts");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst getSceneVersion = elements => elements.reduce((acc, el) => acc + el.version, 0);\nconst getVisibleElements = elements => elements.filter(el => !el.isDeleted && !(0,_sizeHelpers__WEBPACK_IMPORTED_MODULE_0__.isInvisiblySmallElement)(el));\nconst getNonDeletedElements = elements => elements.filter(element => !element.isDeleted);\nconst getNonDeletedFrames = frames => frames.filter(frame => !frame.isDeleted);\nconst isNonDeletedElement = element => !element.isDeleted;\n\nconst _clearElements = elements => getNonDeletedElements(elements).map(element => (0,_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isLinearElementType)(element.type) ? Object.assign(Object.assign({}, element), {\n  lastCommittedPoint: null\n}) : element);\n\nconst clearElementsForDatabase = elements => _clearElements(elements);\nconst clearElementsForExport = elements => _clearElements(elements);\nconst clearElementsForLocalStorage = elements => _clearElements(elements);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZWxlbWVudC9pbmRleC50cy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUF3RDtBQUNMO0FBQ3NHO0FBQ0g7QUFDNUI7QUFDbEM7QUFDb0Q7QUFDM0M7QUFDVjtBQUNMO0FBQ3RDO0FBQ1U7QUFDaUg7QUFDakc7QUFDL0Q7QUFDQSwrRUFBK0UscUVBQXVCO0FBQ3RHO0FBQ0E7QUFDQTs7QUFFUCxrRkFBa0YsZ0VBQW1CLCtDQUErQztBQUNwSjtBQUNBLENBQUM7O0FBRU07QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2VsZW1lbnQvaW5kZXgudHM/MmQyNCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0ludmlzaWJseVNtYWxsRWxlbWVudCB9IGZyb20gXCIuL3NpemVIZWxwZXJzXCI7XG5pbXBvcnQgeyBpc0xpbmVhckVsZW1lbnRUeXBlIH0gZnJvbSBcIi4vdHlwZUNoZWNrc1wiO1xuZXhwb3J0IHsgbmV3RWxlbWVudCwgbmV3VGV4dEVsZW1lbnQsIHVwZGF0ZVRleHRFbGVtZW50LCByZWZyZXNoVGV4dERpbWVuc2lvbnMsIG5ld0xpbmVhckVsZW1lbnQsIG5ld0ltYWdlRWxlbWVudCwgZHVwbGljYXRlRWxlbWVudCB9IGZyb20gXCIuL25ld0VsZW1lbnRcIjtcbmV4cG9ydCB7IGdldEVsZW1lbnRBYnNvbHV0ZUNvb3JkcywgZ2V0RWxlbWVudEJvdW5kcywgZ2V0Q29tbW9uQm91bmRzLCBnZXREaWFtb25kUG9pbnRzLCBnZXRBcnJvd2hlYWRQb2ludHMsIGdldENsb3Nlc3RFbGVtZW50Qm91bmRzIH0gZnJvbSBcIi4vYm91bmRzXCI7XG5leHBvcnQgeyBPTUlUX1NJREVTX0ZPUl9NVUxUSVBMRV9FTEVNRU5UUywgZ2V0VHJhbnNmb3JtSGFuZGxlc0Zyb21Db29yZHMsIGdldFRyYW5zZm9ybUhhbmRsZXMgfSBmcm9tIFwiLi90cmFuc2Zvcm1IYW5kbGVzXCI7XG5leHBvcnQgeyBoaXRUZXN0LCBpc0hpdHRpbmdFbGVtZW50Qm91bmRpbmdCb3hXaXRob3V0SGl0dGluZ0VsZW1lbnQgfSBmcm9tIFwiLi9jb2xsaXNpb25cIjtcbmV4cG9ydCB7IHJlc2l6ZVRlc3QsIGdldEN1cnNvckZvclJlc2l6aW5nRWxlbWVudCwgZ2V0RWxlbWVudFdpdGhUcmFuc2Zvcm1IYW5kbGVUeXBlLCBnZXRUcmFuc2Zvcm1IYW5kbGVUeXBlRnJvbUNvb3JkcyB9IGZyb20gXCIuL3Jlc2l6ZVRlc3RcIjtcbmV4cG9ydCB7IHRyYW5zZm9ybUVsZW1lbnRzLCBnZXRSZXNpemVPZmZzZXRYWSwgZ2V0UmVzaXplQXJyb3dEaXJlY3Rpb24gfSBmcm9tIFwiLi9yZXNpemVFbGVtZW50c1wiO1xuZXhwb3J0IHsgZHJhZ1NlbGVjdGVkRWxlbWVudHMsIGdldERyYWdPZmZzZXRYWSwgZHJhZ05ld0VsZW1lbnQgfSBmcm9tIFwiLi9kcmFnRWxlbWVudHNcIjtcbmV4cG9ydCB7IGlzVGV4dEVsZW1lbnQsIGlzRXhjYWxpZHJhd0VsZW1lbnQsIGlzRnJhbWVFbGVtZW50IH0gZnJvbSBcIi4vdHlwZUNoZWNrc1wiO1xuZXhwb3J0IHsgdGV4dFd5c2l3eWcgfSBmcm9tIFwiLi90ZXh0V3lzaXd5Z1wiO1xuZXhwb3J0IHsgcmVkcmF3VGV4dEJvdW5kaW5nQm94IH0gZnJvbSBcIi4vdGV4dEVsZW1lbnRcIjtcbmV4cG9ydCB7IGdldFBlcmZlY3RFbGVtZW50U2l6ZSwgZ2V0TG9ja2VkTGluZWFyQ3Vyc29yQWxpZ25TaXplLCBpc0ludmlzaWJseVNtYWxsRWxlbWVudCwgcmVzaXplUGVyZmVjdExpbmVGb3JOV0hhbmRsZXIsIGdldE5vcm1hbGl6ZWREaW1lbnNpb25zIH0gZnJvbSBcIi4vc2l6ZUhlbHBlcnNcIjtcbmV4cG9ydCB7IHNob3dTZWxlY3RlZFNoYXBlQWN0aW9ucyB9IGZyb20gXCIuL3Nob3dTZWxlY3RlZFNoYXBlQWN0aW9uc1wiO1xuZXhwb3J0IGNvbnN0IGdldFNjZW5lVmVyc2lvbiA9IGVsZW1lbnRzID0+IGVsZW1lbnRzLnJlZHVjZSgoYWNjLCBlbCkgPT4gYWNjICsgZWwudmVyc2lvbiwgMCk7XG5leHBvcnQgY29uc3QgZ2V0VmlzaWJsZUVsZW1lbnRzID0gZWxlbWVudHMgPT4gZWxlbWVudHMuZmlsdGVyKGVsID0+ICFlbC5pc0RlbGV0ZWQgJiYgIWlzSW52aXNpYmx5U21hbGxFbGVtZW50KGVsKSk7XG5leHBvcnQgY29uc3QgZ2V0Tm9uRGVsZXRlZEVsZW1lbnRzID0gZWxlbWVudHMgPT4gZWxlbWVudHMuZmlsdGVyKGVsZW1lbnQgPT4gIWVsZW1lbnQuaXNEZWxldGVkKTtcbmV4cG9ydCBjb25zdCBnZXROb25EZWxldGVkRnJhbWVzID0gZnJhbWVzID0+IGZyYW1lcy5maWx0ZXIoZnJhbWUgPT4gIWZyYW1lLmlzRGVsZXRlZCk7XG5leHBvcnQgY29uc3QgaXNOb25EZWxldGVkRWxlbWVudCA9IGVsZW1lbnQgPT4gIWVsZW1lbnQuaXNEZWxldGVkO1xuXG5jb25zdCBfY2xlYXJFbGVtZW50cyA9IGVsZW1lbnRzID0+IGdldE5vbkRlbGV0ZWRFbGVtZW50cyhlbGVtZW50cykubWFwKGVsZW1lbnQgPT4gaXNMaW5lYXJFbGVtZW50VHlwZShlbGVtZW50LnR5cGUpID8gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBlbGVtZW50KSwge1xuICBsYXN0Q29tbWl0dGVkUG9pbnQ6IG51bGxcbn0pIDogZWxlbWVudCk7XG5cbmV4cG9ydCBjb25zdCBjbGVhckVsZW1lbnRzRm9yRGF0YWJhc2UgPSBlbGVtZW50cyA9PiBfY2xlYXJFbGVtZW50cyhlbGVtZW50cyk7XG5leHBvcnQgY29uc3QgY2xlYXJFbGVtZW50c0ZvckV4cG9ydCA9IGVsZW1lbnRzID0+IF9jbGVhckVsZW1lbnRzKGVsZW1lbnRzKTtcbmV4cG9ydCBjb25zdCBjbGVhckVsZW1lbnRzRm9yTG9jYWxTdG9yYWdlID0gZWxlbWVudHMgPT4gX2NsZWFyRWxlbWVudHMoZWxlbWVudHMpOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../element/index.ts\n');
              }
            ),
            /***/
            "../../element/linearElementEditor.ts": (
              /*!********************************************!*\
                !*** ../../element/linearElementEditor.ts ***!
                \********************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "LinearElementEditor": () => (/* binding */ LinearElementEditor)\n/* harmony export */ });\n/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math */ "../../math.ts");\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! . */ "../../element/index.ts");\n/* harmony import */ var _bounds__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./bounds */ "../../element/bounds.ts");\n/* harmony import */ var _mutateElement__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./mutateElement */ "../../element/mutateElement.ts");\n/* harmony import */ var _scene_Scene__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../scene/Scene */ "../../scene/Scene.ts");\n/* harmony import */ var _binding__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./binding */ "../../element/binding.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _typeChecks__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _textElement__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./textElement */ "../../element/textElement.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../scene/ShapeCache */ "../../scene/ShapeCache.ts");\n\n\n\n\n\n\n\n\n\n\n\n\nconst editorMidPointsCache = {\n  version: null,\n  points: [],\n  zoom: null\n};\nclass LinearElementEditor {\n  constructor(element, scene) {\n    this.elementId = element.id;\n    _scene_Scene__WEBPACK_IMPORTED_MODULE_4__["default"].mapElementToScene(this.elementId, scene);\n    LinearElementEditor.normalizePoints(element);\n    this.selectedPointsIndices = null;\n    this.lastUncommittedPoint = null;\n    this.isDragging = false;\n    this.pointerOffset = {\n      x: 0,\n      y: 0\n    };\n    this.startBindingElement = "keep";\n    this.endBindingElement = "keep";\n    this.pointerDownState = {\n      prevSelectedPointsIndices: null,\n      lastClickedPoint: -1,\n      origin: null,\n      segmentMidpoint: {\n        value: null,\n        index: null,\n        added: false\n      }\n    };\n    this.hoverPointIndex = -1;\n    this.segmentMidPointHoveredCoords = null;\n  }\n  /**\n   * @param id the `elementId` from the instance of this class (so that we can\n   *  statically guarantee this method returns an ExcalidrawLinearElement)\n   */\n\n\n  static getElement(id) {\n    var _a;\n\n    const element = (_a = _scene_Scene__WEBPACK_IMPORTED_MODULE_4__["default"].getScene(id)) === null || _a === void 0 ? void 0 : _a.getNonDeletedElement(id);\n\n    if (element) {\n      return element;\n    }\n\n    return null;\n  }\n\n  static handleBoxSelection(event, appState, setState) {\n    var _a;\n\n    if (!appState.editingLinearElement || ((_a = appState.draggingElement) === null || _a === void 0 ? void 0 : _a.type) !== "selection") {\n      return false;\n    }\n\n    const {\n      editingLinearElement\n    } = appState;\n    const {\n      selectedPointsIndices,\n      elementId\n    } = editingLinearElement;\n    const element = LinearElementEditor.getElement(elementId);\n\n    if (!element) {\n      return false;\n    }\n\n    const [selectionX1, selectionY1, selectionX2, selectionY2] = (0,___WEBPACK_IMPORTED_MODULE_1__.getElementAbsoluteCoords)(appState.draggingElement);\n    const pointsSceneCoords = LinearElementEditor.getPointsGlobalCoordinates(element);\n    const nextSelectedPoints = pointsSceneCoords.reduce((acc, point, index) => {\n      if (point[0] >= selectionX1 && point[0] <= selectionX2 && point[1] >= selectionY1 && point[1] <= selectionY2 || event.shiftKey && (selectedPointsIndices === null || selectedPointsIndices === void 0 ? void 0 : selectedPointsIndices.includes(index))) {\n        acc.push(index);\n      }\n\n      return acc;\n    }, []);\n    setState({\n      editingLinearElement: Object.assign(Object.assign({}, editingLinearElement), {\n        selectedPointsIndices: nextSelectedPoints.length ? nextSelectedPoints : null\n      })\n    });\n  }\n  /** @returns whether point was dragged */\n\n\n  static handlePointDragging(event, appState, scenePointerX, scenePointerY, maybeSuggestBinding, linearElementEditor) {\n    if (!linearElementEditor) {\n      return false;\n    }\n\n    const {\n      selectedPointsIndices,\n      elementId\n    } = linearElementEditor;\n    const element = LinearElementEditor.getElement(elementId);\n\n    if (!element) {\n      return false;\n    } // point that\'s being dragged (out of all selected points)\n\n\n    const draggingPoint = element.points[linearElementEditor.pointerDownState.lastClickedPoint];\n\n    if (selectedPointsIndices && draggingPoint) {\n      if ((0,_keys__WEBPACK_IMPORTED_MODULE_8__.shouldRotateWithDiscreteAngle)(event) && selectedPointsIndices.length === 1 && element.points.length > 1) {\n        const selectedIndex = selectedPointsIndices[0];\n        const referencePoint = element.points[selectedIndex === 0 ? 1 : selectedIndex - 1];\n\n        const [width, height] = LinearElementEditor._getShiftLockedDelta(element, referencePoint, [scenePointerX, scenePointerY], event[_keys__WEBPACK_IMPORTED_MODULE_8__.KEYS.CTRL_OR_CMD] ? null : appState.gridSize);\n\n        LinearElementEditor.movePoints(element, [{\n          index: selectedIndex,\n          point: [width + referencePoint[0], height + referencePoint[1]],\n          isDragging: selectedIndex === linearElementEditor.pointerDownState.lastClickedPoint\n        }]);\n      } else {\n        const newDraggingPointPosition = LinearElementEditor.createPointAt(element, scenePointerX - linearElementEditor.pointerOffset.x, scenePointerY - linearElementEditor.pointerOffset.y, event[_keys__WEBPACK_IMPORTED_MODULE_8__.KEYS.CTRL_OR_CMD] ? null : appState.gridSize);\n        const deltaX = newDraggingPointPosition[0] - draggingPoint[0];\n        const deltaY = newDraggingPointPosition[1] - draggingPoint[1];\n        LinearElementEditor.movePoints(element, selectedPointsIndices.map(pointIndex => {\n          const newPointPosition = pointIndex === linearElementEditor.pointerDownState.lastClickedPoint ? LinearElementEditor.createPointAt(element, scenePointerX - linearElementEditor.pointerOffset.x, scenePointerY - linearElementEditor.pointerOffset.y, event[_keys__WEBPACK_IMPORTED_MODULE_8__.KEYS.CTRL_OR_CMD] ? null : appState.gridSize) : [element.points[pointIndex][0] + deltaX, element.points[pointIndex][1] + deltaY];\n          return {\n            index: pointIndex,\n            point: newPointPosition,\n            isDragging: pointIndex === linearElementEditor.pointerDownState.lastClickedPoint\n          };\n        }));\n      }\n\n      const boundTextElement = (0,_textElement__WEBPACK_IMPORTED_MODULE_9__.getBoundTextElement)(element);\n\n      if (boundTextElement) {\n        (0,_textElement__WEBPACK_IMPORTED_MODULE_9__.handleBindTextResize)(element, false);\n      } // suggest bindings for first and last point if selected\n\n\n      if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_7__.isBindingElement)(element, false)) {\n        const coords = [];\n        const firstSelectedIndex = selectedPointsIndices[0];\n\n        if (firstSelectedIndex === 0) {\n          coords.push((0,_utils__WEBPACK_IMPORTED_MODULE_6__.tupleToCoors)(LinearElementEditor.getPointGlobalCoordinates(element, element.points[0])));\n        }\n\n        const lastSelectedIndex = selectedPointsIndices[selectedPointsIndices.length - 1];\n\n        if (lastSelectedIndex === element.points.length - 1) {\n          coords.push((0,_utils__WEBPACK_IMPORTED_MODULE_6__.tupleToCoors)(LinearElementEditor.getPointGlobalCoordinates(element, element.points[lastSelectedIndex])));\n        }\n\n        if (coords.length) {\n          maybeSuggestBinding(element, coords);\n        }\n      }\n\n      return true;\n    }\n\n    return false;\n  }\n\n  static handlePointerUp(event, editingLinearElement, appState) {\n    var _a;\n\n    const {\n      elementId,\n      selectedPointsIndices,\n      isDragging,\n      pointerDownState\n    } = editingLinearElement;\n    const element = LinearElementEditor.getElement(elementId);\n\n    if (!element) {\n      return editingLinearElement;\n    }\n\n    const bindings = {};\n\n    if (isDragging && selectedPointsIndices) {\n      for (const selectedPoint of selectedPointsIndices) {\n        if (selectedPoint === 0 || selectedPoint === element.points.length - 1) {\n          if ((0,_math__WEBPACK_IMPORTED_MODULE_0__.isPathALoop)(element.points, appState.zoom.value)) {\n            LinearElementEditor.movePoints(element, [{\n              index: selectedPoint,\n              point: selectedPoint === 0 ? element.points[element.points.length - 1] : element.points[0]\n            }]);\n          }\n\n          const bindingElement = (0,_binding__WEBPACK_IMPORTED_MODULE_5__.isBindingEnabled)(appState) ? (0,_binding__WEBPACK_IMPORTED_MODULE_5__.getHoveredElementForBinding)((0,_utils__WEBPACK_IMPORTED_MODULE_6__.tupleToCoors)(LinearElementEditor.getPointAtIndexGlobalCoordinates(element, selectedPoint)), _scene_Scene__WEBPACK_IMPORTED_MODULE_4__["default"].getScene(element)) : null;\n          bindings[selectedPoint === 0 ? "startBindingElement" : "endBindingElement"] = bindingElement;\n        }\n      }\n    }\n\n    return Object.assign(Object.assign(Object.assign({}, editingLinearElement), bindings), {\n      // if clicking without previously dragging a point(s), and not holding\n      // shift, deselect all points except the one clicked. If holding shift,\n      // toggle the point.\n      selectedPointsIndices: isDragging || event.shiftKey ? !isDragging && event.shiftKey && ((_a = pointerDownState.prevSelectedPointsIndices) === null || _a === void 0 ? void 0 : _a.includes(pointerDownState.lastClickedPoint)) ? selectedPointsIndices && selectedPointsIndices.filter(pointIndex => pointIndex !== pointerDownState.lastClickedPoint) : selectedPointsIndices : (selectedPointsIndices === null || selectedPointsIndices === void 0 ? void 0 : selectedPointsIndices.includes(pointerDownState.lastClickedPoint)) ? [pointerDownState.lastClickedPoint] : selectedPointsIndices,\n      isDragging: false,\n      pointerOffset: {\n        x: 0,\n        y: 0\n      }\n    });\n  }\n\n  static isSegmentTooShort(element, startPoint, endPoint, zoom) {\n    let distance = (0,_math__WEBPACK_IMPORTED_MODULE_0__.distance2d)(startPoint[0], startPoint[1], endPoint[0], endPoint[1]);\n\n    if (element.points.length > 2 && element.roundness) {\n      distance = (0,_math__WEBPACK_IMPORTED_MODULE_0__.getBezierCurveLength)(element, endPoint);\n    }\n\n    return distance * zoom.value < LinearElementEditor.POINT_HANDLE_SIZE * 4;\n  }\n\n  static getSegmentMidPoint(element, startPoint, endPoint, endPointIndex) {\n    let segmentMidPoint = (0,_math__WEBPACK_IMPORTED_MODULE_0__.centerPoint)(startPoint, endPoint);\n\n    if (element.points.length > 2 && element.roundness) {\n      const controlPoints = (0,_math__WEBPACK_IMPORTED_MODULE_0__.getControlPointsForBezierCurve)(element, element.points[endPointIndex]);\n\n      if (controlPoints) {\n        const t = (0,_math__WEBPACK_IMPORTED_MODULE_0__.mapIntervalToBezierT)(element, element.points[endPointIndex], 0.5);\n        const [tx, ty] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.getBezierXY)(controlPoints[0], controlPoints[1], controlPoints[2], controlPoints[3], t);\n        segmentMidPoint = LinearElementEditor.getPointGlobalCoordinates(element, [tx, ty]);\n      }\n    }\n\n    return segmentMidPoint;\n  }\n\n  static getSegmentMidPointIndex(linearElementEditor, appState, midPoint) {\n    const element = LinearElementEditor.getElement(linearElementEditor.elementId);\n\n    if (!element) {\n      return -1;\n    }\n\n    const midPoints = LinearElementEditor.getEditorMidPoints(element, appState);\n    let index = 0;\n\n    while (index < midPoints.length) {\n      if (LinearElementEditor.arePointsEqual(midPoint, midPoints[index])) {\n        return index + 1;\n      }\n\n      index++;\n    }\n\n    return -1;\n  }\n\n  static handlePointerDown(event, appState, history, scenePointer, linearElementEditor) {\n    var _a;\n\n    const ret = {\n      didAddPoint: false,\n      hitElement: null,\n      linearElementEditor: null\n    };\n\n    if (!linearElementEditor) {\n      return ret;\n    }\n\n    const {\n      elementId\n    } = linearElementEditor;\n    const element = LinearElementEditor.getElement(elementId);\n\n    if (!element) {\n      return ret;\n    }\n\n    const segmentMidpoint = LinearElementEditor.getSegmentMidpointHitCoords(linearElementEditor, scenePointer, appState);\n    let segmentMidpointIndex = null;\n\n    if (segmentMidpoint) {\n      segmentMidpointIndex = LinearElementEditor.getSegmentMidPointIndex(linearElementEditor, appState, segmentMidpoint);\n    }\n\n    if (event.altKey && appState.editingLinearElement) {\n      if (linearElementEditor.lastUncommittedPoint == null) {\n        (0,_mutateElement__WEBPACK_IMPORTED_MODULE_3__.mutateElement)(element, {\n          points: [...element.points, LinearElementEditor.createPointAt(element, scenePointer.x, scenePointer.y, event[_keys__WEBPACK_IMPORTED_MODULE_8__.KEYS.CTRL_OR_CMD] ? null : appState.gridSize)]\n        });\n        ret.didAddPoint = true;\n      }\n\n      history.resumeRecording();\n      ret.linearElementEditor = Object.assign(Object.assign({}, linearElementEditor), {\n        pointerDownState: {\n          prevSelectedPointsIndices: linearElementEditor.selectedPointsIndices,\n          lastClickedPoint: -1,\n          origin: {\n            x: scenePointer.x,\n            y: scenePointer.y\n          },\n          segmentMidpoint: {\n            value: segmentMidpoint,\n            index: segmentMidpointIndex,\n            added: false\n          }\n        },\n        selectedPointsIndices: [element.points.length - 1],\n        lastUncommittedPoint: null,\n        endBindingElement: (0,_binding__WEBPACK_IMPORTED_MODULE_5__.getHoveredElementForBinding)(scenePointer, _scene_Scene__WEBPACK_IMPORTED_MODULE_4__["default"].getScene(element))\n      });\n      ret.didAddPoint = true;\n      return ret;\n    }\n\n    const clickedPointIndex = LinearElementEditor.getPointIndexUnderCursor(element, appState.zoom, scenePointer.x, scenePointer.y); // if we clicked on a point, set the element as hitElement otherwise\n    // it would get deselected if the point is outside the hitbox area\n\n    if (clickedPointIndex >= 0 || segmentMidpoint) {\n      ret.hitElement = element;\n    } else {\n      // You might be wandering why we are storing the binding elements on\n      // LinearElementEditor and passing them in, instead of calculating them\n      // from the end points of the `linearElement` - this is to allow disabling\n      // binding (which needs to happen at the point the user finishes moving\n      // the point).\n      const {\n        startBindingElement,\n        endBindingElement\n      } = linearElementEditor;\n\n      if ((0,_binding__WEBPACK_IMPORTED_MODULE_5__.isBindingEnabled)(appState) && (0,_typeChecks__WEBPACK_IMPORTED_MODULE_7__.isBindingElement)(element)) {\n        (0,_binding__WEBPACK_IMPORTED_MODULE_5__.bindOrUnbindLinearElement)(element, startBindingElement, endBindingElement);\n      }\n    }\n\n    const [x1, y1, x2, y2] = (0,___WEBPACK_IMPORTED_MODULE_1__.getElementAbsoluteCoords)(element);\n    const cx = (x1 + x2) / 2;\n    const cy = (y1 + y2) / 2;\n    const targetPoint = clickedPointIndex > -1 && (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(element.x + element.points[clickedPointIndex][0], element.y + element.points[clickedPointIndex][1], cx, cy, element.angle);\n    const nextSelectedPointsIndices = clickedPointIndex > -1 || event.shiftKey ? event.shiftKey || ((_a = linearElementEditor.selectedPointsIndices) === null || _a === void 0 ? void 0 : _a.includes(clickedPointIndex)) ? normalizeSelectedPoints([...(linearElementEditor.selectedPointsIndices || []), clickedPointIndex]) : [clickedPointIndex] : null;\n    ret.linearElementEditor = Object.assign(Object.assign({}, linearElementEditor), {\n      pointerDownState: {\n        prevSelectedPointsIndices: linearElementEditor.selectedPointsIndices,\n        lastClickedPoint: clickedPointIndex,\n        origin: {\n          x: scenePointer.x,\n          y: scenePointer.y\n        },\n        segmentMidpoint: {\n          value: segmentMidpoint,\n          index: segmentMidpointIndex,\n          added: false\n        }\n      },\n      selectedPointsIndices: nextSelectedPointsIndices,\n      pointerOffset: targetPoint ? {\n        x: scenePointer.x - targetPoint[0],\n        y: scenePointer.y - targetPoint[1]\n      } : {\n        x: 0,\n        y: 0\n      }\n    });\n    return ret;\n  }\n\n  static arePointsEqual(point1, point2) {\n    if (!point1 && !point2) {\n      return true;\n    }\n\n    if (!point1 || !point2) {\n      return false;\n    }\n\n    return (0,_math__WEBPACK_IMPORTED_MODULE_0__.arePointsEqual)(point1, point2);\n  }\n\n  static handlePointerMove(event, scenePointerX, scenePointerY, appState) {\n    if (!appState.editingLinearElement) {\n      return null;\n    }\n\n    const {\n      elementId,\n      lastUncommittedPoint\n    } = appState.editingLinearElement;\n    const element = LinearElementEditor.getElement(elementId);\n\n    if (!element) {\n      return appState.editingLinearElement;\n    }\n\n    const {\n      points\n    } = element;\n    const lastPoint = points[points.length - 1];\n\n    if (!event.altKey) {\n      if (lastPoint === lastUncommittedPoint) {\n        LinearElementEditor.deletePoints(element, [points.length - 1]);\n      }\n\n      return Object.assign(Object.assign({}, appState.editingLinearElement), {\n        lastUncommittedPoint: null\n      });\n    }\n\n    let newPoint;\n\n    if ((0,_keys__WEBPACK_IMPORTED_MODULE_8__.shouldRotateWithDiscreteAngle)(event) && points.length >= 2) {\n      const lastCommittedPoint = points[points.length - 2];\n\n      const [width, height] = LinearElementEditor._getShiftLockedDelta(element, lastCommittedPoint, [scenePointerX, scenePointerY], event[_keys__WEBPACK_IMPORTED_MODULE_8__.KEYS.CTRL_OR_CMD] ? null : appState.gridSize);\n\n      newPoint = [width + lastCommittedPoint[0], height + lastCommittedPoint[1]];\n    } else {\n      newPoint = LinearElementEditor.createPointAt(element, scenePointerX - appState.editingLinearElement.pointerOffset.x, scenePointerY - appState.editingLinearElement.pointerOffset.y, event[_keys__WEBPACK_IMPORTED_MODULE_8__.KEYS.CTRL_OR_CMD] ? null : appState.gridSize);\n    }\n\n    if (lastPoint === lastUncommittedPoint) {\n      LinearElementEditor.movePoints(element, [{\n        index: element.points.length - 1,\n        point: newPoint\n      }]);\n    } else {\n      LinearElementEditor.addPoints(element, appState, [{\n        point: newPoint\n      }]);\n    }\n\n    return Object.assign(Object.assign({}, appState.editingLinearElement), {\n      lastUncommittedPoint: element.points[element.points.length - 1]\n    });\n  }\n  /** scene coords */\n\n\n  static getPointGlobalCoordinates(element, point) {\n    const [x1, y1, x2, y2] = (0,___WEBPACK_IMPORTED_MODULE_1__.getElementAbsoluteCoords)(element);\n    const cx = (x1 + x2) / 2;\n    const cy = (y1 + y2) / 2;\n    let {\n      x,\n      y\n    } = element;\n    [x, y] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(x + point[0], y + point[1], cx, cy, element.angle);\n    return [x, y];\n  }\n  /** scene coords */\n\n\n  static getPointsGlobalCoordinates(element) {\n    const [x1, y1, x2, y2] = (0,___WEBPACK_IMPORTED_MODULE_1__.getElementAbsoluteCoords)(element);\n    const cx = (x1 + x2) / 2;\n    const cy = (y1 + y2) / 2;\n    return element.points.map(point => {\n      let {\n        x,\n        y\n      } = element;\n      [x, y] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(x + point[0], y + point[1], cx, cy, element.angle);\n      return [x, y];\n    });\n  }\n\n  static getPointAtIndexGlobalCoordinates(element, indexMaybeFromEnd) {\n    const index = indexMaybeFromEnd < 0 ? element.points.length + indexMaybeFromEnd : indexMaybeFromEnd;\n    const [x1, y1, x2, y2] = (0,___WEBPACK_IMPORTED_MODULE_1__.getElementAbsoluteCoords)(element);\n    const cx = (x1 + x2) / 2;\n    const cy = (y1 + y2) / 2;\n    const point = element.points[index];\n    const {\n      x,\n      y\n    } = element;\n    return point ? (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(x + point[0], y + point[1], cx, cy, element.angle) : (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(x, y, cx, cy, element.angle);\n  }\n\n  static pointFromAbsoluteCoords(element, absoluteCoords) {\n    const [x1, y1, x2, y2] = (0,___WEBPACK_IMPORTED_MODULE_1__.getElementAbsoluteCoords)(element);\n    const cx = (x1 + x2) / 2;\n    const cy = (y1 + y2) / 2;\n    const [x, y] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(absoluteCoords[0], absoluteCoords[1], cx, cy, -element.angle);\n    return [x - element.x, y - element.y];\n  }\n\n  static getPointIndexUnderCursor(element, zoom, x, y) {\n    const pointHandles = LinearElementEditor.getPointsGlobalCoordinates(element);\n    let idx = pointHandles.length; // loop from right to left because points on the right are rendered over\n    // points on the left, thus should take precedence when clicking, if they\n    // overlap\n\n    while (--idx > -1) {\n      const point = pointHandles[idx];\n\n      if ((0,_math__WEBPACK_IMPORTED_MODULE_0__.distance2d)(x, y, point[0], point[1]) * zoom.value < // +1px to account for outline stroke\n      LinearElementEditor.POINT_HANDLE_SIZE + 1) {\n        return idx;\n      }\n    }\n\n    return -1;\n  }\n\n  static createPointAt(element, scenePointerX, scenePointerY, gridSize) {\n    const pointerOnGrid = (0,_math__WEBPACK_IMPORTED_MODULE_0__.getGridPoint)(scenePointerX, scenePointerY, gridSize);\n    const [x1, y1, x2, y2] = (0,___WEBPACK_IMPORTED_MODULE_1__.getElementAbsoluteCoords)(element);\n    const cx = (x1 + x2) / 2;\n    const cy = (y1 + y2) / 2;\n    const [rotatedX, rotatedY] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(pointerOnGrid[0], pointerOnGrid[1], cx, cy, -element.angle);\n    return [rotatedX - element.x, rotatedY - element.y];\n  }\n  /**\n   * Normalizes line points so that the start point is at [0,0]. This is\n   * expected in various parts of the codebase. Also returns new x/y to account\n   * for the potential normalization.\n   */\n\n\n  static getNormalizedPoints(element) {\n    const {\n      points\n    } = element;\n    const offsetX = points[0][0];\n    const offsetY = points[0][1];\n    return {\n      points: points.map((point, _idx) => {\n        return [point[0] - offsetX, point[1] - offsetY];\n      }),\n      x: element.x + offsetX,\n      y: element.y + offsetY\n    };\n  } // element-mutating methods\n  // ---------------------------------------------------------------------------\n\n\n  static normalizePoints(element) {\n    (0,_mutateElement__WEBPACK_IMPORTED_MODULE_3__.mutateElement)(element, LinearElementEditor.getNormalizedPoints(element));\n  }\n\n  static duplicateSelectedPoints(appState) {\n    if (!appState.editingLinearElement) {\n      return false;\n    }\n\n    const {\n      selectedPointsIndices,\n      elementId\n    } = appState.editingLinearElement;\n    const element = LinearElementEditor.getElement(elementId);\n\n    if (!element || selectedPointsIndices === null) {\n      return false;\n    }\n\n    const {\n      points\n    } = element;\n    const nextSelectedIndices = [];\n    let pointAddedToEnd = false;\n    let indexCursor = -1;\n    const nextPoints = points.reduce((acc, point, index) => {\n      ++indexCursor;\n      acc.push(point);\n      const isSelected = selectedPointsIndices.includes(index);\n\n      if (isSelected) {\n        const nextPoint = points[index + 1];\n\n        if (!nextPoint) {\n          pointAddedToEnd = true;\n        }\n\n        acc.push(nextPoint ? [(point[0] + nextPoint[0]) / 2, (point[1] + nextPoint[1]) / 2] : [point[0], point[1]]);\n        nextSelectedIndices.push(indexCursor + 1);\n        ++indexCursor;\n      }\n\n      return acc;\n    }, []);\n    (0,_mutateElement__WEBPACK_IMPORTED_MODULE_3__.mutateElement)(element, {\n      points: nextPoints\n    }); // temp hack to ensure the line doesn\'t move when adding point to the end,\n    // potentially expanding the bounding box\n\n    if (pointAddedToEnd) {\n      const lastPoint = element.points[element.points.length - 1];\n      LinearElementEditor.movePoints(element, [{\n        index: element.points.length - 1,\n        point: [lastPoint[0] + 30, lastPoint[1] + 30]\n      }]);\n    }\n\n    return {\n      appState: Object.assign(Object.assign({}, appState), {\n        editingLinearElement: Object.assign(Object.assign({}, appState.editingLinearElement), {\n          selectedPointsIndices: nextSelectedIndices\n        })\n      })\n    };\n  }\n\n  static deletePoints(element, pointIndices) {\n    let offsetX = 0;\n    let offsetY = 0;\n    const isDeletingOriginPoint = pointIndices.includes(0); // if deleting first point, make the next to be [0,0] and recalculate\n    // positions of the rest with respect to it\n\n    if (isDeletingOriginPoint) {\n      const firstNonDeletedPoint = element.points.find((point, idx) => {\n        return !pointIndices.includes(idx);\n      });\n\n      if (firstNonDeletedPoint) {\n        offsetX = firstNonDeletedPoint[0];\n        offsetY = firstNonDeletedPoint[1];\n      }\n    }\n\n    const nextPoints = element.points.reduce((acc, point, idx) => {\n      if (!pointIndices.includes(idx)) {\n        acc.push(!acc.length ? [0, 0] : [point[0] - offsetX, point[1] - offsetY]);\n      }\n\n      return acc;\n    }, []);\n\n    LinearElementEditor._updatePoints(element, nextPoints, offsetX, offsetY);\n  }\n\n  static addPoints(element, appState, targetPoints) {\n    const offsetX = 0;\n    const offsetY = 0;\n    const nextPoints = [...element.points, ...targetPoints.map(x => x.point)];\n\n    LinearElementEditor._updatePoints(element, nextPoints, offsetX, offsetY);\n  }\n\n  static movePoints(element, targetPoints, otherUpdates) {\n    const {\n      points\n    } = element; // in case we\'re moving start point, instead of modifying its position\n    // which would break the invariant of it being at [0,0], we move\n    // all the other points in the opposite direction by delta to\n    // offset it. We do the same with actual element.x/y position, so\n    // this hacks are completely transparent to the user.\n\n    let offsetX = 0;\n    let offsetY = 0;\n    const selectedOriginPoint = targetPoints.find(({\n      index\n    }) => index === 0);\n\n    if (selectedOriginPoint) {\n      offsetX = selectedOriginPoint.point[0] + points[selectedOriginPoint.index][0];\n      offsetY = selectedOriginPoint.point[1] + points[selectedOriginPoint.index][1];\n    }\n\n    const nextPoints = points.map((point, idx) => {\n      const selectedPointData = targetPoints.find(p => p.index === idx);\n\n      if (selectedPointData) {\n        if (selectedOriginPoint) {\n          return point;\n        }\n\n        const deltaX = selectedPointData.point[0] - points[selectedPointData.index][0];\n        const deltaY = selectedPointData.point[1] - points[selectedPointData.index][1];\n        return [point[0] + deltaX, point[1] + deltaY];\n      }\n\n      return offsetX || offsetY ? [point[0] - offsetX, point[1] - offsetY] : point;\n    });\n\n    LinearElementEditor._updatePoints(element, nextPoints, offsetX, offsetY, otherUpdates);\n  }\n\n  static shouldAddMidpoint(linearElementEditor, pointerCoords, appState) {\n    const element = LinearElementEditor.getElement(linearElementEditor.elementId);\n\n    if (!element) {\n      return false;\n    }\n\n    const {\n      segmentMidpoint\n    } = linearElementEditor.pointerDownState;\n\n    if (segmentMidpoint.added || segmentMidpoint.value === null || segmentMidpoint.index === null || linearElementEditor.pointerDownState.origin === null) {\n      return false;\n    }\n\n    const origin = linearElementEditor.pointerDownState.origin;\n    const dist = (0,_math__WEBPACK_IMPORTED_MODULE_0__.distance2d)(origin.x, origin.y, pointerCoords.x, pointerCoords.y);\n\n    if (!appState.editingLinearElement && dist < _constants__WEBPACK_IMPORTED_MODULE_10__.DRAGGING_THRESHOLD / appState.zoom.value) {\n      return false;\n    }\n\n    return true;\n  }\n\n  static addMidpoint(linearElementEditor, pointerCoords, appState, snapToGrid) {\n    const element = LinearElementEditor.getElement(linearElementEditor.elementId);\n\n    if (!element) {\n      return;\n    }\n\n    const {\n      segmentMidpoint\n    } = linearElementEditor.pointerDownState;\n    const ret = {\n      pointerDownState: linearElementEditor.pointerDownState,\n      selectedPointsIndices: linearElementEditor.selectedPointsIndices\n    };\n    const midpoint = LinearElementEditor.createPointAt(element, pointerCoords.x, pointerCoords.y, snapToGrid ? appState.gridSize : null);\n    const points = [...element.points.slice(0, segmentMidpoint.index), midpoint, ...element.points.slice(segmentMidpoint.index)];\n    (0,_mutateElement__WEBPACK_IMPORTED_MODULE_3__.mutateElement)(element, {\n      points\n    });\n    ret.pointerDownState = Object.assign(Object.assign({}, linearElementEditor.pointerDownState), {\n      segmentMidpoint: Object.assign(Object.assign({}, linearElementEditor.pointerDownState.segmentMidpoint), {\n        added: true\n      }),\n      lastClickedPoint: segmentMidpoint.index\n    });\n    ret.selectedPointsIndices = [segmentMidpoint.index];\n    return ret;\n  }\n\n  static _updatePoints(element, nextPoints, offsetX, offsetY, otherUpdates) {\n    const nextCoords = (0,_bounds__WEBPACK_IMPORTED_MODULE_2__.getElementPointsCoords)(element, nextPoints);\n    const prevCoords = (0,_bounds__WEBPACK_IMPORTED_MODULE_2__.getElementPointsCoords)(element, element.points);\n    const nextCenterX = (nextCoords[0] + nextCoords[2]) / 2;\n    const nextCenterY = (nextCoords[1] + nextCoords[3]) / 2;\n    const prevCenterX = (prevCoords[0] + prevCoords[2]) / 2;\n    const prevCenterY = (prevCoords[1] + prevCoords[3]) / 2;\n    const dX = prevCenterX - nextCenterX;\n    const dY = prevCenterY - nextCenterY;\n    const rotated = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(offsetX, offsetY, dX, dY, element.angle);\n    (0,_mutateElement__WEBPACK_IMPORTED_MODULE_3__.mutateElement)(element, Object.assign(Object.assign({}, otherUpdates), {\n      points: nextPoints,\n      x: element.x + rotated[0],\n      y: element.y + rotated[1]\n    }));\n  }\n\n  static _getShiftLockedDelta(element, referencePoint, scenePointer, gridSize) {\n    const referencePointCoords = LinearElementEditor.getPointGlobalCoordinates(element, referencePoint);\n    const [gridX, gridY] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.getGridPoint)(scenePointer[0], scenePointer[1], gridSize);\n    const {\n      width,\n      height\n    } = (0,___WEBPACK_IMPORTED_MODULE_1__.getLockedLinearCursorAlignSize)(referencePointCoords[0], referencePointCoords[1], gridX, gridY);\n    return (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotatePoint)([width, height], [0, 0], -element.angle);\n  }\n\n} // ---------------------------------------------------------------------------\n// static methods\n// ---------------------------------------------------------------------------\n\nLinearElementEditor.POINT_HANDLE_SIZE = 10;\n\nLinearElementEditor.getEditorMidPoints = (element, appState) => {\n  const boundText = (0,_textElement__WEBPACK_IMPORTED_MODULE_9__.getBoundTextElement)(element); // Since its not needed outside editor unless 2 pointer lines or bound text\n\n  if (!appState.editingLinearElement && element.points.length > 2 && !boundText) {\n    return [];\n  }\n\n  if (editorMidPointsCache.version === element.version && editorMidPointsCache.zoom === appState.zoom.value) {\n    return editorMidPointsCache.points;\n  }\n\n  LinearElementEditor.updateEditorMidPointsCache(element, appState);\n  return editorMidPointsCache.points;\n};\n\nLinearElementEditor.updateEditorMidPointsCache = (element, appState) => {\n  const points = LinearElementEditor.getPointsGlobalCoordinates(element);\n  let index = 0;\n  const midpoints = [];\n\n  while (index < points.length - 1) {\n    if (LinearElementEditor.isSegmentTooShort(element, element.points[index], element.points[index + 1], appState.zoom)) {\n      midpoints.push(null);\n      index++;\n      continue;\n    }\n\n    const segmentMidPoint = LinearElementEditor.getSegmentMidPoint(element, points[index], points[index + 1], index + 1);\n    midpoints.push(segmentMidPoint);\n    index++;\n  }\n\n  editorMidPointsCache.points = midpoints;\n  editorMidPointsCache.version = element.version;\n  editorMidPointsCache.zoom = appState.zoom.value;\n};\n\nLinearElementEditor.getSegmentMidpointHitCoords = (linearElementEditor, scenePointer, appState) => {\n  const {\n    elementId\n  } = linearElementEditor;\n  const element = LinearElementEditor.getElement(elementId);\n\n  if (!element) {\n    return null;\n  }\n\n  const clickedPointIndex = LinearElementEditor.getPointIndexUnderCursor(element, appState.zoom, scenePointer.x, scenePointer.y);\n\n  if (clickedPointIndex >= 0) {\n    return null;\n  }\n\n  const points = LinearElementEditor.getPointsGlobalCoordinates(element);\n\n  if (points.length >= 3 && !appState.editingLinearElement) {\n    return null;\n  }\n\n  const threshold = LinearElementEditor.POINT_HANDLE_SIZE / appState.zoom.value;\n  const existingSegmentMidpointHitCoords = linearElementEditor.segmentMidPointHoveredCoords;\n\n  if (existingSegmentMidpointHitCoords) {\n    const distance = (0,_math__WEBPACK_IMPORTED_MODULE_0__.distance2d)(existingSegmentMidpointHitCoords[0], existingSegmentMidpointHitCoords[1], scenePointer.x, scenePointer.y);\n\n    if (distance <= threshold) {\n      return existingSegmentMidpointHitCoords;\n    }\n  }\n\n  let index = 0;\n  const midPoints = LinearElementEditor.getEditorMidPoints(element, appState);\n\n  while (index < midPoints.length) {\n    if (midPoints[index] !== null) {\n      const distance = (0,_math__WEBPACK_IMPORTED_MODULE_0__.distance2d)(midPoints[index][0], midPoints[index][1], scenePointer.x, scenePointer.y);\n\n      if (distance <= threshold) {\n        return midPoints[index];\n      }\n    }\n\n    index++;\n  }\n\n  return null;\n};\n\nLinearElementEditor.getBoundTextElementPosition = (element, boundTextElement) => {\n  const points = LinearElementEditor.getPointsGlobalCoordinates(element);\n\n  if (points.length < 2) {\n    (0,_mutateElement__WEBPACK_IMPORTED_MODULE_3__.mutateElement)(boundTextElement, {\n      isDeleted: true\n    });\n  }\n\n  let x = 0;\n  let y = 0;\n\n  if (element.points.length % 2 === 1) {\n    const index = Math.floor(element.points.length / 2);\n    const midPoint = LinearElementEditor.getPointGlobalCoordinates(element, element.points[index]);\n    x = midPoint[0] - boundTextElement.width / 2;\n    y = midPoint[1] - boundTextElement.height / 2;\n  } else {\n    const index = element.points.length / 2 - 1;\n    let midSegmentMidpoint = editorMidPointsCache.points[index];\n\n    if (element.points.length === 2) {\n      midSegmentMidpoint = (0,_math__WEBPACK_IMPORTED_MODULE_0__.centerPoint)(points[0], points[1]);\n    }\n\n    if (!midSegmentMidpoint || editorMidPointsCache.version !== element.version) {\n      midSegmentMidpoint = LinearElementEditor.getSegmentMidPoint(element, points[index], points[index + 1], index + 1);\n    }\n\n    x = midSegmentMidpoint[0] - boundTextElement.width / 2;\n    y = midSegmentMidpoint[1] - boundTextElement.height / 2;\n  }\n\n  return {\n    x,\n    y\n  };\n};\n\nLinearElementEditor.getMinMaxXYWithBoundText = (element, elementBounds, boundTextElement) => {\n  let [x1, y1, x2, y2] = elementBounds;\n  const cx = (x1 + x2) / 2;\n  const cy = (y1 + y2) / 2;\n  const {\n    x: boundTextX1,\n    y: boundTextY1\n  } = LinearElementEditor.getBoundTextElementPosition(element, boundTextElement);\n  const boundTextX2 = boundTextX1 + boundTextElement.width;\n  const boundTextY2 = boundTextY1 + boundTextElement.height;\n  const topLeftRotatedPoint = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotatePoint)([x1, y1], [cx, cy], element.angle);\n  const topRightRotatedPoint = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotatePoint)([x2, y1], [cx, cy], element.angle);\n  const counterRotateBoundTextTopLeft = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotatePoint)([boundTextX1, boundTextY1], [cx, cy], -element.angle);\n  const counterRotateBoundTextTopRight = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotatePoint)([boundTextX2, boundTextY1], [cx, cy], -element.angle);\n  const counterRotateBoundTextBottomLeft = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotatePoint)([boundTextX1, boundTextY2], [cx, cy], -element.angle);\n  const counterRotateBoundTextBottomRight = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotatePoint)([boundTextX2, boundTextY2], [cx, cy], -element.angle);\n\n  if (topLeftRotatedPoint[0] < topRightRotatedPoint[0] && topLeftRotatedPoint[1] >= topRightRotatedPoint[1]) {\n    x1 = Math.min(x1, counterRotateBoundTextBottomLeft[0]);\n    x2 = Math.max(x2, Math.max(counterRotateBoundTextTopRight[0], counterRotateBoundTextBottomRight[0]));\n    y1 = Math.min(y1, counterRotateBoundTextTopLeft[1]);\n    y2 = Math.max(y2, counterRotateBoundTextBottomRight[1]);\n  } else if (topLeftRotatedPoint[0] >= topRightRotatedPoint[0] && topLeftRotatedPoint[1] > topRightRotatedPoint[1]) {\n    x1 = Math.min(x1, counterRotateBoundTextBottomRight[0]);\n    x2 = Math.max(x2, Math.max(counterRotateBoundTextTopLeft[0], counterRotateBoundTextTopRight[0]));\n    y1 = Math.min(y1, counterRotateBoundTextBottomLeft[1]);\n    y2 = Math.max(y2, counterRotateBoundTextTopRight[1]);\n  } else if (topLeftRotatedPoint[0] >= topRightRotatedPoint[0]) {\n    x1 = Math.min(x1, counterRotateBoundTextTopRight[0]);\n    x2 = Math.max(x2, counterRotateBoundTextBottomLeft[0]);\n    y1 = Math.min(y1, counterRotateBoundTextBottomRight[1]);\n    y2 = Math.max(y2, counterRotateBoundTextTopLeft[1]);\n  } else if (topLeftRotatedPoint[1] <= topRightRotatedPoint[1]) {\n    x1 = Math.min(x1, Math.min(counterRotateBoundTextTopRight[0], counterRotateBoundTextTopLeft[0]));\n    x2 = Math.max(x2, counterRotateBoundTextBottomRight[0]);\n    y1 = Math.min(y1, counterRotateBoundTextTopRight[1]);\n    y2 = Math.max(y2, counterRotateBoundTextBottomLeft[1]);\n  }\n\n  return [x1, y1, x2, y2, cx, cy];\n};\n\nLinearElementEditor.getElementAbsoluteCoords = (element, includeBoundText = false) => {\n  let coords;\n  let x1;\n  let y1;\n  let x2;\n  let y2;\n\n  if (element.points.length < 2 || !_scene_ShapeCache__WEBPACK_IMPORTED_MODULE_11__.ShapeCache.get(element)) {\n    // XXX this is just a poor estimate and not very useful\n    const {\n      minX,\n      minY,\n      maxX,\n      maxY\n    } = element.points.reduce((limits, [x, y]) => {\n      limits.minY = Math.min(limits.minY, y);\n      limits.minX = Math.min(limits.minX, x);\n      limits.maxX = Math.max(limits.maxX, x);\n      limits.maxY = Math.max(limits.maxY, y);\n      return limits;\n    }, {\n      minX: Infinity,\n      minY: Infinity,\n      maxX: -Infinity,\n      maxY: -Infinity\n    });\n    x1 = minX + element.x;\n    y1 = minY + element.y;\n    x2 = maxX + element.x;\n    y2 = maxY + element.y;\n  } else {\n    const shape = _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_11__.ShapeCache.generateElementShape(element); // first element is always the curve\n\n    const ops = (0,_bounds__WEBPACK_IMPORTED_MODULE_2__.getCurvePathOps)(shape[0]);\n    const [minX, minY, maxX, maxY] = (0,_bounds__WEBPACK_IMPORTED_MODULE_2__.getMinMaxXYFromCurvePathOps)(ops);\n    x1 = minX + element.x;\n    y1 = minY + element.y;\n    x2 = maxX + element.x;\n    y2 = maxY + element.y;\n  }\n\n  const cx = (x1 + x2) / 2;\n  const cy = (y1 + y2) / 2;\n  coords = [x1, y1, x2, y2, cx, cy];\n\n  if (!includeBoundText) {\n    return coords;\n  }\n\n  const boundTextElement = (0,_textElement__WEBPACK_IMPORTED_MODULE_9__.getBoundTextElement)(element);\n\n  if (boundTextElement) {\n    coords = LinearElementEditor.getMinMaxXYWithBoundText(element, [x1, y1, x2, y2], boundTextElement);\n  }\n\n  return coords;\n};\n\nconst normalizeSelectedPoints = points => {\n  let nextPoints = [...new Set(points.filter(p => p !== null && p !== -1))];\n  nextPoints = nextPoints.sort((a, b) => a - b);\n  return nextPoints.length ? nextPoints : null;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 57600 characters]\n//# sourceURL=webpack-internal:///../../element/linearElementEditor.ts\n');
              }
            ),
            /***/
            "../../element/mutateElement.ts": (
              /*!**************************************!*\
                !*** ../../element/mutateElement.ts ***!
                \**************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "bumpVersion": () => (/* binding */ bumpVersion),\n/* harmony export */   "mutateElement": () => (/* binding */ mutateElement),\n/* harmony export */   "newElementWith": () => (/* binding */ newElementWith)\n/* harmony export */ });\n/* harmony import */ var _scene_Scene__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../scene/Scene */ "../../scene/Scene.ts");\n/* harmony import */ var _points__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../points */ "../../points.ts");\n/* harmony import */ var _random__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../random */ "../../random.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../scene/ShapeCache */ "../../scene/ShapeCache.ts");\n\n\n\n\n // This function tracks updates of text elements for the purposes for collaboration.\n// The version is used to compare updates when more than one user is working in\n// the same drawing. Note: this will trigger the component to update. Make sure you\n// are calling it either from a React event handler or within unstable_batchedUpdates().\n\nconst mutateElement = (element, updates, informMutation = true) => {\n  var _a;\n\n  let didChange = false; // casting to any because can\'t use `in` operator\n  // (see https://github.com/microsoft/TypeScript/issues/21732)\n\n  const {\n    points,\n    fileId\n  } = updates;\n\n  if (typeof points !== "undefined") {\n    updates = Object.assign(Object.assign({}, (0,_points__WEBPACK_IMPORTED_MODULE_1__.getSizeFromPoints)(points)), updates);\n  }\n\n  for (const key in updates) {\n    const value = updates[key];\n\n    if (typeof value !== "undefined") {\n      if (element[key] === value && ( // if object, always update because its attrs could have changed\n      // (except for specific keys we handle below)\n      typeof value !== "object" || value === null || key === "groupIds" || key === "scale")) {\n        continue;\n      }\n\n      if (key === "scale") {\n        const prevScale = element[key];\n        const nextScale = value;\n\n        if (prevScale[0] === nextScale[0] && prevScale[1] === nextScale[1]) {\n          continue;\n        }\n      } else if (key === "points") {\n        const prevPoints = element[key];\n        const nextPoints = value;\n\n        if (prevPoints.length === nextPoints.length) {\n          let didChangePoints = false;\n          let index = prevPoints.length;\n\n          while (--index) {\n            const prevPoint = prevPoints[index];\n            const nextPoint = nextPoints[index];\n\n            if (prevPoint[0] !== nextPoint[0] || prevPoint[1] !== nextPoint[1]) {\n              didChangePoints = true;\n              break;\n            }\n          }\n\n          if (!didChangePoints) {\n            continue;\n          }\n        }\n      }\n\n      element[key] = value;\n      didChange = true;\n    }\n  }\n\n  if (!didChange) {\n    return element;\n  }\n\n  if (typeof updates.height !== "undefined" || typeof updates.width !== "undefined" || typeof fileId != "undefined" || typeof points !== "undefined") {\n    _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_4__.ShapeCache["delete"](element);\n  }\n\n  element.version++;\n  element.versionNonce = (0,_random__WEBPACK_IMPORTED_MODULE_2__.randomInteger)();\n  element.updated = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.getUpdatedTimestamp)();\n\n  if (informMutation) {\n    (_a = _scene_Scene__WEBPACK_IMPORTED_MODULE_0__["default"].getScene(element)) === null || _a === void 0 ? void 0 : _a.informMutation();\n  }\n\n  return element;\n};\nconst newElementWith = (element, updates) => {\n  let didChange = false;\n\n  for (const key in updates) {\n    const value = updates[key];\n\n    if (typeof value !== "undefined") {\n      if (element[key] === value && ( // if object, always update because its attrs could have changed\n      typeof value !== "object" || value === null)) {\n        continue;\n      }\n\n      didChange = true;\n    }\n  }\n\n  if (!didChange) {\n    return element;\n  }\n\n  return Object.assign(Object.assign(Object.assign({}, element), updates), {\n    updated: (0,_utils__WEBPACK_IMPORTED_MODULE_3__.getUpdatedTimestamp)(),\n    version: element.version + 1,\n    versionNonce: (0,_random__WEBPACK_IMPORTED_MODULE_2__.randomInteger)()\n  });\n};\n/**\n * Mutates element, bumping `version`, `versionNonce`, and `updated`.\n *\n * NOTE: does not trigger re-render.\n */\n\nconst bumpVersion = (element, version) => {\n  element.version = (version !== null && version !== void 0 ? version : element.version) + 1;\n  element.versionNonce = (0,_random__WEBPACK_IMPORTED_MODULE_2__.randomInteger)();\n  element.updated = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.getUpdatedTimestamp)();\n  return element;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6396 characters]\n//# sourceURL=webpack-internal:///../../element/mutateElement.ts\n');
              }
            ),
            /***/
            "../../element/newElement.ts": (
              /*!***********************************!*\
                !*** ../../element/newElement.ts ***!
                \***********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "deepCopyElement": () => (/* binding */ deepCopyElement),
/* harmony export */   "duplicateElement": () => (/* binding */ duplicateElement),
/* harmony export */   "duplicateElements": () => (/* binding */ duplicateElements),
/* harmony export */   "newElement": () => (/* binding */ newElement),
/* harmony export */   "newEmbeddableElement": () => (/* binding */ newEmbeddableElement),
/* harmony export */   "newFrameElement": () => (/* binding */ newFrameElement),
/* harmony export */   "newFreeDrawElement": () => (/* binding */ newFreeDrawElement),
/* harmony export */   "newImageElement": () => (/* binding */ newImageElement),
/* harmony export */   "newLinearElement": () => (/* binding */ newLinearElement),
/* harmony export */   "newTextElement": () => (/* binding */ newTextElement),
/* harmony export */   "refreshTextDimensions": () => (/* binding */ refreshTextDimensions),
/* harmony export */   "regenerateId": () => (/* binding */ regenerateId),
/* harmony export */   "updateTextElement": () => (/* binding */ updateTextElement)
/* harmony export */ });
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils */ "../../utils.ts");
/* harmony import */ var _random__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../random */ "../../random.ts");
/* harmony import */ var _mutateElement__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./mutateElement */ "../../element/mutateElement.ts");
/* harmony import */ var _groups__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../groups */ "../../groups.ts");
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! . */ "../../element/index.ts");
/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../math */ "../../math.ts");
/* harmony import */ var _bounds__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./bounds */ "../../element/bounds.ts");
/* harmony import */ var _textElement__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./textElement */ "../../element/textElement.ts");
/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../constants */ "../../constants.ts");
var __rest = undefined && undefined.__rest || function (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;
};











const _newElementBase = (type, _a) => {
  var _b, _c;

  var {
    x,
    y,
    strokeColor = _constants__WEBPACK_IMPORTED_MODULE_8__.DEFAULT_ELEMENT_PROPS.strokeColor,
    backgroundColor = _constants__WEBPACK_IMPORTED_MODULE_8__.DEFAULT_ELEMENT_PROPS.backgroundColor,
    fillStyle = _constants__WEBPACK_IMPORTED_MODULE_8__.DEFAULT_ELEMENT_PROPS.fillStyle,
    strokeWidth = _constants__WEBPACK_IMPORTED_MODULE_8__.DEFAULT_ELEMENT_PROPS.strokeWidth,
    strokeStyle = _constants__WEBPACK_IMPORTED_MODULE_8__.DEFAULT_ELEMENT_PROPS.strokeStyle,
    roughness = _constants__WEBPACK_IMPORTED_MODULE_8__.DEFAULT_ELEMENT_PROPS.roughness,
    opacity = _constants__WEBPACK_IMPORTED_MODULE_8__.DEFAULT_ELEMENT_PROPS.opacity,
    width = 0,
    height = 0,
    angle = 0,
    groupIds = [],
    frameId = null,
    roundness = null,
    boundElements = null,
    link = null,
    locked = _constants__WEBPACK_IMPORTED_MODULE_8__.DEFAULT_ELEMENT_PROPS.locked
  } = _a,
      rest = __rest(_a, ["x", "y", "strokeColor", "backgroundColor", "fillStyle", "strokeWidth", "strokeStyle", "roughness", "opacity", "width", "height", "angle", "groupIds", "frameId", "roundness", "boundElements", "link", "locked"]); // assign type to guard against excess properties


  const element = {
    id: rest.id || (0,_random__WEBPACK_IMPORTED_MODULE_1__.randomId)(),
    type,
    x,
    y,
    width,
    height,
    angle,
    strokeColor,
    backgroundColor,
    fillStyle,
    strokeWidth,
    strokeStyle,
    roughness,
    opacity,
    groupIds,
    frameId,
    roundness,
    seed: (_b = rest.seed) !== null && _b !== void 0 ? _b : (0,_random__WEBPACK_IMPORTED_MODULE_1__.randomInteger)(),
    version: rest.version || 1,
    versionNonce: (_c = rest.versionNonce) !== null && _c !== void 0 ? _c : 0,
    isDeleted: false,
    boundElements,
    updated: (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getUpdatedTimestamp)(),
    link,
    locked,
    customData: rest.customData
  };
  return element;
};

const newElement = opts => _newElementBase(opts.type, opts);
const newEmbeddableElement = opts => {
  return Object.assign(Object.assign({}, _newElementBase("embeddable", opts)), {
    validated: opts.validated
  });
};
const newFrameElement = opts => {
  const frameElement = (0,_mutateElement__WEBPACK_IMPORTED_MODULE_2__.newElementWith)(Object.assign(Object.assign({}, _newElementBase("frame", opts)), {
    type: "frame",
    name: (opts === null || opts === void 0 ? void 0 : opts.name) || null
  }), {});
  return frameElement;
};
/** computes element x/y offset based on textAlign/verticalAlign */

const getTextElementPositionOffsets = (opts, metrics) => {
  return {
    x: opts.textAlign === "center" ? metrics.width / 2 : opts.textAlign === "right" ? metrics.width : 0,
    y: opts.verticalAlign === "middle" ? metrics.height / 2 : 0
  };
};

const newTextElement = opts => {
  const fontFamily = opts.fontFamily || _constants__WEBPACK_IMPORTED_MODULE_8__.DEFAULT_FONT_FAMILY;
  const fontSize = opts.fontSize || _constants__WEBPACK_IMPORTED_MODULE_8__.DEFAULT_FONT_SIZE;
  const lineHeight = opts.lineHeight || (0,_textElement__WEBPACK_IMPORTED_MODULE_7__.getDefaultLineHeight)(fontFamily);
  const text = (0,_textElement__WEBPACK_IMPORTED_MODULE_7__.normalizeText)(opts.text);
  const metrics = (0,_textElement__WEBPACK_IMPORTED_MODULE_7__.measureText)(text, (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getFontString)({
    fontFamily,
    fontSize
  }), lineHeight);
  const textAlign = opts.textAlign || _constants__WEBPACK_IMPORTED_MODULE_8__.DEFAULT_TEXT_ALIGN;
  const verticalAlign = opts.verticalAlign || _constants__WEBPACK_IMPORTED_MODULE_8__.DEFAULT_VERTICAL_ALIGN;
  const offsets = getTextElementPositionOffsets({
    textAlign,
    verticalAlign
  }, metrics);
  const textElement = (0,_mutateElement__WEBPACK_IMPORTED_MODULE_2__.newElementWith)(Object.assign(Object.assign({}, _newElementBase("text", opts)), {
    text,
    fontSize,
    fontFamily,
    textAlign,
    verticalAlign,
    x: opts.x - offsets.x,
    y: opts.y - offsets.y,
    width: metrics.width,
    height: metrics.height,
    baseline: metrics.baseline,
    containerId: opts.containerId || null,
    originalText: text,
    lineHeight
  }), {});
  return textElement;
};

const getAdjustedDimensions = (element, nextText) => {
  const {
    width: nextWidth,
    height: nextHeight,
    baseline: nextBaseline
  } = (0,_textElement__WEBPACK_IMPORTED_MODULE_7__.measureText)(nextText, (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getFontString)(element), element.lineHeight);
  const {
    textAlign,
    verticalAlign
  } = element;
  let x;
  let y;

  if (textAlign === "center" && verticalAlign === _constants__WEBPACK_IMPORTED_MODULE_8__.VERTICAL_ALIGN.MIDDLE && !element.containerId) {
    const prevMetrics = (0,_textElement__WEBPACK_IMPORTED_MODULE_7__.measureText)(element.text, (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getFontString)(element), element.lineHeight);
    const offsets = getTextElementPositionOffsets(element, {
      width: nextWidth - prevMetrics.width,
      height: nextHeight - prevMetrics.height
    });
    x = element.x - offsets.x;
    y = element.y - offsets.y;
  } else {
    const [x1, y1, x2, y2] = (0,___WEBPACK_IMPORTED_MODULE_4__.getElementAbsoluteCoords)(element);
    const [nextX1, nextY1, nextX2, nextY2] = (0,_bounds__WEBPACK_IMPORTED_MODULE_6__.getResizedElementAbsoluteCoords)(element, nextWidth, nextHeight, false);
    const deltaX1 = (x1 - nextX1) / 2;
    const deltaY1 = (y1 - nextY1) / 2;
    const deltaX2 = (x2 - nextX2) / 2;
    const deltaY2 = (y2 - nextY2) / 2;
    [x, y] = (0,_math__WEBPACK_IMPORTED_MODULE_5__.adjustXYWithRotation)({
      s: true,
      e: textAlign === "center" || textAlign === "left",
      w: textAlign === "center" || textAlign === "right"
    }, element.x, element.y, element.angle, deltaX1, deltaY1, deltaX2, deltaY2);
  }

  return {
    width: nextWidth,
    height: nextHeight,
    baseline: nextBaseline,
    x: Number.isFinite(x) ? x : element.x,
    y: Number.isFinite(y) ? y : element.y
  };
};

const refreshTextDimensions = (textElement, text = textElement.text) => {
  if (textElement.isDeleted) {
    return;
  }

  const container = (0,_textElement__WEBPACK_IMPORTED_MODULE_7__.getContainerElement)(textElement);

  if (container) {
    text = (0,_textElement__WEBPACK_IMPORTED_MODULE_7__.wrapText)(text, (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getFontString)(textElement), (0,_textElement__WEBPACK_IMPORTED_MODULE_7__.getBoundTextMaxWidth)(container));
  }

  const dimensions = getAdjustedDimensions(textElement, text);
  return Object.assign({
    text
  }, dimensions);
};
const updateTextElement = (textElement, {
  text,
  isDeleted,
  originalText
}) => {
  return (0,_mutateElement__WEBPACK_IMPORTED_MODULE_2__.newElementWith)(textElement, Object.assign({
    originalText,
    isDeleted: isDeleted !== null && isDeleted !== void 0 ? isDeleted : textElement.isDeleted
  }, refreshTextDimensions(textElement, originalText)));
};
const newFreeDrawElement = opts => {
  return Object.assign(Object.assign({}, _newElementBase(opts.type, opts)), {
    points: opts.points || [],
    pressures: [],
    simulatePressure: opts.simulatePressure,
    lastCommittedPoint: null
  });
};
const newLinearElement = opts => {
  return Object.assign(Object.assign({}, _newElementBase(opts.type, opts)), {
    points: opts.points || [],
    lastCommittedPoint: null,
    startBinding: null,
    endBinding: null,
    startArrowhead: opts.startArrowhead || null,
    endArrowhead: opts.endArrowhead || null
  });
};
const newImageElement = opts => {
  var _a, _b, _c;

  return Object.assign(Object.assign({}, _newElementBase("image", opts)), {
    // in the future we'll support changing stroke color for some SVG elements,
    // and \`transparent\` will likely mean "use original colors of the image"
    strokeColor: "transparent",
    status: (_a = opts.status) !== null && _a !== void 0 ? _a : "pending",
    fileId: (_b = opts.fileId) !== null && _b !== void 0 ? _b : null,
    scale: (_c = opts.scale) !== null && _c !== void 0 ? _c : [1, 1]
  });
}; // Simplified deep clone for the purpose of cloning ExcalidrawElement.
//
// Only clones plain objects and arrays. Doesn't clone Date, RegExp, Map, Set,
// Typed arrays and other non-null objects.
//
// Adapted from https://github.com/lukeed/klona
//
// The reason for \`deepCopyElement()\` wrapper is type safety (only allow
// passing ExcalidrawElement as the top-level argument).

const _deepCopyElement = (val, depth = 0) => {
  // only clone non-primitives
  if (val == null || typeof val !== "object") {
    return val;
  }

  const objectType = Object.prototype.toString.call(val);

  if (objectType === "[object Object]") {
    const tmp = typeof val.constructor === "function" ? Object.create(Object.getPrototypeOf(val)) : {};

    for (const key in val) {
      if (val.hasOwnProperty(key)) {
        // don't copy non-serializable objects like these caches. They'll be
        // populated when the element is rendered.
        if (depth === 0 && (key === "shape" || key === "canvas")) {
          continue;
        }

        tmp[key] = _deepCopyElement(val[key], depth + 1);
      }
    }

    return tmp;
  }

  if (Array.isArray(val)) {
    let k = val.length;
    const arr = new Array(k);

    while (k--) {
      arr[k] = _deepCopyElement(val[k], depth + 1);
    }

    return arr;
  } // we're not cloning non-array & non-plain-object objects because we
  // don't support them on excalidraw elements yet. If we do, we need to make
  // sure we start cloning them, so let's warn about it.


  if (true) {
    if (objectType !== "[object Object]" && objectType !== "[object Array]" && objectType.startsWith("[object ")) {
      console.warn(\`_deepCloneElement: unexpected object type \${objectType}. This value will not be cloned!\`);
    }
  }

  return val;
};
/**
 * Clones ExcalidrawElement data structure. Does not regenerate id, nonce, or
 * any value. The purpose is to to break object references for immutability
 * reasons, whenever we want to keep the original element, but ensure it's not
 * mutated.
 *
 * Only clones plain objects and arrays. Doesn't clone Date, RegExp, Map, Set,
 * Typed arrays and other non-null objects.
 */


const deepCopyElement = val => {
  return _deepCopyElement(val);
};
/**
 * utility wrapper to generate new id. In test env it reuses the old + postfix
 * for test assertions.
 */

const regenerateId = (
/** supply null if no previous id exists */
previousId) => {
  var _a, _b;

  if ((0,_utils__WEBPACK_IMPORTED_MODULE_0__.isTestEnv)() && previousId) {
    let nextId = \`\${previousId}_copy\`; // \`window.h\` may not be defined in some unit tests

    if ((_b = (_a = window.h) === null || _a === void 0 ? void 0 : _a.app) === null || _b === void 0 ? void 0 : _b.getSceneElementsIncludingDeleted().find(el => el.id === nextId)) {
      nextId += "_copy";
    }

    return nextId;
  }

  return (0,_random__WEBPACK_IMPORTED_MODULE_1__.randomId)();
};
/**
 * Duplicate an element, often used in the alt-drag operation.
 * Note that this method has gotten a bit complicated since the
 * introduction of gruoping/ungrouping elements.
 * @param editingGroupId The current group being edited. The new
 *                       element will inherit this group and its
 *                       parents.
 * @param groupIdMapForOperation A Map that maps old group IDs to
 *                               duplicated ones. If you are duplicating
 *                               multiple elements at once, share this map
 *                               amongst all of them
 * @param element Element to duplicate
 * @param overrides Any element properties to override
 */

const duplicateElement = (editingGroupId, groupIdMapForOperation, element, overrides) => {
  let copy = deepCopyElement(element);
  copy.id = regenerateId(copy.id);
  copy.boundElements = null;
  copy.updated = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getUpdatedTimestamp)();
  copy.seed = (0,_random__WEBPACK_IMPORTED_MODULE_1__.randomInteger)();
  copy.groupIds = (0,_groups__WEBPACK_IMPORTED_MODULE_3__.getNewGroupIdsForDuplication)(copy.groupIds, editingGroupId, groupId => {
    if (!groupIdMapForOperation.has(groupId)) {
      groupIdMapForOperation.set(groupId, regenerateId(groupId));
    }

    return groupIdMapForOperation.get(groupId);
  });

  if (overrides) {
    copy = Object.assign(copy, overrides);
  }

  return copy;
};
/**
 * Clones elements, regenerating their ids (including bindings) and group ids.
 *
 * If bindings don't exist in the elements array, they are removed. Therefore,
 * it's advised to supply the whole elements array, or sets of elements that
 * are encapsulated (such as library items), if the purpose is to retain
 * bindings to the cloned elements intact.
 *
 * NOTE by default does not randomize or regenerate anything except the id.
 */

const duplicateElements = (elements, opts) => {
  const clonedElements = [];
  const origElementsMap = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.arrayToMap)(elements); // used for for migrating old ids to new ids

  const elementNewIdsMap = new Map();

  const maybeGetNewId = id => {
    // if we've already migrated the element id, return the new one directly
    if (elementNewIdsMap.has(id)) {
      return elementNewIdsMap.get(id);
    } // if we haven't migrated the element id, but an old element with the same
    // id exists, generate a new id for it and return it


    if (origElementsMap.has(id)) {
      const newId = regenerateId(id);
      elementNewIdsMap.set(id, newId);
      return newId;
    } // if old element doesn't exist, return null to mark it for removal


    return null;
  };

  const groupNewIdsMap = new Map();

  for (const element of elements) {
    const clonedElement = _deepCopyElement(element);

    clonedElement.id = maybeGetNewId(element.id);

    if (opts === null || opts === void 0 ? void 0 : opts.randomizeSeed) {
      clonedElement.seed = (0,_random__WEBPACK_IMPORTED_MODULE_1__.randomInteger)();
      (0,_mutateElement__WEBPACK_IMPORTED_MODULE_2__.bumpVersion)(clonedElement);
    }

    if (clonedElement.groupIds) {
      clonedElement.groupIds = clonedElement.groupIds.map(groupId => {
        if (!groupNewIdsMap.has(groupId)) {
          groupNewIdsMap.set(groupId, regenerateId(groupId));
        }

        return groupNewIdsMap.get(groupId);
      });
    }

    if ("containerId" in clonedElement && clonedElement.containerId) {
      const newContainerId = maybeGetNewId(clonedElement.containerId);
      clonedElement.containerId = newContainerId;
    }

    if ("boundElements" in clonedElement && clonedElement.boundElements) {
      clonedElement.boundElements = clonedElement.boundElements.reduce((acc, binding) => {
        const newBindingId = maybeGetNewId(binding.id);

        if (newBindingId) {
          acc.push(Object.assign(Object.assign({}, binding), {
            id: newBindingId
          }));
        }

        return acc;
      }, []);
    }

    if ("endBinding" in clonedElement && clonedElement.endBinding) {
      const newEndBindingId = maybeGetNewId(clonedElement.endBinding.elementId);
      clonedElement.endBinding = newEndBindingId ? Object.assign(Object.assign({}, clonedElement.endBinding), {
        elementId: newEndBindingId
      }) : null;
    }

    if ("startBinding" in clonedElement && clonedElement.startBinding) {
      const newEndBindingId = maybeGetNewId(clonedElement.startBinding.elementId);
      clonedElement.startBinding = newEndBindingId ? Object.assign(Object.assign({}, clonedElement.startBinding), {
        elementId: newEndBindingId
      }) : null;
    }

    if (clonedElement.frameId) {
      clonedElement.frameId = maybeGetNewId(clonedElement.frameId);
    }

    clonedElements.push(clonedElement);
  }

  return clonedElements;
};//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 25432 characters]
//# sourceURL=webpack-internal:///../../element/newElement.ts
`);
              }
            ),
            /***/
            "../../element/resizeElements.ts": (
              /*!***************************************!*\
                !*** ../../element/resizeElements.ts ***!
                \***************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "getResizeArrowDirection": () => (/* binding */ getResizeArrowDirection),
/* harmony export */   "getResizeOffsetXY": () => (/* binding */ getResizeOffsetXY),
/* harmony export */   "normalizeAngle": () => (/* binding */ normalizeAngle),
/* harmony export */   "resizeMultipleElements": () => (/* binding */ resizeMultipleElements),
/* harmony export */   "resizeSingleElement": () => (/* binding */ resizeSingleElement),
/* harmony export */   "transformElements": () => (/* binding */ transformElements)
/* harmony export */ });
/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../constants */ "../../constants.ts");
/* harmony import */ var _points__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../points */ "../../points.ts");
/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../math */ "../../math.ts");
/* harmony import */ var _bounds__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./bounds */ "../../element/bounds.ts");
/* harmony import */ var _typeChecks__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./typeChecks */ "../../element/typeChecks.ts");
/* harmony import */ var _mutateElement__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./mutateElement */ "../../element/mutateElement.ts");
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils */ "../../utils.ts");
/* harmony import */ var _binding__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./binding */ "../../element/binding.ts");
/* harmony import */ var _scene_Scene__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../scene/Scene */ "../../scene/Scene.ts");
/* harmony import */ var _textElement__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./textElement */ "../../element/textElement.ts");
/* harmony import */ var _linearElementEditor__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./linearElementEditor */ "../../element/linearElementEditor.ts");
var __rest = undefined && undefined.__rest || function (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;
};












const normalizeAngle = angle => {
  if (angle < 0) {
    return angle + 2 * Math.PI;
  }

  if (angle >= 2 * Math.PI) {
    return angle - 2 * Math.PI;
  }

  return angle;
}; // Returns true when transform (resizing/rotation) happened

const transformElements = (pointerDownState, transformHandleType, selectedElements, resizeArrowDirection, shouldRotateWithDiscreteAngle, shouldResizeFromCenter, shouldMaintainAspectRatio, pointerX, pointerY, centerX, centerY, appState) => {
  if (selectedElements.length === 1) {
    const [element] = selectedElements;

    if (transformHandleType === "rotation") {
      rotateSingleElement(element, pointerX, pointerY, shouldRotateWithDiscreteAngle, pointerDownState.originalElements);
      (0,_binding__WEBPACK_IMPORTED_MODULE_7__.updateBoundElements)(element);
    } else if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_4__.isTextElement)(element) && (transformHandleType === "nw" || transformHandleType === "ne" || transformHandleType === "sw" || transformHandleType === "se")) {
      resizeSingleTextElement(element, transformHandleType, shouldResizeFromCenter, pointerX, pointerY);
      (0,_binding__WEBPACK_IMPORTED_MODULE_7__.updateBoundElements)(element);
    } else if (transformHandleType) {
      resizeSingleElement(pointerDownState.originalElements, shouldMaintainAspectRatio, element, transformHandleType, shouldResizeFromCenter, pointerX, pointerY);
    }

    return true;
  } else if (selectedElements.length > 1) {
    if (transformHandleType === "rotation") {
      rotateMultipleElements(pointerDownState, selectedElements, pointerX, pointerY, shouldRotateWithDiscreteAngle, centerX, centerY);
      return true;
    } else if (transformHandleType === "nw" || transformHandleType === "ne" || transformHandleType === "sw" || transformHandleType === "se") {
      resizeMultipleElements(pointerDownState, selectedElements, transformHandleType, shouldResizeFromCenter, pointerX, pointerY);
      return true;
    }
  }

  return false;
};

const rotateSingleElement = (element, pointerX, pointerY, shouldRotateWithDiscreteAngle, originalElements) => {
  var _a;

  const [x1, y1, x2, y2] = (0,_bounds__WEBPACK_IMPORTED_MODULE_3__.getElementAbsoluteCoords)(element);
  const cx = (x1 + x2) / 2;
  const cy = (y1 + y2) / 2;
  let angle;

  if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_4__.isFrameElement)(element)) {
    angle = 0;
  } else {
    angle = 5 * Math.PI / 2 + Math.atan2(pointerY - cy, pointerX - cx);

    if (shouldRotateWithDiscreteAngle) {
      angle += _constants__WEBPACK_IMPORTED_MODULE_0__.SHIFT_LOCKING_ANGLE / 2;
      angle -= angle % _constants__WEBPACK_IMPORTED_MODULE_0__.SHIFT_LOCKING_ANGLE;
    }

    angle = normalizeAngle(angle);
  }

  const boundTextElementId = (0,_textElement__WEBPACK_IMPORTED_MODULE_9__.getBoundTextElementId)(element);
  (0,_mutateElement__WEBPACK_IMPORTED_MODULE_5__.mutateElement)(element, {
    angle
  });

  if (boundTextElementId) {
    const textElement = (_a = _scene_Scene__WEBPACK_IMPORTED_MODULE_8__["default"].getScene(element)) === null || _a === void 0 ? void 0 : _a.getElement(boundTextElementId);

    if (textElement && !(0,_typeChecks__WEBPACK_IMPORTED_MODULE_4__.isArrowElement)(element)) {
      (0,_mutateElement__WEBPACK_IMPORTED_MODULE_5__.mutateElement)(textElement, {
        angle
      });
    }
  }
};

const rescalePointsInElement = (element, width, height, normalizePoints) => (0,_typeChecks__WEBPACK_IMPORTED_MODULE_4__.isLinearElement)(element) || (0,_typeChecks__WEBPACK_IMPORTED_MODULE_4__.isFreeDrawElement)(element) ? {
  points: (0,_points__WEBPACK_IMPORTED_MODULE_1__.rescalePoints)(0, width, (0,_points__WEBPACK_IMPORTED_MODULE_1__.rescalePoints)(1, height, element.points, normalizePoints), normalizePoints)
} : {};

const measureFontSizeFromWidth = (element, nextWidth, nextHeight) => {
  // We only use width to scale font on resize
  let width = element.width;
  const hasContainer = (0,_typeChecks__WEBPACK_IMPORTED_MODULE_4__.isBoundToContainer)(element);

  if (hasContainer) {
    const container = (0,_textElement__WEBPACK_IMPORTED_MODULE_9__.getContainerElement)(element);

    if (container) {
      width = (0,_textElement__WEBPACK_IMPORTED_MODULE_9__.getBoundTextMaxWidth)(container);
    }
  }

  const nextFontSize = element.fontSize * (nextWidth / width);

  if (nextFontSize < _constants__WEBPACK_IMPORTED_MODULE_0__.MIN_FONT_SIZE) {
    return null;
  }

  const metrics = (0,_textElement__WEBPACK_IMPORTED_MODULE_9__.measureText)(element.text, (0,_utils__WEBPACK_IMPORTED_MODULE_6__.getFontString)({
    fontSize: nextFontSize,
    fontFamily: element.fontFamily
  }), element.lineHeight);
  return {
    size: nextFontSize,
    baseline: metrics.baseline + (nextHeight - metrics.height)
  };
};

const getSidesForTransformHandle = (transformHandleType, shouldResizeFromCenter) => {
  return {
    n: /^(n|ne|nw)$/.test(transformHandleType) || shouldResizeFromCenter && /^(s|se|sw)$/.test(transformHandleType),
    s: /^(s|se|sw)$/.test(transformHandleType) || shouldResizeFromCenter && /^(n|ne|nw)$/.test(transformHandleType),
    w: /^(w|nw|sw)$/.test(transformHandleType) || shouldResizeFromCenter && /^(e|ne|se)$/.test(transformHandleType),
    e: /^(e|ne|se)$/.test(transformHandleType) || shouldResizeFromCenter && /^(w|nw|sw)$/.test(transformHandleType)
  };
};

const resizeSingleTextElement = (element, transformHandleType, shouldResizeFromCenter, pointerX, pointerY) => {
  const [x1, y1, x2, y2] = (0,_bounds__WEBPACK_IMPORTED_MODULE_3__.getElementAbsoluteCoords)(element);
  const cx = (x1 + x2) / 2;
  const cy = (y1 + y2) / 2; // rotation pointer with reverse angle

  const [rotatedX, rotatedY] = (0,_math__WEBPACK_IMPORTED_MODULE_2__.rotate)(pointerX, pointerY, cx, cy, -element.angle);
  let scale;

  switch (transformHandleType) {
    case "se":
      scale = Math.max((rotatedX - x1) / (x2 - x1), (rotatedY - y1) / (y2 - y1));
      break;

    case "nw":
      scale = Math.max((x2 - rotatedX) / (x2 - x1), (y2 - rotatedY) / (y2 - y1));
      break;

    case "ne":
      scale = Math.max((rotatedX - x1) / (x2 - x1), (y2 - rotatedY) / (y2 - y1));
      break;

    case "sw":
      scale = Math.max((x2 - rotatedX) / (x2 - x1), (rotatedY - y1) / (y2 - y1));
      break;
  }

  if (scale > 0) {
    const nextWidth = element.width * scale;
    const nextHeight = element.height * scale;
    const metrics = measureFontSizeFromWidth(element, nextWidth, nextHeight);

    if (metrics === null) {
      return;
    }

    const [nextX1, nextY1, nextX2, nextY2] = (0,_bounds__WEBPACK_IMPORTED_MODULE_3__.getResizedElementAbsoluteCoords)(element, nextWidth, nextHeight, false);
    const deltaX1 = (x1 - nextX1) / 2;
    const deltaY1 = (y1 - nextY1) / 2;
    const deltaX2 = (x2 - nextX2) / 2;
    const deltaY2 = (y2 - nextY2) / 2;
    const [nextElementX, nextElementY] = (0,_math__WEBPACK_IMPORTED_MODULE_2__.adjustXYWithRotation)(getSidesForTransformHandle(transformHandleType, shouldResizeFromCenter), element.x, element.y, element.angle, deltaX1, deltaY1, deltaX2, deltaY2);
    (0,_mutateElement__WEBPACK_IMPORTED_MODULE_5__.mutateElement)(element, {
      fontSize: metrics.size,
      width: nextWidth,
      height: nextHeight,
      baseline: metrics.baseline,
      x: nextElementX,
      y: nextElementY
    });
  }
};

const resizeSingleElement = (originalElements, shouldMaintainAspectRatio, element, transformHandleDirection, shouldResizeFromCenter, pointerX, pointerY) => {
  const stateAtResizeStart = originalElements.get(element.id); // Gets bounds corners

  const [x1, y1, x2, y2] = (0,_bounds__WEBPACK_IMPORTED_MODULE_3__.getResizedElementAbsoluteCoords)(stateAtResizeStart, stateAtResizeStart.width, stateAtResizeStart.height, true);
  const startTopLeft = [x1, y1];
  const startBottomRight = [x2, y2];
  const startCenter = (0,_math__WEBPACK_IMPORTED_MODULE_2__.centerPoint)(startTopLeft, startBottomRight); // Calculate new dimensions based on cursor position

  const rotatedPointer = (0,_math__WEBPACK_IMPORTED_MODULE_2__.rotatePoint)([pointerX, pointerY], startCenter, -stateAtResizeStart.angle); // Get bounds corners rendered on screen

  const [esx1, esy1, esx2, esy2] = (0,_bounds__WEBPACK_IMPORTED_MODULE_3__.getResizedElementAbsoluteCoords)(element, element.width, element.height, true);
  const boundsCurrentWidth = esx2 - esx1;
  const boundsCurrentHeight = esy2 - esy1; // It's important we set the initial scale value based on the width and height at resize start,
  // otherwise previous dimensions affected by modifiers will be taken into account.

  const atStartBoundsWidth = startBottomRight[0] - startTopLeft[0];
  const atStartBoundsHeight = startBottomRight[1] - startTopLeft[1];
  let scaleX = atStartBoundsWidth / boundsCurrentWidth;
  let scaleY = atStartBoundsHeight / boundsCurrentHeight;
  let boundTextFont = {};
  const boundTextElement = (0,_textElement__WEBPACK_IMPORTED_MODULE_9__.getBoundTextElement)(element);

  if (transformHandleDirection.includes("e")) {
    scaleX = (rotatedPointer[0] - startTopLeft[0]) / boundsCurrentWidth;
  }

  if (transformHandleDirection.includes("s")) {
    scaleY = (rotatedPointer[1] - startTopLeft[1]) / boundsCurrentHeight;
  }

  if (transformHandleDirection.includes("w")) {
    scaleX = (startBottomRight[0] - rotatedPointer[0]) / boundsCurrentWidth;
  }

  if (transformHandleDirection.includes("n")) {
    scaleY = (startBottomRight[1] - rotatedPointer[1]) / boundsCurrentHeight;
  } // Linear elements dimensions differ from bounds dimensions


  const eleInitialWidth = stateAtResizeStart.width;
  const eleInitialHeight = stateAtResizeStart.height; // We have to use dimensions of element on screen, otherwise the scaling of the
  // dimensions won't match the cursor for linear elements.

  let eleNewWidth = element.width * scaleX;
  let eleNewHeight = element.height * scaleY; // adjust dimensions for resizing from center

  if (shouldResizeFromCenter) {
    eleNewWidth = 2 * eleNewWidth - eleInitialWidth;
    eleNewHeight = 2 * eleNewHeight - eleInitialHeight;
  } // adjust dimensions to keep sides ratio


  if (shouldMaintainAspectRatio) {
    const widthRatio = Math.abs(eleNewWidth) / eleInitialWidth;
    const heightRatio = Math.abs(eleNewHeight) / eleInitialHeight;

    if (transformHandleDirection.length === 1) {
      eleNewHeight *= widthRatio;
      eleNewWidth *= heightRatio;
    }

    if (transformHandleDirection.length === 2) {
      const ratio = Math.max(widthRatio, heightRatio);
      eleNewWidth = eleInitialWidth * ratio * Math.sign(eleNewWidth);
      eleNewHeight = eleInitialHeight * ratio * Math.sign(eleNewHeight);
    }
  }

  if (boundTextElement) {
    const stateOfBoundTextElementAtResize = originalElements.get(boundTextElement.id);

    if (stateOfBoundTextElementAtResize) {
      boundTextFont = {
        fontSize: stateOfBoundTextElementAtResize.fontSize,
        baseline: stateOfBoundTextElementAtResize.baseline
      };
    }

    if (shouldMaintainAspectRatio) {
      const updatedElement = Object.assign(Object.assign({}, element), {
        width: eleNewWidth,
        height: eleNewHeight
      });
      const nextFont = measureFontSizeFromWidth(boundTextElement, (0,_textElement__WEBPACK_IMPORTED_MODULE_9__.getBoundTextMaxWidth)(updatedElement), (0,_textElement__WEBPACK_IMPORTED_MODULE_9__.getBoundTextMaxHeight)(updatedElement, boundTextElement));

      if (nextFont === null) {
        return;
      }

      boundTextFont = {
        fontSize: nextFont.size,
        baseline: nextFont.baseline
      };
    } else {
      const minWidth = (0,_textElement__WEBPACK_IMPORTED_MODULE_9__.getApproxMinLineWidth)((0,_utils__WEBPACK_IMPORTED_MODULE_6__.getFontString)(boundTextElement), boundTextElement.lineHeight);
      const minHeight = (0,_textElement__WEBPACK_IMPORTED_MODULE_9__.getApproxMinLineHeight)(boundTextElement.fontSize, boundTextElement.lineHeight);
      eleNewWidth = Math.max(eleNewWidth, minWidth);
      eleNewHeight = Math.max(eleNewHeight, minHeight);
    }
  }

  const [newBoundsX1, newBoundsY1, newBoundsX2, newBoundsY2] = (0,_bounds__WEBPACK_IMPORTED_MODULE_3__.getResizedElementAbsoluteCoords)(stateAtResizeStart, eleNewWidth, eleNewHeight, true);
  const newBoundsWidth = newBoundsX2 - newBoundsX1;
  const newBoundsHeight = newBoundsY2 - newBoundsY1; // Calculate new topLeft based on fixed corner during resize

  let newTopLeft = [...startTopLeft];

  if (["n", "w", "nw"].includes(transformHandleDirection)) {
    newTopLeft = [startBottomRight[0] - Math.abs(newBoundsWidth), startBottomRight[1] - Math.abs(newBoundsHeight)];
  }

  if (transformHandleDirection === "ne") {
    const bottomLeft = [startTopLeft[0], startBottomRight[1]];
    newTopLeft = [bottomLeft[0], bottomLeft[1] - Math.abs(newBoundsHeight)];
  }

  if (transformHandleDirection === "sw") {
    const topRight = [startBottomRight[0], startTopLeft[1]];
    newTopLeft = [topRight[0] - Math.abs(newBoundsWidth), topRight[1]];
  } // Keeps opposite handle fixed during resize


  if (shouldMaintainAspectRatio) {
    if (["s", "n"].includes(transformHandleDirection)) {
      newTopLeft[0] = startCenter[0] - newBoundsWidth / 2;
    }

    if (["e", "w"].includes(transformHandleDirection)) {
      newTopLeft[1] = startCenter[1] - newBoundsHeight / 2;
    }
  }

  const flipX = eleNewWidth < 0;
  const flipY = eleNewHeight < 0; // Flip horizontally

  if (flipX) {
    if (transformHandleDirection.includes("e")) {
      newTopLeft[0] -= Math.abs(newBoundsWidth);
    }

    if (transformHandleDirection.includes("w")) {
      newTopLeft[0] += Math.abs(newBoundsWidth);
    }
  } // Flip vertically


  if (flipY) {
    if (transformHandleDirection.includes("s")) {
      newTopLeft[1] -= Math.abs(newBoundsHeight);
    }

    if (transformHandleDirection.includes("n")) {
      newTopLeft[1] += Math.abs(newBoundsHeight);
    }
  }

  if (shouldResizeFromCenter) {
    newTopLeft[0] = startCenter[0] - Math.abs(newBoundsWidth) / 2;
    newTopLeft[1] = startCenter[1] - Math.abs(newBoundsHeight) / 2;
  } // adjust topLeft to new rotation point


  const angle = stateAtResizeStart.angle;
  const rotatedTopLeft = (0,_math__WEBPACK_IMPORTED_MODULE_2__.rotatePoint)(newTopLeft, startCenter, angle);
  const newCenter = [newTopLeft[0] + Math.abs(newBoundsWidth) / 2, newTopLeft[1] + Math.abs(newBoundsHeight) / 2];
  const rotatedNewCenter = (0,_math__WEBPACK_IMPORTED_MODULE_2__.rotatePoint)(newCenter, startCenter, angle);
  newTopLeft = (0,_math__WEBPACK_IMPORTED_MODULE_2__.rotatePoint)(rotatedTopLeft, rotatedNewCenter, -angle); // For linear elements (x,y) are the coordinates of the first drawn point not the top-left corner
  // So we need to readjust (x,y) to be where the first point should be

  const newOrigin = [...newTopLeft];
  const linearElementXOffset = stateAtResizeStart.x - newBoundsX1;
  const linearElementYOffset = stateAtResizeStart.y - newBoundsY1;
  newOrigin[0] += linearElementXOffset;
  newOrigin[1] += linearElementYOffset;
  const nextX = newOrigin[0];
  const nextY = newOrigin[1]; // Readjust points for linear elements

  let rescaledElementPointsY;
  let rescaledPoints;

  if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_4__.isLinearElement)(element) || (0,_typeChecks__WEBPACK_IMPORTED_MODULE_4__.isFreeDrawElement)(element)) {
    rescaledElementPointsY = (0,_points__WEBPACK_IMPORTED_MODULE_1__.rescalePoints)(1, eleNewHeight, stateAtResizeStart.points, true);
    rescaledPoints = (0,_points__WEBPACK_IMPORTED_MODULE_1__.rescalePoints)(0, eleNewWidth, rescaledElementPointsY, true);
  }

  const resizedElement = {
    width: Math.abs(eleNewWidth),
    height: Math.abs(eleNewHeight),
    x: nextX,
    y: nextY,
    points: rescaledPoints
  };

  if ("scale" in element && "scale" in stateAtResizeStart) {
    (0,_mutateElement__WEBPACK_IMPORTED_MODULE_5__.mutateElement)(element, {
      scale: [// defaulting because scaleX/Y can be 0/-0
      (Math.sign(newBoundsX2 - stateAtResizeStart.x) || stateAtResizeStart.scale[0]) * stateAtResizeStart.scale[0], (Math.sign(newBoundsY2 - stateAtResizeStart.y) || stateAtResizeStart.scale[1]) * stateAtResizeStart.scale[1]]
    });
  }

  if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_4__.isArrowElement)(element) && boundTextElement && shouldMaintainAspectRatio) {
    const fontSize = resizedElement.width / element.width * boundTextElement.fontSize;

    if (fontSize < _constants__WEBPACK_IMPORTED_MODULE_0__.MIN_FONT_SIZE) {
      return;
    }

    boundTextFont.fontSize = fontSize;
  }

  if (resizedElement.width !== 0 && resizedElement.height !== 0 && Number.isFinite(resizedElement.x) && Number.isFinite(resizedElement.y)) {
    (0,_mutateElement__WEBPACK_IMPORTED_MODULE_5__.mutateElement)(element, resizedElement);
    (0,_binding__WEBPACK_IMPORTED_MODULE_7__.updateBoundElements)(element, {
      newSize: {
        width: resizedElement.width,
        height: resizedElement.height
      }
    });

    if (boundTextElement && boundTextFont != null) {
      (0,_mutateElement__WEBPACK_IMPORTED_MODULE_5__.mutateElement)(boundTextElement, {
        fontSize: boundTextFont.fontSize,
        baseline: boundTextFont.baseline
      });
    }

    (0,_textElement__WEBPACK_IMPORTED_MODULE_9__.handleBindTextResize)(element, transformHandleDirection, shouldMaintainAspectRatio);
  }
};
const resizeMultipleElements = (pointerDownState, selectedElements, transformHandleType, shouldResizeFromCenter, pointerX, pointerY) => {
  var _a, _b; // map selected elements to the original elements. While it never should
  // happen that pointerDownState.originalElements won't contain the selected
  // elements during resize, this coupling isn't guaranteed, so to ensure
  // type safety we need to transform only those elements we filter.


  const targetElements = selectedElements.reduce((acc, element) => {
    const origElement = pointerDownState.originalElements.get(element.id);

    if (origElement) {
      acc.push({
        orig: origElement,
        latest: element
      });
    }

    return acc;
  }, []); // getCommonBoundingBox() uses getBoundTextElement() which returns null for
  // original elements from pointerDownState, so we have to find and add these
  // bound text elements manually. Additionally, the coordinates of bound text
  // elements aren't always up to date.

  const boundTextElements = targetElements.reduce((acc, {
    orig
  }) => {
    var _a;

    if (!(0,_typeChecks__WEBPACK_IMPORTED_MODULE_4__.isLinearElement)(orig)) {
      return acc;
    }

    const textId = (0,_textElement__WEBPACK_IMPORTED_MODULE_9__.getBoundTextElementId)(orig);

    if (!textId) {
      return acc;
    }

    const text = (_a = pointerDownState.originalElements.get(textId)) !== null && _a !== void 0 ? _a : null;

    if (!(0,_typeChecks__WEBPACK_IMPORTED_MODULE_4__.isBoundToContainer)(text)) {
      return acc;
    }

    const xy = _linearElementEditor__WEBPACK_IMPORTED_MODULE_10__.LinearElementEditor.getBoundTextElementPosition(orig, text);
    return [...acc, Object.assign(Object.assign({}, text), xy)];
  }, []);
  const {
    minX,
    minY,
    maxX,
    maxY,
    midX,
    midY
  } = (0,_bounds__WEBPACK_IMPORTED_MODULE_3__.getCommonBoundingBox)(targetElements.map(({
    orig
  }) => orig).concat(boundTextElements)); // const originalHeight = maxY - minY;
  // const originalWidth = maxX - minX;

  const direction = transformHandleType;
  const mapDirectionsToAnchors = {
    ne: [minX, maxY],
    se: [minX, minY],
    sw: [maxX, minY],
    nw: [maxX, maxY]
  }; // anchor point must be on the opposite side of the dragged selection handle
  // or be the center of the selection if shouldResizeFromCenter

  const [anchorX, anchorY] = shouldResizeFromCenter ? [midX, midY] : mapDirectionsToAnchors[direction];
  const scale = Math.max(Math.abs(pointerX - anchorX) / (maxX - minX) || 0, Math.abs(pointerY - anchorY) / (maxY - minY) || 0) * (shouldResizeFromCenter ? 2 : 1);

  if (scale === 0) {
    return;
  }

  const mapDirectionsToPointerPositions = {
    ne: [pointerX >= anchorX, pointerY <= anchorY],
    se: [pointerX >= anchorX, pointerY >= anchorY],
    sw: [pointerX <= anchorX, pointerY >= anchorY],
    nw: [pointerX <= anchorX, pointerY <= anchorY]
  };
  /**
   * to flip an element:
   * 1. determine over which axis is the element being flipped
   *    (could be x, y, or both) indicated by \`flipFactorX\` & \`flipFactorY\`
   * 2. shift element's position by the amount of width or height (or both) or
   *    mirror points in the case of linear & freedraw elemenets
   * 3. adjust element angle
   */

  const [flipFactorX, flipFactorY] = mapDirectionsToPointerPositions[direction].map(condition => condition ? 1 : -1);
  const isFlippedByX = flipFactorX < 0;
  const isFlippedByY = flipFactorY < 0;
  const elementsAndUpdates = [];

  for (const {
    orig,
    latest
  } of targetElements) {
    // bounded text elements are updated along with their container elements
    if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_4__.isTextElement)(orig) && (0,_typeChecks__WEBPACK_IMPORTED_MODULE_4__.isBoundToContainer)(orig)) {
      continue;
    }

    const width = orig.width * scale;
    const height = orig.height * scale;
    const angle = normalizeAngle(orig.angle * flipFactorX * flipFactorY);
    const isLinearOrFreeDraw = (0,_typeChecks__WEBPACK_IMPORTED_MODULE_4__.isLinearElement)(orig) || (0,_typeChecks__WEBPACK_IMPORTED_MODULE_4__.isFreeDrawElement)(orig);
    const offsetX = orig.x - anchorX;
    const offsetY = orig.y - anchorY;
    const shiftX = isFlippedByX && !isLinearOrFreeDraw ? width : 0;
    const shiftY = isFlippedByY && !isLinearOrFreeDraw ? height : 0;
    const x = anchorX + flipFactorX * (offsetX * scale + shiftX);
    const y = anchorY + flipFactorY * (offsetY * scale + shiftY);
    const rescaledPoints = rescalePointsInElement(orig, width * flipFactorX, height * flipFactorY, false);
    const update = Object.assign({
      x,
      y,
      width,
      height,
      angle
    }, rescaledPoints);

    if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_4__.isImageElement)(orig) && targetElements.length === 1) {
      update.scale = [orig.scale[0] * flipFactorX, orig.scale[1] * flipFactorY];
    }

    if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_4__.isLinearElement)(orig) && (isFlippedByX || isFlippedByY)) {
      const origBounds = (0,_bounds__WEBPACK_IMPORTED_MODULE_3__.getElementPointsCoords)(orig, orig.points);
      const newBounds = (0,_bounds__WEBPACK_IMPORTED_MODULE_3__.getElementPointsCoords)(Object.assign(Object.assign({}, orig), {
        x,
        y
      }), rescaledPoints.points);
      const origXY = [orig.x, orig.y];
      const newXY = [x, y];

      const linearShift = axis => {
        const i = axis === "x" ? 0 : 1;
        return (newBounds[i + 2] - newXY[i] - (origXY[i] - origBounds[i]) * scale + (origBounds[i + 2] - origXY[i]) * scale - (newXY[i] - newBounds[i])) / 2;
      };

      if (isFlippedByX) {
        update.x -= linearShift("x");
      }

      if (isFlippedByY) {
        update.y -= linearShift("y");
      }
    }

    if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_4__.isTextElement)(orig)) {
      const metrics = measureFontSizeFromWidth(orig, width, height);

      if (!metrics) {
        return;
      }

      update.fontSize = metrics.size;
      update.baseline = metrics.baseline;
    }

    const boundTextElement = pointerDownState.originalElements.get((_a = (0,_textElement__WEBPACK_IMPORTED_MODULE_9__.getBoundTextElementId)(orig)) !== null && _a !== void 0 ? _a : "");

    if (boundTextElement) {
      const newFontSize = boundTextElement.fontSize * scale;

      if (newFontSize < _constants__WEBPACK_IMPORTED_MODULE_0__.MIN_FONT_SIZE) {
        return;
      }

      update.boundTextFontSize = newFontSize;
    }

    elementsAndUpdates.push({
      element: latest,
      update
    });
  }

  const elementsToUpdate = elementsAndUpdates.map(({
    element
  }) => element);

  for (let _c of elementsAndUpdates) {
    const {
      element
    } = _c,
          _d = _c.update,
          {
      boundTextFontSize
    } = _d,
          update = __rest(_d, ["boundTextFontSize"]);

    const {
      width,
      height,
      angle
    } = update;
    (0,_mutateElement__WEBPACK_IMPORTED_MODULE_5__.mutateElement)(element, update, false);
    (0,_binding__WEBPACK_IMPORTED_MODULE_7__.updateBoundElements)(element, {
      simultaneouslyUpdated: elementsToUpdate,
      newSize: {
        width,
        height
      }
    });
    const boundTextElement = (0,_textElement__WEBPACK_IMPORTED_MODULE_9__.getBoundTextElement)(element);

    if (boundTextElement && boundTextFontSize) {
      (0,_mutateElement__WEBPACK_IMPORTED_MODULE_5__.mutateElement)(boundTextElement, {
        fontSize: boundTextFontSize,
        angle: (0,_typeChecks__WEBPACK_IMPORTED_MODULE_4__.isLinearElement)(element) ? undefined : angle
      }, false);
      (0,_textElement__WEBPACK_IMPORTED_MODULE_9__.handleBindTextResize)(element, transformHandleType, true);
    }
  }

  (_b = _scene_Scene__WEBPACK_IMPORTED_MODULE_8__["default"].getScene(elementsAndUpdates[0].element)) === null || _b === void 0 ? void 0 : _b.informMutation();
};

const rotateMultipleElements = (pointerDownState, elements, pointerX, pointerY, shouldRotateWithDiscreteAngle, centerX, centerY) => {
  var _a;

  let centerAngle = 5 * Math.PI / 2 + Math.atan2(pointerY - centerY, pointerX - centerX);

  if (shouldRotateWithDiscreteAngle) {
    centerAngle += _constants__WEBPACK_IMPORTED_MODULE_0__.SHIFT_LOCKING_ANGLE / 2;
    centerAngle -= centerAngle % _constants__WEBPACK_IMPORTED_MODULE_0__.SHIFT_LOCKING_ANGLE;
  }

  elements.filter(element => element.type !== "frame").forEach(element => {
    var _a, _b;

    const [x1, y1, x2, y2] = (0,_bounds__WEBPACK_IMPORTED_MODULE_3__.getElementAbsoluteCoords)(element);
    const cx = (x1 + x2) / 2;
    const cy = (y1 + y2) / 2;
    const origAngle = (_b = (_a = pointerDownState.originalElements.get(element.id)) === null || _a === void 0 ? void 0 : _a.angle) !== null && _b !== void 0 ? _b : element.angle;
    const [rotatedCX, rotatedCY] = (0,_math__WEBPACK_IMPORTED_MODULE_2__.rotate)(cx, cy, centerX, centerY, centerAngle + origAngle - element.angle);
    (0,_mutateElement__WEBPACK_IMPORTED_MODULE_5__.mutateElement)(element, {
      x: element.x + (rotatedCX - cx),
      y: element.y + (rotatedCY - cy),
      angle: normalizeAngle(centerAngle + origAngle)
    }, false);
    (0,_binding__WEBPACK_IMPORTED_MODULE_7__.updateBoundElements)(element, {
      simultaneouslyUpdated: elements
    });
    const boundText = (0,_textElement__WEBPACK_IMPORTED_MODULE_9__.getBoundTextElement)(element);

    if (boundText && !(0,_typeChecks__WEBPACK_IMPORTED_MODULE_4__.isArrowElement)(element)) {
      (0,_mutateElement__WEBPACK_IMPORTED_MODULE_5__.mutateElement)(boundText, {
        x: boundText.x + (rotatedCX - cx),
        y: boundText.y + (rotatedCY - cy),
        angle: normalizeAngle(centerAngle + origAngle)
      }, false);
    }
  });
  (_a = _scene_Scene__WEBPACK_IMPORTED_MODULE_8__["default"].getScene(elements[0])) === null || _a === void 0 ? void 0 : _a.informMutation();
};

const getResizeOffsetXY = (transformHandleType, selectedElements, x, y) => {
  const [x1, y1, x2, y2] = selectedElements.length === 1 ? (0,_bounds__WEBPACK_IMPORTED_MODULE_3__.getElementAbsoluteCoords)(selectedElements[0]) : (0,_bounds__WEBPACK_IMPORTED_MODULE_3__.getCommonBounds)(selectedElements);
  const cx = (x1 + x2) / 2;
  const cy = (y1 + y2) / 2;
  const angle = selectedElements.length === 1 ? selectedElements[0].angle : 0;
  [x, y] = (0,_math__WEBPACK_IMPORTED_MODULE_2__.rotate)(x, y, cx, cy, -angle);

  switch (transformHandleType) {
    case "n":
      return (0,_math__WEBPACK_IMPORTED_MODULE_2__.rotate)(x - (x1 + x2) / 2, y - y1, 0, 0, angle);

    case "s":
      return (0,_math__WEBPACK_IMPORTED_MODULE_2__.rotate)(x - (x1 + x2) / 2, y - y2, 0, 0, angle);

    case "w":
      return (0,_math__WEBPACK_IMPORTED_MODULE_2__.rotate)(x - x1, y - (y1 + y2) / 2, 0, 0, angle);

    case "e":
      return (0,_math__WEBPACK_IMPORTED_MODULE_2__.rotate)(x - x2, y - (y1 + y2) / 2, 0, 0, angle);

    case "nw":
      return (0,_math__WEBPACK_IMPORTED_MODULE_2__.rotate)(x - x1, y - y1, 0, 0, angle);

    case "ne":
      return (0,_math__WEBPACK_IMPORTED_MODULE_2__.rotate)(x - x2, y - y1, 0, 0, angle);

    case "sw":
      return (0,_math__WEBPACK_IMPORTED_MODULE_2__.rotate)(x - x1, y - y2, 0, 0, angle);

    case "se":
      return (0,_math__WEBPACK_IMPORTED_MODULE_2__.rotate)(x - x2, y - y2, 0, 0, angle);

    default:
      return [0, 0];
  }
};
const getResizeArrowDirection = (transformHandleType, element) => {
  const [, [px, py]] = element.points;
  const isResizeEnd = transformHandleType === "nw" && (px < 0 || py < 0) || transformHandleType === "ne" && px >= 0 || transformHandleType === "sw" && px <= 0 || transformHandleType === "se" && (px > 0 || py > 0);
  return isResizeEnd ? "end" : "origin";
};//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 42768 characters]
//# sourceURL=webpack-internal:///../../element/resizeElements.ts
`);
              }
            ),
            /***/
            "../../element/resizeTest.ts": (
              /*!***********************************!*\
                !*** ../../element/resizeTest.ts ***!
                \***********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "getCursorForResizingElement": () => (/* binding */ getCursorForResizingElement),\n/* harmony export */   "getElementWithTransformHandleType": () => (/* binding */ getElementWithTransformHandleType),\n/* harmony export */   "getTransformHandleTypeFromCoords": () => (/* binding */ getTransformHandleTypeFromCoords),\n/* harmony export */   "resizeTest": () => (/* binding */ resizeTest)\n/* harmony export */ });\n/* harmony import */ var _transformHandles__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./transformHandles */ "../../element/transformHandles.ts");\nvar __rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n\n  if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\nconst isInsideTransformHandle = (transformHandle, x, y) => x >= transformHandle[0] && x <= transformHandle[0] + transformHandle[2] && y >= transformHandle[1] && y <= transformHandle[1] + transformHandle[3];\n\nconst resizeTest = (element, appState, x, y, zoom, pointerType) => {\n  if (!appState.selectedElementIds[element.id]) {\n    return false;\n  }\n\n  const _a = (0,_transformHandles__WEBPACK_IMPORTED_MODULE_0__.getTransformHandles)(element, zoom, pointerType),\n        {\n    rotation: rotationTransformHandle\n  } = _a,\n        transformHandles = __rest(_a, ["rotation"]);\n\n  if (rotationTransformHandle && isInsideTransformHandle(rotationTransformHandle, x, y)) {\n    return "rotation";\n  }\n\n  const filter = Object.keys(transformHandles).filter(key => {\n    const transformHandle = transformHandles[key];\n\n    if (!transformHandle) {\n      return false;\n    }\n\n    return isInsideTransformHandle(transformHandle, x, y);\n  });\n\n  if (filter.length > 0) {\n    return filter[0];\n  }\n\n  return false;\n};\nconst getElementWithTransformHandleType = (elements, appState, scenePointerX, scenePointerY, zoom, pointerType) => {\n  return elements.reduce((result, element) => {\n    if (result) {\n      return result;\n    }\n\n    const transformHandleType = resizeTest(element, appState, scenePointerX, scenePointerY, zoom, pointerType);\n    return transformHandleType ? {\n      element,\n      transformHandleType\n    } : null;\n  }, null);\n};\nconst getTransformHandleTypeFromCoords = ([x1, y1, x2, y2], scenePointerX, scenePointerY, zoom, pointerType) => {\n  const transformHandles = (0,_transformHandles__WEBPACK_IMPORTED_MODULE_0__.getTransformHandlesFromCoords)([x1, y1, x2, y2, (x1 + x2) / 2, (y1 + y2) / 2], 0, zoom, pointerType, _transformHandles__WEBPACK_IMPORTED_MODULE_0__.OMIT_SIDES_FOR_MULTIPLE_ELEMENTS);\n  const found = Object.keys(transformHandles).find(key => {\n    const transformHandle = transformHandles[key];\n    return transformHandle && isInsideTransformHandle(transformHandle, scenePointerX, scenePointerY);\n  });\n  return found || false;\n};\nconst RESIZE_CURSORS = ["ns", "nesw", "ew", "nwse"];\n\nconst rotateResizeCursor = (cursor, angle) => {\n  const index = RESIZE_CURSORS.indexOf(cursor);\n\n  if (index >= 0) {\n    const a = Math.round(angle / (Math.PI / 4));\n    cursor = RESIZE_CURSORS[(index + a) % RESIZE_CURSORS.length];\n  }\n\n  return cursor;\n};\n/*\n * Returns bi-directional cursor for the element being resized\n */\n\n\nconst getCursorForResizingElement = resizingElement => {\n  const {\n    element,\n    transformHandleType\n  } = resizingElement;\n  const shouldSwapCursors = element && Math.sign(element.height) * Math.sign(element.width) === -1;\n  let cursor = null;\n\n  switch (transformHandleType) {\n    case "n":\n    case "s":\n      cursor = "ns";\n      break;\n\n    case "w":\n    case "e":\n      cursor = "ew";\n      break;\n\n    case "nw":\n    case "se":\n      if (shouldSwapCursors) {\n        cursor = "nesw";\n      } else {\n        cursor = "nwse";\n      }\n\n      break;\n\n    case "ne":\n    case "sw":\n      if (shouldSwapCursors) {\n        cursor = "nwse";\n      } else {\n        cursor = "nesw";\n      }\n\n      break;\n\n    case "rotation":\n      return "grab";\n  }\n\n  if (cursor && element) {\n    cursor = rotateResizeCursor(cursor, element.angle);\n  }\n\n  return cursor ? `${cursor}-resize` : "";\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6420 characters]\n//# sourceURL=webpack-internal:///../../element/resizeTest.ts\n');
              }
            ),
            /***/
            "../../element/showSelectedShapeActions.ts": (
              /*!*************************************************!*\
                !*** ../../element/showSelectedShapeActions.ts ***!
                \*************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "showSelectedShapeActions": () => (/* binding */ showSelectedShapeActions)\n/* harmony export */ });\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../scene */ "../../scene/index.ts");\n\nconst showSelectedShapeActions = (appState, elements) => Boolean(!appState.viewModeEnabled && (appState.activeTool.type !== "custom" && (appState.editingElement || appState.activeTool.type !== "selection" && appState.activeTool.type !== "eraser" && appState.activeTool.type !== "hand" && appState.activeTool.type !== "laser") || (0,_scene__WEBPACK_IMPORTED_MODULE_0__.getSelectedElements)(elements, appState).length));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZWxlbWVudC9zaG93U2VsZWN0ZWRTaGFwZUFjdGlvbnMudHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBK0M7QUFDeEMseVVBQXlVLDJEQUFtQiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9lbGVtZW50L3Nob3dTZWxlY3RlZFNoYXBlQWN0aW9ucy50cz9iMDk1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldFNlbGVjdGVkRWxlbWVudHMgfSBmcm9tIFwiLi4vc2NlbmVcIjtcbmV4cG9ydCBjb25zdCBzaG93U2VsZWN0ZWRTaGFwZUFjdGlvbnMgPSAoYXBwU3RhdGUsIGVsZW1lbnRzKSA9PiBCb29sZWFuKCFhcHBTdGF0ZS52aWV3TW9kZUVuYWJsZWQgJiYgKGFwcFN0YXRlLmFjdGl2ZVRvb2wudHlwZSAhPT0gXCJjdXN0b21cIiAmJiAoYXBwU3RhdGUuZWRpdGluZ0VsZW1lbnQgfHwgYXBwU3RhdGUuYWN0aXZlVG9vbC50eXBlICE9PSBcInNlbGVjdGlvblwiICYmIGFwcFN0YXRlLmFjdGl2ZVRvb2wudHlwZSAhPT0gXCJlcmFzZXJcIiAmJiBhcHBTdGF0ZS5hY3RpdmVUb29sLnR5cGUgIT09IFwiaGFuZFwiICYmIGFwcFN0YXRlLmFjdGl2ZVRvb2wudHlwZSAhPT0gXCJsYXNlclwiKSB8fCBnZXRTZWxlY3RlZEVsZW1lbnRzKGVsZW1lbnRzLCBhcHBTdGF0ZSkubGVuZ3RoKSk7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../element/showSelectedShapeActions.ts\n');
              }
            ),
            /***/
            "../../element/sizeHelpers.ts": (
              /*!************************************!*\
                !*** ../../element/sizeHelpers.ts ***!
                \************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "getLockedLinearCursorAlignSize": () => (/* binding */ getLockedLinearCursorAlignSize),\n/* harmony export */   "getNormalizedDimensions": () => (/* binding */ getNormalizedDimensions),\n/* harmony export */   "getPerfectElementSize": () => (/* binding */ getPerfectElementSize),\n/* harmony export */   "isElementInViewport": () => (/* binding */ isElementInViewport),\n/* harmony export */   "isInvisiblySmallElement": () => (/* binding */ isInvisiblySmallElement),\n/* harmony export */   "resizePerfectLineForNWHandler": () => (/* binding */ resizePerfectLineForNWHandler)\n/* harmony export */ });\n/* harmony import */ var _mutateElement__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./mutateElement */ "../../element/mutateElement.ts");\n/* harmony import */ var _typeChecks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _bounds__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./bounds */ "../../element/bounds.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n\n\n\n\n\nconst isInvisiblySmallElement = element => {\n  if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isLinearElement)(element) || (0,_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isFreeDrawElement)(element)) {\n    return element.points.length < 2;\n  }\n\n  return element.width === 0 && element.height === 0;\n};\nconst isElementInViewport = (element, width, height, viewTransformations) => {\n  const [x1, y1, x2, y2] = (0,_bounds__WEBPACK_IMPORTED_MODULE_3__.getElementBounds)(element); // scene coordinates\n\n  const topLeftSceneCoords = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.viewportCoordsToSceneCoords)({\n    clientX: viewTransformations.offsetLeft,\n    clientY: viewTransformations.offsetTop\n  }, viewTransformations);\n  const bottomRightSceneCoords = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.viewportCoordsToSceneCoords)({\n    clientX: viewTransformations.offsetLeft + width,\n    clientY: viewTransformations.offsetTop + height\n  }, viewTransformations);\n  return topLeftSceneCoords.x <= x2 && topLeftSceneCoords.y <= y2 && bottomRightSceneCoords.x >= x1 && bottomRightSceneCoords.y >= y1;\n};\n/**\n * Makes a perfect shape or diagonal/horizontal/vertical line\n */\n\nconst getPerfectElementSize = (elementType, width, height) => {\n  const absWidth = Math.abs(width);\n  const absHeight = Math.abs(height);\n\n  if (elementType === "line" || elementType === "arrow" || elementType === "freedraw") {\n    const lockedAngle = Math.round(Math.atan(absHeight / absWidth) / _constants__WEBPACK_IMPORTED_MODULE_2__.SHIFT_LOCKING_ANGLE) * _constants__WEBPACK_IMPORTED_MODULE_2__.SHIFT_LOCKING_ANGLE;\n\n    if (lockedAngle === 0) {\n      height = 0;\n    } else if (lockedAngle === Math.PI / 2) {\n      width = 0;\n    } else {\n      height = absWidth * Math.tan(lockedAngle) * Math.sign(height) || height;\n    }\n  } else if (elementType !== "selection") {\n    height = absWidth * Math.sign(height);\n  }\n\n  return {\n    width,\n    height\n  };\n};\nconst getLockedLinearCursorAlignSize = (originX, originY, x, y) => {\n  let width = x - originX;\n  let height = y - originY;\n  const lockedAngle = Math.round(Math.atan(height / width) / _constants__WEBPACK_IMPORTED_MODULE_2__.SHIFT_LOCKING_ANGLE) * _constants__WEBPACK_IMPORTED_MODULE_2__.SHIFT_LOCKING_ANGLE;\n\n  if (lockedAngle === 0) {\n    height = 0;\n  } else if (lockedAngle === Math.PI / 2) {\n    width = 0;\n  } else {\n    // locked angle line, y = mx + b => mx - y + b = 0\n    const a1 = Math.tan(lockedAngle);\n    const b1 = -1;\n    const c1 = originY - a1 * originX; // line through cursor, perpendicular to locked angle line\n\n    const a2 = -1 / a1;\n    const b2 = -1;\n    const c2 = y - a2 * x; // intersection of the two lines above\n\n    const intersectX = (b1 * c2 - b2 * c1) / (a1 * b2 - a2 * b1);\n    const intersectY = (c1 * a2 - c2 * a1) / (a1 * b2 - a2 * b1); // delta\n\n    width = intersectX - originX;\n    height = intersectY - originY;\n  }\n\n  return {\n    width,\n    height\n  };\n};\nconst resizePerfectLineForNWHandler = (element, x, y) => {\n  const anchorX = element.x + element.width;\n  const anchorY = element.y + element.height;\n  const distanceToAnchorX = x - anchorX;\n  const distanceToAnchorY = y - anchorY;\n\n  if (Math.abs(distanceToAnchorX) < Math.abs(distanceToAnchorY) / 2) {\n    (0,_mutateElement__WEBPACK_IMPORTED_MODULE_0__.mutateElement)(element, {\n      x: anchorX,\n      width: 0,\n      y,\n      height: -distanceToAnchorY\n    });\n  } else if (Math.abs(distanceToAnchorY) < Math.abs(element.width) / 2) {\n    (0,_mutateElement__WEBPACK_IMPORTED_MODULE_0__.mutateElement)(element, {\n      y: anchorY,\n      height: 0\n    });\n  } else {\n    const nextHeight = Math.sign(distanceToAnchorY) * Math.sign(distanceToAnchorX) * element.width;\n    (0,_mutateElement__WEBPACK_IMPORTED_MODULE_0__.mutateElement)(element, {\n      x,\n      y: anchorY - nextHeight,\n      width: -distanceToAnchorX,\n      height: nextHeight\n    });\n  }\n};\nconst getNormalizedDimensions = element => {\n  const ret = {\n    width: element.width,\n    height: element.height,\n    x: element.x,\n    y: element.y\n  };\n\n  if (element.width < 0) {\n    const nextWidth = Math.abs(element.width);\n    ret.width = nextWidth;\n    ret.x = element.x - nextWidth;\n  }\n\n  if (element.height < 0) {\n    const nextHeight = Math.abs(element.height);\n    ret.height = nextHeight;\n    ret.y = element.y - nextHeight;\n  }\n\n  return ret;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 7104 characters]\n//# sourceURL=webpack-internal:///../../element/sizeHelpers.ts\n');
              }
            ),
            /***/
            "../../element/sortElements.ts": (
              /*!*************************************!*\
                !*** ../../element/sortElements.ts ***!
                \*************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "normalizeElementOrder": () => (/* binding */ normalizeElementOrder)
/* harmony export */ });
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils */ "../../utils.ts");


const normalizeGroupElementOrder = elements => {
  const origElements = elements.slice();
  const sortedElements = new Set();

  const orderInnerGroups = elements => {
    var _a, _b, _c;

    const firstGroupSig = (_b = (_a = elements[0]) === null || _a === void 0 ? void 0 : _a.groupIds) === null || _b === void 0 ? void 0 : _b.join("");
    const aGroup = [elements[0]];
    const bGroup = [];

    for (const element of elements.slice(1)) {
      if (((_c = element.groupIds) === null || _c === void 0 ? void 0 : _c.join("")) === firstGroupSig) {
        aGroup.push(element);
      } else {
        bGroup.push(element);
      }
    }

    return bGroup.length ? [...aGroup, ...orderInnerGroups(bGroup)] : aGroup;
  };

  const groupHandledElements = new Map();
  origElements.forEach((element, idx) => {
    var _a;

    if (groupHandledElements.has(element.id)) {
      return;
    }

    if ((_a = element.groupIds) === null || _a === void 0 ? void 0 : _a.length) {
      const topGroup = element.groupIds[element.groupIds.length - 1];
      const groupElements = origElements.slice(idx).filter(element => {
        var _a;

        const ret = (_a = element === null || element === void 0 ? void 0 : element.groupIds) === null || _a === void 0 ? void 0 : _a.some(id => id === topGroup);

        if (ret) {
          groupHandledElements.set(element.id, true);
        }

        return ret;
      });

      for (const elem of orderInnerGroups(groupElements)) {
        sortedElements.add(elem);
      }
    } else {
      sortedElements.add(element);
    }
  }); // if there's a bug which resulted in losing some of the elements, return
  // original instead as that's better than losing data

  if (sortedElements.size !== elements.length) {
    console.error("normalizeGroupElementOrder: lost some elements... bailing!");
    return elements;
  }

  return [...sortedElements];
};
/**
 * In theory, when we have text elements bound to a container, they
 * should be right after the container element in the elements array.
 * However, this is not guaranteed due to old and potential future bugs.
 *
 * This function sorts containers and their bound texts together. It prefers
 * original z-index of container (i.e. it moves bound text elements after
 * containers).
 */


const normalizeBoundElementsOrder = elements => {
  const elementsMap = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.arrayToMapWithIndex)(elements);
  const origElements = elements.slice();
  const sortedElements = new Set();
  origElements.forEach((element, idx) => {
    var _a, _b;

    if (!element) {
      return;
    }

    if ((_a = element.boundElements) === null || _a === void 0 ? void 0 : _a.length) {
      sortedElements.add(element);
      origElements[idx] = null;
      element.boundElements.forEach(boundElement => {
        const child = elementsMap.get(boundElement.id);

        if (child && boundElement.type === "text") {
          sortedElements.add(child[0]);
          origElements[child[1]] = null;
        }
      });
    } else if (element.type === "text" && element.containerId) {
      const parent = elementsMap.get(element.containerId);

      if (!((_b = parent === null || parent === void 0 ? void 0 : parent[0].boundElements) === null || _b === void 0 ? void 0 : _b.find(x => x.id === element.id))) {
        sortedElements.add(element);
        origElements[idx] = null; // if element has a container and container lists it, skip this element
        // as it'll be taken care of by the container
      }
    } else {
      sortedElements.add(element);
      origElements[idx] = null;
    }
  }); // if there's a bug which resulted in losing some of the elements, return
  // original instead as that's better than losing data

  if (sortedElements.size !== elements.length) {
    console.error("normalizeBoundElementsOrder: lost some elements... bailing!");
    return elements;
  }

  return [...sortedElements];
};

const normalizeElementOrder = elements => {
  // console.time();
  const ret = normalizeBoundElementsOrder(normalizeGroupElementOrder(elements)); // console.timeEnd();

  return ret;
};//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6752 characters]
//# sourceURL=webpack-internal:///../../element/sortElements.ts
`);
              }
            ),
            /***/
            "../../element/textElement.ts": (
              /*!************************************!*\
                !*** ../../element/textElement.ts ***!
                \************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "bindTextToShapeAfterDuplication": () => (/* binding */ bindTextToShapeAfterDuplication),
/* harmony export */   "charWidth": () => (/* binding */ charWidth),
/* harmony export */   "computeBoundTextPosition": () => (/* binding */ computeBoundTextPosition),
/* harmony export */   "computeContainerDimensionForBoundText": () => (/* binding */ computeContainerDimensionForBoundText),
/* harmony export */   "detectLineHeight": () => (/* binding */ detectLineHeight),
/* harmony export */   "getApproxCharsToFitInWidth": () => (/* binding */ getApproxCharsToFitInWidth),
/* harmony export */   "getApproxMinLineHeight": () => (/* binding */ getApproxMinLineHeight),
/* harmony export */   "getApproxMinLineWidth": () => (/* binding */ getApproxMinLineWidth),
/* harmony export */   "getBoundTextElement": () => (/* binding */ getBoundTextElement),
/* harmony export */   "getBoundTextElementId": () => (/* binding */ getBoundTextElementId),
/* harmony export */   "getBoundTextElementOffset": () => (/* binding */ getBoundTextElementOffset),
/* harmony export */   "getBoundTextElementPosition": () => (/* binding */ getBoundTextElementPosition),
/* harmony export */   "getBoundTextMaxHeight": () => (/* binding */ getBoundTextMaxHeight),
/* harmony export */   "getBoundTextMaxWidth": () => (/* binding */ getBoundTextMaxWidth),
/* harmony export */   "getContainerCenter": () => (/* binding */ getContainerCenter),
/* harmony export */   "getContainerCoords": () => (/* binding */ getContainerCoords),
/* harmony export */   "getContainerElement": () => (/* binding */ getContainerElement),
/* harmony export */   "getDefaultLineHeight": () => (/* binding */ getDefaultLineHeight),
/* harmony export */   "getLineHeightInPx": () => (/* binding */ getLineHeightInPx),
/* harmony export */   "getMaxCharWidth": () => (/* binding */ getMaxCharWidth),
/* harmony export */   "getMinCharWidth": () => (/* binding */ getMinCharWidth),
/* harmony export */   "getTextBindableContainerAtPosition": () => (/* binding */ getTextBindableContainerAtPosition),
/* harmony export */   "getTextElementAngle": () => (/* binding */ getTextElementAngle),
/* harmony export */   "getTextHeight": () => (/* binding */ getTextHeight),
/* harmony export */   "getTextWidth": () => (/* binding */ getTextWidth),
/* harmony export */   "handleBindTextResize": () => (/* binding */ handleBindTextResize),
/* harmony export */   "isMeasureTextSupported": () => (/* binding */ isMeasureTextSupported),
/* harmony export */   "isValidTextContainer": () => (/* binding */ isValidTextContainer),
/* harmony export */   "measureBaseline": () => (/* binding */ measureBaseline),
/* harmony export */   "measureText": () => (/* binding */ measureText),
/* harmony export */   "normalizeText": () => (/* binding */ normalizeText),
/* harmony export */   "parseTokens": () => (/* binding */ parseTokens),
/* harmony export */   "redrawTextBoundingBox": () => (/* binding */ redrawTextBoundingBox),
/* harmony export */   "shouldAllowVerticalAlign": () => (/* binding */ shouldAllowVerticalAlign),
/* harmony export */   "splitIntoLines": () => (/* binding */ splitIntoLines),
/* harmony export */   "suppportsHorizontalAlign": () => (/* binding */ suppportsHorizontalAlign),
/* harmony export */   "wrapText": () => (/* binding */ wrapText)
/* harmony export */ });
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils */ "../../utils.ts");
/* harmony import */ var _mutateElement__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mutateElement */ "../../element/mutateElement.ts");
/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constants */ "../../constants.ts");
/* harmony import */ var _scene_Scene__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../scene/Scene */ "../../scene/Scene.ts");
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../element */ "../../element/index.ts");
/* harmony import */ var _typeChecks__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./typeChecks */ "../../element/typeChecks.ts");
/* harmony import */ var _linearElementEditor__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./linearElementEditor */ "../../element/linearElementEditor.ts");
/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../scene */ "../../scene/index.ts");
/* harmony import */ var _collision__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./collision */ "../../element/collision.ts");
/* harmony import */ var _textWysiwyg__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./textWysiwyg */ "../../element/textWysiwyg.tsx");












const normalizeText = text => {
  return text // replace tabs with spaces so they render and measure correctly
  .replace(/\\t/g, "        ") // normalize newlines
  .replace(/\\r?\\n|\\r/g, "\\n");
};
const splitIntoLines = text => {
  return normalizeText(text).split("\\n");
};
const redrawTextBoundingBox = (textElement, container) => {
  let maxWidth = undefined;
  const boundTextUpdates = {
    x: textElement.x,
    y: textElement.y,
    text: textElement.text,
    width: textElement.width,
    height: textElement.height,
    baseline: textElement.baseline
  };
  boundTextUpdates.text = textElement.text;

  if (container) {
    maxWidth = getBoundTextMaxWidth(container, textElement);
    boundTextUpdates.text = wrapText(textElement.originalText, (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getFontString)(textElement), maxWidth);
  }

  const metrics = measureText(boundTextUpdates.text, (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getFontString)(textElement), textElement.lineHeight);
  boundTextUpdates.width = metrics.width;
  boundTextUpdates.height = metrics.height;
  boundTextUpdates.baseline = metrics.baseline;

  if (container) {
    const maxContainerHeight = getBoundTextMaxHeight(container, textElement);
    const maxContainerWidth = getBoundTextMaxWidth(container);

    if (!(0,_typeChecks__WEBPACK_IMPORTED_MODULE_5__.isArrowElement)(container) && metrics.height > maxContainerHeight) {
      const nextHeight = computeContainerDimensionForBoundText(metrics.height, container.type);
      (0,_mutateElement__WEBPACK_IMPORTED_MODULE_1__.mutateElement)(container, {
        height: nextHeight
      });
      (0,_textWysiwyg__WEBPACK_IMPORTED_MODULE_9__.updateOriginalContainerCache)(container.id, nextHeight);
    }

    if (metrics.width > maxContainerWidth) {
      const nextWidth = computeContainerDimensionForBoundText(metrics.width, container.type);
      (0,_mutateElement__WEBPACK_IMPORTED_MODULE_1__.mutateElement)(container, {
        width: nextWidth
      });
    }

    const updatedTextElement = Object.assign(Object.assign({}, textElement), boundTextUpdates);
    const {
      x,
      y
    } = computeBoundTextPosition(container, updatedTextElement);
    boundTextUpdates.x = x;
    boundTextUpdates.y = y;
  }

  (0,_mutateElement__WEBPACK_IMPORTED_MODULE_1__.mutateElement)(textElement, boundTextUpdates);
};
const bindTextToShapeAfterDuplication = (sceneElements, oldElements, oldIdToDuplicatedId) => {
  const sceneElementMap = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.arrayToMap)(sceneElements);
  oldElements.forEach(element => {
    const newElementId = oldIdToDuplicatedId.get(element.id);
    const boundTextElementId = getBoundTextElementId(element);

    if (boundTextElementId) {
      const newTextElementId = oldIdToDuplicatedId.get(boundTextElementId);

      if (newTextElementId) {
        const newContainer = sceneElementMap.get(newElementId);

        if (newContainer) {
          (0,_mutateElement__WEBPACK_IMPORTED_MODULE_1__.mutateElement)(newContainer, {
            boundElements: (element.boundElements || []).filter(boundElement => boundElement.id !== newTextElementId && boundElement.id !== boundTextElementId).concat({
              type: "text",
              id: newTextElementId
            })
          });
        }

        const newTextElement = sceneElementMap.get(newTextElementId);

        if (newTextElement && (0,___WEBPACK_IMPORTED_MODULE_4__.isTextElement)(newTextElement)) {
          (0,_mutateElement__WEBPACK_IMPORTED_MODULE_1__.mutateElement)(newTextElement, {
            containerId: newContainer ? newElementId : null
          });
        }
      }
    }
  });
};
const handleBindTextResize = (container, transformHandleType, shouldMaintainAspectRatio = false) => {
  const boundTextElementId = getBoundTextElementId(container);

  if (!boundTextElementId) {
    return;
  }

  (0,_textWysiwyg__WEBPACK_IMPORTED_MODULE_9__.resetOriginalContainerCache)(container.id);
  let textElement = _scene_Scene__WEBPACK_IMPORTED_MODULE_3__["default"].getScene(container).getElement(boundTextElementId);

  if (textElement && textElement.text) {
    if (!container) {
      return;
    }

    textElement = _scene_Scene__WEBPACK_IMPORTED_MODULE_3__["default"].getScene(container).getElement(boundTextElementId);
    let text = textElement.text;
    let nextHeight = textElement.height;
    let nextWidth = textElement.width;
    const maxWidth = getBoundTextMaxWidth(container);
    const maxHeight = getBoundTextMaxHeight(container, textElement);
    let containerHeight = container.height;
    let nextBaseLine = textElement.baseline;

    if (shouldMaintainAspectRatio || transformHandleType !== "n" && transformHandleType !== "s") {
      if (text) {
        text = wrapText(textElement.originalText, (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getFontString)(textElement), maxWidth);
      }

      const metrics = measureText(text, (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getFontString)(textElement), textElement.lineHeight);
      nextHeight = metrics.height;
      nextWidth = metrics.width;
      nextBaseLine = metrics.baseline;
    } // increase height in case text element height exceeds


    if (nextHeight > maxHeight) {
      containerHeight = computeContainerDimensionForBoundText(nextHeight, container.type);
      const diff = containerHeight - container.height; // fix the y coord when resizing from ne/nw/n

      const updatedY = !(0,_typeChecks__WEBPACK_IMPORTED_MODULE_5__.isArrowElement)(container) && (transformHandleType === "ne" || transformHandleType === "nw" || transformHandleType === "n") ? container.y - diff : container.y;
      (0,_mutateElement__WEBPACK_IMPORTED_MODULE_1__.mutateElement)(container, {
        height: containerHeight,
        y: updatedY
      });
    }

    (0,_mutateElement__WEBPACK_IMPORTED_MODULE_1__.mutateElement)(textElement, {
      text,
      width: nextWidth,
      height: nextHeight,
      baseline: nextBaseLine
    });

    if (!(0,_typeChecks__WEBPACK_IMPORTED_MODULE_5__.isArrowElement)(container)) {
      (0,_mutateElement__WEBPACK_IMPORTED_MODULE_1__.mutateElement)(textElement, computeBoundTextPosition(container, textElement));
    }
  }
};
const computeBoundTextPosition = (container, boundTextElement) => {
  if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_5__.isArrowElement)(container)) {
    return _linearElementEditor__WEBPACK_IMPORTED_MODULE_6__.LinearElementEditor.getBoundTextElementPosition(container, boundTextElement);
  }

  const containerCoords = getContainerCoords(container);
  const maxContainerHeight = getBoundTextMaxHeight(container, boundTextElement);
  const maxContainerWidth = getBoundTextMaxWidth(container);
  let x;
  let y;

  if (boundTextElement.verticalAlign === _constants__WEBPACK_IMPORTED_MODULE_2__.VERTICAL_ALIGN.TOP) {
    y = containerCoords.y;
  } else if (boundTextElement.verticalAlign === _constants__WEBPACK_IMPORTED_MODULE_2__.VERTICAL_ALIGN.BOTTOM) {
    y = containerCoords.y + (maxContainerHeight - boundTextElement.height);
  } else {
    y = containerCoords.y + (maxContainerHeight / 2 - boundTextElement.height / 2);
  }

  if (boundTextElement.textAlign === _constants__WEBPACK_IMPORTED_MODULE_2__.TEXT_ALIGN.LEFT) {
    x = containerCoords.x;
  } else if (boundTextElement.textAlign === _constants__WEBPACK_IMPORTED_MODULE_2__.TEXT_ALIGN.RIGHT) {
    x = containerCoords.x + (maxContainerWidth - boundTextElement.width);
  } else {
    x = containerCoords.x + (maxContainerWidth / 2 - boundTextElement.width / 2);
  }

  return {
    x,
    y
  };
}; // https://github.com/grassator/canvas-text-editor/blob/master/lib/FontMetrics.js

const measureText = (text, font, lineHeight) => {
  text = text.split("\\n") // replace empty lines with single space because leading/trailing empty
  // lines would be stripped from computation
  .map(x => x || " ").join("\\n");
  const fontSize = parseFloat(font);
  const height = getTextHeight(text, fontSize, lineHeight);
  const width = getTextWidth(text, font);
  const baseline = measureBaseline(text, font, lineHeight);
  return {
    width,
    height,
    baseline
  };
};
const measureBaseline = (text, font, lineHeight, wrapInContainer) => {
  const container = document.createElement("div");
  container.style.position = "absolute";
  container.style.whiteSpace = "pre";
  container.style.font = font;
  container.style.minHeight = "1em";

  if (wrapInContainer) {
    container.style.overflow = "hidden";
    container.style.wordBreak = "break-word";
    container.style.whiteSpace = "pre-wrap";
  }

  container.style.lineHeight = String(lineHeight);
  container.innerText = text; // Baseline is important for positioning text on canvas

  document.body.appendChild(container);
  const span = document.createElement("span");
  span.style.display = "inline-block";
  span.style.overflow = "hidden";
  span.style.width = "1px";
  span.style.height = "1px";
  container.appendChild(span);
  let baseline = span.offsetTop + span.offsetHeight;
  const height = container.offsetHeight;

  if (_constants__WEBPACK_IMPORTED_MODULE_2__.isSafari) {
    const canvasHeight = getTextHeight(text, parseFloat(font), lineHeight);
    const fontSize = parseFloat(font); // In Safari the font size gets rounded off when rendering hence calculating the safari height and shifting the baseline if it differs
    // from the actual canvas height

    const domHeight = getTextHeight(text, Math.round(fontSize), lineHeight);

    if (canvasHeight > height) {
      baseline += canvasHeight - domHeight;
    }

    if (height > canvasHeight) {
      baseline -= domHeight - canvasHeight;
    }
  }

  document.body.removeChild(container);
  return baseline;
};
/**
 * To get unitless line-height (if unknown) we can calculate it by dividing
 * height-per-line by fontSize.
 */

const detectLineHeight = textElement => {
  const lineCount = splitIntoLines(textElement.text).length;
  return textElement.height / lineCount / textElement.fontSize;
};
/**
 * We calculate the line height from the font size and the unitless line height,
 * aligning with the W3C spec.
 */

const getLineHeightInPx = (fontSize, lineHeight) => {
  return fontSize * lineHeight;
}; // FIXME rename to getApproxMinContainerHeight

const getApproxMinLineHeight = (fontSize, lineHeight) => {
  return getLineHeightInPx(fontSize, lineHeight) + _constants__WEBPACK_IMPORTED_MODULE_2__.BOUND_TEXT_PADDING * 2;
};
let canvas;

const getLineWidth = (text, font) => {
  if (!canvas) {
    canvas = document.createElement("canvas");
  }

  const canvas2dContext = canvas.getContext("2d");
  canvas2dContext.font = font;
  const width = canvas2dContext.measureText(text).width; // since in test env the canvas measureText algo
  // doesn't measure text and instead just returns number of
  // characters hence we assume that each letteris 10px

  if ((0,_utils__WEBPACK_IMPORTED_MODULE_0__.isTestEnv)()) {
    return width * 10;
  }

  return width;
};

const getTextWidth = (text, font) => {
  const lines = splitIntoLines(text);
  let width = 0;
  lines.forEach(line => {
    width = Math.max(width, getLineWidth(line, font));
  });
  return width;
};
const getTextHeight = (text, fontSize, lineHeight) => {
  const lineCount = splitIntoLines(text).length;
  return getLineHeightInPx(fontSize, lineHeight) * lineCount;
};
const parseTokens = text => {
  // Splitting words containing "-" as those are treated as separate words
  // by css wrapping algorithm eg non-profit => non-, profit
  const words = text.split("-");

  if (words.length > 1) {
    // non-proft org => ['non-', 'profit org']
    words.forEach((word, index) => {
      if (index !== words.length - 1) {
        words[index] = word += "-";
      }
    });
  } // Joining the words with space and splitting them again with space to get the
  // final list of tokens
  // ['non-', 'profit org'] =>,'non- proft org' => ['non-','profit','org']


  return words.join(" ").split(" ");
};
const wrapText = (text, font, maxWidth) => {
  // if maxWidth is not finite or NaN which can happen in case of bugs in
  // computation, we need to make sure we don't continue as we'll end up
  // in an infinite loop
  if (!Number.isFinite(maxWidth) || maxWidth < 0) {
    return text;
  }

  const lines = [];
  const originalLines = text.split("\\n");
  const spaceWidth = getLineWidth(" ", font);
  let currentLine = "";
  let currentLineWidthTillNow = 0;

  const push = str => {
    if (str.trim()) {
      lines.push(str);
    }
  };

  const resetParams = () => {
    currentLine = "";
    currentLineWidthTillNow = 0;
  };

  originalLines.forEach(originalLine => {
    const currentLineWidth = getTextWidth(originalLine, font); // Push the line if its <= maxWidth

    if (currentLineWidth <= maxWidth) {
      lines.push(originalLine);
      return; // continue
    }

    const words = parseTokens(originalLine);
    resetParams();
    let index = 0;

    while (index < words.length) {
      const currentWordWidth = getLineWidth(words[index], font); // This will only happen when single word takes entire width

      if (currentWordWidth === maxWidth) {
        push(words[index]);
        index++;
      } // Start breaking longer words exceeding max width
      else if (currentWordWidth > maxWidth) {
        // push current line since the current word exceeds the max width
        // so will be appended in next line
        push(currentLine);
        resetParams();

        while (words[index].length > 0) {
          const currentChar = String.fromCodePoint(words[index].codePointAt(0));
          const width = charWidth.calculate(currentChar, font);
          currentLineWidthTillNow += width;
          words[index] = words[index].slice(currentChar.length);

          if (currentLineWidthTillNow >= maxWidth) {
            push(currentLine);
            currentLine = currentChar;
            currentLineWidthTillNow = width;
          } else {
            currentLine += currentChar;
          }
        } // push current line if appending space exceeds max width


        if (currentLineWidthTillNow + spaceWidth >= maxWidth) {
          push(currentLine);
          resetParams(); // space needs to be appended before next word
          // as currentLine contains chars which couldn't be appended
          // to previous line unless the line ends with hyphen to sync
          // with css word-wrap
        } else if (!currentLine.endsWith("-")) {
          currentLine += " ";
          currentLineWidthTillNow += spaceWidth;
        }

        index++;
      } else {
        // Start appending words in a line till max width reached
        while (currentLineWidthTillNow < maxWidth && index < words.length) {
          const word = words[index];
          currentLineWidthTillNow = getLineWidth(currentLine + word, font);

          if (currentLineWidthTillNow > maxWidth) {
            push(currentLine);
            resetParams();
            break;
          }

          index++; // if word ends with "-" then we don't need to add space
          // to sync with css word-wrap

          const shouldAppendSpace = !word.endsWith("-");
          currentLine += word;

          if (shouldAppendSpace) {
            currentLine += " ";
          } // Push the word if appending space exceeds max width


          if (currentLineWidthTillNow + spaceWidth >= maxWidth) {
            if (shouldAppendSpace) {
              lines.push(currentLine.slice(0, -1));
            } else {
              lines.push(currentLine);
            }

            resetParams();
            break;
          }
        }
      }
    }

    if (currentLine.slice(-1) === " ") {
      // only remove last trailing space which we have added when joining words
      currentLine = currentLine.slice(0, -1);
      push(currentLine);
    }
  });
  return lines.join("\\n");
};
const charWidth = (() => {
  const cachedCharWidth = {};

  const calculate = (char, font) => {
    const ascii = char.charCodeAt(0);

    if (!cachedCharWidth[font]) {
      cachedCharWidth[font] = [];
    }

    if (!cachedCharWidth[font][ascii]) {
      const width = getLineWidth(char, font);
      cachedCharWidth[font][ascii] = width;
    }

    return cachedCharWidth[font][ascii];
  };

  const getCache = font => {
    return cachedCharWidth[font];
  };

  return {
    calculate,
    getCache
  };
})();
const DUMMY_TEXT = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".toLocaleUpperCase(); // FIXME rename to getApproxMinContainerWidth

const getApproxMinLineWidth = (font, lineHeight) => {
  const maxCharWidth = getMaxCharWidth(font);

  if (maxCharWidth === 0) {
    return measureText(DUMMY_TEXT.split("").join("\\n"), font, lineHeight).width + _constants__WEBPACK_IMPORTED_MODULE_2__.BOUND_TEXT_PADDING * 2;
  }

  return maxCharWidth + _constants__WEBPACK_IMPORTED_MODULE_2__.BOUND_TEXT_PADDING * 2;
};
const getMinCharWidth = font => {
  const cache = charWidth.getCache(font);

  if (!cache) {
    return 0;
  }

  const cacheWithOutEmpty = cache.filter(val => val !== undefined);
  return Math.min(...cacheWithOutEmpty);
};
const getMaxCharWidth = font => {
  const cache = charWidth.getCache(font);

  if (!cache) {
    return 0;
  }

  const cacheWithOutEmpty = cache.filter(val => val !== undefined);
  return Math.max(...cacheWithOutEmpty);
};
const getApproxCharsToFitInWidth = (font, width) => {
  // Generally lower case is used so converting to lower case
  const dummyText = DUMMY_TEXT.toLocaleLowerCase();
  const batchLength = 6;
  let index = 0;
  let widthTillNow = 0;
  let str = "";

  while (widthTillNow <= width) {
    const batch = dummyText.substr(index, index + batchLength);
    str += batch;
    widthTillNow += getLineWidth(str, font);

    if (index === dummyText.length - 1) {
      index = 0;
    }

    index = index + batchLength;
  }

  while (widthTillNow > width) {
    str = str.substr(0, str.length - 1);
    widthTillNow = getLineWidth(str, font);
  }

  return str.length;
};
const getBoundTextElementId = container => {
  var _a, _b, _c;

  return ((_a = container === null || container === void 0 ? void 0 : container.boundElements) === null || _a === void 0 ? void 0 : _a.length) ? ((_c = (_b = container === null || container === void 0 ? void 0 : container.boundElements) === null || _b === void 0 ? void 0 : _b.filter(ele => ele.type === "text")[0]) === null || _c === void 0 ? void 0 : _c.id) || null : null;
};
const getBoundTextElement = element => {
  var _a;

  if (!element) {
    return null;
  }

  const boundTextElementId = getBoundTextElementId(element);

  if (boundTextElementId) {
    return ((_a = _scene_Scene__WEBPACK_IMPORTED_MODULE_3__["default"].getScene(element)) === null || _a === void 0 ? void 0 : _a.getElement(boundTextElementId)) || null;
  }

  return null;
};
const getContainerElement = element => {
  var _a;

  if (!element) {
    return null;
  }

  if (element.containerId) {
    return ((_a = _scene_Scene__WEBPACK_IMPORTED_MODULE_3__["default"].getScene(element)) === null || _a === void 0 ? void 0 : _a.getElement(element.containerId)) || null;
  }

  return null;
};
const getContainerCenter = (container, appState) => {
  if (!(0,_typeChecks__WEBPACK_IMPORTED_MODULE_5__.isArrowElement)(container)) {
    return {
      x: container.x + container.width / 2,
      y: container.y + container.height / 2
    };
  }

  const points = _linearElementEditor__WEBPACK_IMPORTED_MODULE_6__.LinearElementEditor.getPointsGlobalCoordinates(container);

  if (points.length % 2 === 1) {
    const index = Math.floor(container.points.length / 2);
    const midPoint = _linearElementEditor__WEBPACK_IMPORTED_MODULE_6__.LinearElementEditor.getPointGlobalCoordinates(container, container.points[index]);
    return {
      x: midPoint[0],
      y: midPoint[1]
    };
  }

  const index = container.points.length / 2 - 1;
  let midSegmentMidpoint = _linearElementEditor__WEBPACK_IMPORTED_MODULE_6__.LinearElementEditor.getEditorMidPoints(container, appState)[index];

  if (!midSegmentMidpoint) {
    midSegmentMidpoint = _linearElementEditor__WEBPACK_IMPORTED_MODULE_6__.LinearElementEditor.getSegmentMidPoint(container, points[index], points[index + 1], index + 1);
  }

  return {
    x: midSegmentMidpoint[0],
    y: midSegmentMidpoint[1]
  };
};
const getContainerCoords = container => {
  let offsetX = _constants__WEBPACK_IMPORTED_MODULE_2__.BOUND_TEXT_PADDING;
  let offsetY = _constants__WEBPACK_IMPORTED_MODULE_2__.BOUND_TEXT_PADDING;

  if (container.type === "ellipse") {
    // The derivation of coordinates is explained in https://github.com/excalidraw/excalidraw/pull/6172
    offsetX += container.width / 2 * (1 - Math.sqrt(2) / 2);
    offsetY += container.height / 2 * (1 - Math.sqrt(2) / 2);
  } // The derivation of coordinates is explained in https://github.com/excalidraw/excalidraw/pull/6265


  if (container.type === "diamond") {
    offsetX += container.width / 4;
    offsetY += container.height / 4;
  }

  return {
    x: container.x + offsetX,
    y: container.y + offsetY
  };
};
const getTextElementAngle = textElement => {
  const container = getContainerElement(textElement);

  if (!container || (0,_typeChecks__WEBPACK_IMPORTED_MODULE_5__.isArrowElement)(container)) {
    return textElement.angle;
  }

  return container.angle;
};
const getBoundTextElementOffset = boundTextElement => {
  const container = getContainerElement(boundTextElement);

  if (!container || !boundTextElement) {
    return 0;
  }

  if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_5__.isArrowElement)(container)) {
    return _constants__WEBPACK_IMPORTED_MODULE_2__.BOUND_TEXT_PADDING * 8;
  }

  return _constants__WEBPACK_IMPORTED_MODULE_2__.BOUND_TEXT_PADDING;
};
const getBoundTextElementPosition = (container, boundTextElement) => {
  if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_5__.isArrowElement)(container)) {
    return _linearElementEditor__WEBPACK_IMPORTED_MODULE_6__.LinearElementEditor.getBoundTextElementPosition(container, boundTextElement);
  }
};
const shouldAllowVerticalAlign = selectedElements => {
  return selectedElements.some(element => {
    const hasBoundContainer = (0,_typeChecks__WEBPACK_IMPORTED_MODULE_5__.isBoundToContainer)(element);

    if (hasBoundContainer) {
      const container = getContainerElement(element);

      if ((0,___WEBPACK_IMPORTED_MODULE_4__.isTextElement)(element) && (0,_typeChecks__WEBPACK_IMPORTED_MODULE_5__.isArrowElement)(container)) {
        return false;
      }

      return true;
    }

    return false;
  });
};
const suppportsHorizontalAlign = selectedElements => {
  return selectedElements.some(element => {
    const hasBoundContainer = (0,_typeChecks__WEBPACK_IMPORTED_MODULE_5__.isBoundToContainer)(element);

    if (hasBoundContainer) {
      const container = getContainerElement(element);

      if ((0,___WEBPACK_IMPORTED_MODULE_4__.isTextElement)(element) && (0,_typeChecks__WEBPACK_IMPORTED_MODULE_5__.isArrowElement)(container)) {
        return false;
      }

      return true;
    }

    return (0,___WEBPACK_IMPORTED_MODULE_4__.isTextElement)(element);
  });
};
const getTextBindableContainerAtPosition = (elements, appState, x, y) => {
  const selectedElements = (0,_scene__WEBPACK_IMPORTED_MODULE_7__.getSelectedElements)(elements, appState);

  if (selectedElements.length === 1) {
    return (0,_typeChecks__WEBPACK_IMPORTED_MODULE_5__.isTextBindableContainer)(selectedElements[0], false) ? selectedElements[0] : null;
  }

  let hitElement = null; // We need to to hit testing from front (end of the array) to back (beginning of the array)

  for (let index = elements.length - 1; index >= 0; --index) {
    if (elements[index].isDeleted) {
      continue;
    }

    const [x1, y1, x2, y2] = (0,___WEBPACK_IMPORTED_MODULE_4__.getElementAbsoluteCoords)(elements[index]);

    if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_5__.isArrowElement)(elements[index]) && (0,_collision__WEBPACK_IMPORTED_MODULE_8__.isHittingElementNotConsideringBoundingBox)(elements[index], appState, null, [x, y])) {
      hitElement = elements[index];
      break;
    } else if (x1 < x && x < x2 && y1 < y && y < y2) {
      hitElement = elements[index];
      break;
    }
  }

  return (0,_typeChecks__WEBPACK_IMPORTED_MODULE_5__.isTextBindableContainer)(hitElement, false) ? hitElement : null;
};
const VALID_CONTAINER_TYPES = new Set(["rectangle", "ellipse", "diamond", "arrow"]);
const isValidTextContainer = element => VALID_CONTAINER_TYPES.has(element.type);
const computeContainerDimensionForBoundText = (dimension, containerType) => {
  dimension = Math.ceil(dimension);
  const padding = _constants__WEBPACK_IMPORTED_MODULE_2__.BOUND_TEXT_PADDING * 2;

  if (containerType === "ellipse") {
    return Math.round((dimension + padding) / Math.sqrt(2) * 2);
  }

  if (containerType === "arrow") {
    return dimension + padding * 8;
  }

  if (containerType === "diamond") {
    return 2 * (dimension + padding);
  }

  return dimension + padding;
};
const getBoundTextMaxWidth = (container, boundTextElement = getBoundTextElement(container)) => {
  var _a;

  const {
    width
  } = container;

  if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_5__.isArrowElement)(container)) {
    const minWidth = ((_a = boundTextElement === null || boundTextElement === void 0 ? void 0 : boundTextElement.fontSize) !== null && _a !== void 0 ? _a : _constants__WEBPACK_IMPORTED_MODULE_2__.DEFAULT_FONT_SIZE) * _constants__WEBPACK_IMPORTED_MODULE_2__.ARROW_LABEL_FONT_SIZE_TO_MIN_WIDTH_RATIO;
    return Math.max(_constants__WEBPACK_IMPORTED_MODULE_2__.ARROW_LABEL_WIDTH_FRACTION * width, minWidth);
  }

  if (container.type === "ellipse") {
    // The width of the largest rectangle inscribed inside an ellipse is
    // Math.round((ellipse.width / 2) * Math.sqrt(2)) which is derived from
    // equation of an ellipse -https://github.com/excalidraw/excalidraw/pull/6172
    return Math.round(width / 2 * Math.sqrt(2)) - _constants__WEBPACK_IMPORTED_MODULE_2__.BOUND_TEXT_PADDING * 2;
  }

  if (container.type === "diamond") {
    // The width of the largest rectangle inscribed inside a rhombus is
    // Math.round(width / 2) - https://github.com/excalidraw/excalidraw/pull/6265
    return Math.round(width / 2) - _constants__WEBPACK_IMPORTED_MODULE_2__.BOUND_TEXT_PADDING * 2;
  }

  return width - _constants__WEBPACK_IMPORTED_MODULE_2__.BOUND_TEXT_PADDING * 2;
};
const getBoundTextMaxHeight = (container, boundTextElement) => {
  const {
    height
  } = container;

  if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_5__.isArrowElement)(container)) {
    const containerHeight = height - _constants__WEBPACK_IMPORTED_MODULE_2__.BOUND_TEXT_PADDING * 8 * 2;

    if (containerHeight <= 0) {
      return boundTextElement.height;
    }

    return height;
  }

  if (container.type === "ellipse") {
    // The height of the largest rectangle inscribed inside an ellipse is
    // Math.round((ellipse.height / 2) * Math.sqrt(2)) which is derived from
    // equation of an ellipse - https://github.com/excalidraw/excalidraw/pull/6172
    return Math.round(height / 2 * Math.sqrt(2)) - _constants__WEBPACK_IMPORTED_MODULE_2__.BOUND_TEXT_PADDING * 2;
  }

  if (container.type === "diamond") {
    // The height of the largest rectangle inscribed inside a rhombus is
    // Math.round(height / 2) - https://github.com/excalidraw/excalidraw/pull/6265
    return Math.round(height / 2) - _constants__WEBPACK_IMPORTED_MODULE_2__.BOUND_TEXT_PADDING * 2;
  }

  return height - _constants__WEBPACK_IMPORTED_MODULE_2__.BOUND_TEXT_PADDING * 2;
};
const isMeasureTextSupported = () => {
  const width = getTextWidth(DUMMY_TEXT, (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getFontString)({
    fontSize: _constants__WEBPACK_IMPORTED_MODULE_2__.DEFAULT_FONT_SIZE,
    fontFamily: _constants__WEBPACK_IMPORTED_MODULE_2__.DEFAULT_FONT_FAMILY
  }));
  return width > 0;
};
/**
 * Unitless line height
 *
 * In previous versions we used \`normal\` line height, which browsers interpret
 * differently, and based on font-family and font-size.
 *
 * To make line heights consistent across browsers we hardcode the values for
 * each of our fonts based on most common average line-heights.
 * See https://github.com/excalidraw/excalidraw/pull/6360#issuecomment-1477635971
 * where the values come from.
 */

const DEFAULT_LINE_HEIGHT = {
  // ~1.25 is the average for Virgil in WebKit and Blink.
  // Gecko (FF) uses ~1.28.
  [_constants__WEBPACK_IMPORTED_MODULE_2__.FONT_FAMILY.Virgil]: 1.25,
  // ~1.15 is the average for Virgil in WebKit and Blink.
  // Gecko if all over the place.
  [_constants__WEBPACK_IMPORTED_MODULE_2__.FONT_FAMILY.Helvetica]: 1.15,
  // ~1.2 is the average for Virgil in WebKit and Blink, and kinda Gecko too
  [_constants__WEBPACK_IMPORTED_MODULE_2__.FONT_FAMILY.Cascadia]: 1.2
};
const getDefaultLineHeight = fontFamily => {
  if (fontFamily in DEFAULT_LINE_HEIGHT) {
    return DEFAULT_LINE_HEIGHT[fontFamily];
  }

  return DEFAULT_LINE_HEIGHT[_constants__WEBPACK_IMPORTED_MODULE_2__.DEFAULT_FONT_FAMILY];
};//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 43708 characters]
//# sourceURL=webpack-internal:///../../element/textElement.ts
`);
              }
            ),
            /***/
            "../../element/textWysiwyg.tsx": (
              /*!*************************************!*\
                !*** ../../element/textWysiwyg.tsx ***!
                \*************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "getOriginalContainerHeightFromCache": () => (/* binding */ getOriginalContainerHeightFromCache),\n/* harmony export */   "resetOriginalContainerCache": () => (/* binding */ resetOriginalContainerCache),\n/* harmony export */   "textWysiwyg": () => (/* binding */ textWysiwyg),\n/* harmony export */   "updateOriginalContainerCache": () => (/* binding */ updateOriginalContainerCache)\n/* harmony export */ });\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _scene_Scene__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../scene/Scene */ "../../scene/Scene.ts");\n/* harmony import */ var _typeChecks__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _mutateElement__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./mutateElement */ "../../element/mutateElement.ts");\n/* harmony import */ var _textElement__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./textElement */ "../../element/textElement.ts");\n/* harmony import */ var _actions_actionProperties__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../actions/actionProperties */ "../../actions/actionProperties.tsx");\n/* harmony import */ var _actions_actionCanvas__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../actions/actionCanvas */ "../../actions/actionCanvas.tsx");\n/* harmony import */ var _linearElementEditor__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./linearElementEditor */ "../../element/linearElementEditor.ts");\n/* harmony import */ var _clipboard__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../clipboard */ "../../clipboard.ts");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator["throw"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst getTransform = (width, height, angle, appState, maxWidth, maxHeight) => {\n  const {\n    zoom\n  } = appState;\n  const degree = 180 * angle / Math.PI;\n  let translateX = width * (zoom.value - 1) / 2;\n  let translateY = height * (zoom.value - 1) / 2;\n\n  if (width > maxWidth && zoom.value !== 1) {\n    translateX = maxWidth * (zoom.value - 1) / 2;\n  }\n\n  if (height > maxHeight && zoom.value !== 1) {\n    translateY = maxHeight * (zoom.value - 1) / 2;\n  }\n\n  return `translate(${translateX}px, ${translateY}px) scale(${zoom.value}) rotate(${degree}deg)`;\n};\n\nconst originalContainerCache = {};\nconst updateOriginalContainerCache = (id, height) => {\n  const data = originalContainerCache[id] || (originalContainerCache[id] = {\n    height\n  });\n  data.height = height;\n  return data;\n};\nconst resetOriginalContainerCache = id => {\n  if (originalContainerCache[id]) {\n    delete originalContainerCache[id];\n  }\n};\nconst getOriginalContainerHeightFromCache = id => {\n  var _a, _b;\n\n  return (_b = (_a = originalContainerCache[id]) === null || _a === void 0 ? void 0 : _a.height) !== null && _b !== void 0 ? _b : null;\n};\nconst textWysiwyg = ({\n  id,\n  onChange,\n  onSubmit,\n  getViewportCoords,\n  element,\n  canvas,\n  excalidrawContainer,\n  app\n}) => {\n  const textPropertiesUpdated = (updatedTextElement, editable) => {\n    if (!editable.style.fontFamily || !editable.style.fontSize) {\n      return false;\n    }\n\n    const currentFont = editable.style.fontFamily.replace(/"/g, "");\n\n    if ((0,_utils__WEBPACK_IMPORTED_MODULE_1__.getFontFamilyString)({\n      fontFamily: updatedTextElement.fontFamily\n    }) !== currentFont) {\n      return true;\n    }\n\n    if (`${updatedTextElement.fontSize}px` !== editable.style.fontSize) {\n      return true;\n    }\n\n    return false;\n  };\n\n  const updateWysiwygStyle = () => {\n    var _a;\n\n    const appState = app.state;\n    const updatedTextElement = (_a = _scene_Scene__WEBPACK_IMPORTED_MODULE_2__["default"].getScene(element)) === null || _a === void 0 ? void 0 : _a.getElement(id);\n\n    if (!updatedTextElement) {\n      return;\n    }\n\n    const {\n      textAlign,\n      verticalAlign\n    } = updatedTextElement;\n\n    if (updatedTextElement && (0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isTextElement)(updatedTextElement)) {\n      let coordX = updatedTextElement.x;\n      let coordY = updatedTextElement.y;\n      const container = (0,_textElement__WEBPACK_IMPORTED_MODULE_6__.getContainerElement)(updatedTextElement);\n      let maxWidth = updatedTextElement.width;\n      let maxHeight = updatedTextElement.height;\n      let textElementWidth = updatedTextElement.width; // Set to element height by default since that\'s\n      // what is going to be used for unbounded text\n\n      const textElementHeight = updatedTextElement.height;\n\n      if (container && updatedTextElement.containerId) {\n        if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isArrowElement)(container)) {\n          const boundTextCoords = _linearElementEditor__WEBPACK_IMPORTED_MODULE_9__.LinearElementEditor.getBoundTextElementPosition(container, updatedTextElement);\n          coordX = boundTextCoords.x;\n          coordY = boundTextCoords.y;\n        }\n\n        const propertiesUpdated = textPropertiesUpdated(updatedTextElement, editable);\n        let originalContainerData;\n\n        if (propertiesUpdated) {\n          originalContainerData = updateOriginalContainerCache(container.id, container.height);\n        } else {\n          originalContainerData = originalContainerCache[container.id];\n\n          if (!originalContainerData) {\n            originalContainerData = updateOriginalContainerCache(container.id, container.height);\n          }\n        }\n\n        maxWidth = (0,_textElement__WEBPACK_IMPORTED_MODULE_6__.getBoundTextMaxWidth)(container);\n        maxHeight = (0,_textElement__WEBPACK_IMPORTED_MODULE_6__.getBoundTextMaxHeight)(container, updatedTextElement); // autogrow container height if text exceeds\n\n        if (!(0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isArrowElement)(container) && textElementHeight > maxHeight) {\n          const targetContainerHeight = (0,_textElement__WEBPACK_IMPORTED_MODULE_6__.computeContainerDimensionForBoundText)(textElementHeight, container.type);\n          (0,_mutateElement__WEBPACK_IMPORTED_MODULE_5__.mutateElement)(container, {\n            height: targetContainerHeight\n          });\n          return;\n        } else if ( // autoshrink container height until original container height\n        // is reached when text is removed\n        !(0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isArrowElement)(container) && container.height > originalContainerData.height && textElementHeight < maxHeight) {\n          const targetContainerHeight = (0,_textElement__WEBPACK_IMPORTED_MODULE_6__.computeContainerDimensionForBoundText)(textElementHeight, container.type);\n          (0,_mutateElement__WEBPACK_IMPORTED_MODULE_5__.mutateElement)(container, {\n            height: targetContainerHeight\n          });\n        } else {\n          const {\n            y\n          } = (0,_textElement__WEBPACK_IMPORTED_MODULE_6__.computeBoundTextPosition)(container, updatedTextElement);\n          coordY = y;\n        }\n      }\n\n      const [viewportX, viewportY] = getViewportCoords(coordX, coordY);\n      const initialSelectionStart = editable.selectionStart;\n      const initialSelectionEnd = editable.selectionEnd;\n      const initialLength = editable.value.length; // restore cursor position after value updated so it doesn\'t\n      // go to the end of text when container auto expanded\n\n      if (initialSelectionStart === initialSelectionEnd && initialSelectionEnd !== initialLength) {\n        // get diff between length and selection end and shift\n        // the cursor by "diff" times to position correctly\n        const diff = initialLength - initialSelectionEnd;\n        editable.selectionStart = editable.value.length - diff;\n        editable.selectionEnd = editable.value.length - diff;\n      }\n\n      if (!container) {\n        maxWidth = (appState.width - 8 - viewportX) / appState.zoom.value;\n        textElementWidth = Math.min(textElementWidth, maxWidth);\n      } else {\n        textElementWidth += 0.5;\n      }\n\n      let lineHeight = updatedTextElement.lineHeight; // In Safari the font size gets rounded off when rendering hence calculating the line height by rounding off font size\n\n      if (_constants__WEBPACK_IMPORTED_MODULE_4__.isSafari) {\n        lineHeight = (0,_textElement__WEBPACK_IMPORTED_MODULE_6__.detectLineHeight)(Object.assign(Object.assign({}, updatedTextElement), {\n          fontSize: Math.round(updatedTextElement.fontSize)\n        }));\n      } // Make sure text editor height doesn\'t go beyond viewport\n\n\n      const editorMaxHeight = (appState.height - viewportY) / appState.zoom.value;\n      Object.assign(editable.style, {\n        font: (0,_utils__WEBPACK_IMPORTED_MODULE_1__.getFontString)(updatedTextElement),\n        // must be defined *after* font \xAF\\_(\u30C4)_/\xAF\n        lineHeight,\n        width: `${textElementWidth}px`,\n        height: `${textElementHeight}px`,\n        left: `${viewportX}px`,\n        top: `${viewportY}px`,\n        transform: getTransform(textElementWidth, textElementHeight, (0,_textElement__WEBPACK_IMPORTED_MODULE_6__.getTextElementAngle)(updatedTextElement), appState, maxWidth, editorMaxHeight),\n        textAlign,\n        verticalAlign,\n        color: updatedTextElement.strokeColor,\n        opacity: updatedTextElement.opacity / 100,\n        filter: "var(--theme-filter)",\n        maxHeight: `${editorMaxHeight}px`\n      });\n      editable.scrollTop = 0; // For some reason updating font attribute doesn\'t set font family\n      // hence updating font family explicitly for test environment\n\n      if ((0,_utils__WEBPACK_IMPORTED_MODULE_1__.isTestEnv)()) {\n        editable.style.fontFamily = (0,_utils__WEBPACK_IMPORTED_MODULE_1__.getFontFamilyString)(updatedTextElement);\n      }\n\n      (0,_mutateElement__WEBPACK_IMPORTED_MODULE_5__.mutateElement)(updatedTextElement, {\n        x: coordX,\n        y: coordY\n      });\n    }\n  };\n\n  const editable = document.createElement("textarea");\n  editable.dir = "auto";\n  editable.tabIndex = 0;\n  editable.dataset.type = "wysiwyg"; // prevent line wrapping on Safari\n\n  editable.wrap = "off";\n  editable.classList.add("excalidraw-wysiwyg");\n  let whiteSpace = "pre";\n  let wordBreak = "normal";\n\n  if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isBoundToContainer)(element)) {\n    whiteSpace = "pre-wrap";\n    wordBreak = "break-word";\n  }\n\n  Object.assign(editable.style, {\n    position: "absolute",\n    display: "inline-block",\n    minHeight: "1em",\n    backfaceVisibility: "hidden",\n    margin: 0,\n    padding: 0,\n    border: 0,\n    outline: 0,\n    resize: "none",\n    background: "transparent",\n    overflow: "hidden",\n    // must be specified because in dark mode canvas creates a stacking context\n    zIndex: "var(--zIndex-wysiwyg)",\n    wordBreak,\n    // prevent line wrapping (`whitespace: nowrap` doesn\'t work on FF)\n    whiteSpace,\n    overflowWrap: "break-word",\n    boxSizing: "content-box"\n  });\n  editable.value = element.originalText;\n  updateWysiwygStyle();\n\n  if (onChange) {\n    editable.onpaste = event => __awaiter(void 0, void 0, void 0, function* () {\n      const clipboardData = yield (0,_clipboard__WEBPACK_IMPORTED_MODULE_10__.parseClipboard)(event, true);\n\n      if (!clipboardData.text) {\n        return;\n      }\n\n      const data = (0,_textElement__WEBPACK_IMPORTED_MODULE_6__.normalizeText)(clipboardData.text);\n\n      if (!data) {\n        return;\n      }\n\n      const container = (0,_textElement__WEBPACK_IMPORTED_MODULE_6__.getContainerElement)(element);\n      const font = (0,_utils__WEBPACK_IMPORTED_MODULE_1__.getFontString)({\n        fontSize: app.state.currentItemFontSize,\n        fontFamily: app.state.currentItemFontFamily\n      });\n\n      if (container) {\n        const wrappedText = (0,_textElement__WEBPACK_IMPORTED_MODULE_6__.wrapText)(`${editable.value}${data}`, font, (0,_textElement__WEBPACK_IMPORTED_MODULE_6__.getBoundTextMaxWidth)(container));\n        const width = (0,_textElement__WEBPACK_IMPORTED_MODULE_6__.getTextWidth)(wrappedText, font);\n        editable.style.width = `${width}px`;\n      }\n    });\n\n    editable.oninput = () => {\n      onChange((0,_textElement__WEBPACK_IMPORTED_MODULE_6__.normalizeText)(editable.value));\n    };\n  }\n\n  editable.onkeydown = event => {\n    if (!event.shiftKey && _actions_actionCanvas__WEBPACK_IMPORTED_MODULE_8__.actionZoomIn.keyTest(event)) {\n      event.preventDefault();\n      app.actionManager.executeAction(_actions_actionCanvas__WEBPACK_IMPORTED_MODULE_8__.actionZoomIn);\n      updateWysiwygStyle();\n    } else if (!event.shiftKey && _actions_actionCanvas__WEBPACK_IMPORTED_MODULE_8__.actionZoomOut.keyTest(event)) {\n      event.preventDefault();\n      app.actionManager.executeAction(_actions_actionCanvas__WEBPACK_IMPORTED_MODULE_8__.actionZoomOut);\n      updateWysiwygStyle();\n    } else if (_actions_actionProperties__WEBPACK_IMPORTED_MODULE_7__.actionDecreaseFontSize.keyTest(event)) {\n      app.actionManager.executeAction(_actions_actionProperties__WEBPACK_IMPORTED_MODULE_7__.actionDecreaseFontSize);\n    } else if (_actions_actionProperties__WEBPACK_IMPORTED_MODULE_7__.actionIncreaseFontSize.keyTest(event)) {\n      app.actionManager.executeAction(_actions_actionProperties__WEBPACK_IMPORTED_MODULE_7__.actionIncreaseFontSize);\n    } else if (event.key === _keys__WEBPACK_IMPORTED_MODULE_0__.KEYS.ESCAPE) {\n      event.preventDefault();\n      submittedViaKeyboard = true;\n      handleSubmit();\n    } else if (event.key === _keys__WEBPACK_IMPORTED_MODULE_0__.KEYS.ENTER && event[_keys__WEBPACK_IMPORTED_MODULE_0__.KEYS.CTRL_OR_CMD]) {\n      event.preventDefault();\n\n      if (event.isComposing || event.keyCode === 229) {\n        return;\n      }\n\n      submittedViaKeyboard = true;\n      handleSubmit();\n    } else if (event.key === _keys__WEBPACK_IMPORTED_MODULE_0__.KEYS.TAB || event[_keys__WEBPACK_IMPORTED_MODULE_0__.KEYS.CTRL_OR_CMD] && (event.code === _keys__WEBPACK_IMPORTED_MODULE_0__.CODES.BRACKET_LEFT || event.code === _keys__WEBPACK_IMPORTED_MODULE_0__.CODES.BRACKET_RIGHT)) {\n      event.preventDefault();\n\n      if (event.isComposing) {\n        return;\n      } else if (event.shiftKey || event.code === _keys__WEBPACK_IMPORTED_MODULE_0__.CODES.BRACKET_LEFT) {\n        outdent();\n      } else {\n        indent();\n      } // We must send an input event to resize the element\n\n\n      editable.dispatchEvent(new Event("input"));\n    }\n  };\n\n  const TAB_SIZE = 4;\n  const TAB = " ".repeat(TAB_SIZE);\n  const RE_LEADING_TAB = new RegExp(`^ {1,${TAB_SIZE}}`);\n\n  const indent = () => {\n    const {\n      selectionStart,\n      selectionEnd\n    } = editable;\n    const linesStartIndices = getSelectedLinesStartIndices();\n    let value = editable.value;\n    linesStartIndices.forEach(startIndex => {\n      const startValue = value.slice(0, startIndex);\n      const endValue = value.slice(startIndex);\n      value = `${startValue}${TAB}${endValue}`;\n    });\n    editable.value = value;\n    editable.selectionStart = selectionStart + TAB_SIZE;\n    editable.selectionEnd = selectionEnd + TAB_SIZE * linesStartIndices.length;\n  };\n\n  const outdent = () => {\n    const {\n      selectionStart,\n      selectionEnd\n    } = editable;\n    const linesStartIndices = getSelectedLinesStartIndices();\n    const removedTabs = [];\n    let value = editable.value;\n    linesStartIndices.forEach(startIndex => {\n      const tabMatch = value.slice(startIndex, startIndex + TAB_SIZE).match(RE_LEADING_TAB);\n\n      if (tabMatch) {\n        const startValue = value.slice(0, startIndex);\n        const endValue = value.slice(startIndex + tabMatch[0].length); // Delete a tab from the line\n\n        value = `${startValue}${endValue}`;\n        removedTabs.push(startIndex);\n      }\n    });\n    editable.value = value;\n\n    if (removedTabs.length) {\n      if (selectionStart > removedTabs[removedTabs.length - 1]) {\n        editable.selectionStart = Math.max(selectionStart - TAB_SIZE, removedTabs[removedTabs.length - 1]);\n      } else {\n        // If the cursor is before the first tab removed, ex:\n        // Line| #1\n        //     Line #2\n        // Lin|e #3\n        // we should reset the selectionStart to his initial value.\n        editable.selectionStart = selectionStart;\n      }\n\n      editable.selectionEnd = Math.max(editable.selectionStart, selectionEnd - TAB_SIZE * removedTabs.length);\n    }\n  };\n  /**\n   * @returns indices of start positions of selected lines, in reverse order\n   */\n\n\n  const getSelectedLinesStartIndices = () => {\n    let {\n      selectionStart,\n      selectionEnd,\n      value\n    } = editable; // chars before selectionStart on the same line\n\n    const startOffset = value.slice(0, selectionStart).match(/[^\\n]*$/)[0].length; // put caret at the start of the line\n\n    selectionStart = selectionStart - startOffset;\n    const selected = value.slice(selectionStart, selectionEnd);\n    return selected.split("\\n").reduce((startIndices, line, idx, lines) => startIndices.concat(idx ? // curr line index is prev line\'s start + prev line\'s length + \\n\n    startIndices[idx - 1] + lines[idx - 1].length + 1 : // first selected line\n    selectionStart), []).reverse();\n  };\n\n  const stopEvent = event => {\n    event.preventDefault();\n    event.stopPropagation();\n  }; // using a state variable instead of passing it to the handleSubmit callback\n  // so that we don\'t need to create separate a callback for event handlers\n\n\n  let submittedViaKeyboard = false;\n\n  const handleSubmit = () => {\n    var _a, _b; // cleanup must be run before onSubmit otherwise when app blurs the wysiwyg\n    // it\'d get stuck in an infinite loop of blur\u2192onSubmit after we re-focus the\n    // wysiwyg on update\n\n\n    cleanup();\n    const updateElement = (_a = _scene_Scene__WEBPACK_IMPORTED_MODULE_2__["default"].getScene(element)) === null || _a === void 0 ? void 0 : _a.getElement(element.id);\n\n    if (!updateElement) {\n      return;\n    }\n\n    let text = editable.value;\n    const container = (0,_textElement__WEBPACK_IMPORTED_MODULE_6__.getContainerElement)(updateElement);\n\n    if (container) {\n      text = updateElement.text;\n\n      if (editable.value.trim()) {\n        const boundTextElementId = (0,_textElement__WEBPACK_IMPORTED_MODULE_6__.getBoundTextElementId)(container);\n\n        if (!boundTextElementId || boundTextElementId !== element.id) {\n          (0,_mutateElement__WEBPACK_IMPORTED_MODULE_5__.mutateElement)(container, {\n            boundElements: (container.boundElements || []).concat({\n              type: "text",\n              id: element.id\n            })\n          });\n        } else if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isArrowElement)(container)) {\n          // updating an arrow label may change bounds, prevent stale cache:\n          (0,_mutateElement__WEBPACK_IMPORTED_MODULE_5__.bumpVersion)(container);\n        }\n      } else {\n        (0,_mutateElement__WEBPACK_IMPORTED_MODULE_5__.mutateElement)(container, {\n          boundElements: (_b = container.boundElements) === null || _b === void 0 ? void 0 : _b.filter(ele => !(0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isTextElement)(ele))\n        });\n      }\n\n      (0,_textElement__WEBPACK_IMPORTED_MODULE_6__.redrawTextBoundingBox)(updateElement, container);\n    }\n\n    onSubmit({\n      text,\n      viaKeyboard: submittedViaKeyboard,\n      originalText: editable.value\n    });\n  };\n\n  const cleanup = () => {\n    if (isDestroyed) {\n      return;\n    }\n\n    isDestroyed = true; // remove events to ensure they don\'t late-fire\n\n    editable.onblur = null;\n    editable.oninput = null;\n    editable.onkeydown = null;\n\n    if (observer) {\n      observer.disconnect();\n    }\n\n    window.removeEventListener("resize", updateWysiwygStyle);\n    window.removeEventListener("wheel", stopEvent, true);\n    window.removeEventListener("pointerdown", onPointerDown);\n    window.removeEventListener("pointerup", bindBlurEvent);\n    window.removeEventListener("blur", handleSubmit);\n    window.removeEventListener("beforeunload", handleSubmit);\n    unbindUpdate();\n    editable.remove();\n  };\n\n  const bindBlurEvent = event => {\n    window.removeEventListener("pointerup", bindBlurEvent); // Deferred so that the pointerdown that initiates the wysiwyg doesn\'t\n    // trigger the blur on ensuing pointerup.\n    // Also to handle cases such as picking a color which would trigger a blur\n    // in that same tick.\n\n    const target = event === null || event === void 0 ? void 0 : event.target;\n    const isTargetPickerTrigger = target instanceof HTMLElement && target.classList.contains("active-color");\n    setTimeout(() => {\n      editable.onblur = handleSubmit;\n\n      if (isTargetPickerTrigger) {\n        const callback = (mutationList, observer) => {\n          const radixIsRemoved = mutationList.find(mutation => {\n            var _a;\n\n            return mutation.removedNodes.length > 0 && ((_a = mutation.removedNodes[0].dataset) === null || _a === void 0 ? void 0 : _a.radixPopperContentWrapper) !== undefined;\n          });\n\n          if (radixIsRemoved) {\n            // should work without this in theory\n            // and i think it does actually but radix probably somewhere,\n            // somehow sets the focus elsewhere\n            setTimeout(() => {\n              editable.focus();\n            });\n            observer.disconnect();\n          }\n        };\n\n        const observer = new MutationObserver(callback);\n        observer.observe(document.querySelector(".excalidraw-container"), {\n          childList: true\n        });\n      } // case: clicking on the same property \u2192 no change \u2192 no update \u2192 no focus\n\n\n      if (!isTargetPickerTrigger) {\n        editable.focus();\n      }\n    });\n  }; // prevent blur when changing properties from the menu\n\n\n  const onPointerDown = event => {\n    const isTargetPickerTrigger = event.target instanceof HTMLElement && event.target.classList.contains("active-color");\n\n    if ((event.target instanceof HTMLElement || event.target instanceof SVGElement) && event.target.closest(`.${_constants__WEBPACK_IMPORTED_MODULE_4__.CLASSES.SHAPE_ACTIONS_MENU}`) && !(0,_utils__WEBPACK_IMPORTED_MODULE_1__.isWritableElement)(event.target) || isTargetPickerTrigger) {\n      editable.onblur = null;\n      window.addEventListener("pointerup", bindBlurEvent); // handle edge-case where pointerup doesn\'t fire e.g. due to user\n      // alt-tabbing away\n\n      window.addEventListener("blur", handleSubmit);\n    }\n  }; // handle updates of textElement properties of editing element\n\n\n  const unbindUpdate = _scene_Scene__WEBPACK_IMPORTED_MODULE_2__["default"].getScene(element).addCallback(() => {\n    var _a;\n\n    updateWysiwygStyle();\n    const isColorPickerActive = !!((_a = document.activeElement) === null || _a === void 0 ? void 0 : _a.closest(".color-picker-content"));\n\n    if (!isColorPickerActive) {\n      editable.focus();\n    }\n  }); // ---------------------------------------------------------------------------\n\n  let isDestroyed = false; // select on init (focusing is done separately inside the bindBlurEvent()\n  // because we need it to happen *after* the blur event from `pointerdown`)\n\n  editable.select();\n  bindBlurEvent(); // reposition wysiwyg in case of canvas is resized. Using ResizeObserver\n  // is preferred so we catch changes from host, where window may not resize.\n\n  let observer = null;\n\n  if (canvas && "ResizeObserver" in window) {\n    observer = new window.ResizeObserver(() => {\n      updateWysiwygStyle();\n    });\n    observer.observe(canvas);\n  } else {\n    window.addEventListener("resize", updateWysiwygStyle);\n  }\n\n  window.addEventListener("pointerdown", onPointerDown);\n  window.addEventListener("wheel", stopEvent, {\n    passive: false,\n    capture: true\n  });\n  window.addEventListener("beforeunload", handleSubmit);\n  excalidrawContainer === null || excalidrawContainer === void 0 ? void 0 : excalidrawContainer.querySelector(".excalidraw-textEditorContainer").appendChild(editable);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 34832 characters]\n//# sourceURL=webpack-internal:///../../element/textWysiwyg.tsx\n');
              }
            ),
            /***/
            "../../element/transformHandles.ts": (
              /*!*****************************************!*\
                !*** ../../element/transformHandles.ts ***!
                \*****************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "OMIT_SIDES_FOR_FRAME": () => (/* binding */ OMIT_SIDES_FOR_FRAME),
/* harmony export */   "OMIT_SIDES_FOR_MULTIPLE_ELEMENTS": () => (/* binding */ OMIT_SIDES_FOR_MULTIPLE_ELEMENTS),
/* harmony export */   "getTransformHandles": () => (/* binding */ getTransformHandles),
/* harmony export */   "getTransformHandlesFromCoords": () => (/* binding */ getTransformHandlesFromCoords),
/* harmony export */   "shouldShowBoundingBox": () => (/* binding */ shouldShowBoundingBox)
/* harmony export */ });
/* harmony import */ var _bounds__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./bounds */ "../../element/bounds.ts");
/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../math */ "../../math.ts");
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! . */ "../../element/index.ts");
/* harmony import */ var _typeChecks__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./typeChecks */ "../../element/typeChecks.ts");
/* harmony import */ var _renderer_renderScene__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../renderer/renderScene */ "../../renderer/renderScene.ts");





const transformHandleSizes = {
  mouse: 8,
  pen: 16,
  touch: 28
};
const ROTATION_RESIZE_HANDLE_GAP = 16;
const OMIT_SIDES_FOR_MULTIPLE_ELEMENTS = {
  e: true,
  s: true,
  n: true,
  w: true
};
const OMIT_SIDES_FOR_FRAME = {
  e: true,
  s: true,
  n: true,
  w: true,
  rotation: true
};
const OMIT_SIDES_FOR_TEXT_ELEMENT = {
  e: true,
  s: true,
  n: true,
  w: true
};
const OMIT_SIDES_FOR_LINE_SLASH = {
  e: true,
  s: true,
  n: true,
  w: true,
  nw: true,
  se: true
};
const OMIT_SIDES_FOR_LINE_BACKSLASH = {
  e: true,
  s: true,
  n: true,
  w: true
};

const generateTransformHandle = (x, y, width, height, cx, cy, angle) => {
  const [xx, yy] = (0,_math__WEBPACK_IMPORTED_MODULE_1__.rotate)(x + width / 2, y + height / 2, cx, cy, angle);
  return [xx - width / 2, yy - height / 2, width, height];
};

const getTransformHandlesFromCoords = ([x1, y1, x2, y2, cx, cy], angle, zoom, pointerType, omitSides = {}, margin = 4) => {
  const size = transformHandleSizes[pointerType];
  const handleWidth = size / zoom.value;
  const handleHeight = size / zoom.value;
  const handleMarginX = size / zoom.value;
  const handleMarginY = size / zoom.value;
  const width = x2 - x1;
  const height = y2 - y1;
  const dashedLineMargin = margin / zoom.value;
  const centeringOffset = (size - _renderer_renderScene__WEBPACK_IMPORTED_MODULE_4__.DEFAULT_SPACING * 2) / (2 * zoom.value);
  const transformHandles = {
    nw: omitSides.nw ? undefined : generateTransformHandle(x1 - dashedLineMargin - handleMarginX + centeringOffset, y1 - dashedLineMargin - handleMarginY + centeringOffset, handleWidth, handleHeight, cx, cy, angle),
    ne: omitSides.ne ? undefined : generateTransformHandle(x2 + dashedLineMargin - centeringOffset, y1 - dashedLineMargin - handleMarginY + centeringOffset, handleWidth, handleHeight, cx, cy, angle),
    sw: omitSides.sw ? undefined : generateTransformHandle(x1 - dashedLineMargin - handleMarginX + centeringOffset, y2 + dashedLineMargin - centeringOffset, handleWidth, handleHeight, cx, cy, angle),
    se: omitSides.se ? undefined : generateTransformHandle(x2 + dashedLineMargin - centeringOffset, y2 + dashedLineMargin - centeringOffset, handleWidth, handleHeight, cx, cy, angle),
    rotation: omitSides.rotation ? undefined : generateTransformHandle(x1 + width / 2 - handleWidth / 2, y1 - dashedLineMargin - handleMarginY + centeringOffset - ROTATION_RESIZE_HANDLE_GAP / zoom.value, handleWidth, handleHeight, cx, cy, angle)
  }; // We only want to show height handles (all cardinal directions)  above a certain size
  // Note: we render using "mouse" size so we should also use "mouse" size for this check

  const minimumSizeForEightHandles = 5 * transformHandleSizes.mouse / zoom.value;

  if (Math.abs(width) > minimumSizeForEightHandles) {
    if (!omitSides.n) {
      transformHandles.n = generateTransformHandle(x1 + width / 2 - handleWidth / 2, y1 - dashedLineMargin - handleMarginY + centeringOffset, handleWidth, handleHeight, cx, cy, angle);
    }

    if (!omitSides.s) {
      transformHandles.s = generateTransformHandle(x1 + width / 2 - handleWidth / 2, y2 + dashedLineMargin - centeringOffset, handleWidth, handleHeight, cx, cy, angle);
    }
  }

  if (Math.abs(height) > minimumSizeForEightHandles) {
    if (!omitSides.w) {
      transformHandles.w = generateTransformHandle(x1 - dashedLineMargin - handleMarginX + centeringOffset, y1 + height / 2 - handleHeight / 2, handleWidth, handleHeight, cx, cy, angle);
    }

    if (!omitSides.e) {
      transformHandles.e = generateTransformHandle(x2 + dashedLineMargin - centeringOffset, y1 + height / 2 - handleHeight / 2, handleWidth, handleHeight, cx, cy, angle);
    }
  }

  return transformHandles;
};
const getTransformHandles = (element, zoom, pointerType = "mouse") => {
  // so that when locked element is selected (especially when you toggle lock
  // via keyboard) the locked element is visually distinct, indicating
  // you can't move/resize
  if (element.locked) {
    return {};
  }

  let omitSides = {};

  if (element.type === "freedraw" || (0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isLinearElement)(element)) {
    if (element.points.length === 2) {
      // only check the last point because starting point is always (0,0)
      const [, p1] = element.points;

      if (p1[0] === 0 || p1[1] === 0) {
        omitSides = OMIT_SIDES_FOR_LINE_BACKSLASH;
      } else if (p1[0] > 0 && p1[1] < 0) {
        omitSides = OMIT_SIDES_FOR_LINE_SLASH;
      } else if (p1[0] > 0 && p1[1] > 0) {
        omitSides = OMIT_SIDES_FOR_LINE_BACKSLASH;
      } else if (p1[0] < 0 && p1[1] > 0) {
        omitSides = OMIT_SIDES_FOR_LINE_SLASH;
      } else if (p1[0] < 0 && p1[1] < 0) {
        omitSides = OMIT_SIDES_FOR_LINE_BACKSLASH;
      }
    }
  } else if ((0,___WEBPACK_IMPORTED_MODULE_2__.isTextElement)(element)) {
    omitSides = OMIT_SIDES_FOR_TEXT_ELEMENT;
  } else if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isFrameElement)(element)) {
    omitSides = {
      rotation: true
    };
  }

  const dashedLineMargin = (0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isLinearElement)(element) ? _renderer_renderScene__WEBPACK_IMPORTED_MODULE_4__.DEFAULT_SPACING + 8 : _renderer_renderScene__WEBPACK_IMPORTED_MODULE_4__.DEFAULT_SPACING;
  return getTransformHandlesFromCoords((0,_bounds__WEBPACK_IMPORTED_MODULE_0__.getElementAbsoluteCoords)(element, true), element.angle, zoom, pointerType, omitSides, dashedLineMargin);
};
const shouldShowBoundingBox = (elements, appState) => {
  if (appState.editingLinearElement) {
    return false;
  }

  if (elements.length > 1) {
    return true;
  }

  const element = elements[0];

  if (!(0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isLinearElement)(element)) {
    return true;
  }

  return element.points.length > 2;
};//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 9108 characters]
//# sourceURL=webpack-internal:///../../element/transformHandles.ts
`);
              }
            ),
            /***/
            "../../element/typeChecks.ts": (
              /*!***********************************!*\
                !*** ../../element/typeChecks.ts ***!
                \***********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "canApplyRoundnessTypeToElement": () => (/* binding */ canApplyRoundnessTypeToElement),\n/* harmony export */   "getDefaultRoundnessTypeForElement": () => (/* binding */ getDefaultRoundnessTypeForElement),\n/* harmony export */   "hasBoundTextElement": () => (/* binding */ hasBoundTextElement),\n/* harmony export */   "isArrowElement": () => (/* binding */ isArrowElement),\n/* harmony export */   "isBindableElement": () => (/* binding */ isBindableElement),\n/* harmony export */   "isBindingElement": () => (/* binding */ isBindingElement),\n/* harmony export */   "isBindingElementType": () => (/* binding */ isBindingElementType),\n/* harmony export */   "isBoundToContainer": () => (/* binding */ isBoundToContainer),\n/* harmony export */   "isEmbeddableElement": () => (/* binding */ isEmbeddableElement),\n/* harmony export */   "isExcalidrawElement": () => (/* binding */ isExcalidrawElement),\n/* harmony export */   "isFrameElement": () => (/* binding */ isFrameElement),\n/* harmony export */   "isFreeDrawElement": () => (/* binding */ isFreeDrawElement),\n/* harmony export */   "isFreeDrawElementType": () => (/* binding */ isFreeDrawElementType),\n/* harmony export */   "isGenericElement": () => (/* binding */ isGenericElement),\n/* harmony export */   "isImageElement": () => (/* binding */ isImageElement),\n/* harmony export */   "isInitializedImageElement": () => (/* binding */ isInitializedImageElement),\n/* harmony export */   "isLinearElement": () => (/* binding */ isLinearElement),\n/* harmony export */   "isLinearElementType": () => (/* binding */ isLinearElementType),\n/* harmony export */   "isTextBindableContainer": () => (/* binding */ isTextBindableContainer),\n/* harmony export */   "isTextElement": () => (/* binding */ isTextElement),\n/* harmony export */   "isUsingAdaptiveRadius": () => (/* binding */ isUsingAdaptiveRadius),\n/* harmony export */   "isUsingProportionalRadius": () => (/* binding */ isUsingProportionalRadius)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n\n\nconst isGenericElement = element => {\n  return element != null && (element.type === "selection" || element.type === "rectangle" || element.type === "diamond" || element.type === "ellipse" || element.type === "embeddable");\n};\nconst isInitializedImageElement = element => {\n  return !!element && element.type === "image" && !!element.fileId;\n};\nconst isImageElement = element => {\n  return !!element && element.type === "image";\n};\nconst isEmbeddableElement = element => {\n  return !!element && element.type === "embeddable";\n};\nconst isTextElement = element => {\n  return element != null && element.type === "text";\n};\nconst isFrameElement = element => {\n  return element != null && element.type === "frame";\n};\nconst isFreeDrawElement = element => {\n  return element != null && isFreeDrawElementType(element.type);\n};\nconst isFreeDrawElementType = elementType => {\n  return elementType === "freedraw";\n};\nconst isLinearElement = element => {\n  return element != null && isLinearElementType(element.type);\n};\nconst isArrowElement = element => {\n  return element != null && element.type === "arrow";\n};\nconst isLinearElementType = elementType => {\n  return elementType === "arrow" || elementType === "line" // || elementType === "freedraw"\n  ;\n};\nconst isBindingElement = (element, includeLocked = true) => {\n  return element != null && (!element.locked || includeLocked === true) && isBindingElementType(element.type);\n};\nconst isBindingElementType = elementType => {\n  return elementType === "arrow";\n};\nconst isBindableElement = (element, includeLocked = true) => {\n  return element != null && (!element.locked || includeLocked === true) && (element.type === "rectangle" || element.type === "diamond" || element.type === "ellipse" || element.type === "image" || element.type === "embeddable" || element.type === "frame" || element.type === "text" && !element.containerId);\n};\nconst isTextBindableContainer = (element, includeLocked = true) => {\n  return element != null && (!element.locked || includeLocked === true) && (element.type === "rectangle" || element.type === "diamond" || element.type === "ellipse" || isArrowElement(element));\n};\nconst isExcalidrawElement = element => {\n  const type = element === null || element === void 0 ? void 0 : element.type;\n\n  if (!type) {\n    return false;\n  }\n\n  switch (type) {\n    case "text":\n    case "diamond":\n    case "rectangle":\n    case "embeddable":\n    case "ellipse":\n    case "arrow":\n    case "freedraw":\n    case "line":\n    case "frame":\n    case "image":\n    case "selection":\n      {\n        return true;\n      }\n\n    default:\n      {\n        (0,_utils__WEBPACK_IMPORTED_MODULE_1__.assertNever)(type, null);\n        return false;\n      }\n  }\n};\nconst hasBoundTextElement = element => {\n  var _a;\n\n  return isTextBindableContainer(element) && !!((_a = element.boundElements) === null || _a === void 0 ? void 0 : _a.some(({\n    type\n  }) => type === "text"));\n};\nconst isBoundToContainer = element => {\n  return element !== null && "containerId" in element && element.containerId !== null && isTextElement(element);\n};\nconst isUsingAdaptiveRadius = type => type === "rectangle" || type === "embeddable";\nconst isUsingProportionalRadius = type => type === "line" || type === "arrow" || type === "diamond";\nconst canApplyRoundnessTypeToElement = (roundnessType, element) => {\n  if ((roundnessType === _constants__WEBPACK_IMPORTED_MODULE_0__.ROUNDNESS.ADAPTIVE_RADIUS || // if legacy roundness, it can be applied to elements that currently\n  // use adaptive radius\n  roundnessType === _constants__WEBPACK_IMPORTED_MODULE_0__.ROUNDNESS.LEGACY) && isUsingAdaptiveRadius(element.type)) {\n    return true;\n  }\n\n  if (roundnessType === _constants__WEBPACK_IMPORTED_MODULE_0__.ROUNDNESS.PROPORTIONAL_RADIUS && isUsingProportionalRadius(element.type)) {\n    return true;\n  }\n\n  return false;\n};\nconst getDefaultRoundnessTypeForElement = element => {\n  if (isUsingProportionalRadius(element.type)) {\n    return {\n      type: _constants__WEBPACK_IMPORTED_MODULE_0__.ROUNDNESS.PROPORTIONAL_RADIUS\n    };\n  }\n\n  if (isUsingAdaptiveRadius(element.type)) {\n    return {\n      type: _constants__WEBPACK_IMPORTED_MODULE_0__.ROUNDNESS.ADAPTIVE_RADIUS\n    };\n  }\n\n  return null;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 7032 characters]\n//# sourceURL=webpack-internal:///../../element/typeChecks.ts\n');
              }
            ),
            /***/
            "../../emitter.ts": (
              /*!************************!*\
                !*** ../../emitter.ts ***!
                \************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "Emitter": () => (/* binding */ Emitter)\n/* harmony export */ });\nclass Emitter {\n  constructor(opts) {\n    var _a;\n\n    this.subscribers = [];\n    this.updateOnChangeOnly = (_a = opts === null || opts === void 0 ? void 0 : opts.updateOnChangeOnly) !== null && _a !== void 0 ? _a : false;\n    this.value = opts === null || opts === void 0 ? void 0 : opts.initialState;\n  }\n  /**\n   * Attaches subscriber\n   *\n   * @returns unsubscribe function\n   */\n\n\n  on(...handlers) {\n    const _handlers = handlers.flat().filter(item => typeof item === "function");\n\n    this.subscribers.push(..._handlers);\n    return () => this.off(_handlers);\n  }\n\n  off(...handlers) {\n    const _handlers = handlers.flat();\n\n    this.subscribers = this.subscribers.filter(handler => !_handlers.includes(handler));\n  }\n\n  trigger(...payload) {\n    if (this.updateOnChangeOnly && this.value === payload) {\n      return [];\n    }\n\n    this.value = payload;\n    return this.subscribers.map(handler => handler(...payload));\n  }\n\n  destroy() {\n    this.subscribers = [];\n    this.value = undefined;\n  }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZW1pdHRlci50cy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9lbWl0dGVyLnRzPzE2YzEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvcihvcHRzKSB7XG4gICAgdmFyIF9hO1xuXG4gICAgdGhpcy5zdWJzY3JpYmVycyA9IFtdO1xuICAgIHRoaXMudXBkYXRlT25DaGFuZ2VPbmx5ID0gKF9hID0gb3B0cyA9PT0gbnVsbCB8fCBvcHRzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRzLnVwZGF0ZU9uQ2hhbmdlT25seSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogZmFsc2U7XG4gICAgdGhpcy52YWx1ZSA9IG9wdHMgPT09IG51bGwgfHwgb3B0cyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0cy5pbml0aWFsU3RhdGU7XG4gIH1cbiAgLyoqXG4gICAqIEF0dGFjaGVzIHN1YnNjcmliZXJcbiAgICpcbiAgICogQHJldHVybnMgdW5zdWJzY3JpYmUgZnVuY3Rpb25cbiAgICovXG5cblxuICBvbiguLi5oYW5kbGVycykge1xuICAgIGNvbnN0IF9oYW5kbGVycyA9IGhhbmRsZXJzLmZsYXQoKS5maWx0ZXIoaXRlbSA9PiB0eXBlb2YgaXRlbSA9PT0gXCJmdW5jdGlvblwiKTtcblxuICAgIHRoaXMuc3Vic2NyaWJlcnMucHVzaCguLi5faGFuZGxlcnMpO1xuICAgIHJldHVybiAoKSA9PiB0aGlzLm9mZihfaGFuZGxlcnMpO1xuICB9XG5cbiAgb2ZmKC4uLmhhbmRsZXJzKSB7XG4gICAgY29uc3QgX2hhbmRsZXJzID0gaGFuZGxlcnMuZmxhdCgpO1xuXG4gICAgdGhpcy5zdWJzY3JpYmVycyA9IHRoaXMuc3Vic2NyaWJlcnMuZmlsdGVyKGhhbmRsZXIgPT4gIV9oYW5kbGVycy5pbmNsdWRlcyhoYW5kbGVyKSk7XG4gIH1cblxuICB0cmlnZ2VyKC4uLnBheWxvYWQpIHtcbiAgICBpZiAodGhpcy51cGRhdGVPbkNoYW5nZU9ubHkgJiYgdGhpcy52YWx1ZSA9PT0gcGF5bG9hZCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIHRoaXMudmFsdWUgPSBwYXlsb2FkO1xuICAgIHJldHVybiB0aGlzLnN1YnNjcmliZXJzLm1hcChoYW5kbGVyID0+IGhhbmRsZXIoLi4ucGF5bG9hZCkpO1xuICB9XG5cbiAgZGVzdHJveSgpIHtcbiAgICB0aGlzLnN1YnNjcmliZXJzID0gW107XG4gICAgdGhpcy52YWx1ZSA9IHVuZGVmaW5lZDtcbiAgfVxuXG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../emitter.ts\n');
              }
            ),
            /***/
            "../../errors.ts": (
              /*!***********************!*\
                !*** ../../errors.ts ***!
                \***********************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "AbortError": () => (/* binding */ AbortError),
/* harmony export */   "CanvasError": () => (/* binding */ CanvasError),
/* harmony export */   "ImageSceneDataError": () => (/* binding */ ImageSceneDataError)
/* harmony export */ });
class CanvasError extends Error {
  constructor(message = "Couldn't export canvas.", name = "CANVAS_ERROR") {
    super();
    this.name = name;
    this.message = message;
  }

}
class AbortError extends DOMException {
  constructor(message = "Request Aborted") {
    super(message, "AbortError");
  }

}
class ImageSceneDataError extends Error {
  constructor(message = "Image Scene Data Error", code = "IMAGE_SCENE_DATA_ERROR") {
    super(message);
    this.name = "EncodingError";
    this.code = code;
  }

}//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZXJyb3JzLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2Vycm9ycy50cz80OTg2Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBDYW52YXNFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZSA9IFwiQ291bGRuJ3QgZXhwb3J0IGNhbnZhcy5cIiwgbmFtZSA9IFwiQ0FOVkFTX0VSUk9SXCIpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZTtcbiAgfVxuXG59XG5leHBvcnQgY2xhc3MgQWJvcnRFcnJvciBleHRlbmRzIERPTUV4Y2VwdGlvbiB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2UgPSBcIlJlcXVlc3QgQWJvcnRlZFwiKSB7XG4gICAgc3VwZXIobWVzc2FnZSwgXCJBYm9ydEVycm9yXCIpO1xuICB9XG5cbn1cbmV4cG9ydCBjbGFzcyBJbWFnZVNjZW5lRGF0YUVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlID0gXCJJbWFnZSBTY2VuZSBEYXRhIEVycm9yXCIsIGNvZGUgPSBcIklNQUdFX1NDRU5FX0RBVEFfRVJST1JcIikge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubmFtZSA9IFwiRW5jb2RpbmdFcnJvclwiO1xuICAgIHRoaXMuY29kZSA9IGNvZGU7XG4gIH1cblxufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==
//# sourceURL=webpack-internal:///../../errors.ts
`);
              }
            ),
            /***/
            "../../frame.ts": (
              /*!**********************!*\
                !*** ../../frame.ts ***!
                \**********************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "addElementsToFrame": () => (/* binding */ addElementsToFrame),
/* harmony export */   "bindElementsToFramesAfterDuplication": () => (/* binding */ bindElementsToFramesAfterDuplication),
/* harmony export */   "elementOverlapsWithFrame": () => (/* binding */ elementOverlapsWithFrame),
/* harmony export */   "elementsAreInFrameBounds": () => (/* binding */ elementsAreInFrameBounds),
/* harmony export */   "getContainingFrame": () => (/* binding */ getContainingFrame),
/* harmony export */   "getElementsCompletelyInFrame": () => (/* binding */ getElementsCompletelyInFrame),
/* harmony export */   "getElementsInNewFrame": () => (/* binding */ getElementsInNewFrame),
/* harmony export */   "getElementsInResizingFrame": () => (/* binding */ getElementsInResizingFrame),
/* harmony export */   "getElementsIntersectingFrame": () => (/* binding */ getElementsIntersectingFrame),
/* harmony export */   "getFrameChildren": () => (/* binding */ getFrameChildren),
/* harmony export */   "getFrameElements": () => (/* binding */ getFrameElements),
/* harmony export */   "getRootElements": () => (/* binding */ getRootElements),
/* harmony export */   "getTargetFrame": () => (/* binding */ getTargetFrame),
/* harmony export */   "groupByFrames": () => (/* binding */ groupByFrames),
/* harmony export */   "groupsAreAtLeastIntersectingTheFrame": () => (/* binding */ groupsAreAtLeastIntersectingTheFrame),
/* harmony export */   "groupsAreCompletelyOutOfFrame": () => (/* binding */ groupsAreCompletelyOutOfFrame),
/* harmony export */   "isCursorInFrame": () => (/* binding */ isCursorInFrame),
/* harmony export */   "isElementContainingFrame": () => (/* binding */ isElementContainingFrame),
/* harmony export */   "isElementInFrame": () => (/* binding */ isElementInFrame),
/* harmony export */   "isElementIntersectingFrame": () => (/* binding */ isElementIntersectingFrame),
/* harmony export */   "omitGroupsContainingFrames": () => (/* binding */ omitGroupsContainingFrames),
/* harmony export */   "removeAllElementsFromFrame": () => (/* binding */ removeAllElementsFromFrame),
/* harmony export */   "removeElementsFromFrame": () => (/* binding */ removeElementsFromFrame),
/* harmony export */   "replaceAllElementsInFrame": () => (/* binding */ replaceAllElementsInFrame),
/* harmony export */   "updateFrameMembershipOfSelectedElements": () => (/* binding */ updateFrameMembershipOfSelectedElements)
/* harmony export */ });
/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./element */ "../../element/index.ts");
/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./math */ "../../math.ts");
/* harmony import */ var _element_textElement__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./element/textElement */ "../../element/textElement.ts");
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils */ "../../utils.ts");
/* harmony import */ var _element_mutateElement__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./element/mutateElement */ "../../element/mutateElement.ts");
/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./scene */ "../../scene/index.ts");
/* harmony import */ var _groups__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./groups */ "../../groups.ts");
/* harmony import */ var _scene_Scene__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./scene/Scene */ "../../scene/Scene.ts");
/* harmony import */ var _element_bounds__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./element/bounds */ "../../element/bounds.ts");
/* harmony import */ var _packages_utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./packages/utils */ "../utils.ts");










 // --------------------------- Frame State ------------------------------------

const bindElementsToFramesAfterDuplication = (nextElements, oldElements, oldIdToDuplicatedId) => {
  const nextElementMap = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.arrayToMap)(nextElements);

  for (const element of oldElements) {
    if (element.frameId) {
      // use its frameId to get the new frameId
      const nextElementId = oldIdToDuplicatedId.get(element.id);
      const nextFrameId = oldIdToDuplicatedId.get(element.frameId);

      if (nextElementId) {
        const nextElement = nextElementMap.get(nextElementId);

        if (nextElement) {
          (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_4__.mutateElement)(nextElement, {
            frameId: nextFrameId !== null && nextFrameId !== void 0 ? nextFrameId : element.frameId
          }, false);
        }
      }
    }
  }
};
function isElementIntersectingFrame(element, frame) {
  const frameLineSegments = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_8__.getElementLineSegments)(frame);
  const elementLineSegments = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_8__.getElementLineSegments)(element);
  const intersecting = frameLineSegments.some(frameLineSegment => elementLineSegments.some(elementLineSegment => (0,_packages_utils__WEBPACK_IMPORTED_MODULE_9__.doLineSegmentsIntersect)(frameLineSegment, elementLineSegment)));
  return intersecting;
}
const getElementsCompletelyInFrame = (elements, frame) => omitGroupsContainingFrames((0,_scene__WEBPACK_IMPORTED_MODULE_5__.getElementsWithinSelection)(elements, frame, false)).filter(element => element.type !== "frame" && !element.frameId || element.frameId === frame.id);
const isElementContainingFrame = (elements, element, frame) => {
  return (0,_scene__WEBPACK_IMPORTED_MODULE_5__.getElementsWithinSelection)(elements, element).some(e => e.id === frame.id);
};
const getElementsIntersectingFrame = (elements, frame) => elements.filter(element => isElementIntersectingFrame(element, frame));
const elementsAreInFrameBounds = (elements, frame) => {
  const [selectionX1, selectionY1, selectionX2, selectionY2] = (0,_element__WEBPACK_IMPORTED_MODULE_0__.getElementAbsoluteCoords)(frame);
  const [elementX1, elementY1, elementX2, elementY2] = (0,_element__WEBPACK_IMPORTED_MODULE_0__.getCommonBounds)(elements);
  return selectionX1 <= elementX1 && selectionY1 <= elementY1 && selectionX2 >= elementX2 && selectionY2 >= elementY2;
};
const elementOverlapsWithFrame = (element, frame) => {
  return elementsAreInFrameBounds([element], frame) || isElementIntersectingFrame(element, frame) || isElementContainingFrame([frame], element, frame);
};
const isCursorInFrame = (cursorCoords, frame) => {
  const [fx1, fy1, fx2, fy2] = (0,_element__WEBPACK_IMPORTED_MODULE_0__.getElementAbsoluteCoords)(frame);
  return (0,_math__WEBPACK_IMPORTED_MODULE_1__.isPointWithinBounds)([fx1, fy1], [cursorCoords.x, cursorCoords.y], [fx2, fy2]);
};
const groupsAreAtLeastIntersectingTheFrame = (elements, groupIds, frame) => {
  const elementsInGroup = groupIds.flatMap(groupId => (0,_groups__WEBPACK_IMPORTED_MODULE_6__.getElementsInGroup)(elements, groupId));

  if (elementsInGroup.length === 0) {
    return true;
  }

  return !!elementsInGroup.find(element => elementsAreInFrameBounds([element], frame) || isElementIntersectingFrame(element, frame));
};
const groupsAreCompletelyOutOfFrame = (elements, groupIds, frame) => {
  const elementsInGroup = groupIds.flatMap(groupId => (0,_groups__WEBPACK_IMPORTED_MODULE_6__.getElementsInGroup)(elements, groupId));

  if (elementsInGroup.length === 0) {
    return true;
  }

  return elementsInGroup.find(element => elementsAreInFrameBounds([element], frame) || isElementIntersectingFrame(element, frame)) === undefined;
}; // --------------------------- Frame Utils ------------------------------------

/**
 * Returns a map of frameId to frame elements. Includes empty frames.
 */

const groupByFrames = elements => {
  const frameElementsMap = new Map();

  for (const element of elements) {
    const frameId = (0,_element__WEBPACK_IMPORTED_MODULE_0__.isFrameElement)(element) ? element.id : element.frameId;

    if (frameId && !frameElementsMap.has(frameId)) {
      frameElementsMap.set(frameId, getFrameChildren(elements, frameId));
    }
  }

  return frameElementsMap;
};
const getFrameChildren = (allElements, frameId) => allElements.filter(element => element.frameId === frameId);
const getFrameElements = allElements => {
  return allElements.filter(element => (0,_element__WEBPACK_IMPORTED_MODULE_0__.isFrameElement)(element));
};
/**
 * Returns ExcalidrawFrameElements and non-frame-children elements.
 *
 * Considers children as root elements if they point to a frame parent
 * non-existing in the elements set.
 *
 * Considers non-frame bound elements (container or arrow labels) as root.
 */

const getRootElements = allElements => {
  const frameElements = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.arrayToMap)(getFrameElements(allElements));
  return allElements.filter(element => frameElements.has(element.id) || !element.frameId || !frameElements.has(element.frameId));
};
const getElementsInResizingFrame = (allElements, frame, appState) => {
  const prevElementsInFrame = getFrameChildren(allElements, frame.id);
  const nextElementsInFrame = new Set(prevElementsInFrame);
  const elementsCompletelyInFrame = new Set([...getElementsCompletelyInFrame(allElements, frame), ...prevElementsInFrame.filter(element => isElementContainingFrame(allElements, element, frame))]);
  const elementsNotCompletelyInFrame = prevElementsInFrame.filter(element => !elementsCompletelyInFrame.has(element)); // for elements that are completely in the frame
  // if they are part of some groups, then those groups are still
  // considered to belong to the frame

  const groupsToKeep = new Set(Array.from(elementsCompletelyInFrame).flatMap(element => element.groupIds));

  for (const element of elementsNotCompletelyInFrame) {
    if (!isElementIntersectingFrame(element, frame)) {
      if (element.groupIds.length === 0) {
        nextElementsInFrame.delete(element);
      }
    } else if (element.groupIds.length > 0) {
      // group element intersects with the frame, we should keep the groups
      // that this element is part of
      for (const id of element.groupIds) {
        groupsToKeep.add(id);
      }
    }
  }

  for (const element of elementsNotCompletelyInFrame) {
    if (element.groupIds.length > 0) {
      let shouldRemoveElement = true;

      for (const id of element.groupIds) {
        if (groupsToKeep.has(id)) {
          shouldRemoveElement = false;
        }
      }

      if (shouldRemoveElement) {
        nextElementsInFrame.delete(element);
      }
    }
  }

  const individualElementsCompletelyInFrame = Array.from(elementsCompletelyInFrame).filter(element => element.groupIds.length === 0);

  for (const element of individualElementsCompletelyInFrame) {
    nextElementsInFrame.add(element);
  }

  const newGroupElementsCompletelyInFrame = Array.from(elementsCompletelyInFrame).filter(element => element.groupIds.length > 0);
  const groupIds = (0,_groups__WEBPACK_IMPORTED_MODULE_6__.selectGroupsFromGivenElements)(newGroupElementsCompletelyInFrame, appState); // new group elements

  for (const [id, isSelected] of Object.entries(groupIds)) {
    if (isSelected) {
      const elementsInGroup = (0,_groups__WEBPACK_IMPORTED_MODULE_6__.getElementsInGroup)(allElements, id);

      if (elementsAreInFrameBounds(elementsInGroup, frame)) {
        for (const element of elementsInGroup) {
          nextElementsInFrame.add(element);
        }
      }
    }
  }

  return [...nextElementsInFrame].filter(element => {
    return !((0,_element__WEBPACK_IMPORTED_MODULE_0__.isTextElement)(element) && element.containerId);
  });
};
const getElementsInNewFrame = (allElements, frame) => {
  return omitGroupsContainingFrames(allElements, getElementsCompletelyInFrame(allElements, frame));
};
const getContainingFrame = (element,
/**
 * Optionally an elements map, in case the elements aren't in the Scene yet.
 * Takes precedence over Scene elements, even if the element exists
 * in Scene elements and not the supplied elements map.
 */
elementsMap) => {
  var _a;

  if (element.frameId) {
    if (elementsMap) {
      return elementsMap.get(element.frameId) || null;
    }

    return ((_a = _scene_Scene__WEBPACK_IMPORTED_MODULE_7__["default"].getScene(element)) === null || _a === void 0 ? void 0 : _a.getElement(element.frameId)) || null;
  }

  return null;
}; // --------------------------- Frame Operations -------------------------------

/**
 * Retains (or repairs for target frame) the ordering invriant where children
 * elements come right before the parent frame:
 * [el, el, child, child, frame, el]
 */

const addElementsToFrame = (allElements, elementsToAdd, frame) => {
  const {
    currTargetFrameChildrenMap
  } = allElements.reduce((acc, element, index) => {
    if (element.frameId === frame.id) {
      acc.currTargetFrameChildrenMap.set(element.id, true);
    }

    return acc;
  }, {
    currTargetFrameChildrenMap: new Map()
  });
  const suppliedElementsToAddSet = new Set(elementsToAdd.map(el => el.id));
  const finalElementsToAdd = []; // - add bound text elements if not already in the array
  // - filter out elements that are already in the frame

  for (const element of omitGroupsContainingFrames(allElements, elementsToAdd)) {
    if (!currTargetFrameChildrenMap.has(element.id)) {
      finalElementsToAdd.push(element);
    }

    const boundTextElement = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_2__.getBoundTextElement)(element);

    if (boundTextElement && !suppliedElementsToAddSet.has(boundTextElement.id) && !currTargetFrameChildrenMap.has(boundTextElement.id)) {
      finalElementsToAdd.push(boundTextElement);
    }
  }

  for (const element of finalElementsToAdd) {
    (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_4__.mutateElement)(element, {
      frameId: frame.id
    }, false);
  }

  return allElements.slice();
};
const removeElementsFromFrame = (allElements, elementsToRemove, appState) => {
  const _elementsToRemove = new Map();

  const toRemoveElementsByFrame = new Map();

  for (const element of elementsToRemove) {
    if (element.frameId) {
      _elementsToRemove.set(element.id, element);

      const arr = toRemoveElementsByFrame.get(element.frameId) || [];
      arr.push(element);
      const boundTextElement = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_2__.getBoundTextElement)(element);

      if (boundTextElement) {
        _elementsToRemove.set(boundTextElement.id, boundTextElement);

        arr.push(boundTextElement);
      }

      toRemoveElementsByFrame.set(element.frameId, arr);
    }
  }

  for (const [, element] of _elementsToRemove) {
    (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_4__.mutateElement)(element, {
      frameId: null
    }, false);
  }

  return allElements.slice();
};
const removeAllElementsFromFrame = (allElements, frame, appState) => {
  const elementsInFrame = getFrameChildren(allElements, frame.id);
  return removeElementsFromFrame(allElements, elementsInFrame, appState);
};
const replaceAllElementsInFrame = (allElements, nextElementsInFrame, frame, appState) => {
  return addElementsToFrame(removeAllElementsFromFrame(allElements, frame, appState), nextElementsInFrame, frame);
};
/** does not mutate elements, but returns new ones */

const updateFrameMembershipOfSelectedElements = (allElements, appState, app) => {
  const selectedElements = app.scene.getSelectedElements({
    selectedElementIds: appState.selectedElementIds,
    // supplying elements explicitly in case we're passed non-state elements
    elements: allElements
  });
  const elementsToFilter = new Set(selectedElements);

  if (appState.editingGroupId) {
    for (const element of selectedElements) {
      if (element.groupIds.length === 0) {
        elementsToFilter.add(element);
      } else {
        element.groupIds.flatMap(gid => (0,_groups__WEBPACK_IMPORTED_MODULE_6__.getElementsInGroup)(allElements, gid)).forEach(element => elementsToFilter.add(element));
      }
    }
  }

  const elementsToRemove = new Set();
  elementsToFilter.forEach(element => {
    if (element.frameId && !(0,_element__WEBPACK_IMPORTED_MODULE_0__.isFrameElement)(element) && !isElementInFrame(element, allElements, appState)) {
      elementsToRemove.add(element);
    }
  });
  return elementsToRemove.size > 0 ? removeElementsFromFrame(allElements, [...elementsToRemove], appState) : allElements;
};
/**
 * filters out elements that are inside groups that contain a frame element
 * anywhere in the group tree
 */

const omitGroupsContainingFrames = (allElements,
/** subset of elements you want to filter. Optional perf optimization so we
 * don't have to filter all elements unnecessarily
 */
selectedElements) => {
  const uniqueGroupIds = new Set();

  for (const el of selectedElements || allElements) {
    const topMostGroupId = el.groupIds[el.groupIds.length - 1];

    if (topMostGroupId) {
      uniqueGroupIds.add(topMostGroupId);
    }
  }

  const rejectedGroupIds = new Set();

  for (const groupId of uniqueGroupIds) {
    if ((0,_groups__WEBPACK_IMPORTED_MODULE_6__.getElementsInGroup)(allElements, groupId).some(el => (0,_element__WEBPACK_IMPORTED_MODULE_0__.isFrameElement)(el))) {
      rejectedGroupIds.add(groupId);
    }
  }

  return (selectedElements || allElements).filter(el => !rejectedGroupIds.has(el.groupIds[el.groupIds.length - 1]));
};
/**
 * depending on the appState, return target frame, which is the frame the given element
 * is going to be added to or remove from
 */

const getTargetFrame = (element, appState) => {
  const _element = (0,_element__WEBPACK_IMPORTED_MODULE_0__.isTextElement)(element) ? (0,_element_textElement__WEBPACK_IMPORTED_MODULE_2__.getContainerElement)(element) || element : element;

  return appState.selectedElementIds[_element.id] && appState.selectedElementsAreBeingDragged ? appState.frameToHighlight : getContainingFrame(_element);
}; // TODO: this a huge bottleneck for large scenes, optimise
// given an element, return if the element is in some frame

const isElementInFrame = (element, allElements, appState) => {
  const frame = getTargetFrame(element, appState);

  const _element = (0,_element__WEBPACK_IMPORTED_MODULE_0__.isTextElement)(element) ? (0,_element_textElement__WEBPACK_IMPORTED_MODULE_2__.getContainerElement)(element) || element : element;

  if (frame) {
    // Perf improvement:
    // For an element that's already in a frame, if it's not being dragged
    // then there is no need to refer to geometry (which, yes, is slow) to check if it's in a frame.
    // It has to be in its containing frame.
    if (!appState.selectedElementIds[element.id] || !appState.selectedElementsAreBeingDragged) {
      return true;
    }

    if (_element.groupIds.length === 0) {
      return elementOverlapsWithFrame(_element, frame);
    }

    const allElementsInGroup = new Set(_element.groupIds.flatMap(gid => (0,_groups__WEBPACK_IMPORTED_MODULE_6__.getElementsInGroup)(allElements, gid)));

    if (appState.editingGroupId && appState.selectedElementsAreBeingDragged) {
      const selectedElements = new Set((0,_scene__WEBPACK_IMPORTED_MODULE_5__.getSelectedElements)(allElements, appState));
      const editingGroupOverlapsFrame = appState.frameToHighlight !== null;

      if (editingGroupOverlapsFrame) {
        return true;
      }

      selectedElements.forEach(selectedElement => {
        allElementsInGroup.delete(selectedElement);
      });
    }

    for (const elementInGroup of allElementsInGroup) {
      if ((0,_element__WEBPACK_IMPORTED_MODULE_0__.isFrameElement)(elementInGroup)) {
        return false;
      }
    }

    for (const elementInGroup of allElementsInGroup) {
      if (elementOverlapsWithFrame(elementInGroup, frame)) {
        return true;
      }
    }
  }

  return false;
};//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 24240 characters]
//# sourceURL=webpack-internal:///../../frame.ts
`);
              }
            ),
            /***/
            "../../ga.ts": (
              /*!*******************!*\
                !*** ../../ga.ts ***!
                \*******************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "E0": () => (/* binding */ E0),\n/* harmony export */   "E01": () => (/* binding */ E01),\n/* harmony export */   "E012": () => (/* binding */ E012),\n/* harmony export */   "E1": () => (/* binding */ E1),\n/* harmony export */   "E12": () => (/* binding */ E12),\n/* harmony export */   "E2": () => (/* binding */ E2),\n/* harmony export */   "E20": () => (/* binding */ E20),\n/* harmony export */   "I": () => (/* binding */ I),\n/* harmony export */   "add": () => (/* binding */ add),\n/* harmony export */   "conjugate": () => (/* binding */ conjugate),\n/* harmony export */   "direction": () => (/* binding */ direction),\n/* harmony export */   "dot": () => (/* binding */ dot),\n/* harmony export */   "dual": () => (/* binding */ dual),\n/* harmony export */   "inorm": () => (/* binding */ inorm),\n/* harmony export */   "inormalized": () => (/* binding */ inormalized),\n/* harmony export */   "involute": () => (/* binding */ involute),\n/* harmony export */   "join": () => (/* binding */ join),\n/* harmony export */   "joinScalar": () => (/* binding */ joinScalar),\n/* harmony export */   "meet": () => (/* binding */ meet),\n/* harmony export */   "mul": () => (/* binding */ mul),\n/* harmony export */   "mulScalar": () => (/* binding */ mulScalar),\n/* harmony export */   "norm": () => (/* binding */ norm),\n/* harmony export */   "normalized": () => (/* binding */ normalized),\n/* harmony export */   "nvector": () => (/* binding */ nvector),\n/* harmony export */   "offset": () => (/* binding */ offset),\n/* harmony export */   "origin": () => (/* binding */ origin),\n/* harmony export */   "point": () => (/* binding */ point),\n/* harmony export */   "reverse": () => (/* binding */ reverse),\n/* harmony export */   "sub": () => (/* binding */ sub),\n/* harmony export */   "toString": () => (/* binding */ toString)\n/* harmony export */ });\n/**\n * This is a 2D Projective Geometric Algebra implementation.\n *\n * For wider context on geometric algebra visit see https://bivector.net.\n *\n * For this specific algebra see cheatsheet https://bivector.net/2DPGA.pdf.\n *\n * Converted from generator written by enki, with a ton of added on top.\n *\n * This library uses 8-vectors to represent points, directions and lines\n * in 2D space.\n *\n * An array `[a, b, c, d, e, f, g, h]` represents a n(8)vector:\n *   a + b*e0 + c*e1 + d*e2 + e*e01 + f*e20 + g*e12 + h*e012\n *\n * See GAPoint, GALine, GADirection and GATransform modules for common\n * operations.\n */\nconst point = (x, y) => [0, 0, 0, 0, y, x, 1, 0];\nconst origin = () => [0, 0, 0, 0, 0, 0, 1, 0];\nconst direction = (x, y) => {\n  const norm = Math.hypot(x, y); // same as `inorm(direction(x, y))`\n\n  return [0, 0, 0, 0, y / norm, x / norm, 0, 0];\n};\nconst offset = (x, y) => [0, 0, 0, 0, y, x, 0, 0]; // These are labels for what each number in an nvector represents\n\nconst NVECTOR_BASE = ["1", "e0", "e1", "e2", "e01", "e20", "e12", "e012"]; // Used to represent points, lines and transformations\n\nconst nvector = (value = 0, index = 0) => {\n  const result = [0, 0, 0, 0, 0, 0, 0, 0];\n\n  if (index < 0 || index > 7) {\n    throw new Error(`Expected \\`index\\` between 0 and 7, got \\`${index}\\``);\n  }\n\n  if (value !== 0) {\n    result[index] = value;\n  }\n\n  return result;\n};\nconst STRING_EPSILON = 0.000001;\nconst toString = nvector => {\n  const result = nvector.map((value, index) => Math.abs(value) > STRING_EPSILON ? value.toFixed(7).replace(/(\\.|0+)$/, "") + (index > 0 ? NVECTOR_BASE[index] : "") : null).filter(representation => representation != null).join(" + ");\n  return result === "" ? "0" : result;\n}; // Reverse the order of the basis blades.\n\nconst reverse = nvector => [nvector[0], nvector[1], nvector[2], nvector[3], -nvector[4], -nvector[5], -nvector[6], -nvector[7]]; // Poincare duality operator.\n\nconst dual = nvector => [nvector[7], nvector[6], nvector[5], nvector[4], nvector[3], nvector[2], nvector[1], nvector[0]]; // Clifford Conjugation\n\nconst conjugate = nvector => [nvector[0], -nvector[1], -nvector[2], -nvector[3], -nvector[4], -nvector[5], -nvector[6], nvector[7]]; // Main involution\n\nconst involute = nvector => [nvector[0], -nvector[1], -nvector[2], -nvector[3], nvector[4], nvector[5], nvector[6], -nvector[7]]; // Multivector addition\n\nconst add = (a, b) => {\n  if (isNumber(b)) {\n    return [a[0] + b, a[1], a[2], a[3], a[4], a[5], a[6], a[7]];\n  }\n\n  return [a[0] + b[0], a[1] + b[1], a[2] + b[2], a[3] + b[3], a[4] + b[4], a[5] + b[5], a[6] + b[6], a[7] + b[7]];\n}; // Multivector subtraction\n\nconst sub = (a, b) => {\n  if (isNumber(b)) {\n    return [a[0] - b, a[1], a[2], a[3], a[4], a[5], a[6], a[7]];\n  }\n\n  return [a[0] - b[0], a[1] - b[1], a[2] - b[2], a[3] - b[3], a[4] - b[4], a[5] - b[5], a[6] - b[6], a[7] - b[7]];\n}; // The geometric product.\n\nconst mul = (a, b) => {\n  if (isNumber(b)) {\n    return [a[0] * b, a[1] * b, a[2] * b, a[3] * b, a[4] * b, a[5] * b, a[6] * b, a[7] * b];\n  }\n\n  return [mulScalar(a, b), b[1] * a[0] + b[0] * a[1] - b[4] * a[2] + b[5] * a[3] + b[2] * a[4] - b[3] * a[5] - b[7] * a[6] - b[6] * a[7], b[2] * a[0] + b[0] * a[2] - b[6] * a[3] + b[3] * a[6], b[3] * a[0] + b[6] * a[2] + b[0] * a[3] - b[2] * a[6], b[4] * a[0] + b[2] * a[1] - b[1] * a[2] + b[7] * a[3] + b[0] * a[4] + b[6] * a[5] - b[5] * a[6] + b[3] * a[7], b[5] * a[0] - b[3] * a[1] + b[7] * a[2] + b[1] * a[3] - b[6] * a[4] + b[0] * a[5] + b[4] * a[6] + b[2] * a[7], b[6] * a[0] + b[3] * a[2] - b[2] * a[3] + b[0] * a[6], b[7] * a[0] + b[6] * a[1] + b[5] * a[2] + b[4] * a[3] + b[3] * a[4] + b[2] * a[5] + b[1] * a[6] + b[0] * a[7]];\n};\nconst mulScalar = (a, b) => b[0] * a[0] + b[2] * a[2] + b[3] * a[3] - b[6] * a[6]; // The outer/exterior/wedge product.\n\nconst meet = (a, b) => [b[0] * a[0], b[1] * a[0] + b[0] * a[1], b[2] * a[0] + b[0] * a[2], b[3] * a[0] + b[0] * a[3], b[4] * a[0] + b[2] * a[1] - b[1] * a[2] + b[0] * a[4], b[5] * a[0] - b[3] * a[1] + b[1] * a[3] + b[0] * a[5], b[6] * a[0] + b[3] * a[2] - b[2] * a[3] + b[0] * a[6], b[7] * a[0] + b[6] * a[1] + b[5] * a[2] + b[4] * a[3] + b[3] * a[4] + b[2] * a[5] + b[1] * a[6]]; // The regressive product.\n\nconst join = (a, b) => [joinScalar(a, b), a[1] * b[7] + a[4] * b[5] - a[5] * b[4] + a[7] * b[1], a[2] * b[7] - a[4] * b[6] + a[6] * b[4] + a[7] * b[2], a[3] * b[7] + a[5] * b[6] - a[6] * b[5] + a[7] * b[3], a[4] * b[7] + a[7] * b[4], a[5] * b[7] + a[7] * b[5], a[6] * b[7] + a[7] * b[6], a[7] * b[7]];\nconst joinScalar = (a, b) => a[0] * b[7] + a[1] * b[6] + a[2] * b[5] + a[3] * b[4] + a[4] * b[3] + a[5] * b[2] + a[6] * b[1] + a[7] * b[0]; // The inner product.\n\nconst dot = (a, b) => [b[0] * a[0] + b[2] * a[2] + b[3] * a[3] - b[6] * a[6], b[1] * a[0] + b[0] * a[1] - b[4] * a[2] + b[5] * a[3] + b[2] * a[4] - b[3] * a[5] - b[7] * a[6] - b[6] * a[7], b[2] * a[0] + b[0] * a[2] - b[6] * a[3] + b[3] * a[6], b[3] * a[0] + b[6] * a[2] + b[0] * a[3] - b[2] * a[6], b[4] * a[0] + b[7] * a[3] + b[0] * a[4] + b[3] * a[7], b[5] * a[0] + b[7] * a[2] + b[0] * a[5] + b[2] * a[7], b[6] * a[0] + b[0] * a[6], b[7] * a[0] + b[0] * a[7]];\nconst norm = a => Math.sqrt(Math.abs(a[0] * a[0] - a[2] * a[2] - a[3] * a[3] + a[6] * a[6]));\nconst inorm = a => Math.sqrt(Math.abs(a[7] * a[7] - a[5] * a[5] - a[4] * a[4] + a[1] * a[1]));\nconst normalized = a => {\n  const n = norm(a);\n\n  if (n === 0 || n === 1) {\n    return a;\n  }\n\n  const sign = a[6] < 0 ? -1 : 1;\n  return mul(a, sign / n);\n};\nconst inormalized = a => {\n  const n = inorm(a);\n\n  if (n === 0 || n === 1) {\n    return a;\n  }\n\n  return mul(a, 1 / n);\n};\n\nconst isNumber = a => typeof a === "number";\n\nconst E0 = nvector(1, 1);\nconst E1 = nvector(1, 2);\nconst E2 = nvector(1, 3);\nconst E01 = nvector(1, 4);\nconst E20 = nvector(1, 5);\nconst E12 = nvector(1, 6);\nconst E012 = nvector(1, 7);\nconst I = E012;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 9336 characters]\n//# sourceURL=webpack-internal:///../../ga.ts\n');
              }
            ),
            /***/
            "../../gadirections.ts": (
              /*!*****************************!*\
                !*** ../../gadirections.ts ***!
                \*****************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "from": () => (/* binding */ from),\n/* harmony export */   "fromTo": () => (/* binding */ fromTo),\n/* harmony export */   "orthogonal": () => (/* binding */ orthogonal),\n/* harmony export */   "orthogonalToLine": () => (/* binding */ orthogonalToLine)\n/* harmony export */ });\n/* harmony import */ var _ga__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ga */ "../../ga.ts");\n\n/**\n * A direction is stored as an array `[0, 0, 0, 0, y, x, 0, 0]` representing\n * vector `(x, y)`.\n */\n\nconst from = point => [0, 0, 0, 0, point[4], point[5], 0, 0];\nconst fromTo = (from, to) => _ga__WEBPACK_IMPORTED_MODULE_0__.inormalized([0, 0, 0, 0, to[4] - from[4], to[5] - from[5], 0, 0]);\nconst orthogonal = direction => _ga__WEBPACK_IMPORTED_MODULE_0__.inormalized([0, 0, 0, 0, -direction[5], direction[4], 0, 0]);\nconst orthogonalToLine = line => _ga__WEBPACK_IMPORTED_MODULE_0__.mul(line, _ga__WEBPACK_IMPORTED_MODULE_0__.I);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ2FkaXJlY3Rpb25zLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQTJCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ0EsNkJBQTZCLDRDQUFjO0FBQzNDLGdDQUFnQyw0Q0FBYztBQUM5QyxpQ0FBaUMsb0NBQU0sT0FBTyxrQ0FBSSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9nYWRpcmVjdGlvbnMudHM/NTY5NiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBHQSBmcm9tIFwiLi9nYVwiO1xuLyoqXG4gKiBBIGRpcmVjdGlvbiBpcyBzdG9yZWQgYXMgYW4gYXJyYXkgYFswLCAwLCAwLCAwLCB5LCB4LCAwLCAwXWAgcmVwcmVzZW50aW5nXG4gKiB2ZWN0b3IgYCh4LCB5KWAuXG4gKi9cblxuZXhwb3J0IGNvbnN0IGZyb20gPSBwb2ludCA9PiBbMCwgMCwgMCwgMCwgcG9pbnRbNF0sIHBvaW50WzVdLCAwLCAwXTtcbmV4cG9ydCBjb25zdCBmcm9tVG8gPSAoZnJvbSwgdG8pID0+IEdBLmlub3JtYWxpemVkKFswLCAwLCAwLCAwLCB0b1s0XSAtIGZyb21bNF0sIHRvWzVdIC0gZnJvbVs1XSwgMCwgMF0pO1xuZXhwb3J0IGNvbnN0IG9ydGhvZ29uYWwgPSBkaXJlY3Rpb24gPT4gR0EuaW5vcm1hbGl6ZWQoWzAsIDAsIDAsIDAsIC1kaXJlY3Rpb25bNV0sIGRpcmVjdGlvbls0XSwgMCwgMF0pO1xuZXhwb3J0IGNvbnN0IG9ydGhvZ29uYWxUb0xpbmUgPSBsaW5lID0+IEdBLm11bChsaW5lLCBHQS5JKTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../gadirections.ts\n');
              }
            ),
            /***/
            "../../galines.ts": (
              /*!************************!*\
                !*** ../../galines.ts ***!
                \************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "angle": () => (/* binding */ angle),\n/* harmony export */   "distance": () => (/* binding */ distance),\n/* harmony export */   "equation": () => (/* binding */ equation),\n/* harmony export */   "orthogonal": () => (/* binding */ orthogonal),\n/* harmony export */   "orthogonalThrough": () => (/* binding */ orthogonalThrough),\n/* harmony export */   "parallel": () => (/* binding */ parallel),\n/* harmony export */   "parallelThrough": () => (/* binding */ parallelThrough),\n/* harmony export */   "sign": () => (/* binding */ sign),\n/* harmony export */   "through": () => (/* binding */ through),\n/* harmony export */   "vector": () => (/* binding */ vector)\n/* harmony export */ });\n/* harmony import */ var _ga__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ga */ "../../ga.ts");\n\n/**\n * A line is stored as an array `[0, c, a, b, 0, 0, 0, 0]` representing:\n *   c * e0 + a * e1 + b*e2\n *\n * This maps to a standard formula `a * x + b * y + c`.\n *\n * `(-b, a)` corresponds to a 2D vector parallel to the line. The lines\n * have a natural orientation, corresponding to that vector.\n *\n * The magnitude ("norm") of the line is `sqrt(a ^ 2 + b ^ 2)`.\n * `c / norm(line)` is the oriented distance from line to origin.\n */\n// Returns line with direction (x, y) through origin\n\nconst vector = (x, y) => _ga__WEBPACK_IMPORTED_MODULE_0__.normalized([0, 0, -y, x, 0, 0, 0, 0]); // For equation ax + by + c = 0.\n\nconst equation = (a, b, c) => _ga__WEBPACK_IMPORTED_MODULE_0__.normalized([0, c, a, b, 0, 0, 0, 0]);\nconst through = (from, to) => _ga__WEBPACK_IMPORTED_MODULE_0__.normalized(_ga__WEBPACK_IMPORTED_MODULE_0__.join(to, from));\nconst orthogonal = (line, point) => _ga__WEBPACK_IMPORTED_MODULE_0__.dot(line, point); // Returns a line perpendicular to the line through `against` and `intersection`\n// going through `intersection`.\n\nconst orthogonalThrough = (against, intersection) => orthogonal(through(against, intersection), intersection);\nconst parallel = (line, distance) => {\n  const result = line.slice();\n  result[1] -= distance;\n  return result;\n};\nconst parallelThrough = (line, point) => orthogonal(orthogonal(point, line), point);\nconst distance = (line1, line2) => _ga__WEBPACK_IMPORTED_MODULE_0__.inorm(_ga__WEBPACK_IMPORTED_MODULE_0__.meet(line1, line2));\nconst angle = (line1, line2) => Math.acos(_ga__WEBPACK_IMPORTED_MODULE_0__.dot(line1, line2)[0]); // The orientation of the line\n\nconst sign = line => Math.sign(line[1]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ2FsaW5lcy50cy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTyx5QkFBeUIsMkNBQWEsNkJBQTZCOztBQUVuRSw4QkFBOEIsMkNBQWE7QUFDM0MsOEJBQThCLDJDQUFhLENBQUMscUNBQU87QUFDbkQsb0NBQW9DLG9DQUFNLGVBQWU7QUFDaEU7O0FBRU87QUFDQTtBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDQSxtQ0FBbUMsc0NBQVEsQ0FBQyxxQ0FBTztBQUNuRCwwQ0FBMEMsb0NBQU0sb0JBQW9COztBQUVwRSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9nYWxpbmVzLnRzPzExOGYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgR0EgZnJvbSBcIi4vZ2FcIjtcbi8qKlxuICogQSBsaW5lIGlzIHN0b3JlZCBhcyBhbiBhcnJheSBgWzAsIGMsIGEsIGIsIDAsIDAsIDAsIDBdYCByZXByZXNlbnRpbmc6XG4gKiAgIGMgKiBlMCArIGEgKiBlMSArIGIqZTJcbiAqXG4gKiBUaGlzIG1hcHMgdG8gYSBzdGFuZGFyZCBmb3JtdWxhIGBhICogeCArIGIgKiB5ICsgY2AuXG4gKlxuICogYCgtYiwgYSlgIGNvcnJlc3BvbmRzIHRvIGEgMkQgdmVjdG9yIHBhcmFsbGVsIHRvIHRoZSBsaW5lLiBUaGUgbGluZXNcbiAqIGhhdmUgYSBuYXR1cmFsIG9yaWVudGF0aW9uLCBjb3JyZXNwb25kaW5nIHRvIHRoYXQgdmVjdG9yLlxuICpcbiAqIFRoZSBtYWduaXR1ZGUgKFwibm9ybVwiKSBvZiB0aGUgbGluZSBpcyBgc3FydChhIF4gMiArIGIgXiAyKWAuXG4gKiBgYyAvIG5vcm0obGluZSlgIGlzIHRoZSBvcmllbnRlZCBkaXN0YW5jZSBmcm9tIGxpbmUgdG8gb3JpZ2luLlxuICovXG4vLyBSZXR1cm5zIGxpbmUgd2l0aCBkaXJlY3Rpb24gKHgsIHkpIHRocm91Z2ggb3JpZ2luXG5cbmV4cG9ydCBjb25zdCB2ZWN0b3IgPSAoeCwgeSkgPT4gR0Eubm9ybWFsaXplZChbMCwgMCwgLXksIHgsIDAsIDAsIDAsIDBdKTsgLy8gRm9yIGVxdWF0aW9uIGF4ICsgYnkgKyBjID0gMC5cblxuZXhwb3J0IGNvbnN0IGVxdWF0aW9uID0gKGEsIGIsIGMpID0+IEdBLm5vcm1hbGl6ZWQoWzAsIGMsIGEsIGIsIDAsIDAsIDAsIDBdKTtcbmV4cG9ydCBjb25zdCB0aHJvdWdoID0gKGZyb20sIHRvKSA9PiBHQS5ub3JtYWxpemVkKEdBLmpvaW4odG8sIGZyb20pKTtcbmV4cG9ydCBjb25zdCBvcnRob2dvbmFsID0gKGxpbmUsIHBvaW50KSA9PiBHQS5kb3QobGluZSwgcG9pbnQpOyAvLyBSZXR1cm5zIGEgbGluZSBwZXJwZW5kaWN1bGFyIHRvIHRoZSBsaW5lIHRocm91Z2ggYGFnYWluc3RgIGFuZCBgaW50ZXJzZWN0aW9uYFxuLy8gZ29pbmcgdGhyb3VnaCBgaW50ZXJzZWN0aW9uYC5cblxuZXhwb3J0IGNvbnN0IG9ydGhvZ29uYWxUaHJvdWdoID0gKGFnYWluc3QsIGludGVyc2VjdGlvbikgPT4gb3J0aG9nb25hbCh0aHJvdWdoKGFnYWluc3QsIGludGVyc2VjdGlvbiksIGludGVyc2VjdGlvbik7XG5leHBvcnQgY29uc3QgcGFyYWxsZWwgPSAobGluZSwgZGlzdGFuY2UpID0+IHtcbiAgY29uc3QgcmVzdWx0ID0gbGluZS5zbGljZSgpO1xuICByZXN1bHRbMV0gLT0gZGlzdGFuY2U7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuZXhwb3J0IGNvbnN0IHBhcmFsbGVsVGhyb3VnaCA9IChsaW5lLCBwb2ludCkgPT4gb3J0aG9nb25hbChvcnRob2dvbmFsKHBvaW50LCBsaW5lKSwgcG9pbnQpO1xuZXhwb3J0IGNvbnN0IGRpc3RhbmNlID0gKGxpbmUxLCBsaW5lMikgPT4gR0EuaW5vcm0oR0EubWVldChsaW5lMSwgbGluZTIpKTtcbmV4cG9ydCBjb25zdCBhbmdsZSA9IChsaW5lMSwgbGluZTIpID0+IE1hdGguYWNvcyhHQS5kb3QobGluZTEsIGxpbmUyKVswXSk7IC8vIFRoZSBvcmllbnRhdGlvbiBvZiB0aGUgbGluZVxuXG5leHBvcnQgY29uc3Qgc2lnbiA9IGxpbmUgPT4gTWF0aC5zaWduKGxpbmVbMV0pOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../galines.ts\n');
              }
            ),
            /***/
            "../../gapoints.ts": (
              /*!*************************!*\
                !*** ../../gapoints.ts ***!
                \*************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "abs": () => (/* binding */ abs),\n/* harmony export */   "distance": () => (/* binding */ distance),\n/* harmony export */   "distanceToLine": () => (/* binding */ distanceToLine),\n/* harmony export */   "from": () => (/* binding */ from),\n/* harmony export */   "intersect": () => (/* binding */ intersect),\n/* harmony export */   "project": () => (/* binding */ project),\n/* harmony export */   "toTuple": () => (/* binding */ toTuple)\n/* harmony export */ });\n/* harmony import */ var _ga__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ga */ "../../ga.ts");\n/* harmony import */ var _galines__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./galines */ "../../galines.ts");\n\n\n\nconst from = ([x, y]) => [0, 0, 0, 0, y, x, 1, 0];\nconst toTuple = point => [point[5], point[4]];\nconst abs = point => [0, 0, 0, 0, Math.abs(point[4]), Math.abs(point[5]), 1, 0];\nconst intersect = (line1, line2) => _ga__WEBPACK_IMPORTED_MODULE_0__.normalized(_ga__WEBPACK_IMPORTED_MODULE_0__.meet(line1, line2)); // Projects `point` onto the `line`.\n// The returned point is the closest point on the `line` to the `point`.\n\nconst project = (point, line) => intersect(_galines__WEBPACK_IMPORTED_MODULE_1__.orthogonal(line, point), line);\nconst distance = (point1, point2) => _ga__WEBPACK_IMPORTED_MODULE_0__.norm((0,_ga__WEBPACK_IMPORTED_MODULE_0__.join)(point1, point2));\nconst distanceToLine = (point, line) => _ga__WEBPACK_IMPORTED_MODULE_0__.joinScalar(point, line);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ2Fwb2ludHMudHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQTJCO0FBQ1M7QUFDUjtBQUNyQjtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0MsMkNBQWEsQ0FBQyxxQ0FBTyxpQkFBaUI7QUFDakY7O0FBRU8sMkNBQTJDLGdEQUFpQjtBQUM1RCxxQ0FBcUMscUNBQU8sQ0FBQyx5Q0FBSTtBQUNqRCx3Q0FBd0MsMkNBQWEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vZ2Fwb2ludHMudHM/NzBjMSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBHQSBmcm9tIFwiLi9nYVwiO1xuaW1wb3J0ICogYXMgR0FMaW5lIGZyb20gXCIuL2dhbGluZXNcIjtcbmltcG9ydCB7IGpvaW4gfSBmcm9tIFwiLi9nYVwiO1xuZXhwb3J0IGNvbnN0IGZyb20gPSAoW3gsIHldKSA9PiBbMCwgMCwgMCwgMCwgeSwgeCwgMSwgMF07XG5leHBvcnQgY29uc3QgdG9UdXBsZSA9IHBvaW50ID0+IFtwb2ludFs1XSwgcG9pbnRbNF1dO1xuZXhwb3J0IGNvbnN0IGFicyA9IHBvaW50ID0+IFswLCAwLCAwLCAwLCBNYXRoLmFicyhwb2ludFs0XSksIE1hdGguYWJzKHBvaW50WzVdKSwgMSwgMF07XG5leHBvcnQgY29uc3QgaW50ZXJzZWN0ID0gKGxpbmUxLCBsaW5lMikgPT4gR0Eubm9ybWFsaXplZChHQS5tZWV0KGxpbmUxLCBsaW5lMikpOyAvLyBQcm9qZWN0cyBgcG9pbnRgIG9udG8gdGhlIGBsaW5lYC5cbi8vIFRoZSByZXR1cm5lZCBwb2ludCBpcyB0aGUgY2xvc2VzdCBwb2ludCBvbiB0aGUgYGxpbmVgIHRvIHRoZSBgcG9pbnRgLlxuXG5leHBvcnQgY29uc3QgcHJvamVjdCA9IChwb2ludCwgbGluZSkgPT4gaW50ZXJzZWN0KEdBTGluZS5vcnRob2dvbmFsKGxpbmUsIHBvaW50KSwgbGluZSk7XG5leHBvcnQgY29uc3QgZGlzdGFuY2UgPSAocG9pbnQxLCBwb2ludDIpID0+IEdBLm5vcm0oam9pbihwb2ludDEsIHBvaW50MikpO1xuZXhwb3J0IGNvbnN0IGRpc3RhbmNlVG9MaW5lID0gKHBvaW50LCBsaW5lKSA9PiBHQS5qb2luU2NhbGFyKHBvaW50LCBsaW5lKTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../gapoints.ts\n');
              }
            ),
            /***/
            "../../gatransforms.ts": (
              /*!*****************************!*\
                !*** ../../gatransforms.ts ***!
                \*****************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "apply": () => (/* binding */ apply),\n/* harmony export */   "compose": () => (/* binding */ compose),\n/* harmony export */   "rotation": () => (/* binding */ rotation),\n/* harmony export */   "translation": () => (/* binding */ translation),\n/* harmony export */   "translationAlong": () => (/* binding */ translationAlong),\n/* harmony export */   "translationOrthogonal": () => (/* binding */ translationOrthogonal)\n/* harmony export */ });\n/* harmony import */ var _ga__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ga */ "../../ga.ts");\n/* harmony import */ var _gadirections__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./gadirections */ "../../gadirections.ts");\n\n\n/**\n * TODO: docs\n */\n\nconst rotation = (pivot, angle) => _ga__WEBPACK_IMPORTED_MODULE_0__.add(_ga__WEBPACK_IMPORTED_MODULE_0__.mul(pivot, Math.sin(angle / 2)), Math.cos(angle / 2));\nconst translation = direction => [1, 0, 0, 0, -(0.5 * direction[5]), 0.5 * direction[4], 0, 0];\nconst translationOrthogonal = (direction, distance) => {\n  const scale = 0.5 * distance;\n  return [1, 0, 0, 0, scale * direction[4], scale * direction[5], 0, 0];\n};\nconst translationAlong = (line, distance) => _ga__WEBPACK_IMPORTED_MODULE_0__.add(_ga__WEBPACK_IMPORTED_MODULE_0__.mul(_gadirections__WEBPACK_IMPORTED_MODULE_1__.orthogonalToLine(line), 0.5 * distance), 1);\nconst compose = (motor1, motor2) => _ga__WEBPACK_IMPORTED_MODULE_0__.mul(motor2, motor1);\nconst apply = (motor, nvector) => _ga__WEBPACK_IMPORTED_MODULE_0__.normalized(_ga__WEBPACK_IMPORTED_MODULE_0__.mul(_ga__WEBPACK_IMPORTED_MODULE_0__.mul(motor, nvector), _ga__WEBPACK_IMPORTED_MODULE_0__.reverse(motor)));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ2F0cmFuc2Zvcm1zLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQTJCO0FBQ21CO0FBQzlDO0FBQ0E7QUFDQTs7QUFFTyxtQ0FBbUMsb0NBQU0sQ0FBQyxvQ0FBTTtBQUNoRDtBQUNBO0FBQ1A7QUFDQTtBQUNBO0FBQ08sNkNBQTZDLG9DQUFNLENBQUMsb0NBQU0sQ0FBQywyREFBNEI7QUFDdkYsb0NBQW9DLG9DQUFNO0FBQzFDLGtDQUFrQywyQ0FBYSxDQUFDLG9DQUFNLENBQUMsb0NBQU0sa0JBQWtCLHdDQUFVIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2dhdHJhbnNmb3Jtcy50cz85ODAzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIEdBIGZyb20gXCIuL2dhXCI7XG5pbXBvcnQgKiBhcyBHQURpcmVjdGlvbiBmcm9tIFwiLi9nYWRpcmVjdGlvbnNcIjtcbi8qKlxuICogVE9ETzogZG9jc1xuICovXG5cbmV4cG9ydCBjb25zdCByb3RhdGlvbiA9IChwaXZvdCwgYW5nbGUpID0+IEdBLmFkZChHQS5tdWwocGl2b3QsIE1hdGguc2luKGFuZ2xlIC8gMikpLCBNYXRoLmNvcyhhbmdsZSAvIDIpKTtcbmV4cG9ydCBjb25zdCB0cmFuc2xhdGlvbiA9IGRpcmVjdGlvbiA9PiBbMSwgMCwgMCwgMCwgLSgwLjUgKiBkaXJlY3Rpb25bNV0pLCAwLjUgKiBkaXJlY3Rpb25bNF0sIDAsIDBdO1xuZXhwb3J0IGNvbnN0IHRyYW5zbGF0aW9uT3J0aG9nb25hbCA9IChkaXJlY3Rpb24sIGRpc3RhbmNlKSA9PiB7XG4gIGNvbnN0IHNjYWxlID0gMC41ICogZGlzdGFuY2U7XG4gIHJldHVybiBbMSwgMCwgMCwgMCwgc2NhbGUgKiBkaXJlY3Rpb25bNF0sIHNjYWxlICogZGlyZWN0aW9uWzVdLCAwLCAwXTtcbn07XG5leHBvcnQgY29uc3QgdHJhbnNsYXRpb25BbG9uZyA9IChsaW5lLCBkaXN0YW5jZSkgPT4gR0EuYWRkKEdBLm11bChHQURpcmVjdGlvbi5vcnRob2dvbmFsVG9MaW5lKGxpbmUpLCAwLjUgKiBkaXN0YW5jZSksIDEpO1xuZXhwb3J0IGNvbnN0IGNvbXBvc2UgPSAobW90b3IxLCBtb3RvcjIpID0+IEdBLm11bChtb3RvcjIsIG1vdG9yMSk7XG5leHBvcnQgY29uc3QgYXBwbHkgPSAobW90b3IsIG52ZWN0b3IpID0+IEdBLm5vcm1hbGl6ZWQoR0EubXVsKEdBLm11bChtb3RvciwgbnZlY3RvciksIEdBLnJldmVyc2UobW90b3IpKSk7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../gatransforms.ts\n');
              }
            ),
            /***/
            "../../gesture.ts": (
              /*!************************!*\
                !*** ../../gesture.ts ***!
                \************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "getCenter": () => (/* binding */ getCenter),\n/* harmony export */   "getDistance": () => (/* binding */ getDistance)\n/* harmony export */ });\nconst getCenter = pointers => {\n  const allCoords = Array.from(pointers.values());\n  return {\n    x: sum(allCoords, coords => coords.x) / allCoords.length,\n    y: sum(allCoords, coords => coords.y) / allCoords.length\n  };\n};\nconst getDistance = ([a, b]) => Math.hypot(a.x - b.x, a.y - b.y);\n\nconst sum = (array, mapper) => array.reduce((acc, item) => acc + mapper(item), 0);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ2VzdHVyZS50cy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087O0FBRVAiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vZ2VzdHVyZS50cz9jYzU0Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBnZXRDZW50ZXIgPSBwb2ludGVycyA9PiB7XG4gIGNvbnN0IGFsbENvb3JkcyA9IEFycmF5LmZyb20ocG9pbnRlcnMudmFsdWVzKCkpO1xuICByZXR1cm4ge1xuICAgIHg6IHN1bShhbGxDb29yZHMsIGNvb3JkcyA9PiBjb29yZHMueCkgLyBhbGxDb29yZHMubGVuZ3RoLFxuICAgIHk6IHN1bShhbGxDb29yZHMsIGNvb3JkcyA9PiBjb29yZHMueSkgLyBhbGxDb29yZHMubGVuZ3RoXG4gIH07XG59O1xuZXhwb3J0IGNvbnN0IGdldERpc3RhbmNlID0gKFthLCBiXSkgPT4gTWF0aC5oeXBvdChhLnggLSBiLngsIGEueSAtIGIueSk7XG5cbmNvbnN0IHN1bSA9IChhcnJheSwgbWFwcGVyKSA9PiBhcnJheS5yZWR1Y2UoKGFjYywgaXRlbSkgPT4gYWNjICsgbWFwcGVyKGl0ZW0pLCAwKTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../gesture.ts\n');
              }
            ),
            /***/
            "../../groups.ts": (
              /*!***********************!*\
                !*** ../../groups.ts ***!
                \***********************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "addToGroup": () => (/* binding */ addToGroup),
/* harmony export */   "editGroupForSelectedElement": () => (/* binding */ editGroupForSelectedElement),
/* harmony export */   "elementsAreInSameGroup": () => (/* binding */ elementsAreInSameGroup),
/* harmony export */   "getElementsInGroup": () => (/* binding */ getElementsInGroup),
/* harmony export */   "getMaximumGroups": () => (/* binding */ getMaximumGroups),
/* harmony export */   "getNewGroupIdsForDuplication": () => (/* binding */ getNewGroupIdsForDuplication),
/* harmony export */   "getSelectedGroupForElement": () => (/* binding */ getSelectedGroupForElement),
/* harmony export */   "getSelectedGroupIdForElement": () => (/* binding */ getSelectedGroupIdForElement),
/* harmony export */   "getSelectedGroupIds": () => (/* binding */ getSelectedGroupIds),
/* harmony export */   "isElementInGroup": () => (/* binding */ isElementInGroup),
/* harmony export */   "isSelectedViaGroup": () => (/* binding */ isSelectedViaGroup),
/* harmony export */   "removeFromSelectedGroups": () => (/* binding */ removeFromSelectedGroups),
/* harmony export */   "selectGroup": () => (/* binding */ selectGroup),
/* harmony export */   "selectGroupsForSelectedElements": () => (/* binding */ selectGroupsForSelectedElements),
/* harmony export */   "selectGroupsFromGivenElements": () => (/* binding */ selectGroupsFromGivenElements)
/* harmony export */ });
/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./scene */ "../../scene/index.ts");
/* harmony import */ var _element_textElement__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./element/textElement */ "../../element/textElement.ts");
/* harmony import */ var _scene_selection__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./scene/selection */ "../../scene/selection.ts");



const selectGroup = (groupId, appState, elements) => {
  const elementsInGroup = elements.reduce((acc, element) => {
    if (element.groupIds.includes(groupId)) {
      acc[element.id] = true;
    }

    return acc;
  }, {});

  if (Object.keys(elementsInGroup).length < 2) {
    if (appState.selectedGroupIds[groupId] || appState.editingGroupId === groupId) {
      return {
        selectedElementIds: appState.selectedElementIds,
        selectedGroupIds: Object.assign(Object.assign({}, appState.selectedGroupIds), {
          [groupId]: false
        }),
        editingGroupId: null
      };
    }

    return appState;
  }

  return {
    editingGroupId: appState.editingGroupId,
    selectedGroupIds: Object.assign(Object.assign({}, appState.selectedGroupIds), {
      [groupId]: true
    }),
    selectedElementIds: Object.assign(Object.assign({}, appState.selectedElementIds), elementsInGroup)
  };
};
const selectGroupsForSelectedElements = function () {
  let lastSelectedElements = null;
  let lastElements = null;
  let lastReturnValue = null;

  const _selectGroups = (selectedElements, elements, appState, prevAppState) => {
    if (lastReturnValue !== undefined && elements === lastElements && selectedElements === lastSelectedElements && appState.editingGroupId === (lastReturnValue === null || lastReturnValue === void 0 ? void 0 : lastReturnValue.editingGroupId)) {
      return lastReturnValue;
    }

    const selectedGroupIds = {}; // Gather all the groups withing selected elements

    for (const selectedElement of selectedElements) {
      let groupIds = selectedElement.groupIds;

      if (appState.editingGroupId) {
        // handle the case where a group is nested within a group
        const indexOfEditingGroup = groupIds.indexOf(appState.editingGroupId);

        if (indexOfEditingGroup > -1) {
          groupIds = groupIds.slice(0, indexOfEditingGroup);
        }
      }

      if (groupIds.length > 0) {
        const lastSelectedGroup = groupIds[groupIds.length - 1];
        selectedGroupIds[lastSelectedGroup] = true;
      }
    } // Gather all the elements within selected groups


    const groupElementsIndex = {};
    const selectedElementIdsInGroups = elements.reduce((acc, element) => {
      const groupId = element.groupIds.find(id => selectedGroupIds[id]);

      if (groupId) {
        acc[element.id] = true; // Populate the index

        if (!Array.isArray(groupElementsIndex[groupId])) {
          groupElementsIndex[groupId] = [element.id];
        } else {
          groupElementsIndex[groupId].push(element.id);
        }
      }

      return acc;
    }, {});

    for (const groupId of Object.keys(groupElementsIndex)) {
      // If there is one element in the group, and the group is selected or it's being edited, it's not a group
      if (groupElementsIndex[groupId].length < 2) {
        if (selectedGroupIds[groupId]) {
          selectedGroupIds[groupId] = false;
        }
      }
    }

    lastElements = elements;
    lastSelectedElements = selectedElements;
    lastReturnValue = {
      editingGroupId: appState.editingGroupId,
      selectedGroupIds,
      selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_2__.makeNextSelectedElementIds)(Object.assign(Object.assign({}, appState.selectedElementIds), selectedElementIdsInGroups), prevAppState)
    };
    return lastReturnValue;
  };
  /**
   * When you select an element, you often want to actually select the whole group it's in, unless
   * you're currently editing that group.
   */


  const selectGroupsForSelectedElements = (appState, elements, prevAppState,
  /**
   * supply null in cases where you don't have access to App instance and
   * you don't care about optimizing selectElements retrieval
   */
  app) => {
    const selectedElements = app ? app.scene.getSelectedElements({
      selectedElementIds: appState.selectedElementIds,
      // supplying elements explicitly in case we're passed non-state elements
      elements
    }) : (0,_scene__WEBPACK_IMPORTED_MODULE_0__.getSelectedElements)(elements, appState);

    if (!selectedElements.length) {
      return {
        selectedGroupIds: {},
        editingGroupId: null,
        selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_2__.makeNextSelectedElementIds)(appState.selectedElementIds, prevAppState)
      };
    }

    return _selectGroups(selectedElements, elements, appState, prevAppState);
  };

  selectGroupsForSelectedElements.clearCache = () => {
    lastElements = null;
    lastSelectedElements = null;
    lastReturnValue = null;
  };

  return selectGroupsForSelectedElements;
}();
/**
 * If the element's group is selected, don't render an individual
 * selection border around it.
 */

const isSelectedViaGroup = (appState, element) => getSelectedGroupForElement(appState, element) != null;
const getSelectedGroupForElement = (appState, element) => element.groupIds.filter(groupId => groupId !== appState.editingGroupId).find(groupId => appState.selectedGroupIds[groupId]);
const getSelectedGroupIds = appState => Object.entries(appState.selectedGroupIds).filter(([groupId, isSelected]) => isSelected).map(([groupId, isSelected]) => groupId); // given a list of elements, return the the actual group ids that should be selected
// or used to update the elements

const selectGroupsFromGivenElements = (elements, appState) => {
  let nextAppState = Object.assign(Object.assign({}, appState), {
    selectedGroupIds: {}
  });

  for (const element of elements) {
    let groupIds = element.groupIds;

    if (appState.editingGroupId) {
      const indexOfEditingGroup = groupIds.indexOf(appState.editingGroupId);

      if (indexOfEditingGroup > -1) {
        groupIds = groupIds.slice(0, indexOfEditingGroup);
      }
    }

    if (groupIds.length > 0) {
      const groupId = groupIds[groupIds.length - 1];
      nextAppState = Object.assign(Object.assign({}, nextAppState), selectGroup(groupId, nextAppState, elements));
    }
  }

  return nextAppState.selectedGroupIds;
};
const editGroupForSelectedElement = (appState, element) => {
  return Object.assign(Object.assign({}, appState), {
    editingGroupId: element.groupIds.length ? element.groupIds[0] : null,
    selectedGroupIds: {},
    selectedElementIds: {
      [element.id]: true
    }
  });
};
const isElementInGroup = (element, groupId) => element.groupIds.includes(groupId);
const getElementsInGroup = (elements, groupId) => elements.filter(element => isElementInGroup(element, groupId));
const getSelectedGroupIdForElement = (element, selectedGroupIds) => element.groupIds.find(groupId => selectedGroupIds[groupId]);
const getNewGroupIdsForDuplication = (groupIds, editingGroupId, mapper) => {
  const copy = [...groupIds];
  const positionOfEditingGroupId = editingGroupId ? groupIds.indexOf(editingGroupId) : -1;
  const endIndex = positionOfEditingGroupId > -1 ? positionOfEditingGroupId : groupIds.length;

  for (let index = 0; index < endIndex; index++) {
    copy[index] = mapper(copy[index]);
  }

  return copy;
};
const addToGroup = (prevGroupIds, newGroupId, editingGroupId) => {
  // insert before the editingGroupId, or push to the end.
  const groupIds = [...prevGroupIds];
  const positionOfEditingGroupId = editingGroupId ? groupIds.indexOf(editingGroupId) : -1;
  const positionToInsert = positionOfEditingGroupId > -1 ? positionOfEditingGroupId : groupIds.length;
  groupIds.splice(positionToInsert, 0, newGroupId);
  return groupIds;
};
const removeFromSelectedGroups = (groupIds, selectedGroupIds) => groupIds.filter(groupId => !selectedGroupIds[groupId]);
const getMaximumGroups = elements => {
  const groups = new Map();
  elements.forEach(element => {
    const groupId = element.groupIds.length === 0 ? element.id : element.groupIds[element.groupIds.length - 1];
    const currentGroupMembers = groups.get(groupId) || []; // Include bound text if present when grouping

    const boundTextElement = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_1__.getBoundTextElement)(element);

    if (boundTextElement) {
      currentGroupMembers.push(boundTextElement);
    }

    groups.set(groupId, [...currentGroupMembers, element]);
  });
  return Array.from(groups.values());
};
const elementsAreInSameGroup = elements => {
  var _a;

  const allGroups = elements.flatMap(element => element.groupIds);
  const groupCount = new Map();
  let maxGroup = 0;

  for (const group of allGroups) {
    groupCount.set(group, ((_a = groupCount.get(group)) !== null && _a !== void 0 ? _a : 0) + 1);

    if (groupCount.get(group) > maxGroup) {
      maxGroup = groupCount.get(group);
    }
  }

  return maxGroup === elements.length;
};//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 13900 characters]
//# sourceURL=webpack-internal:///../../groups.ts
`);
              }
            ),
            /***/
            "../../history.ts": (
              /*!************************!*\
                !*** ../../history.ts ***!
                \************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./element/typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var _element_newElement__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./element/newElement */ "../../element/newElement.ts");\n\n\n\nconst clearAppStatePropertiesForHistory = appState => {\n  return {\n    selectedElementIds: appState.selectedElementIds,\n    selectedGroupIds: appState.selectedGroupIds,\n    viewBackgroundColor: appState.viewBackgroundColor,\n    editingLinearElement: appState.editingLinearElement,\n    editingGroupId: appState.editingGroupId,\n    name: appState.name\n  };\n};\n\nclass History {\n  constructor() {\n    this.elementCache = new Map();\n    this.recording = true;\n    this.stateHistory = [];\n    this.redoStack = [];\n    this.lastEntry = null;\n\n    this.generateEntry = (appState, elements) => this.dehydrateHistoryEntry({\n      appState: clearAppStatePropertiesForHistory(appState),\n      elements: elements.reduce((elements, element) => {\n        if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isLinearElement)(element) && appState.multiElement && appState.multiElement.id === element.id) {\n          // don\'t store multi-point arrow if still has only one point\n          if (appState.multiElement && appState.multiElement.id === element.id && element.points.length < 2) {\n            return elements;\n          }\n\n          elements.push(Object.assign(Object.assign({}, element), {\n            // don\'t store last point if not committed\n            points: element.lastCommittedPoint !== element.points[element.points.length - 1] ? element.points.slice(0, -1) : element.points\n          }));\n        } else {\n          elements.push(element);\n        }\n\n        return elements;\n      }, [])\n    });\n  }\n\n  hydrateHistoryEntry({\n    appState,\n    elements\n  }) {\n    return {\n      appState: JSON.parse(appState),\n      elements: elements.map(dehydratedExcalidrawElement => {\n        var _a;\n\n        const element = (_a = this.elementCache.get(dehydratedExcalidrawElement.id)) === null || _a === void 0 ? void 0 : _a.get(dehydratedExcalidrawElement.versionNonce);\n\n        if (!element) {\n          throw new Error(`Element not found: ${dehydratedExcalidrawElement.id}:${dehydratedExcalidrawElement.versionNonce}`);\n        }\n\n        return element;\n      })\n    };\n  }\n\n  dehydrateHistoryEntry({\n    appState,\n    elements\n  }) {\n    return {\n      appState: JSON.stringify(appState),\n      elements: elements.map(element => {\n        if (!this.elementCache.has(element.id)) {\n          this.elementCache.set(element.id, new Map());\n        }\n\n        const versions = this.elementCache.get(element.id);\n\n        if (!versions.has(element.versionNonce)) {\n          versions.set(element.versionNonce, (0,_element_newElement__WEBPACK_IMPORTED_MODULE_1__.deepCopyElement)(element));\n        }\n\n        return {\n          id: element.id,\n          versionNonce: element.versionNonce\n        };\n      })\n    };\n  }\n\n  getSnapshotForTest() {\n    return {\n      recording: this.recording,\n      stateHistory: this.stateHistory.map(dehydratedHistoryEntry => this.hydrateHistoryEntry(dehydratedHistoryEntry)),\n      redoStack: this.redoStack.map(dehydratedHistoryEntry => this.hydrateHistoryEntry(dehydratedHistoryEntry))\n    };\n  }\n\n  clear() {\n    this.stateHistory.length = 0;\n    this.redoStack.length = 0;\n    this.lastEntry = null;\n    this.elementCache.clear();\n  }\n\n  shouldCreateEntry(nextEntry) {\n    var _a, _b;\n\n    const {\n      lastEntry\n    } = this;\n\n    if (!lastEntry) {\n      return true;\n    }\n\n    if (nextEntry.elements.length !== lastEntry.elements.length) {\n      return true;\n    } // loop from right to left as changes are likelier to happen on new elements\n\n\n    for (let i = nextEntry.elements.length - 1; i > -1; i--) {\n      const prev = nextEntry.elements[i];\n      const next = lastEntry.elements[i];\n\n      if (!prev || !next || prev.id !== next.id || prev.versionNonce !== next.versionNonce) {\n        return true;\n      }\n    } // note: this is safe because entry\'s appState is guaranteed no excess props\n\n\n    let key;\n\n    for (key in nextEntry.appState) {\n      if (key === "editingLinearElement") {\n        if (((_a = nextEntry.appState[key]) === null || _a === void 0 ? void 0 : _a.elementId) === ((_b = lastEntry.appState[key]) === null || _b === void 0 ? void 0 : _b.elementId)) {\n          continue;\n        }\n      }\n\n      if (key === "selectedElementIds" || key === "selectedGroupIds") {\n        continue;\n      }\n\n      if (nextEntry.appState[key] !== lastEntry.appState[key]) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  pushEntry(appState, elements) {\n    const newEntryDehydrated = this.generateEntry(appState, elements);\n    const newEntry = this.hydrateHistoryEntry(newEntryDehydrated);\n\n    if (newEntry) {\n      if (!this.shouldCreateEntry(newEntry)) {\n        return;\n      }\n\n      this.stateHistory.push(newEntryDehydrated);\n      this.lastEntry = newEntry; // As a new entry was pushed, we invalidate the redo stack\n\n      this.clearRedoStack();\n    }\n  }\n\n  clearRedoStack() {\n    this.redoStack.splice(0, this.redoStack.length);\n  }\n\n  redoOnce() {\n    if (this.redoStack.length === 0) {\n      return null;\n    }\n\n    const entryToRestore = this.redoStack.pop();\n\n    if (entryToRestore !== undefined) {\n      this.stateHistory.push(entryToRestore);\n      return this.hydrateHistoryEntry(entryToRestore);\n    }\n\n    return null;\n  }\n\n  undoOnce() {\n    if (this.stateHistory.length === 1) {\n      return null;\n    }\n\n    const currentEntry = this.stateHistory.pop();\n    const entryToRestore = this.stateHistory[this.stateHistory.length - 1];\n\n    if (currentEntry !== undefined) {\n      this.redoStack.push(currentEntry);\n      return this.hydrateHistoryEntry(entryToRestore);\n    }\n\n    return null;\n  }\n  /**\n   * Updates history\'s `lastEntry` to latest app state. This is necessary\n   *  when doing undo/redo which itself doesn\'t commit to history, but updates\n   *  app state in a way that would break `shouldCreateEntry` which relies on\n   *  `lastEntry` to reflect last comittable history state.\n   * We can\'t update `lastEntry` from within history when calling undo/redo\n   *  because the action potentially mutates appState/elements before storing\n   *  it.\n   */\n\n\n  setCurrentState(appState, elements) {\n    this.lastEntry = this.hydrateHistoryEntry(this.generateEntry(appState, elements));\n  } // Suspicious that this is called so many places. Seems error-prone.\n\n\n  resumeRecording() {\n    this.recording = true;\n  }\n\n  record(state, elements) {\n    if (this.recording) {\n      this.pushEntry(state, elements);\n      this.recording = false;\n    }\n  }\n\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (History);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 10652 characters]\n//# sourceURL=webpack-internal:///../../history.ts\n');
              }
            ),
            /***/
            "../../hooks/useCallbackRefState.ts": (
              /*!******************************************!*\
                !*** ../../hooks/useCallbackRefState.ts ***!
                \******************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "useCallbackRefState": () => (/* binding */ useCallbackRefState)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n\nconst useCallbackRefState = () => {\n  const [refValue, setRefValue] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);\n  const refCallback = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(value => setRefValue(value), []);\n  return [refValue, refCallback];\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vaG9va3MvdXNlQ2FsbGJhY2tSZWZTdGF0ZS50cy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBOEM7QUFDdkM7QUFDUCxrQ0FBa0MsK0NBQVE7QUFDMUMsc0JBQXNCLGtEQUFXO0FBQ2pDO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vaG9va3MvdXNlQ2FsbGJhY2tSZWZTdGF0ZS50cz9iZGM4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuZXhwb3J0IGNvbnN0IHVzZUNhbGxiYWNrUmVmU3RhdGUgPSAoKSA9PiB7XG4gIGNvbnN0IFtyZWZWYWx1ZSwgc2V0UmVmVmFsdWVdID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IHJlZkNhbGxiYWNrID0gdXNlQ2FsbGJhY2sodmFsdWUgPT4gc2V0UmVmVmFsdWUodmFsdWUpLCBbXSk7XG4gIHJldHVybiBbcmVmVmFsdWUsIHJlZkNhbGxiYWNrXTtcbn07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../hooks/useCallbackRefState.ts\n');
              }
            ),
            /***/
            "../../hooks/useCreatePortalContainer.ts": (
              /*!***********************************************!*\
                !*** ../../hooks/useCreatePortalContainer.ts ***!
                \***********************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "useCreatePortalContainer": () => (/* binding */ useCreatePortalContainer)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _components_App__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/App */ "../../components/App.tsx");\n/* harmony import */ var _context_ui_appState__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../context/ui-appState */ "../../context/ui-appState.ts");\n\n\n\nconst useCreatePortalContainer = opts => {\n  const [div, setDiv] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);\n  const device = (0,_components_App__WEBPACK_IMPORTED_MODULE_1__.useDevice)();\n  const {\n    theme\n  } = (0,_context_ui_appState__WEBPACK_IMPORTED_MODULE_2__.useUIAppState)();\n  const {\n    container: excalidrawContainer\n  } = (0,_components_App__WEBPACK_IMPORTED_MODULE_1__.useExcalidrawContainer)();\n  (0,react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect)(() => {\n    var _a;\n\n    if (div) {\n      div.className = "";\n      div.classList.add("excalidraw", ...(((_a = opts === null || opts === void 0 ? void 0 : opts.className) === null || _a === void 0 ? void 0 : _a.split(/\\s+/)) || []));\n      div.classList.toggle("excalidraw--mobile", device.editor.isMobile);\n      div.classList.toggle("theme--dark", theme === "dark");\n    }\n  }, [div, theme, device.editor.isMobile, opts === null || opts === void 0 ? void 0 : opts.className]);\n  (0,react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect)(() => {\n    const container = (opts === null || opts === void 0 ? void 0 : opts.parentSelector) ? excalidrawContainer === null || excalidrawContainer === void 0 ? void 0 : excalidrawContainer.querySelector(opts.parentSelector) : document.body;\n\n    if (!container) {\n      return;\n    }\n\n    const div = document.createElement("div");\n    container.appendChild(div);\n    setDiv(div);\n    return () => {\n      container.removeChild(div);\n    };\n  }, [excalidrawContainer, opts === null || opts === void 0 ? void 0 : opts.parentSelector]);\n  return div;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vaG9va3MvdXNlQ3JlYXRlUG9ydGFsQ29udGFpbmVyLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQWtEO0FBQ29CO0FBQ2Y7QUFDaEQ7QUFDUCx3QkFBd0IsK0NBQVE7QUFDaEMsaUJBQWlCLDBEQUFTO0FBQzFCO0FBQ0E7QUFDQSxJQUFJLEVBQUUsbUVBQWE7QUFDbkI7QUFDQTtBQUNBLElBQUksRUFBRSx1RUFBc0I7QUFDNUIsRUFBRSxzREFBZTtBQUNqQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsRUFBRSxzREFBZTtBQUNqQjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vaG9va3MvdXNlQ3JlYXRlUG9ydGFsQ29udGFpbmVyLnRzP2JhYmMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlU3RhdGUsIHVzZUxheW91dEVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlRGV2aWNlLCB1c2VFeGNhbGlkcmF3Q29udGFpbmVyIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvQXBwXCI7XG5pbXBvcnQgeyB1c2VVSUFwcFN0YXRlIH0gZnJvbSBcIi4uL2NvbnRleHQvdWktYXBwU3RhdGVcIjtcbmV4cG9ydCBjb25zdCB1c2VDcmVhdGVQb3J0YWxDb250YWluZXIgPSBvcHRzID0+IHtcbiAgY29uc3QgW2Rpdiwgc2V0RGl2XSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBkZXZpY2UgPSB1c2VEZXZpY2UoKTtcbiAgY29uc3Qge1xuICAgIHRoZW1lXG4gIH0gPSB1c2VVSUFwcFN0YXRlKCk7XG4gIGNvbnN0IHtcbiAgICBjb250YWluZXI6IGV4Y2FsaWRyYXdDb250YWluZXJcbiAgfSA9IHVzZUV4Y2FsaWRyYXdDb250YWluZXIoKTtcbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICB2YXIgX2E7XG5cbiAgICBpZiAoZGl2KSB7XG4gICAgICBkaXYuY2xhc3NOYW1lID0gXCJcIjtcbiAgICAgIGRpdi5jbGFzc0xpc3QuYWRkKFwiZXhjYWxpZHJhd1wiLCAuLi4oKChfYSA9IG9wdHMgPT09IG51bGwgfHwgb3B0cyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0cy5jbGFzc05hbWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5zcGxpdCgvXFxzKy8pKSB8fCBbXSkpO1xuICAgICAgZGl2LmNsYXNzTGlzdC50b2dnbGUoXCJleGNhbGlkcmF3LS1tb2JpbGVcIiwgZGV2aWNlLmVkaXRvci5pc01vYmlsZSk7XG4gICAgICBkaXYuY2xhc3NMaXN0LnRvZ2dsZShcInRoZW1lLS1kYXJrXCIsIHRoZW1lID09PSBcImRhcmtcIik7XG4gICAgfVxuICB9LCBbZGl2LCB0aGVtZSwgZGV2aWNlLmVkaXRvci5pc01vYmlsZSwgb3B0cyA9PT0gbnVsbCB8fCBvcHRzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRzLmNsYXNzTmFtZV0pO1xuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IChvcHRzID09PSBudWxsIHx8IG9wdHMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdHMucGFyZW50U2VsZWN0b3IpID8gZXhjYWxpZHJhd0NvbnRhaW5lciA9PT0gbnVsbCB8fCBleGNhbGlkcmF3Q29udGFpbmVyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleGNhbGlkcmF3Q29udGFpbmVyLnF1ZXJ5U2VsZWN0b3Iob3B0cy5wYXJlbnRTZWxlY3RvcikgOiBkb2N1bWVudC5ib2R5O1xuXG4gICAgaWYgKCFjb250YWluZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChkaXYpO1xuICAgIHNldERpdihkaXYpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjb250YWluZXIucmVtb3ZlQ2hpbGQoZGl2KTtcbiAgICB9O1xuICB9LCBbZXhjYWxpZHJhd0NvbnRhaW5lciwgb3B0cyA9PT0gbnVsbCB8fCBvcHRzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRzLnBhcmVudFNlbGVjdG9yXSk7XG4gIHJldHVybiBkaXY7XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../hooks/useCreatePortalContainer.ts\n');
              }
            ),
            /***/
            "../../hooks/useLibraryItemSvg.ts": (
              /*!****************************************!*\
                !*** ../../hooks/useLibraryItemSvg.ts ***!
                \****************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "libraryItemSvgsCache": () => (/* binding */ libraryItemSvgsCache),\n/* harmony export */   "useLibraryCache": () => (/* binding */ useLibraryCache),\n/* harmony export */   "useLibraryItemSvg": () => (/* binding */ useLibraryItemSvg)\n/* harmony export */ });\n/* harmony import */ var jotai__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! jotai */ "../../../node_modules/jotai/esm/index.mjs");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _colors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../colors */ "../../colors.ts");\n/* harmony import */ var _jotai__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../jotai */ "../../jotai.ts");\n/* harmony import */ var _packages_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../packages/utils */ "../utils.ts");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator["throw"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n\n\n\nconst libraryItemSvgsCache = (0,jotai__WEBPACK_IMPORTED_MODULE_4__.atom)(new Map());\n\nconst exportLibraryItemToSvg = elements => __awaiter(void 0, void 0, void 0, function* () {\n  return yield (0,_packages_utils__WEBPACK_IMPORTED_MODULE_3__.exportToSvg)({\n    elements,\n    appState: {\n      exportBackground: false,\n      viewBackgroundColor: _colors__WEBPACK_IMPORTED_MODULE_1__.COLOR_PALETTE.white\n    },\n    files: null,\n    renderEmbeddables: false\n  });\n});\n\nconst useLibraryItemSvg = (id, elements, svgCache) => {\n  const [svg, setSvg] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)();\n  (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n    if (elements) {\n      if (id) {\n        // Try to load cached svg\n        const cachedSvg = svgCache.get(id);\n\n        if (cachedSvg) {\n          setSvg(cachedSvg);\n        } else {\n          // When there is no svg in cache export it and save to cache\n          (() => __awaiter(void 0, void 0, void 0, function* () {\n            var _a;\n\n            const exportedSvg = yield exportLibraryItemToSvg(elements);\n            (_a = exportedSvg.querySelector(".style-fonts")) === null || _a === void 0 ? void 0 : _a.remove();\n\n            if (exportedSvg) {\n              svgCache.set(id, exportedSvg);\n              setSvg(exportedSvg);\n            }\n          }))();\n        }\n      } else {\n        // When we have no id (usualy selected items from canvas) just export the svg\n        (() => __awaiter(void 0, void 0, void 0, function* () {\n          const exportedSvg = yield exportLibraryItemToSvg(elements);\n          setSvg(exportedSvg);\n        }))();\n      }\n    }\n  }, [id, elements, svgCache, setSvg]);\n  return svg;\n};\nconst useLibraryCache = () => {\n  const [svgCache] = (0,jotai__WEBPACK_IMPORTED_MODULE_4__.useAtom)(libraryItemSvgsCache, _jotai__WEBPACK_IMPORTED_MODULE_2__.jotaiScope);\n\n  const clearLibraryCache = () => svgCache.clear();\n\n  const deleteItemsFromLibraryCache = items => {\n    items.forEach(item => svgCache.delete(item));\n  };\n\n  return {\n    clearLibraryCache,\n    deleteItemsFromLibraryCache,\n    svgCache\n  };\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5024 characters]\n//# sourceURL=webpack-internal:///../../hooks/useLibraryItemSvg.ts\n');
              }
            ),
            /***/
            "../../hooks/useOutsideClick.ts": (
              /*!**************************************!*\
                !*** ../../hooks/useOutsideClick.ts ***!
                \**************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "useOutsideClick": () => (/* binding */ useOutsideClick)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n\n\nfunction useOutsideClick(ref,\n/** if performance is of concern, memoize the callback */\ncallback,\n/**\n * Optional callback which is called on every click.\n *\n * Should return `true` if click should be considered as inside the container,\n * and `false` if it falls outside and should call the `callback`.\n *\n * Returning `true` overrides the default behavior and `callback` won\'t be\n * called.\n *\n * Returning `undefined` will fallback to the default behavior.\n */\nisInside) {\n  (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n    function onOutsideClick(event) {\n      const _event = event;\n\n      if (!ref.current) {\n        return;\n      }\n\n      const isInsideOverride = isInside === null || isInside === void 0 ? void 0 : isInside(_event, ref.current);\n\n      if (isInsideOverride === true) {\n        return;\n      } else if (isInsideOverride === false) {\n        return callback(_event);\n      } // clicked element is in the descenendant of the target container\n\n\n      if (ref.current.contains(_event.target) || // target is detached from DOM (happens when the element is removed\n      // on a pointerup event fired *before* this handler\'s pointerup is\n      // dispatched)\n      !document.documentElement.contains(_event.target)) {\n        return;\n      }\n\n      const isClickOnRadixPortal = _event.target.closest("[data-radix-portal]") || // when radix popup is in "modal" mode, it disables pointer events on\n      // the `body` element, so the target element is going to be the `html`\n      // (note: this won\'t work if we selectively re-enable pointer events on\n      // specific elements as we do with navbar or excalidraw UI elements)\n      _event.target === document.documentElement && document.body.style.pointerEvents === "none"; // if clicking on radix portal, assume it\'s a popup that\n      // should be considered as part of the UI. Obviously this is a terrible\n      // hack you can end up click on radix popups that outside the tree,\n      // but it works for most cases and the downside is minimal for now\n\n      if (isClickOnRadixPortal) {\n        return;\n      } // clicking on a container that ignores outside clicks\n\n\n      if (_event.target.closest("[data-prevent-outside-click]")) {\n        return;\n      }\n\n      callback(_event);\n    } // note: don\'t use `click` because it often reports incorrect `event.target`\n\n\n    document.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_1__.EVENT.POINTER_DOWN, onOutsideClick);\n    document.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_1__.EVENT.TOUCH_START, onOutsideClick);\n    return () => {\n      document.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_1__.EVENT.POINTER_DOWN, onOutsideClick);\n      document.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_1__.EVENT.TOUCH_START, onOutsideClick);\n    };\n  }, [ref, callback, isInside]);\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4548 characters]\n//# sourceURL=webpack-internal:///../../hooks/useOutsideClick.ts\n');
              }
            ),
            /***/
            "../../hooks/useScrollPosition.ts": (
              /*!****************************************!*\
                !*** ../../hooks/useScrollPosition.ts ***!
                \****************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "useScrollPosition": () => (/* binding */ useScrollPosition)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var jotai__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! jotai */ "../../../node_modules/jotai/esm/index.mjs");\n/* harmony import */ var lodash_throttle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash.throttle */ "../../../node_modules/lodash.throttle/index.js");\n/* harmony import */ var lodash_throttle__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_throttle__WEBPACK_IMPORTED_MODULE_1__);\n\n\n\nconst scrollPositionAtom = (0,jotai__WEBPACK_IMPORTED_MODULE_2__.atom)(0);\nconst useScrollPosition = elementRef => {\n  const [scrollPosition, setScrollPosition] = (0,jotai__WEBPACK_IMPORTED_MODULE_2__.useAtom)(scrollPositionAtom);\n  (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n    const {\n      current: element\n    } = elementRef;\n\n    if (!element) {\n      return;\n    }\n\n    const handleScroll = lodash_throttle__WEBPACK_IMPORTED_MODULE_1___default()(() => {\n      const {\n        scrollTop\n      } = element;\n      setScrollPosition(scrollTop);\n    }, 200);\n    element.addEventListener("scroll", handleScroll);\n    return () => {\n      handleScroll.cancel();\n      element.removeEventListener("scroll", handleScroll);\n    };\n  }, [elementRef, setScrollPosition]);\n  return scrollPosition;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vaG9va3MvdXNlU2Nyb2xsUG9zaXRpb24udHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQWtDO0FBQ0k7QUFDQztBQUN2QywyQkFBMkIsMkNBQUk7QUFDeEI7QUFDUCw4Q0FBOEMsOENBQU87QUFDckQsRUFBRSxnREFBUztBQUNYO0FBQ0E7QUFDQSxNQUFNOztBQUVOO0FBQ0E7QUFDQTs7QUFFQSx5QkFBeUIsc0RBQVE7QUFDakM7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vaG9va3MvdXNlU2Nyb2xsUG9zaXRpb24udHM/MWMxMyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IGF0b20sIHVzZUF0b20gfSBmcm9tIFwiam90YWlcIjtcbmltcG9ydCB0aHJvdHRsZSBmcm9tIFwibG9kYXNoLnRocm90dGxlXCI7XG5jb25zdCBzY3JvbGxQb3NpdGlvbkF0b20gPSBhdG9tKDApO1xuZXhwb3J0IGNvbnN0IHVzZVNjcm9sbFBvc2l0aW9uID0gZWxlbWVudFJlZiA9PiB7XG4gIGNvbnN0IFtzY3JvbGxQb3NpdGlvbiwgc2V0U2Nyb2xsUG9zaXRpb25dID0gdXNlQXRvbShzY3JvbGxQb3NpdGlvbkF0b20pO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIGN1cnJlbnQ6IGVsZW1lbnRcbiAgICB9ID0gZWxlbWVudFJlZjtcblxuICAgIGlmICghZWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGhhbmRsZVNjcm9sbCA9IHRocm90dGxlKCgpID0+IHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgc2Nyb2xsVG9wXG4gICAgICB9ID0gZWxlbWVudDtcbiAgICAgIHNldFNjcm9sbFBvc2l0aW9uKHNjcm9sbFRvcCk7XG4gICAgfSwgMjAwKTtcbiAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIiwgaGFuZGxlU2Nyb2xsKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaGFuZGxlU2Nyb2xsLmNhbmNlbCgpO1xuICAgICAgZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwic2Nyb2xsXCIsIGhhbmRsZVNjcm9sbCk7XG4gICAgfTtcbiAgfSwgW2VsZW1lbnRSZWYsIHNldFNjcm9sbFBvc2l0aW9uXSk7XG4gIHJldHVybiBzY3JvbGxQb3NpdGlvbjtcbn07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../hooks/useScrollPosition.ts\n');
              }
            ),
            /***/
            "../../hooks/useStable.ts": (
              /*!********************************!*\
                !*** ../../hooks/useStable.ts ***!
                \********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "useStable": () => (/* binding */ useStable)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n\nconst useStable = value => {\n  const ref = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(value);\n  Object.assign(ref.current, value);\n  return ref.current;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vaG9va3MvdXNlU3RhYmxlLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUErQjtBQUN4QjtBQUNQLGNBQWMsNkNBQU07QUFDcEI7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2hvb2tzL3VzZVN0YWJsZS50cz8yNTQwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZVJlZiB9IGZyb20gXCJyZWFjdFwiO1xuZXhwb3J0IGNvbnN0IHVzZVN0YWJsZSA9IHZhbHVlID0+IHtcbiAgY29uc3QgcmVmID0gdXNlUmVmKHZhbHVlKTtcbiAgT2JqZWN0LmFzc2lnbihyZWYuY3VycmVudCwgdmFsdWUpO1xuICByZXR1cm4gcmVmLmN1cnJlbnQ7XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../hooks/useStable.ts\n');
              }
            ),
            /***/
            "../../hooks/useTransition.ts": (
              /*!************************************!*\
                !*** ../../hooks/useTransition.ts ***!
                \************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "useTransition": () => (/* binding */ useTransition)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n\n/** noop polyfill for v17. Subset of API available */\n\nfunction useTransitionPolyfill() {\n  const startTransition = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(callback => callback(), []);\n  return [false, startTransition];\n}\n\nconst useTransition = (react__WEBPACK_IMPORTED_MODULE_0___default().useTransition) || useTransitionPolyfill;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vaG9va3MvdXNlVHJhbnNpdGlvbi50cy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBMkM7QUFDM0M7O0FBRUE7QUFDQSwwQkFBMEIsa0RBQVc7QUFDckM7QUFDQTs7QUFFTyxzQkFBc0IsNERBQW1CIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2hvb2tzL3VzZVRyYW5zaXRpb24udHM/MjdkYSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2sgfSBmcm9tIFwicmVhY3RcIjtcbi8qKiBub29wIHBvbHlmaWxsIGZvciB2MTcuIFN1YnNldCBvZiBBUEkgYXZhaWxhYmxlICovXG5cbmZ1bmN0aW9uIHVzZVRyYW5zaXRpb25Qb2x5ZmlsbCgpIHtcbiAgY29uc3Qgc3RhcnRUcmFuc2l0aW9uID0gdXNlQ2FsbGJhY2soY2FsbGJhY2sgPT4gY2FsbGJhY2soKSwgW10pO1xuICByZXR1cm4gW2ZhbHNlLCBzdGFydFRyYW5zaXRpb25dO1xufVxuXG5leHBvcnQgY29uc3QgdXNlVHJhbnNpdGlvbiA9IFJlYWN0LnVzZVRyYW5zaXRpb24gfHwgdXNlVHJhbnNpdGlvblBvbHlmaWxsOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../hooks/useTransition.ts\n');
              }
            ),
            /***/
            "../../i18n.ts": (
              /*!*********************!*\
                !*** ../../i18n.ts ***!
                \*********************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "defaultLang": () => (/* binding */ defaultLang),\n/* harmony export */   "getLanguage": () => (/* binding */ getLanguage),\n/* harmony export */   "languages": () => (/* binding */ languages),\n/* harmony export */   "setLanguage": () => (/* binding */ setLanguage),\n/* harmony export */   "t": () => (/* binding */ t),\n/* harmony export */   "useI18n": () => (/* binding */ useI18n)\n/* harmony export */ });\n/* harmony import */ var _locales_en_json__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./locales/en.json */ "../../locales/en.json");\n/* harmony import */ var _locales_percentages_json__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./locales/percentages.json */ "../../locales/percentages.json");\n/* harmony import */ var _jotai__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./jotai */ "../../jotai.ts");\n/* harmony import */ var jotai__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! jotai */ "../../../node_modules/jotai/esm/index.mjs");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator["throw"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n\n\nconst COMPLETION_THRESHOLD = 85;\nconst defaultLang = {\n  code: "en",\n  label: "English"\n};\nconst languages = [defaultLang, ...[{\n  code: "ar-SA",\n  label: "\u0627\u0644\u0639\u0631\u0628\u064A\u0629",\n  rtl: true\n}, {\n  code: "bg-BG",\n  label: "\u0411\u044A\u043B\u0433\u0430\u0440\u0441\u043A\u0438"\n}, {\n  code: "ca-ES",\n  label: "Catal\xE0"\n}, {\n  code: "cs-CZ",\n  label: "\u010Cesky"\n}, {\n  code: "de-DE",\n  label: "Deutsch"\n}, {\n  code: "el-GR",\n  label: "\u0395\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03AC"\n}, {\n  code: "es-ES",\n  label: "Espa\xF1ol"\n}, {\n  code: "eu-ES",\n  label: "Euskara"\n}, {\n  code: "fa-IR",\n  label: "\u0641\u0627\u0631\u0633\u06CC",\n  rtl: true\n}, {\n  code: "fi-FI",\n  label: "Suomi"\n}, {\n  code: "fr-FR",\n  label: "Fran\xE7ais"\n}, {\n  code: "gl-ES",\n  label: "Galego"\n}, {\n  code: "he-IL",\n  label: "\u05E2\u05D1\u05E8\u05D9\u05EA",\n  rtl: true\n}, {\n  code: "hi-IN",\n  label: "\u0939\u093F\u0928\u094D\u0926\u0940"\n}, {\n  code: "hu-HU",\n  label: "Magyar"\n}, {\n  code: "id-ID",\n  label: "Bahasa Indonesia"\n}, {\n  code: "it-IT",\n  label: "Italiano"\n}, {\n  code: "ja-JP",\n  label: "\u65E5\u672C\u8A9E"\n}, {\n  code: "kab-KAB",\n  label: "Taqbaylit"\n}, {\n  code: "kk-KZ",\n  label: "\u049A\u0430\u0437\u0430\u049B \u0442\u0456\u043B\u0456"\n}, {\n  code: "ko-KR",\n  label: "\uD55C\uAD6D\uC5B4"\n}, {\n  code: "ku-TR",\n  label: "Kurd\xEE"\n}, {\n  code: "lt-LT",\n  label: "Lietuvi\u0173"\n}, {\n  code: "lv-LV",\n  label: "Latvie\u0161u"\n}, {\n  code: "my-MM",\n  label: "Burmese"\n}, {\n  code: "nb-NO",\n  label: "Norsk bokm\xE5l"\n}, {\n  code: "nl-NL",\n  label: "Nederlands"\n}, {\n  code: "nn-NO",\n  label: "Norsk nynorsk"\n}, {\n  code: "oc-FR",\n  label: "Occitan"\n}, {\n  code: "pa-IN",\n  label: "\u0A2A\u0A70\u0A1C\u0A3E\u0A2C\u0A40"\n}, {\n  code: "pl-PL",\n  label: "Polski"\n}, {\n  code: "pt-BR",\n  label: "Portugu\xEAs Brasileiro"\n}, {\n  code: "pt-PT",\n  label: "Portugu\xEAs"\n}, {\n  code: "ro-RO",\n  label: "Rom\xE2n\u0103"\n}, {\n  code: "ru-RU",\n  label: "\u0420\u0443\u0441\u0441\u043A\u0438\u0439"\n}, {\n  code: "sk-SK",\n  label: "Sloven\u010Dina"\n}, {\n  code: "sv-SE",\n  label: "Svenska"\n}, {\n  code: "sl-SI",\n  label: "Sloven\u0161\u010Dina"\n}, {\n  code: "tr-TR",\n  label: "T\xFCrk\xE7e"\n}, {\n  code: "uk-UA",\n  label: "\u0423\u043A\u0440\u0430\u0457\u043D\u0441\u044C\u043A\u0430"\n}, {\n  code: "zh-CN",\n  label: "\u7B80\u4F53\u4E2D\u6587"\n}, {\n  code: "zh-TW",\n  label: "\u7E41\u9AD4\u4E2D\u6587"\n}, {\n  code: "vi-VN",\n  label: "Ti\u1EBFng Vi\u1EC7t"\n}, {\n  code: "mr-IN",\n  label: "\u092E\u0930\u093E\u0920\u0940"\n}].filter(lang => _locales_percentages_json__WEBPACK_IMPORTED_MODULE_1__[lang.code] >= COMPLETION_THRESHOLD).sort((left, right) => left.label > right.label ? 1 : -1)];\nconst TEST_LANG_CODE = "__test__";\n\nif (true) {\n  languages.unshift({\n    code: TEST_LANG_CODE,\n    label: "test language"\n  }, {\n    code: `${TEST_LANG_CODE}.rtl`,\n    label: "\\u{202a}test language (rtl)\\u{202c}",\n    rtl: true\n  });\n}\n\nlet currentLang = defaultLang;\nlet currentLangData = {};\nconst setLanguage = lang => __awaiter(void 0, void 0, void 0, function* () {\n  currentLang = lang;\n  document.documentElement.dir = currentLang.rtl ? "rtl" : "ltr";\n  document.documentElement.lang = currentLang.code;\n\n  if (lang.code.startsWith(TEST_LANG_CODE)) {\n    currentLangData = {};\n  } else {\n    try {\n      currentLangData = yield __webpack_require__("../../locales lazy recursive ^\\\\.\\\\/.*\\\\.json$")(`./${currentLang.code}.json`);\n    } catch (error) {\n      console.error(`Failed to load language ${lang.code}:`, error.message);\n      currentLangData = _locales_en_json__WEBPACK_IMPORTED_MODULE_0__;\n    }\n  }\n\n  _jotai__WEBPACK_IMPORTED_MODULE_2__.jotaiStore.set(editorLangCodeAtom, lang.code);\n});\nconst getLanguage = () => currentLang;\n\nconst findPartsForData = (data, parts) => {\n  for (let index = 0; index < parts.length; ++index) {\n    const part = parts[index];\n\n    if (data[part] === undefined) {\n      return undefined;\n    }\n\n    data = data[part];\n  }\n\n  if (typeof data !== "string") {\n    return undefined;\n  }\n\n  return data;\n};\n\nconst t = (path, replacement, fallback) => {\n  if (currentLang.code.startsWith(TEST_LANG_CODE)) {\n    const name = replacement ? `${path}(${JSON.stringify(replacement).slice(1, -1)})` : path;\n    return `\\u{202a}[[${name}]]\\u{202c}`;\n  }\n\n  const parts = path.split(".");\n  let translation = findPartsForData(currentLangData, parts) || findPartsForData(_locales_en_json__WEBPACK_IMPORTED_MODULE_0__, parts) || fallback;\n\n  if (translation === undefined) {\n    const errorMessage = `Can\'t find translation for ${path}`; // in production, don\'t blow up the app on a missing translation key\n\n    if (false) {}\n\n    throw new Error(errorMessage);\n  }\n\n  if (replacement) {\n    for (const key in replacement) {\n      translation = translation.replace(`{{${key}}}`, String(replacement[key]));\n    }\n  }\n\n  return translation;\n};\n/** @private atom used solely to rerender components using `useI18n` hook */\n\nconst editorLangCodeAtom = (0,jotai__WEBPACK_IMPORTED_MODULE_3__.atom)(defaultLang.code); // Should be used in components that fall under these cases:\n// - component is rendered as an <Excalidraw> child\n// - component is rendered internally by <Excalidraw>, but the component\n//   is memoized w/o being updated on `langCode`, `AppState`, or `UIAppState`\n\nconst useI18n = () => {\n  const langCode = (0,jotai__WEBPACK_IMPORTED_MODULE_3__.useAtomValue)(editorLangCodeAtom, _jotai__WEBPACK_IMPORTED_MODULE_2__.jotaiScope);\n  return {\n    t,\n    langCode\n  };\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 11360 characters]\n//# sourceURL=webpack-internal:///../../i18n.ts\n');
              }
            ),
            /***/
            "../../jotai.ts": (
              /*!**********************!*\
                !*** ../../jotai.ts ***!
                \**********************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "jotaiScope": () => (/* binding */ jotaiScope),\n/* harmony export */   "jotaiStore": () => (/* binding */ jotaiStore),\n/* harmony export */   "useAtomWithInitialValue": () => (/* binding */ useAtomWithInitialValue)\n/* harmony export */ });\n/* harmony import */ var jotai__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! jotai */ "../../../node_modules/jotai/esm/index.mjs");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n\n\nconst jotaiScope = Symbol();\nconst jotaiStore = (0,jotai__WEBPACK_IMPORTED_MODULE_1__.unstable_createStore)();\nconst useAtomWithInitialValue = (atom, initialValue) => {\n  const [value, setValue] = (0,jotai__WEBPACK_IMPORTED_MODULE_1__.useAtom)(atom);\n  (0,react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect)(() => {\n    if (typeof initialValue === "function") {\n      // @ts-ignore\n      setValue(initialValue());\n    } else {\n      setValue(initialValue);\n    } // eslint-disable-next-line react-hooks/exhaustive-deps\n\n  }, []);\n  return [value, setValue];\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vam90YWkudHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQXNEO0FBQ2Q7QUFDakM7QUFDQSxtQkFBbUIsMkRBQW9CO0FBQ3ZDO0FBQ1AsNEJBQTRCLDhDQUFPO0FBQ25DLEVBQUUsc0RBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0EsTUFBTTs7QUFFTixHQUFHO0FBQ0g7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9qb3RhaS50cz81ODFjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVuc3RhYmxlX2NyZWF0ZVN0b3JlLCB1c2VBdG9tIH0gZnJvbSBcImpvdGFpXCI7XG5pbXBvcnQgeyB1c2VMYXlvdXRFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmV4cG9ydCBjb25zdCBqb3RhaVNjb3BlID0gU3ltYm9sKCk7XG5leHBvcnQgY29uc3Qgam90YWlTdG9yZSA9IHVuc3RhYmxlX2NyZWF0ZVN0b3JlKCk7XG5leHBvcnQgY29uc3QgdXNlQXRvbVdpdGhJbml0aWFsVmFsdWUgPSAoYXRvbSwgaW5pdGlhbFZhbHVlKSA9PiB7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlQXRvbShhdG9tKTtcbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAodHlwZW9mIGluaXRpYWxWYWx1ZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBzZXRWYWx1ZShpbml0aWFsVmFsdWUoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldFZhbHVlKGluaXRpYWxWYWx1ZSk7XG4gICAgfSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG5cbiAgfSwgW10pO1xuICByZXR1cm4gW3ZhbHVlLCBzZXRWYWx1ZV07XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../jotai.ts\n');
              }
            ),
            /***/
            "../../keys.ts": (
              /*!*********************!*\
                !*** ../../keys.ts ***!
                \*********************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "CODES": () => (/* binding */ CODES),\n/* harmony export */   "KEYS": () => (/* binding */ KEYS),\n/* harmony export */   "isArrowKey": () => (/* binding */ isArrowKey),\n/* harmony export */   "shouldMaintainAspectRatio": () => (/* binding */ shouldMaintainAspectRatio),\n/* harmony export */   "shouldResizeFromCenter": () => (/* binding */ shouldResizeFromCenter),\n/* harmony export */   "shouldRotateWithDiscreteAngle": () => (/* binding */ shouldRotateWithDiscreteAngle)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constants */ "../../constants.ts");\n\nconst CODES = {\n  EQUAL: "Equal",\n  MINUS: "Minus",\n  NUM_ADD: "NumpadAdd",\n  NUM_SUBTRACT: "NumpadSubtract",\n  NUM_ZERO: "Numpad0",\n  BRACKET_RIGHT: "BracketRight",\n  BRACKET_LEFT: "BracketLeft",\n  ONE: "Digit1",\n  TWO: "Digit2",\n  THREE: "Digit3",\n  NINE: "Digit9",\n  QUOTE: "Quote",\n  ZERO: "Digit0",\n  SLASH: "Slash",\n  C: "KeyC",\n  D: "KeyD",\n  H: "KeyH",\n  V: "KeyV",\n  Z: "KeyZ",\n  R: "KeyR",\n  S: "KeyS"\n};\nconst KEYS = {\n  ARROW_DOWN: "ArrowDown",\n  ARROW_LEFT: "ArrowLeft",\n  ARROW_RIGHT: "ArrowRight",\n  ARROW_UP: "ArrowUp",\n  PAGE_UP: "PageUp",\n  PAGE_DOWN: "PageDown",\n  BACKSPACE: "Backspace",\n  ALT: "Alt",\n  CTRL_OR_CMD: _constants__WEBPACK_IMPORTED_MODULE_0__.isDarwin ? "metaKey" : "ctrlKey",\n  DELETE: "Delete",\n  ENTER: "Enter",\n  ESCAPE: "Escape",\n  QUESTION_MARK: "?",\n  SPACE: " ",\n  TAB: "Tab",\n  CHEVRON_LEFT: "<",\n  CHEVRON_RIGHT: ">",\n  PERIOD: ".",\n  COMMA: ",",\n  SUBTRACT: "-",\n  A: "a",\n  C: "c",\n  D: "d",\n  E: "e",\n  F: "f",\n  G: "g",\n  H: "h",\n  I: "i",\n  L: "l",\n  O: "o",\n  P: "p",\n  Q: "q",\n  R: "r",\n  S: "s",\n  T: "t",\n  V: "v",\n  X: "x",\n  Y: "y",\n  Z: "z",\n  K: "k",\n  W: "w",\n  0: "0",\n  1: "1",\n  2: "2",\n  3: "3",\n  4: "4",\n  5: "5",\n  6: "6",\n  7: "7",\n  8: "8",\n  9: "9"\n};\nconst isArrowKey = key => key === KEYS.ARROW_LEFT || key === KEYS.ARROW_RIGHT || key === KEYS.ARROW_DOWN || key === KEYS.ARROW_UP;\nconst shouldResizeFromCenter = event => event.altKey;\nconst shouldMaintainAspectRatio = event => event.shiftKey;\nconst shouldRotateWithDiscreteAngle = event => event.shiftKey;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4va2V5cy50cy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQXVDO0FBQ2hDO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLGdEQUFRO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4va2V5cy50cz9mZWVjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzRGFyd2luIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5leHBvcnQgY29uc3QgQ09ERVMgPSB7XG4gIEVRVUFMOiBcIkVxdWFsXCIsXG4gIE1JTlVTOiBcIk1pbnVzXCIsXG4gIE5VTV9BREQ6IFwiTnVtcGFkQWRkXCIsXG4gIE5VTV9TVUJUUkFDVDogXCJOdW1wYWRTdWJ0cmFjdFwiLFxuICBOVU1fWkVSTzogXCJOdW1wYWQwXCIsXG4gIEJSQUNLRVRfUklHSFQ6IFwiQnJhY2tldFJpZ2h0XCIsXG4gIEJSQUNLRVRfTEVGVDogXCJCcmFja2V0TGVmdFwiLFxuICBPTkU6IFwiRGlnaXQxXCIsXG4gIFRXTzogXCJEaWdpdDJcIixcbiAgVEhSRUU6IFwiRGlnaXQzXCIsXG4gIE5JTkU6IFwiRGlnaXQ5XCIsXG4gIFFVT1RFOiBcIlF1b3RlXCIsXG4gIFpFUk86IFwiRGlnaXQwXCIsXG4gIFNMQVNIOiBcIlNsYXNoXCIsXG4gIEM6IFwiS2V5Q1wiLFxuICBEOiBcIktleURcIixcbiAgSDogXCJLZXlIXCIsXG4gIFY6IFwiS2V5VlwiLFxuICBaOiBcIktleVpcIixcbiAgUjogXCJLZXlSXCIsXG4gIFM6IFwiS2V5U1wiXG59O1xuZXhwb3J0IGNvbnN0IEtFWVMgPSB7XG4gIEFSUk9XX0RPV046IFwiQXJyb3dEb3duXCIsXG4gIEFSUk9XX0xFRlQ6IFwiQXJyb3dMZWZ0XCIsXG4gIEFSUk9XX1JJR0hUOiBcIkFycm93UmlnaHRcIixcbiAgQVJST1dfVVA6IFwiQXJyb3dVcFwiLFxuICBQQUdFX1VQOiBcIlBhZ2VVcFwiLFxuICBQQUdFX0RPV046IFwiUGFnZURvd25cIixcbiAgQkFDS1NQQUNFOiBcIkJhY2tzcGFjZVwiLFxuICBBTFQ6IFwiQWx0XCIsXG4gIENUUkxfT1JfQ01EOiBpc0RhcndpbiA/IFwibWV0YUtleVwiIDogXCJjdHJsS2V5XCIsXG4gIERFTEVURTogXCJEZWxldGVcIixcbiAgRU5URVI6IFwiRW50ZXJcIixcbiAgRVNDQVBFOiBcIkVzY2FwZVwiLFxuICBRVUVTVElPTl9NQVJLOiBcIj9cIixcbiAgU1BBQ0U6IFwiIFwiLFxuICBUQUI6IFwiVGFiXCIsXG4gIENIRVZST05fTEVGVDogXCI8XCIsXG4gIENIRVZST05fUklHSFQ6IFwiPlwiLFxuICBQRVJJT0Q6IFwiLlwiLFxuICBDT01NQTogXCIsXCIsXG4gIFNVQlRSQUNUOiBcIi1cIixcbiAgQTogXCJhXCIsXG4gIEM6IFwiY1wiLFxuICBEOiBcImRcIixcbiAgRTogXCJlXCIsXG4gIEY6IFwiZlwiLFxuICBHOiBcImdcIixcbiAgSDogXCJoXCIsXG4gIEk6IFwiaVwiLFxuICBMOiBcImxcIixcbiAgTzogXCJvXCIsXG4gIFA6IFwicFwiLFxuICBROiBcInFcIixcbiAgUjogXCJyXCIsXG4gIFM6IFwic1wiLFxuICBUOiBcInRcIixcbiAgVjogXCJ2XCIsXG4gIFg6IFwieFwiLFxuICBZOiBcInlcIixcbiAgWjogXCJ6XCIsXG4gIEs6IFwia1wiLFxuICBXOiBcIndcIixcbiAgMDogXCIwXCIsXG4gIDE6IFwiMVwiLFxuICAyOiBcIjJcIixcbiAgMzogXCIzXCIsXG4gIDQ6IFwiNFwiLFxuICA1OiBcIjVcIixcbiAgNjogXCI2XCIsXG4gIDc6IFwiN1wiLFxuICA4OiBcIjhcIixcbiAgOTogXCI5XCJcbn07XG5leHBvcnQgY29uc3QgaXNBcnJvd0tleSA9IGtleSA9PiBrZXkgPT09IEtFWVMuQVJST1dfTEVGVCB8fCBrZXkgPT09IEtFWVMuQVJST1dfUklHSFQgfHwga2V5ID09PSBLRVlTLkFSUk9XX0RPV04gfHwga2V5ID09PSBLRVlTLkFSUk9XX1VQO1xuZXhwb3J0IGNvbnN0IHNob3VsZFJlc2l6ZUZyb21DZW50ZXIgPSBldmVudCA9PiBldmVudC5hbHRLZXk7XG5leHBvcnQgY29uc3Qgc2hvdWxkTWFpbnRhaW5Bc3BlY3RSYXRpbyA9IGV2ZW50ID0+IGV2ZW50LnNoaWZ0S2V5O1xuZXhwb3J0IGNvbnN0IHNob3VsZFJvdGF0ZVdpdGhEaXNjcmV0ZUFuZ2xlID0gZXZlbnQgPT4gZXZlbnQuc2hpZnRLZXk7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../keys.ts\n');
              }
            ),
            /***/
            "../../math.ts": (
              /*!*********************!*\
                !*** ../../math.ts ***!
                \*********************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "adjustXYWithRotation": () => (/* binding */ adjustXYWithRotation),\n/* harmony export */   "arePointsEqual": () => (/* binding */ arePointsEqual),\n/* harmony export */   "centerPoint": () => (/* binding */ centerPoint),\n/* harmony export */   "distance2d": () => (/* binding */ distance2d),\n/* harmony export */   "getBezierCurveArcLengths": () => (/* binding */ getBezierCurveArcLengths),\n/* harmony export */   "getBezierCurveLength": () => (/* binding */ getBezierCurveLength),\n/* harmony export */   "getBezierXY": () => (/* binding */ getBezierXY),\n/* harmony export */   "getControlPointsForBezierCurve": () => (/* binding */ getControlPointsForBezierCurve),\n/* harmony export */   "getCornerRadius": () => (/* binding */ getCornerRadius),\n/* harmony export */   "getGridPoint": () => (/* binding */ getGridPoint),\n/* harmony export */   "getPointOnAPath": () => (/* binding */ getPointOnAPath),\n/* harmony export */   "getPointsInBezierCurve": () => (/* binding */ getPointsInBezierCurve),\n/* harmony export */   "isPathALoop": () => (/* binding */ isPathALoop),\n/* harmony export */   "isPointInPolygon": () => (/* binding */ isPointInPolygon),\n/* harmony export */   "isPointWithinBounds": () => (/* binding */ isPointWithinBounds),\n/* harmony export */   "isRightAngle": () => (/* binding */ isRightAngle),\n/* harmony export */   "isValueInRange": () => (/* binding */ isValueInRange),\n/* harmony export */   "mapIntervalToBezierT": () => (/* binding */ mapIntervalToBezierT),\n/* harmony export */   "rangeIntersection": () => (/* binding */ rangeIntersection),\n/* harmony export */   "rangesOverlap": () => (/* binding */ rangesOverlap),\n/* harmony export */   "rotate": () => (/* binding */ rotate),\n/* harmony export */   "rotatePoint": () => (/* binding */ rotatePoint)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constants */ "../../constants.ts");\n/* harmony import */ var _element_bounds__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./element/bounds */ "../../element/bounds.ts");\n/* harmony import */ var _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./scene/ShapeCache */ "../../scene/ShapeCache.ts");\n\n\n\nconst rotate = (x1, y1, x2, y2, angle) => // \u{1D44E}\u2032\u{1D465}=(\u{1D44E}\u{1D465}\u2212\u{1D450}\u{1D465})cos\u{1D703}\u2212(\u{1D44E}\u{1D466}\u2212\u{1D450}\u{1D466})sin\u{1D703}+\u{1D450}\u{1D465}\n// \u{1D44E}\u2032\u{1D466}=(\u{1D44E}\u{1D465}\u2212\u{1D450}\u{1D465})sin\u{1D703}+(\u{1D44E}\u{1D466}\u2212\u{1D450}\u{1D466})cos\u{1D703}+\u{1D450}\u{1D466}.\n// https://math.stackexchange.com/questions/2204520/how-do-i-rotate-a-line-segment-in-a-specific-point-on-the-line\n[(x1 - x2) * Math.cos(angle) - (y1 - y2) * Math.sin(angle) + x2, (x1 - x2) * Math.sin(angle) + (y1 - y2) * Math.cos(angle) + y2];\nconst rotatePoint = (point, center, angle) => rotate(point[0], point[1], center[0], center[1], angle);\nconst adjustXYWithRotation = (sides, x, y, angle, deltaX1, deltaY1, deltaX2, deltaY2) => {\n  const cos = Math.cos(angle);\n  const sin = Math.sin(angle);\n\n  if (sides.e && sides.w) {\n    x += deltaX1 + deltaX2;\n  } else if (sides.e) {\n    x += deltaX1 * (1 + cos);\n    y += deltaX1 * sin;\n    x += deltaX2 * (1 - cos);\n    y += deltaX2 * -sin;\n  } else if (sides.w) {\n    x += deltaX1 * (1 - cos);\n    y += deltaX1 * -sin;\n    x += deltaX2 * (1 + cos);\n    y += deltaX2 * sin;\n  }\n\n  if (sides.n && sides.s) {\n    y += deltaY1 + deltaY2;\n  } else if (sides.n) {\n    x += deltaY1 * sin;\n    y += deltaY1 * (1 - cos);\n    x += deltaY2 * -sin;\n    y += deltaY2 * (1 + cos);\n  } else if (sides.s) {\n    x += deltaY1 * -sin;\n    y += deltaY1 * (1 + cos);\n    x += deltaY2 * sin;\n    y += deltaY2 * (1 - cos);\n  }\n\n  return [x, y];\n};\nconst getPointOnAPath = (point, path) => {\n  const [px, py] = point;\n  const [start, ...other] = path;\n  let [lastX, lastY] = start;\n  let kLine = 0;\n  let idx = 0; // if any item in the array is true, it means that a point is\n  // on some segment of a line based path\n\n  const retVal = other.some(([x2, y2], i) => {\n    // we always take a line when dealing with line segments\n    const x1 = lastX;\n    const y1 = lastY;\n    lastX = x2;\n    lastY = y2; // if a point is not within the domain of the line segment\n    // it is not on the line segment\n\n    if (px < x1 || px > x2) {\n      return false;\n    } // check if all points lie on the same line\n    // y1 = kx1 + b, y2 = kx2 + b\n    // y2 - y1 = k(x2 - x2) -> k = (y2 - y1) / (x2 - x1)\n    // coefficient for the line (p0, p1)\n\n\n    const kL = (y2 - y1) / (x2 - x1); // coefficient for the line segment (p0, point)\n\n    const kP1 = (py - y1) / (px - x1); // coefficient for the line segment (point, p1)\n\n    const kP2 = (py - y2) / (px - x2); // because we are basing both lines from the same starting point\n    // the only option for collinearity is having same coefficients\n    // using it for floating point comparisons\n\n    const epsilon = 0.3; // if coefficient is more than an arbitrary epsilon,\n    // these lines are nor collinear\n\n    if (Math.abs(kP1 - kL) > epsilon && Math.abs(kP2 - kL) > epsilon) {\n      return false;\n    } // store the coefficient because we are goint to need it\n\n\n    kLine = kL;\n    idx = i;\n    return true;\n  }); // Return a coordinate that is always on the line segment\n\n  if (retVal === true) {\n    return {\n      x: point[0],\n      y: kLine * point[0],\n      segment: idx\n    };\n  }\n\n  return null;\n};\nconst distance2d = (x1, y1, x2, y2) => {\n  const xd = x2 - x1;\n  const yd = y2 - y1;\n  return Math.hypot(xd, yd);\n};\nconst centerPoint = (a, b) => {\n  return [(a[0] + b[0]) / 2, (a[1] + b[1]) / 2];\n}; // Checks if the first and last point are close enough\n// to be considered a loop\n\nconst isPathALoop = (points,\n/** supply if you want the loop detection to account for current zoom */\nzoomValue = 1) => {\n  if (points.length >= 3) {\n    const [first, last] = [points[0], points[points.length - 1]];\n    const distance = distance2d(first[0], first[1], last[0], last[1]); // Adjusting LINE_CONFIRM_THRESHOLD to current zoom so that when zoomed in\n    // really close we make the threshold smaller, and vice versa.\n\n    return distance <= _constants__WEBPACK_IMPORTED_MODULE_0__.LINE_CONFIRM_THRESHOLD / zoomValue;\n  }\n\n  return false;\n}; // Draw a line from the point to the right till infiinty\n// Check how many lines of the polygon does this infinite line intersects with\n// If the number of intersections is odd, point is in the polygon\n\nconst isPointInPolygon = (points, x, y) => {\n  const vertices = points.length; // There must be at least 3 vertices in polygon\n\n  if (vertices < 3) {\n    return false;\n  }\n\n  const extreme = [Number.MAX_SAFE_INTEGER, y];\n  const p = [x, y];\n  let count = 0;\n\n  for (let i = 0; i < vertices; i++) {\n    const current = points[i];\n    const next = points[(i + 1) % vertices];\n\n    if (doSegmentsIntersect(current, next, p, extreme)) {\n      if (orderedColinearOrientation(current, p, next) === 0) {\n        return isPointWithinBounds(current, p, next);\n      }\n\n      count++;\n    }\n  } // true if count is off\n\n\n  return count % 2 === 1;\n}; // Returns whether `q` lies inside the segment/rectangle defined by `p` and `r`.\n// This is an approximation to "does `q` lie on a segment `pr`" check.\n\nconst isPointWithinBounds = (p, q, r) => {\n  return q[0] <= Math.max(p[0], r[0]) && q[0] >= Math.min(p[0], r[0]) && q[1] <= Math.max(p[1], r[1]) && q[1] >= Math.min(p[1], r[1]);\n}; // For the ordered points p, q, r, return\n// 0 if p, q, r are colinear\n// 1 if Clockwise\n// 2 if counterclickwise\n\nconst orderedColinearOrientation = (p, q, r) => {\n  const val = (q[1] - p[1]) * (r[0] - q[0]) - (q[0] - p[0]) * (r[1] - q[1]);\n\n  if (val === 0) {\n    return 0;\n  }\n\n  return val > 0 ? 1 : 2;\n}; // Check is p1q1 intersects with p2q2\n\n\nconst doSegmentsIntersect = (p1, q1, p2, q2) => {\n  const o1 = orderedColinearOrientation(p1, q1, p2);\n  const o2 = orderedColinearOrientation(p1, q1, q2);\n  const o3 = orderedColinearOrientation(p2, q2, p1);\n  const o4 = orderedColinearOrientation(p2, q2, q1);\n\n  if (o1 !== o2 && o3 !== o4) {\n    return true;\n  } // p1, q1 and p2 are colinear and p2 lies on segment p1q1\n\n\n  if (o1 === 0 && isPointWithinBounds(p1, p2, q1)) {\n    return true;\n  } // p1, q1 and p2 are colinear and q2 lies on segment p1q1\n\n\n  if (o2 === 0 && isPointWithinBounds(p1, q2, q1)) {\n    return true;\n  } // p2, q2 and p1 are colinear and p1 lies on segment p2q2\n\n\n  if (o3 === 0 && isPointWithinBounds(p2, p1, q2)) {\n    return true;\n  } // p2, q2 and q1 are colinear and q1 lies on segment p2q2\n\n\n  if (o4 === 0 && isPointWithinBounds(p2, q1, q2)) {\n    return true;\n  }\n\n  return false;\n}; // TODO: Rounding this point causes some shake when free drawing\n\n\nconst getGridPoint = (x, y, gridSize) => {\n  if (gridSize) {\n    return [Math.round(x / gridSize) * gridSize, Math.round(y / gridSize) * gridSize];\n  }\n\n  return [x, y];\n};\nconst getCornerRadius = (x, element) => {\n  var _a, _b, _c, _d, _e;\n\n  if (((_a = element.roundness) === null || _a === void 0 ? void 0 : _a.type) === _constants__WEBPACK_IMPORTED_MODULE_0__.ROUNDNESS.PROPORTIONAL_RADIUS || ((_b = element.roundness) === null || _b === void 0 ? void 0 : _b.type) === _constants__WEBPACK_IMPORTED_MODULE_0__.ROUNDNESS.LEGACY) {\n    return x * _constants__WEBPACK_IMPORTED_MODULE_0__.DEFAULT_PROPORTIONAL_RADIUS;\n  }\n\n  if (((_c = element.roundness) === null || _c === void 0 ? void 0 : _c.type) === _constants__WEBPACK_IMPORTED_MODULE_0__.ROUNDNESS.ADAPTIVE_RADIUS) {\n    const fixedRadiusSize = (_e = (_d = element.roundness) === null || _d === void 0 ? void 0 : _d.value) !== null && _e !== void 0 ? _e : _constants__WEBPACK_IMPORTED_MODULE_0__.DEFAULT_ADAPTIVE_RADIUS;\n    const CUTOFF_SIZE = fixedRadiusSize / _constants__WEBPACK_IMPORTED_MODULE_0__.DEFAULT_PROPORTIONAL_RADIUS;\n\n    if (x <= CUTOFF_SIZE) {\n      return x * _constants__WEBPACK_IMPORTED_MODULE_0__.DEFAULT_PROPORTIONAL_RADIUS;\n    }\n\n    return fixedRadiusSize;\n  }\n\n  return 0;\n};\nconst getControlPointsForBezierCurve = (element, endPoint) => {\n  const shape = _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_2__.ShapeCache.generateElementShape(element);\n\n  if (!shape) {\n    return null;\n  }\n\n  const ops = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_1__.getCurvePathOps)(shape[0]);\n  let currentP = [0, 0];\n  let index = 0;\n  let minDistance = Infinity;\n  let controlPoints = null;\n\n  while (index < ops.length) {\n    const {\n      op,\n      data\n    } = ops[index];\n\n    if (op === "move") {\n      currentP = data;\n    }\n\n    if (op === "bcurveTo") {\n      const p0 = currentP;\n      const p1 = [data[0], data[1]];\n      const p2 = [data[2], data[3]];\n      const p3 = [data[4], data[5]];\n      const distance = distance2d(p3[0], p3[1], endPoint[0], endPoint[1]);\n\n      if (distance < minDistance) {\n        minDistance = distance;\n        controlPoints = [p0, p1, p2, p3];\n      }\n\n      currentP = p3;\n    }\n\n    index++;\n  }\n\n  return controlPoints;\n};\nconst getBezierXY = (p0, p1, p2, p3, t) => {\n  const equation = (t, idx) => Math.pow(1 - t, 3) * p3[idx] + 3 * t * Math.pow(1 - t, 2) * p2[idx] + 3 * Math.pow(t, 2) * (1 - t) * p1[idx] + p0[idx] * Math.pow(t, 3);\n\n  const tx = equation(t, 0);\n  const ty = equation(t, 1);\n  return [tx, ty];\n};\nconst getPointsInBezierCurve = (element, endPoint) => {\n  const controlPoints = getControlPointsForBezierCurve(element, endPoint);\n\n  if (!controlPoints) {\n    return [];\n  }\n\n  const pointsOnCurve = [];\n  let t = 1; // Take 20 points on curve for better accuracy\n\n  while (t > 0) {\n    const point = getBezierXY(controlPoints[0], controlPoints[1], controlPoints[2], controlPoints[3], t);\n    pointsOnCurve.push([point[0], point[1]]);\n    t -= 0.05;\n  }\n\n  if (pointsOnCurve.length) {\n    if (arePointsEqual(pointsOnCurve.at(-1), endPoint)) {\n      pointsOnCurve.push([endPoint[0], endPoint[1]]);\n    }\n  }\n\n  return pointsOnCurve;\n};\nconst getBezierCurveArcLengths = (element, endPoint) => {\n  const arcLengths = [];\n  arcLengths[0] = 0;\n  const points = getPointsInBezierCurve(element, endPoint);\n  let index = 0;\n  let distance = 0;\n\n  while (index < points.length - 1) {\n    const segmentDistance = distance2d(points[index][0], points[index][1], points[index + 1][0], points[index + 1][1]);\n    distance += segmentDistance;\n    arcLengths.push(distance);\n    index++;\n  }\n\n  return arcLengths;\n};\nconst getBezierCurveLength = (element, endPoint) => {\n  const arcLengths = getBezierCurveArcLengths(element, endPoint);\n  return arcLengths.at(-1);\n}; // This maps interval to actual interval t on the curve so that when t = 0.5, its actually the point at 50% of the length\n\nconst mapIntervalToBezierT = (element, endPoint, interval) => {\n  const arcLengths = getBezierCurveArcLengths(element, endPoint);\n  const pointsCount = arcLengths.length - 1;\n  const curveLength = arcLengths.at(-1);\n  const targetLength = interval * curveLength;\n  let low = 0;\n  let high = pointsCount;\n  let index = 0; // Doing a binary search to find the largest length that is less than the target length\n\n  while (low < high) {\n    index = Math.floor(low + (high - low) / 2);\n\n    if (arcLengths[index] < targetLength) {\n      low = index + 1;\n    } else {\n      high = index;\n    }\n  }\n\n  if (arcLengths[index] > targetLength) {\n    index--;\n  }\n\n  if (arcLengths[index] === targetLength) {\n    return index / pointsCount;\n  }\n\n  return 1 - (index + (targetLength - arcLengths[index]) / (arcLengths[index + 1] - arcLengths[index])) / pointsCount;\n};\nconst arePointsEqual = (p1, p2) => {\n  return p1[0] === p2[0] && p1[1] === p2[1];\n};\nconst isRightAngle = angle => {\n  // if our angles were mathematically accurate, we could just check\n  //\n  //    angle % (Math.PI / 2) === 0\n  //\n  // but since we\'re in floating point land, we need to round.\n  //\n  // Below, after dividing by Math.PI, a multiple of 0.5 indicates a right\n  // angle, which we can check with modulo after rounding.\n  return Math.round(angle / Math.PI * 10000) % 5000 === 0;\n}; // Given two ranges, return if the two ranges overlap with each other\n// e.g. [1, 3] overlaps with [2, 4] while [1, 3] does not overlap with [4, 5]\n\nconst rangesOverlap = ([a0, a1], [b0, b1]) => {\n  if (a0 <= b0) {\n    return a1 >= b0;\n  }\n\n  if (a0 >= b0) {\n    return b1 >= a0;\n  }\n\n  return false;\n}; // Given two ranges,return ther intersection of the two ranges if any\n// e.g. the intersection of [1, 3] and [2, 4] is [2, 3]\n\nconst rangeIntersection = (rangeA, rangeB) => {\n  const rangeStart = Math.max(rangeA[0], rangeB[0]);\n  const rangeEnd = Math.min(rangeA[1], rangeB[1]);\n\n  if (rangeStart <= rangeEnd) {\n    return [rangeStart, rangeEnd];\n  }\n\n  return null;\n};\nconst isValueInRange = (value, min, max) => {\n  return value >= min && value <= max;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 19948 characters]\n//# sourceURL=webpack-internal:///../../math.ts\n');
              }
            ),
            /***/
            "../bbox.ts": (
              /*!******************!*\
                !*** ../bbox.ts ***!
                \******************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "crossProduct": () => (/* binding */ crossProduct),\n/* harmony export */   "doBBoxesIntersect": () => (/* binding */ doBBoxesIntersect),\n/* harmony export */   "doLineSegmentsIntersect": () => (/* binding */ doLineSegmentsIntersect),\n/* harmony export */   "getBBox": () => (/* binding */ getBBox),\n/* harmony export */   "isLineSegmentTouchingOrCrossingLine": () => (/* binding */ isLineSegmentTouchingOrCrossingLine),\n/* harmony export */   "isPointOnLine": () => (/* binding */ isPointOnLine),\n/* harmony export */   "isPointRightOfLine": () => (/* binding */ isPointRightOfLine),\n/* harmony export */   "translate": () => (/* binding */ translate)\n/* harmony export */ });\nfunction getBBox(line) {\n  return [Math.min(line[0][0], line[1][0]), Math.min(line[0][1], line[1][1]), Math.max(line[0][0], line[1][0]), Math.max(line[0][1], line[1][1])];\n}\nfunction crossProduct(a, b) {\n  return a[0] * b[1] - b[0] * a[1];\n}\nfunction doBBoxesIntersect(a, b) {\n  return a[0] <= b[2] && a[2] >= b[0] && a[1] <= b[3] && a[3] >= b[1];\n}\nfunction translate(a, b) {\n  return [a[0] - b[0], a[1] - b[1]];\n}\nconst EPSILON = 0.000001;\nfunction isPointOnLine(l, p) {\n  const p1 = translate(l[1], l[0]);\n  const p2 = translate(p, l[0]);\n  const r = crossProduct(p1, p2);\n  return Math.abs(r) < EPSILON;\n}\nfunction isPointRightOfLine(l, p) {\n  const p1 = translate(l[1], l[0]);\n  const p2 = translate(p, l[0]);\n  return crossProduct(p1, p2) < 0;\n}\nfunction isLineSegmentTouchingOrCrossingLine(a, b) {\n  return isPointOnLine(a, b[0]) || isPointOnLine(a, b[1]) || (isPointRightOfLine(a, b[0]) ? !isPointRightOfLine(a, b[1]) : isPointRightOfLine(a, b[1]));\n} // https://martin-thoma.com/how-to-check-if-two-line-segments-intersect/\n\nfunction doLineSegmentsIntersect(a, b) {\n  return doBBoxesIntersect(getBBox(a), getBBox(b)) && isLineSegmentTouchingOrCrossingLine(a, b) && isLineSegmentTouchingOrCrossingLine(b, a);\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vYmJveC50cy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFPO0FBQ1A7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQSxFQUFFOztBQUVLO0FBQ1A7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi9iYm94LnRzP2Y4MWYiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGdldEJCb3gobGluZSkge1xuICByZXR1cm4gW01hdGgubWluKGxpbmVbMF1bMF0sIGxpbmVbMV1bMF0pLCBNYXRoLm1pbihsaW5lWzBdWzFdLCBsaW5lWzFdWzFdKSwgTWF0aC5tYXgobGluZVswXVswXSwgbGluZVsxXVswXSksIE1hdGgubWF4KGxpbmVbMF1bMV0sIGxpbmVbMV1bMV0pXTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBjcm9zc1Byb2R1Y3QoYSwgYikge1xuICByZXR1cm4gYVswXSAqIGJbMV0gLSBiWzBdICogYVsxXTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBkb0JCb3hlc0ludGVyc2VjdChhLCBiKSB7XG4gIHJldHVybiBhWzBdIDw9IGJbMl0gJiYgYVsyXSA+PSBiWzBdICYmIGFbMV0gPD0gYlszXSAmJiBhWzNdID49IGJbMV07XG59XG5leHBvcnQgZnVuY3Rpb24gdHJhbnNsYXRlKGEsIGIpIHtcbiAgcmV0dXJuIFthWzBdIC0gYlswXSwgYVsxXSAtIGJbMV1dO1xufVxuY29uc3QgRVBTSUxPTiA9IDAuMDAwMDAxO1xuZXhwb3J0IGZ1bmN0aW9uIGlzUG9pbnRPbkxpbmUobCwgcCkge1xuICBjb25zdCBwMSA9IHRyYW5zbGF0ZShsWzFdLCBsWzBdKTtcbiAgY29uc3QgcDIgPSB0cmFuc2xhdGUocCwgbFswXSk7XG4gIGNvbnN0IHIgPSBjcm9zc1Byb2R1Y3QocDEsIHAyKTtcbiAgcmV0dXJuIE1hdGguYWJzKHIpIDwgRVBTSUxPTjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1BvaW50UmlnaHRPZkxpbmUobCwgcCkge1xuICBjb25zdCBwMSA9IHRyYW5zbGF0ZShsWzFdLCBsWzBdKTtcbiAgY29uc3QgcDIgPSB0cmFuc2xhdGUocCwgbFswXSk7XG4gIHJldHVybiBjcm9zc1Byb2R1Y3QocDEsIHAyKSA8IDA7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNMaW5lU2VnbWVudFRvdWNoaW5nT3JDcm9zc2luZ0xpbmUoYSwgYikge1xuICByZXR1cm4gaXNQb2ludE9uTGluZShhLCBiWzBdKSB8fCBpc1BvaW50T25MaW5lKGEsIGJbMV0pIHx8IChpc1BvaW50UmlnaHRPZkxpbmUoYSwgYlswXSkgPyAhaXNQb2ludFJpZ2h0T2ZMaW5lKGEsIGJbMV0pIDogaXNQb2ludFJpZ2h0T2ZMaW5lKGEsIGJbMV0pKTtcbn0gLy8gaHR0cHM6Ly9tYXJ0aW4tdGhvbWEuY29tL2hvdy10by1jaGVjay1pZi10d28tbGluZS1zZWdtZW50cy1pbnRlcnNlY3QvXG5cbmV4cG9ydCBmdW5jdGlvbiBkb0xpbmVTZWdtZW50c0ludGVyc2VjdChhLCBiKSB7XG4gIHJldHVybiBkb0JCb3hlc0ludGVyc2VjdChnZXRCQm94KGEpLCBnZXRCQm94KGIpKSAmJiBpc0xpbmVTZWdtZW50VG91Y2hpbmdPckNyb3NzaW5nTGluZShhLCBiKSAmJiBpc0xpbmVTZWdtZW50VG91Y2hpbmdPckNyb3NzaW5nTGluZShiLCBhKTtcbn0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../bbox.ts\n');
              }
            ),
            /***/
            "./entry.js": (
              /*!******************!*\
                !*** ./entry.js ***!
                \******************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "Button": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.Button),\n/* harmony export */   "DefaultSidebar": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.DefaultSidebar),\n/* harmony export */   "Excalidraw": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.Excalidraw),\n/* harmony export */   "FONT_FAMILY": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.FONT_FAMILY),\n/* harmony export */   "Footer": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.Footer),\n/* harmony export */   "LiveCollaborationTrigger": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.LiveCollaborationTrigger),\n/* harmony export */   "MIME_TYPES": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.MIME_TYPES),\n/* harmony export */   "MainMenu": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.MainMenu),\n/* harmony export */   "Sidebar": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.Sidebar),\n/* harmony export */   "THEME": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.THEME),\n/* harmony export */   "WelcomeScreen": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.WelcomeScreen),\n/* harmony export */   "bumpVersion": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.bumpVersion),\n/* harmony export */   "convertToExcalidrawElements": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.convertToExcalidrawElements),\n/* harmony export */   "defaultLang": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.defaultLang),\n/* harmony export */   "elementPartiallyOverlapsWithOrContainsBBox": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.elementPartiallyOverlapsWithOrContainsBBox),\n/* harmony export */   "elementsOverlappingBBox": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.elementsOverlappingBBox),\n/* harmony export */   "exportToBlob": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.exportToBlob),\n/* harmony export */   "exportToCanvas": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.exportToCanvas),\n/* harmony export */   "exportToClipboard": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.exportToClipboard),\n/* harmony export */   "exportToSvg": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.exportToSvg),\n/* harmony export */   "getCommonBounds": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.getCommonBounds),\n/* harmony export */   "getFreeDrawSvgPath": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.getFreeDrawSvgPath),\n/* harmony export */   "getNonDeletedElements": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.getNonDeletedElements),\n/* harmony export */   "getSceneVersion": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.getSceneVersion),\n/* harmony export */   "isElementInsideBBox": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.isElementInsideBBox),\n/* harmony export */   "isInvisiblySmallElement": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.isInvisiblySmallElement),\n/* harmony export */   "isLinearElement": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.isLinearElement),\n/* harmony export */   "languages": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.languages),\n/* harmony export */   "loadFromBlob": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.loadFromBlob),\n/* harmony export */   "loadLibraryFromBlob": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.loadLibraryFromBlob),\n/* harmony export */   "loadSceneOrLibraryFromBlob": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.loadSceneOrLibraryFromBlob),\n/* harmony export */   "mergeLibraryItems": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.mergeLibraryItems),\n/* harmony export */   "mutateElement": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.mutateElement),\n/* harmony export */   "newElementWith": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.newElementWith),\n/* harmony export */   "normalizeLink": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.normalizeLink),\n/* harmony export */   "parseLibraryTokensFromUrl": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.parseLibraryTokensFromUrl),\n/* harmony export */   "restore": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.restore),\n/* harmony export */   "restoreAppState": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.restoreAppState),\n/* harmony export */   "restoreElements": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.restoreElements),\n/* harmony export */   "restoreLibraryItems": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.restoreLibraryItems),\n/* harmony export */   "sceneCoordsToViewportCoords": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.sceneCoordsToViewportCoords),\n/* harmony export */   "serializeAsJSON": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.serializeAsJSON),\n/* harmony export */   "serializeLibraryAsJSON": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.serializeLibraryAsJSON),\n/* harmony export */   "useDevice": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.useDevice),\n/* harmony export */   "useHandleLibrary": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.useHandleLibrary),\n/* harmony export */   "useI18n": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.useI18n),\n/* harmony export */   "viewportCoordsToSceneCoords": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.viewportCoordsToSceneCoords)\n/* harmony export */ });\n/* harmony import */ var _publicPath__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./publicPath */ "./publicPath.js");\n/* harmony import */ var _polyfill__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../polyfill */ "../../polyfill.ts");\n/* harmony import */ var _public_fonts_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../public/fonts.css */ "../../../public/fonts.css");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./index */ "./index.tsx");\n\n\n\n(0,_polyfill__WEBPACK_IMPORTED_MODULE_1__["default"])();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9lbnRyeS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBc0I7QUFDZ0I7QUFDSDtBQUNuQyxxREFBUSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL2VudHJ5LmpzP2I4NzgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFwiLi9wdWJsaWNQYXRoXCI7XG5pbXBvcnQgcG9seWZpbGwgZnJvbSBcIi4uLy4uL3BvbHlmaWxsXCI7XG5pbXBvcnQgXCIuLi8uLi8uLi9wdWJsaWMvZm9udHMuY3NzXCI7XG5wb2x5ZmlsbCgpO1xuZXhwb3J0ICogZnJvbSBcIi4vaW5kZXhcIjsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./entry.js\n');
              }
            ),
            /***/
            "./index.tsx": (
              /*!*******************!*\
                !*** ./index.tsx ***!
                \*******************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "Button": () => (/* reexport safe */ _components_Button__WEBPACK_IMPORTED_MODULE_22__.Button),\n/* harmony export */   "DefaultSidebar": () => (/* reexport safe */ _components_DefaultSidebar__WEBPACK_IMPORTED_MODULE_23__.DefaultSidebar),\n/* harmony export */   "Excalidraw": () => (/* binding */ Excalidraw),\n/* harmony export */   "FONT_FAMILY": () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_8__.FONT_FAMILY),\n/* harmony export */   "Footer": () => (/* reexport safe */ _components_footer_FooterCenter__WEBPACK_IMPORTED_MODULE_10__["default"]),\n/* harmony export */   "LiveCollaborationTrigger": () => (/* reexport safe */ _components_live_collaboration_LiveCollaborationTrigger__WEBPACK_IMPORTED_MODULE_13__["default"]),\n/* harmony export */   "MIME_TYPES": () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_8__.MIME_TYPES),\n/* harmony export */   "MainMenu": () => (/* reexport safe */ _components_main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_11__["default"]),\n/* harmony export */   "Sidebar": () => (/* reexport safe */ _components_Sidebar_Sidebar__WEBPACK_IMPORTED_MODULE_21__.Sidebar),\n/* harmony export */   "THEME": () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_8__.THEME),\n/* harmony export */   "WelcomeScreen": () => (/* reexport safe */ _components_welcome_screen_WelcomeScreen__WEBPACK_IMPORTED_MODULE_12__["default"]),\n/* harmony export */   "bumpVersion": () => (/* reexport safe */ _element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.bumpVersion),\n/* harmony export */   "convertToExcalidrawElements": () => (/* reexport safe */ _data_transform__WEBPACK_IMPORTED_MODULE_25__.convertToExcalidrawElements),\n/* harmony export */   "defaultLang": () => (/* reexport safe */ _i18n__WEBPACK_IMPORTED_MODULE_7__.defaultLang),\n/* harmony export */   "elementPartiallyOverlapsWithOrContainsBBox": () => (/* reexport safe */ _withinBounds__WEBPACK_IMPORTED_MODULE_27__.elementPartiallyOverlapsWithOrContainsBBox),\n/* harmony export */   "elementsOverlappingBBox": () => (/* reexport safe */ _withinBounds__WEBPACK_IMPORTED_MODULE_27__.elementsOverlappingBBox),\n/* harmony export */   "exportToBlob": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_17__.exportToBlob),\n/* harmony export */   "exportToCanvas": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_17__.exportToCanvas),\n/* harmony export */   "exportToClipboard": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_17__.exportToClipboard),\n/* harmony export */   "exportToSvg": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_17__.exportToSvg),\n/* harmony export */   "getCommonBounds": () => (/* reexport safe */ _element_bounds__WEBPACK_IMPORTED_MODULE_26__.getCommonBounds),\n/* harmony export */   "getFreeDrawSvgPath": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_17__.getFreeDrawSvgPath),\n/* harmony export */   "getNonDeletedElements": () => (/* reexport safe */ _element__WEBPACK_IMPORTED_MODULE_15__.getNonDeletedElements),\n/* harmony export */   "getSceneVersion": () => (/* reexport safe */ _element__WEBPACK_IMPORTED_MODULE_15__.getSceneVersion),\n/* harmony export */   "isElementInsideBBox": () => (/* reexport safe */ _withinBounds__WEBPACK_IMPORTED_MODULE_27__.isElementInsideBBox),\n/* harmony export */   "isInvisiblySmallElement": () => (/* reexport safe */ _element__WEBPACK_IMPORTED_MODULE_15__.isInvisiblySmallElement),\n/* harmony export */   "isLinearElement": () => (/* reexport safe */ _element_typeChecks__WEBPACK_IMPORTED_MODULE_18__.isLinearElement),\n/* harmony export */   "languages": () => (/* reexport safe */ _i18n__WEBPACK_IMPORTED_MODULE_7__.languages),\n/* harmony export */   "loadFromBlob": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_17__.loadFromBlob),\n/* harmony export */   "loadLibraryFromBlob": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_17__.loadLibraryFromBlob),\n/* harmony export */   "loadSceneOrLibraryFromBlob": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_17__.loadSceneOrLibraryFromBlob),\n/* harmony export */   "mergeLibraryItems": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_17__.mergeLibraryItems),\n/* harmony export */   "mutateElement": () => (/* reexport safe */ _element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement),\n/* harmony export */   "newElementWith": () => (/* reexport safe */ _element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.newElementWith),\n/* harmony export */   "normalizeLink": () => (/* reexport safe */ _data_url__WEBPACK_IMPORTED_MODULE_24__.normalizeLink),\n/* harmony export */   "parseLibraryTokensFromUrl": () => (/* reexport safe */ _data_library__WEBPACK_IMPORTED_MODULE_20__.parseLibraryTokensFromUrl),\n/* harmony export */   "restore": () => (/* reexport safe */ _data_restore__WEBPACK_IMPORTED_MODULE_16__.restore),\n/* harmony export */   "restoreAppState": () => (/* reexport safe */ _data_restore__WEBPACK_IMPORTED_MODULE_16__.restoreAppState),\n/* harmony export */   "restoreElements": () => (/* reexport safe */ _data_restore__WEBPACK_IMPORTED_MODULE_16__.restoreElements),\n/* harmony export */   "restoreLibraryItems": () => (/* reexport safe */ _data_restore__WEBPACK_IMPORTED_MODULE_16__.restoreLibraryItems),\n/* harmony export */   "sceneCoordsToViewportCoords": () => (/* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_4__.sceneCoordsToViewportCoords),\n/* harmony export */   "serializeAsJSON": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_17__.serializeAsJSON),\n/* harmony export */   "serializeLibraryAsJSON": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_17__.serializeLibraryAsJSON),\n/* harmony export */   "useDevice": () => (/* reexport safe */ _components_App__WEBPACK_IMPORTED_MODULE_3__.useDevice),\n/* harmony export */   "useHandleLibrary": () => (/* reexport safe */ _data_library__WEBPACK_IMPORTED_MODULE_20__.useHandleLibrary),\n/* harmony export */   "useI18n": () => (/* reexport safe */ _i18n__WEBPACK_IMPORTED_MODULE_7__.useI18n),\n/* harmony export */   "viewportCoordsToSceneCoords": () => (/* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_4__.viewportCoordsToSceneCoords)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _components_InitializeApp__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../components/InitializeApp */ "../../components/InitializeApp.tsx");\n/* harmony import */ var _components_App__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../components/App */ "../../components/App.tsx");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils */ "../../utils.ts");\n/* harmony import */ var _css_app_scss__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../css/app.scss */ "../../css/app.scss");\n/* harmony import */ var _css_styles_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../css/styles.scss */ "../../css/styles.scss");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../i18n */ "../../i18n.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../constants */ "../../constants.ts");\n/* harmony import */ var jotai__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! jotai */ "../../../node_modules/jotai/esm/index.mjs");\n/* harmony import */ var _jotai__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../jotai */ "../../jotai.ts");\n/* harmony import */ var _components_footer_FooterCenter__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../components/footer/FooterCenter */ "../../components/footer/FooterCenter.tsx");\n/* harmony import */ var _components_main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../components/main-menu/MainMenu */ "../../components/main-menu/MainMenu.tsx");\n/* harmony import */ var _components_welcome_screen_WelcomeScreen__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../components/welcome-screen/WelcomeScreen */ "../../components/welcome-screen/WelcomeScreen.tsx");\n/* harmony import */ var _components_live_collaboration_LiveCollaborationTrigger__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../components/live-collaboration/LiveCollaborationTrigger */ "../../components/live-collaboration/LiveCollaborationTrigger.tsx");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../element */ "../../element/index.ts");\n/* harmony import */ var _data_restore__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../data/restore */ "../../data/restore.ts");\n/* harmony import */ var _packages_utils__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../packages/utils */ "../utils.ts");\n/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../element/typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var _element_mutateElement__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../element/mutateElement */ "../../element/mutateElement.ts");\n/* harmony import */ var _data_library__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../../data/library */ "../../data/library.ts");\n/* harmony import */ var _components_Sidebar_Sidebar__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../../components/Sidebar/Sidebar */ "../../components/Sidebar/Sidebar.tsx");\n/* harmony import */ var _components_Button__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../../components/Button */ "../../components/Button.tsx");\n/* harmony import */ var _components_DefaultSidebar__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../../components/DefaultSidebar */ "../../components/DefaultSidebar.tsx");\n/* harmony import */ var _data_url__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../../data/url */ "../../data/url.ts");\n/* harmony import */ var _data_transform__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../../data/transform */ "../../data/transform.ts");\n/* harmony import */ var _element_bounds__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ../../element/bounds */ "../../element/bounds.ts");\n/* harmony import */ var _withinBounds__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ../withinBounds */ "../withinBounds.ts");\nvar __rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n\n  if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst ExcalidrawBase = props => {\n  var _a, _b, _c, _d, _e, _f;\n\n  const {\n    onChange,\n    initialData,\n    excalidrawAPI,\n    isCollaborating = false,\n    onPointerUpdate,\n    renderTopRightUI,\n    langCode = _i18n__WEBPACK_IMPORTED_MODULE_7__.defaultLang.code,\n    viewModeEnabled,\n    zenModeEnabled,\n    gridModeEnabled,\n    libraryReturnUrl,\n    theme,\n    name,\n    renderCustomStats,\n    onPaste,\n    detectScroll = true,\n    handleKeyboardGlobally = false,\n    onLibraryChange,\n    autoFocus = false,\n    generateIdForFile,\n    onLinkOpen,\n    onPointerDown,\n    onScrollChange,\n    children,\n    validateEmbeddable,\n    renderEmbeddable\n  } = props;\n  const canvasActions = (_a = props.UIOptions) === null || _a === void 0 ? void 0 : _a.canvasActions; // FIXME normalize/set defaults in parent component so that the memo resolver\n  // compares the same values\n\n  const UIOptions = Object.assign(Object.assign({}, props.UIOptions), {\n    canvasActions: Object.assign(Object.assign({}, _constants__WEBPACK_IMPORTED_MODULE_8__.DEFAULT_UI_OPTIONS.canvasActions), canvasActions),\n    tools: {\n      image: (_d = (_c = (_b = props.UIOptions) === null || _b === void 0 ? void 0 : _b.tools) === null || _c === void 0 ? void 0 : _c.image) !== null && _d !== void 0 ? _d : true\n    }\n  });\n\n  if (canvasActions === null || canvasActions === void 0 ? void 0 : canvasActions.export) {\n    UIOptions.canvasActions.export.saveFileToDisk = (_f = (_e = canvasActions.export) === null || _e === void 0 ? void 0 : _e.saveFileToDisk) !== null && _f !== void 0 ? _f : _constants__WEBPACK_IMPORTED_MODULE_8__.DEFAULT_UI_OPTIONS.canvasActions["export"].saveFileToDisk;\n  }\n\n  if (UIOptions.canvasActions.toggleTheme === null && typeof theme === "undefined") {\n    UIOptions.canvasActions.toggleTheme = true;\n  }\n\n  (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {\n    // Block pinch-zooming on iOS outside of the content area\n    const handleTouchMove = event => {\n      // @ts-ignore\n      if (typeof event.scale === "number" && event.scale !== 1) {\n        event.preventDefault();\n      }\n    };\n\n    document.addEventListener("touchmove", handleTouchMove, {\n      passive: false\n    });\n    return () => {\n      document.removeEventListener("touchmove", handleTouchMove);\n    };\n  }, []);\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(jotai__WEBPACK_IMPORTED_MODULE_14__.Provider, Object.assign({\n    unstable_createStore: () => _jotai__WEBPACK_IMPORTED_MODULE_9__.jotaiStore,\n    scope: _jotai__WEBPACK_IMPORTED_MODULE_9__.jotaiScope\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_InitializeApp__WEBPACK_IMPORTED_MODULE_2__.InitializeApp, Object.assign({\n      langCode: langCode,\n      theme: theme\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_App__WEBPACK_IMPORTED_MODULE_3__["default"], Object.assign({\n        onChange: onChange,\n        initialData: initialData,\n        excalidrawAPI: excalidrawAPI,\n        isCollaborating: isCollaborating,\n        onPointerUpdate: onPointerUpdate,\n        renderTopRightUI: renderTopRightUI,\n        langCode: langCode,\n        viewModeEnabled: viewModeEnabled,\n        zenModeEnabled: zenModeEnabled,\n        gridModeEnabled: gridModeEnabled,\n        libraryReturnUrl: libraryReturnUrl,\n        theme: theme,\n        name: name,\n        renderCustomStats: renderCustomStats,\n        UIOptions: UIOptions,\n        onPaste: onPaste,\n        detectScroll: detectScroll,\n        handleKeyboardGlobally: handleKeyboardGlobally,\n        onLibraryChange: onLibraryChange,\n        autoFocus: autoFocus,\n        generateIdForFile: generateIdForFile,\n        onLinkOpen: onLinkOpen,\n        onPointerDown: onPointerDown,\n        onScrollChange: onScrollChange,\n        validateEmbeddable: validateEmbeddable,\n        renderEmbeddable: renderEmbeddable\n      }, {\n        children: children\n      }))\n    }))\n  }));\n};\n\nconst areEqual = (prevProps, nextProps) => {\n  // short-circuit early\n  if (prevProps.children !== nextProps.children) {\n    return false;\n  }\n\n  const {\n    initialData: prevInitialData,\n    UIOptions: prevUIOptions = {}\n  } = prevProps,\n        prev = __rest(prevProps, ["initialData", "UIOptions"]);\n\n  const {\n    initialData: nextInitialData,\n    UIOptions: nextUIOptions = {}\n  } = nextProps,\n        next = __rest(nextProps, ["initialData", "UIOptions"]); // comparing UIOptions\n\n\n  const prevUIOptionsKeys = Object.keys(prevUIOptions);\n  const nextUIOptionsKeys = Object.keys(nextUIOptions);\n\n  if (prevUIOptionsKeys.length !== nextUIOptionsKeys.length) {\n    return false;\n  }\n\n  const isUIOptionsSame = prevUIOptionsKeys.every(key => {\n    if (key === "canvasActions") {\n      const canvasOptionKeys = Object.keys(prevUIOptions.canvasActions);\n      return canvasOptionKeys.every(key => {\n        var _a, _b, _c, _d;\n\n        if (key === "export" && ((_a = prevUIOptions === null || prevUIOptions === void 0 ? void 0 : prevUIOptions.canvasActions) === null || _a === void 0 ? void 0 : _a.export) && ((_b = nextUIOptions === null || nextUIOptions === void 0 ? void 0 : nextUIOptions.canvasActions) === null || _b === void 0 ? void 0 : _b.export)) {\n          return prevUIOptions.canvasActions.export.saveFileToDisk === nextUIOptions.canvasActions.export.saveFileToDisk;\n        }\n\n        return ((_c = prevUIOptions === null || prevUIOptions === void 0 ? void 0 : prevUIOptions.canvasActions) === null || _c === void 0 ? void 0 : _c[key]) === ((_d = nextUIOptions === null || nextUIOptions === void 0 ? void 0 : nextUIOptions.canvasActions) === null || _d === void 0 ? void 0 : _d[key]);\n      });\n    }\n\n    return prevUIOptions[key] === nextUIOptions[key];\n  });\n  return isUIOptionsSame && (0,_utils__WEBPACK_IMPORTED_MODULE_4__.isShallowEqual)(prev, next);\n};\n\nconst Excalidraw = react__WEBPACK_IMPORTED_MODULE_1___default().memo(ExcalidrawBase, areEqual);\nExcalidraw.displayName = "Excalidraw";\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 13168 characters]\n//# sourceURL=webpack-internal:///./index.tsx\n');
              }
            ),
            /***/
            "./publicPath.js": (
              /*!***********************!*\
                !*** ./publicPath.js ***!
                \***********************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../constants */ "../../constants.ts");\n\n\nif ("development" !== _constants__WEBPACK_IMPORTED_MODULE_0__.ENV.TEST) {\n  /* eslint-disable */\n\n  /* global __webpack_public_path__:writable */\n  __webpack_require__.p = window.EXCALIDRAW_ASSET_PATH || `https://unpkg.com/${"@excalidraw/excalidraw"}@${"0.17.6"}/dist/`;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9wdWJsaWNQYXRoLmpzLmpzIiwibWFwcGluZ3MiOiI7O0FBQXNDOztBQUV0QyxJQUFJLGFBQW9CLEtBQUssZ0RBQVE7QUFDckM7O0FBRUE7QUFDQSxFQUFFLHFCQUF1Qix3REFBd0Qsd0JBQXlCLENBQUMsR0FBRyxRQUE0QixDQUFDO0FBQzNJIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vcHVibGljUGF0aC5qcz82N2Y5Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVOViB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBFTlYuVEVTVCkge1xuICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuXG4gIC8qIGdsb2JhbCBfX3dlYnBhY2tfcHVibGljX3BhdGhfXzp3cml0YWJsZSAqL1xuICBfX3dlYnBhY2tfcHVibGljX3BhdGhfXyA9IHdpbmRvdy5FWENBTElEUkFXX0FTU0VUX1BBVEggfHwgYGh0dHBzOi8vdW5wa2cuY29tLyR7cHJvY2Vzcy5lbnYuVklURV9QS0dfTkFNRX1AJHtwcm9jZXNzLmVudi5WSVRFX1BLR19WRVJTSU9OfS9kaXN0L2A7XG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./publicPath.js\n');
              }
            ),
            /***/
            "../utils.ts": (
              /*!*******************!*\
                !*** ../utils.ts ***!
                \*******************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "MIME_TYPES": () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_3__.MIME_TYPES),\n/* harmony export */   "crossProduct": () => (/* reexport safe */ _bbox__WEBPACK_IMPORTED_MODULE_7__.crossProduct),\n/* harmony export */   "doBBoxesIntersect": () => (/* reexport safe */ _bbox__WEBPACK_IMPORTED_MODULE_7__.doBBoxesIntersect),\n/* harmony export */   "doLineSegmentsIntersect": () => (/* reexport safe */ _bbox__WEBPACK_IMPORTED_MODULE_7__.doLineSegmentsIntersect),\n/* harmony export */   "elementPartiallyOverlapsWithOrContainsBBox": () => (/* reexport safe */ _withinBounds__WEBPACK_IMPORTED_MODULE_8__.elementPartiallyOverlapsWithOrContainsBBox),\n/* harmony export */   "elementsOverlappingBBox": () => (/* reexport safe */ _withinBounds__WEBPACK_IMPORTED_MODULE_8__.elementsOverlappingBBox),\n/* harmony export */   "exportToBlob": () => (/* binding */ exportToBlob),\n/* harmony export */   "exportToCanvas": () => (/* binding */ exportToCanvas),\n/* harmony export */   "exportToClipboard": () => (/* binding */ exportToClipboard),\n/* harmony export */   "exportToSvg": () => (/* binding */ exportToSvg),\n/* harmony export */   "getBBox": () => (/* reexport safe */ _bbox__WEBPACK_IMPORTED_MODULE_7__.getBBox),\n/* harmony export */   "getFreeDrawSvgPath": () => (/* reexport safe */ _renderer_renderElement__WEBPACK_IMPORTED_MODULE_10__.getFreeDrawSvgPath),\n/* harmony export */   "isElementInsideBBox": () => (/* reexport safe */ _withinBounds__WEBPACK_IMPORTED_MODULE_8__.isElementInsideBBox),\n/* harmony export */   "isLineSegmentTouchingOrCrossingLine": () => (/* reexport safe */ _bbox__WEBPACK_IMPORTED_MODULE_7__.isLineSegmentTouchingOrCrossingLine),\n/* harmony export */   "isPointOnLine": () => (/* reexport safe */ _bbox__WEBPACK_IMPORTED_MODULE_7__.isPointOnLine),\n/* harmony export */   "isPointRightOfLine": () => (/* reexport safe */ _bbox__WEBPACK_IMPORTED_MODULE_7__.isPointRightOfLine),\n/* harmony export */   "loadFromBlob": () => (/* reexport safe */ _data_blob__WEBPACK_IMPORTED_MODULE_9__.loadFromBlob),\n/* harmony export */   "loadLibraryFromBlob": () => (/* reexport safe */ _data_blob__WEBPACK_IMPORTED_MODULE_9__.loadLibraryFromBlob),\n/* harmony export */   "loadSceneOrLibraryFromBlob": () => (/* reexport safe */ _data_blob__WEBPACK_IMPORTED_MODULE_9__.loadSceneOrLibraryFromBlob),\n/* harmony export */   "mergeLibraryItems": () => (/* reexport safe */ _data_library__WEBPACK_IMPORTED_MODULE_11__.mergeLibraryItems),\n/* harmony export */   "serializeAsJSON": () => (/* reexport safe */ _data_json__WEBPACK_IMPORTED_MODULE_5__.serializeAsJSON),\n/* harmony export */   "serializeLibraryAsJSON": () => (/* reexport safe */ _data_json__WEBPACK_IMPORTED_MODULE_5__.serializeLibraryAsJSON),\n/* harmony export */   "translate": () => (/* reexport safe */ _bbox__WEBPACK_IMPORTED_MODULE_7__.translate)\n/* harmony export */ });\n/* harmony import */ var _scene_export__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../scene/export */ "../../scene/export.ts");\n/* harmony import */ var _appState__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../appState */ "../../appState.ts");\n/* harmony import */ var _data_restore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../data/restore */ "../../data/restore.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _data_image__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../data/image */ "../../data/image.ts");\n/* harmony import */ var _data_json__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../data/json */ "../../data/json.ts");\n/* harmony import */ var _clipboard__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../clipboard */ "../../clipboard.ts");\n/* harmony import */ var _bbox__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./bbox */ "../bbox.ts");\n/* harmony import */ var _withinBounds__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./withinBounds */ "../withinBounds.ts");\n/* harmony import */ var _data_blob__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../data/blob */ "../../data/blob.ts");\n/* harmony import */ var _renderer_renderElement__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../renderer/renderElement */ "../../renderer/renderElement.ts");\n/* harmony import */ var _data_library__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../data/library */ "../../data/library.ts");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator["throw"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n\n\n\n\n\n\nconst exportToCanvas = ({\n  elements,\n  appState,\n  files,\n  maxWidthOrHeight,\n  getDimensions,\n  exportPadding,\n  exportingFrame\n}) => {\n  const {\n    elements: restoredElements,\n    appState: restoredAppState\n  } = (0,_data_restore__WEBPACK_IMPORTED_MODULE_2__.restore)({\n    elements,\n    appState\n  }, null, null);\n  const {\n    exportBackground,\n    viewBackgroundColor\n  } = restoredAppState;\n  return (0,_scene_export__WEBPACK_IMPORTED_MODULE_0__.exportToCanvas)(restoredElements, Object.assign(Object.assign({}, restoredAppState), {\n    offsetTop: 0,\n    offsetLeft: 0,\n    width: 0,\n    height: 0\n  }), files || {}, {\n    exportBackground,\n    exportPadding,\n    viewBackgroundColor,\n    exportingFrame\n  }, (width, height) => {\n    var _a, _b;\n\n    const canvas = document.createElement("canvas");\n\n    if (maxWidthOrHeight) {\n      if (typeof getDimensions === "function") {\n        console.warn("`getDimensions()` is ignored when `maxWidthOrHeight` is supplied.");\n      }\n\n      const max = Math.max(width, height); // if content is less then maxWidthOrHeight, fallback on supplied scale\n\n      const scale = maxWidthOrHeight < max ? maxWidthOrHeight / max : (_a = appState === null || appState === void 0 ? void 0 : appState.exportScale) !== null && _a !== void 0 ? _a : 1;\n      canvas.width = width * scale;\n      canvas.height = height * scale;\n      return {\n        canvas,\n        scale\n      };\n    }\n\n    const ret = (getDimensions === null || getDimensions === void 0 ? void 0 : getDimensions(width, height)) || {\n      width,\n      height\n    };\n    canvas.width = ret.width;\n    canvas.height = ret.height;\n    return {\n      canvas,\n      scale: (_b = ret.scale) !== null && _b !== void 0 ? _b : 1\n    };\n  });\n};\nconst exportToBlob = opts => __awaiter(void 0, void 0, void 0, function* () {\n  var _a;\n\n  let {\n    mimeType = _constants__WEBPACK_IMPORTED_MODULE_3__.MIME_TYPES.png,\n    quality\n  } = opts;\n\n  if (mimeType === _constants__WEBPACK_IMPORTED_MODULE_3__.MIME_TYPES.png && typeof quality === "number") {\n    console.warn(`"quality" will be ignored for "${_constants__WEBPACK_IMPORTED_MODULE_3__.MIME_TYPES.png}" mimeType`);\n  } // typo in MIME type (should be "jpeg")\n\n\n  if (mimeType === "image/jpg") {\n    mimeType = _constants__WEBPACK_IMPORTED_MODULE_3__.MIME_TYPES.jpg;\n  }\n\n  if (mimeType === _constants__WEBPACK_IMPORTED_MODULE_3__.MIME_TYPES.jpg && !((_a = opts.appState) === null || _a === void 0 ? void 0 : _a.exportBackground)) {\n    console.warn(`Defaulting "exportBackground" to "true" for "${_constants__WEBPACK_IMPORTED_MODULE_3__.MIME_TYPES.jpg}" mimeType`);\n    opts = Object.assign(Object.assign({}, opts), {\n      appState: Object.assign(Object.assign({}, opts.appState), {\n        exportBackground: true\n      })\n    });\n  }\n\n  const canvas = yield exportToCanvas(opts);\n  quality = quality ? quality : /image\\/jpe?g/.test(mimeType) ? 0.92 : 0.8;\n  return new Promise((resolve, reject) => {\n    canvas.toBlob(blob => __awaiter(void 0, void 0, void 0, function* () {\n      var _a;\n\n      if (!blob) {\n        return reject(new Error("couldn\'t export to blob"));\n      }\n\n      if (blob && mimeType === _constants__WEBPACK_IMPORTED_MODULE_3__.MIME_TYPES.png && ((_a = opts.appState) === null || _a === void 0 ? void 0 : _a.exportEmbedScene)) {\n        blob = yield (0,_data_image__WEBPACK_IMPORTED_MODULE_4__.encodePngMetadata)({\n          blob,\n          metadata: (0,_data_json__WEBPACK_IMPORTED_MODULE_5__.serializeAsJSON)( // NOTE as long as we\'re using the Scene hack, we need to ensure\n          // we pass the original, uncloned elements when serializing\n          // so that we keep ids stable\n          opts.elements, opts.appState, opts.files || {}, "local")\n        });\n      }\n\n      resolve(blob);\n    }), mimeType, quality);\n  });\n});\nconst exportToSvg = ({\n  elements,\n  appState = (0,_appState__WEBPACK_IMPORTED_MODULE_1__.getDefaultAppState)(),\n  files = {},\n  exportPadding,\n  renderEmbeddables,\n  exportingFrame\n}) => __awaiter(void 0, void 0, void 0, function* () {\n  const {\n    elements: restoredElements,\n    appState: restoredAppState\n  } = (0,_data_restore__WEBPACK_IMPORTED_MODULE_2__.restore)({\n    elements,\n    appState\n  }, null, null);\n  const exportAppState = Object.assign(Object.assign({}, restoredAppState), {\n    exportPadding\n  });\n  return (0,_scene_export__WEBPACK_IMPORTED_MODULE_0__.exportToSvg)(restoredElements, exportAppState, files, {\n    exportingFrame,\n    renderEmbeddables\n  });\n});\nconst exportToClipboard = opts => __awaiter(void 0, void 0, void 0, function* () {\n  if (opts.type === "svg") {\n    const svg = yield exportToSvg(opts);\n    yield (0,_clipboard__WEBPACK_IMPORTED_MODULE_6__.copyTextToSystemClipboard)(svg.outerHTML);\n  } else if (opts.type === "png") {\n    yield (0,_clipboard__WEBPACK_IMPORTED_MODULE_6__.copyBlobToClipboardAsPng)(exportToBlob(opts));\n  } else if (opts.type === "json") {\n    yield (0,_clipboard__WEBPACK_IMPORTED_MODULE_6__.copyToClipboard)(opts.elements, opts.files);\n  } else {\n    throw new Error("Invalid export type");\n  }\n});\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 10412 characters]\n//# sourceURL=webpack-internal:///../utils.ts\n');
              }
            ),
            /***/
            "../withinBounds.ts": (
              /*!**************************!*\
                !*** ../withinBounds.ts ***!
                \**************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "elementPartiallyOverlapsWithOrContainsBBox": () => (/* binding */ elementPartiallyOverlapsWithOrContainsBBox),
/* harmony export */   "elementsOverlappingBBox": () => (/* binding */ elementsOverlappingBBox),
/* harmony export */   "isElementInsideBBox": () => (/* binding */ isElementInsideBBox)
/* harmony export */ });
/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../element/typeChecks */ "../../element/typeChecks.ts");
/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../math */ "../../math.ts");
/* harmony import */ var _element_bounds__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../element/bounds */ "../../element/bounds.ts");



/** @returns vertices relative to element's top-left [0,0] position  */

const getNonLinearElementRelativePoints = element => {
  if (element.type === "diamond") {
    return [[element.width / 2, 0], [element.width, element.height / 2], [element.width / 2, element.height], [0, element.height / 2]];
  }

  return [[0, 0], [0 + element.width, 0], [0 + element.width, element.height], [0, element.height]];
};
/** @returns vertices relative to element's top-left [0,0] position  */


const getElementRelativePoints = element => {
  if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isLinearElement)(element) || (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isFreeDrawElement)(element)) {
    return element.points;
  }

  return getNonLinearElementRelativePoints(element);
};

const getMinMaxPoints = points => {
  const ret = points.reduce((limits, [x, y]) => {
    limits.minY = Math.min(limits.minY, y);
    limits.minX = Math.min(limits.minX, x);
    limits.maxX = Math.max(limits.maxX, x);
    limits.maxY = Math.max(limits.maxY, y);
    return limits;
  }, {
    minX: Infinity,
    minY: Infinity,
    maxX: -Infinity,
    maxY: -Infinity,
    cx: 0,
    cy: 0
  });
  ret.cx = (ret.maxX + ret.minX) / 2;
  ret.cy = (ret.maxY + ret.minY) / 2;
  return ret;
};

const getRotatedBBox = element => {
  const points = getElementRelativePoints(element);
  const {
    cx,
    cy
  } = getMinMaxPoints(points);
  const centerPoint = [cx, cy];
  const rotatedPoints = points.map(point => (0,_math__WEBPACK_IMPORTED_MODULE_1__.rotatePoint)([point[0], point[1]], centerPoint, element.angle));
  const {
    minX,
    minY,
    maxX,
    maxY
  } = getMinMaxPoints(rotatedPoints);
  return [minX + element.x, minY + element.y, maxX + element.x, maxY + element.y];
};

const isElementInsideBBox = (element, bbox, eitherDirection = false) => {
  const elementBBox = getRotatedBBox(element);
  const elementInsideBbox = bbox[0] <= elementBBox[0] && bbox[2] >= elementBBox[2] && bbox[1] <= elementBBox[1] && bbox[3] >= elementBBox[3];

  if (!eitherDirection) {
    return elementInsideBbox;
  }

  if (elementInsideBbox) {
    return true;
  }

  return elementBBox[0] <= bbox[0] && elementBBox[2] >= bbox[2] && elementBBox[1] <= bbox[1] && elementBBox[3] >= bbox[3];
};
const elementPartiallyOverlapsWithOrContainsBBox = (element, bbox) => {
  const elementBBox = getRotatedBBox(element);
  return ((0,_math__WEBPACK_IMPORTED_MODULE_1__.isValueInRange)(elementBBox[0], bbox[0], bbox[2]) || (0,_math__WEBPACK_IMPORTED_MODULE_1__.isValueInRange)(bbox[0], elementBBox[0], elementBBox[2])) && ((0,_math__WEBPACK_IMPORTED_MODULE_1__.isValueInRange)(elementBBox[1], bbox[1], bbox[3]) || (0,_math__WEBPACK_IMPORTED_MODULE_1__.isValueInRange)(bbox[1], elementBBox[1], elementBBox[3]));
};
const elementsOverlappingBBox = ({
  elements,
  bounds,
  type,
  errorMargin = 0
}) => {
  var _a;

  if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isExcalidrawElement)(bounds)) {
    bounds = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_2__.getElementBounds)(bounds);
  }

  const adjustedBBox = [bounds[0] - errorMargin, bounds[1] - errorMargin, bounds[2] + errorMargin, bounds[3] + errorMargin];
  const includedElementSet = new Set();

  for (const element of elements) {
    if (includedElementSet.has(element.id)) {
      continue;
    }

    const isOverlaping = type === "overlap" ? elementPartiallyOverlapsWithOrContainsBBox(element, adjustedBBox) : type === "inside" ? isElementInsideBBox(element, adjustedBBox) : isElementInsideBBox(element, adjustedBBox, true);

    if (isOverlaping) {
      includedElementSet.add(element.id);

      if (element.boundElements) {
        for (const boundElement of element.boundElements) {
          includedElementSet.add(boundElement.id);
        }
      }

      if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isTextElement)(element) && element.containerId) {
        includedElementSet.add(element.containerId);
      }

      if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isArrowElement)(element)) {
        if (element.startBinding) {
          includedElementSet.add(element.startBinding.elementId);
        }

        if (element.endBinding) {
          includedElementSet.add((_a = element.endBinding) === null || _a === void 0 ? void 0 : _a.elementId);
        }
      }
    }
  }

  return elements.filter(element => includedElementSet.has(element.id));
};//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6936 characters]
//# sourceURL=webpack-internal:///../withinBounds.ts
`);
              }
            ),
            /***/
            "../../points.ts": (
              /*!***********************!*\
                !*** ../../points.ts ***!
                \***********************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "getSizeFromPoints": () => (/* binding */ getSizeFromPoints),
/* harmony export */   "rescalePoints": () => (/* binding */ rescalePoints)
/* harmony export */ });
const getSizeFromPoints = points => {
  const xs = points.map(point => point[0]);
  const ys = points.map(point => point[1]);
  return {
    width: Math.max(...xs) - Math.min(...xs),
    height: Math.max(...ys) - Math.min(...ys)
  };
};
/** @arg dimension, 0 for rescaling only x, 1 for y */

const rescalePoints = (dimension, newSize, points, normalize) => {
  const coordinates = points.map(point => point[dimension]);
  const maxCoordinate = Math.max(...coordinates);
  const minCoordinate = Math.min(...coordinates);
  const size = maxCoordinate - minCoordinate;
  const scale = size === 0 ? 1 : newSize / size;
  let nextMinCoordinate = Infinity;
  const scaledPoints = points.map(point => {
    const newCoordinate = point[dimension] * scale;
    const newPoint = [...point];
    newPoint[dimension] = newCoordinate;

    if (newCoordinate < nextMinCoordinate) {
      nextMinCoordinate = newCoordinate;
    }

    return newPoint;
  });

  if (!normalize) {
    return scaledPoints;
  }

  if (scaledPoints.length === 2) {
    // we don't translate two-point lines
    return scaledPoints;
  }

  const translation = minCoordinate - nextMinCoordinate;
  const nextPoints = scaledPoints.map(scaledPoint => scaledPoint.map((value, currentDimension) => {
    return currentDimension === dimension ? value + translation : value;
  }));
  return nextPoints;
};//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vcG9pbnRzLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vcG9pbnRzLnRzPzhmNjIiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IGdldFNpemVGcm9tUG9pbnRzID0gcG9pbnRzID0+IHtcbiAgY29uc3QgeHMgPSBwb2ludHMubWFwKHBvaW50ID0+IHBvaW50WzBdKTtcbiAgY29uc3QgeXMgPSBwb2ludHMubWFwKHBvaW50ID0+IHBvaW50WzFdKTtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogTWF0aC5tYXgoLi4ueHMpIC0gTWF0aC5taW4oLi4ueHMpLFxuICAgIGhlaWdodDogTWF0aC5tYXgoLi4ueXMpIC0gTWF0aC5taW4oLi4ueXMpXG4gIH07XG59O1xuLyoqIEBhcmcgZGltZW5zaW9uLCAwIGZvciByZXNjYWxpbmcgb25seSB4LCAxIGZvciB5ICovXG5cbmV4cG9ydCBjb25zdCByZXNjYWxlUG9pbnRzID0gKGRpbWVuc2lvbiwgbmV3U2l6ZSwgcG9pbnRzLCBub3JtYWxpemUpID0+IHtcbiAgY29uc3QgY29vcmRpbmF0ZXMgPSBwb2ludHMubWFwKHBvaW50ID0+IHBvaW50W2RpbWVuc2lvbl0pO1xuICBjb25zdCBtYXhDb29yZGluYXRlID0gTWF0aC5tYXgoLi4uY29vcmRpbmF0ZXMpO1xuICBjb25zdCBtaW5Db29yZGluYXRlID0gTWF0aC5taW4oLi4uY29vcmRpbmF0ZXMpO1xuICBjb25zdCBzaXplID0gbWF4Q29vcmRpbmF0ZSAtIG1pbkNvb3JkaW5hdGU7XG4gIGNvbnN0IHNjYWxlID0gc2l6ZSA9PT0gMCA/IDEgOiBuZXdTaXplIC8gc2l6ZTtcbiAgbGV0IG5leHRNaW5Db29yZGluYXRlID0gSW5maW5pdHk7XG4gIGNvbnN0IHNjYWxlZFBvaW50cyA9IHBvaW50cy5tYXAocG9pbnQgPT4ge1xuICAgIGNvbnN0IG5ld0Nvb3JkaW5hdGUgPSBwb2ludFtkaW1lbnNpb25dICogc2NhbGU7XG4gICAgY29uc3QgbmV3UG9pbnQgPSBbLi4ucG9pbnRdO1xuICAgIG5ld1BvaW50W2RpbWVuc2lvbl0gPSBuZXdDb29yZGluYXRlO1xuXG4gICAgaWYgKG5ld0Nvb3JkaW5hdGUgPCBuZXh0TWluQ29vcmRpbmF0ZSkge1xuICAgICAgbmV4dE1pbkNvb3JkaW5hdGUgPSBuZXdDb29yZGluYXRlO1xuICAgIH1cblxuICAgIHJldHVybiBuZXdQb2ludDtcbiAgfSk7XG5cbiAgaWYgKCFub3JtYWxpemUpIHtcbiAgICByZXR1cm4gc2NhbGVkUG9pbnRzO1xuICB9XG5cbiAgaWYgKHNjYWxlZFBvaW50cy5sZW5ndGggPT09IDIpIHtcbiAgICAvLyB3ZSBkb24ndCB0cmFuc2xhdGUgdHdvLXBvaW50IGxpbmVzXG4gICAgcmV0dXJuIHNjYWxlZFBvaW50cztcbiAgfVxuXG4gIGNvbnN0IHRyYW5zbGF0aW9uID0gbWluQ29vcmRpbmF0ZSAtIG5leHRNaW5Db29yZGluYXRlO1xuICBjb25zdCBuZXh0UG9pbnRzID0gc2NhbGVkUG9pbnRzLm1hcChzY2FsZWRQb2ludCA9PiBzY2FsZWRQb2ludC5tYXAoKHZhbHVlLCBjdXJyZW50RGltZW5zaW9uKSA9PiB7XG4gICAgcmV0dXJuIGN1cnJlbnREaW1lbnNpb24gPT09IGRpbWVuc2lvbiA/IHZhbHVlICsgdHJhbnNsYXRpb24gOiB2YWx1ZTtcbiAgfSkpO1xuICByZXR1cm4gbmV4dFBvaW50cztcbn07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9
//# sourceURL=webpack-internal:///../../points.ts
`);
              }
            ),
            /***/
            "../../polyfill.ts": (
              /*!*************************!*\
                !*** ../../polyfill.ts ***!
                \*************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nconst polyfill = () => {\n  if (!Array.prototype.at) {\n    // Taken from https://github.com/tc39/proposal-relative-indexing-method#polyfill so that it works in tests\n\n    /* eslint-disable */\n    Object.defineProperty(Array.prototype, "at", {\n      value: function (n) {\n        // ToInteger() abstract op\n        n = Math.trunc(n) || 0; // Allow negative indexing from the end\n\n        if (n < 0) {\n          n += this.length;\n        } // OOB access is guaranteed to return undefined\n\n\n        if (n < 0 || n >= this.length) {\n          return undefined;\n        } // Otherwise, this is just normal property access\n\n\n        return this[n];\n      },\n      writable: true,\n      enumerable: false,\n      configurable: true\n    });\n  }\n\n  if (!Element.prototype.replaceChildren) {\n    Element.prototype.replaceChildren = function (...nodes) {\n      this.innerHTML = "";\n      this.append(...nodes);\n    };\n  }\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (polyfill);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vcG9seWZpbGwudHMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQzs7QUFFaEM7QUFDQTtBQUNBLFVBQVU7OztBQUdWO0FBQ0E7QUFDQSxVQUFVOzs7QUFHVjtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUVBQWUsUUFBUSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9wb2x5ZmlsbC50cz9kYjhiIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHBvbHlmaWxsID0gKCkgPT4ge1xuICBpZiAoIUFycmF5LnByb3RvdHlwZS5hdCkge1xuICAgIC8vIFRha2VuIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtcmVsYXRpdmUtaW5kZXhpbmctbWV0aG9kI3BvbHlmaWxsIHNvIHRoYXQgaXQgd29ya3MgaW4gdGVzdHNcblxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEFycmF5LnByb3RvdHlwZSwgXCJhdFwiLCB7XG4gICAgICB2YWx1ZTogZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgLy8gVG9JbnRlZ2VyKCkgYWJzdHJhY3Qgb3BcbiAgICAgICAgbiA9IE1hdGgudHJ1bmMobikgfHwgMDsgLy8gQWxsb3cgbmVnYXRpdmUgaW5kZXhpbmcgZnJvbSB0aGUgZW5kXG5cbiAgICAgICAgaWYgKG4gPCAwKSB7XG4gICAgICAgICAgbiArPSB0aGlzLmxlbmd0aDtcbiAgICAgICAgfSAvLyBPT0IgYWNjZXNzIGlzIGd1YXJhbnRlZWQgdG8gcmV0dXJuIHVuZGVmaW5lZFxuXG5cbiAgICAgICAgaWYgKG4gPCAwIHx8IG4gPj0gdGhpcy5sZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9IC8vIE90aGVyd2lzZSwgdGhpcyBpcyBqdXN0IG5vcm1hbCBwcm9wZXJ0eSBhY2Nlc3NcblxuXG4gICAgICAgIHJldHVybiB0aGlzW25dO1xuICAgICAgfSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGlmICghRWxlbWVudC5wcm90b3R5cGUucmVwbGFjZUNoaWxkcmVuKSB7XG4gICAgRWxlbWVudC5wcm90b3R5cGUucmVwbGFjZUNoaWxkcmVuID0gZnVuY3Rpb24gKC4uLm5vZGVzKSB7XG4gICAgICB0aGlzLmlubmVySFRNTCA9IFwiXCI7XG4gICAgICB0aGlzLmFwcGVuZCguLi5ub2Rlcyk7XG4gICAgfTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgcG9seWZpbGw7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../polyfill.ts\n');
              }
            ),
            /***/
            "../../random.ts": (
              /*!***********************!*\
                !*** ../../random.ts ***!
                \***********************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "randomId": () => (/* binding */ randomId),\n/* harmony export */   "randomInteger": () => (/* binding */ randomInteger),\n/* harmony export */   "reseed": () => (/* binding */ reseed)\n/* harmony export */ });\n/* harmony import */ var roughjs_bin_math__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! roughjs/bin/math */ "../../../node_modules/roughjs/bin/math.js");\n/* harmony import */ var nanoid__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! nanoid */ "../../../node_modules/nanoid/index.browser.js");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils */ "../../utils.ts");\n\n\n\nlet random = new roughjs_bin_math__WEBPACK_IMPORTED_MODULE_0__.Random(Date.now());\nlet testIdBase = 0;\nconst randomInteger = () => Math.floor(random.next() * Math.pow(2, 31));\nconst reseed = seed => {\n  random = new roughjs_bin_math__WEBPACK_IMPORTED_MODULE_0__.Random(seed);\n  testIdBase = 0;\n};\nconst randomId = () => (0,_utils__WEBPACK_IMPORTED_MODULE_1__.isTestEnv)() ? `id${testIdBase++}` : (0,nanoid__WEBPACK_IMPORTED_MODULE_2__.nanoid)();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vcmFuZG9tLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUEwQztBQUNWO0FBQ0k7QUFDcEMsaUJBQWlCLG9EQUFNO0FBQ3ZCO0FBQ087QUFDQTtBQUNQLGVBQWUsb0RBQU07QUFDckI7QUFDQTtBQUNPLHVCQUF1QixpREFBUyxVQUFVLGFBQWEsSUFBSSw4Q0FBTSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9yYW5kb20udHM/ODhiOCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSYW5kb20gfSBmcm9tIFwicm91Z2hqcy9iaW4vbWF0aFwiO1xuaW1wb3J0IHsgbmFub2lkIH0gZnJvbSBcIm5hbm9pZFwiO1xuaW1wb3J0IHsgaXNUZXN0RW52IH0gZnJvbSBcIi4vdXRpbHNcIjtcbmxldCByYW5kb20gPSBuZXcgUmFuZG9tKERhdGUubm93KCkpO1xubGV0IHRlc3RJZEJhc2UgPSAwO1xuZXhwb3J0IGNvbnN0IHJhbmRvbUludGVnZXIgPSAoKSA9PiBNYXRoLmZsb29yKHJhbmRvbS5uZXh0KCkgKiBNYXRoLnBvdygyLCAzMSkpO1xuZXhwb3J0IGNvbnN0IHJlc2VlZCA9IHNlZWQgPT4ge1xuICByYW5kb20gPSBuZXcgUmFuZG9tKHNlZWQpO1xuICB0ZXN0SWRCYXNlID0gMDtcbn07XG5leHBvcnQgY29uc3QgcmFuZG9tSWQgPSAoKSA9PiBpc1Rlc3RFbnYoKSA/IGBpZCR7dGVzdElkQmFzZSsrfWAgOiBuYW5vaWQoKTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../random.ts\n');
              }
            ),
            /***/
            "../../renderer/renderElement.ts": (
              /*!***************************************!*\
                !*** ../../renderer/renderElement.ts ***!
                \***************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "DEFAULT_LINK_SIZE": () => (/* binding */ DEFAULT_LINK_SIZE),\n/* harmony export */   "elementWithCanvasCache": () => (/* binding */ elementWithCanvasCache),\n/* harmony export */   "generateFreeDrawShape": () => (/* binding */ generateFreeDrawShape),\n/* harmony export */   "getFreeDrawPath2D": () => (/* binding */ getFreeDrawPath2D),\n/* harmony export */   "getFreeDrawSvgPath": () => (/* binding */ getFreeDrawSvgPath),\n/* harmony export */   "pathsCache": () => (/* binding */ pathsCache),\n/* harmony export */   "renderElement": () => (/* binding */ renderElement),\n/* harmony export */   "renderElementToSvg": () => (/* binding */ renderElementToSvg),\n/* harmony export */   "renderSelectionElement": () => (/* binding */ renderSelectionElement)\n/* harmony export */ });\n/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../element/typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var _element_bounds__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../element/bounds */ "../../element/bounds.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../math */ "../../math.ts");\n/* harmony import */ var roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! roughjs/bin/rough */ "../../../node_modules/roughjs/bin/rough.js");\n/* harmony import */ var _appState__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../appState */ "../../appState.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var perfect_freehand__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! perfect-freehand */ "../../../node_modules/perfect-freehand/dist/esm/index.js");\n/* harmony import */ var _element_textElement__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../element/textElement */ "../../element/textElement.ts");\n/* harmony import */ var _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../element/linearElementEditor */ "../../element/linearElementEditor.ts");\n/* harmony import */ var _element_embeddable__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../element/embeddable */ "../../element/embeddable.ts");\n/* harmony import */ var _frame__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../frame */ "../../frame.ts");\n/* harmony import */ var _data_url__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../data/url */ "../../data/url.ts");\n/* harmony import */ var _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../scene/ShapeCache */ "../../scene/ShapeCache.ts");\n\n\n\n\n\n\n\n\n\n\n\n\n\n // using a stronger invert (100% vs our regular 93%) and saturate\n// as a temp hack to make images in dark theme look closer to original\n// color scheme (it\'s still not quite there and the colors look slightly\n// desatured, alas...)\n\nconst IMAGE_INVERT_FILTER = "invert(100%) hue-rotate(180deg) saturate(1.25)";\nconst defaultAppState = (0,_appState__WEBPACK_IMPORTED_MODULE_5__.getDefaultAppState)();\n\nconst isPendingImageElement = (element, renderConfig) => (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isInitializedImageElement)(element) && !renderConfig.imageCache.has(element.fileId);\n\nconst shouldResetImageFilter = (element, renderConfig, appState) => {\n  var _a;\n\n  return appState.theme === "dark" && (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isInitializedImageElement)(element) && !isPendingImageElement(element, renderConfig) && ((_a = renderConfig.imageCache.get(element.fileId)) === null || _a === void 0 ? void 0 : _a.mimeType) !== _constants__WEBPACK_IMPORTED_MODULE_6__.MIME_TYPES.svg;\n};\n\nconst getCanvasPadding = element => element.type === "freedraw" ? element.strokeWidth * 12 : 20;\n\nconst cappedElementCanvasSize = (element, zoom) => {\n  // these limits are ballpark, they depend on specific browsers and device.\n  // We\'ve chosen lower limits to be safe. We might want to change these limits\n  // based on browser/device type, if we get reports of low quality rendering\n  // on zoom.\n  //\n  // ~ safari mobile canvas area limit\n  const AREA_LIMIT = 16777216; // ~ safari width/height limit based on developer.mozilla.org.\n\n  const WIDTH_HEIGHT_LIMIT = 32767;\n  const padding = getCanvasPadding(element);\n  const [x1, y1, x2, y2] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_1__.getElementAbsoluteCoords)(element);\n  const elementWidth = (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isLinearElement)(element) || (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isFreeDrawElement)(element) ? (0,_utils__WEBPACK_IMPORTED_MODULE_2__.distance)(x1, x2) : element.width;\n  const elementHeight = (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isLinearElement)(element) || (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isFreeDrawElement)(element) ? (0,_utils__WEBPACK_IMPORTED_MODULE_2__.distance)(y1, y2) : element.height;\n  let width = elementWidth * window.devicePixelRatio + padding * 2;\n  let height = elementHeight * window.devicePixelRatio + padding * 2;\n  let scale = zoom.value; // rescale to ensure width and height is within limits\n\n  if (width * scale > WIDTH_HEIGHT_LIMIT || height * scale > WIDTH_HEIGHT_LIMIT) {\n    scale = Math.min(WIDTH_HEIGHT_LIMIT / width, WIDTH_HEIGHT_LIMIT / height);\n  } // rescale to ensure canvas area is within limits\n\n\n  if (width * height * scale * scale > AREA_LIMIT) {\n    scale = Math.sqrt(AREA_LIMIT / (width * height));\n  }\n\n  width = Math.floor(width * scale);\n  height = Math.floor(height * scale);\n  return {\n    width,\n    height,\n    scale\n  };\n};\n\nconst generateElementCanvas = (element, zoom, renderConfig, appState) => {\n  var _a, _b;\n\n  const canvas = document.createElement("canvas");\n  const context = canvas.getContext("2d");\n  const padding = getCanvasPadding(element);\n  const {\n    width,\n    height,\n    scale\n  } = cappedElementCanvasSize(element, zoom);\n  canvas.width = width;\n  canvas.height = height;\n  let canvasOffsetX = 0;\n  let canvasOffsetY = 0;\n\n  if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isLinearElement)(element) || (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isFreeDrawElement)(element)) {\n    const [x1, y1] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_1__.getElementAbsoluteCoords)(element);\n    canvasOffsetX = element.x > x1 ? (0,_utils__WEBPACK_IMPORTED_MODULE_2__.distance)(element.x, x1) * window.devicePixelRatio * scale : 0;\n    canvasOffsetY = element.y > y1 ? (0,_utils__WEBPACK_IMPORTED_MODULE_2__.distance)(element.y, y1) * window.devicePixelRatio * scale : 0;\n    context.translate(canvasOffsetX, canvasOffsetY);\n  }\n\n  context.save();\n  context.translate(padding * scale, padding * scale);\n  context.scale(window.devicePixelRatio * scale, window.devicePixelRatio * scale);\n  const rc = roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_4__["default"].canvas(canvas); // in dark theme, revert the image color filter\n\n  if (shouldResetImageFilter(element, renderConfig, appState)) {\n    context.filter = IMAGE_INVERT_FILTER;\n  }\n\n  drawElementOnCanvas(element, rc, context, renderConfig, appState);\n  context.restore();\n  return {\n    element,\n    canvas,\n    theme: appState.theme,\n    scale,\n    zoomValue: zoom.value,\n    canvasOffsetX,\n    canvasOffsetY,\n    boundTextElementVersion: ((_a = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_8__.getBoundTextElement)(element)) === null || _a === void 0 ? void 0 : _a.version) || null,\n    containingFrameOpacity: ((_b = (0,_frame__WEBPACK_IMPORTED_MODULE_11__.getContainingFrame)(element)) === null || _b === void 0 ? void 0 : _b.opacity) || 100\n  };\n};\n\nconst DEFAULT_LINK_SIZE = 14;\nconst IMAGE_PLACEHOLDER_IMG = document.createElement("img");\nIMAGE_PLACEHOLDER_IMG.src = `data:${_constants__WEBPACK_IMPORTED_MODULE_6__.MIME_TYPES.svg},${encodeURIComponent(`<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="image" class="svg-inline--fa fa-image fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="#888" d="M464 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM112 120c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56zM64 384h384V272l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L208 320l-55.515-55.515c-4.686-4.686-12.284-4.686-16.971 0L64 336v48z"></path></svg>`)}`;\nconst IMAGE_ERROR_PLACEHOLDER_IMG = document.createElement("img");\nIMAGE_ERROR_PLACEHOLDER_IMG.src = `data:${_constants__WEBPACK_IMPORTED_MODULE_6__.MIME_TYPES.svg},${encodeURIComponent(`<svg viewBox="0 0 668 668" xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2"><path d="M464 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48ZM112 120c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56ZM64 384h384V272l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L208 320l-55.515-55.515c-4.686-4.686-12.284-4.686-16.971 0L64 336v48Z" style="fill:#888;fill-rule:nonzero" transform="matrix(.81709 0 0 .81709 124.825 145.825)"/><path d="M256 8C119.034 8 8 119.033 8 256c0 136.967 111.034 248 248 248s248-111.034 248-248S392.967 8 256 8Zm130.108 117.892c65.448 65.448 70 165.481 20.677 235.637L150.47 105.216c70.204-49.356 170.226-44.735 235.638 20.676ZM125.892 386.108c-65.448-65.448-70-165.481-20.677-235.637L361.53 406.784c-70.203 49.356-170.226 44.736-235.638-20.676Z" style="fill:#888;fill-rule:nonzero" transform="matrix(.30366 0 0 .30366 506.822 60.065)"/></svg>`)}`;\n\nconst drawImagePlaceholder = (element, context, zoomValue) => {\n  context.fillStyle = "#E7E7E7";\n  context.fillRect(0, 0, element.width, element.height);\n  const imageMinWidthOrHeight = Math.min(element.width, element.height);\n  const size = Math.min(imageMinWidthOrHeight, Math.min(imageMinWidthOrHeight * 0.4, 100));\n  context.drawImage(element.status === "error" ? IMAGE_ERROR_PLACEHOLDER_IMG : IMAGE_PLACEHOLDER_IMG, element.width / 2 - size / 2, element.height / 2 - size / 2, size, size);\n};\n\nconst drawElementOnCanvas = (element, rc, context, renderConfig, appState) => {\n  var _a, _b, _c;\n\n  context.globalAlpha = ((_b = (_a = (0,_frame__WEBPACK_IMPORTED_MODULE_11__.getContainingFrame)(element)) === null || _a === void 0 ? void 0 : _a.opacity) !== null && _b !== void 0 ? _b : 100) * element.opacity / 10000;\n\n  switch (element.type) {\n    case "rectangle":\n    case "embeddable":\n    case "diamond":\n    case "ellipse":\n      {\n        context.lineJoin = "round";\n        context.lineCap = "round";\n        rc.draw(_scene_ShapeCache__WEBPACK_IMPORTED_MODULE_13__.ShapeCache.get(element));\n        break;\n      }\n\n    case "arrow":\n    case "line":\n      {\n        context.lineJoin = "round";\n        context.lineCap = "round";\n        _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_13__.ShapeCache.get(element).forEach(shape => {\n          rc.draw(shape);\n        });\n        break;\n      }\n\n    case "freedraw":\n      {\n        // Draw directly to canvas\n        context.save();\n        context.fillStyle = element.strokeColor;\n        const path = getFreeDrawPath2D(element);\n        const fillShape = _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_13__.ShapeCache.get(element);\n\n        if (fillShape) {\n          rc.draw(fillShape);\n        }\n\n        context.fillStyle = element.strokeColor;\n        context.fill(path);\n        context.restore();\n        break;\n      }\n\n    case "image":\n      {\n        const img = (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isInitializedImageElement)(element) ? (_c = renderConfig.imageCache.get(element.fileId)) === null || _c === void 0 ? void 0 : _c.image : undefined;\n\n        if (img != null && !(img instanceof Promise)) {\n          context.drawImage(img, 0\n          /* hardcoded for the selection box*/\n          , 0, element.width, element.height);\n        } else {\n          drawImagePlaceholder(element, context, appState.zoom.value);\n        }\n\n        break;\n      }\n\n    default:\n      {\n        if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isTextElement)(element)) {\n          const rtl = (0,_utils__WEBPACK_IMPORTED_MODULE_2__.isRTL)(element.text);\n          const shouldTemporarilyAttach = rtl && !context.canvas.isConnected;\n\n          if (shouldTemporarilyAttach) {\n            // to correctly render RTL text mixed with LTR, we have to append it\n            // to the DOM\n            document.body.appendChild(context.canvas);\n          }\n\n          context.canvas.setAttribute("dir", rtl ? "rtl" : "ltr");\n          context.save();\n          context.font = (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getFontString)(element);\n          context.fillStyle = element.strokeColor;\n          context.textAlign = element.textAlign; // Canvas does not support multiline text by default\n\n          const lines = element.text.replace(/\\r\\n?/g, "\\n").split("\\n");\n          const horizontalOffset = element.textAlign === "center" ? element.width / 2 : element.textAlign === "right" ? element.width : 0;\n          const lineHeightPx = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_8__.getLineHeightInPx)(element.fontSize, element.lineHeight);\n          const verticalOffset = element.height - element.baseline;\n\n          for (let index = 0; index < lines.length; index++) {\n            context.fillText(lines[index], horizontalOffset, (index + 1) * lineHeightPx - verticalOffset);\n          }\n\n          context.restore();\n\n          if (shouldTemporarilyAttach) {\n            context.canvas.remove();\n          }\n        } else {\n          throw new Error(`Unimplemented type ${element.type}`);\n        }\n      }\n  }\n\n  context.globalAlpha = 1;\n};\n\nconst elementWithCanvasCache = new WeakMap();\n\nconst generateElementWithCanvas = (element, renderConfig, appState) => {\n  var _a, _b;\n\n  const zoom = renderConfig ? appState.zoom : defaultAppState.zoom;\n  const prevElementWithCanvas = elementWithCanvasCache.get(element);\n  const shouldRegenerateBecauseZoom = prevElementWithCanvas && prevElementWithCanvas.zoomValue !== zoom.value && !(appState === null || appState === void 0 ? void 0 : appState.shouldCacheIgnoreZoom);\n  const boundTextElementVersion = ((_a = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_8__.getBoundTextElement)(element)) === null || _a === void 0 ? void 0 : _a.version) || null;\n  const containingFrameOpacity = ((_b = (0,_frame__WEBPACK_IMPORTED_MODULE_11__.getContainingFrame)(element)) === null || _b === void 0 ? void 0 : _b.opacity) || 100;\n\n  if (!prevElementWithCanvas || shouldRegenerateBecauseZoom || prevElementWithCanvas.theme !== appState.theme || prevElementWithCanvas.boundTextElementVersion !== boundTextElementVersion || prevElementWithCanvas.containingFrameOpacity !== containingFrameOpacity) {\n    const elementWithCanvas = generateElementCanvas(element, zoom, renderConfig, appState);\n    elementWithCanvasCache.set(element, elementWithCanvas);\n    return elementWithCanvas;\n  }\n\n  return prevElementWithCanvas;\n};\n\nconst drawElementFromCanvas = (elementWithCanvas, context, renderConfig, appState) => {\n  const element = elementWithCanvas.element;\n  const padding = getCanvasPadding(element);\n  const zoom = elementWithCanvas.scale;\n  let [x1, y1, x2, y2] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_1__.getElementAbsoluteCoords)(element); // Free draw elements will otherwise "shuffle" as the min x and y change\n\n  if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isFreeDrawElement)(element)) {\n    x1 = Math.floor(x1);\n    x2 = Math.ceil(x2);\n    y1 = Math.floor(y1);\n    y2 = Math.ceil(y2);\n  }\n\n  const cx = ((x1 + x2) / 2 + appState.scrollX) * window.devicePixelRatio;\n  const cy = ((y1 + y2) / 2 + appState.scrollY) * window.devicePixelRatio;\n  context.save();\n  context.scale(1 / window.devicePixelRatio, 1 / window.devicePixelRatio);\n  const boundTextElement = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_8__.getBoundTextElement)(element);\n\n  if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isArrowElement)(element) && boundTextElement) {\n    const tempCanvas = document.createElement("canvas");\n    const tempCanvasContext = tempCanvas.getContext("2d"); // Take max dimensions of arrow canvas so that when canvas is rotated\n    // the arrow doesn\'t get clipped\n\n    const maxDim = Math.max((0,_utils__WEBPACK_IMPORTED_MODULE_2__.distance)(x1, x2), (0,_utils__WEBPACK_IMPORTED_MODULE_2__.distance)(y1, y2));\n    tempCanvas.width = maxDim * window.devicePixelRatio * zoom + padding * elementWithCanvas.scale * 10;\n    tempCanvas.height = maxDim * window.devicePixelRatio * zoom + padding * elementWithCanvas.scale * 10;\n    const offsetX = (tempCanvas.width - elementWithCanvas.canvas.width) / 2;\n    const offsetY = (tempCanvas.height - elementWithCanvas.canvas.height) / 2;\n    tempCanvasContext.translate(tempCanvas.width / 2, tempCanvas.height / 2);\n    tempCanvasContext.rotate(element.angle);\n    tempCanvasContext.drawImage(elementWithCanvas.canvas, -elementWithCanvas.canvas.width / 2, -elementWithCanvas.canvas.height / 2, elementWithCanvas.canvas.width, elementWithCanvas.canvas.height);\n    const [,,,, boundTextCx, boundTextCy] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_1__.getElementAbsoluteCoords)(boundTextElement);\n    tempCanvasContext.rotate(-element.angle); // Shift the canvas to the center of the bound text element\n\n    const shiftX = tempCanvas.width / 2 - (boundTextCx - x1) * window.devicePixelRatio * zoom - offsetX - padding * zoom;\n    const shiftY = tempCanvas.height / 2 - (boundTextCy - y1) * window.devicePixelRatio * zoom - offsetY - padding * zoom;\n    tempCanvasContext.translate(-shiftX, -shiftY); // Clear the bound text area\n\n    tempCanvasContext.clearRect(-(boundTextElement.width / 2 + _constants__WEBPACK_IMPORTED_MODULE_6__.BOUND_TEXT_PADDING) * window.devicePixelRatio * zoom, -(boundTextElement.height / 2 + _constants__WEBPACK_IMPORTED_MODULE_6__.BOUND_TEXT_PADDING) * window.devicePixelRatio * zoom, (boundTextElement.width + _constants__WEBPACK_IMPORTED_MODULE_6__.BOUND_TEXT_PADDING * 2) * window.devicePixelRatio * zoom, (boundTextElement.height + _constants__WEBPACK_IMPORTED_MODULE_6__.BOUND_TEXT_PADDING * 2) * window.devicePixelRatio * zoom);\n    context.translate(cx, cy);\n    context.drawImage(tempCanvas, -(x2 - x1) / 2 * window.devicePixelRatio - offsetX / zoom - padding, -(y2 - y1) / 2 * window.devicePixelRatio - offsetY / zoom - padding, tempCanvas.width / zoom, tempCanvas.height / zoom);\n  } else {\n    // we translate context to element center so that rotation and scale\n    // originates from the element center\n    context.translate(cx, cy);\n    context.rotate(element.angle);\n\n    if ("scale" in elementWithCanvas.element && !isPendingImageElement(element, renderConfig)) {\n      context.scale(elementWithCanvas.element.scale[0], elementWithCanvas.element.scale[1]);\n    } // revert afterwards we don\'t have account for it during drawing\n\n\n    context.translate(-cx, -cy);\n    context.drawImage(elementWithCanvas.canvas, (x1 + appState.scrollX) * window.devicePixelRatio - padding * elementWithCanvas.scale / elementWithCanvas.scale, (y1 + appState.scrollY) * window.devicePixelRatio - padding * elementWithCanvas.scale / elementWithCanvas.scale, elementWithCanvas.canvas.width / elementWithCanvas.scale, elementWithCanvas.canvas.height / elementWithCanvas.scale);\n\n    if (false) {}\n  }\n\n  context.restore(); // Clear the nested element we appended to the DOM\n};\n\nconst renderSelectionElement = (element, context, appState) => {\n  context.save();\n  context.translate(element.x + appState.scrollX, element.y + appState.scrollY);\n  context.fillStyle = "rgba(0, 0, 200, 0.04)"; // render from 0.5px offset  to get 1px wide line\n  // https://stackoverflow.com/questions/7530593/html5-canvas-and-line-width/7531540#7531540\n  // TODO can be be improved by offseting to the negative when user selects\n  // from right to left\n\n  const offset = 0.5 / appState.zoom.value;\n  context.fillRect(offset, offset, element.width, element.height);\n  context.lineWidth = 1 / appState.zoom.value;\n  context.strokeStyle = " rgb(105, 101, 219)";\n  context.strokeRect(offset, offset, element.width, element.height);\n  context.restore();\n};\nconst renderElement = (element, rc, context, renderConfig, appState) => {\n  switch (element.type) {\n    case "frame":\n      {\n        if (appState.frameRendering.enabled && appState.frameRendering.outline) {\n          context.save();\n          context.translate(element.x + appState.scrollX, element.y + appState.scrollY);\n          context.fillStyle = "rgba(0, 0, 200, 0.04)";\n          context.lineWidth = _constants__WEBPACK_IMPORTED_MODULE_6__.FRAME_STYLE.strokeWidth / appState.zoom.value;\n          context.strokeStyle = _constants__WEBPACK_IMPORTED_MODULE_6__.FRAME_STYLE.strokeColor;\n\n          if (_constants__WEBPACK_IMPORTED_MODULE_6__.FRAME_STYLE.radius && context.roundRect) {\n            context.beginPath();\n            context.roundRect(0, 0, element.width, element.height, _constants__WEBPACK_IMPORTED_MODULE_6__.FRAME_STYLE.radius / appState.zoom.value);\n            context.stroke();\n            context.closePath();\n          } else {\n            context.strokeRect(0, 0, element.width, element.height);\n          }\n\n          context.restore();\n        }\n\n        break;\n      }\n\n    case "freedraw":\n      {\n        // TODO investigate if we can do this in situ. Right now we need to call\n        // beforehand because math helpers (such as getElementAbsoluteCoords)\n        // rely on existing shapes\n        _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_13__.ShapeCache.generateElementShape(element);\n\n        if (renderConfig.isExporting) {\n          const [x1, y1, x2, y2] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_1__.getElementAbsoluteCoords)(element);\n          const cx = (x1 + x2) / 2 + appState.scrollX;\n          const cy = (y1 + y2) / 2 + appState.scrollY;\n          const shiftX = (x2 - x1) / 2 - (element.x - x1);\n          const shiftY = (y2 - y1) / 2 - (element.y - y1);\n          context.save();\n          context.translate(cx, cy);\n          context.rotate(element.angle);\n          context.translate(-shiftX, -shiftY);\n          drawElementOnCanvas(element, rc, context, renderConfig, appState);\n          context.restore();\n        } else {\n          const elementWithCanvas = generateElementWithCanvas(element, renderConfig, appState);\n          drawElementFromCanvas(elementWithCanvas, context, renderConfig, appState);\n        }\n\n        break;\n      }\n\n    case "rectangle":\n    case "diamond":\n    case "ellipse":\n    case "line":\n    case "arrow":\n    case "image":\n    case "text":\n    case "embeddable":\n      {\n        // TODO investigate if we can do this in situ. Right now we need to call\n        // beforehand because math helpers (such as getElementAbsoluteCoords)\n        // rely on existing shapes\n        _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_13__.ShapeCache.generateElementShape(element, renderConfig.isExporting);\n\n        if (renderConfig.isExporting) {\n          const [x1, y1, x2, y2] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_1__.getElementAbsoluteCoords)(element);\n          const cx = (x1 + x2) / 2 + appState.scrollX;\n          const cy = (y1 + y2) / 2 + appState.scrollY;\n          let shiftX = (x2 - x1) / 2 - (element.x - x1);\n          let shiftY = (y2 - y1) / 2 - (element.y - y1);\n\n          if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isTextElement)(element)) {\n            const container = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_8__.getContainerElement)(element);\n\n            if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isArrowElement)(container)) {\n              const boundTextCoords = _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_9__.LinearElementEditor.getBoundTextElementPosition(container, element);\n              shiftX = (x2 - x1) / 2 - (boundTextCoords.x - x1);\n              shiftY = (y2 - y1) / 2 - (boundTextCoords.y - y1);\n            }\n          }\n\n          context.save();\n          context.translate(cx, cy);\n\n          if (shouldResetImageFilter(element, renderConfig, appState)) {\n            context.filter = "none";\n          }\n\n          const boundTextElement = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_8__.getBoundTextElement)(element);\n\n          if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isArrowElement)(element) && boundTextElement) {\n            const tempCanvas = document.createElement("canvas");\n            const tempCanvasContext = tempCanvas.getContext("2d"); // Take max dimensions of arrow canvas so that when canvas is rotated\n            // the arrow doesn\'t get clipped\n\n            const maxDim = Math.max((0,_utils__WEBPACK_IMPORTED_MODULE_2__.distance)(x1, x2), (0,_utils__WEBPACK_IMPORTED_MODULE_2__.distance)(y1, y2));\n            const padding = getCanvasPadding(element);\n            tempCanvas.width = maxDim * appState.exportScale + padding * 10 * appState.exportScale;\n            tempCanvas.height = maxDim * appState.exportScale + padding * 10 * appState.exportScale;\n            tempCanvasContext.translate(tempCanvas.width / 2, tempCanvas.height / 2);\n            tempCanvasContext.scale(appState.exportScale, appState.exportScale); // Shift the canvas to left most point of the arrow\n\n            shiftX = element.width / 2 - (element.x - x1);\n            shiftY = element.height / 2 - (element.y - y1);\n            tempCanvasContext.rotate(element.angle);\n            const tempRc = roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_4__["default"].canvas(tempCanvas);\n            tempCanvasContext.translate(-shiftX, -shiftY);\n            drawElementOnCanvas(element, tempRc, tempCanvasContext, renderConfig, appState);\n            tempCanvasContext.translate(shiftX, shiftY);\n            tempCanvasContext.rotate(-element.angle); // Shift the canvas to center of bound text\n\n            const [,,,, boundTextCx, boundTextCy] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_1__.getElementAbsoluteCoords)(boundTextElement);\n            const boundTextShiftX = (x1 + x2) / 2 - boundTextCx;\n            const boundTextShiftY = (y1 + y2) / 2 - boundTextCy;\n            tempCanvasContext.translate(-boundTextShiftX, -boundTextShiftY); // Clear the bound text area\n\n            tempCanvasContext.clearRect(-boundTextElement.width / 2, -boundTextElement.height / 2, boundTextElement.width, boundTextElement.height);\n            context.scale(1 / appState.exportScale, 1 / appState.exportScale);\n            context.drawImage(tempCanvas, -tempCanvas.width / 2, -tempCanvas.height / 2, tempCanvas.width, tempCanvas.height);\n          } else {\n            context.rotate(element.angle);\n\n            if (element.type === "image") {\n              // note: scale must be applied *after* rotating\n              context.scale(element.scale[0], element.scale[1]);\n            }\n\n            context.translate(-shiftX, -shiftY);\n            drawElementOnCanvas(element, rc, context, renderConfig, appState);\n          }\n\n          context.restore(); // not exporting \u2192 optimized rendering (cache & render from element\n          // canvases)\n        } else {\n          const elementWithCanvas = generateElementWithCanvas(element, renderConfig, appState);\n          const currentImageSmoothingStatus = context.imageSmoothingEnabled;\n\n          if ( // do not disable smoothing during zoom as blurry shapes look better\n          // on low resolution (while still zooming in) than sharp ones\n          !(appState === null || appState === void 0 ? void 0 : appState.shouldCacheIgnoreZoom) && ( // angle is 0 -> always disable smoothing\n          !element.angle || // or check if angle is a right angle in which case we can still\n          // disable smoothing without adversely affecting the result\n          (0,_math__WEBPACK_IMPORTED_MODULE_3__.isRightAngle)(element.angle))) {\n            // Disabling smoothing makes output much sharper, especially for\n            // text. Unless for non-right angles, where the aliasing is really\n            // terrible on Chromium.\n            //\n            // Note that `context.imageSmoothingQuality="high"` has almost\n            // zero effect.\n            //\n            context.imageSmoothingEnabled = false;\n          }\n\n          drawElementFromCanvas(elementWithCanvas, context, renderConfig, appState); // reset\n\n          context.imageSmoothingEnabled = currentImageSmoothingStatus;\n        }\n\n        break;\n      }\n\n    default:\n      {\n        // @ts-ignore\n        throw new Error(`Unimplemented type ${element.type}`);\n      }\n  }\n};\n\nconst roughSVGDrawWithPrecision = (rsvg, drawable, precision) => {\n  if (typeof precision === "undefined") {\n    return rsvg.draw(drawable);\n  }\n\n  const pshape = {\n    sets: drawable.sets,\n    shape: drawable.shape,\n    options: Object.assign(Object.assign({}, drawable.options), {\n      fixedDecimalPlaceDigits: precision\n    })\n  };\n  return rsvg.draw(pshape);\n};\n\nconst maybeWrapNodesInFrameClipPath = (element, root, nodes, frameRendering) => {\n  if (!frameRendering.enabled || !frameRendering.clip) {\n    return null;\n  }\n\n  const frame = (0,_frame__WEBPACK_IMPORTED_MODULE_11__.getContainingFrame)(element);\n\n  if (frame) {\n    const g = root.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_6__.SVG_NS, "g");\n    g.setAttributeNS(_constants__WEBPACK_IMPORTED_MODULE_6__.SVG_NS, "clip-path", `url(#${frame.id})`);\n    nodes.forEach(node => g.appendChild(node));\n    return g;\n  }\n\n  return null;\n};\n\nconst renderElementToSvg = (element, rsvg, svgRoot, files, offsetX, offsetY, renderConfig) => {\n  var _a, _b, _c;\n\n  const offset = {\n    x: offsetX,\n    y: offsetY\n  };\n  const [x1, y1, x2, y2] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_1__.getElementAbsoluteCoords)(element);\n  let cx = (x2 - x1) / 2 - (element.x - x1);\n  let cy = (y2 - y1) / 2 - (element.y - y1);\n\n  if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isTextElement)(element)) {\n    const container = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_8__.getContainerElement)(element);\n\n    if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isArrowElement)(container)) {\n      const [x1, y1, x2, y2] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_1__.getElementAbsoluteCoords)(container);\n      const boundTextCoords = _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_9__.LinearElementEditor.getBoundTextElementPosition(container, element);\n      cx = (x2 - x1) / 2 - (boundTextCoords.x - x1);\n      cy = (y2 - y1) / 2 - (boundTextCoords.y - y1);\n      offsetX = offsetX + boundTextCoords.x - element.x;\n      offsetY = offsetY + boundTextCoords.y - element.y;\n    }\n  }\n\n  const degree = 180 * element.angle / Math.PI; // element to append node to, most of the time svgRoot\n\n  let root = svgRoot; // if the element has a link, create an anchor tag and make that the new root\n\n  if (element.link) {\n    const anchorTag = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_6__.SVG_NS, "a");\n    anchorTag.setAttribute("href", (0,_data_url__WEBPACK_IMPORTED_MODULE_12__.normalizeLink)(element.link));\n    root.appendChild(anchorTag);\n    root = anchorTag;\n  }\n\n  const addToRoot = (node, element) => {\n    if ((0,_utils__WEBPACK_IMPORTED_MODULE_2__.isTestEnv)()) {\n      node.setAttribute("data-id", element.id);\n    }\n\n    root.appendChild(node);\n  };\n\n  const opacity = ((_b = (_a = (0,_frame__WEBPACK_IMPORTED_MODULE_11__.getContainingFrame)(element)) === null || _a === void 0 ? void 0 : _a.opacity) !== null && _b !== void 0 ? _b : 100) * element.opacity / 10000;\n\n  switch (element.type) {\n    case "selection":\n      {\n        // Since this is used only during editing experience, which is canvas based,\n        // this should not happen\n        throw new Error("Selection rendering is not supported for SVG");\n      }\n\n    case "rectangle":\n    case "diamond":\n    case "ellipse":\n      {\n        const shape = _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_13__.ShapeCache.generateElementShape(element);\n        const node = roughSVGDrawWithPrecision(rsvg, shape, _constants__WEBPACK_IMPORTED_MODULE_6__.MAX_DECIMALS_FOR_SVG_EXPORT);\n\n        if (opacity !== 1) {\n          node.setAttribute("stroke-opacity", `${opacity}`);\n          node.setAttribute("fill-opacity", `${opacity}`);\n        }\n\n        node.setAttribute("stroke-linecap", "round");\n        node.setAttribute("transform", `translate(${offsetX || 0} ${offsetY || 0}) rotate(${degree} ${cx} ${cy})`);\n        const g = maybeWrapNodesInFrameClipPath(element, root, [node], renderConfig.frameRendering);\n        addToRoot(g || node, element);\n        break;\n      }\n\n    case "embeddable":\n      {\n        // render placeholder rectangle\n        const shape = _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_13__.ShapeCache.generateElementShape(element, true);\n        const node = roughSVGDrawWithPrecision(rsvg, shape, _constants__WEBPACK_IMPORTED_MODULE_6__.MAX_DECIMALS_FOR_SVG_EXPORT);\n        const opacity = element.opacity / 100;\n\n        if (opacity !== 1) {\n          node.setAttribute("stroke-opacity", `${opacity}`);\n          node.setAttribute("fill-opacity", `${opacity}`);\n        }\n\n        node.setAttribute("stroke-linecap", "round");\n        node.setAttribute("transform", `translate(${offsetX || 0} ${offsetY || 0}) rotate(${degree} ${cx} ${cy})`);\n        addToRoot(node, element);\n        const label = (0,_element_embeddable__WEBPACK_IMPORTED_MODULE_10__.createPlaceholderEmbeddableLabel)(element);\n        renderElementToSvg(label, rsvg, root, files, label.x + offset.x - element.x, label.y + offset.y - element.y, renderConfig); // render embeddable element + iframe\n\n        const embeddableNode = roughSVGDrawWithPrecision(rsvg, shape, _constants__WEBPACK_IMPORTED_MODULE_6__.MAX_DECIMALS_FOR_SVG_EXPORT);\n        embeddableNode.setAttribute("stroke-linecap", "round");\n        embeddableNode.setAttribute("transform", `translate(${offsetX || 0} ${offsetY || 0}) rotate(${degree} ${cx} ${cy})`);\n\n        while (embeddableNode.firstChild) {\n          embeddableNode.removeChild(embeddableNode.firstChild);\n        }\n\n        const radius = (0,_math__WEBPACK_IMPORTED_MODULE_3__.getCornerRadius)(Math.min(element.width, element.height), element);\n        const embedLink = (0,_element_embeddable__WEBPACK_IMPORTED_MODULE_10__.getEmbedLink)((0,_data_url__WEBPACK_IMPORTED_MODULE_12__.toValidURL)(element.link || "")); // if rendering embeddables explicitly disabled or\n        // embedding documents via srcdoc (which doesn\'t seem to work for SVGs)\n        // replace with a link instead\n\n        if (renderConfig.renderEmbeddables === false || (embedLink === null || embedLink === void 0 ? void 0 : embedLink.type) === "document") {\n          const anchorTag = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_6__.SVG_NS, "a");\n          anchorTag.setAttribute("href", (0,_data_url__WEBPACK_IMPORTED_MODULE_12__.normalizeLink)(element.link || ""));\n          anchorTag.setAttribute("target", "_blank");\n          anchorTag.setAttribute("rel", "noopener noreferrer");\n          anchorTag.style.borderRadius = `${radius}px`;\n          embeddableNode.appendChild(anchorTag);\n        } else {\n          const foreignObject = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_6__.SVG_NS, "foreignObject");\n          foreignObject.style.width = `${element.width}px`;\n          foreignObject.style.height = `${element.height}px`;\n          foreignObject.style.border = "none";\n          const div = foreignObject.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_6__.SVG_NS, "div");\n          div.setAttribute("xmlns", "http://www.w3.org/1999/xhtml");\n          div.style.width = "100%";\n          div.style.height = "100%";\n          const iframe = div.ownerDocument.createElement("iframe");\n          iframe.src = (_c = embedLink === null || embedLink === void 0 ? void 0 : embedLink.link) !== null && _c !== void 0 ? _c : "";\n          iframe.style.width = "100%";\n          iframe.style.height = "100%";\n          iframe.style.border = "none";\n          iframe.style.borderRadius = `${radius}px`;\n          iframe.style.top = "0";\n          iframe.style.left = "0";\n          iframe.allowFullscreen = true;\n          div.appendChild(iframe);\n          foreignObject.appendChild(div);\n          embeddableNode.appendChild(foreignObject);\n        }\n\n        addToRoot(embeddableNode, element);\n        break;\n      }\n\n    case "line":\n    case "arrow":\n      {\n        const boundText = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_8__.getBoundTextElement)(element);\n        const maskPath = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_6__.SVG_NS, "mask");\n\n        if (boundText) {\n          maskPath.setAttribute("id", `mask-${element.id}`);\n          const maskRectVisible = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_6__.SVG_NS, "rect");\n          offsetX = offsetX || 0;\n          offsetY = offsetY || 0;\n          maskRectVisible.setAttribute("x", "0");\n          maskRectVisible.setAttribute("y", "0");\n          maskRectVisible.setAttribute("fill", "#fff");\n          maskRectVisible.setAttribute("width", `${element.width + 100 + offsetX}`);\n          maskRectVisible.setAttribute("height", `${element.height + 100 + offsetY}`);\n          maskPath.appendChild(maskRectVisible);\n          const maskRectInvisible = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_6__.SVG_NS, "rect");\n          const boundTextCoords = _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_9__.LinearElementEditor.getBoundTextElementPosition(element, boundText);\n          const maskX = offsetX + boundTextCoords.x - element.x;\n          const maskY = offsetY + boundTextCoords.y - element.y;\n          maskRectInvisible.setAttribute("x", maskX.toString());\n          maskRectInvisible.setAttribute("y", maskY.toString());\n          maskRectInvisible.setAttribute("fill", "#000");\n          maskRectInvisible.setAttribute("width", `${boundText.width}`);\n          maskRectInvisible.setAttribute("height", `${boundText.height}`);\n          maskRectInvisible.setAttribute("opacity", "1");\n          maskPath.appendChild(maskRectInvisible);\n        }\n\n        const group = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_6__.SVG_NS, "g");\n\n        if (boundText) {\n          group.setAttribute("mask", `url(#mask-${element.id})`);\n        }\n\n        group.setAttribute("stroke-linecap", "round");\n        const shapes = _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_13__.ShapeCache.generateElementShape(element);\n        shapes.forEach(shape => {\n          const node = roughSVGDrawWithPrecision(rsvg, shape, _constants__WEBPACK_IMPORTED_MODULE_6__.MAX_DECIMALS_FOR_SVG_EXPORT);\n\n          if (opacity !== 1) {\n            node.setAttribute("stroke-opacity", `${opacity}`);\n            node.setAttribute("fill-opacity", `${opacity}`);\n          }\n\n          node.setAttribute("transform", `translate(${offsetX || 0} ${offsetY || 0}) rotate(${degree} ${cx} ${cy})`);\n\n          if (element.type === "line" && (0,_math__WEBPACK_IMPORTED_MODULE_3__.isPathALoop)(element.points) && element.backgroundColor !== "transparent") {\n            node.setAttribute("fill-rule", "evenodd");\n          }\n\n          group.appendChild(node);\n        });\n        const g = maybeWrapNodesInFrameClipPath(element, root, [group, maskPath], renderConfig.frameRendering);\n\n        if (g) {\n          addToRoot(g, element);\n          root.appendChild(g);\n        } else {\n          addToRoot(group, element);\n          root.append(maskPath);\n        }\n\n        break;\n      }\n\n    case "freedraw":\n      {\n        const backgroundFillShape = _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_13__.ShapeCache.generateElementShape(element);\n        const node = backgroundFillShape ? roughSVGDrawWithPrecision(rsvg, backgroundFillShape, _constants__WEBPACK_IMPORTED_MODULE_6__.MAX_DECIMALS_FOR_SVG_EXPORT) : svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_6__.SVG_NS, "g");\n\n        if (opacity !== 1) {\n          node.setAttribute("stroke-opacity", `${opacity}`);\n          node.setAttribute("fill-opacity", `${opacity}`);\n        }\n\n        node.setAttribute("transform", `translate(${offsetX || 0} ${offsetY || 0}) rotate(${degree} ${cx} ${cy})`);\n        node.setAttribute("stroke", "none");\n        const path = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_6__.SVG_NS, "path");\n        path.setAttribute("fill", element.strokeColor);\n        path.setAttribute("d", getFreeDrawSvgPath(element));\n        node.appendChild(path);\n        const g = maybeWrapNodesInFrameClipPath(element, root, [node], renderConfig.frameRendering);\n        addToRoot(g || node, element);\n        break;\n      }\n\n    case "image":\n      {\n        const width = Math.round(element.width);\n        const height = Math.round(element.height);\n        const fileData = (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isInitializedImageElement)(element) && files[element.fileId];\n\n        if (fileData) {\n          const symbolId = `image-${fileData.id}`;\n          let symbol = svgRoot.querySelector(`#${symbolId}`);\n\n          if (!symbol) {\n            symbol = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_6__.SVG_NS, "symbol");\n            symbol.id = symbolId;\n            const image = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_6__.SVG_NS, "image");\n            image.setAttribute("width", "100%");\n            image.setAttribute("height", "100%");\n            image.setAttribute("href", fileData.dataURL);\n            symbol.appendChild(image);\n            root.prepend(symbol);\n          }\n\n          const use = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_6__.SVG_NS, "use");\n          use.setAttribute("href", `#${symbolId}`); // in dark theme, revert the image color filter\n\n          if (renderConfig.exportWithDarkMode && fileData.mimeType !== _constants__WEBPACK_IMPORTED_MODULE_6__.MIME_TYPES.svg) {\n            use.setAttribute("filter", IMAGE_INVERT_FILTER);\n          }\n\n          use.setAttribute("width", `${width}`);\n          use.setAttribute("height", `${height}`);\n          use.setAttribute("opacity", `${opacity}`); // We first apply `scale` transforms (horizontal/vertical mirroring)\n          // on the <use> element, then apply translation and rotation\n          // on the <g> element which wraps the <use>.\n          // Doing this separately is a quick hack to to work around compositing\n          // the transformations correctly (the transform-origin was not being\n          // applied correctly).\n\n          if (element.scale[0] !== 1 || element.scale[1] !== 1) {\n            const translateX = element.scale[0] !== 1 ? -width : 0;\n            const translateY = element.scale[1] !== 1 ? -height : 0;\n            use.setAttribute("transform", `scale(${element.scale[0]}, ${element.scale[1]}) translate(${translateX} ${translateY})`);\n          }\n\n          const g = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_6__.SVG_NS, "g");\n          g.appendChild(use);\n          g.setAttribute("transform", `translate(${offsetX || 0} ${offsetY || 0}) rotate(${degree} ${cx} ${cy})`);\n          const clipG = maybeWrapNodesInFrameClipPath(element, root, [g], renderConfig.frameRendering);\n          addToRoot(clipG || g, element);\n        }\n\n        break;\n      }\n    // frames are not rendered and only acts as a container\n\n    case "frame":\n      {\n        if (renderConfig.frameRendering.enabled && renderConfig.frameRendering.outline) {\n          const rect = document.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_6__.SVG_NS, "rect");\n          rect.setAttribute("transform", `translate(${offsetX || 0} ${offsetY || 0}) rotate(${degree} ${cx} ${cy})`);\n          rect.setAttribute("width", `${element.width}px`);\n          rect.setAttribute("height", `${element.height}px`); // Rounded corners\n\n          rect.setAttribute("rx", _constants__WEBPACK_IMPORTED_MODULE_6__.FRAME_STYLE.radius.toString());\n          rect.setAttribute("ry", _constants__WEBPACK_IMPORTED_MODULE_6__.FRAME_STYLE.radius.toString());\n          rect.setAttribute("fill", "none");\n          rect.setAttribute("stroke", _constants__WEBPACK_IMPORTED_MODULE_6__.FRAME_STYLE.strokeColor);\n          rect.setAttribute("stroke-width", _constants__WEBPACK_IMPORTED_MODULE_6__.FRAME_STYLE.strokeWidth.toString());\n          addToRoot(rect, element);\n        }\n\n        break;\n      }\n\n    default:\n      {\n        if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isTextElement)(element)) {\n          const node = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_6__.SVG_NS, "g");\n\n          if (opacity !== 1) {\n            node.setAttribute("stroke-opacity", `${opacity}`);\n            node.setAttribute("fill-opacity", `${opacity}`);\n          }\n\n          node.setAttribute("transform", `translate(${offsetX || 0} ${offsetY || 0}) rotate(${degree} ${cx} ${cy})`);\n          const lines = element.text.replace(/\\r\\n?/g, "\\n").split("\\n");\n          const lineHeightPx = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_8__.getLineHeightInPx)(element.fontSize, element.lineHeight);\n          const horizontalOffset = element.textAlign === "center" ? element.width / 2 : element.textAlign === "right" ? element.width : 0;\n          const direction = (0,_utils__WEBPACK_IMPORTED_MODULE_2__.isRTL)(element.text) ? "rtl" : "ltr";\n          const textAnchor = element.textAlign === "center" ? "middle" : element.textAlign === "right" || direction === "rtl" ? "end" : "start";\n\n          for (let i = 0; i < lines.length; i++) {\n            const text = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_6__.SVG_NS, "text");\n            text.textContent = lines[i];\n            text.setAttribute("x", `${horizontalOffset}`);\n            text.setAttribute("y", `${i * lineHeightPx}`);\n            text.setAttribute("font-family", (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getFontFamilyString)(element));\n            text.setAttribute("font-size", `${element.fontSize}px`);\n            text.setAttribute("fill", element.strokeColor);\n            text.setAttribute("text-anchor", textAnchor);\n            text.setAttribute("style", "white-space: pre;");\n            text.setAttribute("direction", direction);\n            text.setAttribute("dominant-baseline", "text-before-edge");\n            node.appendChild(text);\n          }\n\n          const g = maybeWrapNodesInFrameClipPath(element, root, [node], renderConfig.frameRendering);\n          addToRoot(g || node, element);\n        } else {\n          // @ts-ignore\n          throw new Error(`Unimplemented type ${element.type}`);\n        }\n      }\n  }\n};\nconst pathsCache = new WeakMap([]);\nfunction generateFreeDrawShape(element) {\n  const svgPathData = getFreeDrawSvgPath(element);\n  const path = new Path2D(svgPathData);\n  pathsCache.set(element, path);\n  return path;\n}\nfunction getFreeDrawPath2D(element) {\n  return pathsCache.get(element);\n}\nfunction getFreeDrawSvgPath(element) {\n  // If input points are empty (should they ever be?) return a dot\n  const inputPoints = element.simulatePressure ? element.points : element.points.length ? element.points.map(([x, y], i) => [x, y, element.pressures[i]]) : [[0, 0, 0.5]]; // Consider changing the options for simulated pressure vs real pressure\n\n  const options = {\n    simulatePressure: element.simulatePressure,\n    size: element.strokeWidth * 4.25,\n    thinning: 0.6,\n    smoothing: 0.5,\n    streamline: 0.5,\n    easing: t => Math.sin(t * Math.PI / 2),\n    last: !!element.lastCommittedPoint // LastCommittedPoint is added on pointerup\n\n  };\n  return getSvgPathFromStroke((0,perfect_freehand__WEBPACK_IMPORTED_MODULE_7__.getStroke)(inputPoints, options));\n}\n\nfunction med(A, B) {\n  return [(A[0] + B[0]) / 2, (A[1] + B[1]) / 2];\n} // Trim SVG path data so number are each two decimal points. This\n// improves SVG exports, and prevents rendering errors on points\n// with long decimals.\n\n\nconst TO_FIXED_PRECISION = /(\\s?[A-Z]?,?-?[0-9]*\\.[0-9]{0,2})(([0-9]|e|-)*)/g;\n\nfunction getSvgPathFromStroke(points) {\n  if (!points.length) {\n    return "";\n  }\n\n  const max = points.length - 1;\n  return points.reduce((acc, point, i, arr) => {\n    if (i === max) {\n      acc.push(point, med(point, arr[0]), "L", arr[0], "Z");\n    } else {\n      acc.push(point, med(point, arr[i + 1]));\n    }\n\n    return acc;\n  }, ["M", points[0], "Q"]).join(" ").replace(TO_FIXED_PRECISION, "$1");\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 68124 characters]\n//# sourceURL=webpack-internal:///../../renderer/renderElement.ts\n');
              }
            ),
            /***/
            "../../renderer/renderScene.ts": (
              /*!*************************************!*\
                !*** ../../renderer/renderScene.ts ***!
                \*************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "DEFAULT_SPACING": () => (/* binding */ DEFAULT_SPACING),
/* harmony export */   "cancelRender": () => (/* binding */ cancelRender),
/* harmony export */   "renderInteractiveScene": () => (/* binding */ renderInteractiveScene),
/* harmony export */   "renderSceneToSvg": () => (/* binding */ renderSceneToSvg),
/* harmony export */   "renderStaticScene": () => (/* binding */ renderStaticScene)
/* harmony export */ });
/* harmony import */ var open_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! open-color */ "../../../node_modules/open-color/open-color.json");
/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../element */ "../../element/index.ts");
/* harmony import */ var _roundRect__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./roundRect */ "../../renderer/roundRect.ts");
/* harmony import */ var _scene_scrollbars__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../scene/scrollbars */ "../../scene/scrollbars.ts");
/* harmony import */ var _renderElement__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./renderElement */ "../../renderer/renderElement.ts");
/* harmony import */ var _clients__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../clients */ "../../clients.ts");
/* harmony import */ var _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../element/linearElementEditor */ "../../element/linearElementEditor.ts");
/* harmony import */ var _groups__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../groups */ "../../groups.ts");
/* harmony import */ var _element_collision__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../element/collision */ "../../element/collision.ts");
/* harmony import */ var _element_transformHandles__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../element/transformHandles */ "../../element/transformHandles.ts");
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../utils */ "../../utils.ts");
/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../types */ "../../types.ts");
/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../constants */ "../../constants.ts");
/* harmony import */ var _element_Hyperlink__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../element/Hyperlink */ "../../element/Hyperlink.tsx");
/* harmony import */ var _renderSnaps__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./renderSnaps */ "../../renderer/renderSnaps.ts");
/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../element/typeChecks */ "../../element/typeChecks.ts");
/* harmony import */ var _element_embeddable__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../element/embeddable */ "../../element/embeddable.ts");
/* harmony import */ var _frame__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../frame */ "../../frame.ts");
/* harmony import */ var canvas_roundrect_polyfill__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! canvas-roundrect-polyfill */ "../../../node_modules/canvas-roundrect-polyfill/roundRect.js");
/* harmony import */ var canvas_roundrect_polyfill__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(canvas_roundrect_polyfill__WEBPACK_IMPORTED_MODULE_18__);



















const DEFAULT_SPACING = 2;

const strokeRectWithRotation = (context, x, y, width, height, cx, cy, angle, fill = false,
/** should account for zoom */
radius = 0) => {
  context.save();
  context.translate(cx, cy);
  context.rotate(angle);

  if (fill) {
    context.fillRect(x - cx, y - cy, width, height);
  }

  if (radius && context.roundRect) {
    context.beginPath();
    context.roundRect(x - cx, y - cy, width, height, radius);
    context.stroke();
    context.closePath();
  } else {
    context.strokeRect(x - cx, y - cy, width, height);
  }

  context.restore();
};

const strokeDiamondWithRotation = (context, width, height, cx, cy, angle) => {
  context.save();
  context.translate(cx, cy);
  context.rotate(angle);
  context.beginPath();
  context.moveTo(0, height / 2);
  context.lineTo(width / 2, 0);
  context.lineTo(0, -height / 2);
  context.lineTo(-width / 2, 0);
  context.closePath();
  context.stroke();
  context.restore();
};

const strokeEllipseWithRotation = (context, width, height, cx, cy, angle) => {
  context.beginPath();
  context.ellipse(cx, cy, width / 2, height / 2, angle, 0, Math.PI * 2);
  context.stroke();
};

const fillCircle = (context, cx, cy, radius, stroke = true) => {
  context.beginPath();
  context.arc(cx, cy, radius, 0, Math.PI * 2);
  context.fill();

  if (stroke) {
    context.stroke();
  }
};

const strokeGrid = (context, gridSize, scrollX, scrollY, zoom, width, height) => {
  const BOLD_LINE_FREQUENCY = 5;
  let GridLineColor;

  (function (GridLineColor) {
    GridLineColor["Bold"] = "#cccccc";
    GridLineColor["Regular"] = "#e5e5e5";
  })(GridLineColor || (GridLineColor = {}));

  const offsetX = -Math.round(zoom.value / gridSize) * gridSize + scrollX % gridSize;
  const offsetY = -Math.round(zoom.value / gridSize) * gridSize + scrollY % gridSize;
  const lineWidth = Math.min(1 / zoom.value, 1);
  const spaceWidth = 1 / zoom.value;
  const lineDash = [lineWidth * 3, spaceWidth + (lineWidth + spaceWidth)];
  context.save();
  context.lineWidth = lineWidth;

  for (let x = offsetX; x < offsetX + width + gridSize * 2; x += gridSize) {
    const isBold = Math.round(x - scrollX) % (BOLD_LINE_FREQUENCY * gridSize) === 0;
    context.beginPath();
    context.setLineDash(isBold ? [] : lineDash);
    context.strokeStyle = isBold ? GridLineColor.Bold : GridLineColor.Regular;
    context.moveTo(x, offsetY - gridSize);
    context.lineTo(x, offsetY + height + gridSize * 2);
    context.stroke();
  }

  for (let y = offsetY; y < offsetY + height + gridSize * 2; y += gridSize) {
    const isBold = Math.round(y - scrollY) % (BOLD_LINE_FREQUENCY * gridSize) === 0;
    context.beginPath();
    context.setLineDash(isBold ? [] : lineDash);
    context.strokeStyle = isBold ? GridLineColor.Bold : GridLineColor.Regular;
    context.moveTo(offsetX - gridSize, y);
    context.lineTo(offsetX + width + gridSize * 2, y);
    context.stroke();
  }

  context.restore();
};

const renderSingleLinearPoint = (context, appState, point, radius, isSelected, isPhantomPoint = false) => {
  context.strokeStyle = "#5e5ad8";
  context.setLineDash([]);
  context.fillStyle = "rgba(255, 255, 255, 0.9)";

  if (isSelected) {
    context.fillStyle = "rgba(134, 131, 226, 0.9)";
  } else if (isPhantomPoint) {
    context.fillStyle = "rgba(177, 151, 252, 0.7)";
  }

  fillCircle(context, point[0], point[1], radius / appState.zoom.value, !isPhantomPoint);
};

const renderLinearPointHandles = (context, appState, element) => {
  if (!appState.selectedLinearElement) {
    return;
  }

  context.save();
  context.translate(appState.scrollX, appState.scrollY);
  context.lineWidth = 1 / appState.zoom.value;
  const points = _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_6__.LinearElementEditor.getPointsGlobalCoordinates(element);
  const {
    POINT_HANDLE_SIZE
  } = _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_6__.LinearElementEditor;
  const radius = appState.editingLinearElement ? POINT_HANDLE_SIZE : POINT_HANDLE_SIZE / 2;
  points.forEach((point, idx) => {
    var _a, _b;

    const isSelected = !!((_b = (_a = appState.editingLinearElement) === null || _a === void 0 ? void 0 : _a.selectedPointsIndices) === null || _b === void 0 ? void 0 : _b.includes(idx));
    renderSingleLinearPoint(context, appState, point, radius, isSelected);
  }); //Rendering segment mid points

  const midPoints = _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_6__.LinearElementEditor.getEditorMidPoints(element, appState).filter(midPoint => midPoint !== null);
  midPoints.forEach(segmentMidPoint => {
    var _a;

    if (((_a = appState === null || appState === void 0 ? void 0 : appState.selectedLinearElement) === null || _a === void 0 ? void 0 : _a.segmentMidPointHoveredCoords) && _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_6__.LinearElementEditor.arePointsEqual(segmentMidPoint, appState.selectedLinearElement.segmentMidPointHoveredCoords)) {
      // The order of renderingSingleLinearPoint and highLight points is different
      // inside vs outside editor as hover states are different,
      // in editor when hovered the original point is not visible as hover state fully covers it whereas outside the
      // editor original point is visible and hover state is just an outer circle.
      if (appState.editingLinearElement) {
        renderSingleLinearPoint(context, appState, segmentMidPoint, radius, false);
        highlightPoint(segmentMidPoint, context, appState);
      } else {
        highlightPoint(segmentMidPoint, context, appState);
        renderSingleLinearPoint(context, appState, segmentMidPoint, radius, false);
      }
    } else if (appState.editingLinearElement || points.length === 2) {
      renderSingleLinearPoint(context, appState, segmentMidPoint, POINT_HANDLE_SIZE / 2, false, true);
    }
  });
  context.restore();
};

const highlightPoint = (point, context, appState) => {
  context.fillStyle = "rgba(105, 101, 219, 0.4)";
  fillCircle(context, point[0], point[1], _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_6__.LinearElementEditor.POINT_HANDLE_SIZE / appState.zoom.value, false);
};

const renderLinearElementPointHighlight = (context, appState) => {
  var _a, _b;

  const {
    elementId,
    hoverPointIndex
  } = appState.selectedLinearElement;

  if ((_b = (_a = appState.editingLinearElement) === null || _a === void 0 ? void 0 : _a.selectedPointsIndices) === null || _b === void 0 ? void 0 : _b.includes(hoverPointIndex)) {
    return;
  }

  const element = _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_6__.LinearElementEditor.getElement(elementId);

  if (!element) {
    return;
  }

  const point = _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_6__.LinearElementEditor.getPointAtIndexGlobalCoordinates(element, hoverPointIndex);
  context.save();
  context.translate(appState.scrollX, appState.scrollY);
  highlightPoint(point, context, appState);
  context.restore();
};

const frameClip = (frame, context, renderConfig, appState) => {
  context.translate(frame.x + appState.scrollX, frame.y + appState.scrollY);
  context.beginPath();

  if (context.roundRect) {
    context.roundRect(0, 0, frame.width, frame.height, _constants__WEBPACK_IMPORTED_MODULE_12__.FRAME_STYLE.radius / appState.zoom.value);
  } else {
    context.rect(0, 0, frame.width, frame.height);
  }

  context.clip();
  context.translate(-(frame.x + appState.scrollX), -(frame.y + appState.scrollY));
};

const getNormalizedCanvasDimensions = (canvas, scale) => {
  // When doing calculations based on canvas width we should used normalized one
  return [canvas.width / scale, canvas.height / scale];
};

const bootstrapCanvas = ({
  canvas,
  scale,
  normalizedWidth,
  normalizedHeight,
  theme,
  isExporting,
  viewBackgroundColor
}) => {
  const context = canvas.getContext("2d");
  context.setTransform(1, 0, 0, 1, 0, 0);
  context.scale(scale, scale);

  if (isExporting && theme === "dark") {
    context.filter = _constants__WEBPACK_IMPORTED_MODULE_12__.THEME_FILTER;
  } // Paint background


  if (typeof viewBackgroundColor === "string") {
    const hasTransparence = viewBackgroundColor === "transparent" || viewBackgroundColor.length === 5 || // #RGBA
    viewBackgroundColor.length === 9 || // #RRGGBBA
    /(hsla|rgba)\\(/.test(viewBackgroundColor);

    if (hasTransparence) {
      context.clearRect(0, 0, normalizedWidth, normalizedHeight);
    }

    context.save();
    context.fillStyle = viewBackgroundColor;
    context.fillRect(0, 0, normalizedWidth, normalizedHeight);
    context.restore();
  } else {
    context.clearRect(0, 0, normalizedWidth, normalizedHeight);
  }

  return context;
};

const _renderInteractiveScene = ({
  canvas,
  elements,
  visibleElements,
  selectedElements,
  scale,
  appState,
  renderConfig
}) => {
  var _a, _b;

  if (canvas === null) {
    return {
      atLeastOneVisibleElement: false,
      elements
    };
  }

  const [normalizedWidth, normalizedHeight] = getNormalizedCanvasDimensions(canvas, scale);
  const context = bootstrapCanvas({
    canvas,
    scale,
    normalizedWidth,
    normalizedHeight
  }); // Apply zoom

  context.save();
  context.scale(appState.zoom.value, appState.zoom.value);
  let editingLinearElement = undefined;
  visibleElements.forEach(element => {
    var _a; // Getting the element using LinearElementEditor during collab mismatches version - being one head of visible elements due to
    // ShapeCache returns empty hence making sure that we get the
    // correct element from visible elements


    if (((_a = appState.editingLinearElement) === null || _a === void 0 ? void 0 : _a.elementId) === element.id) {
      if (element) {
        editingLinearElement = element;
      }
    }
  });

  if (editingLinearElement) {
    renderLinearPointHandles(context, appState, editingLinearElement);
  } // Paint selection element


  if (appState.selectionElement) {
    try {
      (0,_renderElement__WEBPACK_IMPORTED_MODULE_4__.renderSelectionElement)(appState.selectionElement, context, appState);
    } catch (error) {
      console.error(error);
    }
  }

  if (appState.isBindingEnabled) {
    appState.suggestedBindings.filter(binding => binding != null).forEach(suggestedBinding => {
      renderBindingHighlight(context, appState, suggestedBinding);
    });
  }

  if (appState.frameToHighlight) {
    renderFrameHighlight(context, appState, appState.frameToHighlight);
  }

  if (appState.elementsToHighlight) {
    renderElementsBoxHighlight(context, appState, appState.elementsToHighlight);
  }

  const isFrameSelected = selectedElements.some(element => (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_15__.isFrameElement)(element)); // Getting the element using LinearElementEditor during collab mismatches version - being one head of visible elements due to
  // ShapeCache returns empty hence making sure that we get the
  // correct element from visible elements

  if (selectedElements.length === 1 && ((_a = appState.editingLinearElement) === null || _a === void 0 ? void 0 : _a.elementId) === selectedElements[0].id) {
    renderLinearPointHandles(context, appState, selectedElements[0]);
  }

  if (appState.selectedLinearElement && appState.selectedLinearElement.hoverPointIndex >= 0) {
    renderLinearElementPointHighlight(context, appState);
  } // Paint selected elements


  if (!appState.multiElement && !appState.editingLinearElement) {
    const showBoundingBox = (0,_element_transformHandles__WEBPACK_IMPORTED_MODULE_9__.shouldShowBoundingBox)(selectedElements, appState);
    const isSingleLinearElementSelected = selectedElements.length === 1 && (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_15__.isLinearElement)(selectedElements[0]); // render selected linear element points

    if (isSingleLinearElementSelected && ((_b = appState.selectedLinearElement) === null || _b === void 0 ? void 0 : _b.elementId) === selectedElements[0].id && !selectedElements[0].locked) {
      renderLinearPointHandles(context, appState, selectedElements[0]);
    }

    const selectionColor = renderConfig.selectionColor || open_color__WEBPACK_IMPORTED_MODULE_0__.black;

    if (showBoundingBox) {
      // Optimisation for finding quickly relevant element ids
      const locallySelectedIds = selectedElements.reduce((acc, element) => {
        acc[element.id] = true;
        return acc;
      }, {});
      const selections = elements.reduce((acc, element) => {
        var _a;

        const selectionColors = []; // local user

        if (locallySelectedIds[element.id] && !(0,_groups__WEBPACK_IMPORTED_MODULE_7__.isSelectedViaGroup)(appState, element)) {
          selectionColors.push(selectionColor);
        } // remote users


        if (renderConfig.remoteSelectedElementIds[element.id]) {
          selectionColors.push(...renderConfig.remoteSelectedElementIds[element.id].map(socketId => {
            const background = (0,_clients__WEBPACK_IMPORTED_MODULE_5__.getClientColor)(socketId);
            return background;
          }));
        }

        if (selectionColors.length) {
          const [elementX1, elementY1, elementX2, elementY2, cx, cy] = (0,_element__WEBPACK_IMPORTED_MODULE_1__.getElementAbsoluteCoords)(element, true);
          acc.push({
            angle: element.angle,
            elementX1,
            elementY1,
            elementX2,
            elementY2,
            selectionColors,
            dashed: !!renderConfig.remoteSelectedElementIds[element.id],
            cx,
            cy,
            activeEmbeddable: ((_a = appState.activeEmbeddable) === null || _a === void 0 ? void 0 : _a.element) === element && appState.activeEmbeddable.state === "active"
          });
        }

        return acc;
      }, []);

      const addSelectionForGroupId = groupId => {
        const groupElements = (0,_groups__WEBPACK_IMPORTED_MODULE_7__.getElementsInGroup)(elements, groupId);
        const [elementX1, elementY1, elementX2, elementY2] = (0,_element__WEBPACK_IMPORTED_MODULE_1__.getCommonBounds)(groupElements);
        selections.push({
          angle: 0,
          elementX1,
          elementX2,
          elementY1,
          elementY2,
          selectionColors: [open_color__WEBPACK_IMPORTED_MODULE_0__.black],
          dashed: true,
          cx: elementX1 + (elementX2 - elementX1) / 2,
          cy: elementY1 + (elementY2 - elementY1) / 2,
          activeEmbeddable: false
        });
      };

      for (const groupId of (0,_groups__WEBPACK_IMPORTED_MODULE_7__.getSelectedGroupIds)(appState)) {
        // TODO: support multiplayer selected group IDs
        addSelectionForGroupId(groupId);
      }

      if (appState.editingGroupId) {
        addSelectionForGroupId(appState.editingGroupId);
      }

      selections.forEach(selection => renderSelectionBorder(context, appState, selection));
    } // Paint resize transformHandles


    context.save();
    context.translate(appState.scrollX, appState.scrollY);

    if (selectedElements.length === 1) {
      context.fillStyle = open_color__WEBPACK_IMPORTED_MODULE_0__.white;
      const transformHandles = (0,_element__WEBPACK_IMPORTED_MODULE_1__.getTransformHandles)(selectedElements[0], appState.zoom, "mouse");

      if (!appState.viewModeEnabled && showBoundingBox) {
        renderTransformHandles(context, renderConfig, appState, transformHandles, selectedElements[0].angle);
      }
    } else if (selectedElements.length > 1 && !appState.isRotating) {
      const dashedLinePadding = DEFAULT_SPACING * 2 / appState.zoom.value;
      context.fillStyle = open_color__WEBPACK_IMPORTED_MODULE_0__.white;
      const [x1, y1, x2, y2] = (0,_element__WEBPACK_IMPORTED_MODULE_1__.getCommonBounds)(selectedElements);
      const initialLineDash = context.getLineDash();
      context.setLineDash([2 / appState.zoom.value]);
      const lineWidth = context.lineWidth;
      context.lineWidth = 1 / appState.zoom.value;
      context.strokeStyle = selectionColor;
      strokeRectWithRotation(context, x1 - dashedLinePadding, y1 - dashedLinePadding, x2 - x1 + dashedLinePadding * 2, y2 - y1 + dashedLinePadding * 2, (x1 + x2) / 2, (y1 + y2) / 2, 0);
      context.lineWidth = lineWidth;
      context.setLineDash(initialLineDash);
      const transformHandles = (0,_element__WEBPACK_IMPORTED_MODULE_1__.getTransformHandlesFromCoords)([x1, y1, x2, y2, (x1 + x2) / 2, (y1 + y2) / 2], 0, appState.zoom, "mouse", isFrameSelected ? _element_transformHandles__WEBPACK_IMPORTED_MODULE_9__.OMIT_SIDES_FOR_FRAME : _element__WEBPACK_IMPORTED_MODULE_1__.OMIT_SIDES_FOR_MULTIPLE_ELEMENTS);

      if (selectedElements.some(element => !element.locked)) {
        renderTransformHandles(context, renderConfig, appState, transformHandles, 0);
      }
    }

    context.restore();
  }

  (0,_renderSnaps__WEBPACK_IMPORTED_MODULE_14__.renderSnaps)(context, appState); // Reset zoom

  context.restore(); // Paint remote pointers

  for (const clientId in renderConfig.remotePointerViewportCoords) {
    let {
      x,
      y
    } = renderConfig.remotePointerViewportCoords[clientId];
    x -= appState.offsetLeft;
    y -= appState.offsetTop;
    const width = 11;
    const height = 14;
    const isOutOfBounds = x < 0 || x > normalizedWidth - width || y < 0 || y > normalizedHeight - height;
    x = Math.max(x, 0);
    x = Math.min(x, normalizedWidth - width);
    y = Math.max(y, 0);
    y = Math.min(y, normalizedHeight - height);
    const background = (0,_clients__WEBPACK_IMPORTED_MODULE_5__.getClientColor)(clientId);
    context.save();
    context.strokeStyle = background;
    context.fillStyle = background;
    const userState = renderConfig.remotePointerUserStates[clientId];
    const isInactive = isOutOfBounds || userState === _types__WEBPACK_IMPORTED_MODULE_11__.UserIdleState.IDLE || userState === _types__WEBPACK_IMPORTED_MODULE_11__.UserIdleState.AWAY;

    if (isInactive) {
      context.globalAlpha = 0.3;
    }

    if (renderConfig.remotePointerButton && renderConfig.remotePointerButton[clientId] === "down") {
      context.beginPath();
      context.arc(x, y, 15, 0, 2 * Math.PI, false);
      context.lineWidth = 3;
      context.strokeStyle = "#ffffff88";
      context.stroke();
      context.closePath();
      context.beginPath();
      context.arc(x, y, 15, 0, 2 * Math.PI, false);
      context.lineWidth = 1;
      context.strokeStyle = background;
      context.stroke();
      context.closePath();
    } // Background (white outline) for arrow


    context.fillStyle = open_color__WEBPACK_IMPORTED_MODULE_0__.white;
    context.strokeStyle = open_color__WEBPACK_IMPORTED_MODULE_0__.white;
    context.lineWidth = 6;
    context.lineJoin = "round";
    context.beginPath();
    context.moveTo(x, y);
    context.lineTo(x + 0, y + 14);
    context.lineTo(x + 4, y + 9);
    context.lineTo(x + 11, y + 8);
    context.closePath();
    context.stroke();
    context.fill(); // Arrow

    context.fillStyle = background;
    context.strokeStyle = background;
    context.lineWidth = 2;
    context.lineJoin = "round";
    context.beginPath();

    if (isInactive) {
      context.moveTo(x - 1, y - 1);
      context.lineTo(x - 1, y + 15);
      context.lineTo(x + 5, y + 10);
      context.lineTo(x + 12, y + 9);
      context.closePath();
      context.fill();
    } else {
      context.moveTo(x, y);
      context.lineTo(x + 0, y + 14);
      context.lineTo(x + 4, y + 9);
      context.lineTo(x + 11, y + 8);
      context.closePath();
      context.fill();
      context.stroke();
    }

    const username = renderConfig.remotePointerUsernames[clientId] || "";

    if (!isOutOfBounds && username) {
      context.font = "600 12px sans-serif"; // font has to be set before context.measureText()

      const offsetX = x + width / 2;
      const offsetY = y + height + 2;
      const paddingHorizontal = 5;
      const paddingVertical = 3;
      const measure = context.measureText(username);
      const measureHeight = measure.actualBoundingBoxDescent + measure.actualBoundingBoxAscent;
      const finalHeight = Math.max(measureHeight, 12);
      const boxX = offsetX - 1;
      const boxY = offsetY - 1;
      const boxWidth = measure.width + 2 + paddingHorizontal * 2 + 2;
      const boxHeight = finalHeight + 2 + paddingVertical * 2 + 2;

      if (context.roundRect) {
        context.beginPath();
        context.roundRect(boxX, boxY, boxWidth, boxHeight, 8);
        context.fillStyle = background;
        context.fill();
        context.strokeStyle = open_color__WEBPACK_IMPORTED_MODULE_0__.white;
        context.stroke();
      } else {
        (0,_roundRect__WEBPACK_IMPORTED_MODULE_2__.roundRect)(context, boxX, boxY, boxWidth, boxHeight, 8, open_color__WEBPACK_IMPORTED_MODULE_0__.white);
      }

      context.fillStyle = open_color__WEBPACK_IMPORTED_MODULE_0__.black;
      context.fillText(username, offsetX + paddingHorizontal + 1, offsetY + paddingVertical + measure.actualBoundingBoxAscent + Math.floor((finalHeight - measureHeight) / 2) + 2);
    }

    context.restore();
    context.closePath();
  } // Paint scrollbars


  let scrollBars;

  if (renderConfig.renderScrollbars) {
    scrollBars = (0,_scene_scrollbars__WEBPACK_IMPORTED_MODULE_3__.getScrollBars)(elements, normalizedWidth, normalizedHeight, appState);
    context.save();
    context.fillStyle = _scene_scrollbars__WEBPACK_IMPORTED_MODULE_3__.SCROLLBAR_COLOR;
    context.strokeStyle = "rgba(255,255,255,0.8)";
    [scrollBars.horizontal, scrollBars.vertical].forEach(scrollBar => {
      if (scrollBar) {
        (0,_roundRect__WEBPACK_IMPORTED_MODULE_2__.roundRect)(context, scrollBar.x, scrollBar.y, scrollBar.width, scrollBar.height, _scene_scrollbars__WEBPACK_IMPORTED_MODULE_3__.SCROLLBAR_WIDTH / 2);
      }
    });
    context.restore();
  }

  return {
    scrollBars,
    atLeastOneVisibleElement: visibleElements.length > 0,
    elements
  };
};

const _renderStaticScene = ({
  canvas,
  rc,
  elements,
  visibleElements,
  scale,
  appState,
  renderConfig
}) => {
  if (canvas === null) {
    return;
  }

  const {
    renderGrid = true,
    isExporting
  } = renderConfig;
  const [normalizedWidth, normalizedHeight] = getNormalizedCanvasDimensions(canvas, scale);
  const context = bootstrapCanvas({
    canvas,
    scale,
    normalizedWidth,
    normalizedHeight,
    theme: appState.theme,
    isExporting,
    viewBackgroundColor: appState.viewBackgroundColor
  }); // Apply zoom

  context.scale(appState.zoom.value, appState.zoom.value); // Grid

  if (renderGrid && appState.gridSize) {
    strokeGrid(context, appState.gridSize, appState.scrollX, appState.scrollY, appState.zoom, normalizedWidth / appState.zoom.value, normalizedHeight / appState.zoom.value);
  }

  const groupsToBeAddedToFrame = new Set();
  visibleElements.forEach(element => {
    if (element.groupIds.length > 0 && appState.frameToHighlight && appState.selectedElementIds[element.id] && ((0,_frame__WEBPACK_IMPORTED_MODULE_17__.elementOverlapsWithFrame)(element, appState.frameToHighlight) || element.groupIds.find(groupId => groupsToBeAddedToFrame.has(groupId)))) {
      element.groupIds.forEach(groupId => groupsToBeAddedToFrame.add(groupId));
    }
  }); // Paint visible elements

  visibleElements.filter(el => !(0,_element_embeddable__WEBPACK_IMPORTED_MODULE_16__.isEmbeddableOrLabel)(el)).forEach(element => {
    var _a;

    try {
      const frameId = element.frameId || ((_a = appState.frameToHighlight) === null || _a === void 0 ? void 0 : _a.id);

      if (frameId && appState.frameRendering.enabled && appState.frameRendering.clip) {
        context.save();
        const frame = (0,_frame__WEBPACK_IMPORTED_MODULE_17__.getTargetFrame)(element, appState); // TODO do we need to check isElementInFrame here?

        if (frame && (0,_frame__WEBPACK_IMPORTED_MODULE_17__.isElementInFrame)(element, elements, appState)) {
          frameClip(frame, context, renderConfig, appState);
        }

        (0,_renderElement__WEBPACK_IMPORTED_MODULE_4__.renderElement)(element, rc, context, renderConfig, appState);
        context.restore();
      } else {
        (0,_renderElement__WEBPACK_IMPORTED_MODULE_4__.renderElement)(element, rc, context, renderConfig, appState);
      }

      if (!isExporting) {
        renderLinkIcon(element, context, appState);
      }
    } catch (error) {
      console.error(error);
    }
  }); // render embeddables on top

  visibleElements.filter(el => (0,_element_embeddable__WEBPACK_IMPORTED_MODULE_16__.isEmbeddableOrLabel)(el)).forEach(element => {
    var _a;

    try {
      const render = () => {
        (0,_renderElement__WEBPACK_IMPORTED_MODULE_4__.renderElement)(element, rc, context, renderConfig, appState);

        if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_15__.isEmbeddableElement)(element) && (isExporting || !element.validated) && element.width && element.height) {
          const label = (0,_element_embeddable__WEBPACK_IMPORTED_MODULE_16__.createPlaceholderEmbeddableLabel)(element);
          (0,_renderElement__WEBPACK_IMPORTED_MODULE_4__.renderElement)(label, rc, context, renderConfig, appState);
        }

        if (!isExporting) {
          renderLinkIcon(element, context, appState);
        }
      }; // - when exporting the whole canvas, we DO NOT apply clipping
      // - when we are exporting a particular frame, apply clipping
      //   if the containing frame is not selected, apply clipping


      const frameId = element.frameId || ((_a = appState.frameToHighlight) === null || _a === void 0 ? void 0 : _a.id);

      if (frameId && appState.frameRendering.enabled && appState.frameRendering.clip) {
        context.save();
        const frame = (0,_frame__WEBPACK_IMPORTED_MODULE_17__.getTargetFrame)(element, appState);

        if (frame && (0,_frame__WEBPACK_IMPORTED_MODULE_17__.isElementInFrame)(element, elements, appState)) {
          frameClip(frame, context, renderConfig, appState);
        }

        render();
        context.restore();
      } else {
        render();
      }
    } catch (error) {
      console.error(error);
    }
  });
};
/** throttled to animation framerate */


const renderInteractiveSceneThrottled = (0,_utils__WEBPACK_IMPORTED_MODULE_10__.throttleRAF)(config => {
  var _a;

  const ret = _renderInteractiveScene(config);

  (_a = config.callback) === null || _a === void 0 ? void 0 : _a.call(config, ret);
}, {
  trailing: true
});
/**
 * Interactive scene is the ui-canvas where we render boundinb boxes, selections
 * and other ui stuff.
 */

const renderInteractiveScene = (renderConfig, throttle) => {
  if (throttle) {
    renderInteractiveSceneThrottled(renderConfig);
    return undefined;
  }

  const ret = _renderInteractiveScene(renderConfig);

  renderConfig.callback(ret);
  return ret;
};
/** throttled to animation framerate */

const renderStaticSceneThrottled = (0,_utils__WEBPACK_IMPORTED_MODULE_10__.throttleRAF)(config => {
  _renderStaticScene(config);
}, {
  trailing: true
});
/**
 * Static scene is the non-ui canvas where we render elements.
 */

const renderStaticScene = (renderConfig, throttle) => {
  if (throttle) {
    renderStaticSceneThrottled(renderConfig);
    return;
  }

  _renderStaticScene(renderConfig);
};
const cancelRender = () => {
  renderInteractiveSceneThrottled.cancel();
  renderStaticSceneThrottled.cancel();
};

const renderTransformHandles = (context, renderConfig, appState, transformHandles, angle) => {
  Object.keys(transformHandles).forEach(key => {
    const transformHandle = transformHandles[key];

    if (transformHandle !== undefined) {
      const [x, y, width, height] = transformHandle;
      context.save();
      context.lineWidth = 1 / appState.zoom.value;

      if (renderConfig.selectionColor) {
        context.strokeStyle = renderConfig.selectionColor;
      }

      if (key === "rotation") {
        fillCircle(context, x + width / 2, y + height / 2, width / 2); // prefer round corners if roundRect API is available
      } else if (context.roundRect) {
        context.beginPath();
        context.roundRect(x, y, width, height, 2 / appState.zoom.value);
        context.fill();
        context.stroke();
      } else {
        strokeRectWithRotation(context, x, y, width, height, x + width / 2, y + height / 2, angle, true);
      }

      context.restore();
    }
  });
};

const renderSelectionBorder = (context, appState, elementProperties, padding = DEFAULT_SPACING * 2) => {
  const {
    angle,
    elementX1,
    elementY1,
    elementX2,
    elementY2,
    selectionColors,
    cx,
    cy,
    dashed,
    activeEmbeddable
  } = elementProperties;
  const elementWidth = elementX2 - elementX1;
  const elementHeight = elementY2 - elementY1;
  const linePadding = padding / appState.zoom.value;
  const lineWidth = 8 / appState.zoom.value;
  const spaceWidth = 4 / appState.zoom.value;
  context.save();
  context.translate(appState.scrollX, appState.scrollY);
  context.lineWidth = (activeEmbeddable ? 4 : 1) / appState.zoom.value;
  const count = selectionColors.length;

  for (let index = 0; index < count; ++index) {
    context.strokeStyle = selectionColors[index];

    if (dashed) {
      context.setLineDash([lineWidth, spaceWidth + (lineWidth + spaceWidth) * (count - 1)]);
    }

    context.lineDashOffset = (lineWidth + spaceWidth) * index;
    strokeRectWithRotation(context, elementX1 - linePadding, elementY1 - linePadding, elementWidth + linePadding * 2, elementHeight + linePadding * 2, cx, cy, angle);
  }

  context.restore();
};

const renderBindingHighlight = (context, appState, suggestedBinding) => {
  const renderHighlight = Array.isArray(suggestedBinding) ? renderBindingHighlightForSuggestedPointBinding : renderBindingHighlightForBindableElement;
  context.save();
  context.translate(appState.scrollX, appState.scrollY);
  renderHighlight(context, suggestedBinding);
  context.restore();
};

const renderBindingHighlightForBindableElement = (context, element) => {
  const [x1, y1, x2, y2] = (0,_element__WEBPACK_IMPORTED_MODULE_1__.getElementAbsoluteCoords)(element);
  const width = x2 - x1;
  const height = y2 - y1;
  const threshold = (0,_element_collision__WEBPACK_IMPORTED_MODULE_8__.maxBindingGap)(element, width, height); // So that we don't overlap the element itself

  const strokeOffset = 4;
  context.strokeStyle = "rgba(0,0,0,.05)";
  context.lineWidth = threshold - strokeOffset;
  const padding = strokeOffset / 2 + threshold / 2;

  switch (element.type) {
    case "rectangle":
    case "text":
    case "image":
    case "embeddable":
    case "frame":
      strokeRectWithRotation(context, x1 - padding, y1 - padding, width + padding * 2, height + padding * 2, x1 + width / 2, y1 + height / 2, element.angle);
      break;

    case "diamond":
      const side = Math.hypot(width, height);
      const wPadding = padding * side / height;
      const hPadding = padding * side / width;
      strokeDiamondWithRotation(context, width + wPadding * 2, height + hPadding * 2, x1 + width / 2, y1 + height / 2, element.angle);
      break;

    case "ellipse":
      strokeEllipseWithRotation(context, width + padding * 2, height + padding * 2, x1 + width / 2, y1 + height / 2, element.angle);
      break;
  }
};

const renderFrameHighlight = (context, appState, frame) => {
  const [x1, y1, x2, y2] = (0,_element__WEBPACK_IMPORTED_MODULE_1__.getElementAbsoluteCoords)(frame);
  const width = x2 - x1;
  const height = y2 - y1;
  context.strokeStyle = "rgb(0,118,255)";
  context.lineWidth = _constants__WEBPACK_IMPORTED_MODULE_12__.FRAME_STYLE.strokeWidth / appState.zoom.value;
  context.save();
  context.translate(appState.scrollX, appState.scrollY);
  strokeRectWithRotation(context, x1, y1, width, height, x1 + width / 2, y1 + height / 2, frame.angle, false, _constants__WEBPACK_IMPORTED_MODULE_12__.FRAME_STYLE.radius / appState.zoom.value);
  context.restore();
};

const renderElementsBoxHighlight = (context, appState, elements) => {
  const individualElements = elements.filter(element => element.groupIds.length === 0);
  const elementsInGroups = elements.filter(element => element.groupIds.length > 0);

  const getSelectionFromElements = elements => {
    const [elementX1, elementY1, elementX2, elementY2] = (0,_element__WEBPACK_IMPORTED_MODULE_1__.getCommonBounds)(elements);
    return {
      angle: 0,
      elementX1,
      elementX2,
      elementY1,
      elementY2,
      selectionColors: ["rgb(0,118,255)"],
      dashed: false,
      cx: elementX1 + (elementX2 - elementX1) / 2,
      cy: elementY1 + (elementY2 - elementY1) / 2,
      activeEmbeddable: false
    };
  };

  const getSelectionForGroupId = groupId => {
    const groupElements = (0,_groups__WEBPACK_IMPORTED_MODULE_7__.getElementsInGroup)(elements, groupId);
    return getSelectionFromElements(groupElements);
  };

  Object.entries((0,_groups__WEBPACK_IMPORTED_MODULE_7__.selectGroupsFromGivenElements)(elementsInGroups, appState)).filter(([id, isSelected]) => isSelected).map(([id, isSelected]) => id).map(groupId => getSelectionForGroupId(groupId)).concat(individualElements.map(element => getSelectionFromElements([element]))).forEach(selection => renderSelectionBorder(context, appState, selection));
};

const renderBindingHighlightForSuggestedPointBinding = (context, suggestedBinding) => {
  const [element, startOrEnd, bindableElement] = suggestedBinding;
  const threshold = (0,_element_collision__WEBPACK_IMPORTED_MODULE_8__.maxBindingGap)(bindableElement, bindableElement.width, bindableElement.height);
  context.strokeStyle = "rgba(0,0,0,0)";
  context.fillStyle = "rgba(0,0,0,.05)";
  const pointIndices = startOrEnd === "both" ? [0, -1] : startOrEnd === "start" ? [0] : [-1];
  pointIndices.forEach(index => {
    const [x, y] = _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_6__.LinearElementEditor.getPointAtIndexGlobalCoordinates(element, index);
    fillCircle(context, x, y, threshold);
  });
};

let linkCanvasCache;

const renderLinkIcon = (element, context, appState) => {
  if (element.link && !appState.selectedElementIds[element.id]) {
    const [x1, y1, x2, y2] = (0,_element__WEBPACK_IMPORTED_MODULE_1__.getElementAbsoluteCoords)(element);
    const [x, y, width, height] = (0,_element_Hyperlink__WEBPACK_IMPORTED_MODULE_13__.getLinkHandleFromCoords)([x1, y1, x2, y2], element.angle, appState);
    const centerX = x + width / 2;
    const centerY = y + height / 2;
    context.save();
    context.translate(appState.scrollX + centerX, appState.scrollY + centerY);
    context.rotate(element.angle);

    if (!linkCanvasCache || linkCanvasCache.zoom !== appState.zoom.value) {
      linkCanvasCache = document.createElement("canvas");
      linkCanvasCache.zoom = appState.zoom.value;
      linkCanvasCache.width = width * window.devicePixelRatio * appState.zoom.value;
      linkCanvasCache.height = height * window.devicePixelRatio * appState.zoom.value;
      const linkCanvasCacheContext = linkCanvasCache.getContext("2d");
      linkCanvasCacheContext.scale(window.devicePixelRatio * appState.zoom.value, window.devicePixelRatio * appState.zoom.value);
      linkCanvasCacheContext.fillStyle = "#fff";
      linkCanvasCacheContext.fillRect(0, 0, width, height);
      linkCanvasCacheContext.drawImage(_element_Hyperlink__WEBPACK_IMPORTED_MODULE_13__.EXTERNAL_LINK_IMG, 0, 0, width, height);
      linkCanvasCacheContext.restore();
      context.drawImage(linkCanvasCache, x - centerX, y - centerY, width, height);
    } else {
      context.drawImage(linkCanvasCache, x - centerX, y - centerY, width, height);
    }

    context.restore();
  }
}; // This should be only called for exporting purposes


const renderSceneToSvg = (elements, rsvg, svgRoot, files, {
  offsetX = 0,
  offsetY = 0,
  exportWithDarkMode,
  renderEmbeddables,
  frameRendering
}) => {
  if (!svgRoot) {
    return;
  }

  const renderConfig = {
    exportWithDarkMode,
    renderEmbeddables,
    frameRendering
  }; // render elements

  elements.filter(el => !(0,_element_embeddable__WEBPACK_IMPORTED_MODULE_16__.isEmbeddableOrLabel)(el)).forEach(element => {
    if (!element.isDeleted) {
      try {
        (0,_renderElement__WEBPACK_IMPORTED_MODULE_4__.renderElementToSvg)(element, rsvg, svgRoot, files, element.x + offsetX, element.y + offsetY, renderConfig);
      } catch (error) {
        console.error(error);
      }
    }
  }); // render embeddables on top

  elements.filter(el => (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_15__.isEmbeddableElement)(el)).forEach(element => {
    if (!element.isDeleted) {
      try {
        (0,_renderElement__WEBPACK_IMPORTED_MODULE_4__.renderElementToSvg)(element, rsvg, svgRoot, files, element.x + offsetX, element.y + offsetY, renderConfig);
      } catch (error) {
        console.error(error);
      }
    }
  });
};//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 55876 characters]
//# sourceURL=webpack-internal:///../../renderer/renderScene.ts
`);
              }
            ),
            /***/
            "../../renderer/renderSnaps.ts": (
              /*!*************************************!*\
                !*** ../../renderer/renderSnaps.ts ***!
                \*************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "renderSnaps": () => (/* binding */ renderSnaps)
/* harmony export */ });
const SNAP_COLOR_LIGHT = "#ff6b6b";
const SNAP_COLOR_DARK = "#ff0000";
const SNAP_WIDTH = 1;
const SNAP_CROSS_SIZE = 2;
const renderSnaps = (context, appState) => {
  if (!appState.snapLines.length) {
    return;
  } // in dark mode, we need to adjust the color to account for color inversion.
  // Don't change if zen mode, because we draw only crosses, we want the
  // colors to be more visible


  const snapColor = appState.theme === "light" || appState.zenModeEnabled ? SNAP_COLOR_LIGHT : SNAP_COLOR_DARK; // in zen mode make the cross more visible since we don't draw the lines

  const snapWidth = (appState.zenModeEnabled ? SNAP_WIDTH * 1.5 : SNAP_WIDTH) / appState.zoom.value;
  context.save();
  context.translate(appState.scrollX, appState.scrollY);

  for (const snapLine of appState.snapLines) {
    if (snapLine.type === "pointer") {
      context.lineWidth = snapWidth;
      context.strokeStyle = snapColor;
      drawPointerSnapLine(snapLine, context, appState);
    } else if (snapLine.type === "gap") {
      context.lineWidth = snapWidth;
      context.strokeStyle = snapColor;
      drawGapLine(snapLine.points[0], snapLine.points[1], snapLine.direction, appState, context);
    } else if (snapLine.type === "points") {
      context.lineWidth = snapWidth;
      context.strokeStyle = snapColor;
      drawPointsSnapLine(snapLine, context, appState);
    }
  }

  context.restore();
};

const drawPointsSnapLine = (pointSnapLine, context, appState) => {
  if (!appState.zenModeEnabled) {
    const firstPoint = pointSnapLine.points[0];
    const lastPoint = pointSnapLine.points[pointSnapLine.points.length - 1];
    drawLine(firstPoint, lastPoint, context);
  }

  for (const point of pointSnapLine.points) {
    drawCross(point, appState, context);
  }
};

const drawPointerSnapLine = (pointerSnapLine, context, appState) => {
  drawCross(pointerSnapLine.points[0], appState, context);

  if (!appState.zenModeEnabled) {
    drawLine(pointerSnapLine.points[0], pointerSnapLine.points[1], context);
  }
};

const drawCross = ([x, y], appState, context) => {
  context.save();
  const size = (appState.zenModeEnabled ? SNAP_CROSS_SIZE * 1.5 : SNAP_CROSS_SIZE) / appState.zoom.value;
  context.beginPath();
  context.moveTo(x - size, y - size);
  context.lineTo(x + size, y + size);
  context.moveTo(x + size, y - size);
  context.lineTo(x - size, y + size);
  context.stroke();
  context.restore();
};

const drawLine = (from, to, context) => {
  context.beginPath();
  context.lineTo(...from);
  context.lineTo(...to);
  context.stroke();
};

const drawGapLine = (from, to, direction, appState, context) => {
  // a horizontal gap snap line
  // |\u2013\u2013\u2013\u2013\u2013\u2013\u2013||\u2013\u2013\u2013\u2013\u2013\u2013\u2013|
  // ^    ^   ^       ^
  // \\    \\   \\       \\
  // (1)  (2) (3)     (4)
  const FULL = 8 / appState.zoom.value;
  const HALF = FULL / 2;
  const QUARTER = FULL / 4;

  if (direction === "horizontal") {
    const halfPoint = [(from[0] + to[0]) / 2, from[1]]; // (1)

    if (!appState.zenModeEnabled) {
      drawLine([from[0], from[1] - FULL], [from[0], from[1] + FULL], context);
    } // (3)


    drawLine([halfPoint[0] - QUARTER, halfPoint[1] - HALF], [halfPoint[0] - QUARTER, halfPoint[1] + HALF], context);
    drawLine([halfPoint[0] + QUARTER, halfPoint[1] - HALF], [halfPoint[0] + QUARTER, halfPoint[1] + HALF], context);

    if (!appState.zenModeEnabled) {
      // (4)
      drawLine([to[0], to[1] - FULL], [to[0], to[1] + FULL], context); // (2)

      drawLine(from, to, context);
    }
  } else {
    const halfPoint = [from[0], (from[1] + to[1]) / 2]; // (1)

    if (!appState.zenModeEnabled) {
      drawLine([from[0] - FULL, from[1]], [from[0] + FULL, from[1]], context);
    } // (3)


    drawLine([halfPoint[0] - HALF, halfPoint[1] - QUARTER], [halfPoint[0] + HALF, halfPoint[1] - QUARTER], context);
    drawLine([halfPoint[0] - HALF, halfPoint[1] + QUARTER], [halfPoint[0] + HALF, halfPoint[1] + QUARTER], context);

    if (!appState.zenModeEnabled) {
      // (4)
      drawLine([to[0] - FULL, to[1]], [to[0] + FULL, to[1]], context); // (2)

      drawLine(from, to, context);
    }
  }
};//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6732 characters]
//# sourceURL=webpack-internal:///../../renderer/renderSnaps.ts
`);
              }
            ),
            /***/
            "../../renderer/roundRect.ts": (
              /*!***********************************!*\
                !*** ../../renderer/roundRect.ts ***!
                \***********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "roundRect": () => (/* binding */ roundRect)\n/* harmony export */ });\n/**\n * https://stackoverflow.com/a/3368118\n * Draws a rounded rectangle using the current state of the canvas.\n * @param {CanvasRenderingContext2D} context\n * @param {Number} x The top left x coordinate\n * @param {Number} y The top left y coordinate\n * @param {Number} width The width of the rectangle\n * @param {Number} height The height of the rectangle\n * @param {Number} radius The corner radius\n */\nconst roundRect = (context, x, y, width, height, radius, strokeColor) => {\n  context.beginPath();\n  context.moveTo(x + radius, y);\n  context.lineTo(x + width - radius, y);\n  context.quadraticCurveTo(x + width, y, x + width, y + radius);\n  context.lineTo(x + width, y + height - radius);\n  context.quadraticCurveTo(x + width, y + height, x + width - radius, y + height);\n  context.lineTo(x + radius, y + height);\n  context.quadraticCurveTo(x, y + height, x, y + height - radius);\n  context.lineTo(x, y + radius);\n  context.quadraticCurveTo(x, y, x + radius, y);\n  context.closePath();\n  context.fill();\n\n  if (strokeColor) {\n    context.strokeStyle = strokeColor;\n  }\n\n  context.stroke();\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vcmVuZGVyZXIvcm91bmRSZWN0LnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLDBCQUEwQjtBQUNyQyxXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vcmVuZGVyZXIvcm91bmRSZWN0LnRzP2NhZmIiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMzM2ODExOFxuICogRHJhd3MgYSByb3VuZGVkIHJlY3RhbmdsZSB1c2luZyB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgY2FudmFzLlxuICogQHBhcmFtIHtDYW52YXNSZW5kZXJpbmdDb250ZXh0MkR9IGNvbnRleHRcbiAqIEBwYXJhbSB7TnVtYmVyfSB4IFRoZSB0b3AgbGVmdCB4IGNvb3JkaW5hdGVcbiAqIEBwYXJhbSB7TnVtYmVyfSB5IFRoZSB0b3AgbGVmdCB5IGNvb3JkaW5hdGVcbiAqIEBwYXJhbSB7TnVtYmVyfSB3aWR0aCBUaGUgd2lkdGggb2YgdGhlIHJlY3RhbmdsZVxuICogQHBhcmFtIHtOdW1iZXJ9IGhlaWdodCBUaGUgaGVpZ2h0IG9mIHRoZSByZWN0YW5nbGVcbiAqIEBwYXJhbSB7TnVtYmVyfSByYWRpdXMgVGhlIGNvcm5lciByYWRpdXNcbiAqL1xuZXhwb3J0IGNvbnN0IHJvdW5kUmVjdCA9IChjb250ZXh0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCByYWRpdXMsIHN0cm9rZUNvbG9yKSA9PiB7XG4gIGNvbnRleHQuYmVnaW5QYXRoKCk7XG4gIGNvbnRleHQubW92ZVRvKHggKyByYWRpdXMsIHkpO1xuICBjb250ZXh0LmxpbmVUbyh4ICsgd2lkdGggLSByYWRpdXMsIHkpO1xuICBjb250ZXh0LnF1YWRyYXRpY0N1cnZlVG8oeCArIHdpZHRoLCB5LCB4ICsgd2lkdGgsIHkgKyByYWRpdXMpO1xuICBjb250ZXh0LmxpbmVUbyh4ICsgd2lkdGgsIHkgKyBoZWlnaHQgLSByYWRpdXMpO1xuICBjb250ZXh0LnF1YWRyYXRpY0N1cnZlVG8oeCArIHdpZHRoLCB5ICsgaGVpZ2h0LCB4ICsgd2lkdGggLSByYWRpdXMsIHkgKyBoZWlnaHQpO1xuICBjb250ZXh0LmxpbmVUbyh4ICsgcmFkaXVzLCB5ICsgaGVpZ2h0KTtcbiAgY29udGV4dC5xdWFkcmF0aWNDdXJ2ZVRvKHgsIHkgKyBoZWlnaHQsIHgsIHkgKyBoZWlnaHQgLSByYWRpdXMpO1xuICBjb250ZXh0LmxpbmVUbyh4LCB5ICsgcmFkaXVzKTtcbiAgY29udGV4dC5xdWFkcmF0aWNDdXJ2ZVRvKHgsIHksIHggKyByYWRpdXMsIHkpO1xuICBjb250ZXh0LmNsb3NlUGF0aCgpO1xuICBjb250ZXh0LmZpbGwoKTtcblxuICBpZiAoc3Ryb2tlQ29sb3IpIHtcbiAgICBjb250ZXh0LnN0cm9rZVN0eWxlID0gc3Ryb2tlQ29sb3I7XG4gIH1cblxuICBjb250ZXh0LnN0cm9rZSgpO1xufTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../renderer/roundRect.ts\n');
              }
            ),
            /***/
            "../../scene/Fonts.ts": (
              /*!****************************!*\
                !*** ../../scene/Fonts.ts ***!
                \****************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "Fonts": () => (/* binding */ Fonts)\n/* harmony export */ });\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _element_mutateElement__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../element/mutateElement */ "../../element/mutateElement.ts");\n/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../element/typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _ShapeCache__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./ShapeCache */ "../../scene/ShapeCache.ts");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator["throw"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n\n\n\nclass Fonts {\n  constructor({\n    scene,\n    onSceneUpdated\n  }) {\n    /**\n     * if we load a (new) font, it\'s likely that text elements using it have\n     * already been rendered using a fallback font. Thus, we want invalidate\n     * their shapes and rerender. See #637.\n     *\n     * Invalidates text elements and rerenders scene, provided that at least one\n     * of the supplied fontFaces has not already been processed.\n     */\n    this.onFontsLoaded = fontFaces => {\n      if ( // bail if all fonts with have been processed. We\'re checking just a\n      // subset of the font properties (though it should be enough), so it\n      // can technically bail on a false positive.\n      fontFaces.every(fontFace => {\n        const sig = `${fontFace.family}-${fontFace.style}-${fontFace.weight}`;\n\n        if (Fonts.loadedFontFaces.has(sig)) {\n          return true;\n        }\n\n        Fonts.loadedFontFaces.add(sig);\n        return false;\n      })) {\n        return false;\n      }\n\n      let didUpdate = false;\n      this.scene.mapElements(element => {\n        if ((0,_element__WEBPACK_IMPORTED_MODULE_0__.isTextElement)(element) && !(0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_2__.isBoundToContainer)(element)) {\n          _ShapeCache__WEBPACK_IMPORTED_MODULE_4__.ShapeCache["delete"](element);\n          didUpdate = true;\n          return (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_1__.newElementWith)(element, Object.assign({}, (0,_element__WEBPACK_IMPORTED_MODULE_0__.refreshTextDimensions)(element)));\n        }\n\n        return element;\n      });\n\n      if (didUpdate) {\n        this.onSceneUpdated();\n      }\n    };\n\n    this.loadFontsForElements = elements => __awaiter(this, void 0, void 0, function* () {\n      const fontFaces = yield Promise.all([...new Set(elements.filter(element => (0,_element__WEBPACK_IMPORTED_MODULE_0__.isTextElement)(element)).map(element => element.fontFamily))].map(fontFamily => {\n        var _a, _b, _c, _d;\n\n        const fontString = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.getFontString)({\n          fontFamily,\n          fontSize: 16\n        });\n\n        if (!((_b = (_a = document.fonts) === null || _a === void 0 ? void 0 : _a.check) === null || _b === void 0 ? void 0 : _b.call(_a, fontString))) {\n          return (_d = (_c = document.fonts) === null || _c === void 0 ? void 0 : _c.load) === null || _d === void 0 ? void 0 : _d.call(_c, fontString);\n        }\n\n        return undefined;\n      }));\n      this.onFontsLoaded(fontFaces.flat().filter(Boolean));\n    });\n\n    this.scene = scene;\n    this.onSceneUpdated = onSceneUpdated;\n  }\n\n} // it\'s ok to track fonts across multiple instances only once, so let\'s use\n// a static member to reduce memory footprint\n\nFonts.loadedFontFaces = new Set();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5944 characters]\n//# sourceURL=webpack-internal:///../../scene/Fonts.ts\n');
              }
            ),
            /***/
            "../../scene/Renderer.ts": (
              /*!*******************************!*\
                !*** ../../scene/Renderer.ts ***!
                \*******************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "Renderer": () => (/* binding */ Renderer)
/* harmony export */ });
/* harmony import */ var _element_sizeHelpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../element/sizeHelpers */ "../../element/sizeHelpers.ts");
/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../element/typeChecks */ "../../element/typeChecks.ts");
/* harmony import */ var _renderer_renderScene__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../renderer/renderScene */ "../../renderer/renderScene.ts");
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils */ "../../utils.ts");




class Renderer {
  constructor(scene) {
    this.getRenderableElements = (() => {
      const getVisibleCanvasElements = ({
        elements,
        zoom,
        offsetLeft,
        offsetTop,
        scrollX,
        scrollY,
        height,
        width
      }) => {
        return elements.filter(element => (0,_element_sizeHelpers__WEBPACK_IMPORTED_MODULE_0__.isElementInViewport)(element, width, height, {
          zoom,
          offsetLeft,
          offsetTop,
          scrollX,
          scrollY
        }));
      };

      const getCanvasElements = ({
        editingElement,
        elements,
        pendingImageElementId
      }) => {
        return elements.filter(element => {
          if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isImageElement)(element)) {
            if ( // => not placed on canvas yet (but in elements array)
            pendingImageElementId === element.id) {
              return false;
            }
          } // we don't want to render text element that's being currently edited
          // (it's rendered on remote only)


          return !editingElement || editingElement.type !== "text" || element.id !== editingElement.id;
        });
      };

      return (0,_utils__WEBPACK_IMPORTED_MODULE_3__.memoize)(({
        zoom,
        offsetLeft,
        offsetTop,
        scrollX,
        scrollY,
        height,
        width,
        editingElement,
        pendingImageElementId,
        // unused but serves we cache on it to invalidate elements if they
        // get mutated
        versionNonce: _versionNonce
      }) => {
        const elements = this.scene.getNonDeletedElements();
        const canvasElements = getCanvasElements({
          elements,
          editingElement,
          pendingImageElementId
        });
        const visibleElements = getVisibleCanvasElements({
          elements: canvasElements,
          zoom,
          offsetLeft,
          offsetTop,
          scrollX,
          scrollY,
          height,
          width
        });
        return {
          canvasElements,
          visibleElements
        };
      });
    })();

    this.scene = scene;
  } // NOTE Doesn't destroy everything (scene, rc, etc.) because it may not be
  // safe to break TS contract here (for upstream cases)


  destroy() {
    (0,_renderer_renderScene__WEBPACK_IMPORTED_MODULE_2__.cancelRender)();
    this.getRenderableElements.clear();
  }

}//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4360 characters]
//# sourceURL=webpack-internal:///../../scene/Renderer.ts
`);
              }
            ),
            /***/
            "../../scene/Scene.ts": (
              /*!****************************!*\
                !*** ../../scene/Scene.ts ***!
                \****************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../element/typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var _selection__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./selection */ "../../scene/selection.ts");\n/* harmony import */ var _random__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../random */ "../../random.ts");\n\n\n\n\n\nconst hashSelectionOpts = opts => {\n  const keys = ["includeBoundTextElement", "includeElementsInFrames"];\n  let hash = "";\n\n  for (const key of keys) {\n    hash += `${key}:${opts[key] ? "1" : "0"}`;\n  }\n\n  return hash;\n};\n\nconst isIdKey = elementKey => {\n  if (typeof elementKey === "string") {\n    return true;\n  }\n\n  return false;\n};\n\nclass Scene {\n  constructor() {\n    // ---------------------------------------------------------------------------\n    // static methods/props\n    // ---------------------------------------------------------------------------\n    // ---------------------------------------------------------------------------\n    // instance methods/props\n    // ---------------------------------------------------------------------------\n    this.callbacks = new Set();\n    this.nonDeletedElements = [];\n    this.elements = [];\n    this.nonDeletedFrames = [];\n    this.frames = [];\n    this.elementsMap = new Map();\n    this.selectedElementsCache = {\n      selectedElementIds: null,\n      elements: null,\n      cache: new Map()\n    };\n\n    this.addNewElement = element => {\n      if (element.frameId) {\n        this.insertElementAtIndex(element, this.getElementIndex(element.frameId));\n      } else {\n        this.replaceAllElements([...this.elements, element]);\n      }\n    };\n  }\n\n  static mapElementToScene(elementKey, scene,\n  /**\n   * needed because of frame exporting hack.\n   * elementId:Scene mapping will be removed completely, soon.\n   */\n  mapElementIds = true) {\n    if (isIdKey(elementKey)) {\n      if (!mapElementIds) {\n        return;\n      } // for cases where we don\'t have access to the element object\n      // (e.g. restore serialized appState with id references)\n\n\n      this.sceneMapById.set(elementKey, scene);\n    } else {\n      this.sceneMapByElement.set(elementKey, scene);\n\n      if (!mapElementIds) {\n        // if mapping element objects, also cache the id string when later\n        // looking up by id alone\n        this.sceneMapById.set(elementKey.id, scene);\n      }\n    }\n  }\n\n  static getScene(elementKey) {\n    if (isIdKey(elementKey)) {\n      return this.sceneMapById.get(elementKey) || null;\n    }\n\n    return this.sceneMapByElement.get(elementKey) || null;\n  }\n\n  getElementsIncludingDeleted() {\n    return this.elements;\n  }\n\n  getNonDeletedElements() {\n    return this.nonDeletedElements;\n  }\n\n  getFramesIncludingDeleted() {\n    return this.frames;\n  }\n\n  getSelectedElements(opts) {\n    const hash = hashSelectionOpts(opts);\n    const elements = (opts === null || opts === void 0 ? void 0 : opts.elements) || this.nonDeletedElements;\n\n    if (this.selectedElementsCache.elements === elements && this.selectedElementsCache.selectedElementIds === opts.selectedElementIds) {\n      const cached = this.selectedElementsCache.cache.get(hash);\n\n      if (cached) {\n        return cached;\n      }\n    } else if ((opts === null || opts === void 0 ? void 0 : opts.elements) == null) {\n      // if we\'re operating on latest scene elements and the cache is not\n      //  storing the latest elements, clear the cache\n      this.selectedElementsCache.cache.clear();\n    }\n\n    const selectedElements = (0,_selection__WEBPACK_IMPORTED_MODULE_2__.getSelectedElements)(elements, {\n      selectedElementIds: opts.selectedElementIds\n    }, opts); // cache only if we\'re not using custom elements\n\n    if ((opts === null || opts === void 0 ? void 0 : opts.elements) == null) {\n      this.selectedElementsCache.selectedElementIds = opts.selectedElementIds;\n      this.selectedElementsCache.elements = this.nonDeletedElements;\n      this.selectedElementsCache.cache.set(hash, selectedElements);\n    }\n\n    return selectedElements;\n  }\n\n  getNonDeletedFrames() {\n    return this.nonDeletedFrames;\n  }\n\n  getElement(id) {\n    return this.elementsMap.get(id) || null;\n  }\n\n  getVersionNonce() {\n    return this.versionNonce;\n  }\n\n  getNonDeletedElement(id) {\n    const element = this.getElement(id);\n\n    if (element && (0,_element__WEBPACK_IMPORTED_MODULE_0__.isNonDeletedElement)(element)) {\n      return element;\n    }\n\n    return null;\n  }\n  /**\n   * A utility method to help with updating all scene elements, with the added\n   * performance optimization of not renewing the array if no change is made.\n   *\n   * Maps all current excalidraw elements, invoking the callback for each\n   * element. The callback should either return a new mapped element, or the\n   * original element if no changes are made. If no changes are made to any\n   * element, this results in a no-op. Otherwise, the newly mapped elements\n   * are set as the next scene\'s elements.\n   *\n   * @returns whether a change was made\n   */\n\n\n  mapElements(iteratee) {\n    let didChange = false;\n    const newElements = this.elements.map(element => {\n      const nextElement = iteratee(element);\n\n      if (nextElement !== element) {\n        didChange = true;\n      }\n\n      return nextElement;\n    });\n\n    if (didChange) {\n      this.replaceAllElements(newElements);\n    }\n\n    return didChange;\n  }\n\n  replaceAllElements(nextElements, mapElementIds = true) {\n    this.elements = nextElements;\n    const nextFrames = [];\n    this.elementsMap.clear();\n    nextElements.forEach(element => {\n      if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isFrameElement)(element)) {\n        nextFrames.push(element);\n      }\n\n      this.elementsMap.set(element.id, element);\n      Scene.mapElementToScene(element, this);\n    });\n    this.nonDeletedElements = (0,_element__WEBPACK_IMPORTED_MODULE_0__.getNonDeletedElements)(this.elements);\n    this.frames = nextFrames;\n    this.nonDeletedFrames = (0,_element__WEBPACK_IMPORTED_MODULE_0__.getNonDeletedFrames)(this.frames);\n    this.informMutation();\n  }\n\n  informMutation() {\n    this.versionNonce = (0,_random__WEBPACK_IMPORTED_MODULE_3__.randomInteger)();\n\n    for (const callback of Array.from(this.callbacks)) {\n      callback();\n    }\n  }\n\n  addCallback(cb) {\n    if (this.callbacks.has(cb)) {\n      throw new Error();\n    }\n\n    this.callbacks.add(cb);\n    return () => {\n      if (!this.callbacks.has(cb)) {\n        throw new Error();\n      }\n\n      this.callbacks.delete(cb);\n    };\n  }\n\n  destroy() {\n    this.nonDeletedElements = [];\n    this.elements = [];\n    this.nonDeletedFrames = [];\n    this.frames = [];\n    this.elementsMap.clear();\n    this.selectedElementsCache.selectedElementIds = null;\n    this.selectedElementsCache.elements = null;\n    this.selectedElementsCache.cache.clear();\n    Scene.sceneMapById.forEach((scene, elementKey) => {\n      if (scene === this) {\n        Scene.sceneMapById.delete(elementKey);\n      }\n    }); // done not for memory leaks, but to guard against possible late fires\n    // (I guess?)\n\n    this.callbacks.clear();\n  }\n\n  insertElementAtIndex(element, index) {\n    if (!Number.isFinite(index) || index < 0) {\n      throw new Error("insertElementAtIndex can only be called with index >= 0");\n    }\n\n    const nextElements = [...this.elements.slice(0, index), element, ...this.elements.slice(index)];\n    this.replaceAllElements(nextElements);\n  }\n\n  insertElementsAtIndex(elements, index) {\n    if (!Number.isFinite(index) || index < 0) {\n      throw new Error("insertElementAtIndex can only be called with index >= 0");\n    }\n\n    const nextElements = [...this.elements.slice(0, index), ...elements, ...this.elements.slice(index)];\n    this.replaceAllElements(nextElements);\n  }\n\n  getElementIndex(elementId) {\n    return this.elements.findIndex(element => element.id === elementId);\n  }\n\n}\n\nScene.sceneMapByElement = new WeakMap();\nScene.sceneMapById = new Map();\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Scene);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 12464 characters]\n//# sourceURL=webpack-internal:///../../scene/Scene.ts\n');
              }
            ),
            /***/
            "../../scene/Shape.ts": (
              /*!****************************!*\
                !*** ../../scene/Shape.ts ***!
                \****************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "_generateElementShape": () => (/* binding */ _generateElementShape),\n/* harmony export */   "generateRoughOptions": () => (/* binding */ generateRoughOptions)\n/* harmony export */ });\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../math */ "../../math.ts");\n/* harmony import */ var _renderer_renderElement__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../renderer/renderElement */ "../../renderer/renderElement.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var points_on_curve__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! points-on-curve */ "../../../node_modules/points-on-curve/lib/index.js");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../element/typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var _comparisons__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./comparisons */ "../../scene/comparisons.ts");\n\n\n\n\n\n\n\n\n\nconst getDashArrayDashed = strokeWidth => [8, 8 + strokeWidth];\n\nconst getDashArrayDotted = strokeWidth => [1.5, 6 + strokeWidth];\n\nfunction adjustRoughness(element) {\n  const roughness = element.roughness;\n  const maxSize = Math.max(element.width, element.height);\n  const minSize = Math.min(element.width, element.height); // don\'t reduce roughness if\n\n  if ( // both sides relatively big\n  minSize >= 20 && maxSize >= 50 || // is round & both sides above 15px\n  minSize >= 15 && !!element.roundness && (0,_comparisons__WEBPACK_IMPORTED_MODULE_7__.canChangeRoundness)(element.type) || // relatively long linear element\n  (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_6__.isLinearElement)(element) && maxSize >= 50) {\n    return roughness;\n  }\n\n  return Math.min(roughness / (maxSize < 10 ? 3 : 2), 2.5);\n}\n\nconst generateRoughOptions = (element, continuousPath = false) => {\n  const options = {\n    seed: element.seed,\n    strokeLineDash: element.strokeStyle === "dashed" ? getDashArrayDashed(element.strokeWidth) : element.strokeStyle === "dotted" ? getDashArrayDotted(element.strokeWidth) : undefined,\n    // for non-solid strokes, disable multiStroke because it tends to make\n    // dashes/dots overlay each other\n    disableMultiStroke: element.strokeStyle !== "solid",\n    // for non-solid strokes, increase the width a bit to make it visually\n    // similar to solid strokes, because we\'re also disabling multiStroke\n    strokeWidth: element.strokeStyle !== "solid" ? element.strokeWidth + 0.5 : element.strokeWidth,\n    // when increasing strokeWidth, we must explicitly set fillWeight and\n    // hachureGap because if not specified, roughjs uses strokeWidth to\n    // calculate them (and we don\'t want the fills to be modified)\n    fillWeight: element.strokeWidth / 2,\n    hachureGap: element.strokeWidth * 4,\n    roughness: adjustRoughness(element),\n    stroke: element.strokeColor,\n    preserveVertices: continuousPath || element.roughness < _constants__WEBPACK_IMPORTED_MODULE_5__.ROUGHNESS.cartoonist\n  };\n\n  switch (element.type) {\n    case "rectangle":\n    case "embeddable":\n    case "diamond":\n    case "ellipse":\n      {\n        options.fillStyle = element.fillStyle;\n        options.fill = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.isTransparent)(element.backgroundColor) ? undefined : element.backgroundColor;\n\n        if (element.type === "ellipse") {\n          options.curveFitting = 1;\n        }\n\n        return options;\n      }\n\n    case "line":\n    case "freedraw":\n      {\n        if ((0,_math__WEBPACK_IMPORTED_MODULE_1__.isPathALoop)(element.points)) {\n          options.fillStyle = element.fillStyle;\n          options.fill = element.backgroundColor === "transparent" ? undefined : element.backgroundColor;\n        }\n\n        return options;\n      }\n\n    case "arrow":\n      return options;\n\n    default:\n      {\n        throw new Error(`Unimplemented type ${element.type}`);\n      }\n  }\n};\n\nconst modifyEmbeddableForRoughOptions = (element, isExporting) => {\n  if (element.type === "embeddable" && (isExporting || !element.validated) && (0,_utils__WEBPACK_IMPORTED_MODULE_3__.isTransparent)(element.backgroundColor) && (0,_utils__WEBPACK_IMPORTED_MODULE_3__.isTransparent)(element.strokeColor)) {\n    return Object.assign(Object.assign({}, element), {\n      roughness: 0,\n      backgroundColor: "#d3d3d3",\n      fillStyle: "solid"\n    });\n  }\n\n  return element;\n};\n/**\n * Generates the roughjs shape for given element.\n *\n * Low-level. Use `ShapeCache.generateElementShape` instead.\n *\n * @private\n */\n\n\nconst _generateElementShape = (element, generator, isExporting = false) => {\n  switch (element.type) {\n    case "rectangle":\n    case "embeddable":\n      {\n        let shape; // this is for rendering the stroke/bg of the embeddable, especially\n        // when the src url is not set\n\n        if (element.roundness) {\n          const w = element.width;\n          const h = element.height;\n          const r = (0,_math__WEBPACK_IMPORTED_MODULE_1__.getCornerRadius)(Math.min(w, h), element);\n          shape = generator.path(`M ${r} 0 L ${w - r} 0 Q ${w} 0, ${w} ${r} L ${w} ${h - r} Q ${w} ${h}, ${w - r} ${h} L ${r} ${h} Q 0 ${h}, 0 ${h - r} L 0 ${r} Q 0 0, ${r} 0`, generateRoughOptions(modifyEmbeddableForRoughOptions(element, isExporting), true));\n        } else {\n          shape = generator.rectangle(0, 0, element.width, element.height, generateRoughOptions(modifyEmbeddableForRoughOptions(element, isExporting), false));\n        }\n\n        return shape;\n      }\n\n    case "diamond":\n      {\n        let shape;\n        const [topX, topY, rightX, rightY, bottomX, bottomY, leftX, leftY] = (0,_element__WEBPACK_IMPORTED_MODULE_0__.getDiamondPoints)(element);\n\n        if (element.roundness) {\n          const verticalRadius = (0,_math__WEBPACK_IMPORTED_MODULE_1__.getCornerRadius)(Math.abs(topX - leftX), element);\n          const horizontalRadius = (0,_math__WEBPACK_IMPORTED_MODULE_1__.getCornerRadius)(Math.abs(rightY - topY), element);\n          shape = generator.path(`M ${topX + verticalRadius} ${topY + horizontalRadius} L ${rightX - verticalRadius} ${rightY - horizontalRadius}\n            C ${rightX} ${rightY}, ${rightX} ${rightY}, ${rightX - verticalRadius} ${rightY + horizontalRadius}\n            L ${bottomX + verticalRadius} ${bottomY - horizontalRadius}\n            C ${bottomX} ${bottomY}, ${bottomX} ${bottomY}, ${bottomX - verticalRadius} ${bottomY - horizontalRadius}\n            L ${leftX + verticalRadius} ${leftY + horizontalRadius}\n            C ${leftX} ${leftY}, ${leftX} ${leftY}, ${leftX + verticalRadius} ${leftY - horizontalRadius}\n            L ${topX - verticalRadius} ${topY + horizontalRadius}\n            C ${topX} ${topY}, ${topX} ${topY}, ${topX + verticalRadius} ${topY + horizontalRadius}`, generateRoughOptions(element, true));\n        } else {\n          shape = generator.polygon([[topX, topY], [rightX, rightY], [bottomX, bottomY], [leftX, leftY]], generateRoughOptions(element));\n        }\n\n        return shape;\n      }\n\n    case "ellipse":\n      {\n        const shape = generator.ellipse(element.width / 2, element.height / 2, element.width, element.height, generateRoughOptions(element));\n        return shape;\n      }\n\n    case "line":\n    case "arrow":\n      {\n        let shape;\n        const options = generateRoughOptions(element); // points array can be empty in the beginning, so it is important to add\n        // initial position to it\n\n        const points = element.points.length ? element.points : [[0, 0]]; // curve is always the first element\n        // this simplifies finding the curve for an element\n\n        if (!element.roundness) {\n          if (options.fill) {\n            shape = [generator.polygon(points, options)];\n          } else {\n            shape = [generator.linearPath(points, options)];\n          }\n        } else {\n          shape = [generator.curve(points, options)];\n        } // add lines only in arrow\n\n\n        if (element.type === "arrow") {\n          const {\n            startArrowhead = null,\n            endArrowhead = "arrow"\n          } = element;\n\n          const getArrowheadShapes = (element, shape, position, arrowhead) => {\n            const arrowheadPoints = (0,_element__WEBPACK_IMPORTED_MODULE_0__.getArrowheadPoints)(element, shape, position, arrowhead);\n\n            if (arrowheadPoints === null) {\n              return [];\n            } // Other arrowheads here...\n\n\n            if (arrowhead === "dot") {\n              const [x, y, r] = arrowheadPoints;\n              return [generator.circle(x, y, r, Object.assign(Object.assign({}, options), {\n                fill: element.strokeColor,\n                fillStyle: "solid",\n                stroke: "none"\n              }))];\n            }\n\n            if (arrowhead === "triangle") {\n              const [x, y, x2, y2, x3, y3] = arrowheadPoints; // always use solid stroke for triangle arrowhead\n\n              delete options.strokeLineDash;\n              return [generator.polygon([[x, y], [x2, y2], [x3, y3], [x, y]], Object.assign(Object.assign({}, options), {\n                fill: element.strokeColor,\n                fillStyle: "solid"\n              }))];\n            } // Arrow arrowheads\n\n\n            const [x2, y2, x3, y3, x4, y4] = arrowheadPoints;\n\n            if (element.strokeStyle === "dotted") {\n              // for dotted arrows caps, reduce gap to make it more legible\n              const dash = getDashArrayDotted(element.strokeWidth - 1);\n              options.strokeLineDash = [dash[0], dash[1] - 1];\n            } else {\n              // for solid/dashed, keep solid arrow cap\n              delete options.strokeLineDash;\n            }\n\n            return [generator.line(x3, y3, x2, y2, options), generator.line(x4, y4, x2, y2, options)];\n          };\n\n          if (startArrowhead !== null) {\n            const shapes = getArrowheadShapes(element, shape, "start", startArrowhead);\n            shape.push(...shapes);\n          }\n\n          if (endArrowhead !== null) {\n            if (endArrowhead === undefined) {// Hey, we have an old arrow here!\n            }\n\n            const shapes = getArrowheadShapes(element, shape, "end", endArrowhead);\n            shape.push(...shapes);\n          }\n        }\n\n        return shape;\n      }\n\n    case "freedraw":\n      {\n        let shape;\n        (0,_renderer_renderElement__WEBPACK_IMPORTED_MODULE_2__.generateFreeDrawShape)(element);\n\n        if ((0,_math__WEBPACK_IMPORTED_MODULE_1__.isPathALoop)(element.points)) {\n          // generate rough polygon to fill freedraw shape\n          const simplifiedPoints = (0,points_on_curve__WEBPACK_IMPORTED_MODULE_4__.simplify)(element.points, 0.75);\n          shape = generator.curve(simplifiedPoints, Object.assign(Object.assign({}, generateRoughOptions(element)), {\n            stroke: "none"\n          }));\n        } else {\n          shape = null;\n        }\n\n        return shape;\n      }\n\n    case "frame":\n    case "text":\n    case "image":\n      {\n        const shape = null; // we return (and cache) `null` to make sure we don\'t regenerate\n        // `element.canvas` on rerenders\n\n        return shape;\n      }\n\n    default:\n      {\n        (0,_utils__WEBPACK_IMPORTED_MODULE_3__.assertNever)(element, `generateElementShape(): Unimplemented type ${element === null || element === void 0 ? void 0 : element.type}`);\n        return null;\n      }\n  }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 17044 characters]\n//# sourceURL=webpack-internal:///../../scene/Shape.ts\n');
              }
            ),
            /***/
            "../../scene/ShapeCache.ts": (
              /*!*********************************!*\
                !*** ../../scene/ShapeCache.ts ***!
                \*********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "ShapeCache": () => (/* binding */ ShapeCache)\n/* harmony export */ });\n/* harmony import */ var roughjs_bin_generator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! roughjs/bin/generator */ "../../../node_modules/roughjs/bin/generator.js");\n/* harmony import */ var _renderer_renderElement__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../renderer/renderElement */ "../../renderer/renderElement.ts");\n/* harmony import */ var _Shape__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Shape */ "../../scene/Shape.ts");\n\n\n\nclass ShapeCache {}\nShapeCache.rg = new roughjs_bin_generator__WEBPACK_IMPORTED_MODULE_0__.RoughGenerator();\nShapeCache.cache = new WeakMap();\n/**\n * Retrieves shape from cache if available. Use this only if shape\n * is optional and you have a fallback in case it\'s not cached.\n */\n\nShapeCache.get = element => {\n  return ShapeCache.cache.get(element);\n};\n\nShapeCache.set = (element, shape) => ShapeCache.cache.set(element, shape);\n\nShapeCache.delete = element => ShapeCache.cache.delete(element);\n\nShapeCache.destroy = () => {\n  ShapeCache.cache = new WeakMap();\n};\n/**\n * Generates & caches shape for element if not already cached, otherwise\n * returns cached shape.\n */\n\n\nShapeCache.generateElementShape = (element, isExporting = false) => {\n  // when exporting, always regenerated to guarantee the latest shape\n  const cachedShape = isExporting ? undefined : ShapeCache.get(element); // `null` indicates no rc shape applicable for this element type,\n  // but it\'s considered a valid cache value (= do not regenerate)\n\n  if (cachedShape !== undefined) {\n    return cachedShape;\n  }\n\n  _renderer_renderElement__WEBPACK_IMPORTED_MODULE_1__.elementWithCanvasCache["delete"](element);\n\n  const shape = (0,_Shape__WEBPACK_IMPORTED_MODULE_2__._generateElementShape)(element, ShapeCache.rg, isExporting);\n\n  ShapeCache.cache.set(element, shape);\n  return shape;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vc2NlbmUvU2hhcGVDYWNoZS50cy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQXVEO0FBQ1k7QUFDbkI7QUFDekM7QUFDUCxvQkFBb0IsaUVBQWM7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQSx5RUFBeUU7QUFDekU7O0FBRUE7QUFDQTtBQUNBOztBQUVBLEVBQUUscUZBQTZCOztBQUUvQixnQkFBZ0IsNkRBQXFCOztBQUVyQztBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vc2NlbmUvU2hhcGVDYWNoZS50cz9hYWRjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJvdWdoR2VuZXJhdG9yIH0gZnJvbSBcInJvdWdoanMvYmluL2dlbmVyYXRvclwiO1xuaW1wb3J0IHsgZWxlbWVudFdpdGhDYW52YXNDYWNoZSB9IGZyb20gXCIuLi9yZW5kZXJlci9yZW5kZXJFbGVtZW50XCI7XG5pbXBvcnQgeyBfZ2VuZXJhdGVFbGVtZW50U2hhcGUgfSBmcm9tIFwiLi9TaGFwZVwiO1xuZXhwb3J0IGNsYXNzIFNoYXBlQ2FjaGUge31cblNoYXBlQ2FjaGUucmcgPSBuZXcgUm91Z2hHZW5lcmF0b3IoKTtcblNoYXBlQ2FjaGUuY2FjaGUgPSBuZXcgV2Vha01hcCgpO1xuLyoqXG4gKiBSZXRyaWV2ZXMgc2hhcGUgZnJvbSBjYWNoZSBpZiBhdmFpbGFibGUuIFVzZSB0aGlzIG9ubHkgaWYgc2hhcGVcbiAqIGlzIG9wdGlvbmFsIGFuZCB5b3UgaGF2ZSBhIGZhbGxiYWNrIGluIGNhc2UgaXQncyBub3QgY2FjaGVkLlxuICovXG5cblNoYXBlQ2FjaGUuZ2V0ID0gZWxlbWVudCA9PiB7XG4gIHJldHVybiBTaGFwZUNhY2hlLmNhY2hlLmdldChlbGVtZW50KTtcbn07XG5cblNoYXBlQ2FjaGUuc2V0ID0gKGVsZW1lbnQsIHNoYXBlKSA9PiBTaGFwZUNhY2hlLmNhY2hlLnNldChlbGVtZW50LCBzaGFwZSk7XG5cblNoYXBlQ2FjaGUuZGVsZXRlID0gZWxlbWVudCA9PiBTaGFwZUNhY2hlLmNhY2hlLmRlbGV0ZShlbGVtZW50KTtcblxuU2hhcGVDYWNoZS5kZXN0cm95ID0gKCkgPT4ge1xuICBTaGFwZUNhY2hlLmNhY2hlID0gbmV3IFdlYWtNYXAoKTtcbn07XG4vKipcbiAqIEdlbmVyYXRlcyAmIGNhY2hlcyBzaGFwZSBmb3IgZWxlbWVudCBpZiBub3QgYWxyZWFkeSBjYWNoZWQsIG90aGVyd2lzZVxuICogcmV0dXJucyBjYWNoZWQgc2hhcGUuXG4gKi9cblxuXG5TaGFwZUNhY2hlLmdlbmVyYXRlRWxlbWVudFNoYXBlID0gKGVsZW1lbnQsIGlzRXhwb3J0aW5nID0gZmFsc2UpID0+IHtcbiAgLy8gd2hlbiBleHBvcnRpbmcsIGFsd2F5cyByZWdlbmVyYXRlZCB0byBndWFyYW50ZWUgdGhlIGxhdGVzdCBzaGFwZVxuICBjb25zdCBjYWNoZWRTaGFwZSA9IGlzRXhwb3J0aW5nID8gdW5kZWZpbmVkIDogU2hhcGVDYWNoZS5nZXQoZWxlbWVudCk7IC8vIGBudWxsYCBpbmRpY2F0ZXMgbm8gcmMgc2hhcGUgYXBwbGljYWJsZSBmb3IgdGhpcyBlbGVtZW50IHR5cGUsXG4gIC8vIGJ1dCBpdCdzIGNvbnNpZGVyZWQgYSB2YWxpZCBjYWNoZSB2YWx1ZSAoPSBkbyBub3QgcmVnZW5lcmF0ZSlcblxuICBpZiAoY2FjaGVkU2hhcGUgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBjYWNoZWRTaGFwZTtcbiAgfVxuXG4gIGVsZW1lbnRXaXRoQ2FudmFzQ2FjaGUuZGVsZXRlKGVsZW1lbnQpO1xuXG4gIGNvbnN0IHNoYXBlID0gX2dlbmVyYXRlRWxlbWVudFNoYXBlKGVsZW1lbnQsIFNoYXBlQ2FjaGUucmcsIGlzRXhwb3J0aW5nKTtcblxuICBTaGFwZUNhY2hlLmNhY2hlLnNldChlbGVtZW50LCBzaGFwZSk7XG4gIHJldHVybiBzaGFwZTtcbn07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../scene/ShapeCache.ts\n');
              }
            ),
            /***/
            "../../scene/comparisons.ts": (
              /*!**********************************!*\
                !*** ../../scene/comparisons.ts ***!
                \**********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "canChangeRoundness": () => (/* binding */ canChangeRoundness),\n/* harmony export */   "canHaveArrowheads": () => (/* binding */ canHaveArrowheads),\n/* harmony export */   "getElementAtPosition": () => (/* binding */ getElementAtPosition),\n/* harmony export */   "getElementsAtPosition": () => (/* binding */ getElementsAtPosition),\n/* harmony export */   "hasBackground": () => (/* binding */ hasBackground),\n/* harmony export */   "hasStrokeColor": () => (/* binding */ hasStrokeColor),\n/* harmony export */   "hasStrokeStyle": () => (/* binding */ hasStrokeStyle),\n/* harmony export */   "hasStrokeWidth": () => (/* binding */ hasStrokeWidth)\n/* harmony export */ });\n/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../element/typeChecks */ "../../element/typeChecks.ts");\n\nconst hasBackground = type => type === "rectangle" || type === "embeddable" || type === "ellipse" || type === "diamond" || type === "line" || type === "freedraw";\nconst hasStrokeColor = type => type !== "image" && type !== "frame";\nconst hasStrokeWidth = type => type === "rectangle" || type === "embeddable" || type === "ellipse" || type === "diamond" || type === "freedraw" || type === "arrow" || type === "line";\nconst hasStrokeStyle = type => type === "rectangle" || type === "embeddable" || type === "ellipse" || type === "diamond" || type === "arrow" || type === "line";\nconst canChangeRoundness = type => type === "rectangle" || type === "embeddable" || type === "arrow" || type === "line" || type === "diamond";\nconst canHaveArrowheads = type => type === "arrow";\nconst getElementAtPosition = (elements, isAtPositionFn) => {\n  let hitElement = null; // We need to to hit testing from front (end of the array) to back (beginning of the array)\n  // because array is ordered from lower z-index to highest and we want element z-index\n  // with higher z-index\n\n  for (let index = elements.length - 1; index >= 0; --index) {\n    const element = elements[index];\n\n    if (element.isDeleted) {\n      continue;\n    }\n\n    if (isAtPositionFn(element)) {\n      hitElement = element;\n      break;\n    }\n  }\n\n  return hitElement;\n};\nconst getElementsAtPosition = (elements, isAtPositionFn) => {\n  const embeddables = []; // The parameter elements comes ordered from lower z-index to higher.\n  // We want to preserve that order on the returned array.\n  // Exception being embeddables which should be on top of everything else in\n  // terms of hit testing.\n\n  const elsAtPos = elements.filter(element => {\n    const hit = !element.isDeleted && isAtPositionFn(element);\n\n    if (hit) {\n      if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isEmbeddableElement)(element)) {\n        embeddables.push(element);\n        return false;\n      }\n\n      return true;\n    }\n\n    return false;\n  });\n  return elsAtPos.concat(embeddables);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vc2NlbmUvY29tcGFyaXNvbnMudHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQTREO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ1AseUJBQXlCO0FBQ3pCO0FBQ0E7O0FBRUEsd0NBQXdDLFlBQVk7QUFDcEQ7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNPO0FBQ1AsMEJBQTBCO0FBQzFCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsVUFBVSx3RUFBbUI7QUFDN0I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9zY2VuZS9jb21wYXJpc29ucy50cz82MTA0Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzRW1iZWRkYWJsZUVsZW1lbnQgfSBmcm9tIFwiLi4vZWxlbWVudC90eXBlQ2hlY2tzXCI7XG5leHBvcnQgY29uc3QgaGFzQmFja2dyb3VuZCA9IHR5cGUgPT4gdHlwZSA9PT0gXCJyZWN0YW5nbGVcIiB8fCB0eXBlID09PSBcImVtYmVkZGFibGVcIiB8fCB0eXBlID09PSBcImVsbGlwc2VcIiB8fCB0eXBlID09PSBcImRpYW1vbmRcIiB8fCB0eXBlID09PSBcImxpbmVcIiB8fCB0eXBlID09PSBcImZyZWVkcmF3XCI7XG5leHBvcnQgY29uc3QgaGFzU3Ryb2tlQ29sb3IgPSB0eXBlID0+IHR5cGUgIT09IFwiaW1hZ2VcIiAmJiB0eXBlICE9PSBcImZyYW1lXCI7XG5leHBvcnQgY29uc3QgaGFzU3Ryb2tlV2lkdGggPSB0eXBlID0+IHR5cGUgPT09IFwicmVjdGFuZ2xlXCIgfHwgdHlwZSA9PT0gXCJlbWJlZGRhYmxlXCIgfHwgdHlwZSA9PT0gXCJlbGxpcHNlXCIgfHwgdHlwZSA9PT0gXCJkaWFtb25kXCIgfHwgdHlwZSA9PT0gXCJmcmVlZHJhd1wiIHx8IHR5cGUgPT09IFwiYXJyb3dcIiB8fCB0eXBlID09PSBcImxpbmVcIjtcbmV4cG9ydCBjb25zdCBoYXNTdHJva2VTdHlsZSA9IHR5cGUgPT4gdHlwZSA9PT0gXCJyZWN0YW5nbGVcIiB8fCB0eXBlID09PSBcImVtYmVkZGFibGVcIiB8fCB0eXBlID09PSBcImVsbGlwc2VcIiB8fCB0eXBlID09PSBcImRpYW1vbmRcIiB8fCB0eXBlID09PSBcImFycm93XCIgfHwgdHlwZSA9PT0gXCJsaW5lXCI7XG5leHBvcnQgY29uc3QgY2FuQ2hhbmdlUm91bmRuZXNzID0gdHlwZSA9PiB0eXBlID09PSBcInJlY3RhbmdsZVwiIHx8IHR5cGUgPT09IFwiZW1iZWRkYWJsZVwiIHx8IHR5cGUgPT09IFwiYXJyb3dcIiB8fCB0eXBlID09PSBcImxpbmVcIiB8fCB0eXBlID09PSBcImRpYW1vbmRcIjtcbmV4cG9ydCBjb25zdCBjYW5IYXZlQXJyb3doZWFkcyA9IHR5cGUgPT4gdHlwZSA9PT0gXCJhcnJvd1wiO1xuZXhwb3J0IGNvbnN0IGdldEVsZW1lbnRBdFBvc2l0aW9uID0gKGVsZW1lbnRzLCBpc0F0UG9zaXRpb25GbikgPT4ge1xuICBsZXQgaGl0RWxlbWVudCA9IG51bGw7IC8vIFdlIG5lZWQgdG8gdG8gaGl0IHRlc3RpbmcgZnJvbSBmcm9udCAoZW5kIG9mIHRoZSBhcnJheSkgdG8gYmFjayAoYmVnaW5uaW5nIG9mIHRoZSBhcnJheSlcbiAgLy8gYmVjYXVzZSBhcnJheSBpcyBvcmRlcmVkIGZyb20gbG93ZXIgei1pbmRleCB0byBoaWdoZXN0IGFuZCB3ZSB3YW50IGVsZW1lbnQgei1pbmRleFxuICAvLyB3aXRoIGhpZ2hlciB6LWluZGV4XG5cbiAgZm9yIChsZXQgaW5kZXggPSBlbGVtZW50cy5sZW5ndGggLSAxOyBpbmRleCA+PSAwOyAtLWluZGV4KSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGVsZW1lbnRzW2luZGV4XTtcblxuICAgIGlmIChlbGVtZW50LmlzRGVsZXRlZCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKGlzQXRQb3NpdGlvbkZuKGVsZW1lbnQpKSB7XG4gICAgICBoaXRFbGVtZW50ID0gZWxlbWVudDtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBoaXRFbGVtZW50O1xufTtcbmV4cG9ydCBjb25zdCBnZXRFbGVtZW50c0F0UG9zaXRpb24gPSAoZWxlbWVudHMsIGlzQXRQb3NpdGlvbkZuKSA9PiB7XG4gIGNvbnN0IGVtYmVkZGFibGVzID0gW107IC8vIFRoZSBwYXJhbWV0ZXIgZWxlbWVudHMgY29tZXMgb3JkZXJlZCBmcm9tIGxvd2VyIHotaW5kZXggdG8gaGlnaGVyLlxuICAvLyBXZSB3YW50IHRvIHByZXNlcnZlIHRoYXQgb3JkZXIgb24gdGhlIHJldHVybmVkIGFycmF5LlxuICAvLyBFeGNlcHRpb24gYmVpbmcgZW1iZWRkYWJsZXMgd2hpY2ggc2hvdWxkIGJlIG9uIHRvcCBvZiBldmVyeXRoaW5nIGVsc2UgaW5cbiAgLy8gdGVybXMgb2YgaGl0IHRlc3RpbmcuXG5cbiAgY29uc3QgZWxzQXRQb3MgPSBlbGVtZW50cy5maWx0ZXIoZWxlbWVudCA9PiB7XG4gICAgY29uc3QgaGl0ID0gIWVsZW1lbnQuaXNEZWxldGVkICYmIGlzQXRQb3NpdGlvbkZuKGVsZW1lbnQpO1xuXG4gICAgaWYgKGhpdCkge1xuICAgICAgaWYgKGlzRW1iZWRkYWJsZUVsZW1lbnQoZWxlbWVudCkpIHtcbiAgICAgICAgZW1iZWRkYWJsZXMucHVzaChlbGVtZW50KTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0pO1xuICByZXR1cm4gZWxzQXRQb3MuY29uY2F0KGVtYmVkZGFibGVzKTtcbn07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../scene/comparisons.ts\n');
              }
            ),
            /***/
            "../../scene/export.ts": (
              /*!*****************************!*\
                !*** ../../scene/export.ts ***!
                \*****************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "exportToCanvas": () => (/* binding */ exportToCanvas),\n/* harmony export */   "exportToSvg": () => (/* binding */ exportToSvg),\n/* harmony export */   "getExportSize": () => (/* binding */ getExportSize)\n/* harmony export */ });\n/* harmony import */ var roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! roughjs/bin/rough */ "../../../node_modules/roughjs/bin/rough.js");\n/* harmony import */ var _element_bounds__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../element/bounds */ "../../element/bounds.ts");\n/* harmony import */ var _renderer_renderScene__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../renderer/renderScene */ "../../renderer/renderScene.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _appState__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../appState */ "../../appState.ts");\n/* harmony import */ var _data_json__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../data/json */ "../../data/json.ts");\n/* harmony import */ var _element_image__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../element/image */ "../../element/image.ts");\n/* harmony import */ var _packages_withinBounds__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../packages/withinBounds */ "../withinBounds.ts");\n/* harmony import */ var _frame__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../frame */ "../../frame.ts");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _element_mutateElement__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../element/mutateElement */ "../../element/mutateElement.ts");\n/* harmony import */ var _Scene__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./Scene */ "../../scene/Scene.ts");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator["throw"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst SVG_EXPORT_TAG = `<!-- svg-source:excalidraw -->`; // getContainerElement and getBoundTextElement and potentially other helpers\n// depend on `Scene` which will not be available when these pure utils are\n// called outside initialized Excalidraw editor instance or even if called\n// from inside Excalidraw if the elements were never cached by Scene (e.g.\n// for library elements).\n//\n// As such, before passing the elements down, we need to initialize a custom\n// Scene instance and assign them to it.\n//\n// FIXME This is a super hacky workaround and we\'ll need to rewrite this soon.\n\nconst __createSceneForElementsHack__ = elements => {\n  const scene = new _Scene__WEBPACK_IMPORTED_MODULE_12__["default"](); // we can\'t duplicate elements to regenerate ids because we need the\n  // orig ids when embedding. So we do another hack of not mapping element\n  // ids to Scene instances so that we don\'t override the editor elements\n  // mapping.\n  // We still need to clone the objects themselves to regen references.\n\n  scene.replaceAllElements((0,_utils__WEBPACK_IMPORTED_MODULE_3__.cloneJSON)(elements), false);\n  return scene;\n};\n\nconst truncateText = (element, maxWidth) => {\n  if (element.width <= maxWidth) {\n    return element;\n  }\n\n  const canvas = document.createElement("canvas");\n  const ctx = canvas.getContext("2d");\n  ctx.font = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.getFontString)({\n    fontFamily: element.fontFamily,\n    fontSize: element.fontSize\n  });\n  let text = element.text;\n  const metrics = ctx.measureText(text);\n\n  if (metrics.width > maxWidth) {\n    // we iterate from the right, removing characters one by one instead\n    // of bulding the string up. This assumes that it\'s more likely\n    // your frame names will overflow by not that many characters\n    // (if ever), so it sohuld be faster this way.\n    for (let i = text.length; i > 0; i--) {\n      const newText = `${text.slice(0, i)}...`;\n\n      if (ctx.measureText(newText).width <= maxWidth) {\n        text = newText;\n        break;\n      }\n    }\n  }\n\n  return (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_11__.newElementWith)(element, {\n    text,\n    width: maxWidth\n  });\n};\n/**\n * When exporting frames, we need to render frame labels which are currently\n * being rendered in DOM when editing. Adding the labels as regular text\n * elements seems like a simple hack. In the future we\'ll want to move to\n * proper canvas rendering, even within editor (instead of DOM).\n */\n\n\nconst addFrameLabelsAsTextElements = (elements, opts) => {\n  const nextElements = [];\n  let frameIdx = 0;\n\n  for (const element of elements) {\n    if ((0,_element__WEBPACK_IMPORTED_MODULE_10__.isFrameElement)(element)) {\n      frameIdx++;\n      let textElement = (0,_element__WEBPACK_IMPORTED_MODULE_10__.newTextElement)({\n        x: element.x,\n        y: element.y - _constants__WEBPACK_IMPORTED_MODULE_4__.FRAME_STYLE.nameOffsetY,\n        fontFamily: _constants__WEBPACK_IMPORTED_MODULE_4__.FONT_FAMILY.Assistant,\n        fontSize: _constants__WEBPACK_IMPORTED_MODULE_4__.FRAME_STYLE.nameFontSize,\n        lineHeight: _constants__WEBPACK_IMPORTED_MODULE_4__.FRAME_STYLE.nameLineHeight,\n        strokeColor: opts.exportWithDarkMode ? _constants__WEBPACK_IMPORTED_MODULE_4__.FRAME_STYLE.nameColorDarkTheme : _constants__WEBPACK_IMPORTED_MODULE_4__.FRAME_STYLE.nameColorLightTheme,\n        text: element.name || `Frame ${frameIdx}`\n      });\n      textElement.y -= textElement.height;\n      textElement = truncateText(textElement, element.width);\n      nextElements.push(textElement);\n    }\n\n    nextElements.push(element);\n  }\n\n  return nextElements;\n};\n\nconst getFrameRenderingConfig = (exportingFrame, frameRendering) => {\n  frameRendering = frameRendering || (0,_appState__WEBPACK_IMPORTED_MODULE_5__.getDefaultAppState)().frameRendering;\n  return {\n    enabled: exportingFrame ? true : frameRendering.enabled,\n    outline: exportingFrame ? false : frameRendering.outline,\n    name: exportingFrame ? false : frameRendering.name,\n    clip: exportingFrame ? true : frameRendering.clip\n  };\n};\n\nconst prepareElementsForRender = ({\n  elements,\n  exportingFrame,\n  frameRendering,\n  exportWithDarkMode\n}) => {\n  let nextElements;\n\n  if (exportingFrame) {\n    nextElements = (0,_packages_withinBounds__WEBPACK_IMPORTED_MODULE_8__.elementsOverlappingBBox)({\n      elements,\n      bounds: exportingFrame,\n      type: "overlap"\n    });\n  } else if (frameRendering.enabled && frameRendering.name) {\n    nextElements = addFrameLabelsAsTextElements(elements, {\n      exportWithDarkMode\n    });\n  } else {\n    nextElements = elements;\n  }\n\n  return nextElements;\n};\n\nconst exportToCanvas = (elements, appState, files, {\n  exportBackground,\n  exportPadding = _constants__WEBPACK_IMPORTED_MODULE_4__.DEFAULT_EXPORT_PADDING,\n  viewBackgroundColor,\n  exportingFrame\n}, createCanvas = (width, height) => {\n  const canvas = document.createElement("canvas");\n  canvas.width = width * appState.exportScale;\n  canvas.height = height * appState.exportScale;\n  return {\n    canvas,\n    scale: appState.exportScale\n  };\n}) => __awaiter(void 0, void 0, void 0, function* () {\n  var _a;\n\n  const tempScene = __createSceneForElementsHack__(elements);\n\n  elements = tempScene.getNonDeletedElements();\n  const frameRendering = getFrameRenderingConfig(exportingFrame !== null && exportingFrame !== void 0 ? exportingFrame : null, (_a = appState.frameRendering) !== null && _a !== void 0 ? _a : null);\n  const elementsForRender = prepareElementsForRender({\n    elements,\n    exportingFrame,\n    exportWithDarkMode: appState.exportWithDarkMode,\n    frameRendering\n  });\n\n  if (exportingFrame) {\n    exportPadding = 0;\n  }\n\n  const [minX, minY, width, height] = getCanvasSize(exportingFrame ? [exportingFrame] : (0,_frame__WEBPACK_IMPORTED_MODULE_9__.getRootElements)(elementsForRender), exportPadding);\n  const {\n    canvas,\n    scale = 1\n  } = createCanvas(width, height);\n  const defaultAppState = (0,_appState__WEBPACK_IMPORTED_MODULE_5__.getDefaultAppState)();\n  const {\n    imageCache\n  } = yield (0,_element_image__WEBPACK_IMPORTED_MODULE_7__.updateImageCache)({\n    imageCache: new Map(),\n    fileIds: (0,_element_image__WEBPACK_IMPORTED_MODULE_7__.getInitializedImageElements)(elementsForRender).map(element => element.fileId),\n    files\n  });\n  (0,_renderer_renderScene__WEBPACK_IMPORTED_MODULE_2__.renderStaticScene)({\n    canvas,\n    rc: roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_0__["default"].canvas(canvas),\n    elements: elementsForRender,\n    visibleElements: elementsForRender,\n    scale,\n    appState: Object.assign(Object.assign({}, appState), {\n      frameRendering,\n      viewBackgroundColor: exportBackground ? viewBackgroundColor : null,\n      scrollX: -minX + exportPadding,\n      scrollY: -minY + exportPadding,\n      zoom: defaultAppState.zoom,\n      shouldCacheIgnoreZoom: false,\n      theme: appState.exportWithDarkMode ? "dark" : "light"\n    }),\n    renderConfig: {\n      imageCache,\n      renderGrid: false,\n      isExporting: true\n    }\n  });\n  tempScene.destroy();\n  return canvas;\n});\nconst exportToSvg = (elements, appState, files, opts) => __awaiter(void 0, void 0, void 0, function* () {\n  var _b, _c, _d;\n\n  const tempScene = __createSceneForElementsHack__(elements);\n\n  elements = tempScene.getNonDeletedElements();\n  const frameRendering = getFrameRenderingConfig((_b = opts === null || opts === void 0 ? void 0 : opts.exportingFrame) !== null && _b !== void 0 ? _b : null, (_c = appState.frameRendering) !== null && _c !== void 0 ? _c : null);\n  let {\n    exportPadding = _constants__WEBPACK_IMPORTED_MODULE_4__.DEFAULT_EXPORT_PADDING,\n    exportWithDarkMode = false,\n    viewBackgroundColor,\n    exportScale = 1,\n    exportEmbedScene\n  } = appState;\n  const {\n    exportingFrame = null\n  } = opts || {};\n  const elementsForRender = prepareElementsForRender({\n    elements,\n    exportingFrame,\n    exportWithDarkMode,\n    frameRendering\n  });\n\n  if (exportingFrame) {\n    exportPadding = 0;\n  }\n\n  let metadata = ""; // we need to serialize the "original" elements before we put them through\n  // the tempScene hack which duplicates and regenerates ids\n\n  if (exportEmbedScene) {\n    try {\n      metadata = yield (yield Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../../src/data/image */ "../../data/image.ts"))).encodeSvgMetadata({\n        // when embedding scene, we want to embed the origionally supplied\n        // elements which don\'t contain the temp frame labels.\n        // But it also requires that the exportToSvg is being supplied with\n        // only the elements that we\'re exporting, and no extra.\n        text: (0,_data_json__WEBPACK_IMPORTED_MODULE_6__.serializeAsJSON)(elements, appState, files || {}, "local")\n      });\n    } catch (error) {\n      console.error(error);\n    }\n  }\n\n  const [minX, minY, width, height] = getCanvasSize(exportingFrame ? [exportingFrame] : (0,_frame__WEBPACK_IMPORTED_MODULE_9__.getRootElements)(elementsForRender), exportPadding); // initialize SVG root\n\n  const svgRoot = document.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_4__.SVG_NS, "svg");\n  svgRoot.setAttribute("version", "1.1");\n  svgRoot.setAttribute("xmlns", _constants__WEBPACK_IMPORTED_MODULE_4__.SVG_NS);\n  svgRoot.setAttribute("viewBox", `0 0 ${width} ${height}`);\n  svgRoot.setAttribute("width", `${width * exportScale}`);\n  svgRoot.setAttribute("height", `${height * exportScale}`);\n\n  if (exportWithDarkMode) {\n    svgRoot.setAttribute("filter", _constants__WEBPACK_IMPORTED_MODULE_4__.THEME_FILTER);\n  }\n\n  let assetPath = "https://excalidraw.com/"; // Asset path needs to be determined only when using package\n\n  if (true) {\n    assetPath = window.EXCALIDRAW_ASSET_PATH || `https://unpkg.com/${"@excalidraw/excalidraw"}@${({"VITE_APP_BACKEND_V2_GET_URL":"https://json-dev.excalidraw.com/api/v2/","VITE_APP_BACKEND_V2_POST_URL":"https://json-dev.excalidraw.com/api/v2/post/","VITE_APP_LIBRARY_URL":"https://libraries.excalidraw.com","VITE_APP_LIBRARY_BACKEND":"https://us-central1-excalidraw-room-persistence.cloudfunctions.net/libraries","VITE_APP_WS_SERVER_URL":"http://localhost:3002","VITE_APP_PORTAL_URL":"","VITE_APP_PLUS_LP":"https://plus.excalidraw.com","VITE_APP_PLUS_APP":"https://app.excalidraw.com","VITE_APP_FIREBASE_CONFIG":"{\\"apiKey\\":\\"AIzaSyCMkxA60XIW8KbqMYL7edC4qT5l4qHX2h8\\",\\"authDomain\\":\\"excalidraw-oss-dev.firebaseapp.com\\",\\"projectId\\":\\"excalidraw-oss-dev\\",\\"storageBucket\\":\\"excalidraw-oss-dev.appspot.com\\",\\"messagingSenderId\\":\\"664559512677\\",\\"appId\\":\\"1:664559512677:web:a385181f2928d328a7aa8c\\"}","VITE_APP_DEV_ENABLE_SW":"","VITE_APP_DEV_DISABLE_LIVE_RELOAD":"","VITE_APP_DISABLE_TRACKING":"true","FAST_REFRESH":"false","VITE_APP_PORT":"3000","VITE_APP_DEBUG_ENABLE_TEXT_CONTAINER_BOUNDING_BOX":"","VITE_APP_COLLAPSE_OVERLAY":"true","VITE_APP_ENABLE_ESLINT":"true","VITE_PKG_NAME":"@excalidraw/excalidraw","VITE_PKG_VERSION":"0.17.6","VITE_IS_EXCALIDRAW_NPM_PACKAGE":true}).PKG_VERSION}`;\n\n    if (assetPath === null || assetPath === void 0 ? void 0 : assetPath.startsWith("/")) {\n      assetPath = assetPath.replace("/", `${window.location.origin}/`);\n    }\n\n    assetPath = `${assetPath}/dist/excalidraw-assets/`;\n  }\n\n  const offsetX = -minX + exportPadding;\n  const offsetY = -minY + exportPadding;\n  const frameElements = (0,_frame__WEBPACK_IMPORTED_MODULE_9__.getFrameElements)(elements);\n  let exportingFrameClipPath = "";\n\n  for (const frame of frameElements) {\n    const [x1, y1, x2, y2] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_1__.getElementAbsoluteCoords)(frame);\n    const cx = (x2 - x1) / 2 - (frame.x - x1);\n    const cy = (y2 - y1) / 2 - (frame.y - y1);\n    exportingFrameClipPath += `<clipPath id=${frame.id}>\n            <rect transform="translate(${frame.x + offsetX} ${frame.y + offsetY}) rotate(${frame.angle} ${cx} ${cy})"\n          width="${frame.width}"\n          height="${frame.height}"\n          >\n          </rect>\n        </clipPath>`;\n  }\n\n  svgRoot.innerHTML = `\n  ${SVG_EXPORT_TAG}\n  ${metadata}\n  <defs>\n    <style class="style-fonts">\n      @font-face {\n        font-family: "Virgil";\n        src: url("${assetPath}Virgil.woff2");\n      }\n      @font-face {\n        font-family: "Cascadia";\n        src: url("${assetPath}Cascadia.woff2");\n      }\n      @font-face {\n        font-family: "Assistant";\n        src: url("${assetPath}Assistant-Regular.woff2");\n      }\n    </style>\n    ${exportingFrameClipPath}\n  </defs>\n  `; // render background rect\n\n  if (appState.exportBackground && viewBackgroundColor) {\n    const rect = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_4__.SVG_NS, "rect");\n    rect.setAttribute("x", "0");\n    rect.setAttribute("y", "0");\n    rect.setAttribute("width", `${width}`);\n    rect.setAttribute("height", `${height}`);\n    rect.setAttribute("fill", viewBackgroundColor);\n    svgRoot.appendChild(rect);\n  }\n\n  const rsvg = roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_0__["default"].svg(svgRoot);\n  (0,_renderer_renderScene__WEBPACK_IMPORTED_MODULE_2__.renderSceneToSvg)(elementsForRender, rsvg, svgRoot, files || {}, {\n    offsetX,\n    offsetY,\n    exportWithDarkMode,\n    renderEmbeddables: (_d = opts === null || opts === void 0 ? void 0 : opts.renderEmbeddables) !== null && _d !== void 0 ? _d : false,\n    frameRendering\n  });\n  tempScene.destroy();\n  return svgRoot;\n}); // calculate smallest area to fit the contents in\n\nconst getCanvasSize = (elements, exportPadding) => {\n  const [minX, minY, maxX, maxY] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_1__.getCommonBounds)(elements);\n  const width = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.distance)(minX, maxX) + exportPadding * 2;\n  const height = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.distance)(minY, maxY) + exportPadding * 2;\n  return [minX, minY, width, height];\n};\n\nconst getExportSize = (elements, exportPadding, scale) => {\n  const [,, width, height] = getCanvasSize(elements, exportPadding).map(dimension => Math.trunc(dimension * scale));\n  return [width, height];\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 21832 characters]\n//# sourceURL=webpack-internal:///../../scene/export.ts\n');
              }
            ),
            /***/
            "../../scene/index.ts": (
              /*!****************************!*\
                !*** ../../scene/index.ts ***!
                \****************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "calculateScrollCenter": () => (/* reexport safe */ _scroll__WEBPACK_IMPORTED_MODULE_2__.calculateScrollCenter),\n/* harmony export */   "canChangeRoundness": () => (/* reexport safe */ _comparisons__WEBPACK_IMPORTED_MODULE_3__.canChangeRoundness),\n/* harmony export */   "canHaveArrowheads": () => (/* reexport safe */ _comparisons__WEBPACK_IMPORTED_MODULE_3__.canHaveArrowheads),\n/* harmony export */   "getCommonAttributeOfSelectedElements": () => (/* reexport safe */ _selection__WEBPACK_IMPORTED_MODULE_1__.getCommonAttributeOfSelectedElements),\n/* harmony export */   "getElementAtPosition": () => (/* reexport safe */ _comparisons__WEBPACK_IMPORTED_MODULE_3__.getElementAtPosition),\n/* harmony export */   "getElementsAtPosition": () => (/* reexport safe */ _comparisons__WEBPACK_IMPORTED_MODULE_3__.getElementsAtPosition),\n/* harmony export */   "getElementsWithinSelection": () => (/* reexport safe */ _selection__WEBPACK_IMPORTED_MODULE_1__.getElementsWithinSelection),\n/* harmony export */   "getNormalizedZoom": () => (/* reexport safe */ _zoom__WEBPACK_IMPORTED_MODULE_4__.getNormalizedZoom),\n/* harmony export */   "getSelectedElements": () => (/* reexport safe */ _selection__WEBPACK_IMPORTED_MODULE_1__.getSelectedElements),\n/* harmony export */   "getTargetElements": () => (/* reexport safe */ _selection__WEBPACK_IMPORTED_MODULE_1__.getTargetElements),\n/* harmony export */   "hasBackground": () => (/* reexport safe */ _comparisons__WEBPACK_IMPORTED_MODULE_3__.hasBackground),\n/* harmony export */   "hasStrokeStyle": () => (/* reexport safe */ _comparisons__WEBPACK_IMPORTED_MODULE_3__.hasStrokeStyle),\n/* harmony export */   "hasStrokeWidth": () => (/* reexport safe */ _comparisons__WEBPACK_IMPORTED_MODULE_3__.hasStrokeWidth),\n/* harmony export */   "isOverScrollBars": () => (/* reexport safe */ _scrollbars__WEBPACK_IMPORTED_MODULE_0__.isOverScrollBars),\n/* harmony export */   "isSomeElementSelected": () => (/* reexport safe */ _selection__WEBPACK_IMPORTED_MODULE_1__.isSomeElementSelected)\n/* harmony export */ });\n/* harmony import */ var _scrollbars__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./scrollbars */ "../../scene/scrollbars.ts");\n/* harmony import */ var _selection__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./selection */ "../../scene/selection.ts");\n/* harmony import */ var _scroll__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./scroll */ "../../scene/scroll.ts");\n/* harmony import */ var _comparisons__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./comparisons */ "../../scene/comparisons.ts");\n/* harmony import */ var _zoom__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./zoom */ "../../scene/zoom.ts");\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vc2NlbmUvaW5kZXgudHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBZ0Q7QUFDOEc7QUFDN0c7QUFDaUgiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vc2NlbmUvaW5kZXgudHM/ODY1NCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBpc092ZXJTY3JvbGxCYXJzIH0gZnJvbSBcIi4vc2Nyb2xsYmFyc1wiO1xuZXhwb3J0IHsgaXNTb21lRWxlbWVudFNlbGVjdGVkLCBnZXRFbGVtZW50c1dpdGhpblNlbGVjdGlvbiwgZ2V0Q29tbW9uQXR0cmlidXRlT2ZTZWxlY3RlZEVsZW1lbnRzLCBnZXRTZWxlY3RlZEVsZW1lbnRzLCBnZXRUYXJnZXRFbGVtZW50cyB9IGZyb20gXCIuL3NlbGVjdGlvblwiO1xuZXhwb3J0IHsgY2FsY3VsYXRlU2Nyb2xsQ2VudGVyIH0gZnJvbSBcIi4vc2Nyb2xsXCI7XG5leHBvcnQgeyBoYXNCYWNrZ3JvdW5kLCBoYXNTdHJva2VXaWR0aCwgaGFzU3Ryb2tlU3R5bGUsIGNhbkhhdmVBcnJvd2hlYWRzLCBjYW5DaGFuZ2VSb3VuZG5lc3MsIGdldEVsZW1lbnRBdFBvc2l0aW9uLCBnZXRFbGVtZW50c0F0UG9zaXRpb24gfSBmcm9tIFwiLi9jb21wYXJpc29uc1wiO1xuZXhwb3J0IHsgZ2V0Tm9ybWFsaXplZFpvb20gfSBmcm9tIFwiLi96b29tXCI7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../scene/index.ts\n');
              }
            ),
            /***/
            "../../scene/scroll.ts": (
              /*!*****************************!*\
                !*** ../../scene/scroll.ts ***!
                \*****************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "calculateScrollCenter": () => (/* binding */ calculateScrollCenter),\n/* harmony export */   "centerScrollOn": () => (/* binding */ centerScrollOn)\n/* harmony export */ });\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n\n\n\nconst isOutsideViewPort = (appState, cords) => {\n  const [x1, y1, x2, y2] = cords;\n  const {\n    x: viewportX1,\n    y: viewportY1\n  } = (0,_utils__WEBPACK_IMPORTED_MODULE_1__.sceneCoordsToViewportCoords)({\n    sceneX: x1,\n    sceneY: y1\n  }, appState);\n  const {\n    x: viewportX2,\n    y: viewportY2\n  } = (0,_utils__WEBPACK_IMPORTED_MODULE_1__.sceneCoordsToViewportCoords)({\n    sceneX: x2,\n    sceneY: y2\n  }, appState);\n  return viewportX2 - viewportX1 > appState.width || viewportY2 - viewportY1 > appState.height;\n};\n\nconst centerScrollOn = ({\n  scenePoint,\n  viewportDimensions,\n  zoom\n}) => {\n  return {\n    scrollX: viewportDimensions.width / 2 / zoom.value - scenePoint.x,\n    scrollY: viewportDimensions.height / 2 / zoom.value - scenePoint.y\n  };\n};\nconst calculateScrollCenter = (elements, appState) => {\n  elements = (0,_element__WEBPACK_IMPORTED_MODULE_0__.getVisibleElements)(elements);\n\n  if (!elements.length) {\n    return {\n      scrollX: 0,\n      scrollY: 0\n    };\n  }\n\n  let [x1, y1, x2, y2] = (0,_element__WEBPACK_IMPORTED_MODULE_0__.getCommonBounds)(elements);\n\n  if (isOutsideViewPort(appState, [x1, y1, x2, y2])) {\n    [x1, y1, x2, y2] = (0,_element__WEBPACK_IMPORTED_MODULE_0__.getClosestElementBounds)(elements, (0,_utils__WEBPACK_IMPORTED_MODULE_1__.viewportCoordsToSceneCoords)({\n      clientX: appState.scrollX,\n      clientY: appState.scrollY\n    }, appState));\n  }\n\n  const centerX = (x1 + x2) / 2;\n  const centerY = (y1 + y2) / 2;\n  return centerScrollOn({\n    scenePoint: {\n      x: centerX,\n      y: centerY\n    },\n    viewportDimensions: {\n      width: appState.width,\n      height: appState.height\n    },\n    zoom: appState.zoom\n  });\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vc2NlbmUvc2Nyb2xsLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBMEY7QUFDTjs7QUFFcEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksRUFBRSxtRUFBMkI7QUFDakM7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxJQUFJLEVBQUUsbUVBQTJCO0FBQ2pDO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUCxhQUFhLDREQUFrQjs7QUFFL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHlCQUF5Qix5REFBZTs7QUFFeEM7QUFDQSx1QkFBdUIsaUVBQXVCLFdBQVcsbUVBQTJCO0FBQ3BGO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEdBQUc7QUFDSCIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9zY2VuZS9zY3JvbGwudHM/YTY4YyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRDb21tb25Cb3VuZHMsIGdldENsb3Nlc3RFbGVtZW50Qm91bmRzLCBnZXRWaXNpYmxlRWxlbWVudHMgfSBmcm9tIFwiLi4vZWxlbWVudFwiO1xuaW1wb3J0IHsgc2NlbmVDb29yZHNUb1ZpZXdwb3J0Q29vcmRzLCB2aWV3cG9ydENvb3Jkc1RvU2NlbmVDb29yZHMgfSBmcm9tIFwiLi4vdXRpbHNcIjtcblxuY29uc3QgaXNPdXRzaWRlVmlld1BvcnQgPSAoYXBwU3RhdGUsIGNvcmRzKSA9PiB7XG4gIGNvbnN0IFt4MSwgeTEsIHgyLCB5Ml0gPSBjb3JkcztcbiAgY29uc3Qge1xuICAgIHg6IHZpZXdwb3J0WDEsXG4gICAgeTogdmlld3BvcnRZMVxuICB9ID0gc2NlbmVDb29yZHNUb1ZpZXdwb3J0Q29vcmRzKHtcbiAgICBzY2VuZVg6IHgxLFxuICAgIHNjZW5lWTogeTFcbiAgfSwgYXBwU3RhdGUpO1xuICBjb25zdCB7XG4gICAgeDogdmlld3BvcnRYMixcbiAgICB5OiB2aWV3cG9ydFkyXG4gIH0gPSBzY2VuZUNvb3Jkc1RvVmlld3BvcnRDb29yZHMoe1xuICAgIHNjZW5lWDogeDIsXG4gICAgc2NlbmVZOiB5MlxuICB9LCBhcHBTdGF0ZSk7XG4gIHJldHVybiB2aWV3cG9ydFgyIC0gdmlld3BvcnRYMSA+IGFwcFN0YXRlLndpZHRoIHx8IHZpZXdwb3J0WTIgLSB2aWV3cG9ydFkxID4gYXBwU3RhdGUuaGVpZ2h0O1xufTtcblxuZXhwb3J0IGNvbnN0IGNlbnRlclNjcm9sbE9uID0gKHtcbiAgc2NlbmVQb2ludCxcbiAgdmlld3BvcnREaW1lbnNpb25zLFxuICB6b29tXG59KSA9PiB7XG4gIHJldHVybiB7XG4gICAgc2Nyb2xsWDogdmlld3BvcnREaW1lbnNpb25zLndpZHRoIC8gMiAvIHpvb20udmFsdWUgLSBzY2VuZVBvaW50LngsXG4gICAgc2Nyb2xsWTogdmlld3BvcnREaW1lbnNpb25zLmhlaWdodCAvIDIgLyB6b29tLnZhbHVlIC0gc2NlbmVQb2ludC55XG4gIH07XG59O1xuZXhwb3J0IGNvbnN0IGNhbGN1bGF0ZVNjcm9sbENlbnRlciA9IChlbGVtZW50cywgYXBwU3RhdGUpID0+IHtcbiAgZWxlbWVudHMgPSBnZXRWaXNpYmxlRWxlbWVudHMoZWxlbWVudHMpO1xuXG4gIGlmICghZWxlbWVudHMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNjcm9sbFg6IDAsXG4gICAgICBzY3JvbGxZOiAwXG4gICAgfTtcbiAgfVxuXG4gIGxldCBbeDEsIHkxLCB4MiwgeTJdID0gZ2V0Q29tbW9uQm91bmRzKGVsZW1lbnRzKTtcblxuICBpZiAoaXNPdXRzaWRlVmlld1BvcnQoYXBwU3RhdGUsIFt4MSwgeTEsIHgyLCB5Ml0pKSB7XG4gICAgW3gxLCB5MSwgeDIsIHkyXSA9IGdldENsb3Nlc3RFbGVtZW50Qm91bmRzKGVsZW1lbnRzLCB2aWV3cG9ydENvb3Jkc1RvU2NlbmVDb29yZHMoe1xuICAgICAgY2xpZW50WDogYXBwU3RhdGUuc2Nyb2xsWCxcbiAgICAgIGNsaWVudFk6IGFwcFN0YXRlLnNjcm9sbFlcbiAgICB9LCBhcHBTdGF0ZSkpO1xuICB9XG5cbiAgY29uc3QgY2VudGVyWCA9ICh4MSArIHgyKSAvIDI7XG4gIGNvbnN0IGNlbnRlclkgPSAoeTEgKyB5MikgLyAyO1xuICByZXR1cm4gY2VudGVyU2Nyb2xsT24oe1xuICAgIHNjZW5lUG9pbnQ6IHtcbiAgICAgIHg6IGNlbnRlclgsXG4gICAgICB5OiBjZW50ZXJZXG4gICAgfSxcbiAgICB2aWV3cG9ydERpbWVuc2lvbnM6IHtcbiAgICAgIHdpZHRoOiBhcHBTdGF0ZS53aWR0aCxcbiAgICAgIGhlaWdodDogYXBwU3RhdGUuaGVpZ2h0XG4gICAgfSxcbiAgICB6b29tOiBhcHBTdGF0ZS56b29tXG4gIH0pO1xufTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../scene/scroll.ts\n');
              }
            ),
            /***/
            "../../scene/scrollbars.ts": (
              /*!*********************************!*\
                !*** ../../scene/scrollbars.ts ***!
                \*********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "SCROLLBAR_COLOR": () => (/* binding */ SCROLLBAR_COLOR),\n/* harmony export */   "SCROLLBAR_MARGIN": () => (/* binding */ SCROLLBAR_MARGIN),\n/* harmony export */   "SCROLLBAR_WIDTH": () => (/* binding */ SCROLLBAR_WIDTH),\n/* harmony export */   "getScrollBars": () => (/* binding */ getScrollBars),\n/* harmony export */   "isOverScrollBars": () => (/* binding */ isOverScrollBars)\n/* harmony export */ });\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n\n\n\nconst SCROLLBAR_MARGIN = 4;\nconst SCROLLBAR_WIDTH = 6;\nconst SCROLLBAR_COLOR = "rgba(0,0,0,0.3)";\nconst getScrollBars = (elements, viewportWidth, viewportHeight, appState) => {\n  if (elements.length === 0) {\n    return {\n      horizontal: null,\n      vertical: null\n    };\n  } // This is the bounding box of all the elements\n\n\n  const [elementsMinX, elementsMinY, elementsMaxX, elementsMaxY] = (0,_element__WEBPACK_IMPORTED_MODULE_0__.getCommonBounds)(elements); // Apply zoom\n\n  const viewportWidthWithZoom = viewportWidth / appState.zoom.value;\n  const viewportHeightWithZoom = viewportHeight / appState.zoom.value;\n  const viewportWidthDiff = viewportWidth - viewportWidthWithZoom;\n  const viewportHeightDiff = viewportHeight - viewportHeightWithZoom;\n  const safeArea = {\n    top: parseInt((0,_utils__WEBPACK_IMPORTED_MODULE_1__.getGlobalCSSVariable)("sat")) || 0,\n    bottom: parseInt((0,_utils__WEBPACK_IMPORTED_MODULE_1__.getGlobalCSSVariable)("sab")) || 0,\n    left: parseInt((0,_utils__WEBPACK_IMPORTED_MODULE_1__.getGlobalCSSVariable)("sal")) || 0,\n    right: parseInt((0,_utils__WEBPACK_IMPORTED_MODULE_1__.getGlobalCSSVariable)("sar")) || 0\n  };\n  const isRTL = (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.getLanguage)().rtl; // The viewport is the rectangle currently visible for the user\n\n  const viewportMinX = -appState.scrollX + viewportWidthDiff / 2 + safeArea.left;\n  const viewportMinY = -appState.scrollY + viewportHeightDiff / 2 + safeArea.top;\n  const viewportMaxX = viewportMinX + viewportWidthWithZoom - safeArea.right;\n  const viewportMaxY = viewportMinY + viewportHeightWithZoom - safeArea.bottom; // The scene is the bounding box of both the elements and viewport\n\n  const sceneMinX = Math.min(elementsMinX, viewportMinX);\n  const sceneMinY = Math.min(elementsMinY, viewportMinY);\n  const sceneMaxX = Math.max(elementsMaxX, viewportMaxX);\n  const sceneMaxY = Math.max(elementsMaxY, viewportMaxY); // The scrollbar represents where the viewport is in relationship to the scene\n\n  return {\n    horizontal: viewportMinX === sceneMinX && viewportMaxX === sceneMaxX ? null : {\n      x: Math.max(safeArea.left, SCROLLBAR_MARGIN) + (viewportMinX - sceneMinX) / (sceneMaxX - sceneMinX) * viewportWidth,\n      y: viewportHeight - SCROLLBAR_WIDTH - Math.max(SCROLLBAR_MARGIN, safeArea.bottom),\n      width: (viewportMaxX - viewportMinX) / (sceneMaxX - sceneMinX) * viewportWidth - Math.max(SCROLLBAR_MARGIN * 2, safeArea.left + safeArea.right),\n      height: SCROLLBAR_WIDTH\n    },\n    vertical: viewportMinY === sceneMinY && viewportMaxY === sceneMaxY ? null : {\n      x: isRTL ? Math.max(safeArea.left, SCROLLBAR_MARGIN) : viewportWidth - SCROLLBAR_WIDTH - Math.max(safeArea.right, SCROLLBAR_MARGIN),\n      y: (viewportMinY - sceneMinY) / (sceneMaxY - sceneMinY) * viewportHeight + Math.max(safeArea.top, SCROLLBAR_MARGIN),\n      width: SCROLLBAR_WIDTH,\n      height: (viewportMaxY - viewportMinY) / (sceneMaxY - sceneMinY) * viewportHeight - Math.max(SCROLLBAR_MARGIN * 2, safeArea.top + safeArea.bottom)\n    }\n  };\n};\nconst isOverScrollBars = (scrollBars, x, y) => {\n  const [isOverHorizontal, isOverVertical] = [scrollBars.horizontal, scrollBars.vertical].map(scrollBar => {\n    return scrollBar != null && scrollBar.x <= x && x <= scrollBar.x + scrollBar.width && scrollBar.y <= y && y <= scrollBar.y + scrollBar.height;\n  });\n  const isOverEither = isOverHorizontal || isOverVertical;\n  return {\n    isOverEither,\n    isOverHorizontal,\n    isOverVertical\n  };\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5468 characters]\n//# sourceURL=webpack-internal:///../../scene/scrollbars.ts\n');
              }
            ),
            /***/
            "../../scene/selection.ts": (
              /*!********************************!*\
                !*** ../../scene/selection.ts ***!
                \********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "excludeElementsInFramesFromSelection": () => (/* binding */ excludeElementsInFramesFromSelection),\n/* harmony export */   "getCommonAttributeOfSelectedElements": () => (/* binding */ getCommonAttributeOfSelectedElements),\n/* harmony export */   "getElementsWithinSelection": () => (/* binding */ getElementsWithinSelection),\n/* harmony export */   "getSelectedElements": () => (/* binding */ getSelectedElements),\n/* harmony export */   "getTargetElements": () => (/* binding */ getTargetElements),\n/* harmony export */   "getVisibleAndNonSelectedElements": () => (/* binding */ getVisibleAndNonSelectedElements),\n/* harmony export */   "isSomeElementSelected": () => (/* binding */ isSomeElementSelected),\n/* harmony export */   "makeNextSelectedElementIds": () => (/* binding */ makeNextSelectedElementIds)\n/* harmony export */ });\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../element/typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var _frame__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../frame */ "../../frame.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _element_sizeHelpers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../element/sizeHelpers */ "../../element/sizeHelpers.ts");\n\n\n\n\n\n/**\n * Frames and their containing elements are not to be selected at the same time.\n * Given an array of selected elements, if there are frames and their containing elements\n * we only keep the frames.\n * @param selectedElements\n */\n\nconst excludeElementsInFramesFromSelection = selectedElements => {\n  const framesInSelection = new Set();\n  selectedElements.forEach(element => {\n    if (element.type === "frame") {\n      framesInSelection.add(element.id);\n    }\n  });\n  return selectedElements.filter(element => {\n    if (element.frameId && framesInSelection.has(element.frameId)) {\n      return false;\n    }\n\n    return true;\n  });\n};\nconst getElementsWithinSelection = (elements, selection, excludeElementsInFrames = true) => {\n  const [selectionX1, selectionY1, selectionX2, selectionY2] = (0,_element__WEBPACK_IMPORTED_MODULE_0__.getElementAbsoluteCoords)(selection);\n  let elementsInSelection = elements.filter(element => {\n    let [elementX1, elementY1, elementX2, elementY2] = (0,_element__WEBPACK_IMPORTED_MODULE_0__.getElementBounds)(element);\n    const containingFrame = (0,_frame__WEBPACK_IMPORTED_MODULE_2__.getContainingFrame)(element);\n\n    if (containingFrame) {\n      const [fx1, fy1, fx2, fy2] = (0,_element__WEBPACK_IMPORTED_MODULE_0__.getElementBounds)(containingFrame);\n      elementX1 = Math.max(fx1, elementX1);\n      elementY1 = Math.max(fy1, elementY1);\n      elementX2 = Math.min(fx2, elementX2);\n      elementY2 = Math.min(fy2, elementY2);\n    }\n\n    return element.locked === false && element.type !== "selection" && !(0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isBoundToContainer)(element) && selectionX1 <= elementX1 && selectionY1 <= elementY1 && selectionX2 >= elementX2 && selectionY2 >= elementY2;\n  });\n  elementsInSelection = excludeElementsInFrames ? excludeElementsInFramesFromSelection(elementsInSelection) : elementsInSelection;\n  elementsInSelection = elementsInSelection.filter(element => {\n    const containingFrame = (0,_frame__WEBPACK_IMPORTED_MODULE_2__.getContainingFrame)(element);\n\n    if (containingFrame) {\n      return (0,_frame__WEBPACK_IMPORTED_MODULE_2__.elementOverlapsWithFrame)(element, containingFrame);\n    }\n\n    return true;\n  });\n  return elementsInSelection;\n};\nconst getVisibleAndNonSelectedElements = (elements, selectedElements, appState) => {\n  const selectedElementsSet = new Set(selectedElements.map(element => element.id));\n  return elements.filter(element => {\n    const isVisible = (0,_element_sizeHelpers__WEBPACK_IMPORTED_MODULE_4__.isElementInViewport)(element, appState.width, appState.height, appState);\n    return !selectedElementsSet.has(element.id) && isVisible;\n  });\n}; // FIXME move this into the editor instance to keep utility methods stateless\n\nconst isSomeElementSelected = function () {\n  let lastElements = null;\n  let lastSelectedElementIds = null;\n  let isSelected = null;\n\n  const ret = (elements, appState) => {\n    if (isSelected != null && elements === lastElements && appState.selectedElementIds === lastSelectedElementIds) {\n      return isSelected;\n    }\n\n    isSelected = elements.some(element => appState.selectedElementIds[element.id]);\n    lastElements = elements;\n    lastSelectedElementIds = appState.selectedElementIds;\n    return isSelected;\n  };\n\n  ret.clearCache = () => {\n    lastElements = null;\n    lastSelectedElementIds = null;\n    isSelected = null;\n  };\n\n  return ret;\n}();\n/**\n * Returns common attribute (picked by `getAttribute` callback) of selected\n *  elements. If elements don\'t share the same value, returns `null`.\n */\n\nconst getCommonAttributeOfSelectedElements = (elements, appState, getAttribute) => {\n  const attributes = Array.from(new Set(getSelectedElements(elements, appState).map(element => getAttribute(element))));\n  return attributes.length === 1 ? attributes[0] : null;\n};\nconst getSelectedElements = (elements, appState, opts) => {\n  const selectedElements = elements.filter(element => {\n    if (appState.selectedElementIds[element.id]) {\n      return element;\n    }\n\n    if ((opts === null || opts === void 0 ? void 0 : opts.includeBoundTextElement) && (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isBoundToContainer)(element) && appState.selectedElementIds[element === null || element === void 0 ? void 0 : element.containerId]) {\n      return element;\n    }\n\n    return null;\n  });\n\n  if (opts === null || opts === void 0 ? void 0 : opts.includeElementsInFrames) {\n    const elementsToInclude = [];\n    selectedElements.forEach(element => {\n      if (element.type === "frame") {\n        (0,_frame__WEBPACK_IMPORTED_MODULE_2__.getFrameChildren)(elements, element.id).forEach(e => elementsToInclude.push(e));\n      }\n\n      elementsToInclude.push(element);\n    });\n    return elementsToInclude;\n  }\n\n  return selectedElements;\n};\nconst getTargetElements = (elements, appState) => appState.editingElement ? [appState.editingElement] : getSelectedElements(elements, appState, {\n  includeBoundTextElement: true\n});\n/**\n * returns prevState\'s selectedElementids if no change from previous, so as to\n * retain reference identity for memoization\n */\n\nconst makeNextSelectedElementIds = (nextSelectedElementIds, prevState) => {\n  if ((0,_utils__WEBPACK_IMPORTED_MODULE_3__.isShallowEqual)(prevState.selectedElementIds, nextSelectedElementIds)) {\n    return prevState.selectedElementIds;\n  }\n\n  return nextSelectedElementIds;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 8584 characters]\n//# sourceURL=webpack-internal:///../../scene/selection.ts\n');
              }
            ),
            /***/
            "../../scene/zoom.ts": (
              /*!***************************!*\
                !*** ../../scene/zoom.ts ***!
                \***************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "getNormalizedZoom": () => (/* binding */ getNormalizedZoom),\n/* harmony export */   "getStateForZoom": () => (/* binding */ getStateForZoom)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n\nconst getNormalizedZoom = zoom => {\n  return Math.max(_constants__WEBPACK_IMPORTED_MODULE_0__.MIN_ZOOM, Math.min(zoom, 30));\n};\nconst getStateForZoom = ({\n  viewportX,\n  viewportY,\n  nextZoom\n}, appState) => {\n  const appLayerX = viewportX - appState.offsetLeft;\n  const appLayerY = viewportY - appState.offsetTop;\n  const currentZoom = appState.zoom.value; // get original scroll position without zoom\n\n  const baseScrollX = appState.scrollX + (appLayerX - appLayerX / currentZoom);\n  const baseScrollY = appState.scrollY + (appLayerY - appLayerY / currentZoom); // get scroll offsets for target zoom level\n\n  const zoomOffsetScrollX = -(appLayerX - appLayerX / nextZoom);\n  const zoomOffsetScrollY = -(appLayerY - appLayerY / nextZoom);\n  return {\n    scrollX: baseScrollX + zoomOffsetScrollX,\n    scrollY: baseScrollY + zoomOffsetScrollY,\n    zoom: {\n      value: nextZoom\n    }\n  };\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vc2NlbmUvem9vbS50cy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBd0M7QUFDakM7QUFDUCxrQkFBa0IsZ0RBQVE7QUFDMUI7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0EsMkNBQTJDOztBQUUzQztBQUNBLGdGQUFnRjs7QUFFaEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vc2NlbmUvem9vbS50cz8wNmNjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1JTl9aT09NIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuZXhwb3J0IGNvbnN0IGdldE5vcm1hbGl6ZWRab29tID0gem9vbSA9PiB7XG4gIHJldHVybiBNYXRoLm1heChNSU5fWk9PTSwgTWF0aC5taW4oem9vbSwgMzApKTtcbn07XG5leHBvcnQgY29uc3QgZ2V0U3RhdGVGb3Jab29tID0gKHtcbiAgdmlld3BvcnRYLFxuICB2aWV3cG9ydFksXG4gIG5leHRab29tXG59LCBhcHBTdGF0ZSkgPT4ge1xuICBjb25zdCBhcHBMYXllclggPSB2aWV3cG9ydFggLSBhcHBTdGF0ZS5vZmZzZXRMZWZ0O1xuICBjb25zdCBhcHBMYXllclkgPSB2aWV3cG9ydFkgLSBhcHBTdGF0ZS5vZmZzZXRUb3A7XG4gIGNvbnN0IGN1cnJlbnRab29tID0gYXBwU3RhdGUuem9vbS52YWx1ZTsgLy8gZ2V0IG9yaWdpbmFsIHNjcm9sbCBwb3NpdGlvbiB3aXRob3V0IHpvb21cblxuICBjb25zdCBiYXNlU2Nyb2xsWCA9IGFwcFN0YXRlLnNjcm9sbFggKyAoYXBwTGF5ZXJYIC0gYXBwTGF5ZXJYIC8gY3VycmVudFpvb20pO1xuICBjb25zdCBiYXNlU2Nyb2xsWSA9IGFwcFN0YXRlLnNjcm9sbFkgKyAoYXBwTGF5ZXJZIC0gYXBwTGF5ZXJZIC8gY3VycmVudFpvb20pOyAvLyBnZXQgc2Nyb2xsIG9mZnNldHMgZm9yIHRhcmdldCB6b29tIGxldmVsXG5cbiAgY29uc3Qgem9vbU9mZnNldFNjcm9sbFggPSAtKGFwcExheWVyWCAtIGFwcExheWVyWCAvIG5leHRab29tKTtcbiAgY29uc3Qgem9vbU9mZnNldFNjcm9sbFkgPSAtKGFwcExheWVyWSAtIGFwcExheWVyWSAvIG5leHRab29tKTtcbiAgcmV0dXJuIHtcbiAgICBzY3JvbGxYOiBiYXNlU2Nyb2xsWCArIHpvb21PZmZzZXRTY3JvbGxYLFxuICAgIHNjcm9sbFk6IGJhc2VTY3JvbGxZICsgem9vbU9mZnNldFNjcm9sbFksXG4gICAgem9vbToge1xuICAgICAgdmFsdWU6IG5leHRab29tXG4gICAgfVxuICB9O1xufTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../scene/zoom.ts\n');
              }
            ),
            /***/
            "../../shapes.tsx": (
              /*!************************!*\
                !*** ../../shapes.tsx ***!
                \************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "SHAPES": () => (/* binding */ SHAPES),\n/* harmony export */   "findShapeByKey": () => (/* binding */ findShapeByKey)\n/* harmony export */ });\n/* harmony import */ var _components_icons__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./components/icons */ "../../components/icons.tsx");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./keys */ "../../keys.ts");\n\n\nconst SHAPES = [{\n  icon: _components_icons__WEBPACK_IMPORTED_MODULE_0__.SelectionIcon,\n  value: "selection",\n  key: _keys__WEBPACK_IMPORTED_MODULE_1__.KEYS.V,\n  numericKey: _keys__WEBPACK_IMPORTED_MODULE_1__.KEYS[1],\n  fillable: true\n}, {\n  icon: _components_icons__WEBPACK_IMPORTED_MODULE_0__.RectangleIcon,\n  value: "rectangle",\n  key: _keys__WEBPACK_IMPORTED_MODULE_1__.KEYS.R,\n  numericKey: _keys__WEBPACK_IMPORTED_MODULE_1__.KEYS[2],\n  fillable: true\n}, {\n  icon: _components_icons__WEBPACK_IMPORTED_MODULE_0__.DiamondIcon,\n  value: "diamond",\n  key: _keys__WEBPACK_IMPORTED_MODULE_1__.KEYS.D,\n  numericKey: _keys__WEBPACK_IMPORTED_MODULE_1__.KEYS[3],\n  fillable: true\n}, {\n  icon: _components_icons__WEBPACK_IMPORTED_MODULE_0__.EllipseIcon,\n  value: "ellipse",\n  key: _keys__WEBPACK_IMPORTED_MODULE_1__.KEYS.O,\n  numericKey: _keys__WEBPACK_IMPORTED_MODULE_1__.KEYS[4],\n  fillable: true\n}, {\n  icon: _components_icons__WEBPACK_IMPORTED_MODULE_0__.ArrowIcon,\n  value: "arrow",\n  key: _keys__WEBPACK_IMPORTED_MODULE_1__.KEYS.A,\n  numericKey: _keys__WEBPACK_IMPORTED_MODULE_1__.KEYS[5],\n  fillable: true\n}, {\n  icon: _components_icons__WEBPACK_IMPORTED_MODULE_0__.LineIcon,\n  value: "line",\n  key: _keys__WEBPACK_IMPORTED_MODULE_1__.KEYS.L,\n  numericKey: _keys__WEBPACK_IMPORTED_MODULE_1__.KEYS[6],\n  fillable: true\n}, {\n  icon: _components_icons__WEBPACK_IMPORTED_MODULE_0__.FreedrawIcon,\n  value: "freedraw",\n  key: [_keys__WEBPACK_IMPORTED_MODULE_1__.KEYS.P, _keys__WEBPACK_IMPORTED_MODULE_1__.KEYS.X],\n  numericKey: _keys__WEBPACK_IMPORTED_MODULE_1__.KEYS[7],\n  fillable: false\n}, {\n  icon: _components_icons__WEBPACK_IMPORTED_MODULE_0__.TextIcon,\n  value: "text",\n  key: _keys__WEBPACK_IMPORTED_MODULE_1__.KEYS.T,\n  numericKey: _keys__WEBPACK_IMPORTED_MODULE_1__.KEYS[8],\n  fillable: false\n}, {\n  icon: _components_icons__WEBPACK_IMPORTED_MODULE_0__.ImageIcon,\n  value: "image",\n  key: null,\n  numericKey: _keys__WEBPACK_IMPORTED_MODULE_1__.KEYS[9],\n  fillable: false\n}, {\n  icon: _components_icons__WEBPACK_IMPORTED_MODULE_0__.EraserIcon,\n  value: "eraser",\n  key: _keys__WEBPACK_IMPORTED_MODULE_1__.KEYS.E,\n  numericKey: _keys__WEBPACK_IMPORTED_MODULE_1__.KEYS[0],\n  fillable: false\n} // TODO: frame, create icon and set up numeric key\n// {\n//   icon: RectangleIcon,\n//   value: "frame",\n//   key: KEYS.F,\n//   numericKey: KEYS.SUBTRACT,\n//   fillable: false,\n// },\n];\nconst findShapeByKey = key => {\n  const shape = SHAPES.find((shape, index) => {\n    return shape.numericKey != null && key === shape.numericKey.toString() || shape.key && (typeof shape.key === "string" ? shape.key === key : shape.key.includes(key));\n  });\n  return (shape === null || shape === void 0 ? void 0 : shape.value) || null;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vc2hhcGVzLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQWdLO0FBQ2xJO0FBQ3ZCO0FBQ1AsUUFBUSw0REFBYTtBQUNyQjtBQUNBLE9BQU8seUNBQU07QUFDYixjQUFjLDBDQUFTO0FBQ3ZCO0FBQ0EsQ0FBQztBQUNELFFBQVEsNERBQWE7QUFDckI7QUFDQSxPQUFPLHlDQUFNO0FBQ2IsY0FBYywwQ0FBUztBQUN2QjtBQUNBLENBQUM7QUFDRCxRQUFRLDBEQUFXO0FBQ25CO0FBQ0EsT0FBTyx5Q0FBTTtBQUNiLGNBQWMsMENBQVM7QUFDdkI7QUFDQSxDQUFDO0FBQ0QsUUFBUSwwREFBVztBQUNuQjtBQUNBLE9BQU8seUNBQU07QUFDYixjQUFjLDBDQUFTO0FBQ3ZCO0FBQ0EsQ0FBQztBQUNELFFBQVEsd0RBQVM7QUFDakI7QUFDQSxPQUFPLHlDQUFNO0FBQ2IsY0FBYywwQ0FBUztBQUN2QjtBQUNBLENBQUM7QUFDRCxRQUFRLHVEQUFRO0FBQ2hCO0FBQ0EsT0FBTyx5Q0FBTTtBQUNiLGNBQWMsMENBQVM7QUFDdkI7QUFDQSxDQUFDO0FBQ0QsUUFBUSwyREFBWTtBQUNwQjtBQUNBLFFBQVEseUNBQU0sRUFBRSx5Q0FBTTtBQUN0QixjQUFjLDBDQUFTO0FBQ3ZCO0FBQ0EsQ0FBQztBQUNELFFBQVEsdURBQVE7QUFDaEI7QUFDQSxPQUFPLHlDQUFNO0FBQ2IsY0FBYywwQ0FBUztBQUN2QjtBQUNBLENBQUM7QUFDRCxRQUFRLHdEQUFTO0FBQ2pCO0FBQ0E7QUFDQSxjQUFjLDBDQUFTO0FBQ3ZCO0FBQ0EsQ0FBQztBQUNELFFBQVEseURBQVU7QUFDbEI7QUFDQSxPQUFPLHlDQUFNO0FBQ2IsY0FBYywwQ0FBUztBQUN2QjtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDTztBQUNQO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9zaGFwZXMudHN4PzAxMzQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXJyb3dJY29uLCBEaWFtb25kSWNvbiwgRWxsaXBzZUljb24sIEVyYXNlckljb24sIEZyZWVkcmF3SWNvbiwgSW1hZ2VJY29uLCBMaW5lSWNvbiwgUmVjdGFuZ2xlSWNvbiwgU2VsZWN0aW9uSWNvbiwgVGV4dEljb24gfSBmcm9tIFwiLi9jb21wb25lbnRzL2ljb25zXCI7XG5pbXBvcnQgeyBLRVlTIH0gZnJvbSBcIi4va2V5c1wiO1xuZXhwb3J0IGNvbnN0IFNIQVBFUyA9IFt7XG4gIGljb246IFNlbGVjdGlvbkljb24sXG4gIHZhbHVlOiBcInNlbGVjdGlvblwiLFxuICBrZXk6IEtFWVMuVixcbiAgbnVtZXJpY0tleTogS0VZU1tcIjFcIl0sXG4gIGZpbGxhYmxlOiB0cnVlXG59LCB7XG4gIGljb246IFJlY3RhbmdsZUljb24sXG4gIHZhbHVlOiBcInJlY3RhbmdsZVwiLFxuICBrZXk6IEtFWVMuUixcbiAgbnVtZXJpY0tleTogS0VZU1tcIjJcIl0sXG4gIGZpbGxhYmxlOiB0cnVlXG59LCB7XG4gIGljb246IERpYW1vbmRJY29uLFxuICB2YWx1ZTogXCJkaWFtb25kXCIsXG4gIGtleTogS0VZUy5ELFxuICBudW1lcmljS2V5OiBLRVlTW1wiM1wiXSxcbiAgZmlsbGFibGU6IHRydWVcbn0sIHtcbiAgaWNvbjogRWxsaXBzZUljb24sXG4gIHZhbHVlOiBcImVsbGlwc2VcIixcbiAga2V5OiBLRVlTLk8sXG4gIG51bWVyaWNLZXk6IEtFWVNbXCI0XCJdLFxuICBmaWxsYWJsZTogdHJ1ZVxufSwge1xuICBpY29uOiBBcnJvd0ljb24sXG4gIHZhbHVlOiBcImFycm93XCIsXG4gIGtleTogS0VZUy5BLFxuICBudW1lcmljS2V5OiBLRVlTW1wiNVwiXSxcbiAgZmlsbGFibGU6IHRydWVcbn0sIHtcbiAgaWNvbjogTGluZUljb24sXG4gIHZhbHVlOiBcImxpbmVcIixcbiAga2V5OiBLRVlTLkwsXG4gIG51bWVyaWNLZXk6IEtFWVNbXCI2XCJdLFxuICBmaWxsYWJsZTogdHJ1ZVxufSwge1xuICBpY29uOiBGcmVlZHJhd0ljb24sXG4gIHZhbHVlOiBcImZyZWVkcmF3XCIsXG4gIGtleTogW0tFWVMuUCwgS0VZUy5YXSxcbiAgbnVtZXJpY0tleTogS0VZU1tcIjdcIl0sXG4gIGZpbGxhYmxlOiBmYWxzZVxufSwge1xuICBpY29uOiBUZXh0SWNvbixcbiAgdmFsdWU6IFwidGV4dFwiLFxuICBrZXk6IEtFWVMuVCxcbiAgbnVtZXJpY0tleTogS0VZU1tcIjhcIl0sXG4gIGZpbGxhYmxlOiBmYWxzZVxufSwge1xuICBpY29uOiBJbWFnZUljb24sXG4gIHZhbHVlOiBcImltYWdlXCIsXG4gIGtleTogbnVsbCxcbiAgbnVtZXJpY0tleTogS0VZU1tcIjlcIl0sXG4gIGZpbGxhYmxlOiBmYWxzZVxufSwge1xuICBpY29uOiBFcmFzZXJJY29uLFxuICB2YWx1ZTogXCJlcmFzZXJcIixcbiAga2V5OiBLRVlTLkUsXG4gIG51bWVyaWNLZXk6IEtFWVNbXCIwXCJdLFxuICBmaWxsYWJsZTogZmFsc2Vcbn0gLy8gVE9ETzogZnJhbWUsIGNyZWF0ZSBpY29uIGFuZCBzZXQgdXAgbnVtZXJpYyBrZXlcbi8vIHtcbi8vICAgaWNvbjogUmVjdGFuZ2xlSWNvbixcbi8vICAgdmFsdWU6IFwiZnJhbWVcIixcbi8vICAga2V5OiBLRVlTLkYsXG4vLyAgIG51bWVyaWNLZXk6IEtFWVMuU1VCVFJBQ1QsXG4vLyAgIGZpbGxhYmxlOiBmYWxzZSxcbi8vIH0sXG5dO1xuZXhwb3J0IGNvbnN0IGZpbmRTaGFwZUJ5S2V5ID0ga2V5ID0+IHtcbiAgY29uc3Qgc2hhcGUgPSBTSEFQRVMuZmluZCgoc2hhcGUsIGluZGV4KSA9PiB7XG4gICAgcmV0dXJuIHNoYXBlLm51bWVyaWNLZXkgIT0gbnVsbCAmJiBrZXkgPT09IHNoYXBlLm51bWVyaWNLZXkudG9TdHJpbmcoKSB8fCBzaGFwZS5rZXkgJiYgKHR5cGVvZiBzaGFwZS5rZXkgPT09IFwic3RyaW5nXCIgPyBzaGFwZS5rZXkgPT09IGtleSA6IHNoYXBlLmtleS5pbmNsdWRlcyhrZXkpKTtcbiAgfSk7XG4gIHJldHVybiAoc2hhcGUgPT09IG51bGwgfHwgc2hhcGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNoYXBlLnZhbHVlKSB8fCBudWxsO1xufTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../shapes.tsx\n');
              }
            ),
            /***/
            "../../snapping.ts": (
              /*!*************************!*\
                !*** ../../snapping.ts ***!
                \*************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "SnapCache": () => (/* binding */ SnapCache),
/* harmony export */   "areRoughlyEqual": () => (/* binding */ areRoughlyEqual),
/* harmony export */   "getElementsCorners": () => (/* binding */ getElementsCorners),
/* harmony export */   "getReferenceSnapPoints": () => (/* binding */ getReferenceSnapPoints),
/* harmony export */   "getSnapDistance": () => (/* binding */ getSnapDistance),
/* harmony export */   "getSnapLinesAtPointer": () => (/* binding */ getSnapLinesAtPointer),
/* harmony export */   "getVisibleGaps": () => (/* binding */ getVisibleGaps),
/* harmony export */   "isActiveToolNonLinearSnappable": () => (/* binding */ isActiveToolNonLinearSnappable),
/* harmony export */   "isSnappingEnabled": () => (/* binding */ isSnappingEnabled),
/* harmony export */   "snapDraggedElements": () => (/* binding */ snapDraggedElements),
/* harmony export */   "snapNewElement": () => (/* binding */ snapNewElement),
/* harmony export */   "snapResizingElements": () => (/* binding */ snapResizingElements)
/* harmony export */ });
/* harmony import */ var _element_bounds__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./element/bounds */ "../../element/bounds.ts");
/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./element/typeChecks */ "../../element/typeChecks.ts");
/* harmony import */ var _groups__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./groups */ "../../groups.ts");
/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./keys */ "../../keys.ts");
/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./math */ "../../math.ts");
/* harmony import */ var _scene_selection__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./scene/selection */ "../../scene/selection.ts");






const SNAP_DISTANCE = 8; // do not comput more gaps per axis than this limit
// TODO increase or remove once we optimize

const VISIBLE_GAPS_LIMIT_PER_AXIS = 99999; // snap distance with zoom value taken into consideration

const getSnapDistance = zoomValue => {
  return SNAP_DISTANCE / zoomValue;
}; // -----------------------------------------------------------------------------

class SnapCache {}
SnapCache.referenceSnapPoints = null;
SnapCache.visibleGaps = null;

SnapCache.setReferenceSnapPoints = snapPoints => {
  SnapCache.referenceSnapPoints = snapPoints;
};

SnapCache.getReferenceSnapPoints = () => {
  return SnapCache.referenceSnapPoints;
};

SnapCache.setVisibleGaps = gaps => {
  SnapCache.visibleGaps = gaps;
};

SnapCache.getVisibleGaps = () => {
  return SnapCache.visibleGaps;
};

SnapCache.destroy = () => {
  SnapCache.referenceSnapPoints = null;
  SnapCache.visibleGaps = null;
}; // -----------------------------------------------------------------------------


const isSnappingEnabled = ({
  event,
  appState,
  selectedElements
}) => {
  if (event) {
    return appState.objectsSnapModeEnabled && !event[_keys__WEBPACK_IMPORTED_MODULE_3__.KEYS.CTRL_OR_CMD] || !appState.objectsSnapModeEnabled && event[_keys__WEBPACK_IMPORTED_MODULE_3__.KEYS.CTRL_OR_CMD] && appState.gridSize === null;
  } // do not suggest snaps for an arrow to give way to binding


  if (selectedElements.length === 1 && selectedElements[0].type === "arrow") {
    return false;
  }

  return appState.objectsSnapModeEnabled;
};
const areRoughlyEqual = (a, b, precision = 0.01) => {
  return Math.abs(a - b) <= precision;
};
const getElementsCorners = (elements, {
  omitCenter,
  boundingBoxCorners,
  dragOffset
} = {
  omitCenter: false,
  boundingBoxCorners: false
}) => {
  let result = [];

  if (elements.length === 1) {
    const element = elements[0];
    let [x1, y1, x2, y2, cx, cy] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_0__.getElementAbsoluteCoords)(element);

    if (dragOffset) {
      x1 += dragOffset.x;
      x2 += dragOffset.x;
      cx += dragOffset.x;
      y1 += dragOffset.y;
      y2 += dragOffset.y;
      cy += dragOffset.y;
    }

    const halfWidth = (x2 - x1) / 2;
    const halfHeight = (y2 - y1) / 2;

    if ((element.type === "diamond" || element.type === "ellipse") && !boundingBoxCorners) {
      const leftMid = (0,_math__WEBPACK_IMPORTED_MODULE_4__.rotatePoint)([x1, y1 + halfHeight], [cx, cy], element.angle);
      const topMid = (0,_math__WEBPACK_IMPORTED_MODULE_4__.rotatePoint)([x1 + halfWidth, y1], [cx, cy], element.angle);
      const rightMid = (0,_math__WEBPACK_IMPORTED_MODULE_4__.rotatePoint)([x2, y1 + halfHeight], [cx, cy], element.angle);
      const bottomMid = (0,_math__WEBPACK_IMPORTED_MODULE_4__.rotatePoint)([x1 + halfWidth, y2], [cx, cy], element.angle);
      const center = [cx, cy];
      result = omitCenter ? [leftMid, topMid, rightMid, bottomMid] : [leftMid, topMid, rightMid, bottomMid, center];
    } else {
      const topLeft = (0,_math__WEBPACK_IMPORTED_MODULE_4__.rotatePoint)([x1, y1], [cx, cy], element.angle);
      const topRight = (0,_math__WEBPACK_IMPORTED_MODULE_4__.rotatePoint)([x2, y1], [cx, cy], element.angle);
      const bottomLeft = (0,_math__WEBPACK_IMPORTED_MODULE_4__.rotatePoint)([x1, y2], [cx, cy], element.angle);
      const bottomRight = (0,_math__WEBPACK_IMPORTED_MODULE_4__.rotatePoint)([x2, y2], [cx, cy], element.angle);
      const center = [cx, cy];
      result = omitCenter ? [topLeft, topRight, bottomLeft, bottomRight] : [topLeft, topRight, bottomLeft, bottomRight, center];
    }
  } else if (elements.length > 1) {
    const [minX, minY, maxX, maxY] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_0__.getDraggedElementsBounds)(elements, dragOffset !== null && dragOffset !== void 0 ? dragOffset : {
      x: 0,
      y: 0
    });
    const width = maxX - minX;
    const height = maxY - minY;
    const topLeft = [minX, minY];
    const topRight = [maxX, minY];
    const bottomLeft = [minX, maxY];
    const bottomRight = [maxX, maxY];
    const center = [minX + width / 2, minY + height / 2];
    result = omitCenter ? [topLeft, topRight, bottomLeft, bottomRight] : [topLeft, topRight, bottomLeft, bottomRight, center];
  }

  return result.map(point => [round(point[0]), round(point[1])]);
};

const getReferenceElements = (elements, selectedElements, appState) => {
  const selectedFrames = selectedElements.filter(element => (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isFrameElement)(element)).map(frame => frame.id);
  return (0,_scene_selection__WEBPACK_IMPORTED_MODULE_5__.getVisibleAndNonSelectedElements)(elements, selectedElements, appState).filter(element => !(element.frameId && selectedFrames.includes(element.frameId)));
};

const getVisibleGaps = (elements, selectedElements, appState) => {
  const referenceElements = getReferenceElements(elements, selectedElements, appState);
  const referenceBounds = (0,_groups__WEBPACK_IMPORTED_MODULE_2__.getMaximumGroups)(referenceElements).filter(elementsGroup => !(elementsGroup.length === 1 && (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isBoundToContainer)(elementsGroup[0]))).map(group => (0,_element_bounds__WEBPACK_IMPORTED_MODULE_0__.getCommonBounds)(group).map(bound => round(bound)));
  const horizontallySorted = referenceBounds.sort((a, b) => a[0] - b[0]);
  const horizontalGaps = [];
  let c = 0;

  horizontal: for (let i = 0; i < horizontallySorted.length; i++) {
    const startBounds = horizontallySorted[i];

    for (let j = i + 1; j < horizontallySorted.length; j++) {
      if (++c > VISIBLE_GAPS_LIMIT_PER_AXIS) {
        break horizontal;
      }

      const endBounds = horizontallySorted[j];
      const [, startMinY, startMaxX, startMaxY] = startBounds;
      const [endMinX, endMinY,, endMaxY] = endBounds;

      if (startMaxX < endMinX && (0,_math__WEBPACK_IMPORTED_MODULE_4__.rangesOverlap)([startMinY, startMaxY], [endMinY, endMaxY])) {
        horizontalGaps.push({
          startBounds,
          endBounds,
          startSide: [[startMaxX, startMinY], [startMaxX, startMaxY]],
          endSide: [[endMinX, endMinY], [endMinX, endMaxY]],
          length: endMinX - startMaxX,
          overlap: (0,_math__WEBPACK_IMPORTED_MODULE_4__.rangeIntersection)([startMinY, startMaxY], [endMinY, endMaxY])
        });
      }
    }
  }

  const verticallySorted = referenceBounds.sort((a, b) => a[1] - b[1]);
  const verticalGaps = [];
  c = 0;

  vertical: for (let i = 0; i < verticallySorted.length; i++) {
    const startBounds = verticallySorted[i];

    for (let j = i + 1; j < verticallySorted.length; j++) {
      if (++c > VISIBLE_GAPS_LIMIT_PER_AXIS) {
        break vertical;
      }

      const endBounds = verticallySorted[j];
      const [startMinX,, startMaxX, startMaxY] = startBounds;
      const [endMinX, endMinY, endMaxX] = endBounds;

      if (startMaxY < endMinY && (0,_math__WEBPACK_IMPORTED_MODULE_4__.rangesOverlap)([startMinX, startMaxX], [endMinX, endMaxX])) {
        verticalGaps.push({
          startBounds,
          endBounds,
          startSide: [[startMinX, startMaxY], [startMaxX, startMaxY]],
          endSide: [[endMinX, endMinY], [endMaxX, endMinY]],
          length: endMinY - startMaxY,
          overlap: (0,_math__WEBPACK_IMPORTED_MODULE_4__.rangeIntersection)([startMinX, startMaxX], [endMinX, endMaxX])
        });
      }
    }
  }

  return {
    horizontalGaps,
    verticalGaps
  };
};

const getGapSnaps = (selectedElements, dragOffset, appState, event, nearestSnapsX, nearestSnapsY, minOffset) => {
  if (!isSnappingEnabled({
    appState,
    event,
    selectedElements
  })) {
    return [];
  }

  if (selectedElements.length === 0) {
    return [];
  }

  const visibleGaps = SnapCache.getVisibleGaps();

  if (visibleGaps) {
    const {
      horizontalGaps,
      verticalGaps
    } = visibleGaps;
    const [minX, minY, maxX, maxY] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_0__.getDraggedElementsBounds)(selectedElements, dragOffset).map(bound => round(bound));
    const centerX = (minX + maxX) / 2;
    const centerY = (minY + maxY) / 2;

    for (const gap of horizontalGaps) {
      if (!(0,_math__WEBPACK_IMPORTED_MODULE_4__.rangesOverlap)([minY, maxY], gap.overlap)) {
        continue;
      } // center gap


      const gapMidX = gap.startSide[0][0] + gap.length / 2;
      const centerOffset = round(gapMidX - centerX);
      const gapIsLargerThanSelection = gap.length > maxX - minX;

      if (gapIsLargerThanSelection && Math.abs(centerOffset) <= minOffset.x) {
        if (Math.abs(centerOffset) < minOffset.x) {
          nearestSnapsX.length = 0;
        }

        minOffset.x = Math.abs(centerOffset);
        const snap = {
          type: "gap",
          direction: "center_horizontal",
          gap,
          offset: centerOffset
        };
        nearestSnapsX.push(snap);
        continue;
      } // side gap, from the right


      const [,, endMaxX] = gap.endBounds;
      const distanceToEndElementX = minX - endMaxX;
      const sideOffsetRight = round(gap.length - distanceToEndElementX);

      if (Math.abs(sideOffsetRight) <= minOffset.x) {
        if (Math.abs(sideOffsetRight) < minOffset.x) {
          nearestSnapsX.length = 0;
        }

        minOffset.x = Math.abs(sideOffsetRight);
        const snap = {
          type: "gap",
          direction: "side_right",
          gap,
          offset: sideOffsetRight
        };
        nearestSnapsX.push(snap);
        continue;
      } // side gap, from the left


      const [startMinX,,,] = gap.startBounds;
      const distanceToStartElementX = startMinX - maxX;
      const sideOffsetLeft = round(distanceToStartElementX - gap.length);

      if (Math.abs(sideOffsetLeft) <= minOffset.x) {
        if (Math.abs(sideOffsetLeft) < minOffset.x) {
          nearestSnapsX.length = 0;
        }

        minOffset.x = Math.abs(sideOffsetLeft);
        const snap = {
          type: "gap",
          direction: "side_left",
          gap,
          offset: sideOffsetLeft
        };
        nearestSnapsX.push(snap);
        continue;
      }
    }

    for (const gap of verticalGaps) {
      if (!(0,_math__WEBPACK_IMPORTED_MODULE_4__.rangesOverlap)([minX, maxX], gap.overlap)) {
        continue;
      } // center gap


      const gapMidY = gap.startSide[0][1] + gap.length / 2;
      const centerOffset = round(gapMidY - centerY);
      const gapIsLargerThanSelection = gap.length > maxY - minY;

      if (gapIsLargerThanSelection && Math.abs(centerOffset) <= minOffset.y) {
        if (Math.abs(centerOffset) < minOffset.y) {
          nearestSnapsY.length = 0;
        }

        minOffset.y = Math.abs(centerOffset);
        const snap = {
          type: "gap",
          direction: "center_vertical",
          gap,
          offset: centerOffset
        };
        nearestSnapsY.push(snap);
        continue;
      } // side gap, from the top


      const [, startMinY,,] = gap.startBounds;
      const distanceToStartElementY = startMinY - maxY;
      const sideOffsetTop = round(distanceToStartElementY - gap.length);

      if (Math.abs(sideOffsetTop) <= minOffset.y) {
        if (Math.abs(sideOffsetTop) < minOffset.y) {
          nearestSnapsY.length = 0;
        }

        minOffset.y = Math.abs(sideOffsetTop);
        const snap = {
          type: "gap",
          direction: "side_top",
          gap,
          offset: sideOffsetTop
        };
        nearestSnapsY.push(snap);
        continue;
      } // side gap, from the bottom


      const [,,, endMaxY] = gap.endBounds;
      const distanceToEndElementY = round(minY - endMaxY);
      const sideOffsetBottom = gap.length - distanceToEndElementY;

      if (Math.abs(sideOffsetBottom) <= minOffset.y) {
        if (Math.abs(sideOffsetBottom) < minOffset.y) {
          nearestSnapsY.length = 0;
        }

        minOffset.y = Math.abs(sideOffsetBottom);
        const snap = {
          type: "gap",
          direction: "side_bottom",
          gap,
          offset: sideOffsetBottom
        };
        nearestSnapsY.push(snap);
        continue;
      }
    }
  }
};

const getReferenceSnapPoints = (elements, selectedElements, appState) => {
  const referenceElements = getReferenceElements(elements, selectedElements, appState);
  return (0,_groups__WEBPACK_IMPORTED_MODULE_2__.getMaximumGroups)(referenceElements).filter(elementsGroup => !(elementsGroup.length === 1 && (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isBoundToContainer)(elementsGroup[0]))).flatMap(elementGroup => getElementsCorners(elementGroup));
};

const getPointSnaps = (selectedElements, selectionSnapPoints, appState, event, nearestSnapsX, nearestSnapsY, minOffset) => {
  if (!isSnappingEnabled({
    appState,
    event,
    selectedElements
  }) || selectedElements.length === 0 && selectionSnapPoints.length === 0) {
    return [];
  }

  const referenceSnapPoints = SnapCache.getReferenceSnapPoints();

  if (referenceSnapPoints) {
    for (const thisSnapPoint of selectionSnapPoints) {
      for (const otherSnapPoint of referenceSnapPoints) {
        const offsetX = otherSnapPoint[0] - thisSnapPoint[0];
        const offsetY = otherSnapPoint[1] - thisSnapPoint[1];

        if (Math.abs(offsetX) <= minOffset.x) {
          if (Math.abs(offsetX) < minOffset.x) {
            nearestSnapsX.length = 0;
          }

          nearestSnapsX.push({
            type: "point",
            points: [thisSnapPoint, otherSnapPoint],
            offset: offsetX
          });
          minOffset.x = Math.abs(offsetX);
        }

        if (Math.abs(offsetY) <= minOffset.y) {
          if (Math.abs(offsetY) < minOffset.y) {
            nearestSnapsY.length = 0;
          }

          nearestSnapsY.push({
            type: "point",
            points: [thisSnapPoint, otherSnapPoint],
            offset: offsetY
          });
          minOffset.y = Math.abs(offsetY);
        }
      }
    }
  }
};

const snapDraggedElements = (selectedElements, dragOffset, appState, event) => {
  var _a, _b, _c, _d;

  if (!isSnappingEnabled({
    appState,
    event,
    selectedElements
  }) || selectedElements.length === 0) {
    return {
      snapOffset: {
        x: 0,
        y: 0
      },
      snapLines: []
    };
  }

  dragOffset.x = round(dragOffset.x);
  dragOffset.y = round(dragOffset.y);
  const nearestSnapsX = [];
  const nearestSnapsY = [];
  const snapDistance = getSnapDistance(appState.zoom.value);
  const minOffset = {
    x: snapDistance,
    y: snapDistance
  };
  const selectionPoints = getElementsCorners(selectedElements, {
    dragOffset
  }); // get the nearest horizontal and vertical point and gap snaps

  getPointSnaps(selectedElements, selectionPoints, appState, event, nearestSnapsX, nearestSnapsY, minOffset);
  getGapSnaps(selectedElements, dragOffset, appState, event, nearestSnapsX, nearestSnapsY, minOffset); // using the nearest snaps to figure out how
  // much the elements need to be offset to be snapped
  // to some reference elements

  const snapOffset = {
    x: (_b = (_a = nearestSnapsX[0]) === null || _a === void 0 ? void 0 : _a.offset) !== null && _b !== void 0 ? _b : 0,
    y: (_d = (_c = nearestSnapsY[0]) === null || _c === void 0 ? void 0 : _c.offset) !== null && _d !== void 0 ? _d : 0
  }; // once the elements are snapped
  // and moved to the snapped position
  // we want to use the element's snapped position
  // to update nearest snaps so that we can create
  // point and gap snap lines correctly without any shifting

  minOffset.x = 0;
  minOffset.y = 0;
  nearestSnapsX.length = 0;
  nearestSnapsY.length = 0;
  const newDragOffset = {
    x: round(dragOffset.x + snapOffset.x),
    y: round(dragOffset.y + snapOffset.y)
  };
  getPointSnaps(selectedElements, getElementsCorners(selectedElements, {
    dragOffset: newDragOffset
  }), appState, event, nearestSnapsX, nearestSnapsY, minOffset);
  getGapSnaps(selectedElements, newDragOffset, appState, event, nearestSnapsX, nearestSnapsY, minOffset);
  const pointSnapLines = createPointSnapLines(nearestSnapsX, nearestSnapsY);
  const gapSnapLines = createGapSnapLines(selectedElements, newDragOffset, [...nearestSnapsX, ...nearestSnapsY].filter(snap => snap.type === "gap"));
  return {
    snapOffset,
    snapLines: [...pointSnapLines, ...gapSnapLines]
  };
};

const round = x => {
  const decimalPlaces = 6;
  return Math.round(x * Math.pow(10, decimalPlaces)) / Math.pow(10, decimalPlaces);
};

const dedupePoints = points => {
  const map = new Map();

  for (const point of points) {
    const key = point.join(",");

    if (!map.has(key)) {
      map.set(key, point);
    }
  }

  return Array.from(map.values());
};

const createPointSnapLines = (nearestSnapsX, nearestSnapsY) => {
  const snapsX = {};
  const snapsY = {};

  if (nearestSnapsX.length > 0) {
    for (const snap of nearestSnapsX) {
      if (snap.type === "point") {
        // key = thisPoint.x
        const key = round(snap.points[0][0]);

        if (!snapsX[key]) {
          snapsX[key] = [];
        }

        snapsX[key].push(...snap.points.map(point => [round(point[0]), round(point[1])]));
      }
    }
  }

  if (nearestSnapsY.length > 0) {
    for (const snap of nearestSnapsY) {
      if (snap.type === "point") {
        // key = thisPoint.y
        const key = round(snap.points[0][1]);

        if (!snapsY[key]) {
          snapsY[key] = [];
        }

        snapsY[key].push(...snap.points.map(point => [round(point[0]), round(point[1])]));
      }
    }
  }

  return Object.entries(snapsX).map(([key, points]) => {
    return {
      type: "points",
      points: dedupePoints(points.map(point => {
        return [Number(key), point[1]];
      }).sort((a, b) => a[1] - b[1]))
    };
  }).concat(Object.entries(snapsY).map(([key, points]) => {
    return {
      type: "points",
      points: dedupePoints(points.map(point => {
        return [point[0], Number(key)];
      }).sort((a, b) => a[0] - b[0]))
    };
  }));
};

const dedupeGapSnapLines = gapSnapLines => {
  const map = new Map();

  for (const gapSnapLine of gapSnapLines) {
    const key = gapSnapLine.points.flat().map(point => [round(point)]).join(",");

    if (!map.has(key)) {
      map.set(key, gapSnapLine);
    }
  }

  return Array.from(map.values());
};

const createGapSnapLines = (selectedElements, dragOffset, gapSnaps) => {
  const [minX, minY, maxX, maxY] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_0__.getDraggedElementsBounds)(selectedElements, dragOffset);
  const gapSnapLines = [];

  for (const gapSnap of gapSnaps) {
    const [startMinX, startMinY, startMaxX, startMaxY] = gapSnap.gap.startBounds;
    const [endMinX, endMinY, endMaxX, endMaxY] = gapSnap.gap.endBounds;
    const verticalIntersection = (0,_math__WEBPACK_IMPORTED_MODULE_4__.rangeIntersection)([minY, maxY], gapSnap.gap.overlap);
    const horizontalGapIntersection = (0,_math__WEBPACK_IMPORTED_MODULE_4__.rangeIntersection)([minX, maxX], gapSnap.gap.overlap);

    switch (gapSnap.direction) {
      case "center_horizontal":
        {
          if (verticalIntersection) {
            const gapLineY = (verticalIntersection[0] + verticalIntersection[1]) / 2;
            gapSnapLines.push({
              type: "gap",
              direction: "horizontal",
              points: [[gapSnap.gap.startSide[0][0], gapLineY], [minX, gapLineY]]
            }, {
              type: "gap",
              direction: "horizontal",
              points: [[maxX, gapLineY], [gapSnap.gap.endSide[0][0], gapLineY]]
            });
          }

          break;
        }

      case "center_vertical":
        {
          if (horizontalGapIntersection) {
            const gapLineX = (horizontalGapIntersection[0] + horizontalGapIntersection[1]) / 2;
            gapSnapLines.push({
              type: "gap",
              direction: "vertical",
              points: [[gapLineX, gapSnap.gap.startSide[0][1]], [gapLineX, minY]]
            }, {
              type: "gap",
              direction: "vertical",
              points: [[gapLineX, maxY], [gapLineX, gapSnap.gap.endSide[0][1]]]
            });
          }

          break;
        }

      case "side_right":
        {
          if (verticalIntersection) {
            const gapLineY = (verticalIntersection[0] + verticalIntersection[1]) / 2;
            gapSnapLines.push({
              type: "gap",
              direction: "horizontal",
              points: [[startMaxX, gapLineY], [endMinX, gapLineY]]
            }, {
              type: "gap",
              direction: "horizontal",
              points: [[endMaxX, gapLineY], [minX, gapLineY]]
            });
          }

          break;
        }

      case "side_left":
        {
          if (verticalIntersection) {
            const gapLineY = (verticalIntersection[0] + verticalIntersection[1]) / 2;
            gapSnapLines.push({
              type: "gap",
              direction: "horizontal",
              points: [[maxX, gapLineY], [startMinX, gapLineY]]
            }, {
              type: "gap",
              direction: "horizontal",
              points: [[startMaxX, gapLineY], [endMinX, gapLineY]]
            });
          }

          break;
        }

      case "side_top":
        {
          if (horizontalGapIntersection) {
            const gapLineX = (horizontalGapIntersection[0] + horizontalGapIntersection[1]) / 2;
            gapSnapLines.push({
              type: "gap",
              direction: "vertical",
              points: [[gapLineX, maxY], [gapLineX, startMinY]]
            }, {
              type: "gap",
              direction: "vertical",
              points: [[gapLineX, startMaxY], [gapLineX, endMinY]]
            });
          }

          break;
        }

      case "side_bottom":
        {
          if (horizontalGapIntersection) {
            const gapLineX = (horizontalGapIntersection[0] + horizontalGapIntersection[1]) / 2;
            gapSnapLines.push({
              type: "gap",
              direction: "vertical",
              points: [[gapLineX, startMaxY], [gapLineX, endMinY]]
            }, {
              type: "gap",
              direction: "vertical",
              points: [[gapLineX, endMaxY], [gapLineX, minY]]
            });
          }

          break;
        }
    }
  }

  return dedupeGapSnapLines(gapSnapLines.map(gapSnapLine => {
    return Object.assign(Object.assign({}, gapSnapLine), {
      points: gapSnapLine.points.map(point => [round(point[0]), round(point[1])])
    });
  }));
};

const snapResizingElements = ( // use the latest elements to create snap lines
selectedElements, // while using the original elements to appy dragOffset to calculate snaps
selectedOriginalElements, appState, event, dragOffset, transformHandle) => {
  var _a, _b, _c, _d;

  if (!isSnappingEnabled({
    event,
    selectedElements,
    appState
  }) || selectedElements.length === 0 || selectedElements.length === 1 && !areRoughlyEqual(selectedElements[0].angle, 0)) {
    return {
      snapOffset: {
        x: 0,
        y: 0
      },
      snapLines: []
    };
  }

  let [minX, minY, maxX, maxY] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_0__.getCommonBounds)(selectedOriginalElements);

  if (transformHandle) {
    if (transformHandle.includes("e")) {
      maxX += dragOffset.x;
    } else if (transformHandle.includes("w")) {
      minX += dragOffset.x;
    }

    if (transformHandle.includes("n")) {
      minY += dragOffset.y;
    } else if (transformHandle.includes("s")) {
      maxY += dragOffset.y;
    }
  }

  const selectionSnapPoints = [];

  if (transformHandle) {
    switch (transformHandle) {
      case "e":
        {
          selectionSnapPoints.push([maxX, minY], [maxX, maxY]);
          break;
        }

      case "w":
        {
          selectionSnapPoints.push([minX, minY], [minX, maxY]);
          break;
        }

      case "n":
        {
          selectionSnapPoints.push([minX, minY], [maxX, minY]);
          break;
        }

      case "s":
        {
          selectionSnapPoints.push([minX, maxY], [maxX, maxY]);
          break;
        }

      case "ne":
        {
          selectionSnapPoints.push([maxX, minY]);
          break;
        }

      case "nw":
        {
          selectionSnapPoints.push([minX, minY]);
          break;
        }

      case "se":
        {
          selectionSnapPoints.push([maxX, maxY]);
          break;
        }

      case "sw":
        {
          selectionSnapPoints.push([minX, maxY]);
          break;
        }
    }
  }

  const snapDistance = getSnapDistance(appState.zoom.value);
  const minOffset = {
    x: snapDistance,
    y: snapDistance
  };
  const nearestSnapsX = [];
  const nearestSnapsY = [];
  getPointSnaps(selectedOriginalElements, selectionSnapPoints, appState, event, nearestSnapsX, nearestSnapsY, minOffset);
  const snapOffset = {
    x: (_b = (_a = nearestSnapsX[0]) === null || _a === void 0 ? void 0 : _a.offset) !== null && _b !== void 0 ? _b : 0,
    y: (_d = (_c = nearestSnapsY[0]) === null || _c === void 0 ? void 0 : _c.offset) !== null && _d !== void 0 ? _d : 0
  }; // again, once snap offset is calculated
  // reset to recompute for creating snap lines to be rendered

  minOffset.x = 0;
  minOffset.y = 0;
  nearestSnapsX.length = 0;
  nearestSnapsY.length = 0;
  const [x1, y1, x2, y2] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_0__.getCommonBounds)(selectedElements).map(bound => round(bound));
  const corners = [[x1, y1], [x1, y2], [x2, y1], [x2, y2]];
  getPointSnaps(selectedElements, corners, appState, event, nearestSnapsX, nearestSnapsY, minOffset);
  const pointSnapLines = createPointSnapLines(nearestSnapsX, nearestSnapsY);
  return {
    snapOffset,
    snapLines: pointSnapLines
  };
};
const snapNewElement = (draggingElement, appState, event, origin, dragOffset) => {
  var _a, _b, _c, _d;

  if (!isSnappingEnabled({
    event,
    selectedElements: [draggingElement],
    appState
  })) {
    return {
      snapOffset: {
        x: 0,
        y: 0
      },
      snapLines: []
    };
  }

  const selectionSnapPoints = [[origin.x + dragOffset.x, origin.y + dragOffset.y]];
  const snapDistance = getSnapDistance(appState.zoom.value);
  const minOffset = {
    x: snapDistance,
    y: snapDistance
  };
  const nearestSnapsX = [];
  const nearestSnapsY = [];
  getPointSnaps([draggingElement], selectionSnapPoints, appState, event, nearestSnapsX, nearestSnapsY, minOffset);
  const snapOffset = {
    x: (_b = (_a = nearestSnapsX[0]) === null || _a === void 0 ? void 0 : _a.offset) !== null && _b !== void 0 ? _b : 0,
    y: (_d = (_c = nearestSnapsY[0]) === null || _c === void 0 ? void 0 : _c.offset) !== null && _d !== void 0 ? _d : 0
  };
  minOffset.x = 0;
  minOffset.y = 0;
  nearestSnapsX.length = 0;
  nearestSnapsY.length = 0;
  const corners = getElementsCorners([draggingElement], {
    boundingBoxCorners: true,
    omitCenter: true
  });
  getPointSnaps([draggingElement], corners, appState, event, nearestSnapsX, nearestSnapsY, minOffset);
  const pointSnapLines = createPointSnapLines(nearestSnapsX, nearestSnapsY);
  return {
    snapOffset,
    snapLines: pointSnapLines
  };
};
const getSnapLinesAtPointer = (elements, appState, pointer, event) => {
  if (!isSnappingEnabled({
    event,
    selectedElements: [],
    appState
  })) {
    return {
      originOffset: {
        x: 0,
        y: 0
      },
      snapLines: []
    };
  }

  const referenceElements = (0,_scene_selection__WEBPACK_IMPORTED_MODULE_5__.getVisibleAndNonSelectedElements)(elements, [], appState);
  const snapDistance = getSnapDistance(appState.zoom.value);
  const minOffset = {
    x: snapDistance,
    y: snapDistance
  };
  const horizontalSnapLines = [];
  const verticalSnapLines = [];

  for (const referenceElement of referenceElements) {
    const corners = getElementsCorners([referenceElement]);

    for (const corner of corners) {
      const offsetX = corner[0] - pointer.x;

      if (Math.abs(offsetX) <= Math.abs(minOffset.x)) {
        if (Math.abs(offsetX) < Math.abs(minOffset.x)) {
          verticalSnapLines.length = 0;
        }

        verticalSnapLines.push({
          type: "pointer",
          points: [corner, [corner[0], pointer.y]],
          direction: "vertical"
        });
        minOffset.x = offsetX;
      }

      const offsetY = corner[1] - pointer.y;

      if (Math.abs(offsetY) <= Math.abs(minOffset.y)) {
        if (Math.abs(offsetY) < Math.abs(minOffset.y)) {
          horizontalSnapLines.length = 0;
        }

        horizontalSnapLines.push({
          type: "pointer",
          points: [corner, [pointer.x, corner[1]]],
          direction: "horizontal"
        });
        minOffset.y = offsetY;
      }
    }
  }

  return {
    originOffset: {
      x: verticalSnapLines.length > 0 ? verticalSnapLines[0].points[0][0] - pointer.x : 0,
      y: horizontalSnapLines.length > 0 ? horizontalSnapLines[0].points[0][1] - pointer.y : 0
    },
    snapLines: [...verticalSnapLines, ...horizontalSnapLines]
  };
};
const isActiveToolNonLinearSnappable = activeToolType => {
  return activeToolType === "rectangle" || activeToolType === "ellipse" || activeToolType === "diamond" || activeToolType === "frame" || activeToolType === "image";
};//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 46012 characters]
//# sourceURL=webpack-internal:///../../snapping.ts
`);
              }
            ),
            /***/
            "../../types.ts": (
              /*!**********************!*\
                !*** ../../types.ts ***!
                \**********************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "UserIdleState": () => (/* binding */ UserIdleState)\n/* harmony export */ });\nvar UserIdleState;\n\n(function (UserIdleState) {\n  UserIdleState["ACTIVE"] = "active";\n  UserIdleState["AWAY"] = "away";\n  UserIdleState["IDLE"] = "idle";\n})(UserIdleState || (UserIdleState = {}));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vdHlwZXMudHMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxzQ0FBc0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vdHlwZXMudHM/M2ZkOCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdmFyIFVzZXJJZGxlU3RhdGU7XG5cbihmdW5jdGlvbiAoVXNlcklkbGVTdGF0ZSkge1xuICBVc2VySWRsZVN0YXRlW1wiQUNUSVZFXCJdID0gXCJhY3RpdmVcIjtcbiAgVXNlcklkbGVTdGF0ZVtcIkFXQVlcIl0gPSBcImF3YXlcIjtcbiAgVXNlcklkbGVTdGF0ZVtcIklETEVcIl0gPSBcImlkbGVcIjtcbn0pKFVzZXJJZGxlU3RhdGUgfHwgKFVzZXJJZGxlU3RhdGUgPSB7fSkpOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../types.ts\n');
              }
            ),
            /***/
            "../../utils.ts": (
              /*!**********************!*\
                !*** ../../utils.ts ***!
                \**********************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "allowFullScreen": () => (/* binding */ allowFullScreen),\n/* harmony export */   "arrayToMap": () => (/* binding */ arrayToMap),\n/* harmony export */   "arrayToMapWithIndex": () => (/* binding */ arrayToMapWithIndex),\n/* harmony export */   "assertNever": () => (/* binding */ assertNever),\n/* harmony export */   "bytesToHexString": () => (/* binding */ bytesToHexString),\n/* harmony export */   "capitalizeString": () => (/* binding */ capitalizeString),\n/* harmony export */   "chunk": () => (/* binding */ chunk),\n/* harmony export */   "cloneJSON": () => (/* binding */ cloneJSON),\n/* harmony export */   "composeEventHandlers": () => (/* binding */ composeEventHandlers),\n/* harmony export */   "debounce": () => (/* binding */ debounce),\n/* harmony export */   "distance": () => (/* binding */ distance),\n/* harmony export */   "easeOut": () => (/* binding */ easeOut),\n/* harmony export */   "easeToValuesRAF": () => (/* binding */ easeToValuesRAF),\n/* harmony export */   "exitFullScreen": () => (/* binding */ exitFullScreen),\n/* harmony export */   "findIndex": () => (/* binding */ findIndex),\n/* harmony export */   "findLastIndex": () => (/* binding */ findLastIndex),\n/* harmony export */   "focusNearestParent": () => (/* binding */ focusNearestParent),\n/* harmony export */   "getDateTime": () => (/* binding */ getDateTime),\n/* harmony export */   "getFontFamilyString": () => (/* binding */ getFontFamilyString),\n/* harmony export */   "getFontString": () => (/* binding */ getFontString),\n/* harmony export */   "getFrame": () => (/* binding */ getFrame),\n/* harmony export */   "getGlobalCSSVariable": () => (/* binding */ getGlobalCSSVariable),\n/* harmony export */   "getNearestScrollableContainer": () => (/* binding */ getNearestScrollableContainer),\n/* harmony export */   "getShortcutKey": () => (/* binding */ getShortcutKey),\n/* harmony export */   "getUpdatedTimestamp": () => (/* binding */ getUpdatedTimestamp),\n/* harmony export */   "getVersion": () => (/* binding */ getVersion),\n/* harmony export */   "isFullScreen": () => (/* binding */ isFullScreen),\n/* harmony export */   "isInputLike": () => (/* binding */ isInputLike),\n/* harmony export */   "isInteractive": () => (/* binding */ isInteractive),\n/* harmony export */   "isMemberOf": () => (/* binding */ isMemberOf),\n/* harmony export */   "isOnlyExportingSingleFrame": () => (/* binding */ isOnlyExportingSingleFrame),\n/* harmony export */   "isPrimitive": () => (/* binding */ isPrimitive),\n/* harmony export */   "isPromiseLike": () => (/* binding */ isPromiseLike),\n/* harmony export */   "isRTL": () => (/* binding */ isRTL),\n/* harmony export */   "isRenderThrottlingEnabled": () => (/* binding */ isRenderThrottlingEnabled),\n/* harmony export */   "isRunningInIframe": () => (/* binding */ isRunningInIframe),\n/* harmony export */   "isShallowEqual": () => (/* binding */ isShallowEqual),\n/* harmony export */   "isTestEnv": () => (/* binding */ isTestEnv),\n/* harmony export */   "isToolIcon": () => (/* binding */ isToolIcon),\n/* harmony export */   "isTransparent": () => (/* binding */ isTransparent),\n/* harmony export */   "isWritableElement": () => (/* binding */ isWritableElement),\n/* harmony export */   "memoize": () => (/* binding */ memoize),\n/* harmony export */   "muteFSAbortError": () => (/* binding */ muteFSAbortError),\n/* harmony export */   "nFormatter": () => (/* binding */ nFormatter),\n/* harmony export */   "preventUnload": () => (/* binding */ preventUnload),\n/* harmony export */   "queryFocusableElements": () => (/* binding */ queryFocusableElements),\n/* harmony export */   "removeSelection": () => (/* binding */ removeSelection),\n/* harmony export */   "resolvablePromise": () => (/* binding */ resolvablePromise),\n/* harmony export */   "sceneCoordsToViewportCoords": () => (/* binding */ sceneCoordsToViewportCoords),\n/* harmony export */   "selectNode": () => (/* binding */ selectNode),\n/* harmony export */   "setDateTimeForTests": () => (/* binding */ setDateTimeForTests),\n/* harmony export */   "supportsEmoji": () => (/* binding */ supportsEmoji),\n/* harmony export */   "throttleRAF": () => (/* binding */ throttleRAF),\n/* harmony export */   "tupleToCoors": () => (/* binding */ tupleToCoors),\n/* harmony export */   "updateActiveTool": () => (/* binding */ updateActiveTool),\n/* harmony export */   "updateObject": () => (/* binding */ updateObject),\n/* harmony export */   "viewportCoordsToSceneCoords": () => (/* binding */ viewportCoordsToSceneCoords),\n/* harmony export */   "withBatchedUpdates": () => (/* binding */ withBatchedUpdates),\n/* harmony export */   "withBatchedUpdatesThrottled": () => (/* binding */ withBatchedUpdatesThrottled),\n/* harmony export */   "wrapEvent": () => (/* binding */ wrapEvent)\n/* harmony export */ });\n/* harmony import */ var _colors__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./colors */ "../../colors.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constants */ "../../constants.ts");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-dom */ "react-dom");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_3__);\n\n\n\n\nlet mockDateTime = null;\nconst setDateTimeForTests = dateTime => {\n  mockDateTime = dateTime;\n};\nconst getDateTime = () => {\n  if (mockDateTime) {\n    return mockDateTime;\n  }\n\n  const date = new Date();\n  const year = date.getFullYear();\n  const month = `${date.getMonth() + 1}`.padStart(2, "0");\n  const day = `${date.getDate()}`.padStart(2, "0");\n  const hr = `${date.getHours()}`.padStart(2, "0");\n  const min = `${date.getMinutes()}`.padStart(2, "0");\n  return `${year}-${month}-${day}-${hr}${min}`;\n};\nconst capitalizeString = str => str.charAt(0).toUpperCase() + str.slice(1);\nconst isToolIcon = target => target instanceof HTMLElement && target.className.includes("ToolIcon");\nconst isInputLike = target => target instanceof HTMLElement && target.dataset.type === "wysiwyg" || target instanceof HTMLBRElement || // newline in wysiwyg\ntarget instanceof HTMLInputElement || target instanceof HTMLTextAreaElement || target instanceof HTMLSelectElement;\nconst isInteractive = target => {\n  return isInputLike(target) || target instanceof Element && !!target.closest("label, button");\n};\nconst isWritableElement = target => target instanceof HTMLElement && target.dataset.type === "wysiwyg" || target instanceof HTMLBRElement || // newline in wysiwyg\ntarget instanceof HTMLTextAreaElement || target instanceof HTMLInputElement && (target.type === "text" || target.type === "number");\nconst getFontFamilyString = ({\n  fontFamily\n}) => {\n  for (const [fontFamilyString, id] of Object.entries(_constants__WEBPACK_IMPORTED_MODULE_1__.FONT_FAMILY)) {\n    if (id === fontFamily) {\n      return `${fontFamilyString}, ${_constants__WEBPACK_IMPORTED_MODULE_1__.WINDOWS_EMOJI_FALLBACK_FONT}`;\n    }\n  }\n\n  return _constants__WEBPACK_IMPORTED_MODULE_1__.WINDOWS_EMOJI_FALLBACK_FONT;\n};\n/** returns fontSize+fontFamily string for assignment to DOM elements */\n\nconst getFontString = ({\n  fontSize,\n  fontFamily\n}) => {\n  return `${fontSize}px ${getFontFamilyString({\n    fontFamily\n  })}`;\n};\nconst debounce = (fn, timeout) => {\n  let handle = 0;\n  let lastArgs = null;\n\n  const ret = (...args) => {\n    lastArgs = args;\n    clearTimeout(handle);\n    handle = window.setTimeout(() => {\n      lastArgs = null;\n      fn(...args);\n    }, timeout);\n  };\n\n  ret.flush = () => {\n    clearTimeout(handle);\n\n    if (lastArgs) {\n      const _lastArgs = lastArgs;\n      lastArgs = null;\n      fn(..._lastArgs);\n    }\n  };\n\n  ret.cancel = () => {\n    lastArgs = null;\n    clearTimeout(handle);\n  };\n\n  return ret;\n}; // throttle callback to execute once per animation frame\n\nconst throttleRAF = (fn, opts) => {\n  let timerId = null;\n  let lastArgs = null;\n  let lastArgsTrailing = null;\n\n  const scheduleFunc = args => {\n    timerId = window.requestAnimationFrame(() => {\n      timerId = null;\n      fn(...args);\n      lastArgs = null;\n\n      if (lastArgsTrailing) {\n        lastArgs = lastArgsTrailing;\n        lastArgsTrailing = null;\n        scheduleFunc(lastArgs);\n      }\n    });\n  };\n\n  const ret = (...args) => {\n    if (false) {}\n\n    lastArgs = args;\n\n    if (timerId === null) {\n      scheduleFunc(lastArgs);\n    } else if (opts === null || opts === void 0 ? void 0 : opts.trailing) {\n      lastArgsTrailing = args;\n    }\n  };\n\n  ret.flush = () => {\n    if (timerId !== null) {\n      cancelAnimationFrame(timerId);\n      timerId = null;\n    }\n\n    if (lastArgs) {\n      fn(...(lastArgsTrailing || lastArgs));\n      lastArgs = lastArgsTrailing = null;\n    }\n  };\n\n  ret.cancel = () => {\n    lastArgs = lastArgsTrailing = null;\n\n    if (timerId !== null) {\n      cancelAnimationFrame(timerId);\n      timerId = null;\n    }\n  };\n\n  return ret;\n};\n/**\n * Exponential ease-out method\n *\n * @param {number} k - The value to be tweened.\n * @returns {number} The tweened value.\n */\n\nconst easeOut = k => {\n  return 1 - Math.pow(1 - k, 4);\n};\n\nconst easeOutInterpolate = (from, to, progress) => {\n  return (to - from) * easeOut(progress) + from;\n};\n/**\n * Animates values from `fromValues` to `toValues` using the requestAnimationFrame API.\n * Executes the `onStep` callback on each step with the interpolated values.\n * Returns a function that can be called to cancel the animation.\n *\n * @example\n * // Example usage:\n * const fromValues = { x: 0, y: 0 };\n * const toValues = { x: 100, y: 200 };\n * const onStep = ({x, y}) => {\n *   setState(x, y)\n * };\n * const onCancel = () => {\n *   console.log("Animation canceled");\n * };\n *\n * const cancelAnimation = easeToValuesRAF({\n *   fromValues,\n *   toValues,\n *   onStep,\n *   onCancel,\n * });\n *\n * // To cancel the animation:\n * cancelAnimation();\n */\n\n\nconst easeToValuesRAF = ({\n  fromValues,\n  toValues,\n  onStep,\n  duration = 250,\n  interpolateValue,\n  onStart,\n  onEnd,\n  onCancel\n}) => {\n  let canceled = false;\n  let frameId = 0;\n  let startTime;\n\n  function step(timestamp) {\n    if (canceled) {\n      return;\n    }\n\n    if (startTime === undefined) {\n      startTime = timestamp;\n      onStart === null || onStart === void 0 ? void 0 : onStart();\n    }\n\n    const elapsed = Math.min(timestamp - startTime, duration);\n    const factor = easeOut(elapsed / duration);\n    const newValues = {};\n    Object.keys(fromValues).forEach(key => {\n      const _key = key;\n      const result = (toValues[_key] - fromValues[_key]) * factor + fromValues[_key];\n      newValues[_key] = result;\n    });\n    onStep(newValues);\n\n    if (elapsed < duration) {\n      const progress = elapsed / duration;\n      const newValues = {};\n      Object.keys(fromValues).forEach(key => {\n        const _key = key;\n        const startValue = fromValues[_key];\n        const endValue = toValues[_key];\n        let result;\n        result = interpolateValue ? interpolateValue(startValue, endValue, progress, _key) : easeOutInterpolate(startValue, endValue, progress);\n\n        if (result == null) {\n          result = easeOutInterpolate(startValue, endValue, progress);\n        }\n\n        newValues[_key] = result;\n      });\n      onStep(newValues);\n      frameId = window.requestAnimationFrame(step);\n    } else {\n      onStep(toValues);\n      onEnd === null || onEnd === void 0 ? void 0 : onEnd();\n    }\n  }\n\n  frameId = window.requestAnimationFrame(step);\n  return () => {\n    onCancel === null || onCancel === void 0 ? void 0 : onCancel();\n    canceled = true;\n    window.cancelAnimationFrame(frameId);\n  };\n}; // https://github.com/lodash/lodash/blob/es/chunk.js\n\nconst chunk = (array, size) => {\n  if (!array.length || size < 1) {\n    return [];\n  }\n\n  let index = 0;\n  let resIndex = 0;\n  const result = Array(Math.ceil(array.length / size));\n\n  while (index < array.length) {\n    result[resIndex++] = array.slice(index, index += size);\n  }\n\n  return result;\n};\nconst selectNode = node => {\n  const selection = window.getSelection();\n\n  if (selection) {\n    const range = document.createRange();\n    range.selectNodeContents(node);\n    selection.removeAllRanges();\n    selection.addRange(range);\n  }\n};\nconst removeSelection = () => {\n  const selection = window.getSelection();\n\n  if (selection) {\n    selection.removeAllRanges();\n  }\n};\nconst distance = (x, y) => Math.abs(x - y);\nconst updateActiveTool = (appState, data) => {\n  var _a, _b;\n\n  if (data.type === "custom") {\n    return Object.assign(Object.assign({}, appState.activeTool), {\n      type: "custom",\n      customType: data.customType,\n      locked: (_a = data.locked) !== null && _a !== void 0 ? _a : appState.activeTool.locked\n    });\n  }\n\n  return Object.assign(Object.assign({}, appState.activeTool), {\n    lastActiveTool: data.lastActiveToolBeforeEraser === undefined ? appState.activeTool.lastActiveTool : data.lastActiveToolBeforeEraser,\n    type: data.type,\n    customType: null,\n    locked: (_b = data.locked) !== null && _b !== void 0 ? _b : appState.activeTool.locked\n  });\n};\nconst isFullScreen = () => {\n  var _a;\n\n  return ((_a = document.fullscreenElement) === null || _a === void 0 ? void 0 : _a.nodeName) === "HTML";\n};\nconst allowFullScreen = () => document.documentElement.requestFullscreen();\nconst exitFullScreen = () => document.exitFullscreen();\nconst getShortcutKey = shortcut => {\n  shortcut = shortcut.replace(/\\bAlt\\b/i, "Alt").replace(/\\bShift\\b/i, "Shift").replace(/\\b(Enter|Return)\\b/i, "Enter");\n\n  if (_constants__WEBPACK_IMPORTED_MODULE_1__.isDarwin) {\n    return shortcut.replace(/\\bCtrlOrCmd\\b/gi, "Cmd").replace(/\\bAlt\\b/i, "Option");\n  }\n\n  return shortcut.replace(/\\bCtrlOrCmd\\b/gi, "Ctrl");\n};\nconst viewportCoordsToSceneCoords = ({\n  clientX,\n  clientY\n}, {\n  zoom,\n  offsetLeft,\n  offsetTop,\n  scrollX,\n  scrollY\n}) => {\n  const x = (clientX - offsetLeft) / zoom.value - scrollX;\n  const y = (clientY - offsetTop) / zoom.value - scrollY;\n  return {\n    x,\n    y\n  };\n};\nconst sceneCoordsToViewportCoords = ({\n  sceneX,\n  sceneY\n}, {\n  zoom,\n  offsetLeft,\n  offsetTop,\n  scrollX,\n  scrollY\n}) => {\n  const x = (sceneX + scrollX) * zoom.value + offsetLeft;\n  const y = (sceneY + scrollY) * zoom.value + offsetTop;\n  return {\n    x,\n    y\n  };\n};\nconst getGlobalCSSVariable = name => getComputedStyle(document.documentElement).getPropertyValue(`--${name}`);\nconst RS_LTR_CHARS = "A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02B8\\u0300-\\u0590\\u0800-\\u1FFF" + "\\u2C00-\\uFB1C\\uFDFE-\\uFE6F\\uFEFD-\\uFFFF";\nconst RS_RTL_CHARS = "\\u0591-\\u07FF\\uFB1D-\\uFDFD\\uFE70-\\uFEFC";\nconst RE_RTL_CHECK = new RegExp(`^[^${RS_LTR_CHARS}]*[${RS_RTL_CHARS}]`);\n/**\n * Checks whether first directional character is RTL. Meaning whether it starts\n *  with RTL characters, or indeterminate (numbers etc.) characters followed by\n *  RTL.\n * See https://github.com/excalidraw/excalidraw/pull/1722#discussion_r436340171\n */\n\nconst isRTL = text => RE_RTL_CHECK.test(text);\nconst tupleToCoors = xyTuple => {\n  const [x, y] = xyTuple;\n  return {\n    x,\n    y\n  };\n};\n/** use as a rejectionHandler to mute filesystem Abort errors */\n\nconst muteFSAbortError = error => {\n  if ((error === null || error === void 0 ? void 0 : error.name) === "AbortError") {\n    console.warn(error);\n    return;\n  }\n\n  throw error;\n};\nconst findIndex = (array, cb, fromIndex = 0) => {\n  if (fromIndex < 0) {\n    fromIndex = array.length + fromIndex;\n  }\n\n  fromIndex = Math.min(array.length, Math.max(fromIndex, 0));\n  let index = fromIndex - 1;\n\n  while (++index < array.length) {\n    if (cb(array[index], index, array)) {\n      return index;\n    }\n  }\n\n  return -1;\n};\nconst findLastIndex = (array, cb, fromIndex = array.length - 1) => {\n  if (fromIndex < 0) {\n    fromIndex = array.length + fromIndex;\n  }\n\n  fromIndex = Math.min(array.length - 1, Math.max(fromIndex, 0));\n  let index = fromIndex + 1;\n\n  while (--index > -1) {\n    if (cb(array[index], index, array)) {\n      return index;\n    }\n  }\n\n  return -1;\n};\nconst isTransparent = color => {\n  const isRGBTransparent = color.length === 5 && color.substr(4, 1) === "0";\n  const isRRGGBBTransparent = color.length === 9 && color.substr(7, 2) === "00";\n  return isRGBTransparent || isRRGGBBTransparent || color === _colors__WEBPACK_IMPORTED_MODULE_0__.COLOR_PALETTE.transparent;\n};\nconst resolvablePromise = () => {\n  let resolve;\n  let reject;\n  const promise = new Promise((_resolve, _reject) => {\n    resolve = _resolve;\n    reject = _reject;\n  });\n  promise.resolve = resolve;\n  promise.reject = reject;\n  return promise;\n};\n/**\n * @param func handler taking at most single parameter (event).\n */\n\nconst withBatchedUpdates = func => event => {\n  (0,react_dom__WEBPACK_IMPORTED_MODULE_2__.unstable_batchedUpdates)(func, event);\n};\n/**\n * barches React state updates and throttles the calls to a single call per\n * animation frame\n */\n\nconst withBatchedUpdatesThrottled = func => {\n  // @ts-ignore\n  return throttleRAF(event => {\n    (0,react_dom__WEBPACK_IMPORTED_MODULE_2__.unstable_batchedUpdates)(func, event);\n  });\n}; //https://stackoverflow.com/a/9462382/8418\n\nconst nFormatter = (num, digits) => {\n  const si = [{\n    value: 1,\n    symbol: "b"\n  }, {\n    value: 1e3,\n    symbol: "k"\n  }, {\n    value: 1e6,\n    symbol: "M"\n  }, {\n    value: 1e9,\n    symbol: "G"\n  }];\n  const rx = /\\.0+$|(\\.[0-9]*[1-9])0+$/;\n  let index;\n\n  for (index = si.length - 1; index > 0; index--) {\n    if (num >= si[index].value) {\n      break;\n    }\n  }\n\n  return (num / si[index].value).toFixed(digits).replace(rx, "$1") + si[index].symbol;\n};\nconst getVersion = () => {\n  var _a;\n\n  return ((_a = document.querySelector(\'meta[name="version"]\')) === null || _a === void 0 ? void 0 : _a.content) || _constants__WEBPACK_IMPORTED_MODULE_1__.DEFAULT_VERSION;\n}; // Adapted from https://github.com/Modernizr/Modernizr/blob/master/feature-detects/emoji.js\n\nconst supportsEmoji = () => {\n  const canvas = document.createElement("canvas");\n  const ctx = canvas.getContext("2d");\n\n  if (!ctx) {\n    return false;\n  }\n\n  const offset = 12;\n  ctx.fillStyle = "#f00";\n  ctx.textBaseline = "top";\n  ctx.font = "32px Arial"; // Modernizr used \u{1F428}, but it is sort of supported on Windows 7.\n  // Luckily \u{1F600} isn\'t supported.\n\n  ctx.fillText("\u{1F600}", 0, 0);\n  return ctx.getImageData(offset, offset, 1, 1).data[0] !== 0;\n};\nconst getNearestScrollableContainer = element => {\n  let parent = element.parentElement;\n\n  while (parent) {\n    if (parent === document.body) {\n      return document;\n    }\n\n    const {\n      overflowY\n    } = window.getComputedStyle(parent);\n    const hasScrollableContent = parent.scrollHeight > parent.clientHeight;\n\n    if (hasScrollableContent && (overflowY === "auto" || overflowY === "scroll" || overflowY === "overlay")) {\n      return parent;\n    }\n\n    parent = parent.parentElement;\n  }\n\n  return document;\n};\nconst focusNearestParent = element => {\n  let parent = element.parentElement;\n\n  while (parent) {\n    if (parent.tabIndex > -1) {\n      parent.focus();\n      return;\n    }\n\n    parent = parent.parentElement;\n  }\n};\nconst preventUnload = event => {\n  event.preventDefault(); // NOTE: modern browsers no longer allow showing a custom message here\n\n  event.returnValue = "";\n};\nconst bytesToHexString = bytes => {\n  return Array.from(bytes).map(byte => `0${byte.toString(16)}`.slice(-2)).join("");\n};\nconst getUpdatedTimestamp = () => isTestEnv() ? 1 : Date.now();\n/**\n * Transforms array of objects containing `id` attribute,\n * or array of ids (strings), into a Map, keyd by `id`.\n */\n\nconst arrayToMap = items => {\n  return items.reduce((acc, element) => {\n    acc.set(typeof element === "string" ? element : element.id, element);\n    return acc;\n  }, new Map());\n};\nconst arrayToMapWithIndex = elements => elements.reduce((acc, element, idx) => {\n  acc.set(element.id, [element, idx]);\n  return acc;\n}, new Map());\nconst isTestEnv = () => "development" === "test";\nconst wrapEvent = (name, nativeEvent) => {\n  return new CustomEvent(name, {\n    detail: {\n      nativeEvent\n    },\n    cancelable: true\n  });\n};\nconst updateObject = (obj, updates) => {\n  let didChange = false;\n\n  for (const key in updates) {\n    const value = updates[key];\n\n    if (typeof value !== "undefined") {\n      if (obj[key] === value && ( // if object, always update because its attrs could have changed\n      typeof value !== "object" || value === null)) {\n        continue;\n      }\n\n      didChange = true;\n    }\n  }\n\n  if (!didChange) {\n    return obj;\n  }\n\n  return Object.assign(Object.assign({}, obj), updates);\n};\nconst isPrimitive = val => {\n  const type = typeof val;\n  return val == null || type !== "object" && type !== "function";\n};\nconst getFrame = () => {\n  try {\n    return window.self === window.top ? "top" : "iframe";\n  } catch (error) {\n    return "iframe";\n  }\n};\nconst isRunningInIframe = () => getFrame() === "iframe";\nconst isPromiseLike = value => {\n  return !!value && typeof value === "object" && "then" in value && "catch" in value && "finally" in value;\n};\nconst queryFocusableElements = container => {\n  const focusableElements = container === null || container === void 0 ? void 0 : container.querySelectorAll("button, a, input, select, textarea, div[tabindex], label[tabindex]");\n  return focusableElements ? Array.from(focusableElements).filter(element => element.tabIndex > -1 && !element.disabled) : [];\n};\nconst isShallowEqual = (objA, objB, comparators, debug = false) => {\n  const aKeys = Object.keys(objA);\n  const bKeys = Object.keys(objB);\n\n  if (aKeys.length !== bKeys.length) {\n    return false;\n  }\n\n  return aKeys.every(key => {\n    const comparator = comparators === null || comparators === void 0 ? void 0 : comparators[key];\n    const ret = comparator ? comparator(objA[key], objB[key]) : objA[key] === objB[key];\n\n    if (!ret && debug) {\n      console.info(`%cisShallowEqual: ${key} not equal ->`, "color: #8B4000", objA[key], objB[key]);\n    }\n\n    return ret;\n  });\n}; // taken from Radix UI\n// https://github.com/radix-ui/primitives/blob/main/packages/core/primitive/src/primitive.tsx\n\nconst composeEventHandlers = (originalEventHandler, ourEventHandler, {\n  checkForDefaultPrevented = true\n} = {}) => {\n  return function handleEvent(event) {\n    originalEventHandler === null || originalEventHandler === void 0 ? void 0 : originalEventHandler(event);\n\n    if (!checkForDefaultPrevented || !event.defaultPrevented) {\n      return ourEventHandler === null || ourEventHandler === void 0 ? void 0 : ourEventHandler(event);\n    }\n  };\n};\nconst isOnlyExportingSingleFrame = elements => {\n  const frames = elements.filter(element => element.type === "frame");\n  return frames.length === 1 && elements.every(element => element.type === "frame" || element.frameId === frames[0].id);\n};\n/**\n * supply `null` as message if non-never value is valid, you just need to\n * typecheck against it\n */\n\nconst assertNever = (value, message, softAssert) => {\n  if (!message) {\n    return value;\n  }\n\n  if (softAssert) {\n    console.error(message);\n    return value;\n  }\n\n  throw new Error(message);\n};\n/**\n * Memoizes on values of `opts` object (strict equality).\n */\n\nconst memoize = func => {\n  let lastArgs;\n  let lastResult;\n\n  const ret = function (opts) {\n    const currentArgs = Object.entries(opts);\n\n    if (lastArgs) {\n      let argsAreEqual = true;\n\n      for (const [key, value] of currentArgs) {\n        if (lastArgs.get(key) !== value) {\n          argsAreEqual = false;\n          break;\n        }\n      }\n\n      if (argsAreEqual) {\n        return lastResult;\n      }\n    }\n\n    const result = func(opts);\n    lastArgs = new Map(currentArgs);\n    lastResult = result;\n    return result;\n  };\n\n  ret.clear = () => {\n    lastArgs = undefined;\n    lastResult = undefined;\n  };\n\n  return ret;\n};\nconst isRenderThrottlingEnabled = (() => {\n  // we don\'t want to throttle in react < 18 because of #5439 and it was\n  // getting more complex to maintain the fix\n  let IS_REACT_18_AND_UP;\n\n  try {\n    const version = react__WEBPACK_IMPORTED_MODULE_3___default().version.split(".");\n    IS_REACT_18_AND_UP = Number(version[0]) > 17;\n  } catch (_a) {\n    IS_REACT_18_AND_UP = false;\n  }\n\n  let hasWarned = false;\n  return () => {\n    if (window.EXCALIDRAW_THROTTLE_RENDER === true) {\n      if (!IS_REACT_18_AND_UP) {\n        if (!hasWarned) {\n          hasWarned = true;\n          console.warn("Excalidraw: render throttling is disabled on React versions < 18.");\n        }\n\n        return false;\n      }\n\n      return true;\n    }\n\n    return false;\n  };\n})();\n/** Checks if value is inside given collection. Useful for type-safety. */\n\nconst isMemberOf = (\n/** Set/Map/Array/Object */\ncollection,\n/** value to look for */\nvalue) => {\n  return collection instanceof Set || collection instanceof Map ? collection.has(value) : "includes" in collection ? collection.includes(value) : collection.hasOwnProperty(value);\n};\nconst cloneJSON = obj => JSON.parse(JSON.stringify(obj));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 33376 characters]\n//# sourceURL=webpack-internal:///../../utils.ts\n');
              }
            ),
            /***/
            "../../zindex.ts": (
              /*!***********************!*\
                !*** ../../zindex.ts ***!
                \***********************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "moveAllLeft": () => (/* binding */ moveAllLeft),\n/* harmony export */   "moveAllRight": () => (/* binding */ moveAllRight),\n/* harmony export */   "moveOneLeft": () => (/* binding */ moveOneLeft),\n/* harmony export */   "moveOneRight": () => (/* binding */ moveOneRight)\n/* harmony export */ });\n/* harmony import */ var _element_mutateElement__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./element/mutateElement */ "../../element/mutateElement.ts");\n/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./element/typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var _groups__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./groups */ "../../groups.ts");\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./scene */ "../../scene/index.ts");\n/* harmony import */ var _scene_Scene__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./scene/Scene */ "../../scene/Scene.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./utils */ "../../utils.ts");\n\n\n\n\n\n\n\nconst isOfTargetFrame = (element, frameId) => {\n  return element.frameId === frameId || element.id === frameId;\n};\n/**\n * Returns indices of elements to move based on selected elements.\n * Includes contiguous deleted elements that are between two selected elements,\n *  e.g.: [0 (selected), 1 (deleted), 2 (deleted), 3 (selected)]\n *\n * Specified elements (elementsToBeMoved) take precedence over\n * appState.selectedElementsIds\n */\n\n\nconst getIndicesToMove = (elements, appState, elementsToBeMoved) => {\n  let selectedIndices = [];\n  let deletedIndices = [];\n  let includeDeletedIndex = null;\n  let index = -1;\n  const selectedElementIds = (0,_utils__WEBPACK_IMPORTED_MODULE_5__.arrayToMap)(elementsToBeMoved ? elementsToBeMoved : (0,_scene__WEBPACK_IMPORTED_MODULE_3__.getSelectedElements)(elements, appState, {\n    includeBoundTextElement: true,\n    includeElementsInFrames: true\n  }));\n\n  while (++index < elements.length) {\n    const element = elements[index];\n\n    if (selectedElementIds.get(element.id)) {\n      if (deletedIndices.length) {\n        selectedIndices = selectedIndices.concat(deletedIndices);\n        deletedIndices = [];\n      }\n\n      selectedIndices.push(index);\n      includeDeletedIndex = index + 1;\n    } else if (element.isDeleted && includeDeletedIndex === index) {\n      includeDeletedIndex = index + 1;\n      deletedIndices.push(index);\n    } else {\n      deletedIndices = [];\n    }\n  }\n\n  return selectedIndices;\n};\n\nconst toContiguousGroups = array => {\n  let cursor = 0;\n  return array.reduce((acc, value, index) => {\n    if (index > 0 && array[index - 1] !== value - 1) {\n      cursor = ++cursor;\n    }\n\n    (acc[cursor] || (acc[cursor] = [])).push(value);\n    return acc;\n  }, []);\n};\n/**\n * @returns index of target element, consindering tightly-bound elements\n * (currently non-linear elements bound to a container) as a one unit.\n * If no binding present, returns `undefined`.\n */\n\n\nconst getTargetIndexAccountingForBinding = (nextElement, elements, direction) => {\n  var _a, _b;\n\n  if ("containerId" in nextElement && nextElement.containerId) {\n    if (direction === "left") {\n      const containerElement = _scene_Scene__WEBPACK_IMPORTED_MODULE_4__["default"].getScene(nextElement).getElement(nextElement.containerId);\n\n      if (containerElement) {\n        return elements.indexOf(containerElement);\n      }\n    } else {\n      return elements.indexOf(nextElement);\n    }\n  } else {\n    const boundElementId = (_b = (_a = nextElement.boundElements) === null || _a === void 0 ? void 0 : _a.find(binding => binding.type !== "arrow")) === null || _b === void 0 ? void 0 : _b.id;\n\n    if (boundElementId) {\n      if (direction === "left") {\n        return elements.indexOf(nextElement);\n      }\n\n      const boundTextElement = _scene_Scene__WEBPACK_IMPORTED_MODULE_4__["default"].getScene(nextElement).getElement(boundElementId);\n\n      if (boundTextElement) {\n        return elements.indexOf(boundTextElement);\n      }\n    }\n  }\n};\n\nconst getContiguousFrameRangeElements = (allElements, frameId) => {\n  let rangeStart = -1;\n  let rangeEnd = -1;\n  allElements.forEach((element, index) => {\n    if (isOfTargetFrame(element, frameId)) {\n      if (rangeStart === -1) {\n        rangeStart = index;\n      }\n\n      rangeEnd = index;\n    }\n  });\n\n  if (rangeStart === -1) {\n    return [];\n  }\n\n  return allElements.slice(rangeStart, rangeEnd + 1);\n};\n/**\n * Returns next candidate index that\'s available to be moved to. Currently that\n *  is a non-deleted element, and not inside a group (unless we\'re editing it).\n */\n\n\nconst getTargetIndex = (appState, elements, boundaryIndex, direction,\n/**\n * Frame id if moving frame children.\n * If whole frame (including all children) is being moved, supply `null`.\n */\ncontainingFrame) => {\n  var _a, _b;\n\n  const sourceElement = elements[boundaryIndex];\n\n  const indexFilter = element => {\n    if (element.isDeleted) {\n      return false;\n    }\n\n    if (containingFrame) {\n      return element.frameId === containingFrame;\n    } // if we\'re editing group, find closest sibling irrespective of whether\n    // there\'s a different-group element between them (for legacy reasons)\n\n\n    if (appState.editingGroupId) {\n      return element.groupIds.includes(appState.editingGroupId);\n    }\n\n    return true;\n  };\n\n  const candidateIndex = direction === "left" ? (0,_utils__WEBPACK_IMPORTED_MODULE_5__.findLastIndex)(elements, el => indexFilter(el), Math.max(0, boundaryIndex - 1)) : (0,_utils__WEBPACK_IMPORTED_MODULE_5__.findIndex)(elements, el => indexFilter(el), boundaryIndex + 1);\n  const nextElement = elements[candidateIndex];\n\n  if (!nextElement) {\n    return -1;\n  }\n\n  if (appState.editingGroupId) {\n    if ( // candidate element is a sibling in current editing group \u2192 return\n    (sourceElement === null || sourceElement === void 0 ? void 0 : sourceElement.groupIds.join("")) === (nextElement === null || nextElement === void 0 ? void 0 : nextElement.groupIds.join(""))) {\n      return (_a = getTargetIndexAccountingForBinding(nextElement, elements, direction)) !== null && _a !== void 0 ? _a : candidateIndex;\n    } else if (!(nextElement === null || nextElement === void 0 ? void 0 : nextElement.groupIds.includes(appState.editingGroupId))) {\n      // candidate element is outside current editing group \u2192 prevent\n      return -1;\n    }\n  }\n\n  if (!containingFrame && (nextElement.frameId || nextElement.type === "frame")) {\n    const frameElements = getContiguousFrameRangeElements(elements, nextElement.frameId || nextElement.id);\n    return direction === "left" ? elements.indexOf(frameElements[0]) : elements.indexOf(frameElements[frameElements.length - 1]);\n  }\n\n  if (!nextElement.groupIds.length) {\n    return (_b = getTargetIndexAccountingForBinding(nextElement, elements, direction)) !== null && _b !== void 0 ? _b : candidateIndex;\n  }\n\n  const siblingGroupId = appState.editingGroupId ? nextElement.groupIds[nextElement.groupIds.indexOf(appState.editingGroupId) - 1] : nextElement.groupIds[nextElement.groupIds.length - 1];\n  const elementsInSiblingGroup = (0,_groups__WEBPACK_IMPORTED_MODULE_2__.getElementsInGroup)(elements, siblingGroupId);\n\n  if (elementsInSiblingGroup.length) {\n    // assumes getElementsInGroup() returned elements are sorted\n    // by zIndex (ascending)\n    return direction === "left" ? elements.indexOf(elementsInSiblingGroup[0]) : elements.indexOf(elementsInSiblingGroup[elementsInSiblingGroup.length - 1]);\n  }\n\n  return candidateIndex;\n};\n\nconst getTargetElementsMap = (elements, indices) => {\n  return indices.reduce((acc, index) => {\n    const element = elements[index];\n    acc[element.id] = element;\n    return acc;\n  }, {});\n};\n\nconst shiftElementsByOne = (elements, appState, direction) => {\n  const indicesToMove = getIndicesToMove(elements, appState);\n  const targetElementsMap = getTargetElementsMap(elements, indicesToMove);\n  let groupedIndices = toContiguousGroups(indicesToMove);\n\n  if (direction === "right") {\n    groupedIndices = groupedIndices.reverse();\n  }\n\n  const selectedFrames = new Set(indicesToMove.filter(idx => elements[idx].type === "frame").map(idx => elements[idx].id));\n  groupedIndices.forEach((indices, i) => {\n    var _a;\n\n    const leadingIndex = indices[0];\n    const trailingIndex = indices[indices.length - 1];\n    const boundaryIndex = direction === "left" ? leadingIndex : trailingIndex;\n    const containingFrame = indices.some(idx => {\n      const el = elements[idx];\n      return el.frameId && selectedFrames.has(el.frameId);\n    }) ? null : (_a = elements[boundaryIndex]) === null || _a === void 0 ? void 0 : _a.frameId;\n    const targetIndex = getTargetIndex(appState, elements, boundaryIndex, direction, containingFrame);\n\n    if (targetIndex === -1 || boundaryIndex === targetIndex) {\n      return;\n    }\n\n    const leadingElements = direction === "left" ? elements.slice(0, targetIndex) : elements.slice(0, leadingIndex);\n    const targetElements = elements.slice(leadingIndex, trailingIndex + 1);\n    const displacedElements = direction === "left" ? elements.slice(targetIndex, leadingIndex) : elements.slice(trailingIndex + 1, targetIndex + 1);\n    const trailingElements = direction === "left" ? elements.slice(trailingIndex + 1) : elements.slice(targetIndex + 1);\n    elements = direction === "left" ? [...leadingElements, ...targetElements, ...displacedElements, ...trailingElements] : [...leadingElements, ...displacedElements, ...targetElements, ...trailingElements];\n  });\n  return elements.map(element => {\n    if (targetElementsMap[element.id]) {\n      return (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_0__.bumpVersion)(element);\n    }\n\n    return element;\n  });\n};\n\nconst shiftElementsToEnd = (elements, appState, direction, containingFrame, elementsToBeMoved) => {\n  const indicesToMove = getIndicesToMove(elements, appState, elementsToBeMoved);\n  const targetElementsMap = getTargetElementsMap(elements, indicesToMove);\n  const displacedElements = [];\n  let leadingIndex;\n  let trailingIndex;\n\n  if (direction === "left") {\n    if (containingFrame) {\n      leadingIndex = (0,_utils__WEBPACK_IMPORTED_MODULE_5__.findIndex)(elements, el => isOfTargetFrame(el, containingFrame));\n    } else if (appState.editingGroupId) {\n      const groupElements = (0,_groups__WEBPACK_IMPORTED_MODULE_2__.getElementsInGroup)(elements, appState.editingGroupId);\n\n      if (!groupElements.length) {\n        return elements;\n      }\n\n      leadingIndex = elements.indexOf(groupElements[0]);\n    } else {\n      leadingIndex = 0;\n    }\n\n    trailingIndex = indicesToMove[indicesToMove.length - 1];\n  } else {\n    if (containingFrame) {\n      trailingIndex = (0,_utils__WEBPACK_IMPORTED_MODULE_5__.findLastIndex)(elements, el => isOfTargetFrame(el, containingFrame));\n    } else if (appState.editingGroupId) {\n      const groupElements = (0,_groups__WEBPACK_IMPORTED_MODULE_2__.getElementsInGroup)(elements, appState.editingGroupId);\n\n      if (!groupElements.length) {\n        return elements;\n      }\n\n      trailingIndex = elements.indexOf(groupElements[groupElements.length - 1]);\n    } else {\n      trailingIndex = elements.length - 1;\n    }\n\n    leadingIndex = indicesToMove[0];\n  }\n\n  if (leadingIndex === -1) {\n    leadingIndex = 0;\n  }\n\n  for (let index = leadingIndex; index < trailingIndex + 1; index++) {\n    if (!indicesToMove.includes(index)) {\n      displacedElements.push(elements[index]);\n    }\n  }\n\n  const targetElements = Object.values(targetElementsMap).map(element => {\n    return (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_0__.bumpVersion)(element);\n  });\n  const leadingElements = elements.slice(0, leadingIndex);\n  const trailingElements = elements.slice(trailingIndex + 1);\n  return direction === "left" ? [...leadingElements, ...targetElements, ...displacedElements, ...trailingElements] : [...leadingElements, ...displacedElements, ...targetElements, ...trailingElements];\n};\n\nfunction shiftElementsAccountingForFrames(allElements, appState, direction, shiftFunction) {\n  const elementsToMove = (0,_utils__WEBPACK_IMPORTED_MODULE_5__.arrayToMap)((0,_scene__WEBPACK_IMPORTED_MODULE_3__.getSelectedElements)(allElements, appState, {\n    includeBoundTextElement: true,\n    includeElementsInFrames: true\n  }));\n  const frameAwareContiguousElementsToMove = {\n    regularElements: [],\n    frameChildren: new Map()\n  };\n  const fullySelectedFrames = new Set();\n\n  for (const element of allElements) {\n    if (elementsToMove.has(element.id) && (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isFrameElement)(element)) {\n      fullySelectedFrames.add(element.id);\n    }\n  }\n\n  for (const element of allElements) {\n    if (elementsToMove.has(element.id)) {\n      if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isFrameElement)(element) || element.frameId && fullySelectedFrames.has(element.frameId)) {\n        frameAwareContiguousElementsToMove.regularElements.push(element);\n      } else if (!element.frameId) {\n        frameAwareContiguousElementsToMove.regularElements.push(element);\n      } else {\n        const frameChildren = frameAwareContiguousElementsToMove.frameChildren.get(element.frameId) || [];\n        frameChildren.push(element);\n        frameAwareContiguousElementsToMove.frameChildren.set(element.frameId, frameChildren);\n      }\n    }\n  }\n\n  let nextElements = allElements;\n  const frameChildrenSets = Array.from(frameAwareContiguousElementsToMove.frameChildren.entries());\n\n  for (const [frameId, children] of frameChildrenSets) {\n    nextElements = shiftFunction(allElements, appState, direction, frameId, children);\n  }\n\n  return shiftFunction(nextElements, appState, direction, null, frameAwareContiguousElementsToMove.regularElements);\n} // public API\n// -----------------------------------------------------------------------------\n\n\nconst moveOneLeft = (allElements, appState) => {\n  return shiftElementsByOne(allElements, appState, "left");\n};\nconst moveOneRight = (allElements, appState) => {\n  return shiftElementsByOne(allElements, appState, "right");\n};\nconst moveAllLeft = (allElements, appState) => {\n  return shiftElementsAccountingForFrames(allElements, appState, "left", shiftElementsToEnd);\n};\nconst moveAllRight = (allElements, appState) => {\n  return shiftElementsAccountingForFrames(allElements, appState, "right", shiftElementsToEnd);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 20432 characters]\n//# sourceURL=webpack-internal:///../../zindex.ts\n');
              }
            ),
            /***/
            "../../../public/fonts.css": (
              /*!*********************************!*\
                !*** ../../../public/fonts.css ***!
                \*********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _src_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../src/packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _src_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_src_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _src_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../src/packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _src_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_src_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _src_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../src/packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _src_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_src_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _src_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../src/packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _src_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_src_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _src_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../src/packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _src_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_src_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _src_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../src/packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _src_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_src_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _src_packages_excalidraw_node_modules_css_loader_dist_cjs_js_src_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_src_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_fonts_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../src/packages/excalidraw/node_modules/css-loader/dist/cjs.js!../src/packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../src/packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./fonts.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../../public/fonts.css");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_src_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_src_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _src_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_src_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_src_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _src_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_src_packages_excalidraw_node_modules_css_loader_dist_cjs_js_src_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_src_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_fonts_css__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_src_packages_excalidraw_node_modules_css_loader_dist_cjs_js_src_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_src_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_fonts_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _src_packages_excalidraw_node_modules_css_loader_dist_cjs_js_src_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_src_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_fonts_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _src_packages_excalidraw_node_modules_css_loader_dist_cjs_js_src_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_src_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_fonts_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vcHVibGljL2ZvbnRzLmNzcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxNQUF1SDtBQUN2SCxNQUE2RztBQUM3RyxNQUFvSDtBQUNwSCxNQUF1STtBQUN2SSxNQUFnSTtBQUNoSSxNQUFnSTtBQUNoSSxNQUEwUjtBQUMxUjtBQUNBOztBQUVBOztBQUVBLDRCQUE0Qiw2SEFBbUI7QUFDL0Msd0JBQXdCLDBJQUFhOztBQUVyQyx1QkFBdUIsK0hBQWE7QUFDcEM7QUFDQSxpQkFBaUIsdUhBQU07QUFDdkIsNkJBQTZCLDhIQUFrQjs7QUFFL0MsYUFBYSxrSUFBRyxDQUFDLG1RQUFPOzs7O0FBSW9PO0FBQzVQLE9BQU8saUVBQWUsbVFBQU8sSUFBSSwwUUFBYyxHQUFHLDBRQUFjLFlBQVksRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9wdWJsaWMvZm9udHMuY3NzP2UyMjAiXSwic291cmNlc0NvbnRlbnQiOlsiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vc3JjL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vc3JjL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uL3NyYy9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vc3JjL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vc3JjL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uL3NyYy9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi9zcmMvcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9zcmMvcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uL3NyYy9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL2ZvbnRzLmNzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xuXG4gICAgICBvcHRpb25zLmluc2VydCA9IGluc2VydEZuLmJpbmQobnVsbCwgXCJoZWFkXCIpO1xuICAgIFxub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uL3NyYy9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uL3NyYy9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vc3JjL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vZm9udHMuY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../public/fonts.css\n');
              }
            ),
            /***/
            "../../components/Actions.scss": (
              /*!*************************************!*\
                !*** ../../components/Actions.scss ***!
                \*************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Actions_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./Actions.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Actions.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Actions_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Actions_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Actions_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Actions_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9BY3Rpb25zLnNjc3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsTUFBbUg7QUFDbkgsTUFBeUc7QUFDekcsTUFBZ0g7QUFDaEgsTUFBbUk7QUFDbkksTUFBNEg7QUFDNUgsTUFBNEg7QUFDNUgsTUFBaVI7QUFDalI7QUFDQTs7QUFFQTs7QUFFQSw0QkFBNEIseUhBQW1CO0FBQy9DLHdCQUF3QixzSUFBYTs7QUFFckMsdUJBQXVCLDJIQUFhO0FBQ3BDO0FBQ0EsaUJBQWlCLG1IQUFNO0FBQ3ZCLDZCQUE2QiwwSEFBa0I7O0FBRS9DLGFBQWEsOEhBQUcsQ0FBQywwUEFBTzs7OztBQUkyTjtBQUNuUCxPQUFPLGlFQUFlLDBQQUFPLElBQUksaVFBQWMsR0FBRyxpUUFBYyxZQUFZLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9BY3Rpb25zLnNjc3M/N2Y1ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vQWN0aW9ucy5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9BY3Rpb25zLnNjc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/Actions.scss\n');
              }
            ),
            /***/
            "../../components/Avatar.scss": (
              /*!************************************!*\
                !*** ../../components/Avatar.scss ***!
                \************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Avatar_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./Avatar.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Avatar.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Avatar_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Avatar_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Avatar_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Avatar_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9BdmF0YXIuc2Nzcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxNQUFtSDtBQUNuSCxNQUF5RztBQUN6RyxNQUFnSDtBQUNoSCxNQUFtSTtBQUNuSSxNQUE0SDtBQUM1SCxNQUE0SDtBQUM1SCxNQUFnUjtBQUNoUjtBQUNBOztBQUVBOztBQUVBLDRCQUE0Qix5SEFBbUI7QUFDL0Msd0JBQXdCLHNJQUFhOztBQUVyQyx1QkFBdUIsMkhBQWE7QUFDcEM7QUFDQSxpQkFBaUIsbUhBQU07QUFDdkIsNkJBQTZCLDBIQUFrQjs7QUFFL0MsYUFBYSw4SEFBRyxDQUFDLHlQQUFPOzs7O0FBSTBOO0FBQ2xQLE9BQU8saUVBQWUseVBBQU8sSUFBSSxnUUFBYyxHQUFHLGdRQUFjLFlBQVksRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL0F2YXRhci5zY3NzP2IyYzEiXSwic291cmNlc0NvbnRlbnQiOlsiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0Rm4gZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzBdLnVzZVsyXSEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL0F2YXRhci5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9BdmF0YXIuc2Nzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/Avatar.scss\n');
              }
            ),
            /***/
            "../../components/Button.scss": (
              /*!************************************!*\
                !*** ../../components/Button.scss ***!
                \************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Button_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./Button.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Button.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Button_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Button_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Button_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Button_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9CdXR0b24uc2Nzcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxNQUFtSDtBQUNuSCxNQUF5RztBQUN6RyxNQUFnSDtBQUNoSCxNQUFtSTtBQUNuSSxNQUE0SDtBQUM1SCxNQUE0SDtBQUM1SCxNQUFnUjtBQUNoUjtBQUNBOztBQUVBOztBQUVBLDRCQUE0Qix5SEFBbUI7QUFDL0Msd0JBQXdCLHNJQUFhOztBQUVyQyx1QkFBdUIsMkhBQWE7QUFDcEM7QUFDQSxpQkFBaUIsbUhBQU07QUFDdkIsNkJBQTZCLDBIQUFrQjs7QUFFL0MsYUFBYSw4SEFBRyxDQUFDLHlQQUFPOzs7O0FBSTBOO0FBQ2xQLE9BQU8saUVBQWUseVBBQU8sSUFBSSxnUUFBYyxHQUFHLGdRQUFjLFlBQVksRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL0J1dHRvbi5zY3NzP2I5ODAiXSwic291cmNlc0NvbnRlbnQiOlsiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0Rm4gZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzBdLnVzZVsyXSEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL0J1dHRvbi5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9CdXR0b24uc2Nzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/Button.scss\n');
              }
            ),
            /***/
            "../../components/Card.scss": (
              /*!**********************************!*\
                !*** ../../components/Card.scss ***!
                \**********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Card_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./Card.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Card.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Card_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Card_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Card_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Card_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9DYXJkLnNjc3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsTUFBbUg7QUFDbkgsTUFBeUc7QUFDekcsTUFBZ0g7QUFDaEgsTUFBbUk7QUFDbkksTUFBNEg7QUFDNUgsTUFBNEg7QUFDNUgsTUFBOFE7QUFDOVE7QUFDQTs7QUFFQTs7QUFFQSw0QkFBNEIseUhBQW1CO0FBQy9DLHdCQUF3QixzSUFBYTs7QUFFckMsdUJBQXVCLDJIQUFhO0FBQ3BDO0FBQ0EsaUJBQWlCLG1IQUFNO0FBQ3ZCLDZCQUE2QiwwSEFBa0I7O0FBRS9DLGFBQWEsOEhBQUcsQ0FBQyx1UEFBTzs7OztBQUl3TjtBQUNoUCxPQUFPLGlFQUFlLHVQQUFPLElBQUksOFBBQWMsR0FBRyw4UEFBYyxZQUFZLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9DYXJkLnNjc3M/MzJhOSJdLCJzb3VyY2VzQ29udGVudCI6WyJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vQ2FyZC5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9DYXJkLnNjc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/Card.scss\n');
              }
            ),
            /***/
            "../../components/CheckboxItem.scss": (
              /*!******************************************!*\
                !*** ../../components/CheckboxItem.scss ***!
                \******************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_CheckboxItem_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./CheckboxItem.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/CheckboxItem.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_CheckboxItem_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_CheckboxItem_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_CheckboxItem_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_CheckboxItem_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9DaGVja2JveEl0ZW0uc2Nzcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxNQUFtSDtBQUNuSCxNQUF5RztBQUN6RyxNQUFnSDtBQUNoSCxNQUFtSTtBQUNuSSxNQUE0SDtBQUM1SCxNQUE0SDtBQUM1SCxNQUFzUjtBQUN0UjtBQUNBOztBQUVBOztBQUVBLDRCQUE0Qix5SEFBbUI7QUFDL0Msd0JBQXdCLHNJQUFhOztBQUVyQyx1QkFBdUIsMkhBQWE7QUFDcEM7QUFDQSxpQkFBaUIsbUhBQU07QUFDdkIsNkJBQTZCLDBIQUFrQjs7QUFFL0MsYUFBYSw4SEFBRyxDQUFDLCtQQUFPOzs7O0FBSWdPO0FBQ3hQLE9BQU8saUVBQWUsK1BBQU8sSUFBSSxzUUFBYyxHQUFHLHNRQUFjLFlBQVksRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL0NoZWNrYm94SXRlbS5zY3NzP2U1OWEiXSwic291cmNlc0NvbnRlbnQiOlsiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0Rm4gZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzBdLnVzZVsyXSEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL0NoZWNrYm94SXRlbS5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9DaGVja2JveEl0ZW0uc2Nzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/CheckboxItem.scss\n');
              }
            ),
            /***/
            "../../components/ColorPicker/ColorPicker.scss": (
              /*!*****************************************************!*\
                !*** ../../components/ColorPicker/ColorPicker.scss ***!
                \*****************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ColorPicker_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./ColorPicker.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ColorPicker/ColorPicker.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ColorPicker_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ColorPicker_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ColorPicker_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ColorPicker_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9Db2xvclBpY2tlci9Db2xvclBpY2tlci5zY3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLE1BQXNIO0FBQ3RILE1BQTRHO0FBQzVHLE1BQW1IO0FBQ25ILE1BQXNJO0FBQ3RJLE1BQStIO0FBQy9ILE1BQStIO0FBQy9ILE1BQThSO0FBQzlSO0FBQ0E7O0FBRUE7O0FBRUEsNEJBQTRCLHlIQUFtQjtBQUMvQyx3QkFBd0Isc0lBQWE7O0FBRXJDLHVCQUF1QiwySEFBYTtBQUNwQztBQUNBLGlCQUFpQixtSEFBTTtBQUN2Qiw2QkFBNkIsMEhBQWtCOztBQUUvQyxhQUFhLDhIQUFHLENBQUMsOFBBQU87Ozs7QUFJd087QUFDaFEsT0FBTyxpRUFBZSw4UEFBTyxJQUFJLHFRQUFjLEdBQUcscVFBQWMsWUFBWSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvQ29sb3JQaWNrZXIvQ29sb3JQaWNrZXIuc2Nzcz84YzZkIl0sInNvdXJjZXNDb250ZW50IjpbIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9Db2xvclBpY2tlci5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9Db2xvclBpY2tlci5zY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/ColorPicker/ColorPicker.scss\n');
              }
            ),
            /***/
            "../../components/ConfirmDialog.scss": (
              /*!*******************************************!*\
                !*** ../../components/ConfirmDialog.scss ***!
                \*******************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ConfirmDialog_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./ConfirmDialog.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ConfirmDialog.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ConfirmDialog_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ConfirmDialog_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ConfirmDialog_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ConfirmDialog_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9Db25maXJtRGlhbG9nLnNjc3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsTUFBbUg7QUFDbkgsTUFBeUc7QUFDekcsTUFBZ0g7QUFDaEgsTUFBbUk7QUFDbkksTUFBNEg7QUFDNUgsTUFBNEg7QUFDNUgsTUFBdVI7QUFDdlI7QUFDQTs7QUFFQTs7QUFFQSw0QkFBNEIseUhBQW1CO0FBQy9DLHdCQUF3QixzSUFBYTs7QUFFckMsdUJBQXVCLDJIQUFhO0FBQ3BDO0FBQ0EsaUJBQWlCLG1IQUFNO0FBQ3ZCLDZCQUE2QiwwSEFBa0I7O0FBRS9DLGFBQWEsOEhBQUcsQ0FBQyxnUUFBTzs7OztBQUlpTztBQUN6UCxPQUFPLGlFQUFlLGdRQUFPLElBQUksdVFBQWMsR0FBRyx1UUFBYyxZQUFZLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9Db25maXJtRGlhbG9nLnNjc3M/MTU3YSJdLCJzb3VyY2VzQ29udGVudCI6WyJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vQ29uZmlybURpYWxvZy5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9Db25maXJtRGlhbG9nLnNjc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/ConfirmDialog.scss\n');
              }
            ),
            /***/
            "../../components/ContextMenu.scss": (
              /*!*****************************************!*\
                !*** ../../components/ContextMenu.scss ***!
                \*****************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ContextMenu_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./ContextMenu.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ContextMenu.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ContextMenu_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ContextMenu_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ContextMenu_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ContextMenu_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9Db250ZXh0TWVudS5zY3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLE1BQW1IO0FBQ25ILE1BQXlHO0FBQ3pHLE1BQWdIO0FBQ2hILE1BQW1JO0FBQ25JLE1BQTRIO0FBQzVILE1BQTRIO0FBQzVILE1BQXFSO0FBQ3JSO0FBQ0E7O0FBRUE7O0FBRUEsNEJBQTRCLHlIQUFtQjtBQUMvQyx3QkFBd0Isc0lBQWE7O0FBRXJDLHVCQUF1QiwySEFBYTtBQUNwQztBQUNBLGlCQUFpQixtSEFBTTtBQUN2Qiw2QkFBNkIsMEhBQWtCOztBQUUvQyxhQUFhLDhIQUFHLENBQUMsOFBBQU87Ozs7QUFJK047QUFDdlAsT0FBTyxpRUFBZSw4UEFBTyxJQUFJLHFRQUFjLEdBQUcscVFBQWMsWUFBWSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvQ29udGV4dE1lbnUuc2Nzcz8yZmMzIl0sInNvdXJjZXNDb250ZW50IjpbIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9Db250ZXh0TWVudS5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9Db250ZXh0TWVudS5zY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/ContextMenu.scss\n');
              }
            ),
            /***/
            "../../components/Dialog.scss": (
              /*!************************************!*\
                !*** ../../components/Dialog.scss ***!
                \************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Dialog_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./Dialog.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Dialog.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Dialog_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Dialog_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Dialog_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Dialog_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9EaWFsb2cuc2Nzcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxNQUFtSDtBQUNuSCxNQUF5RztBQUN6RyxNQUFnSDtBQUNoSCxNQUFtSTtBQUNuSSxNQUE0SDtBQUM1SCxNQUE0SDtBQUM1SCxNQUFnUjtBQUNoUjtBQUNBOztBQUVBOztBQUVBLDRCQUE0Qix5SEFBbUI7QUFDL0Msd0JBQXdCLHNJQUFhOztBQUVyQyx1QkFBdUIsMkhBQWE7QUFDcEM7QUFDQSxpQkFBaUIsbUhBQU07QUFDdkIsNkJBQTZCLDBIQUFrQjs7QUFFL0MsYUFBYSw4SEFBRyxDQUFDLHlQQUFPOzs7O0FBSTBOO0FBQ2xQLE9BQU8saUVBQWUseVBBQU8sSUFBSSxnUUFBYyxHQUFHLGdRQUFjLFlBQVksRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL0RpYWxvZy5zY3NzPzJlNTEiXSwic291cmNlc0NvbnRlbnQiOlsiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0Rm4gZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzBdLnVzZVsyXSEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL0RpYWxvZy5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9EaWFsb2cuc2Nzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/Dialog.scss\n');
              }
            ),
            /***/
            "../../components/DialogActionButton.scss": (
              /*!************************************************!*\
                !*** ../../components/DialogActionButton.scss ***!
                \************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_DialogActionButton_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./DialogActionButton.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/DialogActionButton.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_DialogActionButton_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_DialogActionButton_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_DialogActionButton_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_DialogActionButton_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9EaWFsb2dBY3Rpb25CdXR0b24uc2Nzcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxNQUFtSDtBQUNuSCxNQUF5RztBQUN6RyxNQUFnSDtBQUNoSCxNQUFtSTtBQUNuSSxNQUE0SDtBQUM1SCxNQUE0SDtBQUM1SCxNQUE0UjtBQUM1UjtBQUNBOztBQUVBOztBQUVBLDRCQUE0Qix5SEFBbUI7QUFDL0Msd0JBQXdCLHNJQUFhOztBQUVyQyx1QkFBdUIsMkhBQWE7QUFDcEM7QUFDQSxpQkFBaUIsbUhBQU07QUFDdkIsNkJBQTZCLDBIQUFrQjs7QUFFL0MsYUFBYSw4SEFBRyxDQUFDLHFRQUFPOzs7O0FBSXNPO0FBQzlQLE9BQU8saUVBQWUscVFBQU8sSUFBSSw0UUFBYyxHQUFHLDRRQUFjLFlBQVksRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL0RpYWxvZ0FjdGlvbkJ1dHRvbi5zY3NzPzEzOWUiXSwic291cmNlc0NvbnRlbnQiOlsiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0Rm4gZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzBdLnVzZVsyXSEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL0RpYWxvZ0FjdGlvbkJ1dHRvbi5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9EaWFsb2dBY3Rpb25CdXR0b24uc2Nzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/DialogActionButton.scss\n');
              }
            ),
            /***/
            "../../components/ExcalidrawLogo.scss": (
              /*!********************************************!*\
                !*** ../../components/ExcalidrawLogo.scss ***!
                \********************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ExcalidrawLogo_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./ExcalidrawLogo.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ExcalidrawLogo.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ExcalidrawLogo_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ExcalidrawLogo_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ExcalidrawLogo_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ExcalidrawLogo_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9FeGNhbGlkcmF3TG9nby5zY3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLE1BQW1IO0FBQ25ILE1BQXlHO0FBQ3pHLE1BQWdIO0FBQ2hILE1BQW1JO0FBQ25JLE1BQTRIO0FBQzVILE1BQTRIO0FBQzVILE1BQXdSO0FBQ3hSO0FBQ0E7O0FBRUE7O0FBRUEsNEJBQTRCLHlIQUFtQjtBQUMvQyx3QkFBd0Isc0lBQWE7O0FBRXJDLHVCQUF1QiwySEFBYTtBQUNwQztBQUNBLGlCQUFpQixtSEFBTTtBQUN2Qiw2QkFBNkIsMEhBQWtCOztBQUUvQyxhQUFhLDhIQUFHLENBQUMsaVFBQU87Ozs7QUFJa087QUFDMVAsT0FBTyxpRUFBZSxpUUFBTyxJQUFJLHdRQUFjLEdBQUcsd1FBQWMsWUFBWSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvRXhjYWxpZHJhd0xvZ28uc2Nzcz81ZTAzIl0sInNvdXJjZXNDb250ZW50IjpbIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9FeGNhbGlkcmF3TG9nby5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9FeGNhbGlkcmF3TG9nby5zY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/ExcalidrawLogo.scss\n');
              }
            ),
            /***/
            "../../components/ExportDialog.scss": (
              /*!******************************************!*\
                !*** ../../components/ExportDialog.scss ***!
                \******************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ExportDialog_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./ExportDialog.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ExportDialog.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ExportDialog_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ExportDialog_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ExportDialog_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ExportDialog_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9FeHBvcnREaWFsb2cuc2Nzcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxNQUFtSDtBQUNuSCxNQUF5RztBQUN6RyxNQUFnSDtBQUNoSCxNQUFtSTtBQUNuSSxNQUE0SDtBQUM1SCxNQUE0SDtBQUM1SCxNQUFzUjtBQUN0UjtBQUNBOztBQUVBOztBQUVBLDRCQUE0Qix5SEFBbUI7QUFDL0Msd0JBQXdCLHNJQUFhOztBQUVyQyx1QkFBdUIsMkhBQWE7QUFDcEM7QUFDQSxpQkFBaUIsbUhBQU07QUFDdkIsNkJBQTZCLDBIQUFrQjs7QUFFL0MsYUFBYSw4SEFBRyxDQUFDLCtQQUFPOzs7O0FBSWdPO0FBQ3hQLE9BQU8saUVBQWUsK1BBQU8sSUFBSSxzUUFBYyxHQUFHLHNRQUFjLFlBQVksRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL0V4cG9ydERpYWxvZy5zY3NzP2Q3OWIiXSwic291cmNlc0NvbnRlbnQiOlsiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0Rm4gZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzBdLnVzZVsyXSEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL0V4cG9ydERpYWxvZy5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9FeHBvcnREaWFsb2cuc2Nzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/ExportDialog.scss\n');
              }
            ),
            /***/
            "../../components/EyeDropper.scss": (
              /*!****************************************!*\
                !*** ../../components/EyeDropper.scss ***!
                \****************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_EyeDropper_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./EyeDropper.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/EyeDropper.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_EyeDropper_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_EyeDropper_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_EyeDropper_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_EyeDropper_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9FeWVEcm9wcGVyLnNjc3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsTUFBbUg7QUFDbkgsTUFBeUc7QUFDekcsTUFBZ0g7QUFDaEgsTUFBbUk7QUFDbkksTUFBNEg7QUFDNUgsTUFBNEg7QUFDNUgsTUFBb1I7QUFDcFI7QUFDQTs7QUFFQTs7QUFFQSw0QkFBNEIseUhBQW1CO0FBQy9DLHdCQUF3QixzSUFBYTs7QUFFckMsdUJBQXVCLDJIQUFhO0FBQ3BDO0FBQ0EsaUJBQWlCLG1IQUFNO0FBQ3ZCLDZCQUE2QiwwSEFBa0I7O0FBRS9DLGFBQWEsOEhBQUcsQ0FBQyw2UEFBTzs7OztBQUk4TjtBQUN0UCxPQUFPLGlFQUFlLDZQQUFPLElBQUksb1FBQWMsR0FBRyxvUUFBYyxZQUFZLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9FeWVEcm9wcGVyLnNjc3M/YjdjMiJdLCJzb3VyY2VzQ29udGVudCI6WyJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vRXllRHJvcHBlci5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9FeWVEcm9wcGVyLnNjc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/EyeDropper.scss\n');
              }
            ),
            /***/
            "../../components/FilledButton.scss": (
              /*!******************************************!*\
                !*** ../../components/FilledButton.scss ***!
                \******************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_FilledButton_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./FilledButton.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/FilledButton.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_FilledButton_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_FilledButton_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_FilledButton_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_FilledButton_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9GaWxsZWRCdXR0b24uc2Nzcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxNQUFtSDtBQUNuSCxNQUF5RztBQUN6RyxNQUFnSDtBQUNoSCxNQUFtSTtBQUNuSSxNQUE0SDtBQUM1SCxNQUE0SDtBQUM1SCxNQUFzUjtBQUN0UjtBQUNBOztBQUVBOztBQUVBLDRCQUE0Qix5SEFBbUI7QUFDL0Msd0JBQXdCLHNJQUFhOztBQUVyQyx1QkFBdUIsMkhBQWE7QUFDcEM7QUFDQSxpQkFBaUIsbUhBQU07QUFDdkIsNkJBQTZCLDBIQUFrQjs7QUFFL0MsYUFBYSw4SEFBRyxDQUFDLCtQQUFPOzs7O0FBSWdPO0FBQ3hQLE9BQU8saUVBQWUsK1BBQU8sSUFBSSxzUUFBYyxHQUFHLHNRQUFjLFlBQVksRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL0ZpbGxlZEJ1dHRvbi5zY3NzP2E0YjEiXSwic291cmNlc0NvbnRlbnQiOlsiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0Rm4gZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzBdLnVzZVsyXSEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL0ZpbGxlZEJ1dHRvbi5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9GaWxsZWRCdXR0b24uc2Nzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/FilledButton.scss\n');
              }
            ),
            /***/
            "../../components/FixedSideContainer.scss": (
              /*!************************************************!*\
                !*** ../../components/FixedSideContainer.scss ***!
                \************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_FixedSideContainer_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./FixedSideContainer.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/FixedSideContainer.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_FixedSideContainer_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_FixedSideContainer_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_FixedSideContainer_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_FixedSideContainer_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9GaXhlZFNpZGVDb250YWluZXIuc2Nzcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxNQUFtSDtBQUNuSCxNQUF5RztBQUN6RyxNQUFnSDtBQUNoSCxNQUFtSTtBQUNuSSxNQUE0SDtBQUM1SCxNQUE0SDtBQUM1SCxNQUE0UjtBQUM1UjtBQUNBOztBQUVBOztBQUVBLDRCQUE0Qix5SEFBbUI7QUFDL0Msd0JBQXdCLHNJQUFhOztBQUVyQyx1QkFBdUIsMkhBQWE7QUFDcEM7QUFDQSxpQkFBaUIsbUhBQU07QUFDdkIsNkJBQTZCLDBIQUFrQjs7QUFFL0MsYUFBYSw4SEFBRyxDQUFDLHFRQUFPOzs7O0FBSXNPO0FBQzlQLE9BQU8saUVBQWUscVFBQU8sSUFBSSw0UUFBYyxHQUFHLDRRQUFjLFlBQVksRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL0ZpeGVkU2lkZUNvbnRhaW5lci5zY3NzPzE4ZDQiXSwic291cmNlc0NvbnRlbnQiOlsiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0Rm4gZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzBdLnVzZVsyXSEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL0ZpeGVkU2lkZUNvbnRhaW5lci5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9GaXhlZFNpZGVDb250YWluZXIuc2Nzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/FixedSideContainer.scss\n');
              }
            ),
            /***/
            "../../components/HelpDialog.scss": (
              /*!****************************************!*\
                !*** ../../components/HelpDialog.scss ***!
                \****************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_HelpDialog_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./HelpDialog.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/HelpDialog.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_HelpDialog_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_HelpDialog_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_HelpDialog_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_HelpDialog_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9IZWxwRGlhbG9nLnNjc3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsTUFBbUg7QUFDbkgsTUFBeUc7QUFDekcsTUFBZ0g7QUFDaEgsTUFBbUk7QUFDbkksTUFBNEg7QUFDNUgsTUFBNEg7QUFDNUgsTUFBb1I7QUFDcFI7QUFDQTs7QUFFQTs7QUFFQSw0QkFBNEIseUhBQW1CO0FBQy9DLHdCQUF3QixzSUFBYTs7QUFFckMsdUJBQXVCLDJIQUFhO0FBQ3BDO0FBQ0EsaUJBQWlCLG1IQUFNO0FBQ3ZCLDZCQUE2QiwwSEFBa0I7O0FBRS9DLGFBQWEsOEhBQUcsQ0FBQyw2UEFBTzs7OztBQUk4TjtBQUN0UCxPQUFPLGlFQUFlLDZQQUFPLElBQUksb1FBQWMsR0FBRyxvUUFBYyxZQUFZLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9IZWxwRGlhbG9nLnNjc3M/MThjYyJdLCJzb3VyY2VzQ29udGVudCI6WyJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vSGVscERpYWxvZy5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9IZWxwRGlhbG9nLnNjc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/HelpDialog.scss\n');
              }
            ),
            /***/
            "../../components/HintViewer.scss": (
              /*!****************************************!*\
                !*** ../../components/HintViewer.scss ***!
                \****************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_HintViewer_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./HintViewer.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/HintViewer.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_HintViewer_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_HintViewer_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_HintViewer_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_HintViewer_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9IaW50Vmlld2VyLnNjc3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsTUFBbUg7QUFDbkgsTUFBeUc7QUFDekcsTUFBZ0g7QUFDaEgsTUFBbUk7QUFDbkksTUFBNEg7QUFDNUgsTUFBNEg7QUFDNUgsTUFBb1I7QUFDcFI7QUFDQTs7QUFFQTs7QUFFQSw0QkFBNEIseUhBQW1CO0FBQy9DLHdCQUF3QixzSUFBYTs7QUFFckMsdUJBQXVCLDJIQUFhO0FBQ3BDO0FBQ0EsaUJBQWlCLG1IQUFNO0FBQ3ZCLDZCQUE2QiwwSEFBa0I7O0FBRS9DLGFBQWEsOEhBQUcsQ0FBQyw2UEFBTzs7OztBQUk4TjtBQUN0UCxPQUFPLGlFQUFlLDZQQUFPLElBQUksb1FBQWMsR0FBRyxvUUFBYyxZQUFZLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9IaW50Vmlld2VyLnNjc3M/ZmE2NiJdLCJzb3VyY2VzQ29udGVudCI6WyJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vSGludFZpZXdlci5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9IaW50Vmlld2VyLnNjc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/HintViewer.scss\n');
              }
            ),
            /***/
            "../../components/IconPicker.scss": (
              /*!****************************************!*\
                !*** ../../components/IconPicker.scss ***!
                \****************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_IconPicker_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./IconPicker.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/IconPicker.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_IconPicker_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_IconPicker_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_IconPicker_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_IconPicker_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9JY29uUGlja2VyLnNjc3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsTUFBbUg7QUFDbkgsTUFBeUc7QUFDekcsTUFBZ0g7QUFDaEgsTUFBbUk7QUFDbkksTUFBNEg7QUFDNUgsTUFBNEg7QUFDNUgsTUFBb1I7QUFDcFI7QUFDQTs7QUFFQTs7QUFFQSw0QkFBNEIseUhBQW1CO0FBQy9DLHdCQUF3QixzSUFBYTs7QUFFckMsdUJBQXVCLDJIQUFhO0FBQ3BDO0FBQ0EsaUJBQWlCLG1IQUFNO0FBQ3ZCLDZCQUE2QiwwSEFBa0I7O0FBRS9DLGFBQWEsOEhBQUcsQ0FBQyw2UEFBTzs7OztBQUk4TjtBQUN0UCxPQUFPLGlFQUFlLDZQQUFPLElBQUksb1FBQWMsR0FBRyxvUUFBYyxZQUFZLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9JY29uUGlja2VyLnNjc3M/ZThkOCJdLCJzb3VyY2VzQ29udGVudCI6WyJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vSWNvblBpY2tlci5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9JY29uUGlja2VyLnNjc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/IconPicker.scss\n');
              }
            ),
            /***/
            "../../components/ImageExportDialog.scss": (
              /*!***********************************************!*\
                !*** ../../components/ImageExportDialog.scss ***!
                \***********************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ImageExportDialog_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./ImageExportDialog.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ImageExportDialog.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ImageExportDialog_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ImageExportDialog_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ImageExportDialog_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ImageExportDialog_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9JbWFnZUV4cG9ydERpYWxvZy5zY3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLE1BQW1IO0FBQ25ILE1BQXlHO0FBQ3pHLE1BQWdIO0FBQ2hILE1BQW1JO0FBQ25JLE1BQTRIO0FBQzVILE1BQTRIO0FBQzVILE1BQTJSO0FBQzNSO0FBQ0E7O0FBRUE7O0FBRUEsNEJBQTRCLHlIQUFtQjtBQUMvQyx3QkFBd0Isc0lBQWE7O0FBRXJDLHVCQUF1QiwySEFBYTtBQUNwQztBQUNBLGlCQUFpQixtSEFBTTtBQUN2Qiw2QkFBNkIsMEhBQWtCOztBQUUvQyxhQUFhLDhIQUFHLENBQUMsb1FBQU87Ozs7QUFJcU87QUFDN1AsT0FBTyxpRUFBZSxvUUFBTyxJQUFJLDJRQUFjLEdBQUcsMlFBQWMsWUFBWSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvSW1hZ2VFeHBvcnREaWFsb2cuc2Nzcz8wOGZmIl0sInNvdXJjZXNDb250ZW50IjpbIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9JbWFnZUV4cG9ydERpYWxvZy5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9JbWFnZUV4cG9ydERpYWxvZy5zY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/ImageExportDialog.scss\n');
              }
            ),
            /***/
            "../../components/Island.scss": (
              /*!************************************!*\
                !*** ../../components/Island.scss ***!
                \************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Island_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./Island.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Island.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Island_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Island_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Island_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Island_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9Jc2xhbmQuc2Nzcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxNQUFtSDtBQUNuSCxNQUF5RztBQUN6RyxNQUFnSDtBQUNoSCxNQUFtSTtBQUNuSSxNQUE0SDtBQUM1SCxNQUE0SDtBQUM1SCxNQUFnUjtBQUNoUjtBQUNBOztBQUVBOztBQUVBLDRCQUE0Qix5SEFBbUI7QUFDL0Msd0JBQXdCLHNJQUFhOztBQUVyQyx1QkFBdUIsMkhBQWE7QUFDcEM7QUFDQSxpQkFBaUIsbUhBQU07QUFDdkIsNkJBQTZCLDBIQUFrQjs7QUFFL0MsYUFBYSw4SEFBRyxDQUFDLHlQQUFPOzs7O0FBSTBOO0FBQ2xQLE9BQU8saUVBQWUseVBBQU8sSUFBSSxnUUFBYyxHQUFHLGdRQUFjLFlBQVksRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL0lzbGFuZC5zY3NzPzAyMzIiXSwic291cmNlc0NvbnRlbnQiOlsiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0Rm4gZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzBdLnVzZVsyXSEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL0lzbGFuZC5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9Jc2xhbmQuc2Nzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/Island.scss\n');
              }
            ),
            /***/
            "../../components/LaserTool/LaserToolOverlay.scss": (
              /*!********************************************************!*\
                !*** ../../components/LaserTool/LaserToolOverlay.scss ***!
                \********************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LaserToolOverlay_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./LaserToolOverlay.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/LaserTool/LaserToolOverlay.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LaserToolOverlay_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LaserToolOverlay_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LaserToolOverlay_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LaserToolOverlay_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9MYXNlclRvb2wvTGFzZXJUb29sT3ZlcmxheS5zY3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLE1BQXNIO0FBQ3RILE1BQTRHO0FBQzVHLE1BQW1IO0FBQ25ILE1BQXNJO0FBQ3RJLE1BQStIO0FBQy9ILE1BQStIO0FBQy9ILE1BQW1TO0FBQ25TO0FBQ0E7O0FBRUE7O0FBRUEsNEJBQTRCLHlIQUFtQjtBQUMvQyx3QkFBd0Isc0lBQWE7O0FBRXJDLHVCQUF1QiwySEFBYTtBQUNwQztBQUNBLGlCQUFpQixtSEFBTTtBQUN2Qiw2QkFBNkIsMEhBQWtCOztBQUUvQyxhQUFhLDhIQUFHLENBQUMsbVFBQU87Ozs7QUFJNk87QUFDclEsT0FBTyxpRUFBZSxtUUFBTyxJQUFJLDBRQUFjLEdBQUcsMFFBQWMsWUFBWSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvTGFzZXJUb29sL0xhc2VyVG9vbE92ZXJsYXkuc2Nzcz83MWFlIl0sInNvdXJjZXNDb250ZW50IjpbIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9MYXNlclRvb2xPdmVybGF5LnNjc3NcIjtcbiAgICAgIFxuICAgICAgXG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0gPSBzdHlsZVRhZ1RyYW5zZm9ybUZuO1xub3B0aW9ucy5zZXRBdHRyaWJ1dGVzID0gc2V0QXR0cmlidXRlcztcblxuICAgICAgb3B0aW9ucy5pbnNlcnQgPSBpbnNlcnRGbi5iaW5kKG51bGwsIFwiaGVhZFwiKTtcbiAgICBcbm9wdGlvbnMuZG9tQVBJID0gZG9tQVBJO1xub3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7XG5cbnZhciB1cGRhdGUgPSBBUEkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgKiBmcm9tIFwiISEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzBdLnVzZVsyXSEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL0xhc2VyVG9vbE92ZXJsYXkuc2Nzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/LaserTool/LaserToolOverlay.scss\n');
              }
            ),
            /***/
            "../../components/LayerUI.scss": (
              /*!*************************************!*\
                !*** ../../components/LayerUI.scss ***!
                \*************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LayerUI_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./LayerUI.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/LayerUI.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LayerUI_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LayerUI_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LayerUI_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LayerUI_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9MYXllclVJLnNjc3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsTUFBbUg7QUFDbkgsTUFBeUc7QUFDekcsTUFBZ0g7QUFDaEgsTUFBbUk7QUFDbkksTUFBNEg7QUFDNUgsTUFBNEg7QUFDNUgsTUFBaVI7QUFDalI7QUFDQTs7QUFFQTs7QUFFQSw0QkFBNEIseUhBQW1CO0FBQy9DLHdCQUF3QixzSUFBYTs7QUFFckMsdUJBQXVCLDJIQUFhO0FBQ3BDO0FBQ0EsaUJBQWlCLG1IQUFNO0FBQ3ZCLDZCQUE2QiwwSEFBa0I7O0FBRS9DLGFBQWEsOEhBQUcsQ0FBQywwUEFBTzs7OztBQUkyTjtBQUNuUCxPQUFPLGlFQUFlLDBQQUFPLElBQUksaVFBQWMsR0FBRyxpUUFBYyxZQUFZLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9MYXllclVJLnNjc3M/ZmQzNCJdLCJzb3VyY2VzQ29udGVudCI6WyJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vTGF5ZXJVSS5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9MYXllclVJLnNjc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/LayerUI.scss\n');
              }
            ),
            /***/
            "../../components/LibraryMenu.scss": (
              /*!*****************************************!*\
                !*** ../../components/LibraryMenu.scss ***!
                \*****************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LibraryMenu_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./LibraryMenu.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/LibraryMenu.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LibraryMenu_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LibraryMenu_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LibraryMenu_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LibraryMenu_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9MaWJyYXJ5TWVudS5zY3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLE1BQW1IO0FBQ25ILE1BQXlHO0FBQ3pHLE1BQWdIO0FBQ2hILE1BQW1JO0FBQ25JLE1BQTRIO0FBQzVILE1BQTRIO0FBQzVILE1BQXFSO0FBQ3JSO0FBQ0E7O0FBRUE7O0FBRUEsNEJBQTRCLHlIQUFtQjtBQUMvQyx3QkFBd0Isc0lBQWE7O0FBRXJDLHVCQUF1QiwySEFBYTtBQUNwQztBQUNBLGlCQUFpQixtSEFBTTtBQUN2Qiw2QkFBNkIsMEhBQWtCOztBQUUvQyxhQUFhLDhIQUFHLENBQUMsOFBBQU87Ozs7QUFJK047QUFDdlAsT0FBTyxpRUFBZSw4UEFBTyxJQUFJLHFRQUFjLEdBQUcscVFBQWMsWUFBWSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvTGlicmFyeU1lbnUuc2Nzcz8yODMzIl0sInNvdXJjZXNDb250ZW50IjpbIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9MaWJyYXJ5TWVudS5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9MaWJyYXJ5TWVudS5zY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/LibraryMenu.scss\n');
              }
            ),
            /***/
            "../../components/LibraryMenuItems.scss": (
              /*!**********************************************!*\
                !*** ../../components/LibraryMenuItems.scss ***!
                \**********************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LibraryMenuItems_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./LibraryMenuItems.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/LibraryMenuItems.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LibraryMenuItems_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LibraryMenuItems_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LibraryMenuItems_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LibraryMenuItems_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9MaWJyYXJ5TWVudUl0ZW1zLnNjc3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsTUFBbUg7QUFDbkgsTUFBeUc7QUFDekcsTUFBZ0g7QUFDaEgsTUFBbUk7QUFDbkksTUFBNEg7QUFDNUgsTUFBNEg7QUFDNUgsTUFBMFI7QUFDMVI7QUFDQTs7QUFFQTs7QUFFQSw0QkFBNEIseUhBQW1CO0FBQy9DLHdCQUF3QixzSUFBYTs7QUFFckMsdUJBQXVCLDJIQUFhO0FBQ3BDO0FBQ0EsaUJBQWlCLG1IQUFNO0FBQ3ZCLDZCQUE2QiwwSEFBa0I7O0FBRS9DLGFBQWEsOEhBQUcsQ0FBQyxtUUFBTzs7OztBQUlvTztBQUM1UCxPQUFPLGlFQUFlLG1RQUFPLElBQUksMFFBQWMsR0FBRywwUUFBYyxZQUFZLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9MaWJyYXJ5TWVudUl0ZW1zLnNjc3M/YjNkYSJdLCJzb3VyY2VzQ29udGVudCI6WyJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vTGlicmFyeU1lbnVJdGVtcy5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9MaWJyYXJ5TWVudUl0ZW1zLnNjc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/LibraryMenuItems.scss\n');
              }
            ),
            /***/
            "../../components/LibraryUnit.scss": (
              /*!*****************************************!*\
                !*** ../../components/LibraryUnit.scss ***!
                \*****************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LibraryUnit_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./LibraryUnit.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/LibraryUnit.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LibraryUnit_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LibraryUnit_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LibraryUnit_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LibraryUnit_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9MaWJyYXJ5VW5pdC5zY3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLE1BQW1IO0FBQ25ILE1BQXlHO0FBQ3pHLE1BQWdIO0FBQ2hILE1BQW1JO0FBQ25JLE1BQTRIO0FBQzVILE1BQTRIO0FBQzVILE1BQXFSO0FBQ3JSO0FBQ0E7O0FBRUE7O0FBRUEsNEJBQTRCLHlIQUFtQjtBQUMvQyx3QkFBd0Isc0lBQWE7O0FBRXJDLHVCQUF1QiwySEFBYTtBQUNwQztBQUNBLGlCQUFpQixtSEFBTTtBQUN2Qiw2QkFBNkIsMEhBQWtCOztBQUUvQyxhQUFhLDhIQUFHLENBQUMsOFBBQU87Ozs7QUFJK047QUFDdlAsT0FBTyxpRUFBZSw4UEFBTyxJQUFJLHFRQUFjLEdBQUcscVFBQWMsWUFBWSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvTGlicmFyeVVuaXQuc2Nzcz80YTBjIl0sInNvdXJjZXNDb250ZW50IjpbIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9MaWJyYXJ5VW5pdC5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9MaWJyYXJ5VW5pdC5zY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/LibraryUnit.scss\n');
              }
            ),
            /***/
            "../../components/MermaidToExcalidraw.scss": (
              /*!*************************************************!*\
                !*** ../../components/MermaidToExcalidraw.scss ***!
                \*************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_MermaidToExcalidraw_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./MermaidToExcalidraw.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/MermaidToExcalidraw.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_MermaidToExcalidraw_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_MermaidToExcalidraw_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_MermaidToExcalidraw_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_MermaidToExcalidraw_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9NZXJtYWlkVG9FeGNhbGlkcmF3LnNjc3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsTUFBbUg7QUFDbkgsTUFBeUc7QUFDekcsTUFBZ0g7QUFDaEgsTUFBbUk7QUFDbkksTUFBNEg7QUFDNUgsTUFBNEg7QUFDNUgsTUFBNlI7QUFDN1I7QUFDQTs7QUFFQTs7QUFFQSw0QkFBNEIseUhBQW1CO0FBQy9DLHdCQUF3QixzSUFBYTs7QUFFckMsdUJBQXVCLDJIQUFhO0FBQ3BDO0FBQ0EsaUJBQWlCLG1IQUFNO0FBQ3ZCLDZCQUE2QiwwSEFBa0I7O0FBRS9DLGFBQWEsOEhBQUcsQ0FBQyxzUUFBTzs7OztBQUl1TztBQUMvUCxPQUFPLGlFQUFlLHNRQUFPLElBQUksNlFBQWMsR0FBRyw2UUFBYyxZQUFZLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9NZXJtYWlkVG9FeGNhbGlkcmF3LnNjc3M/Y2RkNiJdLCJzb3VyY2VzQ29udGVudCI6WyJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vTWVybWFpZFRvRXhjYWxpZHJhdy5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9NZXJtYWlkVG9FeGNhbGlkcmF3LnNjc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/MermaidToExcalidraw.scss\n');
              }
            ),
            /***/
            "../../components/Modal.scss": (
              /*!***********************************!*\
                !*** ../../components/Modal.scss ***!
                \***********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Modal_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./Modal.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Modal.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Modal_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Modal_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Modal_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Modal_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9Nb2RhbC5zY3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLE1BQW1IO0FBQ25ILE1BQXlHO0FBQ3pHLE1BQWdIO0FBQ2hILE1BQW1JO0FBQ25JLE1BQTRIO0FBQzVILE1BQTRIO0FBQzVILE1BQStRO0FBQy9RO0FBQ0E7O0FBRUE7O0FBRUEsNEJBQTRCLHlIQUFtQjtBQUMvQyx3QkFBd0Isc0lBQWE7O0FBRXJDLHVCQUF1QiwySEFBYTtBQUNwQztBQUNBLGlCQUFpQixtSEFBTTtBQUN2Qiw2QkFBNkIsMEhBQWtCOztBQUUvQyxhQUFhLDhIQUFHLENBQUMsd1BBQU87Ozs7QUFJeU47QUFDalAsT0FBTyxpRUFBZSx3UEFBTyxJQUFJLCtQQUFjLEdBQUcsK1BBQWMsWUFBWSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvTW9kYWwuc2Nzcz83MDdkIl0sInNvdXJjZXNDb250ZW50IjpbIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9Nb2RhbC5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9Nb2RhbC5zY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/Modal.scss\n');
              }
            ),
            /***/
            "../../components/OverwriteConfirm/OverwriteConfirm.scss": (
              /*!***************************************************************!*\
                !*** ../../components/OverwriteConfirm/OverwriteConfirm.scss ***!
                \***************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_OverwriteConfirm_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./OverwriteConfirm.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/OverwriteConfirm/OverwriteConfirm.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_OverwriteConfirm_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_OverwriteConfirm_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_OverwriteConfirm_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_OverwriteConfirm_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9PdmVyd3JpdGVDb25maXJtL092ZXJ3cml0ZUNvbmZpcm0uc2Nzcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxNQUFzSDtBQUN0SCxNQUE0RztBQUM1RyxNQUFtSDtBQUNuSCxNQUFzSTtBQUN0SSxNQUErSDtBQUMvSCxNQUErSDtBQUMvSCxNQUFtUztBQUNuUztBQUNBOztBQUVBOztBQUVBLDRCQUE0Qix5SEFBbUI7QUFDL0Msd0JBQXdCLHNJQUFhOztBQUVyQyx1QkFBdUIsMkhBQWE7QUFDcEM7QUFDQSxpQkFBaUIsbUhBQU07QUFDdkIsNkJBQTZCLDBIQUFrQjs7QUFFL0MsYUFBYSw4SEFBRyxDQUFDLG1RQUFPOzs7O0FBSTZPO0FBQ3JRLE9BQU8saUVBQWUsbVFBQU8sSUFBSSwwUUFBYyxHQUFHLDBRQUFjLFlBQVksRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL092ZXJ3cml0ZUNvbmZpcm0vT3ZlcndyaXRlQ29uZmlybS5zY3NzPzE3NGIiXSwic291cmNlc0NvbnRlbnQiOlsiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0Rm4gZnJvbSBcIiEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzBdLnVzZVsyXSEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL092ZXJ3cml0ZUNvbmZpcm0uc2Nzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xuXG4gICAgICBvcHRpb25zLmluc2VydCA9IGluc2VydEZuLmJpbmQobnVsbCwgXCJoZWFkXCIpO1xuICAgIFxub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vT3ZlcndyaXRlQ29uZmlybS5zY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/OverwriteConfirm/OverwriteConfirm.scss\n');
              }
            ),
            /***/
            "../../components/PasteChartDialog.scss": (
              /*!**********************************************!*\
                !*** ../../components/PasteChartDialog.scss ***!
                \**********************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_PasteChartDialog_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./PasteChartDialog.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/PasteChartDialog.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_PasteChartDialog_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_PasteChartDialog_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_PasteChartDialog_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_PasteChartDialog_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9QYXN0ZUNoYXJ0RGlhbG9nLnNjc3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsTUFBbUg7QUFDbkgsTUFBeUc7QUFDekcsTUFBZ0g7QUFDaEgsTUFBbUk7QUFDbkksTUFBNEg7QUFDNUgsTUFBNEg7QUFDNUgsTUFBMFI7QUFDMVI7QUFDQTs7QUFFQTs7QUFFQSw0QkFBNEIseUhBQW1CO0FBQy9DLHdCQUF3QixzSUFBYTs7QUFFckMsdUJBQXVCLDJIQUFhO0FBQ3BDO0FBQ0EsaUJBQWlCLG1IQUFNO0FBQ3ZCLDZCQUE2QiwwSEFBa0I7O0FBRS9DLGFBQWEsOEhBQUcsQ0FBQyxtUUFBTzs7OztBQUlvTztBQUM1UCxPQUFPLGlFQUFlLG1RQUFPLElBQUksMFFBQWMsR0FBRywwUUFBYyxZQUFZLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9QYXN0ZUNoYXJ0RGlhbG9nLnNjc3M/ZTIzZCJdLCJzb3VyY2VzQ29udGVudCI6WyJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vUGFzdGVDaGFydERpYWxvZy5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9QYXN0ZUNoYXJ0RGlhbG9nLnNjc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/PasteChartDialog.scss\n');
              }
            ),
            /***/
            "../../components/Popover.scss": (
              /*!*************************************!*\
                !*** ../../components/Popover.scss ***!
                \*************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Popover_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./Popover.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Popover.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Popover_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Popover_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Popover_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Popover_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9Qb3BvdmVyLnNjc3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsTUFBbUg7QUFDbkgsTUFBeUc7QUFDekcsTUFBZ0g7QUFDaEgsTUFBbUk7QUFDbkksTUFBNEg7QUFDNUgsTUFBNEg7QUFDNUgsTUFBaVI7QUFDalI7QUFDQTs7QUFFQTs7QUFFQSw0QkFBNEIseUhBQW1CO0FBQy9DLHdCQUF3QixzSUFBYTs7QUFFckMsdUJBQXVCLDJIQUFhO0FBQ3BDO0FBQ0EsaUJBQWlCLG1IQUFNO0FBQ3ZCLDZCQUE2QiwwSEFBa0I7O0FBRS9DLGFBQWEsOEhBQUcsQ0FBQywwUEFBTzs7OztBQUkyTjtBQUNuUCxPQUFPLGlFQUFlLDBQQUFPLElBQUksaVFBQWMsR0FBRyxpUUFBYyxZQUFZLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9Qb3BvdmVyLnNjc3M/ZmY1MSJdLCJzb3VyY2VzQ29udGVudCI6WyJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vUG9wb3Zlci5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9Qb3BvdmVyLnNjc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/Popover.scss\n');
              }
            ),
            /***/
            "../../components/ProjectName.scss": (
              /*!*****************************************!*\
                !*** ../../components/ProjectName.scss ***!
                \*****************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ProjectName_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./ProjectName.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ProjectName.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ProjectName_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ProjectName_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ProjectName_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ProjectName_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9Qcm9qZWN0TmFtZS5zY3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLE1BQW1IO0FBQ25ILE1BQXlHO0FBQ3pHLE1BQWdIO0FBQ2hILE1BQW1JO0FBQ25JLE1BQTRIO0FBQzVILE1BQTRIO0FBQzVILE1BQXFSO0FBQ3JSO0FBQ0E7O0FBRUE7O0FBRUEsNEJBQTRCLHlIQUFtQjtBQUMvQyx3QkFBd0Isc0lBQWE7O0FBRXJDLHVCQUF1QiwySEFBYTtBQUNwQztBQUNBLGlCQUFpQixtSEFBTTtBQUN2Qiw2QkFBNkIsMEhBQWtCOztBQUUvQyxhQUFhLDhIQUFHLENBQUMsOFBBQU87Ozs7QUFJK047QUFDdlAsT0FBTyxpRUFBZSw4UEFBTyxJQUFJLHFRQUFjLEdBQUcscVFBQWMsWUFBWSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvUHJvamVjdE5hbWUuc2Nzcz84ZGZiIl0sInNvdXJjZXNDb250ZW50IjpbIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9Qcm9qZWN0TmFtZS5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9Qcm9qZWN0TmFtZS5zY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/ProjectName.scss\n');
              }
            ),
            /***/
            "../../components/PublishLibrary.scss": (
              /*!********************************************!*\
                !*** ../../components/PublishLibrary.scss ***!
                \********************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_PublishLibrary_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./PublishLibrary.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/PublishLibrary.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_PublishLibrary_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_PublishLibrary_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_PublishLibrary_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_PublishLibrary_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9QdWJsaXNoTGlicmFyeS5zY3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLE1BQW1IO0FBQ25ILE1BQXlHO0FBQ3pHLE1BQWdIO0FBQ2hILE1BQW1JO0FBQ25JLE1BQTRIO0FBQzVILE1BQTRIO0FBQzVILE1BQXdSO0FBQ3hSO0FBQ0E7O0FBRUE7O0FBRUEsNEJBQTRCLHlIQUFtQjtBQUMvQyx3QkFBd0Isc0lBQWE7O0FBRXJDLHVCQUF1QiwySEFBYTtBQUNwQztBQUNBLGlCQUFpQixtSEFBTTtBQUN2Qiw2QkFBNkIsMEhBQWtCOztBQUUvQyxhQUFhLDhIQUFHLENBQUMsaVFBQU87Ozs7QUFJa087QUFDMVAsT0FBTyxpRUFBZSxpUUFBTyxJQUFJLHdRQUFjLEdBQUcsd1FBQWMsWUFBWSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvUHVibGlzaExpYnJhcnkuc2Nzcz81Y2JlIl0sInNvdXJjZXNDb250ZW50IjpbIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9QdWJsaXNoTGlicmFyeS5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9QdWJsaXNoTGlicmFyeS5zY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/PublishLibrary.scss\n');
              }
            ),
            /***/
            "../../components/RadioGroup.scss": (
              /*!****************************************!*\
                !*** ../../components/RadioGroup.scss ***!
                \****************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_RadioGroup_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./RadioGroup.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/RadioGroup.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_RadioGroup_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_RadioGroup_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_RadioGroup_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_RadioGroup_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9SYWRpb0dyb3VwLnNjc3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsTUFBbUg7QUFDbkgsTUFBeUc7QUFDekcsTUFBZ0g7QUFDaEgsTUFBbUk7QUFDbkksTUFBNEg7QUFDNUgsTUFBNEg7QUFDNUgsTUFBb1I7QUFDcFI7QUFDQTs7QUFFQTs7QUFFQSw0QkFBNEIseUhBQW1CO0FBQy9DLHdCQUF3QixzSUFBYTs7QUFFckMsdUJBQXVCLDJIQUFhO0FBQ3BDO0FBQ0EsaUJBQWlCLG1IQUFNO0FBQ3ZCLDZCQUE2QiwwSEFBa0I7O0FBRS9DLGFBQWEsOEhBQUcsQ0FBQyw2UEFBTzs7OztBQUk4TjtBQUN0UCxPQUFPLGlFQUFlLDZQQUFPLElBQUksb1FBQWMsR0FBRyxvUUFBYyxZQUFZLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9SYWRpb0dyb3VwLnNjc3M/YTNkOCJdLCJzb3VyY2VzQ29udGVudCI6WyJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vUmFkaW9Hcm91cC5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9SYWRpb0dyb3VwLnNjc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/RadioGroup.scss\n');
              }
            ),
            /***/
            "../../components/Sidebar/Sidebar.scss": (
              /*!*********************************************!*\
                !*** ../../components/Sidebar/Sidebar.scss ***!
                \*********************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Sidebar_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./Sidebar.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Sidebar/Sidebar.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Sidebar_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Sidebar_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Sidebar_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Sidebar_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9TaWRlYmFyL1NpZGViYXIuc2Nzcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxNQUFzSDtBQUN0SCxNQUE0RztBQUM1RyxNQUFtSDtBQUNuSCxNQUFzSTtBQUN0SSxNQUErSDtBQUMvSCxNQUErSDtBQUMvSCxNQUEwUjtBQUMxUjtBQUNBOztBQUVBOztBQUVBLDRCQUE0Qix5SEFBbUI7QUFDL0Msd0JBQXdCLHNJQUFhOztBQUVyQyx1QkFBdUIsMkhBQWE7QUFDcEM7QUFDQSxpQkFBaUIsbUhBQU07QUFDdkIsNkJBQTZCLDBIQUFrQjs7QUFFL0MsYUFBYSw4SEFBRyxDQUFDLDBQQUFPOzs7O0FBSW9PO0FBQzVQLE9BQU8saUVBQWUsMFBBQU8sSUFBSSxpUUFBYyxHQUFHLGlRQUFjLFlBQVksRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL1NpZGViYXIvU2lkZWJhci5zY3NzP2I1YmIiXSwic291cmNlc0NvbnRlbnQiOlsiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0Rm4gZnJvbSBcIiEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzBdLnVzZVsyXSEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL1NpZGViYXIuc2Nzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xuXG4gICAgICBvcHRpb25zLmluc2VydCA9IGluc2VydEZuLmJpbmQobnVsbCwgXCJoZWFkXCIpO1xuICAgIFxub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vU2lkZWJhci5zY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/Sidebar/Sidebar.scss\n');
              }
            ),
            /***/
            "../../components/Sidebar/SidebarTrigger.scss": (
              /*!****************************************************!*\
                !*** ../../components/Sidebar/SidebarTrigger.scss ***!
                \****************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_SidebarTrigger_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./SidebarTrigger.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Sidebar/SidebarTrigger.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_SidebarTrigger_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_SidebarTrigger_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_SidebarTrigger_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_SidebarTrigger_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9TaWRlYmFyL1NpZGViYXJUcmlnZ2VyLnNjc3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsTUFBc0g7QUFDdEgsTUFBNEc7QUFDNUcsTUFBbUg7QUFDbkgsTUFBc0k7QUFDdEksTUFBK0g7QUFDL0gsTUFBK0g7QUFDL0gsTUFBaVM7QUFDalM7QUFDQTs7QUFFQTs7QUFFQSw0QkFBNEIseUhBQW1CO0FBQy9DLHdCQUF3QixzSUFBYTs7QUFFckMsdUJBQXVCLDJIQUFhO0FBQ3BDO0FBQ0EsaUJBQWlCLG1IQUFNO0FBQ3ZCLDZCQUE2QiwwSEFBa0I7O0FBRS9DLGFBQWEsOEhBQUcsQ0FBQyxpUUFBTzs7OztBQUkyTztBQUNuUSxPQUFPLGlFQUFlLGlRQUFPLElBQUksd1FBQWMsR0FBRyx3UUFBYyxZQUFZLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9TaWRlYmFyL1NpZGViYXJUcmlnZ2VyLnNjc3M/NDgyZiJdLCJzb3VyY2VzQ29udGVudCI6WyJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vU2lkZWJhclRyaWdnZXIuc2Nzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xuXG4gICAgICBvcHRpb25zLmluc2VydCA9IGluc2VydEZuLmJpbmQobnVsbCwgXCJoZWFkXCIpO1xuICAgIFxub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vU2lkZWJhclRyaWdnZXIuc2Nzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/Sidebar/SidebarTrigger.scss\n');
              }
            ),
            /***/
            "../../components/Spinner.scss": (
              /*!*************************************!*\
                !*** ../../components/Spinner.scss ***!
                \*************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Spinner_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./Spinner.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Spinner.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Spinner_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Spinner_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Spinner_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Spinner_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9TcGlubmVyLnNjc3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsTUFBbUg7QUFDbkgsTUFBeUc7QUFDekcsTUFBZ0g7QUFDaEgsTUFBbUk7QUFDbkksTUFBNEg7QUFDNUgsTUFBNEg7QUFDNUgsTUFBaVI7QUFDalI7QUFDQTs7QUFFQTs7QUFFQSw0QkFBNEIseUhBQW1CO0FBQy9DLHdCQUF3QixzSUFBYTs7QUFFckMsdUJBQXVCLDJIQUFhO0FBQ3BDO0FBQ0EsaUJBQWlCLG1IQUFNO0FBQ3ZCLDZCQUE2QiwwSEFBa0I7O0FBRS9DLGFBQWEsOEhBQUcsQ0FBQywwUEFBTzs7OztBQUkyTjtBQUNuUCxPQUFPLGlFQUFlLDBQQUFPLElBQUksaVFBQWMsR0FBRyxpUUFBYyxZQUFZLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9TcGlubmVyLnNjc3M/YWFjMyJdLCJzb3VyY2VzQ29udGVudCI6WyJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vU3Bpbm5lci5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9TcGlubmVyLnNjc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/Spinner.scss\n');
              }
            ),
            /***/
            "../../components/Stack.scss": (
              /*!***********************************!*\
                !*** ../../components/Stack.scss ***!
                \***********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Stack_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./Stack.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Stack.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Stack_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Stack_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Stack_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Stack_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9TdGFjay5zY3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLE1BQW1IO0FBQ25ILE1BQXlHO0FBQ3pHLE1BQWdIO0FBQ2hILE1BQW1JO0FBQ25JLE1BQTRIO0FBQzVILE1BQTRIO0FBQzVILE1BQStRO0FBQy9RO0FBQ0E7O0FBRUE7O0FBRUEsNEJBQTRCLHlIQUFtQjtBQUMvQyx3QkFBd0Isc0lBQWE7O0FBRXJDLHVCQUF1QiwySEFBYTtBQUNwQztBQUNBLGlCQUFpQixtSEFBTTtBQUN2Qiw2QkFBNkIsMEhBQWtCOztBQUUvQyxhQUFhLDhIQUFHLENBQUMsd1BBQU87Ozs7QUFJeU47QUFDalAsT0FBTyxpRUFBZSx3UEFBTyxJQUFJLCtQQUFjLEdBQUcsK1BBQWMsWUFBWSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvU3RhY2suc2Nzcz84NDkyIl0sInNvdXJjZXNDb250ZW50IjpbIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9TdGFjay5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9TdGFjay5zY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/Stack.scss\n');
              }
            ),
            /***/
            "../../components/Stats.scss": (
              /*!***********************************!*\
                !*** ../../components/Stats.scss ***!
                \***********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Stats_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./Stats.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Stats.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Stats_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Stats_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Stats_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Stats_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9TdGF0cy5zY3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLE1BQW1IO0FBQ25ILE1BQXlHO0FBQ3pHLE1BQWdIO0FBQ2hILE1BQW1JO0FBQ25JLE1BQTRIO0FBQzVILE1BQTRIO0FBQzVILE1BQStRO0FBQy9RO0FBQ0E7O0FBRUE7O0FBRUEsNEJBQTRCLHlIQUFtQjtBQUMvQyx3QkFBd0Isc0lBQWE7O0FBRXJDLHVCQUF1QiwySEFBYTtBQUNwQztBQUNBLGlCQUFpQixtSEFBTTtBQUN2Qiw2QkFBNkIsMEhBQWtCOztBQUUvQyxhQUFhLDhIQUFHLENBQUMsd1BBQU87Ozs7QUFJeU47QUFDalAsT0FBTyxpRUFBZSx3UEFBTyxJQUFJLCtQQUFjLEdBQUcsK1BBQWMsWUFBWSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvU3RhdHMuc2Nzcz9jNjJkIl0sInNvdXJjZXNDb250ZW50IjpbIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9TdGF0cy5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9TdGF0cy5zY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/Stats.scss\n');
              }
            ),
            /***/
            "../../components/Switch.scss": (
              /*!************************************!*\
                !*** ../../components/Switch.scss ***!
                \************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Switch_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./Switch.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Switch.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Switch_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Switch_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Switch_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Switch_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9Td2l0Y2guc2Nzcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxNQUFtSDtBQUNuSCxNQUF5RztBQUN6RyxNQUFnSDtBQUNoSCxNQUFtSTtBQUNuSSxNQUE0SDtBQUM1SCxNQUE0SDtBQUM1SCxNQUFnUjtBQUNoUjtBQUNBOztBQUVBOztBQUVBLDRCQUE0Qix5SEFBbUI7QUFDL0Msd0JBQXdCLHNJQUFhOztBQUVyQyx1QkFBdUIsMkhBQWE7QUFDcEM7QUFDQSxpQkFBaUIsbUhBQU07QUFDdkIsNkJBQTZCLDBIQUFrQjs7QUFFL0MsYUFBYSw4SEFBRyxDQUFDLHlQQUFPOzs7O0FBSTBOO0FBQ2xQLE9BQU8saUVBQWUseVBBQU8sSUFBSSxnUUFBYyxHQUFHLGdRQUFjLFlBQVksRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL1N3aXRjaC5zY3NzP2ZmMmQiXSwic291cmNlc0NvbnRlbnQiOlsiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0Rm4gZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzBdLnVzZVsyXSEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL1N3aXRjaC5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9Td2l0Y2guc2Nzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/Switch.scss\n');
              }
            ),
            /***/
            "../../components/TextInput.scss": (
              /*!***************************************!*\
                !*** ../../components/TextInput.scss ***!
                \***************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_TextInput_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./TextInput.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/TextInput.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_TextInput_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_TextInput_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_TextInput_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_TextInput_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9UZXh0SW5wdXQuc2Nzcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxNQUFtSDtBQUNuSCxNQUF5RztBQUN6RyxNQUFnSDtBQUNoSCxNQUFtSTtBQUNuSSxNQUE0SDtBQUM1SCxNQUE0SDtBQUM1SCxNQUFtUjtBQUNuUjtBQUNBOztBQUVBOztBQUVBLDRCQUE0Qix5SEFBbUI7QUFDL0Msd0JBQXdCLHNJQUFhOztBQUVyQyx1QkFBdUIsMkhBQWE7QUFDcEM7QUFDQSxpQkFBaUIsbUhBQU07QUFDdkIsNkJBQTZCLDBIQUFrQjs7QUFFL0MsYUFBYSw4SEFBRyxDQUFDLDRQQUFPOzs7O0FBSTZOO0FBQ3JQLE9BQU8saUVBQWUsNFBBQU8sSUFBSSxtUUFBYyxHQUFHLG1RQUFjLFlBQVksRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL1RleHRJbnB1dC5zY3NzP2VmYzQiXSwic291cmNlc0NvbnRlbnQiOlsiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0Rm4gZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzBdLnVzZVsyXSEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL1RleHRJbnB1dC5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9UZXh0SW5wdXQuc2Nzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/TextInput.scss\n');
              }
            ),
            /***/
            "../../components/Toast.scss": (
              /*!***********************************!*\
                !*** ../../components/Toast.scss ***!
                \***********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Toast_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./Toast.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Toast.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Toast_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Toast_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Toast_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Toast_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9Ub2FzdC5zY3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLE1BQW1IO0FBQ25ILE1BQXlHO0FBQ3pHLE1BQWdIO0FBQ2hILE1BQW1JO0FBQ25JLE1BQTRIO0FBQzVILE1BQTRIO0FBQzVILE1BQStRO0FBQy9RO0FBQ0E7O0FBRUE7O0FBRUEsNEJBQTRCLHlIQUFtQjtBQUMvQyx3QkFBd0Isc0lBQWE7O0FBRXJDLHVCQUF1QiwySEFBYTtBQUNwQztBQUNBLGlCQUFpQixtSEFBTTtBQUN2Qiw2QkFBNkIsMEhBQWtCOztBQUUvQyxhQUFhLDhIQUFHLENBQUMsd1BBQU87Ozs7QUFJeU47QUFDalAsT0FBTyxpRUFBZSx3UEFBTyxJQUFJLCtQQUFjLEdBQUcsK1BBQWMsWUFBWSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvVG9hc3Quc2Nzcz9jYzBhIl0sInNvdXJjZXNDb250ZW50IjpbIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9Ub2FzdC5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9Ub2FzdC5zY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/Toast.scss\n');
              }
            ),
            /***/
            "../../components/ToolIcon.scss": (
              /*!**************************************!*\
                !*** ../../components/ToolIcon.scss ***!
                \**************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ToolIcon_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./ToolIcon.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ToolIcon.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ToolIcon_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ToolIcon_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ToolIcon_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ToolIcon_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9Ub29sSWNvbi5zY3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLE1BQW1IO0FBQ25ILE1BQXlHO0FBQ3pHLE1BQWdIO0FBQ2hILE1BQW1JO0FBQ25JLE1BQTRIO0FBQzVILE1BQTRIO0FBQzVILE1BQWtSO0FBQ2xSO0FBQ0E7O0FBRUE7O0FBRUEsNEJBQTRCLHlIQUFtQjtBQUMvQyx3QkFBd0Isc0lBQWE7O0FBRXJDLHVCQUF1QiwySEFBYTtBQUNwQztBQUNBLGlCQUFpQixtSEFBTTtBQUN2Qiw2QkFBNkIsMEhBQWtCOztBQUUvQyxhQUFhLDhIQUFHLENBQUMsMlBBQU87Ozs7QUFJNE47QUFDcFAsT0FBTyxpRUFBZSwyUEFBTyxJQUFJLGtRQUFjLEdBQUcsa1FBQWMsWUFBWSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvVG9vbEljb24uc2Nzcz8zZDRhIl0sInNvdXJjZXNDb250ZW50IjpbIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9Ub29sSWNvbi5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9Ub29sSWNvbi5zY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/ToolIcon.scss\n');
              }
            ),
            /***/
            "../../components/Toolbar.scss": (
              /*!*************************************!*\
                !*** ../../components/Toolbar.scss ***!
                \*************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Toolbar_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./Toolbar.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Toolbar.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Toolbar_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Toolbar_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Toolbar_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Toolbar_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9Ub29sYmFyLnNjc3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsTUFBbUg7QUFDbkgsTUFBeUc7QUFDekcsTUFBZ0g7QUFDaEgsTUFBbUk7QUFDbkksTUFBNEg7QUFDNUgsTUFBNEg7QUFDNUgsTUFBaVI7QUFDalI7QUFDQTs7QUFFQTs7QUFFQSw0QkFBNEIseUhBQW1CO0FBQy9DLHdCQUF3QixzSUFBYTs7QUFFckMsdUJBQXVCLDJIQUFhO0FBQ3BDO0FBQ0EsaUJBQWlCLG1IQUFNO0FBQ3ZCLDZCQUE2QiwwSEFBa0I7O0FBRS9DLGFBQWEsOEhBQUcsQ0FBQywwUEFBTzs7OztBQUkyTjtBQUNuUCxPQUFPLGlFQUFlLDBQQUFPLElBQUksaVFBQWMsR0FBRyxpUUFBYyxZQUFZLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9Ub29sYmFyLnNjc3M/N2M4OSJdLCJzb3VyY2VzQ29udGVudCI6WyJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vVG9vbGJhci5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9Ub29sYmFyLnNjc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/Toolbar.scss\n');
              }
            ),
            /***/
            "../../components/Tooltip.scss": (
              /*!*************************************!*\
                !*** ../../components/Tooltip.scss ***!
                \*************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Tooltip_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./Tooltip.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Tooltip.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Tooltip_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Tooltip_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Tooltip_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Tooltip_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9Ub29sdGlwLnNjc3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsTUFBbUg7QUFDbkgsTUFBeUc7QUFDekcsTUFBZ0g7QUFDaEgsTUFBbUk7QUFDbkksTUFBNEg7QUFDNUgsTUFBNEg7QUFDNUgsTUFBaVI7QUFDalI7QUFDQTs7QUFFQTs7QUFFQSw0QkFBNEIseUhBQW1CO0FBQy9DLHdCQUF3QixzSUFBYTs7QUFFckMsdUJBQXVCLDJIQUFhO0FBQ3BDO0FBQ0EsaUJBQWlCLG1IQUFNO0FBQ3ZCLDZCQUE2QiwwSEFBa0I7O0FBRS9DLGFBQWEsOEhBQUcsQ0FBQywwUEFBTzs7OztBQUkyTjtBQUNuUCxPQUFPLGlFQUFlLDBQQUFPLElBQUksaVFBQWMsR0FBRyxpUUFBYyxZQUFZLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9Ub29sdGlwLnNjc3M/MTJlZSJdLCJzb3VyY2VzQ29udGVudCI6WyJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vVG9vbHRpcC5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9Ub29sdGlwLnNjc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/Tooltip.scss\n');
              }
            ),
            /***/
            "../../components/UserList.scss": (
              /*!**************************************!*\
                !*** ../../components/UserList.scss ***!
                \**************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_UserList_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./UserList.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/UserList.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_UserList_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_UserList_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_UserList_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_UserList_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9Vc2VyTGlzdC5zY3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLE1BQW1IO0FBQ25ILE1BQXlHO0FBQ3pHLE1BQWdIO0FBQ2hILE1BQW1JO0FBQ25JLE1BQTRIO0FBQzVILE1BQTRIO0FBQzVILE1BQWtSO0FBQ2xSO0FBQ0E7O0FBRUE7O0FBRUEsNEJBQTRCLHlIQUFtQjtBQUMvQyx3QkFBd0Isc0lBQWE7O0FBRXJDLHVCQUF1QiwySEFBYTtBQUNwQztBQUNBLGlCQUFpQixtSEFBTTtBQUN2Qiw2QkFBNkIsMEhBQWtCOztBQUUvQyxhQUFhLDhIQUFHLENBQUMsMlBBQU87Ozs7QUFJNE47QUFDcFAsT0FBTyxpRUFBZSwyUEFBTyxJQUFJLGtRQUFjLEdBQUcsa1FBQWMsWUFBWSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvVXNlckxpc3Quc2Nzcz83ZWZlIl0sInNvdXJjZXNDb250ZW50IjpbIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9Vc2VyTGlzdC5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9Vc2VyTGlzdC5zY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/UserList.scss\n');
              }
            ),
            /***/
            "../../components/dropdownMenu/DropdownMenu.scss": (
              /*!*******************************************************!*\
                !*** ../../components/dropdownMenu/DropdownMenu.scss ***!
                \*******************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_DropdownMenu_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./DropdownMenu.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/dropdownMenu/DropdownMenu.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_DropdownMenu_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_DropdownMenu_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_DropdownMenu_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_DropdownMenu_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9kcm9wZG93bk1lbnUvRHJvcGRvd25NZW51LnNjc3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsTUFBc0g7QUFDdEgsTUFBNEc7QUFDNUcsTUFBbUg7QUFDbkgsTUFBc0k7QUFDdEksTUFBK0g7QUFDL0gsTUFBK0g7QUFDL0gsTUFBK1I7QUFDL1I7QUFDQTs7QUFFQTs7QUFFQSw0QkFBNEIseUhBQW1CO0FBQy9DLHdCQUF3QixzSUFBYTs7QUFFckMsdUJBQXVCLDJIQUFhO0FBQ3BDO0FBQ0EsaUJBQWlCLG1IQUFNO0FBQ3ZCLDZCQUE2QiwwSEFBa0I7O0FBRS9DLGFBQWEsOEhBQUcsQ0FBQywrUEFBTzs7OztBQUl5TztBQUNqUSxPQUFPLGlFQUFlLCtQQUFPLElBQUksc1FBQWMsR0FBRyxzUUFBYyxZQUFZLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9kcm9wZG93bk1lbnUvRHJvcGRvd25NZW51LnNjc3M/NDc3NSJdLCJzb3VyY2VzQ29udGVudCI6WyJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vRHJvcGRvd25NZW51LnNjc3NcIjtcbiAgICAgIFxuICAgICAgXG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0gPSBzdHlsZVRhZ1RyYW5zZm9ybUZuO1xub3B0aW9ucy5zZXRBdHRyaWJ1dGVzID0gc2V0QXR0cmlidXRlcztcblxuICAgICAgb3B0aW9ucy5pbnNlcnQgPSBpbnNlcnRGbi5iaW5kKG51bGwsIFwiaGVhZFwiKTtcbiAgICBcbm9wdGlvbnMuZG9tQVBJID0gZG9tQVBJO1xub3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7XG5cbnZhciB1cGRhdGUgPSBBUEkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgKiBmcm9tIFwiISEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzBdLnVzZVsyXSEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL0Ryb3Bkb3duTWVudS5zY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/dropdownMenu/DropdownMenu.scss\n');
              }
            ),
            /***/
            "../../components/footer/FooterCenter.scss": (
              /*!*************************************************!*\
                !*** ../../components/footer/FooterCenter.scss ***!
                \*************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_FooterCenter_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./FooterCenter.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/footer/FooterCenter.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_FooterCenter_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_FooterCenter_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_FooterCenter_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_FooterCenter_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9mb290ZXIvRm9vdGVyQ2VudGVyLnNjc3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsTUFBc0g7QUFDdEgsTUFBNEc7QUFDNUcsTUFBbUg7QUFDbkgsTUFBc0k7QUFDdEksTUFBK0g7QUFDL0gsTUFBK0g7QUFDL0gsTUFBK1I7QUFDL1I7QUFDQTs7QUFFQTs7QUFFQSw0QkFBNEIseUhBQW1CO0FBQy9DLHdCQUF3QixzSUFBYTs7QUFFckMsdUJBQXVCLDJIQUFhO0FBQ3BDO0FBQ0EsaUJBQWlCLG1IQUFNO0FBQ3ZCLDZCQUE2QiwwSEFBa0I7O0FBRS9DLGFBQWEsOEhBQUcsQ0FBQywrUEFBTzs7OztBQUl5TztBQUNqUSxPQUFPLGlFQUFlLCtQQUFPLElBQUksc1FBQWMsR0FBRyxzUUFBYyxZQUFZLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9mb290ZXIvRm9vdGVyQ2VudGVyLnNjc3M/MzQ0MyJdLCJzb3VyY2VzQ29udGVudCI6WyJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vRm9vdGVyQ2VudGVyLnNjc3NcIjtcbiAgICAgIFxuICAgICAgXG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0gPSBzdHlsZVRhZ1RyYW5zZm9ybUZuO1xub3B0aW9ucy5zZXRBdHRyaWJ1dGVzID0gc2V0QXR0cmlidXRlcztcblxuICAgICAgb3B0aW9ucy5pbnNlcnQgPSBpbnNlcnRGbi5iaW5kKG51bGwsIFwiaGVhZFwiKTtcbiAgICBcbm9wdGlvbnMuZG9tQVBJID0gZG9tQVBJO1xub3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7XG5cbnZhciB1cGRhdGUgPSBBUEkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgKiBmcm9tIFwiISEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzBdLnVzZVsyXSEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL0Zvb3RlckNlbnRlci5zY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/footer/FooterCenter.scss\n');
              }
            ),
            /***/
            "../../components/live-collaboration/LiveCollaborationTrigger.scss": (
              /*!*************************************************************************!*\
                !*** ../../components/live-collaboration/LiveCollaborationTrigger.scss ***!
                \*************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LiveCollaborationTrigger_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./LiveCollaborationTrigger.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/live-collaboration/LiveCollaborationTrigger.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LiveCollaborationTrigger_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LiveCollaborationTrigger_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LiveCollaborationTrigger_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LiveCollaborationTrigger_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9saXZlLWNvbGxhYm9yYXRpb24vTGl2ZUNvbGxhYm9yYXRpb25UcmlnZ2VyLnNjc3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsTUFBc0g7QUFDdEgsTUFBNEc7QUFDNUcsTUFBbUg7QUFDbkgsTUFBc0k7QUFDdEksTUFBK0g7QUFDL0gsTUFBK0g7QUFDL0gsTUFBMlM7QUFDM1M7QUFDQTs7QUFFQTs7QUFFQSw0QkFBNEIseUhBQW1CO0FBQy9DLHdCQUF3QixzSUFBYTs7QUFFckMsdUJBQXVCLDJIQUFhO0FBQ3BDO0FBQ0EsaUJBQWlCLG1IQUFNO0FBQ3ZCLDZCQUE2QiwwSEFBa0I7O0FBRS9DLGFBQWEsOEhBQUcsQ0FBQywyUUFBTzs7OztBQUlxUDtBQUM3USxPQUFPLGlFQUFlLDJRQUFPLElBQUksa1JBQWMsR0FBRyxrUkFBYyxZQUFZLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9saXZlLWNvbGxhYm9yYXRpb24vTGl2ZUNvbGxhYm9yYXRpb25UcmlnZ2VyLnNjc3M/NzM2OSJdLCJzb3VyY2VzQ29udGVudCI6WyJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vTGl2ZUNvbGxhYm9yYXRpb25UcmlnZ2VyLnNjc3NcIjtcbiAgICAgIFxuICAgICAgXG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0gPSBzdHlsZVRhZ1RyYW5zZm9ybUZuO1xub3B0aW9ucy5zZXRBdHRyaWJ1dGVzID0gc2V0QXR0cmlidXRlcztcblxuICAgICAgb3B0aW9ucy5pbnNlcnQgPSBpbnNlcnRGbi5iaW5kKG51bGwsIFwiaGVhZFwiKTtcbiAgICBcbm9wdGlvbnMuZG9tQVBJID0gZG9tQVBJO1xub3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7XG5cbnZhciB1cGRhdGUgPSBBUEkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgKiBmcm9tIFwiISEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzBdLnVzZVsyXSEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL0xpdmVDb2xsYWJvcmF0aW9uVHJpZ2dlci5zY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/live-collaboration/LiveCollaborationTrigger.scss\n');
              }
            ),
            /***/
            "../../components/main-menu/DefaultItems.scss": (
              /*!****************************************************!*\
                !*** ../../components/main-menu/DefaultItems.scss ***!
                \****************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_DefaultItems_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./DefaultItems.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/main-menu/DefaultItems.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_DefaultItems_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_DefaultItems_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_DefaultItems_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_DefaultItems_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9tYWluLW1lbnUvRGVmYXVsdEl0ZW1zLnNjc3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsTUFBc0g7QUFDdEgsTUFBNEc7QUFDNUcsTUFBbUg7QUFDbkgsTUFBc0k7QUFDdEksTUFBK0g7QUFDL0gsTUFBK0g7QUFDL0gsTUFBK1I7QUFDL1I7QUFDQTs7QUFFQTs7QUFFQSw0QkFBNEIseUhBQW1CO0FBQy9DLHdCQUF3QixzSUFBYTs7QUFFckMsdUJBQXVCLDJIQUFhO0FBQ3BDO0FBQ0EsaUJBQWlCLG1IQUFNO0FBQ3ZCLDZCQUE2QiwwSEFBa0I7O0FBRS9DLGFBQWEsOEhBQUcsQ0FBQywrUEFBTzs7OztBQUl5TztBQUNqUSxPQUFPLGlFQUFlLCtQQUFPLElBQUksc1FBQWMsR0FBRyxzUUFBYyxZQUFZLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9tYWluLW1lbnUvRGVmYXVsdEl0ZW1zLnNjc3M/ZmZmNCJdLCJzb3VyY2VzQ29udGVudCI6WyJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vRGVmYXVsdEl0ZW1zLnNjc3NcIjtcbiAgICAgIFxuICAgICAgXG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0gPSBzdHlsZVRhZ1RyYW5zZm9ybUZuO1xub3B0aW9ucy5zZXRBdHRyaWJ1dGVzID0gc2V0QXR0cmlidXRlcztcblxuICAgICAgb3B0aW9ucy5pbnNlcnQgPSBpbnNlcnRGbi5iaW5kKG51bGwsIFwiaGVhZFwiKTtcbiAgICBcbm9wdGlvbnMuZG9tQVBJID0gZG9tQVBJO1xub3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7XG5cbnZhciB1cGRhdGUgPSBBUEkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgKiBmcm9tIFwiISEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzBdLnVzZVsyXSEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL0RlZmF1bHRJdGVtcy5zY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/main-menu/DefaultItems.scss\n');
              }
            ),
            /***/
            "../../components/welcome-screen/WelcomeScreen.scss": (
              /*!**********************************************************!*\
                !*** ../../components/welcome-screen/WelcomeScreen.scss ***!
                \**********************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_WelcomeScreen_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./WelcomeScreen.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/welcome-screen/WelcomeScreen.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_WelcomeScreen_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_WelcomeScreen_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_WelcomeScreen_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_WelcomeScreen_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy93ZWxjb21lLXNjcmVlbi9XZWxjb21lU2NyZWVuLnNjc3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsTUFBc0g7QUFDdEgsTUFBNEc7QUFDNUcsTUFBbUg7QUFDbkgsTUFBc0k7QUFDdEksTUFBK0g7QUFDL0gsTUFBK0g7QUFDL0gsTUFBZ1M7QUFDaFM7QUFDQTs7QUFFQTs7QUFFQSw0QkFBNEIseUhBQW1CO0FBQy9DLHdCQUF3QixzSUFBYTs7QUFFckMsdUJBQXVCLDJIQUFhO0FBQ3BDO0FBQ0EsaUJBQWlCLG1IQUFNO0FBQ3ZCLDZCQUE2QiwwSEFBa0I7O0FBRS9DLGFBQWEsOEhBQUcsQ0FBQyxnUUFBTzs7OztBQUkwTztBQUNsUSxPQUFPLGlFQUFlLGdRQUFPLElBQUksdVFBQWMsR0FBRyx1UUFBYyxZQUFZLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy93ZWxjb21lLXNjcmVlbi9XZWxjb21lU2NyZWVuLnNjc3M/NjI2NCJdLCJzb3VyY2VzQ29udGVudCI6WyJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vV2VsY29tZVNjcmVlbi5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9XZWxjb21lU2NyZWVuLnNjc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/welcome-screen/WelcomeScreen.scss\n');
              }
            ),
            /***/
            "../../css/app.scss": (
              /*!**************************!*\
                !*** ../../css/app.scss ***!
                \**************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_app_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./app.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../css/app.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_app_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_app_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_app_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_app_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY3NzL2FwcC5zY3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLE1BQW1IO0FBQ25ILE1BQXlHO0FBQ3pHLE1BQWdIO0FBQ2hILE1BQW1JO0FBQ25JLE1BQTRIO0FBQzVILE1BQTRIO0FBQzVILE1BQTZRO0FBQzdRO0FBQ0E7O0FBRUE7O0FBRUEsNEJBQTRCLHlIQUFtQjtBQUMvQyx3QkFBd0Isc0lBQWE7O0FBRXJDLHVCQUF1QiwySEFBYTtBQUNwQztBQUNBLGlCQUFpQixtSEFBTTtBQUN2Qiw2QkFBNkIsMEhBQWtCOztBQUUvQyxhQUFhLDhIQUFHLENBQUMsc1BBQU87Ozs7QUFJdU47QUFDL08sT0FBTyxpRUFBZSxzUEFBTyxJQUFJLDZQQUFjLEdBQUcsNlBBQWMsWUFBWSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2Nzcy9hcHAuc2Nzcz9jZTI3Il0sInNvdXJjZXNDb250ZW50IjpbIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9hcHAuc2Nzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xuXG4gICAgICBvcHRpb25zLmluc2VydCA9IGluc2VydEZuLmJpbmQobnVsbCwgXCJoZWFkXCIpO1xuICAgIFxub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vYXBwLnNjc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../css/app.scss\n');
              }
            ),
            /***/
            "../../css/styles.scss": (
              /*!*****************************!*\
                !*** ../../css/styles.scss ***!
                \*****************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_styles_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./styles.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../css/styles.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_styles_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_styles_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_styles_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_styles_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY3NzL3N0eWxlcy5zY3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLE1BQW1IO0FBQ25ILE1BQXlHO0FBQ3pHLE1BQWdIO0FBQ2hILE1BQW1JO0FBQ25JLE1BQTRIO0FBQzVILE1BQTRIO0FBQzVILE1BQWdSO0FBQ2hSO0FBQ0E7O0FBRUE7O0FBRUEsNEJBQTRCLHlIQUFtQjtBQUMvQyx3QkFBd0Isc0lBQWE7O0FBRXJDLHVCQUF1QiwySEFBYTtBQUNwQztBQUNBLGlCQUFpQixtSEFBTTtBQUN2Qiw2QkFBNkIsMEhBQWtCOztBQUUvQyxhQUFhLDhIQUFHLENBQUMseVBBQU87Ozs7QUFJME47QUFDbFAsT0FBTyxpRUFBZSx5UEFBTyxJQUFJLGdRQUFjLEdBQUcsZ1FBQWMsWUFBWSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2Nzcy9zdHlsZXMuc2Nzcz9kYmEyIl0sInNvdXJjZXNDb250ZW50IjpbIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zdHlsZXMuc2Nzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xuXG4gICAgICBvcHRpb25zLmluc2VydCA9IGluc2VydEZuLmJpbmQobnVsbCwgXCJoZWFkXCIpO1xuICAgIFxub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vc3R5bGVzLnNjc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../css/styles.scss\n');
              }
            ),
            /***/
            "../../css/variables.module.scss": (
              /*!***************************************!*\
                !*** ../../css/variables.module.scss ***!
                \***************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_variables_module_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./variables.module.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../css/variables.module.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_variables_module_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_variables_module_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_variables_module_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_variables_module_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY3NzL3ZhcmlhYmxlcy5tb2R1bGUuc2Nzcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxNQUFtSDtBQUNuSCxNQUF5RztBQUN6RyxNQUFnSDtBQUNoSCxNQUFtSTtBQUNuSSxNQUE0SDtBQUM1SCxNQUE0SDtBQUM1SCxNQUEwUjtBQUMxUjtBQUNBOztBQUVBOztBQUVBLDRCQUE0Qix5SEFBbUI7QUFDL0Msd0JBQXdCLHNJQUFhOztBQUVyQyx1QkFBdUIsMkhBQWE7QUFDcEM7QUFDQSxpQkFBaUIsbUhBQU07QUFDdkIsNkJBQTZCLDBIQUFrQjs7QUFFL0MsYUFBYSw4SEFBRyxDQUFDLG1RQUFPOzs7O0FBSW9PO0FBQzVQLE9BQU8saUVBQWUsbVFBQU8sSUFBSSwwUUFBYyxHQUFHLDBRQUFjLFlBQVksRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jc3MvdmFyaWFibGVzLm1vZHVsZS5zY3NzP2Y5YmIiXSwic291cmNlc0NvbnRlbnQiOlsiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0Rm4gZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzBdLnVzZVsyXSEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL3ZhcmlhYmxlcy5tb2R1bGUuc2Nzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xuXG4gICAgICBvcHRpb25zLmluc2VydCA9IGluc2VydEZuLmJpbmQobnVsbCwgXCJoZWFkXCIpO1xuICAgIFxub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vdmFyaWFibGVzLm1vZHVsZS5zY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../css/variables.module.scss\n');
              }
            ),
            /***/
            "../../element/Hyperlink.scss": (
              /*!************************************!*\
                !*** ../../element/Hyperlink.scss ***!
                \************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Hyperlink_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./Hyperlink.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../element/Hyperlink.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Hyperlink_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Hyperlink_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Hyperlink_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Hyperlink_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZWxlbWVudC9IeXBlcmxpbmsuc2Nzcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxNQUFtSDtBQUNuSCxNQUF5RztBQUN6RyxNQUFnSDtBQUNoSCxNQUFtSTtBQUNuSSxNQUE0SDtBQUM1SCxNQUE0SDtBQUM1SCxNQUFtUjtBQUNuUjtBQUNBOztBQUVBOztBQUVBLDRCQUE0Qix5SEFBbUI7QUFDL0Msd0JBQXdCLHNJQUFhOztBQUVyQyx1QkFBdUIsMkhBQWE7QUFDcEM7QUFDQSxpQkFBaUIsbUhBQU07QUFDdkIsNkJBQTZCLDBIQUFrQjs7QUFFL0MsYUFBYSw4SEFBRyxDQUFDLDRQQUFPOzs7O0FBSTZOO0FBQ3JQLE9BQU8saUVBQWUsNFBBQU8sSUFBSSxtUUFBYyxHQUFHLG1RQUFjLFlBQVksRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9lbGVtZW50L0h5cGVybGluay5zY3NzPzE5YTEiXSwic291cmNlc0NvbnRlbnQiOlsiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0Rm4gZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzBdLnVzZVsyXSEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL0h5cGVybGluay5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9IeXBlcmxpbmsuc2Nzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../element/Hyperlink.scss\n');
              }
            ),
            /***/
            "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js": (
              /*!****************************************************************************!*\
                !*** ./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js ***!
                \****************************************************************************/
              /***/
              (module) => {
                "use strict";
                eval('\n\nvar stylesInDOM = [];\nfunction getIndexByIdentifier(identifier) {\n  var result = -1;\n  for (var i = 0; i < stylesInDOM.length; i++) {\n    if (stylesInDOM[i].identifier === identifier) {\n      result = i;\n      break;\n    }\n  }\n  return result;\n}\nfunction modulesToDom(list, options) {\n  var idCountMap = {};\n  var identifiers = [];\n  for (var i = 0; i < list.length; i++) {\n    var item = list[i];\n    var id = options.base ? item[0] + options.base : item[0];\n    var count = idCountMap[id] || 0;\n    var identifier = "".concat(id, " ").concat(count);\n    idCountMap[id] = count + 1;\n    var indexByIdentifier = getIndexByIdentifier(identifier);\n    var obj = {\n      css: item[1],\n      media: item[2],\n      sourceMap: item[3],\n      supports: item[4],\n      layer: item[5]\n    };\n    if (indexByIdentifier !== -1) {\n      stylesInDOM[indexByIdentifier].references++;\n      stylesInDOM[indexByIdentifier].updater(obj);\n    } else {\n      var updater = addElementStyle(obj, options);\n      options.byIndex = i;\n      stylesInDOM.splice(i, 0, {\n        identifier: identifier,\n        updater: updater,\n        references: 1\n      });\n    }\n    identifiers.push(identifier);\n  }\n  return identifiers;\n}\nfunction addElementStyle(obj, options) {\n  var api = options.domAPI(options);\n  api.update(obj);\n  var updater = function updater(newObj) {\n    if (newObj) {\n      if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {\n        return;\n      }\n      api.update(obj = newObj);\n    } else {\n      api.remove();\n    }\n  };\n  return updater;\n}\nmodule.exports = function (list, options) {\n  options = options || {};\n  list = list || [];\n  var lastIdentifiers = modulesToDom(list, options);\n  return function update(newList) {\n    newList = newList || [];\n    for (var i = 0; i < lastIdentifiers.length; i++) {\n      var identifier = lastIdentifiers[i];\n      var index = getIndexByIdentifier(identifier);\n      stylesInDOM[index].references--;\n    }\n    var newLastIdentifiers = modulesToDom(newList, options);\n    for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n      var _identifier = lastIdentifiers[_i];\n      var _index = getIndexByIdentifier(_identifier);\n      if (stylesInDOM[_index].references === 0) {\n        stylesInDOM[_index].updater();\n        stylesInDOM.splice(_index, 1);\n      }\n    }\n    lastIdentifiers = newLastIdentifiers;\n  };\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4420 characters]\n//# sourceURL=webpack-internal:///./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\n');
              }
            ),
            /***/
            "./node_modules/style-loader/dist/runtime/insertBySelector.js": (
              /*!********************************************************************!*\
                !*** ./node_modules/style-loader/dist/runtime/insertBySelector.js ***!
                \********************************************************************/
              /***/
              (module) => {
                "use strict";
                eval(`

var memo = {};

/* istanbul ignore next  */
function getTarget(target) {
  if (typeof memo[target] === "undefined") {
    var styleTarget = document.querySelector(target);

    // Special case to return head of iframe instead of iframe itself
    if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {
      try {
        // This will throw an exception if access to iframe is blocked
        // due to cross-origin restrictions
        styleTarget = styleTarget.contentDocument.head;
      } catch (e) {
        // istanbul ignore next
        styleTarget = null;
      }
    }
    memo[target] = styleTarget;
  }
  return memo[target];
}

/* istanbul ignore next  */
function insertBySelector(insert, style) {
  var target = getTarget(insert);
  if (!target) {
    throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");
  }
  target.appendChild(style);
}
module.exports = insertBySelector;//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzLmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanM/YjIxNCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxudmFyIG1lbW8gPSB7fTtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBnZXRUYXJnZXQodGFyZ2V0KSB7XG4gIGlmICh0eXBlb2YgbWVtb1t0YXJnZXRdID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgdmFyIHN0eWxlVGFyZ2V0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0YXJnZXQpO1xuXG4gICAgLy8gU3BlY2lhbCBjYXNlIHRvIHJldHVybiBoZWFkIG9mIGlmcmFtZSBpbnN0ZWFkIG9mIGlmcmFtZSBpdHNlbGZcbiAgICBpZiAod2luZG93LkhUTUxJRnJhbWVFbGVtZW50ICYmIHN0eWxlVGFyZ2V0IGluc3RhbmNlb2Ygd2luZG93LkhUTUxJRnJhbWVFbGVtZW50KSB7XG4gICAgICB0cnkge1xuICAgICAgICAvLyBUaGlzIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uIGlmIGFjY2VzcyB0byBpZnJhbWUgaXMgYmxvY2tlZFxuICAgICAgICAvLyBkdWUgdG8gY3Jvc3Mtb3JpZ2luIHJlc3RyaWN0aW9uc1xuICAgICAgICBzdHlsZVRhcmdldCA9IHN0eWxlVGFyZ2V0LmNvbnRlbnREb2N1bWVudC5oZWFkO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgICAgICBzdHlsZVRhcmdldCA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICAgIG1lbW9bdGFyZ2V0XSA9IHN0eWxlVGFyZ2V0O1xuICB9XG4gIHJldHVybiBtZW1vW3RhcmdldF07XG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gaW5zZXJ0QnlTZWxlY3RvcihpbnNlcnQsIHN0eWxlKSB7XG4gIHZhciB0YXJnZXQgPSBnZXRUYXJnZXQoaW5zZXJ0KTtcbiAgaWYgKCF0YXJnZXQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZG4ndCBmaW5kIGEgc3R5bGUgdGFyZ2V0LiBUaGlzIHByb2JhYmx5IG1lYW5zIHRoYXQgdGhlIHZhbHVlIGZvciB0aGUgJ2luc2VydCcgcGFyYW1ldGVyIGlzIGludmFsaWQuXCIpO1xuICB9XG4gIHRhcmdldC5hcHBlbmRDaGlsZChzdHlsZSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGluc2VydEJ5U2VsZWN0b3I7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9
//# sourceURL=webpack-internal:///./node_modules/style-loader/dist/runtime/insertBySelector.js
`);
              }
            ),
            /***/
            "./node_modules/style-loader/dist/runtime/insertStyleElement.js": (
              /*!**********************************************************************!*\
                !*** ./node_modules/style-loader/dist/runtime/insertStyleElement.js ***!
                \**********************************************************************/
              /***/
              (module) => {
                "use strict";
                eval('\n\n/* istanbul ignore next  */\nfunction insertStyleElement(options) {\n  var element = document.createElement("style");\n  options.setAttributes(element, options.attributes);\n  options.insert(element, options.options);\n  return element;\n}\nmodule.exports = insertStyleElement;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qcz9kZTZjIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIGluc2VydFN0eWxlRWxlbWVudChvcHRpb25zKSB7XG4gIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO1xuICBvcHRpb25zLnNldEF0dHJpYnV0ZXMoZWxlbWVudCwgb3B0aW9ucy5hdHRyaWJ1dGVzKTtcbiAgb3B0aW9ucy5pbnNlcnQoZWxlbWVudCwgb3B0aW9ucy5vcHRpb25zKTtcbiAgcmV0dXJuIGVsZW1lbnQ7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGluc2VydFN0eWxlRWxlbWVudDsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/style-loader/dist/runtime/insertStyleElement.js\n');
              }
            ),
            /***/
            "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js": (
              /*!**********************************************************************************!*\
                !*** ./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js ***!
                \**********************************************************************************/
              /***/
              (module, __unused_webpack_exports, __webpack_require__) => {
                "use strict";
                eval('\n\n/* istanbul ignore next  */\nfunction setAttributesWithoutAttributes(styleElement) {\n  var nonce =  true ? __webpack_require__.nc : 0;\n  if (nonce) {\n    styleElement.setAttribute("nonce", nonce);\n  }\n}\nmodule.exports = setAttributesWithoutAttributes;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBLGNBQWMsS0FBd0MsR0FBRyxzQkFBaUIsR0FBRyxDQUFJO0FBQ2pGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanM/ZGRjZSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBzZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMoc3R5bGVFbGVtZW50KSB7XG4gIHZhciBub25jZSA9IHR5cGVvZiBfX3dlYnBhY2tfbm9uY2VfXyAhPT0gXCJ1bmRlZmluZWRcIiA/IF9fd2VicGFja19ub25jZV9fIDogbnVsbDtcbiAgaWYgKG5vbmNlKSB7XG4gICAgc3R5bGVFbGVtZW50LnNldEF0dHJpYnV0ZShcIm5vbmNlXCIsIG5vbmNlKTtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBzZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXM7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\n');
              }
            ),
            /***/
            "./node_modules/style-loader/dist/runtime/styleDomAPI.js": (
              /*!***************************************************************!*\
                !*** ./node_modules/style-loader/dist/runtime/styleDomAPI.js ***!
                \***************************************************************/
              /***/
              (module) => {
                "use strict";
                eval('\n\n/* istanbul ignore next  */\nfunction apply(styleElement, options, obj) {\n  var css = "";\n  if (obj.supports) {\n    css += "@supports (".concat(obj.supports, ") {");\n  }\n  if (obj.media) {\n    css += "@media ".concat(obj.media, " {");\n  }\n  var needLayer = typeof obj.layer !== "undefined";\n  if (needLayer) {\n    css += "@layer".concat(obj.layer.length > 0 ? " ".concat(obj.layer) : "", " {");\n  }\n  css += obj.css;\n  if (needLayer) {\n    css += "}";\n  }\n  if (obj.media) {\n    css += "}";\n  }\n  if (obj.supports) {\n    css += "}";\n  }\n  var sourceMap = obj.sourceMap;\n  if (sourceMap && typeof btoa !== "undefined") {\n    css += "\\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), " */");\n  }\n\n  // For old IE\n  /* istanbul ignore if  */\n  options.styleTagTransform(css, styleElement, options.options);\n}\nfunction removeStyleElement(styleElement) {\n  // istanbul ignore if\n  if (styleElement.parentNode === null) {\n    return false;\n  }\n  styleElement.parentNode.removeChild(styleElement);\n}\n\n/* istanbul ignore next  */\nfunction domAPI(options) {\n  if (typeof document === "undefined") {\n    return {\n      update: function update() {},\n      remove: function remove() {}\n    };\n  }\n  var styleElement = options.insertStyleElement(options);\n  return {\n    update: function update(obj) {\n      apply(styleElement, options, obj);\n    },\n    remove: function remove() {\n      removeStyleElement(styleElement);\n    }\n  };\n}\nmodule.exports = domAPI;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtEQUFrRDtBQUNsRDtBQUNBO0FBQ0EsMENBQTBDO0FBQzFDO0FBQ0E7QUFDQTtBQUNBLGlGQUFpRjtBQUNqRjtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLHlEQUF5RDtBQUN6RDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzP2U0NzkiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gYXBwbHkoc3R5bGVFbGVtZW50LCBvcHRpb25zLCBvYmopIHtcbiAgdmFyIGNzcyA9IFwiXCI7XG4gIGlmIChvYmouc3VwcG9ydHMpIHtcbiAgICBjc3MgKz0gXCJAc3VwcG9ydHMgKFwiLmNvbmNhdChvYmouc3VwcG9ydHMsIFwiKSB7XCIpO1xuICB9XG4gIGlmIChvYmoubWVkaWEpIHtcbiAgICBjc3MgKz0gXCJAbWVkaWEgXCIuY29uY2F0KG9iai5tZWRpYSwgXCIge1wiKTtcbiAgfVxuICB2YXIgbmVlZExheWVyID0gdHlwZW9mIG9iai5sYXllciAhPT0gXCJ1bmRlZmluZWRcIjtcbiAgaWYgKG5lZWRMYXllcikge1xuICAgIGNzcyArPSBcIkBsYXllclwiLmNvbmNhdChvYmoubGF5ZXIubGVuZ3RoID4gMCA/IFwiIFwiLmNvbmNhdChvYmoubGF5ZXIpIDogXCJcIiwgXCIge1wiKTtcbiAgfVxuICBjc3MgKz0gb2JqLmNzcztcbiAgaWYgKG5lZWRMYXllcikge1xuICAgIGNzcyArPSBcIn1cIjtcbiAgfVxuICBpZiAob2JqLm1lZGlhKSB7XG4gICAgY3NzICs9IFwifVwiO1xuICB9XG4gIGlmIChvYmouc3VwcG9ydHMpIHtcbiAgICBjc3MgKz0gXCJ9XCI7XG4gIH1cbiAgdmFyIHNvdXJjZU1hcCA9IG9iai5zb3VyY2VNYXA7XG4gIGlmIChzb3VyY2VNYXAgJiYgdHlwZW9mIGJ0b2EgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICBjc3MgKz0gXCJcXG4vKiMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LFwiLmNvbmNhdChidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShzb3VyY2VNYXApKSkpLCBcIiAqL1wiKTtcbiAgfVxuXG4gIC8vIEZvciBvbGQgSUVcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICAqL1xuICBvcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtKGNzcywgc3R5bGVFbGVtZW50LCBvcHRpb25zLm9wdGlvbnMpO1xufVxuZnVuY3Rpb24gcmVtb3ZlU3R5bGVFbGVtZW50KHN0eWxlRWxlbWVudCkge1xuICAvLyBpc3RhbmJ1bCBpZ25vcmUgaWZcbiAgaWYgKHN0eWxlRWxlbWVudC5wYXJlbnROb2RlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHN0eWxlRWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHN0eWxlRWxlbWVudCk7XG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gZG9tQVBJKG9wdGlvbnMpIHtcbiAgaWYgKHR5cGVvZiBkb2N1bWVudCA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgIHJldHVybiB7XG4gICAgICB1cGRhdGU6IGZ1bmN0aW9uIHVwZGF0ZSgpIHt9LFxuICAgICAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUoKSB7fVxuICAgIH07XG4gIH1cbiAgdmFyIHN0eWxlRWxlbWVudCA9IG9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpO1xuICByZXR1cm4ge1xuICAgIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKG9iaikge1xuICAgICAgYXBwbHkoc3R5bGVFbGVtZW50LCBvcHRpb25zLCBvYmopO1xuICAgIH0sXG4gICAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUoKSB7XG4gICAgICByZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGVFbGVtZW50KTtcbiAgICB9XG4gIH07XG59XG5tb2R1bGUuZXhwb3J0cyA9IGRvbUFQSTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/style-loader/dist/runtime/styleDomAPI.js\n');
              }
            ),
            /***/
            "./node_modules/style-loader/dist/runtime/styleTagTransform.js": (
              /*!*********************************************************************!*\
                !*** ./node_modules/style-loader/dist/runtime/styleTagTransform.js ***!
                \*********************************************************************/
              /***/
              (module) => {
                "use strict";
                eval("\n\n/* istanbul ignore next  */\nfunction styleTagTransform(css, styleElement) {\n  if (styleElement.styleSheet) {\n    styleElement.styleSheet.cssText = css;\n  } else {\n    while (styleElement.firstChild) {\n      styleElement.removeChild(styleElement.firstChild);\n    }\n    styleElement.appendChild(document.createTextNode(css));\n  }\n}\nmodule.exports = styleTagTransform;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzPzFkZGUiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gc3R5bGVUYWdUcmFuc2Zvcm0oY3NzLCBzdHlsZUVsZW1lbnQpIHtcbiAgaWYgKHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0KSB7XG4gICAgc3R5bGVFbGVtZW50LnN0eWxlU2hlZXQuY3NzVGV4dCA9IGNzcztcbiAgfSBlbHNlIHtcbiAgICB3aGlsZSAoc3R5bGVFbGVtZW50LmZpcnN0Q2hpbGQpIHtcbiAgICAgIHN0eWxlRWxlbWVudC5yZW1vdmVDaGlsZChzdHlsZUVsZW1lbnQuZmlyc3RDaGlsZCk7XG4gICAgfVxuICAgIHN0eWxlRWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpKTtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBzdHlsZVRhZ1RyYW5zZm9ybTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/style-loader/dist/runtime/styleTagTransform.js\n");
              }
            ),
            /***/
            "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMUlEQVQ4T2NkYGAQYcAP3uCTZhw1gGGYhAGBZIA/nYDCgBDAm9BGDWAAJyRCgLaBCAAgXwixzAS0pgAAAABJRU5ErkJggg==": (
              /*!******************************************************************************************************************************************************************************!*\
                !*** data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMUlEQVQ4T2NkYGAQYcAP3uCTZhw1gGGYhAGBZIA/nYDCgBDAm9BGDWAAJyRCgLaBCAAgXwixzAS0pgAAAABJRU5ErkJggg== ***!
                \******************************************************************************************************************************************************************************/
              /***/
              (module2) => {
                "use strict";
                module2.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMUlEQVQ4T2NkYGAQYcAP3uCTZhw1gGGYhAGBZIA/nYDCgBDAm9BGDWAAJyRCgLaBCAAgXwixzAS0pgAAAABJRU5ErkJggg==";
              }
            ),
            /***/
            'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="292.4" height="292.4" viewBox="0 0 292 292"><path d="M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z"/></svg>': (
              /*!*************************************************************************************************************************************************************************************************************************************************************!*\
                !*** data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="292.4" height="292.4" viewBox="0 0 292 292"><path d="M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z"/></svg> ***!
                \*************************************************************************************************************************************************************************************************************************************************************/
              /***/
              (module2) => {
                "use strict";
                module2.exports = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="292.4" height="292.4" viewBox="0 0 292 292"><path d="M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z"/></svg>';
              }
            ),
            /***/
            'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="292.4" height="292.4" viewBox="0 0 292 292"><path fill="%23ced4da" d="M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z"/></svg>': (
              /*!******************************************************************************************************************************************************************************************************************************************************************************!*\
                !*** data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="292.4" height="292.4" viewBox="0 0 292 292"><path fill="%23ced4da" d="M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z"/></svg> ***!
                \******************************************************************************************************************************************************************************************************************************************************************************/
              /***/
              (module2) => {
                "use strict";
                module2.exports = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="292.4" height="292.4" viewBox="0 0 292 292"><path fill="%23ced4da" d="M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z"/></svg>';
              }
            ),
            /***/
            "../../../public/Assistant-Bold.woff2": (
              /*!********************************************!*\
                !*** ../../../public/Assistant-Bold.woff2 ***!
                \********************************************/
              /***/
              (module2, __unused_webpack_exports2, __webpack_require__2) => {
                "use strict";
                module2.exports = __webpack_require__2.p + "excalidraw-assets-dev/Assistant-Bold.woff2";
              }
            ),
            /***/
            "../../../public/Assistant-Medium.woff2": (
              /*!**********************************************!*\
                !*** ../../../public/Assistant-Medium.woff2 ***!
                \**********************************************/
              /***/
              (module2, __unused_webpack_exports2, __webpack_require__2) => {
                "use strict";
                module2.exports = __webpack_require__2.p + "excalidraw-assets-dev/Assistant-Medium.woff2";
              }
            ),
            /***/
            "../../../public/Assistant-Regular.woff2": (
              /*!***********************************************!*\
                !*** ../../../public/Assistant-Regular.woff2 ***!
                \***********************************************/
              /***/
              (module2, __unused_webpack_exports2, __webpack_require__2) => {
                "use strict";
                module2.exports = __webpack_require__2.p + "excalidraw-assets-dev/Assistant-Regular.woff2";
              }
            ),
            /***/
            "../../../public/Assistant-SemiBold.woff2": (
              /*!************************************************!*\
                !*** ../../../public/Assistant-SemiBold.woff2 ***!
                \************************************************/
              /***/
              (module2, __unused_webpack_exports2, __webpack_require__2) => {
                "use strict";
                module2.exports = __webpack_require__2.p + "excalidraw-assets-dev/Assistant-SemiBold.woff2";
              }
            ),
            /***/
            "../../../public/Cascadia.woff2": (
              /*!**************************************!*\
                !*** ../../../public/Cascadia.woff2 ***!
                \**************************************/
              /***/
              (module2, __unused_webpack_exports2, __webpack_require__2) => {
                "use strict";
                module2.exports = __webpack_require__2.p + "excalidraw-assets-dev/Cascadia.woff2";
              }
            ),
            /***/
            "../../../public/Virgil.woff2": (
              /*!************************************!*\
                !*** ../../../public/Virgil.woff2 ***!
                \************************************/
              /***/
              (module2, __unused_webpack_exports2, __webpack_require__2) => {
                "use strict";
                module2.exports = __webpack_require__2.p + "excalidraw-assets-dev/Virgil.woff2";
              }
            ),
            /***/
            "react": (
              /*!**************************************************************************************!*\
                !*** external {"root":"React","commonjs2":"react","commonjs":"react","amd":"react"} ***!
                \**************************************************************************************/
              /***/
              (module2) => {
                "use strict";
                module2.exports = __WEBPACK_EXTERNAL_MODULE_react__;
              }
            ),
            /***/
            "react-dom": (
              /*!*****************************************************************************************************!*\
                !*** external {"root":"ReactDOM","commonjs2":"react-dom","commonjs":"react-dom","amd":"react-dom"} ***!
                \*****************************************************************************************************/
              /***/
              (module2) => {
                "use strict";
                module2.exports = __WEBPACK_EXTERNAL_MODULE_react_dom__;
              }
            ),
            /***/
            "react/jsx-runtime": (
              /*!************************************************************************************************************************************!*\
                !*** external {"root":"ReactJSXRuntime","commonjs2":"react/jsx-runtime","commonjs":"react/jsx-runtime","amd":"react/jsx-runtime"} ***!
                \************************************************************************************************************************************/
              /***/
              (module2) => {
                "use strict";
                module2.exports = __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime__;
              }
            ),
            /***/
            "../../../node_modules/@babel/runtime/helpers/esm/extends.js": (
              /*!*******************************************************************!*\
                !*** ../../../node_modules/@babel/runtime/helpers/esm/extends.js ***!
                \*******************************************************************/
              /***/
              (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (/* binding */ _extends)\n/* harmony export */ });\nfunction _extends() {\n  _extends = Object.assign ? Object.assign.bind() : function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHMuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFlO0FBQ2Y7QUFDQSxvQkFBb0Isc0JBQXNCO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHMuanM/MDYyYiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfZXh0ZW5kcygpIHtcbiAgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbi5iaW5kKCkgOiBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07XG4gICAgICBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7XG4gICAgICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9O1xuICByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/@babel/runtime/helpers/esm/extends.js\n');
              }
            ),
            /***/
            "../../../node_modules/@floating-ui/core/dist/floating-ui.core.browser.mjs": (
              /*!*********************************************************************************!*\
                !*** ../../../node_modules/@floating-ui/core/dist/floating-ui.core.browser.mjs ***!
                \*********************************************************************************/
              /***/
              (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"arrow\": () => (/* binding */ arrow),\n/* harmony export */   \"autoPlacement\": () => (/* binding */ autoPlacement),\n/* harmony export */   \"computePosition\": () => (/* binding */ computePosition),\n/* harmony export */   \"detectOverflow\": () => (/* binding */ detectOverflow),\n/* harmony export */   \"flip\": () => (/* binding */ flip),\n/* harmony export */   \"hide\": () => (/* binding */ hide),\n/* harmony export */   \"inline\": () => (/* binding */ inline),\n/* harmony export */   \"limitShift\": () => (/* binding */ limitShift),\n/* harmony export */   \"offset\": () => (/* binding */ offset),\n/* harmony export */   \"rectToClientRect\": () => (/* binding */ rectToClientRect),\n/* harmony export */   \"shift\": () => (/* binding */ shift),\n/* harmony export */   \"size\": () => (/* binding */ size)\n/* harmony export */ });\nfunction getSide(placement) {\n  return placement.split('-')[0];\n}\n\nfunction getAlignment(placement) {\n  return placement.split('-')[1];\n}\n\nfunction getMainAxisFromPlacement(placement) {\n  return ['top', 'bottom'].includes(getSide(placement)) ? 'x' : 'y';\n}\n\nfunction getLengthFromAxis(axis) {\n  return axis === 'y' ? 'height' : 'width';\n}\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n  let {\n    reference,\n    floating\n  } = _ref;\n  const commonX = reference.x + reference.width / 2 - floating.width / 2;\n  const commonY = reference.y + reference.height / 2 - floating.height / 2;\n  const mainAxis = getMainAxisFromPlacement(placement);\n  const length = getLengthFromAxis(mainAxis);\n  const commonAlign = reference[length] / 2 - floating[length] / 2;\n  const side = getSide(placement);\n  const isVertical = mainAxis === 'x';\n  let coords;\n\n  switch (side) {\n    case 'top':\n      coords = {\n        x: commonX,\n        y: reference.y - floating.height\n      };\n      break;\n\n    case 'bottom':\n      coords = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n\n    case 'right':\n      coords = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n\n    case 'left':\n      coords = {\n        x: reference.x - floating.width,\n        y: commonY\n      };\n      break;\n\n    default:\n      coords = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n\n  switch (getAlignment(placement)) {\n    case 'start':\n      coords[mainAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n\n    case 'end':\n      coords[mainAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n  }\n\n  return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a reference element when it is given a certain positioning strategy.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\n\nconst computePosition = async (reference, floating, config) => {\n  const {\n    placement = 'bottom',\n    strategy = 'absolute',\n    middleware = [],\n    platform\n  } = config;\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n\n  {\n    if (platform == null) {\n      console.error(['Floating UI: `platform` property was not passed to config. If you', 'want to use Floating UI on the web, install @floating-ui/dom', 'instead of the /core package. Otherwise, you can create your own', '`platform`: https://floating-ui.com/docs/platform'].join(' '));\n    }\n\n    if (middleware.filter(_ref => {\n      let {\n        name\n      } = _ref;\n      return name === 'autoPlacement' || name === 'flip';\n    }).length > 1) {\n      throw new Error(['Floating UI: duplicate `flip` and/or `autoPlacement`', 'middleware detected. This will lead to an infinite loop. Ensure only', 'one of either has been passed to the `middleware` array.'].join(' '));\n    }\n  }\n\n  let rects = await platform.getElementRects({\n    reference,\n    floating,\n    strategy\n  });\n  let {\n    x,\n    y\n  } = computeCoordsFromPlacement(rects, placement, rtl);\n  let statefulPlacement = placement;\n  let middlewareData = {};\n  let resetCount = 0;\n\n  for (let i = 0; i < middleware.length; i++) {\n    const {\n      name,\n      fn\n    } = middleware[i];\n    const {\n      x: nextX,\n      y: nextY,\n      data,\n      reset\n    } = await fn({\n      x,\n      y,\n      initialPlacement: placement,\n      placement: statefulPlacement,\n      strategy,\n      middlewareData,\n      rects,\n      platform,\n      elements: {\n        reference,\n        floating\n      }\n    });\n    x = nextX != null ? nextX : x;\n    y = nextY != null ? nextY : y;\n    middlewareData = { ...middlewareData,\n      [name]: { ...middlewareData[name],\n        ...data\n      }\n    };\n\n    {\n      if (resetCount > 50) {\n        console.warn(['Floating UI: The middleware lifecycle appears to be running in an', 'infinite loop. This is usually caused by a `reset` continually', 'being returned without a break condition.'].join(' '));\n      }\n    }\n\n    if (reset && resetCount <= 50) {\n      resetCount++;\n\n      if (typeof reset === 'object') {\n        if (reset.placement) {\n          statefulPlacement = reset.placement;\n        }\n\n        if (reset.rects) {\n          rects = reset.rects === true ? await platform.getElementRects({\n            reference,\n            floating,\n            strategy\n          }) : reset.rects;\n        }\n\n        ({\n          x,\n          y\n        } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n      }\n\n      i = -1;\n      continue;\n    }\n  }\n\n  return {\n    x,\n    y,\n    placement: statefulPlacement,\n    strategy,\n    middlewareData\n  };\n};\n\nfunction expandPaddingObject(padding) {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0,\n    ...padding\n  };\n}\n\nfunction getSideObjectFromPadding(padding) {\n  return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n    top: padding,\n    right: padding,\n    bottom: padding,\n    left: padding\n  };\n}\n\nfunction rectToClientRect(rect) {\n  return { ...rect,\n    top: rect.y,\n    left: rect.x,\n    right: rect.x + rect.width,\n    bottom: rect.y + rect.height\n  };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(middlewareArguments, options) {\n  var _await$platform$isEle;\n\n  if (options === void 0) {\n    options = {};\n  }\n\n  const {\n    x,\n    y,\n    platform,\n    rects,\n    elements,\n    strategy\n  } = middlewareArguments;\n  const {\n    boundary = 'clippingAncestors',\n    rootBoundary = 'viewport',\n    elementContext = 'floating',\n    altBoundary = false,\n    padding = 0\n  } = options;\n  const paddingObject = getSideObjectFromPadding(padding);\n  const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n  const element = elements[altBoundary ? altContext : elementContext];\n  const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n    element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n    boundary,\n    rootBoundary,\n    strategy\n  }));\n  const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n    rect: elementContext === 'floating' ? { ...rects.floating,\n      x,\n      y\n    } : rects.reference,\n    offsetParent: await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating)),\n    strategy\n  }) : rects[elementContext]);\n  return {\n    top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n    bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n    left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n    right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n  };\n}\n\nconst min = Math.min;\nconst max = Math.max;\n\nfunction within(min$1, value, max$1) {\n  return max(min$1, min(value, max$1));\n}\n\n/**\n * Positions an inner element of the floating element such that it is centered\n * to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n  name: 'arrow',\n  options,\n\n  async fn(middlewareArguments) {\n    // Since `element` is required, we don't Partial<> the type\n    const {\n      element,\n      padding = 0\n    } = options != null ? options : {};\n    const {\n      x,\n      y,\n      placement,\n      rects,\n      platform\n    } = middlewareArguments;\n\n    if (element == null) {\n      {\n        console.warn('Floating UI: No `element` was passed to the `arrow` middleware.');\n      }\n\n      return {};\n    }\n\n    const paddingObject = getSideObjectFromPadding(padding);\n    const coords = {\n      x,\n      y\n    };\n    const axis = getMainAxisFromPlacement(placement);\n    const alignment = getAlignment(placement);\n    const length = getLengthFromAxis(axis);\n    const arrowDimensions = await platform.getDimensions(element);\n    const minProp = axis === 'y' ? 'top' : 'left';\n    const maxProp = axis === 'y' ? 'bottom' : 'right';\n    const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n    const startDiff = coords[axis] - rects.reference[axis];\n    const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n    let clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n\n    if (clientSize === 0) {\n      clientSize = rects.floating[length];\n    }\n\n    const centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the floating element if the center\n    // point is outside the floating element's bounds\n\n    const min = paddingObject[minProp];\n    const max = clientSize - arrowDimensions[length] - paddingObject[maxProp];\n    const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n    const offset = within(min, center, max); // Make sure that arrow points at the reference\n\n    const alignmentPadding = alignment === 'start' ? paddingObject[minProp] : paddingObject[maxProp];\n    const shouldAddOffset = alignmentPadding > 0 && center !== offset && rects.reference[length] <= rects.floating[length];\n    const alignmentOffset = shouldAddOffset ? center < min ? min - center : max - center : 0;\n    return {\n      [axis]: coords[axis] - alignmentOffset,\n      data: {\n        [axis]: offset,\n        centerOffset: center - offset\n      }\n    };\n  }\n\n});\n\nconst hash$1 = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nfunction getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, matched => hash$1[matched]);\n}\n\nfunction getAlignmentSides(placement, rects, rtl) {\n  if (rtl === void 0) {\n    rtl = false;\n  }\n\n  const alignment = getAlignment(placement);\n  const mainAxis = getMainAxisFromPlacement(placement);\n  const length = getLengthFromAxis(mainAxis);\n  let mainAlignmentSide = mainAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n\n  if (rects.reference[length] > rects.floating[length]) {\n    mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n  }\n\n  return {\n    main: mainAlignmentSide,\n    cross: getOppositePlacement(mainAlignmentSide)\n  };\n}\n\nconst hash = {\n  start: 'end',\n  end: 'start'\n};\nfunction getOppositeAlignmentPlacement(placement) {\n  return placement.replace(/start|end/g, matched => hash[matched]);\n}\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst allPlacements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-start\", side + \"-end\"), []);\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n  const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n  return allowedPlacementsSortedByAlignment.filter(placement => {\n    if (alignment) {\n      return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n    }\n\n    return true;\n  });\n}\n\n/**\n * Automatically chooses the `placement` which has the most space available.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  return {\n    name: 'autoPlacement',\n    options,\n\n    async fn(middlewareArguments) {\n      var _middlewareData$autoP, _middlewareData$autoP2, _middlewareData$autoP3, _middlewareData$autoP4, _placementsSortedByLe;\n\n      const {\n        x,\n        y,\n        rects,\n        middlewareData,\n        placement,\n        platform,\n        elements\n      } = middlewareArguments;\n      const {\n        alignment = null,\n        allowedPlacements = allPlacements,\n        autoAlignment = true,\n        ...detectOverflowOptions\n      } = options;\n      const placements = getPlacementList(alignment, autoAlignment, allowedPlacements);\n      const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);\n      const currentIndex = (_middlewareData$autoP = (_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.index) != null ? _middlewareData$autoP : 0;\n      const currentPlacement = placements[currentIndex];\n\n      if (currentPlacement == null) {\n        return {};\n      }\n\n      const {\n        main,\n        cross\n      } = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))); // Make `computeCoords` start from the right place\n\n      if (placement !== currentPlacement) {\n        return {\n          x,\n          y,\n          reset: {\n            placement: placements[0]\n          }\n        };\n      }\n\n      const currentOverflows = [overflow[getSide(currentPlacement)], overflow[main], overflow[cross]];\n      const allOverflows = [...((_middlewareData$autoP3 = (_middlewareData$autoP4 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP4.overflows) != null ? _middlewareData$autoP3 : []), {\n        placement: currentPlacement,\n        overflows: currentOverflows\n      }];\n      const nextPlacement = placements[currentIndex + 1]; // There are more placements to check\n\n      if (nextPlacement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: nextPlacement\n          }\n        };\n      }\n\n      const placementsSortedByLeastOverflow = allOverflows.slice().sort((a, b) => a.overflows[0] - b.overflows[0]);\n      const placementThatFitsOnAllSides = (_placementsSortedByLe = placementsSortedByLeastOverflow.find(_ref => {\n        let {\n          overflows\n        } = _ref;\n        return overflows.every(overflow => overflow <= 0);\n      })) == null ? void 0 : _placementsSortedByLe.placement;\n      const resetPlacement = placementThatFitsOnAllSides != null ? placementThatFitsOnAllSides : placementsSortedByLeastOverflow[0].placement;\n\n      if (resetPlacement !== placement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: resetPlacement\n          }\n        };\n      }\n\n      return {};\n    }\n\n  };\n};\n\nfunction getExpandedPlacements(placement) {\n  const oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\n\n/**\n * Changes the placement of the floating element to one that will fit if the\n * initially specified `placement` does not.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  return {\n    name: 'flip',\n    options,\n\n    async fn(middlewareArguments) {\n      var _middlewareData$flip;\n\n      const {\n        placement,\n        middlewareData,\n        rects,\n        initialPlacement,\n        platform,\n        elements\n      } = middlewareArguments;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true,\n        fallbackPlacements: specifiedFallbackPlacements,\n        fallbackStrategy = 'bestFit',\n        flipAlignment = true,\n        ...detectOverflowOptions\n      } = options;\n      const side = getSide(placement);\n      const isBasePlacement = side === initialPlacement;\n      const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n      const placements = [initialPlacement, ...fallbackPlacements];\n      const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);\n      const overflows = [];\n      let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n\n      if (checkMainAxis) {\n        overflows.push(overflow[side]);\n      }\n\n      if (checkCrossAxis) {\n        const {\n          main,\n          cross\n        } = getAlignmentSides(placement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n        overflows.push(overflow[main], overflow[cross]);\n      }\n\n      overflowsData = [...overflowsData, {\n        placement,\n        overflows\n      }]; // One or more sides is overflowing\n\n      if (!overflows.every(side => side <= 0)) {\n        var _middlewareData$flip$, _middlewareData$flip2;\n\n        const nextIndex = ((_middlewareData$flip$ = (_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) != null ? _middlewareData$flip$ : 0) + 1;\n        const nextPlacement = placements[nextIndex];\n\n        if (nextPlacement) {\n          // Try next placement and re-run the lifecycle\n          return {\n            data: {\n              index: nextIndex,\n              overflows: overflowsData\n            },\n            reset: {\n              placement: nextPlacement\n            }\n          };\n        }\n\n        let resetPlacement = 'bottom';\n\n        switch (fallbackStrategy) {\n          case 'bestFit':\n            {\n              var _overflowsData$map$so;\n\n              const placement = (_overflowsData$map$so = overflowsData.map(d => [d, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$map$so[0].placement;\n\n              if (placement) {\n                resetPlacement = placement;\n              }\n\n              break;\n            }\n\n          case 'initialPlacement':\n            resetPlacement = initialPlacement;\n            break;\n        }\n\n        if (placement !== resetPlacement) {\n          return {\n            reset: {\n              placement: resetPlacement\n            }\n          };\n        }\n      }\n\n      return {};\n    }\n\n  };\n};\n\nfunction getSideOffsets(overflow, rect) {\n  return {\n    top: overflow.top - rect.height,\n    right: overflow.right - rect.width,\n    bottom: overflow.bottom - rect.height,\n    left: overflow.left - rect.width\n  };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n  return sides.some(side => overflow[side] >= 0);\n}\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (_temp) {\n  let {\n    strategy = 'referenceHidden',\n    ...detectOverflowOptions\n  } = _temp === void 0 ? {} : _temp;\n  return {\n    name: 'hide',\n\n    async fn(middlewareArguments) {\n      const {\n        rects\n      } = middlewareArguments;\n\n      switch (strategy) {\n        case 'referenceHidden':\n          {\n            const overflow = await detectOverflow(middlewareArguments, { ...detectOverflowOptions,\n              elementContext: 'reference'\n            });\n            const offsets = getSideOffsets(overflow, rects.reference);\n            return {\n              data: {\n                referenceHiddenOffsets: offsets,\n                referenceHidden: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n\n        case 'escaped':\n          {\n            const overflow = await detectOverflow(middlewareArguments, { ...detectOverflowOptions,\n              altBoundary: true\n            });\n            const offsets = getSideOffsets(overflow, rects.floating);\n            return {\n              data: {\n                escapedOffsets: offsets,\n                escaped: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n\n        default:\n          {\n            return {};\n          }\n      }\n    }\n\n  };\n};\n\nasync function convertValueToCoords(middlewareArguments, value) {\n  const {\n    placement,\n    platform,\n    elements\n  } = middlewareArguments;\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n  const side = getSide(placement);\n  const alignment = getAlignment(placement);\n  const isVertical = getMainAxisFromPlacement(placement) === 'x';\n  const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n  const crossAxisMulti = rtl && isVertical ? -1 : 1;\n  const rawValue = typeof value === 'function' ? value(middlewareArguments) : value; // eslint-disable-next-line prefer-const\n\n  let {\n    mainAxis,\n    crossAxis,\n    alignmentAxis\n  } = typeof rawValue === 'number' ? {\n    mainAxis: rawValue,\n    crossAxis: 0,\n    alignmentAxis: null\n  } : {\n    mainAxis: 0,\n    crossAxis: 0,\n    alignmentAxis: null,\n    ...rawValue\n  };\n\n  if (alignment && typeof alignmentAxis === 'number') {\n    crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n  }\n\n  return isVertical ? {\n    x: crossAxis * crossAxisMulti,\n    y: mainAxis * mainAxisMulti\n  } : {\n    x: mainAxis * mainAxisMulti,\n    y: crossAxis * crossAxisMulti\n  };\n}\n/**\n * Displaces the floating element from its reference element.\n * @see https://floating-ui.com/docs/offset\n */\n\nconst offset = function (value) {\n  if (value === void 0) {\n    value = 0;\n  }\n\n  return {\n    name: 'offset',\n    options: value,\n\n    async fn(middlewareArguments) {\n      const {\n        x,\n        y\n      } = middlewareArguments;\n      const diffCoords = await convertValueToCoords(middlewareArguments, value);\n      return {\n        x: x + diffCoords.x,\n        y: y + diffCoords.y,\n        data: diffCoords\n      };\n    }\n\n  };\n};\n\nfunction getCrossAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}\n\n/**\n * Shifts the floating element in order to keep it in view when it will overflow\n * a clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  return {\n    name: 'shift',\n    options,\n\n    async fn(middlewareArguments) {\n      const {\n        x,\n        y,\n        placement\n      } = middlewareArguments;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = false,\n        limiter = {\n          fn: _ref => {\n            let {\n              x,\n              y\n            } = _ref;\n            return {\n              x,\n              y\n            };\n          }\n        },\n        ...detectOverflowOptions\n      } = options;\n      const coords = {\n        x,\n        y\n      };\n      const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);\n      const mainAxis = getMainAxisFromPlacement(getSide(placement));\n      const crossAxis = getCrossAxis(mainAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n\n      if (checkMainAxis) {\n        const minSide = mainAxis === 'y' ? 'top' : 'left';\n        const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n        const min = mainAxisCoord + overflow[minSide];\n        const max = mainAxisCoord - overflow[maxSide];\n        mainAxisCoord = within(min, mainAxisCoord, max);\n      }\n\n      if (checkCrossAxis) {\n        const minSide = crossAxis === 'y' ? 'top' : 'left';\n        const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n        const min = crossAxisCoord + overflow[minSide];\n        const max = crossAxisCoord - overflow[maxSide];\n        crossAxisCoord = within(min, crossAxisCoord, max);\n      }\n\n      const limitedCoords = limiter.fn({ ...middlewareArguments,\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      });\n      return { ...limitedCoords,\n        data: {\n          x: limitedCoords.x - x,\n          y: limitedCoords.y - y\n        }\n      };\n    }\n\n  };\n};\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  return {\n    options,\n\n    fn(middlewareArguments) {\n      const {\n        x,\n        y,\n        placement,\n        rects,\n        middlewareData\n      } = middlewareArguments;\n      const {\n        offset = 0,\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true\n      } = options;\n      const coords = {\n        x,\n        y\n      };\n      const mainAxis = getMainAxisFromPlacement(placement);\n      const crossAxis = getCrossAxis(mainAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      const rawOffset = typeof offset === 'function' ? offset({ ...rects,\n        placement\n      }) : offset;\n      const computedOffset = typeof rawOffset === 'number' ? {\n        mainAxis: rawOffset,\n        crossAxis: 0\n      } : {\n        mainAxis: 0,\n        crossAxis: 0,\n        ...rawOffset\n      };\n\n      if (checkMainAxis) {\n        const len = mainAxis === 'y' ? 'height' : 'width';\n        const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n        const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n\n        if (mainAxisCoord < limitMin) {\n          mainAxisCoord = limitMin;\n        } else if (mainAxisCoord > limitMax) {\n          mainAxisCoord = limitMax;\n        }\n      }\n\n      if (checkCrossAxis) {\n        var _middlewareData$offse, _middlewareData$offse2, _middlewareData$offse3, _middlewareData$offse4;\n\n        const len = mainAxis === 'y' ? 'width' : 'height';\n        const isOriginSide = ['top', 'left'].includes(getSide(placement));\n        const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? (_middlewareData$offse = (_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) != null ? _middlewareData$offse : 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n        const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : (_middlewareData$offse3 = (_middlewareData$offse4 = middlewareData.offset) == null ? void 0 : _middlewareData$offse4[crossAxis]) != null ? _middlewareData$offse3 : 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n\n        if (crossAxisCoord < limitMin) {\n          crossAxisCoord = limitMin;\n        } else if (crossAxisCoord > limitMax) {\n          crossAxisCoord = limitMax;\n        }\n      }\n\n      return {\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      };\n    }\n\n  };\n};\n\n/**\n * Provides data to change the size of the floating element. For instance,\n * prevent it from overflowing its clipping boundary or match the width of the\n * reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  return {\n    name: 'size',\n    options,\n\n    async fn(middlewareArguments) {\n      const {\n        placement,\n        rects,\n        platform,\n        elements\n      } = middlewareArguments;\n      const {\n        apply,\n        ...detectOverflowOptions\n      } = options;\n      const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);\n      const side = getSide(placement);\n      const alignment = getAlignment(placement);\n      let heightSide;\n      let widthSide;\n\n      if (side === 'top' || side === 'bottom') {\n        heightSide = side;\n        widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n      } else {\n        widthSide = side;\n        heightSide = alignment === 'end' ? 'top' : 'bottom';\n      }\n\n      const xMin = max(overflow.left, 0);\n      const xMax = max(overflow.right, 0);\n      const yMin = max(overflow.top, 0);\n      const yMax = max(overflow.bottom, 0);\n      const dimensions = {\n        availableHeight: rects.floating.height - (['left', 'right'].includes(placement) ? 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom)) : overflow[heightSide]),\n        availableWidth: rects.floating.width - (['top', 'bottom'].includes(placement) ? 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right)) : overflow[widthSide])\n      };\n      const prevDimensions = await platform.getDimensions(elements.floating);\n      apply == null ? void 0 : apply({ ...middlewareArguments,\n        ...dimensions\n      });\n      const nextDimensions = await platform.getDimensions(elements.floating);\n\n      if (prevDimensions.width !== nextDimensions.width || prevDimensions.height !== nextDimensions.height) {\n        return {\n          reset: {\n            rects: true\n          }\n        };\n      }\n\n      return {};\n    }\n\n  };\n};\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  return {\n    name: 'inline',\n    options,\n\n    async fn(middlewareArguments) {\n      var _await$platform$getCl;\n\n      const {\n        placement,\n        elements,\n        rects,\n        platform,\n        strategy\n      } = middlewareArguments; // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n      // ClientRect's bounds, despite the event listener being triggered. A\n      // padding of 2 seems to handle this issue.\n\n      const {\n        padding = 2,\n        x,\n        y\n      } = options;\n      const fallback = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n        rect: rects.reference,\n        offsetParent: await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating)),\n        strategy\n      }) : rects.reference);\n      const clientRects = (_await$platform$getCl = await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) != null ? _await$platform$getCl : [];\n      const paddingObject = getSideObjectFromPadding(padding);\n\n      function getBoundingClientRect() {\n        // There are two rects and they are disjoined\n        if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n          var _clientRects$find;\n\n          // Find the first rect in which the point is fully inside\n          return (_clientRects$find = clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom)) != null ? _clientRects$find : fallback;\n        } // There are 2 or more connected rects\n\n\n        if (clientRects.length >= 2) {\n          if (getMainAxisFromPlacement(placement) === 'x') {\n            const firstRect = clientRects[0];\n            const lastRect = clientRects[clientRects.length - 1];\n            const isTop = getSide(placement) === 'top';\n            const top = firstRect.top;\n            const bottom = lastRect.bottom;\n            const left = isTop ? firstRect.left : lastRect.left;\n            const right = isTop ? firstRect.right : lastRect.right;\n            const width = right - left;\n            const height = bottom - top;\n            return {\n              top,\n              bottom,\n              left,\n              right,\n              width,\n              height,\n              x: left,\n              y: top\n            };\n          }\n\n          const isLeftSide = getSide(placement) === 'left';\n          const maxRight = max(...clientRects.map(rect => rect.right));\n          const minLeft = min(...clientRects.map(rect => rect.left));\n          const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n          const top = measureRects[0].top;\n          const bottom = measureRects[measureRects.length - 1].bottom;\n          const left = minLeft;\n          const right = maxRight;\n          const width = right - left;\n          const height = bottom - top;\n          return {\n            top,\n            bottom,\n            left,\n            right,\n            width,\n            height,\n            x: left,\n            y: top\n          };\n        }\n\n        return fallback;\n      }\n\n      const resetRects = await platform.getElementRects({\n        reference: {\n          getBoundingClientRect\n        },\n        floating: elements.floating,\n        strategy\n      });\n\n      if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n        return {\n          reset: {\n            rects: resetRects\n          }\n        };\n      }\n\n      return {};\n    }\n\n  };\n};\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 54172 characters]\n//# sourceURL=webpack-internal:///../../../node_modules/@floating-ui/core/dist/floating-ui.core.browser.mjs\n");
              }
            ),
            /***/
            "../../../node_modules/@floating-ui/dom/dist/floating-ui.dom.browser.mjs": (
              /*!*******************************************************************************!*\
                !*** ../../../node_modules/@floating-ui/dom/dist/floating-ui.dom.browser.mjs ***!
                \*******************************************************************************/
              /***/
              (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "arrow": () => (/* reexport safe */ _floating_ui_core__WEBPACK_IMPORTED_MODULE_0__.arrow),
/* harmony export */   "autoPlacement": () => (/* reexport safe */ _floating_ui_core__WEBPACK_IMPORTED_MODULE_0__.autoPlacement),
/* harmony export */   "autoUpdate": () => (/* binding */ autoUpdate),
/* harmony export */   "computePosition": () => (/* binding */ computePosition),
/* harmony export */   "detectOverflow": () => (/* reexport safe */ _floating_ui_core__WEBPACK_IMPORTED_MODULE_0__.detectOverflow),
/* harmony export */   "flip": () => (/* reexport safe */ _floating_ui_core__WEBPACK_IMPORTED_MODULE_0__.flip),
/* harmony export */   "getOverflowAncestors": () => (/* binding */ getOverflowAncestors),
/* harmony export */   "hide": () => (/* reexport safe */ _floating_ui_core__WEBPACK_IMPORTED_MODULE_0__.hide),
/* harmony export */   "inline": () => (/* reexport safe */ _floating_ui_core__WEBPACK_IMPORTED_MODULE_0__.inline),
/* harmony export */   "limitShift": () => (/* reexport safe */ _floating_ui_core__WEBPACK_IMPORTED_MODULE_0__.limitShift),
/* harmony export */   "offset": () => (/* reexport safe */ _floating_ui_core__WEBPACK_IMPORTED_MODULE_0__.offset),
/* harmony export */   "shift": () => (/* reexport safe */ _floating_ui_core__WEBPACK_IMPORTED_MODULE_0__.shift),
/* harmony export */   "size": () => (/* reexport safe */ _floating_ui_core__WEBPACK_IMPORTED_MODULE_0__.size)
/* harmony export */ });
/* harmony import */ var _floating_ui_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @floating-ui/core */ "../../../node_modules/@floating-ui/core/dist/floating-ui.core.browser.mjs");



function isWindow(value) {
  return value && value.document && value.location && value.alert && value.setInterval;
}
function getWindow(node) {
  if (node == null) {
    return window;
  }

  if (!isWindow(node)) {
    const ownerDocument = node.ownerDocument;
    return ownerDocument ? ownerDocument.defaultView || window : window;
  }

  return node;
}

function getComputedStyle$1(element) {
  return getWindow(element).getComputedStyle(element);
}

function getNodeName(node) {
  return isWindow(node) ? '' : node ? (node.nodeName || '').toLowerCase() : '';
}

function getUAString() {
  const uaData = navigator.userAgentData;

  if (uaData != null && uaData.brands) {
    return uaData.brands.map(item => item.brand + "/" + item.version).join(' ');
  }

  return navigator.userAgent;
}

function isHTMLElement(value) {
  return value instanceof getWindow(value).HTMLElement;
}
function isElement(value) {
  return value instanceof getWindow(value).Element;
}
function isNode(value) {
  return value instanceof getWindow(value).Node;
}
function isShadowRoot(node) {
  // Browsers without \`ShadowRoot\` support
  if (typeof ShadowRoot === 'undefined') {
    return false;
  }

  const OwnElement = getWindow(node).ShadowRoot;
  return node instanceof OwnElement || node instanceof ShadowRoot;
}
function isOverflowElement(element) {
  // Firefox wants us to check \`-x\` and \`-y\` variations as well
  const {
    overflow,
    overflowX,
    overflowY
  } = getComputedStyle$1(element);
  return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);
}
function isTableElement(element) {
  return ['table', 'td', 'th'].includes(getNodeName(element));
}
function isContainingBlock(element) {
  // TODO: Try and use feature detection here instead
  const isFirefox = /firefox/i.test(getUAString());
  const css = getComputedStyle$1(element); // This is non-exhaustive but covers the most common CSS properties that
  // create a containing block.
  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block

  return css.transform !== 'none' || css.perspective !== 'none' || // @ts-ignore (TS 4.1 compat)
  css.contain === 'paint' || ['transform', 'perspective'].includes(css.willChange) || isFirefox && css.willChange === 'filter' || isFirefox && (css.filter ? css.filter !== 'none' : false);
}
function isLayoutViewport() {
  // Not Safari
  return !/^((?!chrome|android).)*safari/i.test(getUAString()); // Feature detection for this fails in various ways
  // \u2022 Always-visible scrollbar or not
  // \u2022 Width of <html>, etc.
  // const vV = win.visualViewport;
  // return vV ? Math.abs(win.innerWidth / vV.scale - vV.width) < 0.5 : true;
}

const min = Math.min;
const max = Math.max;
const round = Math.round;

function getBoundingClientRect(element, includeScale, isFixedStrategy) {
  var _win$visualViewport$o, _win$visualViewport, _win$visualViewport$o2, _win$visualViewport2;

  if (includeScale === void 0) {
    includeScale = false;
  }

  if (isFixedStrategy === void 0) {
    isFixedStrategy = false;
  }

  const clientRect = element.getBoundingClientRect();
  let scaleX = 1;
  let scaleY = 1;

  if (includeScale && isHTMLElement(element)) {
    scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;
    scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;
  }

  const win = isElement(element) ? getWindow(element) : window;
  const addVisualOffsets = !isLayoutViewport() && isFixedStrategy;
  const x = (clientRect.left + (addVisualOffsets ? (_win$visualViewport$o = (_win$visualViewport = win.visualViewport) == null ? void 0 : _win$visualViewport.offsetLeft) != null ? _win$visualViewport$o : 0 : 0)) / scaleX;
  const y = (clientRect.top + (addVisualOffsets ? (_win$visualViewport$o2 = (_win$visualViewport2 = win.visualViewport) == null ? void 0 : _win$visualViewport2.offsetTop) != null ? _win$visualViewport$o2 : 0 : 0)) / scaleY;
  const width = clientRect.width / scaleX;
  const height = clientRect.height / scaleY;
  return {
    width,
    height,
    top: y,
    right: x + width,
    bottom: y + height,
    left: x,
    x,
    y
  };
}

function getDocumentElement(node) {
  return ((isNode(node) ? node.ownerDocument : node.document) || window.document).documentElement;
}

function getNodeScroll(element) {
  if (isElement(element)) {
    return {
      scrollLeft: element.scrollLeft,
      scrollTop: element.scrollTop
    };
  }

  return {
    scrollLeft: element.pageXOffset,
    scrollTop: element.pageYOffset
  };
}

function getWindowScrollBarX(element) {
  // If <html> has a CSS width greater than the viewport, then this will be
  // incorrect for RTL.
  return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft;
}

function isScaled(element) {
  const rect = getBoundingClientRect(element);
  return round(rect.width) !== element.offsetWidth || round(rect.height) !== element.offsetHeight;
}

function getRectRelativeToOffsetParent(element, offsetParent, strategy) {
  const isOffsetParentAnElement = isHTMLElement(offsetParent);
  const documentElement = getDocumentElement(offsetParent);
  const rect = getBoundingClientRect(element, // @ts-ignore - checked above (TS 4.1 compat)
  isOffsetParentAnElement && isScaled(offsetParent), strategy === 'fixed');
  let scroll = {
    scrollLeft: 0,
    scrollTop: 0
  };
  const offsets = {
    x: 0,
    y: 0
  };

  if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== 'fixed') {
    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {
      scroll = getNodeScroll(offsetParent);
    }

    if (isHTMLElement(offsetParent)) {
      const offsetRect = getBoundingClientRect(offsetParent, true);
      offsets.x = offsetRect.x + offsetParent.clientLeft;
      offsets.y = offsetRect.y + offsetParent.clientTop;
    } else if (documentElement) {
      offsets.x = getWindowScrollBarX(documentElement);
    }
  }

  return {
    x: rect.left + scroll.scrollLeft - offsets.x,
    y: rect.top + scroll.scrollTop - offsets.y,
    width: rect.width,
    height: rect.height
  };
}

function getParentNode(node) {
  if (getNodeName(node) === 'html') {
    return node;
  }

  return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle
    // @ts-ignore
    node.assignedSlot || // step into the shadow DOM of the parent of a slotted node
    node.parentNode || ( // DOM Element detected
    isShadowRoot(node) ? node.host : null) || // ShadowRoot detected
    getDocumentElement(node) // fallback

  );
}

function getTrueOffsetParent(element) {
  if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {
    return null;
  }

  return element.offsetParent;
}

function getContainingBlock(element) {
  let currentNode = getParentNode(element);

  if (isShadowRoot(currentNode)) {
    currentNode = currentNode.host;
  }

  while (isHTMLElement(currentNode) && !['html', 'body'].includes(getNodeName(currentNode))) {
    if (isContainingBlock(currentNode)) {
      return currentNode;
    } else {
      currentNode = currentNode.parentNode;
    }
  }

  return null;
} // Gets the closest ancestor positioned element. Handles some edge cases,
// such as table ancestors and cross browser bugs.


function getOffsetParent(element) {
  const window = getWindow(element);
  let offsetParent = getTrueOffsetParent(element);

  while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {
    offsetParent = getTrueOffsetParent(offsetParent);
  }

  if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static' && !isContainingBlock(offsetParent))) {
    return window;
  }

  return offsetParent || getContainingBlock(element) || window;
}

function getDimensions(element) {
  if (isHTMLElement(element)) {
    return {
      width: element.offsetWidth,
      height: element.offsetHeight
    };
  }

  const rect = getBoundingClientRect(element);
  return {
    width: rect.width,
    height: rect.height
  };
}

function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {
  let {
    rect,
    offsetParent,
    strategy
  } = _ref;
  const isOffsetParentAnElement = isHTMLElement(offsetParent);
  const documentElement = getDocumentElement(offsetParent);

  if (offsetParent === documentElement) {
    return rect;
  }

  let scroll = {
    scrollLeft: 0,
    scrollTop: 0
  };
  const offsets = {
    x: 0,
    y: 0
  };

  if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== 'fixed') {
    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {
      scroll = getNodeScroll(offsetParent);
    }

    if (isHTMLElement(offsetParent)) {
      const offsetRect = getBoundingClientRect(offsetParent, true);
      offsets.x = offsetRect.x + offsetParent.clientLeft;
      offsets.y = offsetRect.y + offsetParent.clientTop;
    } // This doesn't appear to be need to be negated.
    // else if (documentElement) {
    //   offsets.x = getWindowScrollBarX(documentElement);
    // }

  }

  return { ...rect,
    x: rect.x - scroll.scrollLeft + offsets.x,
    y: rect.y - scroll.scrollTop + offsets.y
  };
}

function getViewportRect(element, strategy) {
  const win = getWindow(element);
  const html = getDocumentElement(element);
  const visualViewport = win.visualViewport;
  let width = html.clientWidth;
  let height = html.clientHeight;
  let x = 0;
  let y = 0;

  if (visualViewport) {
    width = visualViewport.width;
    height = visualViewport.height;
    const layoutViewport = isLayoutViewport();

    if (layoutViewport || !layoutViewport && strategy === 'fixed') {
      x = visualViewport.offsetLeft;
      y = visualViewport.offsetTop;
    }
  }

  return {
    width,
    height,
    x,
    y
  };
}

// of the \`<html>\` and \`<body>\` rect bounds if horizontally scrollable

function getDocumentRect(element) {
  var _element$ownerDocumen;

  const html = getDocumentElement(element);
  const scroll = getNodeScroll(element);
  const body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;
  const width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);
  const height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);
  let x = -scroll.scrollLeft + getWindowScrollBarX(element);
  const y = -scroll.scrollTop;

  if (getComputedStyle$1(body || html).direction === 'rtl') {
    x += max(html.clientWidth, body ? body.clientWidth : 0) - width;
  }

  return {
    width,
    height,
    x,
    y
  };
}

function getNearestOverflowAncestor(node) {
  const parentNode = getParentNode(node);

  if (['html', 'body', '#document'].includes(getNodeName(parentNode))) {
    // @ts-ignore assume body is always available
    return node.ownerDocument.body;
  }

  if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {
    return parentNode;
  }

  return getNearestOverflowAncestor(parentNode);
}

function getOverflowAncestors(node, list) {
  var _node$ownerDocument;

  if (list === void 0) {
    list = [];
  }

  const scrollableAncestor = getNearestOverflowAncestor(node);
  const isBody = scrollableAncestor === ((_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.body);
  const win = getWindow(scrollableAncestor);
  const target = isBody ? [win].concat(win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : []) : scrollableAncestor;
  const updatedList = list.concat(target);
  return isBody ? updatedList : // @ts-ignore: isBody tells us target will be an HTMLElement here
  updatedList.concat(getOverflowAncestors(target));
}

function contains(parent, child) {
  const rootNode = child.getRootNode == null ? void 0 : child.getRootNode(); // First, attempt with faster native method

  if (parent.contains(child)) {
    return true;
  } // then fallback to custom implementation with Shadow DOM support
  else if (rootNode && isShadowRoot(rootNode)) {
    let next = child;

    do {
      // use \`===\` replace node.isSameNode()
      if (next && parent === next) {
        return true;
      } // @ts-ignore: need a better way to handle this...


      next = next.parentNode || next.host;
    } while (next);
  }

  return false;
}

function getInnerBoundingClientRect(element, strategy) {
  const clientRect = getBoundingClientRect(element, false, strategy === 'fixed');
  const top = clientRect.top + element.clientTop;
  const left = clientRect.left + element.clientLeft;
  return {
    top,
    left,
    x: left,
    y: top,
    right: left + element.clientWidth,
    bottom: top + element.clientHeight,
    width: element.clientWidth,
    height: element.clientHeight
  };
}

function getClientRectFromClippingAncestor(element, clippingParent, strategy) {
  if (clippingParent === 'viewport') {
    return (0,_floating_ui_core__WEBPACK_IMPORTED_MODULE_0__.rectToClientRect)(getViewportRect(element, strategy));
  }

  if (isElement(clippingParent)) {
    return getInnerBoundingClientRect(clippingParent, strategy);
  }

  return (0,_floating_ui_core__WEBPACK_IMPORTED_MODULE_0__.rectToClientRect)(getDocumentRect(getDocumentElement(element)));
} // A "clipping ancestor" is an overflowable container with the characteristic of
// clipping (or hiding) overflowing elements with a position different from
// \`initial\`


function getClippingAncestors(element) {
  const clippingAncestors = getOverflowAncestors(element);
  const canEscapeClipping = ['absolute', 'fixed'].includes(getComputedStyle$1(element).position);
  const clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;

  if (!isElement(clipperElement)) {
    return [];
  } // @ts-ignore isElement check ensures we return Array<Element>


  return clippingAncestors.filter(clippingAncestors => isElement(clippingAncestors) && contains(clippingAncestors, clipperElement) && getNodeName(clippingAncestors) !== 'body');
} // Gets the maximum area that the element is visible in due to any number of
// clipping ancestors


function getClippingRect(_ref) {
  let {
    element,
    boundary,
    rootBoundary,
    strategy
  } = _ref;
  const mainClippingAncestors = boundary === 'clippingAncestors' ? getClippingAncestors(element) : [].concat(boundary);
  const clippingAncestors = [...mainClippingAncestors, rootBoundary];
  const firstClippingAncestor = clippingAncestors[0];
  const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {
    const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);
    accRect.top = max(rect.top, accRect.top);
    accRect.right = min(rect.right, accRect.right);
    accRect.bottom = min(rect.bottom, accRect.bottom);
    accRect.left = max(rect.left, accRect.left);
    return accRect;
  }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));
  return {
    width: clippingRect.right - clippingRect.left,
    height: clippingRect.bottom - clippingRect.top,
    x: clippingRect.left,
    y: clippingRect.top
  };
}

const platform = {
  getClippingRect,
  convertOffsetParentRelativeRectToViewportRelativeRect,
  isElement,
  getDimensions,
  getOffsetParent,
  getDocumentElement,
  getElementRects: _ref => {
    let {
      reference,
      floating,
      strategy
    } = _ref;
    return {
      reference: getRectRelativeToOffsetParent(reference, getOffsetParent(floating), strategy),
      floating: { ...getDimensions(floating),
        x: 0,
        y: 0
      }
    };
  },
  getClientRects: element => Array.from(element.getClientRects()),
  isRTL: element => getComputedStyle$1(element).direction === 'rtl'
};

/**
 * Automatically updates the position of the floating element when necessary.
 * @see https://floating-ui.com/docs/autoUpdate
 */
function autoUpdate(reference, floating, update, options) {
  if (options === void 0) {
    options = {};
  }

  const {
    ancestorScroll: _ancestorScroll = true,
    ancestorResize: _ancestorResize = true,
    elementResize = true,
    animationFrame = false
  } = options;
  const ancestorScroll = _ancestorScroll && !animationFrame;
  const ancestorResize = _ancestorResize && !animationFrame;
  const ancestors = ancestorScroll || ancestorResize ? [...(isElement(reference) ? getOverflowAncestors(reference) : []), ...getOverflowAncestors(floating)] : [];
  ancestors.forEach(ancestor => {
    ancestorScroll && ancestor.addEventListener('scroll', update, {
      passive: true
    });
    ancestorResize && ancestor.addEventListener('resize', update);
  });
  let observer = null;

  if (elementResize) {
    let initialUpdate = true;
    observer = new ResizeObserver(() => {
      if (!initialUpdate) {
        update();
      }

      initialUpdate = false;
    });
    isElement(reference) && !animationFrame && observer.observe(reference);
    observer.observe(floating);
  }

  let frameId;
  let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;

  if (animationFrame) {
    frameLoop();
  }

  function frameLoop() {
    const nextRefRect = getBoundingClientRect(reference);

    if (prevRefRect && (nextRefRect.x !== prevRefRect.x || nextRefRect.y !== prevRefRect.y || nextRefRect.width !== prevRefRect.width || nextRefRect.height !== prevRefRect.height)) {
      update();
    }

    prevRefRect = nextRefRect;
    frameId = requestAnimationFrame(frameLoop);
  }

  update();
  return () => {
    var _observer;

    ancestors.forEach(ancestor => {
      ancestorScroll && ancestor.removeEventListener('scroll', update);
      ancestorResize && ancestor.removeEventListener('resize', update);
    });
    (_observer = observer) == null ? void 0 : _observer.disconnect();
    observer = null;

    if (animationFrame) {
      cancelAnimationFrame(frameId);
    }
  };
}

/**
 * Computes the \`x\` and \`y\` coordinates that will place the floating element
 * next to a reference element when it is given a certain CSS positioning
 * strategy.
 */

const computePosition = (reference, floating, options) => (0,_floating_ui_core__WEBPACK_IMPORTED_MODULE_0__.computePosition)(reference, floating, {
  platform,
  ...options
});


//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 29688 characters]
//# sourceURL=webpack-internal:///../../../node_modules/@floating-ui/dom/dist/floating-ui.dom.browser.mjs
`);
              }
            ),
            /***/
            "../../../node_modules/hachure-fill/bin/hachure.js": (
              /*!*********************************************************!*\
                !*** ../../../node_modules/hachure-fill/bin/hachure.js ***!
                \*********************************************************/
              /***/
              (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "hachureLines": () => (/* binding */ hachureLines)
/* harmony export */ });
function rotatePoints(points, center, degrees) {
    if (points && points.length) {
        const [cx, cy] = center;
        const angle = (Math.PI / 180) * degrees;
        const cos = Math.cos(angle);
        const sin = Math.sin(angle);
        for (const p of points) {
            const [x, y] = p;
            p[0] = ((x - cx) * cos) - ((y - cy) * sin) + cx;
            p[1] = ((x - cx) * sin) + ((y - cy) * cos) + cy;
        }
    }
}
function rotateLines(lines, center, degrees) {
    const points = [];
    lines.forEach((line) => points.push(...line));
    rotatePoints(points, center, degrees);
}
function areSamePoints(p1, p2) {
    return p1[0] === p2[0] && p1[1] === p2[1];
}
function hachureLines(polygons, hachureGap, hachureAngle, hachureStepOffset = 1) {
    const angle = hachureAngle;
    const gap = Math.max(hachureGap, 0.1);
    const polygonList = (polygons[0] && polygons[0][0] && (typeof polygons[0][0] === 'number')) ? [polygons] : polygons;
    const rotationCenter = [0, 0];
    if (angle) {
        for (const polygon of polygonList) {
            rotatePoints(polygon, rotationCenter, angle);
        }
    }
    const lines = straightHachureLines(polygonList, gap, hachureStepOffset);
    if (angle) {
        for (const polygon of polygonList) {
            rotatePoints(polygon, rotationCenter, -angle);
        }
        rotateLines(lines, rotationCenter, -angle);
    }
    return lines;
}
function straightHachureLines(polygons, gap, hachureStepOffset) {
    const vertexArray = [];
    for (const polygon of polygons) {
        const vertices = [...polygon];
        if (!areSamePoints(vertices[0], vertices[vertices.length - 1])) {
            vertices.push([vertices[0][0], vertices[0][1]]);
        }
        if (vertices.length > 2) {
            vertexArray.push(vertices);
        }
    }
    const lines = [];
    gap = Math.max(gap, 0.1);
    // Create sorted edges table
    const edges = [];
    for (const vertices of vertexArray) {
        for (let i = 0; i < vertices.length - 1; i++) {
            const p1 = vertices[i];
            const p2 = vertices[i + 1];
            if (p1[1] !== p2[1]) {
                const ymin = Math.min(p1[1], p2[1]);
                edges.push({
                    ymin,
                    ymax: Math.max(p1[1], p2[1]),
                    x: ymin === p1[1] ? p1[0] : p2[0],
                    islope: (p2[0] - p1[0]) / (p2[1] - p1[1]),
                });
            }
        }
    }
    edges.sort((e1, e2) => {
        if (e1.ymin < e2.ymin) {
            return -1;
        }
        if (e1.ymin > e2.ymin) {
            return 1;
        }
        if (e1.x < e2.x) {
            return -1;
        }
        if (e1.x > e2.x) {
            return 1;
        }
        if (e1.ymax === e2.ymax) {
            return 0;
        }
        return (e1.ymax - e2.ymax) / Math.abs((e1.ymax - e2.ymax));
    });
    if (!edges.length) {
        return lines;
    }
    // Start scanning
    let activeEdges = [];
    let y = edges[0].ymin;
    let iteration = 0;
    while (activeEdges.length || edges.length) {
        if (edges.length) {
            let ix = -1;
            for (let i = 0; i < edges.length; i++) {
                if (edges[i].ymin > y) {
                    break;
                }
                ix = i;
            }
            const removed = edges.splice(0, ix + 1);
            removed.forEach((edge) => {
                activeEdges.push({ s: y, edge });
            });
        }
        activeEdges = activeEdges.filter((ae) => {
            if (ae.edge.ymax <= y) {
                return false;
            }
            return true;
        });
        activeEdges.sort((ae1, ae2) => {
            if (ae1.edge.x === ae2.edge.x) {
                return 0;
            }
            return (ae1.edge.x - ae2.edge.x) / Math.abs((ae1.edge.x - ae2.edge.x));
        });
        // fill between the edges
        if ((hachureStepOffset !== 1) || (iteration % gap === 0)) {
            if (activeEdges.length > 1) {
                for (let i = 0; i < activeEdges.length; i = i + 2) {
                    const nexti = i + 1;
                    if (nexti >= activeEdges.length) {
                        break;
                    }
                    const ce = activeEdges[i].edge;
                    const ne = activeEdges[nexti].edge;
                    lines.push([
                        [Math.round(ce.x), y],
                        [Math.round(ne.x), y],
                    ]);
                }
            }
        }
        y += hachureStepOffset;
        activeEdges.forEach((ae) => {
            ae.edge.x = ae.edge.x + (hachureStepOffset * ae.edge.islope);
        });
        iteration++;
    }
    return lines;
}
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 7936 characters]
//# sourceURL=webpack-internal:///../../../node_modules/hachure-fill/bin/hachure.js
`);
              }
            ),
            /***/
            "../../../node_modules/jotai/esm/index.mjs": (
              /*!*************************************************!*\
                !*** ../../../node_modules/jotai/esm/index.mjs ***!
                \*************************************************/
              /***/
              (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "Provider": () => (/* binding */ Provider),\n/* harmony export */   "SECRET_INTERNAL_getScopeContext": () => (/* binding */ getScopeContext),\n/* harmony export */   "SECRET_INTERNAL_registerPromiseAbort": () => (/* binding */ registerPromiseAbort),\n/* harmony export */   "atom": () => (/* binding */ atom),\n/* harmony export */   "unstable_createStore": () => (/* binding */ createStoreForExport),\n/* harmony export */   "useAtom": () => (/* binding */ useAtom),\n/* harmony export */   "useAtomValue": () => (/* binding */ useAtomValue),\n/* harmony export */   "useSetAtom": () => (/* binding */ useSetAtom)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var jotai_vanilla__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! jotai/vanilla */ "../../../node_modules/jotai/esm/vanilla.mjs");\n\n\n\nconst SUSPENSE_PROMISE = Symbol();\nconst isSuspensePromise = (promise) => !!promise[SUSPENSE_PROMISE];\nconst isSuspensePromiseAlreadyCancelled = (suspensePromise) => !suspensePromise[SUSPENSE_PROMISE].c;\nconst cancelSuspensePromise = (suspensePromise) => {\n  var _a;\n  const { b: basePromise, c: cancelPromise } = suspensePromise[SUSPENSE_PROMISE];\n  if (cancelPromise) {\n    cancelPromise();\n    (_a = promiseAbortMap.get(basePromise)) == null ? void 0 : _a();\n  }\n};\nconst isEqualSuspensePromise = (oldSuspensePromise, newSuspensePromise) => {\n  const oldOriginalPromise = oldSuspensePromise[SUSPENSE_PROMISE].o;\n  const newOriginalPromise = newSuspensePromise[SUSPENSE_PROMISE].o;\n  return oldOriginalPromise === newOriginalPromise || oldSuspensePromise === newOriginalPromise || isSuspensePromise(oldOriginalPromise) && isEqualSuspensePromise(oldOriginalPromise, newSuspensePromise);\n};\nconst createSuspensePromise = (basePromise, promise) => {\n  const suspensePromiseExtra = {\n    b: basePromise,\n    o: promise,\n    c: null\n  };\n  const suspensePromise = new Promise((resolve) => {\n    suspensePromiseExtra.c = () => {\n      suspensePromiseExtra.c = null;\n      resolve();\n    };\n    promise.finally(suspensePromiseExtra.c);\n  });\n  suspensePromise[SUSPENSE_PROMISE] = suspensePromiseExtra;\n  return suspensePromise;\n};\nconst copySuspensePromise = (suspensePromise) => createSuspensePromise(\n  suspensePromise[SUSPENSE_PROMISE].b,\n  suspensePromise[SUSPENSE_PROMISE].o\n);\nconst promiseAbortMap = /* @__PURE__ */ new WeakMap();\nconst registerPromiseAbort = (basePromise, abort) => {\n  promiseAbortMap.set(basePromise, abort);\n};\n\nconst hasInitialValue = (atom) => "init" in atom;\nconst READ_ATOM = "r";\nconst WRITE_ATOM = "w";\nconst COMMIT_ATOM = "c";\nconst SUBSCRIBE_ATOM = "s";\nconst RESTORE_ATOMS = "h";\nconst DEV_SUBSCRIBE_STATE = "n";\nconst DEV_GET_MOUNTED_ATOMS = "l";\nconst DEV_GET_ATOM_STATE = "a";\nconst DEV_GET_MOUNTED = "m";\nconst createStore = (initialValues) => {\n  const committedAtomStateMap = /* @__PURE__ */ new WeakMap();\n  const mountedMap = /* @__PURE__ */ new WeakMap();\n  const pendingMap = /* @__PURE__ */ new Map();\n  let stateListeners;\n  let mountedAtoms;\n  if (true) {\n    stateListeners = /* @__PURE__ */ new Set();\n    mountedAtoms = /* @__PURE__ */ new Set();\n  }\n  if (initialValues) {\n    for (const [atom, value] of initialValues) {\n      const atomState = {\n        v: value,\n        r: 0,\n        y: true,\n        // not invalidated\n        d: /* @__PURE__ */ new Map()\n      };\n      if (true) {\n        Object.freeze(atomState);\n        if (!hasInitialValue(atom)) {\n          console.warn(\n            "Found initial value for derived atom which can cause unexpected behavior",\n            atom\n          );\n        }\n      }\n      committedAtomStateMap.set(atom, atomState);\n    }\n  }\n  const suspensePromiseCacheMap = /* @__PURE__ */ new WeakMap();\n  const addSuspensePromiseToCache = (version, atom, suspensePromise) => {\n    let cache = suspensePromiseCacheMap.get(atom);\n    if (!cache) {\n      cache = /* @__PURE__ */ new Map();\n      suspensePromiseCacheMap.set(atom, cache);\n    }\n    suspensePromise.then(() => {\n      if (cache.get(version) === suspensePromise) {\n        cache.delete(version);\n        if (!cache.size) {\n          suspensePromiseCacheMap.delete(atom);\n        }\n      }\n    });\n    cache.set(version, suspensePromise);\n  };\n  const cancelAllSuspensePromiseInCache = (atom) => {\n    const versionSet = /* @__PURE__ */ new Set();\n    const cache = suspensePromiseCacheMap.get(atom);\n    if (cache) {\n      suspensePromiseCacheMap.delete(atom);\n      cache.forEach((suspensePromise, version) => {\n        cancelSuspensePromise(suspensePromise);\n        versionSet.add(version);\n      });\n    }\n    return versionSet;\n  };\n  const versionedAtomStateMapMap = /* @__PURE__ */ new WeakMap();\n  const getVersionedAtomStateMap = (version) => {\n    let versionedAtomStateMap = versionedAtomStateMapMap.get(version);\n    if (!versionedAtomStateMap) {\n      versionedAtomStateMap = /* @__PURE__ */ new Map();\n      versionedAtomStateMapMap.set(version, versionedAtomStateMap);\n    }\n    return versionedAtomStateMap;\n  };\n  const getAtomState = (version, atom) => {\n    if (version) {\n      const versionedAtomStateMap = getVersionedAtomStateMap(version);\n      let atomState = versionedAtomStateMap.get(atom);\n      if (!atomState) {\n        atomState = getAtomState(version.p, atom);\n        if (atomState && "p" in atomState && isSuspensePromiseAlreadyCancelled(atomState.p)) {\n          atomState = void 0;\n        }\n        if (atomState) {\n          versionedAtomStateMap.set(atom, atomState);\n        }\n      }\n      return atomState;\n    }\n    return committedAtomStateMap.get(atom);\n  };\n  const setAtomState = (version, atom, atomState) => {\n    if (true) {\n      Object.freeze(atomState);\n    }\n    if (version) {\n      const versionedAtomStateMap = getVersionedAtomStateMap(version);\n      versionedAtomStateMap.set(atom, atomState);\n    } else {\n      const prevAtomState = committedAtomStateMap.get(atom);\n      committedAtomStateMap.set(atom, atomState);\n      if (!pendingMap.has(atom)) {\n        pendingMap.set(atom, prevAtomState);\n      }\n    }\n  };\n  const createReadDependencies = (version, prevReadDependencies = /* @__PURE__ */ new Map(), dependencies) => {\n    if (!dependencies) {\n      return prevReadDependencies;\n    }\n    const readDependencies = /* @__PURE__ */ new Map();\n    let changed = false;\n    dependencies.forEach((atom) => {\n      var _a;\n      const revision = ((_a = getAtomState(version, atom)) == null ? void 0 : _a.r) || 0;\n      readDependencies.set(atom, revision);\n      if (prevReadDependencies.get(atom) !== revision) {\n        changed = true;\n      }\n    });\n    if (prevReadDependencies.size === readDependencies.size && !changed) {\n      return prevReadDependencies;\n    }\n    return readDependencies;\n  };\n  const setAtomValue = (version, atom, value, dependencies, suspensePromise) => {\n    const atomState = getAtomState(version, atom);\n    if (atomState) {\n      if (suspensePromise && (!("p" in atomState) || !isEqualSuspensePromise(atomState.p, suspensePromise))) {\n        return atomState;\n      }\n      if ("p" in atomState) {\n        cancelSuspensePromise(atomState.p);\n      }\n    }\n    const nextAtomState = {\n      v: value,\n      r: (atomState == null ? void 0 : atomState.r) || 0,\n      y: true,\n      // not invalidated\n      d: createReadDependencies(version, atomState == null ? void 0 : atomState.d, dependencies)\n    };\n    let changed = !(atomState == null ? void 0 : atomState.y);\n    if (!atomState || !("v" in atomState) || // new value, or\n    !Object.is(atomState.v, value)) {\n      changed = true;\n      ++nextAtomState.r;\n      if (nextAtomState.d.has(atom)) {\n        nextAtomState.d = new Map(nextAtomState.d).set(atom, nextAtomState.r);\n      }\n    } else if (nextAtomState.d !== atomState.d && (nextAtomState.d.size !== atomState.d.size || !Array.from(nextAtomState.d.keys()).every((a) => atomState.d.has(a)))) {\n      changed = true;\n      Promise.resolve().then(() => {\n        flushPending(version);\n      });\n    }\n    if (atomState && !changed) {\n      return atomState;\n    }\n    setAtomState(version, atom, nextAtomState);\n    return nextAtomState;\n  };\n  const setAtomReadError = (version, atom, error, dependencies, suspensePromise) => {\n    const atomState = getAtomState(version, atom);\n    if (atomState) {\n      if (suspensePromise && (!("p" in atomState) || !isEqualSuspensePromise(atomState.p, suspensePromise))) {\n        return atomState;\n      }\n      if ("p" in atomState) {\n        cancelSuspensePromise(atomState.p);\n      }\n    }\n    const nextAtomState = {\n      e: error,\n      // set read error\n      r: ((atomState == null ? void 0 : atomState.r) || 0) + 1,\n      y: true,\n      // not invalidated\n      d: createReadDependencies(version, atomState == null ? void 0 : atomState.d, dependencies)\n    };\n    setAtomState(version, atom, nextAtomState);\n    return nextAtomState;\n  };\n  const setAtomSuspensePromise = (version, atom, suspensePromise, dependencies) => {\n    const atomState = getAtomState(version, atom);\n    if (atomState && "p" in atomState) {\n      if (isEqualSuspensePromise(atomState.p, suspensePromise) && !isSuspensePromiseAlreadyCancelled(atomState.p)) {\n        if (!atomState.y) {\n          return { ...atomState, y: true };\n        }\n        return atomState;\n      }\n      cancelSuspensePromise(atomState.p);\n    }\n    addSuspensePromiseToCache(version, atom, suspensePromise);\n    const nextAtomState = {\n      p: suspensePromise,\n      r: ((atomState == null ? void 0 : atomState.r) || 0) + 1,\n      y: true,\n      // not invalidated\n      d: createReadDependencies(version, atomState == null ? void 0 : atomState.d, dependencies)\n    };\n    setAtomState(version, atom, nextAtomState);\n    return nextAtomState;\n  };\n  const setAtomPromiseOrValue = (version, atom, promiseOrValue, dependencies) => {\n    if (promiseOrValue instanceof Promise) {\n      const suspensePromise = createSuspensePromise(\n        promiseOrValue,\n        promiseOrValue.then((value) => {\n          setAtomValue(version, atom, value, dependencies, suspensePromise);\n        }).catch((e) => {\n          if (e instanceof Promise) {\n            if (isSuspensePromise(e)) {\n              return e.then(() => {\n                readAtomState(version, atom, true);\n              });\n            }\n            return e;\n          }\n          setAtomReadError(version, atom, e, dependencies, suspensePromise);\n        })\n      );\n      return setAtomSuspensePromise(\n        version,\n        atom,\n        suspensePromise,\n        dependencies\n      );\n    }\n    return setAtomValue(\n      version,\n      atom,\n      promiseOrValue,\n      dependencies\n    );\n  };\n  const setAtomInvalidated = (version, atom) => {\n    const atomState = getAtomState(version, atom);\n    if (atomState) {\n      const nextAtomState = {\n        ...atomState,\n        // copy everything\n        y: false\n        // invalidated\n      };\n      setAtomState(version, atom, nextAtomState);\n    } else if (true) {\n      console.warn("[Bug] could not invalidate non existing atom", atom);\n    }\n  };\n  const readAtomState = (version, atom, force) => {\n    if (!force) {\n      const atomState = getAtomState(version, atom);\n      if (atomState) {\n        if (atomState.y && // not invalidated\n        "p" in atomState && !isSuspensePromiseAlreadyCancelled(atomState.p)) {\n          return atomState;\n        }\n        atomState.d.forEach((_, a) => {\n          if (a !== atom) {\n            if (!mountedMap.has(a)) {\n              readAtomState(version, a);\n            } else {\n              const aState = getAtomState(version, a);\n              if (aState && !aState.y) {\n                readAtomState(version, a);\n              }\n            }\n          }\n        });\n        if (Array.from(atomState.d).every(([a, r]) => {\n          const aState = getAtomState(version, a);\n          return aState && !("p" in aState) && // has no suspense promise\n          aState.r === r;\n        })) {\n          if (!atomState.y) {\n            return { ...atomState, y: true };\n          }\n          return atomState;\n        }\n      }\n    }\n    const dependencies = /* @__PURE__ */ new Set();\n    try {\n      const promiseOrValue = atom.read((a) => {\n        dependencies.add(a);\n        const aState = a === atom ? getAtomState(version, a) : readAtomState(version, a);\n        if (aState) {\n          if ("e" in aState) {\n            throw aState.e;\n          }\n          if ("p" in aState) {\n            throw aState.p;\n          }\n          return aState.v;\n        }\n        if (hasInitialValue(a)) {\n          return a.init;\n        }\n        throw new Error("no atom init");\n      });\n      return setAtomPromiseOrValue(version, atom, promiseOrValue, dependencies);\n    } catch (errorOrPromise) {\n      if (errorOrPromise instanceof Promise) {\n        const suspensePromise = isSuspensePromise(errorOrPromise) && isSuspensePromiseAlreadyCancelled(errorOrPromise) ? copySuspensePromise(errorOrPromise) : createSuspensePromise(errorOrPromise, errorOrPromise);\n        return setAtomSuspensePromise(\n          version,\n          atom,\n          suspensePromise,\n          dependencies\n        );\n      }\n      return setAtomReadError(version, atom, errorOrPromise, dependencies);\n    }\n  };\n  const readAtom = (readingAtom, version) => {\n    const atomState = readAtomState(version, readingAtom);\n    return atomState;\n  };\n  const addAtom = (version, addingAtom) => {\n    let mounted = mountedMap.get(addingAtom);\n    if (!mounted) {\n      mounted = mountAtom(version, addingAtom);\n    }\n    return mounted;\n  };\n  const canUnmountAtom = (atom, mounted) => !mounted.l.size && (!mounted.t.size || mounted.t.size === 1 && mounted.t.has(atom));\n  const delAtom = (version, deletingAtom) => {\n    const mounted = mountedMap.get(deletingAtom);\n    if (mounted && canUnmountAtom(deletingAtom, mounted)) {\n      unmountAtom(version, deletingAtom);\n    }\n  };\n  const invalidateDependents = (version, atom) => {\n    const mounted = mountedMap.get(atom);\n    mounted == null ? void 0 : mounted.t.forEach((dependent) => {\n      if (dependent !== atom) {\n        setAtomInvalidated(version, dependent);\n        invalidateDependents(version, dependent);\n      }\n    });\n  };\n  const writeAtomState = (version, atom, update) => {\n    let isSync = true;\n    const writeGetter = (a, options) => {\n      const aState = readAtomState(version, a);\n      if ("e" in aState) {\n        throw aState.e;\n      }\n      if ("p" in aState) {\n        if (options == null ? void 0 : options.unstable_promise) {\n          return aState.p.then(() => {\n            const s = getAtomState(version, a);\n            if (s && "p" in s && s.p === aState.p) {\n              return new Promise((resolve) => setTimeout(resolve)).then(\n                () => writeGetter(a, options)\n              );\n            }\n            return writeGetter(a, options);\n          });\n        }\n        if (true) {\n          console.info(\n            "Reading pending atom state in write operation. We throw a promise for now.",\n            a\n          );\n        }\n        throw aState.p;\n      }\n      if ("v" in aState) {\n        return aState.v;\n      }\n      if (true) {\n        console.warn(\n          "[Bug] no value found while reading atom in write operation. This is probably a bug.",\n          a\n        );\n      }\n      throw new Error("no value found");\n    };\n    const setter = (a, v) => {\n      let promiseOrVoid2;\n      if (a === atom) {\n        if (!hasInitialValue(a)) {\n          throw new Error("atom not writable");\n        }\n        const versionSet = cancelAllSuspensePromiseInCache(a);\n        versionSet.forEach((cancelledVersion) => {\n          if (cancelledVersion !== version) {\n            setAtomPromiseOrValue(cancelledVersion, a, v);\n          }\n        });\n        const prevAtomState = getAtomState(version, a);\n        const nextAtomState = setAtomPromiseOrValue(version, a, v);\n        if (prevAtomState !== nextAtomState) {\n          invalidateDependents(version, a);\n        }\n      } else {\n        promiseOrVoid2 = writeAtomState(version, a, v);\n      }\n      if (!isSync) {\n        flushPending(version);\n      }\n      return promiseOrVoid2;\n    };\n    const promiseOrVoid = atom.write(writeGetter, setter, update);\n    isSync = false;\n    return promiseOrVoid;\n  };\n  const writeAtom = (writingAtom, update, version) => {\n    const promiseOrVoid = writeAtomState(version, writingAtom, update);\n    flushPending(version);\n    return promiseOrVoid;\n  };\n  const isActuallyWritableAtom = (atom) => !!atom.write;\n  const mountAtom = (version, atom, initialDependent) => {\n    const mounted = {\n      t: new Set(initialDependent && [initialDependent]),\n      l: /* @__PURE__ */ new Set()\n    };\n    mountedMap.set(atom, mounted);\n    if (true) {\n      mountedAtoms.add(atom);\n    }\n    const atomState = readAtomState(void 0, atom);\n    atomState.d.forEach((_, a) => {\n      const aMounted = mountedMap.get(a);\n      if (aMounted) {\n        aMounted.t.add(atom);\n      } else {\n        if (a !== atom) {\n          mountAtom(version, a, atom);\n        }\n      }\n    });\n    if (isActuallyWritableAtom(atom) && atom.onMount) {\n      const setAtom = (update) => writeAtom(atom, update, version);\n      const onUnmount = atom.onMount(setAtom);\n      version = void 0;\n      if (onUnmount) {\n        mounted.u = onUnmount;\n      }\n    }\n    return mounted;\n  };\n  const unmountAtom = (version, atom) => {\n    var _a;\n    const onUnmount = (_a = mountedMap.get(atom)) == null ? void 0 : _a.u;\n    if (onUnmount) {\n      onUnmount();\n    }\n    mountedMap.delete(atom);\n    if (true) {\n      mountedAtoms.delete(atom);\n    }\n    const atomState = getAtomState(version, atom);\n    if (atomState) {\n      if ("p" in atomState) {\n        cancelSuspensePromise(atomState.p);\n      }\n      atomState.d.forEach((_, a) => {\n        if (a !== atom) {\n          const mounted = mountedMap.get(a);\n          if (mounted) {\n            mounted.t.delete(atom);\n            if (canUnmountAtom(a, mounted)) {\n              unmountAtom(version, a);\n            }\n          }\n        }\n      });\n    } else if (true) {\n      console.warn("[Bug] could not find atom state to unmount", atom);\n    }\n  };\n  const mountDependencies = (version, atom, atomState, prevReadDependencies) => {\n    const dependencies = new Set(atomState.d.keys());\n    prevReadDependencies == null ? void 0 : prevReadDependencies.forEach((_, a) => {\n      if (dependencies.has(a)) {\n        dependencies.delete(a);\n        return;\n      }\n      const mounted = mountedMap.get(a);\n      if (mounted) {\n        mounted.t.delete(atom);\n        if (canUnmountAtom(a, mounted)) {\n          unmountAtom(version, a);\n        }\n      }\n    });\n    dependencies.forEach((a) => {\n      const mounted = mountedMap.get(a);\n      if (mounted) {\n        mounted.t.add(atom);\n      } else if (mountedMap.has(atom)) {\n        mountAtom(version, a, atom);\n      }\n    });\n  };\n  const flushPending = (version) => {\n    if (version) {\n      const versionedAtomStateMap = getVersionedAtomStateMap(version);\n      versionedAtomStateMap.forEach((atomState, atom) => {\n        const committedAtomState = committedAtomStateMap.get(atom);\n        if (atomState !== committedAtomState) {\n          const mounted = mountedMap.get(atom);\n          mounted == null ? void 0 : mounted.l.forEach((listener) => listener(version));\n        }\n      });\n      return;\n    }\n    while (pendingMap.size) {\n      const pending = Array.from(pendingMap);\n      pendingMap.clear();\n      pending.forEach(([atom, prevAtomState]) => {\n        const atomState = getAtomState(void 0, atom);\n        if (atomState && atomState.d !== (prevAtomState == null ? void 0 : prevAtomState.d)) {\n          mountDependencies(void 0, atom, atomState, prevAtomState == null ? void 0 : prevAtomState.d);\n        }\n        if (prevAtomState && !prevAtomState.y && // invalidated\n        (atomState == null ? void 0 : atomState.y)) {\n          return;\n        }\n        const mounted = mountedMap.get(atom);\n        mounted == null ? void 0 : mounted.l.forEach((listener) => listener());\n      });\n    }\n    if (true) {\n      stateListeners.forEach((l) => l());\n    }\n  };\n  const commitVersionedAtomStateMap = (version) => {\n    const versionedAtomStateMap = getVersionedAtomStateMap(version);\n    versionedAtomStateMap.forEach((atomState, atom) => {\n      const prevAtomState = committedAtomStateMap.get(atom);\n      if (!prevAtomState || atomState.r > prevAtomState.r || atomState.y !== prevAtomState.y || atomState.r === prevAtomState.r && atomState.d !== prevAtomState.d) {\n        committedAtomStateMap.set(atom, atomState);\n        if (atomState.d !== (prevAtomState == null ? void 0 : prevAtomState.d)) {\n          mountDependencies(version, atom, atomState, prevAtomState == null ? void 0 : prevAtomState.d);\n        }\n      }\n    });\n  };\n  const commitAtom = (_atom, version) => {\n    if (version) {\n      commitVersionedAtomStateMap(version);\n    }\n    flushPending(void 0);\n  };\n  const subscribeAtom = (atom, callback, version) => {\n    const mounted = addAtom(version, atom);\n    const listeners = mounted.l;\n    listeners.add(callback);\n    return () => {\n      listeners.delete(callback);\n      delAtom(version, atom);\n    };\n  };\n  const restoreAtoms = (values, version) => {\n    for (const [atom, value] of values) {\n      if (hasInitialValue(atom)) {\n        setAtomPromiseOrValue(version, atom, value);\n        invalidateDependents(version, atom);\n      }\n    }\n    flushPending(version);\n  };\n  if (true) {\n    return {\n      [READ_ATOM]: readAtom,\n      [WRITE_ATOM]: writeAtom,\n      [COMMIT_ATOM]: commitAtom,\n      [SUBSCRIBE_ATOM]: subscribeAtom,\n      [RESTORE_ATOMS]: restoreAtoms,\n      [DEV_SUBSCRIBE_STATE]: (l) => {\n        stateListeners.add(l);\n        return () => {\n          stateListeners.delete(l);\n        };\n      },\n      [DEV_GET_MOUNTED_ATOMS]: () => mountedAtoms.values(),\n      [DEV_GET_ATOM_STATE]: (a) => committedAtomStateMap.get(a),\n      [DEV_GET_MOUNTED]: (a) => mountedMap.get(a)\n    };\n  }\n  return {\n    [READ_ATOM]: readAtom,\n    [WRITE_ATOM]: writeAtom,\n    [COMMIT_ATOM]: commitAtom,\n    [SUBSCRIBE_ATOM]: subscribeAtom,\n    [RESTORE_ATOMS]: restoreAtoms\n  };\n};\nconst createStoreForExport = (initialValues) => {\n  const store = createStore(initialValues);\n  const get = (atom) => {\n    const atomState = store[READ_ATOM](atom);\n    if ("e" in atomState) {\n      throw atomState.e;\n    }\n    if ("p" in atomState) {\n      return void 0;\n    }\n    return atomState.v;\n  };\n  const asyncGet = (atom) => new Promise((resolve, reject) => {\n    const atomState = store[READ_ATOM](atom);\n    if ("e" in atomState) {\n      reject(atomState.e);\n    } else if ("p" in atomState) {\n      resolve(atomState.p.then(() => asyncGet(atom)));\n    } else {\n      resolve(atomState.v);\n    }\n  });\n  const set = (atom, update) => store[WRITE_ATOM](atom, update);\n  const sub = (atom, callback) => store[SUBSCRIBE_ATOM](atom, callback);\n  return {\n    get,\n    asyncGet,\n    set,\n    sub,\n    SECRET_INTERNAL_store: store\n  };\n};\n\nconst createScopeContainer = (initialValues, unstable_createStore) => {\n  const store = unstable_createStore ? unstable_createStore(initialValues).SECRET_INTERNAL_store : createStore(initialValues);\n  return { s: store };\n};\nconst ScopeContextMap = /* @__PURE__ */ new Map();\nconst getScopeContext = (scope) => {\n  if (!ScopeContextMap.has(scope)) {\n    ScopeContextMap.set(scope, (0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(createScopeContainer()));\n  }\n  return ScopeContextMap.get(scope);\n};\n\nconst Provider = ({\n  children,\n  initialValues,\n  scope,\n  unstable_createStore,\n  unstable_enableVersionedWrite\n}) => {\n  const [version, setVersion] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({});\n  (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n    const scopeContainer = scopeContainerRef.current;\n    if (scopeContainer.w) {\n      scopeContainer.s[COMMIT_ATOM](null, version);\n      delete version.p;\n      scopeContainer.v = version;\n    }\n  }, [version]);\n  const scopeContainerRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)();\n  if (!scopeContainerRef.current) {\n    const scopeContainer = createScopeContainer(\n      initialValues,\n      unstable_createStore\n    );\n    if (unstable_enableVersionedWrite) {\n      let retrying = 0;\n      scopeContainer.w = (write) => {\n        setVersion((parentVersion) => {\n          const nextVersion = retrying ? parentVersion : { p: parentVersion };\n          write(nextVersion);\n          return nextVersion;\n        });\n      };\n      scopeContainer.v = version;\n      scopeContainer.r = (fn) => {\n        ++retrying;\n        fn();\n        --retrying;\n      };\n    }\n    scopeContainerRef.current = scopeContainer;\n  }\n  const ScopeContainerContext = getScopeContext(scope);\n  return (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(\n    ScopeContainerContext.Provider,\n    {\n      value: scopeContainerRef.current\n    },\n    children\n  );\n};\n\nfunction atom(read, write) {\n  return (0,jotai_vanilla__WEBPACK_IMPORTED_MODULE_1__.atom)(read, write);\n}\n\nfunction useAtomValue(atom, scope) {\n  const ScopeContext = getScopeContext(scope);\n  const scopeContainer = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(ScopeContext);\n  const { s: store, v: versionFromProvider } = scopeContainer;\n  const getAtomValue = (version2) => {\n    const atomState = store[READ_ATOM](atom, version2);\n    if ( true && !atomState.y) {\n      throw new Error("should not be invalidated");\n    }\n    if ("e" in atomState) {\n      throw atomState.e;\n    }\n    if ("p" in atomState) {\n      throw atomState.p;\n    }\n    if ("v" in atomState) {\n      return atomState.v;\n    }\n    throw new Error("no atom value");\n  };\n  const [[version, valueFromReducer, atomFromReducer], rerenderIfChanged] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useReducer)(\n    (prev, nextVersion) => {\n      const nextValue = getAtomValue(nextVersion);\n      if (Object.is(prev[1], nextValue) && prev[2] === atom) {\n        return prev;\n      }\n      return [nextVersion, nextValue, atom];\n    },\n    versionFromProvider,\n    (initialVersion) => {\n      const initialValue = getAtomValue(initialVersion);\n      return [initialVersion, initialValue, atom];\n    }\n  );\n  let value = valueFromReducer;\n  if (atomFromReducer !== atom) {\n    rerenderIfChanged(version);\n    value = getAtomValue(version);\n  }\n  (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n    const { v: versionFromProvider2 } = scopeContainer;\n    if (versionFromProvider2) {\n      store[COMMIT_ATOM](atom, versionFromProvider2);\n    }\n    const unsubscribe = store[SUBSCRIBE_ATOM](\n      atom,\n      rerenderIfChanged,\n      versionFromProvider2\n    );\n    rerenderIfChanged(versionFromProvider2);\n    return unsubscribe;\n  }, [store, atom, scopeContainer]);\n  (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n    store[COMMIT_ATOM](atom, version);\n  });\n  (0,react__WEBPACK_IMPORTED_MODULE_0__.useDebugValue)(value);\n  return value;\n}\n\nfunction useSetAtom(atom, scope) {\n  const ScopeContext = getScopeContext(scope);\n  const { s: store, w: versionedWrite } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(ScopeContext);\n  const setAtom = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(\n    (update) => {\n      if ( true && !("write" in atom)) {\n        throw new Error("not writable atom");\n      }\n      const write = (version) => store[WRITE_ATOM](atom, update, version);\n      return versionedWrite ? versionedWrite(write) : write();\n    },\n    [store, versionedWrite, atom]\n  );\n  return setAtom;\n}\n\nfunction useAtom(atom, scope) {\n  if ("scope" in atom) {\n    console.warn(\n      "atom.scope is deprecated. Please do useAtom(atom, scope) instead."\n    );\n    scope = atom.scope;\n  }\n  return [\n    useAtomValue(atom, scope),\n    // We do wrong type assertion here, which results in throwing an error.\n    useSetAtom(atom, scope)\n  ];\n}\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 44852 characters]\n//# sourceURL=webpack-internal:///../../../node_modules/jotai/esm/index.mjs\n');
              }
            ),
            /***/
            "../../../node_modules/jotai/esm/vanilla.mjs": (
              /*!***************************************************!*\
                !*** ../../../node_modules/jotai/esm/vanilla.mjs ***!
                \***************************************************/
              /***/
              (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "atom": () => (/* binding */ atom),\n/* harmony export */   "createStore": () => (/* binding */ createStore),\n/* harmony export */   "getDefaultStore": () => (/* binding */ getDefaultStore)\n/* harmony export */ });\nlet keyCount = 0;\nfunction atom(read, write) {\n  const key = `atom${++keyCount}`;\n  const config = {\n    toString: () => key\n  };\n  if (typeof read === "function") {\n    config.read = read;\n  } else {\n    config.init = read;\n    config.read = (get) => get(config);\n    config.write = (get, set, arg) => set(\n      config,\n      typeof arg === "function" ? arg(get(config)) : arg\n    );\n  }\n  if (write) {\n    config.write = write;\n  }\n  return config;\n}\n\nconst hasInitialValue = (atom) => "init" in atom;\nconst isActuallyWritableAtom = (atom) => !!atom.write;\nconst cancelPromiseMap = /* @__PURE__ */ new WeakMap();\nconst registerCancelPromise = (promise, cancel) => {\n  cancelPromiseMap.set(promise, cancel);\n  promise.catch(() => {\n  }).finally(() => cancelPromiseMap.delete(promise));\n};\nconst cancelPromise = (promise, next) => {\n  const cancel = cancelPromiseMap.get(promise);\n  if (cancel) {\n    cancelPromiseMap.delete(promise);\n    cancel(next);\n  }\n};\nconst resolvePromise = (promise, value) => {\n  promise.status = "fulfilled";\n  promise.value = value;\n};\nconst rejectPromise = (promise, e) => {\n  promise.status = "rejected";\n  promise.reason = e;\n};\nconst isEqualAtomValue = (a, b) => "v" in a && "v" in b && Object.is(a.v, b.v);\nconst isEqualAtomError = (a, b) => "e" in a && "e" in b && Object.is(a.e, b.e);\nconst hasPromiseAtomValue = (a) => "v" in a && a.v instanceof Promise;\nconst returnAtomValue = (atomState) => {\n  if ("e" in atomState) {\n    throw atomState.e;\n  }\n  return atomState.v;\n};\nconst createStore = () => {\n  const atomStateMap = /* @__PURE__ */ new WeakMap();\n  const mountedMap = /* @__PURE__ */ new WeakMap();\n  const pendingMap = /* @__PURE__ */ new Map();\n  let stateListeners;\n  let mountedAtoms;\n  if (true) {\n    stateListeners = /* @__PURE__ */ new Set();\n    mountedAtoms = /* @__PURE__ */ new Set();\n  }\n  const getAtomState = (atom) => atomStateMap.get(atom);\n  const setAtomState = (atom, atomState) => {\n    if (true) {\n      Object.freeze(atomState);\n    }\n    const prevAtomState = atomStateMap.get(atom);\n    atomStateMap.set(atom, atomState);\n    if (!pendingMap.has(atom)) {\n      pendingMap.set(atom, prevAtomState);\n    }\n    if (prevAtomState && hasPromiseAtomValue(prevAtomState)) {\n      const next = "v" in atomState ? atomState.v instanceof Promise ? atomState.v : Promise.resolve(atomState.v) : Promise.reject(atomState.e);\n      cancelPromise(prevAtomState.v, next);\n    }\n  };\n  const updateDependencies = (atom, nextAtomState, depSet) => {\n    const dependencies = /* @__PURE__ */ new Map();\n    let changed = false;\n    depSet.forEach((a) => {\n      const aState = a === atom ? nextAtomState : getAtomState(a);\n      if (aState) {\n        dependencies.set(a, aState);\n        if (nextAtomState.d.get(a) !== aState) {\n          changed = true;\n        }\n      } else if (true) {\n        console.warn("[Bug] atom state not found");\n      }\n    });\n    if (changed || nextAtomState.d.size !== dependencies.size) {\n      nextAtomState.d = dependencies;\n    }\n  };\n  const setAtomValue = (atom, value, depSet) => {\n    const prevAtomState = getAtomState(atom);\n    const nextAtomState = {\n      d: (prevAtomState == null ? void 0 : prevAtomState.d) || /* @__PURE__ */ new Map(),\n      v: value\n    };\n    if (depSet) {\n      updateDependencies(atom, nextAtomState, depSet);\n    }\n    if (prevAtomState && isEqualAtomValue(prevAtomState, nextAtomState) && prevAtomState.d === nextAtomState.d) {\n      return prevAtomState;\n    }\n    setAtomState(atom, nextAtomState);\n    return nextAtomState;\n  };\n  const setAtomError = (atom, error, depSet) => {\n    const prevAtomState = getAtomState(atom);\n    const nextAtomState = {\n      d: (prevAtomState == null ? void 0 : prevAtomState.d) || /* @__PURE__ */ new Map(),\n      e: error\n    };\n    if (depSet) {\n      updateDependencies(atom, nextAtomState, depSet);\n    }\n    if (prevAtomState && isEqualAtomError(prevAtomState, nextAtomState) && prevAtomState.d === nextAtomState.d) {\n      return prevAtomState;\n    }\n    setAtomState(atom, nextAtomState);\n    return nextAtomState;\n  };\n  const readAtomState = (atom) => {\n    const atomState = getAtomState(atom);\n    if (atomState) {\n      atomState.d.forEach((_, a) => {\n        if (a !== atom && !mountedMap.has(a)) {\n          readAtomState(a);\n        }\n      });\n      if (Array.from(atomState.d).every(\n        ([a, s]) => a === atom || getAtomState(a) === s\n      )) {\n        return atomState;\n      }\n    }\n    const depSet = /* @__PURE__ */ new Set();\n    let isSync = true;\n    const getter = (a) => {\n      depSet.add(a);\n      if (a === atom) {\n        const aState2 = getAtomState(a);\n        if (aState2) {\n          return returnAtomValue(aState2);\n        }\n        if (hasInitialValue(a)) {\n          return a.init;\n        }\n        throw new Error("no atom init");\n      }\n      const aState = readAtomState(a);\n      return returnAtomValue(aState);\n    };\n    let controller;\n    let setSelf;\n    const options = {\n      get signal() {\n        if (!controller) {\n          controller = new AbortController();\n        }\n        return controller.signal;\n      },\n      get setSelf() {\n        if ( true && !isActuallyWritableAtom(atom)) {\n          console.warn("setSelf function cannot be used with read-only atom");\n        }\n        if (!setSelf && isActuallyWritableAtom(atom)) {\n          setSelf = (...args) => {\n            if ( true && isSync) {\n              console.warn("setSelf function cannot be called in sync");\n            }\n            if (!isSync) {\n              return writeAtom(atom, ...args);\n            }\n          };\n        }\n        return setSelf;\n      }\n    };\n    try {\n      const value = atom.read(getter, options);\n      if (value instanceof Promise) {\n        let continuePromise;\n        const promise = new Promise((resolve, reject) => {\n          let settled = false;\n          value.then(\n            (v) => {\n              if (!settled) {\n                resolvePromise(promise, v);\n                resolve(v);\n              }\n            },\n            (e) => {\n              if (!settled) {\n                rejectPromise(promise, e);\n                reject(e);\n              }\n            }\n          ).finally(() => {\n            if (!settled) {\n              settled = true;\n              setAtomValue(atom, promise, depSet);\n            }\n          });\n          continuePromise = (next) => {\n            if (!settled) {\n              settled = true;\n              next.then(\n                (v) => resolvePromise(promise, v),\n                (e) => rejectPromise(promise, e)\n              );\n              resolve(next);\n            }\n          };\n        });\n        promise.status = "pending";\n        registerCancelPromise(promise, (next) => {\n          if (next) {\n            continuePromise(next);\n          }\n          controller == null ? void 0 : controller.abort();\n        });\n        return setAtomValue(atom, promise, depSet);\n      }\n      return setAtomValue(atom, value, depSet);\n    } catch (error) {\n      return setAtomError(atom, error, depSet);\n    } finally {\n      isSync = false;\n    }\n  };\n  const readAtom = (atom) => returnAtomValue(readAtomState(atom));\n  const addAtom = (atom) => {\n    let mounted = mountedMap.get(atom);\n    if (!mounted) {\n      mounted = mountAtom(atom);\n    }\n    return mounted;\n  };\n  const canUnmountAtom = (atom, mounted) => !mounted.l.size && (!mounted.t.size || mounted.t.size === 1 && mounted.t.has(atom));\n  const delAtom = (atom) => {\n    const mounted = mountedMap.get(atom);\n    if (mounted && canUnmountAtom(atom, mounted)) {\n      unmountAtom(atom);\n    }\n  };\n  const recomputeDependents = (atom) => {\n    const mounted = mountedMap.get(atom);\n    mounted == null ? void 0 : mounted.t.forEach((dependent) => {\n      if (dependent !== atom) {\n        const prevAtomState = getAtomState(dependent);\n        const nextAtomState = readAtomState(dependent);\n        if (!prevAtomState || !isEqualAtomValue(prevAtomState, nextAtomState)) {\n          recomputeDependents(dependent);\n        }\n      }\n    });\n  };\n  const writeAtomState = (atom, ...args) => {\n    let isSync = true;\n    const getter = (a) => returnAtomValue(readAtomState(a));\n    const setter = (a, ...args2) => {\n      let r;\n      if (a === atom) {\n        if (!hasInitialValue(a)) {\n          throw new Error("atom not writable");\n        }\n        const prevAtomState = getAtomState(a);\n        const nextAtomState = setAtomValue(a, args2[0]);\n        if (!prevAtomState || !isEqualAtomValue(prevAtomState, nextAtomState)) {\n          recomputeDependents(a);\n        }\n      } else {\n        r = writeAtomState(a, ...args2);\n      }\n      if (!isSync) {\n        flushPending();\n      }\n      return r;\n    };\n    const result = atom.write(getter, setter, ...args);\n    isSync = false;\n    return result;\n  };\n  const writeAtom = (atom, ...args) => {\n    const result = writeAtomState(atom, ...args);\n    flushPending();\n    return result;\n  };\n  const mountAtom = (atom, initialDependent) => {\n    const mounted = {\n      t: new Set(initialDependent && [initialDependent]),\n      l: /* @__PURE__ */ new Set()\n    };\n    mountedMap.set(atom, mounted);\n    if (true) {\n      mountedAtoms.add(atom);\n    }\n    readAtomState(atom).d.forEach((_, a) => {\n      const aMounted = mountedMap.get(a);\n      if (aMounted) {\n        aMounted.t.add(atom);\n      } else {\n        if (a !== atom) {\n          mountAtom(a, atom);\n        }\n      }\n    });\n    readAtomState(atom);\n    if (isActuallyWritableAtom(atom) && atom.onMount) {\n      const onUnmount = atom.onMount((...args) => writeAtom(atom, ...args));\n      if (onUnmount) {\n        mounted.u = onUnmount;\n      }\n    }\n    return mounted;\n  };\n  const unmountAtom = (atom) => {\n    var _a;\n    const onUnmount = (_a = mountedMap.get(atom)) == null ? void 0 : _a.u;\n    if (onUnmount) {\n      onUnmount();\n    }\n    mountedMap.delete(atom);\n    if (true) {\n      mountedAtoms.delete(atom);\n    }\n    const atomState = getAtomState(atom);\n    if (atomState) {\n      if (hasPromiseAtomValue(atomState)) {\n        cancelPromise(atomState.v);\n      }\n      atomState.d.forEach((_, a) => {\n        if (a !== atom) {\n          const mounted = mountedMap.get(a);\n          if (mounted) {\n            mounted.t.delete(atom);\n            if (canUnmountAtom(a, mounted)) {\n              unmountAtom(a);\n            }\n          }\n        }\n      });\n    } else if (true) {\n      console.warn("[Bug] could not find atom state to unmount", atom);\n    }\n  };\n  const mountDependencies = (atom, atomState, prevDependencies) => {\n    const depSet = new Set(atomState.d.keys());\n    prevDependencies == null ? void 0 : prevDependencies.forEach((_, a) => {\n      if (depSet.has(a)) {\n        depSet.delete(a);\n        return;\n      }\n      const mounted = mountedMap.get(a);\n      if (mounted) {\n        mounted.t.delete(atom);\n        if (canUnmountAtom(a, mounted)) {\n          unmountAtom(a);\n        }\n      }\n    });\n    depSet.forEach((a) => {\n      const mounted = mountedMap.get(a);\n      if (mounted) {\n        mounted.t.add(atom);\n      } else if (mountedMap.has(atom)) {\n        mountAtom(a, atom);\n      }\n    });\n  };\n  const flushPending = () => {\n    while (pendingMap.size) {\n      const pending = Array.from(pendingMap);\n      pendingMap.clear();\n      pending.forEach(([atom, prevAtomState]) => {\n        const atomState = getAtomState(atom);\n        if (atomState) {\n          if (atomState.d !== (prevAtomState == null ? void 0 : prevAtomState.d)) {\n            mountDependencies(atom, atomState, prevAtomState == null ? void 0 : prevAtomState.d);\n          }\n          const mounted = mountedMap.get(atom);\n          if (mounted && !// TODO This seems pretty hacky. Hope to fix it.\n          // Maybe we could `mountDependencies` in `setAtomState`?\n          (prevAtomState && !hasPromiseAtomValue(prevAtomState) && (isEqualAtomValue(prevAtomState, atomState) || isEqualAtomError(prevAtomState, atomState)))) {\n            mounted.l.forEach((listener) => listener());\n          }\n        } else if (true) {\n          console.warn("[Bug] no atom state to flush");\n        }\n      });\n    }\n    if (true) {\n      stateListeners.forEach((l) => l());\n    }\n  };\n  const subscribeAtom = (atom, listener) => {\n    const mounted = addAtom(atom);\n    flushPending();\n    const listeners = mounted.l;\n    listeners.add(listener);\n    return () => {\n      listeners.delete(listener);\n      delAtom(atom);\n    };\n  };\n  if (true) {\n    return {\n      get: readAtom,\n      set: writeAtom,\n      sub: subscribeAtom,\n      // store dev methods (these are tentative and subject to change)\n      dev_subscribe_state: (l) => {\n        stateListeners.add(l);\n        return () => {\n          stateListeners.delete(l);\n        };\n      },\n      dev_get_mounted_atoms: () => mountedAtoms.values(),\n      dev_get_atom_state: (a) => atomStateMap.get(a),\n      dev_get_mounted: (a) => mountedMap.get(a),\n      dev_restore_atoms: (values) => {\n        for (const [atom, value] of values) {\n          if (hasInitialValue(atom)) {\n            setAtomValue(atom, value);\n            recomputeDependents(atom);\n          }\n        }\n        flushPending();\n      }\n    };\n  }\n  return {\n    get: readAtom,\n    set: writeAtom,\n    sub: subscribeAtom\n  };\n};\nlet defaultStore;\nconst getDefaultStore = () => {\n  if (!defaultStore) {\n    defaultStore = createStore();\n  }\n  return defaultStore;\n};\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 23136 characters]\n//# sourceURL=webpack-internal:///../../../node_modules/jotai/esm/vanilla.mjs\n');
              }
            ),
            /***/
            "../../../node_modules/nanoid/index.browser.js": (
              /*!*****************************************************!*\
                !*** ../../../node_modules/nanoid/index.browser.js ***!
                \*****************************************************/
              /***/
              (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "customAlphabet": () => (/* binding */ customAlphabet),
/* harmony export */   "customRandom": () => (/* binding */ customRandom),
/* harmony export */   "nanoid": () => (/* binding */ nanoid),
/* harmony export */   "random": () => (/* binding */ random),
/* harmony export */   "urlAlphabet": () => (/* reexport safe */ _url_alphabet_index_js__WEBPACK_IMPORTED_MODULE_0__.urlAlphabet)
/* harmony export */ });
/* harmony import */ var _url_alphabet_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./url-alphabet/index.js */ "../../../node_modules/nanoid/url-alphabet/index.js");

let random = bytes => crypto.getRandomValues(new Uint8Array(bytes))
let customRandom = (alphabet, defaultSize, getRandom) => {
  let mask = (2 << (Math.log(alphabet.length - 1) / Math.LN2)) - 1
  let step = -~((1.6 * mask * defaultSize) / alphabet.length)
  return (size = defaultSize) => {
    let id = ''
    while (true) {
      let bytes = getRandom(step)
      let j = step
      while (j--) {
        id += alphabet[bytes[j] & mask] || ''
        if (id.length === size) return id
      }
    }
  }
}
let customAlphabet = (alphabet, size = 21) =>
  customRandom(alphabet, size, random)
let nanoid = (size = 21) =>
  crypto.getRandomValues(new Uint8Array(size)).reduce((id, byte) => {
    byte &= 63
    if (byte < 36) {
      id += byte.toString(36)
    } else if (byte < 62) {
      id += (byte - 26).toString(36).toUpperCase()
    } else if (byte > 62) {
      id += '-'
    } else {
      id += '_'
    }
    return id
  }, '')

//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL25hbm9pZC9pbmRleC5icm93c2VyLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFxRDtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0EsTUFBTTtBQUNOO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDaUUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL25hbm9pZC9pbmRleC5icm93c2VyLmpzPzc0NWMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXJsQWxwaGFiZXQgfSBmcm9tICcuL3VybC1hbHBoYWJldC9pbmRleC5qcydcbmxldCByYW5kb20gPSBieXRlcyA9PiBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50OEFycmF5KGJ5dGVzKSlcbmxldCBjdXN0b21SYW5kb20gPSAoYWxwaGFiZXQsIGRlZmF1bHRTaXplLCBnZXRSYW5kb20pID0+IHtcbiAgbGV0IG1hc2sgPSAoMiA8PCAoTWF0aC5sb2coYWxwaGFiZXQubGVuZ3RoIC0gMSkgLyBNYXRoLkxOMikpIC0gMVxuICBsZXQgc3RlcCA9IC1+KCgxLjYgKiBtYXNrICogZGVmYXVsdFNpemUpIC8gYWxwaGFiZXQubGVuZ3RoKVxuICByZXR1cm4gKHNpemUgPSBkZWZhdWx0U2l6ZSkgPT4ge1xuICAgIGxldCBpZCA9ICcnXG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIGxldCBieXRlcyA9IGdldFJhbmRvbShzdGVwKVxuICAgICAgbGV0IGogPSBzdGVwXG4gICAgICB3aGlsZSAoai0tKSB7XG4gICAgICAgIGlkICs9IGFscGhhYmV0W2J5dGVzW2pdICYgbWFza10gfHwgJydcbiAgICAgICAgaWYgKGlkLmxlbmd0aCA9PT0gc2l6ZSkgcmV0dXJuIGlkXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5sZXQgY3VzdG9tQWxwaGFiZXQgPSAoYWxwaGFiZXQsIHNpemUgPSAyMSkgPT5cbiAgY3VzdG9tUmFuZG9tKGFscGhhYmV0LCBzaXplLCByYW5kb20pXG5sZXQgbmFub2lkID0gKHNpemUgPSAyMSkgPT5cbiAgY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgVWludDhBcnJheShzaXplKSkucmVkdWNlKChpZCwgYnl0ZSkgPT4ge1xuICAgIGJ5dGUgJj0gNjNcbiAgICBpZiAoYnl0ZSA8IDM2KSB7XG4gICAgICBpZCArPSBieXRlLnRvU3RyaW5nKDM2KVxuICAgIH0gZWxzZSBpZiAoYnl0ZSA8IDYyKSB7XG4gICAgICBpZCArPSAoYnl0ZSAtIDI2KS50b1N0cmluZygzNikudG9VcHBlckNhc2UoKVxuICAgIH0gZWxzZSBpZiAoYnl0ZSA+IDYyKSB7XG4gICAgICBpZCArPSAnLSdcbiAgICB9IGVsc2Uge1xuICAgICAgaWQgKz0gJ18nXG4gICAgfVxuICAgIHJldHVybiBpZFxuICB9LCAnJylcbmV4cG9ydCB7IG5hbm9pZCwgY3VzdG9tQWxwaGFiZXQsIGN1c3RvbVJhbmRvbSwgdXJsQWxwaGFiZXQsIHJhbmRvbSB9XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=
//# sourceURL=webpack-internal:///../../../node_modules/nanoid/index.browser.js
`);
              }
            ),
            /***/
            "../../../node_modules/nanoid/url-alphabet/index.js": (
              /*!**********************************************************!*\
                !*** ../../../node_modules/nanoid/url-alphabet/index.js ***!
                \**********************************************************/
              /***/
              (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "urlAlphabet": () => (/* binding */ urlAlphabet)
/* harmony export */ });
let urlAlphabet =
  'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'

//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL25hbm9pZC91cmwtYWxwaGFiZXQvaW5kZXguanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDc0IiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL25hbm9pZC91cmwtYWxwaGFiZXQvaW5kZXguanM/ODRkMCJdLCJzb3VyY2VzQ29udGVudCI6WyJsZXQgdXJsQWxwaGFiZXQgPVxuICAndXNlYW5kb20tMjZUMTk4MzQwUFg3NXB4SkFDS1ZFUllNSU5EQlVTSFdPTEZfR1FaYmZnaGprbHF2d3l6cmljdCdcbmV4cG9ydCB7IHVybEFscGhhYmV0IH1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==
//# sourceURL=webpack-internal:///../../../node_modules/nanoid/url-alphabet/index.js
`);
              }
            ),
            /***/
            "../../../node_modules/zustand/esm/index.mjs": (
              /*!***************************************************!*\
                !*** ../../../node_modules/zustand/esm/index.mjs ***!
                \***************************************************/
              /***/
              (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "create": () => (/* binding */ create),\n/* harmony export */   "createStore": () => (/* reexport safe */ zustand_vanilla__WEBPACK_IMPORTED_MODULE_0__.createStore),\n/* harmony export */   "default": () => (/* binding */ react),\n/* harmony export */   "useStore": () => (/* binding */ useStore)\n/* harmony export */ });\n/* harmony import */ var zustand_vanilla__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! zustand/vanilla */ "../../../node_modules/zustand/esm/vanilla.mjs");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var use_sync_external_store_shim_with_selector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! use-sync-external-store/shim/with-selector.js */ "../../../node_modules/use-sync-external-store/shim/with-selector.js");\n\n\n\n\n\nconst { useSyncExternalStoreWithSelector } = use_sync_external_store_shim_with_selector_js__WEBPACK_IMPORTED_MODULE_2__;\nfunction useStore(api, selector = api.getState, equalityFn) {\n  const slice = useSyncExternalStoreWithSelector(\n    api.subscribe,\n    api.getState,\n    api.getServerState || api.getState,\n    selector,\n    equalityFn\n  );\n  (0,react__WEBPACK_IMPORTED_MODULE_1__.useDebugValue)(slice);\n  return slice;\n}\nconst createImpl = (createState) => {\n  if ( true && typeof createState !== "function") {\n    console.warn(\n      "[DEPRECATED] Passing a vanilla store will be unsupported in a future version. Instead use `import { useStore } from \'zustand\'`."\n    );\n  }\n  const api = typeof createState === "function" ? (0,zustand_vanilla__WEBPACK_IMPORTED_MODULE_0__.createStore)(createState) : createState;\n  const useBoundStore = (selector, equalityFn) => useStore(api, selector, equalityFn);\n  Object.assign(useBoundStore, api);\n  return useBoundStore;\n};\nconst create = (createState) => createState ? createImpl(createState) : createImpl;\nvar react = (createState) => {\n  if (true) {\n    console.warn(\n      "[DEPRECATED] Default export is deprecated. Instead use `import { create } from \'zustand\'`."\n    );\n  }\n  return create(createState);\n};\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3p1c3RhbmQvZXNtL2luZGV4Lm1qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQThDO0FBQ2Q7QUFDTTtBQUNrRDs7QUFFeEYsUUFBUSxtQ0FBbUMsRUFBRSwwRUFBMkI7QUFDeEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsb0RBQWE7QUFDZjtBQUNBO0FBQ0E7QUFDQSxNQUFNLEtBQTBEO0FBQ2hFO0FBQ0EsMkdBQTJHLFdBQVc7QUFDdEg7QUFDQTtBQUNBLGtEQUFrRCw0REFBVztBQUM3RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLElBQTBEO0FBQ2hFO0FBQ0Esd0VBQXdFLFNBQVM7QUFDakY7QUFDQTtBQUNBO0FBQ0E7O0FBRThDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy96dXN0YW5kL2VzbS9pbmRleC5tanM/ZWI3MiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVTdG9yZSB9IGZyb20gJ3p1c3RhbmQvdmFuaWxsYSc7XG5leHBvcnQgKiBmcm9tICd6dXN0YW5kL3ZhbmlsbGEnO1xuaW1wb3J0IHsgdXNlRGVidWdWYWx1ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VTeW5jRXh0ZXJuYWxTdG9yZUV4cG9ydHMgZnJvbSAndXNlLXN5bmMtZXh0ZXJuYWwtc3RvcmUvc2hpbS93aXRoLXNlbGVjdG9yLmpzJztcblxuY29uc3QgeyB1c2VTeW5jRXh0ZXJuYWxTdG9yZVdpdGhTZWxlY3RvciB9ID0gdXNlU3luY0V4dGVybmFsU3RvcmVFeHBvcnRzO1xuZnVuY3Rpb24gdXNlU3RvcmUoYXBpLCBzZWxlY3RvciA9IGFwaS5nZXRTdGF0ZSwgZXF1YWxpdHlGbikge1xuICBjb25zdCBzbGljZSA9IHVzZVN5bmNFeHRlcm5hbFN0b3JlV2l0aFNlbGVjdG9yKFxuICAgIGFwaS5zdWJzY3JpYmUsXG4gICAgYXBpLmdldFN0YXRlLFxuICAgIGFwaS5nZXRTZXJ2ZXJTdGF0ZSB8fCBhcGkuZ2V0U3RhdGUsXG4gICAgc2VsZWN0b3IsXG4gICAgZXF1YWxpdHlGblxuICApO1xuICB1c2VEZWJ1Z1ZhbHVlKHNsaWNlKTtcbiAgcmV0dXJuIHNsaWNlO1xufVxuY29uc3QgY3JlYXRlSW1wbCA9IChjcmVhdGVTdGF0ZSkgPT4ge1xuICBpZiAoKGltcG9ydC5tZXRhLmVudiAmJiBpbXBvcnQubWV0YS5lbnYuTU9ERSkgIT09IFwicHJvZHVjdGlvblwiICYmIHR5cGVvZiBjcmVhdGVTdGF0ZSAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgY29uc29sZS53YXJuKFxuICAgICAgXCJbREVQUkVDQVRFRF0gUGFzc2luZyBhIHZhbmlsbGEgc3RvcmUgd2lsbCBiZSB1bnN1cHBvcnRlZCBpbiBhIGZ1dHVyZSB2ZXJzaW9uLiBJbnN0ZWFkIHVzZSBgaW1wb3J0IHsgdXNlU3RvcmUgfSBmcm9tICd6dXN0YW5kJ2AuXCJcbiAgICApO1xuICB9XG4gIGNvbnN0IGFwaSA9IHR5cGVvZiBjcmVhdGVTdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gY3JlYXRlU3RvcmUoY3JlYXRlU3RhdGUpIDogY3JlYXRlU3RhdGU7XG4gIGNvbnN0IHVzZUJvdW5kU3RvcmUgPSAoc2VsZWN0b3IsIGVxdWFsaXR5Rm4pID0+IHVzZVN0b3JlKGFwaSwgc2VsZWN0b3IsIGVxdWFsaXR5Rm4pO1xuICBPYmplY3QuYXNzaWduKHVzZUJvdW5kU3RvcmUsIGFwaSk7XG4gIHJldHVybiB1c2VCb3VuZFN0b3JlO1xufTtcbmNvbnN0IGNyZWF0ZSA9IChjcmVhdGVTdGF0ZSkgPT4gY3JlYXRlU3RhdGUgPyBjcmVhdGVJbXBsKGNyZWF0ZVN0YXRlKSA6IGNyZWF0ZUltcGw7XG52YXIgcmVhY3QgPSAoY3JlYXRlU3RhdGUpID0+IHtcbiAgaWYgKChpbXBvcnQubWV0YS5lbnYgJiYgaW1wb3J0Lm1ldGEuZW52Lk1PREUpICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgIGNvbnNvbGUud2FybihcbiAgICAgIFwiW0RFUFJFQ0FURURdIERlZmF1bHQgZXhwb3J0IGlzIGRlcHJlY2F0ZWQuIEluc3RlYWQgdXNlIGBpbXBvcnQgeyBjcmVhdGUgfSBmcm9tICd6dXN0YW5kJ2AuXCJcbiAgICApO1xuICB9XG4gIHJldHVybiBjcmVhdGUoY3JlYXRlU3RhdGUpO1xufTtcblxuZXhwb3J0IHsgY3JlYXRlLCByZWFjdCBhcyBkZWZhdWx0LCB1c2VTdG9yZSB9O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/zustand/esm/index.mjs\n');
              }
            ),
            /***/
            "../../../node_modules/zustand/esm/vanilla.mjs": (
              /*!*****************************************************!*\
                !*** ../../../node_modules/zustand/esm/vanilla.mjs ***!
                \*****************************************************/
              /***/
              (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "createStore": () => (/* binding */ createStore),\n/* harmony export */   "default": () => (/* binding */ vanilla)\n/* harmony export */ });\nconst createStoreImpl = (createState) => {\n  let state;\n  const listeners = /* @__PURE__ */ new Set();\n  const setState = (partial, replace) => {\n    const nextState = typeof partial === "function" ? partial(state) : partial;\n    if (!Object.is(nextState, state)) {\n      const previousState = state;\n      state = (replace != null ? replace : typeof nextState !== "object") ? nextState : Object.assign({}, state, nextState);\n      listeners.forEach((listener) => listener(state, previousState));\n    }\n  };\n  const getState = () => state;\n  const subscribe = (listener) => {\n    listeners.add(listener);\n    return () => listeners.delete(listener);\n  };\n  const destroy = () => {\n    if (true) {\n      console.warn(\n        "[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected."\n      );\n    }\n    listeners.clear();\n  };\n  const api = { setState, getState, subscribe, destroy };\n  state = createState(setState, getState, api);\n  return api;\n};\nconst createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl;\nvar vanilla = (createState) => {\n  if (true) {\n    console.warn(\n      "[DEPRECATED] Default export is deprecated. Instead use import { createStore } from \'zustand/vanilla\'."\n    );\n  }\n  return createStore(createState);\n};\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3p1c3RhbmQvZXNtL3ZhbmlsbGEubWpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3R0FBd0c7QUFDeEc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxJQUEwRDtBQUNsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sSUFBMEQ7QUFDaEU7QUFDQSx1RUFBdUUsY0FBYztBQUNyRjtBQUNBO0FBQ0E7QUFDQTs7QUFFMkMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3p1c3RhbmQvZXNtL3ZhbmlsbGEubWpzP2M1NGYiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgY3JlYXRlU3RvcmVJbXBsID0gKGNyZWF0ZVN0YXRlKSA9PiB7XG4gIGxldCBzdGF0ZTtcbiAgY29uc3QgbGlzdGVuZXJzID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKTtcbiAgY29uc3Qgc2V0U3RhdGUgPSAocGFydGlhbCwgcmVwbGFjZSkgPT4ge1xuICAgIGNvbnN0IG5leHRTdGF0ZSA9IHR5cGVvZiBwYXJ0aWFsID09PSBcImZ1bmN0aW9uXCIgPyBwYXJ0aWFsKHN0YXRlKSA6IHBhcnRpYWw7XG4gICAgaWYgKCFPYmplY3QuaXMobmV4dFN0YXRlLCBzdGF0ZSkpIHtcbiAgICAgIGNvbnN0IHByZXZpb3VzU3RhdGUgPSBzdGF0ZTtcbiAgICAgIHN0YXRlID0gKHJlcGxhY2UgIT0gbnVsbCA/IHJlcGxhY2UgOiB0eXBlb2YgbmV4dFN0YXRlICE9PSBcIm9iamVjdFwiKSA/IG5leHRTdGF0ZSA6IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLCBuZXh0U3RhdGUpO1xuICAgICAgbGlzdGVuZXJzLmZvckVhY2goKGxpc3RlbmVyKSA9PiBsaXN0ZW5lcihzdGF0ZSwgcHJldmlvdXNTdGF0ZSkpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgZ2V0U3RhdGUgPSAoKSA9PiBzdGF0ZTtcbiAgY29uc3Qgc3Vic2NyaWJlID0gKGxpc3RlbmVyKSA9PiB7XG4gICAgbGlzdGVuZXJzLmFkZChsaXN0ZW5lcik7XG4gICAgcmV0dXJuICgpID0+IGxpc3RlbmVycy5kZWxldGUobGlzdGVuZXIpO1xuICB9O1xuICBjb25zdCBkZXN0cm95ID0gKCkgPT4ge1xuICAgIGlmICgoaW1wb3J0Lm1ldGEuZW52ICYmIGltcG9ydC5tZXRhLmVudi5NT0RFKSAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgXCJbREVQUkVDQVRFRF0gVGhlIGBkZXN0cm95YCBtZXRob2Qgd2lsbCBiZSB1bnN1cHBvcnRlZCBpbiBhIGZ1dHVyZSB2ZXJzaW9uLiBJbnN0ZWFkIHVzZSB1bnN1YnNjcmliZSBmdW5jdGlvbiByZXR1cm5lZCBieSBzdWJzY3JpYmUuIEV2ZXJ5dGhpbmcgd2lsbCBiZSBnYXJiYWdlLWNvbGxlY3RlZCBpZiBzdG9yZSBpcyBnYXJiYWdlLWNvbGxlY3RlZC5cIlxuICAgICAgKTtcbiAgICB9XG4gICAgbGlzdGVuZXJzLmNsZWFyKCk7XG4gIH07XG4gIGNvbnN0IGFwaSA9IHsgc2V0U3RhdGUsIGdldFN0YXRlLCBzdWJzY3JpYmUsIGRlc3Ryb3kgfTtcbiAgc3RhdGUgPSBjcmVhdGVTdGF0ZShzZXRTdGF0ZSwgZ2V0U3RhdGUsIGFwaSk7XG4gIHJldHVybiBhcGk7XG59O1xuY29uc3QgY3JlYXRlU3RvcmUgPSAoY3JlYXRlU3RhdGUpID0+IGNyZWF0ZVN0YXRlID8gY3JlYXRlU3RvcmVJbXBsKGNyZWF0ZVN0YXRlKSA6IGNyZWF0ZVN0b3JlSW1wbDtcbnZhciB2YW5pbGxhID0gKGNyZWF0ZVN0YXRlKSA9PiB7XG4gIGlmICgoaW1wb3J0Lm1ldGEuZW52ICYmIGltcG9ydC5tZXRhLmVudi5NT0RFKSAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICBjb25zb2xlLndhcm4oXG4gICAgICBcIltERVBSRUNBVEVEXSBEZWZhdWx0IGV4cG9ydCBpcyBkZXByZWNhdGVkLiBJbnN0ZWFkIHVzZSBpbXBvcnQgeyBjcmVhdGVTdG9yZSB9IGZyb20gJ3p1c3RhbmQvdmFuaWxsYScuXCJcbiAgICApO1xuICB9XG4gIHJldHVybiBjcmVhdGVTdG9yZShjcmVhdGVTdGF0ZSk7XG59O1xuXG5leHBvcnQgeyBjcmVhdGVTdG9yZSwgdmFuaWxsYSBhcyBkZWZhdWx0IH07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/zustand/esm/vanilla.mjs\n');
              }
            ),
            /***/
            "../../../node_modules/browser-fs-access/dist/index.mjs": (
              /*!**************************************************************!*\
                !*** ../../../node_modules/browser-fs-access/dist/index.mjs ***!
                \**************************************************************/
              /***/
              (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "directoryOpen": () => (/* binding */ r),\n/* harmony export */   "fileOpen": () => (/* binding */ n),\n/* harmony export */   "fileSave": () => (/* binding */ s),\n/* harmony export */   "supported": () => (/* binding */ e)\n/* harmony export */ });\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator["throw"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\nconst e = (() => {\n  if ("undefined" == typeof self) return !1;\n  if ("top" in self && self !== top) try {\n    top;\n  } catch (e) {\n    return !1;\n  } else if ("showOpenFilePicker" in self) return "showOpenFilePicker";\n  return !1;\n})(),\n      t = e ? __webpack_require__.e(/*! import() */ "vendor").then(__webpack_require__.bind(__webpack_require__, /*! ./file-open-002ab408.js */ "../../../node_modules/browser-fs-access/dist/file-open-002ab408.js")) : __webpack_require__.e(/*! import() */ "vendor").then(__webpack_require__.bind(__webpack_require__, /*! ./file-open-7c801643.js */ "../../../node_modules/browser-fs-access/dist/file-open-7c801643.js"));\n\nfunction n(...e) {\n  return __awaiter(this, void 0, void 0, function* () {\n    return (yield t).default(...e);\n  });\n}\n\nconst i = e ? __webpack_require__.e(/*! import() */ "vendor").then(__webpack_require__.bind(__webpack_require__, /*! ./directory-open-4ed118d0.js */ "../../../node_modules/browser-fs-access/dist/directory-open-4ed118d0.js")) : __webpack_require__.e(/*! import() */ "vendor").then(__webpack_require__.bind(__webpack_require__, /*! ./directory-open-01563666.js */ "../../../node_modules/browser-fs-access/dist/directory-open-01563666.js"));\n\nfunction r(...e) {\n  return __awaiter(this, void 0, void 0, function* () {\n    return (yield i).default(...e);\n  });\n}\n\nconst o = e ? __webpack_require__.e(/*! import() */ "vendor").then(__webpack_require__.bind(__webpack_require__, /*! ./file-save-745eba88.js */ "../../../node_modules/browser-fs-access/dist/file-save-745eba88.js")) : __webpack_require__.e(/*! import() */ "vendor").then(__webpack_require__.bind(__webpack_require__, /*! ./file-save-3189631c.js */ "../../../node_modules/browser-fs-access/dist/file-save-3189631c.js"));\n\nfunction s(...e) {\n  return __awaiter(this, void 0, void 0, function* () {\n    return (yield o).default(...e);\n  });\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Jyb3dzZXItZnMtYWNjZXNzL2Rpc3QvaW5kZXgubWpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxnQkFBZ0IsU0FBSSxJQUFJLFNBQUk7QUFDNUI7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBLElBQUk7QUFDSjtBQUNBLENBQUM7QUFDRCxjQUFjLHdNQUFpQyxHQUFHLHdNQUFpQzs7QUFFbkY7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBLGNBQWMsa05BQXNDLEdBQUcsa05BQXNDOztBQUU3RjtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUEsY0FBYyx3TUFBaUMsR0FBRyx3TUFBaUM7O0FBRW5GO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYnJvd3Nlci1mcy1hY2Nlc3MvZGlzdC9pbmRleC5tanM/ZDJiYSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19hd2FpdGVyID0gdGhpcyAmJiB0aGlzLl9fYXdhaXRlciB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAgIHJlc29sdmUodmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7XG4gICAgICB0cnkge1xuICAgICAgICBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJlamVjdChlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZWplY3QoZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHtcbiAgICAgIHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpO1xuICAgIH1cblxuICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgfSk7XG59O1xuXG5jb25zdCBlID0gKCgpID0+IHtcbiAgaWYgKFwidW5kZWZpbmVkXCIgPT0gdHlwZW9mIHNlbGYpIHJldHVybiAhMTtcbiAgaWYgKFwidG9wXCIgaW4gc2VsZiAmJiBzZWxmICE9PSB0b3ApIHRyeSB7XG4gICAgdG9wO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuICExO1xuICB9IGVsc2UgaWYgKFwic2hvd09wZW5GaWxlUGlja2VyXCIgaW4gc2VsZikgcmV0dXJuIFwic2hvd09wZW5GaWxlUGlja2VyXCI7XG4gIHJldHVybiAhMTtcbn0pKCksXG4gICAgICB0ID0gZSA/IGltcG9ydChcIi4vZmlsZS1vcGVuLTAwMmFiNDA4LmpzXCIpIDogaW1wb3J0KFwiLi9maWxlLW9wZW4tN2M4MDE2NDMuanNcIik7XG5cbmZ1bmN0aW9uIG4oLi4uZSkge1xuICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgIHJldHVybiAoeWllbGQgdCkuZGVmYXVsdCguLi5lKTtcbiAgfSk7XG59XG5cbmNvbnN0IGkgPSBlID8gaW1wb3J0KFwiLi9kaXJlY3Rvcnktb3Blbi00ZWQxMThkMC5qc1wiKSA6IGltcG9ydChcIi4vZGlyZWN0b3J5LW9wZW4tMDE1NjM2NjYuanNcIik7XG5cbmZ1bmN0aW9uIHIoLi4uZSkge1xuICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgIHJldHVybiAoeWllbGQgaSkuZGVmYXVsdCguLi5lKTtcbiAgfSk7XG59XG5cbmNvbnN0IG8gPSBlID8gaW1wb3J0KFwiLi9maWxlLXNhdmUtNzQ1ZWJhODguanNcIikgOiBpbXBvcnQoXCIuL2ZpbGUtc2F2ZS0zMTg5NjMxYy5qc1wiKTtcblxuZnVuY3Rpb24gcyguLi5lKSB7XG4gIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgcmV0dXJuICh5aWVsZCBvKS5kZWZhdWx0KC4uLmUpO1xuICB9KTtcbn1cblxuZXhwb3J0IHsgciBhcyBkaXJlY3RvcnlPcGVuLCBuIGFzIGZpbGVPcGVuLCBzIGFzIGZpbGVTYXZlLCBlIGFzIHN1cHBvcnRlZCB9OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/browser-fs-access/dist/index.mjs\n');
              }
            ),
            /***/
            "../../../node_modules/open-color/open-color.json": (
              /*!********************************************************!*\
                !*** ../../../node_modules/open-color/open-color.json ***!
                \********************************************************/
              /***/
              (module2) => {
                "use strict";
                module2.exports = JSON.parse('{"white":"#ffffff","black":"#000000","gray":["#f8f9fa","#f1f3f5","#e9ecef","#dee2e6","#ced4da","#adb5bd","#868e96","#495057","#343a40","#212529"],"red":["#fff5f5","#ffe3e3","#ffc9c9","#ffa8a8","#ff8787","#ff6b6b","#fa5252","#f03e3e","#e03131","#c92a2a"],"pink":["#fff0f6","#ffdeeb","#fcc2d7","#faa2c1","#f783ac","#f06595","#e64980","#d6336c","#c2255c","#a61e4d"],"grape":["#f8f0fc","#f3d9fa","#eebefa","#e599f7","#da77f2","#cc5de8","#be4bdb","#ae3ec9","#9c36b5","#862e9c"],"violet":["#f3f0ff","#e5dbff","#d0bfff","#b197fc","#9775fa","#845ef7","#7950f2","#7048e8","#6741d9","#5f3dc4"],"indigo":["#edf2ff","#dbe4ff","#bac8ff","#91a7ff","#748ffc","#5c7cfa","#4c6ef5","#4263eb","#3b5bdb","#364fc7"],"blue":["#e7f5ff","#d0ebff","#a5d8ff","#74c0fc","#4dabf7","#339af0","#228be6","#1c7ed6","#1971c2","#1864ab"],"cyan":["#e3fafc","#c5f6fa","#99e9f2","#66d9e8","#3bc9db","#22b8cf","#15aabf","#1098ad","#0c8599","#0b7285"],"teal":["#e6fcf5","#c3fae8","#96f2d7","#63e6be","#38d9a9","#20c997","#12b886","#0ca678","#099268","#087f5b"],"green":["#ebfbee","#d3f9d8","#b2f2bb","#8ce99a","#69db7c","#51cf66","#40c057","#37b24d","#2f9e44","#2b8a3e"],"lime":["#f4fce3","#e9fac8","#d8f5a2","#c0eb75","#a9e34b","#94d82d","#82c91e","#74b816","#66a80f","#5c940d"],"yellow":["#fff9db","#fff3bf","#ffec99","#ffe066","#ffd43b","#fcc419","#fab005","#f59f00","#f08c00","#e67700"],"orange":["#fff4e6","#ffe8cc","#ffd8a8","#ffc078","#ffa94d","#ff922b","#fd7e14","#f76707","#e8590c","#d9480f"]}');
              }
            ),
            /***/
            "../../locales/en.json": (
              /*!*****************************!*\
                !*** ../../locales/en.json ***!
                \*****************************/
              /***/
              (module2) => {
                "use strict";
                module2.exports = JSON.parse(`{"labels":{"paste":"Paste","pasteAsPlaintext":"Paste as plaintext","pasteCharts":"Paste charts","selectAll":"Select all","multiSelect":"Add element to selection","moveCanvas":"Move canvas","cut":"Cut","copy":"Copy","copyAsPng":"Copy to clipboard as PNG","copyAsSvg":"Copy to clipboard as SVG","copyText":"Copy to clipboard as text","bringForward":"Bring forward","sendToBack":"Send to back","bringToFront":"Bring to front","sendBackward":"Send backward","delete":"Delete","copyStyles":"Copy styles","pasteStyles":"Paste styles","stroke":"Stroke","background":"Background","fill":"Fill","strokeWidth":"Stroke width","strokeStyle":"Stroke style","strokeStyle_solid":"Solid","strokeStyle_dashed":"Dashed","strokeStyle_dotted":"Dotted","sloppiness":"Sloppiness","opacity":"Opacity","textAlign":"Text align","edges":"Edges","sharp":"Sharp","round":"Round","arrowheads":"Arrowheads","arrowhead_none":"None","arrowhead_arrow":"Arrow","arrowhead_bar":"Bar","arrowhead_dot":"Dot","arrowhead_triangle":"Triangle","fontSize":"Font size","fontFamily":"Font family","addWatermark":"Add \\"Made with Excalidraw\\"","handDrawn":"Hand-drawn","normal":"Normal","code":"Code","small":"Small","medium":"Medium","large":"Large","veryLarge":"Very large","solid":"Solid","hachure":"Hachure","zigzag":"Zigzag","crossHatch":"Cross-hatch","thin":"Thin","bold":"Bold","left":"Left","center":"Center","right":"Right","extraBold":"Extra bold","architect":"Architect","artist":"Artist","cartoonist":"Cartoonist","fileTitle":"File name","colorPicker":"Color picker","canvasColors":"Used on canvas","canvasBackground":"Canvas background","drawingCanvas":"Drawing canvas","layers":"Layers","actions":"Actions","language":"Language","liveCollaboration":"Live collaboration...","duplicateSelection":"Duplicate","untitled":"Untitled","name":"Name","yourName":"Your name","madeWithExcalidraw":"Made with Excalidraw","group":"Group selection","ungroup":"Ungroup selection","collaborators":"Collaborators","showGrid":"Show grid","addToLibrary":"Add to library","removeFromLibrary":"Remove from library","libraryLoadingMessage":"Loading library\u2026","libraries":"Browse libraries","loadingScene":"Loading scene\u2026","align":"Align","alignTop":"Align top","alignBottom":"Align bottom","alignLeft":"Align left","alignRight":"Align right","centerVertically":"Center vertically","centerHorizontally":"Center horizontally","distributeHorizontally":"Distribute horizontally","distributeVertically":"Distribute vertically","flipHorizontal":"Flip horizontal","flipVertical":"Flip vertical","viewMode":"View mode","share":"Share","showStroke":"Show stroke color picker","showBackground":"Show background color picker","toggleTheme":"Toggle theme","personalLib":"Personal Library","excalidrawLib":"Excalidraw Library","decreaseFontSize":"Decrease font size","increaseFontSize":"Increase font size","unbindText":"Unbind text","bindText":"Bind text to the container","createContainerFromText":"Wrap text in a container","link":{"edit":"Edit link","editEmbed":"Edit link & embed","create":"Create link","createEmbed":"Create link & embed","label":"Link","labelEmbed":"Link & embed","empty":"No link is set"},"lineEditor":{"edit":"Edit line","exit":"Exit line editor"},"elementLock":{"lock":"Lock","unlock":"Unlock","lockAll":"Lock all","unlockAll":"Unlock all"},"statusPublished":"Published","sidebarLock":"Keep sidebar open","selectAllElementsInFrame":"Select all elements in frame","removeAllElementsFromFrame":"Remove all elements from frame","eyeDropper":"Pick color from canvas"},"library":{"noItems":"No items added yet...","hint_emptyLibrary":"Select an item on canvas to add it here, or install a library from the public repository, below.","hint_emptyPrivateLibrary":"Select an item on canvas to add it here."},"buttons":{"clearReset":"Reset the canvas","exportJSON":"Export to file","exportImage":"Export image...","export":"Save to...","copyToClipboard":"Copy to clipboard","save":"Save to current file","saveAs":"Save as","load":"Open","getShareableLink":"Get shareable link","close":"Close","selectLanguage":"Select language","scrollBackToContent":"Scroll back to content","zoomIn":"Zoom in","zoomOut":"Zoom out","resetZoom":"Reset zoom","menu":"Menu","done":"Done","edit":"Edit","undo":"Undo","redo":"Redo","resetLibrary":"Reset library","createNewRoom":"Create new room","fullScreen":"Full screen","darkMode":"Dark mode","lightMode":"Light mode","zenMode":"Zen mode","objectsSnapMode":"Snap to objects","exitZenMode":"Exit zen mode","cancel":"Cancel","clear":"Clear","remove":"Remove","embed":"Toggle embedding","publishLibrary":"Publish","submit":"Submit","confirm":"Confirm","embeddableInteractionButton":"Click to interact"},"alerts":{"clearReset":"This will clear the whole canvas. Are you sure?","couldNotCreateShareableLink":"Couldn't create shareable link.","couldNotCreateShareableLinkTooBig":"Couldn't create shareable link: the scene is too big","couldNotLoadInvalidFile":"Couldn't load invalid file","importBackendFailed":"Importing from backend failed.","cannotExportEmptyCanvas":"Cannot export empty canvas.","couldNotCopyToClipboard":"Couldn't copy to clipboard.","decryptFailed":"Couldn't decrypt data.","uploadedSecurly":"The upload has been secured with end-to-end encryption, which means that Excalidraw server and third parties can't read the content.","loadSceneOverridePrompt":"Loading external drawing will replace your existing content. Do you wish to continue?","collabStopOverridePrompt":"Stopping the session will overwrite your previous, locally stored drawing. Are you sure?\\n\\n(If you want to keep your local drawing, simply close the browser tab instead.)","errorAddingToLibrary":"Couldn't add item to the library","errorRemovingFromLibrary":"Couldn't remove item from the library","confirmAddLibrary":"This will add {{numShapes}} shape(s) to your library. Are you sure?","imageDoesNotContainScene":"This image does not seem to contain any scene data. Have you enabled scene embedding during export?","cannotRestoreFromImage":"Scene couldn't be restored from this image file","invalidSceneUrl":"Couldn't import scene from the supplied URL. It's either malformed, or doesn't contain valid Excalidraw JSON data.","resetLibrary":"This will clear your library. Are you sure?","removeItemsFromsLibrary":"Delete {{count}} item(s) from library?","invalidEncryptionKey":"Encryption key must be of 22 characters. Live collaboration is disabled.","collabOfflineWarning":"No internet connection available.\\nYour changes will not be saved!"},"errors":{"unsupportedFileType":"Unsupported file type.","imageInsertError":"Couldn't insert image. Try again later...","fileTooBig":"File is too big. Maximum allowed size is {{maxSize}}.","svgImageInsertError":"Couldn't insert SVG image. The SVG markup looks invalid.","failedToFetchImage":"Failed to fetch image.","invalidSVGString":"Invalid SVG.","cannotResolveCollabServer":"Couldn't connect to the collab server. Please reload the page and try again.","importLibraryError":"Couldn't load library","collabSaveFailed":"Couldn't save to the backend database. If problems persist, you should save your file locally to ensure you don't lose your work.","collabSaveFailed_sizeExceeded":"Couldn't save to the backend database, the canvas seems to be too big. You should save the file locally to ensure you don't lose your work.","imageToolNotSupported":"Images are disabled.","brave_measure_text_error":{"line1":"Looks like you are using Brave browser with the <bold>Aggressively Block Fingerprinting</bold> setting enabled.","line2":"This could result in breaking the <bold>Text Elements</bold> in your drawings.","line3":"We strongly recommend disabling this setting. You can follow <link>these steps</link> on how to do so.","line4":"If disabling this setting doesn't fix the display of text elements, please open an <issueLink>issue</issueLink> on our GitHub, or write us on <discordLink>Discord</discordLink>"},"libraryElementTypeError":{"embeddable":"Embeddable elements cannot be added to the library.","image":"Support for adding images to the library coming soon!"},"asyncPasteFailedOnRead":"Couldn't paste (couldn't read from system clipboard).","asyncPasteFailedOnParse":"Couldn't paste.","copyToSystemClipboardFailed":"Couldn't copy to clipboard."},"toolBar":{"selection":"Selection","image":"Insert image","rectangle":"Rectangle","diamond":"Diamond","ellipse":"Ellipse","arrow":"Arrow","line":"Line","freedraw":"Draw","text":"Text","library":"Library","lock":"Keep selected tool active after drawing","penMode":"Pen mode - prevent touch","link":"Add/ Update link for a selected shape","eraser":"Eraser","frame":"Frame tool","embeddable":"Web Embed","laser":"Laser pointer","hand":"Hand (panning tool)","extraTools":"More tools","mermaidToExcalidraw":"Mermaid to Excalidraw"},"headings":{"canvasActions":"Canvas actions","selectedShapeActions":"Selected shape actions","shapes":"Shapes"},"hints":{"canvasPanning":"To move canvas, hold mouse wheel or spacebar while dragging, or use the hand tool","linearElement":"Click to start multiple points, drag for single line","freeDraw":"Click and drag, release when you're finished","text":"Tip: you can also add text by double-clicking anywhere with the selection tool","embeddable":"Click-drag to create a website embed","text_selected":"Double-click or press ENTER to edit text","text_editing":"Press Escape or CtrlOrCmd+ENTER to finish editing","linearElementMulti":"Click on last point or press Escape or Enter to finish","lockAngle":"You can constrain angle by holding SHIFT","resize":"You can constrain proportions by holding SHIFT while resizing,\\nhold ALT to resize from the center","resizeImage":"You can resize freely by holding SHIFT,\\nhold ALT to resize from the center","rotate":"You can constrain angles by holding SHIFT while rotating","lineEditor_info":"Hold CtrlOrCmd and Double-click or press CtrlOrCmd + Enter to edit points","lineEditor_pointSelected":"Press Delete to remove point(s),\\nCtrlOrCmd+D to duplicate, or drag to move","lineEditor_nothingSelected":"Select a point to edit (hold SHIFT to select multiple),\\nor hold Alt and click to add new points","placeImage":"Click to place the image, or click and drag to set its size manually","publishLibrary":"Publish your own library","bindTextToElement":"Press enter to add text","deepBoxSelect":"Hold CtrlOrCmd to deep select, and to prevent dragging","eraserRevert":"Hold Alt to revert the elements marked for deletion","firefox_clipboard_write":"This feature can likely be enabled by setting the \\"dom.events.asyncClipboard.clipboardItem\\" flag to \\"true\\". To change the browser flags in Firefox, visit the \\"about:config\\" page.","disableSnapping":"Hold CtrlOrCmd to disable snapping"},"canvasError":{"cannotShowPreview":"Cannot show preview","canvasTooBig":"The canvas may be too big.","canvasTooBigTip":"Tip: try moving the farthest elements a bit closer together."},"errorSplash":{"headingMain":"Encountered an error. Try <button>reloading the page</button>.","clearCanvasMessage":"If reloading doesn't work, try <button>clearing the canvas</button>.","clearCanvasCaveat":" This will result in loss of work ","trackedToSentry":"The error with identifier {{eventId}} was tracked on our system.","openIssueMessage":"We were very cautious not to include your scene information on the error. If your scene is not private, please consider following up on our <button>bug tracker</button>. Please include information below by copying and pasting into the GitHub issue.","sceneContent":"Scene content:"},"roomDialog":{"desc_intro":"You can invite people to your current scene to collaborate with you.","desc_privacy":"Don't worry, the session uses end-to-end encryption, so whatever you draw will stay private. Not even our server will be able to see what you come up with.","button_startSession":"Start session","button_stopSession":"Stop session","desc_inProgressIntro":"Live-collaboration session is now in progress.","desc_shareLink":"Share this link with anyone you want to collaborate with:","desc_exitSession":"Stopping the session will disconnect you from the room, but you'll be able to continue working with the scene, locally. Note that this won't affect other people, and they'll still be able to collaborate on their version.","shareTitle":"Join a live collaboration session on Excalidraw"},"errorDialog":{"title":"Error"},"exportDialog":{"disk_title":"Save to disk","disk_details":"Export the scene data to a file from which you can import later.","disk_button":"Save to file","link_title":"Shareable link","link_details":"Export as a read-only link.","link_button":"Export to Link","excalidrawplus_description":"Save the scene to your Excalidraw+ workspace.","excalidrawplus_button":"Export","excalidrawplus_exportError":"Couldn't export to Excalidraw+ at this moment..."},"helpDialog":{"blog":"Read our blog","click":"click","deepSelect":"Deep select","deepBoxSelect":"Deep select within box, and prevent dragging","curvedArrow":"Curved arrow","curvedLine":"Curved line","documentation":"Documentation","doubleClick":"double-click","drag":"drag","editor":"Editor","editLineArrowPoints":"Edit line/arrow points","editText":"Edit text / add label","github":"Found an issue? Submit","howto":"Follow our guides","or":"or","preventBinding":"Prevent arrow binding","tools":"Tools","shortcuts":"Keyboard shortcuts","textFinish":"Finish editing (text editor)","textNewLine":"Add new line (text editor)","title":"Help","view":"View","zoomToFit":"Zoom to fit all elements","zoomToSelection":"Zoom to selection","toggleElementLock":"Lock/unlock selection","movePageUpDown":"Move page up/down","movePageLeftRight":"Move page left/right"},"clearCanvasDialog":{"title":"Clear canvas"},"publishDialog":{"title":"Publish library","itemName":"Item name","authorName":"Author name","githubUsername":"GitHub username","twitterUsername":"Twitter username","libraryName":"Library name","libraryDesc":"Library description","website":"Website","placeholder":{"authorName":"Your name or username","libraryName":"Name of your library","libraryDesc":"Description of your library to help people understand its usage","githubHandle":"GitHub handle (optional), so you can edit the library once submitted for review","twitterHandle":"Twitter username (optional), so we know who to credit when promoting over Twitter","website":"Link to your personal website or elsewhere (optional)"},"errors":{"required":"Required","website":"Enter a valid URL"},"noteDescription":"Submit your library to be included in the <link>public library repository</link> for other people to use in their drawings.","noteGuidelines":"The library needs to be manually approved first. Please read the <link>guidelines</link> before submitting. You will need a GitHub account to communicate and make changes if requested, but it is not strictly required.","noteLicense":"By submitting, you agree the library will be published under the <link>MIT License</link>, which in short means anyone can use them without restrictions.","noteItems":"Each library item must have its own name so it's filterable. The following library items will be included:","atleastOneLibItem":"Please select at least one library item to get started","republishWarning":"Note: some of the selected items are marked as already published/submitted. You should only resubmit items when updating an existing library or submission."},"publishSuccessDialog":{"title":"Library submitted","content":"Thank you {{authorName}}. Your library has been submitted for review. You can track the status <link>here</link>"},"confirmDialog":{"resetLibrary":"Reset library","removeItemsFromLib":"Remove selected items from library"},"imageExportDialog":{"header":"Export image","label":{"withBackground":"Background","onlySelected":"Only selected","darkMode":"Dark mode","embedScene":"Embed scene","scale":"Scale","padding":"Padding"},"tooltip":{"embedScene":"Scene data will be saved into the exported PNG/SVG file so that the scene can be restored from it.\\nWill increase exported file size."},"title":{"exportToPng":"Export to PNG","exportToSvg":"Export to SVG","copyPngToClipboard":"Copy PNG to clipboard"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Copy to clipboard"}},"encrypted":{"tooltip":"Your drawings are end-to-end encrypted so Excalidraw's servers will never see them.","link":"Blog post on end-to-end encryption in Excalidraw"},"stats":{"angle":"Angle","element":"Element","elements":"Elements","height":"Height","scene":"Scene","selected":"Selected","storage":"Storage","title":"Stats for nerds","total":"Total","version":"Version","versionCopy":"Click to copy","versionNotAvailable":"Version not available","width":"Width"},"toast":{"addedToLibrary":"Added to library","copyStyles":"Copied styles.","copyToClipboard":"Copied to clipboard.","copyToClipboardAsPng":"Copied {{exportSelection}} to clipboard as PNG\\n({{exportColorScheme}})","fileSaved":"File saved.","fileSavedToFilename":"Saved to {filename}","canvas":"canvas","selection":"selection","pasteAsSingleElement":"Use {{shortcut}} to paste as a single element,\\nor paste into an existing text editor","unableToEmbed":"Embedding this url is currently not allowed. Raise an issue on GitHub to request the url whitelisted","unrecognizedLinkFormat":"The link you embedded does not match the expected format. Please try to paste the 'embed' string provided by the source site"},"colors":{"transparent":"Transparent","black":"Black","white":"White","red":"Red","pink":"Pink","grape":"Grape","violet":"Violet","gray":"Gray","blue":"Blue","cyan":"Cyan","teal":"Teal","green":"Green","yellow":"Yellow","orange":"Orange","bronze":"Bronze"},"welcomeScreen":{"app":{"center_heading":"All your data is saved locally in your browser.","center_heading_plus":"Did you want to go to the Excalidraw+ instead?","menuHint":"Export, preferences, languages, ..."},"defaults":{"menuHint":"Export, preferences, and more...","center_heading":"Diagrams. Made. Simple.","toolbarHint":"Pick a tool & Start drawing!","helpHint":"Shortcuts & help"}},"colorPicker":{"mostUsedCustomColors":"Most used custom colors","colors":"Colors","shades":"Shades","hexCode":"Hex code","noShades":"No shades available for this color"},"overwriteConfirm":{"action":{"exportToImage":{"title":"Export as image","button":"Export as image","description":"Export the scene data as an image from which you can import later."},"saveToDisk":{"title":"Save to disk","button":"Save to disk","description":"Export the scene data to a file from which you can import later."},"excalidrawPlus":{"title":"Excalidraw+","button":"Export to Excalidraw+","description":"Save the scene to your Excalidraw+ workspace."}},"modal":{"loadFromFile":{"title":"Load from file","button":"Load from file","description":"Loading from a file will <bold>replace your existing content</bold>.<br></br>You can back up your drawing first using one of the options below."},"shareableLink":{"title":"Load from link","button":"Replace my content","description":"Loading external drawing will <bold>replace your existing content</bold>.<br></br>You can back up your drawing first by using one of the options below."}}},"mermaid":{"title":"Mermaid to Excalidraw","button":"Insert","description":"Currently only <flowchartLink>Flowcharts</flowchartLink> and <sequenceLink>Sequence Diagrams</sequenceLink> are supported. The other types will be rendered as image in Excalidraw.","syntax":"Mermaid Syntax","preview":"Preview"}}`);
              }
            ),
            /***/
            "../../locales/percentages.json": (
              /*!**************************************!*\
                !*** ../../locales/percentages.json ***!
                \**************************************/
              /***/
              (module2) => {
                "use strict";
                module2.exports = JSON.parse('{"ar-SA":99,"az-AZ":18,"bg-BG":75,"bn-BD":55,"ca-ES":81,"cs-CZ":91,"da-DK":31,"de-DE":100,"el-GR":85,"en":100,"es-ES":96,"eu-ES":99,"fa-IR":87,"fi-FI":81,"fr-FR":98,"gl-ES":90,"he-IL":81,"hi-IN":75,"hu-HU":70,"id-ID":96,"it-IT":99,"ja-JP":95,"kaa":34,"kab-KAB":80,"kk-KZ":20,"km-KH":87,"ko-KR":100,"ku-TR":92,"lt-LT":51,"lv-LV":82,"mr-IN":92,"my-MM":37,"nb-NO":99,"nl-NL":79,"nn-NO":71,"oc-FR":79,"pa-IN":82,"pl-PL":100,"pt-BR":96,"pt-PT":88,"ro-RO":98,"ru-RU":94,"si-LK":8,"sk-SK":99,"sl-SI":100,"sv-SE":100,"ta-IN":85,"th-TH":46,"tr-TR":91,"uk-UA":99,"vi-VN":51,"zh-CN":99,"zh-HK":24,"zh-TW":100}');
              }
            )
            /******/
          };
          var __webpack_module_cache__ = {};
          function __webpack_require__(moduleId) {
            var cachedModule = __webpack_module_cache__[moduleId];
            if (cachedModule !== void 0) {
              return cachedModule.exports;
            }
            var module2 = __webpack_module_cache__[moduleId] = {
              /******/
              id: moduleId,
              /******/
              // no module.loaded needed
              /******/
              exports: {}
              /******/
            };
            __webpack_modules__[moduleId].call(module2.exports, module2, module2.exports, __webpack_require__);
            return module2.exports;
          }
          __webpack_require__.m = __webpack_modules__;
          (() => {
            __webpack_require__.n = (module2) => {
              var getter = module2 && module2.__esModule ? (
                /******/
                () => module2["default"]
              ) : (
                /******/
                () => module2
              );
              __webpack_require__.d(getter, { a: getter });
              return getter;
            };
          })();
          (() => {
            var getProto = Object.getPrototypeOf ? (obj) => Object.getPrototypeOf(obj) : (obj) => obj.__proto__;
            var leafPrototypes;
            __webpack_require__.t = function(value, mode) {
              if (mode & 1) value = this(value);
              if (mode & 8) return value;
              if (typeof value === "object" && value) {
                if (mode & 4 && value.__esModule) return value;
                if (mode & 16 && typeof value.then === "function") return value;
              }
              var ns = /* @__PURE__ */ Object.create(null);
              __webpack_require__.r(ns);
              var def = {};
              leafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];
              for (var current = mode & 2 && value; typeof current == "object" && !~leafPrototypes.indexOf(current); current = getProto(current)) {
                Object.getOwnPropertyNames(current).forEach((key) => def[key] = () => value[key]);
              }
              def["default"] = () => value;
              __webpack_require__.d(ns, def);
              return ns;
            };
          })();
          (() => {
            __webpack_require__.d = (exports2, definition) => {
              for (var key in definition) {
                if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports2, key)) {
                  Object.defineProperty(exports2, key, { enumerable: true, get: definition[key] });
                }
              }
            };
          })();
          (() => {
            __webpack_require__.f = {};
            __webpack_require__.e = (chunkId) => {
              return Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {
                __webpack_require__.f[key](chunkId, promises);
                return promises;
              }, []));
            };
          })();
          (() => {
            __webpack_require__.u = (chunkId) => {
              return "excalidraw-assets-dev/" + chunkId + "-" + { "locales/ar-SA-json": "f35c4f87e6e2dcf7c20a", "locales/az-AZ-json": "5d70eb8bf3f20abc3bac", "locales/bg-BG-json": "88cced5fd8a6d8298501", "locales/bn-BD-json": "a06588c61947851c8579", "locales/ca-ES-json": "9b25933a25836cc0be23", "locales/cs-CZ-json": "1d6c97ea271d017058c9", "locales/da-DK-json": "34a60c9843cecd71376f", "locales/de-DE-json": "d13450595b795867412b", "locales/el-GR-json": "c854b199f3ac07d40294", "locales/es-ES-json": "6a667bfbf4ff3d0181a7", "locales/eu-ES-json": "3ec11367a80491b09056", "locales/fa-IR-json": "e459964936177074abe7", "locales/fi-FI-json": "f7839bb6f5ad0a3c7e0d", "locales/fr-FR-json": "20e8535e2675a6736c81", "locales/gl-ES-json": "861f534b46c0db1fa8db", "locales/he-IL-json": "504d78736487793ffccd", "locales/hi-IN-json": "82d988431011c330242a", "locales/hu-HU-json": "d4150250980011726fd9", "locales/id-ID-json": "82e300d4fe1e87adba9b", "locales/it-IT-json": "6ecc9aec005faab90f41", "locales/ja-JP-json": "3c6a065f0f1303b297fa", "locales/kaa-json": "983a9ccc652aa01980f3", "locales/kab-KAB-json": "cac3cf66f1db5c1a6e19", "locales/kk-KZ-json": "e9dd81c22419efd44478", "locales/km-KH-json": "be77acee611d96d88dda", "locales/ko-KR-json": "ad8e9d31d52b26f3fbc2", "locales/ku-TR-json": "ed67af91ae1920f114a8", "locales/lt-LT-json": "2c3d35d6fb5dbf95a27e", "locales/lv-LV-json": "fa8973c231afb2ddafe9", "locales/mr-IN-json": "2949146743072eb11b40", "locales/my-MM-json": "4c04ffe415641f69ed75", "locales/nb-NO-json": "b8d7a5b70562dacdad45", "locales/nl-NL-json": "a65f82a25fe038c45d35", "locales/nn-NO-json": "858fbccbc5be386977db", "locales/oc-FR-json": "a68ea08272c8da3c0e3f", "locales/pa-IN-json": "90a2b3775bd7d8983def", "locales/pl-PL-json": "9bb55330d5aaf336646e", "locales/pt-BR-json": "3635e753c1b6e5b681fa", "locales/pt-PT-json": "0d3694a92e0134549086", "locales/ro-RO-json": "e83fda16c860c6d0b383", "locales/ru-RU-json": "ddc13261ce5d864d36a9", "locales/si-LK-json": "16eb66dbfc6c55fc85b1", "locales/sk-SK-json": "782ead8707f2ad0e8e4e", "locales/sl-SI-json": "82e55cf7cdbdc7d7f959", "locales/sv-SE-json": "2f362899d3ac4089534f", "locales/ta-IN-json": "07623a485202da63a84b", "locales/th-TH-json": "4e4b97f5f6e905191383", "locales/tr-TR-json": "003be1cf6ebf0b787dec", "locales/uk-UA-json": "ca6ea1156db2649d3e27", "locales/vi-VN-json": "9a5e5fab41a1a120a916", "locales/zh-CN-json": "670c28a6ae1e3ddecaa4", "locales/zh-HK-json": "93b9b676d4f4b5702797", "locales/zh-TW-json": "805d10b0eed9ca51b318", "vendor": "39727f4653a274cf18f6" }[chunkId] + ".js";
            };
          })();
          (() => {
            __webpack_require__.g = function() {
              if (typeof globalThis === "object") return globalThis;
              try {
                return this || new Function("return this")();
              } catch (e) {
                if (typeof window === "object") return window;
              }
            }();
          })();
          (() => {
            __webpack_require__.o = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);
          })();
          (() => {
            var inProgress = {};
            var dataWebpackPrefix = "ExcalidrawLib:";
            __webpack_require__.l = (url, done, key, chunkId) => {
              if (inProgress[url]) {
                inProgress[url].push(done);
                return;
              }
              var script, needAttach;
              if (key !== void 0) {
                var scripts = document.getElementsByTagName("script");
                for (var i = 0; i < scripts.length; i++) {
                  var s = scripts[i];
                  if (s.getAttribute("src") == url || s.getAttribute("data-webpack") == dataWebpackPrefix + key) {
                    script = s;
                    break;
                  }
                }
              }
              if (!script) {
                needAttach = true;
                script = document.createElement("script");
                script.charset = "utf-8";
                script.timeout = 120;
                if (__webpack_require__.nc) {
                  script.setAttribute("nonce", __webpack_require__.nc);
                }
                script.setAttribute("data-webpack", dataWebpackPrefix + key);
                script.src = url;
              }
              inProgress[url] = [done];
              var onScriptComplete = (prev, event) => {
                script.onerror = script.onload = null;
                clearTimeout(timeout);
                var doneFns = inProgress[url];
                delete inProgress[url];
                script.parentNode && script.parentNode.removeChild(script);
                doneFns && doneFns.forEach((fn) => fn(event));
                if (prev) return prev(event);
              };
              var timeout = setTimeout(onScriptComplete.bind(null, void 0, { type: "timeout", target: script }), 12e4);
              script.onerror = onScriptComplete.bind(null, script.onerror);
              script.onload = onScriptComplete.bind(null, script.onload);
              needAttach && document.head.appendChild(script);
            };
          })();
          (() => {
            __webpack_require__.r = (exports2) => {
              if (typeof Symbol !== "undefined" && Symbol.toStringTag) {
                Object.defineProperty(exports2, Symbol.toStringTag, { value: "Module" });
              }
              Object.defineProperty(exports2, "__esModule", { value: true });
            };
          })();
          (() => {
            __webpack_require__.p = "";
          })();
          (() => {
            __webpack_require__.b = document.baseURI || self.location.href;
            var installedChunks = {
              /******/
              "excalidraw-with-preact.development": 0
              /******/
            };
            __webpack_require__.f.j = (chunkId, promises) => {
              var installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : void 0;
              if (installedChunkData !== 0) {
                if (installedChunkData) {
                  promises.push(installedChunkData[2]);
                } else {
                  if (true) {
                    var promise = new Promise((resolve, reject) => installedChunkData = installedChunks[chunkId] = [resolve, reject]);
                    promises.push(installedChunkData[2] = promise);
                    var url = __webpack_require__.p + __webpack_require__.u(chunkId);
                    var error = new Error();
                    var loadingEnded = (event) => {
                      if (__webpack_require__.o(installedChunks, chunkId)) {
                        installedChunkData = installedChunks[chunkId];
                        if (installedChunkData !== 0) installedChunks[chunkId] = void 0;
                        if (installedChunkData) {
                          var errorType = event && (event.type === "load" ? "missing" : event.type);
                          var realSrc = event && event.target && event.target.src;
                          error.message = "Loading chunk " + chunkId + " failed.\n(" + errorType + ": " + realSrc + ")";
                          error.name = "ChunkLoadError";
                          error.type = errorType;
                          error.request = realSrc;
                          installedChunkData[1](error);
                        }
                      }
                    };
                    __webpack_require__.l(url, loadingEnded, "chunk-" + chunkId, chunkId);
                  } else installedChunks[chunkId] = 0;
                }
              }
            };
            var webpackJsonpCallback = (parentChunkLoadingFunction, data) => {
              var [chunkIds, moreModules, runtime] = data;
              var moduleId, chunkId, i = 0;
              if (chunkIds.some((id) => installedChunks[id] !== 0)) {
                for (moduleId in moreModules) {
                  if (__webpack_require__.o(moreModules, moduleId)) {
                    __webpack_require__.m[moduleId] = moreModules[moduleId];
                  }
                }
                if (runtime) var result = runtime(__webpack_require__);
              }
              if (parentChunkLoadingFunction) parentChunkLoadingFunction(data);
              for (; i < chunkIds.length; i++) {
                chunkId = chunkIds[i];
                if (__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {
                  installedChunks[chunkId][0]();
                }
                installedChunks[chunkId] = 0;
              }
            };
            var chunkLoadingGlobal = globalThis["webpackChunkExcalidrawLib"] = globalThis["webpackChunkExcalidrawLib"] || [];
            chunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));
            chunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));
          })();
          (() => {
            __webpack_require__.nc = void 0;
          })();
          var __webpack_exports__ = __webpack_require__("./entry.js");
          return __webpack_exports__;
        })()
      );
    });
  }
});

// node_modules/@excalidraw/excalidraw/dist/excalidraw.development.js
var require_excalidraw_development = __commonJS({
  "node_modules/@excalidraw/excalidraw/dist/excalidraw.development.js"(exports, module) {
    (function webpackUniversalModuleDefinition(root, factory) {
      if (typeof exports === "object" && typeof module === "object")
        module.exports = factory(require_react(), require_react_dom());
      else if (typeof define === "function" && define.amd)
        define(["react", "react-dom"], factory);
      else if (typeof exports === "object")
        exports["ExcalidrawLib"] = factory(require_react(), require_react_dom());
      else
        root["ExcalidrawLib"] = factory(root["React"], root["ReactDOM"]);
    })(globalThis, (__WEBPACK_EXTERNAL_MODULE_react__, __WEBPACK_EXTERNAL_MODULE_react_dom__) => {
      return (
        /******/
        (() => {
          var __webpack_modules__ = {
            /***/
            "../../../node_modules/@braintree/sanitize-url/dist/index.js": (
              /*!*******************************************************************!*\
                !*** ../../../node_modules/@braintree/sanitize-url/dist/index.js ***!
                \*******************************************************************/
              /***/
              (__unused_webpack_module, exports) => {
                "use strict";
                eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.sanitizeUrl = void 0;\nvar invalidProtocolRegex = /^([^\\w]*)(javascript|data|vbscript)/im;\nvar htmlEntitiesRegex = /&#(\\w+)(^\\w|;)?/g;\nvar htmlCtrlEntityRegex = /&(newline|tab);/gi;\nvar ctrlCharactersRegex = /[\\u0000-\\u001F\\u007F-\\u009F\\u2000-\\u200D\\uFEFF]/gim;\nvar urlSchemeRegex = /^.+(:|&colon;)/gim;\nvar relativeFirstCharacters = [".", "/"];\nfunction isRelativeUrlWithoutProtocol(url) {\n    return relativeFirstCharacters.indexOf(url[0]) > -1;\n}\n// adapted from https://stackoverflow.com/a/29824550/2601552\nfunction decodeHtmlCharacters(str) {\n    return str.replace(htmlEntitiesRegex, function (match, dec) {\n        return String.fromCharCode(dec);\n    });\n}\nfunction sanitizeUrl(url) {\n    var sanitizedUrl = decodeHtmlCharacters(url || "")\n        .replace(htmlCtrlEntityRegex, "")\n        .replace(ctrlCharactersRegex, "")\n        .trim();\n    if (!sanitizedUrl) {\n        return "about:blank";\n    }\n    if (isRelativeUrlWithoutProtocol(sanitizedUrl)) {\n        return sanitizedUrl;\n    }\n    var urlSchemeParseResults = sanitizedUrl.match(urlSchemeRegex);\n    if (!urlSchemeParseResults) {\n        return sanitizedUrl;\n    }\n    var urlScheme = urlSchemeParseResults[0];\n    if (invalidProtocolRegex.test(urlScheme)) {\n        return "about:blank";\n    }\n    return sanitizedUrl;\n}\nexports.sanitizeUrl = sanitizeUrl;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BicmFpbnRyZWUvc2FuaXRpemUtdXJsL2Rpc3QvaW5kZXguanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkMsRUFBRSxhQUFhLEVBQUM7QUFDN0QsbUJBQW1CO0FBQ25CO0FBQ0Esc0NBQXNDO0FBQ3RDLDBDQUEwQztBQUMxQztBQUNBLG1DQUFtQztBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYnJhaW50cmVlL3Nhbml0aXplLXVybC9kaXN0L2luZGV4LmpzP2NkM2IiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLnNhbml0aXplVXJsID0gdm9pZCAwO1xudmFyIGludmFsaWRQcm90b2NvbFJlZ2V4ID0gL14oW15cXHddKikoamF2YXNjcmlwdHxkYXRhfHZic2NyaXB0KS9pbTtcbnZhciBodG1sRW50aXRpZXNSZWdleCA9IC8mIyhcXHcrKSheXFx3fDspPy9nO1xudmFyIGh0bWxDdHJsRW50aXR5UmVnZXggPSAvJihuZXdsaW5lfHRhYik7L2dpO1xudmFyIGN0cmxDaGFyYWN0ZXJzUmVnZXggPSAvW1xcdTAwMDAtXFx1MDAxRlxcdTAwN0YtXFx1MDA5RlxcdTIwMDAtXFx1MjAwRFxcdUZFRkZdL2dpbTtcbnZhciB1cmxTY2hlbWVSZWdleCA9IC9eLisoOnwmY29sb247KS9naW07XG52YXIgcmVsYXRpdmVGaXJzdENoYXJhY3RlcnMgPSBbXCIuXCIsIFwiL1wiXTtcbmZ1bmN0aW9uIGlzUmVsYXRpdmVVcmxXaXRob3V0UHJvdG9jb2wodXJsKSB7XG4gICAgcmV0dXJuIHJlbGF0aXZlRmlyc3RDaGFyYWN0ZXJzLmluZGV4T2YodXJsWzBdKSA+IC0xO1xufVxuLy8gYWRhcHRlZCBmcm9tIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8yOTgyNDU1MC8yNjAxNTUyXG5mdW5jdGlvbiBkZWNvZGVIdG1sQ2hhcmFjdGVycyhzdHIpIHtcbiAgICByZXR1cm4gc3RyLnJlcGxhY2UoaHRtbEVudGl0aWVzUmVnZXgsIGZ1bmN0aW9uIChtYXRjaCwgZGVjKSB7XG4gICAgICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGRlYyk7XG4gICAgfSk7XG59XG5mdW5jdGlvbiBzYW5pdGl6ZVVybCh1cmwpIHtcbiAgICB2YXIgc2FuaXRpemVkVXJsID0gZGVjb2RlSHRtbENoYXJhY3RlcnModXJsIHx8IFwiXCIpXG4gICAgICAgIC5yZXBsYWNlKGh0bWxDdHJsRW50aXR5UmVnZXgsIFwiXCIpXG4gICAgICAgIC5yZXBsYWNlKGN0cmxDaGFyYWN0ZXJzUmVnZXgsIFwiXCIpXG4gICAgICAgIC50cmltKCk7XG4gICAgaWYgKCFzYW5pdGl6ZWRVcmwpIHtcbiAgICAgICAgcmV0dXJuIFwiYWJvdXQ6YmxhbmtcIjtcbiAgICB9XG4gICAgaWYgKGlzUmVsYXRpdmVVcmxXaXRob3V0UHJvdG9jb2woc2FuaXRpemVkVXJsKSkge1xuICAgICAgICByZXR1cm4gc2FuaXRpemVkVXJsO1xuICAgIH1cbiAgICB2YXIgdXJsU2NoZW1lUGFyc2VSZXN1bHRzID0gc2FuaXRpemVkVXJsLm1hdGNoKHVybFNjaGVtZVJlZ2V4KTtcbiAgICBpZiAoIXVybFNjaGVtZVBhcnNlUmVzdWx0cykge1xuICAgICAgICByZXR1cm4gc2FuaXRpemVkVXJsO1xuICAgIH1cbiAgICB2YXIgdXJsU2NoZW1lID0gdXJsU2NoZW1lUGFyc2VSZXN1bHRzWzBdO1xuICAgIGlmIChpbnZhbGlkUHJvdG9jb2xSZWdleC50ZXN0KHVybFNjaGVtZSkpIHtcbiAgICAgICAgcmV0dXJuIFwiYWJvdXQ6YmxhbmtcIjtcbiAgICB9XG4gICAgcmV0dXJuIHNhbml0aXplZFVybDtcbn1cbmV4cG9ydHMuc2FuaXRpemVVcmwgPSBzYW5pdGl6ZVVybDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/@braintree/sanitize-url/dist/index.js\n');
              }
            ),
            /***/
            "../../../node_modules/@excalidraw/laser-pointer/dist/esm.js": (
              /*!*******************************************************************!*\
                !*** ../../../node_modules/@excalidraw/laser-pointer/dist/esm.js ***!
                \*******************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "LaserPointer": () => (/* binding */ $94cfa2cfccc8cc22$export$6531021b3bf36eae)\n/* harmony export */ });\nfunction $parcel$export(e, n, v, s) {\n  Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\nvar $94cfa2cfccc8cc22$exports = {};\n\n$parcel$export($94cfa2cfccc8cc22$exports, "LaserPointer", () => $94cfa2cfccc8cc22$export$6531021b3bf36eae);\nfunction $8cd7efb5af385306$export$e16d8520af44a096([ax, ay, ar], [bx, by, br]) {\n    return [\n        ax + bx,\n        ay + by,\n        ar + br\n    ];\n}\nfunction $8cd7efb5af385306$export$f93b5905241a7cca([ax, ay, ar], [bx, by, br]) {\n    return [\n        ax - bx,\n        ay - by,\n        ar - br\n    ];\n}\nfunction $8cd7efb5af385306$export$1c8884ee32bdf443([x, y, r], s) {\n    return [\n        x * s,\n        y * s,\n        r * s\n    ];\n}\nfunction $8cd7efb5af385306$export$1991ecd29cc92c6b([x, y, r]) {\n    return [\n        x / Math.sqrt(x ** 2 + y ** 2),\n        y / Math.sqrt(x ** 2 + y ** 2),\n        r\n    ];\n}\nfunction $8cd7efb5af385306$export$855df823ceb9b81b([x, y, r], rad) {\n    return [\n        Math.cos(rad) * x - Math.sin(rad) * y,\n        Math.sin(rad) * x + Math.cos(rad) * y,\n        r\n    ];\n}\nfunction $8cd7efb5af385306$export$92d8e23769117a5e(a, b, t) {\n    return $8cd7efb5af385306$export$e16d8520af44a096(a, $8cd7efb5af385306$export$1c8884ee32bdf443($8cd7efb5af385306$export$f93b5905241a7cca(b, a), t));\n}\nfunction $8cd7efb5af385306$export$3a89f8d6f6bf6c9f(a, b, t) {\n    return a + (b - a) * t;\n}\nfunction $8cd7efb5af385306$export$944b09d2ad10b378(p, p1, p2) {\n    return Math.atan2(p2[1] - p[1], p2[0] - p[0]) - Math.atan2(p1[1] - p[1], p1[0] - p[0]);\n}\nfunction $8cd7efb5af385306$export$3c05aaf71f141f73(a) {\n    return Math.atan2(Math.sin(a), Math.cos(a));\n}\nfunction $8cd7efb5af385306$export$1b9bab504faa9305([x, y]) {\n    return Math.sqrt(x ** 2 + y ** 2);\n}\nfunction $8cd7efb5af385306$export$6c4a311cc157c764([ax, ay], [bx, by]) {\n    return Math.sqrt((bx - ax) ** 2 + (by - ay) ** 2);\n}\nfunction $8cd7efb5af385306$export$46f6d3e1b4bd7c8b(point, direction, radius) {\n    return [\n        $8cd7efb5af385306$export$e16d8520af44a096(point, $8cd7efb5af385306$export$1c8884ee32bdf443($8cd7efb5af385306$export$1991ecd29cc92c6b($8cd7efb5af385306$export$855df823ceb9b81b(direction, Math.PI / 2)), radius)),\n        $8cd7efb5af385306$export$e16d8520af44a096(point, $8cd7efb5af385306$export$1c8884ee32bdf443($8cd7efb5af385306$export$1991ecd29cc92c6b($8cd7efb5af385306$export$855df823ceb9b81b(direction, -Math.PI / 2)), radius))\n    ];\n}\nfunction $8cd7efb5af385306$export$ccb1b4dfbd3f36a7(ps) {\n    if (ps.length < 2) return 0;\n    let len = 0;\n    for(let i = 1; i <= ps.length - 1; i++)len += $8cd7efb5af385306$export$6c4a311cc157c764(ps[i - 1], ps[i]);\n    len += $8cd7efb5af385306$export$6c4a311cc157c764(ps[ps.length - 2], ps[ps.length - 1]);\n    return len;\n}\nconst $8cd7efb5af385306$export$7d15b64cf5a3a4c4 = (v, min, max)=>Math.max(min, Math.min(max, v));\nfunction $8cd7efb5af385306$export$548cc43590159af6(p3, p1, p2) {\n    const sMag = $8cd7efb5af385306$export$6c4a311cc157c764(p1, p2);\n    if (sMag === 0) return $8cd7efb5af385306$export$6c4a311cc157c764(p3, p1);\n    const u = $8cd7efb5af385306$export$7d15b64cf5a3a4c4(((p3[0] - p1[0]) * (p2[0] - p1[0]) + (p3[1] - p1[1]) * (p2[1] - p1[1])) / sMag ** 2, 0, 1);\n    const pi = [\n        p1[0] + u * (p2[0] - p1[0]),\n        p1[1] + u * (p2[1] - p1[1]),\n        p3[2]\n    ];\n    return $8cd7efb5af385306$export$6c4a311cc157c764(pi, p3);\n}\n\n\n\nfunction $34bab0059f842ce6$export$ef693d1572e64fb8(points, epsilon) {\n    if (epsilon === 0) return points;\n    if (points.length <= 2) return points;\n    const first = points[0];\n    const last = points[points.length - 1];\n    const [maxDistance, maxIndex] = points.reduce(([maxDistance, maxIndex], point, index)=>{\n        const distance = (0, $8cd7efb5af385306$export$548cc43590159af6)(point, first, last);\n        return distance > maxDistance ? [\n            distance,\n            index\n        ] : [\n            maxDistance,\n            maxIndex\n        ];\n    }, [\n        0,\n        -1\n    ]);\n    if (maxDistance >= epsilon) {\n        const maxIndexPoint = points[maxIndex];\n        return [\n            ...$34bab0059f842ce6$export$ef693d1572e64fb8([\n                first,\n                ...points.slice(1, maxIndex),\n                maxIndexPoint\n            ], epsilon).slice(0, -1),\n            maxIndexPoint,\n            ...$34bab0059f842ce6$export$ef693d1572e64fb8([\n                maxIndexPoint,\n                ...points.slice(maxIndex, -1),\n                last\n            ], epsilon).slice(1)\n        ];\n    } else return [\n        first,\n        last\n    ];\n}\n\n\nclass $94cfa2cfccc8cc22$export$6531021b3bf36eae {\n    static #_ = (()=>{\n        this.defaults = {\n            size: 2,\n            streamline: 0.45,\n            simplify: 0.1,\n            simplifyPhase: "output",\n            sizeMapping: ()=>1\n        };\n    })();\n    static #_1 = (()=>{\n        this.constants = {\n            cornerDetectionMaxAngle: 120,\n            cornerDetectionVariance: (s)=>s > 35 ? 0.5 : 1,\n            maxTailLength: 50\n        };\n    })();\n    constructor(options){\n        this.originalPoints = [];\n        this.stablePoints = [];\n        this.tailPoints = [];\n        this.isFresh = true;\n        this.options = Object.assign({}, $94cfa2cfccc8cc22$export$6531021b3bf36eae.defaults, options);\n    }\n    get lastPoint() {\n        return this.tailPoints[this.tailPoints.length - 1] ?? this.stablePoints[this.stablePoints.length - 1];\n    }\n    addPoint(point) {\n        const lastPoint = this.originalPoints[this.originalPoints.length - 1];\n        if (lastPoint && lastPoint[0] === point[0] && lastPoint[1] === point[1]) return;\n        this.originalPoints.push(point);\n        if (this.isFresh) {\n            this.isFresh = false;\n            this.stablePoints.push(point);\n            return;\n        }\n        if (this.options.streamline > 0) point = $8cd7efb5af385306$export$92d8e23769117a5e(this.lastPoint, point, 1 - this.options.streamline);\n        this.tailPoints.push(point);\n        if ($8cd7efb5af385306$export$ccb1b4dfbd3f36a7(this.tailPoints) > $94cfa2cfccc8cc22$export$6531021b3bf36eae.constants.maxTailLength) this.stabilizeTail();\n    }\n    close() {\n        this.stabilizeTail();\n    }\n    stabilizeTail() {\n        if (this.options.simplify > 0 && this.options.simplifyPhase == "tail") throw new Error("Not implemented yet");\n        else {\n            this.stablePoints.push(...this.tailPoints);\n            this.tailPoints = [];\n        }\n    }\n    getSize(sizeOverride, pressure, index, totalLength, runningLength) {\n        return (sizeOverride ?? this.options.size) * this.options.sizeMapping({\n            pressure: pressure,\n            runningLength: runningLength,\n            currentIndex: index,\n            totalLength: totalLength\n        });\n    }\n    getStrokeOutline(sizeOverride) {\n        if (this.isFresh) return [];\n        let points = [\n            ...this.stablePoints,\n            ...this.tailPoints\n        ];\n        if (this.options.simplify > 0 && this.options.simplifyPhase === "input") points = (0, $34bab0059f842ce6$export$ef693d1572e64fb8)(points, this.options.simplify);\n        const len = points.length;\n        if (len === 0) return [];\n        if (len === 1) {\n            const c = points[0];\n            const ps = [];\n            for(let theta = 0; theta <= Math.PI * 2; theta += Math.PI / 16)ps.push($8cd7efb5af385306$export$e16d8520af44a096(c, $8cd7efb5af385306$export$1c8884ee32bdf443($8cd7efb5af385306$export$855df823ceb9b81b([\n                1,\n                0,\n                0\n            ], theta), this.getSize(sizeOverride, c[2], 0, len, 0))));\n            ps.push($8cd7efb5af385306$export$e16d8520af44a096(c, $8cd7efb5af385306$export$1c8884ee32bdf443([\n                1,\n                0,\n                0\n            ], this.getSize(sizeOverride, c[2], 0, len, 0))));\n            return ps;\n        }\n        if (len === 2) {\n            const c = points[0];\n            const n = points[1];\n            const ps = [];\n            const pAngle = $8cd7efb5af385306$export$944b09d2ad10b378(c, [\n                c[0],\n                c[1] - 100,\n                c[2]\n            ], n);\n            for(let theta = pAngle; theta <= Math.PI + pAngle; theta += Math.PI / 16)ps.push($8cd7efb5af385306$export$e16d8520af44a096(c, $8cd7efb5af385306$export$1c8884ee32bdf443($8cd7efb5af385306$export$855df823ceb9b81b([\n                1,\n                0,\n                0\n            ], theta), this.getSize(sizeOverride, c[2], 0, len, 0))));\n            for(let theta = Math.PI + pAngle; theta <= Math.PI * 2 + pAngle; theta += Math.PI / 16)ps.push($8cd7efb5af385306$export$e16d8520af44a096(n, $8cd7efb5af385306$export$1c8884ee32bdf443($8cd7efb5af385306$export$855df823ceb9b81b([\n                1,\n                0,\n                0\n            ], theta), this.getSize(sizeOverride, n[2], 0, len, 0))));\n            ps.push(ps[0]);\n            return ps;\n        }\n        const forwardPoints = [];\n        const backwardPoints = [];\n        let speed = 0;\n        let prevSpeed = 0;\n        let visibleStartIndex = 0;\n        let runningLength = 0;\n        for(let i = 1; i < len - 1; i++){\n            const p = points[i - 1], c = points[i], n = points[i + 1];\n            let pressure = c[2];\n            const d = $8cd7efb5af385306$export$6c4a311cc157c764(p, c);\n            runningLength += d;\n            speed = prevSpeed + (d - prevSpeed) * 0.2;\n            const cSize = this.getSize(sizeOverride, pressure, i, len, runningLength);\n            if (cSize === 0) {\n                visibleStartIndex = i + 1;\n                continue;\n            }\n            const dirPC = $8cd7efb5af385306$export$1991ecd29cc92c6b($8cd7efb5af385306$export$f93b5905241a7cca(p, c));\n            const dirNC = $8cd7efb5af385306$export$1991ecd29cc92c6b($8cd7efb5af385306$export$f93b5905241a7cca(n, c));\n            const p1dirPC = $8cd7efb5af385306$export$855df823ceb9b81b(dirPC, Math.PI / 2);\n            const p2dirPC = $8cd7efb5af385306$export$855df823ceb9b81b(dirPC, -Math.PI / 2);\n            const p1dirNC = $8cd7efb5af385306$export$855df823ceb9b81b(dirNC, Math.PI / 2);\n            const p2dirNC = $8cd7efb5af385306$export$855df823ceb9b81b(dirNC, -Math.PI / 2);\n            const p1PC = $8cd7efb5af385306$export$e16d8520af44a096(c, $8cd7efb5af385306$export$1c8884ee32bdf443(p1dirPC, cSize));\n            const p2PC = $8cd7efb5af385306$export$e16d8520af44a096(c, $8cd7efb5af385306$export$1c8884ee32bdf443(p2dirPC, cSize));\n            const p1NC = $8cd7efb5af385306$export$e16d8520af44a096(c, $8cd7efb5af385306$export$1c8884ee32bdf443(p1dirNC, cSize));\n            const p2NC = $8cd7efb5af385306$export$e16d8520af44a096(c, $8cd7efb5af385306$export$1c8884ee32bdf443(p2dirNC, cSize));\n            const ftdir = $8cd7efb5af385306$export$e16d8520af44a096(p1dirPC, p2dirNC);\n            const btdir = $8cd7efb5af385306$export$e16d8520af44a096(p2dirPC, p1dirNC);\n            const paPC = $8cd7efb5af385306$export$e16d8520af44a096(c, $8cd7efb5af385306$export$1c8884ee32bdf443($8cd7efb5af385306$export$1b9bab504faa9305(ftdir) === 0 ? dirPC : $8cd7efb5af385306$export$1991ecd29cc92c6b(ftdir), cSize));\n            const paNC = $8cd7efb5af385306$export$e16d8520af44a096(c, $8cd7efb5af385306$export$1c8884ee32bdf443($8cd7efb5af385306$export$1b9bab504faa9305(btdir) === 0 ? dirNC : $8cd7efb5af385306$export$1991ecd29cc92c6b(btdir), cSize));\n            const cAngle = $8cd7efb5af385306$export$3c05aaf71f141f73($8cd7efb5af385306$export$944b09d2ad10b378(c, p, n));\n            const D_ANGLE = $94cfa2cfccc8cc22$export$6531021b3bf36eae.constants.cornerDetectionMaxAngle / 180 * Math.PI * $94cfa2cfccc8cc22$export$6531021b3bf36eae.constants.cornerDetectionVariance(speed);\n            if (Math.abs(cAngle) < D_ANGLE) {\n                const tAngle = Math.abs($8cd7efb5af385306$export$3c05aaf71f141f73(Math.PI - cAngle)) // turn angle\n                ;\n                if (tAngle === 0) continue;\n                if (cAngle < 0) {\n                    backwardPoints.push(p2PC, paNC);\n                    for(let theta = 0; theta <= tAngle; theta += tAngle / 4)forwardPoints.push($8cd7efb5af385306$export$e16d8520af44a096(c, $8cd7efb5af385306$export$855df823ceb9b81b($8cd7efb5af385306$export$1c8884ee32bdf443(p1dirPC, cSize), theta)));\n                    for(let theta = tAngle; theta >= 0; theta -= tAngle / 4)backwardPoints.push($8cd7efb5af385306$export$e16d8520af44a096(c, $8cd7efb5af385306$export$855df823ceb9b81b($8cd7efb5af385306$export$1c8884ee32bdf443(p1dirPC, cSize), theta)));\n                    backwardPoints.push(paNC, p1NC);\n                } else {\n                    forwardPoints.push(p1PC, paPC);\n                    for(let theta = 0; theta <= tAngle; theta += tAngle / 4)backwardPoints.push($8cd7efb5af385306$export$e16d8520af44a096(c, $8cd7efb5af385306$export$855df823ceb9b81b($8cd7efb5af385306$export$1c8884ee32bdf443(p1dirPC, -cSize), -theta)));\n                    for(let theta = tAngle; theta >= 0; theta -= tAngle / 4)forwardPoints.push($8cd7efb5af385306$export$e16d8520af44a096(c, $8cd7efb5af385306$export$855df823ceb9b81b($8cd7efb5af385306$export$1c8884ee32bdf443(p1dirPC, -cSize), -theta)));\n                    forwardPoints.push(paPC, p2NC);\n                }\n            } else {\n                forwardPoints.push(paPC);\n                backwardPoints.push(paNC);\n            }\n            prevSpeed = speed;\n        }\n        const first = points[visibleStartIndex];\n        const second = points[visibleStartIndex + 1];\n        const penultimate = points[len - 2];\n        const ultimate = points[len - 1];\n        if (visibleStartIndex >= len - 2) return [];\n        const dirFS = $8cd7efb5af385306$export$1991ecd29cc92c6b($8cd7efb5af385306$export$f93b5905241a7cca(second, first));\n        const dirPU = $8cd7efb5af385306$export$1991ecd29cc92c6b($8cd7efb5af385306$export$f93b5905241a7cca(penultimate, ultimate));\n        const ppdirFS = $8cd7efb5af385306$export$855df823ceb9b81b(dirFS, -Math.PI / 2);\n        const ppdirPU = $8cd7efb5af385306$export$855df823ceb9b81b(dirPU, Math.PI / 2);\n        const startCapSize = this.getSize(sizeOverride, first[2], 0, len, 0);\n        const startCap = [];\n        const endCapSize = this.getSize(sizeOverride, penultimate[2], len - 2, len, runningLength);\n        const endCap = [];\n        for(let theta = 0; theta <= Math.PI; theta += Math.PI / 16)startCap.unshift($8cd7efb5af385306$export$e16d8520af44a096(first, $8cd7efb5af385306$export$855df823ceb9b81b($8cd7efb5af385306$export$1c8884ee32bdf443(ppdirFS, startCapSize), -theta)));\n        startCap.unshift($8cd7efb5af385306$export$e16d8520af44a096(first, $8cd7efb5af385306$export$1c8884ee32bdf443(ppdirFS, -startCapSize)));\n        for(let theta = 0; theta <= Math.PI; theta += Math.PI / 16)endCap.push($8cd7efb5af385306$export$e16d8520af44a096(ultimate, $8cd7efb5af385306$export$855df823ceb9b81b($8cd7efb5af385306$export$1c8884ee32bdf443(ppdirPU, -endCapSize), -theta)));\n        const strokeOutline = [\n            ...startCap,\n            ...forwardPoints,\n            ...endCap.reverse(),\n            ...backwardPoints.reverse()\n        ];\n        if (startCap.length > 0) strokeOutline.push(startCap[0]);\n        if (this.options.simplify > 0 && this.options.simplifyPhase === "output") return (0, $34bab0059f842ce6$export$ef693d1572e64fb8)(strokeOutline, this.options.simplify);\n        return strokeOutline;\n    }\n}\n\n\n\n\n\n//# sourceMappingURL=esm.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 23812 characters]\n//# sourceURL=webpack-internal:///../../../node_modules/@excalidraw/laser-pointer/dist/esm.js\n');
              }
            ),
            /***/
            "../../../node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.esm.js": (
              /*!**************************************************************************************!*\
                !*** ../../../node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.esm.js ***!
                \**************************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "arrow": () => (/* binding */ arrow),
/* harmony export */   "autoPlacement": () => (/* reexport safe */ _floating_ui_dom__WEBPACK_IMPORTED_MODULE_0__.autoPlacement),
/* harmony export */   "autoUpdate": () => (/* reexport safe */ _floating_ui_dom__WEBPACK_IMPORTED_MODULE_0__.autoUpdate),
/* harmony export */   "computePosition": () => (/* reexport safe */ _floating_ui_dom__WEBPACK_IMPORTED_MODULE_0__.computePosition),
/* harmony export */   "detectOverflow": () => (/* reexport safe */ _floating_ui_dom__WEBPACK_IMPORTED_MODULE_0__.detectOverflow),
/* harmony export */   "flip": () => (/* reexport safe */ _floating_ui_dom__WEBPACK_IMPORTED_MODULE_0__.flip),
/* harmony export */   "getOverflowAncestors": () => (/* reexport safe */ _floating_ui_dom__WEBPACK_IMPORTED_MODULE_0__.getOverflowAncestors),
/* harmony export */   "hide": () => (/* reexport safe */ _floating_ui_dom__WEBPACK_IMPORTED_MODULE_0__.hide),
/* harmony export */   "inline": () => (/* reexport safe */ _floating_ui_dom__WEBPACK_IMPORTED_MODULE_0__.inline),
/* harmony export */   "limitShift": () => (/* reexport safe */ _floating_ui_dom__WEBPACK_IMPORTED_MODULE_0__.limitShift),
/* harmony export */   "offset": () => (/* reexport safe */ _floating_ui_dom__WEBPACK_IMPORTED_MODULE_0__.offset),
/* harmony export */   "shift": () => (/* reexport safe */ _floating_ui_dom__WEBPACK_IMPORTED_MODULE_0__.shift),
/* harmony export */   "size": () => (/* reexport safe */ _floating_ui_dom__WEBPACK_IMPORTED_MODULE_0__.size),
/* harmony export */   "useFloating": () => (/* binding */ useFloating)
/* harmony export */ });
/* harmony import */ var _floating_ui_dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @floating-ui/dom */ "../../../node_modules/@floating-ui/dom/dist/floating-ui.dom.browser.mjs");
/* harmony import */ var _floating_ui_dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @floating-ui/dom */ "../../../node_modules/@floating-ui/core/dist/floating-ui.core.browser.mjs");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-dom */ "react-dom");
/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_2__);






var index = typeof document !== 'undefined' ? react__WEBPACK_IMPORTED_MODULE_1__.useLayoutEffect : react__WEBPACK_IMPORTED_MODULE_1__.useEffect;

// Fork of \`fast-deep-equal\` that only does the comparisons we need and compares
// functions
function deepEqual(a, b) {
  if (a === b) {
    return true;
  }

  if (typeof a !== typeof b) {
    return false;
  }

  if (typeof a === 'function' && a.toString() === b.toString()) {
    return true;
  }

  let length, i, keys;

  if (a && b && typeof a == 'object') {
    if (Array.isArray(a)) {
      length = a.length;
      if (length != b.length) return false;

      for (i = length; i-- !== 0;) {
        if (!deepEqual(a[i], b[i])) {
          return false;
        }
      }

      return true;
    }

    keys = Object.keys(a);
    length = keys.length;

    if (length !== Object.keys(b).length) {
      return false;
    }

    for (i = length; i-- !== 0;) {
      if (!Object.prototype.hasOwnProperty.call(b, keys[i])) {
        return false;
      }
    }

    for (i = length; i-- !== 0;) {
      const key = keys[i];

      if (key === '_owner' && a.$$typeof) {
        continue;
      }

      if (!deepEqual(a[key], b[key])) {
        return false;
      }
    }

    return true;
  }

  return a !== a && b !== b;
}

function useLatestRef(value) {
  const ref = react__WEBPACK_IMPORTED_MODULE_1__.useRef(value);
  index(() => {
    ref.current = value;
  });
  return ref;
}

function useFloating(_temp) {
  let {
    middleware,
    placement = 'bottom',
    strategy = 'absolute',
    whileElementsMounted
  } = _temp === void 0 ? {} : _temp;
  const reference = react__WEBPACK_IMPORTED_MODULE_1__.useRef(null);
  const floating = react__WEBPACK_IMPORTED_MODULE_1__.useRef(null);
  const whileElementsMountedRef = useLatestRef(whileElementsMounted);
  const cleanupRef = react__WEBPACK_IMPORTED_MODULE_1__.useRef(null);
  const [data, setData] = react__WEBPACK_IMPORTED_MODULE_1__.useState({
    // Setting these to \`null\` will allow the consumer to determine if
    // \`computePosition()\` has run yet
    x: null,
    y: null,
    strategy,
    placement,
    middlewareData: {}
  });
  const [latestMiddleware, setLatestMiddleware] = react__WEBPACK_IMPORTED_MODULE_1__.useState(middleware);

  if (!deepEqual(latestMiddleware == null ? void 0 : latestMiddleware.map(_ref => {
    let {
      options
    } = _ref;
    return options;
  }), middleware == null ? void 0 : middleware.map(_ref2 => {
    let {
      options
    } = _ref2;
    return options;
  }))) {
    setLatestMiddleware(middleware);
  }

  const update = react__WEBPACK_IMPORTED_MODULE_1__.useCallback(() => {
    if (!reference.current || !floating.current) {
      return;
    }

    (0,_floating_ui_dom__WEBPACK_IMPORTED_MODULE_0__.computePosition)(reference.current, floating.current, {
      middleware: latestMiddleware,
      placement,
      strategy
    }).then(data => {
      if (isMountedRef.current) {
        react_dom__WEBPACK_IMPORTED_MODULE_2__.flushSync(() => {
          setData(data);
        });
      }
    });
  }, [latestMiddleware, placement, strategy]);
  index(() => {
    // Skip first update
    if (isMountedRef.current) {
      update();
    }
  }, [update]);
  const isMountedRef = react__WEBPACK_IMPORTED_MODULE_1__.useRef(false);
  index(() => {
    isMountedRef.current = true;
    return () => {
      isMountedRef.current = false;
    };
  }, []);
  const runElementMountCallback = react__WEBPACK_IMPORTED_MODULE_1__.useCallback(() => {
    if (typeof cleanupRef.current === 'function') {
      cleanupRef.current();
      cleanupRef.current = null;
    }

    if (reference.current && floating.current) {
      if (whileElementsMountedRef.current) {
        const cleanupFn = whileElementsMountedRef.current(reference.current, floating.current, update);
        cleanupRef.current = cleanupFn;
      } else {
        update();
      }
    }
  }, [update, whileElementsMountedRef]);
  const setReference = react__WEBPACK_IMPORTED_MODULE_1__.useCallback(node => {
    reference.current = node;
    runElementMountCallback();
  }, [runElementMountCallback]);
  const setFloating = react__WEBPACK_IMPORTED_MODULE_1__.useCallback(node => {
    floating.current = node;
    runElementMountCallback();
  }, [runElementMountCallback]);
  const refs = react__WEBPACK_IMPORTED_MODULE_1__.useMemo(() => ({
    reference,
    floating
  }), []);
  return react__WEBPACK_IMPORTED_MODULE_1__.useMemo(() => ({ ...data,
    update,
    refs,
    reference: setReference,
    floating: setFloating
  }), [data, update, refs, setReference, setFloating]);
}

/**
 * Positions an inner element of the floating element such that it is centered
 * to the reference element.
 * This wraps the core \`arrow\` middleware to allow React refs as the element.
 * @see https://floating-ui.com/docs/arrow
 */

const arrow = options => {
  const {
    element,
    padding
  } = options;

  function isRef(value) {
    return Object.prototype.hasOwnProperty.call(value, 'current');
  }

  return {
    name: 'arrow',
    options,

    fn(args) {
      if (isRef(element)) {
        if (element.current != null) {
          return (0,_floating_ui_dom__WEBPACK_IMPORTED_MODULE_3__.arrow)({
            element: element.current,
            padding
          }).fn(args);
        }

        return {};
      } else if (element) {
        return (0,_floating_ui_dom__WEBPACK_IMPORTED_MODULE_3__.arrow)({
          element,
          padding
        }).fn(args);
      }

      return {};
    }

  };
};


//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 9496 characters]
//# sourceURL=webpack-internal:///../../../node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.esm.js
`);
              }
            ),
            /***/
            "../../../node_modules/@radix-ui/primitive/dist/index.module.js": (
              /*!**********************************************************************!*\
                !*** ../../../node_modules/@radix-ui/primitive/dist/index.module.js ***!
                \**********************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "composeEventHandlers": () => (/* binding */ $e42e1063c40fb3ef$export$b9ecd428b558ff10)\n/* harmony export */ });\nfunction $e42e1063c40fb3ef$export$b9ecd428b558ff10(originalEventHandler, ourEventHandler, { checkForDefaultPrevented: checkForDefaultPrevented = true  } = {}) {\n    return function handleEvent(event) {\n        originalEventHandler === null || originalEventHandler === void 0 || originalEventHandler(event);\n        if (checkForDefaultPrevented === false || !event.defaultPrevented) return ourEventHandler === null || ourEventHandler === void 0 ? void 0 : ourEventHandler(event);\n    };\n}\n\n\n\n\n\n//# sourceMappingURL=index.module.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9wcmltaXRpdmUvZGlzdC9pbmRleC5tb2R1bGUuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLDRGQUE0Riw2REFBNkQsSUFBSTtBQUM3SjtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUsyRTtBQUMzRSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3ByaW1pdGl2ZS9kaXN0L2luZGV4Lm1vZHVsZS5qcz9hNTNhIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uICRlNDJlMTA2M2M0MGZiM2VmJGV4cG9ydCRiOWVjZDQyOGI1NThmZjEwKG9yaWdpbmFsRXZlbnRIYW5kbGVyLCBvdXJFdmVudEhhbmRsZXIsIHsgY2hlY2tGb3JEZWZhdWx0UHJldmVudGVkOiBjaGVja0ZvckRlZmF1bHRQcmV2ZW50ZWQgPSB0cnVlICB9ID0ge30pIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gaGFuZGxlRXZlbnQoZXZlbnQpIHtcbiAgICAgICAgb3JpZ2luYWxFdmVudEhhbmRsZXIgPT09IG51bGwgfHwgb3JpZ2luYWxFdmVudEhhbmRsZXIgPT09IHZvaWQgMCB8fCBvcmlnaW5hbEV2ZW50SGFuZGxlcihldmVudCk7XG4gICAgICAgIGlmIChjaGVja0ZvckRlZmF1bHRQcmV2ZW50ZWQgPT09IGZhbHNlIHx8ICFldmVudC5kZWZhdWx0UHJldmVudGVkKSByZXR1cm4gb3VyRXZlbnRIYW5kbGVyID09PSBudWxsIHx8IG91ckV2ZW50SGFuZGxlciA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3VyRXZlbnRIYW5kbGVyKGV2ZW50KTtcbiAgICB9O1xufVxuXG5cblxuXG5leHBvcnQgeyRlNDJlMTA2M2M0MGZiM2VmJGV4cG9ydCRiOWVjZDQyOGI1NThmZjEwIGFzIGNvbXBvc2VFdmVudEhhbmRsZXJzfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1vZHVsZS5qcy5tYXBcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/@radix-ui/primitive/dist/index.module.js\n');
              }
            ),
            /***/
            "../../../node_modules/@radix-ui/react-arrow/dist/index.module.js": (
              /*!************************************************************************!*\
                !*** ../../../node_modules/@radix-ui/react-arrow/dist/index.module.js ***!
                \************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "Arrow": () => (/* binding */ $7e8f5cd07187803e$export$21b07c8f274aebd5),
/* harmony export */   "Root": () => (/* binding */ $7e8f5cd07187803e$export$be92b6f5f03c0fe9)
/* harmony export */ });
/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ "../../../node_modules/@babel/runtime/helpers/esm/extends.js");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @radix-ui/react-primitive */ "../../../node_modules/@radix-ui/react-primitive/dist/index.module.js");







/* -------------------------------------------------------------------------------------------------
 * Arrow
 * -----------------------------------------------------------------------------------------------*/ const $7e8f5cd07187803e$var$NAME = 'Arrow';
const $7e8f5cd07187803e$export$21b07c8f274aebd5 = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)((props, forwardedRef)=>{
    const { children: children , width: width = 10 , height: height = 5 , ...arrowProps } = props;
    return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_2__.Primitive.svg, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, arrowProps, {
        ref: forwardedRef,
        width: width,
        height: height,
        viewBox: "0 0 30 10",
        preserveAspectRatio: "none"
    }), props.asChild ? children : /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)("polygon", {
        points: "0,0 30,0 15,10"
    }));
});
/*#__PURE__*/ Object.assign($7e8f5cd07187803e$export$21b07c8f274aebd5, {
    displayName: $7e8f5cd07187803e$var$NAME
});
/* -----------------------------------------------------------------------------------------------*/ const $7e8f5cd07187803e$export$be92b6f5f03c0fe9 = $7e8f5cd07187803e$export$21b07c8f274aebd5;





//# sourceMappingURL=index.module.js.map
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC1hcnJvdy9kaXN0L2luZGV4Lm1vZHVsZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBc0Y7QUFDTztBQUNyQjs7Ozs7QUFLeEU7QUFDQTtBQUNBO0FBQ0EsZ0VBQWdFLGlEQUFpQjtBQUNqRixZQUFZLDhFQUE4RTtBQUMxRix5QkFBeUIsb0RBQW9CLENBQUMsb0VBQW9CLEVBQUUsOEVBQW9DLEdBQUc7QUFDM0c7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUssNENBQTRDLG9EQUFvQjtBQUNyRTtBQUNBLEtBQUs7QUFDTCxDQUFDO0FBQ0Q7QUFDQTtBQUNBLENBQUM7QUFDRDs7Ozs7QUFLK0c7QUFDL0ciLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC1hcnJvdy9kaXN0L2luZGV4Lm1vZHVsZS5qcz81MWUyIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAkamJuRXgkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCB7Zm9yd2FyZFJlZiBhcyAkamJuRXgkZm9yd2FyZFJlZiwgY3JlYXRlRWxlbWVudCBhcyAkamJuRXgkY3JlYXRlRWxlbWVudH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge1ByaW1pdGl2ZSBhcyAkamJuRXgkUHJpbWl0aXZlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXByaW1pdGl2ZVwiO1xuXG5cblxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBBcnJvd1xuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkN2U4ZjVjZDA3MTg3ODAzZSR2YXIkTkFNRSA9ICdBcnJvdyc7XG5jb25zdCAkN2U4ZjVjZDA3MTg3ODAzZSRleHBvcnQkMjFiMDdjOGYyNzRhZWJkNSA9IC8qI19fUFVSRV9fKi8gJGpibkV4JGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBjaGlsZHJlbjogY2hpbGRyZW4gLCB3aWR0aDogd2lkdGggPSAxMCAsIGhlaWdodDogaGVpZ2h0ID0gNSAsIC4uLmFycm93UHJvcHMgfSA9IHByb3BzO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICRqYm5FeCRjcmVhdGVFbGVtZW50KCRqYm5FeCRQcmltaXRpdmUuc3ZnLCAkamJuRXgkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIGFycm93UHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWYsXG4gICAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDMwIDEwXCIsXG4gICAgICAgIHByZXNlcnZlQXNwZWN0UmF0aW86IFwibm9uZVwiXG4gICAgfSksIHByb3BzLmFzQ2hpbGQgPyBjaGlsZHJlbiA6IC8qI19fUFVSRV9fKi8gJGpibkV4JGNyZWF0ZUVsZW1lbnQoXCJwb2x5Z29uXCIsIHtcbiAgICAgICAgcG9pbnRzOiBcIjAsMCAzMCwwIDE1LDEwXCJcbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkN2U4ZjVjZDA3MTg3ODAzZSRleHBvcnQkMjFiMDdjOGYyNzRhZWJkNSwge1xuICAgIGRpc3BsYXlOYW1lOiAkN2U4ZjVjZDA3MTg3ODAzZSR2YXIkTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ3ZThmNWNkMDcxODc4MDNlJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5ID0gJDdlOGY1Y2QwNzE4NzgwM2UkZXhwb3J0JDIxYjA3YzhmMjc0YWViZDU7XG5cblxuXG5cbmV4cG9ydCB7JDdlOGY1Y2QwNzE4NzgwM2UkZXhwb3J0JDIxYjA3YzhmMjc0YWViZDUgYXMgQXJyb3csICQ3ZThmNWNkMDcxODc4MDNlJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IGFzIFJvb3R9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubW9kdWxlLmpzLm1hcFxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9
//# sourceURL=webpack-internal:///../../../node_modules/@radix-ui/react-arrow/dist/index.module.js
`);
              }
            ),
            /***/
            "../../../node_modules/@radix-ui/react-collection/dist/index.module.js": (
              /*!*****************************************************************************!*\
                !*** ../../../node_modules/@radix-ui/react-collection/dist/index.module.js ***!
                \*****************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "createCollection": () => (/* binding */ $e02a7d9cb1dc128c$export$c74125a8e3af6bb2)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _radix_ui_react_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @radix-ui/react-context */ "../../../node_modules/@radix-ui/react-context/dist/index.module.js");
/* harmony import */ var _radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @radix-ui/react-compose-refs */ "../../../node_modules/@radix-ui/react-compose-refs/dist/index.module.js");
/* harmony import */ var _radix_ui_react_slot__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @radix-ui/react-slot */ "../../../node_modules/@radix-ui/react-slot/dist/index.module.js");









// We have resorted to returning slots directly rather than exposing primitives that can then
// be slotted like \`<CollectionItem as={Slot}>\u2026</CollectionItem>\`.
// This is because we encountered issues with generic types that cannot be statically analysed
// due to creating them dynamically via createCollection.
function $e02a7d9cb1dc128c$export$c74125a8e3af6bb2(name) {
    /* -----------------------------------------------------------------------------------------------
   * CollectionProvider
   * ---------------------------------------------------------------------------------------------*/ const PROVIDER_NAME = name + 'CollectionProvider';
    const [createCollectionContext, createCollectionScope] = (0,_radix_ui_react_context__WEBPACK_IMPORTED_MODULE_1__.createContextScope)(PROVIDER_NAME);
    const [CollectionProviderImpl, useCollectionContext] = createCollectionContext(PROVIDER_NAME, {
        collectionRef: {
            current: null
        },
        itemMap: new Map()
    });
    const CollectionProvider = (props)=>{
        const { scope: scope , children: children  } = props;
        const ref = react__WEBPACK_IMPORTED_MODULE_0___default().useRef(null);
        const itemMap = react__WEBPACK_IMPORTED_MODULE_0___default().useRef(new Map()).current;
        return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(CollectionProviderImpl, {
            scope: scope,
            itemMap: itemMap,
            collectionRef: ref
        }, children);
    };
    /*#__PURE__*/ Object.assign(CollectionProvider, {
        displayName: PROVIDER_NAME
    });
    /* -----------------------------------------------------------------------------------------------
   * CollectionSlot
   * ---------------------------------------------------------------------------------------------*/ const COLLECTION_SLOT_NAME = name + 'CollectionSlot';
    const CollectionSlot = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().forwardRef((props, forwardedRef)=>{
        const { scope: scope , children: children  } = props;
        const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);
        const composedRefs = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_2__.useComposedRefs)(forwardedRef, context.collectionRef);
        return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_slot__WEBPACK_IMPORTED_MODULE_3__.Slot, {
            ref: composedRefs
        }, children);
    });
    /*#__PURE__*/ Object.assign(CollectionSlot, {
        displayName: COLLECTION_SLOT_NAME
    });
    /* -----------------------------------------------------------------------------------------------
   * CollectionItem
   * ---------------------------------------------------------------------------------------------*/ const ITEM_SLOT_NAME = name + 'CollectionItemSlot';
    const ITEM_DATA_ATTR = 'data-radix-collection-item';
    const CollectionItemSlot = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().forwardRef((props, forwardedRef)=>{
        const { scope: scope , children: children , ...itemData } = props;
        const ref = react__WEBPACK_IMPORTED_MODULE_0___default().useRef(null);
        const composedRefs = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_2__.useComposedRefs)(forwardedRef, ref);
        const context = useCollectionContext(ITEM_SLOT_NAME, scope);
        react__WEBPACK_IMPORTED_MODULE_0___default().useEffect(()=>{
            context.itemMap.set(ref, {
                ref: ref,
                ...itemData
            });
            return ()=>void context.itemMap.delete(ref)
            ;
        });
        return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_radix_ui_react_slot__WEBPACK_IMPORTED_MODULE_3__.Slot, {
            [ITEM_DATA_ATTR]: '',
            ref: composedRefs
        }, children);
    });
    /*#__PURE__*/ Object.assign(CollectionItemSlot, {
        displayName: ITEM_SLOT_NAME
    });
    /* -----------------------------------------------------------------------------------------------
   * useCollection
   * ---------------------------------------------------------------------------------------------*/ function useCollection(scope) {
        const context = useCollectionContext(name + 'CollectionConsumer', scope);
        const getItems = react__WEBPACK_IMPORTED_MODULE_0___default().useCallback(()=>{
            const collectionNode = context.collectionRef.current;
            if (!collectionNode) return [];
            const orderedNodes = Array.from(collectionNode.querySelectorAll(\`[\${ITEM_DATA_ATTR}]\`));
            const items = Array.from(context.itemMap.values());
            const orderedItems = items.sort((a, b)=>orderedNodes.indexOf(a.ref.current) - orderedNodes.indexOf(b.ref.current)
            );
            return orderedItems;
        }, [
            context.collectionRef,
            context.itemMap
        ]);
        return getItems;
    }
    return [
        {
            Provider: CollectionProvider,
            Slot: CollectionSlot,
            ItemSlot: CollectionItemSlot
        },
        useCollection,
        createCollectionScope
    ];
}





//# sourceMappingURL=index.module.js.map
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 8396 characters]
//# sourceURL=webpack-internal:///../../../node_modules/@radix-ui/react-collection/dist/index.module.js
`);
              }
            ),
            /***/
            "../../../node_modules/@radix-ui/react-compose-refs/dist/index.module.js": (
              /*!*******************************************************************************!*\
                !*** ../../../node_modules/@radix-ui/react-compose-refs/dist/index.module.js ***!
                \*******************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "composeRefs": () => (/* binding */ $6ed0406888f73fc4$export$43e446d32b3d21af),
/* harmony export */   "useComposedRefs": () => (/* binding */ $6ed0406888f73fc4$export$c7b2cbe3552a0d05)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);



/**
 * Set a given ref to a given value
 * This utility takes care of different types of refs: callback refs and RefObject(s)
 */ function $6ed0406888f73fc4$var$setRef(ref, value) {
    if (typeof ref === 'function') ref(value);
    else if (ref !== null && ref !== undefined) ref.current = value;
}
/**
 * A utility to compose multiple refs together
 * Accepts callback refs and RefObject(s)
 */ function $6ed0406888f73fc4$export$43e446d32b3d21af(...refs) {
    return (node)=>refs.forEach((ref)=>$6ed0406888f73fc4$var$setRef(ref, node)
        )
    ;
}
/**
 * A custom hook that composes multiple refs
 * Accepts callback refs and RefObject(s)
 */ function $6ed0406888f73fc4$export$c7b2cbe3552a0d05(...refs) {
    // eslint-disable-next-line react-hooks/exhaustive-deps
    return (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)($6ed0406888f73fc4$export$43e446d32b3d21af(...refs), refs);
}





//# sourceMappingURL=index.module.js.map
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC1jb21wb3NlLXJlZnMvZGlzdC9pbmRleC5tb2R1bGUuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUF3RDs7O0FBR3hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGtEQUFrQjtBQUM3Qjs7Ozs7QUFLZ0k7QUFDaEkiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC1jb21wb3NlLXJlZnMvZGlzdC9pbmRleC5tb2R1bGUuanM/M2JiZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3VzZUNhbGxiYWNrIGFzICQzdnFtciR1c2VDYWxsYmFja30gZnJvbSBcInJlYWN0XCI7XG5cblxuLyoqXG4gKiBTZXQgYSBnaXZlbiByZWYgdG8gYSBnaXZlbiB2YWx1ZVxuICogVGhpcyB1dGlsaXR5IHRha2VzIGNhcmUgb2YgZGlmZmVyZW50IHR5cGVzIG9mIHJlZnM6IGNhbGxiYWNrIHJlZnMgYW5kIFJlZk9iamVjdChzKVxuICovIGZ1bmN0aW9uICQ2ZWQwNDA2ODg4ZjczZmM0JHZhciRzZXRSZWYocmVmLCB2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgcmVmID09PSAnZnVuY3Rpb24nKSByZWYodmFsdWUpO1xuICAgIGVsc2UgaWYgKHJlZiAhPT0gbnVsbCAmJiByZWYgIT09IHVuZGVmaW5lZCkgcmVmLmN1cnJlbnQgPSB2YWx1ZTtcbn1cbi8qKlxuICogQSB1dGlsaXR5IHRvIGNvbXBvc2UgbXVsdGlwbGUgcmVmcyB0b2dldGhlclxuICogQWNjZXB0cyBjYWxsYmFjayByZWZzIGFuZCBSZWZPYmplY3QocylcbiAqLyBmdW5jdGlvbiAkNmVkMDQwNjg4OGY3M2ZjNCRleHBvcnQkNDNlNDQ2ZDMyYjNkMjFhZiguLi5yZWZzKSB7XG4gICAgcmV0dXJuIChub2RlKT0+cmVmcy5mb3JFYWNoKChyZWYpPT4kNmVkMDQwNjg4OGY3M2ZjNCR2YXIkc2V0UmVmKHJlZiwgbm9kZSlcbiAgICAgICAgKVxuICAgIDtcbn1cbi8qKlxuICogQSBjdXN0b20gaG9vayB0aGF0IGNvbXBvc2VzIG11bHRpcGxlIHJlZnNcbiAqIEFjY2VwdHMgY2FsbGJhY2sgcmVmcyBhbmQgUmVmT2JqZWN0KHMpXG4gKi8gZnVuY3Rpb24gJDZlZDA0MDY4ODhmNzNmYzQkZXhwb3J0JGM3YjJjYmUzNTUyYTBkMDUoLi4ucmVmcykge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgICByZXR1cm4gJDN2cW1yJHVzZUNhbGxiYWNrKCQ2ZWQwNDA2ODg4ZjczZmM0JGV4cG9ydCQ0M2U0NDZkMzJiM2QyMWFmKC4uLnJlZnMpLCByZWZzKTtcbn1cblxuXG5cblxuZXhwb3J0IHskNmVkMDQwNjg4OGY3M2ZjNCRleHBvcnQkNDNlNDQ2ZDMyYjNkMjFhZiBhcyBjb21wb3NlUmVmcywgJDZlZDA0MDY4ODhmNzNmYzQkZXhwb3J0JGM3YjJjYmUzNTUyYTBkMDUgYXMgdXNlQ29tcG9zZWRSZWZzfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1vZHVsZS5qcy5tYXBcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==
//# sourceURL=webpack-internal:///../../../node_modules/@radix-ui/react-compose-refs/dist/index.module.js
`);
              }
            ),
            /***/
            "../../../node_modules/@radix-ui/react-context/dist/index.module.js": (
              /*!**************************************************************************!*\
                !*** ../../../node_modules/@radix-ui/react-context/dist/index.module.js ***!
                \**************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"createContext\": () => (/* binding */ $c512c27ab02ef895$export$fd42f52fd3ae1109),\n/* harmony export */   \"createContextScope\": () => (/* binding */ $c512c27ab02ef895$export$50c7b4e9d9f19c1)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n\n\n\nfunction $c512c27ab02ef895$export$fd42f52fd3ae1109(rootComponentName, defaultContext) {\n    const Context = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(defaultContext);\n    function Provider(props) {\n        const { children: children , ...context } = props; // Only re-memoize when prop values change\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n        const value = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>context\n        , Object.values(context));\n        return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(Context.Provider, {\n            value: value\n        }, children);\n    }\n    function useContext(consumerName) {\n        const context = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(Context);\n        if (context) return context;\n        if (defaultContext !== undefined) return defaultContext; // if a defaultContext wasn't specified, it's a required context.\n        throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n    }\n    Provider.displayName = rootComponentName + 'Provider';\n    return [\n        Provider,\n        useContext\n    ];\n}\n/* -------------------------------------------------------------------------------------------------\n * createContextScope\n * -----------------------------------------------------------------------------------------------*/ function $c512c27ab02ef895$export$50c7b4e9d9f19c1(scopeName, createContextScopeDeps = []) {\n    let defaultContexts = [];\n    /* -----------------------------------------------------------------------------------------------\n   * createContext\n   * ---------------------------------------------------------------------------------------------*/ function $c512c27ab02ef895$export$fd42f52fd3ae1109(rootComponentName, defaultContext) {\n        const BaseContext = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(defaultContext);\n        const index = defaultContexts.length;\n        defaultContexts = [\n            ...defaultContexts,\n            defaultContext\n        ];\n        function Provider(props) {\n            const { scope: scope , children: children , ...context } = props;\n            const Context = (scope === null || scope === void 0 ? void 0 : scope[scopeName][index]) || BaseContext; // Only re-memoize when prop values change\n            // eslint-disable-next-line react-hooks/exhaustive-deps\n            const value = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>context\n            , Object.values(context));\n            return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(Context.Provider, {\n                value: value\n            }, children);\n        }\n        function useContext(consumerName, scope) {\n            const Context = (scope === null || scope === void 0 ? void 0 : scope[scopeName][index]) || BaseContext;\n            const context = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(Context);\n            if (context) return context;\n            if (defaultContext !== undefined) return defaultContext; // if a defaultContext wasn't specified, it's a required context.\n            throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n        }\n        Provider.displayName = rootComponentName + 'Provider';\n        return [\n            Provider,\n            useContext\n        ];\n    }\n    /* -----------------------------------------------------------------------------------------------\n   * createScope\n   * ---------------------------------------------------------------------------------------------*/ const createScope = ()=>{\n        const scopeContexts = defaultContexts.map((defaultContext)=>{\n            return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(defaultContext);\n        });\n        return function useScope(scope) {\n            const contexts = (scope === null || scope === void 0 ? void 0 : scope[scopeName]) || scopeContexts;\n            return (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>({\n                    [`__scope${scopeName}`]: {\n                        ...scope,\n                        [scopeName]: contexts\n                    }\n                })\n            , [\n                scope,\n                contexts\n            ]);\n        };\n    };\n    createScope.scopeName = scopeName;\n    return [\n        $c512c27ab02ef895$export$fd42f52fd3ae1109,\n        $c512c27ab02ef895$var$composeContextScopes(createScope, ...createContextScopeDeps)\n    ];\n}\n/* -------------------------------------------------------------------------------------------------\n * composeContextScopes\n * -----------------------------------------------------------------------------------------------*/ function $c512c27ab02ef895$var$composeContextScopes(...scopes) {\n    const baseScope = scopes[0];\n    if (scopes.length === 1) return baseScope;\n    const createScope1 = ()=>{\n        const scopeHooks = scopes.map((createScope)=>({\n                useScope: createScope(),\n                scopeName: createScope.scopeName\n            })\n        );\n        return function useComposedScopes(overrideScopes) {\n            const nextScopes1 = scopeHooks.reduce((nextScopes, { useScope: useScope , scopeName: scopeName  })=>{\n                // We are calling a hook inside a callback which React warns against to avoid inconsistent\n                // renders, however, scoping doesn't have render side effects so we ignore the rule.\n                // eslint-disable-next-line react-hooks/rules-of-hooks\n                const scopeProps = useScope(overrideScopes);\n                const currentScope = scopeProps[`__scope${scopeName}`];\n                return {\n                    ...nextScopes,\n                    ...currentScope\n                };\n            }, {});\n            return (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>({\n                    [`__scope${baseScope.scopeName}`]: nextScopes1\n                })\n            , [\n                nextScopes1\n            ]);\n        };\n    };\n    createScope1.scopeName = baseScope.scopeName;\n    return createScope1;\n}\n\n\n\n\n\n//# sourceMappingURL=index.module.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 10020 characters]\n//# sourceURL=webpack-internal:///../../../node_modules/@radix-ui/react-context/dist/index.module.js\n");
              }
            ),
            /***/
            "../../../node_modules/@radix-ui/react-direction/dist/index.module.js": (
              /*!****************************************************************************!*\
                !*** ../../../node_modules/@radix-ui/react-direction/dist/index.module.js ***!
                \****************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "DirectionProvider": () => (/* binding */ $f631663db3294ace$export$c760c09fdd558351),
/* harmony export */   "Provider": () => (/* binding */ $f631663db3294ace$export$2881499e37b75b9a),
/* harmony export */   "useDirection": () => (/* binding */ $f631663db3294ace$export$b39126d51d94e6f3)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);



const $f631663db3294ace$var$DirectionContext = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(undefined);
/* -------------------------------------------------------------------------------------------------
 * Direction
 * -----------------------------------------------------------------------------------------------*/ const $f631663db3294ace$export$c760c09fdd558351 = (props)=>{
    const { dir: dir , children: children  } = props;
    return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)($f631663db3294ace$var$DirectionContext.Provider, {
        value: dir
    }, children);
};
/* -----------------------------------------------------------------------------------------------*/ function $f631663db3294ace$export$b39126d51d94e6f3(localDir) {
    const globalDir = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)($f631663db3294ace$var$DirectionContext);
    return localDir || globalDir || 'ltr';
}
const $f631663db3294ace$export$2881499e37b75b9a = $f631663db3294ace$export$c760c09fdd558351;





//# sourceMappingURL=index.module.js.map
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC1kaXJlY3Rpb24vZGlzdC9pbmRleC5tb2R1bGUuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBb0k7OztBQUdwSSw2REFBNkQsb0RBQW9CO0FBQ2pGO0FBQ0E7QUFDQTtBQUNBLFlBQVksaUNBQWlDO0FBQzdDLHlCQUF5QixvREFBb0I7QUFDN0M7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLHNCQUFzQixpREFBaUI7QUFDdkM7QUFDQTtBQUNBOzs7OztBQUswTDtBQUMxTCIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LWRpcmVjdGlvbi9kaXN0L2luZGV4Lm1vZHVsZS5qcz82NDFmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Y3JlYXRlQ29udGV4dCBhcyAkN0dqY2QkY3JlYXRlQ29udGV4dCwgY3JlYXRlRWxlbWVudCBhcyAkN0dqY2QkY3JlYXRlRWxlbWVudCwgdXNlQ29udGV4dCBhcyAkN0dqY2QkdXNlQ29udGV4dH0gZnJvbSBcInJlYWN0XCI7XG5cblxuY29uc3QgJGY2MzE2NjNkYjMyOTRhY2UkdmFyJERpcmVjdGlvbkNvbnRleHQgPSAvKiNfX1BVUkVfXyovICQ3R2pjZCRjcmVhdGVDb250ZXh0KHVuZGVmaW5lZCk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBEaXJlY3Rpb25cbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGY2MzE2NjNkYjMyOTRhY2UkZXhwb3J0JGM3NjBjMDlmZGQ1NTgzNTEgPSAocHJvcHMpPT57XG4gICAgY29uc3QgeyBkaXI6IGRpciAsIGNoaWxkcmVuOiBjaGlsZHJlbiAgfSA9IHByb3BzO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ3R2pjZCRjcmVhdGVFbGVtZW50KCRmNjMxNjYzZGIzMjk0YWNlJHZhciREaXJlY3Rpb25Db250ZXh0LlByb3ZpZGVyLCB7XG4gICAgICAgIHZhbHVlOiBkaXJcbiAgICB9LCBjaGlsZHJlbik7XG59O1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBmdW5jdGlvbiAkZjYzMTY2M2RiMzI5NGFjZSRleHBvcnQkYjM5MTI2ZDUxZDk0ZTZmMyhsb2NhbERpcikge1xuICAgIGNvbnN0IGdsb2JhbERpciA9ICQ3R2pjZCR1c2VDb250ZXh0KCRmNjMxNjYzZGIzMjk0YWNlJHZhciREaXJlY3Rpb25Db250ZXh0KTtcbiAgICByZXR1cm4gbG9jYWxEaXIgfHwgZ2xvYmFsRGlyIHx8ICdsdHInO1xufVxuY29uc3QgJGY2MzE2NjNkYjMyOTRhY2UkZXhwb3J0JDI4ODE0OTllMzdiNzViOWEgPSAkZjYzMTY2M2RiMzI5NGFjZSRleHBvcnQkYzc2MGMwOWZkZDU1ODM1MTtcblxuXG5cblxuZXhwb3J0IHskZjYzMTY2M2RiMzI5NGFjZSRleHBvcnQkYjM5MTI2ZDUxZDk0ZTZmMyBhcyB1c2VEaXJlY3Rpb24sICRmNjMxNjYzZGIzMjk0YWNlJGV4cG9ydCQyODgxNDk5ZTM3Yjc1YjlhIGFzIFByb3ZpZGVyLCAkZjYzMTY2M2RiMzI5NGFjZSRleHBvcnQkYzc2MGMwOWZkZDU1ODM1MSBhcyBEaXJlY3Rpb25Qcm92aWRlcn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tb2R1bGUuanMubWFwXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=
//# sourceURL=webpack-internal:///../../../node_modules/@radix-ui/react-direction/dist/index.module.js
`);
              }
            ),
            /***/
            "../../../node_modules/@radix-ui/react-dismissable-layer/dist/index.module.js": (
              /*!************************************************************************************!*\
                !*** ../../../node_modules/@radix-ui/react-dismissable-layer/dist/index.module.js ***!
                \************************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "Branch": () => (/* binding */ $5cb92bef7577960e$export$aecb2ddcb55c95be),
/* harmony export */   "DismissableLayer": () => (/* binding */ $5cb92bef7577960e$export$177fb62ff3ec1f22),
/* harmony export */   "DismissableLayerBranch": () => (/* binding */ $5cb92bef7577960e$export$4d5eb2109db14228),
/* harmony export */   "Root": () => (/* binding */ $5cb92bef7577960e$export$be92b6f5f03c0fe9)
/* harmony export */ });
/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ "../../../node_modules/@babel/runtime/helpers/esm/extends.js");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _radix_ui_primitive__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @radix-ui/primitive */ "../../../node_modules/@radix-ui/primitive/dist/index.module.js");
/* harmony import */ var _radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @radix-ui/react-primitive */ "../../../node_modules/@radix-ui/react-primitive/dist/index.module.js");
/* harmony import */ var _radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @radix-ui/react-compose-refs */ "../../../node_modules/@radix-ui/react-compose-refs/dist/index.module.js");
/* harmony import */ var _radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @radix-ui/react-use-callback-ref */ "../../../node_modules/@radix-ui/react-use-callback-ref/dist/index.module.js");
/* harmony import */ var _radix_ui_react_use_escape_keydown__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @radix-ui/react-use-escape-keydown */ "../../../node_modules/@radix-ui/react-use-escape-keydown/dist/index.module.js");















/* -------------------------------------------------------------------------------------------------
 * DismissableLayer
 * -----------------------------------------------------------------------------------------------*/ const $5cb92bef7577960e$var$DISMISSABLE_LAYER_NAME = 'DismissableLayer';
const $5cb92bef7577960e$var$CONTEXT_UPDATE = 'dismissableLayer.update';
const $5cb92bef7577960e$var$POINTER_DOWN_OUTSIDE = 'dismissableLayer.pointerDownOutside';
const $5cb92bef7577960e$var$FOCUS_OUTSIDE = 'dismissableLayer.focusOutside';
let $5cb92bef7577960e$var$originalBodyPointerEvents;
const $5cb92bef7577960e$var$DismissableLayerContext = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createContext)({
    layers: new Set(),
    layersWithOutsidePointerEventsDisabled: new Set(),
    branches: new Set()
});
const $5cb92bef7577960e$export$177fb62ff3ec1f22 = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)((props, forwardedRef)=>{
    var _node$ownerDocument;
    const { disableOutsidePointerEvents: disableOutsidePointerEvents = false , onEscapeKeyDown: onEscapeKeyDown , onPointerDownOutside: onPointerDownOutside , onFocusOutside: onFocusOutside , onInteractOutside: onInteractOutside , onDismiss: onDismiss , ...layerProps } = props;
    const context = (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)($5cb92bef7577960e$var$DismissableLayerContext);
    const [node1, setNode] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);
    const ownerDocument = (_node$ownerDocument = node1 === null || node1 === void 0 ? void 0 : node1.ownerDocument) !== null && _node$ownerDocument !== void 0 ? _node$ownerDocument : globalThis === null || globalThis === void 0 ? void 0 : globalThis.document;
    const [, force] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({});
    const composedRefs = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_2__.useComposedRefs)(forwardedRef, (node)=>setNode(node)
    );
    const layers = Array.from(context.layers);
    const [highestLayerWithOutsidePointerEventsDisabled] = [
        ...context.layersWithOutsidePointerEventsDisabled
    ].slice(-1); // prettier-ignore
    const highestLayerWithOutsidePointerEventsDisabledIndex = layers.indexOf(highestLayerWithOutsidePointerEventsDisabled); // prettier-ignore
    const index = node1 ? layers.indexOf(node1) : -1;
    const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0;
    const isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex;
    const pointerDownOutside = $5cb92bef7577960e$var$usePointerDownOutside((event)=>{
        const target = event.target;
        const isPointerDownOnBranch = [
            ...context.branches
        ].some((branch)=>branch.contains(target)
        );
        if (!isPointerEventsEnabled || isPointerDownOnBranch) return;
        onPointerDownOutside === null || onPointerDownOutside === void 0 || onPointerDownOutside(event);
        onInteractOutside === null || onInteractOutside === void 0 || onInteractOutside(event);
        if (!event.defaultPrevented) onDismiss === null || onDismiss === void 0 || onDismiss();
    }, ownerDocument);
    const focusOutside = $5cb92bef7577960e$var$useFocusOutside((event)=>{
        const target = event.target;
        const isFocusInBranch = [
            ...context.branches
        ].some((branch)=>branch.contains(target)
        );
        if (isFocusInBranch) return;
        onFocusOutside === null || onFocusOutside === void 0 || onFocusOutside(event);
        onInteractOutside === null || onInteractOutside === void 0 || onInteractOutside(event);
        if (!event.defaultPrevented) onDismiss === null || onDismiss === void 0 || onDismiss();
    }, ownerDocument);
    (0,_radix_ui_react_use_escape_keydown__WEBPACK_IMPORTED_MODULE_3__.useEscapeKeydown)((event)=>{
        const isHighestLayer = index === context.layers.size - 1;
        if (!isHighestLayer) return;
        onEscapeKeyDown === null || onEscapeKeyDown === void 0 || onEscapeKeyDown(event);
        if (!event.defaultPrevented && onDismiss) {
            event.preventDefault();
            onDismiss();
        }
    }, ownerDocument);
    (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{
        if (!node1) return;
        if (disableOutsidePointerEvents) {
            if (context.layersWithOutsidePointerEventsDisabled.size === 0) {
                $5cb92bef7577960e$var$originalBodyPointerEvents = ownerDocument.body.style.pointerEvents;
                ownerDocument.body.style.pointerEvents = 'none';
            }
            context.layersWithOutsidePointerEventsDisabled.add(node1);
        }
        context.layers.add(node1);
        $5cb92bef7577960e$var$dispatchUpdate();
        return ()=>{
            if (disableOutsidePointerEvents && context.layersWithOutsidePointerEventsDisabled.size === 1) ownerDocument.body.style.pointerEvents = $5cb92bef7577960e$var$originalBodyPointerEvents;
        };
    }, [
        node1,
        ownerDocument,
        disableOutsidePointerEvents,
        context
    ]);
    /**
   * We purposefully prevent combining this effect with the \`disableOutsidePointerEvents\` effect
   * because a change to \`disableOutsidePointerEvents\` would remove this layer from the stack
   * and add it to the end again so the layering order wouldn't be _creation order_.
   * We only want them to be removed from context stacks when unmounted.
   */ (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{
        return ()=>{
            if (!node1) return;
            context.layers.delete(node1);
            context.layersWithOutsidePointerEventsDisabled.delete(node1);
            $5cb92bef7577960e$var$dispatchUpdate();
        };
    }, [
        node1,
        context
    ]);
    (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{
        const handleUpdate = ()=>force({})
        ;
        document.addEventListener($5cb92bef7577960e$var$CONTEXT_UPDATE, handleUpdate);
        return ()=>document.removeEventListener($5cb92bef7577960e$var$CONTEXT_UPDATE, handleUpdate)
        ;
    }, []);
    return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_4__.Primitive.div, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, layerProps, {
        ref: composedRefs,
        style: {
            pointerEvents: isBodyPointerEventsDisabled ? isPointerEventsEnabled ? 'auto' : 'none' : undefined,
            ...props.style
        },
        onFocusCapture: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_5__.composeEventHandlers)(props.onFocusCapture, focusOutside.onFocusCapture),
        onBlurCapture: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_5__.composeEventHandlers)(props.onBlurCapture, focusOutside.onBlurCapture),
        onPointerDownCapture: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_5__.composeEventHandlers)(props.onPointerDownCapture, pointerDownOutside.onPointerDownCapture)
    }));
});
/*#__PURE__*/ Object.assign($5cb92bef7577960e$export$177fb62ff3ec1f22, {
    displayName: $5cb92bef7577960e$var$DISMISSABLE_LAYER_NAME
});
/* -------------------------------------------------------------------------------------------------
 * DismissableLayerBranch
 * -----------------------------------------------------------------------------------------------*/ const $5cb92bef7577960e$var$BRANCH_NAME = 'DismissableLayerBranch';
const $5cb92bef7577960e$export$4d5eb2109db14228 = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)((props, forwardedRef)=>{
    const context = (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)($5cb92bef7577960e$var$DismissableLayerContext);
    const ref = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);
    const composedRefs = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_2__.useComposedRefs)(forwardedRef, ref);
    (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{
        const node = ref.current;
        if (node) {
            context.branches.add(node);
            return ()=>{
                context.branches.delete(node);
            };
        }
    }, [
        context.branches
    ]);
    return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_4__.Primitive.div, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, props, {
        ref: composedRefs
    }));
});
/*#__PURE__*/ Object.assign($5cb92bef7577960e$export$4d5eb2109db14228, {
    displayName: $5cb92bef7577960e$var$BRANCH_NAME
});
/* -----------------------------------------------------------------------------------------------*/ /**
 * Listens for \`pointerdown\` outside a react subtree. We use \`pointerdown\` rather than \`pointerup\`
 * to mimic layer dismissing behaviour present in OS.
 * Returns props to pass to the node we want to check for outside events.
 */ function $5cb92bef7577960e$var$usePointerDownOutside(onPointerDownOutside, ownerDocument = globalThis === null || globalThis === void 0 ? void 0 : globalThis.document) {
    const handlePointerDownOutside = (0,_radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_6__.useCallbackRef)(onPointerDownOutside);
    const isPointerInsideReactTreeRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(false);
    const handleClickRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(()=>{});
    (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{
        const handlePointerDown = (event)=>{
            if (event.target && !isPointerInsideReactTreeRef.current) {
                const eventDetail = {
                    originalEvent: event
                };
                function handleAndDispatchPointerDownOutsideEvent() {
                    $5cb92bef7577960e$var$handleAndDispatchCustomEvent($5cb92bef7577960e$var$POINTER_DOWN_OUTSIDE, handlePointerDownOutside, eventDetail, {
                        discrete: true
                    });
                }
                /**
         * On touch devices, we need to wait for a click event because browsers implement
         * a ~350ms delay between the time the user stops touching the display and when the
         * browser executres events. We need to ensure we don't reactivate pointer-events within
         * this timeframe otherwise the browser may execute events that should have been prevented.
         *
         * Additionally, this also lets us deal automatically with cancellations when a click event
         * isn't raised because the page was considered scrolled/drag-scrolled, long-pressed, etc.
         *
         * This is why we also continuously remove the previous listener, because we cannot be
         * certain that it was raised, and therefore cleaned-up.
         */ if (event.pointerType === 'touch') {
                    ownerDocument.removeEventListener('click', handleClickRef.current);
                    handleClickRef.current = handleAndDispatchPointerDownOutsideEvent;
                    ownerDocument.addEventListener('click', handleClickRef.current, {
                        once: true
                    });
                } else handleAndDispatchPointerDownOutsideEvent();
            }
            isPointerInsideReactTreeRef.current = false;
        };
        /**
     * if this hook executes in a component that mounts via a \`pointerdown\` event, the event
     * would bubble up to the document and trigger a \`pointerDownOutside\` event. We avoid
     * this by delaying the event listener registration on the document.
     * This is not React specific, but rather how the DOM works, ie:
     * \`\`\`
     * button.addEventListener('pointerdown', () => {
     *   console.log('I will log');
     *   document.addEventListener('pointerdown', () => {
     *     console.log('I will also log');
     *   })
     * });
     */ const timerId = window.setTimeout(()=>{
            ownerDocument.addEventListener('pointerdown', handlePointerDown);
        }, 0);
        return ()=>{
            window.clearTimeout(timerId);
            ownerDocument.removeEventListener('pointerdown', handlePointerDown);
            ownerDocument.removeEventListener('click', handleClickRef.current);
        };
    }, [
        ownerDocument,
        handlePointerDownOutside
    ]);
    return {
        // ensures we check React component tree (not just DOM tree)
        onPointerDownCapture: ()=>isPointerInsideReactTreeRef.current = true
    };
}
/**
 * Listens for when focus happens outside a react subtree.
 * Returns props to pass to the root (node) of the subtree we want to check.
 */ function $5cb92bef7577960e$var$useFocusOutside(onFocusOutside, ownerDocument = globalThis === null || globalThis === void 0 ? void 0 : globalThis.document) {
    const handleFocusOutside = (0,_radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_6__.useCallbackRef)(onFocusOutside);
    const isFocusInsideReactTreeRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(false);
    (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{
        const handleFocus = (event)=>{
            if (event.target && !isFocusInsideReactTreeRef.current) {
                const eventDetail = {
                    originalEvent: event
                };
                $5cb92bef7577960e$var$handleAndDispatchCustomEvent($5cb92bef7577960e$var$FOCUS_OUTSIDE, handleFocusOutside, eventDetail, {
                    discrete: false
                });
            }
        };
        ownerDocument.addEventListener('focusin', handleFocus);
        return ()=>ownerDocument.removeEventListener('focusin', handleFocus)
        ;
    }, [
        ownerDocument,
        handleFocusOutside
    ]);
    return {
        onFocusCapture: ()=>isFocusInsideReactTreeRef.current = true
        ,
        onBlurCapture: ()=>isFocusInsideReactTreeRef.current = false
    };
}
function $5cb92bef7577960e$var$dispatchUpdate() {
    const event = new CustomEvent($5cb92bef7577960e$var$CONTEXT_UPDATE);
    document.dispatchEvent(event);
}
function $5cb92bef7577960e$var$handleAndDispatchCustomEvent(name, handler, detail, { discrete: discrete  }) {
    const target = detail.originalEvent.target;
    const event = new CustomEvent(name, {
        bubbles: false,
        cancelable: true,
        detail: detail
    });
    if (handler) target.addEventListener(name, handler, {
        once: true
    });
    if (discrete) (0,_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_4__.dispatchDiscreteCustomEvent)(target, event);
    else target.dispatchEvent(event);
}
const $5cb92bef7577960e$export$be92b6f5f03c0fe9 = $5cb92bef7577960e$export$177fb62ff3ec1f22;
const $5cb92bef7577960e$export$aecb2ddcb55c95be = $5cb92bef7577960e$export$4d5eb2109db14228;





//# sourceMappingURL=index.module.js.map
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 22992 characters]
//# sourceURL=webpack-internal:///../../../node_modules/@radix-ui/react-dismissable-layer/dist/index.module.js
`);
              }
            ),
            /***/
            "../../../node_modules/@radix-ui/react-focus-guards/dist/index.module.js": (
              /*!*******************************************************************************!*\
                !*** ../../../node_modules/@radix-ui/react-focus-guards/dist/index.module.js ***!
                \*******************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "FocusGuards": () => (/* binding */ $3db38b7d1fb3fe6a$export$ac5b58043b79449b),
/* harmony export */   "Root": () => (/* binding */ $3db38b7d1fb3fe6a$export$be92b6f5f03c0fe9),
/* harmony export */   "useFocusGuards": () => (/* binding */ $3db38b7d1fb3fe6a$export$b7ece24a22aeda8c)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);



/** Number of components which have requested interest to have focus guards */ let $3db38b7d1fb3fe6a$var$count = 0;
function $3db38b7d1fb3fe6a$export$ac5b58043b79449b(props) {
    $3db38b7d1fb3fe6a$export$b7ece24a22aeda8c();
    return props.children;
}
/**
 * Injects a pair of focus guards at the edges of the whole DOM tree
 * to ensure \`focusin\` & \`focusout\` events can be caught consistently.
 */ function $3db38b7d1fb3fe6a$export$b7ece24a22aeda8c() {
    (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{
        var _edgeGuards$, _edgeGuards$2;
        const edgeGuards = document.querySelectorAll('[data-radix-focus-guard]');
        document.body.insertAdjacentElement('afterbegin', (_edgeGuards$ = edgeGuards[0]) !== null && _edgeGuards$ !== void 0 ? _edgeGuards$ : $3db38b7d1fb3fe6a$var$createFocusGuard());
        document.body.insertAdjacentElement('beforeend', (_edgeGuards$2 = edgeGuards[1]) !== null && _edgeGuards$2 !== void 0 ? _edgeGuards$2 : $3db38b7d1fb3fe6a$var$createFocusGuard());
        $3db38b7d1fb3fe6a$var$count++;
        return ()=>{
            if ($3db38b7d1fb3fe6a$var$count === 1) document.querySelectorAll('[data-radix-focus-guard]').forEach((node)=>node.remove()
            );
            $3db38b7d1fb3fe6a$var$count--;
        };
    }, []);
}
function $3db38b7d1fb3fe6a$var$createFocusGuard() {
    const element = document.createElement('span');
    element.setAttribute('data-radix-focus-guard', '');
    element.tabIndex = 0;
    element.style.cssText = 'outline: none; opacity: 0; position: fixed; pointer-events: none';
    return element;
}
const $3db38b7d1fb3fe6a$export$be92b6f5f03c0fe9 = $3db38b7d1fb3fe6a$export$ac5b58043b79449b;





//# sourceMappingURL=index.module.js.map
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC1mb2N1cy1ndWFyZHMvZGlzdC9pbmRleC5tb2R1bGUuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBb0Q7OztBQUdwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLGdEQUFnQjtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNENBQTRDLFlBQVksaUJBQWlCO0FBQ3pFO0FBQ0E7QUFDQTs7Ozs7QUFLa0w7QUFDbEwiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC1mb2N1cy1ndWFyZHMvZGlzdC9pbmRleC5tb2R1bGUuanM/MTczOSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3VzZUVmZmVjdCBhcyAkMXdFcnokdXNlRWZmZWN0fSBmcm9tIFwicmVhY3RcIjtcblxuXG4vKiogTnVtYmVyIG9mIGNvbXBvbmVudHMgd2hpY2ggaGF2ZSByZXF1ZXN0ZWQgaW50ZXJlc3QgdG8gaGF2ZSBmb2N1cyBndWFyZHMgKi8gbGV0ICQzZGIzOGI3ZDFmYjNmZTZhJHZhciRjb3VudCA9IDA7XG5mdW5jdGlvbiAkM2RiMzhiN2QxZmIzZmU2YSRleHBvcnQkYWM1YjU4MDQzYjc5NDQ5Yihwcm9wcykge1xuICAgICQzZGIzOGI3ZDFmYjNmZTZhJGV4cG9ydCRiN2VjZTI0YTIyYWVkYThjKCk7XG4gICAgcmV0dXJuIHByb3BzLmNoaWxkcmVuO1xufVxuLyoqXG4gKiBJbmplY3RzIGEgcGFpciBvZiBmb2N1cyBndWFyZHMgYXQgdGhlIGVkZ2VzIG9mIHRoZSB3aG9sZSBET00gdHJlZVxuICogdG8gZW5zdXJlIGBmb2N1c2luYCAmIGBmb2N1c291dGAgZXZlbnRzIGNhbiBiZSBjYXVnaHQgY29uc2lzdGVudGx5LlxuICovIGZ1bmN0aW9uICQzZGIzOGI3ZDFmYjNmZTZhJGV4cG9ydCRiN2VjZTI0YTIyYWVkYThjKCkge1xuICAgICQxd0VyeiR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgdmFyIF9lZGdlR3VhcmRzJCwgX2VkZ2VHdWFyZHMkMjtcbiAgICAgICAgY29uc3QgZWRnZUd1YXJkcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLXJhZGl4LWZvY3VzLWd1YXJkXScpO1xuICAgICAgICBkb2N1bWVudC5ib2R5Lmluc2VydEFkamFjZW50RWxlbWVudCgnYWZ0ZXJiZWdpbicsIChfZWRnZUd1YXJkcyQgPSBlZGdlR3VhcmRzWzBdKSAhPT0gbnVsbCAmJiBfZWRnZUd1YXJkcyQgIT09IHZvaWQgMCA/IF9lZGdlR3VhcmRzJCA6ICQzZGIzOGI3ZDFmYjNmZTZhJHZhciRjcmVhdGVGb2N1c0d1YXJkKCkpO1xuICAgICAgICBkb2N1bWVudC5ib2R5Lmluc2VydEFkamFjZW50RWxlbWVudCgnYmVmb3JlZW5kJywgKF9lZGdlR3VhcmRzJDIgPSBlZGdlR3VhcmRzWzFdKSAhPT0gbnVsbCAmJiBfZWRnZUd1YXJkcyQyICE9PSB2b2lkIDAgPyBfZWRnZUd1YXJkcyQyIDogJDNkYjM4YjdkMWZiM2ZlNmEkdmFyJGNyZWF0ZUZvY3VzR3VhcmQoKSk7XG4gICAgICAgICQzZGIzOGI3ZDFmYjNmZTZhJHZhciRjb3VudCsrO1xuICAgICAgICByZXR1cm4gKCk9PntcbiAgICAgICAgICAgIGlmICgkM2RiMzhiN2QxZmIzZmU2YSR2YXIkY291bnQgPT09IDEpIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLXJhZGl4LWZvY3VzLWd1YXJkXScpLmZvckVhY2goKG5vZGUpPT5ub2RlLnJlbW92ZSgpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgJDNkYjM4YjdkMWZiM2ZlNmEkdmFyJGNvdW50LS07XG4gICAgICAgIH07XG4gICAgfSwgW10pO1xufVxuZnVuY3Rpb24gJDNkYjM4YjdkMWZiM2ZlNmEkdmFyJGNyZWF0ZUZvY3VzR3VhcmQoKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnZGF0YS1yYWRpeC1mb2N1cy1ndWFyZCcsICcnKTtcbiAgICBlbGVtZW50LnRhYkluZGV4ID0gMDtcbiAgICBlbGVtZW50LnN0eWxlLmNzc1RleHQgPSAnb3V0bGluZTogbm9uZTsgb3BhY2l0eTogMDsgcG9zaXRpb246IGZpeGVkOyBwb2ludGVyLWV2ZW50czogbm9uZSc7XG4gICAgcmV0dXJuIGVsZW1lbnQ7XG59XG5jb25zdCAkM2RiMzhiN2QxZmIzZmU2YSRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSA9ICQzZGIzOGI3ZDFmYjNmZTZhJGV4cG9ydCRhYzViNTgwNDNiNzk0NDliO1xuXG5cblxuXG5leHBvcnQgeyQzZGIzOGI3ZDFmYjNmZTZhJGV4cG9ydCRhYzViNTgwNDNiNzk0NDliIGFzIEZvY3VzR3VhcmRzLCAkM2RiMzhiN2QxZmIzZmU2YSRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSBhcyBSb290LCAkM2RiMzhiN2QxZmIzZmU2YSRleHBvcnQkYjdlY2UyNGEyMmFlZGE4YyBhcyB1c2VGb2N1c0d1YXJkc307XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tb2R1bGUuanMubWFwXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=
//# sourceURL=webpack-internal:///../../../node_modules/@radix-ui/react-focus-guards/dist/index.module.js
`);
              }
            ),
            /***/
            "../../../node_modules/@radix-ui/react-focus-scope/dist/index.module.js": (
              /*!******************************************************************************!*\
                !*** ../../../node_modules/@radix-ui/react-focus-scope/dist/index.module.js ***!
                \******************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "FocusScope": () => (/* binding */ $d3863c46a17e8a28$export$20e40289641fbbb6),
/* harmony export */   "Root": () => (/* binding */ $d3863c46a17e8a28$export$be92b6f5f03c0fe9)
/* harmony export */ });
/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ "../../../node_modules/@babel/runtime/helpers/esm/extends.js");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @radix-ui/react-compose-refs */ "../../../node_modules/@radix-ui/react-compose-refs/dist/index.module.js");
/* harmony import */ var _radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @radix-ui/react-primitive */ "../../../node_modules/@radix-ui/react-primitive/dist/index.module.js");
/* harmony import */ var _radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @radix-ui/react-use-callback-ref */ "../../../node_modules/@radix-ui/react-use-callback-ref/dist/index.module.js");











const $d3863c46a17e8a28$var$AUTOFOCUS_ON_MOUNT = 'focusScope.autoFocusOnMount';
const $d3863c46a17e8a28$var$AUTOFOCUS_ON_UNMOUNT = 'focusScope.autoFocusOnUnmount';
const $d3863c46a17e8a28$var$EVENT_OPTIONS = {
    bubbles: false,
    cancelable: true
};
/* -------------------------------------------------------------------------------------------------
 * FocusScope
 * -----------------------------------------------------------------------------------------------*/ const $d3863c46a17e8a28$var$FOCUS_SCOPE_NAME = 'FocusScope';
const $d3863c46a17e8a28$export$20e40289641fbbb6 = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)((props, forwardedRef)=>{
    const { loop: loop = false , trapped: trapped = false , onMountAutoFocus: onMountAutoFocusProp , onUnmountAutoFocus: onUnmountAutoFocusProp , ...scopeProps } = props;
    const [container1, setContainer] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);
    const onMountAutoFocus = (0,_radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_2__.useCallbackRef)(onMountAutoFocusProp);
    const onUnmountAutoFocus = (0,_radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_2__.useCallbackRef)(onUnmountAutoFocusProp);
    const lastFocusedElementRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);
    const composedRefs = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_3__.useComposedRefs)(forwardedRef, (node)=>setContainer(node)
    );
    const focusScope = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)({
        paused: false,
        pause () {
            this.paused = true;
        },
        resume () {
            this.paused = false;
        }
    }).current; // Takes care of trapping focus if focus is moved outside programmatically for example
    (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{
        if (trapped) {
            function handleFocusIn(event) {
                if (focusScope.paused || !container1) return;
                const target = event.target;
                if (container1.contains(target)) lastFocusedElementRef.current = target;
                else $d3863c46a17e8a28$var$focus(lastFocusedElementRef.current, {
                    select: true
                });
            }
            function handleFocusOut(event) {
                if (focusScope.paused || !container1) return;
                if (!container1.contains(event.relatedTarget)) $d3863c46a17e8a28$var$focus(lastFocusedElementRef.current, {
                    select: true
                });
            }
            document.addEventListener('focusin', handleFocusIn);
            document.addEventListener('focusout', handleFocusOut);
            return ()=>{
                document.removeEventListener('focusin', handleFocusIn);
                document.removeEventListener('focusout', handleFocusOut);
            };
        }
    }, [
        trapped,
        container1,
        focusScope.paused
    ]);
    (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{
        if (container1) {
            $d3863c46a17e8a28$var$focusScopesStack.add(focusScope);
            const previouslyFocusedElement = document.activeElement;
            const hasFocusedCandidate = container1.contains(previouslyFocusedElement);
            if (!hasFocusedCandidate) {
                const mountEvent = new CustomEvent($d3863c46a17e8a28$var$AUTOFOCUS_ON_MOUNT, $d3863c46a17e8a28$var$EVENT_OPTIONS);
                container1.addEventListener($d3863c46a17e8a28$var$AUTOFOCUS_ON_MOUNT, onMountAutoFocus);
                container1.dispatchEvent(mountEvent);
                if (!mountEvent.defaultPrevented) {
                    $d3863c46a17e8a28$var$focusFirst($d3863c46a17e8a28$var$removeLinks($d3863c46a17e8a28$var$getTabbableCandidates(container1)), {
                        select: true
                    });
                    if (document.activeElement === previouslyFocusedElement) $d3863c46a17e8a28$var$focus(container1);
                }
            }
            return ()=>{
                container1.removeEventListener($d3863c46a17e8a28$var$AUTOFOCUS_ON_MOUNT, onMountAutoFocus); // We hit a react bug (fixed in v17) with focusing in unmount.
                // We need to delay the focus a little to get around it for now.
                // See: https://github.com/facebook/react/issues/17894
                setTimeout(()=>{
                    const unmountEvent = new CustomEvent($d3863c46a17e8a28$var$AUTOFOCUS_ON_UNMOUNT, $d3863c46a17e8a28$var$EVENT_OPTIONS);
                    container1.addEventListener($d3863c46a17e8a28$var$AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);
                    container1.dispatchEvent(unmountEvent);
                    if (!unmountEvent.defaultPrevented) $d3863c46a17e8a28$var$focus(previouslyFocusedElement !== null && previouslyFocusedElement !== void 0 ? previouslyFocusedElement : document.body, {
                        select: true
                    });
                     // we need to remove the listener after we \`dispatchEvent\`
                    container1.removeEventListener($d3863c46a17e8a28$var$AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);
                    $d3863c46a17e8a28$var$focusScopesStack.remove(focusScope);
                }, 0);
            };
        }
    }, [
        container1,
        onMountAutoFocus,
        onUnmountAutoFocus,
        focusScope
    ]); // Takes care of looping focus (when tabbing whilst at the edges)
    const handleKeyDown = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)((event)=>{
        if (!loop && !trapped) return;
        if (focusScope.paused) return;
        const isTabKey = event.key === 'Tab' && !event.altKey && !event.ctrlKey && !event.metaKey;
        const focusedElement = document.activeElement;
        if (isTabKey && focusedElement) {
            const container = event.currentTarget;
            const [first, last] = $d3863c46a17e8a28$var$getTabbableEdges(container);
            const hasTabbableElementsInside = first && last; // we can only wrap focus if we have tabbable edges
            if (!hasTabbableElementsInside) {
                if (focusedElement === container) event.preventDefault();
            } else {
                if (!event.shiftKey && focusedElement === last) {
                    event.preventDefault();
                    if (loop) $d3863c46a17e8a28$var$focus(first, {
                        select: true
                    });
                } else if (event.shiftKey && focusedElement === first) {
                    event.preventDefault();
                    if (loop) $d3863c46a17e8a28$var$focus(last, {
                        select: true
                    });
                }
            }
        }
    }, [
        loop,
        trapped,
        focusScope.paused
    ]);
    return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_4__.Primitive.div, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({
        tabIndex: -1
    }, scopeProps, {
        ref: composedRefs,
        onKeyDown: handleKeyDown
    }));
});
/*#__PURE__*/ Object.assign($d3863c46a17e8a28$export$20e40289641fbbb6, {
    displayName: $d3863c46a17e8a28$var$FOCUS_SCOPE_NAME
});
/* -------------------------------------------------------------------------------------------------
 * Utils
 * -----------------------------------------------------------------------------------------------*/ /**
 * Attempts focusing the first element in a list of candidates.
 * Stops when focus has actually moved.
 */ function $d3863c46a17e8a28$var$focusFirst(candidates, { select: select = false  } = {}) {
    const previouslyFocusedElement = document.activeElement;
    for (const candidate of candidates){
        $d3863c46a17e8a28$var$focus(candidate, {
            select: select
        });
        if (document.activeElement !== previouslyFocusedElement) return;
    }
}
/**
 * Returns the first and last tabbable elements inside a container.
 */ function $d3863c46a17e8a28$var$getTabbableEdges(container) {
    const candidates = $d3863c46a17e8a28$var$getTabbableCandidates(container);
    const first = $d3863c46a17e8a28$var$findVisible(candidates, container);
    const last = $d3863c46a17e8a28$var$findVisible(candidates.reverse(), container);
    return [
        first,
        last
    ];
}
/**
 * Returns a list of potential tabbable candidates.
 *
 * NOTE: This is only a close approximation. For example it doesn't take into account cases like when
 * elements are not visible. This cannot be worked out easily by just reading a property, but rather
 * necessitate runtime knowledge (computed styles, etc). We deal with these cases separately.
 *
 * See: https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker
 * Credit: https://github.com/discord/focus-layers/blob/master/src/util/wrapFocus.tsx#L1
 */ function $d3863c46a17e8a28$var$getTabbableCandidates(container) {
    const nodes = [];
    const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {
        acceptNode: (node)=>{
            const isHiddenInput = node.tagName === 'INPUT' && node.type === 'hidden';
            if (node.disabled || node.hidden || isHiddenInput) return NodeFilter.FILTER_SKIP; // \`.tabIndex\` is not the same as the \`tabindex\` attribute. It works on the
            // runtime's understanding of tabbability, so this automatically accounts
            // for any kind of element that could be tabbed to.
            return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;
        }
    });
    while(walker.nextNode())nodes.push(walker.currentNode); // we do not take into account the order of nodes with positive \`tabIndex\` as it
    // hinders accessibility to have tab order different from visual order.
    return nodes;
}
/**
 * Returns the first visible element in a list.
 * NOTE: Only checks visibility up to the \`container\`.
 */ function $d3863c46a17e8a28$var$findVisible(elements, container) {
    for (const element of elements){
        // we stop checking if it's hidden at the \`container\` level (excluding)
        if (!$d3863c46a17e8a28$var$isHidden(element, {
            upTo: container
        })) return element;
    }
}
function $d3863c46a17e8a28$var$isHidden(node, { upTo: upTo  }) {
    if (getComputedStyle(node).visibility === 'hidden') return true;
    while(node){
        // we stop at \`upTo\` (excluding it)
        if (upTo !== undefined && node === upTo) return false;
        if (getComputedStyle(node).display === 'none') return true;
        node = node.parentElement;
    }
    return false;
}
function $d3863c46a17e8a28$var$isSelectableInput(element) {
    return element instanceof HTMLInputElement && 'select' in element;
}
function $d3863c46a17e8a28$var$focus(element, { select: select = false  } = {}) {
    // only focus if that element is focusable
    if (element && element.focus) {
        const previouslyFocusedElement = document.activeElement; // NOTE: we prevent scrolling on focus, to minimize jarring transitions for users
        element.focus({
            preventScroll: true
        }); // only select if its not the same element, it supports selection and we need to select
        if (element !== previouslyFocusedElement && $d3863c46a17e8a28$var$isSelectableInput(element) && select) element.select();
    }
}
/* -------------------------------------------------------------------------------------------------
 * FocusScope stack
 * -----------------------------------------------------------------------------------------------*/ const $d3863c46a17e8a28$var$focusScopesStack = $d3863c46a17e8a28$var$createFocusScopesStack();
function $d3863c46a17e8a28$var$createFocusScopesStack() {
    /** A stack of focus scopes, with the active one at the top */ let stack = [];
    return {
        add (focusScope) {
            // pause the currently active focus scope (at the top of the stack)
            const activeFocusScope = stack[0];
            if (focusScope !== activeFocusScope) activeFocusScope === null || activeFocusScope === void 0 || activeFocusScope.pause();
             // remove in case it already exists (because we'll re-add it at the top of the stack)
            stack = $d3863c46a17e8a28$var$arrayRemove(stack, focusScope);
            stack.unshift(focusScope);
        },
        remove (focusScope) {
            var _stack$;
            stack = $d3863c46a17e8a28$var$arrayRemove(stack, focusScope);
            (_stack$ = stack[0]) === null || _stack$ === void 0 || _stack$.resume();
        }
    };
}
function $d3863c46a17e8a28$var$arrayRemove(array, item) {
    const updatedArray = [
        ...array
    ];
    const index = updatedArray.indexOf(item);
    if (index !== -1) updatedArray.splice(index, 1);
    return updatedArray;
}
function $d3863c46a17e8a28$var$removeLinks(items) {
    return items.filter((item)=>item.tagName !== 'A'
    );
}
const $d3863c46a17e8a28$export$be92b6f5f03c0fe9 = $d3863c46a17e8a28$export$20e40289641fbbb6;





//# sourceMappingURL=index.module.js.map
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 20732 characters]
//# sourceURL=webpack-internal:///../../../node_modules/@radix-ui/react-focus-scope/dist/index.module.js
`);
              }
            ),
            /***/
            "../../../node_modules/@radix-ui/react-id/dist/index.module.js": (
              /*!*********************************************************************!*\
                !*** ../../../node_modules/@radix-ui/react-id/dist/index.module.js ***!
                \*********************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "useId": () => (/* binding */ $1746a345f3d73bb7$export$f680877a34711e37)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _radix_ui_react_use_layout_effect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @radix-ui/react-use-layout-effect */ "../../../node_modules/@radix-ui/react-use-layout-effect/dist/index.module.js");





const $1746a345f3d73bb7$var$useReactId = react__WEBPACK_IMPORTED_MODULE_0__['useId'.toString()] || (()=>undefined
);
let $1746a345f3d73bb7$var$count = 0;
function $1746a345f3d73bb7$export$f680877a34711e37(deterministicId) {
    const [id, setId] = react__WEBPACK_IMPORTED_MODULE_0__.useState($1746a345f3d73bb7$var$useReactId()); // React versions older than 18 will have client-side ids only.
    (0,_radix_ui_react_use_layout_effect__WEBPACK_IMPORTED_MODULE_1__.useLayoutEffect)(()=>{
        if (!deterministicId) setId((reactId)=>reactId !== null && reactId !== void 0 ? reactId : String($1746a345f3d73bb7$var$count++)
        );
    }, [
        deterministicId
    ]);
    return deterministicId || (id ? \`radix-\${id}\` : '');
}





//# sourceMappingURL=index.module.js.map
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC1pZC9kaXN0L2luZGV4Lm1vZHVsZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQXNDO0FBQ3NEOzs7O0FBSTVGLHlDQUF5QyxrQ0FBWTtBQUNyRDtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsMkNBQXFCLHNDQUFzQztBQUNuRixJQUFJLGtGQUFzQjtBQUMxQjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSw2Q0FBNkMsR0FBRztBQUNoRDs7Ozs7QUFLNEQ7QUFDNUQiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC1pZC9kaXN0L2luZGV4Lm1vZHVsZS5qcz85NWYwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzICQyQU9EeCRyZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7dXNlTGF5b3V0RWZmZWN0IGFzICQyQU9EeCR1c2VMYXlvdXRFZmZlY3R9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLWxheW91dC1lZmZlY3RcIjtcblxuXG5cbmNvbnN0ICQxNzQ2YTM0NWYzZDczYmI3JHZhciR1c2VSZWFjdElkID0gJDJBT0R4JHJlYWN0Wyd1c2VJZCcudG9TdHJpbmcoKV0gfHwgKCgpPT51bmRlZmluZWRcbik7XG5sZXQgJDE3NDZhMzQ1ZjNkNzNiYjckdmFyJGNvdW50ID0gMDtcbmZ1bmN0aW9uICQxNzQ2YTM0NWYzZDczYmI3JGV4cG9ydCRmNjgwODc3YTM0NzExZTM3KGRldGVybWluaXN0aWNJZCkge1xuICAgIGNvbnN0IFtpZCwgc2V0SWRdID0gJDJBT0R4JHJlYWN0LnVzZVN0YXRlKCQxNzQ2YTM0NWYzZDczYmI3JHZhciR1c2VSZWFjdElkKCkpOyAvLyBSZWFjdCB2ZXJzaW9ucyBvbGRlciB0aGFuIDE4IHdpbGwgaGF2ZSBjbGllbnQtc2lkZSBpZHMgb25seS5cbiAgICAkMkFPRHgkdXNlTGF5b3V0RWZmZWN0KCgpPT57XG4gICAgICAgIGlmICghZGV0ZXJtaW5pc3RpY0lkKSBzZXRJZCgocmVhY3RJZCk9PnJlYWN0SWQgIT09IG51bGwgJiYgcmVhY3RJZCAhPT0gdm9pZCAwID8gcmVhY3RJZCA6IFN0cmluZygkMTc0NmEzNDVmM2Q3M2JiNyR2YXIkY291bnQrKylcbiAgICAgICAgKTtcbiAgICB9LCBbXG4gICAgICAgIGRldGVybWluaXN0aWNJZFxuICAgIF0pO1xuICAgIHJldHVybiBkZXRlcm1pbmlzdGljSWQgfHwgKGlkID8gYHJhZGl4LSR7aWR9YCA6ICcnKTtcbn1cblxuXG5cblxuZXhwb3J0IHskMTc0NmEzNDVmM2Q3M2JiNyRleHBvcnQkZjY4MDg3N2EzNDcxMWUzNyBhcyB1c2VJZH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tb2R1bGUuanMubWFwXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=
//# sourceURL=webpack-internal:///../../../node_modules/@radix-ui/react-id/dist/index.module.js
`);
              }
            ),
            /***/
            "../../../node_modules/@radix-ui/react-popover/dist/index.module.js": (
              /*!**************************************************************************!*\
                !*** ../../../node_modules/@radix-ui/react-popover/dist/index.module.js ***!
                \**************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "Anchor": () => (/* binding */ $cb5cc270b50c6fcd$export$b688253958b8dfe7),
/* harmony export */   "Arrow": () => (/* binding */ $cb5cc270b50c6fcd$export$21b07c8f274aebd5),
/* harmony export */   "Close": () => (/* binding */ $cb5cc270b50c6fcd$export$f39c2d165cd861fe),
/* harmony export */   "Content": () => (/* binding */ $cb5cc270b50c6fcd$export$7c6e2c02157bb7d2),
/* harmony export */   "Popover": () => (/* binding */ $cb5cc270b50c6fcd$export$5b6b19405a83ff9d),
/* harmony export */   "PopoverAnchor": () => (/* binding */ $cb5cc270b50c6fcd$export$96e5381f42521a79),
/* harmony export */   "PopoverArrow": () => (/* binding */ $cb5cc270b50c6fcd$export$3152841115e061b2),
/* harmony export */   "PopoverClose": () => (/* binding */ $cb5cc270b50c6fcd$export$d6ac43ebaa40d53e),
/* harmony export */   "PopoverContent": () => (/* binding */ $cb5cc270b50c6fcd$export$d7e1f420b25549ff),
/* harmony export */   "PopoverPortal": () => (/* binding */ $cb5cc270b50c6fcd$export$dd679ffb4362d2d4),
/* harmony export */   "PopoverTrigger": () => (/* binding */ $cb5cc270b50c6fcd$export$7dacb05d26466c3),
/* harmony export */   "Portal": () => (/* binding */ $cb5cc270b50c6fcd$export$602eac185826482c),
/* harmony export */   "Root": () => (/* binding */ $cb5cc270b50c6fcd$export$be92b6f5f03c0fe9),
/* harmony export */   "Trigger": () => (/* binding */ $cb5cc270b50c6fcd$export$41fb9f06171c75f4),
/* harmony export */   "createPopoverScope": () => (/* binding */ $cb5cc270b50c6fcd$export$c8393c9e73286932)
/* harmony export */ });
/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ "../../../node_modules/@babel/runtime/helpers/esm/extends.js");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _radix_ui_primitive__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @radix-ui/primitive */ "../../../node_modules/@radix-ui/primitive/dist/index.module.js");
/* harmony import */ var _radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @radix-ui/react-compose-refs */ "../../../node_modules/@radix-ui/react-compose-refs/dist/index.module.js");
/* harmony import */ var _radix_ui_react_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @radix-ui/react-context */ "../../../node_modules/@radix-ui/react-context/dist/index.module.js");
/* harmony import */ var _radix_ui_react_dismissable_layer__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @radix-ui/react-dismissable-layer */ "../../../node_modules/@radix-ui/react-dismissable-layer/dist/index.module.js");
/* harmony import */ var _radix_ui_react_focus_guards__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @radix-ui/react-focus-guards */ "../../../node_modules/@radix-ui/react-focus-guards/dist/index.module.js");
/* harmony import */ var _radix_ui_react_focus_scope__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @radix-ui/react-focus-scope */ "../../../node_modules/@radix-ui/react-focus-scope/dist/index.module.js");
/* harmony import */ var _radix_ui_react_id__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @radix-ui/react-id */ "../../../node_modules/@radix-ui/react-id/dist/index.module.js");
/* harmony import */ var _radix_ui_react_popper__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @radix-ui/react-popper */ "../../../node_modules/@radix-ui/react-popper/dist/index.module.js");
/* harmony import */ var _radix_ui_react_portal__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @radix-ui/react-portal */ "../../../node_modules/@radix-ui/react-portal/dist/index.module.js");
/* harmony import */ var _radix_ui_react_presence__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @radix-ui/react-presence */ "../../../node_modules/@radix-ui/react-presence/dist/index.module.js");
/* harmony import */ var _radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @radix-ui/react-primitive */ "../../../node_modules/@radix-ui/react-primitive/dist/index.module.js");
/* harmony import */ var _radix_ui_react_slot__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @radix-ui/react-slot */ "../../../node_modules/@radix-ui/react-slot/dist/index.module.js");
/* harmony import */ var _radix_ui_react_use_controllable_state__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @radix-ui/react-use-controllable-state */ "../../../node_modules/@radix-ui/react-use-controllable-state/dist/index.module.js");
/* harmony import */ var aria_hidden__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! aria-hidden */ "../../../node_modules/aria-hidden/dist/es2015/index.js");
/* harmony import */ var react_remove_scroll__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! react-remove-scroll */ "../../../node_modules/react-remove-scroll/dist/es2015/Combination.js");




































/* -------------------------------------------------------------------------------------------------
 * Popover
 * -----------------------------------------------------------------------------------------------*/ const $cb5cc270b50c6fcd$var$POPOVER_NAME = 'Popover';
const [$cb5cc270b50c6fcd$var$createPopoverContext, $cb5cc270b50c6fcd$export$c8393c9e73286932] = (0,_radix_ui_react_context__WEBPACK_IMPORTED_MODULE_2__.createContextScope)($cb5cc270b50c6fcd$var$POPOVER_NAME, [
    _radix_ui_react_popper__WEBPACK_IMPORTED_MODULE_3__.createPopperScope
]);
const $cb5cc270b50c6fcd$var$usePopperScope = (0,_radix_ui_react_popper__WEBPACK_IMPORTED_MODULE_3__.createPopperScope)();
const [$cb5cc270b50c6fcd$var$PopoverProvider, $cb5cc270b50c6fcd$var$usePopoverContext] = $cb5cc270b50c6fcd$var$createPopoverContext($cb5cc270b50c6fcd$var$POPOVER_NAME);
const $cb5cc270b50c6fcd$export$5b6b19405a83ff9d = (props)=>{
    const { __scopePopover: __scopePopover , children: children , open: openProp , defaultOpen: defaultOpen , onOpenChange: onOpenChange , modal: modal = false  } = props;
    const popperScope = $cb5cc270b50c6fcd$var$usePopperScope(__scopePopover);
    const triggerRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);
    const [hasCustomAnchor, setHasCustomAnchor] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);
    const [open = false, setOpen] = (0,_radix_ui_react_use_controllable_state__WEBPACK_IMPORTED_MODULE_4__.useControllableState)({
        prop: openProp,
        defaultProp: defaultOpen,
        onChange: onOpenChange
    });
    return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_popper__WEBPACK_IMPORTED_MODULE_3__.Root, popperScope, /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)($cb5cc270b50c6fcd$var$PopoverProvider, {
        scope: __scopePopover,
        contentId: (0,_radix_ui_react_id__WEBPACK_IMPORTED_MODULE_5__.useId)(),
        triggerRef: triggerRef,
        open: open,
        onOpenChange: setOpen,
        onOpenToggle: (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(()=>setOpen((prevOpen)=>!prevOpen
            )
        , [
            setOpen
        ]),
        hasCustomAnchor: hasCustomAnchor,
        onCustomAnchorAdd: (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(()=>setHasCustomAnchor(true)
        , []),
        onCustomAnchorRemove: (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(()=>setHasCustomAnchor(false)
        , []),
        modal: modal
    }, children));
};
/*#__PURE__*/ Object.assign($cb5cc270b50c6fcd$export$5b6b19405a83ff9d, {
    displayName: $cb5cc270b50c6fcd$var$POPOVER_NAME
});
/* -------------------------------------------------------------------------------------------------
 * PopoverAnchor
 * -----------------------------------------------------------------------------------------------*/ const $cb5cc270b50c6fcd$var$ANCHOR_NAME = 'PopoverAnchor';
const $cb5cc270b50c6fcd$export$96e5381f42521a79 = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)((props, forwardedRef)=>{
    const { __scopePopover: __scopePopover , ...anchorProps } = props;
    const context = $cb5cc270b50c6fcd$var$usePopoverContext($cb5cc270b50c6fcd$var$ANCHOR_NAME, __scopePopover);
    const popperScope = $cb5cc270b50c6fcd$var$usePopperScope(__scopePopover);
    const { onCustomAnchorAdd: onCustomAnchorAdd , onCustomAnchorRemove: onCustomAnchorRemove  } = context;
    (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{
        onCustomAnchorAdd();
        return ()=>onCustomAnchorRemove()
        ;
    }, [
        onCustomAnchorAdd,
        onCustomAnchorRemove
    ]);
    return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_popper__WEBPACK_IMPORTED_MODULE_3__.Anchor, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, popperScope, anchorProps, {
        ref: forwardedRef
    }));
});
/*#__PURE__*/ Object.assign($cb5cc270b50c6fcd$export$96e5381f42521a79, {
    displayName: $cb5cc270b50c6fcd$var$ANCHOR_NAME
});
/* -------------------------------------------------------------------------------------------------
 * PopoverTrigger
 * -----------------------------------------------------------------------------------------------*/ const $cb5cc270b50c6fcd$var$TRIGGER_NAME = 'PopoverTrigger';
const $cb5cc270b50c6fcd$export$7dacb05d26466c3 = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)((props, forwardedRef)=>{
    const { __scopePopover: __scopePopover , ...triggerProps } = props;
    const context = $cb5cc270b50c6fcd$var$usePopoverContext($cb5cc270b50c6fcd$var$TRIGGER_NAME, __scopePopover);
    const popperScope = $cb5cc270b50c6fcd$var$usePopperScope(__scopePopover);
    const composedTriggerRef = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_6__.useComposedRefs)(forwardedRef, context.triggerRef);
    const trigger = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_7__.Primitive.button, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({
        type: "button",
        "aria-haspopup": "dialog",
        "aria-expanded": context.open,
        "aria-controls": context.contentId,
        "data-state": $cb5cc270b50c6fcd$var$getState(context.open)
    }, triggerProps, {
        ref: composedTriggerRef,
        onClick: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_8__.composeEventHandlers)(props.onClick, context.onOpenToggle)
    }));
    return context.hasCustomAnchor ? trigger : /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_popper__WEBPACK_IMPORTED_MODULE_3__.Anchor, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({
        asChild: true
    }, popperScope), trigger);
});
/*#__PURE__*/ Object.assign($cb5cc270b50c6fcd$export$7dacb05d26466c3, {
    displayName: $cb5cc270b50c6fcd$var$TRIGGER_NAME
});
/* -------------------------------------------------------------------------------------------------
 * PopoverPortal
 * -----------------------------------------------------------------------------------------------*/ const $cb5cc270b50c6fcd$var$PORTAL_NAME = 'PopoverPortal';
const [$cb5cc270b50c6fcd$var$PortalProvider, $cb5cc270b50c6fcd$var$usePortalContext] = $cb5cc270b50c6fcd$var$createPopoverContext($cb5cc270b50c6fcd$var$PORTAL_NAME, {
    forceMount: undefined
});
const $cb5cc270b50c6fcd$export$dd679ffb4362d2d4 = (props)=>{
    const { __scopePopover: __scopePopover , forceMount: forceMount , children: children , container: container  } = props;
    const context = $cb5cc270b50c6fcd$var$usePopoverContext($cb5cc270b50c6fcd$var$PORTAL_NAME, __scopePopover);
    return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)($cb5cc270b50c6fcd$var$PortalProvider, {
        scope: __scopePopover,
        forceMount: forceMount
    }, /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_presence__WEBPACK_IMPORTED_MODULE_9__.Presence, {
        present: forceMount || context.open
    }, /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_portal__WEBPACK_IMPORTED_MODULE_10__.Portal, {
        asChild: true,
        container: container
    }, children)));
};
/*#__PURE__*/ Object.assign($cb5cc270b50c6fcd$export$dd679ffb4362d2d4, {
    displayName: $cb5cc270b50c6fcd$var$PORTAL_NAME
});
/* -------------------------------------------------------------------------------------------------
 * PopoverContent
 * -----------------------------------------------------------------------------------------------*/ const $cb5cc270b50c6fcd$var$CONTENT_NAME = 'PopoverContent';
const $cb5cc270b50c6fcd$export$d7e1f420b25549ff = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)((props, forwardedRef)=>{
    const portalContext = $cb5cc270b50c6fcd$var$usePortalContext($cb5cc270b50c6fcd$var$CONTENT_NAME, props.__scopePopover);
    const { forceMount: forceMount = portalContext.forceMount , ...contentProps } = props;
    const context = $cb5cc270b50c6fcd$var$usePopoverContext($cb5cc270b50c6fcd$var$CONTENT_NAME, props.__scopePopover);
    return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_presence__WEBPACK_IMPORTED_MODULE_9__.Presence, {
        present: forceMount || context.open
    }, context.modal ? /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)($cb5cc270b50c6fcd$var$PopoverContentModal, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, contentProps, {
        ref: forwardedRef
    })) : /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)($cb5cc270b50c6fcd$var$PopoverContentNonModal, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, contentProps, {
        ref: forwardedRef
    })));
});
/*#__PURE__*/ Object.assign($cb5cc270b50c6fcd$export$d7e1f420b25549ff, {
    displayName: $cb5cc270b50c6fcd$var$CONTENT_NAME
});
/* -----------------------------------------------------------------------------------------------*/ const $cb5cc270b50c6fcd$var$PopoverContentModal = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)((props, forwardedRef)=>{
    const context = $cb5cc270b50c6fcd$var$usePopoverContext($cb5cc270b50c6fcd$var$CONTENT_NAME, props.__scopePopover);
    const contentRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);
    const composedRefs = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_6__.useComposedRefs)(forwardedRef, contentRef);
    const isRightClickOutsideRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(false); // aria-hide everything except the content (better supported equivalent to setting aria-modal)
    (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{
        const content = contentRef.current;
        if (content) return (0,aria_hidden__WEBPACK_IMPORTED_MODULE_11__.hideOthers)(content);
    }, []);
    return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(react_remove_scroll__WEBPACK_IMPORTED_MODULE_12__["default"], {
        as: _radix_ui_react_slot__WEBPACK_IMPORTED_MODULE_13__.Slot,
        allowPinchZoom: true
    }, /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)($cb5cc270b50c6fcd$var$PopoverContentImpl, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, props, {
        ref: composedRefs // we make sure we're not trapping once it's been closed
        ,
        trapFocus: context.open,
        disableOutsidePointerEvents: true,
        onCloseAutoFocus: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_8__.composeEventHandlers)(props.onCloseAutoFocus, (event)=>{
            var _context$triggerRef$c;
            event.preventDefault();
            if (!isRightClickOutsideRef.current) (_context$triggerRef$c = context.triggerRef.current) === null || _context$triggerRef$c === void 0 || _context$triggerRef$c.focus();
        }),
        onPointerDownOutside: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_8__.composeEventHandlers)(props.onPointerDownOutside, (event)=>{
            const originalEvent = event.detail.originalEvent;
            const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;
            const isRightClick = originalEvent.button === 2 || ctrlLeftClick;
            isRightClickOutsideRef.current = isRightClick;
        }, {
            checkForDefaultPrevented: false
        }) // When focus is trapped, a \`focusout\` event may still happen.
        ,
        onFocusOutside: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_8__.composeEventHandlers)(props.onFocusOutside, (event)=>event.preventDefault()
        , {
            checkForDefaultPrevented: false
        })
    })));
});
const $cb5cc270b50c6fcd$var$PopoverContentNonModal = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)((props, forwardedRef)=>{
    const context = $cb5cc270b50c6fcd$var$usePopoverContext($cb5cc270b50c6fcd$var$CONTENT_NAME, props.__scopePopover);
    const hasInteractedOutsideRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(false);
    return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)($cb5cc270b50c6fcd$var$PopoverContentImpl, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, props, {
        ref: forwardedRef,
        trapFocus: false,
        disableOutsidePointerEvents: false,
        onCloseAutoFocus: (event)=>{
            var _props$onCloseAutoFoc;
            (_props$onCloseAutoFoc = props.onCloseAutoFocus) === null || _props$onCloseAutoFoc === void 0 || _props$onCloseAutoFoc.call(props, event);
            if (!event.defaultPrevented) {
                var _context$triggerRef$c2;
                if (!hasInteractedOutsideRef.current) (_context$triggerRef$c2 = context.triggerRef.current) === null || _context$triggerRef$c2 === void 0 || _context$triggerRef$c2.focus(); // Always prevent auto focus because we either focus manually or want user agent focus
                event.preventDefault();
            }
            hasInteractedOutsideRef.current = false;
        },
        onInteractOutside: (event)=>{
            var _props$onInteractOuts, _context$triggerRef$c3;
            (_props$onInteractOuts = props.onInteractOutside) === null || _props$onInteractOuts === void 0 || _props$onInteractOuts.call(props, event);
            if (!event.defaultPrevented) hasInteractedOutsideRef.current = true; // Prevent dismissing when clicking the trigger.
            // As the trigger is already setup to close, without doing so would
            // cause it to close and immediately open.
            //
            // We use \`onInteractOutside\` as some browsers also
            // focus on pointer down, creating the same issue.
            const target = event.target;
            const targetIsTrigger = (_context$triggerRef$c3 = context.triggerRef.current) === null || _context$triggerRef$c3 === void 0 ? void 0 : _context$triggerRef$c3.contains(target);
            if (targetIsTrigger) event.preventDefault();
        }
    }));
});
/* -----------------------------------------------------------------------------------------------*/ const $cb5cc270b50c6fcd$var$PopoverContentImpl = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)((props, forwardedRef)=>{
    const { __scopePopover: __scopePopover , trapFocus: trapFocus , onOpenAutoFocus: onOpenAutoFocus , onCloseAutoFocus: onCloseAutoFocus , disableOutsidePointerEvents: disableOutsidePointerEvents , onEscapeKeyDown: onEscapeKeyDown , onPointerDownOutside: onPointerDownOutside , onFocusOutside: onFocusOutside , onInteractOutside: onInteractOutside , ...contentProps } = props;
    const context = $cb5cc270b50c6fcd$var$usePopoverContext($cb5cc270b50c6fcd$var$CONTENT_NAME, __scopePopover);
    const popperScope = $cb5cc270b50c6fcd$var$usePopperScope(__scopePopover); // Make sure the whole tree has focus guards as our \`Popover\` may be
    // the last element in the DOM (beacuse of the \`Portal\`)
    (0,_radix_ui_react_focus_guards__WEBPACK_IMPORTED_MODULE_14__.useFocusGuards)();
    return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_focus_scope__WEBPACK_IMPORTED_MODULE_15__.FocusScope, {
        asChild: true,
        loop: true,
        trapped: trapFocus,
        onMountAutoFocus: onOpenAutoFocus,
        onUnmountAutoFocus: onCloseAutoFocus
    }, /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_dismissable_layer__WEBPACK_IMPORTED_MODULE_16__.DismissableLayer, {
        asChild: true,
        disableOutsidePointerEvents: disableOutsidePointerEvents,
        onInteractOutside: onInteractOutside,
        onEscapeKeyDown: onEscapeKeyDown,
        onPointerDownOutside: onPointerDownOutside,
        onFocusOutside: onFocusOutside,
        onDismiss: ()=>context.onOpenChange(false)
    }, /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_popper__WEBPACK_IMPORTED_MODULE_3__.Content, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({
        "data-state": $cb5cc270b50c6fcd$var$getState(context.open),
        role: "dialog",
        id: context.contentId
    }, popperScope, contentProps, {
        ref: forwardedRef,
        style: {
            ...contentProps.style,
            // re-namespace exposed content custom property
            ['--radix-popover-content-transform-origin']: 'var(--radix-popper-transform-origin)'
        }
    }))));
});
/* -------------------------------------------------------------------------------------------------
 * PopoverClose
 * -----------------------------------------------------------------------------------------------*/ const $cb5cc270b50c6fcd$var$CLOSE_NAME = 'PopoverClose';
const $cb5cc270b50c6fcd$export$d6ac43ebaa40d53e = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)((props, forwardedRef)=>{
    const { __scopePopover: __scopePopover , ...closeProps } = props;
    const context = $cb5cc270b50c6fcd$var$usePopoverContext($cb5cc270b50c6fcd$var$CLOSE_NAME, __scopePopover);
    return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_7__.Primitive.button, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({
        type: "button"
    }, closeProps, {
        ref: forwardedRef,
        onClick: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_8__.composeEventHandlers)(props.onClick, ()=>context.onOpenChange(false)
        )
    }));
});
/*#__PURE__*/ Object.assign($cb5cc270b50c6fcd$export$d6ac43ebaa40d53e, {
    displayName: $cb5cc270b50c6fcd$var$CLOSE_NAME
});
/* -------------------------------------------------------------------------------------------------
 * PopoverArrow
 * -----------------------------------------------------------------------------------------------*/ const $cb5cc270b50c6fcd$var$ARROW_NAME = 'PopoverArrow';
const $cb5cc270b50c6fcd$export$3152841115e061b2 = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)((props, forwardedRef)=>{
    const { __scopePopover: __scopePopover , ...arrowProps } = props;
    const popperScope = $cb5cc270b50c6fcd$var$usePopperScope(__scopePopover);
    return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_popper__WEBPACK_IMPORTED_MODULE_3__.Arrow, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, popperScope, arrowProps, {
        ref: forwardedRef
    }));
});
/*#__PURE__*/ Object.assign($cb5cc270b50c6fcd$export$3152841115e061b2, {
    displayName: $cb5cc270b50c6fcd$var$ARROW_NAME
});
/* -----------------------------------------------------------------------------------------------*/ function $cb5cc270b50c6fcd$var$getState(open) {
    return open ? 'open' : 'closed';
}
const $cb5cc270b50c6fcd$export$be92b6f5f03c0fe9 = $cb5cc270b50c6fcd$export$5b6b19405a83ff9d;
const $cb5cc270b50c6fcd$export$b688253958b8dfe7 = $cb5cc270b50c6fcd$export$96e5381f42521a79;
const $cb5cc270b50c6fcd$export$41fb9f06171c75f4 = $cb5cc270b50c6fcd$export$7dacb05d26466c3;
const $cb5cc270b50c6fcd$export$602eac185826482c = $cb5cc270b50c6fcd$export$dd679ffb4362d2d4;
const $cb5cc270b50c6fcd$export$7c6e2c02157bb7d2 = $cb5cc270b50c6fcd$export$d7e1f420b25549ff;
const $cb5cc270b50c6fcd$export$f39c2d165cd861fe = $cb5cc270b50c6fcd$export$d6ac43ebaa40d53e;
const $cb5cc270b50c6fcd$export$21b07c8f274aebd5 = $cb5cc270b50c6fcd$export$3152841115e061b2;





//# sourceMappingURL=index.module.js.map
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 30300 characters]
//# sourceURL=webpack-internal:///../../../node_modules/@radix-ui/react-popover/dist/index.module.js
`);
              }
            ),
            /***/
            "../../../node_modules/@radix-ui/react-popper/dist/index.module.js": (
              /*!*************************************************************************!*\
                !*** ../../../node_modules/@radix-ui/react-popper/dist/index.module.js ***!
                \*************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "ALIGN_OPTIONS": () => (/* binding */ $cf1ac5d9fe0e8206$export$3671ffab7b302fc9),
/* harmony export */   "Anchor": () => (/* binding */ $cf1ac5d9fe0e8206$export$b688253958b8dfe7),
/* harmony export */   "Arrow": () => (/* binding */ $cf1ac5d9fe0e8206$export$21b07c8f274aebd5),
/* harmony export */   "Content": () => (/* binding */ $cf1ac5d9fe0e8206$export$7c6e2c02157bb7d2),
/* harmony export */   "Popper": () => (/* binding */ $cf1ac5d9fe0e8206$export$badac9ada3a0bdf9),
/* harmony export */   "PopperAnchor": () => (/* binding */ $cf1ac5d9fe0e8206$export$ecd4e1ccab6ed6d),
/* harmony export */   "PopperArrow": () => (/* binding */ $cf1ac5d9fe0e8206$export$79d62cd4e10a3fd0),
/* harmony export */   "PopperContent": () => (/* binding */ $cf1ac5d9fe0e8206$export$bc4ae5855d3c4fc),
/* harmony export */   "Root": () => (/* binding */ $cf1ac5d9fe0e8206$export$be92b6f5f03c0fe9),
/* harmony export */   "SIDE_OPTIONS": () => (/* binding */ $cf1ac5d9fe0e8206$export$36f0086da09c4b9f),
/* harmony export */   "createPopperScope": () => (/* binding */ $cf1ac5d9fe0e8206$export$722aac194ae923)
/* harmony export */ });
/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ "../../../node_modules/@babel/runtime/helpers/esm/extends.js");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _floating_ui_react_dom__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @floating-ui/react-dom */ "../../../node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.esm.js");
/* harmony import */ var _floating_ui_react_dom__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @floating-ui/react-dom */ "../../../node_modules/@floating-ui/dom/dist/floating-ui.dom.browser.mjs");
/* harmony import */ var _floating_ui_react_dom__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @floating-ui/react-dom */ "../../../node_modules/@floating-ui/core/dist/floating-ui.core.browser.mjs");
/* harmony import */ var _radix_ui_react_arrow__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @radix-ui/react-arrow */ "../../../node_modules/@radix-ui/react-arrow/dist/index.module.js");
/* harmony import */ var _radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @radix-ui/react-compose-refs */ "../../../node_modules/@radix-ui/react-compose-refs/dist/index.module.js");
/* harmony import */ var _radix_ui_react_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @radix-ui/react-context */ "../../../node_modules/@radix-ui/react-context/dist/index.module.js");
/* harmony import */ var _radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @radix-ui/react-primitive */ "../../../node_modules/@radix-ui/react-primitive/dist/index.module.js");
/* harmony import */ var _radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @radix-ui/react-use-callback-ref */ "../../../node_modules/@radix-ui/react-use-callback-ref/dist/index.module.js");
/* harmony import */ var _radix_ui_react_use_layout_effect__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @radix-ui/react-use-layout-effect */ "../../../node_modules/@radix-ui/react-use-layout-effect/dist/index.module.js");
/* harmony import */ var _radix_ui_react_use_size__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @radix-ui/react-use-size */ "../../../node_modules/@radix-ui/react-use-size/dist/index.module.js");





















const $cf1ac5d9fe0e8206$export$36f0086da09c4b9f = [
    'top',
    'right',
    'bottom',
    'left'
];
const $cf1ac5d9fe0e8206$export$3671ffab7b302fc9 = [
    'start',
    'center',
    'end'
];
/* -------------------------------------------------------------------------------------------------
 * Popper
 * -----------------------------------------------------------------------------------------------*/ const $cf1ac5d9fe0e8206$var$POPPER_NAME = 'Popper';
const [$cf1ac5d9fe0e8206$var$createPopperContext, $cf1ac5d9fe0e8206$export$722aac194ae923] = (0,_radix_ui_react_context__WEBPACK_IMPORTED_MODULE_2__.createContextScope)($cf1ac5d9fe0e8206$var$POPPER_NAME);
const [$cf1ac5d9fe0e8206$var$PopperProvider, $cf1ac5d9fe0e8206$var$usePopperContext] = $cf1ac5d9fe0e8206$var$createPopperContext($cf1ac5d9fe0e8206$var$POPPER_NAME);
const $cf1ac5d9fe0e8206$export$badac9ada3a0bdf9 = (props)=>{
    const { __scopePopper: __scopePopper , children: children  } = props;
    const [anchor, setAnchor] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);
    return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)($cf1ac5d9fe0e8206$var$PopperProvider, {
        scope: __scopePopper,
        anchor: anchor,
        onAnchorChange: setAnchor
    }, children);
};
/*#__PURE__*/ Object.assign($cf1ac5d9fe0e8206$export$badac9ada3a0bdf9, {
    displayName: $cf1ac5d9fe0e8206$var$POPPER_NAME
});
/* -------------------------------------------------------------------------------------------------
 * PopperAnchor
 * -----------------------------------------------------------------------------------------------*/ const $cf1ac5d9fe0e8206$var$ANCHOR_NAME = 'PopperAnchor';
const $cf1ac5d9fe0e8206$export$ecd4e1ccab6ed6d = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)((props, forwardedRef)=>{
    const { __scopePopper: __scopePopper , virtualRef: virtualRef , ...anchorProps } = props;
    const context = $cf1ac5d9fe0e8206$var$usePopperContext($cf1ac5d9fe0e8206$var$ANCHOR_NAME, __scopePopper);
    const ref = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);
    const composedRefs = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_3__.useComposedRefs)(forwardedRef, ref);
    (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{
        // Consumer can anchor the popper to something that isn't
        // a DOM node e.g. pointer position, so we override the
        // \`anchorRef\` with their virtual ref in this case.
        context.onAnchorChange((virtualRef === null || virtualRef === void 0 ? void 0 : virtualRef.current) || ref.current);
    });
    return virtualRef ? null : /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_4__.Primitive.div, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, anchorProps, {
        ref: composedRefs
    }));
});
/*#__PURE__*/ Object.assign($cf1ac5d9fe0e8206$export$ecd4e1ccab6ed6d, {
    displayName: $cf1ac5d9fe0e8206$var$ANCHOR_NAME
});
/* -------------------------------------------------------------------------------------------------
 * PopperContent
 * -----------------------------------------------------------------------------------------------*/ const $cf1ac5d9fe0e8206$var$CONTENT_NAME = 'PopperContent';
const [$cf1ac5d9fe0e8206$var$PopperContentProvider, $cf1ac5d9fe0e8206$var$useContentContext] = $cf1ac5d9fe0e8206$var$createPopperContext($cf1ac5d9fe0e8206$var$CONTENT_NAME);
const [$cf1ac5d9fe0e8206$var$PositionContextProvider, $cf1ac5d9fe0e8206$var$usePositionContext] = $cf1ac5d9fe0e8206$var$createPopperContext($cf1ac5d9fe0e8206$var$CONTENT_NAME, {
    hasParent: false,
    positionUpdateFns: new Set()
});
const $cf1ac5d9fe0e8206$export$bc4ae5855d3c4fc = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)((props, forwardedRef)=>{
    var _arrowSize$width, _arrowSize$height, _middlewareData$arrow, _middlewareData$arrow2, _middlewareData$arrow3, _middlewareData$hide, _middlewareData$trans, _middlewareData$trans2;
    const { __scopePopper: __scopePopper , side: side = 'bottom' , sideOffset: sideOffset = 0 , align: align = 'center' , alignOffset: alignOffset = 0 , arrowPadding: arrowPadding = 0 , collisionBoundary: collisionBoundary = [] , collisionPadding: collisionPaddingProp = 0 , sticky: sticky = 'partial' , hideWhenDetached: hideWhenDetached = false , avoidCollisions: avoidCollisions = true , onPlaced: onPlaced , ...contentProps } = props;
    const context = $cf1ac5d9fe0e8206$var$usePopperContext($cf1ac5d9fe0e8206$var$CONTENT_NAME, __scopePopper);
    const [content, setContent] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);
    const composedRefs = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_3__.useComposedRefs)(forwardedRef, (node)=>setContent(node)
    );
    const [arrow, setArrow] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);
    const arrowSize = (0,_radix_ui_react_use_size__WEBPACK_IMPORTED_MODULE_5__.useSize)(arrow);
    const arrowWidth = (_arrowSize$width = arrowSize === null || arrowSize === void 0 ? void 0 : arrowSize.width) !== null && _arrowSize$width !== void 0 ? _arrowSize$width : 0;
    const arrowHeight = (_arrowSize$height = arrowSize === null || arrowSize === void 0 ? void 0 : arrowSize.height) !== null && _arrowSize$height !== void 0 ? _arrowSize$height : 0;
    const desiredPlacement = side + (align !== 'center' ? '-' + align : '');
    const collisionPadding = typeof collisionPaddingProp === 'number' ? collisionPaddingProp : {
        top: 0,
        right: 0,
        bottom: 0,
        left: 0,
        ...collisionPaddingProp
    };
    const boundary = Array.isArray(collisionBoundary) ? collisionBoundary : [
        collisionBoundary
    ];
    const hasExplicitBoundaries = boundary.length > 0;
    const detectOverflowOptions = {
        padding: collisionPadding,
        boundary: boundary.filter($cf1ac5d9fe0e8206$var$isNotNull),
        // with \`strategy: 'fixed'\`, this is the only way to get it to respect boundaries
        altBoundary: hasExplicitBoundaries
    };
    const { reference: reference , floating: floating , strategy: strategy , x: x , y: y , placement: placement , middlewareData: middlewareData , update: update  } = (0,_floating_ui_react_dom__WEBPACK_IMPORTED_MODULE_6__.useFloating)({
        // default to \`fixed\` strategy so users don't have to pick and we also avoid focus scroll issues
        strategy: 'fixed',
        placement: desiredPlacement,
        whileElementsMounted: _floating_ui_react_dom__WEBPACK_IMPORTED_MODULE_7__.autoUpdate,
        middleware: [
            $cf1ac5d9fe0e8206$var$anchorCssProperties(),
            (0,_floating_ui_react_dom__WEBPACK_IMPORTED_MODULE_8__.offset)({
                mainAxis: sideOffset + arrowHeight,
                alignmentAxis: alignOffset
            }),
            avoidCollisions ? (0,_floating_ui_react_dom__WEBPACK_IMPORTED_MODULE_8__.shift)({
                mainAxis: true,
                crossAxis: false,
                limiter: sticky === 'partial' ? (0,_floating_ui_react_dom__WEBPACK_IMPORTED_MODULE_8__.limitShift)() : undefined,
                ...detectOverflowOptions
            }) : undefined,
            arrow ? (0,_floating_ui_react_dom__WEBPACK_IMPORTED_MODULE_6__.arrow)({
                element: arrow,
                padding: arrowPadding
            }) : undefined,
            avoidCollisions ? (0,_floating_ui_react_dom__WEBPACK_IMPORTED_MODULE_8__.flip)({
                ...detectOverflowOptions
            }) : undefined,
            (0,_floating_ui_react_dom__WEBPACK_IMPORTED_MODULE_8__.size)({
                ...detectOverflowOptions,
                apply: ({ elements: elements , availableWidth: width , availableHeight: height  })=>{
                    elements.floating.style.setProperty('--radix-popper-available-width', \`\${width}px\`);
                    elements.floating.style.setProperty('--radix-popper-available-height', \`\${height}px\`);
                }
            }),
            $cf1ac5d9fe0e8206$var$transformOrigin({
                arrowWidth: arrowWidth,
                arrowHeight: arrowHeight
            }),
            hideWhenDetached ? (0,_floating_ui_react_dom__WEBPACK_IMPORTED_MODULE_8__.hide)({
                strategy: 'referenceHidden'
            }) : undefined
        ].filter($cf1ac5d9fe0e8206$var$isDefined)
    }); // assign the reference dynamically once \`Content\` has mounted so we can collocate the logic
    (0,_radix_ui_react_use_layout_effect__WEBPACK_IMPORTED_MODULE_9__.useLayoutEffect)(()=>{
        reference(context.anchor);
    }, [
        reference,
        context.anchor
    ]);
    const isPlaced = x !== null && y !== null;
    const [placedSide, placedAlign] = $cf1ac5d9fe0e8206$var$getSideAndAlignFromPlacement(placement);
    const handlePlaced = (0,_radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_10__.useCallbackRef)(onPlaced);
    (0,_radix_ui_react_use_layout_effect__WEBPACK_IMPORTED_MODULE_9__.useLayoutEffect)(()=>{
        if (isPlaced) handlePlaced === null || handlePlaced === void 0 || handlePlaced();
    }, [
        isPlaced,
        handlePlaced
    ]);
    const arrowX = (_middlewareData$arrow = middlewareData.arrow) === null || _middlewareData$arrow === void 0 ? void 0 : _middlewareData$arrow.x;
    const arrowY = (_middlewareData$arrow2 = middlewareData.arrow) === null || _middlewareData$arrow2 === void 0 ? void 0 : _middlewareData$arrow2.y;
    const cannotCenterArrow = ((_middlewareData$arrow3 = middlewareData.arrow) === null || _middlewareData$arrow3 === void 0 ? void 0 : _middlewareData$arrow3.centerOffset) !== 0;
    const [contentZIndex, setContentZIndex] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)();
    (0,_radix_ui_react_use_layout_effect__WEBPACK_IMPORTED_MODULE_9__.useLayoutEffect)(()=>{
        if (content) setContentZIndex(window.getComputedStyle(content).zIndex);
    }, [
        content
    ]);
    const { hasParent: hasParent , positionUpdateFns: positionUpdateFns  } = $cf1ac5d9fe0e8206$var$usePositionContext($cf1ac5d9fe0e8206$var$CONTENT_NAME, __scopePopper);
    const isRoot = !hasParent;
    (0,react__WEBPACK_IMPORTED_MODULE_1__.useLayoutEffect)(()=>{
        if (!isRoot) {
            positionUpdateFns.add(update);
            return ()=>{
                positionUpdateFns.delete(update);
            };
        }
    }, [
        isRoot,
        positionUpdateFns,
        update
    ]); // when nested contents are rendered in portals, they are appended out of order causing
    // children to be positioned incorrectly if initially open.
    // we need to re-compute the positioning once the parent has finally been placed.
    // https://github.com/floating-ui/floating-ui/issues/1531
    (0,_radix_ui_react_use_layout_effect__WEBPACK_IMPORTED_MODULE_9__.useLayoutEffect)(()=>{
        if (isRoot && isPlaced) Array.from(positionUpdateFns).reverse().forEach((fn)=>requestAnimationFrame(fn)
        );
    }, [
        isRoot,
        isPlaced,
        positionUpdateFns
    ]);
    const commonProps = {
        'data-side': placedSide,
        'data-align': placedAlign,
        ...contentProps,
        ref: composedRefs,
        style: {
            ...contentProps.style,
            // if the PopperContent hasn't been placed yet (not all measurements done)
            // we prevent animations so that users's animation don't kick in too early referring wrong sides
            animation: !isPlaced ? 'none' : undefined,
            // hide the content if using the hide middleware and should be hidden
            opacity: (_middlewareData$hide = middlewareData.hide) !== null && _middlewareData$hide !== void 0 && _middlewareData$hide.referenceHidden ? 0 : undefined
        }
    };
    return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)("div", {
        ref: floating,
        "data-radix-popper-content-wrapper": "",
        style: {
            position: strategy,
            left: 0,
            top: 0,
            transform: isPlaced ? \`translate3d(\${Math.round(x)}px, \${Math.round(y)}px, 0)\` : 'translate3d(0, -200%, 0)',
            // keep off the page when measuring
            minWidth: 'max-content',
            zIndex: contentZIndex,
            ['--radix-popper-transform-origin']: [
                (_middlewareData$trans = middlewareData.transformOrigin) === null || _middlewareData$trans === void 0 ? void 0 : _middlewareData$trans.x,
                (_middlewareData$trans2 = middlewareData.transformOrigin) === null || _middlewareData$trans2 === void 0 ? void 0 : _middlewareData$trans2.y
            ].join(' ')
        } // Floating UI interally calculates logical alignment based the \`dir\` attribute on
        ,
        dir: props.dir
    }, /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)($cf1ac5d9fe0e8206$var$PopperContentProvider, {
        scope: __scopePopper,
        placedSide: placedSide,
        onArrowChange: setArrow,
        arrowX: arrowX,
        arrowY: arrowY,
        shouldHideArrow: cannotCenterArrow
    }, isRoot ? /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)($cf1ac5d9fe0e8206$var$PositionContextProvider, {
        scope: __scopePopper,
        hasParent: true,
        positionUpdateFns: positionUpdateFns
    }, /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_4__.Primitive.div, commonProps)) : /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_4__.Primitive.div, commonProps)));
});
/*#__PURE__*/ Object.assign($cf1ac5d9fe0e8206$export$bc4ae5855d3c4fc, {
    displayName: $cf1ac5d9fe0e8206$var$CONTENT_NAME
});
/* -------------------------------------------------------------------------------------------------
 * PopperArrow
 * -----------------------------------------------------------------------------------------------*/ const $cf1ac5d9fe0e8206$var$ARROW_NAME = 'PopperArrow';
const $cf1ac5d9fe0e8206$var$OPPOSITE_SIDE = {
    top: 'bottom',
    right: 'left',
    bottom: 'top',
    left: 'right'
};
const $cf1ac5d9fe0e8206$export$79d62cd4e10a3fd0 = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)(function $cf1ac5d9fe0e8206$export$79d62cd4e10a3fd0(props, forwardedRef) {
    const { __scopePopper: __scopePopper , ...arrowProps } = props;
    const contentContext = $cf1ac5d9fe0e8206$var$useContentContext($cf1ac5d9fe0e8206$var$ARROW_NAME, __scopePopper);
    const baseSide = $cf1ac5d9fe0e8206$var$OPPOSITE_SIDE[contentContext.placedSide];
    return(/*#__PURE__*/ // we have to use an extra wrapper because \`ResizeObserver\` (used by \`useSize\`)
    // doesn't report size as we'd expect on SVG elements.
    // it reports their bounding box which is effectively the largest path inside the SVG.
    (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)("span", {
        ref: contentContext.onArrowChange,
        style: {
            position: 'absolute',
            left: contentContext.arrowX,
            top: contentContext.arrowY,
            [baseSide]: 0,
            transformOrigin: {
                top: '',
                right: '0 0',
                bottom: 'center 0',
                left: '100% 0'
            }[contentContext.placedSide],
            transform: {
                top: 'translateY(100%)',
                right: 'translateY(50%) rotate(90deg) translateX(-50%)',
                bottom: \`rotate(180deg)\`,
                left: 'translateY(50%) rotate(-90deg) translateX(50%)'
            }[contentContext.placedSide],
            visibility: contentContext.shouldHideArrow ? 'hidden' : undefined
        }
    }, /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_arrow__WEBPACK_IMPORTED_MODULE_11__.Root, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, arrowProps, {
        ref: forwardedRef,
        style: {
            ...arrowProps.style,
            // ensures the element can be measured correctly (mostly for if SVG)
            display: 'block'
        }
    }))));
});
/*#__PURE__*/ Object.assign($cf1ac5d9fe0e8206$export$79d62cd4e10a3fd0, {
    displayName: $cf1ac5d9fe0e8206$var$ARROW_NAME
});
/* -----------------------------------------------------------------------------------------------*/ function $cf1ac5d9fe0e8206$var$isDefined(value) {
    return value !== undefined;
}
function $cf1ac5d9fe0e8206$var$isNotNull(value) {
    return value !== null;
}
const $cf1ac5d9fe0e8206$var$anchorCssProperties = ()=>({
        name: 'anchorCssProperties',
        fn (data) {
            const { rects: rects , elements: elements  } = data;
            const { width: width , height: height  } = rects.reference;
            elements.floating.style.setProperty('--radix-popper-anchor-width', \`\${width}px\`);
            elements.floating.style.setProperty('--radix-popper-anchor-height', \`\${height}px\`);
            return {};
        }
    })
;
const $cf1ac5d9fe0e8206$var$transformOrigin = (options)=>({
        name: 'transformOrigin',
        options: options,
        fn (data) {
            var _middlewareData$arrow4, _middlewareData$arrow5, _middlewareData$arrow6, _middlewareData$arrow7, _middlewareData$arrow8;
            const { placement: placement , rects: rects , middlewareData: middlewareData  } = data;
            const cannotCenterArrow = ((_middlewareData$arrow4 = middlewareData.arrow) === null || _middlewareData$arrow4 === void 0 ? void 0 : _middlewareData$arrow4.centerOffset) !== 0;
            const isArrowHidden = cannotCenterArrow;
            const arrowWidth = isArrowHidden ? 0 : options.arrowWidth;
            const arrowHeight = isArrowHidden ? 0 : options.arrowHeight;
            const [placedSide, placedAlign] = $cf1ac5d9fe0e8206$var$getSideAndAlignFromPlacement(placement);
            const noArrowAlign = {
                start: '0%',
                center: '50%',
                end: '100%'
            }[placedAlign];
            const arrowXCenter = ((_middlewareData$arrow5 = (_middlewareData$arrow6 = middlewareData.arrow) === null || _middlewareData$arrow6 === void 0 ? void 0 : _middlewareData$arrow6.x) !== null && _middlewareData$arrow5 !== void 0 ? _middlewareData$arrow5 : 0) + arrowWidth / 2;
            const arrowYCenter = ((_middlewareData$arrow7 = (_middlewareData$arrow8 = middlewareData.arrow) === null || _middlewareData$arrow8 === void 0 ? void 0 : _middlewareData$arrow8.y) !== null && _middlewareData$arrow7 !== void 0 ? _middlewareData$arrow7 : 0) + arrowHeight / 2;
            let x = '';
            let y = '';
            if (placedSide === 'bottom') {
                x = isArrowHidden ? noArrowAlign : \`\${arrowXCenter}px\`;
                y = \`\${-arrowHeight}px\`;
            } else if (placedSide === 'top') {
                x = isArrowHidden ? noArrowAlign : \`\${arrowXCenter}px\`;
                y = \`\${rects.floating.height + arrowHeight}px\`;
            } else if (placedSide === 'right') {
                x = \`\${-arrowHeight}px\`;
                y = isArrowHidden ? noArrowAlign : \`\${arrowYCenter}px\`;
            } else if (placedSide === 'left') {
                x = \`\${rects.floating.width + arrowHeight}px\`;
                y = isArrowHidden ? noArrowAlign : \`\${arrowYCenter}px\`;
            }
            return {
                data: {
                    x: x,
                    y: y
                }
            };
        }
    })
;
function $cf1ac5d9fe0e8206$var$getSideAndAlignFromPlacement(placement) {
    const [side, align = 'center'] = placement.split('-');
    return [
        side,
        align
    ];
}
const $cf1ac5d9fe0e8206$export$be92b6f5f03c0fe9 = $cf1ac5d9fe0e8206$export$badac9ada3a0bdf9;
const $cf1ac5d9fe0e8206$export$b688253958b8dfe7 = $cf1ac5d9fe0e8206$export$ecd4e1ccab6ed6d;
const $cf1ac5d9fe0e8206$export$7c6e2c02157bb7d2 = $cf1ac5d9fe0e8206$export$bc4ae5855d3c4fc;
const $cf1ac5d9fe0e8206$export$21b07c8f274aebd5 = $cf1ac5d9fe0e8206$export$79d62cd4e10a3fd0;





//# sourceMappingURL=index.module.js.map
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 31572 characters]
//# sourceURL=webpack-internal:///../../../node_modules/@radix-ui/react-popper/dist/index.module.js
`);
              }
            ),
            /***/
            "../../../node_modules/@radix-ui/react-portal/dist/index.module.js": (
              /*!*************************************************************************!*\
                !*** ../../../node_modules/@radix-ui/react-portal/dist/index.module.js ***!
                \*************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "Portal": () => (/* binding */ $f1701beae083dbae$export$602eac185826482c),
/* harmony export */   "Root": () => (/* binding */ $f1701beae083dbae$export$be92b6f5f03c0fe9)
/* harmony export */ });
/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ "../../../node_modules/@babel/runtime/helpers/esm/extends.js");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-dom */ "react-dom");
/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @radix-ui/react-primitive */ "../../../node_modules/@radix-ui/react-primitive/dist/index.module.js");









/* -------------------------------------------------------------------------------------------------
 * Portal
 * -----------------------------------------------------------------------------------------------*/ const $f1701beae083dbae$var$PORTAL_NAME = 'Portal';
const $f1701beae083dbae$export$602eac185826482c = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)((props, forwardedRef)=>{
    var _globalThis$document;
    const { container: container = globalThis === null || globalThis === void 0 ? void 0 : (_globalThis$document = globalThis.document) === null || _globalThis$document === void 0 ? void 0 : _globalThis$document.body , ...portalProps } = props;
    return container ? /*#__PURE__*/ react_dom__WEBPACK_IMPORTED_MODULE_2___default().createPortal(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_3__.Primitive.div, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, portalProps, {
        ref: forwardedRef
    })), container) : null;
});
/*#__PURE__*/ Object.assign($f1701beae083dbae$export$602eac185826482c, {
    displayName: $f1701beae083dbae$var$PORTAL_NAME
});
/* -----------------------------------------------------------------------------------------------*/ const $f1701beae083dbae$export$be92b6f5f03c0fe9 = $f1701beae083dbae$export$602eac185826482c;





//# sourceMappingURL=index.module.js.map
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC1wb3J0YWwvZGlzdC9pbmRleC5tb2R1bGUuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBc0Y7QUFDTztBQUNyRDtBQUNnQzs7Ozs7O0FBTXhFO0FBQ0E7QUFDQTtBQUNBLGdFQUFnRSxpREFBaUI7QUFDakY7QUFDQSxZQUFZLGdPQUFnTztBQUM1TyxxQ0FBcUMsNkRBQTRCLGVBQWUsb0RBQW9CLENBQUMsb0VBQW9CLEVBQUUsOEVBQW9DLEdBQUc7QUFDbEs7QUFDQSxLQUFLO0FBQ0wsQ0FBQztBQUNEO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7Ozs7O0FBS2dIO0FBQ2hIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtcG9ydGFsL2Rpc3QvaW5kZXgubW9kdWxlLmpzP2Q0ZTYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICQ3U1hsMiRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IHtmb3J3YXJkUmVmIGFzICQ3U1hsMiRmb3J3YXJkUmVmLCBjcmVhdGVFbGVtZW50IGFzICQ3U1hsMiRjcmVhdGVFbGVtZW50fSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCAkN1NYbDIkcmVhY3Rkb20gZnJvbSBcInJlYWN0LWRvbVwiO1xuaW1wb3J0IHtQcmltaXRpdmUgYXMgJDdTWGwyJFByaW1pdGl2ZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1wcmltaXRpdmVcIjtcblxuXG5cblxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBQb3J0YWxcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGYxNzAxYmVhZTA4M2RiYWUkdmFyJFBPUlRBTF9OQU1FID0gJ1BvcnRhbCc7XG5jb25zdCAkZjE3MDFiZWFlMDgzZGJhZSRleHBvcnQkNjAyZWFjMTg1ODI2NDgyYyA9IC8qI19fUFVSRV9fKi8gJDdTWGwyJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgdmFyIF9nbG9iYWxUaGlzJGRvY3VtZW50O1xuICAgIGNvbnN0IHsgY29udGFpbmVyOiBjb250YWluZXIgPSBnbG9iYWxUaGlzID09PSBudWxsIHx8IGdsb2JhbFRoaXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfZ2xvYmFsVGhpcyRkb2N1bWVudCA9IGdsb2JhbFRoaXMuZG9jdW1lbnQpID09PSBudWxsIHx8IF9nbG9iYWxUaGlzJGRvY3VtZW50ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZ2xvYmFsVGhpcyRkb2N1bWVudC5ib2R5ICwgLi4ucG9ydGFsUHJvcHMgfSA9IHByb3BzO1xuICAgIHJldHVybiBjb250YWluZXIgPyAvKiNfX1BVUkVfXyovICQ3U1hsMiRyZWFjdGRvbS5jcmVhdGVQb3J0YWwoLyojX19QVVJFX18qLyAkN1NYbDIkY3JlYXRlRWxlbWVudCgkN1NYbDIkUHJpbWl0aXZlLmRpdiwgJDdTWGwyJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBwb3J0YWxQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pKSwgY29udGFpbmVyKSA6IG51bGw7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkZjE3MDFiZWFlMDgzZGJhZSRleHBvcnQkNjAyZWFjMTg1ODI2NDgyYywge1xuICAgIGRpc3BsYXlOYW1lOiAkZjE3MDFiZWFlMDgzZGJhZSR2YXIkUE9SVEFMX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkZjE3MDFiZWFlMDgzZGJhZSRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSA9ICRmMTcwMWJlYWUwODNkYmFlJGV4cG9ydCQ2MDJlYWMxODU4MjY0ODJjO1xuXG5cblxuXG5leHBvcnQgeyRmMTcwMWJlYWUwODNkYmFlJGV4cG9ydCQ2MDJlYWMxODU4MjY0ODJjIGFzIFBvcnRhbCwgJGYxNzAxYmVhZTA4M2RiYWUkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgYXMgUm9vdH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tb2R1bGUuanMubWFwXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=
//# sourceURL=webpack-internal:///../../../node_modules/@radix-ui/react-portal/dist/index.module.js
`);
              }
            ),
            /***/
            "../../../node_modules/@radix-ui/react-presence/dist/index.module.js": (
              /*!***************************************************************************!*\
                !*** ../../../node_modules/@radix-ui/react-presence/dist/index.module.js ***!
                \***************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Presence\": () => (/* binding */ $921a889cee6df7e8$export$99c2b779aa4e8b8b)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-dom */ \"react-dom\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @radix-ui/react-compose-refs */ \"../../../node_modules/@radix-ui/react-compose-refs/dist/index.module.js\");\n/* harmony import */ var _radix_ui_react_use_layout_effect__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @radix-ui/react-use-layout-effect */ \"../../../node_modules/@radix-ui/react-use-layout-effect/dist/index.module.js\");\n\n\n\n\n\n\n\n\n\n\nfunction $fe963b355347cc68$export$3e6543de14f8614f(initialState, machine) {\n    return (0,react__WEBPACK_IMPORTED_MODULE_0__.useReducer)((state, event)=>{\n        const nextState = machine[state][event];\n        return nextState !== null && nextState !== void 0 ? nextState : state;\n    }, initialState);\n}\n\n\nconst $921a889cee6df7e8$export$99c2b779aa4e8b8b = (props)=>{\n    const { present: present , children: children  } = props;\n    const presence = $921a889cee6df7e8$var$usePresence(present);\n    const child = typeof children === 'function' ? children({\n        present: presence.isPresent\n    }) : react__WEBPACK_IMPORTED_MODULE_0__.Children.only(children);\n    const ref = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_2__.useComposedRefs)(presence.ref, child.ref);\n    const forceMount = typeof children === 'function';\n    return forceMount || presence.isPresent ? /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.cloneElement)(child, {\n        ref: ref\n    }) : null;\n};\n$921a889cee6df7e8$export$99c2b779aa4e8b8b.displayName = 'Presence';\n/* -------------------------------------------------------------------------------------------------\n * usePresence\n * -----------------------------------------------------------------------------------------------*/ function $921a889cee6df7e8$var$usePresence(present) {\n    const [node1, setNode] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)();\n    const stylesRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)({});\n    const prevPresentRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(present);\n    const prevAnimationNameRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)('none');\n    const initialState = present ? 'mounted' : 'unmounted';\n    const [state, send] = $fe963b355347cc68$export$3e6543de14f8614f(initialState, {\n        mounted: {\n            UNMOUNT: 'unmounted',\n            ANIMATION_OUT: 'unmountSuspended'\n        },\n        unmountSuspended: {\n            MOUNT: 'mounted',\n            ANIMATION_END: 'unmounted'\n        },\n        unmounted: {\n            MOUNT: 'mounted'\n        }\n    });\n    (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{\n        const currentAnimationName = $921a889cee6df7e8$var$getAnimationName(stylesRef.current);\n        prevAnimationNameRef.current = state === 'mounted' ? currentAnimationName : 'none';\n    }, [\n        state\n    ]);\n    (0,_radix_ui_react_use_layout_effect__WEBPACK_IMPORTED_MODULE_3__.useLayoutEffect)(()=>{\n        const styles = stylesRef.current;\n        const wasPresent = prevPresentRef.current;\n        const hasPresentChanged = wasPresent !== present;\n        if (hasPresentChanged) {\n            const prevAnimationName = prevAnimationNameRef.current;\n            const currentAnimationName = $921a889cee6df7e8$var$getAnimationName(styles);\n            if (present) send('MOUNT');\n            else if (currentAnimationName === 'none' || (styles === null || styles === void 0 ? void 0 : styles.display) === 'none') // If there is no exit animation or the element is hidden, animations won't run\n            // so we unmount instantly\n            send('UNMOUNT');\n            else {\n                /**\n         * When `present` changes to `false`, we check changes to animation-name to\n         * determine whether an animation has started. We chose this approach (reading\n         * computed styles) because there is no `animationrun` event and `animationstart`\n         * fires after `animation-delay` has expired which would be too late.\n         */ const isAnimating = prevAnimationName !== currentAnimationName;\n                if (wasPresent && isAnimating) send('ANIMATION_OUT');\n                else send('UNMOUNT');\n            }\n            prevPresentRef.current = present;\n        }\n    }, [\n        present,\n        send\n    ]);\n    (0,_radix_ui_react_use_layout_effect__WEBPACK_IMPORTED_MODULE_3__.useLayoutEffect)(()=>{\n        if (node1) {\n            /**\n       * Triggering an ANIMATION_OUT during an ANIMATION_IN will fire an `animationcancel`\n       * event for ANIMATION_IN after we have entered `unmountSuspended` state. So, we\n       * make sure we only trigger ANIMATION_END for the currently active animation.\n       */ const handleAnimationEnd = (event)=>{\n                const currentAnimationName = $921a889cee6df7e8$var$getAnimationName(stylesRef.current);\n                const isCurrentAnimation = currentAnimationName.includes(event.animationName);\n                if (event.target === node1 && isCurrentAnimation) // With React 18 concurrency this update is applied\n                // a frame after the animation ends, creating a flash of visible content.\n                // By manually flushing we ensure they sync within a frame, removing the flash.\n                (0,react_dom__WEBPACK_IMPORTED_MODULE_1__.flushSync)(()=>send('ANIMATION_END')\n                );\n            };\n            const handleAnimationStart = (event)=>{\n                if (event.target === node1) // if animation occurred, store its name as the previous animation.\n                prevAnimationNameRef.current = $921a889cee6df7e8$var$getAnimationName(stylesRef.current);\n            };\n            node1.addEventListener('animationstart', handleAnimationStart);\n            node1.addEventListener('animationcancel', handleAnimationEnd);\n            node1.addEventListener('animationend', handleAnimationEnd);\n            return ()=>{\n                node1.removeEventListener('animationstart', handleAnimationStart);\n                node1.removeEventListener('animationcancel', handleAnimationEnd);\n                node1.removeEventListener('animationend', handleAnimationEnd);\n            };\n        } else // Transition to the unmounted state if the node is removed prematurely.\n        // We avoid doing so during cleanup as the node may change but still exist.\n        send('ANIMATION_END');\n    }, [\n        node1,\n        send\n    ]);\n    return {\n        isPresent: [\n            'mounted',\n            'unmountSuspended'\n        ].includes(state),\n        ref: (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)((node)=>{\n            if (node) stylesRef.current = getComputedStyle(node);\n            setNode(node);\n        }, [])\n    };\n}\n/* -----------------------------------------------------------------------------------------------*/ function $921a889cee6df7e8$var$getAnimationName(styles) {\n    return (styles === null || styles === void 0 ? void 0 : styles.animationName) || 'none';\n}\n\n\n\n\n\n//# sourceMappingURL=index.module.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 10516 characters]\n//# sourceURL=webpack-internal:///../../../node_modules/@radix-ui/react-presence/dist/index.module.js\n");
              }
            ),
            /***/
            "../../../node_modules/@radix-ui/react-primitive/dist/index.module.js": (
              /*!****************************************************************************!*\
                !*** ../../../node_modules/@radix-ui/react-primitive/dist/index.module.js ***!
                \****************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Primitive\": () => (/* binding */ $8927f6f2acc4f386$export$250ffa63cdc0d034),\n/* harmony export */   \"Root\": () => (/* binding */ $8927f6f2acc4f386$export$be92b6f5f03c0fe9),\n/* harmony export */   \"dispatchDiscreteCustomEvent\": () => (/* binding */ $8927f6f2acc4f386$export$6d1a0317bde7de7f)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"../../../node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-dom */ \"react-dom\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _radix_ui_react_slot__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @radix-ui/react-slot */ \"../../../node_modules/@radix-ui/react-slot/dist/index.module.js\");\n\n\n\n\n\n\n\n\n\nconst $8927f6f2acc4f386$var$NODES = [\n    'a',\n    'button',\n    'div',\n    'h2',\n    'h3',\n    'img',\n    'label',\n    'li',\n    'nav',\n    'ol',\n    'p',\n    'span',\n    'svg',\n    'ul'\n]; // Temporary while we await merge of this fix:\n// https://github.com/DefinitelyTyped/DefinitelyTyped/pull/55396\n// prettier-ignore\n/* -------------------------------------------------------------------------------------------------\n * Primitive\n * -----------------------------------------------------------------------------------------------*/ const $8927f6f2acc4f386$export$250ffa63cdc0d034 = $8927f6f2acc4f386$var$NODES.reduce((primitive, node)=>{\n    const Node = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)((props, forwardedRef)=>{\n        const { asChild: asChild , ...primitiveProps } = props;\n        const Comp = asChild ? _radix_ui_react_slot__WEBPACK_IMPORTED_MODULE_3__.Slot : node;\n        (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n            window[Symbol.for('radix-ui')] = true;\n        }, []);\n        return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(Comp, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, primitiveProps, {\n            ref: forwardedRef\n        }));\n    });\n    Node.displayName = `Primitive.${node}`;\n    return {\n        ...primitive,\n        [node]: Node\n    };\n}, {});\n/* -------------------------------------------------------------------------------------------------\n * Utils\n * -----------------------------------------------------------------------------------------------*/ /**\n * Flush custom event dispatch\n * https://github.com/radix-ui/primitives/pull/1378\n *\n * React batches *all* event handlers since version 18, this introduces certain considerations when using custom event types.\n *\n * Internally, React prioritises events in the following order:\n *  - discrete\n *  - continuous\n *  - default\n *\n * https://github.com/facebook/react/blob/a8a4742f1c54493df00da648a3f9d26e3db9c8b5/packages/react-dom/src/events/ReactDOMEventListener.js#L294-L350\n *\n * `discrete` is an  important distinction as updates within these events are applied immediately.\n * React however, is not able to infer the priority of custom event types due to how they are detected internally.\n * Because of this, it's possible for updates from custom events to be unexpectedly batched when\n * dispatched by another `discrete` event.\n *\n * In order to ensure that updates from custom events are applied predictably, we need to manually flush the batch.\n * This utility should be used when dispatching a custom event from within another `discrete` event, this utility\n * is not nessesary when dispatching known event types, or if dispatching a custom type inside a non-discrete event.\n * For example:\n *\n * dispatching a known click \u{1F44E}\n * target.dispatchEvent(new Event(\u2018click\u2019))\n *\n * dispatching a custom type within a non-discrete event \u{1F44E}\n * onScroll={(event) => event.target.dispatchEvent(new CustomEvent(\u2018customType\u2019))}\n *\n * dispatching a custom type within a `discrete` event \u{1F44D}\n * onPointerDown={(event) => dispatchDiscreteCustomEvent(event.target, new CustomEvent(\u2018customType\u2019))}\n *\n * Note: though React classifies `focus`, `focusin` and `focusout` events as `discrete`, it's  not recommended to use\n * this utility with them. This is because it's possible for those handlers to be called implicitly during render\n * e.g. when focus is within a component as it is unmounted, or when managing focus on mount.\n */ function $8927f6f2acc4f386$export$6d1a0317bde7de7f(target, event) {\n    if (target) (0,react_dom__WEBPACK_IMPORTED_MODULE_2__.flushSync)(()=>target.dispatchEvent(event)\n    );\n}\n/* -----------------------------------------------------------------------------------------------*/ const $8927f6f2acc4f386$export$be92b6f5f03c0fe9 = $8927f6f2acc4f386$export$250ffa63cdc0d034;\n\n\n\n\n\n//# sourceMappingURL=index.module.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6984 characters]\n//# sourceURL=webpack-internal:///../../../node_modules/@radix-ui/react-primitive/dist/index.module.js\n");
              }
            ),
            /***/
            "../../../node_modules/@radix-ui/react-roving-focus/dist/index.module.js": (
              /*!*******************************************************************************!*\
                !*** ../../../node_modules/@radix-ui/react-roving-focus/dist/index.module.js ***!
                \*******************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "Item": () => (/* binding */ $d7bdfb9eb0fdf311$export$6d08773d2e66f8f2),
/* harmony export */   "Root": () => (/* binding */ $d7bdfb9eb0fdf311$export$be92b6f5f03c0fe9),
/* harmony export */   "RovingFocusGroup": () => (/* binding */ $d7bdfb9eb0fdf311$export$8699f7c8af148338),
/* harmony export */   "RovingFocusGroupItem": () => (/* binding */ $d7bdfb9eb0fdf311$export$ab9df7c53fe8454),
/* harmony export */   "createRovingFocusGroupScope": () => (/* binding */ $d7bdfb9eb0fdf311$export$c7109489551a4f4)
/* harmony export */ });
/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ "../../../node_modules/@babel/runtime/helpers/esm/extends.js");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _radix_ui_primitive__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @radix-ui/primitive */ "../../../node_modules/@radix-ui/primitive/dist/index.module.js");
/* harmony import */ var _radix_ui_react_collection__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @radix-ui/react-collection */ "../../../node_modules/@radix-ui/react-collection/dist/index.module.js");
/* harmony import */ var _radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @radix-ui/react-compose-refs */ "../../../node_modules/@radix-ui/react-compose-refs/dist/index.module.js");
/* harmony import */ var _radix_ui_react_context__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @radix-ui/react-context */ "../../../node_modules/@radix-ui/react-context/dist/index.module.js");
/* harmony import */ var _radix_ui_react_id__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @radix-ui/react-id */ "../../../node_modules/@radix-ui/react-id/dist/index.module.js");
/* harmony import */ var _radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @radix-ui/react-primitive */ "../../../node_modules/@radix-ui/react-primitive/dist/index.module.js");
/* harmony import */ var _radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @radix-ui/react-use-callback-ref */ "../../../node_modules/@radix-ui/react-use-callback-ref/dist/index.module.js");
/* harmony import */ var _radix_ui_react_use_controllable_state__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @radix-ui/react-use-controllable-state */ "../../../node_modules/@radix-ui/react-use-controllable-state/dist/index.module.js");
/* harmony import */ var _radix_ui_react_direction__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @radix-ui/react-direction */ "../../../node_modules/@radix-ui/react-direction/dist/index.module.js");























const $d7bdfb9eb0fdf311$var$ENTRY_FOCUS = 'rovingFocusGroup.onEntryFocus';
const $d7bdfb9eb0fdf311$var$EVENT_OPTIONS = {
    bubbles: false,
    cancelable: true
};
/* -------------------------------------------------------------------------------------------------
 * RovingFocusGroup
 * -----------------------------------------------------------------------------------------------*/ const $d7bdfb9eb0fdf311$var$GROUP_NAME = 'RovingFocusGroup';
const [$d7bdfb9eb0fdf311$var$Collection, $d7bdfb9eb0fdf311$var$useCollection, $d7bdfb9eb0fdf311$var$createCollectionScope] = (0,_radix_ui_react_collection__WEBPACK_IMPORTED_MODULE_2__.createCollection)($d7bdfb9eb0fdf311$var$GROUP_NAME);
const [$d7bdfb9eb0fdf311$var$createRovingFocusGroupContext, $d7bdfb9eb0fdf311$export$c7109489551a4f4] = (0,_radix_ui_react_context__WEBPACK_IMPORTED_MODULE_3__.createContextScope)($d7bdfb9eb0fdf311$var$GROUP_NAME, [
    $d7bdfb9eb0fdf311$var$createCollectionScope
]);
const [$d7bdfb9eb0fdf311$var$RovingFocusProvider, $d7bdfb9eb0fdf311$var$useRovingFocusContext] = $d7bdfb9eb0fdf311$var$createRovingFocusGroupContext($d7bdfb9eb0fdf311$var$GROUP_NAME);
const $d7bdfb9eb0fdf311$export$8699f7c8af148338 = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)((props, forwardedRef)=>{
    return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)($d7bdfb9eb0fdf311$var$Collection.Provider, {
        scope: props.__scopeRovingFocusGroup
    }, /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)($d7bdfb9eb0fdf311$var$Collection.Slot, {
        scope: props.__scopeRovingFocusGroup
    }, /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)($d7bdfb9eb0fdf311$var$RovingFocusGroupImpl, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, props, {
        ref: forwardedRef
    }))));
});
/*#__PURE__*/ Object.assign($d7bdfb9eb0fdf311$export$8699f7c8af148338, {
    displayName: $d7bdfb9eb0fdf311$var$GROUP_NAME
});
/* -----------------------------------------------------------------------------------------------*/ const $d7bdfb9eb0fdf311$var$RovingFocusGroupImpl = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)((props, forwardedRef)=>{
    const { __scopeRovingFocusGroup: __scopeRovingFocusGroup , orientation: orientation , loop: loop = false , dir: dir , currentTabStopId: currentTabStopIdProp , defaultCurrentTabStopId: defaultCurrentTabStopId , onCurrentTabStopIdChange: onCurrentTabStopIdChange , onEntryFocus: onEntryFocus , ...groupProps } = props;
    const ref = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);
    const composedRefs = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_4__.useComposedRefs)(forwardedRef, ref);
    const direction = (0,_radix_ui_react_direction__WEBPACK_IMPORTED_MODULE_5__.useDirection)(dir);
    const [currentTabStopId = null, setCurrentTabStopId] = (0,_radix_ui_react_use_controllable_state__WEBPACK_IMPORTED_MODULE_6__.useControllableState)({
        prop: currentTabStopIdProp,
        defaultProp: defaultCurrentTabStopId,
        onChange: onCurrentTabStopIdChange
    });
    const [isTabbingBackOut, setIsTabbingBackOut] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);
    const handleEntryFocus = (0,_radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_7__.useCallbackRef)(onEntryFocus);
    const getItems = $d7bdfb9eb0fdf311$var$useCollection(__scopeRovingFocusGroup);
    const isClickFocusRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(false);
    const [focusableItemsCount, setFocusableItemsCount] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(0);
    (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{
        const node = ref.current;
        if (node) {
            node.addEventListener($d7bdfb9eb0fdf311$var$ENTRY_FOCUS, handleEntryFocus);
            return ()=>node.removeEventListener($d7bdfb9eb0fdf311$var$ENTRY_FOCUS, handleEntryFocus)
            ;
        }
    }, [
        handleEntryFocus
    ]);
    return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)($d7bdfb9eb0fdf311$var$RovingFocusProvider, {
        scope: __scopeRovingFocusGroup,
        orientation: orientation,
        dir: direction,
        loop: loop,
        currentTabStopId: currentTabStopId,
        onItemFocus: (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)((tabStopId)=>setCurrentTabStopId(tabStopId)
        , [
            setCurrentTabStopId
        ]),
        onItemShiftTab: (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(()=>setIsTabbingBackOut(true)
        , []),
        onFocusableItemAdd: (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(()=>setFocusableItemsCount((prevCount)=>prevCount + 1
            )
        , []),
        onFocusableItemRemove: (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(()=>setFocusableItemsCount((prevCount)=>prevCount - 1
            )
        , [])
    }, /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_8__.Primitive.div, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({
        tabIndex: isTabbingBackOut || focusableItemsCount === 0 ? -1 : 0,
        "data-orientation": orientation
    }, groupProps, {
        ref: composedRefs,
        style: {
            outline: 'none',
            ...props.style
        },
        onMouseDown: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_9__.composeEventHandlers)(props.onMouseDown, ()=>{
            isClickFocusRef.current = true;
        }),
        onFocus: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_9__.composeEventHandlers)(props.onFocus, (event)=>{
            // We normally wouldn't need this check, because we already check
            // that the focus is on the current target and not bubbling to it.
            // We do this because Safari doesn't focus buttons when clicked, and
            // instead, the wrapper will get focused and not through a bubbling event.
            const isKeyboardFocus = !isClickFocusRef.current;
            if (event.target === event.currentTarget && isKeyboardFocus && !isTabbingBackOut) {
                const entryFocusEvent = new CustomEvent($d7bdfb9eb0fdf311$var$ENTRY_FOCUS, $d7bdfb9eb0fdf311$var$EVENT_OPTIONS);
                event.currentTarget.dispatchEvent(entryFocusEvent);
                if (!entryFocusEvent.defaultPrevented) {
                    const items = getItems().filter((item)=>item.focusable
                    );
                    const activeItem = items.find((item)=>item.active
                    );
                    const currentItem = items.find((item)=>item.id === currentTabStopId
                    );
                    const candidateItems = [
                        activeItem,
                        currentItem,
                        ...items
                    ].filter(Boolean);
                    const candidateNodes = candidateItems.map((item)=>item.ref.current
                    );
                    $d7bdfb9eb0fdf311$var$focusFirst(candidateNodes);
                }
            }
            isClickFocusRef.current = false;
        }),
        onBlur: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_9__.composeEventHandlers)(props.onBlur, ()=>setIsTabbingBackOut(false)
        )
    })));
});
/* -------------------------------------------------------------------------------------------------
 * RovingFocusGroupItem
 * -----------------------------------------------------------------------------------------------*/ const $d7bdfb9eb0fdf311$var$ITEM_NAME = 'RovingFocusGroupItem';
const $d7bdfb9eb0fdf311$export$ab9df7c53fe8454 = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)((props, forwardedRef)=>{
    const { __scopeRovingFocusGroup: __scopeRovingFocusGroup , focusable: focusable = true , active: active = false , tabStopId: tabStopId , ...itemProps } = props;
    const autoId = (0,_radix_ui_react_id__WEBPACK_IMPORTED_MODULE_10__.useId)();
    const id = tabStopId || autoId;
    const context = $d7bdfb9eb0fdf311$var$useRovingFocusContext($d7bdfb9eb0fdf311$var$ITEM_NAME, __scopeRovingFocusGroup);
    const isCurrentTabStop = context.currentTabStopId === id;
    const getItems = $d7bdfb9eb0fdf311$var$useCollection(__scopeRovingFocusGroup);
    const { onFocusableItemAdd: onFocusableItemAdd , onFocusableItemRemove: onFocusableItemRemove  } = context;
    (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{
        if (focusable) {
            onFocusableItemAdd();
            return ()=>onFocusableItemRemove()
            ;
        }
    }, [
        focusable,
        onFocusableItemAdd,
        onFocusableItemRemove
    ]);
    return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)($d7bdfb9eb0fdf311$var$Collection.ItemSlot, {
        scope: __scopeRovingFocusGroup,
        id: id,
        focusable: focusable,
        active: active
    }, /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_8__.Primitive.span, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({
        tabIndex: isCurrentTabStop ? 0 : -1,
        "data-orientation": context.orientation
    }, itemProps, {
        ref: forwardedRef,
        onMouseDown: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_9__.composeEventHandlers)(props.onMouseDown, (event)=>{
            // We prevent focusing non-focusable items on \`mousedown\`.
            // Even though the item has tabIndex={-1}, that only means take it out of the tab order.
            if (!focusable) event.preventDefault(); // Safari doesn't focus a button when clicked so we run our logic on mousedown also
            else context.onItemFocus(id);
        }),
        onFocus: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_9__.composeEventHandlers)(props.onFocus, ()=>context.onItemFocus(id)
        ),
        onKeyDown: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_9__.composeEventHandlers)(props.onKeyDown, (event)=>{
            if (event.key === 'Tab' && event.shiftKey) {
                context.onItemShiftTab();
                return;
            }
            if (event.target !== event.currentTarget) return;
            const focusIntent = $d7bdfb9eb0fdf311$var$getFocusIntent(event, context.orientation, context.dir);
            if (focusIntent !== undefined) {
                event.preventDefault();
                const items = getItems().filter((item)=>item.focusable
                );
                let candidateNodes = items.map((item)=>item.ref.current
                );
                if (focusIntent === 'last') candidateNodes.reverse();
                else if (focusIntent === 'prev' || focusIntent === 'next') {
                    if (focusIntent === 'prev') candidateNodes.reverse();
                    const currentIndex = candidateNodes.indexOf(event.currentTarget);
                    candidateNodes = context.loop ? $d7bdfb9eb0fdf311$var$wrapArray(candidateNodes, currentIndex + 1) : candidateNodes.slice(currentIndex + 1);
                }
                /**
         * Imperative focus during keydown is risky so we prevent React's batching updates
         * to avoid potential bugs. See: https://github.com/facebook/react/issues/20332
         */ setTimeout(()=>$d7bdfb9eb0fdf311$var$focusFirst(candidateNodes)
                );
            }
        })
    })));
});
/*#__PURE__*/ Object.assign($d7bdfb9eb0fdf311$export$ab9df7c53fe8454, {
    displayName: $d7bdfb9eb0fdf311$var$ITEM_NAME
});
/* -----------------------------------------------------------------------------------------------*/ // prettier-ignore
const $d7bdfb9eb0fdf311$var$MAP_KEY_TO_FOCUS_INTENT = {
    ArrowLeft: 'prev',
    ArrowUp: 'prev',
    ArrowRight: 'next',
    ArrowDown: 'next',
    PageUp: 'first',
    Home: 'first',
    PageDown: 'last',
    End: 'last'
};
function $d7bdfb9eb0fdf311$var$getDirectionAwareKey(key, dir) {
    if (dir !== 'rtl') return key;
    return key === 'ArrowLeft' ? 'ArrowRight' : key === 'ArrowRight' ? 'ArrowLeft' : key;
}
function $d7bdfb9eb0fdf311$var$getFocusIntent(event, orientation, dir) {
    const key = $d7bdfb9eb0fdf311$var$getDirectionAwareKey(event.key, dir);
    if (orientation === 'vertical' && [
        'ArrowLeft',
        'ArrowRight'
    ].includes(key)) return undefined;
    if (orientation === 'horizontal' && [
        'ArrowUp',
        'ArrowDown'
    ].includes(key)) return undefined;
    return $d7bdfb9eb0fdf311$var$MAP_KEY_TO_FOCUS_INTENT[key];
}
function $d7bdfb9eb0fdf311$var$focusFirst(candidates) {
    const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;
    for (const candidate of candidates){
        // if focus is already where we want to go, we don't want to keep going through the candidates
        if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;
        candidate.focus();
        if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;
    }
}
/**
 * Wraps an array around itself at a given start index
 * Example: \`wrapArray(['a', 'b', 'c', 'd'], 2) === ['c', 'd', 'a', 'b']\`
 */ function $d7bdfb9eb0fdf311$var$wrapArray(array, startIndex) {
    return array.map((_, index)=>array[(startIndex + index) % array.length]
    );
}
const $d7bdfb9eb0fdf311$export$be92b6f5f03c0fe9 = $d7bdfb9eb0fdf311$export$8699f7c8af148338;
const $d7bdfb9eb0fdf311$export$6d08773d2e66f8f2 = $d7bdfb9eb0fdf311$export$ab9df7c53fe8454;





//# sourceMappingURL=index.module.js.map
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 21196 characters]
//# sourceURL=webpack-internal:///../../../node_modules/@radix-ui/react-roving-focus/dist/index.module.js
`);
              }
            ),
            /***/
            "../../../node_modules/@radix-ui/react-slot/dist/index.module.js": (
              /*!***********************************************************************!*\
                !*** ../../../node_modules/@radix-ui/react-slot/dist/index.module.js ***!
                \***********************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "Root": () => (/* binding */ $5e63c961fc1ce211$export$be92b6f5f03c0fe9),
/* harmony export */   "Slot": () => (/* binding */ $5e63c961fc1ce211$export$8c6ed5c666ac1360),
/* harmony export */   "Slottable": () => (/* binding */ $5e63c961fc1ce211$export$d9f1ccf0bdb05d45)
/* harmony export */ });
/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ "../../../node_modules/@babel/runtime/helpers/esm/extends.js");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @radix-ui/react-compose-refs */ "../../../node_modules/@radix-ui/react-compose-refs/dist/index.module.js");







/* -------------------------------------------------------------------------------------------------
 * Slot
 * -----------------------------------------------------------------------------------------------*/ const $5e63c961fc1ce211$export$8c6ed5c666ac1360 = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)((props, forwardedRef)=>{
    const { children: children , ...slotProps } = props;
    const childrenArray = react__WEBPACK_IMPORTED_MODULE_1__.Children.toArray(children);
    const slottable = childrenArray.find($5e63c961fc1ce211$var$isSlottable);
    if (slottable) {
        // the new element to render is the one passed as a child of \`Slottable\`
        const newElement = slottable.props.children;
        const newChildren = childrenArray.map((child)=>{
            if (child === slottable) {
                // because the new element will be the one rendered, we are only interested
                // in grabbing its children (\`newElement.props.children\`)
                if (react__WEBPACK_IMPORTED_MODULE_1__.Children.count(newElement) > 1) return react__WEBPACK_IMPORTED_MODULE_1__.Children.only(null);
                return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.isValidElement)(newElement) ? newElement.props.children : null;
            } else return child;
        });
        return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)($5e63c961fc1ce211$var$SlotClone, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, slotProps, {
            ref: forwardedRef
        }), /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.isValidElement)(newElement) ? /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.cloneElement)(newElement, undefined, newChildren) : null);
    }
    return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)($5e63c961fc1ce211$var$SlotClone, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, slotProps, {
        ref: forwardedRef
    }), children);
});
$5e63c961fc1ce211$export$8c6ed5c666ac1360.displayName = 'Slot';
/* -------------------------------------------------------------------------------------------------
 * SlotClone
 * -----------------------------------------------------------------------------------------------*/ const $5e63c961fc1ce211$var$SlotClone = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)((props, forwardedRef)=>{
    const { children: children , ...slotProps } = props;
    if (/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.isValidElement)(children)) return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.cloneElement)(children, {
        ...$5e63c961fc1ce211$var$mergeProps(slotProps, children.props),
        ref: (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_2__.composeRefs)(forwardedRef, children.ref)
    });
    return react__WEBPACK_IMPORTED_MODULE_1__.Children.count(children) > 1 ? react__WEBPACK_IMPORTED_MODULE_1__.Children.only(null) : null;
});
$5e63c961fc1ce211$var$SlotClone.displayName = 'SlotClone';
/* -------------------------------------------------------------------------------------------------
 * Slottable
 * -----------------------------------------------------------------------------------------------*/ const $5e63c961fc1ce211$export$d9f1ccf0bdb05d45 = ({ children: children  })=>{
    return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(react__WEBPACK_IMPORTED_MODULE_1__.Fragment, null, children);
};
/* ---------------------------------------------------------------------------------------------- */ function $5e63c961fc1ce211$var$isSlottable(child) {
    return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.isValidElement)(child) && child.type === $5e63c961fc1ce211$export$d9f1ccf0bdb05d45;
}
function $5e63c961fc1ce211$var$mergeProps(slotProps, childProps) {
    // all child props should override
    const overrideProps = {
        ...childProps
    };
    for(const propName in childProps){
        const slotPropValue = slotProps[propName];
        const childPropValue = childProps[propName];
        const isHandler = /^on[A-Z]/.test(propName);
        if (isHandler) {
            // if the handler exists on both, we compose them
            if (slotPropValue && childPropValue) overrideProps[propName] = (...args)=>{
                childPropValue(...args);
                slotPropValue(...args);
            };
            else if (slotPropValue) overrideProps[propName] = slotPropValue;
        } else if (propName === 'style') overrideProps[propName] = {
            ...slotPropValue,
            ...childPropValue
        };
        else if (propName === 'className') overrideProps[propName] = [
            slotPropValue,
            childPropValue
        ].filter(Boolean).join(' ');
    }
    return {
        ...slotProps,
        ...overrideProps
    };
}
const $5e63c961fc1ce211$export$be92b6f5f03c0fe9 = $5e63c961fc1ce211$export$8c6ed5c666ac1360;





//# sourceMappingURL=index.module.js.map
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 8112 characters]
//# sourceURL=webpack-internal:///../../../node_modules/@radix-ui/react-slot/dist/index.module.js
`);
              }
            ),
            /***/
            "../../../node_modules/@radix-ui/react-tabs/dist/index.module.js": (
              /*!***********************************************************************!*\
                !*** ../../../node_modules/@radix-ui/react-tabs/dist/index.module.js ***!
                \***********************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "Content": () => (/* binding */ $69cb30bb0017df05$export$7c6e2c02157bb7d2),
/* harmony export */   "List": () => (/* binding */ $69cb30bb0017df05$export$54c2e3dc7acea9f5),
/* harmony export */   "Root": () => (/* binding */ $69cb30bb0017df05$export$be92b6f5f03c0fe9),
/* harmony export */   "Tabs": () => (/* binding */ $69cb30bb0017df05$export$b2539bed5023c21c),
/* harmony export */   "TabsContent": () => (/* binding */ $69cb30bb0017df05$export$bd905d70e8fd2ebb),
/* harmony export */   "TabsList": () => (/* binding */ $69cb30bb0017df05$export$9712d22edc0d78c1),
/* harmony export */   "TabsTrigger": () => (/* binding */ $69cb30bb0017df05$export$8114b9fdfdf9f3ba),
/* harmony export */   "Trigger": () => (/* binding */ $69cb30bb0017df05$export$41fb9f06171c75f4),
/* harmony export */   "createTabsScope": () => (/* binding */ $69cb30bb0017df05$export$355f5bd209d7b13a)
/* harmony export */ });
/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ "../../../node_modules/@babel/runtime/helpers/esm/extends.js");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _radix_ui_primitive__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @radix-ui/primitive */ "../../../node_modules/@radix-ui/primitive/dist/index.module.js");
/* harmony import */ var _radix_ui_react_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @radix-ui/react-context */ "../../../node_modules/@radix-ui/react-context/dist/index.module.js");
/* harmony import */ var _radix_ui_react_roving_focus__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @radix-ui/react-roving-focus */ "../../../node_modules/@radix-ui/react-roving-focus/dist/index.module.js");
/* harmony import */ var _radix_ui_react_presence__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @radix-ui/react-presence */ "../../../node_modules/@radix-ui/react-presence/dist/index.module.js");
/* harmony import */ var _radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @radix-ui/react-primitive */ "../../../node_modules/@radix-ui/react-primitive/dist/index.module.js");
/* harmony import */ var _radix_ui_react_direction__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @radix-ui/react-direction */ "../../../node_modules/@radix-ui/react-direction/dist/index.module.js");
/* harmony import */ var _radix_ui_react_use_controllable_state__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @radix-ui/react-use-controllable-state */ "../../../node_modules/@radix-ui/react-use-controllable-state/dist/index.module.js");
/* harmony import */ var _radix_ui_react_id__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @radix-ui/react-id */ "../../../node_modules/@radix-ui/react-id/dist/index.module.js");






















/* -------------------------------------------------------------------------------------------------
 * Tabs
 * -----------------------------------------------------------------------------------------------*/ const $69cb30bb0017df05$var$TABS_NAME = 'Tabs';
const [$69cb30bb0017df05$var$createTabsContext, $69cb30bb0017df05$export$355f5bd209d7b13a] = (0,_radix_ui_react_context__WEBPACK_IMPORTED_MODULE_2__.createContextScope)($69cb30bb0017df05$var$TABS_NAME, [
    _radix_ui_react_roving_focus__WEBPACK_IMPORTED_MODULE_3__.createRovingFocusGroupScope
]);
const $69cb30bb0017df05$var$useRovingFocusGroupScope = (0,_radix_ui_react_roving_focus__WEBPACK_IMPORTED_MODULE_3__.createRovingFocusGroupScope)();
const [$69cb30bb0017df05$var$TabsProvider, $69cb30bb0017df05$var$useTabsContext] = $69cb30bb0017df05$var$createTabsContext($69cb30bb0017df05$var$TABS_NAME);
const $69cb30bb0017df05$export$b2539bed5023c21c = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)((props, forwardedRef)=>{
    const { __scopeTabs: __scopeTabs , value: valueProp , onValueChange: onValueChange , defaultValue: defaultValue , orientation: orientation = 'horizontal' , dir: dir , activationMode: activationMode = 'automatic' , ...tabsProps } = props;
    const direction = (0,_radix_ui_react_direction__WEBPACK_IMPORTED_MODULE_4__.useDirection)(dir);
    const [value, setValue] = (0,_radix_ui_react_use_controllable_state__WEBPACK_IMPORTED_MODULE_5__.useControllableState)({
        prop: valueProp,
        onChange: onValueChange,
        defaultProp: defaultValue
    });
    return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)($69cb30bb0017df05$var$TabsProvider, {
        scope: __scopeTabs,
        baseId: (0,_radix_ui_react_id__WEBPACK_IMPORTED_MODULE_6__.useId)(),
        value: value,
        onValueChange: setValue,
        orientation: orientation,
        dir: direction,
        activationMode: activationMode
    }, /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_7__.Primitive.div, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({
        dir: direction,
        "data-orientation": orientation
    }, tabsProps, {
        ref: forwardedRef
    })));
});
/*#__PURE__*/ Object.assign($69cb30bb0017df05$export$b2539bed5023c21c, {
    displayName: $69cb30bb0017df05$var$TABS_NAME
});
/* -------------------------------------------------------------------------------------------------
 * TabsList
 * -----------------------------------------------------------------------------------------------*/ const $69cb30bb0017df05$var$TAB_LIST_NAME = 'TabsList';
const $69cb30bb0017df05$export$9712d22edc0d78c1 = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)((props, forwardedRef)=>{
    const { __scopeTabs: __scopeTabs , loop: loop = true , ...listProps } = props;
    const context = $69cb30bb0017df05$var$useTabsContext($69cb30bb0017df05$var$TAB_LIST_NAME, __scopeTabs);
    const rovingFocusGroupScope = $69cb30bb0017df05$var$useRovingFocusGroupScope(__scopeTabs);
    return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_roving_focus__WEBPACK_IMPORTED_MODULE_3__.Root, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({
        asChild: true
    }, rovingFocusGroupScope, {
        orientation: context.orientation,
        dir: context.dir,
        loop: loop
    }), /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_7__.Primitive.div, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({
        role: "tablist",
        "aria-orientation": context.orientation
    }, listProps, {
        ref: forwardedRef
    })));
});
/*#__PURE__*/ Object.assign($69cb30bb0017df05$export$9712d22edc0d78c1, {
    displayName: $69cb30bb0017df05$var$TAB_LIST_NAME
});
/* -------------------------------------------------------------------------------------------------
 * TabsTrigger
 * -----------------------------------------------------------------------------------------------*/ const $69cb30bb0017df05$var$TRIGGER_NAME = 'TabsTrigger';
const $69cb30bb0017df05$export$8114b9fdfdf9f3ba = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)((props, forwardedRef)=>{
    const { __scopeTabs: __scopeTabs , value: value , disabled: disabled = false , ...triggerProps } = props;
    const context = $69cb30bb0017df05$var$useTabsContext($69cb30bb0017df05$var$TRIGGER_NAME, __scopeTabs);
    const rovingFocusGroupScope = $69cb30bb0017df05$var$useRovingFocusGroupScope(__scopeTabs);
    const triggerId = $69cb30bb0017df05$var$makeTriggerId(context.baseId, value);
    const contentId = $69cb30bb0017df05$var$makeContentId(context.baseId, value);
    const isSelected = value === context.value;
    return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_roving_focus__WEBPACK_IMPORTED_MODULE_3__.Item, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({
        asChild: true
    }, rovingFocusGroupScope, {
        focusable: !disabled,
        active: isSelected
    }), /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_7__.Primitive.button, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({
        type: "button",
        role: "tab",
        "aria-selected": isSelected,
        "aria-controls": contentId,
        "data-state": isSelected ? 'active' : 'inactive',
        "data-disabled": disabled ? '' : undefined,
        disabled: disabled,
        id: triggerId
    }, triggerProps, {
        ref: forwardedRef,
        onMouseDown: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_8__.composeEventHandlers)(props.onMouseDown, (event)=>{
            // only call handler if it's the left button (mousedown gets triggered by all mouse buttons)
            // but not when the control key is pressed (avoiding MacOS right click)
            if (!disabled && event.button === 0 && event.ctrlKey === false) context.onValueChange(value);
            else // prevent focus to avoid accidental activation
            event.preventDefault();
        }),
        onKeyDown: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_8__.composeEventHandlers)(props.onKeyDown, (event)=>{
            if ([
                ' ',
                'Enter'
            ].includes(event.key)) context.onValueChange(value);
        }),
        onFocus: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_8__.composeEventHandlers)(props.onFocus, ()=>{
            // handle "automatic" activation if necessary
            // ie. activate tab following focus
            const isAutomaticActivation = context.activationMode !== 'manual';
            if (!isSelected && !disabled && isAutomaticActivation) context.onValueChange(value);
        })
    })));
});
/*#__PURE__*/ Object.assign($69cb30bb0017df05$export$8114b9fdfdf9f3ba, {
    displayName: $69cb30bb0017df05$var$TRIGGER_NAME
});
/* -------------------------------------------------------------------------------------------------
 * TabsContent
 * -----------------------------------------------------------------------------------------------*/ const $69cb30bb0017df05$var$CONTENT_NAME = 'TabsContent';
const $69cb30bb0017df05$export$bd905d70e8fd2ebb = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)((props, forwardedRef)=>{
    const { __scopeTabs: __scopeTabs , value: value , forceMount: forceMount , children: children , ...contentProps } = props;
    const context = $69cb30bb0017df05$var$useTabsContext($69cb30bb0017df05$var$CONTENT_NAME, __scopeTabs);
    const triggerId = $69cb30bb0017df05$var$makeTriggerId(context.baseId, value);
    const contentId = $69cb30bb0017df05$var$makeContentId(context.baseId, value);
    const isSelected = value === context.value;
    const isMountAnimationPreventedRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(isSelected);
    (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{
        const rAF = requestAnimationFrame(()=>isMountAnimationPreventedRef.current = false
        );
        return ()=>cancelAnimationFrame(rAF)
        ;
    }, []);
    return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_presence__WEBPACK_IMPORTED_MODULE_9__.Presence, {
        present: forceMount || isSelected
    }, ({ present: present  })=>/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createElement)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_7__.Primitive.div, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({
            "data-state": isSelected ? 'active' : 'inactive',
            "data-orientation": context.orientation,
            role: "tabpanel",
            "aria-labelledby": triggerId,
            hidden: !present,
            id: contentId,
            tabIndex: 0
        }, contentProps, {
            ref: forwardedRef,
            style: {
                ...props.style,
                animationDuration: isMountAnimationPreventedRef.current ? '0s' : undefined
            }
        }), present && children)
    );
});
/*#__PURE__*/ Object.assign($69cb30bb0017df05$export$bd905d70e8fd2ebb, {
    displayName: $69cb30bb0017df05$var$CONTENT_NAME
});
/* ---------------------------------------------------------------------------------------------- */ function $69cb30bb0017df05$var$makeTriggerId(baseId, value) {
    return \`\${baseId}-trigger-\${value}\`;
}
function $69cb30bb0017df05$var$makeContentId(baseId, value) {
    return \`\${baseId}-content-\${value}\`;
}
const $69cb30bb0017df05$export$be92b6f5f03c0fe9 = $69cb30bb0017df05$export$b2539bed5023c21c;
const $69cb30bb0017df05$export$54c2e3dc7acea9f5 = $69cb30bb0017df05$export$9712d22edc0d78c1;
const $69cb30bb0017df05$export$41fb9f06171c75f4 = $69cb30bb0017df05$export$8114b9fdfdf9f3ba;
const $69cb30bb0017df05$export$7c6e2c02157bb7d2 = $69cb30bb0017df05$export$bd905d70e8fd2ebb;





//# sourceMappingURL=index.module.js.map
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 16284 characters]
//# sourceURL=webpack-internal:///../../../node_modules/@radix-ui/react-tabs/dist/index.module.js
`);
              }
            ),
            /***/
            "../../../node_modules/@radix-ui/react-use-callback-ref/dist/index.module.js": (
              /*!***********************************************************************************!*\
                !*** ../../../node_modules/@radix-ui/react-use-callback-ref/dist/index.module.js ***!
                \***********************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "useCallbackRef": () => (/* binding */ $b1b2314f5f9a1d84$export$25bec8c6f54ee79a)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n\n\n\n/**\n * A custom hook that converts a callback to a ref to avoid triggering re-renders when passed as a\n * prop or avoid re-executing effects when passed as a dependency\n */ function $b1b2314f5f9a1d84$export$25bec8c6f54ee79a(callback) {\n    const callbackRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(callback);\n    (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{\n        callbackRef.current = callback;\n    }); // https://github.com/facebook/react/issues/19240\n    return (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>(...args)=>{\n            var _callbackRef$current;\n            return (_callbackRef$current = callbackRef.current) === null || _callbackRef$current === void 0 ? void 0 : _callbackRef$current.call(callbackRef, ...args);\n        }\n    , []);\n}\n\n\n\n\n\n//# sourceMappingURL=index.module.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC11c2UtY2FsbGJhY2stcmVmL2Rpc3QvaW5kZXgubW9kdWxlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUF3Rzs7O0FBR3hHO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLDZDQUFhO0FBQ3JDLElBQUksZ0RBQWdCO0FBQ3BCO0FBQ0EsS0FBSyxHQUFHO0FBQ1IsV0FBVyw4Q0FBYztBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUtxRTtBQUNyRSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXVzZS1jYWxsYmFjay1yZWYvZGlzdC9pbmRleC5tb2R1bGUuanM/YjJjZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3VzZVJlZiBhcyAkbHdpV2okdXNlUmVmLCB1c2VFZmZlY3QgYXMgJGx3aVdqJHVzZUVmZmVjdCwgdXNlTWVtbyBhcyAkbHdpV2okdXNlTWVtb30gZnJvbSBcInJlYWN0XCI7XG5cblxuLyoqXG4gKiBBIGN1c3RvbSBob29rIHRoYXQgY29udmVydHMgYSBjYWxsYmFjayB0byBhIHJlZiB0byBhdm9pZCB0cmlnZ2VyaW5nIHJlLXJlbmRlcnMgd2hlbiBwYXNzZWQgYXMgYVxuICogcHJvcCBvciBhdm9pZCByZS1leGVjdXRpbmcgZWZmZWN0cyB3aGVuIHBhc3NlZCBhcyBhIGRlcGVuZGVuY3lcbiAqLyBmdW5jdGlvbiAkYjFiMjMxNGY1ZjlhMWQ4NCRleHBvcnQkMjViZWM4YzZmNTRlZTc5YShjYWxsYmFjaykge1xuICAgIGNvbnN0IGNhbGxiYWNrUmVmID0gJGx3aVdqJHVzZVJlZihjYWxsYmFjayk7XG4gICAgJGx3aVdqJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBjYWxsYmFja1JlZi5jdXJyZW50ID0gY2FsbGJhY2s7XG4gICAgfSk7IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvMTkyNDBcbiAgICByZXR1cm4gJGx3aVdqJHVzZU1lbW8oKCk9PiguLi5hcmdzKT0+e1xuICAgICAgICAgICAgdmFyIF9jYWxsYmFja1JlZiRjdXJyZW50O1xuICAgICAgICAgICAgcmV0dXJuIChfY2FsbGJhY2tSZWYkY3VycmVudCA9IGNhbGxiYWNrUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9jYWxsYmFja1JlZiRjdXJyZW50ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfY2FsbGJhY2tSZWYkY3VycmVudC5jYWxsKGNhbGxiYWNrUmVmLCAuLi5hcmdzKTtcbiAgICAgICAgfVxuICAgICwgW10pO1xufVxuXG5cblxuXG5leHBvcnQgeyRiMWIyMzE0ZjVmOWExZDg0JGV4cG9ydCQyNWJlYzhjNmY1NGVlNzlhIGFzIHVzZUNhbGxiYWNrUmVmfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1vZHVsZS5qcy5tYXBcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/@radix-ui/react-use-callback-ref/dist/index.module.js\n');
              }
            ),
            /***/
            "../../../node_modules/@radix-ui/react-use-controllable-state/dist/index.module.js": (
              /*!*****************************************************************************************!*\
                !*** ../../../node_modules/@radix-ui/react-use-controllable-state/dist/index.module.js ***!
                \*****************************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "useControllableState": () => (/* binding */ $71cd76cc60e0454e$export$6f32135080cb4c3)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @radix-ui/react-use-callback-ref */ "../../../node_modules/@radix-ui/react-use-callback-ref/dist/index.module.js");





function $71cd76cc60e0454e$export$6f32135080cb4c3({ prop: prop , defaultProp: defaultProp , onChange: onChange = ()=>{}  }) {
    const [uncontrolledProp, setUncontrolledProp] = $71cd76cc60e0454e$var$useUncontrolledState({
        defaultProp: defaultProp,
        onChange: onChange
    });
    const isControlled = prop !== undefined;
    const value1 = isControlled ? prop : uncontrolledProp;
    const handleChange = (0,_radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_1__.useCallbackRef)(onChange);
    const setValue = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)((nextValue)=>{
        if (isControlled) {
            const setter = nextValue;
            const value = typeof nextValue === 'function' ? setter(prop) : nextValue;
            if (value !== prop) handleChange(value);
        } else setUncontrolledProp(nextValue);
    }, [
        isControlled,
        prop,
        setUncontrolledProp,
        handleChange
    ]);
    return [
        value1,
        setValue
    ];
}
function $71cd76cc60e0454e$var$useUncontrolledState({ defaultProp: defaultProp , onChange: onChange  }) {
    const uncontrolledState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(defaultProp);
    const [value] = uncontrolledState;
    const prevValueRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(value);
    const handleChange = (0,_radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_1__.useCallbackRef)(onChange);
    (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{
        if (prevValueRef.current !== value) {
            handleChange(value);
            prevValueRef.current = value;
        }
    }, [
        value,
        prevValueRef,
        handleChange
    ]);
    return uncontrolledState;
}





//# sourceMappingURL=index.module.js.map
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC11c2UtY29udHJvbGxhYmxlLXN0YXRlL2Rpc3QvaW5kZXgubW9kdWxlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBNkk7QUFDcEQ7Ozs7QUFJekYsb0RBQW9ELHNFQUFzRTtBQUMxSDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLHlCQUF5QixnRkFBcUI7QUFDOUMscUJBQXFCLGtEQUFrQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzREFBc0QsZ0RBQWdEO0FBQ3RHLDhCQUE4QiwrQ0FBZTtBQUM3QztBQUNBLHlCQUF5Qiw2Q0FBYTtBQUN0Qyx5QkFBeUIsZ0ZBQXFCO0FBQzlDLElBQUksZ0RBQWdCO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFLMEU7QUFDMUUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC11c2UtY29udHJvbGxhYmxlLXN0YXRlL2Rpc3QvaW5kZXgubW9kdWxlLmpzP2VhYTYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt1c2VDYWxsYmFjayBhcyAkYm5QdzkkdXNlQ2FsbGJhY2ssIHVzZVN0YXRlIGFzICRiblB3OSR1c2VTdGF0ZSwgdXNlUmVmIGFzICRiblB3OSR1c2VSZWYsIHVzZUVmZmVjdCBhcyAkYm5QdzkkdXNlRWZmZWN0fSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7dXNlQ2FsbGJhY2tSZWYgYXMgJGJuUHc5JHVzZUNhbGxiYWNrUmVmfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1jYWxsYmFjay1yZWZcIjtcblxuXG5cbmZ1bmN0aW9uICQ3MWNkNzZjYzYwZTA0NTRlJGV4cG9ydCQ2ZjMyMTM1MDgwY2I0YzMoeyBwcm9wOiBwcm9wICwgZGVmYXVsdFByb3A6IGRlZmF1bHRQcm9wICwgb25DaGFuZ2U6IG9uQ2hhbmdlID0gKCk9Pnt9ICB9KSB7XG4gICAgY29uc3QgW3VuY29udHJvbGxlZFByb3AsIHNldFVuY29udHJvbGxlZFByb3BdID0gJDcxY2Q3NmNjNjBlMDQ1NGUkdmFyJHVzZVVuY29udHJvbGxlZFN0YXRlKHtcbiAgICAgICAgZGVmYXVsdFByb3A6IGRlZmF1bHRQcm9wLFxuICAgICAgICBvbkNoYW5nZTogb25DaGFuZ2VcbiAgICB9KTtcbiAgICBjb25zdCBpc0NvbnRyb2xsZWQgPSBwcm9wICE9PSB1bmRlZmluZWQ7XG4gICAgY29uc3QgdmFsdWUxID0gaXNDb250cm9sbGVkID8gcHJvcCA6IHVuY29udHJvbGxlZFByb3A7XG4gICAgY29uc3QgaGFuZGxlQ2hhbmdlID0gJGJuUHc5JHVzZUNhbGxiYWNrUmVmKG9uQ2hhbmdlKTtcbiAgICBjb25zdCBzZXRWYWx1ZSA9ICRiblB3OSR1c2VDYWxsYmFjaygobmV4dFZhbHVlKT0+e1xuICAgICAgICBpZiAoaXNDb250cm9sbGVkKSB7XG4gICAgICAgICAgICBjb25zdCBzZXR0ZXIgPSBuZXh0VmFsdWU7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHR5cGVvZiBuZXh0VmFsdWUgPT09ICdmdW5jdGlvbicgPyBzZXR0ZXIocHJvcCkgOiBuZXh0VmFsdWU7XG4gICAgICAgICAgICBpZiAodmFsdWUgIT09IHByb3ApIGhhbmRsZUNoYW5nZSh2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSBzZXRVbmNvbnRyb2xsZWRQcm9wKG5leHRWYWx1ZSk7XG4gICAgfSwgW1xuICAgICAgICBpc0NvbnRyb2xsZWQsXG4gICAgICAgIHByb3AsXG4gICAgICAgIHNldFVuY29udHJvbGxlZFByb3AsXG4gICAgICAgIGhhbmRsZUNoYW5nZVxuICAgIF0pO1xuICAgIHJldHVybiBbXG4gICAgICAgIHZhbHVlMSxcbiAgICAgICAgc2V0VmFsdWVcbiAgICBdO1xufVxuZnVuY3Rpb24gJDcxY2Q3NmNjNjBlMDQ1NGUkdmFyJHVzZVVuY29udHJvbGxlZFN0YXRlKHsgZGVmYXVsdFByb3A6IGRlZmF1bHRQcm9wICwgb25DaGFuZ2U6IG9uQ2hhbmdlICB9KSB7XG4gICAgY29uc3QgdW5jb250cm9sbGVkU3RhdGUgPSAkYm5QdzkkdXNlU3RhdGUoZGVmYXVsdFByb3ApO1xuICAgIGNvbnN0IFt2YWx1ZV0gPSB1bmNvbnRyb2xsZWRTdGF0ZTtcbiAgICBjb25zdCBwcmV2VmFsdWVSZWYgPSAkYm5QdzkkdXNlUmVmKHZhbHVlKTtcbiAgICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAkYm5QdzkkdXNlQ2FsbGJhY2tSZWYob25DaGFuZ2UpO1xuICAgICRiblB3OSR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgaWYgKHByZXZWYWx1ZVJlZi5jdXJyZW50ICE9PSB2YWx1ZSkge1xuICAgICAgICAgICAgaGFuZGxlQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgICAgIHByZXZWYWx1ZVJlZi5jdXJyZW50ID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIHZhbHVlLFxuICAgICAgICBwcmV2VmFsdWVSZWYsXG4gICAgICAgIGhhbmRsZUNoYW5nZVxuICAgIF0pO1xuICAgIHJldHVybiB1bmNvbnRyb2xsZWRTdGF0ZTtcbn1cblxuXG5cblxuZXhwb3J0IHskNzFjZDc2Y2M2MGUwNDU0ZSRleHBvcnQkNmYzMjEzNTA4MGNiNGMzIGFzIHVzZUNvbnRyb2xsYWJsZVN0YXRlfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1vZHVsZS5qcy5tYXBcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==
//# sourceURL=webpack-internal:///../../../node_modules/@radix-ui/react-use-controllable-state/dist/index.module.js
`);
              }
            ),
            /***/
            "../../../node_modules/@radix-ui/react-use-escape-keydown/dist/index.module.js": (
              /*!*************************************************************************************!*\
                !*** ../../../node_modules/@radix-ui/react-use-escape-keydown/dist/index.module.js ***!
                \*************************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "useEscapeKeydown": () => (/* binding */ $addc16e1bbe58fd0$export$3a72a57244d6e765)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @radix-ui/react-use-callback-ref */ "../../../node_modules/@radix-ui/react-use-callback-ref/dist/index.module.js");





/**
 * Listens for when the escape key is down
 */ function $addc16e1bbe58fd0$export$3a72a57244d6e765(onEscapeKeyDownProp, ownerDocument = globalThis === null || globalThis === void 0 ? void 0 : globalThis.document) {
    const onEscapeKeyDown = (0,_radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_1__.useCallbackRef)(onEscapeKeyDownProp);
    (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{
        const handleKeyDown = (event)=>{
            if (event.key === 'Escape') onEscapeKeyDown(event);
        };
        ownerDocument.addEventListener('keydown', handleKeyDown);
        return ()=>ownerDocument.removeEventListener('keydown', handleKeyDown)
        ;
    }, [
        onEscapeKeyDown,
        ownerDocument
    ]);
}





//# sourceMappingURL=index.module.js.map
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC11c2UtZXNjYXBlLWtleWRvd24vZGlzdC9pbmRleC5tb2R1bGUuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFvRDtBQUNxQzs7OztBQUl6RjtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsZ0ZBQXFCO0FBQ2pELElBQUksZ0RBQWdCO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFLdUU7QUFDdkUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC11c2UtZXNjYXBlLWtleWRvd24vZGlzdC9pbmRleC5tb2R1bGUuanM/MjcyNyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3VzZUVmZmVjdCBhcyAkaFBTUTUkdXNlRWZmZWN0fSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7dXNlQ2FsbGJhY2tSZWYgYXMgJGhQU1E1JHVzZUNhbGxiYWNrUmVmfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1jYWxsYmFjay1yZWZcIjtcblxuXG5cbi8qKlxuICogTGlzdGVucyBmb3Igd2hlbiB0aGUgZXNjYXBlIGtleSBpcyBkb3duXG4gKi8gZnVuY3Rpb24gJGFkZGMxNmUxYmJlNThmZDAkZXhwb3J0JDNhNzJhNTcyNDRkNmU3NjUob25Fc2NhcGVLZXlEb3duUHJvcCwgb3duZXJEb2N1bWVudCA9IGdsb2JhbFRoaXMgPT09IG51bGwgfHwgZ2xvYmFsVGhpcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogZ2xvYmFsVGhpcy5kb2N1bWVudCkge1xuICAgIGNvbnN0IG9uRXNjYXBlS2V5RG93biA9ICRoUFNRNSR1c2VDYWxsYmFja1JlZihvbkVzY2FwZUtleURvd25Qcm9wKTtcbiAgICAkaFBTUTUkdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGNvbnN0IGhhbmRsZUtleURvd24gPSAoZXZlbnQpPT57XG4gICAgICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykgb25Fc2NhcGVLZXlEb3duKGV2ZW50KTtcbiAgICAgICAgfTtcbiAgICAgICAgb3duZXJEb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgaGFuZGxlS2V5RG93bik7XG4gICAgICAgIHJldHVybiAoKT0+b3duZXJEb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgaGFuZGxlS2V5RG93bilcbiAgICAgICAgO1xuICAgIH0sIFtcbiAgICAgICAgb25Fc2NhcGVLZXlEb3duLFxuICAgICAgICBvd25lckRvY3VtZW50XG4gICAgXSk7XG59XG5cblxuXG5cbmV4cG9ydCB7JGFkZGMxNmUxYmJlNThmZDAkZXhwb3J0JDNhNzJhNTcyNDRkNmU3NjUgYXMgdXNlRXNjYXBlS2V5ZG93bn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tb2R1bGUuanMubWFwXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=
//# sourceURL=webpack-internal:///../../../node_modules/@radix-ui/react-use-escape-keydown/dist/index.module.js
`);
              }
            ),
            /***/
            "../../../node_modules/@radix-ui/react-use-layout-effect/dist/index.module.js": (
              /*!************************************************************************************!*\
                !*** ../../../node_modules/@radix-ui/react-use-layout-effect/dist/index.module.js ***!
                \************************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "useLayoutEffect": () => (/* binding */ $9f79659886946c16$export$e5c5a5f917a5871c)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n\n\n\n/**\n * On the server, React emits a warning when calling `useLayoutEffect`.\n * This is because neither `useLayoutEffect` nor `useEffect` run on the server.\n * We use this safe version which suppresses the warning by replacing it with a noop on the server.\n *\n * See: https://reactjs.org/docs/hooks-reference.html#uselayouteffect\n */ const $9f79659886946c16$export$e5c5a5f917a5871c = Boolean(globalThis === null || globalThis === void 0 ? void 0 : globalThis.document) ? react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect : ()=>{};\n\n\n\n\n\n//# sourceMappingURL=index.module.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC11c2UtbGF5b3V0LWVmZmVjdC9kaXN0L2luZGV4Lm1vZHVsZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBZ0U7OztBQUdoRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2SUFBNkksa0RBQXNCOzs7OztBQUs3RjtBQUN0RSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXVzZS1sYXlvdXQtZWZmZWN0L2Rpc3QvaW5kZXgubW9kdWxlLmpzPzQwNmQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt1c2VMYXlvdXRFZmZlY3QgYXMgJGR4bHdIJHVzZUxheW91dEVmZmVjdH0gZnJvbSBcInJlYWN0XCI7XG5cblxuLyoqXG4gKiBPbiB0aGUgc2VydmVyLCBSZWFjdCBlbWl0cyBhIHdhcm5pbmcgd2hlbiBjYWxsaW5nIGB1c2VMYXlvdXRFZmZlY3RgLlxuICogVGhpcyBpcyBiZWNhdXNlIG5laXRoZXIgYHVzZUxheW91dEVmZmVjdGAgbm9yIGB1c2VFZmZlY3RgIHJ1biBvbiB0aGUgc2VydmVyLlxuICogV2UgdXNlIHRoaXMgc2FmZSB2ZXJzaW9uIHdoaWNoIHN1cHByZXNzZXMgdGhlIHdhcm5pbmcgYnkgcmVwbGFjaW5nIGl0IHdpdGggYSBub29wIG9uIHRoZSBzZXJ2ZXIuXG4gKlxuICogU2VlOiBodHRwczovL3JlYWN0anMub3JnL2RvY3MvaG9va3MtcmVmZXJlbmNlLmh0bWwjdXNlbGF5b3V0ZWZmZWN0XG4gKi8gY29uc3QgJDlmNzk2NTk4ODY5NDZjMTYkZXhwb3J0JGU1YzVhNWY5MTdhNTg3MWMgPSBCb29sZWFuKGdsb2JhbFRoaXMgPT09IG51bGwgfHwgZ2xvYmFsVGhpcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogZ2xvYmFsVGhpcy5kb2N1bWVudCkgPyAkZHhsd0gkdXNlTGF5b3V0RWZmZWN0IDogKCk9Pnt9O1xuXG5cblxuXG5leHBvcnQgeyQ5Zjc5NjU5ODg2OTQ2YzE2JGV4cG9ydCRlNWM1YTVmOTE3YTU4NzFjIGFzIHVzZUxheW91dEVmZmVjdH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tb2R1bGUuanMubWFwXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/@radix-ui/react-use-layout-effect/dist/index.module.js\n');
              }
            ),
            /***/
            "../../../node_modules/@radix-ui/react-use-size/dist/index.module.js": (
              /*!***************************************************************************!*\
                !*** ../../../node_modules/@radix-ui/react-use-size/dist/index.module.js ***!
                \***************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useSize\": () => (/* binding */ $db6c3485150b8e66$export$1ab7ae714698c4b8)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _radix_ui_react_use_layout_effect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @radix-ui/react-use-layout-effect */ \"../../../node_modules/@radix-ui/react-use-layout-effect/dist/index.module.js\");\n\n\n\n\n\nfunction $db6c3485150b8e66$export$1ab7ae714698c4b8(element) {\n    const [size, setSize] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(undefined);\n    (0,_radix_ui_react_use_layout_effect__WEBPACK_IMPORTED_MODULE_1__.useLayoutEffect)(()=>{\n        if (element) {\n            // provide size as early as possible\n            setSize({\n                width: element.offsetWidth,\n                height: element.offsetHeight\n            });\n            const resizeObserver = new ResizeObserver((entries)=>{\n                if (!Array.isArray(entries)) return;\n                 // Since we only observe the one element, we don't need to loop over the\n                // array\n                if (!entries.length) return;\n                const entry = entries[0];\n                let width;\n                let height;\n                if ('borderBoxSize' in entry) {\n                    const borderSizeEntry = entry['borderBoxSize']; // iron out differences between browsers\n                    const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry;\n                    width = borderSize['inlineSize'];\n                    height = borderSize['blockSize'];\n                } else {\n                    // for browsers that don't support `borderBoxSize`\n                    // we calculate it ourselves to get the correct border box.\n                    width = element.offsetWidth;\n                    height = element.offsetHeight;\n                }\n                setSize({\n                    width: width,\n                    height: height\n                });\n            });\n            resizeObserver.observe(element, {\n                box: 'border-box'\n            });\n            return ()=>resizeObserver.unobserve(element)\n            ;\n        } else // We only want to reset to `undefined` when the element becomes `null`,\n        // not if it changes to another element.\n        setSize(undefined);\n    }, [\n        element\n    ]);\n    return size;\n}\n\n\n\n\n\n//# sourceMappingURL=index.module.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC11c2Utc2l6ZS9kaXN0L2luZGV4Lm1vZHVsZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQWtEO0FBQzBDOzs7O0FBSTVGO0FBQ0EsNEJBQTRCLCtDQUFlO0FBQzNDLElBQUksa0ZBQXNCO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0VBQW9FO0FBQ3BFO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCLGFBQWE7QUFDYjtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFLOEQ7QUFDOUQiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC11c2Utc2l6ZS9kaXN0L2luZGV4Lm1vZHVsZS5qcz84M2QyIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7dXNlU3RhdGUgYXMgJDlneUdSJHVzZVN0YXRlfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7dXNlTGF5b3V0RWZmZWN0IGFzICQ5Z3lHUiR1c2VMYXlvdXRFZmZlY3R9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLWxheW91dC1lZmZlY3RcIjtcblxuXG5cbmZ1bmN0aW9uICRkYjZjMzQ4NTE1MGI4ZTY2JGV4cG9ydCQxYWI3YWU3MTQ2OThjNGI4KGVsZW1lbnQpIHtcbiAgICBjb25zdCBbc2l6ZSwgc2V0U2l6ZV0gPSAkOWd5R1IkdXNlU3RhdGUodW5kZWZpbmVkKTtcbiAgICAkOWd5R1IkdXNlTGF5b3V0RWZmZWN0KCgpPT57XG4gICAgICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgICAgICAvLyBwcm92aWRlIHNpemUgYXMgZWFybHkgYXMgcG9zc2libGVcbiAgICAgICAgICAgIHNldFNpemUoe1xuICAgICAgICAgICAgICAgIHdpZHRoOiBlbGVtZW50Lm9mZnNldFdpZHRoLFxuICAgICAgICAgICAgICAgIGhlaWdodDogZWxlbWVudC5vZmZzZXRIZWlnaHRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKGVudHJpZXMpPT57XG4gICAgICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGVudHJpZXMpKSByZXR1cm47XG4gICAgICAgICAgICAgICAgIC8vIFNpbmNlIHdlIG9ubHkgb2JzZXJ2ZSB0aGUgb25lIGVsZW1lbnQsIHdlIGRvbid0IG5lZWQgdG8gbG9vcCBvdmVyIHRoZVxuICAgICAgICAgICAgICAgIC8vIGFycmF5XG4gICAgICAgICAgICAgICAgaWYgKCFlbnRyaWVzLmxlbmd0aCkgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGNvbnN0IGVudHJ5ID0gZW50cmllc1swXTtcbiAgICAgICAgICAgICAgICBsZXQgd2lkdGg7XG4gICAgICAgICAgICAgICAgbGV0IGhlaWdodDtcbiAgICAgICAgICAgICAgICBpZiAoJ2JvcmRlckJveFNpemUnIGluIGVudHJ5KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvcmRlclNpemVFbnRyeSA9IGVudHJ5Wydib3JkZXJCb3hTaXplJ107IC8vIGlyb24gb3V0IGRpZmZlcmVuY2VzIGJldHdlZW4gYnJvd3NlcnNcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9yZGVyU2l6ZSA9IEFycmF5LmlzQXJyYXkoYm9yZGVyU2l6ZUVudHJ5KSA/IGJvcmRlclNpemVFbnRyeVswXSA6IGJvcmRlclNpemVFbnRyeTtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGggPSBib3JkZXJTaXplWydpbmxpbmVTaXplJ107XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodCA9IGJvcmRlclNpemVbJ2Jsb2NrU2l6ZSddO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGZvciBicm93c2VycyB0aGF0IGRvbid0IHN1cHBvcnQgYGJvcmRlckJveFNpemVgXG4gICAgICAgICAgICAgICAgICAgIC8vIHdlIGNhbGN1bGF0ZSBpdCBvdXJzZWx2ZXMgdG8gZ2V0IHRoZSBjb3JyZWN0IGJvcmRlciBib3guXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoID0gZWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0ID0gZWxlbWVudC5vZmZzZXRIZWlnaHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNldFNpemUoe1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJlc2l6ZU9ic2VydmVyLm9ic2VydmUoZWxlbWVudCwge1xuICAgICAgICAgICAgICAgIGJveDogJ2JvcmRlci1ib3gnXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiAoKT0+cmVzaXplT2JzZXJ2ZXIudW5vYnNlcnZlKGVsZW1lbnQpXG4gICAgICAgICAgICA7XG4gICAgICAgIH0gZWxzZSAvLyBXZSBvbmx5IHdhbnQgdG8gcmVzZXQgdG8gYHVuZGVmaW5lZGAgd2hlbiB0aGUgZWxlbWVudCBiZWNvbWVzIGBudWxsYCxcbiAgICAgICAgLy8gbm90IGlmIGl0IGNoYW5nZXMgdG8gYW5vdGhlciBlbGVtZW50LlxuICAgICAgICBzZXRTaXplKHVuZGVmaW5lZCk7XG4gICAgfSwgW1xuICAgICAgICBlbGVtZW50XG4gICAgXSk7XG4gICAgcmV0dXJuIHNpemU7XG59XG5cblxuXG5cbmV4cG9ydCB7JGRiNmMzNDg1MTUwYjhlNjYkZXhwb3J0JDFhYjdhZTcxNDY5OGM0YjggYXMgdXNlU2l6ZX07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tb2R1bGUuanMubWFwXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/@radix-ui/react-use-size/dist/index.module.js\n");
              }
            ),
            /***/
            "../../../node_modules/aria-hidden/dist/es2015/index.js": (
              /*!**************************************************************!*\
                !*** ../../../node_modules/aria-hidden/dist/es2015/index.js ***!
                \**************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "hideOthers": () => (/* binding */ hideOthers),
/* harmony export */   "inertOthers": () => (/* binding */ inertOthers),
/* harmony export */   "supportsInert": () => (/* binding */ supportsInert),
/* harmony export */   "suppressOthers": () => (/* binding */ suppressOthers)
/* harmony export */ });
var getDefaultParent = function (originalTarget) {
    if (typeof document === 'undefined') {
        return null;
    }
    var sampleTarget = Array.isArray(originalTarget) ? originalTarget[0] : originalTarget;
    return sampleTarget.ownerDocument.body;
};
var counterMap = new WeakMap();
var uncontrolledNodes = new WeakMap();
var markerMap = {};
var lockCount = 0;
var unwrapHost = function (node) {
    return node && (node.host || unwrapHost(node.parentNode));
};
var correctTargets = function (parent, targets) {
    return targets
        .map(function (target) {
        if (parent.contains(target)) {
            return target;
        }
        var correctedTarget = unwrapHost(target);
        if (correctedTarget && parent.contains(correctedTarget)) {
            return correctedTarget;
        }
        console.error('aria-hidden', target, 'in not contained inside', parent, '. Doing nothing');
        return null;
    })
        .filter(function (x) { return Boolean(x); });
};
/**
 * Marks everything except given node(or nodes) as aria-hidden
 * @param {Element | Element[]} originalTarget - elements to keep on the page
 * @param [parentNode] - top element, defaults to document.body
 * @param {String} [markerName] - a special attribute to mark every node
 * @param {String} [controlAttribute] - html Attribute to control
 * @return {Undo} undo command
 */
var applyAttributeToOthers = function (originalTarget, parentNode, markerName, controlAttribute) {
    var targets = correctTargets(parentNode, Array.isArray(originalTarget) ? originalTarget : [originalTarget]);
    if (!markerMap[markerName]) {
        markerMap[markerName] = new WeakMap();
    }
    var markerCounter = markerMap[markerName];
    var hiddenNodes = [];
    var elementsToKeep = new Set();
    var elementsToStop = new Set(targets);
    var keep = function (el) {
        if (!el || elementsToKeep.has(el)) {
            return;
        }
        elementsToKeep.add(el);
        keep(el.parentNode);
    };
    targets.forEach(keep);
    var deep = function (parent) {
        if (!parent || elementsToStop.has(parent)) {
            return;
        }
        Array.prototype.forEach.call(parent.children, function (node) {
            if (elementsToKeep.has(node)) {
                deep(node);
            }
            else {
                var attr = node.getAttribute(controlAttribute);
                var alreadyHidden = attr !== null && attr !== 'false';
                var counterValue = (counterMap.get(node) || 0) + 1;
                var markerValue = (markerCounter.get(node) || 0) + 1;
                counterMap.set(node, counterValue);
                markerCounter.set(node, markerValue);
                hiddenNodes.push(node);
                if (counterValue === 1 && alreadyHidden) {
                    uncontrolledNodes.set(node, true);
                }
                if (markerValue === 1) {
                    node.setAttribute(markerName, 'true');
                }
                if (!alreadyHidden) {
                    node.setAttribute(controlAttribute, 'true');
                }
            }
        });
    };
    deep(parentNode);
    elementsToKeep.clear();
    lockCount++;
    return function () {
        hiddenNodes.forEach(function (node) {
            var counterValue = counterMap.get(node) - 1;
            var markerValue = markerCounter.get(node) - 1;
            counterMap.set(node, counterValue);
            markerCounter.set(node, markerValue);
            if (!counterValue) {
                if (!uncontrolledNodes.has(node)) {
                    node.removeAttribute(controlAttribute);
                }
                uncontrolledNodes.delete(node);
            }
            if (!markerValue) {
                node.removeAttribute(markerName);
            }
        });
        lockCount--;
        if (!lockCount) {
            // clear
            counterMap = new WeakMap();
            counterMap = new WeakMap();
            uncontrolledNodes = new WeakMap();
            markerMap = {};
        }
    };
};
/**
 * Marks everything except given node(or nodes) as aria-hidden
 * @param {Element | Element[]} originalTarget - elements to keep on the page
 * @param [parentNode] - top element, defaults to document.body
 * @param {String} [markerName] - a special attribute to mark every node
 * @return {Undo} undo command
 */
var hideOthers = function (originalTarget, parentNode, markerName) {
    if (markerName === void 0) { markerName = 'data-aria-hidden'; }
    var targets = Array.from(Array.isArray(originalTarget) ? originalTarget : [originalTarget]);
    var activeParentNode = parentNode || getDefaultParent(originalTarget);
    if (!activeParentNode) {
        return function () { return null; };
    }
    // we should not hide ariaLive elements - https://github.com/theKashey/aria-hidden/issues/10
    targets.push.apply(targets, Array.from(activeParentNode.querySelectorAll('[aria-live]')));
    return applyAttributeToOthers(targets, activeParentNode, markerName, 'aria-hidden');
};
/**
 * Marks everything except given node(or nodes) as inert
 * @param {Element | Element[]} originalTarget - elements to keep on the page
 * @param [parentNode] - top element, defaults to document.body
 * @param {String} [markerName] - a special attribute to mark every node
 * @return {Undo} undo command
 */
var inertOthers = function (originalTarget, parentNode, markerName) {
    if (markerName === void 0) { markerName = 'data-inert-ed'; }
    var activeParentNode = parentNode || getDefaultParent(originalTarget);
    if (!activeParentNode) {
        return function () { return null; };
    }
    return applyAttributeToOthers(originalTarget, activeParentNode, markerName, 'inert');
};
/**
 * @returns if current browser supports inert
 */
var supportsInert = function () {
    return typeof HTMLElement !== 'undefined' && HTMLElement.prototype.hasOwnProperty('inert');
};
/**
 * Automatic function to "suppress" DOM elements - _hide_ or _inert_ in the best possible way
 * @param {Element | Element[]} originalTarget - elements to keep on the page
 * @param [parentNode] - top element, defaults to document.body
 * @param {String} [markerName] - a special attribute to mark every node
 * @return {Undo} undo command
 */
var suppressOthers = function (originalTarget, parentNode, markerName) {
    if (markerName === void 0) { markerName = 'data-suppressed'; }
    return (supportsInert() ? inertOthers : hideOthers)(originalTarget, parentNode, markerName);
};
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 10652 characters]
//# sourceURL=webpack-internal:///../../../node_modules/aria-hidden/dist/es2015/index.js
`);
              }
            ),
            /***/
            "../../../node_modules/clsx/dist/clsx.m.js": (
              /*!*************************************************!*\
                !*** ../../../node_modules/clsx/dist/clsx.m.js ***!
                \*************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
function toVal(mix) {
	var k, y, str='';

	if (typeof mix === 'string' || typeof mix === 'number') {
		str += mix;
	} else if (typeof mix === 'object') {
		if (Array.isArray(mix)) {
			for (k=0; k < mix.length; k++) {
				if (mix[k]) {
					if (y = toVal(mix[k])) {
						str && (str += ' ');
						str += y;
					}
				}
			}
		} else {
			for (k in mix) {
				if (mix[k]) {
					str && (str += ' ');
					str += k;
				}
			}
		}
	}

	return str;
}

/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {
	var i=0, tmp, x, str='';
	while (i < arguments.length) {
		if (tmp = arguments[i++]) {
			if (x = toVal(tmp)) {
				str && (str += ' ');
				str += x
			}
		}
	}
	return str;
}
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nsc3gvZGlzdC9jbHN4Lm0uanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLGFBQWEsZ0JBQWdCO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSw2QkFBZSxzQ0FBWTtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jbHN4L2Rpc3QvY2xzeC5tLmpzPzMwZjYiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gdG9WYWwobWl4KSB7XG5cdHZhciBrLCB5LCBzdHI9Jyc7XG5cblx0aWYgKHR5cGVvZiBtaXggPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBtaXggPT09ICdudW1iZXInKSB7XG5cdFx0c3RyICs9IG1peDtcblx0fSBlbHNlIGlmICh0eXBlb2YgbWl4ID09PSAnb2JqZWN0Jykge1xuXHRcdGlmIChBcnJheS5pc0FycmF5KG1peCkpIHtcblx0XHRcdGZvciAoaz0wOyBrIDwgbWl4Lmxlbmd0aDsgaysrKSB7XG5cdFx0XHRcdGlmIChtaXhba10pIHtcblx0XHRcdFx0XHRpZiAoeSA9IHRvVmFsKG1peFtrXSkpIHtcblx0XHRcdFx0XHRcdHN0ciAmJiAoc3RyICs9ICcgJyk7XG5cdFx0XHRcdFx0XHRzdHIgKz0geTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Zm9yIChrIGluIG1peCkge1xuXHRcdFx0XHRpZiAobWl4W2tdKSB7XG5cdFx0XHRcdFx0c3RyICYmIChzdHIgKz0gJyAnKTtcblx0XHRcdFx0XHRzdHIgKz0gaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiBzdHI7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uICgpIHtcblx0dmFyIGk9MCwgdG1wLCB4LCBzdHI9Jyc7XG5cdHdoaWxlIChpIDwgYXJndW1lbnRzLmxlbmd0aCkge1xuXHRcdGlmICh0bXAgPSBhcmd1bWVudHNbaSsrXSkge1xuXHRcdFx0aWYgKHggPSB0b1ZhbCh0bXApKSB7XG5cdFx0XHRcdHN0ciAmJiAoc3RyICs9ICcgJyk7XG5cdFx0XHRcdHN0ciArPSB4XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdHJldHVybiBzdHI7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=
//# sourceURL=webpack-internal:///../../../node_modules/clsx/dist/clsx.m.js
`);
              }
            ),
            /***/
            "../../../node_modules/crc-32/crc32.js": (
              /*!*********************************************!*\
                !*** ../../../node_modules/crc-32/crc32.js ***!
                \*********************************************/
              /***/
              (__unused_webpack_module, exports) => {
                eval("/* crc32.js (C) 2014-2015 SheetJS -- http://sheetjs.com */\n/* vim: set ts=2: */\nvar CRC32;\n(function (factory) {\n	if(typeof DO_NOT_EXPORT_CRC === 'undefined') {\n		if(true) {\n			factory(exports);\n		} else {}\n	} else {\n		factory(CRC32 = {});\n	}\n}(function(CRC32) {\nCRC32.version = '0.3.0';\n/* see perf/crc32table.js */\nfunction signed_crc_table() {\n	var c = 0, table = new Array(256);\n\n	for(var n =0; n != 256; ++n){\n		c = n;\n		c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n		c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n		c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n		c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n		c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n		c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n		c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n		c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n		table[n] = c;\n	}\n\n	return typeof Int32Array !== 'undefined' ? new Int32Array(table) : table;\n}\n\nvar table = signed_crc_table();\n/* charCodeAt is the best approach for binary strings */\nvar use_buffer = typeof Buffer !== 'undefined';\nfunction crc32_bstr(bstr) {\n	if(bstr.length > 32768) if(use_buffer) return crc32_buf_8(new Buffer(bstr));\n	var crc = -1, L = bstr.length - 1;\n	for(var i = 0; i < L;) {\n		crc =  table[(crc ^ bstr.charCodeAt(i++)) & 0xFF] ^ (crc >>> 8);\n		crc =  table[(crc ^ bstr.charCodeAt(i++)) & 0xFF] ^ (crc >>> 8);\n	}\n	if(i === L) crc = (crc >>> 8) ^ table[(crc ^ bstr.charCodeAt(i)) & 0xFF];\n	return crc ^ -1;\n}\n\nfunction crc32_buf(buf) {\n	if(buf.length > 10000) return crc32_buf_8(buf);\n	for(var crc = -1, i = 0, L=buf.length-3; i < L;) {\n		crc = (crc >>> 8) ^ table[(crc^buf[i++])&0xFF];\n		crc = (crc >>> 8) ^ table[(crc^buf[i++])&0xFF];\n		crc = (crc >>> 8) ^ table[(crc^buf[i++])&0xFF];\n		crc = (crc >>> 8) ^ table[(crc^buf[i++])&0xFF];\n	}\n	while(i < L+3) crc = (crc >>> 8) ^ table[(crc^buf[i++])&0xFF];\n	return crc ^ -1;\n}\n\nfunction crc32_buf_8(buf) {\n	for(var crc = -1, i = 0, L=buf.length-7; i < L;) {\n		crc = (crc >>> 8) ^ table[(crc^buf[i++])&0xFF];\n		crc = (crc >>> 8) ^ table[(crc^buf[i++])&0xFF];\n		crc = (crc >>> 8) ^ table[(crc^buf[i++])&0xFF];\n		crc = (crc >>> 8) ^ table[(crc^buf[i++])&0xFF];\n		crc = (crc >>> 8) ^ table[(crc^buf[i++])&0xFF];\n		crc = (crc >>> 8) ^ table[(crc^buf[i++])&0xFF];\n		crc = (crc >>> 8) ^ table[(crc^buf[i++])&0xFF];\n		crc = (crc >>> 8) ^ table[(crc^buf[i++])&0xFF];\n	}\n	while(i < L+7) crc = (crc >>> 8) ^ table[(crc^buf[i++])&0xFF];\n	return crc ^ -1;\n}\n\n/* much much faster to intertwine utf8 and crc */\nfunction crc32_str(str) {\n	for(var crc = -1, i = 0, L=str.length, c, d; i < L;) {\n		c = str.charCodeAt(i++);\n		if(c < 0x80) {\n			crc = (crc >>> 8) ^ table[(crc ^ c) & 0xFF];\n		} else if(c < 0x800) {\n			crc = (crc >>> 8) ^ table[(crc ^ (192|((c>>6)&31))) & 0xFF];\n			crc = (crc >>> 8) ^ table[(crc ^ (128|(c&63))) & 0xFF];\n		} else if(c >= 0xD800 && c < 0xE000) {\n			c = (c&1023)+64; d = str.charCodeAt(i++) & 1023;\n			crc = (crc >>> 8) ^ table[(crc ^ (240|((c>>8)&7))) & 0xFF];\n			crc = (crc >>> 8) ^ table[(crc ^ (128|((c>>2)&63))) & 0xFF];\n			crc = (crc >>> 8) ^ table[(crc ^ (128|((d>>6)&15)|(c&3))) & 0xFF];\n			crc = (crc >>> 8) ^ table[(crc ^ (128|(d&63))) & 0xFF];\n		} else {\n			crc = (crc >>> 8) ^ table[(crc ^ (224|((c>>12)&15))) & 0xFF];\n			crc = (crc >>> 8) ^ table[(crc ^ (128|((c>>6)&63))) & 0xFF];\n			crc = (crc >>> 8) ^ table[(crc ^ (128|(c&63))) & 0xFF];\n		}\n	}\n	return crc ^ -1;\n}\nCRC32.table = table;\nCRC32.bstr = crc32_bstr;\nCRC32.buf = crc32_buf;\nCRC32.str = crc32_str;\n}));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6396 characters]\n//# sourceURL=webpack-internal:///../../../node_modules/crc-32/crc32.js\n");
              }
            ),
            /***/
            "../../../node_modules/get-nonce/dist/es2015/index.js": (
              /*!************************************************************!*\
                !*** ../../../node_modules/get-nonce/dist/es2015/index.js ***!
                \************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "getNonce": () => (/* binding */ getNonce),\n/* harmony export */   "setNonce": () => (/* binding */ setNonce)\n/* harmony export */ });\nvar currentNonce;\nvar setNonce = function (nonce) {\n    currentNonce = nonce;\n};\nvar getNonce = function () {\n    if (currentNonce) {\n        return currentNonce;\n    }\n    if (true) {\n        return __webpack_require__.nc;\n    }\n    return undefined;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2dldC1ub25jZS9kaXN0L2VzMjAxNS9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFBO0FBQ087QUFDUDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQSxRQUFRLElBQXdDO0FBQ2hELGVBQWUsc0JBQWlCO0FBQ2hDO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvZ2V0LW5vbmNlL2Rpc3QvZXMyMDE1L2luZGV4LmpzPzJmYjciXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGN1cnJlbnROb25jZTtcbmV4cG9ydCB2YXIgc2V0Tm9uY2UgPSBmdW5jdGlvbiAobm9uY2UpIHtcbiAgICBjdXJyZW50Tm9uY2UgPSBub25jZTtcbn07XG5leHBvcnQgdmFyIGdldE5vbmNlID0gZnVuY3Rpb24gKCkge1xuICAgIGlmIChjdXJyZW50Tm9uY2UpIHtcbiAgICAgICAgcmV0dXJuIGN1cnJlbnROb25jZTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBfX3dlYnBhY2tfbm9uY2VfXyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIF9fd2VicGFja19ub25jZV9fO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/get-nonce/dist/es2015/index.js\n');
              }
            ),
            /***/
            "../../../node_modules/lodash.throttle/index.js": (
              /*!******************************************************!*\
                !*** ../../../node_modules/lodash.throttle/index.js ***!
                \******************************************************/
              /***/
              (module, __unused_webpack_exports, __webpack_require__) => {
                eval("/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof __webpack_require__.g == 'object' && __webpack_require__.g && __webpack_require__.g.Object === Object && __webpack_require__.g;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n *   console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n  return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n *  Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n *  The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n *   'leading': true,\n *   'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n  var lastArgs,\n      lastThis,\n      maxWait,\n      result,\n      timerId,\n      lastCallTime,\n      lastInvokeTime = 0,\n      leading = false,\n      maxing = false,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  wait = toNumber(wait) || 0;\n  if (isObject(options)) {\n    leading = !!options.leading;\n    maxing = 'maxWait' in options;\n    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n\n  function invokeFunc(time) {\n    var args = lastArgs,\n        thisArg = lastThis;\n\n    lastArgs = lastThis = undefined;\n    lastInvokeTime = time;\n    result = func.apply(thisArg, args);\n    return result;\n  }\n\n  function leadingEdge(time) {\n    // Reset any `maxWait` timer.\n    lastInvokeTime = time;\n    // Start the timer for the trailing edge.\n    timerId = setTimeout(timerExpired, wait);\n    // Invoke the leading edge.\n    return leading ? invokeFunc(time) : result;\n  }\n\n  function remainingWait(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime,\n        result = wait - timeSinceLastCall;\n\n    return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n  }\n\n  function shouldInvoke(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime;\n\n    // Either this is the first call, activity has stopped and we're at the\n    // trailing edge, the system time has gone backwards and we're treating\n    // it as the trailing edge, or we've hit the `maxWait` limit.\n    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n  }\n\n  function timerExpired() {\n    var time = now();\n    if (shouldInvoke(time)) {\n      return trailingEdge(time);\n    }\n    // Restart the timer.\n    timerId = setTimeout(timerExpired, remainingWait(time));\n  }\n\n  function trailingEdge(time) {\n    timerId = undefined;\n\n    // Only invoke if we have `lastArgs` which means `func` has been\n    // debounced at least once.\n    if (trailing && lastArgs) {\n      return invokeFunc(time);\n    }\n    lastArgs = lastThis = undefined;\n    return result;\n  }\n\n  function cancel() {\n    if (timerId !== undefined) {\n      clearTimeout(timerId);\n    }\n    lastInvokeTime = 0;\n    lastArgs = lastCallTime = lastThis = timerId = undefined;\n  }\n\n  function flush() {\n    return timerId === undefined ? result : trailingEdge(now());\n  }\n\n  function debounced() {\n    var time = now(),\n        isInvoking = shouldInvoke(time);\n\n    lastArgs = arguments;\n    lastThis = this;\n    lastCallTime = time;\n\n    if (isInvoking) {\n      if (timerId === undefined) {\n        return leadingEdge(lastCallTime);\n      }\n      if (maxing) {\n        // Handle invocations in a tight loop.\n        timerId = setTimeout(timerExpired, wait);\n        return invokeFunc(lastCallTime);\n      }\n    }\n    if (timerId === undefined) {\n      timerId = setTimeout(timerExpired, wait);\n    }\n    return result;\n  }\n  debounced.cancel = cancel;\n  debounced.flush = flush;\n  return debounced;\n}\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n *  Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n  var leading = true,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  if (isObject(options)) {\n    leading = 'leading' in options ? !!options.leading : leading;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n  return debounce(func, wait, {\n    'leading': leading,\n    'maxWait': wait,\n    'trailing': trailing\n  });\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = value.replace(reTrim, '');\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = throttle;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 21824 characters]\n//# sourceURL=webpack-internal:///../../../node_modules/lodash.throttle/index.js\n");
              }
            ),
            /***/
            "../../../node_modules/pako/index.js": (
              /*!*******************************************!*\
                !*** ../../../node_modules/pako/index.js ***!
                \*******************************************/
              /***/
              (module, __unused_webpack_exports, __webpack_require__) => {
                "use strict";
                eval('// Top level file is just a mixin of submodules & constants\n\n\nvar assign    = (__webpack_require__(/*! ./lib/utils/common */ "../../../node_modules/pako/lib/utils/common.js").assign);\n\nvar deflate   = __webpack_require__(/*! ./lib/deflate */ "../../../node_modules/pako/lib/deflate.js");\nvar inflate   = __webpack_require__(/*! ./lib/inflate */ "../../../node_modules/pako/lib/inflate.js");\nvar constants = __webpack_require__(/*! ./lib/zlib/constants */ "../../../node_modules/pako/lib/zlib/constants.js");\n\nvar pako = {};\n\nassign(pako, deflate, inflate, constants);\n\nmodule.exports = pako;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bha28vaW5kZXguanMuanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDYTs7QUFFYixnQkFBZ0Isd0dBQW9DOztBQUVwRCxnQkFBZ0IsbUJBQU8sQ0FBQyxnRUFBZTtBQUN2QyxnQkFBZ0IsbUJBQU8sQ0FBQyxnRUFBZTtBQUN2QyxnQkFBZ0IsbUJBQU8sQ0FBQyw4RUFBc0I7O0FBRTlDOztBQUVBOztBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wYWtvL2luZGV4LmpzP2M3OTYiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVG9wIGxldmVsIGZpbGUgaXMganVzdCBhIG1peGluIG9mIHN1Ym1vZHVsZXMgJiBjb25zdGFudHNcbid1c2Ugc3RyaWN0JztcblxudmFyIGFzc2lnbiAgICA9IHJlcXVpcmUoJy4vbGliL3V0aWxzL2NvbW1vbicpLmFzc2lnbjtcblxudmFyIGRlZmxhdGUgICA9IHJlcXVpcmUoJy4vbGliL2RlZmxhdGUnKTtcbnZhciBpbmZsYXRlICAgPSByZXF1aXJlKCcuL2xpYi9pbmZsYXRlJyk7XG52YXIgY29uc3RhbnRzID0gcmVxdWlyZSgnLi9saWIvemxpYi9jb25zdGFudHMnKTtcblxudmFyIHBha28gPSB7fTtcblxuYXNzaWduKHBha28sIGRlZmxhdGUsIGluZmxhdGUsIGNvbnN0YW50cyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcGFrbztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/pako/index.js\n');
              }
            ),
            /***/
            "../../../node_modules/pako/lib/deflate.js": (
              /*!*************************************************!*\
                !*** ../../../node_modules/pako/lib/deflate.js ***!
                \*************************************************/
              /***/
              (__unused_webpack_module, exports, __webpack_require__) => {
                "use strict";
                eval("\n\n\nvar zlib_deflate = __webpack_require__(/*! ./zlib/deflate */ \"../../../node_modules/pako/lib/zlib/deflate.js\");\nvar utils        = __webpack_require__(/*! ./utils/common */ \"../../../node_modules/pako/lib/utils/common.js\");\nvar strings      = __webpack_require__(/*! ./utils/strings */ \"../../../node_modules/pako/lib/utils/strings.js\");\nvar msg          = __webpack_require__(/*! ./zlib/messages */ \"../../../node_modules/pako/lib/zlib/messages.js\");\nvar ZStream      = __webpack_require__(/*! ./zlib/zstream */ \"../../../node_modules/pako/lib/zlib/zstream.js\");\n\nvar toString = Object.prototype.toString;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nvar Z_NO_FLUSH      = 0;\nvar Z_FINISH        = 4;\n\nvar Z_OK            = 0;\nvar Z_STREAM_END    = 1;\nvar Z_SYNC_FLUSH    = 2;\n\nvar Z_DEFAULT_COMPRESSION = -1;\n\nvar Z_DEFAULT_STRATEGY    = 0;\n\nvar Z_DEFLATED  = 8;\n\n/* ===========================================================================*/\n\n\n/**\n * class Deflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[deflate]],\n * [[deflateRaw]] and [[gzip]].\n **/\n\n/* internal\n * Deflate.chunks -> Array\n *\n * Chunks of output data, if [[Deflate#onData]] not overridden.\n **/\n\n/**\n * Deflate.result -> Uint8Array|Array\n *\n * Compressed result, generated by default [[Deflate#onData]]\n * and [[Deflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Deflate#push]] with `Z_FINISH` / `true` param)  or if you\n * push a chunk with explicit flush (call [[Deflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n/**\n * Deflate.err -> Number\n *\n * Error code after deflate finished. 0 (Z_OK) on success.\n * You will not need it in real life, because deflate errors\n * are possible only on wrong options or bad `onData` / `onEnd`\n * custom handlers.\n **/\n\n/**\n * Deflate.msg -> String\n *\n * Error message, if [[Deflate.err]] != 0\n **/\n\n\n/**\n * new Deflate(options)\n * - options (Object): zlib deflate options.\n *\n * Creates new deflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `level`\n * - `windowBits`\n * - `memLevel`\n * - `strategy`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw deflate\n * - `gzip` (Boolean) - create gzip wrapper\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n *    (each char code [0..255])\n * - `header` (Object) - custom header for gzip\n *   - `text` (Boolean) - true if compressed data believed to be text\n *   - `time` (Number) - modification time, unix timestamp\n *   - `os` (Number) - operation system code\n *   - `extra` (Array) - array of bytes with extra data (max 65536)\n *   - `name` (String) - file name (binary string)\n *   - `comment` (String) - comment (binary string)\n *   - `hcrc` (Boolean) - true if header crc should be added\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n *   , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n *   , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var deflate = new pako.Deflate({ level: 3});\n *\n * deflate.push(chunk1, false);\n * deflate.push(chunk2, true);  // true -> last chunk\n *\n * if (deflate.err) { throw new Error(deflate.err); }\n *\n * console.log(deflate.result);\n * ```\n **/\nfunction Deflate(options) {\n  if (!(this instanceof Deflate)) return new Deflate(options);\n\n  this.options = utils.assign({\n    level: Z_DEFAULT_COMPRESSION,\n    method: Z_DEFLATED,\n    chunkSize: 16384,\n    windowBits: 15,\n    memLevel: 8,\n    strategy: Z_DEFAULT_STRATEGY,\n    to: ''\n  }, options || {});\n\n  var opt = this.options;\n\n  if (opt.raw && (opt.windowBits > 0)) {\n    opt.windowBits = -opt.windowBits;\n  }\n\n  else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) {\n    opt.windowBits += 16;\n  }\n\n  this.err    = 0;      // error code, if happens (0 = Z_OK)\n  this.msg    = '';     // error message\n  this.ended  = false;  // used to avoid multiple onEnd() calls\n  this.chunks = [];     // chunks of compressed data\n\n  this.strm = new ZStream();\n  this.strm.avail_out = 0;\n\n  var status = zlib_deflate.deflateInit2(\n    this.strm,\n    opt.level,\n    opt.method,\n    opt.windowBits,\n    opt.memLevel,\n    opt.strategy\n  );\n\n  if (status !== Z_OK) {\n    throw new Error(msg[status]);\n  }\n\n  if (opt.header) {\n    zlib_deflate.deflateSetHeader(this.strm, opt.header);\n  }\n\n  if (opt.dictionary) {\n    var dict;\n    // Convert data if needed\n    if (typeof opt.dictionary === 'string') {\n      // If we need to compress text, change encoding to utf8.\n      dict = strings.string2buf(opt.dictionary);\n    } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n      dict = new Uint8Array(opt.dictionary);\n    } else {\n      dict = opt.dictionary;\n    }\n\n    status = zlib_deflate.deflateSetDictionary(this.strm, dict);\n\n    if (status !== Z_OK) {\n      throw new Error(msg[status]);\n    }\n\n    this._dict_set = true;\n  }\n}\n\n/**\n * Deflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data. Strings will be\n *   converted to utf8 byte sequence.\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n *   See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with\n * new compressed chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Deflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the compression context.\n *\n * On fail call [[Deflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * array format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true);  // push last chunk\n * ```\n **/\nDeflate.prototype.push = function (data, mode) {\n  var strm = this.strm;\n  var chunkSize = this.options.chunkSize;\n  var status, _mode;\n\n  if (this.ended) { return false; }\n\n  _mode = (mode === ~~mode) ? mode : ((mode === true) ? Z_FINISH : Z_NO_FLUSH);\n\n  // Convert data if needed\n  if (typeof data === 'string') {\n    // If we need to compress text, change encoding to utf8.\n    strm.input = strings.string2buf(data);\n  } else if (toString.call(data) === '[object ArrayBuffer]') {\n    strm.input = new Uint8Array(data);\n  } else {\n    strm.input = data;\n  }\n\n  strm.next_in = 0;\n  strm.avail_in = strm.input.length;\n\n  do {\n    if (strm.avail_out === 0) {\n      strm.output = new utils.Buf8(chunkSize);\n      strm.next_out = 0;\n      strm.avail_out = chunkSize;\n    }\n    status = zlib_deflate.deflate(strm, _mode);    /* no bad return value */\n\n    if (status !== Z_STREAM_END && status !== Z_OK) {\n      this.onEnd(status);\n      this.ended = true;\n      return false;\n    }\n    if (strm.avail_out === 0 || (strm.avail_in === 0 && (_mode === Z_FINISH || _mode === Z_SYNC_FLUSH))) {\n      if (this.options.to === 'string') {\n        this.onData(strings.buf2binstring(utils.shrinkBuf(strm.output, strm.next_out)));\n      } else {\n        this.onData(utils.shrinkBuf(strm.output, strm.next_out));\n      }\n    }\n  } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== Z_STREAM_END);\n\n  // Finalize on the last chunk.\n  if (_mode === Z_FINISH) {\n    status = zlib_deflate.deflateEnd(this.strm);\n    this.onEnd(status);\n    this.ended = true;\n    return status === Z_OK;\n  }\n\n  // callback interim results if Z_SYNC_FLUSH.\n  if (_mode === Z_SYNC_FLUSH) {\n    this.onEnd(Z_OK);\n    strm.avail_out = 0;\n    return true;\n  }\n\n  return true;\n};\n\n\n/**\n * Deflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): output data. Type of array depends\n *   on js engine support. When string output requested, each chunk\n *   will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nDeflate.prototype.onData = function (chunk) {\n  this.chunks.push(chunk);\n};\n\n\n/**\n * Deflate#onEnd(status) -> Void\n * - status (Number): deflate status. 0 (Z_OK) on success,\n *   other if not.\n *\n * Called once after you tell deflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nDeflate.prototype.onEnd = function (status) {\n  // On success - join\n  if (status === Z_OK) {\n    if (this.options.to === 'string') {\n      this.result = this.chunks.join('');\n    } else {\n      this.result = utils.flattenChunks(this.chunks);\n    }\n  }\n  this.chunks = [];\n  this.err = status;\n  this.msg = this.strm.msg;\n};\n\n\n/**\n * deflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * Compress `data` with deflate algorithm and `options`.\n *\n * Supported options are:\n *\n * - level\n * - windowBits\n * - memLevel\n * - strategy\n * - dictionary\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n *   negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n *    (each char code [0..255])\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n *   , data = Uint8Array([1,2,3,4,5,6,7,8,9]);\n *\n * console.log(pako.deflate(data));\n * ```\n **/\nfunction deflate(input, options) {\n  var deflator = new Deflate(options);\n\n  deflator.push(input, true);\n\n  // That will never happens, if you don't cheat with options :)\n  if (deflator.err) { throw deflator.msg || msg[deflator.err]; }\n\n  return deflator.result;\n}\n\n\n/**\n * deflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction deflateRaw(input, options) {\n  options = options || {};\n  options.raw = true;\n  return deflate(input, options);\n}\n\n\n/**\n * gzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but create gzip wrapper instead of\n * deflate one.\n **/\nfunction gzip(input, options) {\n  options = options || {};\n  options.gzip = true;\n  return deflate(input, options);\n}\n\n\nexports.Deflate = Deflate;\nexports.deflate = deflate;\nexports.deflateRaw = deflateRaw;\nexports.gzip = gzip;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 18340 characters]\n//# sourceURL=webpack-internal:///../../../node_modules/pako/lib/deflate.js\n");
              }
            ),
            /***/
            "../../../node_modules/pako/lib/inflate.js": (
              /*!*************************************************!*\
                !*** ../../../node_modules/pako/lib/inflate.js ***!
                \*************************************************/
              /***/
              (__unused_webpack_module, exports, __webpack_require__) => {
                "use strict";
                eval("\n\n\nvar zlib_inflate = __webpack_require__(/*! ./zlib/inflate */ \"../../../node_modules/pako/lib/zlib/inflate.js\");\nvar utils        = __webpack_require__(/*! ./utils/common */ \"../../../node_modules/pako/lib/utils/common.js\");\nvar strings      = __webpack_require__(/*! ./utils/strings */ \"../../../node_modules/pako/lib/utils/strings.js\");\nvar c            = __webpack_require__(/*! ./zlib/constants */ \"../../../node_modules/pako/lib/zlib/constants.js\");\nvar msg          = __webpack_require__(/*! ./zlib/messages */ \"../../../node_modules/pako/lib/zlib/messages.js\");\nvar ZStream      = __webpack_require__(/*! ./zlib/zstream */ \"../../../node_modules/pako/lib/zlib/zstream.js\");\nvar GZheader     = __webpack_require__(/*! ./zlib/gzheader */ \"../../../node_modules/pako/lib/zlib/gzheader.js\");\n\nvar toString = Object.prototype.toString;\n\n/**\n * class Inflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[inflate]]\n * and [[inflateRaw]].\n **/\n\n/* internal\n * inflate.chunks -> Array\n *\n * Chunks of output data, if [[Inflate#onData]] not overridden.\n **/\n\n/**\n * Inflate.result -> Uint8Array|Array|String\n *\n * Uncompressed result, generated by default [[Inflate#onData]]\n * and [[Inflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Inflate#push]] with `Z_FINISH` / `true` param) or if you\n * push a chunk with explicit flush (call [[Inflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n/**\n * Inflate.err -> Number\n *\n * Error code after inflate finished. 0 (Z_OK) on success.\n * Should be checked if broken data possible.\n **/\n\n/**\n * Inflate.msg -> String\n *\n * Error message, if [[Inflate.err]] != 0\n **/\n\n\n/**\n * new Inflate(options)\n * - options (Object): zlib inflate options.\n *\n * Creates new inflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `windowBits`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw inflate\n * - `to` (String) - if equal to 'string', then result will be converted\n *   from utf8 to utf16 (javascript) string. When string output requested,\n *   chunk length can differ from `chunkSize`, depending on content.\n *\n * By default, when no options set, autodetect deflate/gzip data format via\n * wrapper header.\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n *   , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n *   , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var inflate = new pako.Inflate({ level: 3});\n *\n * inflate.push(chunk1, false);\n * inflate.push(chunk2, true);  // true -> last chunk\n *\n * if (inflate.err) { throw new Error(inflate.err); }\n *\n * console.log(inflate.result);\n * ```\n **/\nfunction Inflate(options) {\n  if (!(this instanceof Inflate)) return new Inflate(options);\n\n  this.options = utils.assign({\n    chunkSize: 16384,\n    windowBits: 0,\n    to: ''\n  }, options || {});\n\n  var opt = this.options;\n\n  // Force window size for `raw` data, if not set directly,\n  // because we have no header for autodetect.\n  if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) {\n    opt.windowBits = -opt.windowBits;\n    if (opt.windowBits === 0) { opt.windowBits = -15; }\n  }\n\n  // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate\n  if ((opt.windowBits >= 0) && (opt.windowBits < 16) &&\n      !(options && options.windowBits)) {\n    opt.windowBits += 32;\n  }\n\n  // Gzip header has no info about windows size, we can do autodetect only\n  // for deflate. So, if window size not set, force it to max when gzip possible\n  if ((opt.windowBits > 15) && (opt.windowBits < 48)) {\n    // bit 3 (16) -> gzipped data\n    // bit 4 (32) -> autodetect gzip/deflate\n    if ((opt.windowBits & 15) === 0) {\n      opt.windowBits |= 15;\n    }\n  }\n\n  this.err    = 0;      // error code, if happens (0 = Z_OK)\n  this.msg    = '';     // error message\n  this.ended  = false;  // used to avoid multiple onEnd() calls\n  this.chunks = [];     // chunks of compressed data\n\n  this.strm   = new ZStream();\n  this.strm.avail_out = 0;\n\n  var status  = zlib_inflate.inflateInit2(\n    this.strm,\n    opt.windowBits\n  );\n\n  if (status !== c.Z_OK) {\n    throw new Error(msg[status]);\n  }\n\n  this.header = new GZheader();\n\n  zlib_inflate.inflateGetHeader(this.strm, this.header);\n\n  // Setup dictionary\n  if (opt.dictionary) {\n    // Convert data if needed\n    if (typeof opt.dictionary === 'string') {\n      opt.dictionary = strings.string2buf(opt.dictionary);\n    } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n      opt.dictionary = new Uint8Array(opt.dictionary);\n    }\n    if (opt.raw) { //In raw mode we need to set the dictionary early\n      status = zlib_inflate.inflateSetDictionary(this.strm, opt.dictionary);\n      if (status !== c.Z_OK) {\n        throw new Error(msg[status]);\n      }\n    }\n  }\n}\n\n/**\n * Inflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n *   See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with\n * new output chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Inflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the decompression context.\n *\n * On fail call [[Inflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true);  // push last chunk\n * ```\n **/\nInflate.prototype.push = function (data, mode) {\n  var strm = this.strm;\n  var chunkSize = this.options.chunkSize;\n  var dictionary = this.options.dictionary;\n  var status, _mode;\n  var next_out_utf8, tail, utf8str;\n\n  // Flag to properly process Z_BUF_ERROR on testing inflate call\n  // when we check that all output data was flushed.\n  var allowBufError = false;\n\n  if (this.ended) { return false; }\n  _mode = (mode === ~~mode) ? mode : ((mode === true) ? c.Z_FINISH : c.Z_NO_FLUSH);\n\n  // Convert data if needed\n  if (typeof data === 'string') {\n    // Only binary strings can be decompressed on practice\n    strm.input = strings.binstring2buf(data);\n  } else if (toString.call(data) === '[object ArrayBuffer]') {\n    strm.input = new Uint8Array(data);\n  } else {\n    strm.input = data;\n  }\n\n  strm.next_in = 0;\n  strm.avail_in = strm.input.length;\n\n  do {\n    if (strm.avail_out === 0) {\n      strm.output = new utils.Buf8(chunkSize);\n      strm.next_out = 0;\n      strm.avail_out = chunkSize;\n    }\n\n    status = zlib_inflate.inflate(strm, c.Z_NO_FLUSH);    /* no bad return value */\n\n    if (status === c.Z_NEED_DICT && dictionary) {\n      status = zlib_inflate.inflateSetDictionary(this.strm, dictionary);\n    }\n\n    if (status === c.Z_BUF_ERROR && allowBufError === true) {\n      status = c.Z_OK;\n      allowBufError = false;\n    }\n\n    if (status !== c.Z_STREAM_END && status !== c.Z_OK) {\n      this.onEnd(status);\n      this.ended = true;\n      return false;\n    }\n\n    if (strm.next_out) {\n      if (strm.avail_out === 0 || status === c.Z_STREAM_END || (strm.avail_in === 0 && (_mode === c.Z_FINISH || _mode === c.Z_SYNC_FLUSH))) {\n\n        if (this.options.to === 'string') {\n\n          next_out_utf8 = strings.utf8border(strm.output, strm.next_out);\n\n          tail = strm.next_out - next_out_utf8;\n          utf8str = strings.buf2string(strm.output, next_out_utf8);\n\n          // move tail\n          strm.next_out = tail;\n          strm.avail_out = chunkSize - tail;\n          if (tail) { utils.arraySet(strm.output, strm.output, next_out_utf8, tail, 0); }\n\n          this.onData(utf8str);\n\n        } else {\n          this.onData(utils.shrinkBuf(strm.output, strm.next_out));\n        }\n      }\n    }\n\n    // When no more input data, we should check that internal inflate buffers\n    // are flushed. The only way to do it when avail_out = 0 - run one more\n    // inflate pass. But if output data not exists, inflate return Z_BUF_ERROR.\n    // Here we set flag to process this error properly.\n    //\n    // NOTE. Deflate does not return error in this case and does not needs such\n    // logic.\n    if (strm.avail_in === 0 && strm.avail_out === 0) {\n      allowBufError = true;\n    }\n\n  } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== c.Z_STREAM_END);\n\n  if (status === c.Z_STREAM_END) {\n    _mode = c.Z_FINISH;\n  }\n\n  // Finalize on the last chunk.\n  if (_mode === c.Z_FINISH) {\n    status = zlib_inflate.inflateEnd(this.strm);\n    this.onEnd(status);\n    this.ended = true;\n    return status === c.Z_OK;\n  }\n\n  // callback interim results if Z_SYNC_FLUSH.\n  if (_mode === c.Z_SYNC_FLUSH) {\n    this.onEnd(c.Z_OK);\n    strm.avail_out = 0;\n    return true;\n  }\n\n  return true;\n};\n\n\n/**\n * Inflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): output data. Type of array depends\n *   on js engine support. When string output requested, each chunk\n *   will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nInflate.prototype.onData = function (chunk) {\n  this.chunks.push(chunk);\n};\n\n\n/**\n * Inflate#onEnd(status) -> Void\n * - status (Number): inflate status. 0 (Z_OK) on success,\n *   other if not.\n *\n * Called either after you tell inflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nInflate.prototype.onEnd = function (status) {\n  // On success - join\n  if (status === c.Z_OK) {\n    if (this.options.to === 'string') {\n      // Glue & convert here, until we teach pako to send\n      // utf8 aligned strings to onData\n      this.result = this.chunks.join('');\n    } else {\n      this.result = utils.flattenChunks(this.chunks);\n    }\n  }\n  this.chunks = [];\n  this.err = status;\n  this.msg = this.strm.msg;\n};\n\n\n/**\n * inflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Decompress `data` with inflate/ungzip and `options`. Autodetect\n * format via wrapper header by default. That's why we don't provide\n * separate `ungzip` method.\n *\n * Supported options are:\n *\n * - windowBits\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n *   negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be converted\n *   from utf8 to utf16 (javascript) string. When string output requested,\n *   chunk length can differ from `chunkSize`, depending on content.\n *\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n *   , input = pako.deflate([1,2,3,4,5,6,7,8,9])\n *   , output;\n *\n * try {\n *   output = pako.inflate(input);\n * } catch (err)\n *   console.log(err);\n * }\n * ```\n **/\nfunction inflate(input, options) {\n  var inflator = new Inflate(options);\n\n  inflator.push(input, true);\n\n  // That will never happens, if you don't cheat with options :)\n  if (inflator.err) { throw inflator.msg || msg[inflator.err]; }\n\n  return inflator.result;\n}\n\n\n/**\n * inflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * The same as [[inflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction inflateRaw(input, options) {\n  options = options || {};\n  options.raw = true;\n  return inflate(input, options);\n}\n\n\n/**\n * ungzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Just shortcut to [[inflate]], because it autodetects format\n * by header.content. Done for convenience.\n **/\n\n\nexports.Inflate = Inflate;\nexports.inflate = inflate;\nexports.inflateRaw = inflateRaw;\nexports.ungzip  = inflate;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 20384 characters]\n//# sourceURL=webpack-internal:///../../../node_modules/pako/lib/inflate.js\n");
              }
            ),
            /***/
            "../../../node_modules/pako/lib/utils/common.js": (
              /*!******************************************************!*\
                !*** ../../../node_modules/pako/lib/utils/common.js ***!
                \******************************************************/
              /***/
              (__unused_webpack_module, exports) => {
                "use strict";
                eval("\n\n\nvar TYPED_OK =  (typeof Uint8Array !== 'undefined') &&\n                (typeof Uint16Array !== 'undefined') &&\n                (typeof Int32Array !== 'undefined');\n\nfunction _has(obj, key) {\n  return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nexports.assign = function (obj /*from1, from2, from3, ...*/) {\n  var sources = Array.prototype.slice.call(arguments, 1);\n  while (sources.length) {\n    var source = sources.shift();\n    if (!source) { continue; }\n\n    if (typeof source !== 'object') {\n      throw new TypeError(source + 'must be non-object');\n    }\n\n    for (var p in source) {\n      if (_has(source, p)) {\n        obj[p] = source[p];\n      }\n    }\n  }\n\n  return obj;\n};\n\n\n// reduce buffer size, avoiding mem copy\nexports.shrinkBuf = function (buf, size) {\n  if (buf.length === size) { return buf; }\n  if (buf.subarray) { return buf.subarray(0, size); }\n  buf.length = size;\n  return buf;\n};\n\n\nvar fnTyped = {\n  arraySet: function (dest, src, src_offs, len, dest_offs) {\n    if (src.subarray && dest.subarray) {\n      dest.set(src.subarray(src_offs, src_offs + len), dest_offs);\n      return;\n    }\n    // Fallback to ordinary array\n    for (var i = 0; i < len; i++) {\n      dest[dest_offs + i] = src[src_offs + i];\n    }\n  },\n  // Join array of chunks to single array.\n  flattenChunks: function (chunks) {\n    var i, l, len, pos, chunk, result;\n\n    // calculate data length\n    len = 0;\n    for (i = 0, l = chunks.length; i < l; i++) {\n      len += chunks[i].length;\n    }\n\n    // join chunks\n    result = new Uint8Array(len);\n    pos = 0;\n    for (i = 0, l = chunks.length; i < l; i++) {\n      chunk = chunks[i];\n      result.set(chunk, pos);\n      pos += chunk.length;\n    }\n\n    return result;\n  }\n};\n\nvar fnUntyped = {\n  arraySet: function (dest, src, src_offs, len, dest_offs) {\n    for (var i = 0; i < len; i++) {\n      dest[dest_offs + i] = src[src_offs + i];\n    }\n  },\n  // Join array of chunks to single array.\n  flattenChunks: function (chunks) {\n    return [].concat.apply([], chunks);\n  }\n};\n\n\n// Enable/Disable typed arrays use, for testing\n//\nexports.setTyped = function (on) {\n  if (on) {\n    exports.Buf8  = Uint8Array;\n    exports.Buf16 = Uint16Array;\n    exports.Buf32 = Int32Array;\n    exports.assign(exports, fnTyped);\n  } else {\n    exports.Buf8  = Array;\n    exports.Buf16 = Array;\n    exports.Buf32 = Array;\n    exports.assign(exports, fnUntyped);\n  }\n};\n\nexports.setTyped(TYPED_OK);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4524 characters]\n//# sourceURL=webpack-internal:///../../../node_modules/pako/lib/utils/common.js\n");
              }
            ),
            /***/
            "../../../node_modules/pako/lib/utils/strings.js": (
              /*!*******************************************************!*\
                !*** ../../../node_modules/pako/lib/utils/strings.js ***!
                \*******************************************************/
              /***/
              (__unused_webpack_module, exports, __webpack_require__) => {
                "use strict";
                eval("// String encode/decode helpers\n\n\n\nvar utils = __webpack_require__(/*! ./common */ \"../../../node_modules/pako/lib/utils/common.js\");\n\n\n// Quick check if we can use fast array to bin string conversion\n//\n// - apply(Array) can fail on Android 2.2\n// - apply(Uint8Array) can fail on iOS 5.1 Safari\n//\nvar STR_APPLY_OK = true;\nvar STR_APPLY_UIA_OK = true;\n\ntry { String.fromCharCode.apply(null, [ 0 ]); } catch (__) { STR_APPLY_OK = false; }\ntry { String.fromCharCode.apply(null, new Uint8Array(1)); } catch (__) { STR_APPLY_UIA_OK = false; }\n\n\n// Table with utf8 lengths (calculated by first byte of sequence)\n// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n// because max possible codepoint is 0x10ffff\nvar _utf8len = new utils.Buf8(256);\nfor (var q = 0; q < 256; q++) {\n  _utf8len[q] = (q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1);\n}\n_utf8len[254] = _utf8len[254] = 1; // Invalid sequence start\n\n\n// convert string to array (typed, when possible)\nexports.string2buf = function (str) {\n  var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n  // count binary size\n  for (m_pos = 0; m_pos < str_len; m_pos++) {\n    c = str.charCodeAt(m_pos);\n    if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n      c2 = str.charCodeAt(m_pos + 1);\n      if ((c2 & 0xfc00) === 0xdc00) {\n        c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n        m_pos++;\n      }\n    }\n    buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n  }\n\n  // allocate buffer\n  buf = new utils.Buf8(buf_len);\n\n  // convert\n  for (i = 0, m_pos = 0; i < buf_len; m_pos++) {\n    c = str.charCodeAt(m_pos);\n    if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n      c2 = str.charCodeAt(m_pos + 1);\n      if ((c2 & 0xfc00) === 0xdc00) {\n        c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n        m_pos++;\n      }\n    }\n    if (c < 0x80) {\n      /* one byte */\n      buf[i++] = c;\n    } else if (c < 0x800) {\n      /* two bytes */\n      buf[i++] = 0xC0 | (c >>> 6);\n      buf[i++] = 0x80 | (c & 0x3f);\n    } else if (c < 0x10000) {\n      /* three bytes */\n      buf[i++] = 0xE0 | (c >>> 12);\n      buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n      buf[i++] = 0x80 | (c & 0x3f);\n    } else {\n      /* four bytes */\n      buf[i++] = 0xf0 | (c >>> 18);\n      buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n      buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n      buf[i++] = 0x80 | (c & 0x3f);\n    }\n  }\n\n  return buf;\n};\n\n// Helper (used in 2 places)\nfunction buf2binstring(buf, len) {\n  // On Chrome, the arguments in a function call that are allowed is `65534`.\n  // If the length of the buffer is smaller than that, we can use this optimization,\n  // otherwise we will take a slower path.\n  if (len < 65534) {\n    if ((buf.subarray && STR_APPLY_UIA_OK) || (!buf.subarray && STR_APPLY_OK)) {\n      return String.fromCharCode.apply(null, utils.shrinkBuf(buf, len));\n    }\n  }\n\n  var result = '';\n  for (var i = 0; i < len; i++) {\n    result += String.fromCharCode(buf[i]);\n  }\n  return result;\n}\n\n\n// Convert byte array to binary string\nexports.buf2binstring = function (buf) {\n  return buf2binstring(buf, buf.length);\n};\n\n\n// Convert binary string (typed, when possible)\nexports.binstring2buf = function (str) {\n  var buf = new utils.Buf8(str.length);\n  for (var i = 0, len = buf.length; i < len; i++) {\n    buf[i] = str.charCodeAt(i);\n  }\n  return buf;\n};\n\n\n// convert array to string\nexports.buf2string = function (buf, max) {\n  var i, out, c, c_len;\n  var len = max || buf.length;\n\n  // Reserve max possible length (2 words per char)\n  // NB: by unknown reasons, Array is significantly faster for\n  //     String.fromCharCode.apply than Uint16Array.\n  var utf16buf = new Array(len * 2);\n\n  for (out = 0, i = 0; i < len;) {\n    c = buf[i++];\n    // quick process ascii\n    if (c < 0x80) { utf16buf[out++] = c; continue; }\n\n    c_len = _utf8len[c];\n    // skip 5 & 6 byte codes\n    if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len - 1; continue; }\n\n    // apply mask on first byte\n    c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n    // join the rest\n    while (c_len > 1 && i < len) {\n      c = (c << 6) | (buf[i++] & 0x3f);\n      c_len--;\n    }\n\n    // terminated by end of string?\n    if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n    if (c < 0x10000) {\n      utf16buf[out++] = c;\n    } else {\n      c -= 0x10000;\n      utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n      utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n    }\n  }\n\n  return buf2binstring(utf16buf, out);\n};\n\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max   - length limit (mandatory);\nexports.utf8border = function (buf, max) {\n  var pos;\n\n  max = max || buf.length;\n  if (max > buf.length) { max = buf.length; }\n\n  // go back from last position, until start of sequence found\n  pos = max - 1;\n  while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n  // Very small and broken sequence,\n  // return max, because we should return something anyway.\n  if (pos < 0) { return max; }\n\n  // If we came to start of buffer - that means buffer is too small,\n  // return max too.\n  if (pos === 0) { return max; }\n\n  return (pos + _utf8len[buf[pos]] > max) ? pos : max;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 9040 characters]\n//# sourceURL=webpack-internal:///../../../node_modules/pako/lib/utils/strings.js\n");
              }
            ),
            /***/
            "../../../node_modules/pako/lib/zlib/adler32.js": (
              /*!******************************************************!*\
                !*** ../../../node_modules/pako/lib/zlib/adler32.js ***!
                \******************************************************/
              /***/
              (module) => {
                "use strict";
                eval("\n\n// Note: adler32 takes 12% for level 0 and 2% for level 6.\n// It isn't worth it to make additional optimizations as in original.\n// Small size is preferable.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction adler32(adler, buf, len, pos) {\n  var s1 = (adler & 0xffff) |0,\n      s2 = ((adler >>> 16) & 0xffff) |0,\n      n = 0;\n\n  while (len !== 0) {\n    // Set limit ~ twice less than 5552, to keep\n    // s2 in 31-bits, because we force signed ints.\n    // in other case %= will fail.\n    n = len > 2000 ? 2000 : len;\n    len -= n;\n\n    do {\n      s1 = (s1 + buf[pos++]) |0;\n      s2 = (s2 + s1) |0;\n    } while (--n);\n\n    s1 %= 65521;\n    s2 %= 65521;\n  }\n\n  return (s1 | (s2 << 16)) |0;\n}\n\n\nmodule.exports = adler32;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bha28vbGliL3psaWIvYWRsZXIzMi5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhEQUE4RDtBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU47QUFDQTtBQUNBOztBQUVBO0FBQ0E7OztBQUdBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wYWtvL2xpYi96bGliL2FkbGVyMzIuanM/ZjNiNiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbi8vIE5vdGU6IGFkbGVyMzIgdGFrZXMgMTIlIGZvciBsZXZlbCAwIGFuZCAyJSBmb3IgbGV2ZWwgNi5cbi8vIEl0IGlzbid0IHdvcnRoIGl0IHRvIG1ha2UgYWRkaXRpb25hbCBvcHRpbWl6YXRpb25zIGFzIGluIG9yaWdpbmFsLlxuLy8gU21hbGwgc2l6ZSBpcyBwcmVmZXJhYmxlLlxuXG4vLyAoQykgMTk5NS0yMDEzIEplYW4tbG91cCBHYWlsbHkgYW5kIE1hcmsgQWRsZXJcbi8vIChDKSAyMDE0LTIwMTcgVml0YWx5IFB1enJpbiBhbmQgQW5kcmV5IFR1cGl0c2luXG4vL1xuLy8gVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAnYXMtaXMnLCB3aXRob3V0IGFueSBleHByZXNzIG9yIGltcGxpZWRcbi8vIHdhcnJhbnR5LiBJbiBubyBldmVudCB3aWxsIHRoZSBhdXRob3JzIGJlIGhlbGQgbGlhYmxlIGZvciBhbnkgZGFtYWdlc1xuLy8gYXJpc2luZyBmcm9tIHRoZSB1c2Ugb2YgdGhpcyBzb2Z0d2FyZS5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gYW55b25lIHRvIHVzZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkgcHVycG9zZSxcbi8vIGluY2x1ZGluZyBjb21tZXJjaWFsIGFwcGxpY2F0aW9ucywgYW5kIHRvIGFsdGVyIGl0IGFuZCByZWRpc3RyaWJ1dGUgaXRcbi8vIGZyZWVseSwgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIHJlc3RyaWN0aW9uczpcbi8vXG4vLyAxLiBUaGUgb3JpZ2luIG9mIHRoaXMgc29mdHdhcmUgbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQ7IHlvdSBtdXN0IG5vdFxuLy8gICBjbGFpbSB0aGF0IHlvdSB3cm90ZSB0aGUgb3JpZ2luYWwgc29mdHdhcmUuIElmIHlvdSB1c2UgdGhpcyBzb2Z0d2FyZVxuLy8gICBpbiBhIHByb2R1Y3QsIGFuIGFja25vd2xlZGdtZW50IGluIHRoZSBwcm9kdWN0IGRvY3VtZW50YXRpb24gd291bGQgYmVcbi8vICAgYXBwcmVjaWF0ZWQgYnV0IGlzIG5vdCByZXF1aXJlZC5cbi8vIDIuIEFsdGVyZWQgc291cmNlIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCwgYW5kIG11c3Qgbm90IGJlXG4vLyAgIG1pc3JlcHJlc2VudGVkIGFzIGJlaW5nIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS5cbi8vIDMuIFRoaXMgbm90aWNlIG1heSBub3QgYmUgcmVtb3ZlZCBvciBhbHRlcmVkIGZyb20gYW55IHNvdXJjZSBkaXN0cmlidXRpb24uXG5cbmZ1bmN0aW9uIGFkbGVyMzIoYWRsZXIsIGJ1ZiwgbGVuLCBwb3MpIHtcbiAgdmFyIHMxID0gKGFkbGVyICYgMHhmZmZmKSB8MCxcbiAgICAgIHMyID0gKChhZGxlciA+Pj4gMTYpICYgMHhmZmZmKSB8MCxcbiAgICAgIG4gPSAwO1xuXG4gIHdoaWxlIChsZW4gIT09IDApIHtcbiAgICAvLyBTZXQgbGltaXQgfiB0d2ljZSBsZXNzIHRoYW4gNTU1MiwgdG8ga2VlcFxuICAgIC8vIHMyIGluIDMxLWJpdHMsIGJlY2F1c2Ugd2UgZm9yY2Ugc2lnbmVkIGludHMuXG4gICAgLy8gaW4gb3RoZXIgY2FzZSAlPSB3aWxsIGZhaWwuXG4gICAgbiA9IGxlbiA+IDIwMDAgPyAyMDAwIDogbGVuO1xuICAgIGxlbiAtPSBuO1xuXG4gICAgZG8ge1xuICAgICAgczEgPSAoczEgKyBidWZbcG9zKytdKSB8MDtcbiAgICAgIHMyID0gKHMyICsgczEpIHwwO1xuICAgIH0gd2hpbGUgKC0tbik7XG5cbiAgICBzMSAlPSA2NTUyMTtcbiAgICBzMiAlPSA2NTUyMTtcbiAgfVxuXG4gIHJldHVybiAoczEgfCAoczIgPDwgMTYpKSB8MDtcbn1cblxuXG5tb2R1bGUuZXhwb3J0cyA9IGFkbGVyMzI7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/pako/lib/zlib/adler32.js\n");
              }
            ),
            /***/
            "../../../node_modules/pako/lib/zlib/constants.js": (
              /*!********************************************************!*\
                !*** ../../../node_modules/pako/lib/zlib/constants.js ***!
                \********************************************************/
              /***/
              (module) => {
                "use strict";
                eval("\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n\n  /* Allowed flush values; see deflate() and inflate() below for details */\n  Z_NO_FLUSH:         0,\n  Z_PARTIAL_FLUSH:    1,\n  Z_SYNC_FLUSH:       2,\n  Z_FULL_FLUSH:       3,\n  Z_FINISH:           4,\n  Z_BLOCK:            5,\n  Z_TREES:            6,\n\n  /* Return codes for the compression/decompression functions. Negative values\n  * are errors, positive values are used for special but normal events.\n  */\n  Z_OK:               0,\n  Z_STREAM_END:       1,\n  Z_NEED_DICT:        2,\n  Z_ERRNO:           -1,\n  Z_STREAM_ERROR:    -2,\n  Z_DATA_ERROR:      -3,\n  //Z_MEM_ERROR:     -4,\n  Z_BUF_ERROR:       -5,\n  //Z_VERSION_ERROR: -6,\n\n  /* compression levels */\n  Z_NO_COMPRESSION:         0,\n  Z_BEST_SPEED:             1,\n  Z_BEST_COMPRESSION:       9,\n  Z_DEFAULT_COMPRESSION:   -1,\n\n\n  Z_FILTERED:               1,\n  Z_HUFFMAN_ONLY:           2,\n  Z_RLE:                    3,\n  Z_FIXED:                  4,\n  Z_DEFAULT_STRATEGY:       0,\n\n  /* Possible values of the data_type field (though see inflate()) */\n  Z_BINARY:                 0,\n  Z_TEXT:                   1,\n  //Z_ASCII:                1, // = Z_TEXT (deprecated)\n  Z_UNKNOWN:                2,\n\n  /* The deflate compression method */\n  Z_DEFLATED:               8\n  //Z_NULL:                 null // Use -1 or null inline, depending on var type\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bha28vbGliL3psaWIvY29uc3RhbnRzLmpzLmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4REFBOEQ7QUFDOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wYWtvL2xpYi96bGliL2NvbnN0YW50cy5qcz9iNDZhIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuLy8gKEMpIDE5OTUtMjAxMyBKZWFuLWxvdXAgR2FpbGx5IGFuZCBNYXJrIEFkbGVyXG4vLyAoQykgMjAxNC0yMDE3IFZpdGFseSBQdXpyaW4gYW5kIEFuZHJleSBUdXBpdHNpblxuLy9cbi8vIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgJ2FzLWlzJywgd2l0aG91dCBhbnkgZXhwcmVzcyBvciBpbXBsaWVkXG4vLyB3YXJyYW50eS4gSW4gbm8gZXZlbnQgd2lsbCB0aGUgYXV0aG9ycyBiZSBoZWxkIGxpYWJsZSBmb3IgYW55IGRhbWFnZXNcbi8vIGFyaXNpbmcgZnJvbSB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGFueW9uZSB0byB1c2UgdGhpcyBzb2Z0d2FyZSBmb3IgYW55IHB1cnBvc2UsXG4vLyBpbmNsdWRpbmcgY29tbWVyY2lhbCBhcHBsaWNhdGlvbnMsIGFuZCB0byBhbHRlciBpdCBhbmQgcmVkaXN0cmlidXRlIGl0XG4vLyBmcmVlbHksIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnM6XG4vL1xuLy8gMS4gVGhlIG9yaWdpbiBvZiB0aGlzIHNvZnR3YXJlIG11c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkOyB5b3UgbXVzdCBub3Rcbi8vICAgY2xhaW0gdGhhdCB5b3Ugd3JvdGUgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLiBJZiB5b3UgdXNlIHRoaXMgc29mdHdhcmVcbi8vICAgaW4gYSBwcm9kdWN0LCBhbiBhY2tub3dsZWRnbWVudCBpbiB0aGUgcHJvZHVjdCBkb2N1bWVudGF0aW9uIHdvdWxkIGJlXG4vLyAgIGFwcHJlY2lhdGVkIGJ1dCBpcyBub3QgcmVxdWlyZWQuXG4vLyAyLiBBbHRlcmVkIHNvdXJjZSB2ZXJzaW9ucyBtdXN0IGJlIHBsYWlubHkgbWFya2VkIGFzIHN1Y2gsIGFuZCBtdXN0IG5vdCBiZVxuLy8gICBtaXNyZXByZXNlbnRlZCBhcyBiZWluZyB0aGUgb3JpZ2luYWwgc29mdHdhcmUuXG4vLyAzLiBUaGlzIG5vdGljZSBtYXkgbm90IGJlIHJlbW92ZWQgb3IgYWx0ZXJlZCBmcm9tIGFueSBzb3VyY2UgZGlzdHJpYnV0aW9uLlxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcblxuICAvKiBBbGxvd2VkIGZsdXNoIHZhbHVlczsgc2VlIGRlZmxhdGUoKSBhbmQgaW5mbGF0ZSgpIGJlbG93IGZvciBkZXRhaWxzICovXG4gIFpfTk9fRkxVU0g6ICAgICAgICAgMCxcbiAgWl9QQVJUSUFMX0ZMVVNIOiAgICAxLFxuICBaX1NZTkNfRkxVU0g6ICAgICAgIDIsXG4gIFpfRlVMTF9GTFVTSDogICAgICAgMyxcbiAgWl9GSU5JU0g6ICAgICAgICAgICA0LFxuICBaX0JMT0NLOiAgICAgICAgICAgIDUsXG4gIFpfVFJFRVM6ICAgICAgICAgICAgNixcblxuICAvKiBSZXR1cm4gY29kZXMgZm9yIHRoZSBjb21wcmVzc2lvbi9kZWNvbXByZXNzaW9uIGZ1bmN0aW9ucy4gTmVnYXRpdmUgdmFsdWVzXG4gICogYXJlIGVycm9ycywgcG9zaXRpdmUgdmFsdWVzIGFyZSB1c2VkIGZvciBzcGVjaWFsIGJ1dCBub3JtYWwgZXZlbnRzLlxuICAqL1xuICBaX09LOiAgICAgICAgICAgICAgIDAsXG4gIFpfU1RSRUFNX0VORDogICAgICAgMSxcbiAgWl9ORUVEX0RJQ1Q6ICAgICAgICAyLFxuICBaX0VSUk5POiAgICAgICAgICAgLTEsXG4gIFpfU1RSRUFNX0VSUk9SOiAgICAtMixcbiAgWl9EQVRBX0VSUk9SOiAgICAgIC0zLFxuICAvL1pfTUVNX0VSUk9SOiAgICAgLTQsXG4gIFpfQlVGX0VSUk9SOiAgICAgICAtNSxcbiAgLy9aX1ZFUlNJT05fRVJST1I6IC02LFxuXG4gIC8qIGNvbXByZXNzaW9uIGxldmVscyAqL1xuICBaX05PX0NPTVBSRVNTSU9OOiAgICAgICAgIDAsXG4gIFpfQkVTVF9TUEVFRDogICAgICAgICAgICAgMSxcbiAgWl9CRVNUX0NPTVBSRVNTSU9OOiAgICAgICA5LFxuICBaX0RFRkFVTFRfQ09NUFJFU1NJT046ICAgLTEsXG5cblxuICBaX0ZJTFRFUkVEOiAgICAgICAgICAgICAgIDEsXG4gIFpfSFVGRk1BTl9PTkxZOiAgICAgICAgICAgMixcbiAgWl9STEU6ICAgICAgICAgICAgICAgICAgICAzLFxuICBaX0ZJWEVEOiAgICAgICAgICAgICAgICAgIDQsXG4gIFpfREVGQVVMVF9TVFJBVEVHWTogICAgICAgMCxcblxuICAvKiBQb3NzaWJsZSB2YWx1ZXMgb2YgdGhlIGRhdGFfdHlwZSBmaWVsZCAodGhvdWdoIHNlZSBpbmZsYXRlKCkpICovXG4gIFpfQklOQVJZOiAgICAgICAgICAgICAgICAgMCxcbiAgWl9URVhUOiAgICAgICAgICAgICAgICAgICAxLFxuICAvL1pfQVNDSUk6ICAgICAgICAgICAgICAgIDEsIC8vID0gWl9URVhUIChkZXByZWNhdGVkKVxuICBaX1VOS05PV046ICAgICAgICAgICAgICAgIDIsXG5cbiAgLyogVGhlIGRlZmxhdGUgY29tcHJlc3Npb24gbWV0aG9kICovXG4gIFpfREVGTEFURUQ6ICAgICAgICAgICAgICAgOFxuICAvL1pfTlVMTDogICAgICAgICAgICAgICAgIG51bGwgLy8gVXNlIC0xIG9yIG51bGwgaW5saW5lLCBkZXBlbmRpbmcgb24gdmFyIHR5cGVcbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/pako/lib/zlib/constants.js\n");
              }
            ),
            /***/
            "../../../node_modules/pako/lib/zlib/crc32.js": (
              /*!****************************************************!*\
                !*** ../../../node_modules/pako/lib/zlib/crc32.js ***!
                \****************************************************/
              /***/
              (module) => {
                "use strict";
                eval("\n\n// Note: we can't get significant speed boost here.\n// So write code to minimize size - no pregenerated tables\n// and array tools dependencies.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// Use ordinary array, since untyped makes no boost here\nfunction makeTable() {\n  var c, table = [];\n\n  for (var n = 0; n < 256; n++) {\n    c = n;\n    for (var k = 0; k < 8; k++) {\n      c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n    }\n    table[n] = c;\n  }\n\n  return table;\n}\n\n// Create table on load. Just 255 signed longs. Not a problem.\nvar crcTable = makeTable();\n\n\nfunction crc32(crc, buf, len, pos) {\n  var t = crcTable,\n      end = pos + len;\n\n  crc ^= -1;\n\n  for (var i = pos; i < end; i++) {\n    crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n  }\n\n  return (crc ^ (-1)); // >>> 0;\n}\n\n\nmodule.exports = crc32;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bha28vbGliL3psaWIvY3JjMzIuanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4REFBOEQ7QUFDOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxrQkFBa0IsU0FBUztBQUMzQjtBQUNBLG9CQUFvQixPQUFPO0FBQzNCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLG9CQUFvQixTQUFTO0FBQzdCO0FBQ0E7O0FBRUEsdUJBQXVCO0FBQ3ZCOzs7QUFHQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcGFrby9saWIvemxpYi9jcmMzMi5qcz9jNjY4Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuLy8gTm90ZTogd2UgY2FuJ3QgZ2V0IHNpZ25pZmljYW50IHNwZWVkIGJvb3N0IGhlcmUuXG4vLyBTbyB3cml0ZSBjb2RlIHRvIG1pbmltaXplIHNpemUgLSBubyBwcmVnZW5lcmF0ZWQgdGFibGVzXG4vLyBhbmQgYXJyYXkgdG9vbHMgZGVwZW5kZW5jaWVzLlxuXG4vLyAoQykgMTk5NS0yMDEzIEplYW4tbG91cCBHYWlsbHkgYW5kIE1hcmsgQWRsZXJcbi8vIChDKSAyMDE0LTIwMTcgVml0YWx5IFB1enJpbiBhbmQgQW5kcmV5IFR1cGl0c2luXG4vL1xuLy8gVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAnYXMtaXMnLCB3aXRob3V0IGFueSBleHByZXNzIG9yIGltcGxpZWRcbi8vIHdhcnJhbnR5LiBJbiBubyBldmVudCB3aWxsIHRoZSBhdXRob3JzIGJlIGhlbGQgbGlhYmxlIGZvciBhbnkgZGFtYWdlc1xuLy8gYXJpc2luZyBmcm9tIHRoZSB1c2Ugb2YgdGhpcyBzb2Z0d2FyZS5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gYW55b25lIHRvIHVzZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkgcHVycG9zZSxcbi8vIGluY2x1ZGluZyBjb21tZXJjaWFsIGFwcGxpY2F0aW9ucywgYW5kIHRvIGFsdGVyIGl0IGFuZCByZWRpc3RyaWJ1dGUgaXRcbi8vIGZyZWVseSwgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIHJlc3RyaWN0aW9uczpcbi8vXG4vLyAxLiBUaGUgb3JpZ2luIG9mIHRoaXMgc29mdHdhcmUgbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQ7IHlvdSBtdXN0IG5vdFxuLy8gICBjbGFpbSB0aGF0IHlvdSB3cm90ZSB0aGUgb3JpZ2luYWwgc29mdHdhcmUuIElmIHlvdSB1c2UgdGhpcyBzb2Z0d2FyZVxuLy8gICBpbiBhIHByb2R1Y3QsIGFuIGFja25vd2xlZGdtZW50IGluIHRoZSBwcm9kdWN0IGRvY3VtZW50YXRpb24gd291bGQgYmVcbi8vICAgYXBwcmVjaWF0ZWQgYnV0IGlzIG5vdCByZXF1aXJlZC5cbi8vIDIuIEFsdGVyZWQgc291cmNlIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCwgYW5kIG11c3Qgbm90IGJlXG4vLyAgIG1pc3JlcHJlc2VudGVkIGFzIGJlaW5nIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS5cbi8vIDMuIFRoaXMgbm90aWNlIG1heSBub3QgYmUgcmVtb3ZlZCBvciBhbHRlcmVkIGZyb20gYW55IHNvdXJjZSBkaXN0cmlidXRpb24uXG5cbi8vIFVzZSBvcmRpbmFyeSBhcnJheSwgc2luY2UgdW50eXBlZCBtYWtlcyBubyBib29zdCBoZXJlXG5mdW5jdGlvbiBtYWtlVGFibGUoKSB7XG4gIHZhciBjLCB0YWJsZSA9IFtdO1xuXG4gIGZvciAodmFyIG4gPSAwOyBuIDwgMjU2OyBuKyspIHtcbiAgICBjID0gbjtcbiAgICBmb3IgKHZhciBrID0gMDsgayA8IDg7IGsrKykge1xuICAgICAgYyA9ICgoYyAmIDEpID8gKDB4RURCODgzMjAgXiAoYyA+Pj4gMSkpIDogKGMgPj4+IDEpKTtcbiAgICB9XG4gICAgdGFibGVbbl0gPSBjO1xuICB9XG5cbiAgcmV0dXJuIHRhYmxlO1xufVxuXG4vLyBDcmVhdGUgdGFibGUgb24gbG9hZC4gSnVzdCAyNTUgc2lnbmVkIGxvbmdzLiBOb3QgYSBwcm9ibGVtLlxudmFyIGNyY1RhYmxlID0gbWFrZVRhYmxlKCk7XG5cblxuZnVuY3Rpb24gY3JjMzIoY3JjLCBidWYsIGxlbiwgcG9zKSB7XG4gIHZhciB0ID0gY3JjVGFibGUsXG4gICAgICBlbmQgPSBwb3MgKyBsZW47XG5cbiAgY3JjIF49IC0xO1xuXG4gIGZvciAodmFyIGkgPSBwb3M7IGkgPCBlbmQ7IGkrKykge1xuICAgIGNyYyA9IChjcmMgPj4+IDgpIF4gdFsoY3JjIF4gYnVmW2ldKSAmIDB4RkZdO1xuICB9XG5cbiAgcmV0dXJuIChjcmMgXiAoLTEpKTsgLy8gPj4+IDA7XG59XG5cblxubW9kdWxlLmV4cG9ydHMgPSBjcmMzMjtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/pako/lib/zlib/crc32.js\n");
              }
            ),
            /***/
            "../../../node_modules/pako/lib/zlib/deflate.js": (
              /*!******************************************************!*\
                !*** ../../../node_modules/pako/lib/zlib/deflate.js ***!
                \******************************************************/
              /***/
              (__unused_webpack_module, exports, __webpack_require__) => {
                "use strict";
                eval(`

// (C) 1995-2013 Jean-loup Gailly and Mark Adler
// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
//   claim that you wrote the original software. If you use this software
//   in a product, an acknowledgment in the product documentation would be
//   appreciated but is not required.
// 2. Altered source versions must be plainly marked as such, and must not be
//   misrepresented as being the original software.
// 3. This notice may not be removed or altered from any source distribution.

var utils   = __webpack_require__(/*! ../utils/common */ "../../../node_modules/pako/lib/utils/common.js");
var trees   = __webpack_require__(/*! ./trees */ "../../../node_modules/pako/lib/zlib/trees.js");
var adler32 = __webpack_require__(/*! ./adler32 */ "../../../node_modules/pako/lib/zlib/adler32.js");
var crc32   = __webpack_require__(/*! ./crc32 */ "../../../node_modules/pako/lib/zlib/crc32.js");
var msg     = __webpack_require__(/*! ./messages */ "../../../node_modules/pako/lib/zlib/messages.js");

/* Public constants ==========================================================*/
/* ===========================================================================*/


/* Allowed flush values; see deflate() and inflate() below for details */
var Z_NO_FLUSH      = 0;
var Z_PARTIAL_FLUSH = 1;
//var Z_SYNC_FLUSH    = 2;
var Z_FULL_FLUSH    = 3;
var Z_FINISH        = 4;
var Z_BLOCK         = 5;
//var Z_TREES         = 6;


/* Return codes for the compression/decompression functions. Negative values
 * are errors, positive values are used for special but normal events.
 */
var Z_OK            = 0;
var Z_STREAM_END    = 1;
//var Z_NEED_DICT     = 2;
//var Z_ERRNO         = -1;
var Z_STREAM_ERROR  = -2;
var Z_DATA_ERROR    = -3;
//var Z_MEM_ERROR     = -4;
var Z_BUF_ERROR     = -5;
//var Z_VERSION_ERROR = -6;


/* compression levels */
//var Z_NO_COMPRESSION      = 0;
//var Z_BEST_SPEED          = 1;
//var Z_BEST_COMPRESSION    = 9;
var Z_DEFAULT_COMPRESSION = -1;


var Z_FILTERED            = 1;
var Z_HUFFMAN_ONLY        = 2;
var Z_RLE                 = 3;
var Z_FIXED               = 4;
var Z_DEFAULT_STRATEGY    = 0;

/* Possible values of the data_type field (though see inflate()) */
//var Z_BINARY              = 0;
//var Z_TEXT                = 1;
//var Z_ASCII               = 1; // = Z_TEXT
var Z_UNKNOWN             = 2;


/* The deflate compression method */
var Z_DEFLATED  = 8;

/*============================================================================*/


var MAX_MEM_LEVEL = 9;
/* Maximum value for memLevel in deflateInit2 */
var MAX_WBITS = 15;
/* 32K LZ77 window */
var DEF_MEM_LEVEL = 8;


var LENGTH_CODES  = 29;
/* number of length codes, not counting the special END_BLOCK code */
var LITERALS      = 256;
/* number of literal bytes 0..255 */
var L_CODES       = LITERALS + 1 + LENGTH_CODES;
/* number of Literal or Length codes, including the END_BLOCK code */
var D_CODES       = 30;
/* number of distance codes */
var BL_CODES      = 19;
/* number of codes used to transfer the bit lengths */
var HEAP_SIZE     = 2 * L_CODES + 1;
/* maximum heap size */
var MAX_BITS  = 15;
/* All codes must not exceed MAX_BITS bits */

var MIN_MATCH = 3;
var MAX_MATCH = 258;
var MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);

var PRESET_DICT = 0x20;

var INIT_STATE = 42;
var EXTRA_STATE = 69;
var NAME_STATE = 73;
var COMMENT_STATE = 91;
var HCRC_STATE = 103;
var BUSY_STATE = 113;
var FINISH_STATE = 666;

var BS_NEED_MORE      = 1; /* block not completed, need more input or more output */
var BS_BLOCK_DONE     = 2; /* block flush performed */
var BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */
var BS_FINISH_DONE    = 4; /* finish done, accept no more input or output */

var OS_CODE = 0x03; // Unix :) . Don't detect, use this default.

function err(strm, errorCode) {
  strm.msg = msg[errorCode];
  return errorCode;
}

function rank(f) {
  return ((f) << 1) - ((f) > 4 ? 9 : 0);
}

function zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }


/* =========================================================================
 * Flush as much pending output as possible. All deflate() output goes
 * through this function so some applications may wish to modify it
 * to avoid allocating a large strm->output buffer and copying into it.
 * (See also read_buf()).
 */
function flush_pending(strm) {
  var s = strm.state;

  //_tr_flush_bits(s);
  var len = s.pending;
  if (len > strm.avail_out) {
    len = strm.avail_out;
  }
  if (len === 0) { return; }

  utils.arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out);
  strm.next_out += len;
  s.pending_out += len;
  strm.total_out += len;
  strm.avail_out -= len;
  s.pending -= len;
  if (s.pending === 0) {
    s.pending_out = 0;
  }
}


function flush_block_only(s, last) {
  trees._tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);
  s.block_start = s.strstart;
  flush_pending(s.strm);
}


function put_byte(s, b) {
  s.pending_buf[s.pending++] = b;
}


/* =========================================================================
 * Put a short in the pending buffer. The 16-bit value is put in MSB order.
 * IN assertion: the stream state is correct and there is enough room in
 * pending_buf.
 */
function putShortMSB(s, b) {
//  put_byte(s, (Byte)(b >> 8));
//  put_byte(s, (Byte)(b & 0xff));
  s.pending_buf[s.pending++] = (b >>> 8) & 0xff;
  s.pending_buf[s.pending++] = b & 0xff;
}


/* ===========================================================================
 * Read a new buffer from the current input stream, update the adler32
 * and total number of bytes read.  All deflate() input goes through
 * this function so some applications may wish to modify it to avoid
 * allocating a large strm->input buffer and copying from it.
 * (See also flush_pending()).
 */
function read_buf(strm, buf, start, size) {
  var len = strm.avail_in;

  if (len > size) { len = size; }
  if (len === 0) { return 0; }

  strm.avail_in -= len;

  // zmemcpy(buf, strm->next_in, len);
  utils.arraySet(buf, strm.input, strm.next_in, len, start);
  if (strm.state.wrap === 1) {
    strm.adler = adler32(strm.adler, buf, len, start);
  }

  else if (strm.state.wrap === 2) {
    strm.adler = crc32(strm.adler, buf, len, start);
  }

  strm.next_in += len;
  strm.total_in += len;

  return len;
}


/* ===========================================================================
 * Set match_start to the longest match starting at the given string and
 * return its length. Matches shorter or equal to prev_length are discarded,
 * in which case the result is equal to prev_length and match_start is
 * garbage.
 * IN assertions: cur_match is the head of the hash chain for the current
 *   string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1
 * OUT assertion: the match length is not greater than s->lookahead.
 */
function longest_match(s, cur_match) {
  var chain_length = s.max_chain_length;      /* max hash chain length */
  var scan = s.strstart; /* current string */
  var match;                       /* matched string */
  var len;                           /* length of current match */
  var best_len = s.prev_length;              /* best match length so far */
  var nice_match = s.nice_match;             /* stop if match long enough */
  var limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?
      s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;

  var _win = s.window; // shortcut

  var wmask = s.w_mask;
  var prev  = s.prev;

  /* Stop when cur_match becomes <= limit. To simplify the code,
   * we prevent matches with the string of window index 0.
   */

  var strend = s.strstart + MAX_MATCH;
  var scan_end1  = _win[scan + best_len - 1];
  var scan_end   = _win[scan + best_len];

  /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.
   * It is easy to get rid of this optimization if necessary.
   */
  // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, "Code too clever");

  /* Do not waste too much time if we already have a good match: */
  if (s.prev_length >= s.good_match) {
    chain_length >>= 2;
  }
  /* Do not look for matches beyond the end of the input. This is necessary
   * to make deflate deterministic.
   */
  if (nice_match > s.lookahead) { nice_match = s.lookahead; }

  // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead");

  do {
    // Assert(cur_match < s->strstart, "no future");
    match = cur_match;

    /* Skip to next match if the match length cannot increase
     * or if the match length is less than 2.  Note that the checks below
     * for insufficient lookahead only occur occasionally for performance
     * reasons.  Therefore uninitialized memory will be accessed, and
     * conditional jumps will be made that depend on those values.
     * However the length of the match is limited to the lookahead, so
     * the output of deflate is not affected by the uninitialized values.
     */

    if (_win[match + best_len]     !== scan_end  ||
        _win[match + best_len - 1] !== scan_end1 ||
        _win[match]                !== _win[scan] ||
        _win[++match]              !== _win[scan + 1]) {
      continue;
    }

    /* The check at best_len-1 can be removed because it will be made
     * again later. (This heuristic is not always a win.)
     * It is not necessary to compare scan[2] and match[2] since they
     * are always equal when the other bytes match, given that
     * the hash keys are equal and that HASH_BITS >= 8.
     */
    scan += 2;
    match++;
    // Assert(*scan == *match, "match[2]?");

    /* We check for insufficient lookahead only every 8th comparison;
     * the 256th check will be made at strstart+258.
     */
    do {
      /*jshint noempty:false*/
    } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
             scan < strend);

    // Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan");

    len = MAX_MATCH - (strend - scan);
    scan = strend - MAX_MATCH;

    if (len > best_len) {
      s.match_start = cur_match;
      best_len = len;
      if (len >= nice_match) {
        break;
      }
      scan_end1  = _win[scan + best_len - 1];
      scan_end   = _win[scan + best_len];
    }
  } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);

  if (best_len <= s.lookahead) {
    return best_len;
  }
  return s.lookahead;
}


/* ===========================================================================
 * Fill the window when the lookahead becomes insufficient.
 * Updates strstart and lookahead.
 *
 * IN assertion: lookahead < MIN_LOOKAHEAD
 * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD
 *    At least one byte has been read, or avail_in == 0; reads are
 *    performed for at least two bytes (required for the zip translate_eol
 *    option -- not supported here).
 */
function fill_window(s) {
  var _w_size = s.w_size;
  var p, n, m, more, str;

  //Assert(s->lookahead < MIN_LOOKAHEAD, "already enough lookahead");

  do {
    more = s.window_size - s.lookahead - s.strstart;

    // JS ints have 32 bit, block below not needed
    /* Deal with !@#$% 64K limit: */
    //if (sizeof(int) <= 2) {
    //    if (more == 0 && s->strstart == 0 && s->lookahead == 0) {
    //        more = wsize;
    //
    //  } else if (more == (unsigned)(-1)) {
    //        /* Very unlikely, but possible on 16 bit machine if
    //         * strstart == 0 && lookahead == 1 (input done a byte at time)
    //         */
    //        more--;
    //    }
    //}


    /* If the window is almost full and there is insufficient lookahead,
     * move the upper half to the lower one to make room in the upper half.
     */
    if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {

      utils.arraySet(s.window, s.window, _w_size, _w_size, 0);
      s.match_start -= _w_size;
      s.strstart -= _w_size;
      /* we now have strstart >= MAX_DIST */
      s.block_start -= _w_size;

      /* Slide the hash table (could be avoided with 32 bit values
       at the expense of memory usage). We slide even when level == 0
       to keep the hash table consistent if we switch back to level > 0
       later. (Using level 0 permanently is not an optimal usage of
       zlib, so we don't care about this pathological case.)
       */

      n = s.hash_size;
      p = n;
      do {
        m = s.head[--p];
        s.head[p] = (m >= _w_size ? m - _w_size : 0);
      } while (--n);

      n = _w_size;
      p = n;
      do {
        m = s.prev[--p];
        s.prev[p] = (m >= _w_size ? m - _w_size : 0);
        /* If n is not on any hash chain, prev[n] is garbage but
         * its value will never be used.
         */
      } while (--n);

      more += _w_size;
    }
    if (s.strm.avail_in === 0) {
      break;
    }

    /* If there was no sliding:
     *    strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&
     *    more == window_size - lookahead - strstart
     * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)
     * => more >= window_size - 2*WSIZE + 2
     * In the BIG_MEM or MMAP case (not yet supported),
     *   window_size == input_size + MIN_LOOKAHEAD  &&
     *   strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.
     * Otherwise, window_size == 2*WSIZE so more >= 2.
     * If there was sliding, more >= WSIZE. So in all cases, more >= 2.
     */
    //Assert(more >= 2, "more < 2");
    n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);
    s.lookahead += n;

    /* Initialize the hash value now that we have some input: */
    if (s.lookahead + s.insert >= MIN_MATCH) {
      str = s.strstart - s.insert;
      s.ins_h = s.window[str];

      /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */
      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask;
//#if MIN_MATCH != 3
//        Call update_hash() MIN_MATCH-3 more times
//#endif
      while (s.insert) {
        /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */
        s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;

        s.prev[str & s.w_mask] = s.head[s.ins_h];
        s.head[s.ins_h] = str;
        str++;
        s.insert--;
        if (s.lookahead + s.insert < MIN_MATCH) {
          break;
        }
      }
    }
    /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,
     * but this is not important since only literal bytes will be emitted.
     */

  } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);

  /* If the WIN_INIT bytes after the end of the current data have never been
   * written, then zero those bytes in order to avoid memory check reports of
   * the use of uninitialized (or uninitialised as Julian writes) bytes by
   * the longest match routines.  Update the high water mark for the next
   * time through here.  WIN_INIT is set to MAX_MATCH since the longest match
   * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.
   */
//  if (s.high_water < s.window_size) {
//    var curr = s.strstart + s.lookahead;
//    var init = 0;
//
//    if (s.high_water < curr) {
//      /* Previous high water mark below current data -- zero WIN_INIT
//       * bytes or up to end of window, whichever is less.
//       */
//      init = s.window_size - curr;
//      if (init > WIN_INIT)
//        init = WIN_INIT;
//      zmemzero(s->window + curr, (unsigned)init);
//      s->high_water = curr + init;
//    }
//    else if (s->high_water < (ulg)curr + WIN_INIT) {
//      /* High water mark at or above current data, but below current data
//       * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up
//       * to end of window, whichever is less.
//       */
//      init = (ulg)curr + WIN_INIT - s->high_water;
//      if (init > s->window_size - s->high_water)
//        init = s->window_size - s->high_water;
//      zmemzero(s->window + s->high_water, (unsigned)init);
//      s->high_water += init;
//    }
//  }
//
//  Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,
//    "not enough room for search");
}

/* ===========================================================================
 * Copy without compression as much as possible from the input stream, return
 * the current block state.
 * This function does not insert new strings in the dictionary since
 * uncompressible data is probably not useful. This function is used
 * only for the level=0 compression option.
 * NOTE: this function should be optimized to avoid extra copying from
 * window to pending_buf.
 */
function deflate_stored(s, flush) {
  /* Stored blocks are limited to 0xffff bytes, pending_buf is limited
   * to pending_buf_size, and each stored block has a 5 byte header:
   */
  var max_block_size = 0xffff;

  if (max_block_size > s.pending_buf_size - 5) {
    max_block_size = s.pending_buf_size - 5;
  }

  /* Copy as much as possible from input to output: */
  for (;;) {
    /* Fill the window as much as possible: */
    if (s.lookahead <= 1) {

      //Assert(s->strstart < s->w_size+MAX_DIST(s) ||
      //  s->block_start >= (long)s->w_size, "slide too late");
//      if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||
//        s.block_start >= s.w_size)) {
//        throw  new Error("slide too late");
//      }

      fill_window(s);
      if (s.lookahead === 0 && flush === Z_NO_FLUSH) {
        return BS_NEED_MORE;
      }

      if (s.lookahead === 0) {
        break;
      }
      /* flush the current block */
    }
    //Assert(s->block_start >= 0L, "block gone");
//    if (s.block_start < 0) throw new Error("block gone");

    s.strstart += s.lookahead;
    s.lookahead = 0;

    /* Emit a stored block if pending_buf will be full: */
    var max_start = s.block_start + max_block_size;

    if (s.strstart === 0 || s.strstart >= max_start) {
      /* strstart == 0 is possible when wraparound on 16-bit machine */
      s.lookahead = s.strstart - max_start;
      s.strstart = max_start;
      /*** FLUSH_BLOCK(s, 0); ***/
      flush_block_only(s, false);
      if (s.strm.avail_out === 0) {
        return BS_NEED_MORE;
      }
      /***/


    }
    /* Flush if we may have to slide, otherwise block_start may become
     * negative and the data will be gone:
     */
    if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) {
      /*** FLUSH_BLOCK(s, 0); ***/
      flush_block_only(s, false);
      if (s.strm.avail_out === 0) {
        return BS_NEED_MORE;
      }
      /***/
    }
  }

  s.insert = 0;

  if (flush === Z_FINISH) {
    /*** FLUSH_BLOCK(s, 1); ***/
    flush_block_only(s, true);
    if (s.strm.avail_out === 0) {
      return BS_FINISH_STARTED;
    }
    /***/
    return BS_FINISH_DONE;
  }

  if (s.strstart > s.block_start) {
    /*** FLUSH_BLOCK(s, 0); ***/
    flush_block_only(s, false);
    if (s.strm.avail_out === 0) {
      return BS_NEED_MORE;
    }
    /***/
  }

  return BS_NEED_MORE;
}

/* ===========================================================================
 * Compress as much as possible from the input stream, return the current
 * block state.
 * This function does not perform lazy evaluation of matches and inserts
 * new strings in the dictionary only for unmatched strings or for short
 * matches. It is used only for the fast compression options.
 */
function deflate_fast(s, flush) {
  var hash_head;        /* head of the hash chain */
  var bflush;           /* set if current block must be flushed */

  for (;;) {
    /* Make sure that we always have enough lookahead, except
     * at the end of the input file. We need MAX_MATCH bytes
     * for the next match, plus MIN_MATCH bytes to insert the
     * string following the next match.
     */
    if (s.lookahead < MIN_LOOKAHEAD) {
      fill_window(s);
      if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {
        return BS_NEED_MORE;
      }
      if (s.lookahead === 0) {
        break; /* flush the current block */
      }
    }

    /* Insert the string window[strstart .. strstart+2] in the
     * dictionary, and set hash_head to the head of the hash chain:
     */
    hash_head = 0/*NIL*/;
    if (s.lookahead >= MIN_MATCH) {
      /*** INSERT_STRING(s, s.strstart, hash_head); ***/
      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
      hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
      s.head[s.ins_h] = s.strstart;
      /***/
    }

    /* Find the longest match, discarding those <= prev_length.
     * At this point we have always match_length < MIN_MATCH
     */
    if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {
      /* To simplify the code, we prevent matches with the string
       * of window index 0 (in particular we have to avoid a match
       * of the string with itself at the start of the input file).
       */
      s.match_length = longest_match(s, hash_head);
      /* longest_match() sets match_start */
    }
    if (s.match_length >= MIN_MATCH) {
      // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only

      /*** _tr_tally_dist(s, s.strstart - s.match_start,
                     s.match_length - MIN_MATCH, bflush); ***/
      bflush = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);

      s.lookahead -= s.match_length;

      /* Insert new strings in the hash table only if the match length
       * is not too large. This saves time but degrades compression.
       */
      if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) {
        s.match_length--; /* string at strstart already in table */
        do {
          s.strstart++;
          /*** INSERT_STRING(s, s.strstart, hash_head); ***/
          s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
          hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
          s.head[s.ins_h] = s.strstart;
          /***/
          /* strstart never exceeds WSIZE-MAX_MATCH, so there are
           * always MIN_MATCH bytes ahead.
           */
        } while (--s.match_length !== 0);
        s.strstart++;
      } else
      {
        s.strstart += s.match_length;
        s.match_length = 0;
        s.ins_h = s.window[s.strstart];
        /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */
        s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask;

//#if MIN_MATCH != 3
//                Call UPDATE_HASH() MIN_MATCH-3 more times
//#endif
        /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not
         * matter since it will be recomputed at next deflate call.
         */
      }
    } else {
      /* No match, output a literal byte */
      //Tracevv((stderr,"%c", s.window[s.strstart]));
      /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/
      bflush = trees._tr_tally(s, 0, s.window[s.strstart]);

      s.lookahead--;
      s.strstart++;
    }
    if (bflush) {
      /*** FLUSH_BLOCK(s, 0); ***/
      flush_block_only(s, false);
      if (s.strm.avail_out === 0) {
        return BS_NEED_MORE;
      }
      /***/
    }
  }
  s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1);
  if (flush === Z_FINISH) {
    /*** FLUSH_BLOCK(s, 1); ***/
    flush_block_only(s, true);
    if (s.strm.avail_out === 0) {
      return BS_FINISH_STARTED;
    }
    /***/
    return BS_FINISH_DONE;
  }
  if (s.last_lit) {
    /*** FLUSH_BLOCK(s, 0); ***/
    flush_block_only(s, false);
    if (s.strm.avail_out === 0) {
      return BS_NEED_MORE;
    }
    /***/
  }
  return BS_BLOCK_DONE;
}

/* ===========================================================================
 * Same as above, but achieves better compression. We use a lazy
 * evaluation for matches: a match is finally adopted only if there is
 * no better match at the next window position.
 */
function deflate_slow(s, flush) {
  var hash_head;          /* head of hash chain */
  var bflush;              /* set if current block must be flushed */

  var max_insert;

  /* Process the input block. */
  for (;;) {
    /* Make sure that we always have enough lookahead, except
     * at the end of the input file. We need MAX_MATCH bytes
     * for the next match, plus MIN_MATCH bytes to insert the
     * string following the next match.
     */
    if (s.lookahead < MIN_LOOKAHEAD) {
      fill_window(s);
      if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {
        return BS_NEED_MORE;
      }
      if (s.lookahead === 0) { break; } /* flush the current block */
    }

    /* Insert the string window[strstart .. strstart+2] in the
     * dictionary, and set hash_head to the head of the hash chain:
     */
    hash_head = 0/*NIL*/;
    if (s.lookahead >= MIN_MATCH) {
      /*** INSERT_STRING(s, s.strstart, hash_head); ***/
      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
      hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
      s.head[s.ins_h] = s.strstart;
      /***/
    }

    /* Find the longest match, discarding those <= prev_length.
     */
    s.prev_length = s.match_length;
    s.prev_match = s.match_start;
    s.match_length = MIN_MATCH - 1;

    if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&
        s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {
      /* To simplify the code, we prevent matches with the string
       * of window index 0 (in particular we have to avoid a match
       * of the string with itself at the start of the input file).
       */
      s.match_length = longest_match(s, hash_head);
      /* longest_match() sets match_start */

      if (s.match_length <= 5 &&
         (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {

        /* If prev_match is also MIN_MATCH, match_start is garbage
         * but we will ignore the current match anyway.
         */
        s.match_length = MIN_MATCH - 1;
      }
    }
    /* If there was a match at the previous step and the current
     * match is not better, output the previous match:
     */
    if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {
      max_insert = s.strstart + s.lookahead - MIN_MATCH;
      /* Do not insert strings in hash table beyond this. */

      //check_match(s, s.strstart-1, s.prev_match, s.prev_length);

      /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,
                     s.prev_length - MIN_MATCH, bflush);***/
      bflush = trees._tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);
      /* Insert in hash table all strings up to the end of the match.
       * strstart-1 and strstart are already inserted. If there is not
       * enough lookahead, the last two strings are not inserted in
       * the hash table.
       */
      s.lookahead -= s.prev_length - 1;
      s.prev_length -= 2;
      do {
        if (++s.strstart <= max_insert) {
          /*** INSERT_STRING(s, s.strstart, hash_head); ***/
          s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
          hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
          s.head[s.ins_h] = s.strstart;
          /***/
        }
      } while (--s.prev_length !== 0);
      s.match_available = 0;
      s.match_length = MIN_MATCH - 1;
      s.strstart++;

      if (bflush) {
        /*** FLUSH_BLOCK(s, 0); ***/
        flush_block_only(s, false);
        if (s.strm.avail_out === 0) {
          return BS_NEED_MORE;
        }
        /***/
      }

    } else if (s.match_available) {
      /* If there was no match at the previous position, output a
       * single literal. If there was a match but the current match
       * is longer, truncate the previous match to a single literal.
       */
      //Tracevv((stderr,"%c", s->window[s->strstart-1]));
      /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/
      bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);

      if (bflush) {
        /*** FLUSH_BLOCK_ONLY(s, 0) ***/
        flush_block_only(s, false);
        /***/
      }
      s.strstart++;
      s.lookahead--;
      if (s.strm.avail_out === 0) {
        return BS_NEED_MORE;
      }
    } else {
      /* There is no previous match to compare with, wait for
       * the next step to decide.
       */
      s.match_available = 1;
      s.strstart++;
      s.lookahead--;
    }
  }
  //Assert (flush != Z_NO_FLUSH, "no flush?");
  if (s.match_available) {
    //Tracevv((stderr,"%c", s->window[s->strstart-1]));
    /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/
    bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);

    s.match_available = 0;
  }
  s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;
  if (flush === Z_FINISH) {
    /*** FLUSH_BLOCK(s, 1); ***/
    flush_block_only(s, true);
    if (s.strm.avail_out === 0) {
      return BS_FINISH_STARTED;
    }
    /***/
    return BS_FINISH_DONE;
  }
  if (s.last_lit) {
    /*** FLUSH_BLOCK(s, 0); ***/
    flush_block_only(s, false);
    if (s.strm.avail_out === 0) {
      return BS_NEED_MORE;
    }
    /***/
  }

  return BS_BLOCK_DONE;
}


/* ===========================================================================
 * For Z_RLE, simply look for runs of bytes, generate matches only of distance
 * one.  Do not maintain a hash table.  (It will be regenerated if this run of
 * deflate switches away from Z_RLE.)
 */
function deflate_rle(s, flush) {
  var bflush;            /* set if current block must be flushed */
  var prev;              /* byte at distance one to match */
  var scan, strend;      /* scan goes up to strend for length of run */

  var _win = s.window;

  for (;;) {
    /* Make sure that we always have enough lookahead, except
     * at the end of the input file. We need MAX_MATCH bytes
     * for the longest run, plus one for the unrolled loop.
     */
    if (s.lookahead <= MAX_MATCH) {
      fill_window(s);
      if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) {
        return BS_NEED_MORE;
      }
      if (s.lookahead === 0) { break; } /* flush the current block */
    }

    /* See how many times the previous byte repeats */
    s.match_length = 0;
    if (s.lookahead >= MIN_MATCH && s.strstart > 0) {
      scan = s.strstart - 1;
      prev = _win[scan];
      if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {
        strend = s.strstart + MAX_MATCH;
        do {
          /*jshint noempty:false*/
        } while (prev === _win[++scan] && prev === _win[++scan] &&
                 prev === _win[++scan] && prev === _win[++scan] &&
                 prev === _win[++scan] && prev === _win[++scan] &&
                 prev === _win[++scan] && prev === _win[++scan] &&
                 scan < strend);
        s.match_length = MAX_MATCH - (strend - scan);
        if (s.match_length > s.lookahead) {
          s.match_length = s.lookahead;
        }
      }
      //Assert(scan <= s->window+(uInt)(s->window_size-1), "wild scan");
    }

    /* Emit match if have run of MIN_MATCH or longer, else emit literal */
    if (s.match_length >= MIN_MATCH) {
      //check_match(s, s.strstart, s.strstart - 1, s.match_length);

      /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/
      bflush = trees._tr_tally(s, 1, s.match_length - MIN_MATCH);

      s.lookahead -= s.match_length;
      s.strstart += s.match_length;
      s.match_length = 0;
    } else {
      /* No match, output a literal byte */
      //Tracevv((stderr,"%c", s->window[s->strstart]));
      /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/
      bflush = trees._tr_tally(s, 0, s.window[s.strstart]);

      s.lookahead--;
      s.strstart++;
    }
    if (bflush) {
      /*** FLUSH_BLOCK(s, 0); ***/
      flush_block_only(s, false);
      if (s.strm.avail_out === 0) {
        return BS_NEED_MORE;
      }
      /***/
    }
  }
  s.insert = 0;
  if (flush === Z_FINISH) {
    /*** FLUSH_BLOCK(s, 1); ***/
    flush_block_only(s, true);
    if (s.strm.avail_out === 0) {
      return BS_FINISH_STARTED;
    }
    /***/
    return BS_FINISH_DONE;
  }
  if (s.last_lit) {
    /*** FLUSH_BLOCK(s, 0); ***/
    flush_block_only(s, false);
    if (s.strm.avail_out === 0) {
      return BS_NEED_MORE;
    }
    /***/
  }
  return BS_BLOCK_DONE;
}

/* ===========================================================================
 * For Z_HUFFMAN_ONLY, do not look for matches.  Do not maintain a hash table.
 * (It will be regenerated if this run of deflate switches away from Huffman.)
 */
function deflate_huff(s, flush) {
  var bflush;             /* set if current block must be flushed */

  for (;;) {
    /* Make sure that we have a literal to write. */
    if (s.lookahead === 0) {
      fill_window(s);
      if (s.lookahead === 0) {
        if (flush === Z_NO_FLUSH) {
          return BS_NEED_MORE;
        }
        break;      /* flush the current block */
      }
    }

    /* Output a literal byte */
    s.match_length = 0;
    //Tracevv((stderr,"%c", s->window[s->strstart]));
    /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/
    bflush = trees._tr_tally(s, 0, s.window[s.strstart]);
    s.lookahead--;
    s.strstart++;
    if (bflush) {
      /*** FLUSH_BLOCK(s, 0); ***/
      flush_block_only(s, false);
      if (s.strm.avail_out === 0) {
        return BS_NEED_MORE;
      }
      /***/
    }
  }
  s.insert = 0;
  if (flush === Z_FINISH) {
    /*** FLUSH_BLOCK(s, 1); ***/
    flush_block_only(s, true);
    if (s.strm.avail_out === 0) {
      return BS_FINISH_STARTED;
    }
    /***/
    return BS_FINISH_DONE;
  }
  if (s.last_lit) {
    /*** FLUSH_BLOCK(s, 0); ***/
    flush_block_only(s, false);
    if (s.strm.avail_out === 0) {
      return BS_NEED_MORE;
    }
    /***/
  }
  return BS_BLOCK_DONE;
}

/* Values for max_lazy_match, good_match and max_chain_length, depending on
 * the desired pack level (0..9). The values given below have been tuned to
 * exclude worst case performance for pathological files. Better values may be
 * found for specific files.
 */
function Config(good_length, max_lazy, nice_length, max_chain, func) {
  this.good_length = good_length;
  this.max_lazy = max_lazy;
  this.nice_length = nice_length;
  this.max_chain = max_chain;
  this.func = func;
}

var configuration_table;

configuration_table = [
  /*      good lazy nice chain */
  new Config(0, 0, 0, 0, deflate_stored),          /* 0 store only */
  new Config(4, 4, 8, 4, deflate_fast),            /* 1 max speed, no lazy matches */
  new Config(4, 5, 16, 8, deflate_fast),           /* 2 */
  new Config(4, 6, 32, 32, deflate_fast),          /* 3 */

  new Config(4, 4, 16, 16, deflate_slow),          /* 4 lazy matches */
  new Config(8, 16, 32, 32, deflate_slow),         /* 5 */
  new Config(8, 16, 128, 128, deflate_slow),       /* 6 */
  new Config(8, 32, 128, 256, deflate_slow),       /* 7 */
  new Config(32, 128, 258, 1024, deflate_slow),    /* 8 */
  new Config(32, 258, 258, 4096, deflate_slow)     /* 9 max compression */
];


/* ===========================================================================
 * Initialize the "longest match" routines for a new zlib stream
 */
function lm_init(s) {
  s.window_size = 2 * s.w_size;

  /*** CLEAR_HASH(s); ***/
  zero(s.head); // Fill with NIL (= 0);

  /* Set the default configuration parameters:
   */
  s.max_lazy_match = configuration_table[s.level].max_lazy;
  s.good_match = configuration_table[s.level].good_length;
  s.nice_match = configuration_table[s.level].nice_length;
  s.max_chain_length = configuration_table[s.level].max_chain;

  s.strstart = 0;
  s.block_start = 0;
  s.lookahead = 0;
  s.insert = 0;
  s.match_length = s.prev_length = MIN_MATCH - 1;
  s.match_available = 0;
  s.ins_h = 0;
}


function DeflateState() {
  this.strm = null;            /* pointer back to this zlib stream */
  this.status = 0;            /* as the name implies */
  this.pending_buf = null;      /* output still pending */
  this.pending_buf_size = 0;  /* size of pending_buf */
  this.pending_out = 0;       /* next pending byte to output to the stream */
  this.pending = 0;           /* nb of bytes in the pending buffer */
  this.wrap = 0;              /* bit 0 true for zlib, bit 1 true for gzip */
  this.gzhead = null;         /* gzip header information to write */
  this.gzindex = 0;           /* where in extra, name, or comment */
  this.method = Z_DEFLATED; /* can only be DEFLATED */
  this.last_flush = -1;   /* value of flush param for previous deflate call */

  this.w_size = 0;  /* LZ77 window size (32K by default) */
  this.w_bits = 0;  /* log2(w_size)  (8..16) */
  this.w_mask = 0;  /* w_size - 1 */

  this.window = null;
  /* Sliding window. Input bytes are read into the second half of the window,
   * and move to the first half later to keep a dictionary of at least wSize
   * bytes. With this organization, matches are limited to a distance of
   * wSize-MAX_MATCH bytes, but this ensures that IO is always
   * performed with a length multiple of the block size.
   */

  this.window_size = 0;
  /* Actual size of window: 2*wSize, except when the user input buffer
   * is directly used as sliding window.
   */

  this.prev = null;
  /* Link to older string with same hash index. To limit the size of this
   * array to 64K, this link is maintained only for the last 32K strings.
   * An index in this array is thus a window index modulo 32K.
   */

  this.head = null;   /* Heads of the hash chains or NIL. */

  this.ins_h = 0;       /* hash index of string to be inserted */
  this.hash_size = 0;   /* number of elements in hash table */
  this.hash_bits = 0;   /* log2(hash_size) */
  this.hash_mask = 0;   /* hash_size-1 */

  this.hash_shift = 0;
  /* Number of bits by which ins_h must be shifted at each input
   * step. It must be such that after MIN_MATCH steps, the oldest
   * byte no longer takes part in the hash key, that is:
   *   hash_shift * MIN_MATCH >= hash_bits
   */

  this.block_start = 0;
  /* Window position at the beginning of the current output block. Gets
   * negative when the window is moved backwards.
   */

  this.match_length = 0;      /* length of best match */
  this.prev_match = 0;        /* previous match */
  this.match_available = 0;   /* set if previous match exists */
  this.strstart = 0;          /* start of string to insert */
  this.match_start = 0;       /* start of matching string */
  this.lookahead = 0;         /* number of valid bytes ahead in window */

  this.prev_length = 0;
  /* Length of the best match at previous step. Matches not greater than this
   * are discarded. This is used in the lazy match evaluation.
   */

  this.max_chain_length = 0;
  /* To speed up deflation, hash chains are never searched beyond this
   * length.  A higher limit improves compression ratio but degrades the
   * speed.
   */

  this.max_lazy_match = 0;
  /* Attempt to find a better match only when the current match is strictly
   * smaller than this value. This mechanism is used only for compression
   * levels >= 4.
   */
  // That's alias to max_lazy_match, don't use directly
  //this.max_insert_length = 0;
  /* Insert new strings in the hash table only if the match length is not
   * greater than this length. This saves time but degrades compression.
   * max_insert_length is used only for compression levels <= 3.
   */

  this.level = 0;     /* compression level (1..9) */
  this.strategy = 0;  /* favor or force Huffman coding*/

  this.good_match = 0;
  /* Use a faster search when the previous match is longer than this */

  this.nice_match = 0; /* Stop searching when current match exceeds this */

              /* used by trees.c: */

  /* Didn't use ct_data typedef below to suppress compiler warning */

  // struct ct_data_s dyn_ltree[HEAP_SIZE];   /* literal and length tree */
  // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */
  // struct ct_data_s bl_tree[2*BL_CODES+1];  /* Huffman tree for bit lengths */

  // Use flat array of DOUBLE size, with interleaved fata,
  // because JS does not support effective
  this.dyn_ltree  = new utils.Buf16(HEAP_SIZE * 2);
  this.dyn_dtree  = new utils.Buf16((2 * D_CODES + 1) * 2);
  this.bl_tree    = new utils.Buf16((2 * BL_CODES + 1) * 2);
  zero(this.dyn_ltree);
  zero(this.dyn_dtree);
  zero(this.bl_tree);

  this.l_desc   = null;         /* desc. for literal tree */
  this.d_desc   = null;         /* desc. for distance tree */
  this.bl_desc  = null;         /* desc. for bit length tree */

  //ush bl_count[MAX_BITS+1];
  this.bl_count = new utils.Buf16(MAX_BITS + 1);
  /* number of codes at each bit length for an optimal tree */

  //int heap[2*L_CODES+1];      /* heap used to build the Huffman trees */
  this.heap = new utils.Buf16(2 * L_CODES + 1);  /* heap used to build the Huffman trees */
  zero(this.heap);

  this.heap_len = 0;               /* number of elements in the heap */
  this.heap_max = 0;               /* element of largest frequency */
  /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.
   * The same heap array is used to build all trees.
   */

  this.depth = new utils.Buf16(2 * L_CODES + 1); //uch depth[2*L_CODES+1];
  zero(this.depth);
  /* Depth of each subtree used as tie breaker for trees of equal frequency
   */

  this.l_buf = 0;          /* buffer index for literals or lengths */

  this.lit_bufsize = 0;
  /* Size of match buffer for literals/lengths.  There are 4 reasons for
   * limiting lit_bufsize to 64K:
   *   - frequencies can be kept in 16 bit counters
   *   - if compression is not successful for the first block, all input
   *     data is still in the window so we can still emit a stored block even
   *     when input comes from standard input.  (This can also be done for
   *     all blocks if lit_bufsize is not greater than 32K.)
   *   - if compression is not successful for a file smaller than 64K, we can
   *     even emit a stored file instead of a stored block (saving 5 bytes).
   *     This is applicable only for zip (not gzip or zlib).
   *   - creating new Huffman trees less frequently may not provide fast
   *     adaptation to changes in the input data statistics. (Take for
   *     example a binary file with poorly compressible code followed by
   *     a highly compressible string table.) Smaller buffer sizes give
   *     fast adaptation but have of course the overhead of transmitting
   *     trees more frequently.
   *   - I can't count above 4
   */

  this.last_lit = 0;      /* running index in l_buf */

  this.d_buf = 0;
  /* Buffer index for distances. To simplify the code, d_buf and l_buf have
   * the same number of elements. To use different lengths, an extra flag
   * array would be necessary.
   */

  this.opt_len = 0;       /* bit length of current block with optimal trees */
  this.static_len = 0;    /* bit length of current block with static trees */
  this.matches = 0;       /* number of string matches in current block */
  this.insert = 0;        /* bytes at end of window left to insert */


  this.bi_buf = 0;
  /* Output buffer. bits are inserted starting at the bottom (least
   * significant bits).
   */
  this.bi_valid = 0;
  /* Number of valid bits in bi_buf.  All bits above the last valid bit
   * are always zero.
   */

  // Used for window memory init. We safely ignore it for JS. That makes
  // sense only for pointers and memory check tools.
  //this.high_water = 0;
  /* High water mark offset in window for initialized bytes -- bytes above
   * this are set to zero in order to avoid memory check warnings when
   * longest match routines access bytes past the input.  This is then
   * updated to the new high water mark.
   */
}


function deflateResetKeep(strm) {
  var s;

  if (!strm || !strm.state) {
    return err(strm, Z_STREAM_ERROR);
  }

  strm.total_in = strm.total_out = 0;
  strm.data_type = Z_UNKNOWN;

  s = strm.state;
  s.pending = 0;
  s.pending_out = 0;

  if (s.wrap < 0) {
    s.wrap = -s.wrap;
    /* was made negative by deflate(..., Z_FINISH); */
  }
  s.status = (s.wrap ? INIT_STATE : BUSY_STATE);
  strm.adler = (s.wrap === 2) ?
    0  // crc32(0, Z_NULL, 0)
  :
    1; // adler32(0, Z_NULL, 0)
  s.last_flush = Z_NO_FLUSH;
  trees._tr_init(s);
  return Z_OK;
}


function deflateReset(strm) {
  var ret = deflateResetKeep(strm);
  if (ret === Z_OK) {
    lm_init(strm.state);
  }
  return ret;
}


function deflateSetHeader(strm, head) {
  if (!strm || !strm.state) { return Z_STREAM_ERROR; }
  if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; }
  strm.state.gzhead = head;
  return Z_OK;
}


function deflateInit2(strm, level, method, windowBits, memLevel, strategy) {
  if (!strm) { // === Z_NULL
    return Z_STREAM_ERROR;
  }
  var wrap = 1;

  if (level === Z_DEFAULT_COMPRESSION) {
    level = 6;
  }

  if (windowBits < 0) { /* suppress zlib wrapper */
    wrap = 0;
    windowBits = -windowBits;
  }

  else if (windowBits > 15) {
    wrap = 2;           /* write gzip wrapper instead */
    windowBits -= 16;
  }


  if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED ||
    windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||
    strategy < 0 || strategy > Z_FIXED) {
    return err(strm, Z_STREAM_ERROR);
  }


  if (windowBits === 8) {
    windowBits = 9;
  }
  /* until 256-byte window bug fixed */

  var s = new DeflateState();

  strm.state = s;
  s.strm = strm;

  s.wrap = wrap;
  s.gzhead = null;
  s.w_bits = windowBits;
  s.w_size = 1 << s.w_bits;
  s.w_mask = s.w_size - 1;

  s.hash_bits = memLevel + 7;
  s.hash_size = 1 << s.hash_bits;
  s.hash_mask = s.hash_size - 1;
  s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);

  s.window = new utils.Buf8(s.w_size * 2);
  s.head = new utils.Buf16(s.hash_size);
  s.prev = new utils.Buf16(s.w_size);

  // Don't need mem init magic for JS.
  //s.high_water = 0;  /* nothing written to s->window yet */

  s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */

  s.pending_buf_size = s.lit_bufsize * 4;

  //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);
  //s->pending_buf = (uchf *) overlay;
  s.pending_buf = new utils.Buf8(s.pending_buf_size);

  // It is offset from \`s.pending_buf\` (size is \`s.lit_bufsize * 2\`)
  //s->d_buf = overlay + s->lit_bufsize/sizeof(ush);
  s.d_buf = 1 * s.lit_bufsize;

  //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;
  s.l_buf = (1 + 2) * s.lit_bufsize;

  s.level = level;
  s.strategy = strategy;
  s.method = method;

  return deflateReset(strm);
}

function deflateInit(strm, level) {
  return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY);
}


function deflate(strm, flush) {
  var old_flush, s;
  var beg, val; // for gzip header write only

  if (!strm || !strm.state ||
    flush > Z_BLOCK || flush < 0) {
    return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;
  }

  s = strm.state;

  if (!strm.output ||
      (!strm.input && strm.avail_in !== 0) ||
      (s.status === FINISH_STATE && flush !== Z_FINISH)) {
    return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);
  }

  s.strm = strm; /* just in case */
  old_flush = s.last_flush;
  s.last_flush = flush;

  /* Write the header */
  if (s.status === INIT_STATE) {

    if (s.wrap === 2) { // GZIP header
      strm.adler = 0;  //crc32(0L, Z_NULL, 0);
      put_byte(s, 31);
      put_byte(s, 139);
      put_byte(s, 8);
      if (!s.gzhead) { // s->gzhead == Z_NULL
        put_byte(s, 0);
        put_byte(s, 0);
        put_byte(s, 0);
        put_byte(s, 0);
        put_byte(s, 0);
        put_byte(s, s.level === 9 ? 2 :
                    (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?
                     4 : 0));
        put_byte(s, OS_CODE);
        s.status = BUSY_STATE;
      }
      else {
        put_byte(s, (s.gzhead.text ? 1 : 0) +
                    (s.gzhead.hcrc ? 2 : 0) +
                    (!s.gzhead.extra ? 0 : 4) +
                    (!s.gzhead.name ? 0 : 8) +
                    (!s.gzhead.comment ? 0 : 16)
        );
        put_byte(s, s.gzhead.time & 0xff);
        put_byte(s, (s.gzhead.time >> 8) & 0xff);
        put_byte(s, (s.gzhead.time >> 16) & 0xff);
        put_byte(s, (s.gzhead.time >> 24) & 0xff);
        put_byte(s, s.level === 9 ? 2 :
                    (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?
                     4 : 0));
        put_byte(s, s.gzhead.os & 0xff);
        if (s.gzhead.extra && s.gzhead.extra.length) {
          put_byte(s, s.gzhead.extra.length & 0xff);
          put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);
        }
        if (s.gzhead.hcrc) {
          strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);
        }
        s.gzindex = 0;
        s.status = EXTRA_STATE;
      }
    }
    else // DEFLATE header
    {
      var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;
      var level_flags = -1;

      if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {
        level_flags = 0;
      } else if (s.level < 6) {
        level_flags = 1;
      } else if (s.level === 6) {
        level_flags = 2;
      } else {
        level_flags = 3;
      }
      header |= (level_flags << 6);
      if (s.strstart !== 0) { header |= PRESET_DICT; }
      header += 31 - (header % 31);

      s.status = BUSY_STATE;
      putShortMSB(s, header);

      /* Save the adler32 of the preset dictionary: */
      if (s.strstart !== 0) {
        putShortMSB(s, strm.adler >>> 16);
        putShortMSB(s, strm.adler & 0xffff);
      }
      strm.adler = 1; // adler32(0L, Z_NULL, 0);
    }
  }

//#ifdef GZIP
  if (s.status === EXTRA_STATE) {
    if (s.gzhead.extra/* != Z_NULL*/) {
      beg = s.pending;  /* start of bytes to update crc */

      while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {
        if (s.pending === s.pending_buf_size) {
          if (s.gzhead.hcrc && s.pending > beg) {
            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
          }
          flush_pending(strm);
          beg = s.pending;
          if (s.pending === s.pending_buf_size) {
            break;
          }
        }
        put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);
        s.gzindex++;
      }
      if (s.gzhead.hcrc && s.pending > beg) {
        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
      }
      if (s.gzindex === s.gzhead.extra.length) {
        s.gzindex = 0;
        s.status = NAME_STATE;
      }
    }
    else {
      s.status = NAME_STATE;
    }
  }
  if (s.status === NAME_STATE) {
    if (s.gzhead.name/* != Z_NULL*/) {
      beg = s.pending;  /* start of bytes to update crc */
      //int val;

      do {
        if (s.pending === s.pending_buf_size) {
          if (s.gzhead.hcrc && s.pending > beg) {
            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
          }
          flush_pending(strm);
          beg = s.pending;
          if (s.pending === s.pending_buf_size) {
            val = 1;
            break;
          }
        }
        // JS specific: little magic to add zero terminator to end of string
        if (s.gzindex < s.gzhead.name.length) {
          val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;
        } else {
          val = 0;
        }
        put_byte(s, val);
      } while (val !== 0);

      if (s.gzhead.hcrc && s.pending > beg) {
        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
      }
      if (val === 0) {
        s.gzindex = 0;
        s.status = COMMENT_STATE;
      }
    }
    else {
      s.status = COMMENT_STATE;
    }
  }
  if (s.status === COMMENT_STATE) {
    if (s.gzhead.comment/* != Z_NULL*/) {
      beg = s.pending;  /* start of bytes to update crc */
      //int val;

      do {
        if (s.pending === s.pending_buf_size) {
          if (s.gzhead.hcrc && s.pending > beg) {
            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
          }
          flush_pending(strm);
          beg = s.pending;
          if (s.pending === s.pending_buf_size) {
            val = 1;
            break;
          }
        }
        // JS specific: little magic to add zero terminator to end of string
        if (s.gzindex < s.gzhead.comment.length) {
          val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;
        } else {
          val = 0;
        }
        put_byte(s, val);
      } while (val !== 0);

      if (s.gzhead.hcrc && s.pending > beg) {
        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
      }
      if (val === 0) {
        s.status = HCRC_STATE;
      }
    }
    else {
      s.status = HCRC_STATE;
    }
  }
  if (s.status === HCRC_STATE) {
    if (s.gzhead.hcrc) {
      if (s.pending + 2 > s.pending_buf_size) {
        flush_pending(strm);
      }
      if (s.pending + 2 <= s.pending_buf_size) {
        put_byte(s, strm.adler & 0xff);
        put_byte(s, (strm.adler >> 8) & 0xff);
        strm.adler = 0; //crc32(0L, Z_NULL, 0);
        s.status = BUSY_STATE;
      }
    }
    else {
      s.status = BUSY_STATE;
    }
  }
//#endif

  /* Flush as much pending output as possible */
  if (s.pending !== 0) {
    flush_pending(strm);
    if (strm.avail_out === 0) {
      /* Since avail_out is 0, deflate will be called again with
       * more output space, but possibly with both pending and
       * avail_in equal to zero. There won't be anything to do,
       * but this is not an error situation so make sure we
       * return OK instead of BUF_ERROR at next call of deflate:
       */
      s.last_flush = -1;
      return Z_OK;
    }

    /* Make sure there is something to do and avoid duplicate consecutive
     * flushes. For repeated and useless calls with Z_FINISH, we keep
     * returning Z_STREAM_END instead of Z_BUF_ERROR.
     */
  } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&
    flush !== Z_FINISH) {
    return err(strm, Z_BUF_ERROR);
  }

  /* User must not provide more input after the first FINISH: */
  if (s.status === FINISH_STATE && strm.avail_in !== 0) {
    return err(strm, Z_BUF_ERROR);
  }

  /* Start a new block or continue the current one.
   */
  if (strm.avail_in !== 0 || s.lookahead !== 0 ||
    (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {
    var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :
      (s.strategy === Z_RLE ? deflate_rle(s, flush) :
        configuration_table[s.level].func(s, flush));

    if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {
      s.status = FINISH_STATE;
    }
    if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {
      if (strm.avail_out === 0) {
        s.last_flush = -1;
        /* avoid BUF_ERROR next call, see above */
      }
      return Z_OK;
      /* If flush != Z_NO_FLUSH && avail_out == 0, the next call
       * of deflate should use the same flush parameter to make sure
       * that the flush is complete. So we don't have to output an
       * empty block here, this will be done at next call. This also
       * ensures that for a very small output buffer, we emit at most
       * one empty block.
       */
    }
    if (bstate === BS_BLOCK_DONE) {
      if (flush === Z_PARTIAL_FLUSH) {
        trees._tr_align(s);
      }
      else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */

        trees._tr_stored_block(s, 0, 0, false);
        /* For a full flush, this empty block will be recognized
         * as a special marker by inflate_sync().
         */
        if (flush === Z_FULL_FLUSH) {
          /*** CLEAR_HASH(s); ***/             /* forget history */
          zero(s.head); // Fill with NIL (= 0);

          if (s.lookahead === 0) {
            s.strstart = 0;
            s.block_start = 0;
            s.insert = 0;
          }
        }
      }
      flush_pending(strm);
      if (strm.avail_out === 0) {
        s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */
        return Z_OK;
      }
    }
  }
  //Assert(strm->avail_out > 0, "bug2");
  //if (strm.avail_out <= 0) { throw new Error("bug2");}

  if (flush !== Z_FINISH) { return Z_OK; }
  if (s.wrap <= 0) { return Z_STREAM_END; }

  /* Write the trailer */
  if (s.wrap === 2) {
    put_byte(s, strm.adler & 0xff);
    put_byte(s, (strm.adler >> 8) & 0xff);
    put_byte(s, (strm.adler >> 16) & 0xff);
    put_byte(s, (strm.adler >> 24) & 0xff);
    put_byte(s, strm.total_in & 0xff);
    put_byte(s, (strm.total_in >> 8) & 0xff);
    put_byte(s, (strm.total_in >> 16) & 0xff);
    put_byte(s, (strm.total_in >> 24) & 0xff);
  }
  else
  {
    putShortMSB(s, strm.adler >>> 16);
    putShortMSB(s, strm.adler & 0xffff);
  }

  flush_pending(strm);
  /* If avail_out is zero, the application will call deflate again
   * to flush the rest.
   */
  if (s.wrap > 0) { s.wrap = -s.wrap; }
  /* write the trailer only once! */
  return s.pending !== 0 ? Z_OK : Z_STREAM_END;
}

function deflateEnd(strm) {
  var status;

  if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {
    return Z_STREAM_ERROR;
  }

  status = strm.state.status;
  if (status !== INIT_STATE &&
    status !== EXTRA_STATE &&
    status !== NAME_STATE &&
    status !== COMMENT_STATE &&
    status !== HCRC_STATE &&
    status !== BUSY_STATE &&
    status !== FINISH_STATE
  ) {
    return err(strm, Z_STREAM_ERROR);
  }

  strm.state = null;

  return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;
}


/* =========================================================================
 * Initializes the compression dictionary from the given byte
 * sequence without producing any compressed output.
 */
function deflateSetDictionary(strm, dictionary) {
  var dictLength = dictionary.length;

  var s;
  var str, n;
  var wrap;
  var avail;
  var next;
  var input;
  var tmpDict;

  if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {
    return Z_STREAM_ERROR;
  }

  s = strm.state;
  wrap = s.wrap;

  if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {
    return Z_STREAM_ERROR;
  }

  /* when using zlib wrappers, compute Adler-32 for provided dictionary */
  if (wrap === 1) {
    /* adler32(strm->adler, dictionary, dictLength); */
    strm.adler = adler32(strm.adler, dictionary, dictLength, 0);
  }

  s.wrap = 0;   /* avoid computing Adler-32 in read_buf */

  /* if dictionary would fill window, just replace the history */
  if (dictLength >= s.w_size) {
    if (wrap === 0) {            /* already empty otherwise */
      /*** CLEAR_HASH(s); ***/
      zero(s.head); // Fill with NIL (= 0);
      s.strstart = 0;
      s.block_start = 0;
      s.insert = 0;
    }
    /* use the tail */
    // dictionary = dictionary.slice(dictLength - s.w_size);
    tmpDict = new utils.Buf8(s.w_size);
    utils.arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0);
    dictionary = tmpDict;
    dictLength = s.w_size;
  }
  /* insert dictionary into window and hash */
  avail = strm.avail_in;
  next = strm.next_in;
  input = strm.input;
  strm.avail_in = dictLength;
  strm.next_in = 0;
  strm.input = dictionary;
  fill_window(s);
  while (s.lookahead >= MIN_MATCH) {
    str = s.strstart;
    n = s.lookahead - (MIN_MATCH - 1);
    do {
      /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */
      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;

      s.prev[str & s.w_mask] = s.head[s.ins_h];

      s.head[s.ins_h] = str;
      str++;
    } while (--n);
    s.strstart = str;
    s.lookahead = MIN_MATCH - 1;
    fill_window(s);
  }
  s.strstart += s.lookahead;
  s.block_start = s.strstart;
  s.insert = s.lookahead;
  s.lookahead = 0;
  s.match_length = s.prev_length = MIN_MATCH - 1;
  s.match_available = 0;
  strm.next_in = next;
  strm.input = input;
  strm.avail_in = avail;
  s.wrap = wrap;
  return Z_OK;
}


exports.deflateInit = deflateInit;
exports.deflateInit2 = deflateInit2;
exports.deflateReset = deflateReset;
exports.deflateResetKeep = deflateResetKeep;
exports.deflateSetHeader = deflateSetHeader;
exports.deflate = deflate;
exports.deflateEnd = deflateEnd;
exports.deflateSetDictionary = deflateSetDictionary;
exports.deflateInfo = 'pako deflate (from Nodeca project)';

/* Not implemented
exports.deflateBound = deflateBound;
exports.deflateCopy = deflateCopy;
exports.deflateParams = deflateParams;
exports.deflatePending = deflatePending;
exports.deflatePrime = deflatePrime;
exports.deflateTune = deflateTune;
*/
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 97580 characters]
//# sourceURL=webpack-internal:///../../../node_modules/pako/lib/zlib/deflate.js
`);
              }
            ),
            /***/
            "../../../node_modules/pako/lib/zlib/gzheader.js": (
              /*!*******************************************************!*\
                !*** ../../../node_modules/pako/lib/zlib/gzheader.js ***!
                \*******************************************************/
              /***/
              (module) => {
                "use strict";
                eval("\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction GZheader() {\n  /* true if compressed data believed to be text */\n  this.text       = 0;\n  /* modification time */\n  this.time       = 0;\n  /* extra flags (not used when writing a gzip file) */\n  this.xflags     = 0;\n  /* operating system */\n  this.os         = 0;\n  /* pointer to extra field or Z_NULL if none */\n  this.extra      = null;\n  /* extra field length (valid if extra != Z_NULL) */\n  this.extra_len  = 0; // Actually, we don't need it in JS,\n                       // but leave for few code modifications\n\n  //\n  // Setup limits is not necessary because in js we should not preallocate memory\n  // for inflate use constant limit in 65536 bytes\n  //\n\n  /* space at extra (only when reading header) */\n  // this.extra_max  = 0;\n  /* pointer to zero-terminated file name or Z_NULL */\n  this.name       = '';\n  /* space at name (only when reading header) */\n  // this.name_max   = 0;\n  /* pointer to zero-terminated comment or Z_NULL */\n  this.comment    = '';\n  /* space at comment (only when reading header) */\n  // this.comm_max   = 0;\n  /* true if there was or will be a header crc */\n  this.hcrc       = 0;\n  /* true when done reading gzip header (not used when writing a gzip file) */\n  this.done       = false;\n}\n\nmodule.exports = GZheader;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bha28vbGliL3psaWIvZ3poZWFkZXIuanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhEQUE4RDtBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcGFrby9saWIvemxpYi9nemhlYWRlci5qcz8zZGZhIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuLy8gKEMpIDE5OTUtMjAxMyBKZWFuLWxvdXAgR2FpbGx5IGFuZCBNYXJrIEFkbGVyXG4vLyAoQykgMjAxNC0yMDE3IFZpdGFseSBQdXpyaW4gYW5kIEFuZHJleSBUdXBpdHNpblxuLy9cbi8vIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgJ2FzLWlzJywgd2l0aG91dCBhbnkgZXhwcmVzcyBvciBpbXBsaWVkXG4vLyB3YXJyYW50eS4gSW4gbm8gZXZlbnQgd2lsbCB0aGUgYXV0aG9ycyBiZSBoZWxkIGxpYWJsZSBmb3IgYW55IGRhbWFnZXNcbi8vIGFyaXNpbmcgZnJvbSB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGFueW9uZSB0byB1c2UgdGhpcyBzb2Z0d2FyZSBmb3IgYW55IHB1cnBvc2UsXG4vLyBpbmNsdWRpbmcgY29tbWVyY2lhbCBhcHBsaWNhdGlvbnMsIGFuZCB0byBhbHRlciBpdCBhbmQgcmVkaXN0cmlidXRlIGl0XG4vLyBmcmVlbHksIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnM6XG4vL1xuLy8gMS4gVGhlIG9yaWdpbiBvZiB0aGlzIHNvZnR3YXJlIG11c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkOyB5b3UgbXVzdCBub3Rcbi8vICAgY2xhaW0gdGhhdCB5b3Ugd3JvdGUgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLiBJZiB5b3UgdXNlIHRoaXMgc29mdHdhcmVcbi8vICAgaW4gYSBwcm9kdWN0LCBhbiBhY2tub3dsZWRnbWVudCBpbiB0aGUgcHJvZHVjdCBkb2N1bWVudGF0aW9uIHdvdWxkIGJlXG4vLyAgIGFwcHJlY2lhdGVkIGJ1dCBpcyBub3QgcmVxdWlyZWQuXG4vLyAyLiBBbHRlcmVkIHNvdXJjZSB2ZXJzaW9ucyBtdXN0IGJlIHBsYWlubHkgbWFya2VkIGFzIHN1Y2gsIGFuZCBtdXN0IG5vdCBiZVxuLy8gICBtaXNyZXByZXNlbnRlZCBhcyBiZWluZyB0aGUgb3JpZ2luYWwgc29mdHdhcmUuXG4vLyAzLiBUaGlzIG5vdGljZSBtYXkgbm90IGJlIHJlbW92ZWQgb3IgYWx0ZXJlZCBmcm9tIGFueSBzb3VyY2UgZGlzdHJpYnV0aW9uLlxuXG5mdW5jdGlvbiBHWmhlYWRlcigpIHtcbiAgLyogdHJ1ZSBpZiBjb21wcmVzc2VkIGRhdGEgYmVsaWV2ZWQgdG8gYmUgdGV4dCAqL1xuICB0aGlzLnRleHQgICAgICAgPSAwO1xuICAvKiBtb2RpZmljYXRpb24gdGltZSAqL1xuICB0aGlzLnRpbWUgICAgICAgPSAwO1xuICAvKiBleHRyYSBmbGFncyAobm90IHVzZWQgd2hlbiB3cml0aW5nIGEgZ3ppcCBmaWxlKSAqL1xuICB0aGlzLnhmbGFncyAgICAgPSAwO1xuICAvKiBvcGVyYXRpbmcgc3lzdGVtICovXG4gIHRoaXMub3MgICAgICAgICA9IDA7XG4gIC8qIHBvaW50ZXIgdG8gZXh0cmEgZmllbGQgb3IgWl9OVUxMIGlmIG5vbmUgKi9cbiAgdGhpcy5leHRyYSAgICAgID0gbnVsbDtcbiAgLyogZXh0cmEgZmllbGQgbGVuZ3RoICh2YWxpZCBpZiBleHRyYSAhPSBaX05VTEwpICovXG4gIHRoaXMuZXh0cmFfbGVuICA9IDA7IC8vIEFjdHVhbGx5LCB3ZSBkb24ndCBuZWVkIGl0IGluIEpTLFxuICAgICAgICAgICAgICAgICAgICAgICAvLyBidXQgbGVhdmUgZm9yIGZldyBjb2RlIG1vZGlmaWNhdGlvbnNcblxuICAvL1xuICAvLyBTZXR1cCBsaW1pdHMgaXMgbm90IG5lY2Vzc2FyeSBiZWNhdXNlIGluIGpzIHdlIHNob3VsZCBub3QgcHJlYWxsb2NhdGUgbWVtb3J5XG4gIC8vIGZvciBpbmZsYXRlIHVzZSBjb25zdGFudCBsaW1pdCBpbiA2NTUzNiBieXRlc1xuICAvL1xuXG4gIC8qIHNwYWNlIGF0IGV4dHJhIChvbmx5IHdoZW4gcmVhZGluZyBoZWFkZXIpICovXG4gIC8vIHRoaXMuZXh0cmFfbWF4ICA9IDA7XG4gIC8qIHBvaW50ZXIgdG8gemVyby10ZXJtaW5hdGVkIGZpbGUgbmFtZSBvciBaX05VTEwgKi9cbiAgdGhpcy5uYW1lICAgICAgID0gJyc7XG4gIC8qIHNwYWNlIGF0IG5hbWUgKG9ubHkgd2hlbiByZWFkaW5nIGhlYWRlcikgKi9cbiAgLy8gdGhpcy5uYW1lX21heCAgID0gMDtcbiAgLyogcG9pbnRlciB0byB6ZXJvLXRlcm1pbmF0ZWQgY29tbWVudCBvciBaX05VTEwgKi9cbiAgdGhpcy5jb21tZW50ICAgID0gJyc7XG4gIC8qIHNwYWNlIGF0IGNvbW1lbnQgKG9ubHkgd2hlbiByZWFkaW5nIGhlYWRlcikgKi9cbiAgLy8gdGhpcy5jb21tX21heCAgID0gMDtcbiAgLyogdHJ1ZSBpZiB0aGVyZSB3YXMgb3Igd2lsbCBiZSBhIGhlYWRlciBjcmMgKi9cbiAgdGhpcy5oY3JjICAgICAgID0gMDtcbiAgLyogdHJ1ZSB3aGVuIGRvbmUgcmVhZGluZyBnemlwIGhlYWRlciAobm90IHVzZWQgd2hlbiB3cml0aW5nIGEgZ3ppcCBmaWxlKSAqL1xuICB0aGlzLmRvbmUgICAgICAgPSBmYWxzZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBHWmhlYWRlcjtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/pako/lib/zlib/gzheader.js\n");
              }
            ),
            /***/
            "../../../node_modules/pako/lib/zlib/inffast.js": (
              /*!******************************************************!*\
                !*** ../../../node_modules/pako/lib/zlib/inffast.js ***!
                \******************************************************/
              /***/
              (module) => {
                "use strict";
                eval(`

// (C) 1995-2013 Jean-loup Gailly and Mark Adler
// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
//   claim that you wrote the original software. If you use this software
//   in a product, an acknowledgment in the product documentation would be
//   appreciated but is not required.
// 2. Altered source versions must be plainly marked as such, and must not be
//   misrepresented as being the original software.
// 3. This notice may not be removed or altered from any source distribution.

// See state defs from inflate.js
var BAD = 30;       /* got a data error -- remain here until reset */
var TYPE = 12;      /* i: waiting for type bits, including last-flag bit */

/*
   Decode literal, length, and distance codes and write out the resulting
   literal and match bytes until either not enough input or output is
   available, an end-of-block is encountered, or a data error is encountered.
   When large enough input and output buffers are supplied to inflate(), for
   example, a 16K input buffer and a 64K output buffer, more than 95% of the
   inflate execution time is spent in this routine.

   Entry assumptions:

        state.mode === LEN
        strm.avail_in >= 6
        strm.avail_out >= 258
        start >= strm.avail_out
        state.bits < 8

   On return, state.mode is one of:

        LEN -- ran out of enough output space or enough available input
        TYPE -- reached end of block code, inflate() to interpret next block
        BAD -- error in block data

   Notes:

    - The maximum input bits used by a length/distance pair is 15 bits for the
      length code, 5 bits for the length extra, 15 bits for the distance code,
      and 13 bits for the distance extra.  This totals 48 bits, or six bytes.
      Therefore if strm.avail_in >= 6, then there is enough input to avoid
      checking for available input while decoding.

    - The maximum bytes that a single length/distance pair can output is 258
      bytes, which is the maximum length that can be coded.  inflate_fast()
      requires strm.avail_out >= 258 for each loop to avoid checking for
      output space.
 */
module.exports = function inflate_fast(strm, start) {
  var state;
  var _in;                    /* local strm.input */
  var last;                   /* have enough input while in < last */
  var _out;                   /* local strm.output */
  var beg;                    /* inflate()'s initial strm.output */
  var end;                    /* while out < end, enough space available */
//#ifdef INFLATE_STRICT
  var dmax;                   /* maximum distance from zlib header */
//#endif
  var wsize;                  /* window size or zero if not using window */
  var whave;                  /* valid bytes in the window */
  var wnext;                  /* window write index */
  // Use \`s_window\` instead \`window\`, avoid conflict with instrumentation tools
  var s_window;               /* allocated sliding window, if wsize != 0 */
  var hold;                   /* local strm.hold */
  var bits;                   /* local strm.bits */
  var lcode;                  /* local strm.lencode */
  var dcode;                  /* local strm.distcode */
  var lmask;                  /* mask for first level of length codes */
  var dmask;                  /* mask for first level of distance codes */
  var here;                   /* retrieved table entry */
  var op;                     /* code bits, operation, extra bits, or */
                              /*  window position, window bytes to copy */
  var len;                    /* match length, unused bytes */
  var dist;                   /* match distance */
  var from;                   /* where to copy match from */
  var from_source;


  var input, output; // JS specific, because we have no pointers

  /* copy state to local variables */
  state = strm.state;
  //here = state.here;
  _in = strm.next_in;
  input = strm.input;
  last = _in + (strm.avail_in - 5);
  _out = strm.next_out;
  output = strm.output;
  beg = _out - (start - strm.avail_out);
  end = _out + (strm.avail_out - 257);
//#ifdef INFLATE_STRICT
  dmax = state.dmax;
//#endif
  wsize = state.wsize;
  whave = state.whave;
  wnext = state.wnext;
  s_window = state.window;
  hold = state.hold;
  bits = state.bits;
  lcode = state.lencode;
  dcode = state.distcode;
  lmask = (1 << state.lenbits) - 1;
  dmask = (1 << state.distbits) - 1;


  /* decode literals and length/distances until end-of-block or not enough
     input data or output space */

  top:
  do {
    if (bits < 15) {
      hold += input[_in++] << bits;
      bits += 8;
      hold += input[_in++] << bits;
      bits += 8;
    }

    here = lcode[hold & lmask];

    dolen:
    for (;;) { // Goto emulation
      op = here >>> 24/*here.bits*/;
      hold >>>= op;
      bits -= op;
      op = (here >>> 16) & 0xff/*here.op*/;
      if (op === 0) {                          /* literal */
        //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?
        //        "inflate:         literal '%c'\\n" :
        //        "inflate:         literal 0x%02x\\n", here.val));
        output[_out++] = here & 0xffff/*here.val*/;
      }
      else if (op & 16) {                     /* length base */
        len = here & 0xffff/*here.val*/;
        op &= 15;                           /* number of extra bits */
        if (op) {
          if (bits < op) {
            hold += input[_in++] << bits;
            bits += 8;
          }
          len += hold & ((1 << op) - 1);
          hold >>>= op;
          bits -= op;
        }
        //Tracevv((stderr, "inflate:         length %u\\n", len));
        if (bits < 15) {
          hold += input[_in++] << bits;
          bits += 8;
          hold += input[_in++] << bits;
          bits += 8;
        }
        here = dcode[hold & dmask];

        dodist:
        for (;;) { // goto emulation
          op = here >>> 24/*here.bits*/;
          hold >>>= op;
          bits -= op;
          op = (here >>> 16) & 0xff/*here.op*/;

          if (op & 16) {                      /* distance base */
            dist = here & 0xffff/*here.val*/;
            op &= 15;                       /* number of extra bits */
            if (bits < op) {
              hold += input[_in++] << bits;
              bits += 8;
              if (bits < op) {
                hold += input[_in++] << bits;
                bits += 8;
              }
            }
            dist += hold & ((1 << op) - 1);
//#ifdef INFLATE_STRICT
            if (dist > dmax) {
              strm.msg = 'invalid distance too far back';
              state.mode = BAD;
              break top;
            }
//#endif
            hold >>>= op;
            bits -= op;
            //Tracevv((stderr, "inflate:         distance %u\\n", dist));
            op = _out - beg;                /* max distance in output */
            if (dist > op) {                /* see if copy from window */
              op = dist - op;               /* distance back in window */
              if (op > whave) {
                if (state.sane) {
                  strm.msg = 'invalid distance too far back';
                  state.mode = BAD;
                  break top;
                }

// (!) This block is disabled in zlib defaults,
// don't enable it for binary compatibility
//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR
//                if (len <= op - whave) {
//                  do {
//                    output[_out++] = 0;
//                  } while (--len);
//                  continue top;
//                }
//                len -= op - whave;
//                do {
//                  output[_out++] = 0;
//                } while (--op > whave);
//                if (op === 0) {
//                  from = _out - dist;
//                  do {
//                    output[_out++] = output[from++];
//                  } while (--len);
//                  continue top;
//                }
//#endif
              }
              from = 0; // window index
              from_source = s_window;
              if (wnext === 0) {           /* very common case */
                from += wsize - op;
                if (op < len) {         /* some from window */
                  len -= op;
                  do {
                    output[_out++] = s_window[from++];
                  } while (--op);
                  from = _out - dist;  /* rest from output */
                  from_source = output;
                }
              }
              else if (wnext < op) {      /* wrap around window */
                from += wsize + wnext - op;
                op -= wnext;
                if (op < len) {         /* some from end of window */
                  len -= op;
                  do {
                    output[_out++] = s_window[from++];
                  } while (--op);
                  from = 0;
                  if (wnext < len) {  /* some from start of window */
                    op = wnext;
                    len -= op;
                    do {
                      output[_out++] = s_window[from++];
                    } while (--op);
                    from = _out - dist;      /* rest from output */
                    from_source = output;
                  }
                }
              }
              else {                      /* contiguous in window */
                from += wnext - op;
                if (op < len) {         /* some from window */
                  len -= op;
                  do {
                    output[_out++] = s_window[from++];
                  } while (--op);
                  from = _out - dist;  /* rest from output */
                  from_source = output;
                }
              }
              while (len > 2) {
                output[_out++] = from_source[from++];
                output[_out++] = from_source[from++];
                output[_out++] = from_source[from++];
                len -= 3;
              }
              if (len) {
                output[_out++] = from_source[from++];
                if (len > 1) {
                  output[_out++] = from_source[from++];
                }
              }
            }
            else {
              from = _out - dist;          /* copy direct from output */
              do {                        /* minimum length is three */
                output[_out++] = output[from++];
                output[_out++] = output[from++];
                output[_out++] = output[from++];
                len -= 3;
              } while (len > 2);
              if (len) {
                output[_out++] = output[from++];
                if (len > 1) {
                  output[_out++] = output[from++];
                }
              }
            }
          }
          else if ((op & 64) === 0) {          /* 2nd level distance code */
            here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];
            continue dodist;
          }
          else {
            strm.msg = 'invalid distance code';
            state.mode = BAD;
            break top;
          }

          break; // need to emulate goto via "continue"
        }
      }
      else if ((op & 64) === 0) {              /* 2nd level length code */
        here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];
        continue dolen;
      }
      else if (op & 32) {                     /* end-of-block */
        //Tracevv((stderr, "inflate:         end of block\\n"));
        state.mode = TYPE;
        break top;
      }
      else {
        strm.msg = 'invalid literal/length code';
        state.mode = BAD;
        break top;
      }

      break; // need to emulate goto via "continue"
    }
  } while (_in < last && _out < end);

  /* return unused bytes (on entry, bits < 8, so in won't go too far back) */
  len = bits >> 3;
  _in -= len;
  bits -= len << 3;
  hold &= (1 << bits) - 1;

  /* update state and return */
  strm.next_in = _in;
  strm.next_out = _out;
  strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));
  strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));
  state.hold = hold;
  state.bits = bits;
  return;
};
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 20484 characters]
//# sourceURL=webpack-internal:///../../../node_modules/pako/lib/zlib/inffast.js
`);
              }
            ),
            /***/
            "../../../node_modules/pako/lib/zlib/inflate.js": (
              /*!******************************************************!*\
                !*** ../../../node_modules/pako/lib/zlib/inflate.js ***!
                \******************************************************/
              /***/
              (__unused_webpack_module, exports, __webpack_require__) => {
                "use strict";
                eval(`

// (C) 1995-2013 Jean-loup Gailly and Mark Adler
// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
//   claim that you wrote the original software. If you use this software
//   in a product, an acknowledgment in the product documentation would be
//   appreciated but is not required.
// 2. Altered source versions must be plainly marked as such, and must not be
//   misrepresented as being the original software.
// 3. This notice may not be removed or altered from any source distribution.

var utils         = __webpack_require__(/*! ../utils/common */ "../../../node_modules/pako/lib/utils/common.js");
var adler32       = __webpack_require__(/*! ./adler32 */ "../../../node_modules/pako/lib/zlib/adler32.js");
var crc32         = __webpack_require__(/*! ./crc32 */ "../../../node_modules/pako/lib/zlib/crc32.js");
var inflate_fast  = __webpack_require__(/*! ./inffast */ "../../../node_modules/pako/lib/zlib/inffast.js");
var inflate_table = __webpack_require__(/*! ./inftrees */ "../../../node_modules/pako/lib/zlib/inftrees.js");

var CODES = 0;
var LENS = 1;
var DISTS = 2;

/* Public constants ==========================================================*/
/* ===========================================================================*/


/* Allowed flush values; see deflate() and inflate() below for details */
//var Z_NO_FLUSH      = 0;
//var Z_PARTIAL_FLUSH = 1;
//var Z_SYNC_FLUSH    = 2;
//var Z_FULL_FLUSH    = 3;
var Z_FINISH        = 4;
var Z_BLOCK         = 5;
var Z_TREES         = 6;


/* Return codes for the compression/decompression functions. Negative values
 * are errors, positive values are used for special but normal events.
 */
var Z_OK            = 0;
var Z_STREAM_END    = 1;
var Z_NEED_DICT     = 2;
//var Z_ERRNO         = -1;
var Z_STREAM_ERROR  = -2;
var Z_DATA_ERROR    = -3;
var Z_MEM_ERROR     = -4;
var Z_BUF_ERROR     = -5;
//var Z_VERSION_ERROR = -6;

/* The deflate compression method */
var Z_DEFLATED  = 8;


/* STATES ====================================================================*/
/* ===========================================================================*/


var    HEAD = 1;       /* i: waiting for magic header */
var    FLAGS = 2;      /* i: waiting for method and flags (gzip) */
var    TIME = 3;       /* i: waiting for modification time (gzip) */
var    OS = 4;         /* i: waiting for extra flags and operating system (gzip) */
var    EXLEN = 5;      /* i: waiting for extra length (gzip) */
var    EXTRA = 6;      /* i: waiting for extra bytes (gzip) */
var    NAME = 7;       /* i: waiting for end of file name (gzip) */
var    COMMENT = 8;    /* i: waiting for end of comment (gzip) */
var    HCRC = 9;       /* i: waiting for header crc (gzip) */
var    DICTID = 10;    /* i: waiting for dictionary check value */
var    DICT = 11;      /* waiting for inflateSetDictionary() call */
var        TYPE = 12;      /* i: waiting for type bits, including last-flag bit */
var        TYPEDO = 13;    /* i: same, but skip check to exit inflate on new block */
var        STORED = 14;    /* i: waiting for stored size (length and complement) */
var        COPY_ = 15;     /* i/o: same as COPY below, but only first time in */
var        COPY = 16;      /* i/o: waiting for input or output to copy stored block */
var        TABLE = 17;     /* i: waiting for dynamic block table lengths */
var        LENLENS = 18;   /* i: waiting for code length code lengths */
var        CODELENS = 19;  /* i: waiting for length/lit and distance code lengths */
var            LEN_ = 20;      /* i: same as LEN below, but only first time in */
var            LEN = 21;       /* i: waiting for length/lit/eob code */
var            LENEXT = 22;    /* i: waiting for length extra bits */
var            DIST = 23;      /* i: waiting for distance code */
var            DISTEXT = 24;   /* i: waiting for distance extra bits */
var            MATCH = 25;     /* o: waiting for output space to copy string */
var            LIT = 26;       /* o: waiting for output space to write literal */
var    CHECK = 27;     /* i: waiting for 32-bit check value */
var    LENGTH = 28;    /* i: waiting for 32-bit length (gzip) */
var    DONE = 29;      /* finished check, done -- remain here until reset */
var    BAD = 30;       /* got a data error -- remain here until reset */
var    MEM = 31;       /* got an inflate() memory error -- remain here until reset */
var    SYNC = 32;      /* looking for synchronization bytes to restart inflate() */

/* ===========================================================================*/



var ENOUGH_LENS = 852;
var ENOUGH_DISTS = 592;
//var ENOUGH =  (ENOUGH_LENS+ENOUGH_DISTS);

var MAX_WBITS = 15;
/* 32K LZ77 window */
var DEF_WBITS = MAX_WBITS;


function zswap32(q) {
  return  (((q >>> 24) & 0xff) +
          ((q >>> 8) & 0xff00) +
          ((q & 0xff00) << 8) +
          ((q & 0xff) << 24));
}


function InflateState() {
  this.mode = 0;             /* current inflate mode */
  this.last = false;          /* true if processing last block */
  this.wrap = 0;              /* bit 0 true for zlib, bit 1 true for gzip */
  this.havedict = false;      /* true if dictionary provided */
  this.flags = 0;             /* gzip header method and flags (0 if zlib) */
  this.dmax = 0;              /* zlib header max distance (INFLATE_STRICT) */
  this.check = 0;             /* protected copy of check value */
  this.total = 0;             /* protected copy of output count */
  // TODO: may be {}
  this.head = null;           /* where to save gzip header information */

  /* sliding window */
  this.wbits = 0;             /* log base 2 of requested window size */
  this.wsize = 0;             /* window size or zero if not using window */
  this.whave = 0;             /* valid bytes in the window */
  this.wnext = 0;             /* window write index */
  this.window = null;         /* allocated sliding window, if needed */

  /* bit accumulator */
  this.hold = 0;              /* input bit accumulator */
  this.bits = 0;              /* number of bits in "in" */

  /* for string and stored block copying */
  this.length = 0;            /* literal or length of data to copy */
  this.offset = 0;            /* distance back to copy string from */

  /* for table and code decoding */
  this.extra = 0;             /* extra bits needed */

  /* fixed and dynamic code tables */
  this.lencode = null;          /* starting table for length/literal codes */
  this.distcode = null;         /* starting table for distance codes */
  this.lenbits = 0;           /* index bits for lencode */
  this.distbits = 0;          /* index bits for distcode */

  /* dynamic table building */
  this.ncode = 0;             /* number of code length code lengths */
  this.nlen = 0;              /* number of length code lengths */
  this.ndist = 0;             /* number of distance code lengths */
  this.have = 0;              /* number of code lengths in lens[] */
  this.next = null;              /* next available space in codes[] */

  this.lens = new utils.Buf16(320); /* temporary storage for code lengths */
  this.work = new utils.Buf16(288); /* work area for code table building */

  /*
   because we don't have pointers in js, we use lencode and distcode directly
   as buffers so we don't need codes
  */
  //this.codes = new utils.Buf32(ENOUGH);       /* space for code tables */
  this.lendyn = null;              /* dynamic table for length/literal codes (JS specific) */
  this.distdyn = null;             /* dynamic table for distance codes (JS specific) */
  this.sane = 0;                   /* if false, allow invalid distance too far */
  this.back = 0;                   /* bits back of last unprocessed length/lit */
  this.was = 0;                    /* initial length of match */
}

function inflateResetKeep(strm) {
  var state;

  if (!strm || !strm.state) { return Z_STREAM_ERROR; }
  state = strm.state;
  strm.total_in = strm.total_out = state.total = 0;
  strm.msg = ''; /*Z_NULL*/
  if (state.wrap) {       /* to support ill-conceived Java test suite */
    strm.adler = state.wrap & 1;
  }
  state.mode = HEAD;
  state.last = 0;
  state.havedict = 0;
  state.dmax = 32768;
  state.head = null/*Z_NULL*/;
  state.hold = 0;
  state.bits = 0;
  //state.lencode = state.distcode = state.next = state.codes;
  state.lencode = state.lendyn = new utils.Buf32(ENOUGH_LENS);
  state.distcode = state.distdyn = new utils.Buf32(ENOUGH_DISTS);

  state.sane = 1;
  state.back = -1;
  //Tracev((stderr, "inflate: reset\\n"));
  return Z_OK;
}

function inflateReset(strm) {
  var state;

  if (!strm || !strm.state) { return Z_STREAM_ERROR; }
  state = strm.state;
  state.wsize = 0;
  state.whave = 0;
  state.wnext = 0;
  return inflateResetKeep(strm);

}

function inflateReset2(strm, windowBits) {
  var wrap;
  var state;

  /* get the state */
  if (!strm || !strm.state) { return Z_STREAM_ERROR; }
  state = strm.state;

  /* extract wrap request from windowBits parameter */
  if (windowBits < 0) {
    wrap = 0;
    windowBits = -windowBits;
  }
  else {
    wrap = (windowBits >> 4) + 1;
    if (windowBits < 48) {
      windowBits &= 15;
    }
  }

  /* set number of window bits, free window if different */
  if (windowBits && (windowBits < 8 || windowBits > 15)) {
    return Z_STREAM_ERROR;
  }
  if (state.window !== null && state.wbits !== windowBits) {
    state.window = null;
  }

  /* update state and reset the rest of it */
  state.wrap = wrap;
  state.wbits = windowBits;
  return inflateReset(strm);
}

function inflateInit2(strm, windowBits) {
  var ret;
  var state;

  if (!strm) { return Z_STREAM_ERROR; }
  //strm.msg = Z_NULL;                 /* in case we return an error */

  state = new InflateState();

  //if (state === Z_NULL) return Z_MEM_ERROR;
  //Tracev((stderr, "inflate: allocated\\n"));
  strm.state = state;
  state.window = null/*Z_NULL*/;
  ret = inflateReset2(strm, windowBits);
  if (ret !== Z_OK) {
    strm.state = null/*Z_NULL*/;
  }
  return ret;
}

function inflateInit(strm) {
  return inflateInit2(strm, DEF_WBITS);
}


/*
 Return state with length and distance decoding tables and index sizes set to
 fixed code decoding.  Normally this returns fixed tables from inffixed.h.
 If BUILDFIXED is defined, then instead this routine builds the tables the
 first time it's called, and returns those tables the first time and
 thereafter.  This reduces the size of the code by about 2K bytes, in
 exchange for a little execution time.  However, BUILDFIXED should not be
 used for threaded applications, since the rewriting of the tables and virgin
 may not be thread-safe.
 */
var virgin = true;

var lenfix, distfix; // We have no pointers in JS, so keep tables separate

function fixedtables(state) {
  /* build fixed huffman tables if first call (may not be thread safe) */
  if (virgin) {
    var sym;

    lenfix = new utils.Buf32(512);
    distfix = new utils.Buf32(32);

    /* literal/length table */
    sym = 0;
    while (sym < 144) { state.lens[sym++] = 8; }
    while (sym < 256) { state.lens[sym++] = 9; }
    while (sym < 280) { state.lens[sym++] = 7; }
    while (sym < 288) { state.lens[sym++] = 8; }

    inflate_table(LENS,  state.lens, 0, 288, lenfix,   0, state.work, { bits: 9 });

    /* distance table */
    sym = 0;
    while (sym < 32) { state.lens[sym++] = 5; }

    inflate_table(DISTS, state.lens, 0, 32,   distfix, 0, state.work, { bits: 5 });

    /* do this just once */
    virgin = false;
  }

  state.lencode = lenfix;
  state.lenbits = 9;
  state.distcode = distfix;
  state.distbits = 5;
}


/*
 Update the window with the last wsize (normally 32K) bytes written before
 returning.  If window does not exist yet, create it.  This is only called
 when a window is already in use, or when output has been written during this
 inflate call, but the end of the deflate stream has not been reached yet.
 It is also called to create a window for dictionary data when a dictionary
 is loaded.

 Providing output buffers larger than 32K to inflate() should provide a speed
 advantage, since only the last 32K of output is copied to the sliding window
 upon return from inflate(), and since all distances after the first 32K of
 output will fall in the output data, making match copies simpler and faster.
 The advantage may be dependent on the size of the processor's data caches.
 */
function updatewindow(strm, src, end, copy) {
  var dist;
  var state = strm.state;

  /* if it hasn't been done already, allocate space for the window */
  if (state.window === null) {
    state.wsize = 1 << state.wbits;
    state.wnext = 0;
    state.whave = 0;

    state.window = new utils.Buf8(state.wsize);
  }

  /* copy state->wsize or less output bytes into the circular window */
  if (copy >= state.wsize) {
    utils.arraySet(state.window, src, end - state.wsize, state.wsize, 0);
    state.wnext = 0;
    state.whave = state.wsize;
  }
  else {
    dist = state.wsize - state.wnext;
    if (dist > copy) {
      dist = copy;
    }
    //zmemcpy(state->window + state->wnext, end - copy, dist);
    utils.arraySet(state.window, src, end - copy, dist, state.wnext);
    copy -= dist;
    if (copy) {
      //zmemcpy(state->window, end - copy, copy);
      utils.arraySet(state.window, src, end - copy, copy, 0);
      state.wnext = copy;
      state.whave = state.wsize;
    }
    else {
      state.wnext += dist;
      if (state.wnext === state.wsize) { state.wnext = 0; }
      if (state.whave < state.wsize) { state.whave += dist; }
    }
  }
  return 0;
}

function inflate(strm, flush) {
  var state;
  var input, output;          // input/output buffers
  var next;                   /* next input INDEX */
  var put;                    /* next output INDEX */
  var have, left;             /* available input and output */
  var hold;                   /* bit buffer */
  var bits;                   /* bits in bit buffer */
  var _in, _out;              /* save starting available input and output */
  var copy;                   /* number of stored or match bytes to copy */
  var from;                   /* where to copy match bytes from */
  var from_source;
  var here = 0;               /* current decoding table entry */
  var here_bits, here_op, here_val; // paked "here" denormalized (JS specific)
  //var last;                   /* parent table entry */
  var last_bits, last_op, last_val; // paked "last" denormalized (JS specific)
  var len;                    /* length to copy for repeats, bits to drop */
  var ret;                    /* return code */
  var hbuf = new utils.Buf8(4);    /* buffer for gzip header crc calculation */
  var opts;

  var n; // temporary var for NEED_BITS

  var order = /* permutation of code lengths */
    [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];


  if (!strm || !strm.state || !strm.output ||
      (!strm.input && strm.avail_in !== 0)) {
    return Z_STREAM_ERROR;
  }

  state = strm.state;
  if (state.mode === TYPE) { state.mode = TYPEDO; }    /* skip check */


  //--- LOAD() ---
  put = strm.next_out;
  output = strm.output;
  left = strm.avail_out;
  next = strm.next_in;
  input = strm.input;
  have = strm.avail_in;
  hold = state.hold;
  bits = state.bits;
  //---

  _in = have;
  _out = left;
  ret = Z_OK;

  inf_leave: // goto emulation
  for (;;) {
    switch (state.mode) {
      case HEAD:
        if (state.wrap === 0) {
          state.mode = TYPEDO;
          break;
        }
        //=== NEEDBITS(16);
        while (bits < 16) {
          if (have === 0) { break inf_leave; }
          have--;
          hold += input[next++] << bits;
          bits += 8;
        }
        //===//
        if ((state.wrap & 2) && hold === 0x8b1f) {  /* gzip header */
          state.check = 0/*crc32(0L, Z_NULL, 0)*/;
          //=== CRC2(state.check, hold);
          hbuf[0] = hold & 0xff;
          hbuf[1] = (hold >>> 8) & 0xff;
          state.check = crc32(state.check, hbuf, 2, 0);
          //===//

          //=== INITBITS();
          hold = 0;
          bits = 0;
          //===//
          state.mode = FLAGS;
          break;
        }
        state.flags = 0;           /* expect zlib header */
        if (state.head) {
          state.head.done = false;
        }
        if (!(state.wrap & 1) ||   /* check if zlib header allowed */
          (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {
          strm.msg = 'incorrect header check';
          state.mode = BAD;
          break;
        }
        if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) {
          strm.msg = 'unknown compression method';
          state.mode = BAD;
          break;
        }
        //--- DROPBITS(4) ---//
        hold >>>= 4;
        bits -= 4;
        //---//
        len = (hold & 0x0f)/*BITS(4)*/ + 8;
        if (state.wbits === 0) {
          state.wbits = len;
        }
        else if (len > state.wbits) {
          strm.msg = 'invalid window size';
          state.mode = BAD;
          break;
        }
        state.dmax = 1 << len;
        //Tracev((stderr, "inflate:   zlib header ok\\n"));
        strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;
        state.mode = hold & 0x200 ? DICTID : TYPE;
        //=== INITBITS();
        hold = 0;
        bits = 0;
        //===//
        break;
      case FLAGS:
        //=== NEEDBITS(16); */
        while (bits < 16) {
          if (have === 0) { break inf_leave; }
          have--;
          hold += input[next++] << bits;
          bits += 8;
        }
        //===//
        state.flags = hold;
        if ((state.flags & 0xff) !== Z_DEFLATED) {
          strm.msg = 'unknown compression method';
          state.mode = BAD;
          break;
        }
        if (state.flags & 0xe000) {
          strm.msg = 'unknown header flags set';
          state.mode = BAD;
          break;
        }
        if (state.head) {
          state.head.text = ((hold >> 8) & 1);
        }
        if (state.flags & 0x0200) {
          //=== CRC2(state.check, hold);
          hbuf[0] = hold & 0xff;
          hbuf[1] = (hold >>> 8) & 0xff;
          state.check = crc32(state.check, hbuf, 2, 0);
          //===//
        }
        //=== INITBITS();
        hold = 0;
        bits = 0;
        //===//
        state.mode = TIME;
        /* falls through */
      case TIME:
        //=== NEEDBITS(32); */
        while (bits < 32) {
          if (have === 0) { break inf_leave; }
          have--;
          hold += input[next++] << bits;
          bits += 8;
        }
        //===//
        if (state.head) {
          state.head.time = hold;
        }
        if (state.flags & 0x0200) {
          //=== CRC4(state.check, hold)
          hbuf[0] = hold & 0xff;
          hbuf[1] = (hold >>> 8) & 0xff;
          hbuf[2] = (hold >>> 16) & 0xff;
          hbuf[3] = (hold >>> 24) & 0xff;
          state.check = crc32(state.check, hbuf, 4, 0);
          //===
        }
        //=== INITBITS();
        hold = 0;
        bits = 0;
        //===//
        state.mode = OS;
        /* falls through */
      case OS:
        //=== NEEDBITS(16); */
        while (bits < 16) {
          if (have === 0) { break inf_leave; }
          have--;
          hold += input[next++] << bits;
          bits += 8;
        }
        //===//
        if (state.head) {
          state.head.xflags = (hold & 0xff);
          state.head.os = (hold >> 8);
        }
        if (state.flags & 0x0200) {
          //=== CRC2(state.check, hold);
          hbuf[0] = hold & 0xff;
          hbuf[1] = (hold >>> 8) & 0xff;
          state.check = crc32(state.check, hbuf, 2, 0);
          //===//
        }
        //=== INITBITS();
        hold = 0;
        bits = 0;
        //===//
        state.mode = EXLEN;
        /* falls through */
      case EXLEN:
        if (state.flags & 0x0400) {
          //=== NEEDBITS(16); */
          while (bits < 16) {
            if (have === 0) { break inf_leave; }
            have--;
            hold += input[next++] << bits;
            bits += 8;
          }
          //===//
          state.length = hold;
          if (state.head) {
            state.head.extra_len = hold;
          }
          if (state.flags & 0x0200) {
            //=== CRC2(state.check, hold);
            hbuf[0] = hold & 0xff;
            hbuf[1] = (hold >>> 8) & 0xff;
            state.check = crc32(state.check, hbuf, 2, 0);
            //===//
          }
          //=== INITBITS();
          hold = 0;
          bits = 0;
          //===//
        }
        else if (state.head) {
          state.head.extra = null/*Z_NULL*/;
        }
        state.mode = EXTRA;
        /* falls through */
      case EXTRA:
        if (state.flags & 0x0400) {
          copy = state.length;
          if (copy > have) { copy = have; }
          if (copy) {
            if (state.head) {
              len = state.head.extra_len - state.length;
              if (!state.head.extra) {
                // Use untyped array for more convenient processing later
                state.head.extra = new Array(state.head.extra_len);
              }
              utils.arraySet(
                state.head.extra,
                input,
                next,
                // extra field is limited to 65536 bytes
                // - no need for additional size check
                copy,
                /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/
                len
              );
              //zmemcpy(state.head.extra + len, next,
              //        len + copy > state.head.extra_max ?
              //        state.head.extra_max - len : copy);
            }
            if (state.flags & 0x0200) {
              state.check = crc32(state.check, input, copy, next);
            }
            have -= copy;
            next += copy;
            state.length -= copy;
          }
          if (state.length) { break inf_leave; }
        }
        state.length = 0;
        state.mode = NAME;
        /* falls through */
      case NAME:
        if (state.flags & 0x0800) {
          if (have === 0) { break inf_leave; }
          copy = 0;
          do {
            // TODO: 2 or 1 bytes?
            len = input[next + copy++];
            /* use constant limit because in js we should not preallocate memory */
            if (state.head && len &&
                (state.length < 65536 /*state.head.name_max*/)) {
              state.head.name += String.fromCharCode(len);
            }
          } while (len && copy < have);

          if (state.flags & 0x0200) {
            state.check = crc32(state.check, input, copy, next);
          }
          have -= copy;
          next += copy;
          if (len) { break inf_leave; }
        }
        else if (state.head) {
          state.head.name = null;
        }
        state.length = 0;
        state.mode = COMMENT;
        /* falls through */
      case COMMENT:
        if (state.flags & 0x1000) {
          if (have === 0) { break inf_leave; }
          copy = 0;
          do {
            len = input[next + copy++];
            /* use constant limit because in js we should not preallocate memory */
            if (state.head && len &&
                (state.length < 65536 /*state.head.comm_max*/)) {
              state.head.comment += String.fromCharCode(len);
            }
          } while (len && copy < have);
          if (state.flags & 0x0200) {
            state.check = crc32(state.check, input, copy, next);
          }
          have -= copy;
          next += copy;
          if (len) { break inf_leave; }
        }
        else if (state.head) {
          state.head.comment = null;
        }
        state.mode = HCRC;
        /* falls through */
      case HCRC:
        if (state.flags & 0x0200) {
          //=== NEEDBITS(16); */
          while (bits < 16) {
            if (have === 0) { break inf_leave; }
            have--;
            hold += input[next++] << bits;
            bits += 8;
          }
          //===//
          if (hold !== (state.check & 0xffff)) {
            strm.msg = 'header crc mismatch';
            state.mode = BAD;
            break;
          }
          //=== INITBITS();
          hold = 0;
          bits = 0;
          //===//
        }
        if (state.head) {
          state.head.hcrc = ((state.flags >> 9) & 1);
          state.head.done = true;
        }
        strm.adler = state.check = 0;
        state.mode = TYPE;
        break;
      case DICTID:
        //=== NEEDBITS(32); */
        while (bits < 32) {
          if (have === 0) { break inf_leave; }
          have--;
          hold += input[next++] << bits;
          bits += 8;
        }
        //===//
        strm.adler = state.check = zswap32(hold);
        //=== INITBITS();
        hold = 0;
        bits = 0;
        //===//
        state.mode = DICT;
        /* falls through */
      case DICT:
        if (state.havedict === 0) {
          //--- RESTORE() ---
          strm.next_out = put;
          strm.avail_out = left;
          strm.next_in = next;
          strm.avail_in = have;
          state.hold = hold;
          state.bits = bits;
          //---
          return Z_NEED_DICT;
        }
        strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;
        state.mode = TYPE;
        /* falls through */
      case TYPE:
        if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }
        /* falls through */
      case TYPEDO:
        if (state.last) {
          //--- BYTEBITS() ---//
          hold >>>= bits & 7;
          bits -= bits & 7;
          //---//
          state.mode = CHECK;
          break;
        }
        //=== NEEDBITS(3); */
        while (bits < 3) {
          if (have === 0) { break inf_leave; }
          have--;
          hold += input[next++] << bits;
          bits += 8;
        }
        //===//
        state.last = (hold & 0x01)/*BITS(1)*/;
        //--- DROPBITS(1) ---//
        hold >>>= 1;
        bits -= 1;
        //---//

        switch ((hold & 0x03)/*BITS(2)*/) {
          case 0:                             /* stored block */
            //Tracev((stderr, "inflate:     stored block%s\\n",
            //        state.last ? " (last)" : ""));
            state.mode = STORED;
            break;
          case 1:                             /* fixed block */
            fixedtables(state);
            //Tracev((stderr, "inflate:     fixed codes block%s\\n",
            //        state.last ? " (last)" : ""));
            state.mode = LEN_;             /* decode codes */
            if (flush === Z_TREES) {
              //--- DROPBITS(2) ---//
              hold >>>= 2;
              bits -= 2;
              //---//
              break inf_leave;
            }
            break;
          case 2:                             /* dynamic block */
            //Tracev((stderr, "inflate:     dynamic codes block%s\\n",
            //        state.last ? " (last)" : ""));
            state.mode = TABLE;
            break;
          case 3:
            strm.msg = 'invalid block type';
            state.mode = BAD;
        }
        //--- DROPBITS(2) ---//
        hold >>>= 2;
        bits -= 2;
        //---//
        break;
      case STORED:
        //--- BYTEBITS() ---// /* go to byte boundary */
        hold >>>= bits & 7;
        bits -= bits & 7;
        //---//
        //=== NEEDBITS(32); */
        while (bits < 32) {
          if (have === 0) { break inf_leave; }
          have--;
          hold += input[next++] << bits;
          bits += 8;
        }
        //===//
        if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {
          strm.msg = 'invalid stored block lengths';
          state.mode = BAD;
          break;
        }
        state.length = hold & 0xffff;
        //Tracev((stderr, "inflate:       stored length %u\\n",
        //        state.length));
        //=== INITBITS();
        hold = 0;
        bits = 0;
        //===//
        state.mode = COPY_;
        if (flush === Z_TREES) { break inf_leave; }
        /* falls through */
      case COPY_:
        state.mode = COPY;
        /* falls through */
      case COPY:
        copy = state.length;
        if (copy) {
          if (copy > have) { copy = have; }
          if (copy > left) { copy = left; }
          if (copy === 0) { break inf_leave; }
          //--- zmemcpy(put, next, copy); ---
          utils.arraySet(output, input, next, copy, put);
          //---//
          have -= copy;
          next += copy;
          left -= copy;
          put += copy;
          state.length -= copy;
          break;
        }
        //Tracev((stderr, "inflate:       stored end\\n"));
        state.mode = TYPE;
        break;
      case TABLE:
        //=== NEEDBITS(14); */
        while (bits < 14) {
          if (have === 0) { break inf_leave; }
          have--;
          hold += input[next++] << bits;
          bits += 8;
        }
        //===//
        state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;
        //--- DROPBITS(5) ---//
        hold >>>= 5;
        bits -= 5;
        //---//
        state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;
        //--- DROPBITS(5) ---//
        hold >>>= 5;
        bits -= 5;
        //---//
        state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;
        //--- DROPBITS(4) ---//
        hold >>>= 4;
        bits -= 4;
        //---//
//#ifndef PKZIP_BUG_WORKAROUND
        if (state.nlen > 286 || state.ndist > 30) {
          strm.msg = 'too many length or distance symbols';
          state.mode = BAD;
          break;
        }
//#endif
        //Tracev((stderr, "inflate:       table sizes ok\\n"));
        state.have = 0;
        state.mode = LENLENS;
        /* falls through */
      case LENLENS:
        while (state.have < state.ncode) {
          //=== NEEDBITS(3);
          while (bits < 3) {
            if (have === 0) { break inf_leave; }
            have--;
            hold += input[next++] << bits;
            bits += 8;
          }
          //===//
          state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);
          //--- DROPBITS(3) ---//
          hold >>>= 3;
          bits -= 3;
          //---//
        }
        while (state.have < 19) {
          state.lens[order[state.have++]] = 0;
        }
        // We have separate tables & no pointers. 2 commented lines below not needed.
        //state.next = state.codes;
        //state.lencode = state.next;
        // Switch to use dynamic table
        state.lencode = state.lendyn;
        state.lenbits = 7;

        opts = { bits: state.lenbits };
        ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);
        state.lenbits = opts.bits;

        if (ret) {
          strm.msg = 'invalid code lengths set';
          state.mode = BAD;
          break;
        }
        //Tracev((stderr, "inflate:       code lengths ok\\n"));
        state.have = 0;
        state.mode = CODELENS;
        /* falls through */
      case CODELENS:
        while (state.have < state.nlen + state.ndist) {
          for (;;) {
            here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/
            here_bits = here >>> 24;
            here_op = (here >>> 16) & 0xff;
            here_val = here & 0xffff;

            if ((here_bits) <= bits) { break; }
            //--- PULLBYTE() ---//
            if (have === 0) { break inf_leave; }
            have--;
            hold += input[next++] << bits;
            bits += 8;
            //---//
          }
          if (here_val < 16) {
            //--- DROPBITS(here.bits) ---//
            hold >>>= here_bits;
            bits -= here_bits;
            //---//
            state.lens[state.have++] = here_val;
          }
          else {
            if (here_val === 16) {
              //=== NEEDBITS(here.bits + 2);
              n = here_bits + 2;
              while (bits < n) {
                if (have === 0) { break inf_leave; }
                have--;
                hold += input[next++] << bits;
                bits += 8;
              }
              //===//
              //--- DROPBITS(here.bits) ---//
              hold >>>= here_bits;
              bits -= here_bits;
              //---//
              if (state.have === 0) {
                strm.msg = 'invalid bit length repeat';
                state.mode = BAD;
                break;
              }
              len = state.lens[state.have - 1];
              copy = 3 + (hold & 0x03);//BITS(2);
              //--- DROPBITS(2) ---//
              hold >>>= 2;
              bits -= 2;
              //---//
            }
            else if (here_val === 17) {
              //=== NEEDBITS(here.bits + 3);
              n = here_bits + 3;
              while (bits < n) {
                if (have === 0) { break inf_leave; }
                have--;
                hold += input[next++] << bits;
                bits += 8;
              }
              //===//
              //--- DROPBITS(here.bits) ---//
              hold >>>= here_bits;
              bits -= here_bits;
              //---//
              len = 0;
              copy = 3 + (hold & 0x07);//BITS(3);
              //--- DROPBITS(3) ---//
              hold >>>= 3;
              bits -= 3;
              //---//
            }
            else {
              //=== NEEDBITS(here.bits + 7);
              n = here_bits + 7;
              while (bits < n) {
                if (have === 0) { break inf_leave; }
                have--;
                hold += input[next++] << bits;
                bits += 8;
              }
              //===//
              //--- DROPBITS(here.bits) ---//
              hold >>>= here_bits;
              bits -= here_bits;
              //---//
              len = 0;
              copy = 11 + (hold & 0x7f);//BITS(7);
              //--- DROPBITS(7) ---//
              hold >>>= 7;
              bits -= 7;
              //---//
            }
            if (state.have + copy > state.nlen + state.ndist) {
              strm.msg = 'invalid bit length repeat';
              state.mode = BAD;
              break;
            }
            while (copy--) {
              state.lens[state.have++] = len;
            }
          }
        }

        /* handle error breaks in while */
        if (state.mode === BAD) { break; }

        /* check for end-of-block code (better have one) */
        if (state.lens[256] === 0) {
          strm.msg = 'invalid code -- missing end-of-block';
          state.mode = BAD;
          break;
        }

        /* build code tables -- note: do not change the lenbits or distbits
           values here (9 and 6) without reading the comments in inftrees.h
           concerning the ENOUGH constants, which depend on those values */
        state.lenbits = 9;

        opts = { bits: state.lenbits };
        ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);
        // We have separate tables & no pointers. 2 commented lines below not needed.
        // state.next_index = opts.table_index;
        state.lenbits = opts.bits;
        // state.lencode = state.next;

        if (ret) {
          strm.msg = 'invalid literal/lengths set';
          state.mode = BAD;
          break;
        }

        state.distbits = 6;
        //state.distcode.copy(state.codes);
        // Switch to use dynamic table
        state.distcode = state.distdyn;
        opts = { bits: state.distbits };
        ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);
        // We have separate tables & no pointers. 2 commented lines below not needed.
        // state.next_index = opts.table_index;
        state.distbits = opts.bits;
        // state.distcode = state.next;

        if (ret) {
          strm.msg = 'invalid distances set';
          state.mode = BAD;
          break;
        }
        //Tracev((stderr, 'inflate:       codes ok\\n'));
        state.mode = LEN_;
        if (flush === Z_TREES) { break inf_leave; }
        /* falls through */
      case LEN_:
        state.mode = LEN;
        /* falls through */
      case LEN:
        if (have >= 6 && left >= 258) {
          //--- RESTORE() ---
          strm.next_out = put;
          strm.avail_out = left;
          strm.next_in = next;
          strm.avail_in = have;
          state.hold = hold;
          state.bits = bits;
          //---
          inflate_fast(strm, _out);
          //--- LOAD() ---
          put = strm.next_out;
          output = strm.output;
          left = strm.avail_out;
          next = strm.next_in;
          input = strm.input;
          have = strm.avail_in;
          hold = state.hold;
          bits = state.bits;
          //---

          if (state.mode === TYPE) {
            state.back = -1;
          }
          break;
        }
        state.back = 0;
        for (;;) {
          here = state.lencode[hold & ((1 << state.lenbits) - 1)];  /*BITS(state.lenbits)*/
          here_bits = here >>> 24;
          here_op = (here >>> 16) & 0xff;
          here_val = here & 0xffff;

          if (here_bits <= bits) { break; }
          //--- PULLBYTE() ---//
          if (have === 0) { break inf_leave; }
          have--;
          hold += input[next++] << bits;
          bits += 8;
          //---//
        }
        if (here_op && (here_op & 0xf0) === 0) {
          last_bits = here_bits;
          last_op = here_op;
          last_val = here_val;
          for (;;) {
            here = state.lencode[last_val +
                    ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];
            here_bits = here >>> 24;
            here_op = (here >>> 16) & 0xff;
            here_val = here & 0xffff;

            if ((last_bits + here_bits) <= bits) { break; }
            //--- PULLBYTE() ---//
            if (have === 0) { break inf_leave; }
            have--;
            hold += input[next++] << bits;
            bits += 8;
            //---//
          }
          //--- DROPBITS(last.bits) ---//
          hold >>>= last_bits;
          bits -= last_bits;
          //---//
          state.back += last_bits;
        }
        //--- DROPBITS(here.bits) ---//
        hold >>>= here_bits;
        bits -= here_bits;
        //---//
        state.back += here_bits;
        state.length = here_val;
        if (here_op === 0) {
          //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?
          //        "inflate:         literal '%c'\\n" :
          //        "inflate:         literal 0x%02x\\n", here.val));
          state.mode = LIT;
          break;
        }
        if (here_op & 32) {
          //Tracevv((stderr, "inflate:         end of block\\n"));
          state.back = -1;
          state.mode = TYPE;
          break;
        }
        if (here_op & 64) {
          strm.msg = 'invalid literal/length code';
          state.mode = BAD;
          break;
        }
        state.extra = here_op & 15;
        state.mode = LENEXT;
        /* falls through */
      case LENEXT:
        if (state.extra) {
          //=== NEEDBITS(state.extra);
          n = state.extra;
          while (bits < n) {
            if (have === 0) { break inf_leave; }
            have--;
            hold += input[next++] << bits;
            bits += 8;
          }
          //===//
          state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;
          //--- DROPBITS(state.extra) ---//
          hold >>>= state.extra;
          bits -= state.extra;
          //---//
          state.back += state.extra;
        }
        //Tracevv((stderr, "inflate:         length %u\\n", state.length));
        state.was = state.length;
        state.mode = DIST;
        /* falls through */
      case DIST:
        for (;;) {
          here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/
          here_bits = here >>> 24;
          here_op = (here >>> 16) & 0xff;
          here_val = here & 0xffff;

          if ((here_bits) <= bits) { break; }
          //--- PULLBYTE() ---//
          if (have === 0) { break inf_leave; }
          have--;
          hold += input[next++] << bits;
          bits += 8;
          //---//
        }
        if ((here_op & 0xf0) === 0) {
          last_bits = here_bits;
          last_op = here_op;
          last_val = here_val;
          for (;;) {
            here = state.distcode[last_val +
                    ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];
            here_bits = here >>> 24;
            here_op = (here >>> 16) & 0xff;
            here_val = here & 0xffff;

            if ((last_bits + here_bits) <= bits) { break; }
            //--- PULLBYTE() ---//
            if (have === 0) { break inf_leave; }
            have--;
            hold += input[next++] << bits;
            bits += 8;
            //---//
          }
          //--- DROPBITS(last.bits) ---//
          hold >>>= last_bits;
          bits -= last_bits;
          //---//
          state.back += last_bits;
        }
        //--- DROPBITS(here.bits) ---//
        hold >>>= here_bits;
        bits -= here_bits;
        //---//
        state.back += here_bits;
        if (here_op & 64) {
          strm.msg = 'invalid distance code';
          state.mode = BAD;
          break;
        }
        state.offset = here_val;
        state.extra = (here_op) & 15;
        state.mode = DISTEXT;
        /* falls through */
      case DISTEXT:
        if (state.extra) {
          //=== NEEDBITS(state.extra);
          n = state.extra;
          while (bits < n) {
            if (have === 0) { break inf_leave; }
            have--;
            hold += input[next++] << bits;
            bits += 8;
          }
          //===//
          state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;
          //--- DROPBITS(state.extra) ---//
          hold >>>= state.extra;
          bits -= state.extra;
          //---//
          state.back += state.extra;
        }
//#ifdef INFLATE_STRICT
        if (state.offset > state.dmax) {
          strm.msg = 'invalid distance too far back';
          state.mode = BAD;
          break;
        }
//#endif
        //Tracevv((stderr, "inflate:         distance %u\\n", state.offset));
        state.mode = MATCH;
        /* falls through */
      case MATCH:
        if (left === 0) { break inf_leave; }
        copy = _out - left;
        if (state.offset > copy) {         /* copy from window */
          copy = state.offset - copy;
          if (copy > state.whave) {
            if (state.sane) {
              strm.msg = 'invalid distance too far back';
              state.mode = BAD;
              break;
            }
// (!) This block is disabled in zlib defaults,
// don't enable it for binary compatibility
//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR
//          Trace((stderr, "inflate.c too far\\n"));
//          copy -= state.whave;
//          if (copy > state.length) { copy = state.length; }
//          if (copy > left) { copy = left; }
//          left -= copy;
//          state.length -= copy;
//          do {
//            output[put++] = 0;
//          } while (--copy);
//          if (state.length === 0) { state.mode = LEN; }
//          break;
//#endif
          }
          if (copy > state.wnext) {
            copy -= state.wnext;
            from = state.wsize - copy;
          }
          else {
            from = state.wnext - copy;
          }
          if (copy > state.length) { copy = state.length; }
          from_source = state.window;
        }
        else {                              /* copy from output */
          from_source = output;
          from = put - state.offset;
          copy = state.length;
        }
        if (copy > left) { copy = left; }
        left -= copy;
        state.length -= copy;
        do {
          output[put++] = from_source[from++];
        } while (--copy);
        if (state.length === 0) { state.mode = LEN; }
        break;
      case LIT:
        if (left === 0) { break inf_leave; }
        output[put++] = state.length;
        left--;
        state.mode = LEN;
        break;
      case CHECK:
        if (state.wrap) {
          //=== NEEDBITS(32);
          while (bits < 32) {
            if (have === 0) { break inf_leave; }
            have--;
            // Use '|' instead of '+' to make sure that result is signed
            hold |= input[next++] << bits;
            bits += 8;
          }
          //===//
          _out -= left;
          strm.total_out += _out;
          state.total += _out;
          if (_out) {
            strm.adler = state.check =
                /*UPDATE(state.check, put - _out, _out);*/
                (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out));

          }
          _out = left;
          // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too
          if ((state.flags ? hold : zswap32(hold)) !== state.check) {
            strm.msg = 'incorrect data check';
            state.mode = BAD;
            break;
          }
          //=== INITBITS();
          hold = 0;
          bits = 0;
          //===//
          //Tracev((stderr, "inflate:   check matches trailer\\n"));
        }
        state.mode = LENGTH;
        /* falls through */
      case LENGTH:
        if (state.wrap && state.flags) {
          //=== NEEDBITS(32);
          while (bits < 32) {
            if (have === 0) { break inf_leave; }
            have--;
            hold += input[next++] << bits;
            bits += 8;
          }
          //===//
          if (hold !== (state.total & 0xffffffff)) {
            strm.msg = 'incorrect length check';
            state.mode = BAD;
            break;
          }
          //=== INITBITS();
          hold = 0;
          bits = 0;
          //===//
          //Tracev((stderr, "inflate:   length matches trailer\\n"));
        }
        state.mode = DONE;
        /* falls through */
      case DONE:
        ret = Z_STREAM_END;
        break inf_leave;
      case BAD:
        ret = Z_DATA_ERROR;
        break inf_leave;
      case MEM:
        return Z_MEM_ERROR;
      case SYNC:
        /* falls through */
      default:
        return Z_STREAM_ERROR;
    }
  }

  // inf_leave <- here is real place for "goto inf_leave", emulated via "break inf_leave"

  /*
     Return from inflate(), updating the total counts and the check value.
     If there was no progress during the inflate() call, return a buffer
     error.  Call updatewindow() to create and/or update the window state.
     Note: a memory error from inflate() is non-recoverable.
   */

  //--- RESTORE() ---
  strm.next_out = put;
  strm.avail_out = left;
  strm.next_in = next;
  strm.avail_in = have;
  state.hold = hold;
  state.bits = bits;
  //---

  if (state.wsize || (_out !== strm.avail_out && state.mode < BAD &&
                      (state.mode < CHECK || flush !== Z_FINISH))) {
    if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) {
      state.mode = MEM;
      return Z_MEM_ERROR;
    }
  }
  _in -= strm.avail_in;
  _out -= strm.avail_out;
  strm.total_in += _in;
  strm.total_out += _out;
  state.total += _out;
  if (state.wrap && _out) {
    strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/
      (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out));
  }
  strm.data_type = state.bits + (state.last ? 64 : 0) +
                    (state.mode === TYPE ? 128 : 0) +
                    (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);
  if (((_in === 0 && _out === 0) || flush === Z_FINISH) && ret === Z_OK) {
    ret = Z_BUF_ERROR;
  }
  return ret;
}

function inflateEnd(strm) {

  if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) {
    return Z_STREAM_ERROR;
  }

  var state = strm.state;
  if (state.window) {
    state.window = null;
  }
  strm.state = null;
  return Z_OK;
}

function inflateGetHeader(strm, head) {
  var state;

  /* check state */
  if (!strm || !strm.state) { return Z_STREAM_ERROR; }
  state = strm.state;
  if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR; }

  /* save header structure */
  state.head = head;
  head.done = false;
  return Z_OK;
}

function inflateSetDictionary(strm, dictionary) {
  var dictLength = dictionary.length;

  var state;
  var dictid;
  var ret;

  /* check state */
  if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR; }
  state = strm.state;

  if (state.wrap !== 0 && state.mode !== DICT) {
    return Z_STREAM_ERROR;
  }

  /* check for correct dictionary identifier */
  if (state.mode === DICT) {
    dictid = 1; /* adler32(0, null, 0)*/
    /* dictid = adler32(dictid, dictionary, dictLength); */
    dictid = adler32(dictid, dictionary, dictLength, 0);
    if (dictid !== state.check) {
      return Z_DATA_ERROR;
    }
  }
  /* copy dictionary to window using updatewindow(), which will amend the
   existing dictionary if appropriate */
  ret = updatewindow(strm, dictionary, dictLength, dictLength);
  if (ret) {
    state.mode = MEM;
    return Z_MEM_ERROR;
  }
  state.havedict = 1;
  // Tracev((stderr, "inflate:   dictionary set\\n"));
  return Z_OK;
}

exports.inflateReset = inflateReset;
exports.inflateReset2 = inflateReset2;
exports.inflateResetKeep = inflateResetKeep;
exports.inflateInit = inflateInit;
exports.inflateInit2 = inflateInit2;
exports.inflate = inflate;
exports.inflateEnd = inflateEnd;
exports.inflateGetHeader = inflateGetHeader;
exports.inflateSetDictionary = inflateSetDictionary;
exports.inflateInfo = 'pako inflate (from Nodeca project)';

/* Not implemented
exports.inflateCopy = inflateCopy;
exports.inflateGetDictionary = inflateGetDictionary;
exports.inflateMark = inflateMark;
exports.inflatePrime = inflatePrime;
exports.inflateSync = inflateSync;
exports.inflateSyncPoint = inflateSyncPoint;
exports.inflateUndermine = inflateUndermine;
*/
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 81648 characters]
//# sourceURL=webpack-internal:///../../../node_modules/pako/lib/zlib/inflate.js
`);
              }
            ),
            /***/
            "../../../node_modules/pako/lib/zlib/inftrees.js": (
              /*!*******************************************************!*\
                !*** ../../../node_modules/pako/lib/zlib/inftrees.js ***!
                \*******************************************************/
              /***/
              (module, __unused_webpack_exports, __webpack_require__) => {
                "use strict";
                eval(`

// (C) 1995-2013 Jean-loup Gailly and Mark Adler
// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
//   claim that you wrote the original software. If you use this software
//   in a product, an acknowledgment in the product documentation would be
//   appreciated but is not required.
// 2. Altered source versions must be plainly marked as such, and must not be
//   misrepresented as being the original software.
// 3. This notice may not be removed or altered from any source distribution.

var utils = __webpack_require__(/*! ../utils/common */ "../../../node_modules/pako/lib/utils/common.js");

var MAXBITS = 15;
var ENOUGH_LENS = 852;
var ENOUGH_DISTS = 592;
//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);

var CODES = 0;
var LENS = 1;
var DISTS = 2;

var lbase = [ /* Length codes 257..285 base */
  3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,
  35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0
];

var lext = [ /* Length codes 257..285 extra */
  16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,
  19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78
];

var dbase = [ /* Distance codes 0..29 base */
  1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,
  257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,
  8193, 12289, 16385, 24577, 0, 0
];

var dext = [ /* Distance codes 0..29 extra */
  16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,
  23, 23, 24, 24, 25, 25, 26, 26, 27, 27,
  28, 28, 29, 29, 64, 64
];

module.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts)
{
  var bits = opts.bits;
      //here = opts.here; /* table entry for duplication */

  var len = 0;               /* a code's length in bits */
  var sym = 0;               /* index of code symbols */
  var min = 0, max = 0;          /* minimum and maximum code lengths */
  var root = 0;              /* number of index bits for root table */
  var curr = 0;              /* number of index bits for current table */
  var drop = 0;              /* code bits to drop for sub-table */
  var left = 0;                   /* number of prefix codes available */
  var used = 0;              /* code entries in table used */
  var huff = 0;              /* Huffman code */
  var incr;              /* for incrementing code, index */
  var fill;              /* index for replicating entries */
  var low;               /* low bits for current root entry */
  var mask;              /* mask for low root bits */
  var next;             /* next available space in table */
  var base = null;     /* base value table to use */
  var base_index = 0;
//  var shoextra;    /* extra bits table to use */
  var end;                    /* use base and extra for symbol > end */
  var count = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1];    /* number of codes of each length */
  var offs = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1];     /* offsets in table for each length */
  var extra = null;
  var extra_index = 0;

  var here_bits, here_op, here_val;

  /*
   Process a set of code lengths to create a canonical Huffman code.  The
   code lengths are lens[0..codes-1].  Each length corresponds to the
   symbols 0..codes-1.  The Huffman code is generated by first sorting the
   symbols by length from short to long, and retaining the symbol order
   for codes with equal lengths.  Then the code starts with all zero bits
   for the first code of the shortest length, and the codes are integer
   increments for the same length, and zeros are appended as the length
   increases.  For the deflate format, these bits are stored backwards
   from their more natural integer increment ordering, and so when the
   decoding tables are built in the large loop below, the integer codes
   are incremented backwards.

   This routine assumes, but does not check, that all of the entries in
   lens[] are in the range 0..MAXBITS.  The caller must assure this.
   1..MAXBITS is interpreted as that code length.  zero means that that
   symbol does not occur in this code.

   The codes are sorted by computing a count of codes for each length,
   creating from that a table of starting indices for each length in the
   sorted table, and then entering the symbols in order in the sorted
   table.  The sorted table is work[], with that space being provided by
   the caller.

   The length counts are used for other purposes as well, i.e. finding
   the minimum and maximum length codes, determining if there are any
   codes at all, checking for a valid set of lengths, and looking ahead
   at length counts to determine sub-table sizes when building the
   decoding tables.
   */

  /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */
  for (len = 0; len <= MAXBITS; len++) {
    count[len] = 0;
  }
  for (sym = 0; sym < codes; sym++) {
    count[lens[lens_index + sym]]++;
  }

  /* bound code lengths, force root to be within code lengths */
  root = bits;
  for (max = MAXBITS; max >= 1; max--) {
    if (count[max] !== 0) { break; }
  }
  if (root > max) {
    root = max;
  }
  if (max === 0) {                     /* no symbols to code at all */
    //table.op[opts.table_index] = 64;  //here.op = (var char)64;    /* invalid code marker */
    //table.bits[opts.table_index] = 1;   //here.bits = (var char)1;
    //table.val[opts.table_index++] = 0;   //here.val = (var short)0;
    table[table_index++] = (1 << 24) | (64 << 16) | 0;


    //table.op[opts.table_index] = 64;
    //table.bits[opts.table_index] = 1;
    //table.val[opts.table_index++] = 0;
    table[table_index++] = (1 << 24) | (64 << 16) | 0;

    opts.bits = 1;
    return 0;     /* no symbols, but wait for decoding to report error */
  }
  for (min = 1; min < max; min++) {
    if (count[min] !== 0) { break; }
  }
  if (root < min) {
    root = min;
  }

  /* check for an over-subscribed or incomplete set of lengths */
  left = 1;
  for (len = 1; len <= MAXBITS; len++) {
    left <<= 1;
    left -= count[len];
    if (left < 0) {
      return -1;
    }        /* over-subscribed */
  }
  if (left > 0 && (type === CODES || max !== 1)) {
    return -1;                      /* incomplete set */
  }

  /* generate offsets into symbol table for each length for sorting */
  offs[1] = 0;
  for (len = 1; len < MAXBITS; len++) {
    offs[len + 1] = offs[len] + count[len];
  }

  /* sort symbols by length, by symbol order within each length */
  for (sym = 0; sym < codes; sym++) {
    if (lens[lens_index + sym] !== 0) {
      work[offs[lens[lens_index + sym]]++] = sym;
    }
  }

  /*
   Create and fill in decoding tables.  In this loop, the table being
   filled is at next and has curr index bits.  The code being used is huff
   with length len.  That code is converted to an index by dropping drop
   bits off of the bottom.  For codes where len is less than drop + curr,
   those top drop + curr - len bits are incremented through all values to
   fill the table with replicated entries.

   root is the number of index bits for the root table.  When len exceeds
   root, sub-tables are created pointed to by the root entry with an index
   of the low root bits of huff.  This is saved in low to check for when a
   new sub-table should be started.  drop is zero when the root table is
   being filled, and drop is root when sub-tables are being filled.

   When a new sub-table is needed, it is necessary to look ahead in the
   code lengths to determine what size sub-table is needed.  The length
   counts are used for this, and so count[] is decremented as codes are
   entered in the tables.

   used keeps track of how many table entries have been allocated from the
   provided *table space.  It is checked for LENS and DIST tables against
   the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in
   the initial root table size constants.  See the comments in inftrees.h
   for more information.

   sym increments through all symbols, and the loop terminates when
   all codes of length max, i.e. all codes, have been processed.  This
   routine permits incomplete codes, so another loop after this one fills
   in the rest of the decoding tables with invalid code markers.
   */

  /* set up for code type */
  // poor man optimization - use if-else instead of switch,
  // to avoid deopts in old v8
  if (type === CODES) {
    base = extra = work;    /* dummy value--not used */
    end = 19;

  } else if (type === LENS) {
    base = lbase;
    base_index -= 257;
    extra = lext;
    extra_index -= 257;
    end = 256;

  } else {                    /* DISTS */
    base = dbase;
    extra = dext;
    end = -1;
  }

  /* initialize opts for loop */
  huff = 0;                   /* starting code */
  sym = 0;                    /* starting code symbol */
  len = min;                  /* starting code length */
  next = table_index;              /* current table to fill in */
  curr = root;                /* current table index bits */
  drop = 0;                   /* current bits to drop from code for index */
  low = -1;                   /* trigger new sub-table when len > root */
  used = 1 << root;          /* use root table entries */
  mask = used - 1;            /* mask for comparing low */

  /* check available table space */
  if ((type === LENS && used > ENOUGH_LENS) ||
    (type === DISTS && used > ENOUGH_DISTS)) {
    return 1;
  }

  /* process all codes and make table entries */
  for (;;) {
    /* create table entry */
    here_bits = len - drop;
    if (work[sym] < end) {
      here_op = 0;
      here_val = work[sym];
    }
    else if (work[sym] > end) {
      here_op = extra[extra_index + work[sym]];
      here_val = base[base_index + work[sym]];
    }
    else {
      here_op = 32 + 64;         /* end of block */
      here_val = 0;
    }

    /* replicate for those indices with low len bits equal to huff */
    incr = 1 << (len - drop);
    fill = 1 << curr;
    min = fill;                 /* save offset to next table */
    do {
      fill -= incr;
      table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;
    } while (fill !== 0);

    /* backwards increment the len-bit code huff */
    incr = 1 << (len - 1);
    while (huff & incr) {
      incr >>= 1;
    }
    if (incr !== 0) {
      huff &= incr - 1;
      huff += incr;
    } else {
      huff = 0;
    }

    /* go to next symbol, update count, len */
    sym++;
    if (--count[len] === 0) {
      if (len === max) { break; }
      len = lens[lens_index + work[sym]];
    }

    /* create new sub-table if needed */
    if (len > root && (huff & mask) !== low) {
      /* if first time, transition to sub-tables */
      if (drop === 0) {
        drop = root;
      }

      /* increment past last table */
      next += min;            /* here min is 1 << curr */

      /* determine length of next table */
      curr = len - drop;
      left = 1 << curr;
      while (curr + drop < max) {
        left -= count[curr + drop];
        if (left <= 0) { break; }
        curr++;
        left <<= 1;
      }

      /* check for enough space */
      used += 1 << curr;
      if ((type === LENS && used > ENOUGH_LENS) ||
        (type === DISTS && used > ENOUGH_DISTS)) {
        return 1;
      }

      /* point entry in root table to sub-table */
      low = huff & mask;
      /*table.op[low] = curr;
      table.bits[low] = root;
      table.val[low] = next - opts.table_index;*/
      table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;
    }
  }

  /* fill in remaining table entry if code is incomplete (guaranteed to have
   at most one remaining entry, since if the code is incomplete, the
   maximum code length that was allowed to get this far is one bit) */
  if (huff !== 0) {
    //table.op[next + huff] = 64;            /* invalid code marker */
    //table.bits[next + huff] = len - drop;
    //table.val[next + huff] = 0;
    table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;
  }

  /* set return parameters */
  //opts.table_index += used;
  opts.bits = root;
  return 0;
};
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 20188 characters]
//# sourceURL=webpack-internal:///../../../node_modules/pako/lib/zlib/inftrees.js
`);
              }
            ),
            /***/
            "../../../node_modules/pako/lib/zlib/messages.js": (
              /*!*******************************************************!*\
                !*** ../../../node_modules/pako/lib/zlib/messages.js ***!
                \*******************************************************/
              /***/
              (module) => {
                "use strict";
                eval("\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n  2:      'need dictionary',     /* Z_NEED_DICT       2  */\n  1:      'stream end',          /* Z_STREAM_END      1  */\n  0:      '',                    /* Z_OK              0  */\n  '-1':   'file error',          /* Z_ERRNO         (-1) */\n  '-2':   'stream error',        /* Z_STREAM_ERROR  (-2) */\n  '-3':   'data error',          /* Z_DATA_ERROR    (-3) */\n  '-4':   'insufficient memory', /* Z_MEM_ERROR     (-4) */\n  '-5':   'buffer error',        /* Z_BUF_ERROR     (-5) */\n  '-6':   'incompatible version' /* Z_VERSION_ERROR (-6) */\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bha28vbGliL3psaWIvbWVzc2FnZXMuanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhEQUE4RDtBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcGFrby9saWIvemxpYi9tZXNzYWdlcy5qcz9kMjkzIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuLy8gKEMpIDE5OTUtMjAxMyBKZWFuLWxvdXAgR2FpbGx5IGFuZCBNYXJrIEFkbGVyXG4vLyAoQykgMjAxNC0yMDE3IFZpdGFseSBQdXpyaW4gYW5kIEFuZHJleSBUdXBpdHNpblxuLy9cbi8vIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgJ2FzLWlzJywgd2l0aG91dCBhbnkgZXhwcmVzcyBvciBpbXBsaWVkXG4vLyB3YXJyYW50eS4gSW4gbm8gZXZlbnQgd2lsbCB0aGUgYXV0aG9ycyBiZSBoZWxkIGxpYWJsZSBmb3IgYW55IGRhbWFnZXNcbi8vIGFyaXNpbmcgZnJvbSB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGFueW9uZSB0byB1c2UgdGhpcyBzb2Z0d2FyZSBmb3IgYW55IHB1cnBvc2UsXG4vLyBpbmNsdWRpbmcgY29tbWVyY2lhbCBhcHBsaWNhdGlvbnMsIGFuZCB0byBhbHRlciBpdCBhbmQgcmVkaXN0cmlidXRlIGl0XG4vLyBmcmVlbHksIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnM6XG4vL1xuLy8gMS4gVGhlIG9yaWdpbiBvZiB0aGlzIHNvZnR3YXJlIG11c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkOyB5b3UgbXVzdCBub3Rcbi8vICAgY2xhaW0gdGhhdCB5b3Ugd3JvdGUgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLiBJZiB5b3UgdXNlIHRoaXMgc29mdHdhcmVcbi8vICAgaW4gYSBwcm9kdWN0LCBhbiBhY2tub3dsZWRnbWVudCBpbiB0aGUgcHJvZHVjdCBkb2N1bWVudGF0aW9uIHdvdWxkIGJlXG4vLyAgIGFwcHJlY2lhdGVkIGJ1dCBpcyBub3QgcmVxdWlyZWQuXG4vLyAyLiBBbHRlcmVkIHNvdXJjZSB2ZXJzaW9ucyBtdXN0IGJlIHBsYWlubHkgbWFya2VkIGFzIHN1Y2gsIGFuZCBtdXN0IG5vdCBiZVxuLy8gICBtaXNyZXByZXNlbnRlZCBhcyBiZWluZyB0aGUgb3JpZ2luYWwgc29mdHdhcmUuXG4vLyAzLiBUaGlzIG5vdGljZSBtYXkgbm90IGJlIHJlbW92ZWQgb3IgYWx0ZXJlZCBmcm9tIGFueSBzb3VyY2UgZGlzdHJpYnV0aW9uLlxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgMjogICAgICAnbmVlZCBkaWN0aW9uYXJ5JywgICAgIC8qIFpfTkVFRF9ESUNUICAgICAgIDIgICovXG4gIDE6ICAgICAgJ3N0cmVhbSBlbmQnLCAgICAgICAgICAvKiBaX1NUUkVBTV9FTkQgICAgICAxICAqL1xuICAwOiAgICAgICcnLCAgICAgICAgICAgICAgICAgICAgLyogWl9PSyAgICAgICAgICAgICAgMCAgKi9cbiAgJy0xJzogICAnZmlsZSBlcnJvcicsICAgICAgICAgIC8qIFpfRVJSTk8gICAgICAgICAoLTEpICovXG4gICctMic6ICAgJ3N0cmVhbSBlcnJvcicsICAgICAgICAvKiBaX1NUUkVBTV9FUlJPUiAgKC0yKSAqL1xuICAnLTMnOiAgICdkYXRhIGVycm9yJywgICAgICAgICAgLyogWl9EQVRBX0VSUk9SICAgICgtMykgKi9cbiAgJy00JzogICAnaW5zdWZmaWNpZW50IG1lbW9yeScsIC8qIFpfTUVNX0VSUk9SICAgICAoLTQpICovXG4gICctNSc6ICAgJ2J1ZmZlciBlcnJvcicsICAgICAgICAvKiBaX0JVRl9FUlJPUiAgICAgKC01KSAqL1xuICAnLTYnOiAgICdpbmNvbXBhdGlibGUgdmVyc2lvbicgLyogWl9WRVJTSU9OX0VSUk9SICgtNikgKi9cbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/pako/lib/zlib/messages.js\n");
              }
            ),
            /***/
            "../../../node_modules/pako/lib/zlib/trees.js": (
              /*!****************************************************!*\
                !*** ../../../node_modules/pako/lib/zlib/trees.js ***!
                \****************************************************/
              /***/
              (__unused_webpack_module, exports, __webpack_require__) => {
                "use strict";
                eval(`

// (C) 1995-2013 Jean-loup Gailly and Mark Adler
// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
//   claim that you wrote the original software. If you use this software
//   in a product, an acknowledgment in the product documentation would be
//   appreciated but is not required.
// 2. Altered source versions must be plainly marked as such, and must not be
//   misrepresented as being the original software.
// 3. This notice may not be removed or altered from any source distribution.

/* eslint-disable space-unary-ops */

var utils = __webpack_require__(/*! ../utils/common */ "../../../node_modules/pako/lib/utils/common.js");

/* Public constants ==========================================================*/
/* ===========================================================================*/


//var Z_FILTERED          = 1;
//var Z_HUFFMAN_ONLY      = 2;
//var Z_RLE               = 3;
var Z_FIXED               = 4;
//var Z_DEFAULT_STRATEGY  = 0;

/* Possible values of the data_type field (though see inflate()) */
var Z_BINARY              = 0;
var Z_TEXT                = 1;
//var Z_ASCII             = 1; // = Z_TEXT
var Z_UNKNOWN             = 2;

/*============================================================================*/


function zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }

// From zutil.h

var STORED_BLOCK = 0;
var STATIC_TREES = 1;
var DYN_TREES    = 2;
/* The three kinds of block type */

var MIN_MATCH    = 3;
var MAX_MATCH    = 258;
/* The minimum and maximum match lengths */

// From deflate.h
/* ===========================================================================
 * Internal compression state.
 */

var LENGTH_CODES  = 29;
/* number of length codes, not counting the special END_BLOCK code */

var LITERALS      = 256;
/* number of literal bytes 0..255 */

var L_CODES       = LITERALS + 1 + LENGTH_CODES;
/* number of Literal or Length codes, including the END_BLOCK code */

var D_CODES       = 30;
/* number of distance codes */

var BL_CODES      = 19;
/* number of codes used to transfer the bit lengths */

var HEAP_SIZE     = 2 * L_CODES + 1;
/* maximum heap size */

var MAX_BITS      = 15;
/* All codes must not exceed MAX_BITS bits */

var Buf_size      = 16;
/* size of bit buffer in bi_buf */


/* ===========================================================================
 * Constants
 */

var MAX_BL_BITS = 7;
/* Bit length codes must not exceed MAX_BL_BITS bits */

var END_BLOCK   = 256;
/* end of block literal code */

var REP_3_6     = 16;
/* repeat previous bit length 3-6 times (2 bits of repeat count) */

var REPZ_3_10   = 17;
/* repeat a zero length 3-10 times  (3 bits of repeat count) */

var REPZ_11_138 = 18;
/* repeat a zero length 11-138 times  (7 bits of repeat count) */

/* eslint-disable comma-spacing,array-bracket-spacing */
var extra_lbits =   /* extra bits for each length code */
  [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];

var extra_dbits =   /* extra bits for each distance code */
  [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];

var extra_blbits =  /* extra bits for each bit length code */
  [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];

var bl_order =
  [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];
/* eslint-enable comma-spacing,array-bracket-spacing */

/* The lengths of the bit length codes are sent in order of decreasing
 * probability, to avoid transmitting the lengths for unused bit length codes.
 */

/* ===========================================================================
 * Local data. These are initialized only once.
 */

// We pre-fill arrays with 0 to avoid uninitialized gaps

var DIST_CODE_LEN = 512; /* see definition of array dist_code below */

// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1
var static_ltree  = new Array((L_CODES + 2) * 2);
zero(static_ltree);
/* The static literal tree. Since the bit lengths are imposed, there is no
 * need for the L_CODES extra codes used during heap construction. However
 * The codes 286 and 287 are needed to build a canonical tree (see _tr_init
 * below).
 */

var static_dtree  = new Array(D_CODES * 2);
zero(static_dtree);
/* The static distance tree. (Actually a trivial tree since all codes use
 * 5 bits.)
 */

var _dist_code    = new Array(DIST_CODE_LEN);
zero(_dist_code);
/* Distance codes. The first 256 values correspond to the distances
 * 3 .. 258, the last 256 values correspond to the top 8 bits of
 * the 15 bit distances.
 */

var _length_code  = new Array(MAX_MATCH - MIN_MATCH + 1);
zero(_length_code);
/* length code for each normalized match length (0 == MIN_MATCH) */

var base_length   = new Array(LENGTH_CODES);
zero(base_length);
/* First normalized length for each code (0 = MIN_MATCH) */

var base_dist     = new Array(D_CODES);
zero(base_dist);
/* First normalized distance for each code (0 = distance of 1) */


function StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {

  this.static_tree  = static_tree;  /* static tree or NULL */
  this.extra_bits   = extra_bits;   /* extra bits for each code or NULL */
  this.extra_base   = extra_base;   /* base index for extra_bits */
  this.elems        = elems;        /* max number of elements in the tree */
  this.max_length   = max_length;   /* max bit length for the codes */

  // show if \`static_tree\` has data or dummy - needed for monomorphic objects
  this.has_stree    = static_tree && static_tree.length;
}


var static_l_desc;
var static_d_desc;
var static_bl_desc;


function TreeDesc(dyn_tree, stat_desc) {
  this.dyn_tree = dyn_tree;     /* the dynamic tree */
  this.max_code = 0;            /* largest code with non zero frequency */
  this.stat_desc = stat_desc;   /* the corresponding static tree */
}



function d_code(dist) {
  return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];
}


/* ===========================================================================
 * Output a short LSB first on the stream.
 * IN assertion: there is enough room in pendingBuf.
 */
function put_short(s, w) {
//    put_byte(s, (uch)((w) & 0xff));
//    put_byte(s, (uch)((ush)(w) >> 8));
  s.pending_buf[s.pending++] = (w) & 0xff;
  s.pending_buf[s.pending++] = (w >>> 8) & 0xff;
}


/* ===========================================================================
 * Send a value on a given number of bits.
 * IN assertion: length <= 16 and value fits in length bits.
 */
function send_bits(s, value, length) {
  if (s.bi_valid > (Buf_size - length)) {
    s.bi_buf |= (value << s.bi_valid) & 0xffff;
    put_short(s, s.bi_buf);
    s.bi_buf = value >> (Buf_size - s.bi_valid);
    s.bi_valid += length - Buf_size;
  } else {
    s.bi_buf |= (value << s.bi_valid) & 0xffff;
    s.bi_valid += length;
  }
}


function send_code(s, c, tree) {
  send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);
}


/* ===========================================================================
 * Reverse the first len bits of a code, using straightforward code (a faster
 * method would use a table)
 * IN assertion: 1 <= len <= 15
 */
function bi_reverse(code, len) {
  var res = 0;
  do {
    res |= code & 1;
    code >>>= 1;
    res <<= 1;
  } while (--len > 0);
  return res >>> 1;
}


/* ===========================================================================
 * Flush the bit buffer, keeping at most 7 bits in it.
 */
function bi_flush(s) {
  if (s.bi_valid === 16) {
    put_short(s, s.bi_buf);
    s.bi_buf = 0;
    s.bi_valid = 0;

  } else if (s.bi_valid >= 8) {
    s.pending_buf[s.pending++] = s.bi_buf & 0xff;
    s.bi_buf >>= 8;
    s.bi_valid -= 8;
  }
}


/* ===========================================================================
 * Compute the optimal bit lengths for a tree and update the total bit length
 * for the current block.
 * IN assertion: the fields freq and dad are set, heap[heap_max] and
 *    above are the tree nodes sorted by increasing frequency.
 * OUT assertions: the field len is set to the optimal bit length, the
 *     array bl_count contains the frequencies for each bit length.
 *     The length opt_len is updated; static_len is also updated if stree is
 *     not null.
 */
function gen_bitlen(s, desc)
//    deflate_state *s;
//    tree_desc *desc;    /* the tree descriptor */
{
  var tree            = desc.dyn_tree;
  var max_code        = desc.max_code;
  var stree           = desc.stat_desc.static_tree;
  var has_stree       = desc.stat_desc.has_stree;
  var extra           = desc.stat_desc.extra_bits;
  var base            = desc.stat_desc.extra_base;
  var max_length      = desc.stat_desc.max_length;
  var h;              /* heap index */
  var n, m;           /* iterate over the tree elements */
  var bits;           /* bit length */
  var xbits;          /* extra bits */
  var f;              /* frequency */
  var overflow = 0;   /* number of elements with bit length too large */

  for (bits = 0; bits <= MAX_BITS; bits++) {
    s.bl_count[bits] = 0;
  }

  /* In a first pass, compute the optimal bit lengths (which may
   * overflow in the case of the bit length tree).
   */
  tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */

  for (h = s.heap_max + 1; h < HEAP_SIZE; h++) {
    n = s.heap[h];
    bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;
    if (bits > max_length) {
      bits = max_length;
      overflow++;
    }
    tree[n * 2 + 1]/*.Len*/ = bits;
    /* We overwrite tree[n].Dad which is no longer needed */

    if (n > max_code) { continue; } /* not a leaf node */

    s.bl_count[bits]++;
    xbits = 0;
    if (n >= base) {
      xbits = extra[n - base];
    }
    f = tree[n * 2]/*.Freq*/;
    s.opt_len += f * (bits + xbits);
    if (has_stree) {
      s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);
    }
  }
  if (overflow === 0) { return; }

  // Trace((stderr,"\\nbit length overflow\\n"));
  /* This happens for example on obj2 and pic of the Calgary corpus */

  /* Find the first bit length which could increase: */
  do {
    bits = max_length - 1;
    while (s.bl_count[bits] === 0) { bits--; }
    s.bl_count[bits]--;      /* move one leaf down the tree */
    s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */
    s.bl_count[max_length]--;
    /* The brother of the overflow item also moves one step up,
     * but this does not affect bl_count[max_length]
     */
    overflow -= 2;
  } while (overflow > 0);

  /* Now recompute all bit lengths, scanning in increasing frequency.
   * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all
   * lengths instead of fixing only the wrong ones. This idea is taken
   * from 'ar' written by Haruhiko Okumura.)
   */
  for (bits = max_length; bits !== 0; bits--) {
    n = s.bl_count[bits];
    while (n !== 0) {
      m = s.heap[--h];
      if (m > max_code) { continue; }
      if (tree[m * 2 + 1]/*.Len*/ !== bits) {
        // Trace((stderr,"code %d bits %d->%d\\n", m, tree[m].Len, bits));
        s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;
        tree[m * 2 + 1]/*.Len*/ = bits;
      }
      n--;
    }
  }
}


/* ===========================================================================
 * Generate the codes for a given tree and bit counts (which need not be
 * optimal).
 * IN assertion: the array bl_count contains the bit length statistics for
 * the given tree and the field len is set for all tree elements.
 * OUT assertion: the field code is set for all tree elements of non
 *     zero code length.
 */
function gen_codes(tree, max_code, bl_count)
//    ct_data *tree;             /* the tree to decorate */
//    int max_code;              /* largest code with non zero frequency */
//    ushf *bl_count;            /* number of codes at each bit length */
{
  var next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */
  var code = 0;              /* running code value */
  var bits;                  /* bit index */
  var n;                     /* code index */

  /* The distribution counts are first used to generate the code values
   * without bit reversal.
   */
  for (bits = 1; bits <= MAX_BITS; bits++) {
    next_code[bits] = code = (code + bl_count[bits - 1]) << 1;
  }
  /* Check that the bit counts in bl_count are consistent. The last code
   * must be all ones.
   */
  //Assert (code + bl_count[MAX_BITS]-1 == (1<<MAX_BITS)-1,
  //        "inconsistent bit counts");
  //Tracev((stderr,"\\ngen_codes: max_code %d ", max_code));

  for (n = 0;  n <= max_code; n++) {
    var len = tree[n * 2 + 1]/*.Len*/;
    if (len === 0) { continue; }
    /* Now reverse the bits */
    tree[n * 2]/*.Code*/ = bi_reverse(next_code[len]++, len);

    //Tracecv(tree != static_ltree, (stderr,"\\nn %3d %c l %2d c %4x (%x) ",
    //     n, (isgraph(n) ? n : ' '), len, tree[n].Code, next_code[len]-1));
  }
}


/* ===========================================================================
 * Initialize the various 'constant' tables.
 */
function tr_static_init() {
  var n;        /* iterates over tree elements */
  var bits;     /* bit counter */
  var length;   /* length value */
  var code;     /* code value */
  var dist;     /* distance index */
  var bl_count = new Array(MAX_BITS + 1);
  /* number of codes at each bit length for an optimal tree */

  // do check in _tr_init()
  //if (static_init_done) return;

  /* For some embedded targets, global variables are not initialized: */
/*#ifdef NO_INIT_GLOBAL_POINTERS
  static_l_desc.static_tree = static_ltree;
  static_l_desc.extra_bits = extra_lbits;
  static_d_desc.static_tree = static_dtree;
  static_d_desc.extra_bits = extra_dbits;
  static_bl_desc.extra_bits = extra_blbits;
#endif*/

  /* Initialize the mapping length (0..255) -> length code (0..28) */
  length = 0;
  for (code = 0; code < LENGTH_CODES - 1; code++) {
    base_length[code] = length;
    for (n = 0; n < (1 << extra_lbits[code]); n++) {
      _length_code[length++] = code;
    }
  }
  //Assert (length == 256, "tr_static_init: length != 256");
  /* Note that the length 255 (match length 258) can be represented
   * in two different ways: code 284 + 5 bits or code 285, so we
   * overwrite length_code[255] to use the best encoding:
   */
  _length_code[length - 1] = code;

  /* Initialize the mapping dist (0..32K) -> dist code (0..29) */
  dist = 0;
  for (code = 0; code < 16; code++) {
    base_dist[code] = dist;
    for (n = 0; n < (1 << extra_dbits[code]); n++) {
      _dist_code[dist++] = code;
    }
  }
  //Assert (dist == 256, "tr_static_init: dist != 256");
  dist >>= 7; /* from now on, all distances are divided by 128 */
  for (; code < D_CODES; code++) {
    base_dist[code] = dist << 7;
    for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {
      _dist_code[256 + dist++] = code;
    }
  }
  //Assert (dist == 256, "tr_static_init: 256+dist != 512");

  /* Construct the codes of the static literal tree */
  for (bits = 0; bits <= MAX_BITS; bits++) {
    bl_count[bits] = 0;
  }

  n = 0;
  while (n <= 143) {
    static_ltree[n * 2 + 1]/*.Len*/ = 8;
    n++;
    bl_count[8]++;
  }
  while (n <= 255) {
    static_ltree[n * 2 + 1]/*.Len*/ = 9;
    n++;
    bl_count[9]++;
  }
  while (n <= 279) {
    static_ltree[n * 2 + 1]/*.Len*/ = 7;
    n++;
    bl_count[7]++;
  }
  while (n <= 287) {
    static_ltree[n * 2 + 1]/*.Len*/ = 8;
    n++;
    bl_count[8]++;
  }
  /* Codes 286 and 287 do not exist, but we must include them in the
   * tree construction to get a canonical Huffman tree (longest code
   * all ones)
   */
  gen_codes(static_ltree, L_CODES + 1, bl_count);

  /* The static distance tree is trivial: */
  for (n = 0; n < D_CODES; n++) {
    static_dtree[n * 2 + 1]/*.Len*/ = 5;
    static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);
  }

  // Now data ready and we can init static trees
  static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);
  static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0,          D_CODES, MAX_BITS);
  static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0,         BL_CODES, MAX_BL_BITS);

  //static_init_done = true;
}


/* ===========================================================================
 * Initialize a new block.
 */
function init_block(s) {
  var n; /* iterates over tree elements */

  /* Initialize the trees. */
  for (n = 0; n < L_CODES;  n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }
  for (n = 0; n < D_CODES;  n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }
  for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }

  s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;
  s.opt_len = s.static_len = 0;
  s.last_lit = s.matches = 0;
}


/* ===========================================================================
 * Flush the bit buffer and align the output on a byte boundary
 */
function bi_windup(s)
{
  if (s.bi_valid > 8) {
    put_short(s, s.bi_buf);
  } else if (s.bi_valid > 0) {
    //put_byte(s, (Byte)s->bi_buf);
    s.pending_buf[s.pending++] = s.bi_buf;
  }
  s.bi_buf = 0;
  s.bi_valid = 0;
}

/* ===========================================================================
 * Copy a stored block, storing first the length and its
 * one's complement if requested.
 */
function copy_block(s, buf, len, header)
//DeflateState *s;
//charf    *buf;    /* the input data */
//unsigned len;     /* its length */
//int      header;  /* true if block header must be written */
{
  bi_windup(s);        /* align on byte boundary */

  if (header) {
    put_short(s, len);
    put_short(s, ~len);
  }
//  while (len--) {
//    put_byte(s, *buf++);
//  }
  utils.arraySet(s.pending_buf, s.window, buf, len, s.pending);
  s.pending += len;
}

/* ===========================================================================
 * Compares to subtrees, using the tree depth as tie breaker when
 * the subtrees have equal frequency. This minimizes the worst case length.
 */
function smaller(tree, n, m, depth) {
  var _n2 = n * 2;
  var _m2 = m * 2;
  return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||
         (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));
}

/* ===========================================================================
 * Restore the heap property by moving down the tree starting at node k,
 * exchanging a node with the smallest of its two sons if necessary, stopping
 * when the heap property is re-established (each father smaller than its
 * two sons).
 */
function pqdownheap(s, tree, k)
//    deflate_state *s;
//    ct_data *tree;  /* the tree to restore */
//    int k;               /* node to move down */
{
  var v = s.heap[k];
  var j = k << 1;  /* left son of k */
  while (j <= s.heap_len) {
    /* Set j to the smallest of the two sons: */
    if (j < s.heap_len &&
      smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {
      j++;
    }
    /* Exit if v is smaller than both sons */
    if (smaller(tree, v, s.heap[j], s.depth)) { break; }

    /* Exchange v with the smallest son */
    s.heap[k] = s.heap[j];
    k = j;

    /* And continue down the tree, setting j to the left son of k */
    j <<= 1;
  }
  s.heap[k] = v;
}


// inlined manually
// var SMALLEST = 1;

/* ===========================================================================
 * Send the block data compressed using the given Huffman trees
 */
function compress_block(s, ltree, dtree)
//    deflate_state *s;
//    const ct_data *ltree; /* literal tree */
//    const ct_data *dtree; /* distance tree */
{
  var dist;           /* distance of matched string */
  var lc;             /* match length or unmatched char (if dist == 0) */
  var lx = 0;         /* running index in l_buf */
  var code;           /* the code to send */
  var extra;          /* number of extra bits to send */

  if (s.last_lit !== 0) {
    do {
      dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]);
      lc = s.pending_buf[s.l_buf + lx];
      lx++;

      if (dist === 0) {
        send_code(s, lc, ltree); /* send a literal byte */
        //Tracecv(isgraph(lc), (stderr," '%c' ", lc));
      } else {
        /* Here, lc is the match length - MIN_MATCH */
        code = _length_code[lc];
        send_code(s, code + LITERALS + 1, ltree); /* send the length code */
        extra = extra_lbits[code];
        if (extra !== 0) {
          lc -= base_length[code];
          send_bits(s, lc, extra);       /* send the extra length bits */
        }
        dist--; /* dist is now the match distance - 1 */
        code = d_code(dist);
        //Assert (code < D_CODES, "bad d_code");

        send_code(s, code, dtree);       /* send the distance code */
        extra = extra_dbits[code];
        if (extra !== 0) {
          dist -= base_dist[code];
          send_bits(s, dist, extra);   /* send the extra distance bits */
        }
      } /* literal or match pair ? */

      /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */
      //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,
      //       "pendingBuf overflow");

    } while (lx < s.last_lit);
  }

  send_code(s, END_BLOCK, ltree);
}


/* ===========================================================================
 * Construct one Huffman tree and assigns the code bit strings and lengths.
 * Update the total bit length for the current block.
 * IN assertion: the field freq is set for all tree elements.
 * OUT assertions: the fields len and code are set to the optimal bit length
 *     and corresponding code. The length opt_len is updated; static_len is
 *     also updated if stree is not null. The field max_code is set.
 */
function build_tree(s, desc)
//    deflate_state *s;
//    tree_desc *desc; /* the tree descriptor */
{
  var tree     = desc.dyn_tree;
  var stree    = desc.stat_desc.static_tree;
  var has_stree = desc.stat_desc.has_stree;
  var elems    = desc.stat_desc.elems;
  var n, m;          /* iterate over heap elements */
  var max_code = -1; /* largest code with non zero frequency */
  var node;          /* new node being created */

  /* Construct the initial heap, with least frequent element in
   * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].
   * heap[0] is not used.
   */
  s.heap_len = 0;
  s.heap_max = HEAP_SIZE;

  for (n = 0; n < elems; n++) {
    if (tree[n * 2]/*.Freq*/ !== 0) {
      s.heap[++s.heap_len] = max_code = n;
      s.depth[n] = 0;

    } else {
      tree[n * 2 + 1]/*.Len*/ = 0;
    }
  }

  /* The pkzip format requires that at least one distance code exists,
   * and that at least one bit should be sent even if there is only one
   * possible code. So to avoid special checks later on we force at least
   * two codes of non zero frequency.
   */
  while (s.heap_len < 2) {
    node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);
    tree[node * 2]/*.Freq*/ = 1;
    s.depth[node] = 0;
    s.opt_len--;

    if (has_stree) {
      s.static_len -= stree[node * 2 + 1]/*.Len*/;
    }
    /* node is 0 or 1 so it does not have extra bits */
  }
  desc.max_code = max_code;

  /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,
   * establish sub-heaps of increasing lengths:
   */
  for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }

  /* Construct the Huffman tree by repeatedly combining the least two
   * frequent nodes.
   */
  node = elems;              /* next internal node of the tree */
  do {
    //pqremove(s, tree, n);  /* n = node of least frequency */
    /*** pqremove ***/
    n = s.heap[1/*SMALLEST*/];
    s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];
    pqdownheap(s, tree, 1/*SMALLEST*/);
    /***/

    m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */

    s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */
    s.heap[--s.heap_max] = m;

    /* Create a new node father of n and m */
    tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;
    s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;
    tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;

    /* and insert the new node in the heap */
    s.heap[1/*SMALLEST*/] = node++;
    pqdownheap(s, tree, 1/*SMALLEST*/);

  } while (s.heap_len >= 2);

  s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];

  /* At this point, the fields freq and dad are set. We can now
   * generate the bit lengths.
   */
  gen_bitlen(s, desc);

  /* The field len is now set, we can generate the bit codes */
  gen_codes(tree, max_code, s.bl_count);
}


/* ===========================================================================
 * Scan a literal or distance tree to determine the frequencies of the codes
 * in the bit length tree.
 */
function scan_tree(s, tree, max_code)
//    deflate_state *s;
//    ct_data *tree;   /* the tree to be scanned */
//    int max_code;    /* and its largest code of non zero frequency */
{
  var n;                     /* iterates over all tree elements */
  var prevlen = -1;          /* last emitted length */
  var curlen;                /* length of current code */

  var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */

  var count = 0;             /* repeat count of the current code */
  var max_count = 7;         /* max repeat count */
  var min_count = 4;         /* min repeat count */

  if (nextlen === 0) {
    max_count = 138;
    min_count = 3;
  }
  tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */

  for (n = 0; n <= max_code; n++) {
    curlen = nextlen;
    nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;

    if (++count < max_count && curlen === nextlen) {
      continue;

    } else if (count < min_count) {
      s.bl_tree[curlen * 2]/*.Freq*/ += count;

    } else if (curlen !== 0) {

      if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }
      s.bl_tree[REP_3_6 * 2]/*.Freq*/++;

    } else if (count <= 10) {
      s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;

    } else {
      s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;
    }

    count = 0;
    prevlen = curlen;

    if (nextlen === 0) {
      max_count = 138;
      min_count = 3;

    } else if (curlen === nextlen) {
      max_count = 6;
      min_count = 3;

    } else {
      max_count = 7;
      min_count = 4;
    }
  }
}


/* ===========================================================================
 * Send a literal or distance tree in compressed form, using the codes in
 * bl_tree.
 */
function send_tree(s, tree, max_code)
//    deflate_state *s;
//    ct_data *tree; /* the tree to be scanned */
//    int max_code;       /* and its largest code of non zero frequency */
{
  var n;                     /* iterates over all tree elements */
  var prevlen = -1;          /* last emitted length */
  var curlen;                /* length of current code */

  var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */

  var count = 0;             /* repeat count of the current code */
  var max_count = 7;         /* max repeat count */
  var min_count = 4;         /* min repeat count */

  /* tree[max_code+1].Len = -1; */  /* guard already set */
  if (nextlen === 0) {
    max_count = 138;
    min_count = 3;
  }

  for (n = 0; n <= max_code; n++) {
    curlen = nextlen;
    nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;

    if (++count < max_count && curlen === nextlen) {
      continue;

    } else if (count < min_count) {
      do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);

    } else if (curlen !== 0) {
      if (curlen !== prevlen) {
        send_code(s, curlen, s.bl_tree);
        count--;
      }
      //Assert(count >= 3 && count <= 6, " 3_6?");
      send_code(s, REP_3_6, s.bl_tree);
      send_bits(s, count - 3, 2);

    } else if (count <= 10) {
      send_code(s, REPZ_3_10, s.bl_tree);
      send_bits(s, count - 3, 3);

    } else {
      send_code(s, REPZ_11_138, s.bl_tree);
      send_bits(s, count - 11, 7);
    }

    count = 0;
    prevlen = curlen;
    if (nextlen === 0) {
      max_count = 138;
      min_count = 3;

    } else if (curlen === nextlen) {
      max_count = 6;
      min_count = 3;

    } else {
      max_count = 7;
      min_count = 4;
    }
  }
}


/* ===========================================================================
 * Construct the Huffman tree for the bit lengths and return the index in
 * bl_order of the last bit length code to send.
 */
function build_bl_tree(s) {
  var max_blindex;  /* index of last bit length code of non zero freq */

  /* Determine the bit length frequencies for literal and distance trees */
  scan_tree(s, s.dyn_ltree, s.l_desc.max_code);
  scan_tree(s, s.dyn_dtree, s.d_desc.max_code);

  /* Build the bit length tree: */
  build_tree(s, s.bl_desc);
  /* opt_len now includes the length of the tree representations, except
   * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.
   */

  /* Determine the number of bit length codes to send. The pkzip format
   * requires that at least 4 bit length codes be sent. (appnote.txt says
   * 3 but the actual value used is 4.)
   */
  for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) {
    if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {
      break;
    }
  }
  /* Update opt_len to include the bit length tree and counts */
  s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;
  //Tracev((stderr, "\\ndyn trees: dyn %ld, stat %ld",
  //        s->opt_len, s->static_len));

  return max_blindex;
}


/* ===========================================================================
 * Send the header for a block using dynamic Huffman trees: the counts, the
 * lengths of the bit length codes, the literal tree and the distance tree.
 * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.
 */
function send_all_trees(s, lcodes, dcodes, blcodes)
//    deflate_state *s;
//    int lcodes, dcodes, blcodes; /* number of codes for each tree */
{
  var rank;                    /* index in bl_order */

  //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, "not enough codes");
  //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,
  //        "too many codes");
  //Tracev((stderr, "\\nbl counts: "));
  send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */
  send_bits(s, dcodes - 1,   5);
  send_bits(s, blcodes - 4,  4); /* not -3 as stated in appnote.txt */
  for (rank = 0; rank < blcodes; rank++) {
    //Tracev((stderr, "\\nbl code %2d ", bl_order[rank]));
    send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);
  }
  //Tracev((stderr, "\\nbl tree: sent %ld", s->bits_sent));

  send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */
  //Tracev((stderr, "\\nlit tree: sent %ld", s->bits_sent));

  send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */
  //Tracev((stderr, "\\ndist tree: sent %ld", s->bits_sent));
}


/* ===========================================================================
 * Check if the data type is TEXT or BINARY, using the following algorithm:
 * - TEXT if the two conditions below are satisfied:
 *    a) There are no non-portable control characters belonging to the
 *       "black list" (0..6, 14..25, 28..31).
 *    b) There is at least one printable character belonging to the
 *       "white list" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).
 * - BINARY otherwise.
 * - The following partially-portable control characters form a
 *   "gray list" that is ignored in this detection algorithm:
 *   (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).
 * IN assertion: the fields Freq of dyn_ltree are set.
 */
function detect_data_type(s) {
  /* black_mask is the bit mask of black-listed bytes
   * set bits 0..6, 14..25, and 28..31
   * 0xf3ffc07f = binary 11110011111111111100000001111111
   */
  var black_mask = 0xf3ffc07f;
  var n;

  /* Check for non-textual ("black-listed") bytes. */
  for (n = 0; n <= 31; n++, black_mask >>>= 1) {
    if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {
      return Z_BINARY;
    }
  }

  /* Check for textual ("white-listed") bytes. */
  if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||
      s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {
    return Z_TEXT;
  }
  for (n = 32; n < LITERALS; n++) {
    if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {
      return Z_TEXT;
    }
  }

  /* There are no "black-listed" or "white-listed" bytes:
   * this stream either is empty or has tolerated ("gray-listed") bytes only.
   */
  return Z_BINARY;
}


var static_init_done = false;

/* ===========================================================================
 * Initialize the tree data structures for a new zlib stream.
 */
function _tr_init(s)
{

  if (!static_init_done) {
    tr_static_init();
    static_init_done = true;
  }

  s.l_desc  = new TreeDesc(s.dyn_ltree, static_l_desc);
  s.d_desc  = new TreeDesc(s.dyn_dtree, static_d_desc);
  s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);

  s.bi_buf = 0;
  s.bi_valid = 0;

  /* Initialize the first block of the first file: */
  init_block(s);
}


/* ===========================================================================
 * Send a stored block
 */
function _tr_stored_block(s, buf, stored_len, last)
//DeflateState *s;
//charf *buf;       /* input block */
//ulg stored_len;   /* length of input block */
//int last;         /* one if this is the last block for a file */
{
  send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3);    /* send block type */
  copy_block(s, buf, stored_len, true); /* with header */
}


/* ===========================================================================
 * Send one empty static block to give enough lookahead for inflate.
 * This takes 10 bits, of which 7 may remain in the bit buffer.
 */
function _tr_align(s) {
  send_bits(s, STATIC_TREES << 1, 3);
  send_code(s, END_BLOCK, static_ltree);
  bi_flush(s);
}


/* ===========================================================================
 * Determine the best encoding for the current block: dynamic trees, static
 * trees or store, and output the encoded block to the zip file.
 */
function _tr_flush_block(s, buf, stored_len, last)
//DeflateState *s;
//charf *buf;       /* input block, or NULL if too old */
//ulg stored_len;   /* length of input block */
//int last;         /* one if this is the last block for a file */
{
  var opt_lenb, static_lenb;  /* opt_len and static_len in bytes */
  var max_blindex = 0;        /* index of last bit length code of non zero freq */

  /* Build the Huffman trees unless a stored block is forced */
  if (s.level > 0) {

    /* Check if the file is binary or text */
    if (s.strm.data_type === Z_UNKNOWN) {
      s.strm.data_type = detect_data_type(s);
    }

    /* Construct the literal and distance trees */
    build_tree(s, s.l_desc);
    // Tracev((stderr, "\\nlit data: dyn %ld, stat %ld", s->opt_len,
    //        s->static_len));

    build_tree(s, s.d_desc);
    // Tracev((stderr, "\\ndist data: dyn %ld, stat %ld", s->opt_len,
    //        s->static_len));
    /* At this point, opt_len and static_len are the total bit lengths of
     * the compressed block data, excluding the tree representations.
     */

    /* Build the bit length tree for the above two trees, and get the index
     * in bl_order of the last bit length code to send.
     */
    max_blindex = build_bl_tree(s);

    /* Determine the best encoding. Compute the block lengths in bytes. */
    opt_lenb = (s.opt_len + 3 + 7) >>> 3;
    static_lenb = (s.static_len + 3 + 7) >>> 3;

    // Tracev((stderr, "\\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u ",
    //        opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,
    //        s->last_lit));

    if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }

  } else {
    // Assert(buf != (char*)0, "lost buf");
    opt_lenb = static_lenb = stored_len + 5; /* force a stored block */
  }

  if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {
    /* 4: two words for the lengths */

    /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.
     * Otherwise we can't have processed more than WSIZE input bytes since
     * the last block flush, because compression would have been
     * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to
     * transform a block into a stored block.
     */
    _tr_stored_block(s, buf, stored_len, last);

  } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {

    send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);
    compress_block(s, static_ltree, static_dtree);

  } else {
    send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);
    send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);
    compress_block(s, s.dyn_ltree, s.dyn_dtree);
  }
  // Assert (s->compressed_len == s->bits_sent, "bad compressed size");
  /* The above check is made mod 2^32, for files larger than 512 MB
   * and uLong implemented on 32 bits.
   */
  init_block(s);

  if (last) {
    bi_windup(s);
  }
  // Tracev((stderr,"\\ncomprlen %lu(%lu) ", s->compressed_len>>3,
  //       s->compressed_len-7*last));
}

/* ===========================================================================
 * Save the match info and tally the frequency counts. Return true if
 * the current block must be flushed.
 */
function _tr_tally(s, dist, lc)
//    deflate_state *s;
//    unsigned dist;  /* distance of matched string */
//    unsigned lc;    /* match length-MIN_MATCH or unmatched char (if dist==0) */
{
  //var out_length, in_length, dcode;

  s.pending_buf[s.d_buf + s.last_lit * 2]     = (dist >>> 8) & 0xff;
  s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;

  s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;
  s.last_lit++;

  if (dist === 0) {
    /* lc is the unmatched char */
    s.dyn_ltree[lc * 2]/*.Freq*/++;
  } else {
    s.matches++;
    /* Here, lc is the match length - MIN_MATCH */
    dist--;             /* dist = match distance - 1 */
    //Assert((ush)dist < (ush)MAX_DIST(s) &&
    //       (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&
    //       (ush)d_code(dist) < (ush)D_CODES,  "_tr_tally: bad match");

    s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++;
    s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;
  }

// (!) This block is disabled in zlib defaults,
// don't enable it for binary compatibility

//#ifdef TRUNCATE_BLOCK
//  /* Try to guess if it is profitable to stop the current block here */
//  if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {
//    /* Compute an upper bound for the compressed length */
//    out_length = s.last_lit*8;
//    in_length = s.strstart - s.block_start;
//
//    for (dcode = 0; dcode < D_CODES; dcode++) {
//      out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);
//    }
//    out_length >>>= 3;
//    //Tracev((stderr,"\\nlast_lit %u, in %ld, out ~%ld(%ld%%) ",
//    //       s->last_lit, in_length, out_length,
//    //       100L - out_length*100L/in_length));
//    if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {
//      return true;
//    }
//  }
//#endif

  return (s.last_lit === s.lit_bufsize - 1);
  /* We avoid equality with lit_bufsize because of wraparound at 64K
   * on 16 bit machines and because stored blocks are restricted to
   * 64K-1 bytes.
   */
}

exports._tr_init  = _tr_init;
exports._tr_stored_block = _tr_stored_block;
exports._tr_flush_block  = _tr_flush_block;
exports._tr_tally = _tr_tally;
exports._tr_align = _tr_align;
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 64316 characters]
//# sourceURL=webpack-internal:///../../../node_modules/pako/lib/zlib/trees.js
`);
              }
            ),
            /***/
            "../../../node_modules/pako/lib/zlib/zstream.js": (
              /*!******************************************************!*\
                !*** ../../../node_modules/pako/lib/zlib/zstream.js ***!
                \******************************************************/
              /***/
              (module) => {
                "use strict";
                eval("\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction ZStream() {\n  /* next input byte */\n  this.input = null; // JS specific, because we have no pointers\n  this.next_in = 0;\n  /* number of bytes available at input */\n  this.avail_in = 0;\n  /* total number of input bytes read so far */\n  this.total_in = 0;\n  /* next output byte should be put there */\n  this.output = null; // JS specific, because we have no pointers\n  this.next_out = 0;\n  /* remaining free space at output */\n  this.avail_out = 0;\n  /* total number of bytes output so far */\n  this.total_out = 0;\n  /* last error message, NULL if no error */\n  this.msg = ''/*Z_NULL*/;\n  /* not visible by applications */\n  this.state = null;\n  /* best guess about the data type: binary or text */\n  this.data_type = 2/*Z_UNKNOWN*/;\n  /* adler32 value of the uncompressed data */\n  this.adler = 0;\n}\n\nmodule.exports = ZStream;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Bha28vbGliL3psaWIvenN0cmVhbS5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOERBQThEO0FBQzlEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQjtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wYWtvL2xpYi96bGliL3pzdHJlYW0uanM/YzVlYiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbi8vIChDKSAxOTk1LTIwMTMgSmVhbi1sb3VwIEdhaWxseSBhbmQgTWFyayBBZGxlclxuLy8gKEMpIDIwMTQtMjAxNyBWaXRhbHkgUHV6cmluIGFuZCBBbmRyZXkgVHVwaXRzaW5cbi8vXG4vLyBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZFxuLy8gd2FycmFudHkuIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBkYW1hZ2VzXG4vLyBhcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLFxuLy8gaW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kIHJlZGlzdHJpYnV0ZSBpdFxuLy8gZnJlZWx5LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOlxuLy9cbi8vIDEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3Qgbm90XG4vLyAgIGNsYWltIHRoYXQgeW91IHdyb3RlIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4gSWYgeW91IHVzZSB0aGlzIHNvZnR3YXJlXG4vLyAgIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbiB3b3VsZCBiZVxuLy8gICBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLlxuLy8gMi4gQWx0ZXJlZCBzb3VyY2UgdmVyc2lvbnMgbXVzdCBiZSBwbGFpbmx5IG1hcmtlZCBhcyBzdWNoLCBhbmQgbXVzdCBub3QgYmVcbi8vICAgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLlxuLy8gMy4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlIGRpc3RyaWJ1dGlvbi5cblxuZnVuY3Rpb24gWlN0cmVhbSgpIHtcbiAgLyogbmV4dCBpbnB1dCBieXRlICovXG4gIHRoaXMuaW5wdXQgPSBudWxsOyAvLyBKUyBzcGVjaWZpYywgYmVjYXVzZSB3ZSBoYXZlIG5vIHBvaW50ZXJzXG4gIHRoaXMubmV4dF9pbiA9IDA7XG4gIC8qIG51bWJlciBvZiBieXRlcyBhdmFpbGFibGUgYXQgaW5wdXQgKi9cbiAgdGhpcy5hdmFpbF9pbiA9IDA7XG4gIC8qIHRvdGFsIG51bWJlciBvZiBpbnB1dCBieXRlcyByZWFkIHNvIGZhciAqL1xuICB0aGlzLnRvdGFsX2luID0gMDtcbiAgLyogbmV4dCBvdXRwdXQgYnl0ZSBzaG91bGQgYmUgcHV0IHRoZXJlICovXG4gIHRoaXMub3V0cHV0ID0gbnVsbDsgLy8gSlMgc3BlY2lmaWMsIGJlY2F1c2Ugd2UgaGF2ZSBubyBwb2ludGVyc1xuICB0aGlzLm5leHRfb3V0ID0gMDtcbiAgLyogcmVtYWluaW5nIGZyZWUgc3BhY2UgYXQgb3V0cHV0ICovXG4gIHRoaXMuYXZhaWxfb3V0ID0gMDtcbiAgLyogdG90YWwgbnVtYmVyIG9mIGJ5dGVzIG91dHB1dCBzbyBmYXIgKi9cbiAgdGhpcy50b3RhbF9vdXQgPSAwO1xuICAvKiBsYXN0IGVycm9yIG1lc3NhZ2UsIE5VTEwgaWYgbm8gZXJyb3IgKi9cbiAgdGhpcy5tc2cgPSAnJy8qWl9OVUxMKi87XG4gIC8qIG5vdCB2aXNpYmxlIGJ5IGFwcGxpY2F0aW9ucyAqL1xuICB0aGlzLnN0YXRlID0gbnVsbDtcbiAgLyogYmVzdCBndWVzcyBhYm91dCB0aGUgZGF0YSB0eXBlOiBiaW5hcnkgb3IgdGV4dCAqL1xuICB0aGlzLmRhdGFfdHlwZSA9IDIvKlpfVU5LTk9XTiovO1xuICAvKiBhZGxlcjMyIHZhbHVlIG9mIHRoZSB1bmNvbXByZXNzZWQgZGF0YSAqL1xuICB0aGlzLmFkbGVyID0gMDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBaU3RyZWFtO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/pako/lib/zlib/zstream.js\n");
              }
            ),
            /***/
            "../../../node_modules/path-data-parser/lib/absolutize.js": (
              /*!****************************************************************!*\
                !*** ../../../node_modules/path-data-parser/lib/absolutize.js ***!
                \****************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "absolutize": () => (/* binding */ absolutize)
/* harmony export */ });
// Translate relative commands to absolute commands
function absolutize(segments) {
    let cx = 0, cy = 0;
    let subx = 0, suby = 0;
    const out = [];
    for (const { key, data } of segments) {
        switch (key) {
            case 'M':
                out.push({ key: 'M', data: [...data] });
                [cx, cy] = data;
                [subx, suby] = data;
                break;
            case 'm':
                cx += data[0];
                cy += data[1];
                out.push({ key: 'M', data: [cx, cy] });
                subx = cx;
                suby = cy;
                break;
            case 'L':
                out.push({ key: 'L', data: [...data] });
                [cx, cy] = data;
                break;
            case 'l':
                cx += data[0];
                cy += data[1];
                out.push({ key: 'L', data: [cx, cy] });
                break;
            case 'C':
                out.push({ key: 'C', data: [...data] });
                cx = data[4];
                cy = data[5];
                break;
            case 'c': {
                const newdata = data.map((d, i) => (i % 2) ? (d + cy) : (d + cx));
                out.push({ key: 'C', data: newdata });
                cx = newdata[4];
                cy = newdata[5];
                break;
            }
            case 'Q':
                out.push({ key: 'Q', data: [...data] });
                cx = data[2];
                cy = data[3];
                break;
            case 'q': {
                const newdata = data.map((d, i) => (i % 2) ? (d + cy) : (d + cx));
                out.push({ key: 'Q', data: newdata });
                cx = newdata[2];
                cy = newdata[3];
                break;
            }
            case 'A':
                out.push({ key: 'A', data: [...data] });
                cx = data[5];
                cy = data[6];
                break;
            case 'a':
                cx += data[5];
                cy += data[6];
                out.push({ key: 'A', data: [data[0], data[1], data[2], data[3], data[4], cx, cy] });
                break;
            case 'H':
                out.push({ key: 'H', data: [...data] });
                cx = data[0];
                break;
            case 'h':
                cx += data[0];
                out.push({ key: 'H', data: [cx] });
                break;
            case 'V':
                out.push({ key: 'V', data: [...data] });
                cy = data[0];
                break;
            case 'v':
                cy += data[0];
                out.push({ key: 'V', data: [cy] });
                break;
            case 'S':
                out.push({ key: 'S', data: [...data] });
                cx = data[2];
                cy = data[3];
                break;
            case 's': {
                const newdata = data.map((d, i) => (i % 2) ? (d + cy) : (d + cx));
                out.push({ key: 'S', data: newdata });
                cx = newdata[2];
                cy = newdata[3];
                break;
            }
            case 'T':
                out.push({ key: 'T', data: [...data] });
                cx = data[0];
                cy = data[1];
                break;
            case 't':
                cx += data[0];
                cy += data[1];
                out.push({ key: 'T', data: [cx, cy] });
                break;
            case 'Z':
            case 'z':
                out.push({ key: 'Z', data: [] });
                cx = subx;
                cy = suby;
                break;
        }
    }
    return out;
}
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6416 characters]
//# sourceURL=webpack-internal:///../../../node_modules/path-data-parser/lib/absolutize.js
`);
              }
            ),
            /***/
            "../../../node_modules/path-data-parser/lib/index.js": (
              /*!***********************************************************!*\
                !*** ../../../node_modules/path-data-parser/lib/index.js ***!
                \***********************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "absolutize": () => (/* reexport safe */ _absolutize_js__WEBPACK_IMPORTED_MODULE_1__.absolutize),\n/* harmony export */   "normalize": () => (/* reexport safe */ _normalize_js__WEBPACK_IMPORTED_MODULE_2__.normalize),\n/* harmony export */   "parsePath": () => (/* reexport safe */ _parser_js__WEBPACK_IMPORTED_MODULE_0__.parsePath),\n/* harmony export */   "serialize": () => (/* reexport safe */ _parser_js__WEBPACK_IMPORTED_MODULE_0__.serialize)\n/* harmony export */ });\n/* harmony import */ var _parser_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./parser.js */ "../../../node_modules/path-data-parser/lib/parser.js");\n/* harmony import */ var _absolutize_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./absolutize.js */ "../../../node_modules/path-data-parser/lib/absolutize.js");\n/* harmony import */ var _normalize_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./normalize.js */ "../../../node_modules/path-data-parser/lib/normalize.js");\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3BhdGgtZGF0YS1wYXJzZXIvbGliL2luZGV4LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBbUQ7QUFDTjtBQUNGIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wYXRoLWRhdGEtcGFyc2VyL2xpYi9pbmRleC5qcz8wOGM0Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IHBhcnNlUGF0aCwgc2VyaWFsaXplIH0gZnJvbSAnLi9wYXJzZXIuanMnO1xuZXhwb3J0IHsgYWJzb2x1dGl6ZSB9IGZyb20gJy4vYWJzb2x1dGl6ZS5qcyc7XG5leHBvcnQgeyBub3JtYWxpemUgfSBmcm9tICcuL25vcm1hbGl6ZS5qcyc7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/path-data-parser/lib/index.js\n');
              }
            ),
            /***/
            "../../../node_modules/path-data-parser/lib/normalize.js": (
              /*!***************************************************************!*\
                !*** ../../../node_modules/path-data-parser/lib/normalize.js ***!
                \***************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "normalize": () => (/* binding */ normalize)
/* harmony export */ });
// Normalize path to include only M, L, C, and Z commands
function normalize(segments) {
    const out = [];
    let lastType = '';
    let cx = 0, cy = 0;
    let subx = 0, suby = 0;
    let lcx = 0, lcy = 0;
    for (const { key, data } of segments) {
        switch (key) {
            case 'M':
                out.push({ key: 'M', data: [...data] });
                [cx, cy] = data;
                [subx, suby] = data;
                break;
            case 'C':
                out.push({ key: 'C', data: [...data] });
                cx = data[4];
                cy = data[5];
                lcx = data[2];
                lcy = data[3];
                break;
            case 'L':
                out.push({ key: 'L', data: [...data] });
                [cx, cy] = data;
                break;
            case 'H':
                cx = data[0];
                out.push({ key: 'L', data: [cx, cy] });
                break;
            case 'V':
                cy = data[0];
                out.push({ key: 'L', data: [cx, cy] });
                break;
            case 'S': {
                let cx1 = 0, cy1 = 0;
                if (lastType === 'C' || lastType === 'S') {
                    cx1 = cx + (cx - lcx);
                    cy1 = cy + (cy - lcy);
                }
                else {
                    cx1 = cx;
                    cy1 = cy;
                }
                out.push({ key: 'C', data: [cx1, cy1, ...data] });
                lcx = data[0];
                lcy = data[1];
                cx = data[2];
                cy = data[3];
                break;
            }
            case 'T': {
                const [x, y] = data;
                let x1 = 0, y1 = 0;
                if (lastType === 'Q' || lastType === 'T') {
                    x1 = cx + (cx - lcx);
                    y1 = cy + (cy - lcy);
                }
                else {
                    x1 = cx;
                    y1 = cy;
                }
                const cx1 = cx + 2 * (x1 - cx) / 3;
                const cy1 = cy + 2 * (y1 - cy) / 3;
                const cx2 = x + 2 * (x1 - x) / 3;
                const cy2 = y + 2 * (y1 - y) / 3;
                out.push({ key: 'C', data: [cx1, cy1, cx2, cy2, x, y] });
                lcx = x1;
                lcy = y1;
                cx = x;
                cy = y;
                break;
            }
            case 'Q': {
                const [x1, y1, x, y] = data;
                const cx1 = cx + 2 * (x1 - cx) / 3;
                const cy1 = cy + 2 * (y1 - cy) / 3;
                const cx2 = x + 2 * (x1 - x) / 3;
                const cy2 = y + 2 * (y1 - y) / 3;
                out.push({ key: 'C', data: [cx1, cy1, cx2, cy2, x, y] });
                lcx = x1;
                lcy = y1;
                cx = x;
                cy = y;
                break;
            }
            case 'A': {
                const r1 = Math.abs(data[0]);
                const r2 = Math.abs(data[1]);
                const angle = data[2];
                const largeArcFlag = data[3];
                const sweepFlag = data[4];
                const x = data[5];
                const y = data[6];
                if (r1 === 0 || r2 === 0) {
                    out.push({ key: 'C', data: [cx, cy, x, y, x, y] });
                    cx = x;
                    cy = y;
                }
                else {
                    if (cx !== x || cy !== y) {
                        const curves = arcToCubicCurves(cx, cy, x, y, r1, r2, angle, largeArcFlag, sweepFlag);
                        curves.forEach(function (curve) {
                            out.push({ key: 'C', data: curve });
                        });
                        cx = x;
                        cy = y;
                    }
                }
                break;
            }
            case 'Z':
                out.push({ key: 'Z', data: [] });
                cx = subx;
                cy = suby;
                break;
        }
        lastType = key;
    }
    return out;
}
function degToRad(degrees) {
    return (Math.PI * degrees) / 180;
}
function rotate(x, y, angleRad) {
    const X = x * Math.cos(angleRad) - y * Math.sin(angleRad);
    const Y = x * Math.sin(angleRad) + y * Math.cos(angleRad);
    return [X, Y];
}
function arcToCubicCurves(x1, y1, x2, y2, r1, r2, angle, largeArcFlag, sweepFlag, recursive) {
    const angleRad = degToRad(angle);
    let params = [];
    let f1 = 0, f2 = 0, cx = 0, cy = 0;
    if (recursive) {
        [f1, f2, cx, cy] = recursive;
    }
    else {
        [x1, y1] = rotate(x1, y1, -angleRad);
        [x2, y2] = rotate(x2, y2, -angleRad);
        const x = (x1 - x2) / 2;
        const y = (y1 - y2) / 2;
        let h = (x * x) / (r1 * r1) + (y * y) / (r2 * r2);
        if (h > 1) {
            h = Math.sqrt(h);
            r1 = h * r1;
            r2 = h * r2;
        }
        const sign = (largeArcFlag === sweepFlag) ? -1 : 1;
        const r1Pow = r1 * r1;
        const r2Pow = r2 * r2;
        const left = r1Pow * r2Pow - r1Pow * y * y - r2Pow * x * x;
        const right = r1Pow * y * y + r2Pow * x * x;
        const k = sign * Math.sqrt(Math.abs(left / right));
        cx = k * r1 * y / r2 + (x1 + x2) / 2;
        cy = k * -r2 * x / r1 + (y1 + y2) / 2;
        f1 = Math.asin(parseFloat(((y1 - cy) / r2).toFixed(9)));
        f2 = Math.asin(parseFloat(((y2 - cy) / r2).toFixed(9)));
        if (x1 < cx) {
            f1 = Math.PI - f1;
        }
        if (x2 < cx) {
            f2 = Math.PI - f2;
        }
        if (f1 < 0) {
            f1 = Math.PI * 2 + f1;
        }
        if (f2 < 0) {
            f2 = Math.PI * 2 + f2;
        }
        if (sweepFlag && f1 > f2) {
            f1 = f1 - Math.PI * 2;
        }
        if (!sweepFlag && f2 > f1) {
            f2 = f2 - Math.PI * 2;
        }
    }
    let df = f2 - f1;
    if (Math.abs(df) > (Math.PI * 120 / 180)) {
        const f2old = f2;
        const x2old = x2;
        const y2old = y2;
        if (sweepFlag && f2 > f1) {
            f2 = f1 + (Math.PI * 120 / 180) * (1);
        }
        else {
            f2 = f1 + (Math.PI * 120 / 180) * (-1);
        }
        x2 = cx + r1 * Math.cos(f2);
        y2 = cy + r2 * Math.sin(f2);
        params = arcToCubicCurves(x2, y2, x2old, y2old, r1, r2, angle, 0, sweepFlag, [f2, f2old, cx, cy]);
    }
    df = f2 - f1;
    const c1 = Math.cos(f1);
    const s1 = Math.sin(f1);
    const c2 = Math.cos(f2);
    const s2 = Math.sin(f2);
    const t = Math.tan(df / 4);
    const hx = 4 / 3 * r1 * t;
    const hy = 4 / 3 * r2 * t;
    const m1 = [x1, y1];
    const m2 = [x1 + hx * s1, y1 - hy * c1];
    const m3 = [x2 + hx * s2, y2 - hy * c2];
    const m4 = [x2, y2];
    m2[0] = 2 * m1[0] - m2[0];
    m2[1] = 2 * m1[1] - m2[1];
    if (recursive) {
        return [m2, m3, m4].concat(params);
    }
    else {
        params = [m2, m3, m4].concat(params);
        const curves = [];
        for (let i = 0; i < params.length; i += 3) {
            const r1 = rotate(params[i][0], params[i][1], angleRad);
            const r2 = rotate(params[i + 1][0], params[i + 1][1], angleRad);
            const r3 = rotate(params[i + 2][0], params[i + 2][1], angleRad);
            curves.push([r1[0], r1[1], r2[0], r2[1], r3[0], r3[1]]);
        }
        return curves;
    }
}
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 12140 characters]
//# sourceURL=webpack-internal:///../../../node_modules/path-data-parser/lib/normalize.js
`);
              }
            ),
            /***/
            "../../../node_modules/path-data-parser/lib/parser.js": (
              /*!************************************************************!*\
                !*** ../../../node_modules/path-data-parser/lib/parser.js ***!
                \************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"parsePath\": () => (/* binding */ parsePath),\n/* harmony export */   \"serialize\": () => (/* binding */ serialize)\n/* harmony export */ });\nconst COMMAND = 0;\nconst NUMBER = 1;\nconst EOD = 2;\nconst PARAMS = { A: 7, a: 7, C: 6, c: 6, H: 1, h: 1, L: 2, l: 2, M: 2, m: 2, Q: 4, q: 4, S: 4, s: 4, T: 2, t: 2, V: 1, v: 1, Z: 0, z: 0 };\nfunction tokenize(d) {\n    const tokens = new Array();\n    while (d !== '') {\n        if (d.match(/^([ \\t\\r\\n,]+)/)) {\n            d = d.substr(RegExp.$1.length);\n        }\n        else if (d.match(/^([aAcChHlLmMqQsStTvVzZ])/)) {\n            tokens[tokens.length] = { type: COMMAND, text: RegExp.$1 };\n            d = d.substr(RegExp.$1.length);\n        }\n        else if (d.match(/^(([-+]?[0-9]+(\\.[0-9]*)?|[-+]?\\.[0-9]+)([eE][-+]?[0-9]+)?)/)) {\n            tokens[tokens.length] = { type: NUMBER, text: `${parseFloat(RegExp.$1)}` };\n            d = d.substr(RegExp.$1.length);\n        }\n        else {\n            return [];\n        }\n    }\n    tokens[tokens.length] = { type: EOD, text: '' };\n    return tokens;\n}\nfunction isType(token, type) {\n    return token.type === type;\n}\nfunction parsePath(d) {\n    const segments = [];\n    const tokens = tokenize(d);\n    let mode = 'BOD';\n    let index = 0;\n    let token = tokens[index];\n    while (!isType(token, EOD)) {\n        let paramsCount = 0;\n        const params = [];\n        if (mode === 'BOD') {\n            if (token.text === 'M' || token.text === 'm') {\n                index++;\n                paramsCount = PARAMS[token.text];\n                mode = token.text;\n            }\n            else {\n                return parsePath('M0,0' + d);\n            }\n        }\n        else if (isType(token, NUMBER)) {\n            paramsCount = PARAMS[mode];\n        }\n        else {\n            index++;\n            paramsCount = PARAMS[token.text];\n            mode = token.text;\n        }\n        if ((index + paramsCount) < tokens.length) {\n            for (let i = index; i < index + paramsCount; i++) {\n                const numbeToken = tokens[i];\n                if (isType(numbeToken, NUMBER)) {\n                    params[params.length] = +numbeToken.text;\n                }\n                else {\n                    throw new Error('Param not a number: ' + mode + ',' + numbeToken.text);\n                }\n            }\n            if (typeof PARAMS[mode] === 'number') {\n                const segment = { key: mode, data: params };\n                segments.push(segment);\n                index += paramsCount;\n                token = tokens[index];\n                if (mode === 'M')\n                    mode = 'L';\n                if (mode === 'm')\n                    mode = 'l';\n            }\n            else {\n                throw new Error('Bad segment: ' + mode);\n            }\n        }\n        else {\n            throw new Error('Path data ended short');\n        }\n    }\n    return segments;\n}\nfunction serialize(segments) {\n    const tokens = [];\n    for (const { key, data } of segments) {\n        tokens.push(key);\n        switch (key) {\n            case 'C':\n            case 'c':\n                tokens.push(data[0], `${data[1]},`, data[2], `${data[3]},`, data[4], data[5]);\n                break;\n            case 'S':\n            case 's':\n            case 'Q':\n            case 'q':\n                tokens.push(data[0], `${data[1]},`, data[2], data[3]);\n                break;\n            default:\n                tokens.push(...data);\n                break;\n        }\n    }\n    return tokens.join(' ');\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5852 characters]\n//# sourceURL=webpack-internal:///../../../node_modules/path-data-parser/lib/parser.js\n");
              }
            ),
            /***/
            "../../../node_modules/perfect-freehand/dist/esm/index.js": (
              /*!****************************************************************!*\
                !*** ../../../node_modules/perfect-freehand/dist/esm/index.js ***!
                \****************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (/* binding */ _e),\n/* harmony export */   "getStroke": () => (/* binding */ ae),\n/* harmony export */   "getStrokeOutlinePoints": () => (/* binding */ ce),\n/* harmony export */   "getStrokePoints": () => (/* binding */ me)\n/* harmony export */ });\nfunction $(e,t,u,x=h=>h){return e*x(.5-t*(.5-u))}function se(e){return[-e[0],-e[1]]}function l(e,t){return[e[0]+t[0],e[1]+t[1]]}function a(e,t){return[e[0]-t[0],e[1]-t[1]]}function b(e,t){return[e[0]*t,e[1]*t]}function he(e,t){return[e[0]/t,e[1]/t]}function R(e){return[e[1],-e[0]]}function B(e,t){return e[0]*t[0]+e[1]*t[1]}function ue(e,t){return e[0]===t[0]&&e[1]===t[1]}function ge(e){return Math.hypot(e[0],e[1])}function de(e){return e[0]*e[0]+e[1]*e[1]}function A(e,t){return de(a(e,t))}function G(e){return he(e,ge(e))}function ie(e,t){return Math.hypot(e[1]-t[1],e[0]-t[0])}function L(e,t,u){let x=Math.sin(u),h=Math.cos(u),y=e[0]-t[0],n=e[1]-t[1],f=y*h-n*x,d=y*x+n*h;return[f+t[0],d+t[1]]}function K(e,t,u){return l(e,b(a(t,e),u))}function ee(e,t,u){return l(e,b(t,u))}var{min:C,PI:xe}=Math,pe=.275,V=xe+1e-4;function ce(e,t={}){let{size:u=16,smoothing:x=.5,thinning:h=.5,simulatePressure:y=!0,easing:n=r=>r,start:f={},end:d={},last:D=!1}=t,{cap:S=!0,easing:j=r=>r*(2-r)}=f,{cap:q=!0,easing:c=r=>--r*r*r+1}=d;if(e.length===0||u<=0)return[];let p=e[e.length-1].runningLength,g=f.taper===!1?0:f.taper===!0?Math.max(u,p):f.taper,T=d.taper===!1?0:d.taper===!0?Math.max(u,p):d.taper,te=Math.pow(u*x,2),_=[],M=[],H=e.slice(0,10).reduce((r,i)=>{let o=i.pressure;if(y){let s=C(1,i.distance/u),W=C(1,1-s);o=C(1,r+(W-r)*(s*pe))}return(r+o)/2},e[0].pressure),m=$(u,h,e[e.length-1].pressure,n),U,X=e[0].vector,z=e[0].point,F=z,O=z,E=F,J=!1;for(let r=0;r<e.length;r++){let{pressure:i}=e[r],{point:o,vector:s,distance:W,runningLength:I}=e[r];if(r<e.length-1&&p-I<3)continue;if(h){if(y){let v=C(1,W/u),Z=C(1,1-v);i=C(1,H+(Z-H)*(v*pe))}m=$(u,h,i,n)}else m=u/2;U===void 0&&(U=m);let le=I<g?j(I/g):1,fe=p-I<T?c((p-I)/T):1;m=Math.max(.01,m*Math.min(le,fe));let re=(r<e.length-1?e[r+1]:e[r]).vector,Y=r<e.length-1?B(s,re):1,be=B(s,X)<0&&!J,ne=Y!==null&&Y<0;if(be||ne){let v=b(R(X),m);for(let Z=1/13,w=0;w<=1;w+=Z)O=L(a(o,v),o,V*w),_.push(O),E=L(l(o,v),o,V*-w),M.push(E);z=O,F=E,ne&&(J=!0);continue}if(J=!1,r===e.length-1){let v=b(R(s),m);_.push(a(o,v)),M.push(l(o,v));continue}let oe=b(R(K(re,s,Y)),m);O=a(o,oe),(r<=1||A(z,O)>te)&&(_.push(O),z=O),E=l(o,oe),(r<=1||A(F,E)>te)&&(M.push(E),F=E),H=i,X=s}let P=e[0].point.slice(0,2),k=e.length>1?e[e.length-1].point.slice(0,2):l(e[0].point,[1,1]),Q=[],N=[];if(e.length===1){if(!(g||T)||D){let r=ee(P,G(R(a(P,k))),-(U||m)),i=[];for(let o=1/13,s=o;s<=1;s+=o)i.push(L(r,P,V*2*s));return i}}else{if(!(g||T&&e.length===1))if(S)for(let i=1/13,o=i;o<=1;o+=i){let s=L(M[0],P,V*o);Q.push(s)}else{let i=a(_[0],M[0]),o=b(i,.5),s=b(i,.51);Q.push(a(P,o),a(P,s),l(P,s),l(P,o))}let r=R(se(e[e.length-1].vector));if(T||g&&e.length===1)N.push(k);else if(q){let i=ee(k,r,m);for(let o=1/29,s=o;s<1;s+=o)N.push(L(i,k,V*3*s))}else N.push(l(k,b(r,m)),l(k,b(r,m*.99)),a(k,b(r,m*.99)),a(k,b(r,m)))}return _.concat(N,M.reverse(),Q)}function me(e,t={}){var q;let{streamline:u=.5,size:x=16,last:h=!1}=t;if(e.length===0)return[];let y=.15+(1-u)*.85,n=Array.isArray(e[0])?e:e.map(({x:c,y:p,pressure:g=.5})=>[c,p,g]);if(n.length===2){let c=n[1];n=n.slice(0,-1);for(let p=1;p<5;p++)n.push(K(n[0],c,p/4))}n.length===1&&(n=[...n,[...l(n[0],[1,1]),...n[0].slice(2)]]);let f=[{point:[n[0][0],n[0][1]],pressure:n[0][2]>=0?n[0][2]:.25,vector:[1,1],distance:0,runningLength:0}],d=!1,D=0,S=f[0],j=n.length-1;for(let c=1;c<n.length;c++){let p=h&&c===j?n[c].slice(0,2):K(S.point,n[c],y);if(ue(S.point,p))continue;let g=ie(p,S.point);if(D+=g,c<j&&!d){if(D<x)continue;d=!0}S={point:p,pressure:n[c][2]>=0?n[c][2]:.5,vector:G(a(S.point,p)),distance:g,runningLength:D},f.push(S)}return f[0].vector=((q=f[1])==null?void 0:q.vector)||[0,0],f}function ae(e,t={}){return ce(me(e,t),t)}var _e=ae;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6620 characters]\n//# sourceURL=webpack-internal:///../../../node_modules/perfect-freehand/dist/esm/index.js\n');
              }
            ),
            /***/
            "../../../node_modules/png-chunk-text/decode.js": (
              /*!******************************************************!*\
                !*** ../../../node_modules/png-chunk-text/decode.js ***!
                \******************************************************/
              /***/
              (module) => {
                eval("module.exports = decode\n\nfunction decode (data) {\n  if (data.data && data.name) {\n    data = data.data\n  }\n\n  var naming = true\n  var text = ''\n  var name = ''\n\n  for (var i = 0; i < data.length; i++) {\n    var code = data[i]\n\n    if (naming) {\n      if (code) {\n        name += String.fromCharCode(code)\n      } else {\n        naming = false\n      }\n    } else {\n      if (code) {\n        text += String.fromCharCode(code)\n      } else {\n        throw new Error('Invalid NULL character found. 0x00 character is not permitted in tEXt content')\n      }\n    }\n  }\n\n  return {\n    keyword: name,\n    text: text\n  }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3BuZy1jaHVuay10ZXh0L2RlY29kZS5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsa0JBQWtCLGlCQUFpQjtBQUNuQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3BuZy1jaHVuay10ZXh0L2RlY29kZS5qcz81MTBjIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gZGVjb2RlXG5cbmZ1bmN0aW9uIGRlY29kZSAoZGF0YSkge1xuICBpZiAoZGF0YS5kYXRhICYmIGRhdGEubmFtZSkge1xuICAgIGRhdGEgPSBkYXRhLmRhdGFcbiAgfVxuXG4gIHZhciBuYW1pbmcgPSB0cnVlXG4gIHZhciB0ZXh0ID0gJydcbiAgdmFyIG5hbWUgPSAnJ1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkrKykge1xuICAgIHZhciBjb2RlID0gZGF0YVtpXVxuXG4gICAgaWYgKG5hbWluZykge1xuICAgICAgaWYgKGNvZGUpIHtcbiAgICAgICAgbmFtZSArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNvZGUpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuYW1pbmcgPSBmYWxzZVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoY29kZSkge1xuICAgICAgICB0ZXh0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBOVUxMIGNoYXJhY3RlciBmb3VuZC4gMHgwMCBjaGFyYWN0ZXIgaXMgbm90IHBlcm1pdHRlZCBpbiB0RVh0IGNvbnRlbnQnKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAga2V5d29yZDogbmFtZSxcbiAgICB0ZXh0OiB0ZXh0XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/png-chunk-text/decode.js\n");
              }
            ),
            /***/
            "../../../node_modules/png-chunk-text/encode.js": (
              /*!******************************************************!*\
                !*** ../../../node_modules/png-chunk-text/encode.js ***!
                \******************************************************/
              /***/
              (module) => {
                eval(`module.exports = encode

function encode (keyword, content) {
  keyword = String(keyword)
  content = String(content)

  if (!/^[\\x00-\\xFF]+$/.test(keyword) || !/^[\\x00-\\xFF]+$/.test(content)) {
    throw new Error('Only Latin-1 characters are permitted in PNG tEXt chunks. You might want to consider base64 encoding and/or zEXt compression')
  }

  if (keyword.length >= 80) {
    throw new Error('Keyword "' + keyword + '" is longer than the 79-character limit imposed by the PNG specification')
  }

  var totalSize = keyword.length + content.length + 1
  var output = new Uint8Array(totalSize)
  var idx = 0
  var code

  for (var i = 0; i < keyword.length; i++) {
    if (!(code = keyword.charCodeAt(i))) {
      throw new Error('0x00 character is not permitted in tEXt keywords')
    }

    output[idx++] = code
  }

  output[idx++] = 0

  for (var j = 0; j < content.length; j++) {
    if (!(code = content.charCodeAt(j))) {
      throw new Error('0x00 character is not permitted in tEXt content')
    }

    output[idx++] = code
  }

  return {
    name: 'tEXt',
    data: output
  }
}
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3BuZy1jaHVuay10ZXh0L2VuY29kZS5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxrQkFBa0Isb0JBQW9CO0FBQ3RDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBLGtCQUFrQixvQkFBb0I7QUFDdEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG5nLWNodW5rLXRleHQvZW5jb2RlLmpzPzU5NzEiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBlbmNvZGVcblxuZnVuY3Rpb24gZW5jb2RlIChrZXl3b3JkLCBjb250ZW50KSB7XG4gIGtleXdvcmQgPSBTdHJpbmcoa2V5d29yZClcbiAgY29udGVudCA9IFN0cmluZyhjb250ZW50KVxuXG4gIGlmICghL15bXFx4MDAtXFx4RkZdKyQvLnRlc3Qoa2V5d29yZCkgfHwgIS9eW1xceDAwLVxceEZGXSskLy50ZXN0KGNvbnRlbnQpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdPbmx5IExhdGluLTEgY2hhcmFjdGVycyBhcmUgcGVybWl0dGVkIGluIFBORyB0RVh0IGNodW5rcy4gWW91IG1pZ2h0IHdhbnQgdG8gY29uc2lkZXIgYmFzZTY0IGVuY29kaW5nIGFuZC9vciB6RVh0IGNvbXByZXNzaW9uJylcbiAgfVxuXG4gIGlmIChrZXl3b3JkLmxlbmd0aCA+PSA4MCkge1xuICAgIHRocm93IG5ldyBFcnJvcignS2V5d29yZCBcIicgKyBrZXl3b3JkICsgJ1wiIGlzIGxvbmdlciB0aGFuIHRoZSA3OS1jaGFyYWN0ZXIgbGltaXQgaW1wb3NlZCBieSB0aGUgUE5HIHNwZWNpZmljYXRpb24nKVxuICB9XG5cbiAgdmFyIHRvdGFsU2l6ZSA9IGtleXdvcmQubGVuZ3RoICsgY29udGVudC5sZW5ndGggKyAxXG4gIHZhciBvdXRwdXQgPSBuZXcgVWludDhBcnJheSh0b3RhbFNpemUpXG4gIHZhciBpZHggPSAwXG4gIHZhciBjb2RlXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXl3b3JkLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKCEoY29kZSA9IGtleXdvcmQuY2hhckNvZGVBdChpKSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignMHgwMCBjaGFyYWN0ZXIgaXMgbm90IHBlcm1pdHRlZCBpbiB0RVh0IGtleXdvcmRzJylcbiAgICB9XG5cbiAgICBvdXRwdXRbaWR4KytdID0gY29kZVxuICB9XG5cbiAgb3V0cHV0W2lkeCsrXSA9IDBcblxuICBmb3IgKHZhciBqID0gMDsgaiA8IGNvbnRlbnQubGVuZ3RoOyBqKyspIHtcbiAgICBpZiAoIShjb2RlID0gY29udGVudC5jaGFyQ29kZUF0KGopKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCcweDAwIGNoYXJhY3RlciBpcyBub3QgcGVybWl0dGVkIGluIHRFWHQgY29udGVudCcpXG4gICAgfVxuXG4gICAgb3V0cHV0W2lkeCsrXSA9IGNvZGVcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbmFtZTogJ3RFWHQnLFxuICAgIGRhdGE6IG91dHB1dFxuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=
//# sourceURL=webpack-internal:///../../../node_modules/png-chunk-text/encode.js
`);
              }
            ),
            /***/
            "../../../node_modules/png-chunk-text/index.js": (
              /*!*****************************************************!*\
                !*** ../../../node_modules/png-chunk-text/index.js ***!
                \*****************************************************/
              /***/
              (__unused_webpack_module, exports, __webpack_require__) => {
                eval('exports.encode = __webpack_require__(/*! ./encode */ "../../../node_modules/png-chunk-text/encode.js")\nexports.decode = __webpack_require__(/*! ./decode */ "../../../node_modules/png-chunk-text/decode.js")\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3BuZy1jaHVuay10ZXh0L2luZGV4LmpzLmpzIiwibWFwcGluZ3MiOiJBQUFBLHNHQUFvQztBQUNwQyxzR0FBb0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3BuZy1jaHVuay10ZXh0L2luZGV4LmpzPzNiMzAiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0cy5lbmNvZGUgPSByZXF1aXJlKCcuL2VuY29kZScpXG5leHBvcnRzLmRlY29kZSA9IHJlcXVpcmUoJy4vZGVjb2RlJylcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/png-chunk-text/index.js\n');
              }
            ),
            /***/
            "../../../node_modules/png-chunks-encode/index.js": (
              /*!********************************************************!*\
                !*** ../../../node_modules/png-chunks-encode/index.js ***!
                \********************************************************/
              /***/
              (module, __unused_webpack_exports, __webpack_require__) => {
                eval('var sliced = __webpack_require__(/*! sliced */ "../../../node_modules/sliced/index.js")\nvar crc32 = __webpack_require__(/*! crc-32 */ "../../../node_modules/crc-32/crc32.js")\n\nmodule.exports = encodeChunks\n\n// Used for fast-ish conversion between uint8s and uint32s/int32s.\n// Also required in order to remain agnostic for both Node Buffers and\n// Uint8Arrays.\nvar uint8 = new Uint8Array(4)\nvar int32 = new Int32Array(uint8.buffer)\nvar uint32 = new Uint32Array(uint8.buffer)\n\nfunction encodeChunks (chunks) {\n  var totalSize = 8\n  var idx = totalSize\n  var i\n\n  for (i = 0; i < chunks.length; i++) {\n    totalSize += chunks[i].data.length\n    totalSize += 12\n  }\n\n  var output = new Uint8Array(totalSize)\n\n  output[0] = 0x89\n  output[1] = 0x50\n  output[2] = 0x4E\n  output[3] = 0x47\n  output[4] = 0x0D\n  output[5] = 0x0A\n  output[6] = 0x1A\n  output[7] = 0x0A\n\n  for (i = 0; i < chunks.length; i++) {\n    var chunk = chunks[i]\n    var name = chunk.name\n    var data = chunk.data\n    var size = data.length\n    var nameChars = [\n      name.charCodeAt(0),\n      name.charCodeAt(1),\n      name.charCodeAt(2),\n      name.charCodeAt(3)\n    ]\n\n    uint32[0] = size\n    output[idx++] = uint8[3]\n    output[idx++] = uint8[2]\n    output[idx++] = uint8[1]\n    output[idx++] = uint8[0]\n\n    output[idx++] = nameChars[0]\n    output[idx++] = nameChars[1]\n    output[idx++] = nameChars[2]\n    output[idx++] = nameChars[3]\n\n    for (var j = 0; j < size;) {\n      output[idx++] = data[j++]\n    }\n\n    var crcCheck = nameChars.concat(sliced(data))\n    var crc = crc32.buf(crcCheck)\n\n    int32[0] = crc\n    output[idx++] = uint8[3]\n    output[idx++] = uint8[2]\n    output[idx++] = uint8[1]\n    output[idx++] = uint8[0]\n  }\n\n  return output\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3BuZy1jaHVua3MtZW5jb2RlL2luZGV4LmpzLmpzIiwibWFwcGluZ3MiOiJBQUFBLGFBQWEsbUJBQU8sQ0FBQyxxREFBUTtBQUM3QixZQUFZLG1CQUFPLENBQUMscURBQVE7O0FBRTVCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxjQUFjLG1CQUFtQjtBQUNqQztBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxjQUFjLG1CQUFtQjtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG9CQUFvQixTQUFTO0FBQzdCO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcG5nLWNodW5rcy1lbmNvZGUvaW5kZXguanM/YmVhNiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgc2xpY2VkID0gcmVxdWlyZSgnc2xpY2VkJylcbnZhciBjcmMzMiA9IHJlcXVpcmUoJ2NyYy0zMicpXG5cbm1vZHVsZS5leHBvcnRzID0gZW5jb2RlQ2h1bmtzXG5cbi8vIFVzZWQgZm9yIGZhc3QtaXNoIGNvbnZlcnNpb24gYmV0d2VlbiB1aW50OHMgYW5kIHVpbnQzMnMvaW50MzJzLlxuLy8gQWxzbyByZXF1aXJlZCBpbiBvcmRlciB0byByZW1haW4gYWdub3N0aWMgZm9yIGJvdGggTm9kZSBCdWZmZXJzIGFuZFxuLy8gVWludDhBcnJheXMuXG52YXIgdWludDggPSBuZXcgVWludDhBcnJheSg0KVxudmFyIGludDMyID0gbmV3IEludDMyQXJyYXkodWludDguYnVmZmVyKVxudmFyIHVpbnQzMiA9IG5ldyBVaW50MzJBcnJheSh1aW50OC5idWZmZXIpXG5cbmZ1bmN0aW9uIGVuY29kZUNodW5rcyAoY2h1bmtzKSB7XG4gIHZhciB0b3RhbFNpemUgPSA4XG4gIHZhciBpZHggPSB0b3RhbFNpemVcbiAgdmFyIGlcblxuICBmb3IgKGkgPSAwOyBpIDwgY2h1bmtzLmxlbmd0aDsgaSsrKSB7XG4gICAgdG90YWxTaXplICs9IGNodW5rc1tpXS5kYXRhLmxlbmd0aFxuICAgIHRvdGFsU2l6ZSArPSAxMlxuICB9XG5cbiAgdmFyIG91dHB1dCA9IG5ldyBVaW50OEFycmF5KHRvdGFsU2l6ZSlcblxuICBvdXRwdXRbMF0gPSAweDg5XG4gIG91dHB1dFsxXSA9IDB4NTBcbiAgb3V0cHV0WzJdID0gMHg0RVxuICBvdXRwdXRbM10gPSAweDQ3XG4gIG91dHB1dFs0XSA9IDB4MERcbiAgb3V0cHV0WzVdID0gMHgwQVxuICBvdXRwdXRbNl0gPSAweDFBXG4gIG91dHB1dFs3XSA9IDB4MEFcblxuICBmb3IgKGkgPSAwOyBpIDwgY2h1bmtzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGNodW5rID0gY2h1bmtzW2ldXG4gICAgdmFyIG5hbWUgPSBjaHVuay5uYW1lXG4gICAgdmFyIGRhdGEgPSBjaHVuay5kYXRhXG4gICAgdmFyIHNpemUgPSBkYXRhLmxlbmd0aFxuICAgIHZhciBuYW1lQ2hhcnMgPSBbXG4gICAgICBuYW1lLmNoYXJDb2RlQXQoMCksXG4gICAgICBuYW1lLmNoYXJDb2RlQXQoMSksXG4gICAgICBuYW1lLmNoYXJDb2RlQXQoMiksXG4gICAgICBuYW1lLmNoYXJDb2RlQXQoMylcbiAgICBdXG5cbiAgICB1aW50MzJbMF0gPSBzaXplXG4gICAgb3V0cHV0W2lkeCsrXSA9IHVpbnQ4WzNdXG4gICAgb3V0cHV0W2lkeCsrXSA9IHVpbnQ4WzJdXG4gICAgb3V0cHV0W2lkeCsrXSA9IHVpbnQ4WzFdXG4gICAgb3V0cHV0W2lkeCsrXSA9IHVpbnQ4WzBdXG5cbiAgICBvdXRwdXRbaWR4KytdID0gbmFtZUNoYXJzWzBdXG4gICAgb3V0cHV0W2lkeCsrXSA9IG5hbWVDaGFyc1sxXVxuICAgIG91dHB1dFtpZHgrK10gPSBuYW1lQ2hhcnNbMl1cbiAgICBvdXRwdXRbaWR4KytdID0gbmFtZUNoYXJzWzNdXG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IHNpemU7KSB7XG4gICAgICBvdXRwdXRbaWR4KytdID0gZGF0YVtqKytdXG4gICAgfVxuXG4gICAgdmFyIGNyY0NoZWNrID0gbmFtZUNoYXJzLmNvbmNhdChzbGljZWQoZGF0YSkpXG4gICAgdmFyIGNyYyA9IGNyYzMyLmJ1ZihjcmNDaGVjaylcblxuICAgIGludDMyWzBdID0gY3JjXG4gICAgb3V0cHV0W2lkeCsrXSA9IHVpbnQ4WzNdXG4gICAgb3V0cHV0W2lkeCsrXSA9IHVpbnQ4WzJdXG4gICAgb3V0cHV0W2lkeCsrXSA9IHVpbnQ4WzFdXG4gICAgb3V0cHV0W2lkeCsrXSA9IHVpbnQ4WzBdXG4gIH1cblxuICByZXR1cm4gb3V0cHV0XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/png-chunks-encode/index.js\n');
              }
            ),
            /***/
            "../../../node_modules/png-chunks-extract/index.js": (
              /*!*********************************************************!*\
                !*** ../../../node_modules/png-chunks-extract/index.js ***!
                \*********************************************************/
              /***/
              (module, __unused_webpack_exports, __webpack_require__) => {
                eval(`var crc32 = __webpack_require__(/*! crc-32 */ "../../../node_modules/crc-32/crc32.js")

module.exports = extractChunks

// Used for fast-ish conversion between uint8s and uint32s/int32s.
// Also required in order to remain agnostic for both Node Buffers and
// Uint8Arrays.
var uint8 = new Uint8Array(4)
var int32 = new Int32Array(uint8.buffer)
var uint32 = new Uint32Array(uint8.buffer)

function extractChunks (data) {
  if (data[0] !== 0x89) throw new Error('Invalid .png file header')
  if (data[1] !== 0x50) throw new Error('Invalid .png file header')
  if (data[2] !== 0x4E) throw new Error('Invalid .png file header')
  if (data[3] !== 0x47) throw new Error('Invalid .png file header')
  if (data[4] !== 0x0D) throw new Error('Invalid .png file header: possibly caused by DOS-Unix line ending conversion?')
  if (data[5] !== 0x0A) throw new Error('Invalid .png file header: possibly caused by DOS-Unix line ending conversion?')
  if (data[6] !== 0x1A) throw new Error('Invalid .png file header')
  if (data[7] !== 0x0A) throw new Error('Invalid .png file header: possibly caused by DOS-Unix line ending conversion?')

  var ended = false
  var chunks = []
  var idx = 8

  while (idx < data.length) {
    // Read the length of the current chunk,
    // which is stored as a Uint32.
    uint8[3] = data[idx++]
    uint8[2] = data[idx++]
    uint8[1] = data[idx++]
    uint8[0] = data[idx++]

    // Chunk includes name/type for CRC check (see below).
    var length = uint32[0] + 4
    var chunk = new Uint8Array(length)
    chunk[0] = data[idx++]
    chunk[1] = data[idx++]
    chunk[2] = data[idx++]
    chunk[3] = data[idx++]

    // Get the name in ASCII for identification.
    var name = (
      String.fromCharCode(chunk[0]) +
      String.fromCharCode(chunk[1]) +
      String.fromCharCode(chunk[2]) +
      String.fromCharCode(chunk[3])
    )

    // The IHDR header MUST come first.
    if (!chunks.length && name !== 'IHDR') {
      throw new Error('IHDR header missing')
    }

    // The IEND header marks the end of the file,
    // so on discovering it break out of the loop.
    if (name === 'IEND') {
      ended = true
      chunks.push({
        name: name,
        data: new Uint8Array(0)
      })

      break
    }

    // Read the contents of the chunk out of the main buffer.
    for (var i = 4; i < length; i++) {
      chunk[i] = data[idx++]
    }

    // Read out the CRC value for comparison.
    // It's stored as an Int32.
    uint8[3] = data[idx++]
    uint8[2] = data[idx++]
    uint8[1] = data[idx++]
    uint8[0] = data[idx++]

    var crcActual = int32[0]
    var crcExpect = crc32.buf(chunk)
    if (crcExpect !== crcActual) {
      throw new Error(
        'CRC values for ' + name + ' header do not match, PNG file is likely corrupted'
      )
    }

    // The chunk data is now copied to remove the 4 preceding
    // bytes used for the chunk name/type.
    var chunkData = new Uint8Array(chunk.buffer.slice(4))

    chunks.push({
      name: name,
      data: chunkData
    })
  }

  if (!ended) {
    throw new Error('.png file ended prematurely: no IEND header was found')
  }

  return chunks
}
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5196 characters]
//# sourceURL=webpack-internal:///../../../node_modules/png-chunks-extract/index.js
`);
              }
            ),
            /***/
            "../../../node_modules/points-on-curve/lib/index.js": (
              /*!**********************************************************!*\
                !*** ../../../node_modules/points-on-curve/lib/index.js ***!
                \**********************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "pointsOnBezierCurves": () => (/* binding */ pointsOnBezierCurves),\n/* harmony export */   "simplify": () => (/* binding */ simplify),\n/* harmony export */   "simplifyPoints": () => (/* binding */ simplifyPoints)\n/* harmony export */ });\n// distance between 2 points\nfunction distance(p1, p2) {\n    return Math.sqrt(distanceSq(p1, p2));\n}\n// distance between 2 points squared\nfunction distanceSq(p1, p2) {\n    return Math.pow(p1[0] - p2[0], 2) + Math.pow(p1[1] - p2[1], 2);\n}\n// Sistance squared from a point p to the line segment vw\nfunction distanceToSegmentSq(p, v, w) {\n    const l2 = distanceSq(v, w);\n    if (l2 === 0) {\n        return distanceSq(p, v);\n    }\n    let t = ((p[0] - v[0]) * (w[0] - v[0]) + (p[1] - v[1]) * (w[1] - v[1])) / l2;\n    t = Math.max(0, Math.min(1, t));\n    return distanceSq(p, lerp(v, w, t));\n}\nfunction lerp(a, b, t) {\n    return [\n        a[0] + (b[0] - a[0]) * t,\n        a[1] + (b[1] - a[1]) * t,\n    ];\n}\n// Adapted from https://seant23.wordpress.com/2010/11/12/offset-bezier-curves/\nfunction flatness(points, offset) {\n    const p1 = points[offset + 0];\n    const p2 = points[offset + 1];\n    const p3 = points[offset + 2];\n    const p4 = points[offset + 3];\n    let ux = 3 * p2[0] - 2 * p1[0] - p4[0];\n    ux *= ux;\n    let uy = 3 * p2[1] - 2 * p1[1] - p4[1];\n    uy *= uy;\n    let vx = 3 * p3[0] - 2 * p4[0] - p1[0];\n    vx *= vx;\n    let vy = 3 * p3[1] - 2 * p4[1] - p1[1];\n    vy *= vy;\n    if (ux < vx) {\n        ux = vx;\n    }\n    if (uy < vy) {\n        uy = vy;\n    }\n    return ux + uy;\n}\nfunction getPointsOnBezierCurveWithSplitting(points, offset, tolerance, newPoints) {\n    const outPoints = newPoints || [];\n    if (flatness(points, offset) < tolerance) {\n        const p0 = points[offset + 0];\n        if (outPoints.length) {\n            const d = distance(outPoints[outPoints.length - 1], p0);\n            if (d > 1) {\n                outPoints.push(p0);\n            }\n        }\n        else {\n            outPoints.push(p0);\n        }\n        outPoints.push(points[offset + 3]);\n    }\n    else {\n        // subdivide\n        const t = .5;\n        const p1 = points[offset + 0];\n        const p2 = points[offset + 1];\n        const p3 = points[offset + 2];\n        const p4 = points[offset + 3];\n        const q1 = lerp(p1, p2, t);\n        const q2 = lerp(p2, p3, t);\n        const q3 = lerp(p3, p4, t);\n        const r1 = lerp(q1, q2, t);\n        const r2 = lerp(q2, q3, t);\n        const red = lerp(r1, r2, t);\n        getPointsOnBezierCurveWithSplitting([p1, q1, r1, red], 0, tolerance, outPoints);\n        getPointsOnBezierCurveWithSplitting([red, r2, q3, p4], 0, tolerance, outPoints);\n    }\n    return outPoints;\n}\nfunction simplify(points, distance) {\n    return simplifyPoints(points, 0, points.length, distance);\n}\n// Ramer\u2013Douglas\u2013Peucker algorithm\n// https://en.wikipedia.org/wiki/Ramer%E2%80%93Douglas%E2%80%93Peucker_algorithm\nfunction simplifyPoints(points, start, end, epsilon, newPoints) {\n    const outPoints = newPoints || [];\n    // find the most distance point from the endpoints\n    const s = points[start];\n    const e = points[end - 1];\n    let maxDistSq = 0;\n    let maxNdx = 1;\n    for (let i = start + 1; i < end - 1; ++i) {\n        const distSq = distanceToSegmentSq(points[i], s, e);\n        if (distSq > maxDistSq) {\n            maxDistSq = distSq;\n            maxNdx = i;\n        }\n    }\n    // if that point is too far, split\n    if (Math.sqrt(maxDistSq) > epsilon) {\n        simplifyPoints(points, start, maxNdx + 1, epsilon, outPoints);\n        simplifyPoints(points, maxNdx, end, epsilon, outPoints);\n    }\n    else {\n        if (!outPoints.length) {\n            outPoints.push(s);\n        }\n        outPoints.push(e);\n    }\n    return outPoints;\n}\nfunction pointsOnBezierCurves(points, tolerance = 0.15, distance) {\n    const newPoints = [];\n    const numSegments = (points.length - 1) / 3;\n    for (let i = 0; i < numSegments; i++) {\n        const offset = i * 3;\n        getPointsOnBezierCurveWithSplitting(points, offset, tolerance, newPoints);\n    }\n    if (distance && distance > 0) {\n        return simplifyPoints(newPoints, 0, newPoints.length, distance);\n    }\n    return newPoints;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6616 characters]\n//# sourceURL=webpack-internal:///../../../node_modules/points-on-curve/lib/index.js\n');
              }
            ),
            /***/
            "../../../node_modules/points-on-path/lib/index.js": (
              /*!*********************************************************!*\
                !*** ../../../node_modules/points-on-path/lib/index.js ***!
                \*********************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "pointsOnPath": () => (/* binding */ pointsOnPath)
/* harmony export */ });
/* harmony import */ var points_on_curve__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! points-on-curve */ "../../../node_modules/points-on-path/node_modules/points-on-curve/lib/index.js");
/* harmony import */ var path_data_parser__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! path-data-parser */ "../../../node_modules/path-data-parser/lib/index.js");


function pointsOnPath(path, tolerance, distance) {
    const segments = (0,path_data_parser__WEBPACK_IMPORTED_MODULE_1__.parsePath)(path);
    const normalized = (0,path_data_parser__WEBPACK_IMPORTED_MODULE_1__.normalize)((0,path_data_parser__WEBPACK_IMPORTED_MODULE_1__.absolutize)(segments));
    const sets = [];
    let currentPoints = [];
    let start = [0, 0];
    let pendingCurve = [];
    const appendPendingCurve = () => {
        if (pendingCurve.length >= 4) {
            currentPoints.push(...(0,points_on_curve__WEBPACK_IMPORTED_MODULE_0__.pointsOnBezierCurves)(pendingCurve, tolerance));
        }
        pendingCurve = [];
    };
    const appendPendingPoints = () => {
        appendPendingCurve();
        if (currentPoints.length) {
            sets.push(currentPoints);
            currentPoints = [];
        }
    };
    for (const { key, data } of normalized) {
        switch (key) {
            case 'M':
                appendPendingPoints();
                start = [data[0], data[1]];
                currentPoints.push(start);
                break;
            case 'L':
                appendPendingCurve();
                currentPoints.push([data[0], data[1]]);
                break;
            case 'C':
                if (!pendingCurve.length) {
                    const lastPoint = currentPoints.length ? currentPoints[currentPoints.length - 1] : start;
                    pendingCurve.push([lastPoint[0], lastPoint[1]]);
                }
                pendingCurve.push([data[0], data[1]]);
                pendingCurve.push([data[2], data[3]]);
                pendingCurve.push([data[4], data[5]]);
                break;
            case 'Z':
                appendPendingCurve();
                currentPoints.push([start[0], start[1]]);
                break;
        }
    }
    appendPendingPoints();
    if (!distance) {
        return sets;
    }
    const out = [];
    for (const set of sets) {
        const simplifiedSet = (0,points_on_curve__WEBPACK_IMPORTED_MODULE_0__.simplify)(set, distance);
        if (simplifiedSet.length) {
            out.push(simplifiedSet);
        }
    }
    return out;
}
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3BvaW50cy1vbi1wYXRoL2xpYi9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBaUU7QUFDRztBQUM3RDtBQUNQLHFCQUFxQiwyREFBUztBQUM5Qix1QkFBdUIsMkRBQVMsQ0FBQyw0REFBVTtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0MscUVBQW9CO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLFlBQVk7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIseURBQVE7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wb2ludHMtb24tcGF0aC9saWIvaW5kZXguanM/MWNkZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwb2ludHNPbkJlemllckN1cnZlcywgc2ltcGxpZnkgfSBmcm9tICdwb2ludHMtb24tY3VydmUnO1xuaW1wb3J0IHsgcGFyc2VQYXRoLCBhYnNvbHV0aXplLCBub3JtYWxpemUgfSBmcm9tICdwYXRoLWRhdGEtcGFyc2VyJztcbmV4cG9ydCBmdW5jdGlvbiBwb2ludHNPblBhdGgocGF0aCwgdG9sZXJhbmNlLCBkaXN0YW5jZSkge1xuICAgIGNvbnN0IHNlZ21lbnRzID0gcGFyc2VQYXRoKHBhdGgpO1xuICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBub3JtYWxpemUoYWJzb2x1dGl6ZShzZWdtZW50cykpO1xuICAgIGNvbnN0IHNldHMgPSBbXTtcbiAgICBsZXQgY3VycmVudFBvaW50cyA9IFtdO1xuICAgIGxldCBzdGFydCA9IFswLCAwXTtcbiAgICBsZXQgcGVuZGluZ0N1cnZlID0gW107XG4gICAgY29uc3QgYXBwZW5kUGVuZGluZ0N1cnZlID0gKCkgPT4ge1xuICAgICAgICBpZiAocGVuZGluZ0N1cnZlLmxlbmd0aCA+PSA0KSB7XG4gICAgICAgICAgICBjdXJyZW50UG9pbnRzLnB1c2goLi4ucG9pbnRzT25CZXppZXJDdXJ2ZXMocGVuZGluZ0N1cnZlLCB0b2xlcmFuY2UpKTtcbiAgICAgICAgfVxuICAgICAgICBwZW5kaW5nQ3VydmUgPSBbXTtcbiAgICB9O1xuICAgIGNvbnN0IGFwcGVuZFBlbmRpbmdQb2ludHMgPSAoKSA9PiB7XG4gICAgICAgIGFwcGVuZFBlbmRpbmdDdXJ2ZSgpO1xuICAgICAgICBpZiAoY3VycmVudFBvaW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHNldHMucHVzaChjdXJyZW50UG9pbnRzKTtcbiAgICAgICAgICAgIGN1cnJlbnRQb2ludHMgPSBbXTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgZm9yIChjb25zdCB7IGtleSwgZGF0YSB9IG9mIG5vcm1hbGl6ZWQpIHtcbiAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgIGFwcGVuZFBlbmRpbmdQb2ludHMoKTtcbiAgICAgICAgICAgICAgICBzdGFydCA9IFtkYXRhWzBdLCBkYXRhWzFdXTtcbiAgICAgICAgICAgICAgICBjdXJyZW50UG9pbnRzLnB1c2goc3RhcnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnTCc6XG4gICAgICAgICAgICAgICAgYXBwZW5kUGVuZGluZ0N1cnZlKCk7XG4gICAgICAgICAgICAgICAgY3VycmVudFBvaW50cy5wdXNoKFtkYXRhWzBdLCBkYXRhWzFdXSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdDJzpcbiAgICAgICAgICAgICAgICBpZiAoIXBlbmRpbmdDdXJ2ZS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFzdFBvaW50ID0gY3VycmVudFBvaW50cy5sZW5ndGggPyBjdXJyZW50UG9pbnRzW2N1cnJlbnRQb2ludHMubGVuZ3RoIC0gMV0gOiBzdGFydDtcbiAgICAgICAgICAgICAgICAgICAgcGVuZGluZ0N1cnZlLnB1c2goW2xhc3RQb2ludFswXSwgbGFzdFBvaW50WzFdXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHBlbmRpbmdDdXJ2ZS5wdXNoKFtkYXRhWzBdLCBkYXRhWzFdXSk7XG4gICAgICAgICAgICAgICAgcGVuZGluZ0N1cnZlLnB1c2goW2RhdGFbMl0sIGRhdGFbM11dKTtcbiAgICAgICAgICAgICAgICBwZW5kaW5nQ3VydmUucHVzaChbZGF0YVs0XSwgZGF0YVs1XV0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnWic6XG4gICAgICAgICAgICAgICAgYXBwZW5kUGVuZGluZ0N1cnZlKCk7XG4gICAgICAgICAgICAgICAgY3VycmVudFBvaW50cy5wdXNoKFtzdGFydFswXSwgc3RhcnRbMV1dKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICBhcHBlbmRQZW5kaW5nUG9pbnRzKCk7XG4gICAgaWYgKCFkaXN0YW5jZSkge1xuICAgICAgICByZXR1cm4gc2V0cztcbiAgICB9XG4gICAgY29uc3Qgb3V0ID0gW107XG4gICAgZm9yIChjb25zdCBzZXQgb2Ygc2V0cykge1xuICAgICAgICBjb25zdCBzaW1wbGlmaWVkU2V0ID0gc2ltcGxpZnkoc2V0LCBkaXN0YW5jZSk7XG4gICAgICAgIGlmIChzaW1wbGlmaWVkU2V0Lmxlbmd0aCkge1xuICAgICAgICAgICAgb3V0LnB1c2goc2ltcGxpZmllZFNldCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG91dDtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==
//# sourceURL=webpack-internal:///../../../node_modules/points-on-path/lib/index.js
`);
              }
            ),
            /***/
            "../../../node_modules/points-on-path/node_modules/points-on-curve/lib/index.js": (
              /*!**************************************************************************************!*\
                !*** ../../../node_modules/points-on-path/node_modules/points-on-curve/lib/index.js ***!
                \**************************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "pointsOnBezierCurves": () => (/* binding */ pointsOnBezierCurves),\n/* harmony export */   "simplify": () => (/* binding */ simplify)\n/* harmony export */ });\n// distance between 2 points\nfunction distance(p1, p2) {\n    return Math.sqrt(distanceSq(p1, p2));\n}\n// distance between 2 points squared\nfunction distanceSq(p1, p2) {\n    return Math.pow(p1[0] - p2[0], 2) + Math.pow(p1[1] - p2[1], 2);\n}\n// Sistance squared from a point p to the line segment vw\nfunction distanceToSegmentSq(p, v, w) {\n    const l2 = distanceSq(v, w);\n    if (l2 === 0) {\n        return distanceSq(p, v);\n    }\n    let t = ((p[0] - v[0]) * (w[0] - v[0]) + (p[1] - v[1]) * (w[1] - v[1])) / l2;\n    t = Math.max(0, Math.min(1, t));\n    return distanceSq(p, lerp(v, w, t));\n}\nfunction lerp(a, b, t) {\n    return [\n        a[0] + (b[0] - a[0]) * t,\n        a[1] + (b[1] - a[1]) * t,\n    ];\n}\n// Adapted from https://seant23.wordpress.com/2010/11/12/offset-bezier-curves/\nfunction flatness(points, offset) {\n    const p1 = points[offset + 0];\n    const p2 = points[offset + 1];\n    const p3 = points[offset + 2];\n    const p4 = points[offset + 3];\n    let ux = 3 * p2[0] - 2 * p1[0] - p4[0];\n    ux *= ux;\n    let uy = 3 * p2[1] - 2 * p1[1] - p4[1];\n    uy *= uy;\n    let vx = 3 * p3[0] - 2 * p4[0] - p1[0];\n    vx *= vx;\n    let vy = 3 * p3[1] - 2 * p4[1] - p1[1];\n    vy *= vy;\n    if (ux < vx) {\n        ux = vx;\n    }\n    if (uy < vy) {\n        uy = vy;\n    }\n    return ux + uy;\n}\nfunction getPointsOnBezierCurveWithSplitting(points, offset, tolerance, newPoints) {\n    const outPoints = newPoints || [];\n    if (flatness(points, offset) < tolerance) {\n        const p0 = points[offset + 0];\n        if (outPoints.length) {\n            const d = distance(outPoints[outPoints.length - 1], p0);\n            if (d > 1) {\n                outPoints.push(p0);\n            }\n        }\n        else {\n            outPoints.push(p0);\n        }\n        outPoints.push(points[offset + 3]);\n    }\n    else {\n        // subdivide\n        const t = .5;\n        const p1 = points[offset + 0];\n        const p2 = points[offset + 1];\n        const p3 = points[offset + 2];\n        const p4 = points[offset + 3];\n        const q1 = lerp(p1, p2, t);\n        const q2 = lerp(p2, p3, t);\n        const q3 = lerp(p3, p4, t);\n        const r1 = lerp(q1, q2, t);\n        const r2 = lerp(q2, q3, t);\n        const red = lerp(r1, r2, t);\n        getPointsOnBezierCurveWithSplitting([p1, q1, r1, red], 0, tolerance, outPoints);\n        getPointsOnBezierCurveWithSplitting([red, r2, q3, p4], 0, tolerance, outPoints);\n    }\n    return outPoints;\n}\nfunction simplify(points, distance) {\n    return simplifyPoints(points, 0, points.length, distance);\n}\n// Ramer\u2013Douglas\u2013Peucker algorithm\n// https://en.wikipedia.org/wiki/Ramer%E2%80%93Douglas%E2%80%93Peucker_algorithm\nfunction simplifyPoints(points, start, end, epsilon, newPoints) {\n    const outPoints = newPoints || [];\n    // find the most distance point from the endpoints\n    const s = points[start];\n    const e = points[end - 1];\n    let maxDistSq = 0;\n    let maxNdx = 1;\n    for (let i = start + 1; i < end - 1; ++i) {\n        const distSq = distanceToSegmentSq(points[i], s, e);\n        if (distSq > maxDistSq) {\n            maxDistSq = distSq;\n            maxNdx = i;\n        }\n    }\n    // if that point is too far, split\n    if (Math.sqrt(maxDistSq) > epsilon) {\n        simplifyPoints(points, start, maxNdx + 1, epsilon, outPoints);\n        simplifyPoints(points, maxNdx, end, epsilon, outPoints);\n    }\n    else {\n        if (!outPoints.length) {\n            outPoints.push(s);\n        }\n        outPoints.push(e);\n    }\n    return outPoints;\n}\nfunction pointsOnBezierCurves(points, tolerance = 0.15, distance) {\n    const newPoints = [];\n    const numSegments = (points.length - 1) / 3;\n    for (let i = 0; i < numSegments; i++) {\n        const offset = i * 3;\n        getPointsOnBezierCurveWithSplitting(points, offset, tolerance, newPoints);\n    }\n    if (distance && distance > 0) {\n        return simplifyPoints(newPoints, 0, newPoints.length, distance);\n    }\n    return newPoints;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6680 characters]\n//# sourceURL=webpack-internal:///../../../node_modules/points-on-path/node_modules/points-on-curve/lib/index.js\n');
              }
            ),
            /***/
            "../../../node_modules/react-remove-scroll-bar/dist/es2015/component.js": (
              /*!******************************************************************************!*\
                !*** ../../../node_modules/react-remove-scroll-bar/dist/es2015/component.js ***!
                \******************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "RemoveScrollBar": () => (/* binding */ RemoveScrollBar)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var react_style_singleton__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-style-singleton */ "../../../node_modules/react-style-singleton/dist/es2015/index.js");
/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./constants */ "../../../node_modules/react-remove-scroll-bar/dist/es2015/constants.js");
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils */ "../../../node_modules/react-remove-scroll-bar/dist/es2015/utils.js");




var Style = (0,react_style_singleton__WEBPACK_IMPORTED_MODULE_1__.styleSingleton)();
// important tip - once we measure scrollBar width and remove them
// we could not repeat this operation
// thus we are using style-singleton - only the first "yet correct" style will be applied.
var getStyles = function (_a, allowRelative, gapMode, important) {
    var left = _a.left, top = _a.top, right = _a.right, gap = _a.gap;
    if (gapMode === void 0) { gapMode = 'margin'; }
    return "\\n  .".concat(_constants__WEBPACK_IMPORTED_MODULE_2__.noScrollbarsClassName, " {\\n   overflow: hidden ").concat(important, ";\\n   padding-right: ").concat(gap, "px ").concat(important, ";\\n  }\\n  body {\\n    overflow: hidden ").concat(important, ";\\n    overscroll-behavior: contain;\\n    ").concat([
        allowRelative && "position: relative ".concat(important, ";"),
        gapMode === 'margin' &&
            "\\n    padding-left: ".concat(left, "px;\\n    padding-top: ").concat(top, "px;\\n    padding-right: ").concat(right, "px;\\n    margin-left:0;\\n    margin-top:0;\\n    margin-right: ").concat(gap, "px ").concat(important, ";\\n    "),
        gapMode === 'padding' && "padding-right: ".concat(gap, "px ").concat(important, ";"),
    ]
        .filter(Boolean)
        .join(''), "\\n  }\\n  \\n  .").concat(_constants__WEBPACK_IMPORTED_MODULE_2__.zeroRightClassName, " {\\n    right: ").concat(gap, "px ").concat(important, ";\\n  }\\n  \\n  .").concat(_constants__WEBPACK_IMPORTED_MODULE_2__.fullWidthClassName, " {\\n    margin-right: ").concat(gap, "px ").concat(important, ";\\n  }\\n  \\n  .").concat(_constants__WEBPACK_IMPORTED_MODULE_2__.zeroRightClassName, " .").concat(_constants__WEBPACK_IMPORTED_MODULE_2__.zeroRightClassName, " {\\n    right: 0 ").concat(important, ";\\n  }\\n  \\n  .").concat(_constants__WEBPACK_IMPORTED_MODULE_2__.fullWidthClassName, " .").concat(_constants__WEBPACK_IMPORTED_MODULE_2__.fullWidthClassName, " {\\n    margin-right: 0 ").concat(important, ";\\n  }\\n  \\n  body {\\n    ").concat(_constants__WEBPACK_IMPORTED_MODULE_2__.removedBarSizeVariable, ": ").concat(gap, "px;\\n  }\\n");
};
/**
 * Removes page scrollbar and blocks page scroll when mounted
 */
var RemoveScrollBar = function (props) {
    var noRelative = props.noRelative, noImportant = props.noImportant, _a = props.gapMode, gapMode = _a === void 0 ? 'margin' : _a;
    /*
     gap will be measured on every component mount
     however it will be used only by the "first" invocation
     due to singleton nature of <Style
     */
    var gap = react__WEBPACK_IMPORTED_MODULE_0__.useMemo(function () { return (0,_utils__WEBPACK_IMPORTED_MODULE_3__.getGapWidth)(gapMode); }, [gapMode]);
    return react__WEBPACK_IMPORTED_MODULE_0__.createElement(Style, { styles: getStyles(gap, !noRelative, gapMode, !noImportant ? '!important' : '') });
};
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4748 characters]
//# sourceURL=webpack-internal:///../../../node_modules/react-remove-scroll-bar/dist/es2015/component.js
`);
              }
            ),
            /***/
            "../../../node_modules/react-remove-scroll-bar/dist/es2015/constants.js": (
              /*!******************************************************************************!*\
                !*** ../../../node_modules/react-remove-scroll-bar/dist/es2015/constants.js ***!
                \******************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "fullWidthClassName": () => (/* binding */ fullWidthClassName),
/* harmony export */   "noScrollbarsClassName": () => (/* binding */ noScrollbarsClassName),
/* harmony export */   "removedBarSizeVariable": () => (/* binding */ removedBarSizeVariable),
/* harmony export */   "zeroRightClassName": () => (/* binding */ zeroRightClassName)
/* harmony export */ });
var zeroRightClassName = 'right-scroll-bar-position';
var fullWidthClassName = 'width-before-scroll-bar';
var noScrollbarsClassName = 'with-scroll-bars-hidden';
/**
 * Name of a CSS variable containing the amount of "hidden" scrollbar
 * ! might be undefined ! use will fallback!
 */
var removedBarSizeVariable = '--removed-body-scroll-bar-size';
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlbW92ZS1zY3JvbGwtYmFyL2Rpc3QvZXMyMDE1L2NvbnN0YW50cy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQU87QUFDQTtBQUNBO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDTyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVtb3ZlLXNjcm9sbC1iYXIvZGlzdC9lczIwMTUvY29uc3RhbnRzLmpzPzczZjMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHZhciB6ZXJvUmlnaHRDbGFzc05hbWUgPSAncmlnaHQtc2Nyb2xsLWJhci1wb3NpdGlvbic7XG5leHBvcnQgdmFyIGZ1bGxXaWR0aENsYXNzTmFtZSA9ICd3aWR0aC1iZWZvcmUtc2Nyb2xsLWJhcic7XG5leHBvcnQgdmFyIG5vU2Nyb2xsYmFyc0NsYXNzTmFtZSA9ICd3aXRoLXNjcm9sbC1iYXJzLWhpZGRlbic7XG4vKipcbiAqIE5hbWUgb2YgYSBDU1MgdmFyaWFibGUgY29udGFpbmluZyB0aGUgYW1vdW50IG9mIFwiaGlkZGVuXCIgc2Nyb2xsYmFyXG4gKiAhIG1pZ2h0IGJlIHVuZGVmaW5lZCAhIHVzZSB3aWxsIGZhbGxiYWNrIVxuICovXG5leHBvcnQgdmFyIHJlbW92ZWRCYXJTaXplVmFyaWFibGUgPSAnLS1yZW1vdmVkLWJvZHktc2Nyb2xsLWJhci1zaXplJztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==
//# sourceURL=webpack-internal:///../../../node_modules/react-remove-scroll-bar/dist/es2015/constants.js
`);
              }
            ),
            /***/
            "../../../node_modules/react-remove-scroll-bar/dist/es2015/index.js": (
              /*!**************************************************************************!*\
                !*** ../../../node_modules/react-remove-scroll-bar/dist/es2015/index.js ***!
                \**************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "RemoveScrollBar": () => (/* reexport safe */ _component__WEBPACK_IMPORTED_MODULE_0__.RemoveScrollBar),\n/* harmony export */   "fullWidthClassName": () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_1__.fullWidthClassName),\n/* harmony export */   "getGapWidth": () => (/* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_2__.getGapWidth),\n/* harmony export */   "noScrollbarsClassName": () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_1__.noScrollbarsClassName),\n/* harmony export */   "removedBarSizeVariable": () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_1__.removedBarSizeVariable),\n/* harmony export */   "zeroRightClassName": () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_1__.zeroRightClassName)\n/* harmony export */ });\n/* harmony import */ var _component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./component */ "../../../node_modules/react-remove-scroll-bar/dist/es2015/component.js");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constants */ "../../../node_modules/react-remove-scroll-bar/dist/es2015/constants.js");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils */ "../../../node_modules/react-remove-scroll-bar/dist/es2015/utils.js");\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlbW92ZS1zY3JvbGwtYmFyL2Rpc3QvZXMyMDE1L2luZGV4LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUE4QztBQUNzRTtBQUM5RTtBQUMwRiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVtb3ZlLXNjcm9sbC1iYXIvZGlzdC9lczIwMTUvaW5kZXguanM/ZGU3YiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZW1vdmVTY3JvbGxCYXIgfSBmcm9tICcuL2NvbXBvbmVudCc7XG5pbXBvcnQgeyB6ZXJvUmlnaHRDbGFzc05hbWUsIGZ1bGxXaWR0aENsYXNzTmFtZSwgbm9TY3JvbGxiYXJzQ2xhc3NOYW1lLCByZW1vdmVkQmFyU2l6ZVZhcmlhYmxlIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZ2V0R2FwV2lkdGggfSBmcm9tICcuL3V0aWxzJztcbmV4cG9ydCB7IFJlbW92ZVNjcm9sbEJhciwgemVyb1JpZ2h0Q2xhc3NOYW1lLCBmdWxsV2lkdGhDbGFzc05hbWUsIG5vU2Nyb2xsYmFyc0NsYXNzTmFtZSwgcmVtb3ZlZEJhclNpemVWYXJpYWJsZSwgZ2V0R2FwV2lkdGgsIH07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/react-remove-scroll-bar/dist/es2015/index.js\n');
              }
            ),
            /***/
            "../../../node_modules/react-remove-scroll-bar/dist/es2015/utils.js": (
              /*!**************************************************************************!*\
                !*** ../../../node_modules/react-remove-scroll-bar/dist/es2015/utils.js ***!
                \**************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "getGapWidth": () => (/* binding */ getGapWidth),
/* harmony export */   "zeroGap": () => (/* binding */ zeroGap)
/* harmony export */ });
var zeroGap = {
    left: 0,
    top: 0,
    right: 0,
    gap: 0,
};
var parse = function (x) { return parseInt(x || '', 10) || 0; };
var getOffset = function (gapMode) {
    var cs = window.getComputedStyle(document.body);
    var left = cs[gapMode === 'padding' ? 'paddingLeft' : 'marginLeft'];
    var top = cs[gapMode === 'padding' ? 'paddingTop' : 'marginTop'];
    var right = cs[gapMode === 'padding' ? 'paddingRight' : 'marginRight'];
    return [parse(left), parse(top), parse(right)];
};
var getGapWidth = function (gapMode) {
    if (gapMode === void 0) { gapMode = 'margin'; }
    if (typeof window === 'undefined') {
        return zeroGap;
    }
    var offsets = getOffset(gapMode);
    var documentWidth = document.documentElement.clientWidth;
    var windowWidth = window.innerWidth;
    return {
        left: offsets[0],
        top: offsets[1],
        right: offsets[2],
        gap: Math.max(0, windowWidth - documentWidth + offsets[2] - offsets[0]),
    };
};
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlbW92ZS1zY3JvbGwtYmFyL2Rpc3QvZXMyMDE1L3V0aWxzLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUCw4QkFBOEI7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlbW92ZS1zY3JvbGwtYmFyL2Rpc3QvZXMyMDE1L3V0aWxzLmpzPzUwYjUiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHZhciB6ZXJvR2FwID0ge1xuICAgIGxlZnQ6IDAsXG4gICAgdG9wOiAwLFxuICAgIHJpZ2h0OiAwLFxuICAgIGdhcDogMCxcbn07XG52YXIgcGFyc2UgPSBmdW5jdGlvbiAoeCkgeyByZXR1cm4gcGFyc2VJbnQoeCB8fCAnJywgMTApIHx8IDA7IH07XG52YXIgZ2V0T2Zmc2V0ID0gZnVuY3Rpb24gKGdhcE1vZGUpIHtcbiAgICB2YXIgY3MgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5ib2R5KTtcbiAgICB2YXIgbGVmdCA9IGNzW2dhcE1vZGUgPT09ICdwYWRkaW5nJyA/ICdwYWRkaW5nTGVmdCcgOiAnbWFyZ2luTGVmdCddO1xuICAgIHZhciB0b3AgPSBjc1tnYXBNb2RlID09PSAncGFkZGluZycgPyAncGFkZGluZ1RvcCcgOiAnbWFyZ2luVG9wJ107XG4gICAgdmFyIHJpZ2h0ID0gY3NbZ2FwTW9kZSA9PT0gJ3BhZGRpbmcnID8gJ3BhZGRpbmdSaWdodCcgOiAnbWFyZ2luUmlnaHQnXTtcbiAgICByZXR1cm4gW3BhcnNlKGxlZnQpLCBwYXJzZSh0b3ApLCBwYXJzZShyaWdodCldO1xufTtcbmV4cG9ydCB2YXIgZ2V0R2FwV2lkdGggPSBmdW5jdGlvbiAoZ2FwTW9kZSkge1xuICAgIGlmIChnYXBNb2RlID09PSB2b2lkIDApIHsgZ2FwTW9kZSA9ICdtYXJnaW4nOyB9XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHJldHVybiB6ZXJvR2FwO1xuICAgIH1cbiAgICB2YXIgb2Zmc2V0cyA9IGdldE9mZnNldChnYXBNb2RlKTtcbiAgICB2YXIgZG9jdW1lbnRXaWR0aCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aDtcbiAgICB2YXIgd2luZG93V2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgICByZXR1cm4ge1xuICAgICAgICBsZWZ0OiBvZmZzZXRzWzBdLFxuICAgICAgICB0b3A6IG9mZnNldHNbMV0sXG4gICAgICAgIHJpZ2h0OiBvZmZzZXRzWzJdLFxuICAgICAgICBnYXA6IE1hdGgubWF4KDAsIHdpbmRvd1dpZHRoIC0gZG9jdW1lbnRXaWR0aCArIG9mZnNldHNbMl0gLSBvZmZzZXRzWzBdKSxcbiAgICB9O1xufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==
//# sourceURL=webpack-internal:///../../../node_modules/react-remove-scroll-bar/dist/es2015/utils.js
`);
              }
            ),
            /***/
            "../../../node_modules/react-remove-scroll/dist/es2015/Combination.js": (
              /*!****************************************************************************!*\
                !*** ../../../node_modules/react-remove-scroll/dist/es2015/Combination.js ***!
                \****************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! tslib */ "../../../node_modules/tslib/tslib.es6.js");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _UI__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./UI */ "../../../node_modules/react-remove-scroll/dist/es2015/UI.js");\n/* harmony import */ var _sidecar__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./sidecar */ "../../../node_modules/react-remove-scroll/dist/es2015/sidecar.js");\n\n\n\n\nvar ReactRemoveScroll = react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(function (props, ref) { return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(_UI__WEBPACK_IMPORTED_MODULE_2__.RemoveScroll, (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)({}, props, { ref: ref, sideCar: _sidecar__WEBPACK_IMPORTED_MODULE_1__["default"] }))); });\nReactRemoveScroll.classNames = _UI__WEBPACK_IMPORTED_MODULE_2__.RemoveScroll.classNames;\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ReactRemoveScroll);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlbW92ZS1zY3JvbGwvZGlzdC9lczIwMTUvQ29tYmluYXRpb24uanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQWlDO0FBQ0Y7QUFDSztBQUNKO0FBQ2hDLHdCQUF3Qiw2Q0FBZ0IseUJBQXlCLFFBQVEsZ0RBQW1CLENBQUMsNkNBQVksRUFBRSwrQ0FBUSxHQUFHLFdBQVcsbUJBQW1CLGdEQUFPLEVBQUUsTUFBTTtBQUNuSywrQkFBK0Isd0RBQXVCO0FBQ3RELGlFQUFlLGlCQUFpQixFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1yZW1vdmUtc2Nyb2xsL2Rpc3QvZXMyMDE1L0NvbWJpbmF0aW9uLmpzP2ZmYmYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFJlbW92ZVNjcm9sbCB9IGZyb20gJy4vVUknO1xuaW1wb3J0IFNpZGVDYXIgZnJvbSAnLi9zaWRlY2FyJztcbnZhciBSZWFjdFJlbW92ZVNjcm9sbCA9IFJlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gKHByb3BzLCByZWYpIHsgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFJlbW92ZVNjcm9sbCwgX19hc3NpZ24oe30sIHByb3BzLCB7IHJlZjogcmVmLCBzaWRlQ2FyOiBTaWRlQ2FyIH0pKSk7IH0pO1xuUmVhY3RSZW1vdmVTY3JvbGwuY2xhc3NOYW1lcyA9IFJlbW92ZVNjcm9sbC5jbGFzc05hbWVzO1xuZXhwb3J0IGRlZmF1bHQgUmVhY3RSZW1vdmVTY3JvbGw7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/react-remove-scroll/dist/es2015/Combination.js\n');
              }
            ),
            /***/
            "../../../node_modules/react-remove-scroll/dist/es2015/SideEffect.js": (
              /*!***************************************************************************!*\
                !*** ../../../node_modules/react-remove-scroll/dist/es2015/SideEffect.js ***!
                \***************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "RemoveScrollSideCar": () => (/* binding */ RemoveScrollSideCar),
/* harmony export */   "getDeltaXY": () => (/* binding */ getDeltaXY),
/* harmony export */   "getTouchXY": () => (/* binding */ getTouchXY)
/* harmony export */ });
/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! tslib */ "../../../node_modules/tslib/tslib.es6.js");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var react_remove_scroll_bar__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-remove-scroll-bar */ "../../../node_modules/react-remove-scroll-bar/dist/es2015/index.js");
/* harmony import */ var react_style_singleton__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-style-singleton */ "../../../node_modules/react-style-singleton/dist/es2015/index.js");
/* harmony import */ var _aggresiveCapture__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./aggresiveCapture */ "../../../node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js");
/* harmony import */ var _handleScroll__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./handleScroll */ "../../../node_modules/react-remove-scroll/dist/es2015/handleScroll.js");






var getTouchXY = function (event) {
    return 'changedTouches' in event ? [event.changedTouches[0].clientX, event.changedTouches[0].clientY] : [0, 0];
};
var getDeltaXY = function (event) { return [event.deltaX, event.deltaY]; };
var extractRef = function (ref) {
    return ref && 'current' in ref ? ref.current : ref;
};
var deltaCompare = function (x, y) { return x[0] === y[0] && x[1] === y[1]; };
var generateStyle = function (id) { return "\\n  .block-interactivity-".concat(id, " {pointer-events: none;}\\n  .allow-interactivity-").concat(id, " {pointer-events: all;}\\n"); };
var idCounter = 0;
var lockStack = [];
function RemoveScrollSideCar(props) {
    var shouldPreventQueue = react__WEBPACK_IMPORTED_MODULE_0__.useRef([]);
    var touchStartRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef([0, 0]);
    var activeAxis = react__WEBPACK_IMPORTED_MODULE_0__.useRef();
    var id = react__WEBPACK_IMPORTED_MODULE_0__.useState(idCounter++)[0];
    var Style = react__WEBPACK_IMPORTED_MODULE_0__.useState(function () { return (0,react_style_singleton__WEBPACK_IMPORTED_MODULE_2__.styleSingleton)(); })[0];
    var lastProps = react__WEBPACK_IMPORTED_MODULE_0__.useRef(props);
    react__WEBPACK_IMPORTED_MODULE_0__.useEffect(function () {
        lastProps.current = props;
    }, [props]);
    react__WEBPACK_IMPORTED_MODULE_0__.useEffect(function () {
        if (props.inert) {
            document.body.classList.add("block-interactivity-".concat(id));
            var allow_1 = (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__spreadArray)([props.lockRef.current], (props.shards || []).map(extractRef), true).filter(Boolean);
            allow_1.forEach(function (el) { return el.classList.add("allow-interactivity-".concat(id)); });
            return function () {
                document.body.classList.remove("block-interactivity-".concat(id));
                allow_1.forEach(function (el) { return el.classList.remove("allow-interactivity-".concat(id)); });
            };
        }
        return;
    }, [props.inert, props.lockRef.current, props.shards]);
    var shouldCancelEvent = react__WEBPACK_IMPORTED_MODULE_0__.useCallback(function (event, parent) {
        if ('touches' in event && event.touches.length === 2) {
            return !lastProps.current.allowPinchZoom;
        }
        var touch = getTouchXY(event);
        var touchStart = touchStartRef.current;
        var deltaX = 'deltaX' in event ? event.deltaX : touchStart[0] - touch[0];
        var deltaY = 'deltaY' in event ? event.deltaY : touchStart[1] - touch[1];
        var currentAxis;
        var target = event.target;
        var moveDirection = Math.abs(deltaX) > Math.abs(deltaY) ? 'h' : 'v';
        // allow horizontal touch move on Range inputs. They will not cause any scroll
        if ('touches' in event && moveDirection === 'h' && target.type === 'range') {
            return false;
        }
        var canBeScrolledInMainDirection = (0,_handleScroll__WEBPACK_IMPORTED_MODULE_4__.locationCouldBeScrolled)(moveDirection, target);
        if (!canBeScrolledInMainDirection) {
            return true;
        }
        if (canBeScrolledInMainDirection) {
            currentAxis = moveDirection;
        }
        else {
            currentAxis = moveDirection === 'v' ? 'h' : 'v';
            canBeScrolledInMainDirection = (0,_handleScroll__WEBPACK_IMPORTED_MODULE_4__.locationCouldBeScrolled)(moveDirection, target);
            // other axis might be not scrollable
        }
        if (!canBeScrolledInMainDirection) {
            return false;
        }
        if (!activeAxis.current && 'changedTouches' in event && (deltaX || deltaY)) {
            activeAxis.current = currentAxis;
        }
        if (!currentAxis) {
            return true;
        }
        var cancelingAxis = activeAxis.current || currentAxis;
        return (0,_handleScroll__WEBPACK_IMPORTED_MODULE_4__.handleScroll)(cancelingAxis, parent, event, cancelingAxis === 'h' ? deltaX : deltaY, true);
    }, []);
    var shouldPrevent = react__WEBPACK_IMPORTED_MODULE_0__.useCallback(function (_event) {
        var event = _event;
        if (!lockStack.length || lockStack[lockStack.length - 1] !== Style) {
            // not the last active
            return;
        }
        var delta = 'deltaY' in event ? getDeltaXY(event) : getTouchXY(event);
        var sourceEvent = shouldPreventQueue.current.filter(function (e) { return e.name === event.type && e.target === event.target && deltaCompare(e.delta, delta); })[0];
        // self event, and should be canceled
        if (sourceEvent && sourceEvent.should) {
            if (event.cancelable) {
                event.preventDefault();
            }
            return;
        }
        // outside or shard event
        if (!sourceEvent) {
            var shardNodes = (lastProps.current.shards || [])
                .map(extractRef)
                .filter(Boolean)
                .filter(function (node) { return node.contains(event.target); });
            var shouldStop = shardNodes.length > 0 ? shouldCancelEvent(event, shardNodes[0]) : !lastProps.current.noIsolation;
            if (shouldStop) {
                if (event.cancelable) {
                    event.preventDefault();
                }
            }
        }
    }, []);
    var shouldCancel = react__WEBPACK_IMPORTED_MODULE_0__.useCallback(function (name, delta, target, should) {
        var event = { name: name, delta: delta, target: target, should: should };
        shouldPreventQueue.current.push(event);
        setTimeout(function () {
            shouldPreventQueue.current = shouldPreventQueue.current.filter(function (e) { return e !== event; });
        }, 1);
    }, []);
    var scrollTouchStart = react__WEBPACK_IMPORTED_MODULE_0__.useCallback(function (event) {
        touchStartRef.current = getTouchXY(event);
        activeAxis.current = undefined;
    }, []);
    var scrollWheel = react__WEBPACK_IMPORTED_MODULE_0__.useCallback(function (event) {
        shouldCancel(event.type, getDeltaXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));
    }, []);
    var scrollTouchMove = react__WEBPACK_IMPORTED_MODULE_0__.useCallback(function (event) {
        shouldCancel(event.type, getTouchXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));
    }, []);
    react__WEBPACK_IMPORTED_MODULE_0__.useEffect(function () {
        lockStack.push(Style);
        props.setCallbacks({
            onScrollCapture: scrollWheel,
            onWheelCapture: scrollWheel,
            onTouchMoveCapture: scrollTouchMove,
        });
        document.addEventListener('wheel', shouldPrevent, _aggresiveCapture__WEBPACK_IMPORTED_MODULE_5__.nonPassive);
        document.addEventListener('touchmove', shouldPrevent, _aggresiveCapture__WEBPACK_IMPORTED_MODULE_5__.nonPassive);
        document.addEventListener('touchstart', scrollTouchStart, _aggresiveCapture__WEBPACK_IMPORTED_MODULE_5__.nonPassive);
        return function () {
            lockStack = lockStack.filter(function (inst) { return inst !== Style; });
            document.removeEventListener('wheel', shouldPrevent, _aggresiveCapture__WEBPACK_IMPORTED_MODULE_5__.nonPassive);
            document.removeEventListener('touchmove', shouldPrevent, _aggresiveCapture__WEBPACK_IMPORTED_MODULE_5__.nonPassive);
            document.removeEventListener('touchstart', scrollTouchStart, _aggresiveCapture__WEBPACK_IMPORTED_MODULE_5__.nonPassive);
        };
    }, []);
    var removeScrollBar = props.removeScrollBar, inert = props.inert;
    return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, null,
        inert ? react__WEBPACK_IMPORTED_MODULE_0__.createElement(Style, { styles: generateStyle(id) }) : null,
        removeScrollBar ? react__WEBPACK_IMPORTED_MODULE_0__.createElement(react_remove_scroll_bar__WEBPACK_IMPORTED_MODULE_1__.RemoveScrollBar, { gapMode: "margin" }) : null));
}
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 12008 characters]
//# sourceURL=webpack-internal:///../../../node_modules/react-remove-scroll/dist/es2015/SideEffect.js
`);
              }
            ),
            /***/
            "../../../node_modules/react-remove-scroll/dist/es2015/UI.js": (
              /*!*******************************************************************!*\
                !*** ../../../node_modules/react-remove-scroll/dist/es2015/UI.js ***!
                \*******************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "RemoveScroll": () => (/* binding */ RemoveScroll)
/* harmony export */ });
/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! tslib */ "../../../node_modules/tslib/tslib.es6.js");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var react_remove_scroll_bar_constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-remove-scroll-bar/constants */ "../../../node_modules/react-remove-scroll-bar/dist/es2015/constants.js");
/* harmony import */ var use_callback_ref__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! use-callback-ref */ "../../../node_modules/use-callback-ref/dist/es2015/useMergeRef.js");
/* harmony import */ var _medium__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./medium */ "../../../node_modules/react-remove-scroll/dist/es2015/medium.js");





var nothing = function () {
    return;
};
/**
 * Removes scrollbar from the page and contain the scroll within the Lock
 */
var RemoveScroll = react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(function (props, parentRef) {
    var ref = react__WEBPACK_IMPORTED_MODULE_0__.useRef(null);
    var _a = react__WEBPACK_IMPORTED_MODULE_0__.useState({
        onScrollCapture: nothing,
        onWheelCapture: nothing,
        onTouchMoveCapture: nothing,
    }), callbacks = _a[0], setCallbacks = _a[1];
    var forwardProps = props.forwardProps, children = props.children, className = props.className, removeScrollBar = props.removeScrollBar, enabled = props.enabled, shards = props.shards, sideCar = props.sideCar, noIsolation = props.noIsolation, inert = props.inert, allowPinchZoom = props.allowPinchZoom, _b = props.as, Container = _b === void 0 ? 'div' : _b, rest = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__rest)(props, ["forwardProps", "children", "className", "removeScrollBar", "enabled", "shards", "sideCar", "noIsolation", "inert", "allowPinchZoom", "as"]);
    var SideCar = sideCar;
    var containerRef = (0,use_callback_ref__WEBPACK_IMPORTED_MODULE_3__.useMergeRefs)([ref, parentRef]);
    var containerProps = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, rest), callbacks);
    return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, null,
        enabled && (react__WEBPACK_IMPORTED_MODULE_0__.createElement(SideCar, { sideCar: _medium__WEBPACK_IMPORTED_MODULE_4__.effectCar, removeScrollBar: removeScrollBar, shards: shards, noIsolation: noIsolation, inert: inert, setCallbacks: setCallbacks, allowPinchZoom: !!allowPinchZoom, lockRef: ref })),
        forwardProps ? (react__WEBPACK_IMPORTED_MODULE_0__.cloneElement(react__WEBPACK_IMPORTED_MODULE_0__.Children.only(children), (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, containerProps), { ref: containerRef }))) : (react__WEBPACK_IMPORTED_MODULE_0__.createElement(Container, (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, containerProps, { className: className, ref: containerRef }), children))));
});
RemoveScroll.defaultProps = {
    enabled: true,
    removeScrollBar: true,
    inert: false,
};
RemoveScroll.classNames = {
    fullWidth: react_remove_scroll_bar_constants__WEBPACK_IMPORTED_MODULE_1__.fullWidthClassName,
    zeroRight: react_remove_scroll_bar_constants__WEBPACK_IMPORTED_MODULE_1__.zeroRightClassName,
};

//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlbW92ZS1zY3JvbGwvZGlzdC9lczIwMTUvVUkuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUF5QztBQUNWO0FBQzREO0FBQzNDO0FBQ1g7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLDZDQUFnQjtBQUNuQyxjQUFjLHlDQUFZO0FBQzFCLGFBQWEsMkNBQWM7QUFDM0I7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLGdYQUFnWCw2Q0FBTTtBQUN0WDtBQUNBLHVCQUF1Qiw4REFBWTtBQUNuQyx5QkFBeUIsK0NBQVEsQ0FBQywrQ0FBUSxHQUFHO0FBQzdDLFlBQVksZ0RBQW1CLENBQUMsMkNBQWM7QUFDOUMsb0JBQW9CLGdEQUFtQixZQUFZLFNBQVMsOENBQVMsd0tBQXdLO0FBQzdPLHdCQUF3QiwrQ0FBa0IsQ0FBQyxnREFBbUIsWUFBWSwrQ0FBUSxDQUFDLCtDQUFRLEdBQUcscUJBQXFCLG1CQUFtQixPQUFPLGdEQUFtQixZQUFZLCtDQUFRLEdBQUcsb0JBQW9CLHlDQUF5QztBQUNwUCxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxpRkFBa0I7QUFDakMsZUFBZSxpRkFBa0I7QUFDakM7QUFDd0IiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlbW92ZS1zY3JvbGwvZGlzdC9lczIwMTUvVUkuanM/MTlmNCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiwgX19yZXN0IH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBmdWxsV2lkdGhDbGFzc05hbWUsIHplcm9SaWdodENsYXNzTmFtZSB9IGZyb20gJ3JlYWN0LXJlbW92ZS1zY3JvbGwtYmFyL2NvbnN0YW50cyc7XG5pbXBvcnQgeyB1c2VNZXJnZVJlZnMgfSBmcm9tICd1c2UtY2FsbGJhY2stcmVmJztcbmltcG9ydCB7IGVmZmVjdENhciB9IGZyb20gJy4vbWVkaXVtJztcbnZhciBub3RoaW5nID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybjtcbn07XG4vKipcbiAqIFJlbW92ZXMgc2Nyb2xsYmFyIGZyb20gdGhlIHBhZ2UgYW5kIGNvbnRhaW4gdGhlIHNjcm9sbCB3aXRoaW4gdGhlIExvY2tcbiAqL1xudmFyIFJlbW92ZVNjcm9sbCA9IFJlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gKHByb3BzLCBwYXJlbnRSZWYpIHtcbiAgICB2YXIgcmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIHZhciBfYSA9IFJlYWN0LnVzZVN0YXRlKHtcbiAgICAgICAgb25TY3JvbGxDYXB0dXJlOiBub3RoaW5nLFxuICAgICAgICBvbldoZWVsQ2FwdHVyZTogbm90aGluZyxcbiAgICAgICAgb25Ub3VjaE1vdmVDYXB0dXJlOiBub3RoaW5nLFxuICAgIH0pLCBjYWxsYmFja3MgPSBfYVswXSwgc2V0Q2FsbGJhY2tzID0gX2FbMV07XG4gICAgdmFyIGZvcndhcmRQcm9wcyA9IHByb3BzLmZvcndhcmRQcm9wcywgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbiwgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLCByZW1vdmVTY3JvbGxCYXIgPSBwcm9wcy5yZW1vdmVTY3JvbGxCYXIsIGVuYWJsZWQgPSBwcm9wcy5lbmFibGVkLCBzaGFyZHMgPSBwcm9wcy5zaGFyZHMsIHNpZGVDYXIgPSBwcm9wcy5zaWRlQ2FyLCBub0lzb2xhdGlvbiA9IHByb3BzLm5vSXNvbGF0aW9uLCBpbmVydCA9IHByb3BzLmluZXJ0LCBhbGxvd1BpbmNoWm9vbSA9IHByb3BzLmFsbG93UGluY2hab29tLCBfYiA9IHByb3BzLmFzLCBDb250YWluZXIgPSBfYiA9PT0gdm9pZCAwID8gJ2RpdicgOiBfYiwgcmVzdCA9IF9fcmVzdChwcm9wcywgW1wiZm9yd2FyZFByb3BzXCIsIFwiY2hpbGRyZW5cIiwgXCJjbGFzc05hbWVcIiwgXCJyZW1vdmVTY3JvbGxCYXJcIiwgXCJlbmFibGVkXCIsIFwic2hhcmRzXCIsIFwic2lkZUNhclwiLCBcIm5vSXNvbGF0aW9uXCIsIFwiaW5lcnRcIiwgXCJhbGxvd1BpbmNoWm9vbVwiLCBcImFzXCJdKTtcbiAgICB2YXIgU2lkZUNhciA9IHNpZGVDYXI7XG4gICAgdmFyIGNvbnRhaW5lclJlZiA9IHVzZU1lcmdlUmVmcyhbcmVmLCBwYXJlbnRSZWZdKTtcbiAgICB2YXIgY29udGFpbmVyUHJvcHMgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgcmVzdCksIGNhbGxiYWNrcyk7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxuICAgICAgICBlbmFibGVkICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFNpZGVDYXIsIHsgc2lkZUNhcjogZWZmZWN0Q2FyLCByZW1vdmVTY3JvbGxCYXI6IHJlbW92ZVNjcm9sbEJhciwgc2hhcmRzOiBzaGFyZHMsIG5vSXNvbGF0aW9uOiBub0lzb2xhdGlvbiwgaW5lcnQ6IGluZXJ0LCBzZXRDYWxsYmFja3M6IHNldENhbGxiYWNrcywgYWxsb3dQaW5jaFpvb206ICEhYWxsb3dQaW5jaFpvb20sIGxvY2tSZWY6IHJlZiB9KSksXG4gICAgICAgIGZvcndhcmRQcm9wcyA/IChSZWFjdC5jbG9uZUVsZW1lbnQoUmVhY3QuQ2hpbGRyZW4ub25seShjaGlsZHJlbiksIF9fYXNzaWduKF9fYXNzaWduKHt9LCBjb250YWluZXJQcm9wcyksIHsgcmVmOiBjb250YWluZXJSZWYgfSkpKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KENvbnRhaW5lciwgX19hc3NpZ24oe30sIGNvbnRhaW5lclByb3BzLCB7IGNsYXNzTmFtZTogY2xhc3NOYW1lLCByZWY6IGNvbnRhaW5lclJlZiB9KSwgY2hpbGRyZW4pKSkpO1xufSk7XG5SZW1vdmVTY3JvbGwuZGVmYXVsdFByb3BzID0ge1xuICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgcmVtb3ZlU2Nyb2xsQmFyOiB0cnVlLFxuICAgIGluZXJ0OiBmYWxzZSxcbn07XG5SZW1vdmVTY3JvbGwuY2xhc3NOYW1lcyA9IHtcbiAgICBmdWxsV2lkdGg6IGZ1bGxXaWR0aENsYXNzTmFtZSxcbiAgICB6ZXJvUmlnaHQ6IHplcm9SaWdodENsYXNzTmFtZSxcbn07XG5leHBvcnQgeyBSZW1vdmVTY3JvbGwgfTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==
//# sourceURL=webpack-internal:///../../../node_modules/react-remove-scroll/dist/es2015/UI.js
`);
              }
            ),
            /***/
            "../../../node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js": (
              /*!*********************************************************************************!*\
                !*** ../../../node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js ***!
                \*********************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "nonPassive": () => (/* binding */ nonPassive)
/* harmony export */ });
var passiveSupported = false;
if (typeof window !== 'undefined') {
    try {
        var options = Object.defineProperty({}, 'passive', {
            get: function () {
                passiveSupported = true;
                return true;
            },
        });
        // @ts-ignore
        window.addEventListener('test', options, options);
        // @ts-ignore
        window.removeEventListener('test', options, options);
    }
    catch (err) {
        passiveSupported = false;
    }
}
var nonPassive = passiveSupported ? { passive: false } : false;
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlbW92ZS1zY3JvbGwvZGlzdC9lczIwMTUvYWdncmVzaXZlQ2FwdHVyZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0EsOENBQThDO0FBQzlDO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sc0NBQXNDLGlCQUFpQiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVtb3ZlLXNjcm9sbC9kaXN0L2VzMjAxNS9hZ2dyZXNpdmVDYXB0dXJlLmpzP2E2ZTkiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHBhc3NpdmVTdXBwb3J0ZWQgPSBmYWxzZTtcbmlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgIHRyeSB7XG4gICAgICAgIHZhciBvcHRpb25zID0gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAncGFzc2l2ZScsIHtcbiAgICAgICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHBhc3NpdmVTdXBwb3J0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Rlc3QnLCBvcHRpb25zLCBvcHRpb25zKTtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigndGVzdCcsIG9wdGlvbnMsIG9wdGlvbnMpO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHBhc3NpdmVTdXBwb3J0ZWQgPSBmYWxzZTtcbiAgICB9XG59XG5leHBvcnQgdmFyIG5vblBhc3NpdmUgPSBwYXNzaXZlU3VwcG9ydGVkID8geyBwYXNzaXZlOiBmYWxzZSB9IDogZmFsc2U7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=
//# sourceURL=webpack-internal:///../../../node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js
`);
              }
            ),
            /***/
            "../../../node_modules/react-remove-scroll/dist/es2015/handleScroll.js": (
              /*!*****************************************************************************!*\
                !*** ../../../node_modules/react-remove-scroll/dist/es2015/handleScroll.js ***!
                \*****************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "handleScroll": () => (/* binding */ handleScroll),
/* harmony export */   "locationCouldBeScrolled": () => (/* binding */ locationCouldBeScrolled)
/* harmony export */ });
var alwaysContainsScroll = function (node) {
    // textarea will always _contain_ scroll inside self. It only can be hidden
    return node.tagName === 'TEXTAREA';
};
var elementCanBeScrolled = function (node, overflow) {
    var styles = window.getComputedStyle(node);
    return (
    // not-not-scrollable
    styles[overflow] !== 'hidden' &&
        // contains scroll inside self
        !(styles.overflowY === styles.overflowX && !alwaysContainsScroll(node) && styles[overflow] === 'visible'));
};
var elementCouldBeVScrolled = function (node) { return elementCanBeScrolled(node, 'overflowY'); };
var elementCouldBeHScrolled = function (node) { return elementCanBeScrolled(node, 'overflowX'); };
var locationCouldBeScrolled = function (axis, node) {
    var current = node;
    do {
        // Skip over shadow root
        if (typeof ShadowRoot !== 'undefined' && current instanceof ShadowRoot) {
            current = current.host;
        }
        var isScrollable = elementCouldBeScrolled(axis, current);
        if (isScrollable) {
            var _a = getScrollVariables(axis, current), s = _a[1], d = _a[2];
            if (s > d) {
                return true;
            }
        }
        current = current.parentNode;
    } while (current && current !== document.body);
    return false;
};
var getVScrollVariables = function (_a) {
    var scrollTop = _a.scrollTop, scrollHeight = _a.scrollHeight, clientHeight = _a.clientHeight;
    return [
        scrollTop,
        scrollHeight,
        clientHeight,
    ];
};
var getHScrollVariables = function (_a) {
    var scrollLeft = _a.scrollLeft, scrollWidth = _a.scrollWidth, clientWidth = _a.clientWidth;
    return [
        scrollLeft,
        scrollWidth,
        clientWidth,
    ];
};
var elementCouldBeScrolled = function (axis, node) {
    return axis === 'v' ? elementCouldBeVScrolled(node) : elementCouldBeHScrolled(node);
};
var getScrollVariables = function (axis, node) {
    return axis === 'v' ? getVScrollVariables(node) : getHScrollVariables(node);
};
var getDirectionFactor = function (axis, direction) {
    /**
     * If the element's direction is rtl (right-to-left), then scrollLeft is 0 when the scrollbar is at its rightmost position,
     * and then increasingly negative as you scroll towards the end of the content.
     * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollLeft
     */
    return axis === 'h' && direction === 'rtl' ? -1 : 1;
};
var handleScroll = function (axis, endTarget, event, sourceDelta, noOverscroll) {
    var directionFactor = getDirectionFactor(axis, window.getComputedStyle(endTarget).direction);
    var delta = directionFactor * sourceDelta;
    // find scrollable target
    var target = event.target;
    var targetInLock = endTarget.contains(target);
    var shouldCancelScroll = false;
    var isDeltaPositive = delta > 0;
    var availableScroll = 0;
    var availableScrollTop = 0;
    do {
        var _a = getScrollVariables(axis, target), position = _a[0], scroll_1 = _a[1], capacity = _a[2];
        var elementScroll = scroll_1 - capacity - directionFactor * position;
        if (position || elementScroll) {
            if (elementCouldBeScrolled(axis, target)) {
                availableScroll += elementScroll;
                availableScrollTop += position;
            }
        }
        target = target.parentNode;
    } while (
    // portaled content
    (!targetInLock && target !== document.body) ||
        // self content
        (targetInLock && (endTarget.contains(target) || endTarget === target)));
    if (isDeltaPositive && ((noOverscroll && availableScroll === 0) || (!noOverscroll && delta > availableScroll))) {
        shouldCancelScroll = true;
    }
    else if (!isDeltaPositive &&
        ((noOverscroll && availableScrollTop === 0) || (!noOverscroll && -delta > availableScrollTop))) {
        shouldCancelScroll = true;
    }
    return shouldCancelScroll;
};
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6436 characters]
//# sourceURL=webpack-internal:///../../../node_modules/react-remove-scroll/dist/es2015/handleScroll.js
`);
              }
            ),
            /***/
            "../../../node_modules/react-remove-scroll/dist/es2015/medium.js": (
              /*!***********************************************************************!*\
                !*** ../../../node_modules/react-remove-scroll/dist/es2015/medium.js ***!
                \***********************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "effectCar": () => (/* binding */ effectCar)\n/* harmony export */ });\n/* harmony import */ var use_sidecar__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! use-sidecar */ "../../../node_modules/use-sidecar/dist/es2015/medium.js");\n\nvar effectCar = (0,use_sidecar__WEBPACK_IMPORTED_MODULE_0__.createSidecarMedium)();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlbW92ZS1zY3JvbGwvZGlzdC9lczIwMTUvbWVkaXVtLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQWtEO0FBQzNDLGdCQUFnQixnRUFBbUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlbW92ZS1zY3JvbGwvZGlzdC9lczIwMTUvbWVkaXVtLmpzPzg4YTMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlU2lkZWNhck1lZGl1bSB9IGZyb20gJ3VzZS1zaWRlY2FyJztcbmV4cG9ydCB2YXIgZWZmZWN0Q2FyID0gY3JlYXRlU2lkZWNhck1lZGl1bSgpO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/react-remove-scroll/dist/es2015/medium.js\n');
              }
            ),
            /***/
            "../../../node_modules/react-remove-scroll/dist/es2015/sidecar.js": (
              /*!************************************************************************!*\
                !*** ../../../node_modules/react-remove-scroll/dist/es2015/sidecar.js ***!
                \************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var use_sidecar__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! use-sidecar */ "../../../node_modules/use-sidecar/dist/es2015/exports.js");\n/* harmony import */ var _SideEffect__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./SideEffect */ "../../../node_modules/react-remove-scroll/dist/es2015/SideEffect.js");\n/* harmony import */ var _medium__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./medium */ "../../../node_modules/react-remove-scroll/dist/es2015/medium.js");\n\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,use_sidecar__WEBPACK_IMPORTED_MODULE_0__.exportSidecar)(_medium__WEBPACK_IMPORTED_MODULE_1__.effectCar, _SideEffect__WEBPACK_IMPORTED_MODULE_2__.RemoveScrollSideCar));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlbW92ZS1zY3JvbGwvZGlzdC9lczIwMTUvc2lkZWNhci5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQTRDO0FBQ087QUFDZDtBQUNyQyxpRUFBZSwwREFBYSxDQUFDLDhDQUFTLEVBQUUsNERBQW1CLENBQUMsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVtb3ZlLXNjcm9sbC9kaXN0L2VzMjAxNS9zaWRlY2FyLmpzPzI2MjIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhwb3J0U2lkZWNhciB9IGZyb20gJ3VzZS1zaWRlY2FyJztcbmltcG9ydCB7IFJlbW92ZVNjcm9sbFNpZGVDYXIgfSBmcm9tICcuL1NpZGVFZmZlY3QnO1xuaW1wb3J0IHsgZWZmZWN0Q2FyIH0gZnJvbSAnLi9tZWRpdW0nO1xuZXhwb3J0IGRlZmF1bHQgZXhwb3J0U2lkZWNhcihlZmZlY3RDYXIsIFJlbW92ZVNjcm9sbFNpZGVDYXIpO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/react-remove-scroll/dist/es2015/sidecar.js\n');
              }
            ),
            /***/
            "../../../node_modules/react-style-singleton/dist/es2015/component.js": (
              /*!****************************************************************************!*\
                !*** ../../../node_modules/react-style-singleton/dist/es2015/component.js ***!
                \****************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "styleSingleton": () => (/* binding */ styleSingleton)\n/* harmony export */ });\n/* harmony import */ var _hook__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hook */ "../../../node_modules/react-style-singleton/dist/es2015/hook.js");\n\n/**\n * create a Component to add styles on demand\n * - styles are added when first instance is mounted\n * - styles are removed when the last instance is unmounted\n * - changing styles in runtime does nothing unless dynamic is set. But with multiple components that can lead to the undefined behavior\n */\nvar styleSingleton = function () {\n    var useStyle = (0,_hook__WEBPACK_IMPORTED_MODULE_0__.styleHookSingleton)();\n    var Sheet = function (_a) {\n        var styles = _a.styles, dynamic = _a.dynamic;\n        useStyle(styles, dynamic);\n        return null;\n    };\n    return Sheet;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXN0eWxlLXNpbmdsZXRvbi9kaXN0L2VzMjAxNS9jb21wb25lbnQuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBNEM7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUCxtQkFBbUIseURBQWtCO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1zdHlsZS1zaW5nbGV0b24vZGlzdC9lczIwMTUvY29tcG9uZW50LmpzP2JiNzAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc3R5bGVIb29rU2luZ2xldG9uIH0gZnJvbSAnLi9ob29rJztcbi8qKlxuICogY3JlYXRlIGEgQ29tcG9uZW50IHRvIGFkZCBzdHlsZXMgb24gZGVtYW5kXG4gKiAtIHN0eWxlcyBhcmUgYWRkZWQgd2hlbiBmaXJzdCBpbnN0YW5jZSBpcyBtb3VudGVkXG4gKiAtIHN0eWxlcyBhcmUgcmVtb3ZlZCB3aGVuIHRoZSBsYXN0IGluc3RhbmNlIGlzIHVubW91bnRlZFxuICogLSBjaGFuZ2luZyBzdHlsZXMgaW4gcnVudGltZSBkb2VzIG5vdGhpbmcgdW5sZXNzIGR5bmFtaWMgaXMgc2V0LiBCdXQgd2l0aCBtdWx0aXBsZSBjb21wb25lbnRzIHRoYXQgY2FuIGxlYWQgdG8gdGhlIHVuZGVmaW5lZCBiZWhhdmlvclxuICovXG5leHBvcnQgdmFyIHN0eWxlU2luZ2xldG9uID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciB1c2VTdHlsZSA9IHN0eWxlSG9va1NpbmdsZXRvbigpO1xuICAgIHZhciBTaGVldCA9IGZ1bmN0aW9uIChfYSkge1xuICAgICAgICB2YXIgc3R5bGVzID0gX2Euc3R5bGVzLCBkeW5hbWljID0gX2EuZHluYW1pYztcbiAgICAgICAgdXNlU3R5bGUoc3R5bGVzLCBkeW5hbWljKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcbiAgICByZXR1cm4gU2hlZXQ7XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/react-style-singleton/dist/es2015/component.js\n');
              }
            ),
            /***/
            "../../../node_modules/react-style-singleton/dist/es2015/hook.js": (
              /*!***********************************************************************!*\
                !*** ../../../node_modules/react-style-singleton/dist/es2015/hook.js ***!
                \***********************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "styleHookSingleton": () => (/* binding */ styleHookSingleton)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _singleton__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./singleton */ "../../../node_modules/react-style-singleton/dist/es2015/singleton.js");\n\n\n/**\n * creates a hook to control style singleton\n * @see {@link styleSingleton} for a safer component version\n * @example\n * ```tsx\n * const useStyle = styleHookSingleton();\n * ///\n * useStyle(\'body { overflow: hidden}\');\n */\nvar styleHookSingleton = function () {\n    var sheet = (0,_singleton__WEBPACK_IMPORTED_MODULE_1__.stylesheetSingleton)();\n    return function (styles, isDynamic) {\n        react__WEBPACK_IMPORTED_MODULE_0__.useEffect(function () {\n            sheet.add(styles);\n            return function () {\n                sheet.remove();\n            };\n        }, [styles && isDynamic]);\n    };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXN0eWxlLXNpbmdsZXRvbi9kaXN0L2VzMjAxNS9ob29rLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBK0I7QUFDbUI7QUFDbEQ7QUFDQTtBQUNBLFNBQVMsc0JBQXNCO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLGlCQUFpQjtBQUNyQztBQUNPO0FBQ1AsZ0JBQWdCLCtEQUFtQjtBQUNuQztBQUNBLFFBQVEsNENBQWU7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3Qtc3R5bGUtc2luZ2xldG9uL2Rpc3QvZXMyMDE1L2hvb2suanM/ZGM1MCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBzdHlsZXNoZWV0U2luZ2xldG9uIH0gZnJvbSAnLi9zaW5nbGV0b24nO1xuLyoqXG4gKiBjcmVhdGVzIGEgaG9vayB0byBjb250cm9sIHN0eWxlIHNpbmdsZXRvblxuICogQHNlZSB7QGxpbmsgc3R5bGVTaW5nbGV0b259IGZvciBhIHNhZmVyIGNvbXBvbmVudCB2ZXJzaW9uXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiBjb25zdCB1c2VTdHlsZSA9IHN0eWxlSG9va1NpbmdsZXRvbigpO1xuICogLy8vXG4gKiB1c2VTdHlsZSgnYm9keSB7IG92ZXJmbG93OiBoaWRkZW59Jyk7XG4gKi9cbmV4cG9ydCB2YXIgc3R5bGVIb29rU2luZ2xldG9uID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzaGVldCA9IHN0eWxlc2hlZXRTaW5nbGV0b24oKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHN0eWxlcywgaXNEeW5hbWljKSB7XG4gICAgICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzaGVldC5hZGQoc3R5bGVzKTtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgc2hlZXQucmVtb3ZlKCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LCBbc3R5bGVzICYmIGlzRHluYW1pY10pO1xuICAgIH07XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/react-style-singleton/dist/es2015/hook.js\n');
              }
            ),
            /***/
            "../../../node_modules/react-style-singleton/dist/es2015/index.js": (
              /*!************************************************************************!*\
                !*** ../../../node_modules/react-style-singleton/dist/es2015/index.js ***!
                \************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "styleHookSingleton": () => (/* reexport safe */ _hook__WEBPACK_IMPORTED_MODULE_2__.styleHookSingleton),\n/* harmony export */   "styleSingleton": () => (/* reexport safe */ _component__WEBPACK_IMPORTED_MODULE_0__.styleSingleton),\n/* harmony export */   "stylesheetSingleton": () => (/* reexport safe */ _singleton__WEBPACK_IMPORTED_MODULE_1__.stylesheetSingleton)\n/* harmony export */ });\n/* harmony import */ var _component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./component */ "../../../node_modules/react-style-singleton/dist/es2015/component.js");\n/* harmony import */ var _singleton__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./singleton */ "../../../node_modules/react-style-singleton/dist/es2015/singleton.js");\n/* harmony import */ var _hook__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./hook */ "../../../node_modules/react-style-singleton/dist/es2015/hook.js");\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXN0eWxlLXNpbmdsZXRvbi9kaXN0L2VzMjAxNS9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBNkM7QUFDSztBQUNOIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1zdHlsZS1zaW5nbGV0b24vZGlzdC9lczIwMTUvaW5kZXguanM/Y2U3YyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBzdHlsZVNpbmdsZXRvbiB9IGZyb20gJy4vY29tcG9uZW50JztcbmV4cG9ydCB7IHN0eWxlc2hlZXRTaW5nbGV0b24gfSBmcm9tICcuL3NpbmdsZXRvbic7XG5leHBvcnQgeyBzdHlsZUhvb2tTaW5nbGV0b24gfSBmcm9tICcuL2hvb2snO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/react-style-singleton/dist/es2015/index.js\n');
              }
            ),
            /***/
            "../../../node_modules/react-style-singleton/dist/es2015/singleton.js": (
              /*!****************************************************************************!*\
                !*** ../../../node_modules/react-style-singleton/dist/es2015/singleton.js ***!
                \****************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "stylesheetSingleton": () => (/* binding */ stylesheetSingleton)
/* harmony export */ });
/* harmony import */ var get_nonce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! get-nonce */ "../../../node_modules/get-nonce/dist/es2015/index.js");

function makeStyleTag() {
    if (!document)
        return null;
    var tag = document.createElement('style');
    tag.type = 'text/css';
    var nonce = (0,get_nonce__WEBPACK_IMPORTED_MODULE_0__.getNonce)();
    if (nonce) {
        tag.setAttribute('nonce', nonce);
    }
    return tag;
}
function injectStyles(tag, css) {
    // @ts-ignore
    if (tag.styleSheet) {
        // @ts-ignore
        tag.styleSheet.cssText = css;
    }
    else {
        tag.appendChild(document.createTextNode(css));
    }
}
function insertStyleTag(tag) {
    var head = document.head || document.getElementsByTagName('head')[0];
    head.appendChild(tag);
}
var stylesheetSingleton = function () {
    var counter = 0;
    var stylesheet = null;
    return {
        add: function (style) {
            if (counter == 0) {
                if ((stylesheet = makeStyleTag())) {
                    injectStyles(stylesheet, style);
                    insertStyleTag(stylesheet);
                }
            }
            counter++;
        },
        remove: function () {
            counter--;
            if (!counter && stylesheet) {
                stylesheet.parentNode && stylesheet.parentNode.removeChild(stylesheet);
                stylesheet = null;
            }
        },
    };
};
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXN0eWxlLXNpbmdsZXRvbi9kaXN0L2VzMjAxNS9zaW5nbGV0b24uanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBcUM7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixtREFBUTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcmVhY3Qtc3R5bGUtc2luZ2xldG9uL2Rpc3QvZXMyMDE1L3NpbmdsZXRvbi5qcz9lYjExIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldE5vbmNlIH0gZnJvbSAnZ2V0LW5vbmNlJztcbmZ1bmN0aW9uIG1ha2VTdHlsZVRhZygpIHtcbiAgICBpZiAoIWRvY3VtZW50KVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB2YXIgdGFnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgICB0YWcudHlwZSA9ICd0ZXh0L2Nzcyc7XG4gICAgdmFyIG5vbmNlID0gZ2V0Tm9uY2UoKTtcbiAgICBpZiAobm9uY2UpIHtcbiAgICAgICAgdGFnLnNldEF0dHJpYnV0ZSgnbm9uY2UnLCBub25jZSk7XG4gICAgfVxuICAgIHJldHVybiB0YWc7XG59XG5mdW5jdGlvbiBpbmplY3RTdHlsZXModGFnLCBjc3MpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaWYgKHRhZy5zdHlsZVNoZWV0KSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgdGFnLnN0eWxlU2hlZXQuY3NzVGV4dCA9IGNzcztcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHRhZy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpKTtcbiAgICB9XG59XG5mdW5jdGlvbiBpbnNlcnRTdHlsZVRhZyh0YWcpIHtcbiAgICB2YXIgaGVhZCA9IGRvY3VtZW50LmhlYWQgfHwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXTtcbiAgICBoZWFkLmFwcGVuZENoaWxkKHRhZyk7XG59XG5leHBvcnQgdmFyIHN0eWxlc2hlZXRTaW5nbGV0b24gPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGNvdW50ZXIgPSAwO1xuICAgIHZhciBzdHlsZXNoZWV0ID0gbnVsbDtcbiAgICByZXR1cm4ge1xuICAgICAgICBhZGQ6IGZ1bmN0aW9uIChzdHlsZSkge1xuICAgICAgICAgICAgaWYgKGNvdW50ZXIgPT0gMCkge1xuICAgICAgICAgICAgICAgIGlmICgoc3R5bGVzaGVldCA9IG1ha2VTdHlsZVRhZygpKSkge1xuICAgICAgICAgICAgICAgICAgICBpbmplY3RTdHlsZXMoc3R5bGVzaGVldCwgc3R5bGUpO1xuICAgICAgICAgICAgICAgICAgICBpbnNlcnRTdHlsZVRhZyhzdHlsZXNoZWV0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb3VudGVyKys7XG4gICAgICAgIH0sXG4gICAgICAgIHJlbW92ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgY291bnRlci0tO1xuICAgICAgICAgICAgaWYgKCFjb3VudGVyICYmIHN0eWxlc2hlZXQpIHtcbiAgICAgICAgICAgICAgICBzdHlsZXNoZWV0LnBhcmVudE5vZGUgJiYgc3R5bGVzaGVldC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHN0eWxlc2hlZXQpO1xuICAgICAgICAgICAgICAgIHN0eWxlc2hlZXQgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH07XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9
//# sourceURL=webpack-internal:///../../../node_modules/react-style-singleton/dist/es2015/singleton.js
`);
              }
            ),
            /***/
            "../../../node_modules/react/cjs/react-jsx-runtime.development.js": (
              /*!************************************************************************!*\
                !*** ../../../node_modules/react/cjs/react-jsx-runtime.development.js ***!
                \************************************************************************/
              /***/
              (__unused_webpack_module, exports, __webpack_require__) => {
                "use strict";
                eval("/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nif (true) {\n  (function() {\n'use strict';\n\nvar React = __webpack_require__(/*! react */ \"react\");\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\nvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nvar REACT_PROVIDER_TYPE = Symbol.for('react.provider');\nvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\nvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\nvar REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');\nvar MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\nfunction getIteratorFn(maybeIterable) {\n  if (maybeIterable === null || typeof maybeIterable !== 'object') {\n    return null;\n  }\n\n  var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n\n  if (typeof maybeIterator === 'function') {\n    return maybeIterator;\n  }\n\n  return null;\n}\n\nvar ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n\nfunction error(format) {\n  {\n    {\n      for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n        args[_key2 - 1] = arguments[_key2];\n      }\n\n      printWarning('error', format, args);\n    }\n  }\n}\n\nfunction printWarning(level, format, args) {\n  // When changing this logic, you might want to also\n  // update consoleWithStackDev.www.js as well.\n  {\n    var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n    var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n    if (stack !== '') {\n      format += '%s';\n      args = args.concat([stack]);\n    } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n    var argsWithFormat = args.map(function (item) {\n      return String(item);\n    }); // Careful: RN currently depends on this prefix\n\n    argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n    // breaks IE9: https://github.com/facebook/react/issues/13610\n    // eslint-disable-next-line react-internal/no-production-logging\n\n    Function.prototype.apply.call(console[level], console, argsWithFormat);\n  }\n}\n\n// -----------------------------------------------------------------------------\n\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\nvar enableCacheElement = false;\nvar enableTransitionTracing = false; // No known bugs, but needs performance testing\n\nvar enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n// stuff. Intended to enable React core members to more easily debug scheduling\n// issues in DEV builds.\n\nvar enableDebugTracing = false; // Track which Fiber(s) schedule render work.\n\nvar REACT_MODULE_REFERENCE;\n\n{\n  REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');\n}\n\nfunction isValidElementType(type) {\n  if (typeof type === 'string' || typeof type === 'function') {\n    return true;\n  } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n  if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing  || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden  || type === REACT_OFFSCREEN_TYPE || enableScopeAPI  || enableCacheElement  || enableTransitionTracing ) {\n    return true;\n  }\n\n  if (typeof type === 'object' && type !== null) {\n    if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n    // types supported by any Flight configuration anywhere since\n    // we don't know which Flight build this will end up being used\n    // with.\n    type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nfunction getWrappedName(outerType, innerType, wrapperName) {\n  var displayName = outerType.displayName;\n\n  if (displayName) {\n    return displayName;\n  }\n\n  var functionName = innerType.displayName || innerType.name || '';\n  return functionName !== '' ? wrapperName + \"(\" + functionName + \")\" : wrapperName;\n} // Keep in sync with react-reconciler/getComponentNameFromFiber\n\n\nfunction getContextName(type) {\n  return type.displayName || 'Context';\n} // Note that the reconciler package should generally prefer to use getComponentNameFromFiber() instead.\n\n\nfunction getComponentNameFromType(type) {\n  if (type == null) {\n    // Host root, text node or just invalid type.\n    return null;\n  }\n\n  {\n    if (typeof type.tag === 'number') {\n      error('Received an unexpected object in getComponentNameFromType(). ' + 'This is likely a bug in React. Please file an issue.');\n    }\n  }\n\n  if (typeof type === 'function') {\n    return type.displayName || type.name || null;\n  }\n\n  if (typeof type === 'string') {\n    return type;\n  }\n\n  switch (type) {\n    case REACT_FRAGMENT_TYPE:\n      return 'Fragment';\n\n    case REACT_PORTAL_TYPE:\n      return 'Portal';\n\n    case REACT_PROFILER_TYPE:\n      return 'Profiler';\n\n    case REACT_STRICT_MODE_TYPE:\n      return 'StrictMode';\n\n    case REACT_SUSPENSE_TYPE:\n      return 'Suspense';\n\n    case REACT_SUSPENSE_LIST_TYPE:\n      return 'SuspenseList';\n\n  }\n\n  if (typeof type === 'object') {\n    switch (type.$$typeof) {\n      case REACT_CONTEXT_TYPE:\n        var context = type;\n        return getContextName(context) + '.Consumer';\n\n      case REACT_PROVIDER_TYPE:\n        var provider = type;\n        return getContextName(provider._context) + '.Provider';\n\n      case REACT_FORWARD_REF_TYPE:\n        return getWrappedName(type, type.render, 'ForwardRef');\n\n      case REACT_MEMO_TYPE:\n        var outerName = type.displayName || null;\n\n        if (outerName !== null) {\n          return outerName;\n        }\n\n        return getComponentNameFromType(type.type) || 'Memo';\n\n      case REACT_LAZY_TYPE:\n        {\n          var lazyComponent = type;\n          var payload = lazyComponent._payload;\n          var init = lazyComponent._init;\n\n          try {\n            return getComponentNameFromType(init(payload));\n          } catch (x) {\n            return null;\n          }\n        }\n\n      // eslint-disable-next-line no-fallthrough\n    }\n  }\n\n  return null;\n}\n\nvar assign = Object.assign;\n\n// Helpers to patch console.logs to avoid logging during side-effect free\n// replaying on render function. This currently only patches the object\n// lazily which won't cover if the log function was extracted eagerly.\n// We could also eagerly patch the method.\nvar disabledDepth = 0;\nvar prevLog;\nvar prevInfo;\nvar prevWarn;\nvar prevError;\nvar prevGroup;\nvar prevGroupCollapsed;\nvar prevGroupEnd;\n\nfunction disabledLog() {}\n\ndisabledLog.__reactDisabledLog = true;\nfunction disableLogs() {\n  {\n    if (disabledDepth === 0) {\n      /* eslint-disable react-internal/no-production-logging */\n      prevLog = console.log;\n      prevInfo = console.info;\n      prevWarn = console.warn;\n      prevError = console.error;\n      prevGroup = console.group;\n      prevGroupCollapsed = console.groupCollapsed;\n      prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099\n\n      var props = {\n        configurable: true,\n        enumerable: true,\n        value: disabledLog,\n        writable: true\n      }; // $FlowFixMe Flow thinks console is immutable.\n\n      Object.defineProperties(console, {\n        info: props,\n        log: props,\n        warn: props,\n        error: props,\n        group: props,\n        groupCollapsed: props,\n        groupEnd: props\n      });\n      /* eslint-enable react-internal/no-production-logging */\n    }\n\n    disabledDepth++;\n  }\n}\nfunction reenableLogs() {\n  {\n    disabledDepth--;\n\n    if (disabledDepth === 0) {\n      /* eslint-disable react-internal/no-production-logging */\n      var props = {\n        configurable: true,\n        enumerable: true,\n        writable: true\n      }; // $FlowFixMe Flow thinks console is immutable.\n\n      Object.defineProperties(console, {\n        log: assign({}, props, {\n          value: prevLog\n        }),\n        info: assign({}, props, {\n          value: prevInfo\n        }),\n        warn: assign({}, props, {\n          value: prevWarn\n        }),\n        error: assign({}, props, {\n          value: prevError\n        }),\n        group: assign({}, props, {\n          value: prevGroup\n        }),\n        groupCollapsed: assign({}, props, {\n          value: prevGroupCollapsed\n        }),\n        groupEnd: assign({}, props, {\n          value: prevGroupEnd\n        })\n      });\n      /* eslint-enable react-internal/no-production-logging */\n    }\n\n    if (disabledDepth < 0) {\n      error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.');\n    }\n  }\n}\n\nvar ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;\nvar prefix;\nfunction describeBuiltInComponentFrame(name, source, ownerFn) {\n  {\n    if (prefix === undefined) {\n      // Extract the VM specific prefix used by each line.\n      try {\n        throw Error();\n      } catch (x) {\n        var match = x.stack.trim().match(/\\n( *(at )?)/);\n        prefix = match && match[1] || '';\n      }\n    } // We use the prefix to ensure our stacks line up with native stack frames.\n\n\n    return '\\n' + prefix + name;\n  }\n}\nvar reentry = false;\nvar componentFrameCache;\n\n{\n  var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;\n  componentFrameCache = new PossiblyWeakMap();\n}\n\nfunction describeNativeComponentFrame(fn, construct) {\n  // If something asked for a stack inside a fake render, it should get ignored.\n  if ( !fn || reentry) {\n    return '';\n  }\n\n  {\n    var frame = componentFrameCache.get(fn);\n\n    if (frame !== undefined) {\n      return frame;\n    }\n  }\n\n  var control;\n  reentry = true;\n  var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined.\n\n  Error.prepareStackTrace = undefined;\n  var previousDispatcher;\n\n  {\n    previousDispatcher = ReactCurrentDispatcher.current; // Set the dispatcher in DEV because this might be call in the render function\n    // for warnings.\n\n    ReactCurrentDispatcher.current = null;\n    disableLogs();\n  }\n\n  try {\n    // This should throw.\n    if (construct) {\n      // Something should be setting the props in the constructor.\n      var Fake = function () {\n        throw Error();\n      }; // $FlowFixMe\n\n\n      Object.defineProperty(Fake.prototype, 'props', {\n        set: function () {\n          // We use a throwing setter instead of frozen or non-writable props\n          // because that won't throw in a non-strict mode function.\n          throw Error();\n        }\n      });\n\n      if (typeof Reflect === 'object' && Reflect.construct) {\n        // We construct a different control for this case to include any extra\n        // frames added by the construct call.\n        try {\n          Reflect.construct(Fake, []);\n        } catch (x) {\n          control = x;\n        }\n\n        Reflect.construct(fn, [], Fake);\n      } else {\n        try {\n          Fake.call();\n        } catch (x) {\n          control = x;\n        }\n\n        fn.call(Fake.prototype);\n      }\n    } else {\n      try {\n        throw Error();\n      } catch (x) {\n        control = x;\n      }\n\n      fn();\n    }\n  } catch (sample) {\n    // This is inlined manually because closure doesn't do it for us.\n    if (sample && control && typeof sample.stack === 'string') {\n      // This extracts the first frame from the sample that isn't also in the control.\n      // Skipping one frame that we assume is the frame that calls the two.\n      var sampleLines = sample.stack.split('\\n');\n      var controlLines = control.stack.split('\\n');\n      var s = sampleLines.length - 1;\n      var c = controlLines.length - 1;\n\n      while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {\n        // We expect at least one stack frame to be shared.\n        // Typically this will be the root most one. However, stack frames may be\n        // cut off due to maximum stack limits. In this case, one maybe cut off\n        // earlier than the other. We assume that the sample is longer or the same\n        // and there for cut off earlier. So we should find the root most frame in\n        // the sample somewhere in the control.\n        c--;\n      }\n\n      for (; s >= 1 && c >= 0; s--, c--) {\n        // Next we find the first one that isn't the same which should be the\n        // frame that called our sample function and the control.\n        if (sampleLines[s] !== controlLines[c]) {\n          // In V8, the first line is describing the message but other VMs don't.\n          // If we're about to return the first line, and the control is also on the same\n          // line, that's a pretty good indicator that our sample threw at same line as\n          // the control. I.e. before we entered the sample frame. So we ignore this result.\n          // This can happen if you passed a class to function component, or non-function.\n          if (s !== 1 || c !== 1) {\n            do {\n              s--;\n              c--; // We may still have similar intermediate frames from the construct call.\n              // The next one that isn't the same should be our match though.\n\n              if (c < 0 || sampleLines[s] !== controlLines[c]) {\n                // V8 adds a \"new\" prefix for native classes. Let's remove it to make it prettier.\n                var _frame = '\\n' + sampleLines[s].replace(' at new ', ' at '); // If our component frame is labeled \"<anonymous>\"\n                // but we have a user-provided \"displayName\"\n                // splice it in to make the stack more readable.\n\n\n                if (fn.displayName && _frame.includes('<anonymous>')) {\n                  _frame = _frame.replace('<anonymous>', fn.displayName);\n                }\n\n                {\n                  if (typeof fn === 'function') {\n                    componentFrameCache.set(fn, _frame);\n                  }\n                } // Return the line we found.\n\n\n                return _frame;\n              }\n            } while (s >= 1 && c >= 0);\n          }\n\n          break;\n        }\n      }\n    }\n  } finally {\n    reentry = false;\n\n    {\n      ReactCurrentDispatcher.current = previousDispatcher;\n      reenableLogs();\n    }\n\n    Error.prepareStackTrace = previousPrepareStackTrace;\n  } // Fallback to just using the name if we couldn't make it throw.\n\n\n  var name = fn ? fn.displayName || fn.name : '';\n  var syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';\n\n  {\n    if (typeof fn === 'function') {\n      componentFrameCache.set(fn, syntheticFrame);\n    }\n  }\n\n  return syntheticFrame;\n}\nfunction describeFunctionComponentFrame(fn, source, ownerFn) {\n  {\n    return describeNativeComponentFrame(fn, false);\n  }\n}\n\nfunction shouldConstruct(Component) {\n  var prototype = Component.prototype;\n  return !!(prototype && prototype.isReactComponent);\n}\n\nfunction describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {\n\n  if (type == null) {\n    return '';\n  }\n\n  if (typeof type === 'function') {\n    {\n      return describeNativeComponentFrame(type, shouldConstruct(type));\n    }\n  }\n\n  if (typeof type === 'string') {\n    return describeBuiltInComponentFrame(type);\n  }\n\n  switch (type) {\n    case REACT_SUSPENSE_TYPE:\n      return describeBuiltInComponentFrame('Suspense');\n\n    case REACT_SUSPENSE_LIST_TYPE:\n      return describeBuiltInComponentFrame('SuspenseList');\n  }\n\n  if (typeof type === 'object') {\n    switch (type.$$typeof) {\n      case REACT_FORWARD_REF_TYPE:\n        return describeFunctionComponentFrame(type.render);\n\n      case REACT_MEMO_TYPE:\n        // Memo may contain any component type so we recursively resolve it.\n        return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);\n\n      case REACT_LAZY_TYPE:\n        {\n          var lazyComponent = type;\n          var payload = lazyComponent._payload;\n          var init = lazyComponent._init;\n\n          try {\n            // Lazy may contain any component type so we recursively resolve it.\n            return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);\n          } catch (x) {}\n        }\n    }\n  }\n\n  return '';\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar loggedTypeFailures = {};\nvar ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement(element) {\n  {\n    if (element) {\n      var owner = element._owner;\n      var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n      ReactDebugCurrentFrame.setExtraStackFrame(stack);\n    } else {\n      ReactDebugCurrentFrame.setExtraStackFrame(null);\n    }\n  }\n}\n\nfunction checkPropTypes(typeSpecs, values, location, componentName, element) {\n  {\n    // $FlowFixMe This is okay but Flow doesn't know it.\n    var has = Function.call.bind(hasOwnProperty);\n\n    for (var typeSpecName in typeSpecs) {\n      if (has(typeSpecs, typeSpecName)) {\n        var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to\n        // fail the render phase where it didn't fail before. So we log it.\n        // After these have been cleaned up, we'll let them throw.\n\n        try {\n          // This is intentionally an invariant that gets caught. It's the same\n          // behavior as without this statement except with a better message.\n          if (typeof typeSpecs[typeSpecName] !== 'function') {\n            // eslint-disable-next-line react-internal/prod-error-codes\n            var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');\n            err.name = 'Invariant Violation';\n            throw err;\n          }\n\n          error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');\n        } catch (ex) {\n          error$1 = ex;\n        }\n\n        if (error$1 && !(error$1 instanceof Error)) {\n          setCurrentlyValidatingElement(element);\n\n          error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1);\n\n          setCurrentlyValidatingElement(null);\n        }\n\n        if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {\n          // Only monitor this failure once because there tends to be a lot of the\n          // same error.\n          loggedTypeFailures[error$1.message] = true;\n          setCurrentlyValidatingElement(element);\n\n          error('Failed %s type: %s', location, error$1.message);\n\n          setCurrentlyValidatingElement(null);\n        }\n      }\n    }\n  }\n}\n\nvar isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare\n\nfunction isArray(a) {\n  return isArrayImpl(a);\n}\n\n/*\n * The `'' + value` pattern (used in in perf-sensitive code) throws for Symbol\n * and Temporal.* types. See https://github.com/facebook/react/pull/22064.\n *\n * The functions in this module will throw an easier-to-understand,\n * easier-to-debug exception with a clear errors message message explaining the\n * problem. (Instead of a confusing exception thrown inside the implementation\n * of the `value` object).\n */\n// $FlowFixMe only called in DEV, so void return is not possible.\nfunction typeName(value) {\n  {\n    // toStringTag is needed for namespaced types like Temporal.Instant\n    var hasToStringTag = typeof Symbol === 'function' && Symbol.toStringTag;\n    var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || 'Object';\n    return type;\n  }\n} // $FlowFixMe only called in DEV, so void return is not possible.\n\n\nfunction willCoercionThrow(value) {\n  {\n    try {\n      testStringCoercion(value);\n      return false;\n    } catch (e) {\n      return true;\n    }\n  }\n}\n\nfunction testStringCoercion(value) {\n  // If you ended up here by following an exception call stack, here's what's\n  // happened: you supplied an object or symbol value to React (as a prop, key,\n  // DOM attribute, CSS property, string ref, etc.) and when React tried to\n  // coerce it to a string using `'' + value`, an exception was thrown.\n  //\n  // The most common types that will cause this exception are `Symbol` instances\n  // and Temporal objects like `Temporal.Instant`. But any object that has a\n  // `valueOf` or `[Symbol.toPrimitive]` method that throws will also cause this\n  // exception. (Library authors do this to prevent users from using built-in\n  // numeric operators like `+` or comparison operators like `>=` because custom\n  // methods are needed to perform accurate arithmetic or comparison.)\n  //\n  // To fix the problem, coerce this object or symbol value to a string before\n  // passing it to React. The most reliable way is usually `String(value)`.\n  //\n  // To find which value is throwing, check the browser or debugger console.\n  // Before this exception was thrown, there should be `console.error` output\n  // that shows the type (Symbol, Temporal.PlainDate, etc.) that caused the\n  // problem and how that type was used: key, atrribute, input value prop, etc.\n  // In most cases, this console output also shows the component and its\n  // ancestor components where the exception happened.\n  //\n  // eslint-disable-next-line react-internal/safe-string-coercion\n  return '' + value;\n}\nfunction checkKeyStringCoercion(value) {\n  {\n    if (willCoercionThrow(value)) {\n      error('The provided key is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', typeName(value));\n\n      return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n    }\n  }\n}\n\nvar ReactCurrentOwner = ReactSharedInternals.ReactCurrentOwner;\nvar RESERVED_PROPS = {\n  key: true,\n  ref: true,\n  __self: true,\n  __source: true\n};\nvar specialPropKeyWarningShown;\nvar specialPropRefWarningShown;\nvar didWarnAboutStringRefs;\n\n{\n  didWarnAboutStringRefs = {};\n}\n\nfunction hasValidRef(config) {\n  {\n    if (hasOwnProperty.call(config, 'ref')) {\n      var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n\n      if (getter && getter.isReactWarning) {\n        return false;\n      }\n    }\n  }\n\n  return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n  {\n    if (hasOwnProperty.call(config, 'key')) {\n      var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n\n      if (getter && getter.isReactWarning) {\n        return false;\n      }\n    }\n  }\n\n  return config.key !== undefined;\n}\n\nfunction warnIfStringRefCannotBeAutoConverted(config, self) {\n  {\n    if (typeof config.ref === 'string' && ReactCurrentOwner.current && self && ReactCurrentOwner.current.stateNode !== self) {\n      var componentName = getComponentNameFromType(ReactCurrentOwner.current.type);\n\n      if (!didWarnAboutStringRefs[componentName]) {\n        error('Component \"%s\" contains the string ref \"%s\". ' + 'Support for string refs will be removed in a future major release. ' + 'This case cannot be automatically converted to an arrow function. ' + 'We ask you to manually fix this case by using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', getComponentNameFromType(ReactCurrentOwner.current.type), config.ref);\n\n        didWarnAboutStringRefs[componentName] = true;\n      }\n    }\n  }\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n  {\n    var warnAboutAccessingKey = function () {\n      if (!specialPropKeyWarningShown) {\n        specialPropKeyWarningShown = true;\n\n        error('%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n      }\n    };\n\n    warnAboutAccessingKey.isReactWarning = true;\n    Object.defineProperty(props, 'key', {\n      get: warnAboutAccessingKey,\n      configurable: true\n    });\n  }\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n  {\n    var warnAboutAccessingRef = function () {\n      if (!specialPropRefWarningShown) {\n        specialPropRefWarningShown = true;\n\n        error('%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n      }\n    };\n\n    warnAboutAccessingRef.isReactWarning = true;\n    Object.defineProperty(props, 'ref', {\n      get: warnAboutAccessingRef,\n      configurable: true\n    });\n  }\n}\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, instanceof check\n * will not work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} props\n * @param {*} key\n * @param {string|object} ref\n * @param {*} owner\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @internal\n */\n\n\nvar ReactElement = function (type, key, ref, self, source, owner, props) {\n  var element = {\n    // This tag allows us to uniquely identify this as a React Element\n    $$typeof: REACT_ELEMENT_TYPE,\n    // Built-in properties that belong on the element\n    type: type,\n    key: key,\n    ref: ref,\n    props: props,\n    // Record the component responsible for creating this element.\n    _owner: owner\n  };\n\n  {\n    // The validation flag is currently mutative. We put it on\n    // an external backing store so that we can freeze the whole object.\n    // This can be replaced with a WeakMap once they are implemented in\n    // commonly used development environments.\n    element._store = {}; // To make comparing ReactElements easier for testing purposes, we make\n    // the validation flag non-enumerable (where possible, which should\n    // include every environment we run tests in), so the test framework\n    // ignores it.\n\n    Object.defineProperty(element._store, 'validated', {\n      configurable: false,\n      enumerable: false,\n      writable: true,\n      value: false\n    }); // self and source are DEV only properties.\n\n    Object.defineProperty(element, '_self', {\n      configurable: false,\n      enumerable: false,\n      writable: false,\n      value: self\n    }); // Two elements created in two different places should be considered\n    // equal for testing purposes and therefore we hide it from enumeration.\n\n    Object.defineProperty(element, '_source', {\n      configurable: false,\n      enumerable: false,\n      writable: false,\n      value: source\n    });\n\n    if (Object.freeze) {\n      Object.freeze(element.props);\n      Object.freeze(element);\n    }\n  }\n\n  return element;\n};\n/**\n * https://github.com/reactjs/rfcs/pull/107\n * @param {*} type\n * @param {object} props\n * @param {string} key\n */\n\nfunction jsxDEV(type, config, maybeKey, source, self) {\n  {\n    var propName; // Reserved names are extracted\n\n    var props = {};\n    var key = null;\n    var ref = null; // Currently, key can be spread in as a prop. This causes a potential\n    // issue if key is also explicitly declared (ie. <div {...props} key=\"Hi\" />\n    // or <div key=\"Hi\" {...props} /> ). We want to deprecate key spread,\n    // but as an intermediary step, we will use jsxDEV for everything except\n    // <div {...props} key=\"Hi\" />, because we aren't currently able to tell if\n    // key is explicitly declared to be undefined or not.\n\n    if (maybeKey !== undefined) {\n      {\n        checkKeyStringCoercion(maybeKey);\n      }\n\n      key = '' + maybeKey;\n    }\n\n    if (hasValidKey(config)) {\n      {\n        checkKeyStringCoercion(config.key);\n      }\n\n      key = '' + config.key;\n    }\n\n    if (hasValidRef(config)) {\n      ref = config.ref;\n      warnIfStringRefCannotBeAutoConverted(config, self);\n    } // Remaining properties are added to a new props object\n\n\n    for (propName in config) {\n      if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n        props[propName] = config[propName];\n      }\n    } // Resolve default props\n\n\n    if (type && type.defaultProps) {\n      var defaultProps = type.defaultProps;\n\n      for (propName in defaultProps) {\n        if (props[propName] === undefined) {\n          props[propName] = defaultProps[propName];\n        }\n      }\n    }\n\n    if (key || ref) {\n      var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n\n      if (key) {\n        defineKeyPropWarningGetter(props, displayName);\n      }\n\n      if (ref) {\n        defineRefPropWarningGetter(props, displayName);\n      }\n    }\n\n    return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n  }\n}\n\nvar ReactCurrentOwner$1 = ReactSharedInternals.ReactCurrentOwner;\nvar ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement$1(element) {\n  {\n    if (element) {\n      var owner = element._owner;\n      var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n      ReactDebugCurrentFrame$1.setExtraStackFrame(stack);\n    } else {\n      ReactDebugCurrentFrame$1.setExtraStackFrame(null);\n    }\n  }\n}\n\nvar propTypesMisspellWarningShown;\n\n{\n  propTypesMisspellWarningShown = false;\n}\n/**\n * Verifies the object is a ReactElement.\n * See https://reactjs.org/docs/react-api.html#isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a ReactElement.\n * @final\n */\n\n\nfunction isValidElement(object) {\n  {\n    return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n  }\n}\n\nfunction getDeclarationErrorAddendum() {\n  {\n    if (ReactCurrentOwner$1.current) {\n      var name = getComponentNameFromType(ReactCurrentOwner$1.current.type);\n\n      if (name) {\n        return '\\n\\nCheck the render method of `' + name + '`.';\n      }\n    }\n\n    return '';\n  }\n}\n\nfunction getSourceInfoErrorAddendum(source) {\n  {\n    if (source !== undefined) {\n      var fileName = source.fileName.replace(/^.*[\\\\\\/]/, '');\n      var lineNumber = source.lineNumber;\n      return '\\n\\nCheck your code at ' + fileName + ':' + lineNumber + '.';\n    }\n\n    return '';\n  }\n}\n/**\n * Warn if there's no key explicitly set on dynamic arrays of children or\n * object keys are not valid. This allows us to keep track of children between\n * updates.\n */\n\n\nvar ownerHasKeyUseWarning = {};\n\nfunction getCurrentComponentErrorInfo(parentType) {\n  {\n    var info = getDeclarationErrorAddendum();\n\n    if (!info) {\n      var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;\n\n      if (parentName) {\n        info = \"\\n\\nCheck the top-level render call using <\" + parentName + \">.\";\n      }\n    }\n\n    return info;\n  }\n}\n/**\n * Warn if the element doesn't have an explicit key assigned to it.\n * This element is in an array. The array could grow and shrink or be\n * reordered. All children that haven't already been validated are required to\n * have a \"key\" property assigned to it. Error statuses are cached so a warning\n * will only be shown once.\n *\n * @internal\n * @param {ReactElement} element Element that requires a key.\n * @param {*} parentType element's parent's type.\n */\n\n\nfunction validateExplicitKey(element, parentType) {\n  {\n    if (!element._store || element._store.validated || element.key != null) {\n      return;\n    }\n\n    element._store.validated = true;\n    var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);\n\n    if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {\n      return;\n    }\n\n    ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a\n    // property, it may be the creator of the child that's responsible for\n    // assigning it a key.\n\n    var childOwner = '';\n\n    if (element && element._owner && element._owner !== ReactCurrentOwner$1.current) {\n      // Give the component that originally created this child.\n      childOwner = \" It was passed a child from \" + getComponentNameFromType(element._owner.type) + \".\";\n    }\n\n    setCurrentlyValidatingElement$1(element);\n\n    error('Each child in a list should have a unique \"key\" prop.' + '%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner);\n\n    setCurrentlyValidatingElement$1(null);\n  }\n}\n/**\n * Ensure that every element either is passed in a static location, in an\n * array with an explicit keys property defined, or in an object literal\n * with valid key property.\n *\n * @internal\n * @param {ReactNode} node Statically passed child of any type.\n * @param {*} parentType node's parent's type.\n */\n\n\nfunction validateChildKeys(node, parentType) {\n  {\n    if (typeof node !== 'object') {\n      return;\n    }\n\n    if (isArray(node)) {\n      for (var i = 0; i < node.length; i++) {\n        var child = node[i];\n\n        if (isValidElement(child)) {\n          validateExplicitKey(child, parentType);\n        }\n      }\n    } else if (isValidElement(node)) {\n      // This element was passed in a valid location.\n      if (node._store) {\n        node._store.validated = true;\n      }\n    } else if (node) {\n      var iteratorFn = getIteratorFn(node);\n\n      if (typeof iteratorFn === 'function') {\n        // Entry iterators used to provide implicit keys,\n        // but now we print a separate warning for them later.\n        if (iteratorFn !== node.entries) {\n          var iterator = iteratorFn.call(node);\n          var step;\n\n          while (!(step = iterator.next()).done) {\n            if (isValidElement(step.value)) {\n              validateExplicitKey(step.value, parentType);\n            }\n          }\n        }\n      }\n    }\n  }\n}\n/**\n * Given an element, validate that its props follow the propTypes definition,\n * provided by the type.\n *\n * @param {ReactElement} element\n */\n\n\nfunction validatePropTypes(element) {\n  {\n    var type = element.type;\n\n    if (type === null || type === undefined || typeof type === 'string') {\n      return;\n    }\n\n    var propTypes;\n\n    if (typeof type === 'function') {\n      propTypes = type.propTypes;\n    } else if (typeof type === 'object' && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.\n    // Inner props are checked in the reconciler.\n    type.$$typeof === REACT_MEMO_TYPE)) {\n      propTypes = type.propTypes;\n    } else {\n      return;\n    }\n\n    if (propTypes) {\n      // Intentionally inside to avoid triggering lazy initializers:\n      var name = getComponentNameFromType(type);\n      checkPropTypes(propTypes, element.props, 'prop', name, element);\n    } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) {\n      propTypesMisspellWarningShown = true; // Intentionally inside to avoid triggering lazy initializers:\n\n      var _name = getComponentNameFromType(type);\n\n      error('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', _name || 'Unknown');\n    }\n\n    if (typeof type.getDefaultProps === 'function' && !type.getDefaultProps.isReactClassApproved) {\n      error('getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.');\n    }\n  }\n}\n/**\n * Given a fragment, validate that it can only be provided with fragment props\n * @param {ReactElement} fragment\n */\n\n\nfunction validateFragmentProps(fragment) {\n  {\n    var keys = Object.keys(fragment.props);\n\n    for (var i = 0; i < keys.length; i++) {\n      var key = keys[i];\n\n      if (key !== 'children' && key !== 'key') {\n        setCurrentlyValidatingElement$1(fragment);\n\n        error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key);\n\n        setCurrentlyValidatingElement$1(null);\n        break;\n      }\n    }\n\n    if (fragment.ref !== null) {\n      setCurrentlyValidatingElement$1(fragment);\n\n      error('Invalid attribute `ref` supplied to `React.Fragment`.');\n\n      setCurrentlyValidatingElement$1(null);\n    }\n  }\n}\n\nfunction jsxWithValidation(type, props, key, isStaticChildren, source, self) {\n  {\n    var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to\n    // succeed and there will likely be errors in render.\n\n    if (!validType) {\n      var info = '';\n\n      if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n        info += ' You likely forgot to export your component from the file ' + \"it's defined in, or you might have mixed up default and named imports.\";\n      }\n\n      var sourceInfo = getSourceInfoErrorAddendum(source);\n\n      if (sourceInfo) {\n        info += sourceInfo;\n      } else {\n        info += getDeclarationErrorAddendum();\n      }\n\n      var typeString;\n\n      if (type === null) {\n        typeString = 'null';\n      } else if (isArray(type)) {\n        typeString = 'array';\n      } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) {\n        typeString = \"<\" + (getComponentNameFromType(type.type) || 'Unknown') + \" />\";\n        info = ' Did you accidentally export a JSX literal instead of a component?';\n      } else {\n        typeString = typeof type;\n      }\n\n      error('React.jsx: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info);\n    }\n\n    var element = jsxDEV(type, props, key, source, self); // The result can be nullish if a mock or a custom function is used.\n    // TODO: Drop this when these are no longer allowed as the type argument.\n\n    if (element == null) {\n      return element;\n    } // Skip key warning if the type isn't valid since our key validation logic\n    // doesn't expect a non-string/function type and can throw confusing errors.\n    // We don't want exception behavior to differ between dev and prod.\n    // (Rendering will throw with a helpful message and as soon as the type is\n    // fixed, the key warnings will appear.)\n\n\n    if (validType) {\n      var children = props.children;\n\n      if (children !== undefined) {\n        if (isStaticChildren) {\n          if (isArray(children)) {\n            for (var i = 0; i < children.length; i++) {\n              validateChildKeys(children[i], type);\n            }\n\n            if (Object.freeze) {\n              Object.freeze(children);\n            }\n          } else {\n            error('React.jsx: Static children should always be an array. ' + 'You are likely explicitly calling React.jsxs or React.jsxDEV. ' + 'Use the Babel transform instead.');\n          }\n        } else {\n          validateChildKeys(children, type);\n        }\n      }\n    }\n\n    if (type === REACT_FRAGMENT_TYPE) {\n      validateFragmentProps(element);\n    } else {\n      validatePropTypes(element);\n    }\n\n    return element;\n  }\n} // These two functions exist to still get child warnings in dev\n// even with the prod transform. This means that jsxDEV is purely\n// opt-in behavior for better messages but that we won't stop\n// giving you warnings if you use production apis.\n\nfunction jsxWithValidationStatic(type, props, key) {\n  {\n    return jsxWithValidation(type, props, key, true);\n  }\n}\nfunction jsxWithValidationDynamic(type, props, key) {\n  {\n    return jsxWithValidation(type, props, key, false);\n  }\n}\n\nvar jsx =  jsxWithValidationDynamic ; // we may want to special case jsxs internally to take advantage of static children.\n// for now we can ship identical prod functions\n\nvar jsxs =  jsxWithValidationStatic ;\n\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsx;\nexports.jsxs = jsxs;\n  })();\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 66496 characters]\n//# sourceURL=webpack-internal:///../../../node_modules/react/cjs/react-jsx-runtime.development.js\n");
              }
            ),
            /***/
            "../../../node_modules/react/jsx-runtime.js": (
              /*!**************************************************!*\
                !*** ../../../node_modules/react/jsx-runtime.js ***!
                \**************************************************/
              /***/
              (module, __unused_webpack_exports, __webpack_require__) => {
                "use strict";
                eval('\n\nif (false) {} else {\n  module.exports = __webpack_require__(/*! ./cjs/react-jsx-runtime.development.js */ "../../../node_modules/react/cjs/react-jsx-runtime.development.js");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0L2pzeC1ydW50aW1lLmpzLmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViLElBQUksS0FBcUMsRUFBRSxFQUUxQyxDQUFDO0FBQ0YsRUFBRSxzSkFBa0U7QUFDcEUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0L2pzeC1ydW50aW1lLmpzPzA2YWMiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWpzeC1ydW50aW1lLmRldmVsb3BtZW50LmpzJyk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/react/jsx-runtime.js\n');
              }
            ),
            /***/
            "../../../node_modules/roughjs/bin/canvas.js": (
              /*!***************************************************!*\
                !*** ../../../node_modules/roughjs/bin/canvas.js ***!
                \***************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "RoughCanvas": () => (/* binding */ RoughCanvas)
/* harmony export */ });
/* harmony import */ var _generator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./generator */ "../../../node_modules/roughjs/bin/generator.js");

class RoughCanvas {
    constructor(canvas, config) {
        this.canvas = canvas;
        this.ctx = this.canvas.getContext('2d');
        this.gen = new _generator__WEBPACK_IMPORTED_MODULE_0__.RoughGenerator(config);
    }
    draw(drawable) {
        const sets = drawable.sets || [];
        const o = drawable.options || this.getDefaultOptions();
        const ctx = this.ctx;
        const precision = drawable.options.fixedDecimalPlaceDigits;
        for (const drawing of sets) {
            switch (drawing.type) {
                case 'path':
                    ctx.save();
                    ctx.strokeStyle = o.stroke === 'none' ? 'transparent' : o.stroke;
                    ctx.lineWidth = o.strokeWidth;
                    if (o.strokeLineDash) {
                        ctx.setLineDash(o.strokeLineDash);
                    }
                    if (o.strokeLineDashOffset) {
                        ctx.lineDashOffset = o.strokeLineDashOffset;
                    }
                    this._drawToContext(ctx, drawing, precision);
                    ctx.restore();
                    break;
                case 'fillPath': {
                    ctx.save();
                    ctx.fillStyle = o.fill || '';
                    const fillRule = (drawable.shape === 'curve' || drawable.shape === 'polygon' || drawable.shape === 'path') ? 'evenodd' : 'nonzero';
                    this._drawToContext(ctx, drawing, precision, fillRule);
                    ctx.restore();
                    break;
                }
                case 'fillSketch':
                    this.fillSketch(ctx, drawing, o);
                    break;
            }
        }
    }
    fillSketch(ctx, drawing, o) {
        let fweight = o.fillWeight;
        if (fweight < 0) {
            fweight = o.strokeWidth / 2;
        }
        ctx.save();
        if (o.fillLineDash) {
            ctx.setLineDash(o.fillLineDash);
        }
        if (o.fillLineDashOffset) {
            ctx.lineDashOffset = o.fillLineDashOffset;
        }
        ctx.strokeStyle = o.fill || '';
        ctx.lineWidth = fweight;
        this._drawToContext(ctx, drawing, o.fixedDecimalPlaceDigits);
        ctx.restore();
    }
    _drawToContext(ctx, drawing, fixedDecimals, rule = 'nonzero') {
        ctx.beginPath();
        for (const item of drawing.ops) {
            const data = ((typeof fixedDecimals === 'number') && fixedDecimals >= 0) ? (item.data.map((d) => +d.toFixed(fixedDecimals))) : item.data;
            switch (item.op) {
                case 'move':
                    ctx.moveTo(data[0], data[1]);
                    break;
                case 'bcurveTo':
                    ctx.bezierCurveTo(data[0], data[1], data[2], data[3], data[4], data[5]);
                    break;
                case 'lineTo':
                    ctx.lineTo(data[0], data[1]);
                    break;
            }
        }
        if (drawing.type === 'fillPath') {
            ctx.fill(rule);
        }
        else {
            ctx.stroke();
        }
    }
    get generator() {
        return this.gen;
    }
    getDefaultOptions() {
        return this.gen.defaultOptions;
    }
    line(x1, y1, x2, y2, options) {
        const d = this.gen.line(x1, y1, x2, y2, options);
        this.draw(d);
        return d;
    }
    rectangle(x, y, width, height, options) {
        const d = this.gen.rectangle(x, y, width, height, options);
        this.draw(d);
        return d;
    }
    ellipse(x, y, width, height, options) {
        const d = this.gen.ellipse(x, y, width, height, options);
        this.draw(d);
        return d;
    }
    circle(x, y, diameter, options) {
        const d = this.gen.circle(x, y, diameter, options);
        this.draw(d);
        return d;
    }
    linearPath(points, options) {
        const d = this.gen.linearPath(points, options);
        this.draw(d);
        return d;
    }
    polygon(points, options) {
        const d = this.gen.polygon(points, options);
        this.draw(d);
        return d;
    }
    arc(x, y, width, height, start, stop, closed = false, options) {
        const d = this.gen.arc(x, y, width, height, start, stop, closed, options);
        this.draw(d);
        return d;
    }
    curve(points, options) {
        const d = this.gen.curve(points, options);
        this.draw(d);
        return d;
    }
    path(d, options) {
        const drawing = this.gen.path(d, options);
        this.draw(drawing);
        return drawing;
    }
}
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 7396 characters]
//# sourceURL=webpack-internal:///../../../node_modules/roughjs/bin/canvas.js
`);
              }
            ),
            /***/
            "../../../node_modules/roughjs/bin/core.js": (
              /*!*************************************************!*\
                !*** ../../../node_modules/roughjs/bin/core.js ***!
                \*************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "SVGNS": () => (/* binding */ SVGNS)
/* harmony export */ });
const SVGNS = 'http://www.w3.org/2000/svg';
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JvdWdoanMvYmluL2NvcmUuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFPIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yb3VnaGpzL2Jpbi9jb3JlLmpzPzVlYTUiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFNWR05TID0gJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==
//# sourceURL=webpack-internal:///../../../node_modules/roughjs/bin/core.js
`);
              }
            ),
            /***/
            "../../../node_modules/roughjs/bin/fillers/dashed-filler.js": (
              /*!******************************************************************!*\
                !*** ../../../node_modules/roughjs/bin/fillers/dashed-filler.js ***!
                \******************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "DashedFiller": () => (/* binding */ DashedFiller)
/* harmony export */ });
/* harmony import */ var _geometry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../geometry */ "../../../node_modules/roughjs/bin/geometry.js");
/* harmony import */ var _scan_line_hachure__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./scan-line-hachure */ "../../../node_modules/roughjs/bin/fillers/scan-line-hachure.js");


class DashedFiller {
    constructor(helper) {
        this.helper = helper;
    }
    fillPolygons(polygonList, o) {
        const lines = (0,_scan_line_hachure__WEBPACK_IMPORTED_MODULE_1__.polygonHachureLines)(polygonList, o);
        return { type: 'fillSketch', ops: this.dashedLine(lines, o) };
    }
    dashedLine(lines, o) {
        const offset = o.dashOffset < 0 ? (o.hachureGap < 0 ? (o.strokeWidth * 4) : o.hachureGap) : o.dashOffset;
        const gap = o.dashGap < 0 ? (o.hachureGap < 0 ? (o.strokeWidth * 4) : o.hachureGap) : o.dashGap;
        const ops = [];
        lines.forEach((line) => {
            const length = (0,_geometry__WEBPACK_IMPORTED_MODULE_0__.lineLength)(line);
            const count = Math.floor(length / (offset + gap));
            const startOffset = (length + gap - (count * (offset + gap))) / 2;
            let p1 = line[0];
            let p2 = line[1];
            if (p1[0] > p2[0]) {
                p1 = line[1];
                p2 = line[0];
            }
            const alpha = Math.atan((p2[1] - p1[1]) / (p2[0] - p1[0]));
            for (let i = 0; i < count; i++) {
                const lstart = i * (offset + gap);
                const lend = lstart + offset;
                const start = [p1[0] + (lstart * Math.cos(alpha)) + (startOffset * Math.cos(alpha)), p1[1] + lstart * Math.sin(alpha) + (startOffset * Math.sin(alpha))];
                const end = [p1[0] + (lend * Math.cos(alpha)) + (startOffset * Math.cos(alpha)), p1[1] + (lend * Math.sin(alpha)) + (startOffset * Math.sin(alpha))];
                ops.push(...this.helper.doubleLineOps(start[0], start[1], end[0], end[1], o));
            }
        });
        return ops;
    }
}
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JvdWdoanMvYmluL2ZpbGxlcnMvZGFzaGVkLWZpbGxlci5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBeUM7QUFDaUI7QUFDbkQ7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQix1RUFBbUI7QUFDekMsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixxREFBVTtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsV0FBVztBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yb3VnaGpzL2Jpbi9maWxsZXJzL2Rhc2hlZC1maWxsZXIuanM/YTg4YyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBsaW5lTGVuZ3RoIH0gZnJvbSAnLi4vZ2VvbWV0cnknO1xuaW1wb3J0IHsgcG9seWdvbkhhY2h1cmVMaW5lcyB9IGZyb20gJy4vc2Nhbi1saW5lLWhhY2h1cmUnO1xuZXhwb3J0IGNsYXNzIERhc2hlZEZpbGxlciB7XG4gICAgY29uc3RydWN0b3IoaGVscGVyKSB7XG4gICAgICAgIHRoaXMuaGVscGVyID0gaGVscGVyO1xuICAgIH1cbiAgICBmaWxsUG9seWdvbnMocG9seWdvbkxpc3QsIG8pIHtcbiAgICAgICAgY29uc3QgbGluZXMgPSBwb2x5Z29uSGFjaHVyZUxpbmVzKHBvbHlnb25MaXN0LCBvKTtcbiAgICAgICAgcmV0dXJuIHsgdHlwZTogJ2ZpbGxTa2V0Y2gnLCBvcHM6IHRoaXMuZGFzaGVkTGluZShsaW5lcywgbykgfTtcbiAgICB9XG4gICAgZGFzaGVkTGluZShsaW5lcywgbykge1xuICAgICAgICBjb25zdCBvZmZzZXQgPSBvLmRhc2hPZmZzZXQgPCAwID8gKG8uaGFjaHVyZUdhcCA8IDAgPyAoby5zdHJva2VXaWR0aCAqIDQpIDogby5oYWNodXJlR2FwKSA6IG8uZGFzaE9mZnNldDtcbiAgICAgICAgY29uc3QgZ2FwID0gby5kYXNoR2FwIDwgMCA/IChvLmhhY2h1cmVHYXAgPCAwID8gKG8uc3Ryb2tlV2lkdGggKiA0KSA6IG8uaGFjaHVyZUdhcCkgOiBvLmRhc2hHYXA7XG4gICAgICAgIGNvbnN0IG9wcyA9IFtdO1xuICAgICAgICBsaW5lcy5mb3JFYWNoKChsaW5lKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsZW5ndGggPSBsaW5lTGVuZ3RoKGxpbmUpO1xuICAgICAgICAgICAgY29uc3QgY291bnQgPSBNYXRoLmZsb29yKGxlbmd0aCAvIChvZmZzZXQgKyBnYXApKTtcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0T2Zmc2V0ID0gKGxlbmd0aCArIGdhcCAtIChjb3VudCAqIChvZmZzZXQgKyBnYXApKSkgLyAyO1xuICAgICAgICAgICAgbGV0IHAxID0gbGluZVswXTtcbiAgICAgICAgICAgIGxldCBwMiA9IGxpbmVbMV07XG4gICAgICAgICAgICBpZiAocDFbMF0gPiBwMlswXSkge1xuICAgICAgICAgICAgICAgIHAxID0gbGluZVsxXTtcbiAgICAgICAgICAgICAgICBwMiA9IGxpbmVbMF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBhbHBoYSA9IE1hdGguYXRhbigocDJbMV0gLSBwMVsxXSkgLyAocDJbMF0gLSBwMVswXSkpO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbHN0YXJ0ID0gaSAqIChvZmZzZXQgKyBnYXApO1xuICAgICAgICAgICAgICAgIGNvbnN0IGxlbmQgPSBsc3RhcnQgKyBvZmZzZXQ7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhcnQgPSBbcDFbMF0gKyAobHN0YXJ0ICogTWF0aC5jb3MoYWxwaGEpKSArIChzdGFydE9mZnNldCAqIE1hdGguY29zKGFscGhhKSksIHAxWzFdICsgbHN0YXJ0ICogTWF0aC5zaW4oYWxwaGEpICsgKHN0YXJ0T2Zmc2V0ICogTWF0aC5zaW4oYWxwaGEpKV07XG4gICAgICAgICAgICAgICAgY29uc3QgZW5kID0gW3AxWzBdICsgKGxlbmQgKiBNYXRoLmNvcyhhbHBoYSkpICsgKHN0YXJ0T2Zmc2V0ICogTWF0aC5jb3MoYWxwaGEpKSwgcDFbMV0gKyAobGVuZCAqIE1hdGguc2luKGFscGhhKSkgKyAoc3RhcnRPZmZzZXQgKiBNYXRoLnNpbihhbHBoYSkpXTtcbiAgICAgICAgICAgICAgICBvcHMucHVzaCguLi50aGlzLmhlbHBlci5kb3VibGVMaW5lT3BzKHN0YXJ0WzBdLCBzdGFydFsxXSwgZW5kWzBdLCBlbmRbMV0sIG8pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBvcHM7XG4gICAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9
//# sourceURL=webpack-internal:///../../../node_modules/roughjs/bin/fillers/dashed-filler.js
`);
              }
            ),
            /***/
            "../../../node_modules/roughjs/bin/fillers/dot-filler.js": (
              /*!***************************************************************!*\
                !*** ../../../node_modules/roughjs/bin/fillers/dot-filler.js ***!
                \***************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "DotFiller": () => (/* binding */ DotFiller)
/* harmony export */ });
/* harmony import */ var _geometry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../geometry */ "../../../node_modules/roughjs/bin/geometry.js");
/* harmony import */ var _scan_line_hachure__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./scan-line-hachure */ "../../../node_modules/roughjs/bin/fillers/scan-line-hachure.js");


class DotFiller {
    constructor(helper) {
        this.helper = helper;
    }
    fillPolygons(polygonList, o) {
        o = Object.assign({}, o, { hachureAngle: 0 });
        const lines = (0,_scan_line_hachure__WEBPACK_IMPORTED_MODULE_1__.polygonHachureLines)(polygonList, o);
        return this.dotsOnLines(lines, o);
    }
    dotsOnLines(lines, o) {
        const ops = [];
        let gap = o.hachureGap;
        if (gap < 0) {
            gap = o.strokeWidth * 4;
        }
        gap = Math.max(gap, 0.1);
        let fweight = o.fillWeight;
        if (fweight < 0) {
            fweight = o.strokeWidth / 2;
        }
        const ro = gap / 4;
        for (const line of lines) {
            const length = (0,_geometry__WEBPACK_IMPORTED_MODULE_0__.lineLength)(line);
            const dl = length / gap;
            const count = Math.ceil(dl) - 1;
            const offset = length - (count * gap);
            const x = ((line[0][0] + line[1][0]) / 2) - (gap / 4);
            const minY = Math.min(line[0][1], line[1][1]);
            for (let i = 0; i < count; i++) {
                const y = minY + offset + (i * gap);
                const cx = (x - ro) + Math.random() * 2 * ro;
                const cy = (y - ro) + Math.random() * 2 * ro;
                const el = this.helper.ellipse(cx, cy, fweight, fweight, o);
                ops.push(...el.ops);
            }
        }
        return { type: 'fillSketch', ops };
    }
}
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JvdWdoanMvYmluL2ZpbGxlcnMvZG90LWZpbGxlci5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBeUM7QUFDaUI7QUFDbkQ7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixPQUFPLGlCQUFpQjtBQUNwRCxzQkFBc0IsdUVBQW1CO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixxREFBVTtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLFdBQVc7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcm91Z2hqcy9iaW4vZmlsbGVycy9kb3QtZmlsbGVyLmpzP2RiN2UiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbGluZUxlbmd0aCB9IGZyb20gJy4uL2dlb21ldHJ5JztcbmltcG9ydCB7IHBvbHlnb25IYWNodXJlTGluZXMgfSBmcm9tICcuL3NjYW4tbGluZS1oYWNodXJlJztcbmV4cG9ydCBjbGFzcyBEb3RGaWxsZXIge1xuICAgIGNvbnN0cnVjdG9yKGhlbHBlcikge1xuICAgICAgICB0aGlzLmhlbHBlciA9IGhlbHBlcjtcbiAgICB9XG4gICAgZmlsbFBvbHlnb25zKHBvbHlnb25MaXN0LCBvKSB7XG4gICAgICAgIG8gPSBPYmplY3QuYXNzaWduKHt9LCBvLCB7IGhhY2h1cmVBbmdsZTogMCB9KTtcbiAgICAgICAgY29uc3QgbGluZXMgPSBwb2x5Z29uSGFjaHVyZUxpbmVzKHBvbHlnb25MaXN0LCBvKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZG90c09uTGluZXMobGluZXMsIG8pO1xuICAgIH1cbiAgICBkb3RzT25MaW5lcyhsaW5lcywgbykge1xuICAgICAgICBjb25zdCBvcHMgPSBbXTtcbiAgICAgICAgbGV0IGdhcCA9IG8uaGFjaHVyZUdhcDtcbiAgICAgICAgaWYgKGdhcCA8IDApIHtcbiAgICAgICAgICAgIGdhcCA9IG8uc3Ryb2tlV2lkdGggKiA0O1xuICAgICAgICB9XG4gICAgICAgIGdhcCA9IE1hdGgubWF4KGdhcCwgMC4xKTtcbiAgICAgICAgbGV0IGZ3ZWlnaHQgPSBvLmZpbGxXZWlnaHQ7XG4gICAgICAgIGlmIChmd2VpZ2h0IDwgMCkge1xuICAgICAgICAgICAgZndlaWdodCA9IG8uc3Ryb2tlV2lkdGggLyAyO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJvID0gZ2FwIC8gNDtcbiAgICAgICAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgICAgICAgICBjb25zdCBsZW5ndGggPSBsaW5lTGVuZ3RoKGxpbmUpO1xuICAgICAgICAgICAgY29uc3QgZGwgPSBsZW5ndGggLyBnYXA7XG4gICAgICAgICAgICBjb25zdCBjb3VudCA9IE1hdGguY2VpbChkbCkgLSAxO1xuICAgICAgICAgICAgY29uc3Qgb2Zmc2V0ID0gbGVuZ3RoIC0gKGNvdW50ICogZ2FwKTtcbiAgICAgICAgICAgIGNvbnN0IHggPSAoKGxpbmVbMF1bMF0gKyBsaW5lWzFdWzBdKSAvIDIpIC0gKGdhcCAvIDQpO1xuICAgICAgICAgICAgY29uc3QgbWluWSA9IE1hdGgubWluKGxpbmVbMF1bMV0sIGxpbmVbMV1bMV0pO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeSA9IG1pblkgKyBvZmZzZXQgKyAoaSAqIGdhcCk7XG4gICAgICAgICAgICAgICAgY29uc3QgY3ggPSAoeCAtIHJvKSArIE1hdGgucmFuZG9tKCkgKiAyICogcm87XG4gICAgICAgICAgICAgICAgY29uc3QgY3kgPSAoeSAtIHJvKSArIE1hdGgucmFuZG9tKCkgKiAyICogcm87XG4gICAgICAgICAgICAgICAgY29uc3QgZWwgPSB0aGlzLmhlbHBlci5lbGxpcHNlKGN4LCBjeSwgZndlaWdodCwgZndlaWdodCwgbyk7XG4gICAgICAgICAgICAgICAgb3BzLnB1c2goLi4uZWwub3BzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyB0eXBlOiAnZmlsbFNrZXRjaCcsIG9wcyB9O1xuICAgIH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==
//# sourceURL=webpack-internal:///../../../node_modules/roughjs/bin/fillers/dot-filler.js
`);
              }
            ),
            /***/
            "../../../node_modules/roughjs/bin/fillers/filler.js": (
              /*!***********************************************************!*\
                !*** ../../../node_modules/roughjs/bin/fillers/filler.js ***!
                \***********************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "getFiller": () => (/* binding */ getFiller)
/* harmony export */ });
/* harmony import */ var _hachure_filler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hachure-filler */ "../../../node_modules/roughjs/bin/fillers/hachure-filler.js");
/* harmony import */ var _zigzag_filler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./zigzag-filler */ "../../../node_modules/roughjs/bin/fillers/zigzag-filler.js");
/* harmony import */ var _hatch_filler__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./hatch-filler */ "../../../node_modules/roughjs/bin/fillers/hatch-filler.js");
/* harmony import */ var _dot_filler__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./dot-filler */ "../../../node_modules/roughjs/bin/fillers/dot-filler.js");
/* harmony import */ var _dashed_filler__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./dashed-filler */ "../../../node_modules/roughjs/bin/fillers/dashed-filler.js");
/* harmony import */ var _zigzag_line_filler__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./zigzag-line-filler */ "../../../node_modules/roughjs/bin/fillers/zigzag-line-filler.js");






const fillers = {};
function getFiller(o, helper) {
    let fillerName = o.fillStyle || 'hachure';
    if (!fillers[fillerName]) {
        switch (fillerName) {
            case 'zigzag':
                if (!fillers[fillerName]) {
                    fillers[fillerName] = new _zigzag_filler__WEBPACK_IMPORTED_MODULE_1__.ZigZagFiller(helper);
                }
                break;
            case 'cross-hatch':
                if (!fillers[fillerName]) {
                    fillers[fillerName] = new _hatch_filler__WEBPACK_IMPORTED_MODULE_2__.HatchFiller(helper);
                }
                break;
            case 'dots':
                if (!fillers[fillerName]) {
                    fillers[fillerName] = new _dot_filler__WEBPACK_IMPORTED_MODULE_3__.DotFiller(helper);
                }
                break;
            case 'dashed':
                if (!fillers[fillerName]) {
                    fillers[fillerName] = new _dashed_filler__WEBPACK_IMPORTED_MODULE_4__.DashedFiller(helper);
                }
                break;
            case 'zigzag-line':
                if (!fillers[fillerName]) {
                    fillers[fillerName] = new _zigzag_line_filler__WEBPACK_IMPORTED_MODULE_5__.ZigZagLineFiller(helper);
                }
                break;
            case 'hachure':
            default:
                fillerName = 'hachure';
                if (!fillers[fillerName]) {
                    fillers[fillerName] = new _hachure_filler__WEBPACK_IMPORTED_MODULE_0__.HachureFiller(helper);
                }
                break;
        }
    }
    return fillers[fillerName];
}
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JvdWdoanMvYmluL2ZpbGxlcnMvZmlsbGVyLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBaUQ7QUFDRjtBQUNGO0FBQ0o7QUFDTTtBQUNTO0FBQ3hEO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQThDLHdEQUFZO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQThDLHNEQUFXO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQThDLGtEQUFTO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQThDLHdEQUFZO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQThDLGlFQUFnQjtBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEMsMERBQWE7QUFDM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yb3VnaGpzL2Jpbi9maWxsZXJzL2ZpbGxlci5qcz9kZGVhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEhhY2h1cmVGaWxsZXIgfSBmcm9tICcuL2hhY2h1cmUtZmlsbGVyJztcbmltcG9ydCB7IFppZ1phZ0ZpbGxlciB9IGZyb20gJy4vemlnemFnLWZpbGxlcic7XG5pbXBvcnQgeyBIYXRjaEZpbGxlciB9IGZyb20gJy4vaGF0Y2gtZmlsbGVyJztcbmltcG9ydCB7IERvdEZpbGxlciB9IGZyb20gJy4vZG90LWZpbGxlcic7XG5pbXBvcnQgeyBEYXNoZWRGaWxsZXIgfSBmcm9tICcuL2Rhc2hlZC1maWxsZXInO1xuaW1wb3J0IHsgWmlnWmFnTGluZUZpbGxlciB9IGZyb20gJy4vemlnemFnLWxpbmUtZmlsbGVyJztcbmNvbnN0IGZpbGxlcnMgPSB7fTtcbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWxsZXIobywgaGVscGVyKSB7XG4gICAgbGV0IGZpbGxlck5hbWUgPSBvLmZpbGxTdHlsZSB8fCAnaGFjaHVyZSc7XG4gICAgaWYgKCFmaWxsZXJzW2ZpbGxlck5hbWVdKSB7XG4gICAgICAgIHN3aXRjaCAoZmlsbGVyTmFtZSkge1xuICAgICAgICAgICAgY2FzZSAnemlnemFnJzpcbiAgICAgICAgICAgICAgICBpZiAoIWZpbGxlcnNbZmlsbGVyTmFtZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgZmlsbGVyc1tmaWxsZXJOYW1lXSA9IG5ldyBaaWdaYWdGaWxsZXIoaGVscGVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdjcm9zcy1oYXRjaCc6XG4gICAgICAgICAgICAgICAgaWYgKCFmaWxsZXJzW2ZpbGxlck5hbWVdKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbGxlcnNbZmlsbGVyTmFtZV0gPSBuZXcgSGF0Y2hGaWxsZXIoaGVscGVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdkb3RzJzpcbiAgICAgICAgICAgICAgICBpZiAoIWZpbGxlcnNbZmlsbGVyTmFtZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgZmlsbGVyc1tmaWxsZXJOYW1lXSA9IG5ldyBEb3RGaWxsZXIoaGVscGVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdkYXNoZWQnOlxuICAgICAgICAgICAgICAgIGlmICghZmlsbGVyc1tmaWxsZXJOYW1lXSkge1xuICAgICAgICAgICAgICAgICAgICBmaWxsZXJzW2ZpbGxlck5hbWVdID0gbmV3IERhc2hlZEZpbGxlcihoZWxwZXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3ppZ3phZy1saW5lJzpcbiAgICAgICAgICAgICAgICBpZiAoIWZpbGxlcnNbZmlsbGVyTmFtZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgZmlsbGVyc1tmaWxsZXJOYW1lXSA9IG5ldyBaaWdaYWdMaW5lRmlsbGVyKGhlbHBlcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnaGFjaHVyZSc6XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGZpbGxlck5hbWUgPSAnaGFjaHVyZSc7XG4gICAgICAgICAgICAgICAgaWYgKCFmaWxsZXJzW2ZpbGxlck5hbWVdKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbGxlcnNbZmlsbGVyTmFtZV0gPSBuZXcgSGFjaHVyZUZpbGxlcihoZWxwZXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmlsbGVyc1tmaWxsZXJOYW1lXTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==
//# sourceURL=webpack-internal:///../../../node_modules/roughjs/bin/fillers/filler.js
`);
              }
            ),
            /***/
            "../../../node_modules/roughjs/bin/fillers/hachure-filler.js": (
              /*!*******************************************************************!*\
                !*** ../../../node_modules/roughjs/bin/fillers/hachure-filler.js ***!
                \*******************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "HachureFiller": () => (/* binding */ HachureFiller)
/* harmony export */ });
/* harmony import */ var _scan_line_hachure__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./scan-line-hachure */ "../../../node_modules/roughjs/bin/fillers/scan-line-hachure.js");

class HachureFiller {
    constructor(helper) {
        this.helper = helper;
    }
    fillPolygons(polygonList, o) {
        return this._fillPolygons(polygonList, o);
    }
    _fillPolygons(polygonList, o) {
        const lines = (0,_scan_line_hachure__WEBPACK_IMPORTED_MODULE_0__.polygonHachureLines)(polygonList, o);
        const ops = this.renderLines(lines, o);
        return { type: 'fillSketch', ops };
    }
    renderLines(lines, o) {
        const ops = [];
        for (const line of lines) {
            ops.push(...this.helper.doubleLineOps(line[0][0], line[0][1], line[1][0], line[1][1], o));
        }
        return ops;
    }
}
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JvdWdoanMvYmluL2ZpbGxlcnMvaGFjaHVyZS1maWxsZXIuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBMEQ7QUFDbkQ7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQix1RUFBbUI7QUFDekM7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yb3VnaGpzL2Jpbi9maWxsZXJzL2hhY2h1cmUtZmlsbGVyLmpzP2YxZmEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcG9seWdvbkhhY2h1cmVMaW5lcyB9IGZyb20gJy4vc2Nhbi1saW5lLWhhY2h1cmUnO1xuZXhwb3J0IGNsYXNzIEhhY2h1cmVGaWxsZXIge1xuICAgIGNvbnN0cnVjdG9yKGhlbHBlcikge1xuICAgICAgICB0aGlzLmhlbHBlciA9IGhlbHBlcjtcbiAgICB9XG4gICAgZmlsbFBvbHlnb25zKHBvbHlnb25MaXN0LCBvKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWxsUG9seWdvbnMocG9seWdvbkxpc3QsIG8pO1xuICAgIH1cbiAgICBfZmlsbFBvbHlnb25zKHBvbHlnb25MaXN0LCBvKSB7XG4gICAgICAgIGNvbnN0IGxpbmVzID0gcG9seWdvbkhhY2h1cmVMaW5lcyhwb2x5Z29uTGlzdCwgbyk7XG4gICAgICAgIGNvbnN0IG9wcyA9IHRoaXMucmVuZGVyTGluZXMobGluZXMsIG8pO1xuICAgICAgICByZXR1cm4geyB0eXBlOiAnZmlsbFNrZXRjaCcsIG9wcyB9O1xuICAgIH1cbiAgICByZW5kZXJMaW5lcyhsaW5lcywgbykge1xuICAgICAgICBjb25zdCBvcHMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgICAgICAgICBvcHMucHVzaCguLi50aGlzLmhlbHBlci5kb3VibGVMaW5lT3BzKGxpbmVbMF1bMF0sIGxpbmVbMF1bMV0sIGxpbmVbMV1bMF0sIGxpbmVbMV1bMV0sIG8pKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3BzO1xuICAgIH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==
//# sourceURL=webpack-internal:///../../../node_modules/roughjs/bin/fillers/hachure-filler.js
`);
              }
            ),
            /***/
            "../../../node_modules/roughjs/bin/fillers/hatch-filler.js": (
              /*!*****************************************************************!*\
                !*** ../../../node_modules/roughjs/bin/fillers/hatch-filler.js ***!
                \*****************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "HatchFiller": () => (/* binding */ HatchFiller)\n/* harmony export */ });\n/* harmony import */ var _hachure_filler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hachure-filler */ "../../../node_modules/roughjs/bin/fillers/hachure-filler.js");\n\nclass HatchFiller extends _hachure_filler__WEBPACK_IMPORTED_MODULE_0__.HachureFiller {\n    fillPolygons(polygonList, o) {\n        const set = this._fillPolygons(polygonList, o);\n        const o2 = Object.assign({}, o, { hachureAngle: o.hachureAngle + 90 });\n        const set2 = this._fillPolygons(polygonList, o2);\n        set.ops = set.ops.concat(set2.ops);\n        return set;\n    }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JvdWdoanMvYmluL2ZpbGxlcnMvaGF0Y2gtZmlsbGVyLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQWlEO0FBQzFDLDBCQUEwQiwwREFBYTtBQUM5QztBQUNBO0FBQ0EsbUNBQW1DLE9BQU8sbUNBQW1DO0FBQzdFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JvdWdoanMvYmluL2ZpbGxlcnMvaGF0Y2gtZmlsbGVyLmpzP2IwOTkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSGFjaHVyZUZpbGxlciB9IGZyb20gJy4vaGFjaHVyZS1maWxsZXInO1xuZXhwb3J0IGNsYXNzIEhhdGNoRmlsbGVyIGV4dGVuZHMgSGFjaHVyZUZpbGxlciB7XG4gICAgZmlsbFBvbHlnb25zKHBvbHlnb25MaXN0LCBvKSB7XG4gICAgICAgIGNvbnN0IHNldCA9IHRoaXMuX2ZpbGxQb2x5Z29ucyhwb2x5Z29uTGlzdCwgbyk7XG4gICAgICAgIGNvbnN0IG8yID0gT2JqZWN0LmFzc2lnbih7fSwgbywgeyBoYWNodXJlQW5nbGU6IG8uaGFjaHVyZUFuZ2xlICsgOTAgfSk7XG4gICAgICAgIGNvbnN0IHNldDIgPSB0aGlzLl9maWxsUG9seWdvbnMocG9seWdvbkxpc3QsIG8yKTtcbiAgICAgICAgc2V0Lm9wcyA9IHNldC5vcHMuY29uY2F0KHNldDIub3BzKTtcbiAgICAgICAgcmV0dXJuIHNldDtcbiAgICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/roughjs/bin/fillers/hatch-filler.js\n');
              }
            ),
            /***/
            "../../../node_modules/roughjs/bin/fillers/scan-line-hachure.js": (
              /*!**********************************************************************!*\
                !*** ../../../node_modules/roughjs/bin/fillers/scan-line-hachure.js ***!
                \**********************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "polygonHachureLines": () => (/* binding */ polygonHachureLines)\n/* harmony export */ });\n/* harmony import */ var hachure_fill__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! hachure-fill */ "../../../node_modules/hachure-fill/bin/hachure.js");\n\nfunction polygonHachureLines(polygonList, o) {\n    var _a;\n    const angle = o.hachureAngle + 90;\n    let gap = o.hachureGap;\n    if (gap < 0) {\n        gap = o.strokeWidth * 4;\n    }\n    gap = Math.max(gap, 0.1);\n    let skipOffset = 1;\n    if (o.roughness >= 1) {\n        if ((((_a = o.randomizer) === null || _a === void 0 ? void 0 : _a.next()) || Math.random()) > 0.7) {\n            skipOffset = gap;\n        }\n    }\n    return (0,hachure_fill__WEBPACK_IMPORTED_MODULE_0__.hachureLines)(polygonList, gap, angle, skipOffset || 1);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JvdWdoanMvYmluL2ZpbGxlcnMvc2Nhbi1saW5lLWhhY2h1cmUuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBNEM7QUFDckM7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsMERBQVk7QUFDdkIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JvdWdoanMvYmluL2ZpbGxlcnMvc2Nhbi1saW5lLWhhY2h1cmUuanM/MDRhMSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBoYWNodXJlTGluZXMgfSBmcm9tICdoYWNodXJlLWZpbGwnO1xuZXhwb3J0IGZ1bmN0aW9uIHBvbHlnb25IYWNodXJlTGluZXMocG9seWdvbkxpc3QsIG8pIHtcbiAgICB2YXIgX2E7XG4gICAgY29uc3QgYW5nbGUgPSBvLmhhY2h1cmVBbmdsZSArIDkwO1xuICAgIGxldCBnYXAgPSBvLmhhY2h1cmVHYXA7XG4gICAgaWYgKGdhcCA8IDApIHtcbiAgICAgICAgZ2FwID0gby5zdHJva2VXaWR0aCAqIDQ7XG4gICAgfVxuICAgIGdhcCA9IE1hdGgubWF4KGdhcCwgMC4xKTtcbiAgICBsZXQgc2tpcE9mZnNldCA9IDE7XG4gICAgaWYgKG8ucm91Z2huZXNzID49IDEpIHtcbiAgICAgICAgaWYgKCgoKF9hID0gby5yYW5kb21pemVyKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubmV4dCgpKSB8fCBNYXRoLnJhbmRvbSgpKSA+IDAuNykge1xuICAgICAgICAgICAgc2tpcE9mZnNldCA9IGdhcDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaGFjaHVyZUxpbmVzKHBvbHlnb25MaXN0LCBnYXAsIGFuZ2xlLCBza2lwT2Zmc2V0IHx8IDEpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/roughjs/bin/fillers/scan-line-hachure.js\n');
              }
            ),
            /***/
            "../../../node_modules/roughjs/bin/fillers/zigzag-filler.js": (
              /*!******************************************************************!*\
                !*** ../../../node_modules/roughjs/bin/fillers/zigzag-filler.js ***!
                \******************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "ZigZagFiller": () => (/* binding */ ZigZagFiller)
/* harmony export */ });
/* harmony import */ var _hachure_filler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hachure-filler */ "../../../node_modules/roughjs/bin/fillers/hachure-filler.js");
/* harmony import */ var _scan_line_hachure__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./scan-line-hachure */ "../../../node_modules/roughjs/bin/fillers/scan-line-hachure.js");
/* harmony import */ var _geometry__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../geometry */ "../../../node_modules/roughjs/bin/geometry.js");



class ZigZagFiller extends _hachure_filler__WEBPACK_IMPORTED_MODULE_0__.HachureFiller {
    fillPolygons(polygonList, o) {
        let gap = o.hachureGap;
        if (gap < 0) {
            gap = o.strokeWidth * 4;
        }
        gap = Math.max(gap, 0.1);
        const o2 = Object.assign({}, o, { hachureGap: gap });
        const lines = (0,_scan_line_hachure__WEBPACK_IMPORTED_MODULE_1__.polygonHachureLines)(polygonList, o2);
        const zigZagAngle = (Math.PI / 180) * o.hachureAngle;
        const zigzagLines = [];
        const dgx = gap * 0.5 * Math.cos(zigZagAngle);
        const dgy = gap * 0.5 * Math.sin(zigZagAngle);
        for (const [p1, p2] of lines) {
            if ((0,_geometry__WEBPACK_IMPORTED_MODULE_2__.lineLength)([p1, p2])) {
                zigzagLines.push([
                    [p1[0] - dgx, p1[1] + dgy],
                    [...p2],
                ], [
                    [p1[0] + dgx, p1[1] - dgy],
                    [...p2],
                ]);
            }
        }
        const ops = this.renderLines(zigzagLines, o);
        return { type: 'fillSketch', ops };
    }
}
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JvdWdoanMvYmluL2ZpbGxlcnMvemlnemFnLWZpbGxlci5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQWlEO0FBQ1M7QUFDakI7QUFDbEMsMkJBQTJCLDBEQUFhO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyxPQUFPLGlCQUFpQjtBQUMzRCxzQkFBc0IsdUVBQW1CO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IscURBQVU7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcm91Z2hqcy9iaW4vZmlsbGVycy96aWd6YWctZmlsbGVyLmpzP2I1YWEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSGFjaHVyZUZpbGxlciB9IGZyb20gJy4vaGFjaHVyZS1maWxsZXInO1xuaW1wb3J0IHsgcG9seWdvbkhhY2h1cmVMaW5lcyB9IGZyb20gJy4vc2Nhbi1saW5lLWhhY2h1cmUnO1xuaW1wb3J0IHsgbGluZUxlbmd0aCB9IGZyb20gJy4uL2dlb21ldHJ5JztcbmV4cG9ydCBjbGFzcyBaaWdaYWdGaWxsZXIgZXh0ZW5kcyBIYWNodXJlRmlsbGVyIHtcbiAgICBmaWxsUG9seWdvbnMocG9seWdvbkxpc3QsIG8pIHtcbiAgICAgICAgbGV0IGdhcCA9IG8uaGFjaHVyZUdhcDtcbiAgICAgICAgaWYgKGdhcCA8IDApIHtcbiAgICAgICAgICAgIGdhcCA9IG8uc3Ryb2tlV2lkdGggKiA0O1xuICAgICAgICB9XG4gICAgICAgIGdhcCA9IE1hdGgubWF4KGdhcCwgMC4xKTtcbiAgICAgICAgY29uc3QgbzIgPSBPYmplY3QuYXNzaWduKHt9LCBvLCB7IGhhY2h1cmVHYXA6IGdhcCB9KTtcbiAgICAgICAgY29uc3QgbGluZXMgPSBwb2x5Z29uSGFjaHVyZUxpbmVzKHBvbHlnb25MaXN0LCBvMik7XG4gICAgICAgIGNvbnN0IHppZ1phZ0FuZ2xlID0gKE1hdGguUEkgLyAxODApICogby5oYWNodXJlQW5nbGU7XG4gICAgICAgIGNvbnN0IHppZ3phZ0xpbmVzID0gW107XG4gICAgICAgIGNvbnN0IGRneCA9IGdhcCAqIDAuNSAqIE1hdGguY29zKHppZ1phZ0FuZ2xlKTtcbiAgICAgICAgY29uc3QgZGd5ID0gZ2FwICogMC41ICogTWF0aC5zaW4oemlnWmFnQW5nbGUpO1xuICAgICAgICBmb3IgKGNvbnN0IFtwMSwgcDJdIG9mIGxpbmVzKSB7XG4gICAgICAgICAgICBpZiAobGluZUxlbmd0aChbcDEsIHAyXSkpIHtcbiAgICAgICAgICAgICAgICB6aWd6YWdMaW5lcy5wdXNoKFtcbiAgICAgICAgICAgICAgICAgICAgW3AxWzBdIC0gZGd4LCBwMVsxXSArIGRneV0sXG4gICAgICAgICAgICAgICAgICAgIFsuLi5wMl0sXG4gICAgICAgICAgICAgICAgXSwgW1xuICAgICAgICAgICAgICAgICAgICBbcDFbMF0gKyBkZ3gsIHAxWzFdIC0gZGd5XSxcbiAgICAgICAgICAgICAgICAgICAgWy4uLnAyXSxcbiAgICAgICAgICAgICAgICBdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvcHMgPSB0aGlzLnJlbmRlckxpbmVzKHppZ3phZ0xpbmVzLCBvKTtcbiAgICAgICAgcmV0dXJuIHsgdHlwZTogJ2ZpbGxTa2V0Y2gnLCBvcHMgfTtcbiAgICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=
//# sourceURL=webpack-internal:///../../../node_modules/roughjs/bin/fillers/zigzag-filler.js
`);
              }
            ),
            /***/
            "../../../node_modules/roughjs/bin/fillers/zigzag-line-filler.js": (
              /*!***********************************************************************!*\
                !*** ../../../node_modules/roughjs/bin/fillers/zigzag-line-filler.js ***!
                \***********************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "ZigZagLineFiller": () => (/* binding */ ZigZagLineFiller)
/* harmony export */ });
/* harmony import */ var _geometry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../geometry */ "../../../node_modules/roughjs/bin/geometry.js");
/* harmony import */ var _scan_line_hachure__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./scan-line-hachure */ "../../../node_modules/roughjs/bin/fillers/scan-line-hachure.js");


class ZigZagLineFiller {
    constructor(helper) {
        this.helper = helper;
    }
    fillPolygons(polygonList, o) {
        const gap = o.hachureGap < 0 ? (o.strokeWidth * 4) : o.hachureGap;
        const zo = o.zigzagOffset < 0 ? gap : o.zigzagOffset;
        o = Object.assign({}, o, { hachureGap: gap + zo });
        const lines = (0,_scan_line_hachure__WEBPACK_IMPORTED_MODULE_1__.polygonHachureLines)(polygonList, o);
        return { type: 'fillSketch', ops: this.zigzagLines(lines, zo, o) };
    }
    zigzagLines(lines, zo, o) {
        const ops = [];
        lines.forEach((line) => {
            const length = (0,_geometry__WEBPACK_IMPORTED_MODULE_0__.lineLength)(line);
            const count = Math.round(length / (2 * zo));
            let p1 = line[0];
            let p2 = line[1];
            if (p1[0] > p2[0]) {
                p1 = line[1];
                p2 = line[0];
            }
            const alpha = Math.atan((p2[1] - p1[1]) / (p2[0] - p1[0]));
            for (let i = 0; i < count; i++) {
                const lstart = i * 2 * zo;
                const lend = (i + 1) * 2 * zo;
                const dz = Math.sqrt(2 * Math.pow(zo, 2));
                const start = [p1[0] + (lstart * Math.cos(alpha)), p1[1] + lstart * Math.sin(alpha)];
                const end = [p1[0] + (lend * Math.cos(alpha)), p1[1] + (lend * Math.sin(alpha))];
                const middle = [start[0] + dz * Math.cos(alpha + Math.PI / 4), start[1] + dz * Math.sin(alpha + Math.PI / 4)];
                ops.push(...this.helper.doubleLineOps(start[0], start[1], middle[0], middle[1], o), ...this.helper.doubleLineOps(middle[0], middle[1], end[0], end[1], o));
            }
        });
        return ops;
    }
}
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JvdWdoanMvYmluL2ZpbGxlcnMvemlnemFnLWxpbmUtZmlsbGVyLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUF5QztBQUNpQjtBQUNuRDtBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixPQUFPLHNCQUFzQjtBQUN6RCxzQkFBc0IsdUVBQW1CO0FBQ3pDLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixxREFBVTtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLFdBQVc7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JvdWdoanMvYmluL2ZpbGxlcnMvemlnemFnLWxpbmUtZmlsbGVyLmpzPzkwNDUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbGluZUxlbmd0aCB9IGZyb20gJy4uL2dlb21ldHJ5JztcbmltcG9ydCB7IHBvbHlnb25IYWNodXJlTGluZXMgfSBmcm9tICcuL3NjYW4tbGluZS1oYWNodXJlJztcbmV4cG9ydCBjbGFzcyBaaWdaYWdMaW5lRmlsbGVyIHtcbiAgICBjb25zdHJ1Y3RvcihoZWxwZXIpIHtcbiAgICAgICAgdGhpcy5oZWxwZXIgPSBoZWxwZXI7XG4gICAgfVxuICAgIGZpbGxQb2x5Z29ucyhwb2x5Z29uTGlzdCwgbykge1xuICAgICAgICBjb25zdCBnYXAgPSBvLmhhY2h1cmVHYXAgPCAwID8gKG8uc3Ryb2tlV2lkdGggKiA0KSA6IG8uaGFjaHVyZUdhcDtcbiAgICAgICAgY29uc3Qgem8gPSBvLnppZ3phZ09mZnNldCA8IDAgPyBnYXAgOiBvLnppZ3phZ09mZnNldDtcbiAgICAgICAgbyA9IE9iamVjdC5hc3NpZ24oe30sIG8sIHsgaGFjaHVyZUdhcDogZ2FwICsgem8gfSk7XG4gICAgICAgIGNvbnN0IGxpbmVzID0gcG9seWdvbkhhY2h1cmVMaW5lcyhwb2x5Z29uTGlzdCwgbyk7XG4gICAgICAgIHJldHVybiB7IHR5cGU6ICdmaWxsU2tldGNoJywgb3BzOiB0aGlzLnppZ3phZ0xpbmVzKGxpbmVzLCB6bywgbykgfTtcbiAgICB9XG4gICAgemlnemFnTGluZXMobGluZXMsIHpvLCBvKSB7XG4gICAgICAgIGNvbnN0IG9wcyA9IFtdO1xuICAgICAgICBsaW5lcy5mb3JFYWNoKChsaW5lKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsZW5ndGggPSBsaW5lTGVuZ3RoKGxpbmUpO1xuICAgICAgICAgICAgY29uc3QgY291bnQgPSBNYXRoLnJvdW5kKGxlbmd0aCAvICgyICogem8pKTtcbiAgICAgICAgICAgIGxldCBwMSA9IGxpbmVbMF07XG4gICAgICAgICAgICBsZXQgcDIgPSBsaW5lWzFdO1xuICAgICAgICAgICAgaWYgKHAxWzBdID4gcDJbMF0pIHtcbiAgICAgICAgICAgICAgICBwMSA9IGxpbmVbMV07XG4gICAgICAgICAgICAgICAgcDIgPSBsaW5lWzBdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgYWxwaGEgPSBNYXRoLmF0YW4oKHAyWzFdIC0gcDFbMV0pIC8gKHAyWzBdIC0gcDFbMF0pKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY291bnQ7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxzdGFydCA9IGkgKiAyICogem87XG4gICAgICAgICAgICAgICAgY29uc3QgbGVuZCA9IChpICsgMSkgKiAyICogem87XG4gICAgICAgICAgICAgICAgY29uc3QgZHogPSBNYXRoLnNxcnQoMiAqIE1hdGgucG93KHpvLCAyKSk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhcnQgPSBbcDFbMF0gKyAobHN0YXJ0ICogTWF0aC5jb3MoYWxwaGEpKSwgcDFbMV0gKyBsc3RhcnQgKiBNYXRoLnNpbihhbHBoYSldO1xuICAgICAgICAgICAgICAgIGNvbnN0IGVuZCA9IFtwMVswXSArIChsZW5kICogTWF0aC5jb3MoYWxwaGEpKSwgcDFbMV0gKyAobGVuZCAqIE1hdGguc2luKGFscGhhKSldO1xuICAgICAgICAgICAgICAgIGNvbnN0IG1pZGRsZSA9IFtzdGFydFswXSArIGR6ICogTWF0aC5jb3MoYWxwaGEgKyBNYXRoLlBJIC8gNCksIHN0YXJ0WzFdICsgZHogKiBNYXRoLnNpbihhbHBoYSArIE1hdGguUEkgLyA0KV07XG4gICAgICAgICAgICAgICAgb3BzLnB1c2goLi4udGhpcy5oZWxwZXIuZG91YmxlTGluZU9wcyhzdGFydFswXSwgc3RhcnRbMV0sIG1pZGRsZVswXSwgbWlkZGxlWzFdLCBvKSwgLi4udGhpcy5oZWxwZXIuZG91YmxlTGluZU9wcyhtaWRkbGVbMF0sIG1pZGRsZVsxXSwgZW5kWzBdLCBlbmRbMV0sIG8pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBvcHM7XG4gICAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9
//# sourceURL=webpack-internal:///../../../node_modules/roughjs/bin/fillers/zigzag-line-filler.js
`);
              }
            ),
            /***/
            "../../../node_modules/roughjs/bin/generator.js": (
              /*!******************************************************!*\
                !*** ../../../node_modules/roughjs/bin/generator.js ***!
                \******************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"RoughGenerator\": () => (/* binding */ RoughGenerator)\n/* harmony export */ });\n/* harmony import */ var _renderer_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./renderer.js */ \"../../../node_modules/roughjs/bin/renderer.js\");\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./math.js */ \"../../../node_modules/roughjs/bin/math.js\");\n/* harmony import */ var points_on_curve_lib_curve_to_bezier_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! points-on-curve/lib/curve-to-bezier.js */ \"../../../node_modules/roughjs/node_modules/points-on-curve/lib/curve-to-bezier.js\");\n/* harmony import */ var points_on_curve__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! points-on-curve */ \"../../../node_modules/roughjs/node_modules/points-on-curve/lib/index.js\");\n/* harmony import */ var points_on_path__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! points-on-path */ \"../../../node_modules/points-on-path/lib/index.js\");\n\n\n\n\n\nconst NOS = 'none';\nclass RoughGenerator {\n    constructor(config) {\n        this.defaultOptions = {\n            maxRandomnessOffset: 2,\n            roughness: 1,\n            bowing: 1,\n            stroke: '#000',\n            strokeWidth: 1,\n            curveTightness: 0,\n            curveFitting: 0.95,\n            curveStepCount: 9,\n            fillStyle: 'hachure',\n            fillWeight: -1,\n            hachureAngle: -41,\n            hachureGap: -1,\n            dashOffset: -1,\n            dashGap: -1,\n            zigzagOffset: -1,\n            seed: 0,\n            disableMultiStroke: false,\n            disableMultiStrokeFill: false,\n            preserveVertices: false,\n            fillShapeRoughnessGain: 0.8,\n        };\n        this.config = config || {};\n        if (this.config.options) {\n            this.defaultOptions = this._o(this.config.options);\n        }\n    }\n    static newSeed() {\n        return (0,_math_js__WEBPACK_IMPORTED_MODULE_1__.randomSeed)();\n    }\n    _o(options) {\n        return options ? Object.assign({}, this.defaultOptions, options) : this.defaultOptions;\n    }\n    _d(shape, sets, options) {\n        return { shape, sets: sets || [], options: options || this.defaultOptions };\n    }\n    line(x1, y1, x2, y2, options) {\n        const o = this._o(options);\n        return this._d('line', [(0,_renderer_js__WEBPACK_IMPORTED_MODULE_0__.line)(x1, y1, x2, y2, o)], o);\n    }\n    rectangle(x, y, width, height, options) {\n        const o = this._o(options);\n        const paths = [];\n        const outline = (0,_renderer_js__WEBPACK_IMPORTED_MODULE_0__.rectangle)(x, y, width, height, o);\n        if (o.fill) {\n            const points = [[x, y], [x + width, y], [x + width, y + height], [x, y + height]];\n            if (o.fillStyle === 'solid') {\n                paths.push((0,_renderer_js__WEBPACK_IMPORTED_MODULE_0__.solidFillPolygon)([points], o));\n            }\n            else {\n                paths.push((0,_renderer_js__WEBPACK_IMPORTED_MODULE_0__.patternFillPolygons)([points], o));\n            }\n        }\n        if (o.stroke !== NOS) {\n            paths.push(outline);\n        }\n        return this._d('rectangle', paths, o);\n    }\n    ellipse(x, y, width, height, options) {\n        const o = this._o(options);\n        const paths = [];\n        const ellipseParams = (0,_renderer_js__WEBPACK_IMPORTED_MODULE_0__.generateEllipseParams)(width, height, o);\n        const ellipseResponse = (0,_renderer_js__WEBPACK_IMPORTED_MODULE_0__.ellipseWithParams)(x, y, o, ellipseParams);\n        if (o.fill) {\n            if (o.fillStyle === 'solid') {\n                const shape = (0,_renderer_js__WEBPACK_IMPORTED_MODULE_0__.ellipseWithParams)(x, y, o, ellipseParams).opset;\n                shape.type = 'fillPath';\n                paths.push(shape);\n            }\n            else {\n                paths.push((0,_renderer_js__WEBPACK_IMPORTED_MODULE_0__.patternFillPolygons)([ellipseResponse.estimatedPoints], o));\n            }\n        }\n        if (o.stroke !== NOS) {\n            paths.push(ellipseResponse.opset);\n        }\n        return this._d('ellipse', paths, o);\n    }\n    circle(x, y, diameter, options) {\n        const ret = this.ellipse(x, y, diameter, diameter, options);\n        ret.shape = 'circle';\n        return ret;\n    }\n    linearPath(points, options) {\n        const o = this._o(options);\n        return this._d('linearPath', [(0,_renderer_js__WEBPACK_IMPORTED_MODULE_0__.linearPath)(points, false, o)], o);\n    }\n    arc(x, y, width, height, start, stop, closed = false, options) {\n        const o = this._o(options);\n        const paths = [];\n        const outline = (0,_renderer_js__WEBPACK_IMPORTED_MODULE_0__.arc)(x, y, width, height, start, stop, closed, true, o);\n        if (closed && o.fill) {\n            if (o.fillStyle === 'solid') {\n                const fillOptions = Object.assign({}, o);\n                fillOptions.disableMultiStroke = true;\n                const shape = (0,_renderer_js__WEBPACK_IMPORTED_MODULE_0__.arc)(x, y, width, height, start, stop, true, false, fillOptions);\n                shape.type = 'fillPath';\n                paths.push(shape);\n            }\n            else {\n                paths.push((0,_renderer_js__WEBPACK_IMPORTED_MODULE_0__.patternFillArc)(x, y, width, height, start, stop, o));\n            }\n        }\n        if (o.stroke !== NOS) {\n            paths.push(outline);\n        }\n        return this._d('arc', paths, o);\n    }\n    curve(points, options) {\n        const o = this._o(options);\n        const paths = [];\n        const outline = (0,_renderer_js__WEBPACK_IMPORTED_MODULE_0__.curve)(points, o);\n        if (o.fill && o.fill !== NOS && points.length >= 3) {\n            if (o.fillStyle === 'solid') {\n                const fillShape = (0,_renderer_js__WEBPACK_IMPORTED_MODULE_0__.curve)(points, Object.assign(Object.assign({}, o), { disableMultiStroke: true, roughness: o.roughness ? (o.roughness + o.fillShapeRoughnessGain) : 0 }));\n                paths.push({\n                    type: 'fillPath',\n                    ops: this._mergedShape(fillShape.ops),\n                });\n            }\n            else {\n                const bcurve = (0,points_on_curve_lib_curve_to_bezier_js__WEBPACK_IMPORTED_MODULE_2__.curveToBezier)(points);\n                const polyPoints = (0,points_on_curve__WEBPACK_IMPORTED_MODULE_3__.pointsOnBezierCurves)(bcurve, 10, (1 + o.roughness) / 2);\n                paths.push((0,_renderer_js__WEBPACK_IMPORTED_MODULE_0__.patternFillPolygons)([polyPoints], o));\n            }\n        }\n        if (o.stroke !== NOS) {\n            paths.push(outline);\n        }\n        return this._d('curve', paths, o);\n    }\n    polygon(points, options) {\n        const o = this._o(options);\n        const paths = [];\n        const outline = (0,_renderer_js__WEBPACK_IMPORTED_MODULE_0__.linearPath)(points, true, o);\n        if (o.fill) {\n            if (o.fillStyle === 'solid') {\n                paths.push((0,_renderer_js__WEBPACK_IMPORTED_MODULE_0__.solidFillPolygon)([points], o));\n            }\n            else {\n                paths.push((0,_renderer_js__WEBPACK_IMPORTED_MODULE_0__.patternFillPolygons)([points], o));\n            }\n        }\n        if (o.stroke !== NOS) {\n            paths.push(outline);\n        }\n        return this._d('polygon', paths, o);\n    }\n    path(d, options) {\n        const o = this._o(options);\n        const paths = [];\n        if (!d) {\n            return this._d('path', paths, o);\n        }\n        d = (d || '').replace(/\\n/g, ' ').replace(/(-\\s)/g, '-').replace('/(\\s\\s)/g', ' ');\n        const hasFill = o.fill && o.fill !== 'transparent' && o.fill !== NOS;\n        const hasStroke = o.stroke !== NOS;\n        const simplified = !!(o.simplification && (o.simplification < 1));\n        const distance = simplified ? (4 - 4 * (o.simplification || 1)) : ((1 + o.roughness) / 2);\n        const sets = (0,points_on_path__WEBPACK_IMPORTED_MODULE_4__.pointsOnPath)(d, 1, distance);\n        const shape = (0,_renderer_js__WEBPACK_IMPORTED_MODULE_0__.svgPath)(d, o);\n        if (hasFill) {\n            if (o.fillStyle === 'solid') {\n                if (sets.length === 1) {\n                    const fillShape = (0,_renderer_js__WEBPACK_IMPORTED_MODULE_0__.svgPath)(d, Object.assign(Object.assign({}, o), { disableMultiStroke: true, roughness: o.roughness ? (o.roughness + o.fillShapeRoughnessGain) : 0 }));\n                    paths.push({\n                        type: 'fillPath',\n                        ops: this._mergedShape(fillShape.ops),\n                    });\n                }\n                else {\n                    paths.push((0,_renderer_js__WEBPACK_IMPORTED_MODULE_0__.solidFillPolygon)(sets, o));\n                }\n            }\n            else {\n                paths.push((0,_renderer_js__WEBPACK_IMPORTED_MODULE_0__.patternFillPolygons)(sets, o));\n            }\n        }\n        if (hasStroke) {\n            if (simplified) {\n                sets.forEach((set) => {\n                    paths.push((0,_renderer_js__WEBPACK_IMPORTED_MODULE_0__.linearPath)(set, false, o));\n                });\n            }\n            else {\n                paths.push(shape);\n            }\n        }\n        return this._d('path', paths, o);\n    }\n    opsToPath(drawing, fixedDecimals) {\n        let path = '';\n        for (const item of drawing.ops) {\n            const data = ((typeof fixedDecimals === 'number') && fixedDecimals >= 0) ? (item.data.map((d) => +d.toFixed(fixedDecimals))) : item.data;\n            switch (item.op) {\n                case 'move':\n                    path += `M${data[0]} ${data[1]} `;\n                    break;\n                case 'bcurveTo':\n                    path += `C${data[0]} ${data[1]}, ${data[2]} ${data[3]}, ${data[4]} ${data[5]} `;\n                    break;\n                case 'lineTo':\n                    path += `L${data[0]} ${data[1]} `;\n                    break;\n            }\n        }\n        return path.trim();\n    }\n    toPaths(drawable) {\n        const sets = drawable.sets || [];\n        const o = drawable.options || this.defaultOptions;\n        const paths = [];\n        for (const drawing of sets) {\n            let path = null;\n            switch (drawing.type) {\n                case 'path':\n                    path = {\n                        d: this.opsToPath(drawing),\n                        stroke: o.stroke,\n                        strokeWidth: o.strokeWidth,\n                        fill: NOS,\n                    };\n                    break;\n                case 'fillPath':\n                    path = {\n                        d: this.opsToPath(drawing),\n                        stroke: NOS,\n                        strokeWidth: 0,\n                        fill: o.fill || NOS,\n                    };\n                    break;\n                case 'fillSketch':\n                    path = this.fillSketch(drawing, o);\n                    break;\n            }\n            if (path) {\n                paths.push(path);\n            }\n        }\n        return paths;\n    }\n    fillSketch(drawing, o) {\n        let fweight = o.fillWeight;\n        if (fweight < 0) {\n            fweight = o.strokeWidth / 2;\n        }\n        return {\n            d: this.opsToPath(drawing),\n            stroke: o.fill || NOS,\n            strokeWidth: fweight,\n            fill: NOS,\n        };\n    }\n    _mergedShape(input) {\n        return input.filter((d, i) => {\n            if (i === 0) {\n                return true;\n            }\n            if (d.op === 'move') {\n                return false;\n            }\n            return true;\n        });\n    }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 16264 characters]\n//# sourceURL=webpack-internal:///../../../node_modules/roughjs/bin/generator.js\n");
              }
            ),
            /***/
            "../../../node_modules/roughjs/bin/geometry.js": (
              /*!*****************************************************!*\
                !*** ../../../node_modules/roughjs/bin/geometry.js ***!
                \*****************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "lineLength": () => (/* binding */ lineLength)\n/* harmony export */ });\nfunction lineLength(line) {\n    const p1 = line[0];\n    const p2 = line[1];\n    return Math.sqrt(Math.pow(p1[0] - p2[0], 2) + Math.pow(p1[1] - p2[1], 2));\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JvdWdoanMvYmluL2dlb21ldHJ5LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBTztBQUNQO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yb3VnaGpzL2Jpbi9nZW9tZXRyeS5qcz9lYjU4Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBsaW5lTGVuZ3RoKGxpbmUpIHtcbiAgICBjb25zdCBwMSA9IGxpbmVbMF07XG4gICAgY29uc3QgcDIgPSBsaW5lWzFdO1xuICAgIHJldHVybiBNYXRoLnNxcnQoTWF0aC5wb3cocDFbMF0gLSBwMlswXSwgMikgKyBNYXRoLnBvdyhwMVsxXSAtIHAyWzFdLCAyKSk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/roughjs/bin/geometry.js\n');
              }
            ),
            /***/
            "../../../node_modules/roughjs/bin/math.js": (
              /*!*************************************************!*\
                !*** ../../../node_modules/roughjs/bin/math.js ***!
                \*************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "Random": () => (/* binding */ Random),\n/* harmony export */   "randomSeed": () => (/* binding */ randomSeed)\n/* harmony export */ });\nfunction randomSeed() {\n    return Math.floor(Math.random() * 2 ** 31);\n}\nclass Random {\n    constructor(seed) {\n        this.seed = seed;\n    }\n    next() {\n        if (this.seed) {\n            return ((2 ** 31 - 1) & (this.seed = Math.imul(48271, this.seed))) / 2 ** 31;\n        }\n        else {\n            return Math.random();\n        }\n    }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JvdWdoanMvYmluL21hdGguanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBTztBQUNQO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcm91Z2hqcy9iaW4vbWF0aC5qcz82NWRkIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiByYW5kb21TZWVkKCkge1xuICAgIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAyICoqIDMxKTtcbn1cbmV4cG9ydCBjbGFzcyBSYW5kb20ge1xuICAgIGNvbnN0cnVjdG9yKHNlZWQpIHtcbiAgICAgICAgdGhpcy5zZWVkID0gc2VlZDtcbiAgICB9XG4gICAgbmV4dCgpIHtcbiAgICAgICAgaWYgKHRoaXMuc2VlZCkge1xuICAgICAgICAgICAgcmV0dXJuICgoMiAqKiAzMSAtIDEpICYgKHRoaXMuc2VlZCA9IE1hdGguaW11bCg0ODI3MSwgdGhpcy5zZWVkKSkpIC8gMiAqKiAzMTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLnJhbmRvbSgpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/roughjs/bin/math.js\n');
              }
            ),
            /***/
            "../../../node_modules/roughjs/bin/renderer.js": (
              /*!*****************************************************!*\
                !*** ../../../node_modules/roughjs/bin/renderer.js ***!
                \*****************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "arc": () => (/* binding */ arc),
/* harmony export */   "curve": () => (/* binding */ curve),
/* harmony export */   "doubleLineFillOps": () => (/* binding */ doubleLineFillOps),
/* harmony export */   "ellipse": () => (/* binding */ ellipse),
/* harmony export */   "ellipseWithParams": () => (/* binding */ ellipseWithParams),
/* harmony export */   "generateEllipseParams": () => (/* binding */ generateEllipseParams),
/* harmony export */   "line": () => (/* binding */ line),
/* harmony export */   "linearPath": () => (/* binding */ linearPath),
/* harmony export */   "patternFillArc": () => (/* binding */ patternFillArc),
/* harmony export */   "patternFillPolygons": () => (/* binding */ patternFillPolygons),
/* harmony export */   "polygon": () => (/* binding */ polygon),
/* harmony export */   "randOffset": () => (/* binding */ randOffset),
/* harmony export */   "randOffsetWithRange": () => (/* binding */ randOffsetWithRange),
/* harmony export */   "rectangle": () => (/* binding */ rectangle),
/* harmony export */   "solidFillPolygon": () => (/* binding */ solidFillPolygon),
/* harmony export */   "svgPath": () => (/* binding */ svgPath)
/* harmony export */ });
/* harmony import */ var _fillers_filler_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./fillers/filler.js */ "../../../node_modules/roughjs/bin/fillers/filler.js");
/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./math.js */ "../../../node_modules/roughjs/bin/math.js");
/* harmony import */ var path_data_parser__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! path-data-parser */ "../../../node_modules/path-data-parser/lib/index.js");



const helper = {
    randOffset,
    randOffsetWithRange,
    ellipse,
    doubleLineOps: doubleLineFillOps,
};
function line(x1, y1, x2, y2, o) {
    return { type: 'path', ops: _doubleLine(x1, y1, x2, y2, o) };
}
function linearPath(points, close, o) {
    const len = (points || []).length;
    if (len > 2) {
        const ops = [];
        for (let i = 0; i < (len - 1); i++) {
            ops.push(..._doubleLine(points[i][0], points[i][1], points[i + 1][0], points[i + 1][1], o));
        }
        if (close) {
            ops.push(..._doubleLine(points[len - 1][0], points[len - 1][1], points[0][0], points[0][1], o));
        }
        return { type: 'path', ops };
    }
    else if (len === 2) {
        return line(points[0][0], points[0][1], points[1][0], points[1][1], o);
    }
    return { type: 'path', ops: [] };
}
function polygon(points, o) {
    return linearPath(points, true, o);
}
function rectangle(x, y, width, height, o) {
    const points = [
        [x, y],
        [x + width, y],
        [x + width, y + height],
        [x, y + height],
    ];
    return polygon(points, o);
}
function curve(points, o) {
    let o1 = _curveWithOffset(points, 1 * (1 + o.roughness * 0.2), o);
    if (!o.disableMultiStroke) {
        const o2 = _curveWithOffset(points, 1.5 * (1 + o.roughness * 0.22), cloneOptionsAlterSeed(o));
        o1 = o1.concat(o2);
    }
    return { type: 'path', ops: o1 };
}
function ellipse(x, y, width, height, o) {
    const params = generateEllipseParams(width, height, o);
    return ellipseWithParams(x, y, o, params).opset;
}
function generateEllipseParams(width, height, o) {
    const psq = Math.sqrt(Math.PI * 2 * Math.sqrt((Math.pow(width / 2, 2) + Math.pow(height / 2, 2)) / 2));
    const stepCount = Math.ceil(Math.max(o.curveStepCount, (o.curveStepCount / Math.sqrt(200)) * psq));
    const increment = (Math.PI * 2) / stepCount;
    let rx = Math.abs(width / 2);
    let ry = Math.abs(height / 2);
    const curveFitRandomness = 1 - o.curveFitting;
    rx += _offsetOpt(rx * curveFitRandomness, o);
    ry += _offsetOpt(ry * curveFitRandomness, o);
    return { increment, rx, ry };
}
function ellipseWithParams(x, y, o, ellipseParams) {
    const [ap1, cp1] = _computeEllipsePoints(ellipseParams.increment, x, y, ellipseParams.rx, ellipseParams.ry, 1, ellipseParams.increment * _offset(0.1, _offset(0.4, 1, o), o), o);
    let o1 = _curve(ap1, null, o);
    if ((!o.disableMultiStroke) && (o.roughness !== 0)) {
        const [ap2] = _computeEllipsePoints(ellipseParams.increment, x, y, ellipseParams.rx, ellipseParams.ry, 1.5, 0, o);
        const o2 = _curve(ap2, null, o);
        o1 = o1.concat(o2);
    }
    return {
        estimatedPoints: cp1,
        opset: { type: 'path', ops: o1 },
    };
}
function arc(x, y, width, height, start, stop, closed, roughClosure, o) {
    const cx = x;
    const cy = y;
    let rx = Math.abs(width / 2);
    let ry = Math.abs(height / 2);
    rx += _offsetOpt(rx * 0.01, o);
    ry += _offsetOpt(ry * 0.01, o);
    let strt = start;
    let stp = stop;
    while (strt < 0) {
        strt += Math.PI * 2;
        stp += Math.PI * 2;
    }
    if ((stp - strt) > (Math.PI * 2)) {
        strt = 0;
        stp = Math.PI * 2;
    }
    const ellipseInc = (Math.PI * 2) / o.curveStepCount;
    const arcInc = Math.min(ellipseInc / 2, (stp - strt) / 2);
    const ops = _arc(arcInc, cx, cy, rx, ry, strt, stp, 1, o);
    if (!o.disableMultiStroke) {
        const o2 = _arc(arcInc, cx, cy, rx, ry, strt, stp, 1.5, o);
        ops.push(...o2);
    }
    if (closed) {
        if (roughClosure) {
            ops.push(..._doubleLine(cx, cy, cx + rx * Math.cos(strt), cy + ry * Math.sin(strt), o), ..._doubleLine(cx, cy, cx + rx * Math.cos(stp), cy + ry * Math.sin(stp), o));
        }
        else {
            ops.push({ op: 'lineTo', data: [cx, cy] }, { op: 'lineTo', data: [cx + rx * Math.cos(strt), cy + ry * Math.sin(strt)] });
        }
    }
    return { type: 'path', ops };
}
function svgPath(path, o) {
    const segments = (0,path_data_parser__WEBPACK_IMPORTED_MODULE_2__.normalize)((0,path_data_parser__WEBPACK_IMPORTED_MODULE_2__.absolutize)((0,path_data_parser__WEBPACK_IMPORTED_MODULE_2__.parsePath)(path)));
    const ops = [];
    let first = [0, 0];
    let current = [0, 0];
    for (const { key, data } of segments) {
        switch (key) {
            case 'M': {
                current = [data[0], data[1]];
                first = [data[0], data[1]];
                break;
            }
            case 'L':
                ops.push(..._doubleLine(current[0], current[1], data[0], data[1], o));
                current = [data[0], data[1]];
                break;
            case 'C': {
                const [x1, y1, x2, y2, x, y] = data;
                ops.push(..._bezierTo(x1, y1, x2, y2, x, y, current, o));
                current = [x, y];
                break;
            }
            case 'Z':
                ops.push(..._doubleLine(current[0], current[1], first[0], first[1], o));
                current = [first[0], first[1]];
                break;
        }
    }
    return { type: 'path', ops };
}
// Fills
function solidFillPolygon(polygonList, o) {
    const ops = [];
    for (const points of polygonList) {
        if (points.length) {
            const offset = o.maxRandomnessOffset || 0;
            const len = points.length;
            if (len > 2) {
                ops.push({ op: 'move', data: [points[0][0] + _offsetOpt(offset, o), points[0][1] + _offsetOpt(offset, o)] });
                for (let i = 1; i < len; i++) {
                    ops.push({ op: 'lineTo', data: [points[i][0] + _offsetOpt(offset, o), points[i][1] + _offsetOpt(offset, o)] });
                }
            }
        }
    }
    return { type: 'fillPath', ops };
}
function patternFillPolygons(polygonList, o) {
    return (0,_fillers_filler_js__WEBPACK_IMPORTED_MODULE_0__.getFiller)(o, helper).fillPolygons(polygonList, o);
}
function patternFillArc(x, y, width, height, start, stop, o) {
    const cx = x;
    const cy = y;
    let rx = Math.abs(width / 2);
    let ry = Math.abs(height / 2);
    rx += _offsetOpt(rx * 0.01, o);
    ry += _offsetOpt(ry * 0.01, o);
    let strt = start;
    let stp = stop;
    while (strt < 0) {
        strt += Math.PI * 2;
        stp += Math.PI * 2;
    }
    if ((stp - strt) > (Math.PI * 2)) {
        strt = 0;
        stp = Math.PI * 2;
    }
    const increment = (stp - strt) / o.curveStepCount;
    const points = [];
    for (let angle = strt; angle <= stp; angle = angle + increment) {
        points.push([cx + rx * Math.cos(angle), cy + ry * Math.sin(angle)]);
    }
    points.push([cx + rx * Math.cos(stp), cy + ry * Math.sin(stp)]);
    points.push([cx, cy]);
    return patternFillPolygons([points], o);
}
function randOffset(x, o) {
    return _offsetOpt(x, o);
}
function randOffsetWithRange(min, max, o) {
    return _offset(min, max, o);
}
function doubleLineFillOps(x1, y1, x2, y2, o) {
    return _doubleLine(x1, y1, x2, y2, o, true);
}
// Private helpers
function cloneOptionsAlterSeed(ops) {
    const result = Object.assign({}, ops);
    result.randomizer = undefined;
    if (ops.seed) {
        result.seed = ops.seed + 1;
    }
    return result;
}
function random(ops) {
    if (!ops.randomizer) {
        ops.randomizer = new _math_js__WEBPACK_IMPORTED_MODULE_1__.Random(ops.seed || 0);
    }
    return ops.randomizer.next();
}
function _offset(min, max, ops, roughnessGain = 1) {
    return ops.roughness * roughnessGain * ((random(ops) * (max - min)) + min);
}
function _offsetOpt(x, ops, roughnessGain = 1) {
    return _offset(-x, x, ops, roughnessGain);
}
function _doubleLine(x1, y1, x2, y2, o, filling = false) {
    const singleStroke = filling ? o.disableMultiStrokeFill : o.disableMultiStroke;
    const o1 = _line(x1, y1, x2, y2, o, true, false);
    if (singleStroke) {
        return o1;
    }
    const o2 = _line(x1, y1, x2, y2, o, true, true);
    return o1.concat(o2);
}
function _line(x1, y1, x2, y2, o, move, overlay) {
    const lengthSq = Math.pow((x1 - x2), 2) + Math.pow((y1 - y2), 2);
    const length = Math.sqrt(lengthSq);
    let roughnessGain = 1;
    if (length < 200) {
        roughnessGain = 1;
    }
    else if (length > 500) {
        roughnessGain = 0.4;
    }
    else {
        roughnessGain = (-0.0016668) * length + 1.233334;
    }
    let offset = o.maxRandomnessOffset || 0;
    if ((offset * offset * 100) > lengthSq) {
        offset = length / 10;
    }
    const halfOffset = offset / 2;
    const divergePoint = 0.2 + random(o) * 0.2;
    let midDispX = o.bowing * o.maxRandomnessOffset * (y2 - y1) / 200;
    let midDispY = o.bowing * o.maxRandomnessOffset * (x1 - x2) / 200;
    midDispX = _offsetOpt(midDispX, o, roughnessGain);
    midDispY = _offsetOpt(midDispY, o, roughnessGain);
    const ops = [];
    const randomHalf = () => _offsetOpt(halfOffset, o, roughnessGain);
    const randomFull = () => _offsetOpt(offset, o, roughnessGain);
    const preserveVertices = o.preserveVertices;
    if (move) {
        if (overlay) {
            ops.push({
                op: 'move', data: [
                    x1 + (preserveVertices ? 0 : randomHalf()),
                    y1 + (preserveVertices ? 0 : randomHalf()),
                ],
            });
        }
        else {
            ops.push({
                op: 'move', data: [
                    x1 + (preserveVertices ? 0 : _offsetOpt(offset, o, roughnessGain)),
                    y1 + (preserveVertices ? 0 : _offsetOpt(offset, o, roughnessGain)),
                ],
            });
        }
    }
    if (overlay) {
        ops.push({
            op: 'bcurveTo',
            data: [
                midDispX + x1 + (x2 - x1) * divergePoint + randomHalf(),
                midDispY + y1 + (y2 - y1) * divergePoint + randomHalf(),
                midDispX + x1 + 2 * (x2 - x1) * divergePoint + randomHalf(),
                midDispY + y1 + 2 * (y2 - y1) * divergePoint + randomHalf(),
                x2 + (preserveVertices ? 0 : randomHalf()),
                y2 + (preserveVertices ? 0 : randomHalf()),
            ],
        });
    }
    else {
        ops.push({
            op: 'bcurveTo',
            data: [
                midDispX + x1 + (x2 - x1) * divergePoint + randomFull(),
                midDispY + y1 + (y2 - y1) * divergePoint + randomFull(),
                midDispX + x1 + 2 * (x2 - x1) * divergePoint + randomFull(),
                midDispY + y1 + 2 * (y2 - y1) * divergePoint + randomFull(),
                x2 + (preserveVertices ? 0 : randomFull()),
                y2 + (preserveVertices ? 0 : randomFull()),
            ],
        });
    }
    return ops;
}
function _curveWithOffset(points, offset, o) {
    const ps = [];
    ps.push([
        points[0][0] + _offsetOpt(offset, o),
        points[0][1] + _offsetOpt(offset, o),
    ]);
    ps.push([
        points[0][0] + _offsetOpt(offset, o),
        points[0][1] + _offsetOpt(offset, o),
    ]);
    for (let i = 1; i < points.length; i++) {
        ps.push([
            points[i][0] + _offsetOpt(offset, o),
            points[i][1] + _offsetOpt(offset, o),
        ]);
        if (i === (points.length - 1)) {
            ps.push([
                points[i][0] + _offsetOpt(offset, o),
                points[i][1] + _offsetOpt(offset, o),
            ]);
        }
    }
    return _curve(ps, null, o);
}
function _curve(points, closePoint, o) {
    const len = points.length;
    const ops = [];
    if (len > 3) {
        const b = [];
        const s = 1 - o.curveTightness;
        ops.push({ op: 'move', data: [points[1][0], points[1][1]] });
        for (let i = 1; (i + 2) < len; i++) {
            const cachedVertArray = points[i];
            b[0] = [cachedVertArray[0], cachedVertArray[1]];
            b[1] = [cachedVertArray[0] + (s * points[i + 1][0] - s * points[i - 1][0]) / 6, cachedVertArray[1] + (s * points[i + 1][1] - s * points[i - 1][1]) / 6];
            b[2] = [points[i + 1][0] + (s * points[i][0] - s * points[i + 2][0]) / 6, points[i + 1][1] + (s * points[i][1] - s * points[i + 2][1]) / 6];
            b[3] = [points[i + 1][0], points[i + 1][1]];
            ops.push({ op: 'bcurveTo', data: [b[1][0], b[1][1], b[2][0], b[2][1], b[3][0], b[3][1]] });
        }
        if (closePoint && closePoint.length === 2) {
            const ro = o.maxRandomnessOffset;
            ops.push({ op: 'lineTo', data: [closePoint[0] + _offsetOpt(ro, o), closePoint[1] + _offsetOpt(ro, o)] });
        }
    }
    else if (len === 3) {
        ops.push({ op: 'move', data: [points[1][0], points[1][1]] });
        ops.push({
            op: 'bcurveTo',
            data: [
                points[1][0], points[1][1],
                points[2][0], points[2][1],
                points[2][0], points[2][1],
            ],
        });
    }
    else if (len === 2) {
        ops.push(..._doubleLine(points[0][0], points[0][1], points[1][0], points[1][1], o));
    }
    return ops;
}
function _computeEllipsePoints(increment, cx, cy, rx, ry, offset, overlap, o) {
    const coreOnly = o.roughness === 0;
    const corePoints = [];
    const allPoints = [];
    if (coreOnly) {
        increment = increment / 4;
        allPoints.push([
            cx + rx * Math.cos(-increment),
            cy + ry * Math.sin(-increment),
        ]);
        for (let angle = 0; angle <= Math.PI * 2; angle = angle + increment) {
            const p = [
                cx + rx * Math.cos(angle),
                cy + ry * Math.sin(angle),
            ];
            corePoints.push(p);
            allPoints.push(p);
        }
        allPoints.push([
            cx + rx * Math.cos(0),
            cy + ry * Math.sin(0),
        ]);
        allPoints.push([
            cx + rx * Math.cos(increment),
            cy + ry * Math.sin(increment),
        ]);
    }
    else {
        const radOffset = _offsetOpt(0.5, o) - (Math.PI / 2);
        allPoints.push([
            _offsetOpt(offset, o) + cx + 0.9 * rx * Math.cos(radOffset - increment),
            _offsetOpt(offset, o) + cy + 0.9 * ry * Math.sin(radOffset - increment),
        ]);
        const endAngle = Math.PI * 2 + radOffset - 0.01;
        for (let angle = radOffset; angle < endAngle; angle = angle + increment) {
            const p = [
                _offsetOpt(offset, o) + cx + rx * Math.cos(angle),
                _offsetOpt(offset, o) + cy + ry * Math.sin(angle),
            ];
            corePoints.push(p);
            allPoints.push(p);
        }
        allPoints.push([
            _offsetOpt(offset, o) + cx + rx * Math.cos(radOffset + Math.PI * 2 + overlap * 0.5),
            _offsetOpt(offset, o) + cy + ry * Math.sin(radOffset + Math.PI * 2 + overlap * 0.5),
        ]);
        allPoints.push([
            _offsetOpt(offset, o) + cx + 0.98 * rx * Math.cos(radOffset + overlap),
            _offsetOpt(offset, o) + cy + 0.98 * ry * Math.sin(radOffset + overlap),
        ]);
        allPoints.push([
            _offsetOpt(offset, o) + cx + 0.9 * rx * Math.cos(radOffset + overlap * 0.5),
            _offsetOpt(offset, o) + cy + 0.9 * ry * Math.sin(radOffset + overlap * 0.5),
        ]);
    }
    return [allPoints, corePoints];
}
function _arc(increment, cx, cy, rx, ry, strt, stp, offset, o) {
    const radOffset = strt + _offsetOpt(0.1, o);
    const points = [];
    points.push([
        _offsetOpt(offset, o) + cx + 0.9 * rx * Math.cos(radOffset - increment),
        _offsetOpt(offset, o) + cy + 0.9 * ry * Math.sin(radOffset - increment),
    ]);
    for (let angle = radOffset; angle <= stp; angle = angle + increment) {
        points.push([
            _offsetOpt(offset, o) + cx + rx * Math.cos(angle),
            _offsetOpt(offset, o) + cy + ry * Math.sin(angle),
        ]);
    }
    points.push([
        cx + rx * Math.cos(stp),
        cy + ry * Math.sin(stp),
    ]);
    points.push([
        cx + rx * Math.cos(stp),
        cy + ry * Math.sin(stp),
    ]);
    return _curve(points, null, o);
}
function _bezierTo(x1, y1, x2, y2, x, y, current, o) {
    const ops = [];
    const ros = [o.maxRandomnessOffset || 1, (o.maxRandomnessOffset || 1) + 0.3];
    let f = [0, 0];
    const iterations = o.disableMultiStroke ? 1 : 2;
    const preserveVertices = o.preserveVertices;
    for (let i = 0; i < iterations; i++) {
        if (i === 0) {
            ops.push({ op: 'move', data: [current[0], current[1]] });
        }
        else {
            ops.push({ op: 'move', data: [current[0] + (preserveVertices ? 0 : _offsetOpt(ros[0], o)), current[1] + (preserveVertices ? 0 : _offsetOpt(ros[0], o))] });
        }
        f = preserveVertices ? [x, y] : [x + _offsetOpt(ros[i], o), y + _offsetOpt(ros[i], o)];
        ops.push({
            op: 'bcurveTo',
            data: [
                x1 + _offsetOpt(ros[i], o), y1 + _offsetOpt(ros[i], o),
                x2 + _offsetOpt(ros[i], o), y2 + _offsetOpt(ros[i], o),
                f[0], f[1],
            ],
        });
    }
    return ops;
}
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 27352 characters]
//# sourceURL=webpack-internal:///../../../node_modules/roughjs/bin/renderer.js
`);
              }
            ),
            /***/
            "../../../node_modules/roughjs/bin/rough.js": (
              /*!**************************************************!*\
                !*** ../../../node_modules/roughjs/bin/rough.js ***!
                \**************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _canvas__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./canvas */ "../../../node_modules/roughjs/bin/canvas.js");\n/* harmony import */ var _generator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./generator */ "../../../node_modules/roughjs/bin/generator.js");\n/* harmony import */ var _svg__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./svg */ "../../../node_modules/roughjs/bin/svg.js");\n\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n    canvas(canvas, config) {\n        return new _canvas__WEBPACK_IMPORTED_MODULE_0__.RoughCanvas(canvas, config);\n    },\n    svg(svg, config) {\n        return new _svg__WEBPACK_IMPORTED_MODULE_2__.RoughSVG(svg, config);\n    },\n    generator(config) {\n        return new _generator__WEBPACK_IMPORTED_MODULE_1__.RoughGenerator(config);\n    },\n    newSeed() {\n        return _generator__WEBPACK_IMPORTED_MODULE_1__.RoughGenerator.newSeed();\n    },\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JvdWdoanMvYmluL3JvdWdoLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBdUM7QUFDTTtBQUNaO0FBQ2pDLGlFQUFlO0FBQ2Y7QUFDQSxtQkFBbUIsZ0RBQVc7QUFDOUIsS0FBSztBQUNMO0FBQ0EsbUJBQW1CLDBDQUFRO0FBQzNCLEtBQUs7QUFDTDtBQUNBLG1CQUFtQixzREFBYztBQUNqQyxLQUFLO0FBQ0w7QUFDQSxlQUFlLDhEQUFzQjtBQUNyQyxLQUFLO0FBQ0wsQ0FBQyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yb3VnaGpzL2Jpbi9yb3VnaC5qcz83OTI4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJvdWdoQ2FudmFzIH0gZnJvbSAnLi9jYW52YXMnO1xuaW1wb3J0IHsgUm91Z2hHZW5lcmF0b3IgfSBmcm9tICcuL2dlbmVyYXRvcic7XG5pbXBvcnQgeyBSb3VnaFNWRyB9IGZyb20gJy4vc3ZnJztcbmV4cG9ydCBkZWZhdWx0IHtcbiAgICBjYW52YXMoY2FudmFzLCBjb25maWcpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBSb3VnaENhbnZhcyhjYW52YXMsIGNvbmZpZyk7XG4gICAgfSxcbiAgICBzdmcoc3ZnLCBjb25maWcpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBSb3VnaFNWRyhzdmcsIGNvbmZpZyk7XG4gICAgfSxcbiAgICBnZW5lcmF0b3IoY29uZmlnKSB7XG4gICAgICAgIHJldHVybiBuZXcgUm91Z2hHZW5lcmF0b3IoY29uZmlnKTtcbiAgICB9LFxuICAgIG5ld1NlZWQoKSB7XG4gICAgICAgIHJldHVybiBSb3VnaEdlbmVyYXRvci5uZXdTZWVkKCk7XG4gICAgfSxcbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/roughjs/bin/rough.js\n');
              }
            ),
            /***/
            "../../../node_modules/roughjs/bin/svg.js": (
              /*!************************************************!*\
                !*** ../../../node_modules/roughjs/bin/svg.js ***!
                \************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"RoughSVG\": () => (/* binding */ RoughSVG)\n/* harmony export */ });\n/* harmony import */ var _core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./core */ \"../../../node_modules/roughjs/bin/core.js\");\n/* harmony import */ var _generator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./generator */ \"../../../node_modules/roughjs/bin/generator.js\");\n\n\nclass RoughSVG {\n    constructor(svg, config) {\n        this.svg = svg;\n        this.gen = new _generator__WEBPACK_IMPORTED_MODULE_1__.RoughGenerator(config);\n    }\n    draw(drawable) {\n        const sets = drawable.sets || [];\n        const o = drawable.options || this.getDefaultOptions();\n        const doc = this.svg.ownerDocument || window.document;\n        const g = doc.createElementNS(_core__WEBPACK_IMPORTED_MODULE_0__.SVGNS, 'g');\n        const precision = drawable.options.fixedDecimalPlaceDigits;\n        for (const drawing of sets) {\n            let path = null;\n            switch (drawing.type) {\n                case 'path': {\n                    path = doc.createElementNS(_core__WEBPACK_IMPORTED_MODULE_0__.SVGNS, 'path');\n                    path.setAttribute('d', this.opsToPath(drawing, precision));\n                    path.setAttribute('stroke', o.stroke);\n                    path.setAttribute('stroke-width', o.strokeWidth + '');\n                    path.setAttribute('fill', 'none');\n                    if (o.strokeLineDash) {\n                        path.setAttribute('stroke-dasharray', o.strokeLineDash.join(' ').trim());\n                    }\n                    if (o.strokeLineDashOffset) {\n                        path.setAttribute('stroke-dashoffset', `${o.strokeLineDashOffset}`);\n                    }\n                    break;\n                }\n                case 'fillPath': {\n                    path = doc.createElementNS(_core__WEBPACK_IMPORTED_MODULE_0__.SVGNS, 'path');\n                    path.setAttribute('d', this.opsToPath(drawing, precision));\n                    path.setAttribute('stroke', 'none');\n                    path.setAttribute('stroke-width', '0');\n                    path.setAttribute('fill', o.fill || '');\n                    if (drawable.shape === 'curve' || drawable.shape === 'polygon') {\n                        path.setAttribute('fill-rule', 'evenodd');\n                    }\n                    break;\n                }\n                case 'fillSketch': {\n                    path = this.fillSketch(doc, drawing, o);\n                    break;\n                }\n            }\n            if (path) {\n                g.appendChild(path);\n            }\n        }\n        return g;\n    }\n    fillSketch(doc, drawing, o) {\n        let fweight = o.fillWeight;\n        if (fweight < 0) {\n            fweight = o.strokeWidth / 2;\n        }\n        const path = doc.createElementNS(_core__WEBPACK_IMPORTED_MODULE_0__.SVGNS, 'path');\n        path.setAttribute('d', this.opsToPath(drawing, o.fixedDecimalPlaceDigits));\n        path.setAttribute('stroke', o.fill || '');\n        path.setAttribute('stroke-width', fweight + '');\n        path.setAttribute('fill', 'none');\n        if (o.fillLineDash) {\n            path.setAttribute('stroke-dasharray', o.fillLineDash.join(' ').trim());\n        }\n        if (o.fillLineDashOffset) {\n            path.setAttribute('stroke-dashoffset', `${o.fillLineDashOffset}`);\n        }\n        return path;\n    }\n    get generator() {\n        return this.gen;\n    }\n    getDefaultOptions() {\n        return this.gen.defaultOptions;\n    }\n    opsToPath(drawing, fixedDecimalPlaceDigits) {\n        return this.gen.opsToPath(drawing, fixedDecimalPlaceDigits);\n    }\n    line(x1, y1, x2, y2, options) {\n        const d = this.gen.line(x1, y1, x2, y2, options);\n        return this.draw(d);\n    }\n    rectangle(x, y, width, height, options) {\n        const d = this.gen.rectangle(x, y, width, height, options);\n        return this.draw(d);\n    }\n    ellipse(x, y, width, height, options) {\n        const d = this.gen.ellipse(x, y, width, height, options);\n        return this.draw(d);\n    }\n    circle(x, y, diameter, options) {\n        const d = this.gen.circle(x, y, diameter, options);\n        return this.draw(d);\n    }\n    linearPath(points, options) {\n        const d = this.gen.linearPath(points, options);\n        return this.draw(d);\n    }\n    polygon(points, options) {\n        const d = this.gen.polygon(points, options);\n        return this.draw(d);\n    }\n    arc(x, y, width, height, start, stop, closed = false, options) {\n        const d = this.gen.arc(x, y, width, height, start, stop, closed, options);\n        return this.draw(d);\n    }\n    curve(points, options) {\n        const d = this.gen.curve(points, options);\n        return this.draw(d);\n    }\n    path(d, options) {\n        const drawing = this.gen.path(d, options);\n        return this.draw(drawing);\n    }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 7188 characters]\n//# sourceURL=webpack-internal:///../../../node_modules/roughjs/bin/svg.js\n");
              }
            ),
            /***/
            "../../../node_modules/roughjs/node_modules/points-on-curve/lib/curve-to-bezier.js": (
              /*!*****************************************************************************************!*\
                !*** ../../../node_modules/roughjs/node_modules/points-on-curve/lib/curve-to-bezier.js ***!
                \*****************************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "curveToBezier": () => (/* binding */ curveToBezier)
/* harmony export */ });
function clone(p) {
    return [...p];
}
function curveToBezier(pointsIn, curveTightness = 0) {
    const len = pointsIn.length;
    if (len < 3) {
        throw new Error('A curve must have at least three points.');
    }
    const out = [];
    if (len === 3) {
        out.push(clone(pointsIn[0]), clone(pointsIn[1]), clone(pointsIn[2]), clone(pointsIn[2]));
    }
    else {
        const points = [];
        points.push(pointsIn[0], pointsIn[0]);
        for (let i = 1; i < pointsIn.length; i++) {
            points.push(pointsIn[i]);
            if (i === (pointsIn.length - 1)) {
                points.push(pointsIn[i]);
            }
        }
        const b = [];
        const s = 1 - curveTightness;
        out.push(clone(points[0]));
        for (let i = 1; (i + 2) < points.length; i++) {
            const cachedVertArray = points[i];
            b[0] = [cachedVertArray[0], cachedVertArray[1]];
            b[1] = [cachedVertArray[0] + (s * points[i + 1][0] - s * points[i - 1][0]) / 6, cachedVertArray[1] + (s * points[i + 1][1] - s * points[i - 1][1]) / 6];
            b[2] = [points[i + 1][0] + (s * points[i][0] - s * points[i + 2][0]) / 6, points[i + 1][1] + (s * points[i][1] - s * points[i + 2][1]) / 6];
            b[3] = [points[i + 1][0], points[i + 1][1]];
            out.push(b[1], b[2], b[3]);
        }
    }
    return out;
}
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JvdWdoanMvbm9kZV9tb2R1bGVzL3BvaW50cy1vbi1jdXJ2ZS9saWIvY3VydmUtdG8tYmV6aWVyLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IscUJBQXFCO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IseUJBQXlCO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9yb3VnaGpzL25vZGVfbW9kdWxlcy9wb2ludHMtb24tY3VydmUvbGliL2N1cnZlLXRvLWJlemllci5qcz8zNDRjIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIGNsb25lKHApIHtcbiAgICByZXR1cm4gWy4uLnBdO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGN1cnZlVG9CZXppZXIocG9pbnRzSW4sIGN1cnZlVGlnaHRuZXNzID0gMCkge1xuICAgIGNvbnN0IGxlbiA9IHBvaW50c0luLmxlbmd0aDtcbiAgICBpZiAobGVuIDwgMykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0EgY3VydmUgbXVzdCBoYXZlIGF0IGxlYXN0IHRocmVlIHBvaW50cy4nKTtcbiAgICB9XG4gICAgY29uc3Qgb3V0ID0gW107XG4gICAgaWYgKGxlbiA9PT0gMykge1xuICAgICAgICBvdXQucHVzaChjbG9uZShwb2ludHNJblswXSksIGNsb25lKHBvaW50c0luWzFdKSwgY2xvbmUocG9pbnRzSW5bMl0pLCBjbG9uZShwb2ludHNJblsyXSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgY29uc3QgcG9pbnRzID0gW107XG4gICAgICAgIHBvaW50cy5wdXNoKHBvaW50c0luWzBdLCBwb2ludHNJblswXSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgcG9pbnRzSW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHBvaW50cy5wdXNoKHBvaW50c0luW2ldKTtcbiAgICAgICAgICAgIGlmIChpID09PSAocG9pbnRzSW4ubGVuZ3RoIC0gMSkpIHtcbiAgICAgICAgICAgICAgICBwb2ludHMucHVzaChwb2ludHNJbltpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYiA9IFtdO1xuICAgICAgICBjb25zdCBzID0gMSAtIGN1cnZlVGlnaHRuZXNzO1xuICAgICAgICBvdXQucHVzaChjbG9uZShwb2ludHNbMF0pKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IChpICsgMikgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGNhY2hlZFZlcnRBcnJheSA9IHBvaW50c1tpXTtcbiAgICAgICAgICAgIGJbMF0gPSBbY2FjaGVkVmVydEFycmF5WzBdLCBjYWNoZWRWZXJ0QXJyYXlbMV1dO1xuICAgICAgICAgICAgYlsxXSA9IFtjYWNoZWRWZXJ0QXJyYXlbMF0gKyAocyAqIHBvaW50c1tpICsgMV1bMF0gLSBzICogcG9pbnRzW2kgLSAxXVswXSkgLyA2LCBjYWNoZWRWZXJ0QXJyYXlbMV0gKyAocyAqIHBvaW50c1tpICsgMV1bMV0gLSBzICogcG9pbnRzW2kgLSAxXVsxXSkgLyA2XTtcbiAgICAgICAgICAgIGJbMl0gPSBbcG9pbnRzW2kgKyAxXVswXSArIChzICogcG9pbnRzW2ldWzBdIC0gcyAqIHBvaW50c1tpICsgMl1bMF0pIC8gNiwgcG9pbnRzW2kgKyAxXVsxXSArIChzICogcG9pbnRzW2ldWzFdIC0gcyAqIHBvaW50c1tpICsgMl1bMV0pIC8gNl07XG4gICAgICAgICAgICBiWzNdID0gW3BvaW50c1tpICsgMV1bMF0sIHBvaW50c1tpICsgMV1bMV1dO1xuICAgICAgICAgICAgb3V0LnB1c2goYlsxXSwgYlsyXSwgYlszXSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG91dDtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==
//# sourceURL=webpack-internal:///../../../node_modules/roughjs/node_modules/points-on-curve/lib/curve-to-bezier.js
`);
              }
            ),
            /***/
            "../../../node_modules/roughjs/node_modules/points-on-curve/lib/index.js": (
              /*!*******************************************************************************!*\
                !*** ../../../node_modules/roughjs/node_modules/points-on-curve/lib/index.js ***!
                \*******************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "pointsOnBezierCurves": () => (/* binding */ pointsOnBezierCurves),\n/* harmony export */   "simplify": () => (/* binding */ simplify)\n/* harmony export */ });\n// distance between 2 points\nfunction distance(p1, p2) {\n    return Math.sqrt(distanceSq(p1, p2));\n}\n// distance between 2 points squared\nfunction distanceSq(p1, p2) {\n    return Math.pow(p1[0] - p2[0], 2) + Math.pow(p1[1] - p2[1], 2);\n}\n// Sistance squared from a point p to the line segment vw\nfunction distanceToSegmentSq(p, v, w) {\n    const l2 = distanceSq(v, w);\n    if (l2 === 0) {\n        return distanceSq(p, v);\n    }\n    let t = ((p[0] - v[0]) * (w[0] - v[0]) + (p[1] - v[1]) * (w[1] - v[1])) / l2;\n    t = Math.max(0, Math.min(1, t));\n    return distanceSq(p, lerp(v, w, t));\n}\nfunction lerp(a, b, t) {\n    return [\n        a[0] + (b[0] - a[0]) * t,\n        a[1] + (b[1] - a[1]) * t,\n    ];\n}\n// Adapted from https://seant23.wordpress.com/2010/11/12/offset-bezier-curves/\nfunction flatness(points, offset) {\n    const p1 = points[offset + 0];\n    const p2 = points[offset + 1];\n    const p3 = points[offset + 2];\n    const p4 = points[offset + 3];\n    let ux = 3 * p2[0] - 2 * p1[0] - p4[0];\n    ux *= ux;\n    let uy = 3 * p2[1] - 2 * p1[1] - p4[1];\n    uy *= uy;\n    let vx = 3 * p3[0] - 2 * p4[0] - p1[0];\n    vx *= vx;\n    let vy = 3 * p3[1] - 2 * p4[1] - p1[1];\n    vy *= vy;\n    if (ux < vx) {\n        ux = vx;\n    }\n    if (uy < vy) {\n        uy = vy;\n    }\n    return ux + uy;\n}\nfunction getPointsOnBezierCurveWithSplitting(points, offset, tolerance, newPoints) {\n    const outPoints = newPoints || [];\n    if (flatness(points, offset) < tolerance) {\n        const p0 = points[offset + 0];\n        if (outPoints.length) {\n            const d = distance(outPoints[outPoints.length - 1], p0);\n            if (d > 1) {\n                outPoints.push(p0);\n            }\n        }\n        else {\n            outPoints.push(p0);\n        }\n        outPoints.push(points[offset + 3]);\n    }\n    else {\n        // subdivide\n        const t = .5;\n        const p1 = points[offset + 0];\n        const p2 = points[offset + 1];\n        const p3 = points[offset + 2];\n        const p4 = points[offset + 3];\n        const q1 = lerp(p1, p2, t);\n        const q2 = lerp(p2, p3, t);\n        const q3 = lerp(p3, p4, t);\n        const r1 = lerp(q1, q2, t);\n        const r2 = lerp(q2, q3, t);\n        const red = lerp(r1, r2, t);\n        getPointsOnBezierCurveWithSplitting([p1, q1, r1, red], 0, tolerance, outPoints);\n        getPointsOnBezierCurveWithSplitting([red, r2, q3, p4], 0, tolerance, outPoints);\n    }\n    return outPoints;\n}\nfunction simplify(points, distance) {\n    return simplifyPoints(points, 0, points.length, distance);\n}\n// Ramer\u2013Douglas\u2013Peucker algorithm\n// https://en.wikipedia.org/wiki/Ramer%E2%80%93Douglas%E2%80%93Peucker_algorithm\nfunction simplifyPoints(points, start, end, epsilon, newPoints) {\n    const outPoints = newPoints || [];\n    // find the most distance point from the endpoints\n    const s = points[start];\n    const e = points[end - 1];\n    let maxDistSq = 0;\n    let maxNdx = 1;\n    for (let i = start + 1; i < end - 1; ++i) {\n        const distSq = distanceToSegmentSq(points[i], s, e);\n        if (distSq > maxDistSq) {\n            maxDistSq = distSq;\n            maxNdx = i;\n        }\n    }\n    // if that point is too far, split\n    if (Math.sqrt(maxDistSq) > epsilon) {\n        simplifyPoints(points, start, maxNdx + 1, epsilon, outPoints);\n        simplifyPoints(points, maxNdx, end, epsilon, outPoints);\n    }\n    else {\n        if (!outPoints.length) {\n            outPoints.push(s);\n        }\n        outPoints.push(e);\n    }\n    return outPoints;\n}\nfunction pointsOnBezierCurves(points, tolerance = 0.15, distance) {\n    const newPoints = [];\n    const numSegments = (points.length - 1) / 3;\n    for (let i = 0; i < numSegments; i++) {\n        const offset = i * 3;\n        getPointsOnBezierCurveWithSplitting(points, offset, tolerance, newPoints);\n    }\n    if (distance && distance > 0) {\n        return simplifyPoints(newPoints, 0, newPoints.length, distance);\n    }\n    return newPoints;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6660 characters]\n//# sourceURL=webpack-internal:///../../../node_modules/roughjs/node_modules/points-on-curve/lib/index.js\n');
              }
            ),
            /***/
            "../../../node_modules/sliced/index.js": (
              /*!*********************************************!*\
                !*** ../../../node_modules/sliced/index.js ***!
                \*********************************************/
              /***/
              (module) => {
                eval("\n/**\n * An Array.prototype.slice.call(arguments) alternative\n *\n * @param {Object} args something with a length\n * @param {Number} slice\n * @param {Number} sliceEnd\n * @api public\n */\n\nmodule.exports = function (args, slice, sliceEnd) {\n  var ret = [];\n  var len = args.length;\n\n  if (0 === len) return ret;\n\n  var start = slice < 0\n    ? Math.max(0, slice + len)\n    : slice || 0;\n\n  if (sliceEnd !== undefined) {\n    len = sliceEnd < 0\n      ? sliceEnd + len\n      : sliceEnd\n  }\n\n  while (len-- > start) {\n    ret[len - start] = args[len];\n  }\n\n  return ret;\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3NsaWNlZC9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3NsaWNlZC9pbmRleC5qcz9hMGYwIl0sInNvdXJjZXNDb250ZW50IjpbIlxuLyoqXG4gKiBBbiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpIGFsdGVybmF0aXZlXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGFyZ3Mgc29tZXRoaW5nIHdpdGggYSBsZW5ndGhcbiAqIEBwYXJhbSB7TnVtYmVyfSBzbGljZVxuICogQHBhcmFtIHtOdW1iZXJ9IHNsaWNlRW5kXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3MsIHNsaWNlLCBzbGljZUVuZCkge1xuICB2YXIgcmV0ID0gW107XG4gIHZhciBsZW4gPSBhcmdzLmxlbmd0aDtcblxuICBpZiAoMCA9PT0gbGVuKSByZXR1cm4gcmV0O1xuXG4gIHZhciBzdGFydCA9IHNsaWNlIDwgMFxuICAgID8gTWF0aC5tYXgoMCwgc2xpY2UgKyBsZW4pXG4gICAgOiBzbGljZSB8fCAwO1xuXG4gIGlmIChzbGljZUVuZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgbGVuID0gc2xpY2VFbmQgPCAwXG4gICAgICA/IHNsaWNlRW5kICsgbGVuXG4gICAgICA6IHNsaWNlRW5kXG4gIH1cblxuICB3aGlsZSAobGVuLS0gPiBzdGFydCkge1xuICAgIHJldFtsZW4gLSBzdGFydF0gPSBhcmdzW2xlbl07XG4gIH1cblxuICByZXR1cm4gcmV0O1xufVxuXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/sliced/index.js\n");
              }
            ),
            /***/
            "../../../node_modules/tslib/tslib.es6.js": (
              /*!************************************************!*\
                !*** ../../../node_modules/tslib/tslib.es6.js ***!
                \************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "__assign": () => (/* binding */ __assign),
/* harmony export */   "__asyncDelegator": () => (/* binding */ __asyncDelegator),
/* harmony export */   "__asyncGenerator": () => (/* binding */ __asyncGenerator),
/* harmony export */   "__asyncValues": () => (/* binding */ __asyncValues),
/* harmony export */   "__await": () => (/* binding */ __await),
/* harmony export */   "__awaiter": () => (/* binding */ __awaiter),
/* harmony export */   "__classPrivateFieldGet": () => (/* binding */ __classPrivateFieldGet),
/* harmony export */   "__classPrivateFieldIn": () => (/* binding */ __classPrivateFieldIn),
/* harmony export */   "__classPrivateFieldSet": () => (/* binding */ __classPrivateFieldSet),
/* harmony export */   "__createBinding": () => (/* binding */ __createBinding),
/* harmony export */   "__decorate": () => (/* binding */ __decorate),
/* harmony export */   "__esDecorate": () => (/* binding */ __esDecorate),
/* harmony export */   "__exportStar": () => (/* binding */ __exportStar),
/* harmony export */   "__extends": () => (/* binding */ __extends),
/* harmony export */   "__generator": () => (/* binding */ __generator),
/* harmony export */   "__importDefault": () => (/* binding */ __importDefault),
/* harmony export */   "__importStar": () => (/* binding */ __importStar),
/* harmony export */   "__makeTemplateObject": () => (/* binding */ __makeTemplateObject),
/* harmony export */   "__metadata": () => (/* binding */ __metadata),
/* harmony export */   "__param": () => (/* binding */ __param),
/* harmony export */   "__propKey": () => (/* binding */ __propKey),
/* harmony export */   "__read": () => (/* binding */ __read),
/* harmony export */   "__rest": () => (/* binding */ __rest),
/* harmony export */   "__runInitializers": () => (/* binding */ __runInitializers),
/* harmony export */   "__setFunctionName": () => (/* binding */ __setFunctionName),
/* harmony export */   "__spread": () => (/* binding */ __spread),
/* harmony export */   "__spreadArray": () => (/* binding */ __spreadArray),
/* harmony export */   "__spreadArrays": () => (/* binding */ __spreadArrays),
/* harmony export */   "__values": () => (/* binding */ __values)
/* harmony export */ });
/******************************************************************************\r
Copyright (c) Microsoft Corporation.\r
\r
Permission to use, copy, modify, and/or distribute this software for any\r
purpose with or without fee is hereby granted.\r
\r
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r
PERFORMANCE OF THIS SOFTWARE.\r
***************************************************************************** */\r
/* global Reflect, Promise */\r
\r
var extendStatics = function(d, b) {\r
    extendStatics = Object.setPrototypeOf ||\r
        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r
        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r
    return extendStatics(d, b);\r
};\r
\r
function __extends(d, b) {\r
    if (typeof b !== "function" && b !== null)\r
        throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");\r
    extendStatics(d, b);\r
    function __() { this.constructor = d; }\r
    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r
}\r
\r
var __assign = function() {\r
    __assign = Object.assign || function __assign(t) {\r
        for (var s, i = 1, n = arguments.length; i < n; i++) {\r
            s = arguments[i];\r
            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r
        }\r
        return t;\r
    }\r
    return __assign.apply(this, arguments);\r
}\r
\r
function __rest(s, e) {\r
    var t = {};\r
    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r
        t[p] = s[p];\r
    if (s != null && typeof Object.getOwnPropertySymbols === "function")\r
        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r
            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r
                t[p[i]] = s[p[i]];\r
        }\r
    return t;\r
}\r
\r
function __decorate(decorators, target, key, desc) {\r
    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r
    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);\r
    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r
    return c > 3 && r && Object.defineProperty(target, key, r), r;\r
}\r
\r
function __param(paramIndex, decorator) {\r
    return function (target, key) { decorator(target, key, paramIndex); }\r
}\r
\r
function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r
    function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }\r
    var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";\r
    var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;\r
    var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r
    var _, done = false;\r
    for (var i = decorators.length - 1; i >= 0; i--) {\r
        var context = {};\r
        for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];\r
        for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r
        context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };\r
        var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r
        if (kind === "accessor") {\r
            if (result === void 0) continue;\r
            if (result === null || typeof result !== "object") throw new TypeError("Object expected");\r
            if (_ = accept(result.get)) descriptor.get = _;\r
            if (_ = accept(result.set)) descriptor.set = _;\r
            if (_ = accept(result.init)) initializers.push(_);\r
        }\r
        else if (_ = accept(result)) {\r
            if (kind === "field") initializers.push(_);\r
            else descriptor[key] = _;\r
        }\r
    }\r
    if (target) Object.defineProperty(target, contextIn.name, descriptor);\r
    done = true;\r
};\r
\r
function __runInitializers(thisArg, initializers, value) {\r
    var useValue = arguments.length > 2;\r
    for (var i = 0; i < initializers.length; i++) {\r
        value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r
    }\r
    return useValue ? value : void 0;\r
};\r
\r
function __propKey(x) {\r
    return typeof x === "symbol" ? x : "".concat(x);\r
};\r
\r
function __setFunctionName(f, name, prefix) {\r
    if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : "";\r
    return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name });\r
};\r
\r
function __metadata(metadataKey, metadataValue) {\r
    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);\r
}\r
\r
function __awaiter(thisArg, _arguments, P, generator) {\r
    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r
    return new (P || (P = Promise))(function (resolve, reject) {\r
        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r
        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }\r
        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r
        step((generator = generator.apply(thisArg, _arguments || [])).next());\r
    });\r
}\r
\r
function __generator(thisArg, body) {\r
    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r
    return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;\r
    function verb(n) { return function (v) { return step([n, v]); }; }\r
    function step(op) {\r
        if (f) throw new TypeError("Generator is already executing.");\r
        while (g && (g = 0, op[0] && (_ = 0)), _) try {\r
            if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r
            if (y = 0, t) op = [op[0] & 2, t.value];\r
            switch (op[0]) {\r
                case 0: case 1: t = op; break;\r
                case 4: _.label++; return { value: op[1], done: false };\r
                case 5: _.label++; y = op[1]; op = [0]; continue;\r
                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r
                default:\r
                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r
                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r
                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r
                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r
                    if (t[2]) _.ops.pop();\r
                    _.trys.pop(); continue;\r
            }\r
            op = body.call(thisArg, _);\r
        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r
        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r
    }\r
}\r
\r
var __createBinding = Object.create ? (function(o, m, k, k2) {\r
    if (k2 === undefined) k2 = k;\r
    var desc = Object.getOwnPropertyDescriptor(m, k);\r
    if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r
        desc = { enumerable: true, get: function() { return m[k]; } };\r
    }\r
    Object.defineProperty(o, k2, desc);\r
}) : (function(o, m, k, k2) {\r
    if (k2 === undefined) k2 = k;\r
    o[k2] = m[k];\r
});\r
\r
function __exportStar(m, o) {\r
    for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r
}\r
\r
function __values(o) {\r
    var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;\r
    if (m) return m.call(o);\r
    if (o && typeof o.length === "number") return {\r
        next: function () {\r
            if (o && i >= o.length) o = void 0;\r
            return { value: o && o[i++], done: !o };\r
        }\r
    };\r
    throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");\r
}\r
\r
function __read(o, n) {\r
    var m = typeof Symbol === "function" && o[Symbol.iterator];\r
    if (!m) return o;\r
    var i = m.call(o), r, ar = [], e;\r
    try {\r
        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r
    }\r
    catch (error) { e = { error: error }; }\r
    finally {\r
        try {\r
            if (r && !r.done && (m = i["return"])) m.call(i);\r
        }\r
        finally { if (e) throw e.error; }\r
    }\r
    return ar;\r
}\r
\r
/** @deprecated */\r
function __spread() {\r
    for (var ar = [], i = 0; i < arguments.length; i++)\r
        ar = ar.concat(__read(arguments[i]));\r
    return ar;\r
}\r
\r
/** @deprecated */\r
function __spreadArrays() {\r
    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r
    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r
        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r
            r[k] = a[j];\r
    return r;\r
}\r
\r
function __spreadArray(to, from, pack) {\r
    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r
        if (ar || !(i in from)) {\r
            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r
            ar[i] = from[i];\r
        }\r
    }\r
    return to.concat(ar || Array.prototype.slice.call(from));\r
}\r
\r
function __await(v) {\r
    return this instanceof __await ? (this.v = v, this) : new __await(v);\r
}\r
\r
function __asyncGenerator(thisArg, _arguments, generator) {\r
    if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");\r
    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r
    return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;\r
    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r
    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r
    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r
    function fulfill(value) { resume("next", value); }\r
    function reject(value) { resume("throw", value); }\r
    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r
}\r
\r
function __asyncDelegator(o) {\r
    var i, p;\r
    return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;\r
    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r
}\r
\r
function __asyncValues(o) {\r
    if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");\r
    var m = o[Symbol.asyncIterator], i;\r
    return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);\r
    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r
    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r
}\r
\r
function __makeTemplateObject(cooked, raw) {\r
    if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }\r
    return cooked;\r
};\r
\r
var __setModuleDefault = Object.create ? (function(o, v) {\r
    Object.defineProperty(o, "default", { enumerable: true, value: v });\r
}) : function(o, v) {\r
    o["default"] = v;\r
};\r
\r
function __importStar(mod) {\r
    if (mod && mod.__esModule) return mod;\r
    var result = {};\r
    if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r
    __setModuleDefault(result, mod);\r
    return result;\r
}\r
\r
function __importDefault(mod) {\r
    return (mod && mod.__esModule) ? mod : { default: mod };\r
}\r
\r
function __classPrivateFieldGet(receiver, state, kind, f) {\r
    if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");\r
    if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");\r
    return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);\r
}\r
\r
function __classPrivateFieldSet(receiver, state, value, kind, f) {\r
    if (kind === "m") throw new TypeError("Private method is not writable");\r
    if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");\r
    if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");\r
    return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r
}\r
\r
function __classPrivateFieldIn(state, receiver) {\r
    if (receiver === null || (typeof receiver !== "object" && typeof receiver !== "function")) throw new TypeError("Cannot use 'in' operator on non-object");\r
    return typeof state === "function" ? receiver === state : state.has(receiver);\r
}\r
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 24228 characters]
//# sourceURL=webpack-internal:///../../../node_modules/tslib/tslib.es6.js
`);
              }
            ),
            /***/
            "../../../node_modules/tunnel-rat/dist/index.js": (
              /*!******************************************************!*\
                !*** ../../../node_modules/tunnel-rat/dist/index.js ***!
                \******************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ tunnel)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var zustand__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! zustand */ "../../../node_modules/zustand/esm/index.mjs");



var _window$document, _window$navigator;
/**
 * An SSR-friendly useLayoutEffect.
 *
 * React currently throws a warning when using useLayoutEffect on the server.
 * To get around it, we can conditionally useEffect on the server (no-op) and
 * useLayoutEffect elsewhere.
 *
 * @see https://github.com/facebook/react/issues/14927
 */

const useIsomorphicLayoutEffect = typeof window !== 'undefined' && ((_window$document = window.document) != null && _window$document.createElement || ((_window$navigator = window.navigator) == null ? void 0 : _window$navigator.product) === 'ReactNative') ? (react__WEBPACK_IMPORTED_MODULE_0___default().useLayoutEffect) : (react__WEBPACK_IMPORTED_MODULE_0___default().useEffect);

function tunnel() {
  const useStore = (0,zustand__WEBPACK_IMPORTED_MODULE_1__.create)(set => ({
    current: new Array(),
    version: 0,
    set
  }));
  return {
    In: ({
      children
    }) => {
      const set = useStore(state => state.set);
      const version = useStore(state => state.version);
      /* When this component mounts, we increase the store's version number.
      This will cause all existing rats to re-render (just like if the Out component
      were mapping items to a list.) The re-rendering will cause the final 
      order of rendered components to match what the user is expecting. */

      useIsomorphicLayoutEffect(() => {
        set(state => ({
          version: state.version + 1
        }));
      }, []);
      /* Any time the children _or_ the store's version number change, insert
      the specified React children into the list of rats. */

      useIsomorphicLayoutEffect(() => {
        set(({
          current
        }) => ({
          current: [...current, children]
        }));
        return () => set(({
          current
        }) => ({
          current: current.filter(c => c !== children)
        }));
      }, [children, version]);
      return null;
    },
    Out: () => {
      const current = useStore(state => state.current);
      return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, current);
    }
  };
}


//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3R1bm5lbC1yYXQvZGlzdC9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQTBCO0FBQ087O0FBRWpDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlRQUFpUSw4REFBcUIsR0FBRyx3REFBZTs7QUFFeFM7QUFDQSxtQkFBbUIsK0NBQU07QUFDekI7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsMEJBQTBCLDBEQUFtQixDQUFDLHVEQUFjO0FBQzVEO0FBQ0E7QUFDQTs7QUFFNkIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3R1bm5lbC1yYXQvZGlzdC9pbmRleC5qcz9lZjRjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjcmVhdGUgfSBmcm9tICd6dXN0YW5kJztcblxudmFyIF93aW5kb3ckZG9jdW1lbnQsIF93aW5kb3ckbmF2aWdhdG9yO1xuLyoqXG4gKiBBbiBTU1ItZnJpZW5kbHkgdXNlTGF5b3V0RWZmZWN0LlxuICpcbiAqIFJlYWN0IGN1cnJlbnRseSB0aHJvd3MgYSB3YXJuaW5nIHdoZW4gdXNpbmcgdXNlTGF5b3V0RWZmZWN0IG9uIHRoZSBzZXJ2ZXIuXG4gKiBUbyBnZXQgYXJvdW5kIGl0LCB3ZSBjYW4gY29uZGl0aW9uYWxseSB1c2VFZmZlY3Qgb24gdGhlIHNlcnZlciAobm8tb3ApIGFuZFxuICogdXNlTGF5b3V0RWZmZWN0IGVsc2V3aGVyZS5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvMTQ5MjdcbiAqL1xuXG5jb25zdCB1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0ID0gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgKChfd2luZG93JGRvY3VtZW50ID0gd2luZG93LmRvY3VtZW50KSAhPSBudWxsICYmIF93aW5kb3ckZG9jdW1lbnQuY3JlYXRlRWxlbWVudCB8fCAoKF93aW5kb3ckbmF2aWdhdG9yID0gd2luZG93Lm5hdmlnYXRvcikgPT0gbnVsbCA/IHZvaWQgMCA6IF93aW5kb3ckbmF2aWdhdG9yLnByb2R1Y3QpID09PSAnUmVhY3ROYXRpdmUnKSA/IFJlYWN0LnVzZUxheW91dEVmZmVjdCA6IFJlYWN0LnVzZUVmZmVjdDtcblxuZnVuY3Rpb24gdHVubmVsKCkge1xuICBjb25zdCB1c2VTdG9yZSA9IGNyZWF0ZShzZXQgPT4gKHtcbiAgICBjdXJyZW50OiBuZXcgQXJyYXkoKSxcbiAgICB2ZXJzaW9uOiAwLFxuICAgIHNldFxuICB9KSk7XG4gIHJldHVybiB7XG4gICAgSW46ICh7XG4gICAgICBjaGlsZHJlblxuICAgIH0pID0+IHtcbiAgICAgIGNvbnN0IHNldCA9IHVzZVN0b3JlKHN0YXRlID0+IHN0YXRlLnNldCk7XG4gICAgICBjb25zdCB2ZXJzaW9uID0gdXNlU3RvcmUoc3RhdGUgPT4gc3RhdGUudmVyc2lvbik7XG4gICAgICAvKiBXaGVuIHRoaXMgY29tcG9uZW50IG1vdW50cywgd2UgaW5jcmVhc2UgdGhlIHN0b3JlJ3MgdmVyc2lvbiBudW1iZXIuXG4gICAgICBUaGlzIHdpbGwgY2F1c2UgYWxsIGV4aXN0aW5nIHJhdHMgdG8gcmUtcmVuZGVyIChqdXN0IGxpa2UgaWYgdGhlIE91dCBjb21wb25lbnRcbiAgICAgIHdlcmUgbWFwcGluZyBpdGVtcyB0byBhIGxpc3QuKSBUaGUgcmUtcmVuZGVyaW5nIHdpbGwgY2F1c2UgdGhlIGZpbmFsIFxuICAgICAgb3JkZXIgb2YgcmVuZGVyZWQgY29tcG9uZW50cyB0byBtYXRjaCB3aGF0IHRoZSB1c2VyIGlzIGV4cGVjdGluZy4gKi9cblxuICAgICAgdXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHNldChzdGF0ZSA9PiAoe1xuICAgICAgICAgIHZlcnNpb246IHN0YXRlLnZlcnNpb24gKyAxXG4gICAgICAgIH0pKTtcbiAgICAgIH0sIFtdKTtcbiAgICAgIC8qIEFueSB0aW1lIHRoZSBjaGlsZHJlbiBfb3JfIHRoZSBzdG9yZSdzIHZlcnNpb24gbnVtYmVyIGNoYW5nZSwgaW5zZXJ0XG4gICAgICB0aGUgc3BlY2lmaWVkIFJlYWN0IGNoaWxkcmVuIGludG8gdGhlIGxpc3Qgb2YgcmF0cy4gKi9cblxuICAgICAgdXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHNldCgoe1xuICAgICAgICAgIGN1cnJlbnRcbiAgICAgICAgfSkgPT4gKHtcbiAgICAgICAgICBjdXJyZW50OiBbLi4uY3VycmVudCwgY2hpbGRyZW5dXG4gICAgICAgIH0pKTtcbiAgICAgICAgcmV0dXJuICgpID0+IHNldCgoe1xuICAgICAgICAgIGN1cnJlbnRcbiAgICAgICAgfSkgPT4gKHtcbiAgICAgICAgICBjdXJyZW50OiBjdXJyZW50LmZpbHRlcihjID0+IGMgIT09IGNoaWxkcmVuKVxuICAgICAgICB9KSk7XG4gICAgICB9LCBbY2hpbGRyZW4sIHZlcnNpb25dKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0sXG4gICAgT3V0OiAoKSA9PiB7XG4gICAgICBjb25zdCBjdXJyZW50ID0gdXNlU3RvcmUoc3RhdGUgPT4gc3RhdGUuY3VycmVudCk7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsIGN1cnJlbnQpO1xuICAgIH1cbiAgfTtcbn1cblxuZXhwb3J0IHsgdHVubmVsIGFzIGRlZmF1bHQgfTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==
//# sourceURL=webpack-internal:///../../../node_modules/tunnel-rat/dist/index.js
`);
              }
            ),
            /***/
            "../../../node_modules/use-callback-ref/dist/es2015/assignRef.js": (
              /*!***********************************************************************!*\
                !*** ../../../node_modules/use-callback-ref/dist/es2015/assignRef.js ***!
                \***********************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "assignRef": () => (/* binding */ assignRef)
/* harmony export */ });
/**
 * Assigns a value for a given ref, no matter of the ref format
 * @param {RefObject} ref - a callback function or ref object
 * @param value - a new value
 *
 * @see https://github.com/theKashey/use-callback-ref#assignref
 * @example
 * const refObject = useRef();
 * const refFn = (ref) => {....}
 *
 * assignRef(refObject, "refValue");
 * assignRef(refFn, "refValue");
 */
function assignRef(ref, value) {
    if (typeof ref === 'function') {
        ref(value);
    }
    else if (ref) {
        ref.current = value;
    }
    return ref;
}
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3VzZS1jYWxsYmFjay1yZWYvZGlzdC9lczIwMTUvYXNzaWduUmVmLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0EsV0FBVyxXQUFXO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3VzZS1jYWxsYmFjay1yZWYvZGlzdC9lczIwMTUvYXNzaWduUmVmLmpzPzJkMjUiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBc3NpZ25zIGEgdmFsdWUgZm9yIGEgZ2l2ZW4gcmVmLCBubyBtYXR0ZXIgb2YgdGhlIHJlZiBmb3JtYXRcbiAqIEBwYXJhbSB7UmVmT2JqZWN0fSByZWYgLSBhIGNhbGxiYWNrIGZ1bmN0aW9uIG9yIHJlZiBvYmplY3RcbiAqIEBwYXJhbSB2YWx1ZSAtIGEgbmV3IHZhbHVlXG4gKlxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vdGhlS2FzaGV5L3VzZS1jYWxsYmFjay1yZWYjYXNzaWducmVmXG4gKiBAZXhhbXBsZVxuICogY29uc3QgcmVmT2JqZWN0ID0gdXNlUmVmKCk7XG4gKiBjb25zdCByZWZGbiA9IChyZWYpID0+IHsuLi4ufVxuICpcbiAqIGFzc2lnblJlZihyZWZPYmplY3QsIFwicmVmVmFsdWVcIik7XG4gKiBhc3NpZ25SZWYocmVmRm4sIFwicmVmVmFsdWVcIik7XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NpZ25SZWYocmVmLCB2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgcmVmID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJlZih2YWx1ZSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHJlZikge1xuICAgICAgICByZWYuY3VycmVudCA9IHZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gcmVmO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9
//# sourceURL=webpack-internal:///../../../node_modules/use-callback-ref/dist/es2015/assignRef.js
`);
              }
            ),
            /***/
            "../../../node_modules/use-callback-ref/dist/es2015/useMergeRef.js": (
              /*!*************************************************************************!*\
                !*** ../../../node_modules/use-callback-ref/dist/es2015/useMergeRef.js ***!
                \*************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "useMergeRefs": () => (/* binding */ useMergeRefs)\n/* harmony export */ });\n/* harmony import */ var _assignRef__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./assignRef */ "../../../node_modules/use-callback-ref/dist/es2015/assignRef.js");\n/* harmony import */ var _useRef__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./useRef */ "../../../node_modules/use-callback-ref/dist/es2015/useRef.js");\n\n\n/**\n * Merges two or more refs together providing a single interface to set their value\n * @param {RefObject|Ref} refs\n * @returns {MutableRefObject} - a new ref, which translates all changes to {refs}\n *\n * @see {@link mergeRefs} a version without buit-in memoization\n * @see https://github.com/theKashey/use-callback-ref#usemergerefs\n * @example\n * const Component = React.forwardRef((props, ref) => {\n *   const ownRef = useRef();\n *   const domRef = useMergeRefs([ref, ownRef]); // \u{1F448} merge together\n *   return <div ref={domRef}>...</div>\n * }\n */\nfunction useMergeRefs(refs, defaultValue) {\n    return (0,_useRef__WEBPACK_IMPORTED_MODULE_0__.useCallbackRef)(defaultValue || null, function (newValue) { return refs.forEach(function (ref) { return (0,_assignRef__WEBPACK_IMPORTED_MODULE_1__.assignRef)(ref, newValue); }); });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3VzZS1jYWxsYmFjay1yZWYvZGlzdC9lczIwMTUvdXNlTWVyZ2VSZWYuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQXdDO0FBQ0U7QUFDMUM7QUFDQTtBQUNBLFdBQVcsZUFBZTtBQUMxQixhQUFhLGtCQUFrQiw4Q0FBOEM7QUFDN0U7QUFDQSxTQUFTLGlCQUFpQjtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlEQUFpRDtBQUNqRCxzQkFBc0IsT0FBTztBQUM3QjtBQUNBO0FBQ087QUFDUCxXQUFXLHVEQUFjLDZDQUE2QyxxQ0FBcUMsT0FBTyxxREFBUyxrQkFBa0IsSUFBSTtBQUNqSiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdXNlLWNhbGxiYWNrLXJlZi9kaXN0L2VzMjAxNS91c2VNZXJnZVJlZi5qcz85YzlmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFzc2lnblJlZiB9IGZyb20gJy4vYXNzaWduUmVmJztcbmltcG9ydCB7IHVzZUNhbGxiYWNrUmVmIH0gZnJvbSAnLi91c2VSZWYnO1xuLyoqXG4gKiBNZXJnZXMgdHdvIG9yIG1vcmUgcmVmcyB0b2dldGhlciBwcm92aWRpbmcgYSBzaW5nbGUgaW50ZXJmYWNlIHRvIHNldCB0aGVpciB2YWx1ZVxuICogQHBhcmFtIHtSZWZPYmplY3R8UmVmfSByZWZzXG4gKiBAcmV0dXJucyB7TXV0YWJsZVJlZk9iamVjdH0gLSBhIG5ldyByZWYsIHdoaWNoIHRyYW5zbGF0ZXMgYWxsIGNoYW5nZXMgdG8ge3JlZnN9XG4gKlxuICogQHNlZSB7QGxpbmsgbWVyZ2VSZWZzfSBhIHZlcnNpb24gd2l0aG91dCBidWl0LWluIG1lbW9pemF0aW9uXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90aGVLYXNoZXkvdXNlLWNhbGxiYWNrLXJlZiN1c2VtZXJnZXJlZnNcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBDb21wb25lbnQgPSBSZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgcmVmKSA9PiB7XG4gKiAgIGNvbnN0IG93blJlZiA9IHVzZVJlZigpO1xuICogICBjb25zdCBkb21SZWYgPSB1c2VNZXJnZVJlZnMoW3JlZiwgb3duUmVmXSk7IC8vIPCfkYggbWVyZ2UgdG9nZXRoZXJcbiAqICAgcmV0dXJuIDxkaXYgcmVmPXtkb21SZWZ9Pi4uLjwvZGl2PlxuICogfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlTWVyZ2VSZWZzKHJlZnMsIGRlZmF1bHRWYWx1ZSkge1xuICAgIHJldHVybiB1c2VDYWxsYmFja1JlZihkZWZhdWx0VmFsdWUgfHwgbnVsbCwgZnVuY3Rpb24gKG5ld1ZhbHVlKSB7IHJldHVybiByZWZzLmZvckVhY2goZnVuY3Rpb24gKHJlZikgeyByZXR1cm4gYXNzaWduUmVmKHJlZiwgbmV3VmFsdWUpOyB9KTsgfSk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/use-callback-ref/dist/es2015/useMergeRef.js\n');
              }
            ),
            /***/
            "../../../node_modules/use-callback-ref/dist/es2015/useRef.js": (
              /*!********************************************************************!*\
                !*** ../../../node_modules/use-callback-ref/dist/es2015/useRef.js ***!
                \********************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "useCallbackRef": () => (/* binding */ useCallbackRef)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);

/**
 * creates a MutableRef with ref change callback
 * @param initialValue - initial ref value
 * @param {Function} callback - a callback to run when value changes
 *
 * @example
 * const ref = useCallbackRef(0, (newValue, oldValue) => console.log(oldValue, '->', newValue);
 * ref.current = 1;
 * // prints 0 -> 1
 *
 * @see https://reactjs.org/docs/hooks-reference.html#useref
 * @see https://github.com/theKashey/use-callback-ref#usecallbackref---to-replace-reactuseref
 * @returns {MutableRefObject}
 */
function useCallbackRef(initialValue, callback) {
    var ref = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(function () { return ({
        // value
        value: initialValue,
        // last callback
        callback: callback,
        // "memoized" public interface
        facade: {
            get current() {
                return ref.value;
            },
            set current(value) {
                var last = ref.value;
                if (last !== value) {
                    ref.value = value;
                    ref.callback(value, last);
                }
            },
        },
    }); })[0];
    // update callback
    ref.callback = callback;
    return ref.facade;
}
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3VzZS1jYWxsYmFjay1yZWYvZGlzdC9lczIwMTUvdXNlUmVmLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxXQUFXLFVBQVU7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNPO0FBQ1AsY0FBYywrQ0FBUSxlQUFlO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFNBQVM7QUFDVCxLQUFLLElBQUk7QUFDVDtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdXNlLWNhbGxiYWNrLXJlZi9kaXN0L2VzMjAxNS91c2VSZWYuanM/NWJkNSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0Jztcbi8qKlxuICogY3JlYXRlcyBhIE11dGFibGVSZWYgd2l0aCByZWYgY2hhbmdlIGNhbGxiYWNrXG4gKiBAcGFyYW0gaW5pdGlhbFZhbHVlIC0gaW5pdGlhbCByZWYgdmFsdWVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIC0gYSBjYWxsYmFjayB0byBydW4gd2hlbiB2YWx1ZSBjaGFuZ2VzXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHJlZiA9IHVzZUNhbGxiYWNrUmVmKDAsIChuZXdWYWx1ZSwgb2xkVmFsdWUpID0+IGNvbnNvbGUubG9nKG9sZFZhbHVlLCAnLT4nLCBuZXdWYWx1ZSk7XG4gKiByZWYuY3VycmVudCA9IDE7XG4gKiAvLyBwcmludHMgMCAtPiAxXG4gKlxuICogQHNlZSBodHRwczovL3JlYWN0anMub3JnL2RvY3MvaG9va3MtcmVmZXJlbmNlLmh0bWwjdXNlcmVmXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90aGVLYXNoZXkvdXNlLWNhbGxiYWNrLXJlZiN1c2VjYWxsYmFja3JlZi0tLXRvLXJlcGxhY2UtcmVhY3R1c2VyZWZcbiAqIEByZXR1cm5zIHtNdXRhYmxlUmVmT2JqZWN0fVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQ2FsbGJhY2tSZWYoaW5pdGlhbFZhbHVlLCBjYWxsYmFjaykge1xuICAgIHZhciByZWYgPSB1c2VTdGF0ZShmdW5jdGlvbiAoKSB7IHJldHVybiAoe1xuICAgICAgICAvLyB2YWx1ZVxuICAgICAgICB2YWx1ZTogaW5pdGlhbFZhbHVlLFxuICAgICAgICAvLyBsYXN0IGNhbGxiYWNrXG4gICAgICAgIGNhbGxiYWNrOiBjYWxsYmFjayxcbiAgICAgICAgLy8gXCJtZW1vaXplZFwiIHB1YmxpYyBpbnRlcmZhY2VcbiAgICAgICAgZmFjYWRlOiB7XG4gICAgICAgICAgICBnZXQgY3VycmVudCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVmLnZhbHVlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldCBjdXJyZW50KHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGxhc3QgPSByZWYudmFsdWU7XG4gICAgICAgICAgICAgICAgaWYgKGxhc3QgIT09IHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlZi52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICByZWYuY2FsbGJhY2sodmFsdWUsIGxhc3QpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgfSk7IH0pWzBdO1xuICAgIC8vIHVwZGF0ZSBjYWxsYmFja1xuICAgIHJlZi5jYWxsYmFjayA9IGNhbGxiYWNrO1xuICAgIHJldHVybiByZWYuZmFjYWRlO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9
//# sourceURL=webpack-internal:///../../../node_modules/use-callback-ref/dist/es2015/useRef.js
`);
              }
            ),
            /***/
            "../../../node_modules/use-sidecar/dist/es2015/exports.js": (
              /*!****************************************************************!*\
                !*** ../../../node_modules/use-sidecar/dist/es2015/exports.js ***!
                \****************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "exportSidecar": () => (/* binding */ exportSidecar)
/* harmony export */ });
/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! tslib */ "../../../node_modules/tslib/tslib.es6.js");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);


var SideCar = function (_a) {
    var sideCar = _a.sideCar, rest = (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__rest)(_a, ["sideCar"]);
    if (!sideCar) {
        throw new Error('Sidecar: please provide \`sideCar\` property to import the right car');
    }
    var Target = sideCar.read();
    if (!Target) {
        throw new Error('Sidecar medium not found');
    }
    return react__WEBPACK_IMPORTED_MODULE_0__.createElement(Target, (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__assign)({}, rest));
};
SideCar.isSideCarExport = true;
function exportSidecar(medium, exported) {
    medium.useMedium(exported);
    return SideCar;
}
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3VzZS1zaWRlY2FyL2Rpc3QvZXMyMDE1L2V4cG9ydHMuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUF5QztBQUNWO0FBQy9CO0FBQ0EscUNBQXFDLDZDQUFNO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxnREFBbUIsU0FBUywrQ0FBUSxHQUFHO0FBQ2xEO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdXNlLXNpZGVjYXIvZGlzdC9lczIwMTUvZXhwb3J0cy5qcz9kYzMxIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduLCBfX3Jlc3QgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbnZhciBTaWRlQ2FyID0gZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIHNpZGVDYXIgPSBfYS5zaWRlQ2FyLCByZXN0ID0gX19yZXN0KF9hLCBbXCJzaWRlQ2FyXCJdKTtcbiAgICBpZiAoIXNpZGVDYXIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdTaWRlY2FyOiBwbGVhc2UgcHJvdmlkZSBgc2lkZUNhcmAgcHJvcGVydHkgdG8gaW1wb3J0IHRoZSByaWdodCBjYXInKTtcbiAgICB9XG4gICAgdmFyIFRhcmdldCA9IHNpZGVDYXIucmVhZCgpO1xuICAgIGlmICghVGFyZ2V0KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignU2lkZWNhciBtZWRpdW0gbm90IGZvdW5kJyk7XG4gICAgfVxuICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFRhcmdldCwgX19hc3NpZ24oe30sIHJlc3QpKTtcbn07XG5TaWRlQ2FyLmlzU2lkZUNhckV4cG9ydCA9IHRydWU7XG5leHBvcnQgZnVuY3Rpb24gZXhwb3J0U2lkZWNhcihtZWRpdW0sIGV4cG9ydGVkKSB7XG4gICAgbWVkaXVtLnVzZU1lZGl1bShleHBvcnRlZCk7XG4gICAgcmV0dXJuIFNpZGVDYXI7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=
//# sourceURL=webpack-internal:///../../../node_modules/use-sidecar/dist/es2015/exports.js
`);
              }
            ),
            /***/
            "../../../node_modules/use-sidecar/dist/es2015/medium.js": (
              /*!***************************************************************!*\
                !*** ../../../node_modules/use-sidecar/dist/es2015/medium.js ***!
                \***************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "createMedium": () => (/* binding */ createMedium),\n/* harmony export */   "createSidecarMedium": () => (/* binding */ createSidecarMedium)\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../../node_modules/tslib/tslib.es6.js");\n\nfunction ItoI(a) {\n    return a;\n}\nfunction innerCreateMedium(defaults, middleware) {\n    if (middleware === void 0) { middleware = ItoI; }\n    var buffer = [];\n    var assigned = false;\n    var medium = {\n        read: function () {\n            if (assigned) {\n                throw new Error(\'Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.\');\n            }\n            if (buffer.length) {\n                return buffer[buffer.length - 1];\n            }\n            return defaults;\n        },\n        useMedium: function (data) {\n            var item = middleware(data, assigned);\n            buffer.push(item);\n            return function () {\n                buffer = buffer.filter(function (x) { return x !== item; });\n            };\n        },\n        assignSyncMedium: function (cb) {\n            assigned = true;\n            while (buffer.length) {\n                var cbs = buffer;\n                buffer = [];\n                cbs.forEach(cb);\n            }\n            buffer = {\n                push: function (x) { return cb(x); },\n                filter: function () { return buffer; },\n            };\n        },\n        assignMedium: function (cb) {\n            assigned = true;\n            var pendingQueue = [];\n            if (buffer.length) {\n                var cbs = buffer;\n                buffer = [];\n                cbs.forEach(cb);\n                pendingQueue = buffer;\n            }\n            var executeQueue = function () {\n                var cbs = pendingQueue;\n                pendingQueue = [];\n                cbs.forEach(cb);\n            };\n            var cycle = function () { return Promise.resolve().then(executeQueue); };\n            cycle();\n            buffer = {\n                push: function (x) {\n                    pendingQueue.push(x);\n                    cycle();\n                },\n                filter: function (filter) {\n                    pendingQueue = pendingQueue.filter(filter);\n                    return buffer;\n                },\n            };\n        },\n    };\n    return medium;\n}\nfunction createMedium(defaults, middleware) {\n    if (middleware === void 0) { middleware = ItoI; }\n    return innerCreateMedium(defaults, middleware);\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction createSidecarMedium(options) {\n    if (options === void 0) { options = {}; }\n    var medium = innerCreateMedium(null);\n    medium.options = (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__assign)({ async: true, ssr: false }, options);\n    return medium;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4564 characters]\n//# sourceURL=webpack-internal:///../../../node_modules/use-sidecar/dist/es2015/medium.js\n');
              }
            ),
            /***/
            "../../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js": (
              /*!*****************************************************************************************************!*\
                !*** ../../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js ***!
                \*****************************************************************************************************/
              /***/
              (__unused_webpack_module, exports, __webpack_require__) => {
                "use strict";
                eval("/**\n * @license React\n * use-sync-external-store-shim.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nif (true) {\n  (function() {\n\n          'use strict';\n\n/* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart ===\n    'function'\n) {\n  __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());\n}\n          var React = __webpack_require__(/*! react */ \"react\");\n\nvar ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n\nfunction error(format) {\n  {\n    {\n      for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n        args[_key2 - 1] = arguments[_key2];\n      }\n\n      printWarning('error', format, args);\n    }\n  }\n}\n\nfunction printWarning(level, format, args) {\n  // When changing this logic, you might want to also\n  // update consoleWithStackDev.www.js as well.\n  {\n    var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n    var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n    if (stack !== '') {\n      format += '%s';\n      args = args.concat([stack]);\n    } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n    var argsWithFormat = args.map(function (item) {\n      return String(item);\n    }); // Careful: RN currently depends on this prefix\n\n    argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n    // breaks IE9: https://github.com/facebook/react/issues/13610\n    // eslint-disable-next-line react-internal/no-production-logging\n\n    Function.prototype.apply.call(console[level], console, argsWithFormat);\n  }\n}\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x, y) {\n  return x === y && (x !== 0 || 1 / x === 1 / y) || x !== x && y !== y // eslint-disable-line no-self-compare\n  ;\n}\n\nvar objectIs = typeof Object.is === 'function' ? Object.is : is;\n\n// dispatch for CommonJS interop named imports.\n\nvar useState = React.useState,\n    useEffect = React.useEffect,\n    useLayoutEffect = React.useLayoutEffect,\n    useDebugValue = React.useDebugValue;\nvar didWarnOld18Alpha = false;\nvar didWarnUncachedGetSnapshot = false; // Disclaimer: This shim breaks many of the rules of React, and only works\n// because of a very particular set of implementation details and assumptions\n// -- change any one of them and it will break. The most important assumption\n// is that updates are always synchronous, because concurrent rendering is\n// only available in versions of React that also have a built-in\n// useSyncExternalStore API. And we only use this shim when the built-in API\n// does not exist.\n//\n// Do not assume that the clever hacks used by this hook also work in general.\n// The point of this shim is to replace the need for hacks by other libraries.\n\nfunction useSyncExternalStore(subscribe, getSnapshot, // Note: The shim does not use getServerSnapshot, because pre-18 versions of\n// React do not expose a way to check if we're hydrating. So users of the shim\n// will need to track that themselves and return the correct value\n// from `getSnapshot`.\ngetServerSnapshot) {\n  {\n    if (!didWarnOld18Alpha) {\n      if (React.startTransition !== undefined) {\n        didWarnOld18Alpha = true;\n\n        error('You are using an outdated, pre-release alpha of React 18 that ' + 'does not support useSyncExternalStore. The ' + 'use-sync-external-store shim will not work correctly. Upgrade ' + 'to a newer pre-release.');\n      }\n    }\n  } // Read the current snapshot from the store on every render. Again, this\n  // breaks the rules of React, and only works here because of specific\n  // implementation details, most importantly that updates are\n  // always synchronous.\n\n\n  var value = getSnapshot();\n\n  {\n    if (!didWarnUncachedGetSnapshot) {\n      var cachedValue = getSnapshot();\n\n      if (!objectIs(value, cachedValue)) {\n        error('The result of getSnapshot should be cached to avoid an infinite loop');\n\n        didWarnUncachedGetSnapshot = true;\n      }\n    }\n  } // Because updates are synchronous, we don't queue them. Instead we force a\n  // re-render whenever the subscribed state changes by updating an some\n  // arbitrary useState hook. Then, during render, we call getSnapshot to read\n  // the current value.\n  //\n  // Because we don't actually use the state returned by the useState hook, we\n  // can save a bit of memory by storing other stuff in that slot.\n  //\n  // To implement the early bailout, we need to track some things on a mutable\n  // object. Usually, we would put that in a useRef hook, but we can stash it in\n  // our useState hook instead.\n  //\n  // To force a re-render, we call forceUpdate({inst}). That works because the\n  // new object always fails an equality check.\n\n\n  var _useState = useState({\n    inst: {\n      value: value,\n      getSnapshot: getSnapshot\n    }\n  }),\n      inst = _useState[0].inst,\n      forceUpdate = _useState[1]; // Track the latest getSnapshot function with a ref. This needs to be updated\n  // in the layout phase so we can access it during the tearing check that\n  // happens on subscribe.\n\n\n  useLayoutEffect(function () {\n    inst.value = value;\n    inst.getSnapshot = getSnapshot; // Whenever getSnapshot or subscribe changes, we need to check in the\n    // commit phase if there was an interleaved mutation. In concurrent mode\n    // this can happen all the time, but even in synchronous mode, an earlier\n    // effect may have mutated the store.\n\n    if (checkIfSnapshotChanged(inst)) {\n      // Force a re-render.\n      forceUpdate({\n        inst: inst\n      });\n    }\n  }, [subscribe, value, getSnapshot]);\n  useEffect(function () {\n    // Check for changes right before subscribing. Subsequent changes will be\n    // detected in the subscription handler.\n    if (checkIfSnapshotChanged(inst)) {\n      // Force a re-render.\n      forceUpdate({\n        inst: inst\n      });\n    }\n\n    var handleStoreChange = function () {\n      // TODO: Because there is no cross-renderer API for batching updates, it's\n      // up to the consumer of this library to wrap their subscription event\n      // with unstable_batchedUpdates. Should we try to detect when this isn't\n      // the case and print a warning in development?\n      // The store changed. Check if the snapshot changed since the last time we\n      // read from the store.\n      if (checkIfSnapshotChanged(inst)) {\n        // Force a re-render.\n        forceUpdate({\n          inst: inst\n        });\n      }\n    }; // Subscribe to the store and return a clean-up function.\n\n\n    return subscribe(handleStoreChange);\n  }, [subscribe]);\n  useDebugValue(value);\n  return value;\n}\n\nfunction checkIfSnapshotChanged(inst) {\n  var latestGetSnapshot = inst.getSnapshot;\n  var prevValue = inst.value;\n\n  try {\n    var nextValue = latestGetSnapshot();\n    return !objectIs(prevValue, nextValue);\n  } catch (error) {\n    return true;\n  }\n}\n\nfunction useSyncExternalStore$1(subscribe, getSnapshot, getServerSnapshot) {\n  // Note: The shim does not use getServerSnapshot, because pre-18 versions of\n  // React do not expose a way to check if we're hydrating. So users of the shim\n  // will need to track that themselves and return the correct value\n  // from `getSnapshot`.\n  return getSnapshot();\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined');\n\nvar isServerEnvironment = !canUseDOM;\n\nvar shim = isServerEnvironment ? useSyncExternalStore$1 : useSyncExternalStore;\nvar useSyncExternalStore$2 = React.useSyncExternalStore !== undefined ? React.useSyncExternalStore : shim;\n\nexports.useSyncExternalStore = useSyncExternalStore$2;\n          /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop ===\n    'function'\n) {\n  __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());\n}\n        \n  })();\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 13572 characters]\n//# sourceURL=webpack-internal:///../../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js\n");
              }
            ),
            /***/
            "../../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js": (
              /*!*******************************************************************************************************************!*\
                !*** ../../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js ***!
                \*******************************************************************************************************************/
              /***/
              (__unused_webpack_module, exports, __webpack_require__) => {
                "use strict";
                eval(`/**
 * @license React
 * use-sync-external-store-shim/with-selector.development.js
 *
 * Copyright (c) Facebook, Inc. and its affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */



if (true) {
  (function() {

          'use strict';

/* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */
if (
  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&
  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart ===
    'function'
) {
  __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());
}
          var React = __webpack_require__(/*! react */ "react");
var shim = __webpack_require__(/*! use-sync-external-store/shim */ "../../../node_modules/use-sync-external-store/shim/index.js");

/**
 * inlined Object.is polyfill to avoid requiring consumers ship their own
 * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is
 */
function is(x, y) {
  return x === y && (x !== 0 || 1 / x === 1 / y) || x !== x && y !== y // eslint-disable-line no-self-compare
  ;
}

var objectIs = typeof Object.is === 'function' ? Object.is : is;

var useSyncExternalStore = shim.useSyncExternalStore;

// for CommonJS interop.

var useRef = React.useRef,
    useEffect = React.useEffect,
    useMemo = React.useMemo,
    useDebugValue = React.useDebugValue; // Same as useSyncExternalStore, but supports selector and isEqual arguments.

function useSyncExternalStoreWithSelector(subscribe, getSnapshot, getServerSnapshot, selector, isEqual) {
  // Use this to track the rendered snapshot.
  var instRef = useRef(null);
  var inst;

  if (instRef.current === null) {
    inst = {
      hasValue: false,
      value: null
    };
    instRef.current = inst;
  } else {
    inst = instRef.current;
  }

  var _useMemo = useMemo(function () {
    // Track the memoized state using closure variables that are local to this
    // memoized instance of a getSnapshot function. Intentionally not using a
    // useRef hook, because that state would be shared across all concurrent
    // copies of the hook/component.
    var hasMemo = false;
    var memoizedSnapshot;
    var memoizedSelection;

    var memoizedSelector = function (nextSnapshot) {
      if (!hasMemo) {
        // The first time the hook is called, there is no memoized result.
        hasMemo = true;
        memoizedSnapshot = nextSnapshot;

        var _nextSelection = selector(nextSnapshot);

        if (isEqual !== undefined) {
          // Even if the selector has changed, the currently rendered selection
          // may be equal to the new selection. We should attempt to reuse the
          // current value if possible, to preserve downstream memoizations.
          if (inst.hasValue) {
            var currentSelection = inst.value;

            if (isEqual(currentSelection, _nextSelection)) {
              memoizedSelection = currentSelection;
              return currentSelection;
            }
          }
        }

        memoizedSelection = _nextSelection;
        return _nextSelection;
      } // We may be able to reuse the previous invocation's result.


      // We may be able to reuse the previous invocation's result.
      var prevSnapshot = memoizedSnapshot;
      var prevSelection = memoizedSelection;

      if (objectIs(prevSnapshot, nextSnapshot)) {
        // The snapshot is the same as last time. Reuse the previous selection.
        return prevSelection;
      } // The snapshot has changed, so we need to compute a new selection.


      // The snapshot has changed, so we need to compute a new selection.
      var nextSelection = selector(nextSnapshot); // If a custom isEqual function is provided, use that to check if the data
      // has changed. If it hasn't, return the previous selection. That signals
      // to React that the selections are conceptually equal, and we can bail
      // out of rendering.

      // If a custom isEqual function is provided, use that to check if the data
      // has changed. If it hasn't, return the previous selection. That signals
      // to React that the selections are conceptually equal, and we can bail
      // out of rendering.
      if (isEqual !== undefined && isEqual(prevSelection, nextSelection)) {
        return prevSelection;
      }

      memoizedSnapshot = nextSnapshot;
      memoizedSelection = nextSelection;
      return nextSelection;
    }; // Assigning this to a constant so that Flow knows it can't change.


    // Assigning this to a constant so that Flow knows it can't change.
    var maybeGetServerSnapshot = getServerSnapshot === undefined ? null : getServerSnapshot;

    var getSnapshotWithSelector = function () {
      return memoizedSelector(getSnapshot());
    };

    var getServerSnapshotWithSelector = maybeGetServerSnapshot === null ? undefined : function () {
      return memoizedSelector(maybeGetServerSnapshot());
    };
    return [getSnapshotWithSelector, getServerSnapshotWithSelector];
  }, [getSnapshot, getServerSnapshot, selector, isEqual]),
      getSelection = _useMemo[0],
      getServerSelection = _useMemo[1];

  var value = useSyncExternalStore(subscribe, getSelection, getServerSelection);
  useEffect(function () {
    inst.hasValue = true;
    inst.value = value;
  }, [value]);
  useDebugValue(value);
  return value;
}

exports.useSyncExternalStoreWithSelector = useSyncExternalStoreWithSelector;
          /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */
if (
  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&
  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop ===
    'function'
) {
  __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());
}
        
  })();
}
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 9360 characters]
//# sourceURL=webpack-internal:///../../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js
`);
              }
            ),
            /***/
            "../../../node_modules/use-sync-external-store/shim/index.js": (
              /*!*******************************************************************!*\
                !*** ../../../node_modules/use-sync-external-store/shim/index.js ***!
                \*******************************************************************/
              /***/
              (module, __unused_webpack_exports, __webpack_require__) => {
                "use strict";
                eval('\n\nif (false) {} else {\n  module.exports = __webpack_require__(/*! ../cjs/use-sync-external-store-shim.development.js */ "../../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3VzZS1zeW5jLWV4dGVybmFsLXN0b3JlL3NoaW0vaW5kZXguanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWIsSUFBSSxLQUFxQyxFQUFFLEVBRTFDLENBQUM7QUFDRixFQUFFLCtMQUE4RTtBQUNoRiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdXNlLXN5bmMtZXh0ZXJuYWwtc3RvcmUvc2hpbS9pbmRleC5qcz83NmI1Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi9janMvdXNlLXN5bmMtZXh0ZXJuYWwtc3RvcmUtc2hpbS5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi9janMvdXNlLXN5bmMtZXh0ZXJuYWwtc3RvcmUtc2hpbS5kZXZlbG9wbWVudC5qcycpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/use-sync-external-store/shim/index.js\n');
              }
            ),
            /***/
            "../../../node_modules/use-sync-external-store/shim/with-selector.js": (
              /*!***************************************************************************!*\
                !*** ../../../node_modules/use-sync-external-store/shim/with-selector.js ***!
                \***************************************************************************/
              /***/
              (module, __unused_webpack_exports, __webpack_require__) => {
                "use strict";
                eval('\n\nif (false) {} else {\n  module.exports = __webpack_require__(/*! ../cjs/use-sync-external-store-shim/with-selector.development.js */ "../../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3VzZS1zeW5jLWV4dGVybmFsLXN0b3JlL3NoaW0vd2l0aC1zZWxlY3Rvci5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYixJQUFJLEtBQXFDLEVBQUUsRUFFMUMsQ0FBQztBQUNGLEVBQUUsMk5BQTRGO0FBQzlGIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy91c2Utc3luYy1leHRlcm5hbC1zdG9yZS9zaGltL3dpdGgtc2VsZWN0b3IuanM/M2M2NiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vY2pzL3VzZS1zeW5jLWV4dGVybmFsLXN0b3JlLXNoaW0vd2l0aC1zZWxlY3Rvci5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi9janMvdXNlLXN5bmMtZXh0ZXJuYWwtc3RvcmUtc2hpbS93aXRoLXNlbGVjdG9yLmRldmVsb3BtZW50LmpzJyk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/use-sync-external-store/shim/with-selector.js\n');
              }
            ),
            /***/
            "../../locales lazy recursive ^\\.\\/.*\\.json$": (
              /*!****************************************************************************************!*\
                !*** ../../locales/ lazy ^\.\/.*\.json$ chunkName: locales/[request] namespace object ***!
                \****************************************************************************************/
              /***/
              (module2, __unused_webpack_exports2, __webpack_require__2) => {
                var map = {
                  "./ar-SA.json": [
                    "../../locales/ar-SA.json",
                    "locales/ar-SA-json"
                  ],
                  "./az-AZ.json": [
                    "../../locales/az-AZ.json",
                    "locales/az-AZ-json"
                  ],
                  "./bg-BG.json": [
                    "../../locales/bg-BG.json",
                    "locales/bg-BG-json"
                  ],
                  "./bn-BD.json": [
                    "../../locales/bn-BD.json",
                    "locales/bn-BD-json"
                  ],
                  "./ca-ES.json": [
                    "../../locales/ca-ES.json",
                    "locales/ca-ES-json"
                  ],
                  "./cs-CZ.json": [
                    "../../locales/cs-CZ.json",
                    "locales/cs-CZ-json"
                  ],
                  "./da-DK.json": [
                    "../../locales/da-DK.json",
                    "locales/da-DK-json"
                  ],
                  "./de-DE.json": [
                    "../../locales/de-DE.json",
                    "locales/de-DE-json"
                  ],
                  "./el-GR.json": [
                    "../../locales/el-GR.json",
                    "locales/el-GR-json"
                  ],
                  "./en.json": [
                    "../../locales/en.json"
                  ],
                  "./es-ES.json": [
                    "../../locales/es-ES.json",
                    "locales/es-ES-json"
                  ],
                  "./eu-ES.json": [
                    "../../locales/eu-ES.json",
                    "locales/eu-ES-json"
                  ],
                  "./fa-IR.json": [
                    "../../locales/fa-IR.json",
                    "locales/fa-IR-json"
                  ],
                  "./fi-FI.json": [
                    "../../locales/fi-FI.json",
                    "locales/fi-FI-json"
                  ],
                  "./fr-FR.json": [
                    "../../locales/fr-FR.json",
                    "locales/fr-FR-json"
                  ],
                  "./gl-ES.json": [
                    "../../locales/gl-ES.json",
                    "locales/gl-ES-json"
                  ],
                  "./he-IL.json": [
                    "../../locales/he-IL.json",
                    "locales/he-IL-json"
                  ],
                  "./hi-IN.json": [
                    "../../locales/hi-IN.json",
                    "locales/hi-IN-json"
                  ],
                  "./hu-HU.json": [
                    "../../locales/hu-HU.json",
                    "locales/hu-HU-json"
                  ],
                  "./id-ID.json": [
                    "../../locales/id-ID.json",
                    "locales/id-ID-json"
                  ],
                  "./it-IT.json": [
                    "../../locales/it-IT.json",
                    "locales/it-IT-json"
                  ],
                  "./ja-JP.json": [
                    "../../locales/ja-JP.json",
                    "locales/ja-JP-json"
                  ],
                  "./kaa.json": [
                    "../../locales/kaa.json",
                    "locales/kaa-json"
                  ],
                  "./kab-KAB.json": [
                    "../../locales/kab-KAB.json",
                    "locales/kab-KAB-json"
                  ],
                  "./kk-KZ.json": [
                    "../../locales/kk-KZ.json",
                    "locales/kk-KZ-json"
                  ],
                  "./km-KH.json": [
                    "../../locales/km-KH.json",
                    "locales/km-KH-json"
                  ],
                  "./ko-KR.json": [
                    "../../locales/ko-KR.json",
                    "locales/ko-KR-json"
                  ],
                  "./ku-TR.json": [
                    "../../locales/ku-TR.json",
                    "locales/ku-TR-json"
                  ],
                  "./lt-LT.json": [
                    "../../locales/lt-LT.json",
                    "locales/lt-LT-json"
                  ],
                  "./lv-LV.json": [
                    "../../locales/lv-LV.json",
                    "locales/lv-LV-json"
                  ],
                  "./mr-IN.json": [
                    "../../locales/mr-IN.json",
                    "locales/mr-IN-json"
                  ],
                  "./my-MM.json": [
                    "../../locales/my-MM.json",
                    "locales/my-MM-json"
                  ],
                  "./nb-NO.json": [
                    "../../locales/nb-NO.json",
                    "locales/nb-NO-json"
                  ],
                  "./nl-NL.json": [
                    "../../locales/nl-NL.json",
                    "locales/nl-NL-json"
                  ],
                  "./nn-NO.json": [
                    "../../locales/nn-NO.json",
                    "locales/nn-NO-json"
                  ],
                  "./oc-FR.json": [
                    "../../locales/oc-FR.json",
                    "locales/oc-FR-json"
                  ],
                  "./pa-IN.json": [
                    "../../locales/pa-IN.json",
                    "locales/pa-IN-json"
                  ],
                  "./percentages.json": [
                    "../../locales/percentages.json"
                  ],
                  "./pl-PL.json": [
                    "../../locales/pl-PL.json",
                    "locales/pl-PL-json"
                  ],
                  "./pt-BR.json": [
                    "../../locales/pt-BR.json",
                    "locales/pt-BR-json"
                  ],
                  "./pt-PT.json": [
                    "../../locales/pt-PT.json",
                    "locales/pt-PT-json"
                  ],
                  "./ro-RO.json": [
                    "../../locales/ro-RO.json",
                    "locales/ro-RO-json"
                  ],
                  "./ru-RU.json": [
                    "../../locales/ru-RU.json",
                    "locales/ru-RU-json"
                  ],
                  "./si-LK.json": [
                    "../../locales/si-LK.json",
                    "locales/si-LK-json"
                  ],
                  "./sk-SK.json": [
                    "../../locales/sk-SK.json",
                    "locales/sk-SK-json"
                  ],
                  "./sl-SI.json": [
                    "../../locales/sl-SI.json",
                    "locales/sl-SI-json"
                  ],
                  "./sv-SE.json": [
                    "../../locales/sv-SE.json",
                    "locales/sv-SE-json"
                  ],
                  "./ta-IN.json": [
                    "../../locales/ta-IN.json",
                    "locales/ta-IN-json"
                  ],
                  "./th-TH.json": [
                    "../../locales/th-TH.json",
                    "locales/th-TH-json"
                  ],
                  "./tr-TR.json": [
                    "../../locales/tr-TR.json",
                    "locales/tr-TR-json"
                  ],
                  "./uk-UA.json": [
                    "../../locales/uk-UA.json",
                    "locales/uk-UA-json"
                  ],
                  "./vi-VN.json": [
                    "../../locales/vi-VN.json",
                    "locales/vi-VN-json"
                  ],
                  "./zh-CN.json": [
                    "../../locales/zh-CN.json",
                    "locales/zh-CN-json"
                  ],
                  "./zh-HK.json": [
                    "../../locales/zh-HK.json",
                    "locales/zh-HK-json"
                  ],
                  "./zh-TW.json": [
                    "../../locales/zh-TW.json",
                    "locales/zh-TW-json"
                  ]
                };
                function webpackAsyncContext(req) {
                  if (!__webpack_require__2.o(map, req)) {
                    return Promise.resolve().then(() => {
                      var e = new Error("Cannot find module '" + req + "'");
                      e.code = "MODULE_NOT_FOUND";
                      throw e;
                    });
                  }
                  var ids = map[req], id = ids[0];
                  return Promise.all(ids.slice(1).map(__webpack_require__2.e)).then(() => {
                    return __webpack_require__2.t(id, 3 | 16);
                  });
                }
                webpackAsyncContext.keys = () => Object.keys(map);
                webpackAsyncContext.id = "../../locales lazy recursive ^\\.\\/.*\\.json$";
                module2.exports = webpackAsyncContext;
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../../public/fonts.css": (
              /*!************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../../public/fonts.css ***!
                \************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _src_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../src/packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _src_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_src_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _src_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../src/packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _src_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_src_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _src_packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../src/packages/excalidraw/node_modules/css-loader/dist/runtime/getUrl.js */ "./node_modules/css-loader/dist/runtime/getUrl.js");\n/* harmony import */ var _src_packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_src_packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__);\n// Imports\n\n\n\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(/* asset import */ __webpack_require__(/*! Virgil.woff2 */ "../../../public/Virgil.woff2"), __webpack_require__.b);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(/* asset import */ __webpack_require__(/*! Cascadia.woff2 */ "../../../public/Cascadia.woff2"), __webpack_require__.b);\nvar ___CSS_LOADER_URL_IMPORT_2___ = new URL(/* asset import */ __webpack_require__(/*! Assistant-Regular.woff2 */ "../../../public/Assistant-Regular.woff2"), __webpack_require__.b);\nvar ___CSS_LOADER_URL_IMPORT_3___ = new URL(/* asset import */ __webpack_require__(/*! Assistant-Medium.woff2 */ "../../../public/Assistant-Medium.woff2"), __webpack_require__.b);\nvar ___CSS_LOADER_URL_IMPORT_4___ = new URL(/* asset import */ __webpack_require__(/*! Assistant-SemiBold.woff2 */ "../../../public/Assistant-SemiBold.woff2"), __webpack_require__.b);\nvar ___CSS_LOADER_URL_IMPORT_5___ = new URL(/* asset import */ __webpack_require__(/*! Assistant-Bold.woff2 */ "../../../public/Assistant-Bold.woff2"), __webpack_require__.b);\nvar ___CSS_LOADER_EXPORT___ = _src_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_src_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = _src_packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = _src_packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = _src_packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_2___);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = _src_packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_3___);\nvar ___CSS_LOADER_URL_REPLACEMENT_4___ = _src_packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_4___);\nvar ___CSS_LOADER_URL_REPLACEMENT_5___ = _src_packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_5___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, "/* http://www.eaglefonts.com/fg-virgil-ttf-131249.htm */\\n@font-face {\\n  font-family: \\"Virgil\\";\\n  src: url(" + ___CSS_LOADER_URL_REPLACEMENT_0___ + ");\\n  font-display: swap;\\n}\\n/* https://github.com/microsoft/cascadia-code */\\n@font-face {\\n  font-family: \\"Cascadia\\";\\n  src: url(" + ___CSS_LOADER_URL_REPLACEMENT_1___ + ");\\n  font-display: swap;\\n}\\n@font-face {\\n  font-family: \\"Assistant\\";\\n  src: url(" + ___CSS_LOADER_URL_REPLACEMENT_2___ + ");\\n  font-display: swap;\\n  font-weight: 400;\\n}\\n@font-face {\\n  font-family: \\"Assistant\\";\\n  src: url(" + ___CSS_LOADER_URL_REPLACEMENT_3___ + ");\\n  font-display: swap;\\n  font-weight: 500;\\n}\\n@font-face {\\n  font-family: \\"Assistant\\";\\n  src: url(" + ___CSS_LOADER_URL_REPLACEMENT_4___ + ");\\n  font-display: swap;\\n  font-weight: 600;\\n}\\n@font-face {\\n  font-family: \\"Assistant\\";\\n  src: url(" + ___CSS_LOADER_URL_REPLACEMENT_5___ + ");\\n  font-display: swap;\\n  font-weight: 700;\\n}", "",{"version":3,"sources":["webpack://./../../../public/fonts.css"],"names":[],"mappings":"AAAA,uDAAA;AACA;EACE,qBAAA;EACA,4CAAA;EACA,kBAAA;AACF;AAEA,+CAAA;AACA;EACE,uBAAA;EACA,4CAAA;EACA,kBAAA;AAAF;AAGA;EACE,wBAAA;EACA,4CAAA;EACA,kBAAA;EACA,gBAAA;AADF;AAGA;EACE,wBAAA;EACA,4CAAA;EACA,kBAAA;EACA,gBAAA;AADF;AAGA;EACE,wBAAA;EACA,4CAAA;EACA,kBAAA;EACA,gBAAA;AADF;AAGA;EACE,wBAAA;EACA,4CAAA;EACA,kBAAA;EACA,gBAAA;AADF","sourcesContent":["/* http://www.eaglefonts.com/fg-virgil-ttf-131249.htm */\\n@font-face {\\n  font-family: \\"Virgil\\";\\n  src: url(\\"Virgil.woff2\\");\\n  font-display: swap;\\n}\\n\\n/* https://github.com/microsoft/cascadia-code */\\n@font-face {\\n  font-family: \\"Cascadia\\";\\n  src: url(\\"Cascadia.woff2\\");\\n  font-display: swap;\\n}\\n\\n@font-face {\\n  font-family: \\"Assistant\\";\\n  src: url(\\"Assistant-Regular.woff2\\");\\n  font-display: swap;\\n  font-weight: 400;\\n}\\n@font-face {\\n  font-family: \\"Assistant\\";\\n  src: url(\\"Assistant-Medium.woff2\\");\\n  font-display: swap;\\n  font-weight: 500;\\n}\\n@font-face {\\n  font-family: \\"Assistant\\";\\n  src: url(\\"Assistant-SemiBold.woff2\\");\\n  font-display: swap;\\n  font-weight: 600;\\n}\\n@font-face {\\n  font-family: \\"Assistant\\";\\n  src: url(\\"Assistant-Bold.woff2\\");\\n  font-display: swap;\\n  font-weight: 700;\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 7320 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../../public/fonts.css\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Actions.scss": (
              /*!****************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Actions.scss ***!
                \****************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ".zoom-actions,\\n.undo-redo-buttons {\\n  background-color: var(--island-bg-color);\\n  border-radius: var(--border-radius-lg);\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n}\\n\\n.zoom-button,\\n.undo-redo-buttons button {\\n  border-radius: 0 !important;\\n  background-color: var(--color-surface-low) !important;\\n  font-size: 0.875rem !important;\\n  width: var(--lg-button-size);\\n  height: var(--lg-button-size);\\n}\\n.zoom-button svg,\\n.undo-redo-buttons button svg {\\n  width: var(--lg-icon-size) !important;\\n  height: var(--lg-icon-size) !important;\\n}\\n.zoom-button .ToolIcon__icon,\\n.undo-redo-buttons button .ToolIcon__icon {\\n  width: 100%;\\n  height: 100%;\\n}\\n\\n.reset-zoom-button {\\n  border-left: 0 !important;\\n  border-right: 0 !important;\\n  padding: 0 0.625rem !important;\\n  width: 3.75rem !important;\\n  justify-content: center;\\n  color: var(--text-primary-color);\\n}\\n\\n.zoom-out-button {\\n  border-top-left-radius: var(--border-radius-lg) !important;\\n  border-bottom-left-radius: var(--border-radius-lg) !important;\\n}\\n:root[dir=rtl] .zoom-out-button {\\n  transform: scaleX(-1);\\n}\\n.zoom-out-button .ToolIcon__icon {\\n  border-top-right-radius: 0 !important;\\n  border-bottom-right-radius: 0 !important;\\n}\\n\\n.zoom-in-button {\\n  border-top-right-radius: var(--border-radius-lg) !important;\\n  border-bottom-right-radius: var(--border-radius-lg) !important;\\n}\\n:root[dir=rtl] .zoom-in-button {\\n  transform: scaleX(-1);\\n}\\n.zoom-in-button .ToolIcon__icon {\\n  border-top-left-radius: 0 !important;\\n  border-bottom-left-radius: 0 !important;\\n}\\n\\n.undo-redo-buttons .undo-button-container button {\\n  border-top-left-radius: var(--border-radius-lg) !important;\\n  border-bottom-left-radius: var(--border-radius-lg) !important;\\n  border-right: 0 !important;\\n}\\n:root[dir=rtl] .undo-redo-buttons .undo-button-container button {\\n  transform: scaleX(-1);\\n}\\n.undo-redo-buttons .undo-button-container button .ToolIcon__icon {\\n  border-top-right-radius: 0 !important;\\n  border-bottom-right-radius: 0 !important;\\n}\\n.undo-redo-buttons .redo-button-container button {\\n  border-top-right-radius: var(--border-radius-lg) !important;\\n  border-bottom-right-radius: var(--border-radius-lg) !important;\\n}\\n:root[dir=rtl] .undo-redo-buttons .redo-button-container button {\\n  transform: scaleX(-1);\\n}\\n.undo-redo-buttons .redo-button-container button .ToolIcon__icon {\\n  border-top-left-radius: 0 !important;\\n  border-bottom-left-radius: 0 !important;\\n}", "",{"version":3,"sources":["webpack://./../../components/Actions.scss"],"names":[],"mappings":"AAAA;;EAEE,wCAAA;EACA,sCAAA;EACA,iDAAA;AACF;;AAEA;;EAEE,2BAAA;EACA,qDAAA;EACA,8BAAA;EACA,4BAAA;EACA,6BAAA;AACF;AAAE;;EACE,qCAAA;EACA,sCAAA;AAGJ;AAAE;;EACE,WAAA;EACA,YAAA;AAGJ;;AACA;EACE,yBAAA;EACA,0BAAA;EACA,8BAAA;EACA,yBAAA;EACA,uBAAA;EACA,gCAAA;AAEF;;AACA;EACE,0DAAA;EACA,6DAAA;AAEF;AAAE;EACE,qBAAA;AAEJ;AACE;EACE,qCAAA;EACA,wCAAA;AACJ;;AAGA;EACE,2DAAA;EACA,8DAAA;AAAF;AAEE;EACE,qBAAA;AAAJ;AAGE;EACE,oCAAA;EACA,uCAAA;AADJ;;AAME;EACE,0DAAA;EACA,6DAAA;EACA,0BAAA;AAHJ;AAKI;EACE,qBAAA;AAHN;AAMI;EACE,qCAAA;EACA,wCAAA;AAJN;AAQE;EACE,2DAAA;EACA,8DAAA;AANJ;AAQI;EACE,qBAAA;AANN;AASI;EACE,oCAAA;EACA,uCAAA;AAPN","sourcesContent":[".zoom-actions,\\n.undo-redo-buttons {\\n  background-color: var(--island-bg-color);\\n  border-radius: var(--border-radius-lg);\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n}\\n\\n.zoom-button,\\n.undo-redo-buttons button {\\n  border-radius: 0 !important;\\n  background-color: var(--color-surface-low) !important;\\n  font-size: 0.875rem !important;\\n  width: var(--lg-button-size);\\n  height: var(--lg-button-size);\\n  svg {\\n    width: var(--lg-icon-size) !important;\\n    height: var(--lg-icon-size) !important;\\n  }\\n\\n  .ToolIcon__icon {\\n    width: 100%;\\n    height: 100%;\\n  }\\n}\\n\\n.reset-zoom-button {\\n  border-left: 0 !important;\\n  border-right: 0 !important;\\n  padding: 0 0.625rem !important;\\n  width: 3.75rem !important;\\n  justify-content: center;\\n  color: var(--text-primary-color);\\n}\\n\\n.zoom-out-button {\\n  border-top-left-radius: var(--border-radius-lg) !important;\\n  border-bottom-left-radius: var(--border-radius-lg) !important;\\n\\n  :root[dir=\\"rtl\\"] & {\\n    transform: scaleX(-1);\\n  }\\n\\n  .ToolIcon__icon {\\n    border-top-right-radius: 0 !important;\\n    border-bottom-right-radius: 0 !important;\\n  }\\n}\\n\\n.zoom-in-button {\\n  border-top-right-radius: var(--border-radius-lg) !important;\\n  border-bottom-right-radius: var(--border-radius-lg) !important;\\n\\n  :root[dir=\\"rtl\\"] & {\\n    transform: scaleX(-1);\\n  }\\n\\n  .ToolIcon__icon {\\n    border-top-left-radius: 0 !important;\\n    border-bottom-left-radius: 0 !important;\\n  }\\n}\\n\\n.undo-redo-buttons {\\n  .undo-button-container button {\\n    border-top-left-radius: var(--border-radius-lg) !important;\\n    border-bottom-left-radius: var(--border-radius-lg) !important;\\n    border-right: 0 !important;\\n\\n    :root[dir=\\"rtl\\"] & {\\n      transform: scaleX(-1);\\n    }\\n\\n    .ToolIcon__icon {\\n      border-top-right-radius: 0 !important;\\n      border-bottom-right-radius: 0 !important;\\n    }\\n  }\\n\\n  .redo-button-container button {\\n    border-top-right-radius: var(--border-radius-lg) !important;\\n    border-bottom-right-radius: var(--border-radius-lg) !important;\\n\\n    :root[dir=\\"rtl\\"] & {\\n      transform: scaleX(-1);\\n    }\\n\\n    .ToolIcon__icon {\\n      border-top-left-radius: 0 !important;\\n      border-bottom-left-radius: 0 !important;\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 10588 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Actions.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Avatar.scss": (
              /*!***************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Avatar.scss ***!
                \***************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .Avatar {\\n  width: 1.25rem;\\n  height: 1.25rem;\\n  position: relative;\\n  border-radius: 100%;\\n  outline-offset: 2px;\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  cursor: pointer;\\n  font-size: 0.75rem;\\n  font-weight: 800;\\n  line-height: 1;\\n}\\n.excalidraw .Avatar-img {\\n  width: 100%;\\n  height: 100%;\\n  border-radius: 100%;\\n}\\n.excalidraw .Avatar::before {\\n  content: \\"\\";\\n  position: absolute;\\n  top: -3px;\\n  right: -3px;\\n  bottom: -3px;\\n  left: -3px;\\n  border: 1px solid var(--avatar-border-color);\\n  border-radius: 100%;\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/Avatar.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AAAE;EACE,cAAA;EACA,eAAA;EACA,kBAAA;EACA,mBAAA;EACA,mBAAA;EACA,aAAA;EACA,uBAAA;EACA,mBAAA;EACA,eAAA;EACA,kBAAA;EACA,gBAAA;EACA,cAAA;AAGJ;AADI;EACE,WAAA;EACA,YAAA;EACA,mBAAA;AAGN;AAAI;EACE,WAAA;EACA,kBAAA;EACA,SAAA;EACA,WAAA;EACA,YAAA;EACA,UAAA;EACA,4CAAA;EACA,mBAAA;AAEN","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../css/variables.module\\";\\n\\n.excalidraw {\\n  .Avatar {\\n    width: 1.25rem;\\n    height: 1.25rem;\\n    position: relative;\\n    border-radius: 100%;\\n    outline-offset: 2px;\\n    display: flex;\\n    justify-content: center;\\n    align-items: center;\\n    cursor: pointer;\\n    font-size: 0.75rem;\\n    font-weight: 800;\\n    line-height: 1;\\n\\n    &-img {\\n      width: 100%;\\n      height: 100%;\\n      border-radius: 100%;\\n    }\\n\\n    &::before {\\n      content: \\"\\";\\n      position: absolute;\\n      top: -3px;\\n      right: -3px;\\n      bottom: -3px;\\n      left: -3px;\\n      border: 1px solid var(--avatar-border-color);\\n      border-radius: 100%;\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 9868 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Avatar.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Button.scss": (
              /*!***************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Button.scss ***!
                \***************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");
/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");
/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/getUrl.js */ "./node_modules/css-loader/dist/runtime/getUrl.js");
/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__);
// Imports



var ___CSS_LOADER_URL_IMPORT_0___ = new URL(/* asset import */ __webpack_require__(/*! data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="292.4" height="292.4" viewBox="0 0 292 292"><path d="M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z"/></svg> */ "data:image/svg+xml,<svg xmlns=\\"http://www.w3.org/2000/svg\\" width=\\"292.4\\" height=\\"292.4\\" viewBox=\\"0 0 292 292\\"><path d=\\"M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z\\"/></svg>"), __webpack_require__.b);
var ___CSS_LOADER_URL_IMPORT_1___ = new URL(/* asset import */ __webpack_require__(/*! data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="292.4" height="292.4" viewBox="0 0 292 292"><path fill="%23ced4da" d="M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z"/></svg> */ "data:image/svg+xml,<svg xmlns=\\"http://www.w3.org/2000/svg\\" width=\\"292.4\\" height=\\"292.4\\" viewBox=\\"0 0 292 292\\"><path fill=\\"%23ced4da\\" d=\\"M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z\\"/></svg>"), __webpack_require__.b);
var ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
var ___CSS_LOADER_URL_REPLACEMENT_0___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_0___);
var ___CSS_LOADER_URL_REPLACEMENT_1___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_1___);
// Module
___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw {\\n  --theme-filter: none;\\n  --button-destructive-bg-color: #ffe3e3;\\n  --button-destructive-color: #c92a2a;\\n  --button-gray-1: #e9ecef;\\n  --button-gray-2: #ced4da;\\n  --button-gray-3: #adb5bd;\\n  --button-special-active-bg-color: #ebfbee;\\n  --dialog-border-color: var(--color-gray-20);\\n  --dropdown-icon: url(" + ___CSS_LOADER_URL_REPLACEMENT_0___ + ");\\n  --focus-highlight-color: #a5d8ff;\\n  --icon-fill-color: var(--color-on-surface);\\n  --icon-green-fill-color: #2b8a3e;\\n  --default-bg-color: #ffffff;\\n  --input-bg-color: #ffffff;\\n  --input-border-color: #ced4da;\\n  --input-hover-bg-color: #f1f3f5;\\n  --input-label-color: #495057;\\n  --island-bg-color: #ffffff;\\n  --keybinding-color: var(--color-gray-40);\\n  --link-color: #1c7ed6;\\n  --overlay-bg-color: rgba(255, 255, 255, 0.88);\\n  --popup-bg-color: var(--island-bg-color);\\n  --popup-secondary-bg-color: #f1f3f5;\\n  --popup-text-color: #000000;\\n  --popup-text-inverted-color: #ffffff;\\n  --select-highlight-color: #339af0;\\n  --shadow-island: 0px 0px 0.9310142993927002px 0px rgba(0, 0, 0, 0.17),\\n    0px 0px 3.1270833015441895px 0px rgba(0, 0, 0, 0.08),\\n    0px 7px 14px 0px rgba(0, 0, 0, 0.05);\\n  --button-hover-bg: var(--color-surface-high);\\n  --button-active-bg: var(--color-surface-high);\\n  --button-active-border: var(--color-brand-active);\\n  --default-border-color: var(--color-surface-high);\\n  --default-button-size: 2rem;\\n  --default-icon-size: 1rem;\\n  --lg-button-size: 2.25rem;\\n  --lg-icon-size: 1rem;\\n  --editor-container-padding: 1rem;\\n  --scrollbar-thumb: var(--button-gray-2);\\n  --scrollbar-thumb-hover: var(--button-gray-3);\\n  --modal-shadow: 0px 100px 80px rgba(0, 0, 0, 0.07),\\n    0px 41.7776px 33.4221px rgba(0, 0, 0, 0.0503198),\\n    0px 22.3363px 17.869px rgba(0, 0, 0, 0.0417275),\\n    0px 12.5216px 10.0172px rgba(0, 0, 0, 0.035),\\n    0px 6.6501px 5.32008px rgba(0, 0, 0, 0.0282725),\\n    0px 2.76726px 2.21381px rgba(0, 0, 0, 0.0196802);\\n  --avatar-border-color: var(--color-gray-20);\\n  --sidebar-shadow: 0px 100px 80px rgba(0, 0, 0, 0.07),\\n    0px 41.7776px 33.4221px rgba(0, 0, 0, 0.0503198),\\n    0px 22.3363px 17.869px rgba(0, 0, 0, 0.0417275),\\n    0px 12.5216px 10.0172px rgba(0, 0, 0, 0.035),\\n    0px 6.6501px 5.32008px rgba(0, 0, 0, 0.0282725),\\n    0px 2.76726px 2.21381px rgba(0, 0, 0, 0.0196802);\\n  --sidebar-border-color: var(--color-surface-high);\\n  --sidebar-bg-color: var(--island-bg-color);\\n  --library-dropdown-shadow: 0px 15px 6px rgba(0, 0, 0, 0.01),\\n    0px 8px 5px rgba(0, 0, 0, 0.05), 0px 4px 4px rgba(0, 0, 0, 0.09),\\n    0px 1px 2px rgba(0, 0, 0, 0.1), 0px 0px 0px rgba(0, 0, 0, 0.1);\\n  --space-factor: 0.25rem;\\n  --text-primary-color: var(--color-on-surface);\\n  --color-selection: #6965db;\\n  --color-icon-white: #ffffff;\\n  --color-primary: #6965db;\\n  --color-primary-darker: #5b57d1;\\n  --color-primary-darkest: #4a47b1;\\n  --color-primary-light: #e3e2fe;\\n  --color-primary-light-darker: #d7d5ff;\\n  --color-gray-10: #f5f5f5;\\n  --color-gray-20: #ebebeb;\\n  --color-gray-30: #d6d6d6;\\n  --color-gray-40: #b8b8b8;\\n  --color-gray-50: #999999;\\n  --color-gray-60: #7a7a7a;\\n  --color-gray-70: #5c5c5c;\\n  --color-gray-80: #3d3d3d;\\n  --color-gray-85: #242424;\\n  --color-gray-90: #1e1e1e;\\n  --color-gray-100: #121212;\\n  --color-warning: #fceeca;\\n  --color-warning-dark: #f5c354;\\n  --color-warning-darker: #f3ab2c;\\n  --color-warning-darkest: #ec8b14;\\n  --color-text-warning: var(--text-primary-color);\\n  --color-danger: #db6965;\\n  --color-danger-dark: #db6965;\\n  --color-danger-darker: #d65550;\\n  --color-danger-darkest: #d1413c;\\n  --color-danger-text: black;\\n  --color-danger-background: #fff0f0;\\n  --color-danger-icon-background: #ffdad6;\\n  --color-danger-color: #700000;\\n  --color-danger-icon-color: #700000;\\n  --color-warning-background: var(--color-warning);\\n  --color-warning-icon-background: var(--color-warning-dark);\\n  --color-warning-color: var(--text-primary-color);\\n  --color-warning-icon-color: var(--text-primary-color);\\n  --color-muted: var(--color-gray-30);\\n  --color-muted-darker: var(--color-gray-60);\\n  --color-muted-darkest: var(--color-gray-100);\\n  --color-muted-background: var(--color-gray-80);\\n  --color-muted-background-darker: var(--color-gray-100);\\n  --color-promo: #e70078;\\n  --color-success: #268029;\\n  --color-success-lighter: #cafccc;\\n  --color-logo-icon: var(--color-primary);\\n  --color-logo-text: #190064;\\n  --border-radius-md: 0.375rem;\\n  --border-radius-lg: 0.5rem;\\n  --color-surface-high: hsl(244, 100%, 97%);\\n  --color-surface-mid: hsl(240 25% 96%);\\n  --color-surface-low: hsl(240 25% 94%);\\n  --color-surface-lowest: #ffffff;\\n  --color-on-surface: #1b1b1f;\\n  --color-brand-hover: #5753d0;\\n  --color-on-primary-container: #030064;\\n  --color-surface-primary-container: #e0dfff;\\n  --color-brand-active: #4440bf;\\n  --color-border-outline: #767680;\\n  --color-border-outline-variant: #c5c5d0;\\n  --color-surface-primary-container: #e0dfff;\\n}\\n@media screen and (min-device-width: 1921px) {\\n  .excalidraw {\\n    --lg-button-size: 2.5rem;\\n    --lg-icon-size: 1.25rem;\\n    --default-button-size: 2.25rem;\\n    --default-icon-size: 1.25rem;\\n  }\\n}\\n.excalidraw.theme--dark.theme--dark-background-none {\\n  background: none;\\n}\\n.excalidraw.theme--dark {\\n  --theme-filter: invert(93%) hue-rotate(180deg);\\n  --button-destructive-bg-color: #5a0000;\\n  --button-destructive-color: #ffa8a8;\\n  --button-gray-1: #363636;\\n  --button-gray-2: #272727;\\n  --button-gray-3: #222;\\n  --button-special-active-bg-color: #204624;\\n  --dialog-border-color: var(--color-gray-80);\\n  --dropdown-icon: url(" + ___CSS_LOADER_URL_REPLACEMENT_1___ + ");\\n  --focus-highlight-color: #228be6;\\n  --icon-green-fill-color: #69db7c;\\n  --default-bg-color: #121212;\\n  --input-bg-color: #121212;\\n  --input-border-color: #2e2e2e;\\n  --input-hover-bg-color: #181818;\\n  --input-label-color: #e9ecef;\\n  --island-bg-color: #232329;\\n  --keybinding-color: var(--color-gray-60);\\n  --link-color: #4dabf7;\\n  --overlay-bg-color: rgba(52, 58, 64, 0.12);\\n  --popup-secondary-bg-color: #222;\\n  --popup-text-color: #ced4da;\\n  --popup-text-inverted-color: #2c2c2c;\\n  --select-highlight-color: #4dabf7;\\n  --shadow-island: 0px 0px 0.9310142993927002px 0px rgba(0, 0, 0, 0.17),\\n    0px 0px 3.1270833015441895px 0px rgba(0, 0, 0, 0.08),\\n    0px 7px 14px 0px rgba(0, 0, 0, 0.05);\\n  --modal-shadow: 0px 100px 80px rgba(0, 0, 0, 0.07),\\n    0px 41.7776px 33.4221px rgba(0, 0, 0, 0.0503198),\\n    0px 22.3363px 17.869px rgba(0, 0, 0, 0.0417275),\\n    0px 12.5216px 10.0172px rgba(0, 0, 0, 0.035),\\n    0px 6.6501px 5.32008px rgba(0, 0, 0, 0.0282725),\\n    0px 2.76726px 2.21381px rgba(0, 0, 0, 0.0196802);\\n  --avatar-border-color: var(--color-gray-85);\\n  --scrollbar-thumb: #343a40;\\n  --scrollbar-thumb-hover: #495057;\\n  --color-selection: #3530c4;\\n  --color-icon-white: var(--color-gray-90);\\n  --color-primary: #a8a5ff;\\n  --color-primary-darker: #b2aeff;\\n  --color-primary-darkest: #beb9ff;\\n  --color-primary-light: #4f4d6f;\\n  --color-primary-light-darker: #43415e;\\n  --color-text-warning: var(--color-gray-80);\\n  --color-danger: #ffa8a5;\\n  --color-danger-dark: #672120;\\n  --color-danger-darker: #8f2625;\\n  --color-danger-darkest: #ac2b29;\\n  --color-danger-text: #fbcbcc;\\n  --color-danger-background: #fbcbcc;\\n  --color-danger-icon-background: #672120;\\n  --color-danger-color: #261919;\\n  --color-danger-icon-color: #fbcbcc;\\n  --color-warning-background: var(--color-warning);\\n  --color-warning-icon-background: var(--color-warning-dark);\\n  --color-warning-color: var(--color-gray-80);\\n  --color-warning-icon-color: var(--color-gray-80);\\n  --color-muted: var(--color-gray-80);\\n  --color-muted-darker: var(--color-gray-60);\\n  --color-muted-darkest: var(--color-gray-20);\\n  --color-muted-background: var(--color-gray-40);\\n  --color-muted-background-darker: var(--color-gray-20);\\n  --color-promo: #d297ff;\\n  --color-logo-text: #e2dfff;\\n  --color-surface-high: hsl(245, 10%, 21%);\\n  --color-surface-low: hsl(240, 8%, 15%);\\n  --color-surface-mid: hsl(240 6% 10%);\\n  --color-surface-lowest: hsl(0, 0%, 7%);\\n  --color-on-surface: #e3e3e8;\\n  --color-brand-hover: #bbb8ff;\\n  --color-on-primary-container: #e0dfff;\\n  --color-surface-primary-container: #403e6a;\\n  --color-brand-active: #d0ccff;\\n  --color-border-outline: #8e8d9c;\\n  --color-border-outline-variant: #46464f;\\n  --color-surface-primary-container: #403e6a;\\n}\\n\\n.excalidraw .excalidraw-button {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n}\\n.excalidraw .excalidraw-button svg {\\n  width: var(--button-width, var(--lg-icon-size));\\n  height: var(--button-height, var(--lg-icon-size));\\n}\\n.excalidraw .excalidraw-button:hover {\\n  background-color: var(--button-hover-bg, var(--island-bg-color));\\n  border-color: var(--button-hover-border, var(--button-border, var(--default-border-color)));\\n  color: var(--button-hover-color, var(--button-color, var(--text-primary-color, inherit)));\\n}\\n.excalidraw .excalidraw-button:active {\\n  background-color: var(--button-active-bg, var(--island-bg-color));\\n  border-color: var(--button-active-border, var(--color-primary-darkest));\\n}\\n.excalidraw .excalidraw-button.active {\\n  background-color: var(--button-selected-bg, var(--color-surface-primary-container));\\n  border-color: var(--button-selected-border, var(--color-surface-primary-container));\\n}\\n.excalidraw .excalidraw-button.active:hover {\\n  background-color: var(--button-selected-hover-bg, var(--color-surface-primary-container));\\n}\\n.excalidraw .excalidraw-button.active svg {\\n  color: var(--button-color, var(--color-on-primary-container));\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/Button.scss","webpack://./../../css/theme.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;ACAA;EACE,oBAAA;EACA,sCAAA;EACA,mCAAA;EACA,wBAAA;EACA,wBAAA;EACA,wBAAA;EACA,yCAAA;EACA,2CAAA;EACA,wDAAA;EACA,gCAAA;EACA,0CAAA;EACA,gCAAA;EACA,2BAAA;EACA,yBAAA;EACA,6BAAA;EACA,+BAAA;EACA,4BAAA;EACA,0BAAA;EACA,wCAAA;EACA,qBAAA;EACA,6CAAA;EACA,wCAAA;EACA,mCAAA;EACA,2BAAA;EACA,oCAAA;EACA,iCAAA;EACA;;wCAAA;EAIA,4CAAA;EACA,6CAAA;EACA,iDAAA;EACA,iDAAA;EAEA,2BAAA;EACA,yBAAA;EACA,yBAAA;EACA,oBAAA;EACA,gCAAA;EASA,uCAAA;EACA,6CAAA;EAEA;;;;;oDAAA;EAMA,2CAAA;EACA;;;;;oDAAA;EAMA,iDAAA;EACA,0CAAA;EACA;;kEAAA;EAIA,uBAAA;EACA,6CAAA;EAEA,0BAAA;EAEA,2BAAA;EAEA,wBAAA;EACA,+BAAA;EACA,gCAAA;EACA,8BAAA;EACA,qCAAA;EAEA,wBAAA;EACA,wBAAA;EACA,wBAAA;EACA,wBAAA;EACA,wBAAA;EACA,wBAAA;EACA,wBAAA;EACA,wBAAA;EACA,wBAAA;EACA,wBAAA;EACA,yBAAA;EAEA,wBAAA;EACA,6BAAA;EACA,+BAAA;EACA,gCAAA;EACA,+CAAA;EAEA,uBAAA;EACA,4BAAA;EACA,8BAAA;EACA,+BAAA;EACA,0BAAA;EAEA,kCAAA;EACA,uCAAA;EACA,6BAAA;EACA,kCAAA;EAEA,gDAAA;EACA,0DAAA;EACA,gDAAA;EACA,qDAAA;EAEA,mCAAA;EACA,0CAAA;EACA,4CAAA;EACA,8CAAA;EACA,sDAAA;EAEA,sBAAA;EACA,wBAAA;EACA,gCAAA;EAEA,uCAAA;EACA,0BAAA;EAEA,4BAAA;EACA,0BAAA;EAEA,yCAAA;EACA,qCAAA;EACA,qCAAA;EACA,+BAAA;EACA,2BAAA;EACA,4BAAA;EACA,qCAAA;EACA,0CAAA;EACA,6BAAA;EACA,+BAAA;EACA,uCAAA;EACA,0CAAA;ADtBF;ACjFE;EA1CF;IA2CI,wBAAA;IACA,uBAAA;IACA,8BAAA;IACA,4BAAA;EDoFF;AACF;ACiBI;EACE,gBAAA;ADfN;ACmBE;EACE,8CAAA;EACA,sCAAA;EACA,mCAAA;EAEA,wBAAA;EACA,wBAAA;EACA,qBAAA;EACA,yCAAA;EACA,2CAAA;EACA,wDAAA;EACA,gCAAA;EACA,gCAAA;EACA,2BAAA;EACA,yBAAA;EACA,6BAAA;EACA,+BAAA;EACA,4BAAA;EACA,0BAAA;EACA,wCAAA;EACA,qBAAA;EACA,0CAAA;EACA,gCAAA;EACA,2BAAA;EACA,oCAAA;EACA,iCAAA;EACA;;wCAAA;EAIA;;;;;oDAAA;EAMA,2CAAA;EAEA,0BAAA;EACA,gCAAA;EAGA,0BAAA;EAEA,wCAAA;EAEA,wBAAA;EACA,+BAAA;EACA,gCAAA;EACA,8BAAA;EACA,qCAAA;EAEA,0CAAA;EAEA,uBAAA;EACA,4BAAA;EACA,8BAAA;EACA,+BAAA;EACA,4BAAA;EAEA,kCAAA;EACA,uCAAA;EACA,6BAAA;EACA,kCAAA;EAEA,gDAAA;EACA,0DAAA;EACA,2CAAA;EACA,gDAAA;EAEA,mCAAA;EACA,0CAAA;EACA,2CAAA;EACA,8CAAA;EACA,qDAAA;EAEA,sBAAA;EAEA,0BAAA;EAEA,wCAAA;EACA,sCAAA;EACA,oCAAA;EACA,sCAAA;EACA,2BAAA;EACA,4BAAA;EACA,qCAAA;EACA,0CAAA;EACA,6BAAA;EACA,+BAAA;EACA,uCAAA;EACA,0CAAA;ADhCJ;;AApNE;EDqDA,aAAA;EACA,uBAAA;EACA,mBAAA;EACA,iBAAA;EACA,sDAAA;EACA,wDAAA;EACA,sBAAA;EACA,iBAAA;EACA,mBAAA;EACA,+DAAA;EACA,sCAAA;EACA,eAAA;EACA,0DAAA;EACA,mDAAA;ACmKF;ADjKE;EACE,+CAAA;EACA,iDAAA;ACmKJ;ADhKE;EACE,gEAAA;EACA,2FAAA;EAIA,yFAAA;AC+JJ;ADzJE;EACE,iEAAA;EACA,uEAAA;AC2JJ;ADxJE;EACE,mFAAA;EAIA,mFAAA;ACuJJ;ADlJI;EACE,yFAAA;ACoJN;AD9II;EACE,6DAAA;ACgJN","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../css/theme\\";\\n\\n.excalidraw {\\n  .excalidraw-button {\\n    @include outlineButtonStyles;\\n  }\\n}\\n","@import \\"open-color/open-color.scss\\";\\n@import \\"./variables.module.scss\\";\\n\\n.excalidraw {\\n  --theme-filter: none;\\n  --button-destructive-bg-color: #{$oc-red-1};\\n  --button-destructive-color: #{$oc-red-9};\\n  --button-gray-1: #{$oc-gray-2};\\n  --button-gray-2: #{$oc-gray-4};\\n  --button-gray-3: #{$oc-gray-5};\\n  --button-special-active-bg-color: #{$oc-green-0};\\n  --dialog-border-color: var(--color-gray-20);\\n  --dropdown-icon: url('data:image/svg+xml,<svg xmlns=\\"http://www.w3.org/2000/svg\\" width=\\"292.4\\" height=\\"292.4\\" viewBox=\\"0 0 292 292\\"><path d=\\"M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z\\"/></svg>');\\n  --focus-highlight-color: #{$oc-blue-2};\\n  --icon-fill-color: var(--color-on-surface);\\n  --icon-green-fill-color: #{$oc-green-9};\\n  --default-bg-color: #{$oc-white};\\n  --input-bg-color: #{$oc-white};\\n  --input-border-color: #{$oc-gray-4};\\n  --input-hover-bg-color: #{$oc-gray-1};\\n  --input-label-color: #{$oc-gray-7};\\n  --island-bg-color: #ffffff;\\n  --keybinding-color: var(--color-gray-40);\\n  --link-color: #{$oc-blue-7};\\n  --overlay-bg-color: #{transparentize($oc-white, 0.12)};\\n  --popup-bg-color: var(--island-bg-color);\\n  --popup-secondary-bg-color: #{$oc-gray-1};\\n  --popup-text-color: #{$oc-black};\\n  --popup-text-inverted-color: #{$oc-white};\\n  --select-highlight-color: #{$oc-blue-5};\\n  --shadow-island: 0px 0px 0.9310142993927002px 0px rgba(0, 0, 0, 0.17),\\n    0px 0px 3.1270833015441895px 0px rgba(0, 0, 0, 0.08),\\n    0px 7px 14px 0px rgba(0, 0, 0, 0.05);\\n\\n  --button-hover-bg: var(--color-surface-high);\\n  --button-active-bg: var(--color-surface-high);\\n  --button-active-border: var(--color-brand-active);\\n  --default-border-color: var(--color-surface-high);\\n\\n  --default-button-size: 2rem;\\n  --default-icon-size: 1rem;\\n  --lg-button-size: 2.25rem;\\n  --lg-icon-size: 1rem;\\n  --editor-container-padding: 1rem;\\n\\n  @media screen and (min-device-width: 1921px) {\\n    --lg-button-size: 2.5rem;\\n    --lg-icon-size: 1.25rem;\\n    --default-button-size: 2.25rem;\\n    --default-icon-size: 1.25rem;\\n  }\\n\\n  --scrollbar-thumb: var(--button-gray-2);\\n  --scrollbar-thumb-hover: var(--button-gray-3);\\n\\n  --modal-shadow: 0px 100px 80px rgba(0, 0, 0, 0.07),\\n    0px 41.7776px 33.4221px rgba(0, 0, 0, 0.0503198),\\n    0px 22.3363px 17.869px rgba(0, 0, 0, 0.0417275),\\n    0px 12.5216px 10.0172px rgba(0, 0, 0, 0.035),\\n    0px 6.6501px 5.32008px rgba(0, 0, 0, 0.0282725),\\n    0px 2.76726px 2.21381px rgba(0, 0, 0, 0.0196802);\\n  --avatar-border-color: var(--color-gray-20);\\n  --sidebar-shadow: 0px 100px 80px rgba(0, 0, 0, 0.07),\\n    0px 41.7776px 33.4221px rgba(0, 0, 0, 0.0503198),\\n    0px 22.3363px 17.869px rgba(0, 0, 0, 0.0417275),\\n    0px 12.5216px 10.0172px rgba(0, 0, 0, 0.035),\\n    0px 6.6501px 5.32008px rgba(0, 0, 0, 0.0282725),\\n    0px 2.76726px 2.21381px rgba(0, 0, 0, 0.0196802);\\n  --sidebar-border-color: var(--color-surface-high);\\n  --sidebar-bg-color: var(--island-bg-color);\\n  --library-dropdown-shadow: 0px 15px 6px rgba(0, 0, 0, 0.01),\\n    0px 8px 5px rgba(0, 0, 0, 0.05), 0px 4px 4px rgba(0, 0, 0, 0.09),\\n    0px 1px 2px rgba(0, 0, 0, 0.1), 0px 0px 0px rgba(0, 0, 0, 0.1);\\n\\n  --space-factor: 0.25rem;\\n  --text-primary-color: var(--color-on-surface);\\n\\n  --color-selection: #6965db;\\n\\n  --color-icon-white: #{$oc-white};\\n\\n  --color-primary: #6965db;\\n  --color-primary-darker: #5b57d1;\\n  --color-primary-darkest: #4a47b1;\\n  --color-primary-light: #e3e2fe;\\n  --color-primary-light-darker: #d7d5ff;\\n\\n  --color-gray-10: #f5f5f5;\\n  --color-gray-20: #ebebeb;\\n  --color-gray-30: #d6d6d6;\\n  --color-gray-40: #b8b8b8;\\n  --color-gray-50: #999999;\\n  --color-gray-60: #7a7a7a;\\n  --color-gray-70: #5c5c5c;\\n  --color-gray-80: #3d3d3d;\\n  --color-gray-85: #242424;\\n  --color-gray-90: #1e1e1e;\\n  --color-gray-100: #121212;\\n\\n  --color-warning: #fceeca;\\n  --color-warning-dark: #f5c354;\\n  --color-warning-darker: #f3ab2c;\\n  --color-warning-darkest: #ec8b14;\\n  --color-text-warning: var(--text-primary-color);\\n\\n  --color-danger: #db6965;\\n  --color-danger-dark: #db6965;\\n  --color-danger-darker: #d65550;\\n  --color-danger-darkest: #d1413c;\\n  --color-danger-text: black;\\n\\n  --color-danger-background: #fff0f0;\\n  --color-danger-icon-background: #ffdad6;\\n  --color-danger-color: #700000;\\n  --color-danger-icon-color: #700000;\\n\\n  --color-warning-background: var(--color-warning);\\n  --color-warning-icon-background: var(--color-warning-dark);\\n  --color-warning-color: var(--text-primary-color);\\n  --color-warning-icon-color: var(--text-primary-color);\\n\\n  --color-muted: var(--color-gray-30);\\n  --color-muted-darker: var(--color-gray-60);\\n  --color-muted-darkest: var(--color-gray-100);\\n  --color-muted-background: var(--color-gray-80);\\n  --color-muted-background-darker: var(--color-gray-100);\\n\\n  --color-promo: #e70078;\\n  --color-success: #268029;\\n  --color-success-lighter: #cafccc;\\n\\n  --color-logo-icon: var(--color-primary);\\n  --color-logo-text: #190064;\\n\\n  --border-radius-md: 0.375rem;\\n  --border-radius-lg: 0.5rem;\\n\\n  --color-surface-high: hsl(244, 100%, 97%);\\n  --color-surface-mid: hsl(240 25% 96%);\\n  --color-surface-low: hsl(240 25% 94%);\\n  --color-surface-lowest: #ffffff;\\n  --color-on-surface: #1b1b1f;\\n  --color-brand-hover: #5753d0;\\n  --color-on-primary-container: #030064;\\n  --color-surface-primary-container: #e0dfff;\\n  --color-brand-active: #4440bf;\\n  --color-border-outline: #767680;\\n  --color-border-outline-variant: #c5c5d0;\\n  --color-surface-primary-container: #e0dfff;\\n\\n  &.theme--dark {\\n    &.theme--dark-background-none {\\n      background: none;\\n    }\\n  }\\n\\n  &.theme--dark {\\n    --theme-filter: #{$theme-filter};\\n    --button-destructive-bg-color: #5a0000;\\n    --button-destructive-color: #{$oc-red-3};\\n\\n    --button-gray-1: #363636;\\n    --button-gray-2: #272727;\\n    --button-gray-3: #222;\\n    --button-special-active-bg-color: #204624;\\n    --dialog-border-color: var(--color-gray-80);\\n    --dropdown-icon: url('data:image/svg+xml,<svg xmlns=\\"http://www.w3.org/2000/svg\\" width=\\"292.4\\" height=\\"292.4\\" viewBox=\\"0 0 292 292\\"><path fill=\\"%23ced4da\\" d=\\"M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z\\"/></svg>');\\n    --focus-highlight-color: #{$oc-blue-6};\\n    --icon-green-fill-color: #{$oc-green-4};\\n    --default-bg-color: #121212;\\n    --input-bg-color: #121212;\\n    --input-border-color: #2e2e2e;\\n    --input-hover-bg-color: #181818;\\n    --input-label-color: #{$oc-gray-2};\\n    --island-bg-color: #232329;\\n    --keybinding-color: var(--color-gray-60);\\n    --link-color: #{$oc-blue-4};\\n    --overlay-bg-color: #{transparentize($oc-gray-8, 0.88)};\\n    --popup-secondary-bg-color: #222;\\n    --popup-text-color: #{$oc-gray-4};\\n    --popup-text-inverted-color: #2c2c2c;\\n    --select-highlight-color: #{$oc-blue-4};\\n    --shadow-island: 0px 0px 0.9310142993927002px 0px rgba(0, 0, 0, 0.17),\\n      0px 0px 3.1270833015441895px 0px rgba(0, 0, 0, 0.08),\\n      0px 7px 14px 0px rgba(0, 0, 0, 0.05);\\n\\n    --modal-shadow: 0px 100px 80px rgba(0, 0, 0, 0.07),\\n      0px 41.7776px 33.4221px rgba(0, 0, 0, 0.0503198),\\n      0px 22.3363px 17.869px rgba(0, 0, 0, 0.0417275),\\n      0px 12.5216px 10.0172px rgba(0, 0, 0, 0.035),\\n      0px 6.6501px 5.32008px rgba(0, 0, 0, 0.0282725),\\n      0px 2.76726px 2.21381px rgba(0, 0, 0, 0.0196802);\\n    --avatar-border-color: var(--color-gray-85);\\n\\n    --scrollbar-thumb: #{$oc-gray-8};\\n    --scrollbar-thumb-hover: #{$oc-gray-7};\\n\\n    // will be inverted to a lighter color.\\n    --color-selection: #3530c4;\\n\\n    --color-icon-white: var(--color-gray-90);\\n\\n    --color-primary: #a8a5ff;\\n    --color-primary-darker: #b2aeff;\\n    --color-primary-darkest: #beb9ff;\\n    --color-primary-light: #4f4d6f;\\n    --color-primary-light-darker: #43415e;\\n\\n    --color-text-warning: var(--color-gray-80);\\n\\n    --color-danger: #ffa8a5;\\n    --color-danger-dark: #672120;\\n    --color-danger-darker: #8f2625;\\n    --color-danger-darkest: #ac2b29;\\n    --color-danger-text: #fbcbcc;\\n\\n    --color-danger-background: #fbcbcc;\\n    --color-danger-icon-background: #672120;\\n    --color-danger-color: #261919;\\n    --color-danger-icon-color: #fbcbcc;\\n\\n    --color-warning-background: var(--color-warning);\\n    --color-warning-icon-background: var(--color-warning-dark);\\n    --color-warning-color: var(--color-gray-80);\\n    --color-warning-icon-color: var(--color-gray-80);\\n\\n    --color-muted: var(--color-gray-80);\\n    --color-muted-darker: var(--color-gray-60);\\n    --color-muted-darkest: var(--color-gray-20);\\n    --color-muted-background: var(--color-gray-40);\\n    --color-muted-background-darker: var(--color-gray-20);\\n\\n    --color-promo: #d297ff;\\n\\n    --color-logo-text: #e2dfff;\\n\\n    --color-surface-high: hsl(245, 10%, 21%);\\n    --color-surface-low: hsl(240, 8%, 15%);\\n    --color-surface-mid: hsl(240 6% 10%);\\n    --color-surface-lowest: hsl(0, 0%, 7%);\\n    --color-on-surface: #e3e3e8;\\n    --color-brand-hover: #bbb8ff;\\n    --color-on-primary-container: #e0dfff;\\n    --color-surface-primary-container: #403e6a;\\n    --color-brand-active: #d0ccff;\\n    --color-border-outline: #8e8d9c;\\n    --color-border-outline-variant: #46464f;\\n    --color-surface-primary-container: #403e6a;\\n  }\\n}\\n"],"sourceRoot":""}]);
// Exports
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 44448 characters]
//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Button.scss
`);
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Card.scss": (
              /*!*************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Card.scss ***!
                \*************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .Card {\\n  display: flex;\\n  flex-direction: column;\\n  align-items: center;\\n  max-width: 290px;\\n  margin: 1em;\\n  text-align: center;\\n}\\n.excalidraw .Card .Card-icon {\\n  font-size: 2.6em;\\n  display: flex;\\n  flex: 0 0 auto;\\n  padding: 1.4rem;\\n  border-radius: 50%;\\n  background: var(--card-color);\\n  color: #ffffff;\\n}\\n.excalidraw .Card .Card-icon svg {\\n  width: 2.8rem;\\n  height: 2.8rem;\\n}\\n.excalidraw .Card .Card-details {\\n  font-size: 0.96em;\\n  min-height: 90px;\\n  padding: 0 1em;\\n  margin-bottom: auto;\\n}\\n.excalidraw .Card .Card-button.ToolIcon_type_button {\\n  height: 2.5rem;\\n  margin-top: 1em;\\n  margin-bottom: 0.3em;\\n  background-color: var(--card-color);\\n}\\n.excalidraw .Card .Card-button.ToolIcon_type_button:hover {\\n  background-color: var(--card-color-darker);\\n}\\n.excalidraw .Card .Card-button.ToolIcon_type_button:active {\\n  background-color: var(--card-color-darkest);\\n}\\n.excalidraw .Card .Card-button.ToolIcon_type_button .ToolIcon__label {\\n  color: #ffffff;\\n}\\n.excalidraw .Card .Card-button.ToolIcon_type_button .Spinner {\\n  --spinner-color: #fff;\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/Card.scss","webpack://./../../../node_modules/open-color/open-color.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AAAE;EACE,aAAA;EACA,sBAAA;EACA,mBAAA;EAEA,gBAAA;EAEA,WAAA;EAEA,kBAAA;AAAJ;AAEI;EACE,gBAAA;EACA,aAAA;EACA,cAAA;EACA,eAAA;EACA,kBAAA;EACA,6BAAA;EACA,cCVa;ADUnB;AAEM;EACE,aAAA;EACA,cAAA;AAAR;AAII;EACE,iBAAA;EACA,gBAAA;EACA,cAAA;EACA,mBAAA;AAFN;AAKI;EACE,cAAA;EACA,eAAA;EACA,oBAAA;EACA,mCAAA;AAHN;AAIM;EACE,0CAAA;AAFR;AAIM;EACE,2CAAA;AAFR;AAIM;EACE,cCrCW;ADmCnB;AAKM;EACE,qBAAA;AAHR","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../css/variables.module\\";\\n\\n.excalidraw {\\n  .Card {\\n    display: flex;\\n    flex-direction: column;\\n    align-items: center;\\n\\n    max-width: 290px;\\n\\n    margin: 1em;\\n\\n    text-align: center;\\n\\n    .Card-icon {\\n      font-size: 2.6em;\\n      display: flex;\\n      flex: 0 0 auto;\\n      padding: 1.4rem;\\n      border-radius: 50%;\\n      background: var(--card-color);\\n      color: $oc-white;\\n\\n      svg {\\n        width: 2.8rem;\\n        height: 2.8rem;\\n      }\\n    }\\n\\n    .Card-details {\\n      font-size: 0.96em;\\n      min-height: 90px;\\n      padding: 0 1em;\\n      margin-bottom: auto;\\n    }\\n\\n    & .Card-button.ToolIcon_type_button {\\n      height: 2.5rem;\\n      margin-top: 1em;\\n      margin-bottom: 0.3em;\\n      background-color: var(--card-color);\\n      &:hover {\\n        background-color: var(--card-color-darker);\\n      }\\n      &:active {\\n        background-color: var(--card-color-darkest);\\n      }\\n      .ToolIcon__label {\\n        color: $oc-white;\\n      }\\n\\n      .Spinner {\\n        --spinner-color: #fff;\\n      }\\n    }\\n  }\\n}\\n","//\\n//\\n//  \u{1D5D6} \u{1D5E2} \u{1D5DF} \u{1D5E2} \u{1D5E5}\\n//  v 1.9.1\\n//\\n//  \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\\n\\n\\n//  General\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-white:         #ffffff;\\n$oc-black:         #000000;\\n\\n\\n//  Gray\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-gray-list: (\\n  \\"0\\": #f8f9fa,\\n  \\"1\\": #f1f3f5,\\n  \\"2\\": #e9ecef,\\n  \\"3\\": #dee2e6,\\n  \\"4\\": #ced4da,\\n  \\"5\\": #adb5bd,\\n  \\"6\\": #868e96,\\n  \\"7\\": #495057,\\n  \\"8\\": #343a40,\\n  \\"9\\": #212529\\n);\\n\\n$oc-gray-0: map-get($oc-gray-list, \\"0\\");\\n$oc-gray-1: map-get($oc-gray-list, \\"1\\");\\n$oc-gray-2: map-get($oc-gray-list, \\"2\\");\\n$oc-gray-3: map-get($oc-gray-list, \\"3\\");\\n$oc-gray-4: map-get($oc-gray-list, \\"4\\");\\n$oc-gray-5: map-get($oc-gray-list, \\"5\\");\\n$oc-gray-6: map-get($oc-gray-list, \\"6\\");\\n$oc-gray-7: map-get($oc-gray-list, \\"7\\");\\n$oc-gray-8: map-get($oc-gray-list, \\"8\\");\\n$oc-gray-9: map-get($oc-gray-list, \\"9\\");\\n\\n\\n//  Red\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-red-list: (\\n  \\"0\\": #fff5f5,\\n  \\"1\\": #ffe3e3,\\n  \\"2\\": #ffc9c9,\\n  \\"3\\": #ffa8a8,\\n  \\"4\\": #ff8787,\\n  \\"5\\": #ff6b6b,\\n  \\"6\\": #fa5252,\\n  \\"7\\": #f03e3e,\\n  \\"8\\": #e03131,\\n  \\"9\\": #c92a2a\\n);\\n\\n$oc-red-0: map-get($oc-red-list, \\"0\\");\\n$oc-red-1: map-get($oc-red-list, \\"1\\");\\n$oc-red-2: map-get($oc-red-list, \\"2\\");\\n$oc-red-3: map-get($oc-red-list, \\"3\\");\\n$oc-red-4: map-get($oc-red-list, \\"4\\");\\n$oc-red-5: map-get($oc-red-list, \\"5\\");\\n$oc-red-6: map-get($oc-red-list, \\"6\\");\\n$oc-red-7: map-get($oc-red-list, \\"7\\");\\n$oc-red-8: map-get($oc-red-list, \\"8\\");\\n$oc-red-9: map-get($oc-red-list, \\"9\\");\\n\\n\\n//  Pink\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-pink-list: (\\n  \\"0\\": #fff0f6,\\n  \\"1\\": #ffdeeb,\\n  \\"2\\": #fcc2d7,\\n  \\"3\\": #faa2c1,\\n  \\"4\\": #f783ac,\\n  \\"5\\": #f06595,\\n  \\"6\\": #e64980,\\n  \\"7\\": #d6336c,\\n  \\"8\\": #c2255c,\\n  \\"9\\": #a61e4d\\n);\\n\\n$oc-pink-0: map-get($oc-pink-list, \\"0\\");\\n$oc-pink-1: map-get($oc-pink-list, \\"1\\");\\n$oc-pink-2: map-get($oc-pink-list, \\"2\\");\\n$oc-pink-3: map-get($oc-pink-list, \\"3\\");\\n$oc-pink-4: map-get($oc-pink-list, \\"4\\");\\n$oc-pink-5: map-get($oc-pink-list, \\"5\\");\\n$oc-pink-6: map-get($oc-pink-list, \\"6\\");\\n$oc-pink-7: map-get($oc-pink-list, \\"7\\");\\n$oc-pink-8: map-get($oc-pink-list, \\"8\\");\\n$oc-pink-9: map-get($oc-pink-list, \\"9\\");\\n\\n\\n//  Grape\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-grape-list: (\\n  \\"0\\": #f8f0fc,\\n  \\"1\\": #f3d9fa,\\n  \\"2\\": #eebefa,\\n  \\"3\\": #e599f7,\\n  \\"4\\": #da77f2,\\n  \\"5\\": #cc5de8,\\n  \\"6\\": #be4bdb,\\n  \\"7\\": #ae3ec9,\\n  \\"8\\": #9c36b5,\\n  \\"9\\": #862e9c\\n);\\n\\n$oc-grape-0: map-get($oc-grape-list, \\"0\\");\\n$oc-grape-1: map-get($oc-grape-list, \\"1\\");\\n$oc-grape-2: map-get($oc-grape-list, \\"2\\");\\n$oc-grape-3: map-get($oc-grape-list, \\"3\\");\\n$oc-grape-4: map-get($oc-grape-list, \\"4\\");\\n$oc-grape-5: map-get($oc-grape-list, \\"5\\");\\n$oc-grape-6: map-get($oc-grape-list, \\"6\\");\\n$oc-grape-7: map-get($oc-grape-list, \\"7\\");\\n$oc-grape-8: map-get($oc-grape-list, \\"8\\");\\n$oc-grape-9: map-get($oc-grape-list, \\"9\\");\\n\\n\\n//  Violet\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-violet-list: (\\n  \\"0\\": #f3f0ff,\\n  \\"1\\": #e5dbff,\\n  \\"2\\": #d0bfff,\\n  \\"3\\": #b197fc,\\n  \\"4\\": #9775fa,\\n  \\"5\\": #845ef7,\\n  \\"6\\": #7950f2,\\n  \\"7\\": #7048e8,\\n  \\"8\\": #6741d9,\\n  \\"9\\": #5f3dc4\\n);\\n\\n$oc-violet-0: map-get($oc-violet-list, \\"0\\");\\n$oc-violet-1: map-get($oc-violet-list, \\"1\\");\\n$oc-violet-2: map-get($oc-violet-list, \\"2\\");\\n$oc-violet-3: map-get($oc-violet-list, \\"3\\");\\n$oc-violet-4: map-get($oc-violet-list, \\"4\\");\\n$oc-violet-5: map-get($oc-violet-list, \\"5\\");\\n$oc-violet-6: map-get($oc-violet-list, \\"6\\");\\n$oc-violet-7: map-get($oc-violet-list, \\"7\\");\\n$oc-violet-8: map-get($oc-violet-list, \\"8\\");\\n$oc-violet-9: map-get($oc-violet-list, \\"9\\");\\n\\n\\n//  Indigo\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-indigo-list: (\\n  \\"0\\": #edf2ff,\\n  \\"1\\": #dbe4ff,\\n  \\"2\\": #bac8ff,\\n  \\"3\\": #91a7ff,\\n  \\"4\\": #748ffc,\\n  \\"5\\": #5c7cfa,\\n  \\"6\\": #4c6ef5,\\n  \\"7\\": #4263eb,\\n  \\"8\\": #3b5bdb,\\n  \\"9\\": #364fc7\\n);\\n\\n$oc-indigo-0: map-get($oc-indigo-list, \\"0\\");\\n$oc-indigo-1: map-get($oc-indigo-list, \\"1\\");\\n$oc-indigo-2: map-get($oc-indigo-list, \\"2\\");\\n$oc-indigo-3: map-get($oc-indigo-list, \\"3\\");\\n$oc-indigo-4: map-get($oc-indigo-list, \\"4\\");\\n$oc-indigo-5: map-get($oc-indigo-list, \\"5\\");\\n$oc-indigo-6: map-get($oc-indigo-list, \\"6\\");\\n$oc-indigo-7: map-get($oc-indigo-list, \\"7\\");\\n$oc-indigo-8: map-get($oc-indigo-list, \\"8\\");\\n$oc-indigo-9: map-get($oc-indigo-list, \\"9\\");\\n\\n\\n//  Blue\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-blue-list: (\\n  \\"0\\": #e7f5ff,\\n  \\"1\\": #d0ebff,\\n  \\"2\\": #a5d8ff,\\n  \\"3\\": #74c0fc,\\n  \\"4\\": #4dabf7,\\n  \\"5\\": #339af0,\\n  \\"6\\": #228be6,\\n  \\"7\\": #1c7ed6,\\n  \\"8\\": #1971c2,\\n  \\"9\\": #1864ab\\n);\\n\\n$oc-blue-0: map-get($oc-blue-list, \\"0\\");\\n$oc-blue-1: map-get($oc-blue-list, \\"1\\");\\n$oc-blue-2: map-get($oc-blue-list, \\"2\\");\\n$oc-blue-3: map-get($oc-blue-list, \\"3\\");\\n$oc-blue-4: map-get($oc-blue-list, \\"4\\");\\n$oc-blue-5: map-get($oc-blue-list, \\"5\\");\\n$oc-blue-6: map-get($oc-blue-list, \\"6\\");\\n$oc-blue-7: map-get($oc-blue-list, \\"7\\");\\n$oc-blue-8: map-get($oc-blue-list, \\"8\\");\\n$oc-blue-9: map-get($oc-blue-list, \\"9\\");\\n\\n\\n//  Cyan\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-cyan-list: (\\n  \\"0\\": #e3fafc,\\n  \\"1\\": #c5f6fa,\\n  \\"2\\": #99e9f2,\\n  \\"3\\": #66d9e8,\\n  \\"4\\": #3bc9db,\\n  \\"5\\": #22b8cf,\\n  \\"6\\": #15aabf,\\n  \\"7\\": #1098ad,\\n  \\"8\\": #0c8599,\\n  \\"9\\": #0b7285\\n);\\n\\n$oc-cyan-0: map-get($oc-cyan-list, \\"0\\");\\n$oc-cyan-1: map-get($oc-cyan-list, \\"1\\");\\n$oc-cyan-2: map-get($oc-cyan-list, \\"2\\");\\n$oc-cyan-3: map-get($oc-cyan-list, \\"3\\");\\n$oc-cyan-4: map-get($oc-cyan-list, \\"4\\");\\n$oc-cyan-5: map-get($oc-cyan-list, \\"5\\");\\n$oc-cyan-6: map-get($oc-cyan-list, \\"6\\");\\n$oc-cyan-7: map-get($oc-cyan-list, \\"7\\");\\n$oc-cyan-8: map-get($oc-cyan-list, \\"8\\");\\n$oc-cyan-9: map-get($oc-cyan-list, \\"9\\");\\n\\n\\n//  Teal\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-teal-list: (\\n  \\"0\\": #e6fcf5,\\n  \\"1\\": #c3fae8,\\n  \\"2\\": #96f2d7,\\n  \\"3\\": #63e6be,\\n  \\"4\\": #38d9a9,\\n  \\"5\\": #20c997,\\n  \\"6\\": #12b886,\\n  \\"7\\": #0ca678,\\n  \\"8\\": #099268,\\n  \\"9\\": #087f5b\\n);\\n\\n$oc-teal-0: map-get($oc-teal-list, \\"0\\");\\n$oc-teal-1: map-get($oc-teal-list, \\"1\\");\\n$oc-teal-2: map-get($oc-teal-list, \\"2\\");\\n$oc-teal-3: map-get($oc-teal-list, \\"3\\");\\n$oc-teal-4: map-get($oc-teal-list, \\"4\\");\\n$oc-teal-5: map-get($oc-teal-list, \\"5\\");\\n$oc-teal-6: map-get($oc-teal-list, \\"6\\");\\n$oc-teal-7: map-get($oc-teal-list, \\"7\\");\\n$oc-teal-8: map-get($oc-teal-list, \\"8\\");\\n$oc-teal-9: map-get($oc-teal-list, \\"9\\");\\n\\n\\n//  Green\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-green-list: (\\n  \\"0\\": #ebfbee,\\n  \\"1\\": #d3f9d8,\\n  \\"2\\": #b2f2bb,\\n  \\"3\\": #8ce99a,\\n  \\"4\\": #69db7c,\\n  \\"5\\": #51cf66,\\n  \\"6\\": #40c057,\\n  \\"7\\": #37b24d,\\n  \\"8\\": #2f9e44,\\n  \\"9\\": #2b8a3e\\n);\\n\\n$oc-green-0: map-get($oc-green-list, \\"0\\");\\n$oc-green-1: map-get($oc-green-list, \\"1\\");\\n$oc-green-2: map-get($oc-green-list, \\"2\\");\\n$oc-green-3: map-get($oc-green-list, \\"3\\");\\n$oc-green-4: map-get($oc-green-list, \\"4\\");\\n$oc-green-5: map-get($oc-green-list, \\"5\\");\\n$oc-green-6: map-get($oc-green-list, \\"6\\");\\n$oc-green-7: map-get($oc-green-list, \\"7\\");\\n$oc-green-8: map-get($oc-green-list, \\"8\\");\\n$oc-green-9: map-get($oc-green-list, \\"9\\");\\n\\n\\n//  Lime\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-lime-list: (\\n  \\"0\\": #f4fce3,\\n  \\"1\\": #e9fac8,\\n  \\"2\\": #d8f5a2,\\n  \\"3\\": #c0eb75,\\n  \\"4\\": #a9e34b,\\n  \\"5\\": #94d82d,\\n  \\"6\\": #82c91e,\\n  \\"7\\": #74b816,\\n  \\"8\\": #66a80f,\\n  \\"9\\": #5c940d\\n);\\n\\n$oc-lime-0: map-get($oc-lime-list, \\"0\\");\\n$oc-lime-1: map-get($oc-lime-list, \\"1\\");\\n$oc-lime-2: map-get($oc-lime-list, \\"2\\");\\n$oc-lime-3: map-get($oc-lime-list, \\"3\\");\\n$oc-lime-4: map-get($oc-lime-list, \\"4\\");\\n$oc-lime-5: map-get($oc-lime-list, \\"5\\");\\n$oc-lime-6: map-get($oc-lime-list, \\"6\\");\\n$oc-lime-7: map-get($oc-lime-list, \\"7\\");\\n$oc-lime-8: map-get($oc-lime-list, \\"8\\");\\n$oc-lime-9: map-get($oc-lime-list, \\"9\\");\\n\\n\\n//  Yellow\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-yellow-list: (\\n  \\"0\\": #fff9db,\\n  \\"1\\": #fff3bf,\\n  \\"2\\": #ffec99,\\n  \\"3\\": #ffe066,\\n  \\"4\\": #ffd43b,\\n  \\"5\\": #fcc419,\\n  \\"6\\": #fab005,\\n  \\"7\\": #f59f00,\\n  \\"8\\": #f08c00,\\n  \\"9\\": #e67700\\n);\\n\\n$oc-yellow-0: map-get($oc-yellow-list, \\"0\\");\\n$oc-yellow-1: map-get($oc-yellow-list, \\"1\\");\\n$oc-yellow-2: map-get($oc-yellow-list, \\"2\\");\\n$oc-yellow-3: map-get($oc-yellow-list, \\"3\\");\\n$oc-yellow-4: map-get($oc-yellow-list, \\"4\\");\\n$oc-yellow-5: map-get($oc-yellow-list, \\"5\\");\\n$oc-yellow-6: map-get($oc-yellow-list, \\"6\\");\\n$oc-yellow-7: map-get($oc-yellow-list, \\"7\\");\\n$oc-yellow-8: map-get($oc-yellow-list, \\"8\\");\\n$oc-yellow-9: map-get($oc-yellow-list, \\"9\\");\\n\\n\\n//  Orange\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-orange-list: (\\n  \\"0\\": #fff4e6,\\n  \\"1\\": #ffe8cc,\\n  \\"2\\": #ffd8a8,\\n  \\"3\\": #ffc078,\\n  \\"4\\": #ffa94d,\\n  \\"5\\": #ff922b,\\n  \\"6\\": #fd7e14,\\n  \\"7\\": #f76707,\\n  \\"8\\": #e8590c,\\n  \\"9\\": #d9480f\\n);\\n\\n$oc-orange-0: map-get($oc-orange-list, \\"0\\");\\n$oc-orange-1: map-get($oc-orange-list, \\"1\\");\\n$oc-orange-2: map-get($oc-orange-list, \\"2\\");\\n$oc-orange-3: map-get($oc-orange-list, \\"3\\");\\n$oc-orange-4: map-get($oc-orange-list, \\"4\\");\\n$oc-orange-5: map-get($oc-orange-list, \\"5\\");\\n$oc-orange-6: map-get($oc-orange-list, \\"6\\");\\n$oc-orange-7: map-get($oc-orange-list, \\"7\\");\\n$oc-orange-8: map-get($oc-orange-list, \\"8\\");\\n$oc-orange-9: map-get($oc-orange-list, \\"9\\");\\n\\n\\n//  Color list\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-color-spectrum:   9;\\n\\n$oc-color-list: (\\n  $oc-gray-list:      \\"gray\\",\\n  $oc-red-list:      \\"red\\",\\n  $oc-pink-list:      \\"pink\\",\\n  $oc-grape-list:      \\"grape\\",\\n  $oc-violet-list:      \\"violet\\",\\n  $oc-indigo-list:      \\"indigo\\",\\n  $oc-blue-list:      \\"blue\\",\\n  $oc-cyan-list:      \\"cyan\\",\\n  $oc-teal-list:      \\"teal\\",\\n  $oc-green-list:      \\"green\\",\\n  $oc-lime-list:      \\"lime\\",\\n  $oc-yellow-list:      \\"yellow\\",\\n  $oc-orange-list:      \\"orange\\"\\n);\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 30216 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Card.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/CheckboxItem.scss": (
              /*!*********************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/CheckboxItem.scss ***!
                \*********************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .Checkbox {\\n  margin: 4px 0.3em;\\n  display: flex;\\n  align-items: center;\\n  cursor: pointer;\\n  user-select: none;\\n  -webkit-tap-highlight-color: transparent;\\n}\\n.excalidraw .Checkbox:hover:not(.is-checked) .Checkbox-box:not(:focus) {\\n  box-shadow: 0 0 0 2px #4dabf7;\\n}\\n.excalidraw .Checkbox:hover:not(.is-checked) .Checkbox-box:not(:focus) svg {\\n  display: block;\\n  opacity: 0.3;\\n}\\n.excalidraw .Checkbox:active .Checkbox-box {\\n  box-shadow: 0 0 2px 1px inset #1c7ed6 !important;\\n}\\n.excalidraw .Checkbox:hover .Checkbox-box {\\n  background-color: rgba(208, 235, 255, 0.2);\\n}\\n.excalidraw .Checkbox.is-checked .Checkbox-box {\\n  background-color: #d0ebff;\\n}\\n.excalidraw .Checkbox.is-checked .Checkbox-box svg {\\n  display: block;\\n}\\n.excalidraw .Checkbox.is-checked:hover .Checkbox-box {\\n  background-color: #a5d8ff;\\n}\\n.excalidraw .Checkbox .Checkbox-box {\\n  width: 22px;\\n  height: 22px;\\n  padding: 0;\\n  flex: 0 0 auto;\\n  margin: 0 1em;\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  box-shadow: 0 0 0 2px #1c7ed6;\\n  background-color: transparent;\\n  border-radius: 4px;\\n  color: #1c7ed6;\\n  border: 0;\\n}\\n.excalidraw .Checkbox .Checkbox-box:focus {\\n  box-shadow: 0 0 0 3px #1c7ed6;\\n}\\n.excalidraw .Checkbox .Checkbox-box svg {\\n  display: none;\\n  width: 16px;\\n  height: 16px;\\n  stroke-width: 3px;\\n}\\n.excalidraw .Checkbox .Checkbox-label {\\n  display: flex;\\n  align-items: center;\\n}\\n.excalidraw .Checkbox .excalidraw-tooltip-icon {\\n  width: 1em;\\n  height: 1em;\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/CheckboxItem.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AAAE;EACE,iBAAA;EACA,aAAA;EACA,mBAAA;EAEA,eAAA;EACA,iBAAA;EAEA,wCAAA;AACJ;AACI;EACE,6BAAA;AACN;AAGM;EACE,cAAA;EACA,YAAA;AADR;AAMM;EACE,gDAAA;AAJR;AASM;EACE,0CAAA;AAPR;AAYM;EACE,yBAAA;AAVR;AAWQ;EACE,cAAA;AATV;AAYM;EACE,yBAAA;AAVR;AAcI;EACE,WAAA;EACA,YAAA;EACA,UAAA;EACA,cAAA;EAEA,aAAA;EAEA,aAAA;EACA,mBAAA;EACA,uBAAA;EAEA,6BAAA;EACA,6BAAA;EACA,kBAAA;EAEA,cAAA;EAEA,SAAA;AAjBN;AAmBM;EACE,6BAAA;AAjBR;AAoBM;EACE,aAAA;EACA,WAAA;EACA,YAAA;EACA,iBAAA;AAlBR;AAsBI;EACE,aAAA;EACA,mBAAA;AApBN;AAuBI;EACE,UAAA;EACA,WAAA;AArBN","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../css/variables.module\\";\\n\\n.excalidraw {\\n  .Checkbox {\\n    margin: 4px 0.3em;\\n    display: flex;\\n    align-items: center;\\n\\n    cursor: pointer;\\n    user-select: none;\\n\\n    -webkit-tap-highlight-color: transparent;\\n\\n    &:hover:not(.is-checked) .Checkbox-box:not(:focus) {\\n      box-shadow: 0 0 0 2px #{$oc-blue-4};\\n    }\\n\\n    &:hover:not(.is-checked) .Checkbox-box:not(:focus) {\\n      svg {\\n        display: block;\\n        opacity: 0.3;\\n      }\\n    }\\n\\n    &:active {\\n      .Checkbox-box {\\n        box-shadow: 0 0 2px 1px inset #{$oc-blue-7} !important;\\n      }\\n    }\\n\\n    &:hover {\\n      .Checkbox-box {\\n        background-color: fade-out($oc-blue-1, 0.8);\\n      }\\n    }\\n\\n    &.is-checked {\\n      .Checkbox-box {\\n        background-color: #{$oc-blue-1};\\n        svg {\\n          display: block;\\n        }\\n      }\\n      &:hover .Checkbox-box {\\n        background-color: #{$oc-blue-2};\\n      }\\n    }\\n\\n    .Checkbox-box {\\n      width: 22px;\\n      height: 22px;\\n      padding: 0;\\n      flex: 0 0 auto;\\n\\n      margin: 0 1em;\\n\\n      display: flex;\\n      align-items: center;\\n      justify-content: center;\\n\\n      box-shadow: 0 0 0 2px #{$oc-blue-7};\\n      background-color: transparent;\\n      border-radius: 4px;\\n\\n      color: #{$oc-blue-7};\\n\\n      border: 0;\\n\\n      &:focus {\\n        box-shadow: 0 0 0 3px #{$oc-blue-7};\\n      }\\n\\n      svg {\\n        display: none;\\n        width: 16px;\\n        height: 16px;\\n        stroke-width: 3px;\\n      }\\n    }\\n\\n    .Checkbox-label {\\n      display: flex;\\n      align-items: center;\\n    }\\n\\n    .excalidraw-tooltip-icon {\\n      width: 1em;\\n      height: 1em;\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 13848 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/CheckboxItem.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ColorPicker/ColorPicker.scss": (
              /*!********************************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ColorPicker/ColorPicker.scss ***!
                \********************************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../packages/excalidraw/node_modules/css-loader/dist/runtime/getUrl.js */ "./node_modules/css-loader/dist/runtime/getUrl.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__);\n// Imports\n\n\n\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(/* asset import */ __webpack_require__(/*! data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMUlEQVQ4T2NkYGAQYcAP3uCTZhw1gGGYhAGBZIA/nYDCgBDAm9BGDWAAJyRCgLaBCAAgXwixzAS0pgAAAABJRU5ErkJggg== */ "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMUlEQVQ4T2NkYGAQYcAP3uCTZhw1gGGYhAGBZIA/nYDCgBDAm9BGDWAAJyRCgLaBCAAgXwixzAS0pgAAAABJRU5ErkJggg=="), __webpack_require__.b);\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .focus-visible-none:focus-visible {\\n  outline: none !important;\\n}\\n.excalidraw .color-picker__heading {\\n  padding: 0 0.5rem;\\n  font-size: 0.75rem;\\n  text-align: left;\\n}\\n.excalidraw .color-picker-container {\\n  display: grid;\\n  grid-template-columns: 1fr 20px 1.625rem;\\n  padding: 0.25rem 0px;\\n  align-items: center;\\n}\\n.excalidraw--mobile.excalidraw .color-picker-container {\\n  max-width: 175px;\\n}\\n\\n.excalidraw .color-picker__top-picks {\\n  display: flex;\\n  justify-content: space-between;\\n}\\n.excalidraw .color-picker__button {\\n  --radius: 0.25rem;\\n  padding: 0;\\n  margin: 0;\\n  width: 1.35rem;\\n  height: 1.35rem;\\n  border: 1px solid var(--color-gray-30);\\n  border-radius: var(--radius);\\n  filter: var(--theme-filter);\\n  background-color: var(--swatch-color);\\n  background-position: left center;\\n  position: relative;\\n  font-family: inherit;\\n  box-sizing: border-box;\\n}\\n.excalidraw .color-picker__button:hover::after {\\n  content: \\"\\";\\n  position: absolute;\\n  top: -2px;\\n  left: -2px;\\n  right: -2px;\\n  bottom: -2px;\\n  box-shadow: 0 0 0 1px var(--color-gray-30);\\n  border-radius: calc(var(--radius) + 1px);\\n  filter: var(--theme-filter);\\n}\\n.excalidraw .color-picker__button.active .color-picker__button-outline {\\n  position: absolute;\\n  top: -2px;\\n  left: -2px;\\n  right: -2px;\\n  bottom: -2px;\\n  box-shadow: 0 0 0 1px var(--color-primary-darkest);\\n  z-index: 1;\\n  border-radius: calc(var(--radius) + 1px);\\n  filter: var(--theme-filter);\\n}\\n.excalidraw .color-picker__button:focus-visible {\\n  outline: none;\\n}\\n.excalidraw .color-picker__button:focus-visible::after {\\n  content: \\"\\";\\n  position: absolute;\\n  top: -4px;\\n  right: -4px;\\n  bottom: -4px;\\n  left: -4px;\\n  border: 3px solid var(--focus-highlight-color);\\n  border-radius: calc(var(--radius) + 1px);\\n}\\n.excalidraw .color-picker__button:focus-visible.active .color-picker__button-outline {\\n  display: none;\\n}\\n.excalidraw .color-picker__button--large {\\n  --radius: 0.5rem;\\n  width: 1.875rem;\\n  height: 1.875rem;\\n}\\n.excalidraw .color-picker__button.is-transparent {\\n  background-image: url(" + ___CSS_LOADER_URL_REPLACEMENT_0___ + ");\\n}\\n.excalidraw .color-picker__button--no-focus-visible {\\n  border: 0;\\n}\\n.excalidraw .color-picker__button--no-focus-visible::after {\\n  display: none;\\n}\\n.excalidraw .color-picker__button--no-focus-visible:focus-visible {\\n  outline: none !important;\\n}\\n.excalidraw .color-picker__button.active-color {\\n  border-radius: calc(var(--radius) + 1px);\\n  width: 1.625rem;\\n  height: 1.625rem;\\n}\\n.excalidraw .color-picker__button__hotkey-label {\\n  position: absolute;\\n  right: 4px;\\n  bottom: 4px;\\n  filter: none;\\n  font-size: 11px;\\n}\\n.excalidraw .color-picker {\\n  background: var(--popup-bg-color);\\n  border: 0 solid rgba(255, 255, 255, 0.25);\\n  box-shadow: rgba(0, 0, 0, 0.25) 0 1px 4px;\\n  border-radius: 4px;\\n  position: absolute;\\n}\\n:root[dir=ltr] .excalidraw .color-picker {\\n  left: -5.5px;\\n}\\n:root[dir=rtl] .excalidraw .color-picker {\\n  right: -5.5px;\\n}\\n.excalidraw .color-picker-control-container {\\n  display: grid;\\n  grid-template-columns: auto 1fr;\\n  align-items: center;\\n  column-gap: 0.5rem;\\n}\\n.excalidraw .color-picker-control-container + .popover {\\n  position: static;\\n}\\n.excalidraw .color-picker-popover-container {\\n  margin-top: -0.25rem;\\n}\\n:root[dir=ltr] .excalidraw .color-picker-popover-container {\\n  margin-left: 0.5rem;\\n}\\n:root[dir=rtl] .excalidraw .color-picker-popover-container {\\n  margin-left: -3rem;\\n}\\n.excalidraw .color-picker-triangle {\\n  width: 0;\\n  height: 0;\\n  border-style: solid;\\n  border-width: 0 9px 10px;\\n  border-color: transparent transparent var(--popup-bg-color);\\n  position: absolute;\\n  top: 10px;\\n}\\n:root[dir=ltr] .excalidraw .color-picker-triangle {\\n  transform: rotate(270deg);\\n  left: -14px;\\n}\\n:root[dir=rtl] .excalidraw .color-picker-triangle {\\n  transform: rotate(90deg);\\n  right: -14px;\\n}\\n.excalidraw .color-picker-triangle-shadow {\\n  border-color: transparent transparent rgba(0, 0, 0, 0.1);\\n}\\n:root[dir=ltr] .excalidraw .color-picker-triangle-shadow {\\n  left: -14px;\\n}\\n:root[dir=rtl] .excalidraw .color-picker-triangle-shadow {\\n  right: -16px;\\n}\\n.excalidraw .color-picker-content {\\n  display: flex;\\n  flex-direction: column;\\n  gap: 0.75rem;\\n  outline: none;\\n}\\n.excalidraw .color-picker-content--default {\\n  padding: 0.5rem;\\n  display: grid;\\n  grid-template-columns: repeat(5, 1.875rem);\\n  grid-gap: 0.25rem;\\n  border-radius: 4px;\\n}\\n.excalidraw .color-picker-content--default:focus {\\n  outline: none;\\n  box-shadow: 0 0 0 2px var(--focus-highlight-color);\\n}\\n.excalidraw .color-picker-content--canvas {\\n  display: flex;\\n  flex-direction: column;\\n  padding: 0.25rem;\\n}\\n.excalidraw .color-picker-content--canvas-title {\\n  color: #868e96;\\n  font-size: 12px;\\n  padding: 0 0.25rem;\\n}\\n.excalidraw .color-picker-content--canvas-colors {\\n  padding: 0.5rem 0;\\n}\\n.excalidraw .color-picker-content--canvas-colors .color-picker-swatch {\\n  margin: 0 0.25rem;\\n}\\n.excalidraw .color-picker-content .color-input-container {\\n  grid-column: 1/span 5;\\n}\\n.excalidraw .color-picker-swatch {\\n  position: relative;\\n  height: 1.875rem;\\n  width: 1.875rem;\\n  cursor: pointer;\\n  border-radius: 4px;\\n  margin: 0;\\n  box-sizing: border-box;\\n  border: 1px solid #ddd;\\n  background-color: currentColor !important;\\n  filter: var(--theme-filter);\\n}\\n.excalidraw .color-picker-swatch:focus {\\n  /* TODO: only show the border when the color is too light to see as a shadow */\\n  box-shadow: 0 0 4px 1px currentColor;\\n  border-color: var(--select-highlight-color);\\n}\\n.excalidraw .color-picker-transparent {\\n  border-radius: 4px;\\n  box-shadow: rgba(0, 0, 0, 0.1) 0 0 0 1px inset;\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n}\\n.excalidraw .color-picker-transparent,\\n.excalidraw .color-picker-label-swatch {\\n  background: url(" + ___CSS_LOADER_URL_REPLACEMENT_0___ + ") left center;\\n}\\n.excalidraw .color-picker-hash {\\n  height: var(--default-button-size);\\n  flex-shrink: 0;\\n  padding: 0.5rem 0.5rem 0.5rem 0.75rem;\\n  border: 1px solid var(--default-border-color);\\n  border-right: 0;\\n  box-sizing: border-box;\\n  color: var(--input-label-color);\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  position: relative;\\n}\\n:root[dir=ltr] .excalidraw .color-picker-hash {\\n  border-radius: var(--border-radius-lg) 0 0 var(--border-radius-lg);\\n}\\n:root[dir=rtl] .excalidraw .color-picker-hash {\\n  border-radius: 0 var(--border-radius-lg) var(--border-radius-lg) 0;\\n  border-right: 1px solid var(--default-border-color);\\n  border-left: 0;\\n}\\n.excalidraw .color-input-container {\\n  display: flex;\\n}\\n.excalidraw .color-input-container:focus-within {\\n  box-shadow: 0 0 0 1px var(--color-primary-darkest);\\n  border-radius: var(--border-radius-lg);\\n}\\n.excalidraw .color-picker__input-label {\\n  display: grid;\\n  grid-template-columns: auto 1fr auto auto;\\n  gap: 8px;\\n  align-items: center;\\n  border: 1px solid var(--default-border-color);\\n  border-radius: 8px;\\n  padding: 0 12px;\\n  margin: 8px;\\n  box-sizing: border-box;\\n}\\n.excalidraw .color-picker__input-label:focus-within {\\n  box-shadow: 0 0 0 1px var(--color-primary-darkest);\\n  border-radius: var(--border-radius-lg);\\n}\\n.excalidraw .color-picker__input-hash {\\n  padding: 0 0.25rem;\\n}\\n.excalidraw .color-picker-input {\\n  box-sizing: border-box;\\n  width: 100%;\\n  margin: 0;\\n  font-size: 0.875rem;\\n  font-family: inherit;\\n  background-color: transparent;\\n  color: var(--text-primary-color);\\n  border: 0;\\n  outline: none;\\n  height: var(--default-button-size);\\n  border: 1px solid var(--default-border-color);\\n  border-left: 0;\\n  letter-spacing: 0.4px;\\n  padding: 0.5rem;\\n  padding-left: 0.25rem;\\n  appearance: none;\\n}\\n:root[dir=ltr] .excalidraw .color-picker-input {\\n  border-radius: 0 var(--border-radius-lg) var(--border-radius-lg) 0;\\n}\\n:root[dir=rtl] .excalidraw .color-picker-input {\\n  border-radius: var(--border-radius-lg) 0 0 var(--border-radius-lg);\\n  border-left: 1px solid var(--default-border-color);\\n  border-right: 0;\\n}\\n.excalidraw .color-picker-input:focus-visible {\\n  box-shadow: none;\\n}\\n.excalidraw .color-picker-label-swatch-container {\\n  border: 1px solid var(--default-border-color);\\n  border-radius: var(--border-radius-lg);\\n  width: var(--default-button-size);\\n  height: var(--default-button-size);\\n  box-sizing: border-box;\\n  overflow: hidden;\\n}\\n.excalidraw .color-picker-label-swatch {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n  background-color: var(--swatch-color) !important;\\n  overflow: hidden;\\n  position: relative;\\n  filter: var(--theme-filter);\\n  border: 0 !important;\\n}\\n.excalidraw .color-picker-label-swatch svg {\\n  width: var(--button-width, var(--lg-icon-size));\\n  height: var(--button-height, var(--lg-icon-size));\\n}\\n.excalidraw .color-picker-label-swatch:hover {\\n  background-color: var(--button-hover-bg, var(--island-bg-color));\\n  border-color: var(--button-hover-border, var(--button-border, var(--default-border-color)));\\n  color: var(--button-hover-color, var(--button-color, var(--text-primary-color, inherit)));\\n}\\n.excalidraw .color-picker-label-swatch:active {\\n  background-color: var(--button-active-bg, var(--island-bg-color));\\n  border-color: var(--button-active-border, var(--color-primary-darkest));\\n}\\n.excalidraw .color-picker-label-swatch.active {\\n  background-color: var(--button-selected-bg, var(--color-surface-primary-container));\\n  border-color: var(--button-selected-border, var(--color-surface-primary-container));\\n}\\n.excalidraw .color-picker-label-swatch.active:hover {\\n  background-color: var(--button-selected-hover-bg, var(--color-surface-primary-container));\\n}\\n.excalidraw .color-picker-label-swatch.active svg {\\n  color: var(--button-color, var(--color-on-primary-container));\\n}\\n.excalidraw .color-picker-label-swatch:after {\\n  content: \\"\\";\\n  position: absolute;\\n  top: 0;\\n  left: 0;\\n  width: 100%;\\n  height: 100%;\\n  background: var(--swatch-color);\\n}\\n.excalidraw .color-picker-keybinding {\\n  position: absolute;\\n  bottom: 2px;\\n  font-size: 0.7em;\\n}\\n:root[dir=ltr] .excalidraw .color-picker-keybinding {\\n  right: 2px;\\n}\\n:root[dir=rtl] .excalidraw .color-picker-keybinding {\\n  left: 2px;\\n}\\n.excalidraw--mobile.excalidraw .color-picker-keybinding {\\n  display: none;\\n}\\n\\n.excalidraw .color-picker-type-canvasBackground .color-picker-keybinding {\\n  color: #aaa;\\n}\\n.excalidraw .color-picker-type-elementBackground .color-picker-keybinding {\\n  color: #ffffff;\\n}\\n.excalidraw .color-picker-swatch[aria-label=transparent] .color-picker-keybinding {\\n  color: #aaa;\\n}\\n.excalidraw .color-picker-type-elementStroke .color-picker-keybinding {\\n  color: #d4d4d4;\\n}\\n.excalidraw.theme--dark .color-picker-type-elementBackground .color-picker-keybinding {\\n  color: #000000;\\n}\\n.excalidraw.theme--dark .color-picker-swatch[aria-label=transparent] .color-picker-keybinding {\\n  color: #000000;\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/ColorPicker/ColorPicker.scss","webpack://./../../../node_modules/open-color/open-color.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AACI;EACE,wBAAA;AAEN;AAEE;EACE,iBAAA;EACA,kBAAA;EACA,gBAAA;AAAJ;AAGE;EACE,aAAA;EACA,wCAAA;EACA,oBAAA;EACA,mBAAA;AADJ;ADfW;ECmBL,gBAAA;AADN;;AAKE;EACE,aAAA;EACA,8BAAA;AAFJ;AAKE;EACE,iBAAA;EAEA,UAAA;EACA,SAAA;EACA,cAAA;EACA,eAAA;EACA,sCAAA;EACA,4BAAA;EACA,2BAAA;EACA,qCAAA;EACA,gCAAA;EACA,kBAAA;EACA,oBAAA;EACA,sBAAA;AAJJ;AAOM;EACE,WAAA;EACA,kBAAA;EACA,SAAA;EACA,UAAA;EACA,WAAA;EACA,YAAA;EACA,0CAAA;EACA,wCAAA;EACA,2BAAA;AALR;AAUM;EACE,kBAAA;EACA,SAAA;EACA,UAAA;EACA,WAAA;EACA,YAAA;EACA,kDAAA;EACA,UAAA;EACA,wCAAA;EACA,2BAAA;AARR;AAYI;EACE,aAAA;AAVN;AAYM;EACE,WAAA;EACA,kBAAA;EACA,SAAA;EACA,WAAA;EACA,YAAA;EACA,UAAA;EACA,8CAAA;EACA,wCAAA;AAVR;AAcQ;EACE,aAAA;AAZV;AAiBI;EACE,gBAAA;EACA,eAAA;EACA,gBAAA;AAfN;AAkBI;EACE,yDAAA;AAhBN;AAmBI;EACE,SAAA;AAjBN;AAkBM;EACE,aAAA;AAhBR;AAkBM;EACE,wBAAA;AAhBR;AAoBI;EACE,wCAAA;EACA,eAAA;EACA,gBAAA;AAlBN;AAsBE;EACE,kBAAA;EACA,UAAA;EACA,WAAA;EACA,YAAA;EACA,eAAA;AApBJ;AAuBE;EACE,iCAAA;EACA,yCAAA;EACA,yCAAA;EACA,kBAAA;EACA,kBAAA;AArBJ;AAuBI;EACE,YAAA;AArBN;AAwBI;EACE,aAAA;AAtBN;AA0BE;EACE,aAAA;EACA,+BAAA;EACA,mBAAA;EACA,kBAAA;AAxBJ;AA2BE;EACE,gBAAA;AAzBJ;AA4BE;EACE,oBAAA;AA1BJ;AA4BI;EACE,mBAAA;AA1BN;AA6BI;EACE,kBAAA;AA3BN;AA+BE;EACE,QAAA;EACA,SAAA;EACA,mBAAA;EACA,wBAAA;EACA,2DAAA;EACA,kBAAA;EACA,SAAA;AA7BJ;AA+BI;EACE,yBAAA;EACA,WAAA;AA7BN;AAgCI;EACE,wBAAA;EACA,YAAA;AA9BN;AAkCE;EACE,wDAAA;AAhCJ;AAkCI;EACE,WAAA;AAhCN;AAmCI;EACE,YAAA;AAjCN;AAqCE;EACE,aAAA;EACA,sBAAA;EACA,YAAA;EACA,aAAA;AAnCJ;AAsCE;EACE,eAAA;EACA,aAAA;EACA,0CAAA;EACA,iBAAA;EACA,kBAAA;AApCJ;AAsCI;EACE,aAAA;EACA,kDAAA;AApCN;AAwCE;EACE,aAAA;EACA,sBAAA;EACA,gBAAA;AAtCJ;AAwCI;EACE,cC/LM;EDgMN,eAAA;EACA,kBAAA;AAtCN;AAyCI;EACE,iBAAA;AAvCN;AAyCM;EACE,iBAAA;AAvCR;AA4CE;EACE,qBAAA;AA1CJ;AA6CE;EACE,kBAAA;EACA,gBAAA;EACA,eAAA;EACA,eAAA;EACA,kBAAA;EACA,SAAA;EACA,sBAAA;EACA,sBAAA;EACA,yCAAA;EACA,2BAAA;AA3CJ;AA6CI;EACE,8EAAA;EACA,oCAAA;EACA,2CAAA;AA3CN;AA+CE;EACE,kBAAA;EACA,8CAAA;EACA,kBAAA;EACA,MAAA;EACA,QAAA;EACA,SAAA;EACA,OAAA;AA7CJ;AAgDE;;EAEE,+DAAA;AA9CJ;AAkDE;EACE,kCAAA;EACA,cAAA;EACA,qCAAA;EACA,6CAAA;EACA,eAAA;EACA,sBAAA;EAYA,+BAAA;EACA,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,kBAAA;AA3DJ;AA6CI;EACE,kEAAA;AA3CN;AA8CI;EACE,kEAAA;EACA,mDAAA;EACA,cAAA;AA5CN;AAsDE;EACE,aAAA;AApDJ;AAsDI;EACE,kDAAA;EACA,sCAAA;AApDN;AAwDE;EACE,aAAA;EACA,yCAAA;EACA,QAAA;EACA,mBAAA;EACA,6CAAA;EACA,kBAAA;EACA,eAAA;EACA,WAAA;EACA,sBAAA;AAtDJ;AAwDI;EACE,kDAAA;EACA,sCAAA;AAtDN;AA0DE;EACE,kBAAA;AAxDJ;AA2DE;EACE,sBAAA;EACA,WAAA;EACA,SAAA;EACA,mBAAA;EACA,oBAAA;EACA,6BAAA;EACA,gCAAA;EACA,SAAA;EACA,aAAA;EACA,kCAAA;EACA,6CAAA;EACA,cAAA;EACA,qBAAA;EAYA,eAAA;EACA,qBAAA;EACA,gBAAA;AApEJ;AAwDI;EACE,kEAAA;AAtDN;AAyDI;EACE,kEAAA;EACA,kDAAA;EACA,eAAA;AAvDN;AA8DI;EACE,gBAAA;AA5DN;AAgEE;EACE,6CAAA;EACA,sCAAA;EACA,iCAAA;EACA,kCAAA;EACA,sBAAA;EACA,gBAAA;AA9DJ;AAiEE;EDnUA,aAAA;EACA,uBAAA;EACA,mBAAA;EACA,iBAAA;EACA,sDAAA;EACA,wDAAA;EACA,sBAAA;EACA,iBAAA;EACA,mBAAA;EACA,+DAAA;EACA,sCAAA;EACA,eAAA;EACA,0DAAA;EACA,mDAAA;ECwTE,gDAAA;EACA,gBAAA;EACA,kBAAA;EACA,2BAAA;EACA,oBAAA;AAlDJ;ADxQE;EACE,+CAAA;EACA,iDAAA;AC0QJ;ADvQE;EACE,gEAAA;EACA,2FAAA;EAIA,yFAAA;ACsQJ;ADhQE;EACE,iEAAA;EACA,uEAAA;ACkQJ;AD/PE;EACE,mFAAA;EAIA,mFAAA;AC8PJ;ADzPI;EACE,yFAAA;AC2PN;ADrPI;EACE,6DAAA;ACuPN;AA6BI;EACE,WAAA;EACA,kBAAA;EACA,MAAA;EACA,OAAA;EACA,WAAA;EACA,YAAA;EACA,+BAAA;AA3BN;AA+BE;EACE,kBAAA;EACA,WAAA;EACA,gBAAA;AA7BJ;AA+BI;EACE,UAAA;AA7BN;AAgCI;EACE,SAAA;AA9BN;ADvXW;ECyZL,aAAA;AA/BN;;AAmCE;EACE,WAAA;AAhCJ;AAmCE;EACE,cC1Ze;ADyXnB;AAoCE;EACE,WAAA;AAlCJ;AAqCE;EACE,cAAA;AAnCJ;AAuCI;EACE,cCtaa;ADiYnB;AAuCI;EACE,cCzaa;ADoYnB","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../../css/variables.module\\";\\n\\n.excalidraw {\\n  .focus-visible-none {\\n    &:focus-visible {\\n      outline: none !important;\\n    }\\n  }\\n\\n  .color-picker__heading {\\n    padding: 0 0.5rem;\\n    font-size: 0.75rem;\\n    text-align: left;\\n  }\\n\\n  .color-picker-container {\\n    display: grid;\\n    grid-template-columns: 1fr 20px 1.625rem;\\n    padding: 0.25rem 0px;\\n    align-items: center;\\n\\n    @include isMobile {\\n      max-width: 175px;\\n    }\\n  }\\n\\n  .color-picker__top-picks {\\n    display: flex;\\n    justify-content: space-between;\\n  }\\n\\n  .color-picker__button {\\n    --radius: 0.25rem;\\n\\n    padding: 0;\\n    margin: 0;\\n    width: 1.35rem;\\n    height: 1.35rem;\\n    border: 1px solid var(--color-gray-30);\\n    border-radius: var(--radius);\\n    filter: var(--theme-filter);\\n    background-color: var(--swatch-color);\\n    background-position: left center;\\n    position: relative;\\n    font-family: inherit;\\n    box-sizing: border-box;\\n\\n    &:hover {\\n      &::after {\\n        content: \\"\\";\\n        position: absolute;\\n        top: -2px;\\n        left: -2px;\\n        right: -2px;\\n        bottom: -2px;\\n        box-shadow: 0 0 0 1px var(--color-gray-30);\\n        border-radius: calc(var(--radius) + 1px);\\n        filter: var(--theme-filter);\\n      }\\n    }\\n\\n    &.active {\\n      .color-picker__button-outline {\\n        position: absolute;\\n        top: -2px;\\n        left: -2px;\\n        right: -2px;\\n        bottom: -2px;\\n        box-shadow: 0 0 0 1px var(--color-primary-darkest);\\n        z-index: 1; // due hover state so this has preference\\n        border-radius: calc(var(--radius) + 1px);\\n        filter: var(--theme-filter);\\n      }\\n    }\\n\\n    &:focus-visible {\\n      outline: none;\\n\\n      &::after {\\n        content: \\"\\";\\n        position: absolute;\\n        top: -4px;\\n        right: -4px;\\n        bottom: -4px;\\n        left: -4px;\\n        border: 3px solid var(--focus-highlight-color);\\n        border-radius: calc(var(--radius) + 1px);\\n      }\\n\\n      &.active {\\n        .color-picker__button-outline {\\n          display: none;\\n        }\\n      }\\n    }\\n\\n    &--large {\\n      --radius: 0.5rem;\\n      width: 1.875rem;\\n      height: 1.875rem;\\n    }\\n\\n    &.is-transparent {\\n      background-image: url(\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMUlEQVQ4T2NkYGAQYcAP3uCTZhw1gGGYhAGBZIA/nYDCgBDAm9BGDWAAJyRCgLaBCAAgXwixzAS0pgAAAABJRU5ErkJggg==\\");\\n    }\\n\\n    &--no-focus-visible {\\n      border: 0;\\n      &::after {\\n        display: none;\\n      }\\n      &:focus-visible {\\n        outline: none !important;\\n      }\\n    }\\n\\n    &.active-color {\\n      border-radius: calc(var(--radius) + 1px);\\n      width: 1.625rem;\\n      height: 1.625rem;\\n    }\\n  }\\n\\n  .color-picker__button__hotkey-label {\\n    position: absolute;\\n    right: 4px;\\n    bottom: 4px;\\n    filter: none;\\n    font-size: 11px;\\n  }\\n\\n  .color-picker {\\n    background: var(--popup-bg-color);\\n    border: 0 solid transparentize($oc-white, 0.75);\\n    box-shadow: transparentize($oc-black, 0.75) 0 1px 4px;\\n    border-radius: 4px;\\n    position: absolute;\\n\\n    :root[dir=\\"ltr\\"] & {\\n      left: -5.5px;\\n    }\\n\\n    :root[dir=\\"rtl\\"] & {\\n      right: -5.5px;\\n    }\\n  }\\n\\n  .color-picker-control-container {\\n    display: grid;\\n    grid-template-columns: auto 1fr;\\n    align-items: center;\\n    column-gap: 0.5rem;\\n  }\\n\\n  .color-picker-control-container + .popover {\\n    position: static;\\n  }\\n\\n  .color-picker-popover-container {\\n    margin-top: -0.25rem;\\n\\n    :root[dir=\\"ltr\\"] & {\\n      margin-left: 0.5rem;\\n    }\\n\\n    :root[dir=\\"rtl\\"] & {\\n      margin-left: -3rem;\\n    }\\n  }\\n\\n  .color-picker-triangle {\\n    width: 0;\\n    height: 0;\\n    border-style: solid;\\n    border-width: 0 9px 10px;\\n    border-color: transparent transparent var(--popup-bg-color);\\n    position: absolute;\\n    top: 10px;\\n\\n    :root[dir=\\"ltr\\"] & {\\n      transform: rotate(270deg);\\n      left: -14px;\\n    }\\n\\n    :root[dir=\\"rtl\\"] & {\\n      transform: rotate(90deg);\\n      right: -14px;\\n    }\\n  }\\n\\n  .color-picker-triangle-shadow {\\n    border-color: transparent transparent transparentize($oc-black, 0.9);\\n\\n    :root[dir=\\"ltr\\"] & {\\n      left: -14px;\\n    }\\n\\n    :root[dir=\\"rtl\\"] & {\\n      right: -16px;\\n    }\\n  }\\n\\n  .color-picker-content {\\n    display: flex;\\n    flex-direction: column;\\n    gap: 0.75rem;\\n    outline: none;\\n  }\\n\\n  .color-picker-content--default {\\n    padding: 0.5rem;\\n    display: grid;\\n    grid-template-columns: repeat(5, 1.875rem);\\n    grid-gap: 0.25rem;\\n    border-radius: 4px;\\n\\n    &:focus {\\n      outline: none;\\n      box-shadow: 0 0 0 2px var(--focus-highlight-color);\\n    }\\n  }\\n\\n  .color-picker-content--canvas {\\n    display: flex;\\n    flex-direction: column;\\n    padding: 0.25rem;\\n\\n    &-title {\\n      color: $oc-gray-6;\\n      font-size: 12px;\\n      padding: 0 0.25rem;\\n    }\\n\\n    &-colors {\\n      padding: 0.5rem 0;\\n\\n      .color-picker-swatch {\\n        margin: 0 0.25rem;\\n      }\\n    }\\n  }\\n\\n  .color-picker-content .color-input-container {\\n    grid-column: 1 / span 5;\\n  }\\n\\n  .color-picker-swatch {\\n    position: relative;\\n    height: 1.875rem;\\n    width: 1.875rem;\\n    cursor: pointer;\\n    border-radius: 4px;\\n    margin: 0;\\n    box-sizing: border-box;\\n    border: 1px solid #ddd;\\n    background-color: currentColor !important;\\n    filter: var(--theme-filter);\\n\\n    &:focus {\\n      /* TODO: only show the border when the color is too light to see as a shadow */\\n      box-shadow: 0 0 4px 1px currentColor;\\n      border-color: var(--select-highlight-color);\\n    }\\n  }\\n\\n  .color-picker-transparent {\\n    border-radius: 4px;\\n    box-shadow: transparentize($oc-black, 0.9) 0 0 0 1px inset;\\n    position: absolute;\\n    top: 0;\\n    right: 0;\\n    bottom: 0;\\n    left: 0;\\n  }\\n\\n  .color-picker-transparent,\\n  .color-picker-label-swatch {\\n    background: url(\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMUlEQVQ4T2NkYGAQYcAP3uCTZhw1gGGYhAGBZIA/nYDCgBDAm9BGDWAAJyRCgLaBCAAgXwixzAS0pgAAAABJRU5ErkJggg==\\")\\n      left center;\\n  }\\n\\n  .color-picker-hash {\\n    height: var(--default-button-size);\\n    flex-shrink: 0;\\n    padding: 0.5rem 0.5rem 0.5rem 0.75rem;\\n    border: 1px solid var(--default-border-color);\\n    border-right: 0;\\n    box-sizing: border-box;\\n\\n    :root[dir=\\"ltr\\"] & {\\n      border-radius: var(--border-radius-lg) 0 0 var(--border-radius-lg);\\n    }\\n\\n    :root[dir=\\"rtl\\"] & {\\n      border-radius: 0 var(--border-radius-lg) var(--border-radius-lg) 0;\\n      border-right: 1px solid var(--default-border-color);\\n      border-left: 0;\\n    }\\n\\n    color: var(--input-label-color);\\n    display: flex;\\n    align-items: center;\\n    justify-content: center;\\n    position: relative;\\n  }\\n\\n  .color-input-container {\\n    display: flex;\\n\\n    &:focus-within {\\n      box-shadow: 0 0 0 1px var(--color-primary-darkest);\\n      border-radius: var(--border-radius-lg);\\n    }\\n  }\\n\\n  .color-picker__input-label {\\n    display: grid;\\n    grid-template-columns: auto 1fr auto auto;\\n    gap: 8px;\\n    align-items: center;\\n    border: 1px solid var(--default-border-color);\\n    border-radius: 8px;\\n    padding: 0 12px;\\n    margin: 8px;\\n    box-sizing: border-box;\\n\\n    &:focus-within {\\n      box-shadow: 0 0 0 1px var(--color-primary-darkest);\\n      border-radius: var(--border-radius-lg);\\n    }\\n  }\\n\\n  .color-picker__input-hash {\\n    padding: 0 0.25rem;\\n  }\\n\\n  .color-picker-input {\\n    box-sizing: border-box;\\n    width: 100%;\\n    margin: 0;\\n    font-size: 0.875rem;\\n    font-family: inherit;\\n    background-color: transparent;\\n    color: var(--text-primary-color);\\n    border: 0;\\n    outline: none;\\n    height: var(--default-button-size);\\n    border: 1px solid var(--default-border-color);\\n    border-left: 0;\\n    letter-spacing: 0.4px;\\n\\n    :root[dir=\\"ltr\\"] & {\\n      border-radius: 0 var(--border-radius-lg) var(--border-radius-lg) 0;\\n    }\\n\\n    :root[dir=\\"rtl\\"] & {\\n      border-radius: var(--border-radius-lg) 0 0 var(--border-radius-lg);\\n      border-left: 1px solid var(--default-border-color);\\n      border-right: 0;\\n    }\\n\\n    padding: 0.5rem;\\n    padding-left: 0.25rem;\\n    appearance: none;\\n\\n    &:focus-visible {\\n      box-shadow: none;\\n    }\\n  }\\n\\n  .color-picker-label-swatch-container {\\n    border: 1px solid var(--default-border-color);\\n    border-radius: var(--border-radius-lg);\\n    width: var(--default-button-size);\\n    height: var(--default-button-size);\\n    box-sizing: border-box;\\n    overflow: hidden;\\n  }\\n\\n  .color-picker-label-swatch {\\n    @include outlineButtonStyles;\\n    background-color: var(--swatch-color) !important;\\n    overflow: hidden;\\n    position: relative;\\n    filter: var(--theme-filter);\\n    border: 0 !important;\\n\\n    &:after {\\n      content: \\"\\";\\n      position: absolute;\\n      top: 0;\\n      left: 0;\\n      width: 100%;\\n      height: 100%;\\n      background: var(--swatch-color);\\n    }\\n  }\\n\\n  .color-picker-keybinding {\\n    position: absolute;\\n    bottom: 2px;\\n    font-size: 0.7em;\\n\\n    :root[dir=\\"ltr\\"] & {\\n      right: 2px;\\n    }\\n\\n    :root[dir=\\"rtl\\"] & {\\n      left: 2px;\\n    }\\n\\n    @include isMobile {\\n      display: none;\\n    }\\n  }\\n\\n  .color-picker-type-canvasBackground .color-picker-keybinding {\\n    color: #aaa;\\n  }\\n\\n  .color-picker-type-elementBackground .color-picker-keybinding {\\n    color: $oc-white;\\n  }\\n\\n  .color-picker-swatch[aria-label=\\"transparent\\"] .color-picker-keybinding {\\n    color: #aaa;\\n  }\\n\\n  .color-picker-type-elementStroke .color-picker-keybinding {\\n    color: #d4d4d4;\\n  }\\n\\n  &.theme--dark {\\n    .color-picker-type-elementBackground .color-picker-keybinding {\\n      color: $oc-black;\\n    }\\n    .color-picker-swatch[aria-label=\\"transparent\\"] .color-picker-keybinding {\\n      color: $oc-black;\\n    }\\n  }\\n}\\n","//\\n//\\n//  \u{1D5D6} \u{1D5E2} \u{1D5DF} \u{1D5E2} \u{1D5E5}\\n//  v 1.9.1\\n//\\n//  \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\\n\\n\\n//  General\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-white:         #ffffff;\\n$oc-black:         #000000;\\n\\n\\n//  Gray\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-gray-list: (\\n  \\"0\\": #f8f9fa,\\n  \\"1\\": #f1f3f5,\\n  \\"2\\": #e9ecef,\\n  \\"3\\": #dee2e6,\\n  \\"4\\": #ced4da,\\n  \\"5\\": #adb5bd,\\n  \\"6\\": #868e96,\\n  \\"7\\": #495057,\\n  \\"8\\": #343a40,\\n  \\"9\\": #212529\\n);\\n\\n$oc-gray-0: map-get($oc-gray-list, \\"0\\");\\n$oc-gray-1: map-get($oc-gray-list, \\"1\\");\\n$oc-gray-2: map-get($oc-gray-list, \\"2\\");\\n$oc-gray-3: map-get($oc-gray-list, \\"3\\");\\n$oc-gray-4: map-get($oc-gray-list, \\"4\\");\\n$oc-gray-5: map-get($oc-gray-list, \\"5\\");\\n$oc-gray-6: map-get($oc-gray-list, \\"6\\");\\n$oc-gray-7: map-get($oc-gray-list, \\"7\\");\\n$oc-gray-8: map-get($oc-gray-list, \\"8\\");\\n$oc-gray-9: map-get($oc-gray-list, \\"9\\");\\n\\n\\n//  Red\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-red-list: (\\n  \\"0\\": #fff5f5,\\n  \\"1\\": #ffe3e3,\\n  \\"2\\": #ffc9c9,\\n  \\"3\\": #ffa8a8,\\n  \\"4\\": #ff8787,\\n  \\"5\\": #ff6b6b,\\n  \\"6\\": #fa5252,\\n  \\"7\\": #f03e3e,\\n  \\"8\\": #e03131,\\n  \\"9\\": #c92a2a\\n);\\n\\n$oc-red-0: map-get($oc-red-list, \\"0\\");\\n$oc-red-1: map-get($oc-red-list, \\"1\\");\\n$oc-red-2: map-get($oc-red-list, \\"2\\");\\n$oc-red-3: map-get($oc-red-list, \\"3\\");\\n$oc-red-4: map-get($oc-red-list, \\"4\\");\\n$oc-red-5: map-get($oc-red-list, \\"5\\");\\n$oc-red-6: map-get($oc-red-list, \\"6\\");\\n$oc-red-7: map-get($oc-red-list, \\"7\\");\\n$oc-red-8: map-get($oc-red-list, \\"8\\");\\n$oc-red-9: map-get($oc-red-list, \\"9\\");\\n\\n\\n//  Pink\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-pink-list: (\\n  \\"0\\": #fff0f6,\\n  \\"1\\": #ffdeeb,\\n  \\"2\\": #fcc2d7,\\n  \\"3\\": #faa2c1,\\n  \\"4\\": #f783ac,\\n  \\"5\\": #f06595,\\n  \\"6\\": #e64980,\\n  \\"7\\": #d6336c,\\n  \\"8\\": #c2255c,\\n  \\"9\\": #a61e4d\\n);\\n\\n$oc-pink-0: map-get($oc-pink-list, \\"0\\");\\n$oc-pink-1: map-get($oc-pink-list, \\"1\\");\\n$oc-pink-2: map-get($oc-pink-list, \\"2\\");\\n$oc-pink-3: map-get($oc-pink-list, \\"3\\");\\n$oc-pink-4: map-get($oc-pink-list, \\"4\\");\\n$oc-pink-5: map-get($oc-pink-list, \\"5\\");\\n$oc-pink-6: map-get($oc-pink-list, \\"6\\");\\n$oc-pink-7: map-get($oc-pink-list, \\"7\\");\\n$oc-pink-8: map-get($oc-pink-list, \\"8\\");\\n$oc-pink-9: map-get($oc-pink-list, \\"9\\");\\n\\n\\n//  Grape\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-grape-list: (\\n  \\"0\\": #f8f0fc,\\n  \\"1\\": #f3d9fa,\\n  \\"2\\": #eebefa,\\n  \\"3\\": #e599f7,\\n  \\"4\\": #da77f2,\\n  \\"5\\": #cc5de8,\\n  \\"6\\": #be4bdb,\\n  \\"7\\": #ae3ec9,\\n  \\"8\\": #9c36b5,\\n  \\"9\\": #862e9c\\n);\\n\\n$oc-grape-0: map-get($oc-grape-list, \\"0\\");\\n$oc-grape-1: map-get($oc-grape-list, \\"1\\");\\n$oc-grape-2: map-get($oc-grape-list, \\"2\\");\\n$oc-grape-3: map-get($oc-grape-list, \\"3\\");\\n$oc-grape-4: map-get($oc-grape-list, \\"4\\");\\n$oc-grape-5: map-get($oc-grape-list, \\"5\\");\\n$oc-grape-6: map-get($oc-grape-list, \\"6\\");\\n$oc-grape-7: map-get($oc-grape-list, \\"7\\");\\n$oc-grape-8: map-get($oc-grape-list, \\"8\\");\\n$oc-grape-9: map-get($oc-grape-list, \\"9\\");\\n\\n\\n//  Violet\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-violet-list: (\\n  \\"0\\": #f3f0ff,\\n  \\"1\\": #e5dbff,\\n  \\"2\\": #d0bfff,\\n  \\"3\\": #b197fc,\\n  \\"4\\": #9775fa,\\n  \\"5\\": #845ef7,\\n  \\"6\\": #7950f2,\\n  \\"7\\": #7048e8,\\n  \\"8\\": #6741d9,\\n  \\"9\\": #5f3dc4\\n);\\n\\n$oc-violet-0: map-get($oc-violet-list, \\"0\\");\\n$oc-violet-1: map-get($oc-violet-list, \\"1\\");\\n$oc-violet-2: map-get($oc-violet-list, \\"2\\");\\n$oc-violet-3: map-get($oc-violet-list, \\"3\\");\\n$oc-violet-4: map-get($oc-violet-list, \\"4\\");\\n$oc-violet-5: map-get($oc-violet-list, \\"5\\");\\n$oc-violet-6: map-get($oc-violet-list, \\"6\\");\\n$oc-violet-7: map-get($oc-violet-list, \\"7\\");\\n$oc-violet-8: map-get($oc-violet-list, \\"8\\");\\n$oc-violet-9: map-get($oc-violet-list, \\"9\\");\\n\\n\\n//  Indigo\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-indigo-list: (\\n  \\"0\\": #edf2ff,\\n  \\"1\\": #dbe4ff,\\n  \\"2\\": #bac8ff,\\n  \\"3\\": #91a7ff,\\n  \\"4\\": #748ffc,\\n  \\"5\\": #5c7cfa,\\n  \\"6\\": #4c6ef5,\\n  \\"7\\": #4263eb,\\n  \\"8\\": #3b5bdb,\\n  \\"9\\": #364fc7\\n);\\n\\n$oc-indigo-0: map-get($oc-indigo-list, \\"0\\");\\n$oc-indigo-1: map-get($oc-indigo-list, \\"1\\");\\n$oc-indigo-2: map-get($oc-indigo-list, \\"2\\");\\n$oc-indigo-3: map-get($oc-indigo-list, \\"3\\");\\n$oc-indigo-4: map-get($oc-indigo-list, \\"4\\");\\n$oc-indigo-5: map-get($oc-indigo-list, \\"5\\");\\n$oc-indigo-6: map-get($oc-indigo-list, \\"6\\");\\n$oc-indigo-7: map-get($oc-indigo-list, \\"7\\");\\n$oc-indigo-8: map-get($oc-indigo-list, \\"8\\");\\n$oc-indigo-9: map-get($oc-indigo-list, \\"9\\");\\n\\n\\n//  Blue\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-blue-list: (\\n  \\"0\\": #e7f5ff,\\n  \\"1\\": #d0ebff,\\n  \\"2\\": #a5d8ff,\\n  \\"3\\": #74c0fc,\\n  \\"4\\": #4dabf7,\\n  \\"5\\": #339af0,\\n  \\"6\\": #228be6,\\n  \\"7\\": #1c7ed6,\\n  \\"8\\": #1971c2,\\n  \\"9\\": #1864ab\\n);\\n\\n$oc-blue-0: map-get($oc-blue-list, \\"0\\");\\n$oc-blue-1: map-get($oc-blue-list, \\"1\\");\\n$oc-blue-2: map-get($oc-blue-list, \\"2\\");\\n$oc-blue-3: map-get($oc-blue-list, \\"3\\");\\n$oc-blue-4: map-get($oc-blue-list, \\"4\\");\\n$oc-blue-5: map-get($oc-blue-list, \\"5\\");\\n$oc-blue-6: map-get($oc-blue-list, \\"6\\");\\n$oc-blue-7: map-get($oc-blue-list, \\"7\\");\\n$oc-blue-8: map-get($oc-blue-list, \\"8\\");\\n$oc-blue-9: map-get($oc-blue-list, \\"9\\");\\n\\n\\n//  Cyan\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-cyan-list: (\\n  \\"0\\": #e3fafc,\\n  \\"1\\": #c5f6fa,\\n  \\"2\\": #99e9f2,\\n  \\"3\\": #66d9e8,\\n  \\"4\\": #3bc9db,\\n  \\"5\\": #22b8cf,\\n  \\"6\\": #15aabf,\\n  \\"7\\": #1098ad,\\n  \\"8\\": #0c8599,\\n  \\"9\\": #0b7285\\n);\\n\\n$oc-cyan-0: map-get($oc-cyan-list, \\"0\\");\\n$oc-cyan-1: map-get($oc-cyan-list, \\"1\\");\\n$oc-cyan-2: map-get($oc-cyan-list, \\"2\\");\\n$oc-cyan-3: map-get($oc-cyan-list, \\"3\\");\\n$oc-cyan-4: map-get($oc-cyan-list, \\"4\\");\\n$oc-cyan-5: map-get($oc-cyan-list, \\"5\\");\\n$oc-cyan-6: map-get($oc-cyan-list, \\"6\\");\\n$oc-cyan-7: map-get($oc-cyan-list, \\"7\\");\\n$oc-cyan-8: map-get($oc-cyan-list, \\"8\\");\\n$oc-cyan-9: map-get($oc-cyan-list, \\"9\\");\\n\\n\\n//  Teal\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-teal-list: (\\n  \\"0\\": #e6fcf5,\\n  \\"1\\": #c3fae8,\\n  \\"2\\": #96f2d7,\\n  \\"3\\": #63e6be,\\n  \\"4\\": #38d9a9,\\n  \\"5\\": #20c997,\\n  \\"6\\": #12b886,\\n  \\"7\\": #0ca678,\\n  \\"8\\": #099268,\\n  \\"9\\": #087f5b\\n);\\n\\n$oc-teal-0: map-get($oc-teal-list, \\"0\\");\\n$oc-teal-1: map-get($oc-teal-list, \\"1\\");\\n$oc-teal-2: map-get($oc-teal-list, \\"2\\");\\n$oc-teal-3: map-get($oc-teal-list, \\"3\\");\\n$oc-teal-4: map-get($oc-teal-list, \\"4\\");\\n$oc-teal-5: map-get($oc-teal-list, \\"5\\");\\n$oc-teal-6: map-get($oc-teal-list, \\"6\\");\\n$oc-teal-7: map-get($oc-teal-list, \\"7\\");\\n$oc-teal-8: map-get($oc-teal-list, \\"8\\");\\n$oc-teal-9: map-get($oc-teal-list, \\"9\\");\\n\\n\\n//  Green\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-green-list: (\\n  \\"0\\": #ebfbee,\\n  \\"1\\": #d3f9d8,\\n  \\"2\\": #b2f2bb,\\n  \\"3\\": #8ce99a,\\n  \\"4\\": #69db7c,\\n  \\"5\\": #51cf66,\\n  \\"6\\": #40c057,\\n  \\"7\\": #37b24d,\\n  \\"8\\": #2f9e44,\\n  \\"9\\": #2b8a3e\\n);\\n\\n$oc-green-0: map-get($oc-green-list, \\"0\\");\\n$oc-green-1: map-get($oc-green-list, \\"1\\");\\n$oc-green-2: map-get($oc-green-list, \\"2\\");\\n$oc-green-3: map-get($oc-green-list, \\"3\\");\\n$oc-green-4: map-get($oc-green-list, \\"4\\");\\n$oc-green-5: map-get($oc-green-list, \\"5\\");\\n$oc-green-6: map-get($oc-green-list, \\"6\\");\\n$oc-green-7: map-get($oc-green-list, \\"7\\");\\n$oc-green-8: map-get($oc-green-list, \\"8\\");\\n$oc-green-9: map-get($oc-green-list, \\"9\\");\\n\\n\\n//  Lime\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-lime-list: (\\n  \\"0\\": #f4fce3,\\n  \\"1\\": #e9fac8,\\n  \\"2\\": #d8f5a2,\\n  \\"3\\": #c0eb75,\\n  \\"4\\": #a9e34b,\\n  \\"5\\": #94d82d,\\n  \\"6\\": #82c91e,\\n  \\"7\\": #74b816,\\n  \\"8\\": #66a80f,\\n  \\"9\\": #5c940d\\n);\\n\\n$oc-lime-0: map-get($oc-lime-list, \\"0\\");\\n$oc-lime-1: map-get($oc-lime-list, \\"1\\");\\n$oc-lime-2: map-get($oc-lime-list, \\"2\\");\\n$oc-lime-3: map-get($oc-lime-list, \\"3\\");\\n$oc-lime-4: map-get($oc-lime-list, \\"4\\");\\n$oc-lime-5: map-get($oc-lime-list, \\"5\\");\\n$oc-lime-6: map-get($oc-lime-list, \\"6\\");\\n$oc-lime-7: map-get($oc-lime-list, \\"7\\");\\n$oc-lime-8: map-get($oc-lime-list, \\"8\\");\\n$oc-lime-9: map-get($oc-lime-list, \\"9\\");\\n\\n\\n//  Yellow\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-yellow-list: (\\n  \\"0\\": #fff9db,\\n  \\"1\\": #fff3bf,\\n  \\"2\\": #ffec99,\\n  \\"3\\": #ffe066,\\n  \\"4\\": #ffd43b,\\n  \\"5\\": #fcc419,\\n  \\"6\\": #fab005,\\n  \\"7\\": #f59f00,\\n  \\"8\\": #f08c00,\\n  \\"9\\": #e67700\\n);\\n\\n$oc-yellow-0: map-get($oc-yellow-list, \\"0\\");\\n$oc-yellow-1: map-get($oc-yellow-list, \\"1\\");\\n$oc-yellow-2: map-get($oc-yellow-list, \\"2\\");\\n$oc-yellow-3: map-get($oc-yellow-list, \\"3\\");\\n$oc-yellow-4: map-get($oc-yellow-list, \\"4\\");\\n$oc-yellow-5: map-get($oc-yellow-list, \\"5\\");\\n$oc-yellow-6: map-get($oc-yellow-list, \\"6\\");\\n$oc-yellow-7: map-get($oc-yellow-list, \\"7\\");\\n$oc-yellow-8: map-get($oc-yellow-list, \\"8\\");\\n$oc-yellow-9: map-get($oc-yellow-list, \\"9\\");\\n\\n\\n//  Orange\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-orange-list: (\\n  \\"0\\": #fff4e6,\\n  \\"1\\": #ffe8cc,\\n  \\"2\\": #ffd8a8,\\n  \\"3\\": #ffc078,\\n  \\"4\\": #ffa94d,\\n  \\"5\\": #ff922b,\\n  \\"6\\": #fd7e14,\\n  \\"7\\": #f76707,\\n  \\"8\\": #e8590c,\\n  \\"9\\": #d9480f\\n);\\n\\n$oc-orange-0: map-get($oc-orange-list, \\"0\\");\\n$oc-orange-1: map-get($oc-orange-list, \\"1\\");\\n$oc-orange-2: map-get($oc-orange-list, \\"2\\");\\n$oc-orange-3: map-get($oc-orange-list, \\"3\\");\\n$oc-orange-4: map-get($oc-orange-list, \\"4\\");\\n$oc-orange-5: map-get($oc-orange-list, \\"5\\");\\n$oc-orange-6: map-get($oc-orange-list, \\"6\\");\\n$oc-orange-7: map-get($oc-orange-list, \\"7\\");\\n$oc-orange-8: map-get($oc-orange-list, \\"8\\");\\n$oc-orange-9: map-get($oc-orange-list, \\"9\\");\\n\\n\\n//  Color list\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-color-spectrum:   9;\\n\\n$oc-color-list: (\\n  $oc-gray-list:      \\"gray\\",\\n  $oc-red-list:      \\"red\\",\\n  $oc-pink-list:      \\"pink\\",\\n  $oc-grape-list:      \\"grape\\",\\n  $oc-violet-list:      \\"violet\\",\\n  $oc-indigo-list:      \\"indigo\\",\\n  $oc-blue-list:      \\"blue\\",\\n  $oc-cyan-list:      \\"cyan\\",\\n  $oc-teal-list:      \\"teal\\",\\n  $oc-green-list:      \\"green\\",\\n  $oc-lime-list:      \\"lime\\",\\n  $oc-yellow-list:      \\"yellow\\",\\n  $oc-orange-list:      \\"orange\\"\\n);\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 70196 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ColorPicker/ColorPicker.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ConfirmDialog.scss": (
              /*!**********************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ConfirmDialog.scss ***!
                \**********************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .confirm-dialog-buttons {\\n  display: flex;\\n  column-gap: 0.5rem;\\n  justify-content: flex-end;\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/ConfirmDialog.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AACI;EACE,aAAA;EACA,kBAAA;EACA,yBAAA;AAEN","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../css/variables.module\\";\\n\\n.excalidraw {\\n  .confirm-dialog {\\n    &-buttons {\\n      display: flex;\\n      column-gap: 0.5rem;\\n      justify-content: flex-end;\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 7652 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ConfirmDialog.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ContextMenu.scss": (
              /*!********************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ContextMenu.scss ***!
                \********************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, "@charset \\"UTF-8\\";\\n:export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .context-menu {\\n  position: relative;\\n  border-radius: 4px;\\n  box-shadow: 0 3px 10px rgba(0, 0, 0, 0.2);\\n  padding: 0;\\n  list-style: none;\\n  user-select: none;\\n  margin: -0.25rem 0 0 0.125rem;\\n  padding: 0.5rem 0;\\n  background-color: var(--popup-secondary-bg-color);\\n  border: 1px solid var(--button-gray-3);\\n  cursor: default;\\n}\\n.excalidraw .context-menu button {\\n  color: var(--popup-text-color);\\n}\\n.excalidraw .context-menu-item {\\n  position: relative;\\n  width: 100%;\\n  min-width: 9.5rem;\\n  margin: 0;\\n  padding: 0.25rem 1rem 0.25rem 1.25rem;\\n  text-align: start;\\n  border-radius: 0;\\n  background-color: transparent;\\n  border: none;\\n  white-space: nowrap;\\n  font-family: inherit;\\n  display: grid;\\n  grid-template-columns: 1fr 0.2fr;\\n  align-items: center;\\n}\\n.excalidraw .context-menu-item.checkmark::before {\\n  position: absolute;\\n  left: 6px;\\n  margin-bottom: 1px;\\n  content: \\"\u2713\\";\\n}\\n.excalidraw .context-menu-item.dangerous .context-menu-item__label {\\n  color: #f03e3e;\\n}\\n.excalidraw .context-menu-item .context-menu-item__label {\\n  justify-self: start;\\n  margin-inline-end: 20px;\\n}\\n.excalidraw .context-menu-item .context-menu-item__shortcut {\\n  justify-self: end;\\n  opacity: 0.6;\\n  font-family: inherit;\\n  font-size: 0.7rem;\\n}\\n.excalidraw .context-menu-item:hover {\\n  color: var(--popup-bg-color);\\n  background-color: var(--select-highlight-color);\\n}\\n.excalidraw .context-menu-item:hover.dangerous {\\n  background-color: #fa5252;\\n}\\n.excalidraw .context-menu-item:hover.dangerous .context-menu-item__label {\\n  color: var(--popup-bg-color);\\n}\\n.excalidraw .context-menu-item:focus {\\n  z-index: 1;\\n}\\n.excalidraw--mobile.excalidraw .context-menu-item {\\n  display: block;\\n}\\n.excalidraw--mobile.excalidraw .context-menu-item .context-menu-item__label {\\n  margin-inline-end: 0;\\n}\\n.excalidraw--mobile.excalidraw .context-menu-item .context-menu-item__shortcut {\\n  display: none;\\n}\\n\\n.excalidraw .context-menu-item-separator {\\n  border: none;\\n  border-top: 1px solid #adb5bd;\\n}", "",{"version":3,"sources":["webpack://./../../components/ContextMenu.scss","webpack://./../../css/variables.module.scss","webpack://./../../../node_modules/open-color/open-color.scss"],"names":[],"mappings":"AAAA,gBAAgB;ACiIhB;EACE,2CAAA;EACA,wBAAA;AD/HF;;AADE;EACE,kBAAA;EACA,kBAAA;EACA,yCAAA;EACA,UAAA;EACA,gBAAA;EACA,iBAAA;EACA,6BAAA;EACA,iBAAA;EACA,iDAAA;EACA,sCAAA;EACA,eAAA;AAIJ;AADE;EACE,8BAAA;AAGJ;AAAE;EACE,kBAAA;EACA,WAAA;EACA,iBAAA;EACA,SAAA;EACA,qCAAA;EACA,iBAAA;EACA,gBAAA;EACA,6BAAA;EACA,YAAA;EACA,mBAAA;EACA,oBAAA;EAEA,aAAA;EACA,gCAAA;EACA,mBAAA;AACJ;AACI;EACE,kBAAA;EACA,SAAA;EACA,kBAAA;EACA,YAAA;AACN;AAGM;EACE,cEmBG;AFpBX;AAKI;EACE,mBAAA;EACA,uBAAA;AAHN;AAKI;EACE,iBAAA;EACA,YAAA;EACA,oBAAA;EACA,iBAAA;AAHN;AAOE;EACE,4BAAA;EACA,+CAAA;AALJ;AAOI;EAIE,yBENK;AFFX;AAKM;EACE,4BAAA;AAHR;AASE;EACE,UAAA;AAPJ;AAWI;EACE,cAAA;AATN;AAWM;EACE,oBAAA;AATR;AAYM;EACE,aAAA;AAVR;;AAeE;EACE,YAAA;EACA,6BAAA;AAZJ","sourcesContent":["@import \\"../css/variables.module\\";\\n\\n.excalidraw {\\n  .context-menu {\\n    position: relative;\\n    border-radius: 4px;\\n    box-shadow: 0 3px 10px transparentize($oc-black, 0.8);\\n    padding: 0;\\n    list-style: none;\\n    user-select: none;\\n    margin: -0.25rem 0 0 0.125rem;\\n    padding: 0.5rem 0;\\n    background-color: var(--popup-secondary-bg-color);\\n    border: 1px solid var(--button-gray-3);\\n    cursor: default;\\n  }\\n\\n  .context-menu button {\\n    color: var(--popup-text-color);\\n  }\\n\\n  .context-menu-item {\\n    position: relative;\\n    width: 100%;\\n    min-width: 9.5rem;\\n    margin: 0;\\n    padding: 0.25rem 1rem 0.25rem 1.25rem;\\n    text-align: start;\\n    border-radius: 0;\\n    background-color: transparent;\\n    border: none;\\n    white-space: nowrap;\\n    font-family: inherit;\\n\\n    display: grid;\\n    grid-template-columns: 1fr 0.2fr;\\n    align-items: center;\\n\\n    &.checkmark::before {\\n      position: absolute;\\n      left: 6px;\\n      margin-bottom: 1px;\\n      content: \\"\\\\2713\\";\\n    }\\n\\n    &.dangerous {\\n      .context-menu-item__label {\\n        color: $oc-red-7;\\n      }\\n    }\\n\\n    .context-menu-item__label {\\n      justify-self: start;\\n      margin-inline-end: 20px;\\n    }\\n    .context-menu-item__shortcut {\\n      justify-self: end;\\n      opacity: 0.6;\\n      font-family: inherit;\\n      font-size: 0.7rem;\\n    }\\n  }\\n\\n  .context-menu-item:hover {\\n    color: var(--popup-bg-color);\\n    background-color: var(--select-highlight-color);\\n\\n    &.dangerous {\\n      .context-menu-item__label {\\n        color: var(--popup-bg-color);\\n      }\\n      background-color: $oc-red-6;\\n    }\\n  }\\n\\n  .context-menu-item:focus {\\n    z-index: 1;\\n  }\\n\\n  @include isMobile {\\n    .context-menu-item {\\n      display: block;\\n\\n      .context-menu-item__label {\\n        margin-inline-end: 0;\\n      }\\n\\n      .context-menu-item__shortcut {\\n        display: none;\\n      }\\n    }\\n  }\\n\\n  .context-menu-item-separator {\\n    border: none;\\n    border-top: 1px solid $oc-gray-5;\\n  }\\n}\\n","@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","//\\n//\\n//  \u{1D5D6} \u{1D5E2} \u{1D5DF} \u{1D5E2} \u{1D5E5}\\n//  v 1.9.1\\n//\\n//  \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\\n\\n\\n//  General\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-white:         #ffffff;\\n$oc-black:         #000000;\\n\\n\\n//  Gray\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-gray-list: (\\n  \\"0\\": #f8f9fa,\\n  \\"1\\": #f1f3f5,\\n  \\"2\\": #e9ecef,\\n  \\"3\\": #dee2e6,\\n  \\"4\\": #ced4da,\\n  \\"5\\": #adb5bd,\\n  \\"6\\": #868e96,\\n  \\"7\\": #495057,\\n  \\"8\\": #343a40,\\n  \\"9\\": #212529\\n);\\n\\n$oc-gray-0: map-get($oc-gray-list, \\"0\\");\\n$oc-gray-1: map-get($oc-gray-list, \\"1\\");\\n$oc-gray-2: map-get($oc-gray-list, \\"2\\");\\n$oc-gray-3: map-get($oc-gray-list, \\"3\\");\\n$oc-gray-4: map-get($oc-gray-list, \\"4\\");\\n$oc-gray-5: map-get($oc-gray-list, \\"5\\");\\n$oc-gray-6: map-get($oc-gray-list, \\"6\\");\\n$oc-gray-7: map-get($oc-gray-list, \\"7\\");\\n$oc-gray-8: map-get($oc-gray-list, \\"8\\");\\n$oc-gray-9: map-get($oc-gray-list, \\"9\\");\\n\\n\\n//  Red\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-red-list: (\\n  \\"0\\": #fff5f5,\\n  \\"1\\": #ffe3e3,\\n  \\"2\\": #ffc9c9,\\n  \\"3\\": #ffa8a8,\\n  \\"4\\": #ff8787,\\n  \\"5\\": #ff6b6b,\\n  \\"6\\": #fa5252,\\n  \\"7\\": #f03e3e,\\n  \\"8\\": #e03131,\\n  \\"9\\": #c92a2a\\n);\\n\\n$oc-red-0: map-get($oc-red-list, \\"0\\");\\n$oc-red-1: map-get($oc-red-list, \\"1\\");\\n$oc-red-2: map-get($oc-red-list, \\"2\\");\\n$oc-red-3: map-get($oc-red-list, \\"3\\");\\n$oc-red-4: map-get($oc-red-list, \\"4\\");\\n$oc-red-5: map-get($oc-red-list, \\"5\\");\\n$oc-red-6: map-get($oc-red-list, \\"6\\");\\n$oc-red-7: map-get($oc-red-list, \\"7\\");\\n$oc-red-8: map-get($oc-red-list, \\"8\\");\\n$oc-red-9: map-get($oc-red-list, \\"9\\");\\n\\n\\n//  Pink\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-pink-list: (\\n  \\"0\\": #fff0f6,\\n  \\"1\\": #ffdeeb,\\n  \\"2\\": #fcc2d7,\\n  \\"3\\": #faa2c1,\\n  \\"4\\": #f783ac,\\n  \\"5\\": #f06595,\\n  \\"6\\": #e64980,\\n  \\"7\\": #d6336c,\\n  \\"8\\": #c2255c,\\n  \\"9\\": #a61e4d\\n);\\n\\n$oc-pink-0: map-get($oc-pink-list, \\"0\\");\\n$oc-pink-1: map-get($oc-pink-list, \\"1\\");\\n$oc-pink-2: map-get($oc-pink-list, \\"2\\");\\n$oc-pink-3: map-get($oc-pink-list, \\"3\\");\\n$oc-pink-4: map-get($oc-pink-list, \\"4\\");\\n$oc-pink-5: map-get($oc-pink-list, \\"5\\");\\n$oc-pink-6: map-get($oc-pink-list, \\"6\\");\\n$oc-pink-7: map-get($oc-pink-list, \\"7\\");\\n$oc-pink-8: map-get($oc-pink-list, \\"8\\");\\n$oc-pink-9: map-get($oc-pink-list, \\"9\\");\\n\\n\\n//  Grape\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-grape-list: (\\n  \\"0\\": #f8f0fc,\\n  \\"1\\": #f3d9fa,\\n  \\"2\\": #eebefa,\\n  \\"3\\": #e599f7,\\n  \\"4\\": #da77f2,\\n  \\"5\\": #cc5de8,\\n  \\"6\\": #be4bdb,\\n  \\"7\\": #ae3ec9,\\n  \\"8\\": #9c36b5,\\n  \\"9\\": #862e9c\\n);\\n\\n$oc-grape-0: map-get($oc-grape-list, \\"0\\");\\n$oc-grape-1: map-get($oc-grape-list, \\"1\\");\\n$oc-grape-2: map-get($oc-grape-list, \\"2\\");\\n$oc-grape-3: map-get($oc-grape-list, \\"3\\");\\n$oc-grape-4: map-get($oc-grape-list, \\"4\\");\\n$oc-grape-5: map-get($oc-grape-list, \\"5\\");\\n$oc-grape-6: map-get($oc-grape-list, \\"6\\");\\n$oc-grape-7: map-get($oc-grape-list, \\"7\\");\\n$oc-grape-8: map-get($oc-grape-list, \\"8\\");\\n$oc-grape-9: map-get($oc-grape-list, \\"9\\");\\n\\n\\n//  Violet\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-violet-list: (\\n  \\"0\\": #f3f0ff,\\n  \\"1\\": #e5dbff,\\n  \\"2\\": #d0bfff,\\n  \\"3\\": #b197fc,\\n  \\"4\\": #9775fa,\\n  \\"5\\": #845ef7,\\n  \\"6\\": #7950f2,\\n  \\"7\\": #7048e8,\\n  \\"8\\": #6741d9,\\n  \\"9\\": #5f3dc4\\n);\\n\\n$oc-violet-0: map-get($oc-violet-list, \\"0\\");\\n$oc-violet-1: map-get($oc-violet-list, \\"1\\");\\n$oc-violet-2: map-get($oc-violet-list, \\"2\\");\\n$oc-violet-3: map-get($oc-violet-list, \\"3\\");\\n$oc-violet-4: map-get($oc-violet-list, \\"4\\");\\n$oc-violet-5: map-get($oc-violet-list, \\"5\\");\\n$oc-violet-6: map-get($oc-violet-list, \\"6\\");\\n$oc-violet-7: map-get($oc-violet-list, \\"7\\");\\n$oc-violet-8: map-get($oc-violet-list, \\"8\\");\\n$oc-violet-9: map-get($oc-violet-list, \\"9\\");\\n\\n\\n//  Indigo\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-indigo-list: (\\n  \\"0\\": #edf2ff,\\n  \\"1\\": #dbe4ff,\\n  \\"2\\": #bac8ff,\\n  \\"3\\": #91a7ff,\\n  \\"4\\": #748ffc,\\n  \\"5\\": #5c7cfa,\\n  \\"6\\": #4c6ef5,\\n  \\"7\\": #4263eb,\\n  \\"8\\": #3b5bdb,\\n  \\"9\\": #364fc7\\n);\\n\\n$oc-indigo-0: map-get($oc-indigo-list, \\"0\\");\\n$oc-indigo-1: map-get($oc-indigo-list, \\"1\\");\\n$oc-indigo-2: map-get($oc-indigo-list, \\"2\\");\\n$oc-indigo-3: map-get($oc-indigo-list, \\"3\\");\\n$oc-indigo-4: map-get($oc-indigo-list, \\"4\\");\\n$oc-indigo-5: map-get($oc-indigo-list, \\"5\\");\\n$oc-indigo-6: map-get($oc-indigo-list, \\"6\\");\\n$oc-indigo-7: map-get($oc-indigo-list, \\"7\\");\\n$oc-indigo-8: map-get($oc-indigo-list, \\"8\\");\\n$oc-indigo-9: map-get($oc-indigo-list, \\"9\\");\\n\\n\\n//  Blue\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-blue-list: (\\n  \\"0\\": #e7f5ff,\\n  \\"1\\": #d0ebff,\\n  \\"2\\": #a5d8ff,\\n  \\"3\\": #74c0fc,\\n  \\"4\\": #4dabf7,\\n  \\"5\\": #339af0,\\n  \\"6\\": #228be6,\\n  \\"7\\": #1c7ed6,\\n  \\"8\\": #1971c2,\\n  \\"9\\": #1864ab\\n);\\n\\n$oc-blue-0: map-get($oc-blue-list, \\"0\\");\\n$oc-blue-1: map-get($oc-blue-list, \\"1\\");\\n$oc-blue-2: map-get($oc-blue-list, \\"2\\");\\n$oc-blue-3: map-get($oc-blue-list, \\"3\\");\\n$oc-blue-4: map-get($oc-blue-list, \\"4\\");\\n$oc-blue-5: map-get($oc-blue-list, \\"5\\");\\n$oc-blue-6: map-get($oc-blue-list, \\"6\\");\\n$oc-blue-7: map-get($oc-blue-list, \\"7\\");\\n$oc-blue-8: map-get($oc-blue-list, \\"8\\");\\n$oc-blue-9: map-get($oc-blue-list, \\"9\\");\\n\\n\\n//  Cyan\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-cyan-list: (\\n  \\"0\\": #e3fafc,\\n  \\"1\\": #c5f6fa,\\n  \\"2\\": #99e9f2,\\n  \\"3\\": #66d9e8,\\n  \\"4\\": #3bc9db,\\n  \\"5\\": #22b8cf,\\n  \\"6\\": #15aabf,\\n  \\"7\\": #1098ad,\\n  \\"8\\": #0c8599,\\n  \\"9\\": #0b7285\\n);\\n\\n$oc-cyan-0: map-get($oc-cyan-list, \\"0\\");\\n$oc-cyan-1: map-get($oc-cyan-list, \\"1\\");\\n$oc-cyan-2: map-get($oc-cyan-list, \\"2\\");\\n$oc-cyan-3: map-get($oc-cyan-list, \\"3\\");\\n$oc-cyan-4: map-get($oc-cyan-list, \\"4\\");\\n$oc-cyan-5: map-get($oc-cyan-list, \\"5\\");\\n$oc-cyan-6: map-get($oc-cyan-list, \\"6\\");\\n$oc-cyan-7: map-get($oc-cyan-list, \\"7\\");\\n$oc-cyan-8: map-get($oc-cyan-list, \\"8\\");\\n$oc-cyan-9: map-get($oc-cyan-list, \\"9\\");\\n\\n\\n//  Teal\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-teal-list: (\\n  \\"0\\": #e6fcf5,\\n  \\"1\\": #c3fae8,\\n  \\"2\\": #96f2d7,\\n  \\"3\\": #63e6be,\\n  \\"4\\": #38d9a9,\\n  \\"5\\": #20c997,\\n  \\"6\\": #12b886,\\n  \\"7\\": #0ca678,\\n  \\"8\\": #099268,\\n  \\"9\\": #087f5b\\n);\\n\\n$oc-teal-0: map-get($oc-teal-list, \\"0\\");\\n$oc-teal-1: map-get($oc-teal-list, \\"1\\");\\n$oc-teal-2: map-get($oc-teal-list, \\"2\\");\\n$oc-teal-3: map-get($oc-teal-list, \\"3\\");\\n$oc-teal-4: map-get($oc-teal-list, \\"4\\");\\n$oc-teal-5: map-get($oc-teal-list, \\"5\\");\\n$oc-teal-6: map-get($oc-teal-list, \\"6\\");\\n$oc-teal-7: map-get($oc-teal-list, \\"7\\");\\n$oc-teal-8: map-get($oc-teal-list, \\"8\\");\\n$oc-teal-9: map-get($oc-teal-list, \\"9\\");\\n\\n\\n//  Green\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-green-list: (\\n  \\"0\\": #ebfbee,\\n  \\"1\\": #d3f9d8,\\n  \\"2\\": #b2f2bb,\\n  \\"3\\": #8ce99a,\\n  \\"4\\": #69db7c,\\n  \\"5\\": #51cf66,\\n  \\"6\\": #40c057,\\n  \\"7\\": #37b24d,\\n  \\"8\\": #2f9e44,\\n  \\"9\\": #2b8a3e\\n);\\n\\n$oc-green-0: map-get($oc-green-list, \\"0\\");\\n$oc-green-1: map-get($oc-green-list, \\"1\\");\\n$oc-green-2: map-get($oc-green-list, \\"2\\");\\n$oc-green-3: map-get($oc-green-list, \\"3\\");\\n$oc-green-4: map-get($oc-green-list, \\"4\\");\\n$oc-green-5: map-get($oc-green-list, \\"5\\");\\n$oc-green-6: map-get($oc-green-list, \\"6\\");\\n$oc-green-7: map-get($oc-green-list, \\"7\\");\\n$oc-green-8: map-get($oc-green-list, \\"8\\");\\n$oc-green-9: map-get($oc-green-list, \\"9\\");\\n\\n\\n//  Lime\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-lime-list: (\\n  \\"0\\": #f4fce3,\\n  \\"1\\": #e9fac8,\\n  \\"2\\": #d8f5a2,\\n  \\"3\\": #c0eb75,\\n  \\"4\\": #a9e34b,\\n  \\"5\\": #94d82d,\\n  \\"6\\": #82c91e,\\n  \\"7\\": #74b816,\\n  \\"8\\": #66a80f,\\n  \\"9\\": #5c940d\\n);\\n\\n$oc-lime-0: map-get($oc-lime-list, \\"0\\");\\n$oc-lime-1: map-get($oc-lime-list, \\"1\\");\\n$oc-lime-2: map-get($oc-lime-list, \\"2\\");\\n$oc-lime-3: map-get($oc-lime-list, \\"3\\");\\n$oc-lime-4: map-get($oc-lime-list, \\"4\\");\\n$oc-lime-5: map-get($oc-lime-list, \\"5\\");\\n$oc-lime-6: map-get($oc-lime-list, \\"6\\");\\n$oc-lime-7: map-get($oc-lime-list, \\"7\\");\\n$oc-lime-8: map-get($oc-lime-list, \\"8\\");\\n$oc-lime-9: map-get($oc-lime-list, \\"9\\");\\n\\n\\n//  Yellow\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-yellow-list: (\\n  \\"0\\": #fff9db,\\n  \\"1\\": #fff3bf,\\n  \\"2\\": #ffec99,\\n  \\"3\\": #ffe066,\\n  \\"4\\": #ffd43b,\\n  \\"5\\": #fcc419,\\n  \\"6\\": #fab005,\\n  \\"7\\": #f59f00,\\n  \\"8\\": #f08c00,\\n  \\"9\\": #e67700\\n);\\n\\n$oc-yellow-0: map-get($oc-yellow-list, \\"0\\");\\n$oc-yellow-1: map-get($oc-yellow-list, \\"1\\");\\n$oc-yellow-2: map-get($oc-yellow-list, \\"2\\");\\n$oc-yellow-3: map-get($oc-yellow-list, \\"3\\");\\n$oc-yellow-4: map-get($oc-yellow-list, \\"4\\");\\n$oc-yellow-5: map-get($oc-yellow-list, \\"5\\");\\n$oc-yellow-6: map-get($oc-yellow-list, \\"6\\");\\n$oc-yellow-7: map-get($oc-yellow-list, \\"7\\");\\n$oc-yellow-8: map-get($oc-yellow-list, \\"8\\");\\n$oc-yellow-9: map-get($oc-yellow-list, \\"9\\");\\n\\n\\n//  Orange\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-orange-list: (\\n  \\"0\\": #fff4e6,\\n  \\"1\\": #ffe8cc,\\n  \\"2\\": #ffd8a8,\\n  \\"3\\": #ffc078,\\n  \\"4\\": #ffa94d,\\n  \\"5\\": #ff922b,\\n  \\"6\\": #fd7e14,\\n  \\"7\\": #f76707,\\n  \\"8\\": #e8590c,\\n  \\"9\\": #d9480f\\n);\\n\\n$oc-orange-0: map-get($oc-orange-list, \\"0\\");\\n$oc-orange-1: map-get($oc-orange-list, \\"1\\");\\n$oc-orange-2: map-get($oc-orange-list, \\"2\\");\\n$oc-orange-3: map-get($oc-orange-list, \\"3\\");\\n$oc-orange-4: map-get($oc-orange-list, \\"4\\");\\n$oc-orange-5: map-get($oc-orange-list, \\"5\\");\\n$oc-orange-6: map-get($oc-orange-list, \\"6\\");\\n$oc-orange-7: map-get($oc-orange-list, \\"7\\");\\n$oc-orange-8: map-get($oc-orange-list, \\"8\\");\\n$oc-orange-9: map-get($oc-orange-list, \\"9\\");\\n\\n\\n//  Color list\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-color-spectrum:   9;\\n\\n$oc-color-list: (\\n  $oc-gray-list:      \\"gray\\",\\n  $oc-red-list:      \\"red\\",\\n  $oc-pink-list:      \\"pink\\",\\n  $oc-grape-list:      \\"grape\\",\\n  $oc-violet-list:      \\"violet\\",\\n  $oc-indigo-list:      \\"indigo\\",\\n  $oc-blue-list:      \\"blue\\",\\n  $oc-cyan-list:      \\"cyan\\",\\n  $oc-teal-list:      \\"teal\\",\\n  $oc-green-list:      \\"green\\",\\n  $oc-lime-list:      \\"lime\\",\\n  $oc-yellow-list:      \\"yellow\\",\\n  $oc-orange-list:      \\"orange\\"\\n);\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 34144 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ContextMenu.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Dialog.scss": (
              /*!***************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Dialog.scss ***!
                \***************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .Dialog {\\n  user-select: text;\\n  cursor: auto;\\n}\\n.excalidraw .Dialog__title {\\n  margin: 0;\\n  text-align: left;\\n  font-size: 1.25rem;\\n  border-bottom: 1px solid var(--dialog-border-color);\\n  padding: 0 0 0.75rem;\\n  margin-bottom: 1.5rem;\\n}\\n.excalidraw .Dialog__close {\\n  color: var(--color-gray-40);\\n  margin: 0;\\n  position: absolute;\\n  top: 0.75rem;\\n  right: 0.5rem;\\n  border: 0;\\n  background-color: transparent;\\n  line-height: 0;\\n  cursor: pointer;\\n}\\n.excalidraw .Dialog__close:hover {\\n  color: var(--color-gray-60);\\n}\\n.excalidraw .Dialog__close:active {\\n  color: var(--color-gray-40);\\n}\\n.excalidraw .Dialog__close svg {\\n  width: 1.5rem;\\n  height: 1.5rem;\\n}\\n.excalidraw .Dialog--fullscreen .Dialog__close {\\n  top: 1.25rem;\\n  right: 1.25rem;\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/Dialog.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AAAE;EACE,iBAAA;EACA,YAAA;AAGJ;AAAE;EACE,SAAA;EACA,gBAAA;EACA,kBAAA;EACA,mDAAA;EACA,oBAAA;EACA,qBAAA;AAEJ;AACE;EACE,2BAAA;EACA,SAAA;EACA,kBAAA;EACA,YAAA;EACA,aAAA;EACA,SAAA;EACA,6BAAA;EACA,cAAA;EACA,eAAA;AACJ;AACI;EACE,2BAAA;AACN;AACI;EACE,2BAAA;AACN;AAEI;EACE,aAAA;EACA,cAAA;AAAN;AAKI;EACE,YAAA;EACA,cAAA;AAHN","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../css/variables.module\\";\\n\\n.excalidraw {\\n  .Dialog {\\n    user-select: text;\\n    cursor: auto;\\n  }\\n\\n  .Dialog__title {\\n    margin: 0;\\n    text-align: left;\\n    font-size: 1.25rem;\\n    border-bottom: 1px solid var(--dialog-border-color);\\n    padding: 0 0 0.75rem;\\n    margin-bottom: 1.5rem;\\n  }\\n\\n  .Dialog__close {\\n    color: var(--color-gray-40);\\n    margin: 0;\\n    position: absolute;\\n    top: 0.75rem;\\n    right: 0.5rem;\\n    border: 0;\\n    background-color: transparent;\\n    line-height: 0;\\n    cursor: pointer;\\n\\n    &:hover {\\n      color: var(--color-gray-60);\\n    }\\n    &:active {\\n      color: var(--color-gray-40);\\n    }\\n\\n    svg {\\n      width: 1.5rem;\\n      height: 1.5rem;\\n    }\\n  }\\n\\n  .Dialog--fullscreen {\\n    .Dialog__close {\\n      top: 1.25rem;\\n      right: 1.25rem;\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 10620 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Dialog.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/DialogActionButton.scss": (
              /*!***************************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/DialogActionButton.scss ***!
                \***************************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ".excalidraw .Dialog__action-button {\\n  position: relative;\\n  display: flex;\\n  column-gap: 0.5rem;\\n  align-items: center;\\n  padding: 0.5rem 1.5rem;\\n  border: 1px solid var(--default-border-color);\\n  background-color: transparent;\\n  height: 3rem;\\n  border-radius: var(--border-radius-lg);\\n  letter-spacing: 0.4px;\\n  color: inherit;\\n  font-family: inherit;\\n  font-size: 0.875rem;\\n  font-weight: 600;\\n  user-select: none;\\n}\\n.excalidraw .Dialog__action-button svg {\\n  display: block;\\n  width: 1rem;\\n  height: 1rem;\\n}\\n.excalidraw .Dialog__action-button--danger {\\n  background-color: var(--color-danger);\\n  border-color: var(--color-danger);\\n  color: #fff;\\n}\\n.excalidraw .Dialog__action-button--primary {\\n  background-color: var(--color-primary);\\n  border-color: var(--color-primary);\\n  color: #fff;\\n}\\n.excalidraw.theme--dark .Dialog__action-button--danger {\\n  color: var(--color-gray-100);\\n}\\n.excalidraw.theme--dark .Dialog__action-button--primary {\\n  color: var(--color-gray-100);\\n}", "",{"version":3,"sources":["webpack://./../../components/DialogActionButton.scss"],"names":[],"mappings":"AACE;EACE,kBAAA;EACA,aAAA;EACA,kBAAA;EACA,mBAAA;EACA,sBAAA;EACA,6CAAA;EACA,6BAAA;EACA,YAAA;EACA,sCAAA;EACA,qBAAA;EACA,cAAA;EACA,oBAAA;EACA,mBAAA;EACA,gBAAA;EACA,iBAAA;AAAJ;AAEI;EACE,cAAA;EACA,WAAA;EACA,YAAA;AAAN;AAGI;EACE,qCAAA;EACA,iCAAA;EACA,WAAA;AADN;AAII;EACE,sCAAA;EACA,kCAAA;EACA,WAAA;AAFN;AAOI;EACE,4BAAA;AALN;AAQI;EACE,4BAAA;AANN","sourcesContent":[".excalidraw {\\n  .Dialog__action-button {\\n    position: relative;\\n    display: flex;\\n    column-gap: 0.5rem;\\n    align-items: center;\\n    padding: 0.5rem 1.5rem;\\n    border: 1px solid var(--default-border-color);\\n    background-color: transparent;\\n    height: 3rem;\\n    border-radius: var(--border-radius-lg);\\n    letter-spacing: 0.4px;\\n    color: inherit;\\n    font-family: inherit;\\n    font-size: 0.875rem;\\n    font-weight: 600;\\n    user-select: none;\\n\\n    svg {\\n      display: block;\\n      width: 1rem;\\n      height: 1rem;\\n    }\\n\\n    &--danger {\\n      background-color: var(--color-danger);\\n      border-color: var(--color-danger);\\n      color: #fff;\\n    }\\n\\n    &--primary {\\n      background-color: var(--color-primary);\\n      border-color: var(--color-primary);\\n      color: #fff;\\n    }\\n  }\\n\\n  &.theme--dark {\\n    .Dialog__action-button--danger {\\n      color: var(--color-gray-100);\\n    }\\n\\n    .Dialog__action-button--primary {\\n      color: var(--color-gray-100);\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5696 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/DialogActionButton.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ExcalidrawLogo.scss": (
              /*!***********************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ExcalidrawLogo.scss ***!
                \***********************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ".excalidraw .ExcalidrawLogo {\\n  --logo-icon--xs: 2rem;\\n  --logo-text--xs: 1.5rem;\\n  --logo-icon--small: 2.5rem;\\n  --logo-text--small: 1.75rem;\\n  --logo-icon--normal: 3rem;\\n  --logo-text--normal: 2.2rem;\\n  --logo-icon--large: 90px;\\n  --logo-text--large: 65px;\\n  display: flex;\\n  align-items: center;\\n}\\n.excalidraw .ExcalidrawLogo svg {\\n  flex: 0 0 auto;\\n}\\n.excalidraw .ExcalidrawLogo .ExcalidrawLogo-icon {\\n  width: auto;\\n  color: var(--color-logo-icon);\\n}\\n.excalidraw .ExcalidrawLogo .ExcalidrawLogo-text {\\n  margin-left: 0.75rem;\\n  width: auto;\\n  color: var(--color-logo-text);\\n}\\n.excalidraw .ExcalidrawLogo.is-xs .ExcalidrawLogo-icon {\\n  height: var(--logo-icon--xs);\\n}\\n.excalidraw .ExcalidrawLogo.is-xs .ExcalidrawLogo-text {\\n  height: var(--logo-text--xs);\\n}\\n.excalidraw .ExcalidrawLogo.is-small .ExcalidrawLogo-icon {\\n  height: var(--logo-icon--small);\\n}\\n.excalidraw .ExcalidrawLogo.is-small .ExcalidrawLogo-text {\\n  height: var(--logo-text--small);\\n}\\n.excalidraw .ExcalidrawLogo.is-normal .ExcalidrawLogo-icon {\\n  height: var(--logo-icon--normal);\\n}\\n.excalidraw .ExcalidrawLogo.is-normal .ExcalidrawLogo-text {\\n  height: var(--logo-text--normal);\\n}\\n.excalidraw .ExcalidrawLogo.is-large .ExcalidrawLogo-icon {\\n  height: var(--logo-icon--large);\\n}\\n.excalidraw .ExcalidrawLogo.is-large .ExcalidrawLogo-text {\\n  height: var(--logo-text--large);\\n}", "",{"version":3,"sources":["webpack://./../../components/ExcalidrawLogo.scss"],"names":[],"mappings":"AACE;EACE,qBAAA;EACA,uBAAA;EAEA,0BAAA;EACA,2BAAA;EAEA,yBAAA;EACA,2BAAA;EAEA,wBAAA;EACA,wBAAA;EAEA,aAAA;EACA,mBAAA;AAJJ;AAMI;EACE,cAAA;AAJN;AAOI;EACE,WAAA;EACA,6BAAA;AALN;AAQI;EACE,oBAAA;EACA,WAAA;EACA,6BAAA;AANN;AAUM;EACE,4BAAA;AARR;AAWM;EACE,4BAAA;AATR;AAcM;EACE,+BAAA;AAZR;AAeM;EACE,+BAAA;AAbR;AAkBM;EACE,gCAAA;AAhBR;AAmBM;EACE,gCAAA;AAjBR;AAsBM;EACE,+BAAA;AApBR;AAuBM;EACE,+BAAA;AArBR","sourcesContent":[".excalidraw {\\n  .ExcalidrawLogo {\\n    --logo-icon--xs: 2rem;\\n    --logo-text--xs: 1.5rem;\\n\\n    --logo-icon--small: 2.5rem;\\n    --logo-text--small: 1.75rem;\\n\\n    --logo-icon--normal: 3rem;\\n    --logo-text--normal: 2.2rem;\\n\\n    --logo-icon--large: 90px;\\n    --logo-text--large: 65px;\\n\\n    display: flex;\\n    align-items: center;\\n\\n    svg {\\n      flex: 0 0 auto;\\n    }\\n\\n    .ExcalidrawLogo-icon {\\n      width: auto;\\n      color: var(--color-logo-icon);\\n    }\\n\\n    .ExcalidrawLogo-text {\\n      margin-left: 0.75rem;\\n      width: auto;\\n      color: var(--color-logo-text);\\n    }\\n\\n    &.is-xs {\\n      .ExcalidrawLogo-icon {\\n        height: var(--logo-icon--xs);\\n      }\\n\\n      .ExcalidrawLogo-text {\\n        height: var(--logo-text--xs);\\n      }\\n    }\\n\\n    &.is-small {\\n      .ExcalidrawLogo-icon {\\n        height: var(--logo-icon--small);\\n      }\\n\\n      .ExcalidrawLogo-text {\\n        height: var(--logo-text--small);\\n      }\\n    }\\n\\n    &.is-normal {\\n      .ExcalidrawLogo-icon {\\n        height: var(--logo-icon--normal);\\n      }\\n\\n      .ExcalidrawLogo-text {\\n        height: var(--logo-text--normal);\\n      }\\n    }\\n\\n    &.is-large {\\n      .ExcalidrawLogo-icon {\\n        height: var(--logo-icon--large);\\n      }\\n\\n      .ExcalidrawLogo-text {\\n        height: var(--logo-text--large);\\n      }\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 7032 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ExcalidrawLogo.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ExportDialog.scss": (
              /*!*********************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ExportDialog.scss ***!
                \*********************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/getUrl.js */ "./node_modules/css-loader/dist/runtime/getUrl.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__);\n// Imports\n\n\n\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(/* asset import */ __webpack_require__(/*! data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMUlEQVQ4T2NkYGAQYcAP3uCTZhw1gGGYhAGBZIA/nYDCgBDAm9BGDWAAJyRCgLaBCAAgXwixzAS0pgAAAABJRU5ErkJggg== */ "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMUlEQVQ4T2NkYGAQYcAP3uCTZhw1gGGYhAGBZIA/nYDCgBDAm9BGDWAAJyRCgLaBCAAgXwixzAS0pgAAAABJRU5ErkJggg=="), __webpack_require__.b);\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .ExportDialog__preview {\\n  --preview-padding: calc(var(--space-factor) * 4);\\n  background: url(" + ___CSS_LOADER_URL_REPLACEMENT_0___ + ") left center;\\n  text-align: center;\\n  padding: var(--preview-padding);\\n  margin-bottom: calc(var(--space-factor) * 3);\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n}\\n.excalidraw .ExportDialog__preview canvas {\\n  max-width: calc(100% - var(--preview-padding) * 2);\\n  max-height: 25rem;\\n}\\n.excalidraw.theme--dark .ExportDialog__preview canvas {\\n  filter: none;\\n}\\n.excalidraw .ExportDialog__actions {\\n  width: 100%;\\n  display: flex;\\n  grid-gap: calc(var(--space-factor) * 2);\\n  align-items: top;\\n  justify-content: space-between;\\n}\\n.excalidraw--mobile.excalidraw .ExportDialog {\\n  display: flex;\\n  flex-direction: column;\\n}\\n.excalidraw--mobile.excalidraw .ExportDialog__actions {\\n  flex-direction: column;\\n  align-items: center;\\n}\\n.excalidraw--mobile.excalidraw .ExportDialog__actions > * {\\n  margin-bottom: calc(var(--space-factor) * 3);\\n}\\n.excalidraw--mobile.excalidraw .ExportDialog__preview canvas {\\n  max-height: 30vh;\\n}\\n.excalidraw--mobile.excalidraw .ExportDialog__dialog,\\n.excalidraw--mobile.excalidraw .ExportDialog__dialog .Island {\\n  height: 100%;\\n  box-sizing: border-box;\\n}\\n.excalidraw--mobile.excalidraw .ExportDialog__dialog .Island {\\n  overflow-y: auto;\\n}\\n\\n.excalidraw .ExportDialog--json .ExportDialog-cards {\\n  display: grid;\\n  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\\n  justify-items: center;\\n  row-gap: 2em;\\n}\\n@media (max-width: 460px) {\\n  .excalidraw .ExportDialog--json .ExportDialog-cards {\\n    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));\\n  }\\n  .excalidraw .ExportDialog--json .ExportDialog-cards .Card-details {\\n    min-height: 40px;\\n  }\\n}\\n.excalidraw .ExportDialog--json .ExportDialog-cards .ProjectName {\\n  width: -moz-fit-content;\\n  width: fit-content;\\n  margin: 1em auto;\\n  align-items: flex-start;\\n  flex-direction: column;\\n}\\n.excalidraw .ExportDialog--json .ExportDialog-cards .ProjectName .TextInput {\\n  width: auto;\\n}\\n.excalidraw .ExportDialog--json .ExportDialog-cards .ProjectName-label {\\n  margin: 0.625em 0;\\n  font-weight: bold;\\n}\\n.excalidraw button.ExportDialog-imageExportButton {\\n  border: 0;\\n  width: 5rem;\\n  height: 5rem;\\n  margin: 0 0.2em;\\n  padding: 0;\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  border-radius: 1rem;\\n  background-color: var(--button-color);\\n  box-shadow: 0 3px 5px -1px rgba(0, 0, 0, 0.28), 0 6px 10px 0 rgba(0, 0, 0, 0.14);\\n  font-family: Cascadia;\\n  font-size: 1.8em;\\n  color: #ffffff;\\n}\\n.excalidraw button.ExportDialog-imageExportButton:hover {\\n  background-color: var(--button-color-darker);\\n}\\n.excalidraw button.ExportDialog-imageExportButton:active {\\n  background-color: var(--button-color-darkest);\\n  box-shadow: none;\\n}\\n.excalidraw button.ExportDialog-imageExportButton svg {\\n  width: 0.9em;\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/ExportDialog.scss","webpack://./../../../node_modules/open-color/open-color.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AAAE;EACE,gDAAA;EAEA,+DAAA;EAEA,kBAAA;EACA,+BAAA;EACA,4CAAA;EAEA,aAAA;EACA,uBAAA;EACA,mBAAA;AAAJ;AAGE;EACE,kDAAA;EACA,iBAAA;AADJ;AAIE;EACE,YAAA;AAFJ;AAKE;EACE,WAAA;EACA,aAAA;EACA,uCAAA;EACA,gBAAA;EACA,8BAAA;AAHJ;AAOI;EACE,aAAA;EACA,sBAAA;AALN;AAQI;EACE,sBAAA;EACA,mBAAA;AANN;AASI;EACE,4CAAA;AAPN;AAUI;EACE,gBAAA;AARN;AAWI;;EAEE,YAAA;EACA,sBAAA;AATN;AAYI;EACE,gBAAA;AAVN;;AAeI;EACE,aAAA;EACA,2DAAA;EACA,qBAAA;EACA,YAAA;AAZN;AAcM;EANF;IAOI,2DAAA;EAXN;EAYM;IACE,gBAAA;EAVR;AACF;AAaM;EACE,uBAAA;EAAA,kBAAA;EACA,gBAAA;EACA,uBAAA;EACA,sBAAA;AAXR;AAaQ;EACE,WAAA;AAXV;AAeM;EACE,iBAAA;EACA,iBAAA;AAbR;AAkBE;EACE,SAAA;EAEA,WAAA;EACA,YAAA;EACA,eAAA;EACA,UAAA;EACA,aAAA;EACA,mBAAA;EACA,uBAAA;EAEA,mBAAA;EACA,qCAAA;EACA,gFAAA;EAGA,qBAAA;EACA,gBAAA;EACA,cCvGe;ADmFnB;AAsBI;EACE,4CAAA;AApBN;AAsBI;EACE,6CAAA;EACA,gBAAA;AApBN;AAuBI;EACE,YAAA;AArBN","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../css/variables.module\\";\\n\\n.excalidraw {\\n  .ExportDialog__preview {\\n    --preview-padding: calc(var(--space-factor) * 4);\\n\\n    background: url(\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMUlEQVQ4T2NkYGAQYcAP3uCTZhw1gGGYhAGBZIA/nYDCgBDAm9BGDWAAJyRCgLaBCAAgXwixzAS0pgAAAABJRU5ErkJggg==\\")\\n      left center;\\n    text-align: center;\\n    padding: var(--preview-padding);\\n    margin-bottom: calc(var(--space-factor) * 3);\\n\\n    display: flex;\\n    justify-content: center;\\n    align-items: center;\\n  }\\n\\n  .ExportDialog__preview canvas {\\n    max-width: calc(100% - var(--preview-padding) * 2);\\n    max-height: 25rem;\\n  }\\n\\n  &.theme--dark .ExportDialog__preview canvas {\\n    filter: none;\\n  }\\n\\n  .ExportDialog__actions {\\n    width: 100%;\\n    display: flex;\\n    grid-gap: calc(var(--space-factor) * 2);\\n    align-items: top;\\n    justify-content: space-between;\\n  }\\n\\n  @include isMobile {\\n    .ExportDialog {\\n      display: flex;\\n      flex-direction: column;\\n    }\\n\\n    .ExportDialog__actions {\\n      flex-direction: column;\\n      align-items: center;\\n    }\\n\\n    .ExportDialog__actions > * {\\n      margin-bottom: calc(var(--space-factor) * 3);\\n    }\\n\\n    .ExportDialog__preview canvas {\\n      max-height: 30vh;\\n    }\\n\\n    .ExportDialog__dialog,\\n    .ExportDialog__dialog .Island {\\n      height: 100%;\\n      box-sizing: border-box;\\n    }\\n\\n    .ExportDialog__dialog .Island {\\n      overflow-y: auto;\\n    }\\n  }\\n\\n  .ExportDialog--json {\\n    .ExportDialog-cards {\\n      display: grid;\\n      grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\\n      justify-items: center;\\n      row-gap: 2em;\\n\\n      @media (max-width: 460px) {\\n        grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));\\n        .Card-details {\\n          min-height: 40px;\\n        }\\n      }\\n\\n      .ProjectName {\\n        width: fit-content;\\n        margin: 1em auto;\\n        align-items: flex-start;\\n        flex-direction: column;\\n\\n        .TextInput {\\n          width: auto;\\n        }\\n      }\\n\\n      .ProjectName-label {\\n        margin: 0.625em 0;\\n        font-weight: bold;\\n      }\\n    }\\n  }\\n\\n  button.ExportDialog-imageExportButton {\\n    border: 0;\\n\\n    width: 5rem;\\n    height: 5rem;\\n    margin: 0 0.2em;\\n    padding: 0;\\n    display: flex;\\n    align-items: center;\\n    justify-content: center;\\n\\n    border-radius: 1rem;\\n    background-color: var(--button-color);\\n    box-shadow: 0 3px 5px -1px rgba(0, 0, 0, 0.28),\\n      0 6px 10px 0 rgba(0, 0, 0, 0.14);\\n\\n    font-family: Cascadia;\\n    font-size: 1.8em;\\n    color: $oc-white;\\n\\n    &:hover {\\n      background-color: var(--button-color-darker);\\n    }\\n    &:active {\\n      background-color: var(--button-color-darkest);\\n      box-shadow: none;\\n    }\\n\\n    svg {\\n      width: 0.9em;\\n    }\\n  }\\n}\\n","//\\n//\\n//  \u{1D5D6} \u{1D5E2} \u{1D5DF} \u{1D5E2} \u{1D5E5}\\n//  v 1.9.1\\n//\\n//  \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\\n\\n\\n//  General\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-white:         #ffffff;\\n$oc-black:         #000000;\\n\\n\\n//  Gray\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-gray-list: (\\n  \\"0\\": #f8f9fa,\\n  \\"1\\": #f1f3f5,\\n  \\"2\\": #e9ecef,\\n  \\"3\\": #dee2e6,\\n  \\"4\\": #ced4da,\\n  \\"5\\": #adb5bd,\\n  \\"6\\": #868e96,\\n  \\"7\\": #495057,\\n  \\"8\\": #343a40,\\n  \\"9\\": #212529\\n);\\n\\n$oc-gray-0: map-get($oc-gray-list, \\"0\\");\\n$oc-gray-1: map-get($oc-gray-list, \\"1\\");\\n$oc-gray-2: map-get($oc-gray-list, \\"2\\");\\n$oc-gray-3: map-get($oc-gray-list, \\"3\\");\\n$oc-gray-4: map-get($oc-gray-list, \\"4\\");\\n$oc-gray-5: map-get($oc-gray-list, \\"5\\");\\n$oc-gray-6: map-get($oc-gray-list, \\"6\\");\\n$oc-gray-7: map-get($oc-gray-list, \\"7\\");\\n$oc-gray-8: map-get($oc-gray-list, \\"8\\");\\n$oc-gray-9: map-get($oc-gray-list, \\"9\\");\\n\\n\\n//  Red\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-red-list: (\\n  \\"0\\": #fff5f5,\\n  \\"1\\": #ffe3e3,\\n  \\"2\\": #ffc9c9,\\n  \\"3\\": #ffa8a8,\\n  \\"4\\": #ff8787,\\n  \\"5\\": #ff6b6b,\\n  \\"6\\": #fa5252,\\n  \\"7\\": #f03e3e,\\n  \\"8\\": #e03131,\\n  \\"9\\": #c92a2a\\n);\\n\\n$oc-red-0: map-get($oc-red-list, \\"0\\");\\n$oc-red-1: map-get($oc-red-list, \\"1\\");\\n$oc-red-2: map-get($oc-red-list, \\"2\\");\\n$oc-red-3: map-get($oc-red-list, \\"3\\");\\n$oc-red-4: map-get($oc-red-list, \\"4\\");\\n$oc-red-5: map-get($oc-red-list, \\"5\\");\\n$oc-red-6: map-get($oc-red-list, \\"6\\");\\n$oc-red-7: map-get($oc-red-list, \\"7\\");\\n$oc-red-8: map-get($oc-red-list, \\"8\\");\\n$oc-red-9: map-get($oc-red-list, \\"9\\");\\n\\n\\n//  Pink\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-pink-list: (\\n  \\"0\\": #fff0f6,\\n  \\"1\\": #ffdeeb,\\n  \\"2\\": #fcc2d7,\\n  \\"3\\": #faa2c1,\\n  \\"4\\": #f783ac,\\n  \\"5\\": #f06595,\\n  \\"6\\": #e64980,\\n  \\"7\\": #d6336c,\\n  \\"8\\": #c2255c,\\n  \\"9\\": #a61e4d\\n);\\n\\n$oc-pink-0: map-get($oc-pink-list, \\"0\\");\\n$oc-pink-1: map-get($oc-pink-list, \\"1\\");\\n$oc-pink-2: map-get($oc-pink-list, \\"2\\");\\n$oc-pink-3: map-get($oc-pink-list, \\"3\\");\\n$oc-pink-4: map-get($oc-pink-list, \\"4\\");\\n$oc-pink-5: map-get($oc-pink-list, \\"5\\");\\n$oc-pink-6: map-get($oc-pink-list, \\"6\\");\\n$oc-pink-7: map-get($oc-pink-list, \\"7\\");\\n$oc-pink-8: map-get($oc-pink-list, \\"8\\");\\n$oc-pink-9: map-get($oc-pink-list, \\"9\\");\\n\\n\\n//  Grape\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-grape-list: (\\n  \\"0\\": #f8f0fc,\\n  \\"1\\": #f3d9fa,\\n  \\"2\\": #eebefa,\\n  \\"3\\": #e599f7,\\n  \\"4\\": #da77f2,\\n  \\"5\\": #cc5de8,\\n  \\"6\\": #be4bdb,\\n  \\"7\\": #ae3ec9,\\n  \\"8\\": #9c36b5,\\n  \\"9\\": #862e9c\\n);\\n\\n$oc-grape-0: map-get($oc-grape-list, \\"0\\");\\n$oc-grape-1: map-get($oc-grape-list, \\"1\\");\\n$oc-grape-2: map-get($oc-grape-list, \\"2\\");\\n$oc-grape-3: map-get($oc-grape-list, \\"3\\");\\n$oc-grape-4: map-get($oc-grape-list, \\"4\\");\\n$oc-grape-5: map-get($oc-grape-list, \\"5\\");\\n$oc-grape-6: map-get($oc-grape-list, \\"6\\");\\n$oc-grape-7: map-get($oc-grape-list, \\"7\\");\\n$oc-grape-8: map-get($oc-grape-list, \\"8\\");\\n$oc-grape-9: map-get($oc-grape-list, \\"9\\");\\n\\n\\n//  Violet\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-violet-list: (\\n  \\"0\\": #f3f0ff,\\n  \\"1\\": #e5dbff,\\n  \\"2\\": #d0bfff,\\n  \\"3\\": #b197fc,\\n  \\"4\\": #9775fa,\\n  \\"5\\": #845ef7,\\n  \\"6\\": #7950f2,\\n  \\"7\\": #7048e8,\\n  \\"8\\": #6741d9,\\n  \\"9\\": #5f3dc4\\n);\\n\\n$oc-violet-0: map-get($oc-violet-list, \\"0\\");\\n$oc-violet-1: map-get($oc-violet-list, \\"1\\");\\n$oc-violet-2: map-get($oc-violet-list, \\"2\\");\\n$oc-violet-3: map-get($oc-violet-list, \\"3\\");\\n$oc-violet-4: map-get($oc-violet-list, \\"4\\");\\n$oc-violet-5: map-get($oc-violet-list, \\"5\\");\\n$oc-violet-6: map-get($oc-violet-list, \\"6\\");\\n$oc-violet-7: map-get($oc-violet-list, \\"7\\");\\n$oc-violet-8: map-get($oc-violet-list, \\"8\\");\\n$oc-violet-9: map-get($oc-violet-list, \\"9\\");\\n\\n\\n//  Indigo\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-indigo-list: (\\n  \\"0\\": #edf2ff,\\n  \\"1\\": #dbe4ff,\\n  \\"2\\": #bac8ff,\\n  \\"3\\": #91a7ff,\\n  \\"4\\": #748ffc,\\n  \\"5\\": #5c7cfa,\\n  \\"6\\": #4c6ef5,\\n  \\"7\\": #4263eb,\\n  \\"8\\": #3b5bdb,\\n  \\"9\\": #364fc7\\n);\\n\\n$oc-indigo-0: map-get($oc-indigo-list, \\"0\\");\\n$oc-indigo-1: map-get($oc-indigo-list, \\"1\\");\\n$oc-indigo-2: map-get($oc-indigo-list, \\"2\\");\\n$oc-indigo-3: map-get($oc-indigo-list, \\"3\\");\\n$oc-indigo-4: map-get($oc-indigo-list, \\"4\\");\\n$oc-indigo-5: map-get($oc-indigo-list, \\"5\\");\\n$oc-indigo-6: map-get($oc-indigo-list, \\"6\\");\\n$oc-indigo-7: map-get($oc-indigo-list, \\"7\\");\\n$oc-indigo-8: map-get($oc-indigo-list, \\"8\\");\\n$oc-indigo-9: map-get($oc-indigo-list, \\"9\\");\\n\\n\\n//  Blue\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-blue-list: (\\n  \\"0\\": #e7f5ff,\\n  \\"1\\": #d0ebff,\\n  \\"2\\": #a5d8ff,\\n  \\"3\\": #74c0fc,\\n  \\"4\\": #4dabf7,\\n  \\"5\\": #339af0,\\n  \\"6\\": #228be6,\\n  \\"7\\": #1c7ed6,\\n  \\"8\\": #1971c2,\\n  \\"9\\": #1864ab\\n);\\n\\n$oc-blue-0: map-get($oc-blue-list, \\"0\\");\\n$oc-blue-1: map-get($oc-blue-list, \\"1\\");\\n$oc-blue-2: map-get($oc-blue-list, \\"2\\");\\n$oc-blue-3: map-get($oc-blue-list, \\"3\\");\\n$oc-blue-4: map-get($oc-blue-list, \\"4\\");\\n$oc-blue-5: map-get($oc-blue-list, \\"5\\");\\n$oc-blue-6: map-get($oc-blue-list, \\"6\\");\\n$oc-blue-7: map-get($oc-blue-list, \\"7\\");\\n$oc-blue-8: map-get($oc-blue-list, \\"8\\");\\n$oc-blue-9: map-get($oc-blue-list, \\"9\\");\\n\\n\\n//  Cyan\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-cyan-list: (\\n  \\"0\\": #e3fafc,\\n  \\"1\\": #c5f6fa,\\n  \\"2\\": #99e9f2,\\n  \\"3\\": #66d9e8,\\n  \\"4\\": #3bc9db,\\n  \\"5\\": #22b8cf,\\n  \\"6\\": #15aabf,\\n  \\"7\\": #1098ad,\\n  \\"8\\": #0c8599,\\n  \\"9\\": #0b7285\\n);\\n\\n$oc-cyan-0: map-get($oc-cyan-list, \\"0\\");\\n$oc-cyan-1: map-get($oc-cyan-list, \\"1\\");\\n$oc-cyan-2: map-get($oc-cyan-list, \\"2\\");\\n$oc-cyan-3: map-get($oc-cyan-list, \\"3\\");\\n$oc-cyan-4: map-get($oc-cyan-list, \\"4\\");\\n$oc-cyan-5: map-get($oc-cyan-list, \\"5\\");\\n$oc-cyan-6: map-get($oc-cyan-list, \\"6\\");\\n$oc-cyan-7: map-get($oc-cyan-list, \\"7\\");\\n$oc-cyan-8: map-get($oc-cyan-list, \\"8\\");\\n$oc-cyan-9: map-get($oc-cyan-list, \\"9\\");\\n\\n\\n//  Teal\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-teal-list: (\\n  \\"0\\": #e6fcf5,\\n  \\"1\\": #c3fae8,\\n  \\"2\\": #96f2d7,\\n  \\"3\\": #63e6be,\\n  \\"4\\": #38d9a9,\\n  \\"5\\": #20c997,\\n  \\"6\\": #12b886,\\n  \\"7\\": #0ca678,\\n  \\"8\\": #099268,\\n  \\"9\\": #087f5b\\n);\\n\\n$oc-teal-0: map-get($oc-teal-list, \\"0\\");\\n$oc-teal-1: map-get($oc-teal-list, \\"1\\");\\n$oc-teal-2: map-get($oc-teal-list, \\"2\\");\\n$oc-teal-3: map-get($oc-teal-list, \\"3\\");\\n$oc-teal-4: map-get($oc-teal-list, \\"4\\");\\n$oc-teal-5: map-get($oc-teal-list, \\"5\\");\\n$oc-teal-6: map-get($oc-teal-list, \\"6\\");\\n$oc-teal-7: map-get($oc-teal-list, \\"7\\");\\n$oc-teal-8: map-get($oc-teal-list, \\"8\\");\\n$oc-teal-9: map-get($oc-teal-list, \\"9\\");\\n\\n\\n//  Green\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-green-list: (\\n  \\"0\\": #ebfbee,\\n  \\"1\\": #d3f9d8,\\n  \\"2\\": #b2f2bb,\\n  \\"3\\": #8ce99a,\\n  \\"4\\": #69db7c,\\n  \\"5\\": #51cf66,\\n  \\"6\\": #40c057,\\n  \\"7\\": #37b24d,\\n  \\"8\\": #2f9e44,\\n  \\"9\\": #2b8a3e\\n);\\n\\n$oc-green-0: map-get($oc-green-list, \\"0\\");\\n$oc-green-1: map-get($oc-green-list, \\"1\\");\\n$oc-green-2: map-get($oc-green-list, \\"2\\");\\n$oc-green-3: map-get($oc-green-list, \\"3\\");\\n$oc-green-4: map-get($oc-green-list, \\"4\\");\\n$oc-green-5: map-get($oc-green-list, \\"5\\");\\n$oc-green-6: map-get($oc-green-list, \\"6\\");\\n$oc-green-7: map-get($oc-green-list, \\"7\\");\\n$oc-green-8: map-get($oc-green-list, \\"8\\");\\n$oc-green-9: map-get($oc-green-list, \\"9\\");\\n\\n\\n//  Lime\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-lime-list: (\\n  \\"0\\": #f4fce3,\\n  \\"1\\": #e9fac8,\\n  \\"2\\": #d8f5a2,\\n  \\"3\\": #c0eb75,\\n  \\"4\\": #a9e34b,\\n  \\"5\\": #94d82d,\\n  \\"6\\": #82c91e,\\n  \\"7\\": #74b816,\\n  \\"8\\": #66a80f,\\n  \\"9\\": #5c940d\\n);\\n\\n$oc-lime-0: map-get($oc-lime-list, \\"0\\");\\n$oc-lime-1: map-get($oc-lime-list, \\"1\\");\\n$oc-lime-2: map-get($oc-lime-list, \\"2\\");\\n$oc-lime-3: map-get($oc-lime-list, \\"3\\");\\n$oc-lime-4: map-get($oc-lime-list, \\"4\\");\\n$oc-lime-5: map-get($oc-lime-list, \\"5\\");\\n$oc-lime-6: map-get($oc-lime-list, \\"6\\");\\n$oc-lime-7: map-get($oc-lime-list, \\"7\\");\\n$oc-lime-8: map-get($oc-lime-list, \\"8\\");\\n$oc-lime-9: map-get($oc-lime-list, \\"9\\");\\n\\n\\n//  Yellow\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-yellow-list: (\\n  \\"0\\": #fff9db,\\n  \\"1\\": #fff3bf,\\n  \\"2\\": #ffec99,\\n  \\"3\\": #ffe066,\\n  \\"4\\": #ffd43b,\\n  \\"5\\": #fcc419,\\n  \\"6\\": #fab005,\\n  \\"7\\": #f59f00,\\n  \\"8\\": #f08c00,\\n  \\"9\\": #e67700\\n);\\n\\n$oc-yellow-0: map-get($oc-yellow-list, \\"0\\");\\n$oc-yellow-1: map-get($oc-yellow-list, \\"1\\");\\n$oc-yellow-2: map-get($oc-yellow-list, \\"2\\");\\n$oc-yellow-3: map-get($oc-yellow-list, \\"3\\");\\n$oc-yellow-4: map-get($oc-yellow-list, \\"4\\");\\n$oc-yellow-5: map-get($oc-yellow-list, \\"5\\");\\n$oc-yellow-6: map-get($oc-yellow-list, \\"6\\");\\n$oc-yellow-7: map-get($oc-yellow-list, \\"7\\");\\n$oc-yellow-8: map-get($oc-yellow-list, \\"8\\");\\n$oc-yellow-9: map-get($oc-yellow-list, \\"9\\");\\n\\n\\n//  Orange\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-orange-list: (\\n  \\"0\\": #fff4e6,\\n  \\"1\\": #ffe8cc,\\n  \\"2\\": #ffd8a8,\\n  \\"3\\": #ffc078,\\n  \\"4\\": #ffa94d,\\n  \\"5\\": #ff922b,\\n  \\"6\\": #fd7e14,\\n  \\"7\\": #f76707,\\n  \\"8\\": #e8590c,\\n  \\"9\\": #d9480f\\n);\\n\\n$oc-orange-0: map-get($oc-orange-list, \\"0\\");\\n$oc-orange-1: map-get($oc-orange-list, \\"1\\");\\n$oc-orange-2: map-get($oc-orange-list, \\"2\\");\\n$oc-orange-3: map-get($oc-orange-list, \\"3\\");\\n$oc-orange-4: map-get($oc-orange-list, \\"4\\");\\n$oc-orange-5: map-get($oc-orange-list, \\"5\\");\\n$oc-orange-6: map-get($oc-orange-list, \\"6\\");\\n$oc-orange-7: map-get($oc-orange-list, \\"7\\");\\n$oc-orange-8: map-get($oc-orange-list, \\"8\\");\\n$oc-orange-9: map-get($oc-orange-list, \\"9\\");\\n\\n\\n//  Color list\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-color-spectrum:   9;\\n\\n$oc-color-list: (\\n  $oc-gray-list:      \\"gray\\",\\n  $oc-red-list:      \\"red\\",\\n  $oc-pink-list:      \\"pink\\",\\n  $oc-grape-list:      \\"grape\\",\\n  $oc-violet-list:      \\"violet\\",\\n  $oc-indigo-list:      \\"indigo\\",\\n  $oc-blue-list:      \\"blue\\",\\n  $oc-cyan-list:      \\"cyan\\",\\n  $oc-teal-list:      \\"teal\\",\\n  $oc-green-list:      \\"green\\",\\n  $oc-lime-list:      \\"lime\\",\\n  $oc-yellow-list:      \\"yellow\\",\\n  $oc-orange-list:      \\"orange\\"\\n);\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 37920 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ExportDialog.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/EyeDropper.scss": (
              /*!*******************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/EyeDropper.scss ***!
                \*******************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ".excalidraw .excalidraw-eye-dropper-container,\\n.excalidraw .excalidraw-eye-dropper-backdrop {\\n  position: absolute;\\n  width: 100%;\\n  height: 100%;\\n  z-index: var(--zIndex-eyeDropperBackdrop);\\n  touch-action: none;\\n}\\n.excalidraw .excalidraw-eye-dropper-container {\\n  pointer-events: none;\\n}\\n.excalidraw .excalidraw-eye-dropper-backdrop {\\n  pointer-events: all;\\n}\\n.excalidraw .excalidraw-eye-dropper-preview {\\n  pointer-events: none;\\n  width: 3rem;\\n  height: 3rem;\\n  position: fixed;\\n  z-index: var(--zIndex-eyeDropperPreview);\\n  border-radius: 1rem;\\n  border: 1px solid var(--default-border-color);\\n  filter: var(--theme-filter);\\n}\\n.excalidraw .excalidraw-eye-dropper-trigger {\\n  width: 1.25rem;\\n  height: 1.25rem;\\n  cursor: pointer;\\n  padding: 4px;\\n  margin-right: -4px;\\n  margin-left: -2px;\\n  border-radius: 0.5rem;\\n  color: var(--icon-fill-color);\\n}\\n.excalidraw .excalidraw-eye-dropper-trigger:hover {\\n  background: var(--button-hover-bg);\\n}\\n.excalidraw .excalidraw-eye-dropper-trigger.selected {\\n  color: var(--color-primary);\\n  background: var(--color-primary-light);\\n}", "",{"version":3,"sources":["webpack://./../../components/EyeDropper.scss"],"names":[],"mappings":"AACE;;EAEE,kBAAA;EACA,WAAA;EACA,YAAA;EACA,yCAAA;EACA,kBAAA;AAAJ;AAGE;EACE,oBAAA;AADJ;AAIE;EACE,mBAAA;AAFJ;AAKE;EACE,oBAAA;EACA,WAAA;EACA,YAAA;EACA,eAAA;EACA,wCAAA;EACA,mBAAA;EACA,6CAAA;EACA,2BAAA;AAHJ;AAME;EACE,cAAA;EACA,eAAA;EACA,eAAA;EACA,YAAA;EACA,kBAAA;EACA,iBAAA;EACA,qBAAA;EACA,6BAAA;AAJJ;AAMI;EACE,kCAAA;AAJN;AAMI;EACE,2BAAA;EACA,sCAAA;AAJN","sourcesContent":[".excalidraw {\\n  .excalidraw-eye-dropper-container,\\n  .excalidraw-eye-dropper-backdrop {\\n    position: absolute;\\n    width: 100%;\\n    height: 100%;\\n    z-index: var(--zIndex-eyeDropperBackdrop);\\n    touch-action: none;\\n  }\\n\\n  .excalidraw-eye-dropper-container {\\n    pointer-events: none;\\n  }\\n\\n  .excalidraw-eye-dropper-backdrop {\\n    pointer-events: all;\\n  }\\n\\n  .excalidraw-eye-dropper-preview {\\n    pointer-events: none;\\n    width: 3rem;\\n    height: 3rem;\\n    position: fixed;\\n    z-index: var(--zIndex-eyeDropperPreview);\\n    border-radius: 1rem;\\n    border: 1px solid var(--default-border-color);\\n    filter: var(--theme-filter);\\n  }\\n\\n  .excalidraw-eye-dropper-trigger {\\n    width: 1.25rem;\\n    height: 1.25rem;\\n    cursor: pointer;\\n    padding: 4px;\\n    margin-right: -4px;\\n    margin-left: -2px;\\n    border-radius: 0.5rem;\\n    color: var(--icon-fill-color);\\n\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n    &.selected {\\n      color: var(--color-primary);\\n      background: var(--color-primary-light);\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5924 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/EyeDropper.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/FilledButton.scss": (
              /*!*********************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/FilledButton.scss ***!
                \*********************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .ExcButton {\\n  --text-color: transparent;\\n  --border-color: transparent;\\n  --back-color: transparent;\\n  color: var(--text-color);\\n  background-color: var(--back-color);\\n  border-color: var(--border-color);\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  flex-shrink: 0;\\n  flex-wrap: nowrap;\\n  border-radius: 0.5rem;\\n  border-width: 1px;\\n  border-style: solid;\\n  font-family: \\"Assistant\\";\\n  user-select: none;\\n  transition: all 150ms ease-out;\\n}\\n.excalidraw .ExcButton--color-primary.ExcButton--variant-filled {\\n  --text-color: var(--color-surface-lowest);\\n  --back-color: var(--color-primary);\\n}\\n.excalidraw .ExcButton--color-primary.ExcButton--variant-filled:hover {\\n  --back-color: var(--color-brand-hover);\\n}\\n.excalidraw .ExcButton--color-primary.ExcButton--variant-filled:active {\\n  --back-color: var(--color-brand-active);\\n}\\n.excalidraw .ExcButton--color-primary.ExcButton--variant-outlined, .excalidraw .ExcButton--color-primary.ExcButton--variant-icon {\\n  --text-color: var(--color-primary);\\n  --border-color: var(--color-border-outline);\\n  --back-color: transparent;\\n}\\n.excalidraw .ExcButton--color-primary.ExcButton--variant-outlined:hover, .excalidraw .ExcButton--color-primary.ExcButton--variant-icon:hover {\\n  --text-color: var(--color-brand-hover);\\n  --border-color: var(--color-brand-hover);\\n}\\n.excalidraw .ExcButton--color-primary.ExcButton--variant-outlined:active, .excalidraw .ExcButton--color-primary.ExcButton--variant-icon:active {\\n  --text-color: var(--color-brand-active);\\n  --border-color: var(--color-brand-active);\\n}\\n.excalidraw .ExcButton--color-danger.ExcButton--variant-filled {\\n  --text-color: var(--color-danger-text);\\n  --back-color: var(--color-danger-dark);\\n}\\n.excalidraw .ExcButton--color-danger.ExcButton--variant-filled:hover {\\n  --back-color: var(--color-danger-darker);\\n}\\n.excalidraw .ExcButton--color-danger.ExcButton--variant-filled:active {\\n  --back-color: var(--color-danger-darkest);\\n}\\n.excalidraw .ExcButton--color-danger.ExcButton--variant-outlined, .excalidraw .ExcButton--color-danger.ExcButton--variant-icon {\\n  --text-color: var(--color-danger);\\n  --border-color: var(--color-danger);\\n  --back-color: transparent;\\n}\\n.excalidraw .ExcButton--color-danger.ExcButton--variant-outlined:hover, .excalidraw .ExcButton--color-danger.ExcButton--variant-icon:hover {\\n  --text-color: var(--color-danger-darkest);\\n  --border-color: var(--color-danger-darkest);\\n}\\n.excalidraw .ExcButton--color-danger.ExcButton--variant-outlined:active, .excalidraw .ExcButton--color-danger.ExcButton--variant-icon:active {\\n  --text-color: var(--color-danger-darker);\\n  --border-color: var(--color-danger-darker);\\n}\\n.excalidraw .ExcButton--color-muted.ExcButton--variant-filled {\\n  --text-color: var(--island-bg-color);\\n  --back-color: var(--color-gray-50);\\n}\\n.excalidraw .ExcButton--color-muted.ExcButton--variant-filled:hover {\\n  --back-color: var(--color-gray-60);\\n}\\n.excalidraw .ExcButton--color-muted.ExcButton--variant-filled:active {\\n  --back-color: var(--color-gray-80);\\n}\\n.excalidraw .ExcButton--color-muted.ExcButton--variant-outlined, .excalidraw .ExcButton--color-muted.ExcButton--variant-icon {\\n  --text-color: var(--color-muted-background);\\n  --border-color: var(--color-muted);\\n  --back-color: var(--island-bg-color);\\n}\\n.excalidraw .ExcButton--color-muted.ExcButton--variant-outlined:hover, .excalidraw .ExcButton--color-muted.ExcButton--variant-icon:hover {\\n  --text-color: var(--color-muted-background-darker);\\n  --border-color: var(--color-muted-darker);\\n}\\n.excalidraw .ExcButton--color-muted.ExcButton--variant-outlined:active, .excalidraw .ExcButton--color-muted.ExcButton--variant-icon:active {\\n  --text-color: var(--color-muted-background-darker);\\n  --border-color: var(--color-muted-darkest);\\n}\\n.excalidraw .ExcButton--color-warning.ExcButton--variant-filled {\\n  --text-color: black;\\n  --back-color: var(--color-warning-dark);\\n}\\n.excalidraw .ExcButton--color-warning.ExcButton--variant-filled:hover {\\n  --back-color: var(--color-warning-darker);\\n}\\n.excalidraw .ExcButton--color-warning.ExcButton--variant-filled:active {\\n  --back-color: var(--color-warning-darkest);\\n}\\n.excalidraw .ExcButton--color-warning.ExcButton--variant-outlined, .excalidraw .ExcButton--color-warning.ExcButton--variant-icon {\\n  --text-color: var(--color-warning-dark);\\n  --border-color: var(--color-warning-dark);\\n  --back-color: var(--input-bg-color);\\n}\\n.excalidraw .ExcButton--color-warning.ExcButton--variant-outlined:hover, .excalidraw .ExcButton--color-warning.ExcButton--variant-icon:hover {\\n  --text-color: var(--color-warning-darker);\\n  --border-color: var(--color-warning-darker);\\n}\\n.excalidraw .ExcButton--color-warning.ExcButton--variant-outlined:active, .excalidraw .ExcButton--color-warning.ExcButton--variant-icon:active {\\n  --text-color: var(--color-warning-darkest);\\n  --border-color: var(--color-warning-darkest);\\n}\\n.excalidraw .ExcButton--size-large {\\n  font-weight: 600;\\n  font-size: 0.875rem;\\n  min-height: 3rem;\\n  padding: 0.5rem 1.5rem;\\n  gap: 0.75rem;\\n  letter-spacing: 0.4px;\\n}\\n.excalidraw .ExcButton--size-medium {\\n  font-weight: 600;\\n  font-size: 0.75rem;\\n  min-height: 2.5rem;\\n  padding: 0.5rem 1rem;\\n  gap: 0.5rem;\\n  letter-spacing: normal;\\n}\\n.excalidraw .ExcButton--variant-icon {\\n  padding: 0.5rem 0.75rem;\\n  width: 3rem;\\n}\\n.excalidraw .ExcButton--fullWidth {\\n  width: 100%;\\n}\\n.excalidraw .ExcButton__icon {\\n  width: 1.25rem;\\n  height: 1.25rem;\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/FilledButton.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AAAE;EACE,yBAAA;EACA,2BAAA;EACA,yBAAA;EAEA,wBAAA;EACA,mCAAA;EACA,iCAAA;EAkIA,aAAA;EACA,uBAAA;EACA,mBAAA;EACA,cAAA;EACA,iBAAA;EAEA,qBAAA;EACA,iBAAA;EACA,mBAAA;EAEA,wBAAA;EAEA,iBAAA;EAEA,8BAAA;AAnIJ;AAVM;EACE,yCAAA;EACA,kCAAA;AAYR;AAVQ;EACE,sCAAA;AAYV;AATQ;EACE,uCAAA;AAWV;AAPM;EAEE,kCAAA;EACA,2CAAA;EACA,yBAAA;AAQR;AANQ;EACE,sCAAA;EACA,wCAAA;AAQV;AALQ;EACE,uCAAA;EACA,yCAAA;AAOV;AADM;EACE,sCAAA;EACA,sCAAA;AAGR;AADQ;EACE,wCAAA;AAGV;AAAQ;EACE,yCAAA;AAEV;AAEM;EAEE,iCAAA;EACA,mCAAA;EACA,yBAAA;AADR;AAGQ;EACE,yCAAA;EACA,2CAAA;AADV;AAIQ;EACE,wCAAA;EACA,0CAAA;AAFV;AAQM;EACE,oCAAA;EACA,kCAAA;AANR;AAQQ;EACE,kCAAA;AANV;AASQ;EACE,kCAAA;AAPV;AAWM;EAEE,2CAAA;EACA,kCAAA;EACA,oCAAA;AAVR;AAYQ;EACE,kDAAA;EACA,yCAAA;AAVV;AAaQ;EACE,kDAAA;EACA,0CAAA;AAXV;AAiBM;EACE,mBAAA;EACA,uCAAA;AAfR;AAiBQ;EACE,yCAAA;AAfV;AAkBQ;EACE,0CAAA;AAhBV;AAoBM;EAEE,uCAAA;EACA,yCAAA;EACA,mCAAA;AAnBR;AAqBQ;EACE,yCAAA;EACA,2CAAA;AAnBV;AAsBQ;EACE,0CAAA;EACA,4CAAA;AApBV;AAyCI;EACE,gBAAA;EACA,mBAAA;EACA,gBAAA;EACA,sBAAA;EACA,YAAA;EAEA,qBAAA;AAxCN;AA2CI;EACE,gBAAA;EACA,kBAAA;EACA,kBAAA;EACA,oBAAA;EACA,WAAA;EAEA,sBAAA;AA1CN;AA6CI;EACE,uBAAA;EACA,WAAA;AA3CN;AA8CI;EACE,WAAA;AA5CN;AA+CI;EACE,cAAA;EACA,eAAA;AA7CN","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../css/variables.module\\";\\n\\n.excalidraw {\\n  .ExcButton {\\n    --text-color: transparent;\\n    --border-color: transparent;\\n    --back-color: transparent;\\n\\n    color: var(--text-color);\\n    background-color: var(--back-color);\\n    border-color: var(--border-color);\\n\\n    &--color-primary {\\n      &.ExcButton--variant-filled {\\n        --text-color: var(--color-surface-lowest);\\n        --back-color: var(--color-primary);\\n\\n        &:hover {\\n          --back-color: var(--color-brand-hover);\\n        }\\n\\n        &:active {\\n          --back-color: var(--color-brand-active);\\n        }\\n      }\\n\\n      &.ExcButton--variant-outlined,\\n      &.ExcButton--variant-icon {\\n        --text-color: var(--color-primary);\\n        --border-color: var(--color-border-outline);\\n        --back-color: transparent;\\n\\n        &:hover {\\n          --text-color: var(--color-brand-hover);\\n          --border-color: var(--color-brand-hover);\\n        }\\n\\n        &:active {\\n          --text-color: var(--color-brand-active);\\n          --border-color: var(--color-brand-active);\\n        }\\n      }\\n    }\\n\\n    &--color-danger {\\n      &.ExcButton--variant-filled {\\n        --text-color: var(--color-danger-text);\\n        --back-color: var(--color-danger-dark);\\n\\n        &:hover {\\n          --back-color: var(--color-danger-darker);\\n        }\\n\\n        &:active {\\n          --back-color: var(--color-danger-darkest);\\n        }\\n      }\\n\\n      &.ExcButton--variant-outlined,\\n      &.ExcButton--variant-icon {\\n        --text-color: var(--color-danger);\\n        --border-color: var(--color-danger);\\n        --back-color: transparent;\\n\\n        &:hover {\\n          --text-color: var(--color-danger-darkest);\\n          --border-color: var(--color-danger-darkest);\\n        }\\n\\n        &:active {\\n          --text-color: var(--color-danger-darker);\\n          --border-color: var(--color-danger-darker);\\n        }\\n      }\\n    }\\n\\n    &--color-muted {\\n      &.ExcButton--variant-filled {\\n        --text-color: var(--island-bg-color);\\n        --back-color: var(--color-gray-50);\\n\\n        &:hover {\\n          --back-color: var(--color-gray-60);\\n        }\\n\\n        &:active {\\n          --back-color: var(--color-gray-80);\\n        }\\n      }\\n\\n      &.ExcButton--variant-outlined,\\n      &.ExcButton--variant-icon {\\n        --text-color: var(--color-muted-background);\\n        --border-color: var(--color-muted);\\n        --back-color: var(--island-bg-color);\\n\\n        &:hover {\\n          --text-color: var(--color-muted-background-darker);\\n          --border-color: var(--color-muted-darker);\\n        }\\n\\n        &:active {\\n          --text-color: var(--color-muted-background-darker);\\n          --border-color: var(--color-muted-darkest);\\n        }\\n      }\\n    }\\n\\n    &--color-warning {\\n      &.ExcButton--variant-filled {\\n        --text-color: black;\\n        --back-color: var(--color-warning-dark);\\n\\n        &:hover {\\n          --back-color: var(--color-warning-darker);\\n        }\\n\\n        &:active {\\n          --back-color: var(--color-warning-darkest);\\n        }\\n      }\\n\\n      &.ExcButton--variant-outlined,\\n      &.ExcButton--variant-icon {\\n        --text-color: var(--color-warning-dark);\\n        --border-color: var(--color-warning-dark);\\n        --back-color: var(--input-bg-color);\\n\\n        &:hover {\\n          --text-color: var(--color-warning-darker);\\n          --border-color: var(--color-warning-darker);\\n        }\\n\\n        &:active {\\n          --text-color: var(--color-warning-darkest);\\n          --border-color: var(--color-warning-darkest);\\n        }\\n      }\\n    }\\n\\n    display: flex;\\n    justify-content: center;\\n    align-items: center;\\n    flex-shrink: 0;\\n    flex-wrap: nowrap;\\n\\n    border-radius: 0.5rem;\\n    border-width: 1px;\\n    border-style: solid;\\n\\n    font-family: \\"Assistant\\";\\n\\n    user-select: none;\\n\\n    transition: all 150ms ease-out;\\n\\n    &--size-large {\\n      font-weight: 600;\\n      font-size: 0.875rem;\\n      min-height: 3rem;\\n      padding: 0.5rem 1.5rem;\\n      gap: 0.75rem;\\n\\n      letter-spacing: 0.4px;\\n    }\\n\\n    &--size-medium {\\n      font-weight: 600;\\n      font-size: 0.75rem;\\n      min-height: 2.5rem;\\n      padding: 0.5rem 1rem;\\n      gap: 0.5rem;\\n\\n      letter-spacing: normal;\\n    }\\n\\n    &--variant-icon {\\n      padding: 0.5rem 0.75rem;\\n      width: 3rem;\\n    }\\n\\n    &--fullWidth {\\n      width: 100%;\\n    }\\n\\n    &__icon {\\n      width: 1.25rem;\\n      height: 1.25rem;\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 25956 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/FilledButton.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/FixedSideContainer.scss": (
              /*!***************************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/FixedSideContainer.scss ***!
                \***************************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .FixedSideContainer {\\n  position: absolute;\\n  pointer-events: none;\\n}\\n.excalidraw .FixedSideContainer > * {\\n  pointer-events: var(--ui-pointerEvents);\\n}\\n.excalidraw .FixedSideContainer_side_top {\\n  left: var(--editor-container-padding);\\n  top: var(--editor-container-padding);\\n  right: var(--editor-container-padding);\\n  bottom: var(--editor-container-padding);\\n  z-index: 2;\\n}\\n.excalidraw .FixedSideContainer_side_top.zen-mode {\\n  right: 42px;\\n}\\n\\n/* TODO: if these are used, make sure to implement RTL support\\n.FixedSideContainer_side_left {\\n  left: var(--space-factor);\\n  top: var(--space-factor);\\n  bottom: var(--space-factor);\\n  z-index: 1;\\n}\\n\\n.FixedSideContainer_side_right {\\n  right: var(--space-factor);\\n  top: var(--space-factor);\\n  bottom: var(--space-factor);\\n  z-index: 3;\\n}\\n*/", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/FixedSideContainer.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AAAE;EACE,kBAAA;EACA,oBAAA;AAGJ;AAAE;EACE,uCAAA;AAEJ;AACE;EACE,qCAAA;EACA,oCAAA;EACA,sCAAA;EACA,uCAAA;EACA,UAAA;AACJ;AAEE;EACE,WAAA;AAAJ;;AAIA;;;;;;;;;;;;;;CAAA","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../css/variables.module\\";\\n\\n.excalidraw {\\n  .FixedSideContainer {\\n    position: absolute;\\n    pointer-events: none;\\n  }\\n\\n  .FixedSideContainer > * {\\n    pointer-events: var(--ui-pointerEvents);\\n  }\\n\\n  .FixedSideContainer_side_top {\\n    left: var(--editor-container-padding);\\n    top: var(--editor-container-padding);\\n    right: var(--editor-container-padding);\\n    bottom: var(--editor-container-padding);\\n    z-index: 2;\\n  }\\n\\n  .FixedSideContainer_side_top.zen-mode {\\n    right: 42px;\\n  }\\n}\\n\\n/* TODO: if these are used, make sure to implement RTL support\\n.FixedSideContainer_side_left {\\n  left: var(--space-factor);\\n  top: var(--space-factor);\\n  bottom: var(--space-factor);\\n  z-index: 1;\\n}\\n\\n.FixedSideContainer_side_right {\\n  right: var(--space-factor);\\n  top: var(--space-factor);\\n  bottom: var(--space-factor);\\n  z-index: 3;\\n}\\n*/\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 10280 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/FixedSideContainer.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/HelpDialog.scss": (
              /*!*******************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/HelpDialog.scss ***!
                \*******************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .HelpDialog .Modal__content {\\n  max-width: 960px;\\n}\\n.excalidraw .HelpDialog h3 {\\n  margin: 1.5rem 0;\\n  font-weight: bold;\\n  font-size: 1.125rem;\\n}\\n.excalidraw .HelpDialog__header {\\n  display: flex;\\n  flex-wrap: wrap;\\n  gap: 0.75rem;\\n}\\n.excalidraw .HelpDialog__btn {\\n  --background: var(--color-surface-mid);\\n  display: flex;\\n  column-gap: 0.5rem;\\n  align-items: center;\\n  background-color: var(--background);\\n  padding: 0.625rem 1rem;\\n  border: 1px solid var(--background);\\n  border-radius: var(--border-radius-lg);\\n  color: var(--text-primary-color);\\n  font-weight: 600;\\n  font-size: 0.75rem;\\n  letter-spacing: 0.4px;\\n}\\n.excalidraw.theme--dark.excalidraw .HelpDialog__btn {\\n  --background: var(--color-surface-high);\\n}\\n.excalidraw.theme--dark.excalidraw .HelpDialog__btn:hover {\\n  --background: #363541;\\n}\\n\\n.excalidraw .HelpDialog__btn:hover {\\n  --background: var(--color-surface-high);\\n  text-decoration: none;\\n}\\n.excalidraw .HelpDialog__btn:active {\\n  border-color: var(--color-primary);\\n}\\n.excalidraw .HelpDialog__link-icon {\\n  line-height: 0;\\n}\\n.excalidraw .HelpDialog__link-icon svg {\\n  width: 1rem;\\n  height: 1rem;\\n}\\n.excalidraw .HelpDialog__islands-container {\\n  display: grid;\\n  grid-column-gap: 1.5rem;\\n  grid-row-gap: 2rem;\\n}\\n@media screen and (min-width: 1024px) {\\n  .excalidraw .HelpDialog__islands-container {\\n    grid-template-columns: 1fr 1fr;\\n  }\\n}\\n@media screen and (min-width: 1024px) {\\n  .excalidraw .HelpDialog__island--tools {\\n    grid-area: 1/1/2/2;\\n  }\\n  .excalidraw .HelpDialog__island--view {\\n    grid-area: 2/1/3/2;\\n  }\\n  .excalidraw .HelpDialog__island--editor {\\n    grid-area: 1/2/3/3;\\n  }\\n}\\n.excalidraw .HelpDialog__island h4 {\\n  font-size: 1rem;\\n  font-weight: bold;\\n  margin: 0;\\n  margin-bottom: 0.625rem;\\n}\\n.excalidraw .HelpDialog__island-content {\\n  border: 1px solid var(--dialog-border-color);\\n  border-radius: var(--border-radius-lg);\\n}\\n.excalidraw .HelpDialog__shortcut {\\n  border-bottom: 1px solid var(--dialog-border-color);\\n  padding: 0.375rem 0.75rem;\\n  display: flex;\\n  justify-content: space-between;\\n  align-items: center;\\n  font-size: 0.875rem;\\n  column-gap: 0.5rem;\\n}\\n.excalidraw .HelpDialog__shortcut:last-child {\\n  border-bottom: none;\\n}\\n.excalidraw .HelpDialog__key-container {\\n  display: flex;\\n  align-items: center;\\n  column-gap: 0.25rem;\\n  flex-shrink: 0;\\n}\\n.excalidraw .HelpDialog__key {\\n  display: flex;\\n  box-sizing: border-box;\\n  font-size: 0.625rem;\\n  background-color: var(--color-primary-light);\\n  border-radius: var(--border-radius-md);\\n  padding: 0.5rem;\\n  word-break: keep-all;\\n  align-items: center;\\n  font-family: inherit;\\n  line-height: 1;\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/HelpDialog.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AACI;EACE,gBAAA;AAEN;AACI;EACE,gBAAA;EACA,iBAAA;EACA,mBAAA;AACN;AAEI;EACE,aAAA;EACA,eAAA;EACA,YAAA;AAAN;AAGI;EACE,sCAAA;EAEA,aAAA;EACA,kBAAA;EACA,mBAAA;EACA,mCAAA;EACA,sBAAA;EACA,mCAAA;EACA,sCAAA;EACA,gCAAA;EACA,gBAAA;EACA,kBAAA;EACA,qBAAA;AAFN;AAIe;EACP,uCAAA;AAFR;AAGQ;EACE,qBAAA;AADV;;AAKM;EACE,uCAAA;EACA,qBAAA;AAFR;AAKM;EACE,kCAAA;AAHR;AAOI;EACE,cAAA;AALN;AAMM;EACE,WAAA;EACA,YAAA;AAJR;AAQI;EACE,aAAA;EAIA,uBAAA;EACA,kBAAA;AATN;AAKM;EAFF;IAGI,8BAAA;EAFN;AACF;AAOI;EACE;IACE,kBAAA;EALN;EAOI;IACE,kBAAA;EALN;EAOI;IACE,kBAAA;EALN;AACF;AASM;EACE,eAAA;EACA,iBAAA;EACA,SAAA;EACA,uBAAA;AAPR;AAUM;EACE,4CAAA;EACA,sCAAA;AARR;AAYI;EACE,mDAAA;EACA,yBAAA;EACA,aAAA;EACA,8BAAA;EACA,mBAAA;EACA,mBAAA;EACA,kBAAA;AAVN;AAYM;EACE,mBAAA;AAVR;AAcI;EACE,aAAA;EACA,mBAAA;EACA,mBAAA;EACA,cAAA;AAZN;AAeI;EACE,aAAA;EACA,sBAAA;EACA,mBAAA;EACA,4CAAA;EACA,sCAAA;EACA,eAAA;EACA,oBAAA;EACA,mBAAA;EACA,oBAAA;EACA,cAAA;AAbN","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../css/variables.module\\";\\n\\n.excalidraw {\\n  .HelpDialog {\\n    .Modal__content {\\n      max-width: 960px;\\n    }\\n\\n    h3 {\\n      margin: 1.5rem 0;\\n      font-weight: bold;\\n      font-size: 1.125rem;\\n    }\\n\\n    &__header {\\n      display: flex;\\n      flex-wrap: wrap;\\n      gap: 0.75rem;\\n    }\\n\\n    &__btn {\\n      --background: var(--color-surface-mid);\\n\\n      display: flex;\\n      column-gap: 0.5rem;\\n      align-items: center;\\n      background-color: var(--background);\\n      padding: 0.625rem 1rem;\\n      border: 1px solid var(--background);\\n      border-radius: var(--border-radius-lg);\\n      color: var(--text-primary-color);\\n      font-weight: 600;\\n      font-size: 0.75rem;\\n      letter-spacing: 0.4px;\\n\\n      @at-root .excalidraw.theme--dark#{&} {\\n        --background: var(--color-surface-high);\\n        &:hover {\\n          --background: #363541;\\n        }\\n      }\\n\\n      &:hover {\\n        --background: var(--color-surface-high);\\n        text-decoration: none;\\n      }\\n\\n      &:active {\\n        border-color: var(--color-primary);\\n      }\\n    }\\n\\n    &__link-icon {\\n      line-height: 0;\\n      svg {\\n        width: 1rem;\\n        height: 1rem;\\n      }\\n    }\\n\\n    &__islands-container {\\n      display: grid;\\n      @media screen and (min-width: 1024px) {\\n        grid-template-columns: 1fr 1fr;\\n      }\\n      grid-column-gap: 1.5rem;\\n      grid-row-gap: 2rem;\\n    }\\n\\n    @media screen and (min-width: 1024px) {\\n      &__island--tools {\\n        grid-area: 1 / 1 / 2 / 2;\\n      }\\n      &__island--view {\\n        grid-area: 2 / 1 / 3 / 2;\\n      }\\n      &__island--editor {\\n        grid-area: 1 / 2 / 3 / 3;\\n      }\\n    }\\n\\n    &__island {\\n      h4 {\\n        font-size: 1rem;\\n        font-weight: bold;\\n        margin: 0;\\n        margin-bottom: 0.625rem;\\n      }\\n\\n      &-content {\\n        border: 1px solid var(--dialog-border-color);\\n        border-radius: var(--border-radius-lg);\\n      }\\n    }\\n\\n    &__shortcut {\\n      border-bottom: 1px solid var(--dialog-border-color);\\n      padding: 0.375rem 0.75rem;\\n      display: flex;\\n      justify-content: space-between;\\n      align-items: center;\\n      font-size: 0.875rem;\\n      column-gap: 0.5rem;\\n\\n      &:last-child {\\n        border-bottom: none;\\n      }\\n    }\\n\\n    &__key-container {\\n      display: flex;\\n      align-items: center;\\n      column-gap: 0.25rem;\\n      flex-shrink: 0;\\n    }\\n\\n    &__key {\\n      display: flex;\\n      box-sizing: border-box;\\n      font-size: 0.625rem;\\n      background-color: var(--color-primary-light);\\n      border-radius: var(--border-radius-md);\\n      padding: 0.5rem;\\n      word-break: keep-all;\\n      align-items: center;\\n      font-family: inherit;\\n      line-height: 1;\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 18540 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/HelpDialog.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/HintViewer.scss": (
              /*!*******************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/HintViewer.scss ***!
                \*******************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .HintViewer {\\n  pointer-events: none;\\n  box-sizing: border-box;\\n  position: absolute;\\n  display: flex;\\n  justify-content: center;\\n  left: 0;\\n  top: 100%;\\n  max-width: 100%;\\n  width: 100%;\\n  margin-top: 0.5rem;\\n  text-align: center;\\n  color: var(--color-gray-40);\\n  font-size: 0.75rem;\\n}\\n.excalidraw--mobile.excalidraw .HintViewer {\\n  position: static;\\n  padding-right: 2rem;\\n}\\n\\n.excalidraw .HintViewer > span {\\n  padding: 0.25rem;\\n}\\n.excalidraw.theme--dark .HintViewer {\\n  color: var(--color-gray-60);\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/HintViewer.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AAGE;EACE,oBAAA;EACA,sBAAA;EACA,kBAAA;EACA,aAAA;EACA,uBAAA;EACA,OAAA;EACA,SAAA;EACA,eAAA;EACA,WAAA;EACA,kBAAA;EACA,kBAAA;EACA,2BAAA;EACA,kBAAA;AAAJ;ADhBW;ECmBL,gBAAA;EACA,mBAAA;AAAN;;AAGI;EACE,gBAAA;AAAN;AAKI;EACE,2BAAA;AAHN","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../css/variables.module\\";\\n\\n// this is loosely based on the longest hint text\\n$wide-viewport-width: 1000px;\\n\\n.excalidraw {\\n  .HintViewer {\\n    pointer-events: none;\\n    box-sizing: border-box;\\n    position: absolute;\\n    display: flex;\\n    justify-content: center;\\n    left: 0;\\n    top: 100%;\\n    max-width: 100%;\\n    width: 100%;\\n    margin-top: 0.5rem;\\n    text-align: center;\\n    color: var(--color-gray-40);\\n    font-size: 0.75rem;\\n\\n    @include isMobile {\\n      position: static;\\n      padding-right: 2rem;\\n    }\\n\\n    > span {\\n      padding: 0.25rem;\\n    }\\n  }\\n\\n  &.theme--dark {\\n    .HintViewer {\\n      color: var(--color-gray-60);\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 9684 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/HintViewer.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/IconPicker.scss": (
              /*!*******************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/IconPicker.scss ***!
                \*******************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .picker-container {\\n  display: inline-block;\\n  box-sizing: border-box;\\n  margin-right: 0.25rem;\\n}\\n.excalidraw .picker {\\n  background: var(--popup-bg-color);\\n  border: 0 solid rgba(255, 255, 255, 0.25);\\n  box-shadow: rgba(0, 0, 0, 0.25) 2px 2px 4px 2px;\\n  border-radius: 4px;\\n  position: absolute;\\n}\\n.excalidraw .picker-container button,\\n.excalidraw .picker button {\\n  position: relative;\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n}\\n.excalidraw .picker-container button:focus-visible,\\n.excalidraw .picker button:focus-visible {\\n  outline: transparent;\\n  background-color: var(--button-gray-2);\\n}\\n.excalidraw .picker-container button:focus-visible svg,\\n.excalidraw .picker button:focus-visible svg {\\n  opacity: 1;\\n}\\n.excalidraw .picker-container button:hover,\\n.excalidraw .picker button:hover {\\n  background-color: var(--button-gray-2);\\n}\\n.excalidraw .picker-container button:active,\\n.excalidraw .picker button:active {\\n  background-color: var(--button-gray-3);\\n}\\n.excalidraw .picker-container button:disabled,\\n.excalidraw .picker button:disabled {\\n  cursor: not-allowed;\\n}\\n.excalidraw .picker-container button svg,\\n.excalidraw .picker button svg {\\n  margin: 0;\\n  width: 36px;\\n  height: 18px;\\n  pointer-events: none;\\n}\\n.excalidraw .picker button {\\n  padding: 0.25rem 0.28rem 0.35rem 0.25rem;\\n}\\n.excalidraw .picker-triangle {\\n  width: 0;\\n  height: 0;\\n  position: relative;\\n  top: -10px;\\n  z-index: 10;\\n}\\n:root[dir=ltr] .excalidraw .picker-triangle {\\n  left: 12px;\\n}\\n:root[dir=rtl] .excalidraw .picker-triangle {\\n  right: 12px;\\n}\\n.excalidraw .picker-triangle:before {\\n  content: \\"\\";\\n  position: absolute;\\n  border-style: solid;\\n  border-width: 0 9px 10px;\\n  border-color: transparent transparent rgba(0, 0, 0, 0.1);\\n  top: -1px;\\n}\\n.excalidraw .picker-triangle:after {\\n  content: \\"\\";\\n  position: absolute;\\n  border-style: solid;\\n  border-width: 0 9px 10px;\\n  border-color: transparent transparent var(--popup-bg-color);\\n}\\n.excalidraw .picker-content {\\n  padding: 0.5rem;\\n  display: grid;\\n  grid-template-columns: repeat(3, auto);\\n  grid-gap: 0.5rem;\\n  border-radius: 4px;\\n}\\n:root[dir=rtl] .excalidraw .picker-content {\\n  padding: 0.4rem;\\n}\\n.excalidraw .picker-keybinding {\\n  position: absolute;\\n  bottom: 2px;\\n  font-size: 0.7em;\\n  color: var(--keybinding-color);\\n}\\n:root[dir=ltr] .excalidraw .picker-keybinding {\\n  right: 2px;\\n}\\n:root[dir=rtl] .excalidraw .picker-keybinding {\\n  left: 2px;\\n}\\n.excalidraw--mobile.excalidraw .picker-keybinding {\\n  display: none;\\n}\\n\\n.excalidraw .picker-type-canvasBackground .picker-keybinding {\\n  color: #aaa;\\n}\\n.excalidraw .picker-type-elementBackground .picker-keybinding {\\n  color: #ffffff;\\n}\\n.excalidraw .picker-swatch[aria-label=transparent] .picker-keybinding {\\n  color: #aaa;\\n}\\n.excalidraw .picker-type-elementStroke .picker-keybinding {\\n  color: #d4d4d4;\\n}\\n.excalidraw.theme--dark .picker-type-elementBackground .picker-keybinding {\\n  color: #000000;\\n}\\n.excalidraw.theme--dark .picker-swatch[aria-label=transparent] .picker-keybinding {\\n  color: #000000;\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/IconPicker.scss","webpack://./../../../node_modules/open-color/open-color.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AAAE;EACE,qBAAA;EACA,sBAAA;EACA,qBAAA;AAGJ;AAAE;EACE,iCAAA;EACA,yCAAA;EAEA,+CAAA;EACA,kBAAA;EACA,kBAAA;AACJ;AAEE;;EAEE,kBAAA;EACA,aAAA;EACA,mBAAA;EACA,uBAAA;AAAJ;AAEI;;EACE,oBAAA;EACA,sCAAA;AACN;AAAM;;EACE,UAAA;AAGR;AACI;;EACE,sCAAA;AAEN;AACI;;EACE,sCAAA;AAEN;AACI;;EACE,mBAAA;AAEN;AACI;;EACE,SAAA;EACA,WAAA;EACA,YAAA;EACA,oBAAA;AAEN;AAEE;EACE,wCAAA;AAAJ;AAGE;EACE,QAAA;EACA,SAAA;EACA,kBAAA;EACA,UAAA;EAQA,WAAA;AARJ;AACI;EACE,UAAA;AACN;AAEI;EACE,WAAA;AAAN;AAII;EACE,WAAA;EACA,kBAAA;EACA,mBAAA;EACA,wBAAA;EACA,wDAAA;EACA,SAAA;AAFN;AAKI;EACE,WAAA;EACA,kBAAA;EACA,mBAAA;EACA,wBAAA;EACA,2DAAA;AAHN;AAOE;EACE,eAAA;EACA,aAAA;EACA,sCAAA;EACA,gBAAA;EACA,kBAAA;AALJ;AAMI;EACE,eAAA;AAJN;AAQE;EACE,kBAAA;EACA,WAAA;EACA,gBAAA;EACA,8BAAA;AANJ;AAQI;EACE,UAAA;AANN;AASI;EACE,SAAA;AAPN;ADrGW;EC+GL,aAAA;AAPN;;AAWE;EACE,WAAA;AARJ;AAWE;EACE,cChHe;ADuGnB;AAYE;EACE,WAAA;AAVJ;AAaE;EACE,cAAA;AAXJ;AAeI;EACE,cC5Ha;AD+GnB;AAeI;EACE,cC/Ha;ADkHnB","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../css/variables.module\\";\\n\\n.excalidraw {\\n  .picker-container {\\n    display: inline-block;\\n    box-sizing: border-box;\\n    margin-right: 0.25rem;\\n  }\\n\\n  .picker {\\n    background: var(--popup-bg-color);\\n    border: 0 solid transparentize($oc-white, 0.75);\\n    // \u02C7\u02C7 yeah, i dunno, open to suggestions here :D\\n    box-shadow: rgb(0 0 0 / 25%) 2px 2px 4px 2px;\\n    border-radius: 4px;\\n    position: absolute;\\n  }\\n\\n  .picker-container button,\\n  .picker button {\\n    position: relative;\\n    display: flex;\\n    align-items: center;\\n    justify-content: center;\\n\\n    &:focus-visible {\\n      outline: transparent;\\n      background-color: var(--button-gray-2);\\n      & svg {\\n        opacity: 1;\\n      }\\n    }\\n\\n    &:hover {\\n      background-color: var(--button-gray-2);\\n    }\\n\\n    &:active {\\n      background-color: var(--button-gray-3);\\n    }\\n\\n    &:disabled {\\n      cursor: not-allowed;\\n    }\\n\\n    svg {\\n      margin: 0;\\n      width: 36px;\\n      height: 18px;\\n      pointer-events: none;\\n    }\\n  }\\n\\n  .picker button {\\n    padding: 0.25rem 0.28rem 0.35rem 0.25rem;\\n  }\\n\\n  .picker-triangle {\\n    width: 0;\\n    height: 0;\\n    position: relative;\\n    top: -10px;\\n    :root[dir=\\"ltr\\"] & {\\n      left: 12px;\\n    }\\n\\n    :root[dir=\\"rtl\\"] & {\\n      right: 12px;\\n    }\\n    z-index: 10;\\n\\n    &:before {\\n      content: \\"\\";\\n      position: absolute;\\n      border-style: solid;\\n      border-width: 0 9px 10px;\\n      border-color: transparent transparent transparentize($oc-black, 0.9);\\n      top: -1px;\\n    }\\n\\n    &:after {\\n      content: \\"\\";\\n      position: absolute;\\n      border-style: solid;\\n      border-width: 0 9px 10px;\\n      border-color: transparent transparent var(--popup-bg-color);\\n    }\\n  }\\n\\n  .picker-content {\\n    padding: 0.5rem;\\n    display: grid;\\n    grid-template-columns: repeat(3, auto);\\n    grid-gap: 0.5rem;\\n    border-radius: 4px;\\n    :root[dir=\\"rtl\\"] & {\\n      padding: 0.4rem;\\n    }\\n  }\\n\\n  .picker-keybinding {\\n    position: absolute;\\n    bottom: 2px;\\n    font-size: 0.7em;\\n    color: var(--keybinding-color);\\n\\n    :root[dir=\\"ltr\\"] & {\\n      right: 2px;\\n    }\\n\\n    :root[dir=\\"rtl\\"] & {\\n      left: 2px;\\n    }\\n    @include isMobile {\\n      display: none;\\n    }\\n  }\\n\\n  .picker-type-canvasBackground .picker-keybinding {\\n    color: #aaa;\\n  }\\n\\n  .picker-type-elementBackground .picker-keybinding {\\n    color: $oc-white;\\n  }\\n\\n  .picker-swatch[aria-label=\\"transparent\\"] .picker-keybinding {\\n    color: #aaa;\\n  }\\n\\n  .picker-type-elementStroke .picker-keybinding {\\n    color: #d4d4d4;\\n  }\\n\\n  &.theme--dark {\\n    .picker-type-elementBackground .picker-keybinding {\\n      color: $oc-black;\\n    }\\n    .picker-swatch[aria-label=\\"transparent\\"] .picker-keybinding {\\n      color: $oc-black;\\n    }\\n  }\\n}\\n","//\\n//\\n//  \u{1D5D6} \u{1D5E2} \u{1D5DF} \u{1D5E2} \u{1D5E5}\\n//  v 1.9.1\\n//\\n//  \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\\n\\n\\n//  General\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-white:         #ffffff;\\n$oc-black:         #000000;\\n\\n\\n//  Gray\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-gray-list: (\\n  \\"0\\": #f8f9fa,\\n  \\"1\\": #f1f3f5,\\n  \\"2\\": #e9ecef,\\n  \\"3\\": #dee2e6,\\n  \\"4\\": #ced4da,\\n  \\"5\\": #adb5bd,\\n  \\"6\\": #868e96,\\n  \\"7\\": #495057,\\n  \\"8\\": #343a40,\\n  \\"9\\": #212529\\n);\\n\\n$oc-gray-0: map-get($oc-gray-list, \\"0\\");\\n$oc-gray-1: map-get($oc-gray-list, \\"1\\");\\n$oc-gray-2: map-get($oc-gray-list, \\"2\\");\\n$oc-gray-3: map-get($oc-gray-list, \\"3\\");\\n$oc-gray-4: map-get($oc-gray-list, \\"4\\");\\n$oc-gray-5: map-get($oc-gray-list, \\"5\\");\\n$oc-gray-6: map-get($oc-gray-list, \\"6\\");\\n$oc-gray-7: map-get($oc-gray-list, \\"7\\");\\n$oc-gray-8: map-get($oc-gray-list, \\"8\\");\\n$oc-gray-9: map-get($oc-gray-list, \\"9\\");\\n\\n\\n//  Red\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-red-list: (\\n  \\"0\\": #fff5f5,\\n  \\"1\\": #ffe3e3,\\n  \\"2\\": #ffc9c9,\\n  \\"3\\": #ffa8a8,\\n  \\"4\\": #ff8787,\\n  \\"5\\": #ff6b6b,\\n  \\"6\\": #fa5252,\\n  \\"7\\": #f03e3e,\\n  \\"8\\": #e03131,\\n  \\"9\\": #c92a2a\\n);\\n\\n$oc-red-0: map-get($oc-red-list, \\"0\\");\\n$oc-red-1: map-get($oc-red-list, \\"1\\");\\n$oc-red-2: map-get($oc-red-list, \\"2\\");\\n$oc-red-3: map-get($oc-red-list, \\"3\\");\\n$oc-red-4: map-get($oc-red-list, \\"4\\");\\n$oc-red-5: map-get($oc-red-list, \\"5\\");\\n$oc-red-6: map-get($oc-red-list, \\"6\\");\\n$oc-red-7: map-get($oc-red-list, \\"7\\");\\n$oc-red-8: map-get($oc-red-list, \\"8\\");\\n$oc-red-9: map-get($oc-red-list, \\"9\\");\\n\\n\\n//  Pink\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-pink-list: (\\n  \\"0\\": #fff0f6,\\n  \\"1\\": #ffdeeb,\\n  \\"2\\": #fcc2d7,\\n  \\"3\\": #faa2c1,\\n  \\"4\\": #f783ac,\\n  \\"5\\": #f06595,\\n  \\"6\\": #e64980,\\n  \\"7\\": #d6336c,\\n  \\"8\\": #c2255c,\\n  \\"9\\": #a61e4d\\n);\\n\\n$oc-pink-0: map-get($oc-pink-list, \\"0\\");\\n$oc-pink-1: map-get($oc-pink-list, \\"1\\");\\n$oc-pink-2: map-get($oc-pink-list, \\"2\\");\\n$oc-pink-3: map-get($oc-pink-list, \\"3\\");\\n$oc-pink-4: map-get($oc-pink-list, \\"4\\");\\n$oc-pink-5: map-get($oc-pink-list, \\"5\\");\\n$oc-pink-6: map-get($oc-pink-list, \\"6\\");\\n$oc-pink-7: map-get($oc-pink-list, \\"7\\");\\n$oc-pink-8: map-get($oc-pink-list, \\"8\\");\\n$oc-pink-9: map-get($oc-pink-list, \\"9\\");\\n\\n\\n//  Grape\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-grape-list: (\\n  \\"0\\": #f8f0fc,\\n  \\"1\\": #f3d9fa,\\n  \\"2\\": #eebefa,\\n  \\"3\\": #e599f7,\\n  \\"4\\": #da77f2,\\n  \\"5\\": #cc5de8,\\n  \\"6\\": #be4bdb,\\n  \\"7\\": #ae3ec9,\\n  \\"8\\": #9c36b5,\\n  \\"9\\": #862e9c\\n);\\n\\n$oc-grape-0: map-get($oc-grape-list, \\"0\\");\\n$oc-grape-1: map-get($oc-grape-list, \\"1\\");\\n$oc-grape-2: map-get($oc-grape-list, \\"2\\");\\n$oc-grape-3: map-get($oc-grape-list, \\"3\\");\\n$oc-grape-4: map-get($oc-grape-list, \\"4\\");\\n$oc-grape-5: map-get($oc-grape-list, \\"5\\");\\n$oc-grape-6: map-get($oc-grape-list, \\"6\\");\\n$oc-grape-7: map-get($oc-grape-list, \\"7\\");\\n$oc-grape-8: map-get($oc-grape-list, \\"8\\");\\n$oc-grape-9: map-get($oc-grape-list, \\"9\\");\\n\\n\\n//  Violet\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-violet-list: (\\n  \\"0\\": #f3f0ff,\\n  \\"1\\": #e5dbff,\\n  \\"2\\": #d0bfff,\\n  \\"3\\": #b197fc,\\n  \\"4\\": #9775fa,\\n  \\"5\\": #845ef7,\\n  \\"6\\": #7950f2,\\n  \\"7\\": #7048e8,\\n  \\"8\\": #6741d9,\\n  \\"9\\": #5f3dc4\\n);\\n\\n$oc-violet-0: map-get($oc-violet-list, \\"0\\");\\n$oc-violet-1: map-get($oc-violet-list, \\"1\\");\\n$oc-violet-2: map-get($oc-violet-list, \\"2\\");\\n$oc-violet-3: map-get($oc-violet-list, \\"3\\");\\n$oc-violet-4: map-get($oc-violet-list, \\"4\\");\\n$oc-violet-5: map-get($oc-violet-list, \\"5\\");\\n$oc-violet-6: map-get($oc-violet-list, \\"6\\");\\n$oc-violet-7: map-get($oc-violet-list, \\"7\\");\\n$oc-violet-8: map-get($oc-violet-list, \\"8\\");\\n$oc-violet-9: map-get($oc-violet-list, \\"9\\");\\n\\n\\n//  Indigo\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-indigo-list: (\\n  \\"0\\": #edf2ff,\\n  \\"1\\": #dbe4ff,\\n  \\"2\\": #bac8ff,\\n  \\"3\\": #91a7ff,\\n  \\"4\\": #748ffc,\\n  \\"5\\": #5c7cfa,\\n  \\"6\\": #4c6ef5,\\n  \\"7\\": #4263eb,\\n  \\"8\\": #3b5bdb,\\n  \\"9\\": #364fc7\\n);\\n\\n$oc-indigo-0: map-get($oc-indigo-list, \\"0\\");\\n$oc-indigo-1: map-get($oc-indigo-list, \\"1\\");\\n$oc-indigo-2: map-get($oc-indigo-list, \\"2\\");\\n$oc-indigo-3: map-get($oc-indigo-list, \\"3\\");\\n$oc-indigo-4: map-get($oc-indigo-list, \\"4\\");\\n$oc-indigo-5: map-get($oc-indigo-list, \\"5\\");\\n$oc-indigo-6: map-get($oc-indigo-list, \\"6\\");\\n$oc-indigo-7: map-get($oc-indigo-list, \\"7\\");\\n$oc-indigo-8: map-get($oc-indigo-list, \\"8\\");\\n$oc-indigo-9: map-get($oc-indigo-list, \\"9\\");\\n\\n\\n//  Blue\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-blue-list: (\\n  \\"0\\": #e7f5ff,\\n  \\"1\\": #d0ebff,\\n  \\"2\\": #a5d8ff,\\n  \\"3\\": #74c0fc,\\n  \\"4\\": #4dabf7,\\n  \\"5\\": #339af0,\\n  \\"6\\": #228be6,\\n  \\"7\\": #1c7ed6,\\n  \\"8\\": #1971c2,\\n  \\"9\\": #1864ab\\n);\\n\\n$oc-blue-0: map-get($oc-blue-list, \\"0\\");\\n$oc-blue-1: map-get($oc-blue-list, \\"1\\");\\n$oc-blue-2: map-get($oc-blue-list, \\"2\\");\\n$oc-blue-3: map-get($oc-blue-list, \\"3\\");\\n$oc-blue-4: map-get($oc-blue-list, \\"4\\");\\n$oc-blue-5: map-get($oc-blue-list, \\"5\\");\\n$oc-blue-6: map-get($oc-blue-list, \\"6\\");\\n$oc-blue-7: map-get($oc-blue-list, \\"7\\");\\n$oc-blue-8: map-get($oc-blue-list, \\"8\\");\\n$oc-blue-9: map-get($oc-blue-list, \\"9\\");\\n\\n\\n//  Cyan\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-cyan-list: (\\n  \\"0\\": #e3fafc,\\n  \\"1\\": #c5f6fa,\\n  \\"2\\": #99e9f2,\\n  \\"3\\": #66d9e8,\\n  \\"4\\": #3bc9db,\\n  \\"5\\": #22b8cf,\\n  \\"6\\": #15aabf,\\n  \\"7\\": #1098ad,\\n  \\"8\\": #0c8599,\\n  \\"9\\": #0b7285\\n);\\n\\n$oc-cyan-0: map-get($oc-cyan-list, \\"0\\");\\n$oc-cyan-1: map-get($oc-cyan-list, \\"1\\");\\n$oc-cyan-2: map-get($oc-cyan-list, \\"2\\");\\n$oc-cyan-3: map-get($oc-cyan-list, \\"3\\");\\n$oc-cyan-4: map-get($oc-cyan-list, \\"4\\");\\n$oc-cyan-5: map-get($oc-cyan-list, \\"5\\");\\n$oc-cyan-6: map-get($oc-cyan-list, \\"6\\");\\n$oc-cyan-7: map-get($oc-cyan-list, \\"7\\");\\n$oc-cyan-8: map-get($oc-cyan-list, \\"8\\");\\n$oc-cyan-9: map-get($oc-cyan-list, \\"9\\");\\n\\n\\n//  Teal\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-teal-list: (\\n  \\"0\\": #e6fcf5,\\n  \\"1\\": #c3fae8,\\n  \\"2\\": #96f2d7,\\n  \\"3\\": #63e6be,\\n  \\"4\\": #38d9a9,\\n  \\"5\\": #20c997,\\n  \\"6\\": #12b886,\\n  \\"7\\": #0ca678,\\n  \\"8\\": #099268,\\n  \\"9\\": #087f5b\\n);\\n\\n$oc-teal-0: map-get($oc-teal-list, \\"0\\");\\n$oc-teal-1: map-get($oc-teal-list, \\"1\\");\\n$oc-teal-2: map-get($oc-teal-list, \\"2\\");\\n$oc-teal-3: map-get($oc-teal-list, \\"3\\");\\n$oc-teal-4: map-get($oc-teal-list, \\"4\\");\\n$oc-teal-5: map-get($oc-teal-list, \\"5\\");\\n$oc-teal-6: map-get($oc-teal-list, \\"6\\");\\n$oc-teal-7: map-get($oc-teal-list, \\"7\\");\\n$oc-teal-8: map-get($oc-teal-list, \\"8\\");\\n$oc-teal-9: map-get($oc-teal-list, \\"9\\");\\n\\n\\n//  Green\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-green-list: (\\n  \\"0\\": #ebfbee,\\n  \\"1\\": #d3f9d8,\\n  \\"2\\": #b2f2bb,\\n  \\"3\\": #8ce99a,\\n  \\"4\\": #69db7c,\\n  \\"5\\": #51cf66,\\n  \\"6\\": #40c057,\\n  \\"7\\": #37b24d,\\n  \\"8\\": #2f9e44,\\n  \\"9\\": #2b8a3e\\n);\\n\\n$oc-green-0: map-get($oc-green-list, \\"0\\");\\n$oc-green-1: map-get($oc-green-list, \\"1\\");\\n$oc-green-2: map-get($oc-green-list, \\"2\\");\\n$oc-green-3: map-get($oc-green-list, \\"3\\");\\n$oc-green-4: map-get($oc-green-list, \\"4\\");\\n$oc-green-5: map-get($oc-green-list, \\"5\\");\\n$oc-green-6: map-get($oc-green-list, \\"6\\");\\n$oc-green-7: map-get($oc-green-list, \\"7\\");\\n$oc-green-8: map-get($oc-green-list, \\"8\\");\\n$oc-green-9: map-get($oc-green-list, \\"9\\");\\n\\n\\n//  Lime\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-lime-list: (\\n  \\"0\\": #f4fce3,\\n  \\"1\\": #e9fac8,\\n  \\"2\\": #d8f5a2,\\n  \\"3\\": #c0eb75,\\n  \\"4\\": #a9e34b,\\n  \\"5\\": #94d82d,\\n  \\"6\\": #82c91e,\\n  \\"7\\": #74b816,\\n  \\"8\\": #66a80f,\\n  \\"9\\": #5c940d\\n);\\n\\n$oc-lime-0: map-get($oc-lime-list, \\"0\\");\\n$oc-lime-1: map-get($oc-lime-list, \\"1\\");\\n$oc-lime-2: map-get($oc-lime-list, \\"2\\");\\n$oc-lime-3: map-get($oc-lime-list, \\"3\\");\\n$oc-lime-4: map-get($oc-lime-list, \\"4\\");\\n$oc-lime-5: map-get($oc-lime-list, \\"5\\");\\n$oc-lime-6: map-get($oc-lime-list, \\"6\\");\\n$oc-lime-7: map-get($oc-lime-list, \\"7\\");\\n$oc-lime-8: map-get($oc-lime-list, \\"8\\");\\n$oc-lime-9: map-get($oc-lime-list, \\"9\\");\\n\\n\\n//  Yellow\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-yellow-list: (\\n  \\"0\\": #fff9db,\\n  \\"1\\": #fff3bf,\\n  \\"2\\": #ffec99,\\n  \\"3\\": #ffe066,\\n  \\"4\\": #ffd43b,\\n  \\"5\\": #fcc419,\\n  \\"6\\": #fab005,\\n  \\"7\\": #f59f00,\\n  \\"8\\": #f08c00,\\n  \\"9\\": #e67700\\n);\\n\\n$oc-yellow-0: map-get($oc-yellow-list, \\"0\\");\\n$oc-yellow-1: map-get($oc-yellow-list, \\"1\\");\\n$oc-yellow-2: map-get($oc-yellow-list, \\"2\\");\\n$oc-yellow-3: map-get($oc-yellow-list, \\"3\\");\\n$oc-yellow-4: map-get($oc-yellow-list, \\"4\\");\\n$oc-yellow-5: map-get($oc-yellow-list, \\"5\\");\\n$oc-yellow-6: map-get($oc-yellow-list, \\"6\\");\\n$oc-yellow-7: map-get($oc-yellow-list, \\"7\\");\\n$oc-yellow-8: map-get($oc-yellow-list, \\"8\\");\\n$oc-yellow-9: map-get($oc-yellow-list, \\"9\\");\\n\\n\\n//  Orange\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-orange-list: (\\n  \\"0\\": #fff4e6,\\n  \\"1\\": #ffe8cc,\\n  \\"2\\": #ffd8a8,\\n  \\"3\\": #ffc078,\\n  \\"4\\": #ffa94d,\\n  \\"5\\": #ff922b,\\n  \\"6\\": #fd7e14,\\n  \\"7\\": #f76707,\\n  \\"8\\": #e8590c,\\n  \\"9\\": #d9480f\\n);\\n\\n$oc-orange-0: map-get($oc-orange-list, \\"0\\");\\n$oc-orange-1: map-get($oc-orange-list, \\"1\\");\\n$oc-orange-2: map-get($oc-orange-list, \\"2\\");\\n$oc-orange-3: map-get($oc-orange-list, \\"3\\");\\n$oc-orange-4: map-get($oc-orange-list, \\"4\\");\\n$oc-orange-5: map-get($oc-orange-list, \\"5\\");\\n$oc-orange-6: map-get($oc-orange-list, \\"6\\");\\n$oc-orange-7: map-get($oc-orange-list, \\"7\\");\\n$oc-orange-8: map-get($oc-orange-list, \\"8\\");\\n$oc-orange-9: map-get($oc-orange-list, \\"9\\");\\n\\n\\n//  Color list\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-color-spectrum:   9;\\n\\n$oc-color-list: (\\n  $oc-gray-list:      \\"gray\\",\\n  $oc-red-list:      \\"red\\",\\n  $oc-pink-list:      \\"pink\\",\\n  $oc-grape-list:      \\"grape\\",\\n  $oc-violet-list:      \\"violet\\",\\n  $oc-indigo-list:      \\"indigo\\",\\n  $oc-blue-list:      \\"blue\\",\\n  $oc-cyan-list:      \\"cyan\\",\\n  $oc-teal-list:      \\"teal\\",\\n  $oc-green-list:      \\"green\\",\\n  $oc-lime-list:      \\"lime\\",\\n  $oc-yellow-list:      \\"yellow\\",\\n  $oc-orange-list:      \\"orange\\"\\n);\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 37968 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/IconPicker.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ImageExportDialog.scss": (
              /*!**************************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ImageExportDialog.scss ***!
                \**************************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/getUrl.js */ "./node_modules/css-loader/dist/runtime/getUrl.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__);\n// Imports\n\n\n\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(/* asset import */ __webpack_require__(/*! data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMUlEQVQ4T2NkYGAQYcAP3uCTZhw1gGGYhAGBZIA/nYDCgBDAm9BGDWAAJyRCgLaBCAAgXwixzAS0pgAAAABJRU5ErkJggg== */ "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMUlEQVQ4T2NkYGAQYcAP3uCTZhw1gGGYhAGBZIA/nYDCgBDAm9BGDWAAJyRCgLaBCAAgXwixzAS0pgAAAABJRU5ErkJggg=="), __webpack_require__.b);\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw {\\n  --ImageExportModal-preview-border: #d6d6d6;\\n}\\n.excalidraw.theme--dark {\\n  --ImageExportModal-preview-border: #5c5c5c;\\n}\\n.excalidraw .ImageExportModal {\\n  display: flex;\\n  flex-direction: row;\\n  justify-content: space-between;\\n}\\n.excalidraw .ImageExportModal h3 {\\n  font-family: \\"Assistant\\";\\n  font-style: normal;\\n  font-weight: 700;\\n  font-size: 1.313rem;\\n  line-height: 130%;\\n  padding: 0;\\n  margin: 0;\\n}\\n.excalidraw--mobile.excalidraw .ImageExportModal h3 {\\n  display: none;\\n}\\n\\n.excalidraw .ImageExportModal > h3 {\\n  display: none;\\n}\\n.excalidraw--mobile.excalidraw .ImageExportModal > h3 {\\n  display: block;\\n}\\n\\n.excalidraw--mobile.excalidraw .ImageExportModal {\\n  flex-direction: column;\\n  height: calc(100vh - 5rem);\\n}\\n\\n.excalidraw .ImageExportModal__preview {\\n  box-sizing: border-box;\\n  display: flex;\\n  flex-direction: column;\\n  align-items: center;\\n  height: 360px;\\n  width: 55%;\\n  margin-right: 1.5rem;\\n}\\n.excalidraw--mobile.excalidraw .ImageExportModal__preview {\\n  max-width: unset;\\n  margin-right: unset;\\n  width: 100%;\\n  height: unset;\\n  flex-grow: 1;\\n}\\n\\n.excalidraw .ImageExportModal__preview__filename > input {\\n  margin-top: 1rem;\\n}\\n.excalidraw .ImageExportModal__preview__canvas {\\n  box-sizing: border-box;\\n  width: 100%;\\n  height: 100%;\\n  display: flex;\\n  flex-grow: 1;\\n  justify-content: center;\\n  align-items: center;\\n  background: url(" + ___CSS_LOADER_URL_REPLACEMENT_0___ + ") left center;\\n  border: 1px solid var(--ImageExportModal-preview-border);\\n  border-radius: 12px;\\n  overflow: hidden;\\n  padding: 1rem;\\n}\\n.excalidraw .ImageExportModal__preview__canvas > canvas {\\n  max-width: calc(100% - 2rem);\\n  max-height: calc(100% - 2rem);\\n  filter: none !important;\\n}\\n.excalidraw--mobile.excalidraw .ImageExportModal__preview__canvas > canvas {\\n  max-height: 100%;\\n}\\n\\n.excalidraw--mobile.excalidraw .ImageExportModal__preview__canvas {\\n  margin-top: 24px;\\n  max-width: unset;\\n}\\n\\n.excalidraw .ImageExportModal__settings {\\n  display: flex;\\n  flex-direction: column;\\n  flex-wrap: wrap;\\n  gap: 18px;\\n}\\n.excalidraw--mobile.excalidraw .ImageExportModal__settings {\\n  margin-left: unset;\\n  margin-top: 1rem;\\n  flex-direction: row;\\n  gap: 6px 34px;\\n  align-content: flex-start;\\n}\\n\\n.excalidraw .ImageExportModal__settings__setting {\\n  display: flex;\\n  flex-direction: row;\\n  justify-content: space-between;\\n  align-items: center;\\n}\\n.excalidraw--mobile.excalidraw .ImageExportModal__settings__setting {\\n  flex-direction: column;\\n  align-items: start;\\n  justify-content: unset;\\n  height: 52px;\\n}\\n\\n.excalidraw .ImageExportModal__settings__setting__label {\\n  display: flex;\\n  flex-direction: row;\\n  align-items: center;\\n  font-family: \\"Assistant\\";\\n  font-weight: 600;\\n  font-size: 1rem;\\n  line-height: 150%;\\n}\\n.excalidraw .ImageExportModal__settings__setting__label svg {\\n  width: 20px;\\n  height: 20px;\\n  margin-left: 10px;\\n}\\n.excalidraw .ImageExportModal__settings__setting__content {\\n  display: flex;\\n  height: 100%;\\n  align-items: center;\\n}\\n.excalidraw .ImageExportModal__settings__buttons {\\n  flex-grow: 1;\\n  flex-wrap: wrap;\\n  display: flex;\\n  flex-direction: row;\\n  gap: 11px;\\n  align-items: flex-end;\\n  align-content: flex-end;\\n}\\n.excalidraw--mobile.excalidraw .ImageExportModal__settings__buttons {\\n  padding-top: 32px;\\n  flex-basis: 100%;\\n  justify-content: center;\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/ImageExportDialog.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AADA;EACE,0CAAA;AAIF;AAFE;EACE,0CAAA;AAIJ;AADE;EACE,aAAA;EACA,mBAAA;EACA,8BAAA;AAGJ;AADI;EACE,wBAAA;EACA,kBAAA;EACA,gBAAA;EACA,mBAAA;EACA,iBAAA;EACA,UAAA;EACA,SAAA;AAGN;ADrBW;ECqBH,aAAA;AAGR;;AACI;EACE,aAAA;AAEN;AD5BW;EC6BH,cAAA;AAER;;AD/BW;ECkCL,sBAAA;EACA,0BAAA;AACN;;AAEI;EACE,sBAAA;EACA,aAAA;EACA,sBAAA;EACA,mBAAA;EACA,aAAA;EACA,UAAA;EAEA,oBAAA;AAAN;AD9CW;ECiDH,gBAAA;EACA,mBAAA;EAEA,WAAA;EACA,aAAA;EACA,YAAA;AADR;;AAKQ;EACE,gBAAA;AAFV;AAMM;EACE,sBAAA;EACA,WAAA;EACA,YAAA;EACA,aAAA;EACA,YAAA;EACA,uBAAA;EACA,mBAAA;EAEA,+DAAA;EAGA,wDAAA;EACA,mBAAA;EAEA,gBAAA;EACA,aAAA;AARR;AAUQ;EACE,4BAAA;EACA,6BAAA;EAEA,uBAAA;AATV;AD5EW;ECwFC,gBAAA;AATZ;;AD/EW;EC6FD,gBAAA;EACA,gBAAA;AAVV;;AAeI;EACE,aAAA;EACA,sBAAA;EACA,eAAA;EACA,SAAA;AAZN;AD3FW;EC0GH,kBAAA;EACA,gBAAA;EACA,mBAAA;EACA,aAAA;EAEA,yBAAA;AAbR;;AAgBM;EACE,aAAA;EACA,mBAAA;EACA,8BAAA;EACA,mBAAA;AAbR;ADzGW;ECyHD,sBAAA;EACA,kBAAA;EACA,sBAAA;EACA,YAAA;AAbV;;AAgBQ;EACE,aAAA;EACA,mBAAA;EACA,mBAAA;EAEA,wBAAA;EACA,gBAAA;EACA,eAAA;EACA,iBAAA;AAdV;AAgBU;EACE,WAAA;EACA,YAAA;EACA,iBAAA;AAdZ;AAkBQ;EACE,aAAA;EACA,YAAA;EACA,mBAAA;AAhBV;AAoBM;EACE,YAAA;EACA,eAAA;EACA,aAAA;EACA,mBAAA;EACA,SAAA;EAEA,qBAAA;EACA,uBAAA;AAnBR;AD5IW;ECkKD,iBAAA;EACA,gBAAA;EACA,uBAAA;AAnBV","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../css/variables.module\\";\\n\\n.excalidraw {\\n  --ImageExportModal-preview-border: #d6d6d6;\\n\\n  &.theme--dark {\\n    --ImageExportModal-preview-border: #5c5c5c;\\n  }\\n\\n  .ImageExportModal {\\n    display: flex;\\n    flex-direction: row;\\n    justify-content: space-between;\\n\\n    & h3 {\\n      font-family: \\"Assistant\\";\\n      font-style: normal;\\n      font-weight: 700;\\n      font-size: 1.313rem;\\n      line-height: 130%;\\n      padding: 0;\\n      margin: 0;\\n\\n      @include isMobile {\\n        display: none;\\n      }\\n    }\\n\\n    & > h3 {\\n      display: none;\\n\\n      @include isMobile {\\n        display: block;\\n      }\\n    }\\n\\n    @include isMobile {\\n      flex-direction: column;\\n      height: calc(100vh - 5rem);\\n    }\\n\\n    &__preview {\\n      box-sizing: border-box;\\n      display: flex;\\n      flex-direction: column;\\n      align-items: center;\\n      height: 360px;\\n      width: 55%;\\n\\n      margin-right: 1.5rem;\\n\\n      @include isMobile {\\n        max-width: unset;\\n        margin-right: unset;\\n\\n        width: 100%;\\n        height: unset;\\n        flex-grow: 1;\\n      }\\n\\n      &__filename {\\n        & > input {\\n          margin-top: 1rem;\\n        }\\n      }\\n\\n      &__canvas {\\n        box-sizing: border-box;\\n        width: 100%;\\n        height: 100%;\\n        display: flex;\\n        flex-grow: 1;\\n        justify-content: center;\\n        align-items: center;\\n\\n        background: url(\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMUlEQVQ4T2NkYGAQYcAP3uCTZhw1gGGYhAGBZIA/nYDCgBDAm9BGDWAAJyRCgLaBCAAgXwixzAS0pgAAAABJRU5ErkJggg==\\")\\n          left center;\\n\\n        border: 1px solid var(--ImageExportModal-preview-border);\\n        border-radius: 12px;\\n\\n        overflow: hidden;\\n        padding: 1rem;\\n\\n        & > canvas {\\n          max-width: calc(100% - 2rem);\\n          max-height: calc(100% - 2rem);\\n\\n          filter: none !important;\\n\\n          @include isMobile {\\n            max-height: 100%;\\n          }\\n        }\\n\\n        @include isMobile {\\n          margin-top: 24px;\\n          max-width: unset;\\n        }\\n      }\\n    }\\n\\n    &__settings {\\n      display: flex;\\n      flex-direction: column;\\n      flex-wrap: wrap;\\n      gap: 18px;\\n\\n      @include isMobile {\\n        margin-left: unset;\\n        margin-top: 1rem;\\n        flex-direction: row;\\n        gap: 6px 34px;\\n\\n        align-content: flex-start;\\n      }\\n\\n      &__setting {\\n        display: flex;\\n        flex-direction: row;\\n        justify-content: space-between;\\n        align-items: center;\\n\\n        @include isMobile {\\n          flex-direction: column;\\n          align-items: start;\\n          justify-content: unset;\\n          height: 52px;\\n        }\\n\\n        &__label {\\n          display: flex;\\n          flex-direction: row;\\n          align-items: center;\\n\\n          font-family: \\"Assistant\\";\\n          font-weight: 600;\\n          font-size: 1rem;\\n          line-height: 150%;\\n\\n          & svg {\\n            width: 20px;\\n            height: 20px;\\n            margin-left: 10px;\\n          }\\n        }\\n\\n        &__content {\\n          display: flex;\\n          height: 100%;\\n          align-items: center;\\n        }\\n      }\\n\\n      &__buttons {\\n        flex-grow: 1;\\n        flex-wrap: wrap;\\n        display: flex;\\n        flex-direction: row;\\n        gap: 11px;\\n\\n        align-items: flex-end;\\n        align-content: flex-end;\\n\\n        @include isMobile {\\n          padding-top: 32px;\\n          flex-basis: 100%;\\n          justify-content: center;\\n        }\\n      }\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 22544 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ImageExportDialog.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Island.scss": (
              /*!***************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Island.scss ***!
                \***************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ".excalidraw .Island {\\n  --padding: 0;\\n  box-sizing: border-box;\\n  background-color: var(--island-bg-color);\\n  box-shadow: var(--shadow-island);\\n  border-radius: var(--border-radius-lg);\\n  padding: calc(var(--padding) * var(--space-factor));\\n  position: relative;\\n  transition: box-shadow 0.5s ease-in-out;\\n}\\n.excalidraw .Island.zen-mode {\\n  box-shadow: none;\\n}", "",{"version":3,"sources":["webpack://./../../components/Island.scss"],"names":[],"mappings":"AACE;EACE,YAAA;EACA,sBAAA;EACA,wCAAA;EACA,gCAAA;EACA,sCAAA;EACA,mDAAA;EACA,kBAAA;EACA,uCAAA;AAAJ;AAEI;EACE,gBAAA;AAAN","sourcesContent":[".excalidraw {\\n  .Island {\\n    --padding: 0;\\n    box-sizing: border-box;\\n    background-color: var(--island-bg-color);\\n    box-shadow: var(--shadow-island);\\n    border-radius: var(--border-radius-lg);\\n    padding: calc(var(--padding) * var(--space-factor));\\n    position: relative;\\n    transition: box-shadow 0.5s ease-in-out;\\n\\n    &.zen-mode {\\n      box-shadow: none;\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vY29tcG9uZW50cy9Jc2xhbmQuc2Nzcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQzhIO0FBQ2pCO0FBQzdHLDhCQUE4Qix1R0FBMkIsQ0FBQyxnSEFBcUM7QUFDL0Y7QUFDQSwrREFBK0QsaUJBQWlCLDJCQUEyQiw2Q0FBNkMscUNBQXFDLDJDQUEyQyx3REFBd0QsdUJBQXVCLDRDQUE0QyxHQUFHLGdDQUFnQyxxQkFBcUIsR0FBRyxPQUFPLCtGQUErRixVQUFVLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsS0FBSyxLQUFLLFdBQVcsc0NBQXNDLGFBQWEsbUJBQW1CLDZCQUE2QiwrQ0FBK0MsdUNBQXVDLDZDQUE2QywwREFBMEQseUJBQXlCLDhDQUE4QyxvQkFBb0IseUJBQXlCLE9BQU8sS0FBSyxHQUFHLHFCQUFxQjtBQUN4aUM7QUFDQSxpRUFBZSx1QkFBdUIsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL0lzbGFuZC5zY3NzPzg2MjgiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLmV4Y2FsaWRyYXcgLklzbGFuZCB7XFxuICAtLXBhZGRpbmc6IDA7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0taXNsYW5kLWJnLWNvbG9yKTtcXG4gIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1pc2xhbmQpO1xcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cy1sZyk7XFxuICBwYWRkaW5nOiBjYWxjKHZhcigtLXBhZGRpbmcpICogdmFyKC0tc3BhY2UtZmFjdG9yKSk7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICB0cmFuc2l0aW9uOiBib3gtc2hhZG93IDAuNXMgZWFzZS1pbi1vdXQ7XFxufVxcbi5leGNhbGlkcmF3IC5Jc2xhbmQuemVuLW1vZGUge1xcbiAgYm94LXNoYWRvdzogbm9uZTtcXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vLi4vLi4vY29tcG9uZW50cy9Jc2xhbmQuc2Nzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFDRTtFQUNFLFlBQUE7RUFDQSxzQkFBQTtFQUNBLHdDQUFBO0VBQ0EsZ0NBQUE7RUFDQSxzQ0FBQTtFQUNBLG1EQUFBO0VBQ0Esa0JBQUE7RUFDQSx1Q0FBQTtBQUFKO0FBRUk7RUFDRSxnQkFBQTtBQUFOXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIi5leGNhbGlkcmF3IHtcXG4gIC5Jc2xhbmQge1xcbiAgICAtLXBhZGRpbmc6IDA7XFxuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWlzbGFuZC1iZy1jb2xvcik7XFxuICAgIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1pc2xhbmQpO1xcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzLWxnKTtcXG4gICAgcGFkZGluZzogY2FsYyh2YXIoLS1wYWRkaW5nKSAqIHZhcigtLXNwYWNlLWZhY3RvcikpO1xcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICAgIHRyYW5zaXRpb246IGJveC1zaGFkb3cgMC41cyBlYXNlLWluLW91dDtcXG5cXG4gICAgJi56ZW4tbW9kZSB7XFxuICAgICAgYm94LXNoYWRvdzogbm9uZTtcXG4gICAgfVxcbiAgfVxcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Island.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/LaserTool/LaserToolOverlay.scss": (
              /*!***********************************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/LaserTool/LaserToolOverlay.scss ***!
                \***********************************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ".excalidraw .LaserToolOverlay {\\n  pointer-events: none;\\n  width: 100vw;\\n  height: 100vh;\\n  position: fixed;\\n  top: 0;\\n  left: 0;\\n  z-index: 2;\\n}\\n.excalidraw .LaserToolOverlay .LaserToolOverlayCanvas {\\n  image-rendering: auto;\\n  overflow: visible;\\n  position: absolute;\\n  top: 0;\\n  left: 0;\\n}", "",{"version":3,"sources":["webpack://./../../components/LaserTool/LaserToolOverlay.scss"],"names":[],"mappings":"AACE;EACE,oBAAA;EACA,YAAA;EACA,aAAA;EACA,eAAA;EACA,MAAA;EACA,OAAA;EAEA,UAAA;AADJ;AAGI;EACE,qBAAA;EACA,iBAAA;EACA,kBAAA;EACA,MAAA;EACA,OAAA;AADN","sourcesContent":[".excalidraw {\\n  .LaserToolOverlay {\\n    pointer-events: none;\\n    width: 100vw;\\n    height: 100vh;\\n    position: fixed;\\n    top: 0;\\n    left: 0;\\n\\n    z-index: 2;\\n\\n    .LaserToolOverlayCanvas {\\n      image-rendering: auto;\\n      overflow: visible;\\n      position: absolute;\\n      top: 0;\\n      left: 0;\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vY29tcG9uZW50cy9MYXNlclRvb2wvTGFzZXJUb29sT3ZlcmxheS5zY3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDaUk7QUFDakI7QUFDaEgsOEJBQThCLHVHQUEyQixDQUFDLGdIQUFxQztBQUMvRjtBQUNBLHlFQUF5RSx5QkFBeUIsaUJBQWlCLGtCQUFrQixvQkFBb0IsV0FBVyxZQUFZLGVBQWUsR0FBRyx5REFBeUQsMEJBQTBCLHNCQUFzQix1QkFBdUIsV0FBVyxZQUFZLEdBQUcsT0FBTyxtSEFBbUgsV0FBVyxVQUFVLFVBQVUsVUFBVSxVQUFVLFVBQVUsVUFBVSxLQUFLLEtBQUssV0FBVyxXQUFXLFdBQVcsVUFBVSxVQUFVLHNDQUFzQyx1QkFBdUIsMkJBQTJCLG1CQUFtQixvQkFBb0Isc0JBQXNCLGFBQWEsY0FBYyxtQkFBbUIsaUNBQWlDLDhCQUE4QiwwQkFBMEIsMkJBQTJCLGVBQWUsZ0JBQWdCLE9BQU8sS0FBSyxHQUFHLHFCQUFxQjtBQUN0OUI7QUFDQSxpRUFBZSx1QkFBdUIsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL0xhc2VyVG9vbC9MYXNlclRvb2xPdmVybGF5LnNjc3M/MjQ0YSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIuZXhjYWxpZHJhdyAuTGFzZXJUb29sT3ZlcmxheSB7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG4gIHdpZHRoOiAxMDB2dztcXG4gIGhlaWdodDogMTAwdmg7XFxuICBwb3NpdGlvbjogZml4ZWQ7XFxuICB0b3A6IDA7XFxuICBsZWZ0OiAwO1xcbiAgei1pbmRleDogMjtcXG59XFxuLmV4Y2FsaWRyYXcgLkxhc2VyVG9vbE92ZXJsYXkgLkxhc2VyVG9vbE92ZXJsYXlDYW52YXMge1xcbiAgaW1hZ2UtcmVuZGVyaW5nOiBhdXRvO1xcbiAgb3ZlcmZsb3c6IHZpc2libGU7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDA7XFxuICBsZWZ0OiAwO1xcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi8uLi8uLi9jb21wb25lbnRzL0xhc2VyVG9vbC9MYXNlclRvb2xPdmVybGF5LnNjc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQ0U7RUFDRSxvQkFBQTtFQUNBLFlBQUE7RUFDQSxhQUFBO0VBQ0EsZUFBQTtFQUNBLE1BQUE7RUFDQSxPQUFBO0VBRUEsVUFBQTtBQURKO0FBR0k7RUFDRSxxQkFBQTtFQUNBLGlCQUFBO0VBQ0Esa0JBQUE7RUFDQSxNQUFBO0VBQ0EsT0FBQTtBQUROXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIi5leGNhbGlkcmF3IHtcXG4gIC5MYXNlclRvb2xPdmVybGF5IHtcXG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxuICAgIHdpZHRoOiAxMDB2dztcXG4gICAgaGVpZ2h0OiAxMDB2aDtcXG4gICAgcG9zaXRpb246IGZpeGVkO1xcbiAgICB0b3A6IDA7XFxuICAgIGxlZnQ6IDA7XFxuXFxuICAgIHotaW5kZXg6IDI7XFxuXFxuICAgIC5MYXNlclRvb2xPdmVybGF5Q2FudmFzIHtcXG4gICAgICBpbWFnZS1yZW5kZXJpbmc6IGF1dG87XFxuICAgICAgb3ZlcmZsb3c6IHZpc2libGU7XFxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICAgIHRvcDogMDtcXG4gICAgICBsZWZ0OiAwO1xcbiAgICB9XFxuICB9XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/LaserTool/LaserToolOverlay.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/LayerUI.scss": (
              /*!****************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/LayerUI.scss ***!
                \****************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");
/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");
/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);
// Imports


var ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
// Module
___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .layer-ui__wrapper.animate {\\n  transition: width 0.1s ease-in-out;\\n}\\n.excalidraw .layer-ui__wrapper {\\n  position: absolute;\\n  width: 100%;\\n  height: 100%;\\n  pointer-events: none;\\n  z-index: var(--zIndex-layerUI);\\n}\\n.excalidraw .layer-ui__wrapper__top-right {\\n  display: flex;\\n  gap: 0.75rem;\\n}\\n.excalidraw .layer-ui__wrapper__footer {\\n  width: 100%;\\n}\\n.excalidraw .layer-ui__wrapper__footer-right {\\n  z-index: 100;\\n  display: flex;\\n}\\n.excalidraw .layer-ui__wrapper .zen-mode-transition {\\n  transition: transform 0.5s ease-in-out;\\n}\\n:root[dir=ltr] .excalidraw .layer-ui__wrapper .zen-mode-transition.transition-left {\\n  transform: translate(-999px, 0);\\n}\\n:root[dir=ltr] .excalidraw .layer-ui__wrapper .zen-mode-transition.transition-right {\\n  transform: translate(999px, 0);\\n}\\n:root[dir=rtl] .excalidraw .layer-ui__wrapper .zen-mode-transition.transition-left {\\n  transform: translate(999px, 0);\\n}\\n:root[dir=rtl] .excalidraw .layer-ui__wrapper .zen-mode-transition.transition-right {\\n  transform: translate(-999px, 0);\\n}\\n.excalidraw .layer-ui__wrapper .zen-mode-transition.layer-ui__wrapper__footer-left--transition-bottom {\\n  transform: translate(0, 92px);\\n}\\n.excalidraw .layer-ui__wrapper .disable-zen-mode {\\n  padding: 10px;\\n  position: absolute;\\n  bottom: 0;\\n  opacity: 0;\\n  visibility: hidden;\\n  transition: visibility 0s linear 0s, opacity 0.5s;\\n  font-family: var(--ui-font);\\n  font-size: 0.75rem;\\n  font-weight: 500;\\n  line-height: 1;\\n  border-radius: var(--border-radius-lg);\\n  border: 1px solid var(--default-border-color);\\n  background-color: var(--island-bg-color);\\n  color: var(--text-primary-color);\\n}\\n[dir=ltr] .excalidraw .layer-ui__wrapper .disable-zen-mode {\\n  right: 1rem;\\n}\\n[dir=rtl] .excalidraw .layer-ui__wrapper .disable-zen-mode {\\n  left: 1rem;\\n}\\n.excalidraw .layer-ui__wrapper .disable-zen-mode:hover {\\n  background-color: var(--button-hover-bg);\\n}\\n.excalidraw .layer-ui__wrapper .disable-zen-mode:active {\\n  border-color: var(--color-primary);\\n}\\n.excalidraw .layer-ui__wrapper .disable-zen-mode--visible {\\n  opacity: 1;\\n  visibility: visible;\\n  transition: visibility 0s linear 300ms, opacity 0.5s;\\n  transition-delay: 0.8s;\\n  pointer-events: var(--ui-pointerEvents);\\n}\\n.excalidraw .layer-ui__wrapper .layer-ui__wrapper__footer-left > *,\\n.excalidraw .layer-ui__wrapper .footer-center > *,\\n.excalidraw .layer-ui__wrapper .layer-ui__wrapper__footer-right > * {\\n  pointer-events: var(--ui-pointerEvents);\\n}\\n.excalidraw .layer-ui__wrapper .layer-ui__wrapper__footer-right {\\n  margin-top: auto;\\n  margin-bottom: auto;\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/LayerUI.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AACE;EACE,kCAAA;AAEJ;AAAE;EAME,kBAAA;EACA,WAAA;EACA,YAAA;EACA,oBAAA;EACA,8BAAA;AAHJ;AAKI;EACE,aAAA;EACA,YAAA;AAHN;AAMI;EACE,WAAA;AAJN;AAMM;EACE,YAAA;EACA,aAAA;AAJR;AAQI;EACE,sCAAA;AANN;AAQM;EACE,+BAAA;AANR;AASM;EACE,8BAAA;AAPR;AAUM;EACE,8BAAA;AARR;AAWM;EACE,+BAAA;AATR;AAYM;EACE,6BAAA;AAVR;AAcI;EACE,aAAA;EACA,kBAAA;EACA,SAAA;EAOA,UAAA;EACA,kBAAA;EACA,iDAAA;EAEA,2BAAA;EACA,kBAAA;EACA,gBAAA;EACA,cAAA;EAEA,sCAAA;EACA,6CAAA;EACA,wCAAA;EACA,gCAAA;AApBN;AAEM;EACE,WAAA;AAAR;AAEM;EACE,UAAA;AAAR;AAgBM;EACE,wCAAA;AAdR;AAgBM;EACE,kCAAA;AAdR;AAiBM;EACE,UAAA;EACA,mBAAA;EACA,oDAAA;EACA,sBAAA;EAEA,uCAAA;AAhBR;AAuBM;;;EACE,uCAAA;AAnBR;AAuBI;EACE,gBAAA;EACA,mBAAA;AArBN","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"open-color/open-color\\";\\n@import \\"../css/variables.module\\";\\n\\n.excalidraw {\\n  .layer-ui__wrapper.animate {\\n    transition: width 0.1s ease-in-out;\\n  }\\n  .layer-ui__wrapper {\\n    // when the rightside sidebar is docked, we need to resize the UI by its\\n    // width, making the nested UI content shift to the left. To do this,\\n    // we need the UI container to actually have dimensions set, but\\n    // then we also need to disable pointer events else the canvas below\\n    // wouldn't be interactive.\\n    position: absolute;\\n    width: 100%;\\n    height: 100%;\\n    pointer-events: none;\\n    z-index: var(--zIndex-layerUI);\\n\\n    &__top-right {\\n      display: flex;\\n      gap: 0.75rem;\\n    }\\n\\n    &__footer {\\n      width: 100%;\\n\\n      &-right {\\n        z-index: 100;\\n        display: flex;\\n      }\\n    }\\n\\n    .zen-mode-transition {\\n      transition: transform 0.5s ease-in-out;\\n\\n      :root[dir=\\"ltr\\"] &.transition-left {\\n        transform: translate(-999px, 0);\\n      }\\n\\n      :root[dir=\\"ltr\\"] &.transition-right {\\n        transform: translate(999px, 0);\\n      }\\n\\n      :root[dir=\\"rtl\\"] &.transition-left {\\n        transform: translate(999px, 0);\\n      }\\n\\n      :root[dir=\\"rtl\\"] &.transition-right {\\n        transform: translate(-999px, 0);\\n      }\\n\\n      &.layer-ui__wrapper__footer-left--transition-bottom {\\n        transform: translate(0, 92px);\\n      }\\n    }\\n\\n    .disable-zen-mode {\\n      padding: 10px;\\n      position: absolute;\\n      bottom: 0;\\n      [dir=\\"ltr\\"] & {\\n        right: 1rem;\\n      }\\n      [dir=\\"rtl\\"] & {\\n        left: 1rem;\\n      }\\n      opacity: 0;\\n      visibility: hidden;\\n      transition: visibility 0s linear 0s, opacity 0.5s;\\n\\n      font-family: var(--ui-font);\\n      font-size: 0.75rem;\\n      font-weight: 500;\\n      line-height: 1;\\n\\n      border-radius: var(--border-radius-lg);\\n      border: 1px solid var(--default-border-color);\\n      background-color: var(--island-bg-color);\\n      color: var(--text-primary-color);\\n\\n      &:hover {\\n        background-color: var(--button-hover-bg);\\n      }\\n      &:active {\\n        border-color: var(--color-primary);\\n      }\\n\\n      &--visible {\\n        opacity: 1;\\n        visibility: visible;\\n        transition: visibility 0s linear 300ms, opacity 0.5s;\\n        transition-delay: 0.8s;\\n\\n        pointer-events: var(--ui-pointerEvents);\\n      }\\n    }\\n\\n    .layer-ui__wrapper__footer-left,\\n    .footer-center,\\n    .layer-ui__wrapper__footer-right {\\n      & > * {\\n        pointer-events: var(--ui-pointerEvents);\\n      }\\n    }\\n\\n    .layer-ui__wrapper__footer-right {\\n      margin-top: auto;\\n      margin-bottom: auto;\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);
// Exports
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 17300 characters]
//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/LayerUI.scss
`);
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/LibraryMenu.scss": (
              /*!********************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/LibraryMenu.scss ***!
                \********************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ".excalidraw .layer-ui__library {\\n  display: flex;\\n  flex-direction: column;\\n  flex: 1 1 auto;\\n}\\n.excalidraw .library-actions-counter {\\n  background-color: var(--color-primary);\\n  color: var(--color-primary-light);\\n  font-weight: bold;\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  border-radius: 50%;\\n  width: 1rem;\\n  height: 1rem;\\n  position: absolute;\\n  bottom: -0.25rem;\\n  right: -0.25rem;\\n  font-size: 0.625rem;\\n  pointer-events: none;\\n}\\n.excalidraw .layer-ui__library-message {\\n  padding: 2rem;\\n  min-width: 200px;\\n  display: flex;\\n  flex-direction: column;\\n  align-items: center;\\n  flex-grow: 1;\\n  justify-content: center;\\n}\\n.excalidraw .layer-ui__library-message span {\\n  font-size: 0.8em;\\n}\\n.excalidraw .publish-library-success .Dialog__content {\\n  display: flex;\\n  flex-direction: column;\\n}\\n.excalidraw .publish-library-success-close.ToolIcon_type_button {\\n  background-color: #228be6;\\n  align-self: flex-end;\\n}\\n.excalidraw .publish-library-success-close.ToolIcon_type_button:hover {\\n  background-color: #1971c2;\\n}\\n.excalidraw .publish-library-success-close.ToolIcon_type_button .ToolIcon__icon {\\n  width: auto;\\n  font-size: 1rem;\\n  color: #ffffff;\\n  padding: 0 0.5rem;\\n}\\n.excalidraw .library-menu-control-buttons {\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  gap: 0.625rem;\\n  position: relative;\\n}\\n.excalidraw .library-menu-control-buttons--at-bottom::before {\\n  content: \\"\\";\\n  width: calc(100% - 1.5rem);\\n  height: 1px;\\n  position: absolute;\\n  top: -1px;\\n  background: var(--sidebar-border-color);\\n}\\n.excalidraw .library-menu-browse-button {\\n  flex: 1;\\n  height: var(--lg-button-size);\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  overflow: hidden;\\n  position: relative;\\n  border-radius: var(--border-radius-lg);\\n  background-color: var(--color-primary);\\n  color: #ffffff;\\n  text-align: center;\\n  white-space: nowrap;\\n  text-decoration: none !important;\\n  font-weight: 600;\\n  font-size: 0.75rem;\\n}\\n.excalidraw .library-menu-browse-button:hover {\\n  background-color: var(--color-brand-hover);\\n}\\n.excalidraw .library-menu-browse-button:active {\\n  background-color: var(--color-brand-active);\\n}\\n.excalidraw.theme--dark .library-menu-browse-button {\\n  color: var(--color-gray-100);\\n}\\n.excalidraw.excalidraw--mobile .library-menu-browse-button {\\n  height: var(--default-button-size);\\n}\\n.excalidraw .layer-ui__library .dropdown-menu {\\n  width: auto;\\n  top: initial;\\n  right: 0;\\n  left: initial;\\n  bottom: 100%;\\n  margin-bottom: 0.625rem;\\n}\\n.excalidraw .layer-ui__library .dropdown-menu .dropdown-menu-container {\\n  width: 196px;\\n  box-shadow: var(--library-dropdown-shadow);\\n  border-radius: var(--border-radius-lg);\\n  padding: 0.25rem 0.5rem;\\n}\\n.excalidraw .layer-ui__library .library-menu-dropdown-container {\\n  position: relative;\\n}\\n.excalidraw .layer-ui__library .library-menu-dropdown-container--in-heading {\\n  padding: 0;\\n  position: absolute;\\n  top: 1rem;\\n  right: 0.75rem;\\n  z-index: 1;\\n}\\n.excalidraw .layer-ui__library .library-menu-dropdown-container--in-heading .dropdown-menu {\\n  top: 100%;\\n}", "",{"version":3,"sources":["webpack://./../../components/LibraryMenu.scss","webpack://./../../../node_modules/open-color/open-color.scss"],"names":[],"mappings":"AAGE;EACE,aAAA;EACA,sBAAA;EAEA,cAAA;AAHJ;AAME;EACE,sCAAA;EACA,iCAAA;EACA,iBAAA;EACA,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,kBAAA;EACA,WAAA;EACA,YAAA;EACA,kBAAA;EACA,gBAAA;EACA,eAAA;EACA,mBAAA;EACA,oBAAA;AAJJ;AAOE;EACE,aAAA;EACA,gBAAA;EACA,aAAA;EACA,sBAAA;EACA,mBAAA;EACA,YAAA;EACA,uBAAA;AALJ;AAOI;EACE,gBAAA;AALN;AAUI;EACE,aAAA;EACA,sBAAA;AARN;AAWI;EACE,yBC6JM;ED5JN,oBAAA;AATN;AAUM;EACE,yBC4JI;ADpKZ;AAUM;EACE,WAAA;EACA,eAAA;EACA,cC7CW;ED8CX,iBAAA;AARR;AAaE;EACE,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,aAAA;EACA,kBAAA;AAXJ;AAaI;EACE,WAAA;EACA,0BAAA;EACA,WAAA;EACA,kBAAA;EACA,SAAA;EACA,uCAAA;AAXN;AAeE;EACE,OAAA;EAEA,6BAAA;EAEA,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,gBAAA;EACA,kBAAA;EAEA,sCAAA;EACA,sCAAA;EACA,cCjFe;EDkFf,kBAAA;EACA,mBAAA;EACA,gCAAA;EAEA,gBAAA;EACA,kBAAA;AAjBJ;AAmBI;EACE,0CAAA;AAjBN;AAmBI;EACE,2CAAA;AAjBN;AAsBI;EACE,4BAAA;AApBN;AAwBE;EACE,kCAAA;AAtBJ;AAyBE;EACE,WAAA;EACA,YAAA;EACA,QAAA;EACA,aAAA;EACA,YAAA;EACA,uBAAA;AAvBJ;AAyBI;EACE,YAAA;EACA,0CAAA;EACA,sCAAA;EACA,uBAAA;AAvBN;AA2BE;EACE,kBAAA;AAzBJ;AA2BI;EACE,UAAA;EACA,kBAAA;EACA,SAAA;EACA,cAAA;EACA,UAAA;AAzBN;AA2BM;EACE,SAAA;AAzBR","sourcesContent":["@import \\"open-color/open-color\\";\\n\\n.excalidraw {\\n  .layer-ui__library {\\n    display: flex;\\n    flex-direction: column;\\n\\n    flex: 1 1 auto;\\n  }\\n\\n  .library-actions-counter {\\n    background-color: var(--color-primary);\\n    color: var(--color-primary-light);\\n    font-weight: bold;\\n    display: flex;\\n    align-items: center;\\n    justify-content: center;\\n    border-radius: 50%;\\n    width: 1rem;\\n    height: 1rem;\\n    position: absolute;\\n    bottom: -0.25rem;\\n    right: -0.25rem;\\n    font-size: 0.625rem;\\n    pointer-events: none;\\n  }\\n\\n  .layer-ui__library-message {\\n    padding: 2rem;\\n    min-width: 200px;\\n    display: flex;\\n    flex-direction: column;\\n    align-items: center;\\n    flex-grow: 1;\\n    justify-content: center;\\n\\n    span {\\n      font-size: 0.8em;\\n    }\\n  }\\n\\n  .publish-library-success {\\n    .Dialog__content {\\n      display: flex;\\n      flex-direction: column;\\n    }\\n\\n    &-close.ToolIcon_type_button {\\n      background-color: $oc-blue-6;\\n      align-self: flex-end;\\n      &:hover {\\n        background-color: $oc-blue-8;\\n      }\\n      .ToolIcon__icon {\\n        width: auto;\\n        font-size: 1rem;\\n        color: $oc-white;\\n        padding: 0 0.5rem;\\n      }\\n    }\\n  }\\n\\n  .library-menu-control-buttons {\\n    display: flex;\\n    align-items: center;\\n    justify-content: center;\\n    gap: 0.625rem;\\n    position: relative;\\n\\n    &--at-bottom::before {\\n      content: \\"\\";\\n      width: calc(100% - 1.5rem);\\n      height: 1px;\\n      position: absolute;\\n      top: -1px;\\n      background: var(--sidebar-border-color);\\n    }\\n  }\\n\\n  .library-menu-browse-button {\\n    flex: 1;\\n\\n    height: var(--lg-button-size);\\n\\n    display: flex;\\n    align-items: center;\\n    justify-content: center;\\n    overflow: hidden;\\n    position: relative;\\n\\n    border-radius: var(--border-radius-lg);\\n    background-color: var(--color-primary);\\n    color: $oc-white;\\n    text-align: center;\\n    white-space: nowrap;\\n    text-decoration: none !important;\\n\\n    font-weight: 600;\\n    font-size: 0.75rem;\\n\\n    &:hover {\\n      background-color: var(--color-brand-hover);\\n    }\\n    &:active {\\n      background-color: var(--color-brand-active);\\n    }\\n  }\\n\\n  &.theme--dark {\\n    .library-menu-browse-button {\\n      color: var(--color-gray-100);\\n    }\\n  }\\n\\n  &.excalidraw--mobile .library-menu-browse-button {\\n    height: var(--default-button-size);\\n  }\\n\\n  .layer-ui__library .dropdown-menu {\\n    width: auto;\\n    top: initial;\\n    right: 0;\\n    left: initial;\\n    bottom: 100%;\\n    margin-bottom: 0.625rem;\\n\\n    .dropdown-menu-container {\\n      width: 196px;\\n      box-shadow: var(--library-dropdown-shadow);\\n      border-radius: var(--border-radius-lg);\\n      padding: 0.25rem 0.5rem;\\n    }\\n  }\\n\\n  .layer-ui__library .library-menu-dropdown-container {\\n    position: relative;\\n\\n    &--in-heading {\\n      padding: 0;\\n      position: absolute;\\n      top: 1rem;\\n      right: 0.75rem;\\n      z-index: 1;\\n\\n      .dropdown-menu {\\n        top: 100%;\\n      }\\n    }\\n  }\\n}\\n","//\\n//\\n//  \u{1D5D6} \u{1D5E2} \u{1D5DF} \u{1D5E2} \u{1D5E5}\\n//  v 1.9.1\\n//\\n//  \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\\n\\n\\n//  General\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-white:         #ffffff;\\n$oc-black:         #000000;\\n\\n\\n//  Gray\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-gray-list: (\\n  \\"0\\": #f8f9fa,\\n  \\"1\\": #f1f3f5,\\n  \\"2\\": #e9ecef,\\n  \\"3\\": #dee2e6,\\n  \\"4\\": #ced4da,\\n  \\"5\\": #adb5bd,\\n  \\"6\\": #868e96,\\n  \\"7\\": #495057,\\n  \\"8\\": #343a40,\\n  \\"9\\": #212529\\n);\\n\\n$oc-gray-0: map-get($oc-gray-list, \\"0\\");\\n$oc-gray-1: map-get($oc-gray-list, \\"1\\");\\n$oc-gray-2: map-get($oc-gray-list, \\"2\\");\\n$oc-gray-3: map-get($oc-gray-list, \\"3\\");\\n$oc-gray-4: map-get($oc-gray-list, \\"4\\");\\n$oc-gray-5: map-get($oc-gray-list, \\"5\\");\\n$oc-gray-6: map-get($oc-gray-list, \\"6\\");\\n$oc-gray-7: map-get($oc-gray-list, \\"7\\");\\n$oc-gray-8: map-get($oc-gray-list, \\"8\\");\\n$oc-gray-9: map-get($oc-gray-list, \\"9\\");\\n\\n\\n//  Red\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-red-list: (\\n  \\"0\\": #fff5f5,\\n  \\"1\\": #ffe3e3,\\n  \\"2\\": #ffc9c9,\\n  \\"3\\": #ffa8a8,\\n  \\"4\\": #ff8787,\\n  \\"5\\": #ff6b6b,\\n  \\"6\\": #fa5252,\\n  \\"7\\": #f03e3e,\\n  \\"8\\": #e03131,\\n  \\"9\\": #c92a2a\\n);\\n\\n$oc-red-0: map-get($oc-red-list, \\"0\\");\\n$oc-red-1: map-get($oc-red-list, \\"1\\");\\n$oc-red-2: map-get($oc-red-list, \\"2\\");\\n$oc-red-3: map-get($oc-red-list, \\"3\\");\\n$oc-red-4: map-get($oc-red-list, \\"4\\");\\n$oc-red-5: map-get($oc-red-list, \\"5\\");\\n$oc-red-6: map-get($oc-red-list, \\"6\\");\\n$oc-red-7: map-get($oc-red-list, \\"7\\");\\n$oc-red-8: map-get($oc-red-list, \\"8\\");\\n$oc-red-9: map-get($oc-red-list, \\"9\\");\\n\\n\\n//  Pink\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-pink-list: (\\n  \\"0\\": #fff0f6,\\n  \\"1\\": #ffdeeb,\\n  \\"2\\": #fcc2d7,\\n  \\"3\\": #faa2c1,\\n  \\"4\\": #f783ac,\\n  \\"5\\": #f06595,\\n  \\"6\\": #e64980,\\n  \\"7\\": #d6336c,\\n  \\"8\\": #c2255c,\\n  \\"9\\": #a61e4d\\n);\\n\\n$oc-pink-0: map-get($oc-pink-list, \\"0\\");\\n$oc-pink-1: map-get($oc-pink-list, \\"1\\");\\n$oc-pink-2: map-get($oc-pink-list, \\"2\\");\\n$oc-pink-3: map-get($oc-pink-list, \\"3\\");\\n$oc-pink-4: map-get($oc-pink-list, \\"4\\");\\n$oc-pink-5: map-get($oc-pink-list, \\"5\\");\\n$oc-pink-6: map-get($oc-pink-list, \\"6\\");\\n$oc-pink-7: map-get($oc-pink-list, \\"7\\");\\n$oc-pink-8: map-get($oc-pink-list, \\"8\\");\\n$oc-pink-9: map-get($oc-pink-list, \\"9\\");\\n\\n\\n//  Grape\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-grape-list: (\\n  \\"0\\": #f8f0fc,\\n  \\"1\\": #f3d9fa,\\n  \\"2\\": #eebefa,\\n  \\"3\\": #e599f7,\\n  \\"4\\": #da77f2,\\n  \\"5\\": #cc5de8,\\n  \\"6\\": #be4bdb,\\n  \\"7\\": #ae3ec9,\\n  \\"8\\": #9c36b5,\\n  \\"9\\": #862e9c\\n);\\n\\n$oc-grape-0: map-get($oc-grape-list, \\"0\\");\\n$oc-grape-1: map-get($oc-grape-list, \\"1\\");\\n$oc-grape-2: map-get($oc-grape-list, \\"2\\");\\n$oc-grape-3: map-get($oc-grape-list, \\"3\\");\\n$oc-grape-4: map-get($oc-grape-list, \\"4\\");\\n$oc-grape-5: map-get($oc-grape-list, \\"5\\");\\n$oc-grape-6: map-get($oc-grape-list, \\"6\\");\\n$oc-grape-7: map-get($oc-grape-list, \\"7\\");\\n$oc-grape-8: map-get($oc-grape-list, \\"8\\");\\n$oc-grape-9: map-get($oc-grape-list, \\"9\\");\\n\\n\\n//  Violet\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-violet-list: (\\n  \\"0\\": #f3f0ff,\\n  \\"1\\": #e5dbff,\\n  \\"2\\": #d0bfff,\\n  \\"3\\": #b197fc,\\n  \\"4\\": #9775fa,\\n  \\"5\\": #845ef7,\\n  \\"6\\": #7950f2,\\n  \\"7\\": #7048e8,\\n  \\"8\\": #6741d9,\\n  \\"9\\": #5f3dc4\\n);\\n\\n$oc-violet-0: map-get($oc-violet-list, \\"0\\");\\n$oc-violet-1: map-get($oc-violet-list, \\"1\\");\\n$oc-violet-2: map-get($oc-violet-list, \\"2\\");\\n$oc-violet-3: map-get($oc-violet-list, \\"3\\");\\n$oc-violet-4: map-get($oc-violet-list, \\"4\\");\\n$oc-violet-5: map-get($oc-violet-list, \\"5\\");\\n$oc-violet-6: map-get($oc-violet-list, \\"6\\");\\n$oc-violet-7: map-get($oc-violet-list, \\"7\\");\\n$oc-violet-8: map-get($oc-violet-list, \\"8\\");\\n$oc-violet-9: map-get($oc-violet-list, \\"9\\");\\n\\n\\n//  Indigo\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-indigo-list: (\\n  \\"0\\": #edf2ff,\\n  \\"1\\": #dbe4ff,\\n  \\"2\\": #bac8ff,\\n  \\"3\\": #91a7ff,\\n  \\"4\\": #748ffc,\\n  \\"5\\": #5c7cfa,\\n  \\"6\\": #4c6ef5,\\n  \\"7\\": #4263eb,\\n  \\"8\\": #3b5bdb,\\n  \\"9\\": #364fc7\\n);\\n\\n$oc-indigo-0: map-get($oc-indigo-list, \\"0\\");\\n$oc-indigo-1: map-get($oc-indigo-list, \\"1\\");\\n$oc-indigo-2: map-get($oc-indigo-list, \\"2\\");\\n$oc-indigo-3: map-get($oc-indigo-list, \\"3\\");\\n$oc-indigo-4: map-get($oc-indigo-list, \\"4\\");\\n$oc-indigo-5: map-get($oc-indigo-list, \\"5\\");\\n$oc-indigo-6: map-get($oc-indigo-list, \\"6\\");\\n$oc-indigo-7: map-get($oc-indigo-list, \\"7\\");\\n$oc-indigo-8: map-get($oc-indigo-list, \\"8\\");\\n$oc-indigo-9: map-get($oc-indigo-list, \\"9\\");\\n\\n\\n//  Blue\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-blue-list: (\\n  \\"0\\": #e7f5ff,\\n  \\"1\\": #d0ebff,\\n  \\"2\\": #a5d8ff,\\n  \\"3\\": #74c0fc,\\n  \\"4\\": #4dabf7,\\n  \\"5\\": #339af0,\\n  \\"6\\": #228be6,\\n  \\"7\\": #1c7ed6,\\n  \\"8\\": #1971c2,\\n  \\"9\\": #1864ab\\n);\\n\\n$oc-blue-0: map-get($oc-blue-list, \\"0\\");\\n$oc-blue-1: map-get($oc-blue-list, \\"1\\");\\n$oc-blue-2: map-get($oc-blue-list, \\"2\\");\\n$oc-blue-3: map-get($oc-blue-list, \\"3\\");\\n$oc-blue-4: map-get($oc-blue-list, \\"4\\");\\n$oc-blue-5: map-get($oc-blue-list, \\"5\\");\\n$oc-blue-6: map-get($oc-blue-list, \\"6\\");\\n$oc-blue-7: map-get($oc-blue-list, \\"7\\");\\n$oc-blue-8: map-get($oc-blue-list, \\"8\\");\\n$oc-blue-9: map-get($oc-blue-list, \\"9\\");\\n\\n\\n//  Cyan\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-cyan-list: (\\n  \\"0\\": #e3fafc,\\n  \\"1\\": #c5f6fa,\\n  \\"2\\": #99e9f2,\\n  \\"3\\": #66d9e8,\\n  \\"4\\": #3bc9db,\\n  \\"5\\": #22b8cf,\\n  \\"6\\": #15aabf,\\n  \\"7\\": #1098ad,\\n  \\"8\\": #0c8599,\\n  \\"9\\": #0b7285\\n);\\n\\n$oc-cyan-0: map-get($oc-cyan-list, \\"0\\");\\n$oc-cyan-1: map-get($oc-cyan-list, \\"1\\");\\n$oc-cyan-2: map-get($oc-cyan-list, \\"2\\");\\n$oc-cyan-3: map-get($oc-cyan-list, \\"3\\");\\n$oc-cyan-4: map-get($oc-cyan-list, \\"4\\");\\n$oc-cyan-5: map-get($oc-cyan-list, \\"5\\");\\n$oc-cyan-6: map-get($oc-cyan-list, \\"6\\");\\n$oc-cyan-7: map-get($oc-cyan-list, \\"7\\");\\n$oc-cyan-8: map-get($oc-cyan-list, \\"8\\");\\n$oc-cyan-9: map-get($oc-cyan-list, \\"9\\");\\n\\n\\n//  Teal\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-teal-list: (\\n  \\"0\\": #e6fcf5,\\n  \\"1\\": #c3fae8,\\n  \\"2\\": #96f2d7,\\n  \\"3\\": #63e6be,\\n  \\"4\\": #38d9a9,\\n  \\"5\\": #20c997,\\n  \\"6\\": #12b886,\\n  \\"7\\": #0ca678,\\n  \\"8\\": #099268,\\n  \\"9\\": #087f5b\\n);\\n\\n$oc-teal-0: map-get($oc-teal-list, \\"0\\");\\n$oc-teal-1: map-get($oc-teal-list, \\"1\\");\\n$oc-teal-2: map-get($oc-teal-list, \\"2\\");\\n$oc-teal-3: map-get($oc-teal-list, \\"3\\");\\n$oc-teal-4: map-get($oc-teal-list, \\"4\\");\\n$oc-teal-5: map-get($oc-teal-list, \\"5\\");\\n$oc-teal-6: map-get($oc-teal-list, \\"6\\");\\n$oc-teal-7: map-get($oc-teal-list, \\"7\\");\\n$oc-teal-8: map-get($oc-teal-list, \\"8\\");\\n$oc-teal-9: map-get($oc-teal-list, \\"9\\");\\n\\n\\n//  Green\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-green-list: (\\n  \\"0\\": #ebfbee,\\n  \\"1\\": #d3f9d8,\\n  \\"2\\": #b2f2bb,\\n  \\"3\\": #8ce99a,\\n  \\"4\\": #69db7c,\\n  \\"5\\": #51cf66,\\n  \\"6\\": #40c057,\\n  \\"7\\": #37b24d,\\n  \\"8\\": #2f9e44,\\n  \\"9\\": #2b8a3e\\n);\\n\\n$oc-green-0: map-get($oc-green-list, \\"0\\");\\n$oc-green-1: map-get($oc-green-list, \\"1\\");\\n$oc-green-2: map-get($oc-green-list, \\"2\\");\\n$oc-green-3: map-get($oc-green-list, \\"3\\");\\n$oc-green-4: map-get($oc-green-list, \\"4\\");\\n$oc-green-5: map-get($oc-green-list, \\"5\\");\\n$oc-green-6: map-get($oc-green-list, \\"6\\");\\n$oc-green-7: map-get($oc-green-list, \\"7\\");\\n$oc-green-8: map-get($oc-green-list, \\"8\\");\\n$oc-green-9: map-get($oc-green-list, \\"9\\");\\n\\n\\n//  Lime\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-lime-list: (\\n  \\"0\\": #f4fce3,\\n  \\"1\\": #e9fac8,\\n  \\"2\\": #d8f5a2,\\n  \\"3\\": #c0eb75,\\n  \\"4\\": #a9e34b,\\n  \\"5\\": #94d82d,\\n  \\"6\\": #82c91e,\\n  \\"7\\": #74b816,\\n  \\"8\\": #66a80f,\\n  \\"9\\": #5c940d\\n);\\n\\n$oc-lime-0: map-get($oc-lime-list, \\"0\\");\\n$oc-lime-1: map-get($oc-lime-list, \\"1\\");\\n$oc-lime-2: map-get($oc-lime-list, \\"2\\");\\n$oc-lime-3: map-get($oc-lime-list, \\"3\\");\\n$oc-lime-4: map-get($oc-lime-list, \\"4\\");\\n$oc-lime-5: map-get($oc-lime-list, \\"5\\");\\n$oc-lime-6: map-get($oc-lime-list, \\"6\\");\\n$oc-lime-7: map-get($oc-lime-list, \\"7\\");\\n$oc-lime-8: map-get($oc-lime-list, \\"8\\");\\n$oc-lime-9: map-get($oc-lime-list, \\"9\\");\\n\\n\\n//  Yellow\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-yellow-list: (\\n  \\"0\\": #fff9db,\\n  \\"1\\": #fff3bf,\\n  \\"2\\": #ffec99,\\n  \\"3\\": #ffe066,\\n  \\"4\\": #ffd43b,\\n  \\"5\\": #fcc419,\\n  \\"6\\": #fab005,\\n  \\"7\\": #f59f00,\\n  \\"8\\": #f08c00,\\n  \\"9\\": #e67700\\n);\\n\\n$oc-yellow-0: map-get($oc-yellow-list, \\"0\\");\\n$oc-yellow-1: map-get($oc-yellow-list, \\"1\\");\\n$oc-yellow-2: map-get($oc-yellow-list, \\"2\\");\\n$oc-yellow-3: map-get($oc-yellow-list, \\"3\\");\\n$oc-yellow-4: map-get($oc-yellow-list, \\"4\\");\\n$oc-yellow-5: map-get($oc-yellow-list, \\"5\\");\\n$oc-yellow-6: map-get($oc-yellow-list, \\"6\\");\\n$oc-yellow-7: map-get($oc-yellow-list, \\"7\\");\\n$oc-yellow-8: map-get($oc-yellow-list, \\"8\\");\\n$oc-yellow-9: map-get($oc-yellow-list, \\"9\\");\\n\\n\\n//  Orange\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-orange-list: (\\n  \\"0\\": #fff4e6,\\n  \\"1\\": #ffe8cc,\\n  \\"2\\": #ffd8a8,\\n  \\"3\\": #ffc078,\\n  \\"4\\": #ffa94d,\\n  \\"5\\": #ff922b,\\n  \\"6\\": #fd7e14,\\n  \\"7\\": #f76707,\\n  \\"8\\": #e8590c,\\n  \\"9\\": #d9480f\\n);\\n\\n$oc-orange-0: map-get($oc-orange-list, \\"0\\");\\n$oc-orange-1: map-get($oc-orange-list, \\"1\\");\\n$oc-orange-2: map-get($oc-orange-list, \\"2\\");\\n$oc-orange-3: map-get($oc-orange-list, \\"3\\");\\n$oc-orange-4: map-get($oc-orange-list, \\"4\\");\\n$oc-orange-5: map-get($oc-orange-list, \\"5\\");\\n$oc-orange-6: map-get($oc-orange-list, \\"6\\");\\n$oc-orange-7: map-get($oc-orange-list, \\"7\\");\\n$oc-orange-8: map-get($oc-orange-list, \\"8\\");\\n$oc-orange-9: map-get($oc-orange-list, \\"9\\");\\n\\n\\n//  Color list\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-color-spectrum:   9;\\n\\n$oc-color-list: (\\n  $oc-gray-list:      \\"gray\\",\\n  $oc-red-list:      \\"red\\",\\n  $oc-pink-list:      \\"pink\\",\\n  $oc-grape-list:      \\"grape\\",\\n  $oc-violet-list:      \\"violet\\",\\n  $oc-indigo-list:      \\"indigo\\",\\n  $oc-blue-list:      \\"blue\\",\\n  $oc-cyan-list:      \\"cyan\\",\\n  $oc-teal-list:      \\"teal\\",\\n  $oc-green-list:      \\"green\\",\\n  $oc-lime-list:      \\"lime\\",\\n  $oc-yellow-list:      \\"yellow\\",\\n  $oc-orange-list:      \\"orange\\"\\n);\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 33180 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/LibraryMenu.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/LibraryMenuItems.scss": (
              /*!*************************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/LibraryMenuItems.scss ***!
                \*************************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");
/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");
/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);
// Imports


var ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
// Module
___CSS_LOADER_EXPORT___.push([module.id, ".excalidraw {\\n  --container-padding-y: 1.5rem;\\n  --container-padding-x: 0.75rem;\\n}\\n.excalidraw .library-menu-items__no-items {\\n  text-align: center;\\n  color: var(--color-gray-70);\\n  line-height: 1.5;\\n  font-size: 0.875rem;\\n  width: 100%;\\n}\\n.excalidraw .library-menu-items__no-items__label {\\n  color: var(--color-primary);\\n  font-weight: bold;\\n  font-size: 1.125rem;\\n  margin-bottom: 0.75rem;\\n}\\n.excalidraw.theme--dark .library-menu-items__no-items {\\n  color: var(--color-gray-40);\\n}\\n.excalidraw .library-menu-items-container {\\n  width: 100%;\\n  display: flex;\\n  flex-grow: 1;\\n  flex-shrink: 1;\\n  flex-basis: 0;\\n  overflow-y: auto;\\n  flex-direction: column;\\n  height: 100%;\\n  justify-content: center;\\n  margin: 0;\\n  position: relative;\\n}\\n.excalidraw .library-menu-items-container > div {\\n  padding-left: 0.75rem;\\n  padding-right: 0.75rem;\\n}\\n.excalidraw .library-menu-items-container__row {\\n  display: grid;\\n  grid-template-columns: repeat(4, 1fr);\\n  gap: 1rem;\\n}\\n.excalidraw .library-menu-items-container__items {\\n  row-gap: 0.5rem;\\n  padding: var(--container-padding-y) 0;\\n  flex: 1;\\n  overflow-y: auto;\\n  overflow-x: hidden;\\n  margin-bottom: 1rem;\\n}\\n.excalidraw .library-menu-items-container__header {\\n  color: var(--color-primary);\\n  font-size: 1.125rem;\\n  font-weight: bold;\\n  margin-bottom: 0.75rem;\\n  width: 100%;\\n  padding-right: 4rem;\\n  box-sizing: border-box;\\n}\\n.excalidraw .library-menu-items-container__header--excal {\\n  margin-top: 2rem;\\n}\\n.excalidraw .library-menu-items-container__grid {\\n  display: grid;\\n  grid-template-columns: 1fr 1fr 1fr 1fr;\\n  grid-gap: 1rem;\\n}\\n.excalidraw .library-menu-items-container .separator {\\n  width: 100%;\\n  display: flex;\\n  align-items: center;\\n  font-weight: 500;\\n  font-size: 0.9rem;\\n  margin: 0.6em 0.2em;\\n  color: var(--text-primary-color);\\n}\\n.excalidraw .library-menu-items-private-library-container {\\n  min-height: 3.75rem;\\n  width: 100%;\\n}", "",{"version":3,"sources":["webpack://./../../components/LibraryMenuItems.scss"],"names":[],"mappings":"AAEA;EACE,6BAAA;EACA,8BAAA;AADF;AAGE;EACE,kBAAA;EACA,2BAAA;EACA,gBAAA;EACA,mBAAA;EACA,WAAA;AADJ;AAGI;EACE,2BAAA;EACA,iBAAA;EACA,mBAAA;EACA,sBAAA;AADN;AAMI;EACE,2BAAA;AAJN;AAQE;EACE,WAAA;EACA,aAAA;EACA,YAAA;EACA,cAAA;EACA,aAAA;EACA,gBAAA;EACA,sBAAA;EACA,YAAA;EACA,uBAAA;EACA,SAAA;EAEA,kBAAA;AAPJ;AASI;EACE,qBAAA;EACA,sBAAA;AAPN;AAUI;EACE,aAAA;EACA,qCAAA;EACA,SAAA;AARN;AAWI;EACE,eAAA;EACA,qCAAA;EACA,OAAA;EACA,gBAAA;EACA,kBAAA;EACA,mBAAA;AATN;AAYI;EACE,2BAAA;EACA,mBAAA;EACA,iBAAA;EACA,sBAAA;EACA,WAAA;EACA,mBAAA;EACA,sBAAA;AAVN;AAYM;EACE,gBAAA;AAVR;AAcI;EACE,aAAA;EACA,sCAAA;EACA,cAAA;AAZN;AAeI;EACE,WAAA;EACA,aAAA;EACA,mBAAA;EACA,gBAAA;EACA,iBAAA;EACA,mBAAA;EACA,gCAAA;AAbN;AAiBE;EAGE,mBAAA;EACA,WAAA;AAjBJ","sourcesContent":["@import \\"open-color/open-color\\";\\n\\n.excalidraw {\\n  --container-padding-y: 1.5rem;\\n  --container-padding-x: 0.75rem;\\n\\n  .library-menu-items__no-items {\\n    text-align: center;\\n    color: var(--color-gray-70);\\n    line-height: 1.5;\\n    font-size: 0.875rem;\\n    width: 100%;\\n\\n    &__label {\\n      color: var(--color-primary);\\n      font-weight: bold;\\n      font-size: 1.125rem;\\n      margin-bottom: 0.75rem;\\n    }\\n  }\\n\\n  &.theme--dark {\\n    .library-menu-items__no-items {\\n      color: var(--color-gray-40);\\n    }\\n  }\\n\\n  .library-menu-items-container {\\n    width: 100%;\\n    display: flex;\\n    flex-grow: 1;\\n    flex-shrink: 1;\\n    flex-basis: 0;\\n    overflow-y: auto;\\n    flex-direction: column;\\n    height: 100%;\\n    justify-content: center;\\n    margin: 0;\\n\\n    position: relative;\\n\\n    & > div {\\n      padding-left: 0.75rem;\\n      padding-right: 0.75rem;\\n    }\\n\\n    &__row {\\n      display: grid;\\n      grid-template-columns: repeat(4, 1fr);\\n      gap: 1rem;\\n    }\\n\\n    &__items {\\n      row-gap: 0.5rem;\\n      padding: var(--container-padding-y) 0;\\n      flex: 1;\\n      overflow-y: auto;\\n      overflow-x: hidden;\\n      margin-bottom: 1rem;\\n    }\\n\\n    &__header {\\n      color: var(--color-primary);\\n      font-size: 1.125rem;\\n      font-weight: bold;\\n      margin-bottom: 0.75rem;\\n      width: 100%;\\n      padding-right: 4rem; // due to dropdown button\\n      box-sizing: border-box;\\n\\n      &--excal {\\n        margin-top: 2rem;\\n      }\\n    }\\n\\n    &__grid {\\n      display: grid;\\n      grid-template-columns: 1fr 1fr 1fr 1fr;\\n      grid-gap: 1rem;\\n    }\\n\\n    .separator {\\n      width: 100%;\\n      display: flex;\\n      align-items: center;\\n      font-weight: 500;\\n      font-size: 0.9rem;\\n      margin: 0.6em 0.2em;\\n      color: var(--text-primary-color);\\n    }\\n  }\\n\\n  .library-menu-items-private-library-container {\\n    // so that when you toggle between pending item and no items, there's\\n    // no layout shift (this is hardcoded and works only with ENG locale)\\n    min-height: 3.75rem;\\n    width: 100%;\\n  }\\n}\\n"],"sourceRoot":""}]);
// Exports
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 10044 characters]
//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/LibraryMenuItems.scss
`);
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/LibraryUnit.scss": (
              /*!********************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/LibraryUnit.scss ***!
                \********************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .library-unit {\\n  align-items: center;\\n  border: 1px solid transparent;\\n  display: flex;\\n  justify-content: center;\\n  position: relative;\\n  width: 55px;\\n  height: 55px;\\n  box-sizing: border-box;\\n  border-radius: var(--border-radius-lg);\\n}\\n.excalidraw .library-unit svg {\\n  pointer-events: none;\\n}\\n.excalidraw .library-unit--hover {\\n  border-color: var(--color-primary);\\n}\\n.excalidraw .library-unit--selected {\\n  border-color: var(--color-primary);\\n  border-width: 1px;\\n}\\n.excalidraw .library-unit--skeleton {\\n  opacity: 0.5;\\n  background: linear-gradient(-45deg, var(--color-gray-10), var(--color-gray-20), var(--color-gray-10));\\n  background-size: 200% 200%;\\n  animation: library-unit__skeleton-opacity-animation 0.2s linear;\\n}\\n.excalidraw.theme--dark .library-unit--skeleton {\\n  background-image: linear-gradient(-45deg, var(--color-gray-100), var(--color-gray-80), var(--color-gray-100));\\n}\\n.excalidraw .library-unit__dragger {\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  height: 100%;\\n  width: 100%;\\n}\\n.excalidraw .library-unit__dragger > svg {\\n  filter: var(--theme-filter);\\n  flex-grow: 1;\\n  max-height: 100%;\\n  max-width: 100%;\\n}\\n.excalidraw .library-unit__checkbox-container,\\n.excalidraw .library-unit__checkbox-container:hover,\\n.excalidraw .library-unit__checkbox-container:active {\\n  align-items: center;\\n  background: none;\\n  border: none;\\n  color: var(--icon-fill-color);\\n  display: flex;\\n  justify-content: center;\\n  margin: 0;\\n  padding: 0.5rem;\\n  position: absolute;\\n  left: 2rem;\\n  bottom: 2rem;\\n  cursor: pointer;\\n}\\n.excalidraw .library-unit__checkbox-container input,\\n.excalidraw .library-unit__checkbox-container:hover input,\\n.excalidraw .library-unit__checkbox-container:active input {\\n  cursor: pointer;\\n}\\n.excalidraw .library-unit__checkbox {\\n  position: absolute;\\n  top: 0.125rem;\\n  right: 0.125rem;\\n  margin: 0;\\n}\\n.excalidraw .library-unit__checkbox .Checkbox-box {\\n  margin: 0;\\n  width: 1rem;\\n  height: 1rem;\\n  border-radius: 4px;\\n  background-color: var(--color-primary-light);\\n  border: 1px solid var(--color-primary);\\n  box-shadow: none !important;\\n  padding: 2px;\\n}\\n.excalidraw .library-unit__checkbox.Checkbox:hover .Checkbox-box {\\n  background-color: var(--color-primary-light);\\n}\\n.excalidraw .library-unit__checkbox.is-checked .Checkbox-box {\\n  background-color: var(--color-primary) !important;\\n}\\n.excalidraw .library-unit__checkbox.is-checked .Checkbox-box svg {\\n  color: var(--color-primary-light);\\n}\\n.excalidraw .library-unit__removeFromLibrary > svg {\\n  height: 16px;\\n  width: 16px;\\n}\\n.excalidraw .library-unit__adder {\\n  transform: scale(1);\\n  animation: library-unit__adder-animation 1s ease-in infinite;\\n  position: absolute;\\n  width: 1.5rem;\\n  height: 1.5rem;\\n  background-color: var(--color-primary);\\n  border-radius: var(--border-radius-md);\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  pointer-events: none;\\n}\\n.excalidraw .library-unit__adder svg {\\n  color: var(--color-primary-light);\\n  width: 1rem;\\n  height: 1rem;\\n}\\n.excalidraw .library-unit:active .library-unit__adder {\\n  animation: none;\\n  transform: scale(0.8);\\n}\\n.excalidraw .library-unit__active {\\n  cursor: pointer;\\n}\\n@keyframes library-unit__adder-animation {\\n  0% {\\n    transform: scale(0.85);\\n  }\\n  50% {\\n    transform: scale(1);\\n  }\\n  100% {\\n    transform: scale(0.85);\\n  }\\n}\\n@keyframes library-unit__skeleton-opacity-animation {\\n  0% {\\n    opacity: 0;\\n  }\\n  75% {\\n    opacity: 0;\\n  }\\n  100% {\\n    opacity: 0.5;\\n  }\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/LibraryUnit.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AAAE;EACE,mBAAA;EACA,6BAAA;EACA,aAAA;EACA,uBAAA;EACA,kBAAA;EACA,WAAA;EACA,YAAA;EACA,sBAAA;EACA,sCAAA;AAGJ;AADI;EAEE,oBAAA;AAEN;AACI;EACE,kCAAA;AACN;AAEI;EACE,kCAAA;EACA,iBAAA;AAAN;AAGI;EACE,YAAA;EACA,qGAAA;EAMA,0BAAA;EACA,+DAAA;AANN;AAUE;EACE,6GAAA;AARJ;AAgBE;EACE,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,YAAA;EACA,WAAA;AAdJ;AAiBE;EACE,2BAAA;EACA,YAAA;EACA,gBAAA;EACA,eAAA;AAfJ;AAkBE;;;EAGE,mBAAA;EACA,gBAAA;EACA,YAAA;EACA,6BAAA;EACA,aAAA;EACA,uBAAA;EACA,SAAA;EACA,eAAA;EACA,kBAAA;EACA,UAAA;EACA,YAAA;EACA,eAAA;AAhBJ;AAkBI;;;EACE,eAAA;AAdN;AAkBE;EACE,kBAAA;EACA,aAAA;EACA,eAAA;EACA,SAAA;AAhBJ;AAkBI;EACE,SAAA;EACA,WAAA;EACA,YAAA;EACA,kBAAA;EACA,4CAAA;EACA,sCAAA;EACA,2BAAA;EACA,YAAA;AAhBN;AAoBM;EACE,4CAAA;AAlBR;AAuBM;EACE,iDAAA;AArBR;AAuBQ;EACE,iCAAA;AArBV;AA2BE;EACE,YAAA;EACA,WAAA;AAzBJ;AA4BE;EACE,mBAAA;EACA,4DAAA;EAEA,kBAAA;EACA,aAAA;EACA,cAAA;EACA,sCAAA;EACA,sCAAA;EAEA,aAAA;EACA,uBAAA;EACA,mBAAA;EAEA,oBAAA;AA7BJ;AA+BI;EACE,iCAAA;EACA,WAAA;EACA,YAAA;AA7BN;AAiCE;EACE,eAAA;EACA,qBAAA;AA/BJ;AAkCE;EACE,eAAA;AAhCJ;AAmCE;EACE;IACE,sBAAA;EAjCJ;EAoCE;IACE,mBAAA;EAlCJ;EAqCE;IACE,sBAAA;EAnCJ;AACF;AAsCE;EACE;IACE,UAAA;EApCJ;EAuCE;IACE,UAAA;EArCJ;EAwCE;IACE,YAAA;EAtCJ;AACF","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../css/variables.module\\";\\n\\n.excalidraw {\\n  .library-unit {\\n    align-items: center;\\n    border: 1px solid transparent;\\n    display: flex;\\n    justify-content: center;\\n    position: relative;\\n    width: 55px;\\n    height: 55px;\\n    box-sizing: border-box;\\n    border-radius: var(--border-radius-lg);\\n\\n    svg {\\n      // to prevent clicks on links and such\\n      pointer-events: none;\\n    }\\n\\n    &--hover {\\n      border-color: var(--color-primary);\\n    }\\n\\n    &--selected {\\n      border-color: var(--color-primary);\\n      border-width: 1px;\\n    }\\n\\n    &--skeleton {\\n      opacity: 0.5;\\n      background: linear-gradient(\\n        -45deg,\\n        var(--color-gray-10),\\n        var(--color-gray-20),\\n        var(--color-gray-10)\\n      );\\n      background-size: 200% 200%;\\n      animation: library-unit__skeleton-opacity-animation 0.2s linear;\\n    }\\n  }\\n\\n  &.theme--dark .library-unit--skeleton {\\n    background-image: linear-gradient(\\n      -45deg,\\n      var(--color-gray-100),\\n      var(--color-gray-80),\\n      var(--color-gray-100)\\n    );\\n  }\\n\\n  .library-unit__dragger {\\n    display: flex;\\n    align-items: center;\\n    justify-content: center;\\n    height: 100%;\\n    width: 100%;\\n  }\\n\\n  .library-unit__dragger > svg {\\n    filter: var(--theme-filter);\\n    flex-grow: 1;\\n    max-height: 100%;\\n    max-width: 100%;\\n  }\\n\\n  .library-unit__checkbox-container,\\n  .library-unit__checkbox-container:hover,\\n  .library-unit__checkbox-container:active {\\n    align-items: center;\\n    background: none;\\n    border: none;\\n    color: var(--icon-fill-color);\\n    display: flex;\\n    justify-content: center;\\n    margin: 0;\\n    padding: 0.5rem;\\n    position: absolute;\\n    left: 2rem;\\n    bottom: 2rem;\\n    cursor: pointer;\\n\\n    input {\\n      cursor: pointer;\\n    }\\n  }\\n\\n  .library-unit__checkbox {\\n    position: absolute;\\n    top: 0.125rem;\\n    right: 0.125rem;\\n    margin: 0;\\n\\n    .Checkbox-box {\\n      margin: 0;\\n      width: 1rem;\\n      height: 1rem;\\n      border-radius: 4px;\\n      background-color: var(--color-primary-light);\\n      border: 1px solid var(--color-primary);\\n      box-shadow: none !important;\\n      padding: 2px;\\n    }\\n\\n    &.Checkbox:hover {\\n      .Checkbox-box {\\n        background-color: var(--color-primary-light);\\n      }\\n    }\\n\\n    &.is-checked {\\n      .Checkbox-box {\\n        background-color: var(--color-primary) !important;\\n\\n        svg {\\n          color: var(--color-primary-light);\\n        }\\n      }\\n    }\\n  }\\n\\n  .library-unit__removeFromLibrary > svg {\\n    height: 16px;\\n    width: 16px;\\n  }\\n\\n  .library-unit__adder {\\n    transform: scale(1);\\n    animation: library-unit__adder-animation 1s ease-in infinite;\\n\\n    position: absolute;\\n    width: 1.5rem;\\n    height: 1.5rem;\\n    background-color: var(--color-primary);\\n    border-radius: var(--border-radius-md);\\n\\n    display: flex;\\n    justify-content: center;\\n    align-items: center;\\n\\n    pointer-events: none;\\n\\n    svg {\\n      color: var(--color-primary-light);\\n      width: 1rem;\\n      height: 1rem;\\n    }\\n  }\\n\\n  .library-unit:active .library-unit__adder {\\n    animation: none;\\n    transform: scale(0.8);\\n  }\\n\\n  .library-unit__active {\\n    cursor: pointer;\\n  }\\n\\n  @keyframes library-unit__adder-animation {\\n    0% {\\n      transform: scale(0.85);\\n    }\\n\\n    50% {\\n      transform: scale(1);\\n    }\\n\\n    100% {\\n      transform: scale(0.85);\\n    }\\n  }\\n\\n  @keyframes library-unit__skeleton-opacity-animation {\\n    0% {\\n      opacity: 0;\\n    }\\n\\n    75% {\\n      opacity: 0;\\n    }\\n\\n    100% {\\n      opacity: 0.5;\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 22024 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/LibraryUnit.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/MermaidToExcalidraw.scss": (
              /*!****************************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/MermaidToExcalidraw.scss ***!
                \****************************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/getUrl.js */ "./node_modules/css-loader/dist/runtime/getUrl.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__);\n// Imports\n\n\n\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(/* asset import */ __webpack_require__(/*! data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMUlEQVQ4T2NkYGAQYcAP3uCTZhw1gGGYhAGBZIA/nYDCgBDAm9BGDWAAJyRCgLaBCAAgXwixzAS0pgAAAABJRU5ErkJggg== */ "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMUlEQVQ4T2NkYGAQYcAP3uCTZhw1gGGYhAGBZIA/nYDCgBDAm9BGDWAAJyRCgLaBCAAgXwixzAS0pgAAAABJRU5ErkJggg=="), __webpack_require__.b);\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .dialog-mermaid-title {\\n  margin-bottom: 5px;\\n  margin-top: 2px;\\n}\\n.excalidraw .dialog-mermaid-desc {\\n  font-size: 15px;\\n  font-style: italic;\\n  font-weight: 500;\\n}\\n.excalidraw .dialog-mermaid .Modal__content .Island {\\n  box-shadow: none;\\n}\\n.excalidraw:not(.excalidraw--mobile).excalidraw .dialog-mermaid {\\n  padding: 1.25rem;\\n}\\n.excalidraw:not(.excalidraw--mobile).excalidraw .dialog-mermaid .Modal__content {\\n  height: 100%;\\n  max-height: 750px;\\n}\\n@media screen and (max-width: 860px) {\\n  .excalidraw:not(.excalidraw--mobile).excalidraw .dialog-mermaid .Modal__content {\\n    height: auto;\\n    max-height: 100%;\\n  }\\n}\\n.excalidraw:not(.excalidraw--mobile).excalidraw .dialog-mermaid .Modal__content .Island {\\n  height: 100%;\\n  display: flex;\\n  flex-direction: column;\\n  flex: 1 1 auto;\\n}\\n.excalidraw:not(.excalidraw--mobile).excalidraw .dialog-mermaid .Modal__content .Island .Dialog__content {\\n  display: flex;\\n  flex: 1 1 auto;\\n}\\n\\n.excalidraw .dialog-mermaid-body {\\n  width: 100%;\\n  display: grid;\\n  grid-template-columns: 1fr 1fr;\\n  grid-template-rows: 1fr auto;\\n  height: 100%;\\n  column-gap: 4rem;\\n}\\n@media screen and (max-width: 860px) {\\n  .excalidraw .dialog-mermaid-body {\\n    flex-direction: column;\\n    display: flex;\\n    gap: 1rem;\\n  }\\n}\\n.excalidraw .dialog-mermaid-panels {\\n  display: grid;\\n  width: 100%;\\n  grid-template-columns: 1fr 1fr;\\n  justify-content: space-between;\\n  gap: 4rem;\\n  grid-row: 1;\\n  grid-column: 1/3;\\n}\\n@media screen and (max-width: 860px) {\\n  .excalidraw .dialog-mermaid-panels {\\n    flex-direction: column;\\n    display: flex;\\n    gap: 1rem;\\n  }\\n}\\n.excalidraw .dialog-mermaid-panels label {\\n  font-size: 14px;\\n  font-style: normal;\\n  font-weight: 600;\\n  margin-bottom: 4px;\\n  margin-left: 4px;\\n}\\n@media screen and (max-width: 860px) {\\n  .excalidraw .dialog-mermaid-panels label {\\n    margin-top: 4px;\\n  }\\n}\\n.excalidraw .dialog-mermaid-panels-text {\\n  display: flex;\\n  flex-direction: column;\\n}\\n.excalidraw .dialog-mermaid-panels-text textarea {\\n  width: 20rem;\\n  height: 100%;\\n  resize: none;\\n  border-radius: var(--border-radius-lg);\\n  border: 1px solid var(--dialog-border-color);\\n  white-space: pre-wrap;\\n  padding: 0.85rem;\\n  box-sizing: border-box;\\n  width: 100%;\\n  font-family: monospace;\\n}\\n@media screen and (max-width: 860px) {\\n  .excalidraw .dialog-mermaid-panels-text textarea {\\n    width: auto;\\n    height: 10rem;\\n  }\\n}\\n.excalidraw .dialog-mermaid-panels-preview-wrapper {\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  padding: 0.85rem;\\n  box-sizing: border-box;\\n  width: 100%;\\n  height: 200px;\\n  flex-grow: 1;\\n  position: relative;\\n  background: url(" + ___CSS_LOADER_URL_REPLACEMENT_0___ + ") left center;\\n  border-radius: var(--border-radius-lg);\\n  border: 1px solid var(--dialog-border-color);\\n}\\n@media screen and (max-width: 860px) {\\n  .excalidraw .dialog-mermaid-panels-preview-wrapper {\\n    height: 400px;\\n    width: auto;\\n  }\\n}\\n.excalidraw .dialog-mermaid-panels-preview-wrapper canvas {\\n  max-width: 100%;\\n  max-height: 100%;\\n}\\n.excalidraw .dialog-mermaid-panels-preview-canvas-container {\\n  display: flex;\\n  width: 100%;\\n  height: 100%;\\n  align-items: center;\\n  justify-content: center;\\n  flex-grow: 1;\\n}\\n.excalidraw .dialog-mermaid-panels-preview {\\n  display: flex;\\n  flex-direction: column;\\n}\\n.excalidraw .dialog-mermaid-panels .mermaid-error {\\n  color: red;\\n  font-weight: 800;\\n  font-size: 30px;\\n  word-break: break-word;\\n  overflow: auto;\\n  max-height: 100%;\\n  height: 100%;\\n  width: 100%;\\n  text-align: center;\\n  position: absolute;\\n  z-index: 10;\\n}\\n.excalidraw .dialog-mermaid-panels .mermaid-error p {\\n  font-weight: 500;\\n  font-family: Cascadia;\\n  text-align: left;\\n  white-space: pre-wrap;\\n  font-size: 0.875rem;\\n  padding: 0 10px;\\n}\\n.excalidraw .dialog-mermaid-buttons {\\n  grid-column: 2;\\n}\\n.excalidraw .dialog-mermaid-buttons .dialog-mermaid-insert.excalidraw-button {\\n  font-family: \\"Assistant\\";\\n  font-weight: 600;\\n  height: 2.5rem;\\n  margin-top: 1em;\\n  margin-bottom: 0.3em;\\n  width: 7.5rem;\\n  font-size: 12px;\\n  color: #ffffff;\\n  background-color: var(--color-primary);\\n}\\n.excalidraw .dialog-mermaid-buttons .dialog-mermaid-insert.excalidraw-button:hover {\\n  background-color: var(--color-primary-darker);\\n}\\n.excalidraw .dialog-mermaid-buttons .dialog-mermaid-insert.excalidraw-button:active {\\n  background-color: var(--color-primary-darkest);\\n}\\n@media screen and (max-width: 860px) {\\n  .excalidraw .dialog-mermaid-buttons .dialog-mermaid-insert.excalidraw-button {\\n    width: 100%;\\n  }\\n}\\n.excalidraw.theme--dark.excalidraw .dialog-mermaid-buttons .dialog-mermaid-insert.excalidraw-button {\\n  color: var(--color-gray-100);\\n}\\n\\n.excalidraw .dialog-mermaid-buttons .dialog-mermaid-insert span {\\n  padding-left: 0.5rem;\\n  display: flex;\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/MermaidToExcalidraw.scss","webpack://./../../../node_modules/open-color/open-color.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AAGI;EACE,kBAAA;EACA,eAAA;AAAN;AAEI;EACE,eAAA;EACA,kBAAA;EACA,gBAAA;AAAN;AAGI;EACE,gBAAA;AADN;AAIa;EACP,gBAAA;AAFN;AAIM;EACE,YAAA;EACA,iBAAA;AAFR;AAIQ;EAJF;IAKI,YAAA;IAIA,gBAAA;EAJR;AACF;AAMQ;EACE,YAAA;EACA,aAAA;EACA,sBAAA;EACA,cAAA;AAJV;AAMU;EACE,aAAA;EACA,cAAA;AAJZ;;AAWE;EACE,WAAA;EACA,aAAA;EACA,8BAAA;EACA,4BAAA;EACA,YAAA;EACA,gBAAA;AARJ;AAUI;EARF;IASI,sBAAA;IACA,aAAA;IACA,SAAA;EAPJ;AACF;AAUE;EACE,aAAA;EACA,WAAA;EACA,8BAAA;EACA,8BAAA;EACA,SAAA;EAEA,WAAA;EACA,gBAAA;AATJ;AAWI;EAVF;IAWI,sBAAA;IACA,aAAA;IACA,SAAA;EARJ;AACF;AAUI;EACE,eAAA;EACA,kBAAA;EACA,gBAAA;EACA,kBAAA;EACA,gBAAA;AARN;AAUM;EAPF;IAQI,eAAA;EAPN;AACF;AAUI;EACE,aAAA;EACA,sBAAA;AARN;AAUM;EACE,YAAA;EACA,YAAA;EACA,YAAA;EACA,sCAAA;EACA,4CAAA;EACA,qBAAA;EACA,gBAAA;EACA,sBAAA;EACA,WAAA;EACA,sBAAA;AARR;AAUQ;EAZF;IAaI,WAAA;IACA,aAAA;EAPR;AACF;AAWI;EACE,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,gBAAA;EACA,sBAAA;EACA,WAAA;EAEA,aAAA;EACA,YAAA;EACA,kBAAA;EAEA,+DAAA;EAEA,sCAAA;EACA,4CAAA;AAZN;AAcM;EAjBF;IAmBI,aAAA;IACA,WAAA;EAZN;AACF;AAcM;EACE,eAAA;EACA,gBAAA;AAZR;AAgBI;EACE,aAAA;EACA,WAAA;EACA,YAAA;EACA,mBAAA;EACA,uBAAA;EACA,YAAA;AAdN;AAiBI;EACE,aAAA;EACA,sBAAA;AAfN;AAkBI;EACE,UAAA;EACA,gBAAA;EACA,eAAA;EACA,sBAAA;EACA,cAAA;EACA,gBAAA;EACA,YAAA;EACA,WAAA;EACA,kBAAA;EACA,kBAAA;EACA,WAAA;AAhBN;AAkBM;EACE,gBAAA;EACA,qBAAA;EACA,gBAAA;EACA,qBAAA;EACA,mBAAA;EACA,eAAA;AAhBR;AAqBE;EACE,cAAA;AAnBJ;AAsBM;EACE,wBAAA;EACA,gBAAA;EACA,cAAA;EACA,eAAA;EACA,oBAAA;EACA,aAAA;EACA,eAAA;EACA,cCxLW;EDyLX,sCAAA;AApBR;AAsBQ;EACE,6CAAA;AApBV;AAsBQ;EACE,8CAAA;AApBV;AAuBQ;EAlBF;IAmBI,WAAA;EApBR;AACF;AAsBiB;EACP,4BAAA;AApBV;;AAwBM;EACE,oBAAA;EACA,aAAA;AArBR","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../css/variables.module\\";\\n\\n$verticalBreakpoint: 860px;\\n\\n.excalidraw {\\n  .dialog-mermaid {\\n    &-title {\\n      margin-bottom: 5px;\\n      margin-top: 2px;\\n    }\\n    &-desc {\\n      font-size: 15px;\\n      font-style: italic;\\n      font-weight: 500;\\n    }\\n\\n    .Modal__content .Island {\\n      box-shadow: none;\\n    }\\n\\n    @at-root .excalidraw:not(.excalidraw--mobile)#{&} {\\n      padding: 1.25rem;\\n\\n      .Modal__content {\\n        height: 100%;\\n        max-height: 750px;\\n\\n        @media screen and (max-width: $verticalBreakpoint) {\\n          height: auto;\\n          // When vertical, we want the height to span whole viewport.\\n          // This is also important for the children not to overflow the\\n          // modal/viewport (for some reason).\\n          max-height: 100%;\\n        }\\n\\n        .Island {\\n          height: 100%;\\n          display: flex;\\n          flex-direction: column;\\n          flex: 1 1 auto;\\n\\n          .Dialog__content {\\n            display: flex;\\n            flex: 1 1 auto;\\n          }\\n        }\\n      }\\n    }\\n  }\\n\\n  .dialog-mermaid-body {\\n    width: 100%;\\n    display: grid;\\n    grid-template-columns: 1fr 1fr;\\n    grid-template-rows: 1fr auto;\\n    height: 100%;\\n    column-gap: 4rem;\\n\\n    @media screen and (max-width: $verticalBreakpoint) {\\n      flex-direction: column;\\n      display: flex;\\n      gap: 1rem;\\n    }\\n  }\\n\\n  .dialog-mermaid-panels {\\n    display: grid;\\n    width: 100%;\\n    grid-template-columns: 1fr 1fr;\\n    justify-content: space-between;\\n    gap: 4rem;\\n\\n    grid-row: 1;\\n    grid-column: 1 / 3;\\n\\n    @media screen and (max-width: $verticalBreakpoint) {\\n      flex-direction: column;\\n      display: flex;\\n      gap: 1rem;\\n    }\\n\\n    label {\\n      font-size: 14px;\\n      font-style: normal;\\n      font-weight: 600;\\n      margin-bottom: 4px;\\n      margin-left: 4px;\\n\\n      @media screen and (max-width: $verticalBreakpoint) {\\n        margin-top: 4px;\\n      }\\n    }\\n\\n    &-text {\\n      display: flex;\\n      flex-direction: column;\\n\\n      textarea {\\n        width: 20rem;\\n        height: 100%;\\n        resize: none;\\n        border-radius: var(--border-radius-lg);\\n        border: 1px solid var(--dialog-border-color);\\n        white-space: pre-wrap;\\n        padding: 0.85rem;\\n        box-sizing: border-box;\\n        width: 100%;\\n        font-family: monospace;\\n\\n        @media screen and (max-width: $verticalBreakpoint) {\\n          width: auto;\\n          height: 10rem;\\n        }\\n      }\\n    }\\n\\n    &-preview-wrapper {\\n      display: flex;\\n      align-items: center;\\n      justify-content: center;\\n      padding: 0.85rem;\\n      box-sizing: border-box;\\n      width: 100%;\\n      // acts as min-height\\n      height: 200px;\\n      flex-grow: 1;\\n      position: relative;\\n\\n      background: url(\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMUlEQVQ4T2NkYGAQYcAP3uCTZhw1gGGYhAGBZIA/nYDCgBDAm9BGDWAAJyRCgLaBCAAgXwixzAS0pgAAAABJRU5ErkJggg==\\")\\n        left center;\\n      border-radius: var(--border-radius-lg);\\n      border: 1px solid var(--dialog-border-color);\\n\\n      @media screen and (max-width: $verticalBreakpoint) {\\n        // acts as min-height\\n        height: 400px;\\n        width: auto;\\n      }\\n\\n      canvas {\\n        max-width: 100%;\\n        max-height: 100%;\\n      }\\n    }\\n\\n    &-preview-canvas-container {\\n      display: flex;\\n      width: 100%;\\n      height: 100%;\\n      align-items: center;\\n      justify-content: center;\\n      flex-grow: 1;\\n    }\\n\\n    &-preview {\\n      display: flex;\\n      flex-direction: column;\\n    }\\n\\n    .mermaid-error {\\n      color: red;\\n      font-weight: 800;\\n      font-size: 30px;\\n      word-break: break-word;\\n      overflow: auto;\\n      max-height: 100%;\\n      height: 100%;\\n      width: 100%;\\n      text-align: center;\\n      position: absolute;\\n      z-index: 10;\\n\\n      p {\\n        font-weight: 500;\\n        font-family: Cascadia;\\n        text-align: left;\\n        white-space: pre-wrap;\\n        font-size: 0.875rem;\\n        padding: 0 10px;\\n      }\\n    }\\n  }\\n\\n  .dialog-mermaid-buttons {\\n    grid-column: 2;\\n\\n    .dialog-mermaid-insert {\\n      &.excalidraw-button {\\n        font-family: \\"Assistant\\";\\n        font-weight: 600;\\n        height: 2.5rem;\\n        margin-top: 1em;\\n        margin-bottom: 0.3em;\\n        width: 7.5rem;\\n        font-size: 12px;\\n        color: $oc-white;\\n        background-color: var(--color-primary);\\n\\n        &:hover {\\n          background-color: var(--color-primary-darker);\\n        }\\n        &:active {\\n          background-color: var(--color-primary-darkest);\\n        }\\n\\n        @media screen and (max-width: $verticalBreakpoint) {\\n          width: 100%;\\n        }\\n\\n        @at-root .excalidraw.theme--dark#{&} {\\n          color: var(--color-gray-100);\\n        }\\n      }\\n\\n      span {\\n        padding-left: 0.5rem;\\n        display: flex;\\n      }\\n    }\\n  }\\n}\\n","//\\n//\\n//  \u{1D5D6} \u{1D5E2} \u{1D5DF} \u{1D5E2} \u{1D5E5}\\n//  v 1.9.1\\n//\\n//  \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\\n\\n\\n//  General\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-white:         #ffffff;\\n$oc-black:         #000000;\\n\\n\\n//  Gray\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-gray-list: (\\n  \\"0\\": #f8f9fa,\\n  \\"1\\": #f1f3f5,\\n  \\"2\\": #e9ecef,\\n  \\"3\\": #dee2e6,\\n  \\"4\\": #ced4da,\\n  \\"5\\": #adb5bd,\\n  \\"6\\": #868e96,\\n  \\"7\\": #495057,\\n  \\"8\\": #343a40,\\n  \\"9\\": #212529\\n);\\n\\n$oc-gray-0: map-get($oc-gray-list, \\"0\\");\\n$oc-gray-1: map-get($oc-gray-list, \\"1\\");\\n$oc-gray-2: map-get($oc-gray-list, \\"2\\");\\n$oc-gray-3: map-get($oc-gray-list, \\"3\\");\\n$oc-gray-4: map-get($oc-gray-list, \\"4\\");\\n$oc-gray-5: map-get($oc-gray-list, \\"5\\");\\n$oc-gray-6: map-get($oc-gray-list, \\"6\\");\\n$oc-gray-7: map-get($oc-gray-list, \\"7\\");\\n$oc-gray-8: map-get($oc-gray-list, \\"8\\");\\n$oc-gray-9: map-get($oc-gray-list, \\"9\\");\\n\\n\\n//  Red\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-red-list: (\\n  \\"0\\": #fff5f5,\\n  \\"1\\": #ffe3e3,\\n  \\"2\\": #ffc9c9,\\n  \\"3\\": #ffa8a8,\\n  \\"4\\": #ff8787,\\n  \\"5\\": #ff6b6b,\\n  \\"6\\": #fa5252,\\n  \\"7\\": #f03e3e,\\n  \\"8\\": #e03131,\\n  \\"9\\": #c92a2a\\n);\\n\\n$oc-red-0: map-get($oc-red-list, \\"0\\");\\n$oc-red-1: map-get($oc-red-list, \\"1\\");\\n$oc-red-2: map-get($oc-red-list, \\"2\\");\\n$oc-red-3: map-get($oc-red-list, \\"3\\");\\n$oc-red-4: map-get($oc-red-list, \\"4\\");\\n$oc-red-5: map-get($oc-red-list, \\"5\\");\\n$oc-red-6: map-get($oc-red-list, \\"6\\");\\n$oc-red-7: map-get($oc-red-list, \\"7\\");\\n$oc-red-8: map-get($oc-red-list, \\"8\\");\\n$oc-red-9: map-get($oc-red-list, \\"9\\");\\n\\n\\n//  Pink\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-pink-list: (\\n  \\"0\\": #fff0f6,\\n  \\"1\\": #ffdeeb,\\n  \\"2\\": #fcc2d7,\\n  \\"3\\": #faa2c1,\\n  \\"4\\": #f783ac,\\n  \\"5\\": #f06595,\\n  \\"6\\": #e64980,\\n  \\"7\\": #d6336c,\\n  \\"8\\": #c2255c,\\n  \\"9\\": #a61e4d\\n);\\n\\n$oc-pink-0: map-get($oc-pink-list, \\"0\\");\\n$oc-pink-1: map-get($oc-pink-list, \\"1\\");\\n$oc-pink-2: map-get($oc-pink-list, \\"2\\");\\n$oc-pink-3: map-get($oc-pink-list, \\"3\\");\\n$oc-pink-4: map-get($oc-pink-list, \\"4\\");\\n$oc-pink-5: map-get($oc-pink-list, \\"5\\");\\n$oc-pink-6: map-get($oc-pink-list, \\"6\\");\\n$oc-pink-7: map-get($oc-pink-list, \\"7\\");\\n$oc-pink-8: map-get($oc-pink-list, \\"8\\");\\n$oc-pink-9: map-get($oc-pink-list, \\"9\\");\\n\\n\\n//  Grape\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-grape-list: (\\n  \\"0\\": #f8f0fc,\\n  \\"1\\": #f3d9fa,\\n  \\"2\\": #eebefa,\\n  \\"3\\": #e599f7,\\n  \\"4\\": #da77f2,\\n  \\"5\\": #cc5de8,\\n  \\"6\\": #be4bdb,\\n  \\"7\\": #ae3ec9,\\n  \\"8\\": #9c36b5,\\n  \\"9\\": #862e9c\\n);\\n\\n$oc-grape-0: map-get($oc-grape-list, \\"0\\");\\n$oc-grape-1: map-get($oc-grape-list, \\"1\\");\\n$oc-grape-2: map-get($oc-grape-list, \\"2\\");\\n$oc-grape-3: map-get($oc-grape-list, \\"3\\");\\n$oc-grape-4: map-get($oc-grape-list, \\"4\\");\\n$oc-grape-5: map-get($oc-grape-list, \\"5\\");\\n$oc-grape-6: map-get($oc-grape-list, \\"6\\");\\n$oc-grape-7: map-get($oc-grape-list, \\"7\\");\\n$oc-grape-8: map-get($oc-grape-list, \\"8\\");\\n$oc-grape-9: map-get($oc-grape-list, \\"9\\");\\n\\n\\n//  Violet\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-violet-list: (\\n  \\"0\\": #f3f0ff,\\n  \\"1\\": #e5dbff,\\n  \\"2\\": #d0bfff,\\n  \\"3\\": #b197fc,\\n  \\"4\\": #9775fa,\\n  \\"5\\": #845ef7,\\n  \\"6\\": #7950f2,\\n  \\"7\\": #7048e8,\\n  \\"8\\": #6741d9,\\n  \\"9\\": #5f3dc4\\n);\\n\\n$oc-violet-0: map-get($oc-violet-list, \\"0\\");\\n$oc-violet-1: map-get($oc-violet-list, \\"1\\");\\n$oc-violet-2: map-get($oc-violet-list, \\"2\\");\\n$oc-violet-3: map-get($oc-violet-list, \\"3\\");\\n$oc-violet-4: map-get($oc-violet-list, \\"4\\");\\n$oc-violet-5: map-get($oc-violet-list, \\"5\\");\\n$oc-violet-6: map-get($oc-violet-list, \\"6\\");\\n$oc-violet-7: map-get($oc-violet-list, \\"7\\");\\n$oc-violet-8: map-get($oc-violet-list, \\"8\\");\\n$oc-violet-9: map-get($oc-violet-list, \\"9\\");\\n\\n\\n//  Indigo\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-indigo-list: (\\n  \\"0\\": #edf2ff,\\n  \\"1\\": #dbe4ff,\\n  \\"2\\": #bac8ff,\\n  \\"3\\": #91a7ff,\\n  \\"4\\": #748ffc,\\n  \\"5\\": #5c7cfa,\\n  \\"6\\": #4c6ef5,\\n  \\"7\\": #4263eb,\\n  \\"8\\": #3b5bdb,\\n  \\"9\\": #364fc7\\n);\\n\\n$oc-indigo-0: map-get($oc-indigo-list, \\"0\\");\\n$oc-indigo-1: map-get($oc-indigo-list, \\"1\\");\\n$oc-indigo-2: map-get($oc-indigo-list, \\"2\\");\\n$oc-indigo-3: map-get($oc-indigo-list, \\"3\\");\\n$oc-indigo-4: map-get($oc-indigo-list, \\"4\\");\\n$oc-indigo-5: map-get($oc-indigo-list, \\"5\\");\\n$oc-indigo-6: map-get($oc-indigo-list, \\"6\\");\\n$oc-indigo-7: map-get($oc-indigo-list, \\"7\\");\\n$oc-indigo-8: map-get($oc-indigo-list, \\"8\\");\\n$oc-indigo-9: map-get($oc-indigo-list, \\"9\\");\\n\\n\\n//  Blue\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-blue-list: (\\n  \\"0\\": #e7f5ff,\\n  \\"1\\": #d0ebff,\\n  \\"2\\": #a5d8ff,\\n  \\"3\\": #74c0fc,\\n  \\"4\\": #4dabf7,\\n  \\"5\\": #339af0,\\n  \\"6\\": #228be6,\\n  \\"7\\": #1c7ed6,\\n  \\"8\\": #1971c2,\\n  \\"9\\": #1864ab\\n);\\n\\n$oc-blue-0: map-get($oc-blue-list, \\"0\\");\\n$oc-blue-1: map-get($oc-blue-list, \\"1\\");\\n$oc-blue-2: map-get($oc-blue-list, \\"2\\");\\n$oc-blue-3: map-get($oc-blue-list, \\"3\\");\\n$oc-blue-4: map-get($oc-blue-list, \\"4\\");\\n$oc-blue-5: map-get($oc-blue-list, \\"5\\");\\n$oc-blue-6: map-get($oc-blue-list, \\"6\\");\\n$oc-blue-7: map-get($oc-blue-list, \\"7\\");\\n$oc-blue-8: map-get($oc-blue-list, \\"8\\");\\n$oc-blue-9: map-get($oc-blue-list, \\"9\\");\\n\\n\\n//  Cyan\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-cyan-list: (\\n  \\"0\\": #e3fafc,\\n  \\"1\\": #c5f6fa,\\n  \\"2\\": #99e9f2,\\n  \\"3\\": #66d9e8,\\n  \\"4\\": #3bc9db,\\n  \\"5\\": #22b8cf,\\n  \\"6\\": #15aabf,\\n  \\"7\\": #1098ad,\\n  \\"8\\": #0c8599,\\n  \\"9\\": #0b7285\\n);\\n\\n$oc-cyan-0: map-get($oc-cyan-list, \\"0\\");\\n$oc-cyan-1: map-get($oc-cyan-list, \\"1\\");\\n$oc-cyan-2: map-get($oc-cyan-list, \\"2\\");\\n$oc-cyan-3: map-get($oc-cyan-list, \\"3\\");\\n$oc-cyan-4: map-get($oc-cyan-list, \\"4\\");\\n$oc-cyan-5: map-get($oc-cyan-list, \\"5\\");\\n$oc-cyan-6: map-get($oc-cyan-list, \\"6\\");\\n$oc-cyan-7: map-get($oc-cyan-list, \\"7\\");\\n$oc-cyan-8: map-get($oc-cyan-list, \\"8\\");\\n$oc-cyan-9: map-get($oc-cyan-list, \\"9\\");\\n\\n\\n//  Teal\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-teal-list: (\\n  \\"0\\": #e6fcf5,\\n  \\"1\\": #c3fae8,\\n  \\"2\\": #96f2d7,\\n  \\"3\\": #63e6be,\\n  \\"4\\": #38d9a9,\\n  \\"5\\": #20c997,\\n  \\"6\\": #12b886,\\n  \\"7\\": #0ca678,\\n  \\"8\\": #099268,\\n  \\"9\\": #087f5b\\n);\\n\\n$oc-teal-0: map-get($oc-teal-list, \\"0\\");\\n$oc-teal-1: map-get($oc-teal-list, \\"1\\");\\n$oc-teal-2: map-get($oc-teal-list, \\"2\\");\\n$oc-teal-3: map-get($oc-teal-list, \\"3\\");\\n$oc-teal-4: map-get($oc-teal-list, \\"4\\");\\n$oc-teal-5: map-get($oc-teal-list, \\"5\\");\\n$oc-teal-6: map-get($oc-teal-list, \\"6\\");\\n$oc-teal-7: map-get($oc-teal-list, \\"7\\");\\n$oc-teal-8: map-get($oc-teal-list, \\"8\\");\\n$oc-teal-9: map-get($oc-teal-list, \\"9\\");\\n\\n\\n//  Green\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-green-list: (\\n  \\"0\\": #ebfbee,\\n  \\"1\\": #d3f9d8,\\n  \\"2\\": #b2f2bb,\\n  \\"3\\": #8ce99a,\\n  \\"4\\": #69db7c,\\n  \\"5\\": #51cf66,\\n  \\"6\\": #40c057,\\n  \\"7\\": #37b24d,\\n  \\"8\\": #2f9e44,\\n  \\"9\\": #2b8a3e\\n);\\n\\n$oc-green-0: map-get($oc-green-list, \\"0\\");\\n$oc-green-1: map-get($oc-green-list, \\"1\\");\\n$oc-green-2: map-get($oc-green-list, \\"2\\");\\n$oc-green-3: map-get($oc-green-list, \\"3\\");\\n$oc-green-4: map-get($oc-green-list, \\"4\\");\\n$oc-green-5: map-get($oc-green-list, \\"5\\");\\n$oc-green-6: map-get($oc-green-list, \\"6\\");\\n$oc-green-7: map-get($oc-green-list, \\"7\\");\\n$oc-green-8: map-get($oc-green-list, \\"8\\");\\n$oc-green-9: map-get($oc-green-list, \\"9\\");\\n\\n\\n//  Lime\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-lime-list: (\\n  \\"0\\": #f4fce3,\\n  \\"1\\": #e9fac8,\\n  \\"2\\": #d8f5a2,\\n  \\"3\\": #c0eb75,\\n  \\"4\\": #a9e34b,\\n  \\"5\\": #94d82d,\\n  \\"6\\": #82c91e,\\n  \\"7\\": #74b816,\\n  \\"8\\": #66a80f,\\n  \\"9\\": #5c940d\\n);\\n\\n$oc-lime-0: map-get($oc-lime-list, \\"0\\");\\n$oc-lime-1: map-get($oc-lime-list, \\"1\\");\\n$oc-lime-2: map-get($oc-lime-list, \\"2\\");\\n$oc-lime-3: map-get($oc-lime-list, \\"3\\");\\n$oc-lime-4: map-get($oc-lime-list, \\"4\\");\\n$oc-lime-5: map-get($oc-lime-list, \\"5\\");\\n$oc-lime-6: map-get($oc-lime-list, \\"6\\");\\n$oc-lime-7: map-get($oc-lime-list, \\"7\\");\\n$oc-lime-8: map-get($oc-lime-list, \\"8\\");\\n$oc-lime-9: map-get($oc-lime-list, \\"9\\");\\n\\n\\n//  Yellow\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-yellow-list: (\\n  \\"0\\": #fff9db,\\n  \\"1\\": #fff3bf,\\n  \\"2\\": #ffec99,\\n  \\"3\\": #ffe066,\\n  \\"4\\": #ffd43b,\\n  \\"5\\": #fcc419,\\n  \\"6\\": #fab005,\\n  \\"7\\": #f59f00,\\n  \\"8\\": #f08c00,\\n  \\"9\\": #e67700\\n);\\n\\n$oc-yellow-0: map-get($oc-yellow-list, \\"0\\");\\n$oc-yellow-1: map-get($oc-yellow-list, \\"1\\");\\n$oc-yellow-2: map-get($oc-yellow-list, \\"2\\");\\n$oc-yellow-3: map-get($oc-yellow-list, \\"3\\");\\n$oc-yellow-4: map-get($oc-yellow-list, \\"4\\");\\n$oc-yellow-5: map-get($oc-yellow-list, \\"5\\");\\n$oc-yellow-6: map-get($oc-yellow-list, \\"6\\");\\n$oc-yellow-7: map-get($oc-yellow-list, \\"7\\");\\n$oc-yellow-8: map-get($oc-yellow-list, \\"8\\");\\n$oc-yellow-9: map-get($oc-yellow-list, \\"9\\");\\n\\n\\n//  Orange\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-orange-list: (\\n  \\"0\\": #fff4e6,\\n  \\"1\\": #ffe8cc,\\n  \\"2\\": #ffd8a8,\\n  \\"3\\": #ffc078,\\n  \\"4\\": #ffa94d,\\n  \\"5\\": #ff922b,\\n  \\"6\\": #fd7e14,\\n  \\"7\\": #f76707,\\n  \\"8\\": #e8590c,\\n  \\"9\\": #d9480f\\n);\\n\\n$oc-orange-0: map-get($oc-orange-list, \\"0\\");\\n$oc-orange-1: map-get($oc-orange-list, \\"1\\");\\n$oc-orange-2: map-get($oc-orange-list, \\"2\\");\\n$oc-orange-3: map-get($oc-orange-list, \\"3\\");\\n$oc-orange-4: map-get($oc-orange-list, \\"4\\");\\n$oc-orange-5: map-get($oc-orange-list, \\"5\\");\\n$oc-orange-6: map-get($oc-orange-list, \\"6\\");\\n$oc-orange-7: map-get($oc-orange-list, \\"7\\");\\n$oc-orange-8: map-get($oc-orange-list, \\"8\\");\\n$oc-orange-9: map-get($oc-orange-list, \\"9\\");\\n\\n\\n//  Color list\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-color-spectrum:   9;\\n\\n$oc-color-list: (\\n  $oc-gray-list:      \\"gray\\",\\n  $oc-red-list:      \\"red\\",\\n  $oc-pink-list:      \\"pink\\",\\n  $oc-grape-list:      \\"grape\\",\\n  $oc-violet-list:      \\"violet\\",\\n  $oc-indigo-list:      \\"indigo\\",\\n  $oc-blue-list:      \\"blue\\",\\n  $oc-cyan-list:      \\"cyan\\",\\n  $oc-teal-list:      \\"teal\\",\\n  $oc-green-list:      \\"green\\",\\n  $oc-lime-list:      \\"lime\\",\\n  $oc-yellow-list:      \\"yellow\\",\\n  $oc-orange-list:      \\"orange\\"\\n);\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 46776 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/MermaidToExcalidraw.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Modal.scss": (
              /*!**************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Modal.scss ***!
                \**************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw.excalidraw-modal-container {\\n  position: absolute;\\n  z-index: var(--zIndex-modal);\\n}\\n.excalidraw .Modal {\\n  position: absolute;\\n  top: 0;\\n  left: 0;\\n  right: 0;\\n  bottom: 0;\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  overflow: auto;\\n  padding: calc(var(--space-factor) * 10);\\n}\\n.excalidraw .Modal .Island {\\n  padding: 2.5rem !important;\\n}\\n.excalidraw .Modal__background {\\n  position: fixed;\\n  top: 0;\\n  left: 0;\\n  right: 0;\\n  bottom: 0;\\n  z-index: 1;\\n  background-color: rgba(18, 18, 18, 0.2);\\n  animation: Modal__background__fade-in 0.125s linear forwards;\\n}\\n.excalidraw .Modal__content {\\n  position: relative;\\n  z-index: 2;\\n  width: 100%;\\n  max-width: var(--max-width);\\n  max-height: 100%;\\n  opacity: 0;\\n  transform: translateY(10px);\\n  animation: Modal__content_fade-in 0.1s ease-out 0.05s forwards;\\n  position: relative;\\n  overflow-y: auto;\\n  background: var(--island-bg-color);\\n  border: 1px solid var(--dialog-border-color);\\n  box-shadow: var(--modal-shadow);\\n  border-radius: 6px;\\n  box-sizing: border-box;\\n}\\n.excalidraw .Modal__content:focus {\\n  outline: none;\\n}\\n@keyframes Modal__background__fade-in {\\n  from {\\n    opacity: 0;\\n  }\\n  to {\\n    opacity: 1;\\n  }\\n}\\n@keyframes Modal__content_fade-in {\\n  from {\\n    opacity: 0;\\n    transform: scale(0.9);\\n  }\\n  to {\\n    opacity: 1;\\n    transform: scale(1);\\n  }\\n}\\n.excalidraw .Modal__close {\\n  color: var(--icon-fill-color);\\n  margin: 0;\\n  padding: 0.375rem;\\n  position: absolute;\\n  top: 1rem;\\n  right: 1rem;\\n  border: 0;\\n  background-color: transparent;\\n  line-height: 0;\\n  cursor: pointer;\\n}\\n.excalidraw .Modal__close svg {\\n  width: 1.5rem;\\n  height: 1.5rem;\\n}\\n.excalidraw .Dialog--fullscreen .Modal {\\n  padding: 0;\\n}\\n.excalidraw .Dialog--fullscreen .Modal__content {\\n  position: absolute;\\n  top: 0;\\n  left: 0;\\n  right: 0;\\n  bottom: 0;\\n  max-width: 100%;\\n  border: 0;\\n  border-radius: 0;\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/Modal.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AAAE;EACE,kBAAA;EACA,4BAAA;AAGJ;AAAE;EACE,kBAAA;EACA,MAAA;EACA,OAAA;EACA,QAAA;EACA,SAAA;EACA,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,cAAA;EACA,uCAAA;AAEJ;AAAI;EACE,0BAAA;AAEN;AAEE;EACE,eAAA;EACA,MAAA;EACA,OAAA;EACA,QAAA;EACA,SAAA;EACA,UAAA;EACA,uCAAA;EAEA,4DAAA;AADJ;AAIE;EACE,kBAAA;EACA,UAAA;EACA,WAAA;EACA,2BAAA;EACA,gBAAA;EAEA,UAAA;EACA,2BAAA;EACA,8DAAA;EACA,kBAAA;EACA,gBAAA;EAGA,kCAAA;EAEA,4CAAA;EACA,+BAAA;EACA,kBAAA;EACA,sBAAA;AANJ;AAQI;EACE,aAAA;AANN;AAUE;EACE;IACE,UAAA;EARJ;EAUE;IACE,UAAA;EARJ;AACF;AAWE;EACE;IACE,UAAA;IACA,qBAAA;EATJ;EAWE;IACE,UAAA;IACA,mBAAA;EATJ;AACF;AAYE;EACE,6BAAA;EACA,SAAA;EACA,iBAAA;EACA,kBAAA;EACA,SAAA;EACA,WAAA;EACA,SAAA;EACA,6BAAA;EACA,cAAA;EACA,eAAA;AAVJ;AAYI;EACE,aAAA;EACA,cAAA;AAVN;AAeI;EACE,UAAA;AAbN;AAgBI;EACE,kBAAA;EACA,MAAA;EACA,OAAA;EACA,QAAA;EACA,SAAA;EACA,eAAA;EACA,SAAA;EACA,gBAAA;AAdN","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../css/variables.module\\";\\n\\n.excalidraw {\\n  &.excalidraw-modal-container {\\n    position: absolute;\\n    z-index: var(--zIndex-modal);\\n  }\\n\\n  .Modal {\\n    position: absolute;\\n    top: 0;\\n    left: 0;\\n    right: 0;\\n    bottom: 0;\\n    display: flex;\\n    align-items: center;\\n    justify-content: center;\\n    overflow: auto;\\n    padding: calc(var(--space-factor) * 10);\\n\\n    .Island {\\n      padding: 2.5rem !important;\\n    }\\n  }\\n\\n  .Modal__background {\\n    position: fixed;\\n    top: 0;\\n    left: 0;\\n    right: 0;\\n    bottom: 0;\\n    z-index: 1;\\n    background-color: rgba(#121212, 0.2);\\n\\n    animation: Modal__background__fade-in 0.125s linear forwards;\\n  }\\n\\n  .Modal__content {\\n    position: relative;\\n    z-index: 2;\\n    width: 100%;\\n    max-width: var(--max-width);\\n    max-height: 100%;\\n\\n    opacity: 0;\\n    transform: translateY(10px);\\n    animation: Modal__content_fade-in 0.1s ease-out 0.05s forwards;\\n    position: relative;\\n    overflow-y: auto;\\n\\n    // for modals, reset blurry bg\\n    background: var(--island-bg-color);\\n\\n    border: 1px solid var(--dialog-border-color);\\n    box-shadow: var(--modal-shadow);\\n    border-radius: 6px;\\n    box-sizing: border-box;\\n\\n    &:focus {\\n      outline: none;\\n    }\\n  }\\n\\n  @keyframes Modal__background__fade-in {\\n    from {\\n      opacity: 0;\\n    }\\n    to {\\n      opacity: 1;\\n    }\\n  }\\n\\n  @keyframes Modal__content_fade-in {\\n    from {\\n      opacity: 0;\\n      transform: scale(0.9);\\n    }\\n    to {\\n      opacity: 1;\\n      transform: scale(1);\\n    }\\n  }\\n\\n  .Modal__close {\\n    color: var(--icon-fill-color);\\n    margin: 0;\\n    padding: 0.375rem;\\n    position: absolute;\\n    top: 1rem;\\n    right: 1rem;\\n    border: 0;\\n    background-color: transparent;\\n    line-height: 0;\\n    cursor: pointer;\\n\\n    svg {\\n      width: 1.5rem;\\n      height: 1.5rem;\\n    }\\n  }\\n\\n  .Dialog--fullscreen {\\n    .Modal {\\n      padding: 0;\\n    }\\n\\n    .Modal__content {\\n      position: absolute;\\n      top: 0;\\n      left: 0;\\n      right: 0;\\n      bottom: 0;\\n      max-width: 100%;\\n      border: 0;\\n      border-radius: 0;\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 16184 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Modal.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/OverwriteConfirm/OverwriteConfirm.scss": (
              /*!******************************************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/OverwriteConfirm/OverwriteConfirm.scss ***!
                \******************************************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .OverwriteConfirm {\\n  display: flex;\\n  flex-direction: column;\\n  align-items: center;\\n  gap: 0.75rem;\\n  isolation: isolate;\\n}\\n.excalidraw .OverwriteConfirm h3 {\\n  margin: 0;\\n  font-weight: 700;\\n  font-size: 1.3125rem;\\n  line-height: 130%;\\n  align-self: flex-start;\\n  color: var(--text-primary-color);\\n}\\n.excalidraw .OverwriteConfirm__Description {\\n  box-sizing: border-box;\\n  display: flex;\\n  flex-direction: row;\\n  align-items: center;\\n  width: 100%;\\n  gap: 1rem;\\n  padding: 2.5rem;\\n  background: var(--color-danger-background);\\n  border-radius: 0.5rem;\\n  font-family: \\"Assistant\\";\\n  font-style: normal;\\n  font-weight: 400;\\n  font-size: 1rem;\\n  line-height: 150%;\\n  color: var(--color-danger-color);\\n}\\n.excalidraw--mobile.excalidraw .OverwriteConfirm__Description {\\n  flex-direction: column;\\n  text-align: center;\\n}\\n\\n.excalidraw .OverwriteConfirm__Description__spacer {\\n  flex-grow: 1;\\n}\\n.excalidraw .OverwriteConfirm__Description__icon {\\n  box-sizing: border-box;\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  border-radius: 2.5rem;\\n  background: var(--color-danger-icon-background);\\n  width: 3.5rem;\\n  height: 3.5rem;\\n  padding: 0.75rem;\\n}\\n.excalidraw .OverwriteConfirm__Description__icon svg {\\n  color: var(--color-danger-icon-color);\\n  width: 1.5rem;\\n  height: 1.5rem;\\n}\\n.excalidraw .OverwriteConfirm__Description.OverwriteConfirm__Description--color-warning {\\n  background: var(--color-warning-background);\\n  color: var(--color-warning-color);\\n}\\n.excalidraw .OverwriteConfirm__Description.OverwriteConfirm__Description--color-warning .OverwriteConfirm__Description__icon {\\n  background: var(--color-warning-icon-background);\\n  flex: 0 0 auto;\\n}\\n.excalidraw .OverwriteConfirm__Description.OverwriteConfirm__Description--color-warning .OverwriteConfirm__Description__icon svg {\\n  color: var(--color-warning-icon-color);\\n}\\n.excalidraw .OverwriteConfirm__Actions {\\n  display: flex;\\n  flex-direction: row;\\n  align-items: stretch;\\n  justify-items: stretch;\\n  justify-content: center;\\n  gap: 1.5rem;\\n}\\n.excalidraw--mobile.excalidraw .OverwriteConfirm__Actions {\\n  flex-direction: column;\\n}\\n\\n.excalidraw .OverwriteConfirm__Actions__Action {\\n  display: flex;\\n  flex-direction: column;\\n  align-items: center;\\n  padding: 1.5rem;\\n  gap: 0.75rem;\\n  flex-basis: 50%;\\n  flex-grow: 0;\\n}\\n.excalidraw .OverwriteConfirm__Actions__Action__content {\\n  height: 100%;\\n  font-size: 0.875rem;\\n  text-align: center;\\n}\\n.excalidraw .OverwriteConfirm__Actions__Action h4 {\\n  font-weight: 700;\\n  font-size: 1.125rem;\\n  line-height: 130%;\\n  margin: 0;\\n  color: var(--text-primary-color);\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/OverwriteConfirm/OverwriteConfirm.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AAAE;EACE,aAAA;EACA,sBAAA;EACA,mBAAA;EACA,YAAA;EACA,kBAAA;AAGJ;AADI;EACE,SAAA;EAEA,gBAAA;EACA,oBAAA;EACA,iBAAA;EACA,sBAAA;EAEA,gCAAA;AACN;AAEI;EACE,sBAAA;EAEA,aAAA;EACA,mBAAA;EACA,mBAAA;EACA,WAAA;EACA,SAAA;EAOA,eAAA;EAEA,0CAAA;EACA,qBAAA;EAEA,wBAAA;EACA,kBAAA;EACA,gBAAA;EACA,eAAA;EACA,iBAAA;EAEA,gCAAA;AAVN;ADjCW;EC4BH,sBAAA;EACA,kBAAA;AAQR;;AAQM;EACE,YAAA;AALR;AAQM;EACE,sBAAA;EACA,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,qBAAA;EACA,+CAAA;EACA,aAAA;EACA,cAAA;EAEA,gBAAA;AAPR;AASQ;EACE,qCAAA;EACA,aAAA;EACA,cAAA;AAPV;AAWM;EACE,2CAAA;EACA,iCAAA;AATR;AAWQ;EACE,gDAAA;EACA,cAAA;AATV;AAWU;EACE,sCAAA;AATZ;AAeI;EACE,aAAA;EACA,mBAAA;EACA,oBAAA;EACA,sBAAA;EACA,uBAAA;EACA,WAAA;AAbN;AD5EW;EC4FH,sBAAA;AAbR;;AAgBM;EACE,aAAA;EACA,sBAAA;EACA,mBAAA;EACA,eAAA;EACA,YAAA;EACA,eAAA;EACA,YAAA;AAbR;AAeQ;EACE,YAAA;EACA,mBAAA;EACA,kBAAA;AAbV;AAgBQ;EACE,gBAAA;EACA,mBAAA;EACA,iBAAA;EAEA,SAAA;EAEA,gCAAA;AAhBV","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../../css/variables.module\\";\\n\\n.excalidraw {\\n  .OverwriteConfirm {\\n    display: flex;\\n    flex-direction: column;\\n    align-items: center;\\n    gap: 0.75rem;\\n    isolation: isolate;\\n\\n    h3 {\\n      margin: 0;\\n\\n      font-weight: 700;\\n      font-size: 1.3125rem;\\n      line-height: 130%;\\n      align-self: flex-start;\\n\\n      color: var(--text-primary-color);\\n    }\\n\\n    &__Description {\\n      box-sizing: border-box;\\n\\n      display: flex;\\n      flex-direction: row;\\n      align-items: center;\\n      width: 100%;\\n      gap: 1rem;\\n\\n      @include isMobile {\\n        flex-direction: column;\\n        text-align: center;\\n      }\\n\\n      padding: 2.5rem;\\n\\n      background: var(--color-danger-background);\\n      border-radius: 0.5rem;\\n\\n      font-family: \\"Assistant\\";\\n      font-style: normal;\\n      font-weight: 400;\\n      font-size: 1rem;\\n      line-height: 150%;\\n\\n      color: var(--color-danger-color);\\n\\n      &__spacer {\\n        flex-grow: 1;\\n      }\\n\\n      &__icon {\\n        box-sizing: border-box;\\n        display: flex;\\n        align-items: center;\\n        justify-content: center;\\n        border-radius: 2.5rem;\\n        background: var(--color-danger-icon-background);\\n        width: 3.5rem;\\n        height: 3.5rem;\\n\\n        padding: 0.75rem;\\n\\n        svg {\\n          color: var(--color-danger-icon-color);\\n          width: 1.5rem;\\n          height: 1.5rem;\\n        }\\n      }\\n\\n      &.OverwriteConfirm__Description--color-warning {\\n        background: var(--color-warning-background);\\n        color: var(--color-warning-color);\\n\\n        .OverwriteConfirm__Description__icon {\\n          background: var(--color-warning-icon-background);\\n          flex: 0 0 auto;\\n\\n          svg {\\n            color: var(--color-warning-icon-color);\\n          }\\n        }\\n      }\\n    }\\n\\n    &__Actions {\\n      display: flex;\\n      flex-direction: row;\\n      align-items: stretch;\\n      justify-items: stretch;\\n      justify-content: center;\\n      gap: 1.5rem;\\n\\n      @include isMobile {\\n        flex-direction: column;\\n      }\\n\\n      &__Action {\\n        display: flex;\\n        flex-direction: column;\\n        align-items: center;\\n        padding: 1.5rem;\\n        gap: 0.75rem;\\n        flex-basis: 50%;\\n        flex-grow: 0;\\n\\n        &__content {\\n          height: 100%;\\n          font-size: 0.875rem;\\n          text-align: center;\\n        }\\n\\n        h4 {\\n          font-weight: 700;\\n          font-size: 1.125rem;\\n          line-height: 130%;\\n\\n          margin: 0;\\n\\n          color: var(--text-primary-color);\\n        }\\n      }\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 18148 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/OverwriteConfirm/OverwriteConfirm.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/PasteChartDialog.scss": (
              /*!*************************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/PasteChartDialog.scss ***!
                \*************************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw--mobile.excalidraw .PasteChartDialog .Island {\\n  display: flex;\\n  flex-direction: column;\\n}\\n\\n.excalidraw .PasteChartDialog .container {\\n  display: flex;\\n  align-items: center;\\n  justify-content: space-around;\\n  flex-wrap: wrap;\\n}\\n.excalidraw--mobile.excalidraw .PasteChartDialog .container {\\n  flex-direction: column;\\n  justify-content: center;\\n}\\n\\n.excalidraw .PasteChartDialog .ChartPreview {\\n  margin: 8px;\\n  text-align: center;\\n  width: 192px;\\n  height: 128px;\\n  border-radius: 2px;\\n  padding: 1px;\\n  border: 1px solid #ced4da;\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  background: transparent;\\n}\\n.excalidraw .PasteChartDialog .ChartPreview div {\\n  display: inline-block;\\n}\\n.excalidraw .PasteChartDialog .ChartPreview svg {\\n  max-height: 120px;\\n  max-width: 186px;\\n}\\n.excalidraw .PasteChartDialog .ChartPreview:hover {\\n  padding: 0;\\n  border: 2px solid #339af0;\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/PasteChartDialog.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AAEM;EACE,aAAA;EACA,sBAAA;AACR;;AAEI;EACE,aAAA;EACA,mBAAA;EACA,6BAAA;EACA,eAAA;AACN;ADZW;ECaH,sBAAA;EACA,uBAAA;AAER;;AACI;EACE,WAAA;EACA,kBAAA;EACA,YAAA;EACA,aAAA;EACA,kBAAA;EACA,YAAA;EACA,yBAAA;EACA,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,uBAAA;AAEN;AADM;EACE,qBAAA;AAGR;AADM;EACE,iBAAA;EACA,gBAAA;AAGR;AADM;EACE,UAAA;EACA,yBAAA;AAGR","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../css/variables.module\\";\\n\\n.excalidraw {\\n  .PasteChartDialog {\\n    @include isMobile {\\n      .Island {\\n        display: flex;\\n        flex-direction: column;\\n      }\\n    }\\n    .container {\\n      display: flex;\\n      align-items: center;\\n      justify-content: space-around;\\n      flex-wrap: wrap;\\n      @include isMobile {\\n        flex-direction: column;\\n        justify-content: center;\\n      }\\n    }\\n    .ChartPreview {\\n      margin: 8px;\\n      text-align: center;\\n      width: 192px;\\n      height: 128px;\\n      border-radius: 2px;\\n      padding: 1px;\\n      border: 1px solid $oc-gray-4;\\n      display: flex;\\n      align-items: center;\\n      justify-content: center;\\n      background: transparent;\\n      div {\\n        display: inline-block;\\n      }\\n      svg {\\n        max-height: 120px;\\n        max-width: 186px;\\n      }\\n      &:hover {\\n        padding: 0;\\n        border: 2px solid $oc-blue-5;\\n      }\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 11104 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/PasteChartDialog.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Popover.scss": (
              /*!****************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Popover.scss ***!
                \****************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ".excalidraw .popover {\\n  position: absolute;\\n  z-index: 10;\\n  padding: 5px 0 5px;\\n  outline: none;\\n}", "",{"version":3,"sources":["webpack://./../../components/Popover.scss"],"names":[],"mappings":"AACE;EACE,kBAAA;EACA,WAAA;EACA,kBAAA;EACA,aAAA;AAAJ","sourcesContent":[".excalidraw {\\n  .popover {\\n    position: absolute;\\n    z-index: 10;\\n    padding: 5px 0 5px;\\n    outline: none;\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vY29tcG9uZW50cy9Qb3BvdmVyLnNjc3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUM4SDtBQUNqQjtBQUM3Ryw4QkFBOEIsdUdBQTJCLENBQUMsZ0hBQXFDO0FBQy9GO0FBQ0EsZ0VBQWdFLHVCQUF1QixnQkFBZ0IsdUJBQXVCLGtCQUFrQixHQUFHLE9BQU8sZ0dBQWdHLFdBQVcsVUFBVSxXQUFXLFVBQVUsc0NBQXNDLGNBQWMseUJBQXlCLGtCQUFrQix5QkFBeUIsb0JBQW9CLEtBQUssR0FBRyxxQkFBcUI7QUFDN2M7QUFDQSxpRUFBZSx1QkFBdUIsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL1BvcG92ZXIuc2Nzcz82OWVmIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5leGNhbGlkcmF3IC5wb3BvdmVyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHotaW5kZXg6IDEwO1xcbiAgcGFkZGluZzogNXB4IDAgNXB4O1xcbiAgb3V0bGluZTogbm9uZTtcXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vLi4vLi4vY29tcG9uZW50cy9Qb3BvdmVyLnNjc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQ0U7RUFDRSxrQkFBQTtFQUNBLFdBQUE7RUFDQSxrQkFBQTtFQUNBLGFBQUE7QUFBSlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCIuZXhjYWxpZHJhdyB7XFxuICAucG9wb3ZlciB7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgei1pbmRleDogMTA7XFxuICAgIHBhZGRpbmc6IDVweCAwIDVweDtcXG4gICAgb3V0bGluZTogbm9uZTtcXG4gIH1cXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Popover.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ProjectName.scss": (
              /*!********************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ProjectName.scss ***!
                \********************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ".ProjectName {\\n  margin: auto;\\n  display: flex;\\n  align-items: center;\\n}\\n.ProjectName .TextInput {\\n  height: calc(1rem - 3px);\\n  width: 200px;\\n  overflow: hidden;\\n  text-align: center;\\n  margin-left: 8px;\\n  text-overflow: ellipsis;\\n}\\n.ProjectName .TextInput--readonly {\\n  background: none;\\n  border: none;\\n  width: auto;\\n  max-width: 200px;\\n  padding-left: 2px;\\n}\\n.ProjectName .TextInput--readonly:hover {\\n  background: none;\\n}", "",{"version":3,"sources":["webpack://./../../components/ProjectName.scss"],"names":[],"mappings":"AAAA;EACE,YAAA;EACA,aAAA;EACA,mBAAA;AACF;AACE;EACE,wBAAA;EACA,YAAA;EACA,gBAAA;EACA,kBAAA;EACA,gBAAA;EACA,uBAAA;AACJ;AACI;EACE,gBAAA;EACA,YAAA;EAIA,WAAA;EACA,gBAAA;EACA,iBAAA;AAFN;AAHM;EACE,gBAAA;AAKR","sourcesContent":[".ProjectName {\\n  margin: auto;\\n  display: flex;\\n  align-items: center;\\n\\n  .TextInput {\\n    height: calc(1rem - 3px);\\n    width: 200px;\\n    overflow: hidden;\\n    text-align: center;\\n    margin-left: 8px;\\n    text-overflow: ellipsis;\\n\\n    &--readonly {\\n      background: none;\\n      border: none;\\n      &:hover {\\n        background: none;\\n      }\\n      width: auto;\\n      max-width: 200px;\\n      padding-left: 2px;\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vY29tcG9uZW50cy9Qcm9qZWN0TmFtZS5zY3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDOEg7QUFDakI7QUFDN0csOEJBQThCLHVHQUEyQixDQUFDLGdIQUFxQztBQUMvRjtBQUNBLHdEQUF3RCxpQkFBaUIsa0JBQWtCLHdCQUF3QixHQUFHLDJCQUEyQiw2QkFBNkIsaUJBQWlCLHFCQUFxQix1QkFBdUIscUJBQXFCLDRCQUE0QixHQUFHLHFDQUFxQyxxQkFBcUIsaUJBQWlCLGdCQUFnQixxQkFBcUIsc0JBQXNCLEdBQUcsMkNBQTJDLHFCQUFxQixHQUFHLE9BQU8sb0dBQW9HLFVBQVUsVUFBVSxXQUFXLEtBQUssS0FBSyxXQUFXLFVBQVUsV0FBVyxXQUFXLFdBQVcsV0FBVyxLQUFLLEtBQUssV0FBVyxVQUFVLFVBQVUsV0FBVyxXQUFXLEtBQUssS0FBSyxXQUFXLHVDQUF1QyxpQkFBaUIsa0JBQWtCLHdCQUF3QixrQkFBa0IsK0JBQStCLG1CQUFtQix1QkFBdUIseUJBQXlCLHVCQUF1Qiw4QkFBOEIscUJBQXFCLHlCQUF5QixxQkFBcUIsaUJBQWlCLDJCQUEyQixTQUFTLG9CQUFvQix5QkFBeUIsMEJBQTBCLE9BQU8sS0FBSyxHQUFHLHFCQUFxQjtBQUNsd0M7QUFDQSxpRUFBZSx1QkFBdUIsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL1Byb2plY3ROYW1lLnNjc3M/MjE3YiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIuUHJvamVjdE5hbWUge1xcbiAgbWFyZ2luOiBhdXRvO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxufVxcbi5Qcm9qZWN0TmFtZSAuVGV4dElucHV0IHtcXG4gIGhlaWdodDogY2FsYygxcmVtIC0gM3B4KTtcXG4gIHdpZHRoOiAyMDBweDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICBtYXJnaW4tbGVmdDogOHB4O1xcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XFxufVxcbi5Qcm9qZWN0TmFtZSAuVGV4dElucHV0LS1yZWFkb25seSB7XFxuICBiYWNrZ3JvdW5kOiBub25lO1xcbiAgYm9yZGVyOiBub25lO1xcbiAgd2lkdGg6IGF1dG87XFxuICBtYXgtd2lkdGg6IDIwMHB4O1xcbiAgcGFkZGluZy1sZWZ0OiAycHg7XFxufVxcbi5Qcm9qZWN0TmFtZSAuVGV4dElucHV0LS1yZWFkb25seTpob3ZlciB7XFxuICBiYWNrZ3JvdW5kOiBub25lO1xcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi8uLi8uLi9jb21wb25lbnRzL1Byb2plY3ROYW1lLnNjc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQUE7RUFDRSxZQUFBO0VBQ0EsYUFBQTtFQUNBLG1CQUFBO0FBQ0Y7QUFDRTtFQUNFLHdCQUFBO0VBQ0EsWUFBQTtFQUNBLGdCQUFBO0VBQ0Esa0JBQUE7RUFDQSxnQkFBQTtFQUNBLHVCQUFBO0FBQ0o7QUFDSTtFQUNFLGdCQUFBO0VBQ0EsWUFBQTtFQUlBLFdBQUE7RUFDQSxnQkFBQTtFQUNBLGlCQUFBO0FBRk47QUFITTtFQUNFLGdCQUFBO0FBS1JcIixcInNvdXJjZXNDb250ZW50XCI6W1wiLlByb2plY3ROYW1lIHtcXG4gIG1hcmdpbjogYXV0bztcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcblxcbiAgLlRleHRJbnB1dCB7XFxuICAgIGhlaWdodDogY2FsYygxcmVtIC0gM3B4KTtcXG4gICAgd2lkdGg6IDIwMHB4O1xcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICAgIG1hcmdpbi1sZWZ0OiA4cHg7XFxuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xcblxcbiAgICAmLS1yZWFkb25seSB7XFxuICAgICAgYmFja2dyb3VuZDogbm9uZTtcXG4gICAgICBib3JkZXI6IG5vbmU7XFxuICAgICAgJjpob3ZlciB7XFxuICAgICAgICBiYWNrZ3JvdW5kOiBub25lO1xcbiAgICAgIH1cXG4gICAgICB3aWR0aDogYXV0bztcXG4gICAgICBtYXgtd2lkdGg6IDIwMHB4O1xcbiAgICAgIHBhZGRpbmctbGVmdDogMnB4O1xcbiAgICB9XFxuICB9XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ProjectName.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/PublishLibrary.scss": (
              /*!***********************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/PublishLibrary.scss ***!
                \***********************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .publish-library__fields {\\n  display: flex;\\n  flex-direction: column;\\n}\\n.excalidraw .publish-library__fields label {\\n  padding: 1em 0;\\n  display: flex;\\n  justify-content: space-between;\\n  align-items: center;\\n}\\n.excalidraw .publish-library__fields label span {\\n  font-weight: 500;\\n  font-size: 1rem;\\n  color: #868e96;\\n}\\n.excalidraw .publish-library__fields label input,\\n.excalidraw .publish-library__fields label textarea {\\n  width: 70%;\\n  padding: 0.6em;\\n  font-family: var(--ui-font);\\n}\\n.excalidraw .publish-library__fields label .required {\\n  color: #e03131;\\n  margin: 0.2rem;\\n}\\n.excalidraw .publish-library__buttons {\\n  display: flex;\\n  padding: 0.2rem 0;\\n  justify-content: flex-end;\\n  gap: 0.5rem;\\n}\\n.excalidraw .publish-library__buttons .ToolIcon__icon {\\n  min-width: 2.5rem;\\n  width: auto;\\n  font-size: 1rem;\\n}\\n.excalidraw .publish-library__buttons .ToolIcon_type_button {\\n  margin-left: 1rem;\\n  padding: 0 0.5rem;\\n}\\n.excalidraw .publish-library__buttons--confirm.ToolIcon_type_button {\\n  background-color: #228be6;\\n}\\n.excalidraw .publish-library__buttons--confirm.ToolIcon_type_button:hover {\\n  background-color: #1971c2;\\n}\\n.excalidraw .publish-library__buttons--cancel.ToolIcon_type_button {\\n  background-color: #adb5bd;\\n}\\n.excalidraw .publish-library__buttons--cancel.ToolIcon_type_button:hover {\\n  background-color: #868e96;\\n}\\n.excalidraw .publish-library__buttons .ToolIcon__icon {\\n  color: #ffffff;\\n}\\n.excalidraw .publish-library__buttons .ToolIcon__icon .Spinner {\\n  --spinner-color: #fff;\\n}\\n.excalidraw .publish-library__buttons .ToolIcon__icon .Spinner svg {\\n  padding: 0.5rem;\\n}\\n.excalidraw .publish-library .selected-library-items {\\n  display: flex;\\n  flex-wrap: wrap;\\n}\\n.excalidraw .publish-library .selected-library-items .single-library-item-wrapper {\\n  width: 9rem;\\n}\\n.excalidraw .publish-library-warning {\\n  color: #fa5252;\\n}\\n.excalidraw .publish-library-note {\\n  padding: 1em 0;\\n  font-style: italic;\\n  font-size: 14px;\\n  display: block;\\n}\\n.excalidraw .single-library-item {\\n  position: relative;\\n}\\n.excalidraw .single-library-item-status {\\n  position: absolute;\\n  top: 0.3rem;\\n  left: 0.3rem;\\n  font-size: 0.7rem;\\n  color: #f03e3e;\\n  background: rgba(255, 255, 255, 0.9);\\n  padding: 0.1rem 0.2rem;\\n  border-radius: 0.2rem;\\n}\\n.excalidraw .single-library-item__svg {\\n  background-color: #ffffff;\\n  padding: 0.3rem;\\n  width: 7.5rem;\\n  height: 7.5rem;\\n  border: 1px solid var(--button-gray-2);\\n}\\n.excalidraw .single-library-item__svg svg {\\n  width: 100%;\\n  height: 100%;\\n}\\n.excalidraw .single-library-item .ToolIcon__icon {\\n  background-color: #ffffff;\\n  width: auto;\\n  height: auto;\\n  margin: 0 0.5rem;\\n}\\n.excalidraw .single-library-item .ToolIcon,\\n.excalidraw .single-library-item .ToolIcon_type_button:hover {\\n  background-color: white;\\n}\\n.excalidraw .single-library-item .required,\\n.excalidraw .single-library-item .error {\\n  color: #e03131;\\n  font-weight: bold;\\n  font-size: 1rem;\\n  margin: 0.2rem;\\n}\\n.excalidraw .single-library-item .error {\\n  font-weight: 500;\\n  margin: 0;\\n  padding: 0.3em 0;\\n}\\n.excalidraw .single-library-item--remove {\\n  position: absolute;\\n  top: 0.2rem;\\n  right: 1rem;\\n}\\n.excalidraw .single-library-item--remove .ToolIcon__icon {\\n  margin: 0;\\n}\\n.excalidraw .single-library-item--remove .ToolIcon__icon {\\n  background-color: #fa5252;\\n}\\n.excalidraw .single-library-item--remove .ToolIcon__icon:hover {\\n  background-color: #f03e3e;\\n}\\n.excalidraw .single-library-item--remove .ToolIcon__icon:active {\\n  background-color: #e03131;\\n}\\n.excalidraw .single-library-item--remove svg {\\n  color: #ffffff;\\n  padding: 0.26rem;\\n  border-radius: 0.3em;\\n  width: 1rem;\\n  height: 1rem;\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/PublishLibrary.scss","webpack://./../../../node_modules/open-color/open-color.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AACI;EACE,aAAA;EACA,sBAAA;AAEN;AAAM;EACE,cAAA;EACA,aAAA;EACA,8BAAA;EACA,mBAAA;AAER;AADQ;EACE,gBAAA;EACA,eAAA;EACA,cCqBE;ADlBZ;AADQ;;EAEE,UAAA;EACA,cAAA;EACA,2BAAA;AAGV;AAAQ;EACE,cCyCC;EDxCD,cAAA;AAEV;AAGI;EACE,aAAA;EACA,iBAAA;EACA,yBAAA;EACA,WAAA;AADN;AAGM;EACE,iBAAA;EACA,WAAA;EACA,eAAA;AADR;AAIM;EACE,iBAAA;EACA,iBAAA;AAFR;AAKM;EACE,yBC2JI;AD9JZ;AAKQ;EACE,yBC0JE;AD7JZ;AAOM;EACE,yBCtBI;ADiBZ;AAMQ;EACE,yBCvBE;ADmBZ;AAQM;EACE,cCtDW;ADgDnB;AAOQ;EACE,qBAAA;AALV;AAMU;EACE,eAAA;AAJZ;AAUI;EACE,aAAA;EACA,eAAA;AARN;AAUM;EACE,WAAA;AARR;AAYI;EACE,cCpBK;ADUX;AAaI;EACE,cAAA;EACA,kBAAA;EACA,eAAA;EACA,cAAA;AAXN;AAeE;EACE,kBAAA;AAbJ;AAeI;EACE,kBAAA;EACA,WAAA;EACA,YAAA;EACA,iBAAA;EACA,cCtCK;EDuCL,oCAAA;EACA,sBAAA;EACA,qBAAA;AAbN;AAgBI;EACE,yBCpGa;EDqGb,eAAA;EACA,aAAA;EACA,cAAA;EACA,sCAAA;AAdN;AAeM;EACE,WAAA;EACA,YAAA;AAbR;AAiBI;EACE,yBChHa;EDiHb,WAAA;EACA,YAAA;EACA,gBAAA;AAfN;AAiBI;;EAEE,uBAAA;AAfN;AAiBI;;EAEE,cCnEK;EDoEL,iBAAA;EACA,eAAA;EACA,cAAA;AAfN;AAiBI;EACE,gBAAA;EACA,SAAA;EACA,gBAAA;AAfN;AAkBI;EACE,kBAAA;EACA,WAAA;EACA,WAAA;AAhBN;AAkBM;EACE,SAAA;AAhBR;AAkBM;EACE,yBCzFG;ADyEX;AAiBQ;EACE,yBC1FC;AD2EX;AAiBQ;EACE,yBC5FC;AD6EX;AAkBM;EACE,cCxJW;EDyJX,gBAAA;EACA,oBAAA;EACA,WAAA;EACA,YAAA;AAhBR","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../css/variables.module\\";\\n\\n.excalidraw {\\n  .publish-library {\\n    &__fields {\\n      display: flex;\\n      flex-direction: column;\\n\\n      label {\\n        padding: 1em 0;\\n        display: flex;\\n        justify-content: space-between;\\n        align-items: center;\\n        span {\\n          font-weight: 500;\\n          font-size: 1rem;\\n          color: $oc-gray-6;\\n        }\\n        input,\\n        textarea {\\n          width: 70%;\\n          padding: 0.6em;\\n          font-family: var(--ui-font);\\n        }\\n\\n        .required {\\n          color: $oc-red-8;\\n          margin: 0.2rem;\\n        }\\n      }\\n    }\\n\\n    &__buttons {\\n      display: flex;\\n      padding: 0.2rem 0;\\n      justify-content: flex-end;\\n      gap: 0.5rem;\\n\\n      .ToolIcon__icon {\\n        min-width: 2.5rem;\\n        width: auto;\\n        font-size: 1rem;\\n      }\\n\\n      .ToolIcon_type_button {\\n        margin-left: 1rem;\\n        padding: 0 0.5rem;\\n      }\\n\\n      &--confirm.ToolIcon_type_button {\\n        background-color: $oc-blue-6;\\n\\n        &:hover {\\n          background-color: $oc-blue-8;\\n        }\\n      }\\n\\n      &--cancel.ToolIcon_type_button {\\n        background-color: $oc-gray-5;\\n        &:hover {\\n          background-color: $oc-gray-6;\\n        }\\n      }\\n\\n      .ToolIcon__icon {\\n        color: $oc-white;\\n        .Spinner {\\n          --spinner-color: #fff;\\n          svg {\\n            padding: 0.5rem;\\n          }\\n        }\\n      }\\n    }\\n\\n    .selected-library-items {\\n      display: flex;\\n      flex-wrap: wrap;\\n\\n      .single-library-item-wrapper {\\n        width: 9rem;\\n      }\\n    }\\n\\n    &-warning {\\n      color: $oc-red-6;\\n    }\\n\\n    &-note {\\n      padding: 1em 0;\\n      font-style: italic;\\n      font-size: 14px;\\n      display: block;\\n    }\\n  }\\n\\n  .single-library-item {\\n    position: relative;\\n\\n    &-status {\\n      position: absolute;\\n      top: 0.3rem;\\n      left: 0.3rem;\\n      font-size: 0.7rem;\\n      color: $oc-red-7;\\n      background: rgba(255, 255, 255, 0.9);\\n      padding: 0.1rem 0.2rem;\\n      border-radius: 0.2rem;\\n    }\\n\\n    &__svg {\\n      background-color: $oc-white;\\n      padding: 0.3rem;\\n      width: 7.5rem;\\n      height: 7.5rem;\\n      border: 1px solid var(--button-gray-2);\\n      svg {\\n        width: 100%;\\n        height: 100%;\\n      }\\n    }\\n\\n    .ToolIcon__icon {\\n      background-color: $oc-white;\\n      width: auto;\\n      height: auto;\\n      margin: 0 0.5rem;\\n    }\\n    .ToolIcon,\\n    .ToolIcon_type_button:hover {\\n      background-color: white;\\n    }\\n    .required,\\n    .error {\\n      color: $oc-red-8;\\n      font-weight: bold;\\n      font-size: 1rem;\\n      margin: 0.2rem;\\n    }\\n    .error {\\n      font-weight: 500;\\n      margin: 0;\\n      padding: 0.3em 0;\\n    }\\n\\n    &--remove {\\n      position: absolute;\\n      top: 0.2rem;\\n      right: 1rem;\\n\\n      .ToolIcon__icon {\\n        margin: 0;\\n      }\\n      .ToolIcon__icon {\\n        background-color: $oc-red-6;\\n        &:hover {\\n          background-color: $oc-red-7;\\n        }\\n        &:active {\\n          background-color: $oc-red-8;\\n        }\\n      }\\n      svg {\\n        color: $oc-white;\\n        padding: 0.26rem;\\n        border-radius: 0.3em;\\n        width: 1rem;\\n        height: 1rem;\\n      }\\n    }\\n  }\\n}\\n","//\\n//\\n//  \u{1D5D6} \u{1D5E2} \u{1D5DF} \u{1D5E2} \u{1D5E5}\\n//  v 1.9.1\\n//\\n//  \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\\n\\n\\n//  General\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-white:         #ffffff;\\n$oc-black:         #000000;\\n\\n\\n//  Gray\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-gray-list: (\\n  \\"0\\": #f8f9fa,\\n  \\"1\\": #f1f3f5,\\n  \\"2\\": #e9ecef,\\n  \\"3\\": #dee2e6,\\n  \\"4\\": #ced4da,\\n  \\"5\\": #adb5bd,\\n  \\"6\\": #868e96,\\n  \\"7\\": #495057,\\n  \\"8\\": #343a40,\\n  \\"9\\": #212529\\n);\\n\\n$oc-gray-0: map-get($oc-gray-list, \\"0\\");\\n$oc-gray-1: map-get($oc-gray-list, \\"1\\");\\n$oc-gray-2: map-get($oc-gray-list, \\"2\\");\\n$oc-gray-3: map-get($oc-gray-list, \\"3\\");\\n$oc-gray-4: map-get($oc-gray-list, \\"4\\");\\n$oc-gray-5: map-get($oc-gray-list, \\"5\\");\\n$oc-gray-6: map-get($oc-gray-list, \\"6\\");\\n$oc-gray-7: map-get($oc-gray-list, \\"7\\");\\n$oc-gray-8: map-get($oc-gray-list, \\"8\\");\\n$oc-gray-9: map-get($oc-gray-list, \\"9\\");\\n\\n\\n//  Red\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-red-list: (\\n  \\"0\\": #fff5f5,\\n  \\"1\\": #ffe3e3,\\n  \\"2\\": #ffc9c9,\\n  \\"3\\": #ffa8a8,\\n  \\"4\\": #ff8787,\\n  \\"5\\": #ff6b6b,\\n  \\"6\\": #fa5252,\\n  \\"7\\": #f03e3e,\\n  \\"8\\": #e03131,\\n  \\"9\\": #c92a2a\\n);\\n\\n$oc-red-0: map-get($oc-red-list, \\"0\\");\\n$oc-red-1: map-get($oc-red-list, \\"1\\");\\n$oc-red-2: map-get($oc-red-list, \\"2\\");\\n$oc-red-3: map-get($oc-red-list, \\"3\\");\\n$oc-red-4: map-get($oc-red-list, \\"4\\");\\n$oc-red-5: map-get($oc-red-list, \\"5\\");\\n$oc-red-6: map-get($oc-red-list, \\"6\\");\\n$oc-red-7: map-get($oc-red-list, \\"7\\");\\n$oc-red-8: map-get($oc-red-list, \\"8\\");\\n$oc-red-9: map-get($oc-red-list, \\"9\\");\\n\\n\\n//  Pink\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-pink-list: (\\n  \\"0\\": #fff0f6,\\n  \\"1\\": #ffdeeb,\\n  \\"2\\": #fcc2d7,\\n  \\"3\\": #faa2c1,\\n  \\"4\\": #f783ac,\\n  \\"5\\": #f06595,\\n  \\"6\\": #e64980,\\n  \\"7\\": #d6336c,\\n  \\"8\\": #c2255c,\\n  \\"9\\": #a61e4d\\n);\\n\\n$oc-pink-0: map-get($oc-pink-list, \\"0\\");\\n$oc-pink-1: map-get($oc-pink-list, \\"1\\");\\n$oc-pink-2: map-get($oc-pink-list, \\"2\\");\\n$oc-pink-3: map-get($oc-pink-list, \\"3\\");\\n$oc-pink-4: map-get($oc-pink-list, \\"4\\");\\n$oc-pink-5: map-get($oc-pink-list, \\"5\\");\\n$oc-pink-6: map-get($oc-pink-list, \\"6\\");\\n$oc-pink-7: map-get($oc-pink-list, \\"7\\");\\n$oc-pink-8: map-get($oc-pink-list, \\"8\\");\\n$oc-pink-9: map-get($oc-pink-list, \\"9\\");\\n\\n\\n//  Grape\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-grape-list: (\\n  \\"0\\": #f8f0fc,\\n  \\"1\\": #f3d9fa,\\n  \\"2\\": #eebefa,\\n  \\"3\\": #e599f7,\\n  \\"4\\": #da77f2,\\n  \\"5\\": #cc5de8,\\n  \\"6\\": #be4bdb,\\n  \\"7\\": #ae3ec9,\\n  \\"8\\": #9c36b5,\\n  \\"9\\": #862e9c\\n);\\n\\n$oc-grape-0: map-get($oc-grape-list, \\"0\\");\\n$oc-grape-1: map-get($oc-grape-list, \\"1\\");\\n$oc-grape-2: map-get($oc-grape-list, \\"2\\");\\n$oc-grape-3: map-get($oc-grape-list, \\"3\\");\\n$oc-grape-4: map-get($oc-grape-list, \\"4\\");\\n$oc-grape-5: map-get($oc-grape-list, \\"5\\");\\n$oc-grape-6: map-get($oc-grape-list, \\"6\\");\\n$oc-grape-7: map-get($oc-grape-list, \\"7\\");\\n$oc-grape-8: map-get($oc-grape-list, \\"8\\");\\n$oc-grape-9: map-get($oc-grape-list, \\"9\\");\\n\\n\\n//  Violet\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-violet-list: (\\n  \\"0\\": #f3f0ff,\\n  \\"1\\": #e5dbff,\\n  \\"2\\": #d0bfff,\\n  \\"3\\": #b197fc,\\n  \\"4\\": #9775fa,\\n  \\"5\\": #845ef7,\\n  \\"6\\": #7950f2,\\n  \\"7\\": #7048e8,\\n  \\"8\\": #6741d9,\\n  \\"9\\": #5f3dc4\\n);\\n\\n$oc-violet-0: map-get($oc-violet-list, \\"0\\");\\n$oc-violet-1: map-get($oc-violet-list, \\"1\\");\\n$oc-violet-2: map-get($oc-violet-list, \\"2\\");\\n$oc-violet-3: map-get($oc-violet-list, \\"3\\");\\n$oc-violet-4: map-get($oc-violet-list, \\"4\\");\\n$oc-violet-5: map-get($oc-violet-list, \\"5\\");\\n$oc-violet-6: map-get($oc-violet-list, \\"6\\");\\n$oc-violet-7: map-get($oc-violet-list, \\"7\\");\\n$oc-violet-8: map-get($oc-violet-list, \\"8\\");\\n$oc-violet-9: map-get($oc-violet-list, \\"9\\");\\n\\n\\n//  Indigo\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-indigo-list: (\\n  \\"0\\": #edf2ff,\\n  \\"1\\": #dbe4ff,\\n  \\"2\\": #bac8ff,\\n  \\"3\\": #91a7ff,\\n  \\"4\\": #748ffc,\\n  \\"5\\": #5c7cfa,\\n  \\"6\\": #4c6ef5,\\n  \\"7\\": #4263eb,\\n  \\"8\\": #3b5bdb,\\n  \\"9\\": #364fc7\\n);\\n\\n$oc-indigo-0: map-get($oc-indigo-list, \\"0\\");\\n$oc-indigo-1: map-get($oc-indigo-list, \\"1\\");\\n$oc-indigo-2: map-get($oc-indigo-list, \\"2\\");\\n$oc-indigo-3: map-get($oc-indigo-list, \\"3\\");\\n$oc-indigo-4: map-get($oc-indigo-list, \\"4\\");\\n$oc-indigo-5: map-get($oc-indigo-list, \\"5\\");\\n$oc-indigo-6: map-get($oc-indigo-list, \\"6\\");\\n$oc-indigo-7: map-get($oc-indigo-list, \\"7\\");\\n$oc-indigo-8: map-get($oc-indigo-list, \\"8\\");\\n$oc-indigo-9: map-get($oc-indigo-list, \\"9\\");\\n\\n\\n//  Blue\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-blue-list: (\\n  \\"0\\": #e7f5ff,\\n  \\"1\\": #d0ebff,\\n  \\"2\\": #a5d8ff,\\n  \\"3\\": #74c0fc,\\n  \\"4\\": #4dabf7,\\n  \\"5\\": #339af0,\\n  \\"6\\": #228be6,\\n  \\"7\\": #1c7ed6,\\n  \\"8\\": #1971c2,\\n  \\"9\\": #1864ab\\n);\\n\\n$oc-blue-0: map-get($oc-blue-list, \\"0\\");\\n$oc-blue-1: map-get($oc-blue-list, \\"1\\");\\n$oc-blue-2: map-get($oc-blue-list, \\"2\\");\\n$oc-blue-3: map-get($oc-blue-list, \\"3\\");\\n$oc-blue-4: map-get($oc-blue-list, \\"4\\");\\n$oc-blue-5: map-get($oc-blue-list, \\"5\\");\\n$oc-blue-6: map-get($oc-blue-list, \\"6\\");\\n$oc-blue-7: map-get($oc-blue-list, \\"7\\");\\n$oc-blue-8: map-get($oc-blue-list, \\"8\\");\\n$oc-blue-9: map-get($oc-blue-list, \\"9\\");\\n\\n\\n//  Cyan\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-cyan-list: (\\n  \\"0\\": #e3fafc,\\n  \\"1\\": #c5f6fa,\\n  \\"2\\": #99e9f2,\\n  \\"3\\": #66d9e8,\\n  \\"4\\": #3bc9db,\\n  \\"5\\": #22b8cf,\\n  \\"6\\": #15aabf,\\n  \\"7\\": #1098ad,\\n  \\"8\\": #0c8599,\\n  \\"9\\": #0b7285\\n);\\n\\n$oc-cyan-0: map-get($oc-cyan-list, \\"0\\");\\n$oc-cyan-1: map-get($oc-cyan-list, \\"1\\");\\n$oc-cyan-2: map-get($oc-cyan-list, \\"2\\");\\n$oc-cyan-3: map-get($oc-cyan-list, \\"3\\");\\n$oc-cyan-4: map-get($oc-cyan-list, \\"4\\");\\n$oc-cyan-5: map-get($oc-cyan-list, \\"5\\");\\n$oc-cyan-6: map-get($oc-cyan-list, \\"6\\");\\n$oc-cyan-7: map-get($oc-cyan-list, \\"7\\");\\n$oc-cyan-8: map-get($oc-cyan-list, \\"8\\");\\n$oc-cyan-9: map-get($oc-cyan-list, \\"9\\");\\n\\n\\n//  Teal\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-teal-list: (\\n  \\"0\\": #e6fcf5,\\n  \\"1\\": #c3fae8,\\n  \\"2\\": #96f2d7,\\n  \\"3\\": #63e6be,\\n  \\"4\\": #38d9a9,\\n  \\"5\\": #20c997,\\n  \\"6\\": #12b886,\\n  \\"7\\": #0ca678,\\n  \\"8\\": #099268,\\n  \\"9\\": #087f5b\\n);\\n\\n$oc-teal-0: map-get($oc-teal-list, \\"0\\");\\n$oc-teal-1: map-get($oc-teal-list, \\"1\\");\\n$oc-teal-2: map-get($oc-teal-list, \\"2\\");\\n$oc-teal-3: map-get($oc-teal-list, \\"3\\");\\n$oc-teal-4: map-get($oc-teal-list, \\"4\\");\\n$oc-teal-5: map-get($oc-teal-list, \\"5\\");\\n$oc-teal-6: map-get($oc-teal-list, \\"6\\");\\n$oc-teal-7: map-get($oc-teal-list, \\"7\\");\\n$oc-teal-8: map-get($oc-teal-list, \\"8\\");\\n$oc-teal-9: map-get($oc-teal-list, \\"9\\");\\n\\n\\n//  Green\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-green-list: (\\n  \\"0\\": #ebfbee,\\n  \\"1\\": #d3f9d8,\\n  \\"2\\": #b2f2bb,\\n  \\"3\\": #8ce99a,\\n  \\"4\\": #69db7c,\\n  \\"5\\": #51cf66,\\n  \\"6\\": #40c057,\\n  \\"7\\": #37b24d,\\n  \\"8\\": #2f9e44,\\n  \\"9\\": #2b8a3e\\n);\\n\\n$oc-green-0: map-get($oc-green-list, \\"0\\");\\n$oc-green-1: map-get($oc-green-list, \\"1\\");\\n$oc-green-2: map-get($oc-green-list, \\"2\\");\\n$oc-green-3: map-get($oc-green-list, \\"3\\");\\n$oc-green-4: map-get($oc-green-list, \\"4\\");\\n$oc-green-5: map-get($oc-green-list, \\"5\\");\\n$oc-green-6: map-get($oc-green-list, \\"6\\");\\n$oc-green-7: map-get($oc-green-list, \\"7\\");\\n$oc-green-8: map-get($oc-green-list, \\"8\\");\\n$oc-green-9: map-get($oc-green-list, \\"9\\");\\n\\n\\n//  Lime\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-lime-list: (\\n  \\"0\\": #f4fce3,\\n  \\"1\\": #e9fac8,\\n  \\"2\\": #d8f5a2,\\n  \\"3\\": #c0eb75,\\n  \\"4\\": #a9e34b,\\n  \\"5\\": #94d82d,\\n  \\"6\\": #82c91e,\\n  \\"7\\": #74b816,\\n  \\"8\\": #66a80f,\\n  \\"9\\": #5c940d\\n);\\n\\n$oc-lime-0: map-get($oc-lime-list, \\"0\\");\\n$oc-lime-1: map-get($oc-lime-list, \\"1\\");\\n$oc-lime-2: map-get($oc-lime-list, \\"2\\");\\n$oc-lime-3: map-get($oc-lime-list, \\"3\\");\\n$oc-lime-4: map-get($oc-lime-list, \\"4\\");\\n$oc-lime-5: map-get($oc-lime-list, \\"5\\");\\n$oc-lime-6: map-get($oc-lime-list, \\"6\\");\\n$oc-lime-7: map-get($oc-lime-list, \\"7\\");\\n$oc-lime-8: map-get($oc-lime-list, \\"8\\");\\n$oc-lime-9: map-get($oc-lime-list, \\"9\\");\\n\\n\\n//  Yellow\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-yellow-list: (\\n  \\"0\\": #fff9db,\\n  \\"1\\": #fff3bf,\\n  \\"2\\": #ffec99,\\n  \\"3\\": #ffe066,\\n  \\"4\\": #ffd43b,\\n  \\"5\\": #fcc419,\\n  \\"6\\": #fab005,\\n  \\"7\\": #f59f00,\\n  \\"8\\": #f08c00,\\n  \\"9\\": #e67700\\n);\\n\\n$oc-yellow-0: map-get($oc-yellow-list, \\"0\\");\\n$oc-yellow-1: map-get($oc-yellow-list, \\"1\\");\\n$oc-yellow-2: map-get($oc-yellow-list, \\"2\\");\\n$oc-yellow-3: map-get($oc-yellow-list, \\"3\\");\\n$oc-yellow-4: map-get($oc-yellow-list, \\"4\\");\\n$oc-yellow-5: map-get($oc-yellow-list, \\"5\\");\\n$oc-yellow-6: map-get($oc-yellow-list, \\"6\\");\\n$oc-yellow-7: map-get($oc-yellow-list, \\"7\\");\\n$oc-yellow-8: map-get($oc-yellow-list, \\"8\\");\\n$oc-yellow-9: map-get($oc-yellow-list, \\"9\\");\\n\\n\\n//  Orange\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-orange-list: (\\n  \\"0\\": #fff4e6,\\n  \\"1\\": #ffe8cc,\\n  \\"2\\": #ffd8a8,\\n  \\"3\\": #ffc078,\\n  \\"4\\": #ffa94d,\\n  \\"5\\": #ff922b,\\n  \\"6\\": #fd7e14,\\n  \\"7\\": #f76707,\\n  \\"8\\": #e8590c,\\n  \\"9\\": #d9480f\\n);\\n\\n$oc-orange-0: map-get($oc-orange-list, \\"0\\");\\n$oc-orange-1: map-get($oc-orange-list, \\"1\\");\\n$oc-orange-2: map-get($oc-orange-list, \\"2\\");\\n$oc-orange-3: map-get($oc-orange-list, \\"3\\");\\n$oc-orange-4: map-get($oc-orange-list, \\"4\\");\\n$oc-orange-5: map-get($oc-orange-list, \\"5\\");\\n$oc-orange-6: map-get($oc-orange-list, \\"6\\");\\n$oc-orange-7: map-get($oc-orange-list, \\"7\\");\\n$oc-orange-8: map-get($oc-orange-list, \\"8\\");\\n$oc-orange-9: map-get($oc-orange-list, \\"9\\");\\n\\n\\n//  Color list\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-color-spectrum:   9;\\n\\n$oc-color-list: (\\n  $oc-gray-list:      \\"gray\\",\\n  $oc-red-list:      \\"red\\",\\n  $oc-pink-list:      \\"pink\\",\\n  $oc-grape-list:      \\"grape\\",\\n  $oc-violet-list:      \\"violet\\",\\n  $oc-indigo-list:      \\"indigo\\",\\n  $oc-blue-list:      \\"blue\\",\\n  $oc-cyan-list:      \\"cyan\\",\\n  $oc-teal-list:      \\"teal\\",\\n  $oc-green-list:      \\"green\\",\\n  $oc-lime-list:      \\"lime\\",\\n  $oc-yellow-list:      \\"yellow\\",\\n  $oc-orange-list:      \\"orange\\"\\n);\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 40572 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/PublishLibrary.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/RadioGroup.scss": (
              /*!*******************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/RadioGroup.scss ***!
                \*******************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw {\\n  --RadioGroup-background: var(--island-bg-color);\\n  --RadioGroup-border: var(--color-surface-high);\\n  --RadioGroup-choice-color-off: var(--color-primary);\\n  --RadioGroup-choice-color-off-hover: var(--color-brand-hover);\\n  --RadioGroup-choice-background-off: var(--island-bg-color);\\n  --RadioGroup-choice-background-off-active: var(--color-surface-high);\\n  --RadioGroup-choice-color-on: var(--color-surface-lowest);\\n  --RadioGroup-choice-background-on: var(--color-primary);\\n  --RadioGroup-choice-background-on-hover: var(--color-brand-hover);\\n  --RadioGroup-choice-background-on-active: var(--color-brand-active);\\n}\\n.excalidraw .RadioGroup {\\n  box-sizing: border-box;\\n  display: flex;\\n  flex-direction: row;\\n  align-items: flex-start;\\n  padding: 3px;\\n  border-radius: 10px;\\n  background: var(--RadioGroup-background);\\n  border: 1px solid var(--RadioGroup-border);\\n}\\n.excalidraw .RadioGroup__choice {\\n  position: relative;\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  width: 32px;\\n  height: 24px;\\n  color: var(--RadioGroup-choice-color-off);\\n  background: var(--RadioGroup-choice-background-off);\\n  border-radius: 8px;\\n  font-family: \\"Assistant\\";\\n  font-style: normal;\\n  font-weight: 600;\\n  font-size: 0.75rem;\\n  line-height: 100%;\\n  user-select: none;\\n  letter-spacing: 0.4px;\\n  transition: all 75ms ease-out;\\n}\\n.excalidraw .RadioGroup__choice:hover {\\n  color: var(--RadioGroup-choice-color-off-hover);\\n}\\n.excalidraw .RadioGroup__choice:active {\\n  background: var(--RadioGroup-choice-background-off-active);\\n}\\n.excalidraw .RadioGroup__choice.active {\\n  color: var(--RadioGroup-choice-color-on);\\n  background: var(--RadioGroup-choice-background-on);\\n}\\n.excalidraw .RadioGroup__choice.active:hover {\\n  background: var(--RadioGroup-choice-background-on-hover);\\n}\\n.excalidraw .RadioGroup__choice.active:active {\\n  background: var(--RadioGroup-choice-background-on-active);\\n}\\n.excalidraw .RadioGroup__choice input {\\n  z-index: 1;\\n  position: absolute;\\n  width: 100%;\\n  height: 100%;\\n  margin: 0;\\n  padding: 0;\\n  border-radius: 8px;\\n  appearance: none;\\n  cursor: pointer;\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/RadioGroup.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AADA;EACE,+CAAA;EACA,8CAAA;EAEA,mDAAA;EACA,6DAAA;EACA,0DAAA;EACA,oEAAA;EAEA,yDAAA;EACA,uDAAA;EACA,iEAAA;EACA,mEAAA;AAEF;AAAE;EACE,sBAAA;EACA,aAAA;EACA,mBAAA;EACA,uBAAA;EAEA,YAAA;EACA,mBAAA;EAEA,wCAAA;EACA,0CAAA;AAAJ;AAEI;EACE,kBAAA;EACA,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,WAAA;EACA,YAAA;EAEA,yCAAA;EACA,mDAAA;EAEA,kBAAA;EAEA,wBAAA;EACA,kBAAA;EACA,gBAAA;EACA,kBAAA;EACA,iBAAA;EACA,iBAAA;EACA,qBAAA;EAEA,6BAAA;AAJN;AAMM;EACE,+CAAA;AAJR;AAOM;EACE,0DAAA;AALR;AAQM;EACE,wCAAA;EACA,kDAAA;AANR;AAQQ;EACE,wDAAA;AANV;AASQ;EACE,yDAAA;AAPV;AAWM;EACE,UAAA;EACA,kBAAA;EACA,WAAA;EACA,YAAA;EACA,SAAA;EACA,UAAA;EAEA,kBAAA;EAIA,gBAAA;EAEA,eAAA;AAZR","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../css/variables.module\\";\\n\\n.excalidraw {\\n  --RadioGroup-background: var(--island-bg-color);\\n  --RadioGroup-border: var(--color-surface-high);\\n\\n  --RadioGroup-choice-color-off: var(--color-primary);\\n  --RadioGroup-choice-color-off-hover: var(--color-brand-hover);\\n  --RadioGroup-choice-background-off: var(--island-bg-color);\\n  --RadioGroup-choice-background-off-active: var(--color-surface-high);\\n\\n  --RadioGroup-choice-color-on: var(--color-surface-lowest);\\n  --RadioGroup-choice-background-on: var(--color-primary);\\n  --RadioGroup-choice-background-on-hover: var(--color-brand-hover);\\n  --RadioGroup-choice-background-on-active: var(--color-brand-active);\\n\\n  .RadioGroup {\\n    box-sizing: border-box;\\n    display: flex;\\n    flex-direction: row;\\n    align-items: flex-start;\\n\\n    padding: 3px;\\n    border-radius: 10px;\\n\\n    background: var(--RadioGroup-background);\\n    border: 1px solid var(--RadioGroup-border);\\n\\n    &__choice {\\n      position: relative;\\n      display: flex;\\n      align-items: center;\\n      justify-content: center;\\n      width: 32px;\\n      height: 24px;\\n\\n      color: var(--RadioGroup-choice-color-off);\\n      background: var(--RadioGroup-choice-background-off);\\n\\n      border-radius: 8px;\\n\\n      font-family: \\"Assistant\\";\\n      font-style: normal;\\n      font-weight: 600;\\n      font-size: 0.75rem;\\n      line-height: 100%;\\n      user-select: none;\\n      letter-spacing: 0.4px;\\n\\n      transition: all 75ms ease-out;\\n\\n      &:hover {\\n        color: var(--RadioGroup-choice-color-off-hover);\\n      }\\n\\n      &:active {\\n        background: var(--RadioGroup-choice-background-off-active);\\n      }\\n\\n      &.active {\\n        color: var(--RadioGroup-choice-color-on);\\n        background: var(--RadioGroup-choice-background-on);\\n\\n        &:hover {\\n          background: var(--RadioGroup-choice-background-on-hover);\\n        }\\n\\n        &:active {\\n          background: var(--RadioGroup-choice-background-on-active);\\n        }\\n      }\\n\\n      & input {\\n        z-index: 1;\\n        position: absolute;\\n        width: 100%;\\n        height: 100%;\\n        margin: 0;\\n        padding: 0;\\n\\n        border-radius: 8px;\\n\\n        -webkit-appearance: none;\\n        -moz-appearance: none;\\n        appearance: none;\\n\\n        cursor: pointer;\\n      }\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 15804 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/RadioGroup.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Sidebar/Sidebar.scss": (
              /*!************************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Sidebar/Sidebar.scss ***!
                \************************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .sidebar {\\n  display: flex;\\n  flex-direction: column;\\n  position: absolute;\\n  top: 0;\\n  bottom: 0;\\n  right: 0;\\n  z-index: 5;\\n  margin: 0;\\n  padding: 0;\\n  box-sizing: border-box;\\n  background-color: var(--sidebar-bg-color);\\n  box-shadow: var(--sidebar-shadow);\\n  pointer-events: var(--ui-pointerEvents);\\n  overflow: hidden;\\n  border-radius: 0;\\n  width: calc(302px - var(--space-factor) * 2);\\n  border-left: 1px solid var(--sidebar-border-color);\\n}\\n:root[dir=rtl] .excalidraw .sidebar {\\n  left: 0;\\n  right: auto;\\n}\\n.excalidraw .sidebar--docked {\\n  box-shadow: none;\\n}\\n:root[dir=rtl] .excalidraw .sidebar {\\n  border-right: 1px solid var(--sidebar-border-color);\\n  border-left: 0;\\n}\\n.excalidraw .sidebar__header {\\n  box-sizing: border-box;\\n  display: flex;\\n  justify-content: space-between;\\n  align-items: center;\\n  width: 100%;\\n  padding: 1rem 0.75rem;\\n  position: relative;\\n}\\n.excalidraw .sidebar__header::after {\\n  content: \\"\\";\\n  width: calc(100% - 1.5rem);\\n  height: 1px;\\n  background: var(--sidebar-border-color);\\n  position: absolute;\\n  bottom: -1px;\\n}\\n.excalidraw .sidebar__header__buttons {\\n  gap: 0;\\n  display: flex;\\n  align-items: center;\\n  margin-left: auto;\\n}\\n.excalidraw .sidebar__header__buttons button {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n  --button-bg: transparent;\\n  border: 0 !important;\\n  width: var(--lg-button-size);\\n  height: var(--lg-button-size);\\n  padding: 0;\\n}\\n.excalidraw .sidebar__header__buttons button svg {\\n  width: var(--button-width, var(--lg-icon-size));\\n  height: var(--button-height, var(--lg-icon-size));\\n}\\n.excalidraw .sidebar__header__buttons button:hover {\\n  background-color: var(--button-hover-bg, var(--island-bg-color));\\n  border-color: var(--button-hover-border, var(--button-border, var(--default-border-color)));\\n  color: var(--button-hover-color, var(--button-color, var(--text-primary-color, inherit)));\\n}\\n.excalidraw .sidebar__header__buttons button:active {\\n  background-color: var(--button-active-bg, var(--island-bg-color));\\n  border-color: var(--button-active-border, var(--color-primary-darkest));\\n}\\n.excalidraw .sidebar__header__buttons button.active {\\n  background-color: var(--button-selected-bg, var(--color-surface-primary-container));\\n  border-color: var(--button-selected-border, var(--color-surface-primary-container));\\n}\\n.excalidraw .sidebar__header__buttons button.active:hover {\\n  background-color: var(--button-selected-hover-bg, var(--color-surface-primary-container));\\n}\\n.excalidraw .sidebar__header__buttons button.active svg {\\n  color: var(--button-color, var(--color-on-primary-container));\\n}\\n.excalidraw .sidebar__header__buttons button svg {\\n  width: var(--lg-icon-size);\\n  height: var(--lg-icon-size);\\n}\\n.excalidraw .sidebar__header__buttons button:hover {\\n  background: var(--button-hover-bg, var(--island-bg-color));\\n}\\n.excalidraw .sidebar__header__buttons .sidebar__dock.selected svg {\\n  stroke: var(--color-primary);\\n  fill: var(--color-primary);\\n}\\n.excalidraw .sidebar-tabs-root {\\n  display: flex;\\n  flex-direction: column;\\n  flex: 1 1 auto;\\n  padding: 1rem 0;\\n}\\n.excalidraw .sidebar-tabs-root [role=tabpanel] {\\n  flex: 1;\\n  outline: none;\\n  flex: 1 1 auto;\\n  display: flex;\\n  flex-direction: column;\\n  outline: none;\\n}\\n.excalidraw .sidebar-tabs-root [role=tabpanel][data-state=inactive] {\\n  display: none !important;\\n}\\n.excalidraw .sidebar-tabs-root [role=tablist] {\\n  display: grid;\\n  gap: 1rem;\\n  grid-template-columns: repeat(auto-fit, minmax(0, 1fr));\\n}\\n.excalidraw .sidebar-tabs-root > .sidebar__header {\\n  padding-top: 0;\\n  padding-bottom: 1rem;\\n}\\n.excalidraw .sidebar-tab-trigger {\\n  --button-width: auto;\\n  --button-bg: transparent;\\n  --button-hover-bg: transparent;\\n  --button-active-bg: var(--color-primary);\\n  --button-hover-color: var(--color-primary);\\n  --button-hover-border: var(--color-primary);\\n}\\n.excalidraw .sidebar-tab-trigger[data-state=active] {\\n  --button-bg: var(--color-primary);\\n  --button-hover-bg: var(--color-primary-darker);\\n  --button-hover-color: var(--color-icon-white);\\n  --button-border: var(--color-primary);\\n  color: var(--color-icon-white);\\n}\\n.excalidraw .default-sidebar {\\n  display: flex;\\n  flex-direction: column;\\n}\\n.excalidraw .default-sidebar .sidebar-triggers {\\n  display: flex;\\n  gap: 0;\\n  padding: 2px;\\n  margin-top: -3px;\\n  margin-bottom: -3px;\\n  border: 1px solid var(--sidebar-border-color);\\n  background: var(--default-bg-color);\\n  border-radius: 0.625rem;\\n}\\n.excalidraw .default-sidebar .sidebar-triggers .sidebar-tab-trigger {\\n  height: var(--lg-button-size);\\n  width: var(--lg-button-size);\\n  border: none;\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/Sidebar/Sidebar.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AACE;EACE,aAAA;EACA,sBAAA;EACA,kBAAA;EACA,MAAA;EACA,SAAA;EACA,QAAA;EACA,UAAA;EACA,SAAA;EACA,UAAA;EACA,sBAAA;EAEA,yCAAA;EACA,iCAAA;EAEA,uCAAA;EAWA,gBAAA;EACA,gBAAA;EACA,4CAAA;EAEA,kDAAA;AAXJ;AAFI;EACE,OAAA;EACA,WAAA;AAIN;AADI;EACE,gBAAA;AAGN;AAMI;EACE,mDAAA;EACA,cAAA;AAJN;AAUE;EACE,sBAAA;EACA,aAAA;EACA,8BAAA;EACA,mBAAA;EACA,WAAA;EACA,qBAAA;EACA,kBAAA;AARJ;AAUI;EACE,WAAA;EACA,0BAAA;EACA,WAAA;EACA,uCAAA;EACA,kBAAA;EACA,YAAA;AARN;AAYE;EACE,MAAA;EACA,aAAA;EACA,mBAAA;EACA,iBAAA;AAVJ;AAYI;EDbF,aAAA;EACA,uBAAA;EACA,mBAAA;EACA,iBAAA;EACA,sDAAA;EACA,wDAAA;EACA,sBAAA;EACA,iBAAA;EACA,mBAAA;EACA,+DAAA;EACA,sCAAA;EACA,eAAA;EACA,0DAAA;EACA,mDAAA;ECEI,wBAAA;EACA,oBAAA;EAEA,4BAAA;EACA,6BAAA;EACA,UAAA;AAEN;ADPE;EACE,+CAAA;EACA,iDAAA;ACSJ;ADNE;EACE,gEAAA;EACA,2FAAA;EAIA,yFAAA;ACKJ;ADCE;EACE,iEAAA;EACA,uEAAA;ACCJ;ADEE;EACE,mFAAA;EAIA,mFAAA;ACHJ;ADQI;EACE,yFAAA;ACNN;ADYI;EACE,6DAAA;ACVN;AAvBM;EACE,0BAAA;EACA,2BAAA;AAyBR;AAtBM;EACE,0DAAA;AAwBR;AAnBM;EACE,4BAAA;EACA,0BAAA;AAqBR;AAdE;EACE,aAAA;EACA,sBAAA;EACA,cAAA;EACA,eAAA;AAgBJ;AAdI;EACE,OAAA;EACA,aAAA;EAEA,cAAA;EACA,aAAA;EACA,sBAAA;EACA,aAAA;AAeN;AAZI;EACE,wBAAA;AAcN;AAXI;EACE,aAAA;EACA,SAAA;EACA,uDAAA;AAaN;AATE;EACE,cAAA;EACA,oBAAA;AAWJ;AARE;EACE,oBAAA;EACA,wBAAA;EACA,8BAAA;EACA,wCAAA;EACA,0CAAA;EACA,2CAAA;AAUJ;AARI;EACE,iCAAA;EACA,8CAAA;EACA,6CAAA;EACA,qCAAA;EACA,8BAAA;AAUN;AAJE;EACE,aAAA;EACA,sBAAA;AAMJ;AAJI;EAGE,aAAA;EACA,MAAA;EACA,YAJU;EAOV,gBAAA;EACA,mBAAA;EACA,6CAAA;EACA,mCAAA;EACA,uBAAA;AAEN;AAAM;EACE,6BAAA;EACA,4BAAA;EAEA,YAAA;AACR","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"open-color/open-color\\";\\n@import \\"../../css/variables.module\\";\\n\\n.excalidraw {\\n  .sidebar {\\n    display: flex;\\n    flex-direction: column;\\n    position: absolute;\\n    top: 0;\\n    bottom: 0;\\n    right: 0;\\n    z-index: 5;\\n    margin: 0;\\n    padding: 0;\\n    box-sizing: border-box;\\n\\n    background-color: var(--sidebar-bg-color);\\n    box-shadow: var(--sidebar-shadow);\\n\\n    pointer-events: var(--ui-pointerEvents);\\n\\n    :root[dir=\\"rtl\\"] & {\\n      left: 0;\\n      right: auto;\\n    }\\n\\n    &--docked {\\n      box-shadow: none;\\n    }\\n\\n    overflow: hidden;\\n    border-radius: 0;\\n    width: calc(#{$right-sidebar-width} - var(--space-factor) * 2);\\n\\n    border-left: 1px solid var(--sidebar-border-color);\\n\\n    :root[dir=\\"rtl\\"] & {\\n      border-right: 1px solid var(--sidebar-border-color);\\n      border-left: 0;\\n    }\\n  }\\n\\n  // ---------------------------- sidebar header ------------------------------\\n\\n  .sidebar__header {\\n    box-sizing: border-box;\\n    display: flex;\\n    justify-content: space-between;\\n    align-items: center;\\n    width: 100%;\\n    padding: 1rem 0.75rem;\\n    position: relative;\\n\\n    &::after {\\n      content: \\"\\";\\n      width: calc(100% - 1.5rem);\\n      height: 1px;\\n      background: var(--sidebar-border-color);\\n      position: absolute;\\n      bottom: -1px;\\n    }\\n  }\\n\\n  .sidebar__header__buttons {\\n    gap: 0;\\n    display: flex;\\n    align-items: center;\\n    margin-left: auto;\\n\\n    button {\\n      @include outlineButtonStyles;\\n      --button-bg: transparent;\\n      border: 0 !important;\\n\\n      width: var(--lg-button-size);\\n      height: var(--lg-button-size);\\n      padding: 0;\\n\\n      svg {\\n        width: var(--lg-icon-size);\\n        height: var(--lg-icon-size);\\n      }\\n\\n      &:hover {\\n        background: var(--button-hover-bg, var(--island-bg-color));\\n      }\\n    }\\n\\n    .sidebar__dock.selected {\\n      svg {\\n        stroke: var(--color-primary);\\n        fill: var(--color-primary);\\n      }\\n    }\\n  }\\n\\n  // ---------------------------- sidebar tabs ------------------------------\\n\\n  .sidebar-tabs-root {\\n    display: flex;\\n    flex-direction: column;\\n    flex: 1 1 auto;\\n    padding: 1rem 0;\\n\\n    [role=\\"tabpanel\\"] {\\n      flex: 1;\\n      outline: none;\\n\\n      flex: 1 1 auto;\\n      display: flex;\\n      flex-direction: column;\\n      outline: none;\\n    }\\n\\n    [role=\\"tabpanel\\"][data-state=\\"inactive\\"] {\\n      display: none !important;\\n    }\\n\\n    [role=\\"tablist\\"] {\\n      display: grid;\\n      gap: 1rem;\\n      grid-template-columns: repeat(auto-fit, minmax(0, 1fr));\\n    }\\n  }\\n\\n  .sidebar-tabs-root > .sidebar__header {\\n    padding-top: 0;\\n    padding-bottom: 1rem;\\n  }\\n\\n  .sidebar-tab-trigger {\\n    --button-width: auto;\\n    --button-bg: transparent;\\n    --button-hover-bg: transparent;\\n    --button-active-bg: var(--color-primary);\\n    --button-hover-color: var(--color-primary);\\n    --button-hover-border: var(--color-primary);\\n\\n    &[data-state=\\"active\\"] {\\n      --button-bg: var(--color-primary);\\n      --button-hover-bg: var(--color-primary-darker);\\n      --button-hover-color: var(--color-icon-white);\\n      --button-border: var(--color-primary);\\n      color: var(--color-icon-white);\\n    }\\n  }\\n\\n  // ---------------------------- default sidebar ------------------------------\\n\\n  .default-sidebar {\\n    display: flex;\\n    flex-direction: column;\\n\\n    .sidebar-triggers {\\n      $padding: 2px;\\n      $border: 1px;\\n      display: flex;\\n      gap: 0;\\n      padding: $padding;\\n      // offset by padding + border to vertically center the list with sibling\\n      // buttons (both from top and bototm, due to flex layout)\\n      margin-top: -#{$padding + $border};\\n      margin-bottom: -#{$padding + $border};\\n      border: $border solid var(--sidebar-border-color);\\n      background: var(--default-bg-color);\\n      border-radius: 0.625rem;\\n\\n      .sidebar-tab-trigger {\\n        height: var(--lg-button-size);\\n        width: var(--lg-button-size);\\n\\n        border: none;\\n      }\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 25800 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Sidebar/Sidebar.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Sidebar/SidebarTrigger.scss": (
              /*!*******************************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Sidebar/SidebarTrigger.scss ***!
                \*******************************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .sidebar-trigger {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n  width: auto;\\n  height: var(--lg-button-size);\\n  display: flex;\\n  align-items: center;\\n  gap: 0.5rem;\\n  line-height: 0;\\n  font-size: 0.75rem;\\n  letter-spacing: 0.4px;\\n}\\n.excalidraw .sidebar-trigger svg {\\n  width: var(--button-width, var(--lg-icon-size));\\n  height: var(--button-height, var(--lg-icon-size));\\n}\\n.excalidraw .sidebar-trigger:hover {\\n  background-color: var(--button-hover-bg, var(--island-bg-color));\\n  border-color: var(--button-hover-border, var(--button-border, var(--default-border-color)));\\n  color: var(--button-hover-color, var(--button-color, var(--text-primary-color, inherit)));\\n}\\n.excalidraw .sidebar-trigger:active {\\n  background-color: var(--button-active-bg, var(--island-bg-color));\\n  border-color: var(--button-active-border, var(--color-primary-darkest));\\n}\\n.excalidraw .sidebar-trigger.active {\\n  background-color: var(--button-selected-bg, var(--color-surface-primary-container));\\n  border-color: var(--button-selected-border, var(--color-surface-primary-container));\\n}\\n.excalidraw .sidebar-trigger.active:hover {\\n  background-color: var(--button-selected-hover-bg, var(--color-surface-primary-container));\\n}\\n.excalidraw .sidebar-trigger.active svg {\\n  color: var(--button-color, var(--color-on-primary-container));\\n}\\n.excalidraw .sidebar-trigger:active {\\n  box-shadow: 0 0 0 1px var(--color-brand-active);\\n}\\n.excalidraw .sidebar-trigger svg {\\n  width: var(--lg-icon-size);\\n  height: var(--lg-icon-size);\\n}\\n.excalidraw .default-sidebar-trigger .sidebar-trigger__label {\\n  display: block;\\n}\\n.excalidraw.excalidraw--mobile .default-sidebar-trigger .sidebar-trigger__label {\\n  display: none;\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/Sidebar/SidebarTrigger.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AAAE;EDqDA,aAAA;EACA,uBAAA;EACA,mBAAA;EACA,iBAAA;EACA,sDAAA;EACA,wDAAA;EACA,sBAAA;EACA,iBAAA;EACA,mBAAA;EACA,+DAAA;EACA,sCAAA;EACA,eAAA;EACA,0DAAA;EACA,mDAAA;EAgDA,YAAA;EACA,iDAAA;EACA,0CAAA;EChHE,WAAA;EACA,6BAAA;EAEA,aAAA;EACA,mBAAA;EACA,WAAA;EAEA,cAAA;EAEA,kBAAA;EACA,qBAAA;AAcJ;ADwCE;EACE,+CAAA;EACA,iDAAA;ACtCJ;ADyCE;EACE,gEAAA;EACA,2FAAA;EAIA,yFAAA;AC1CJ;ADgDE;EACE,iEAAA;EACA,uEAAA;AC9CJ;ADiDE;EACE,mFAAA;EAIA,mFAAA;AClDJ;ADuDI;EACE,yFAAA;ACrDN;AD2DI;EACE,6DAAA;ACzDN;ADmEE;EACE,+CAAA;ACjEJ;AAtCI;EACE,0BAAA;EACA,2BAAA;AAwCN;AApCE;EACE,cAAA;AAsCJ;AAnCE;EACE,aAAA;AAqCJ","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../../css/variables.module\\";\\n\\n.excalidraw {\\n  .sidebar-trigger {\\n    @include outlineButtonStyles;\\n    @include filledButtonOnCanvas;\\n\\n    width: auto;\\n    height: var(--lg-button-size);\\n\\n    display: flex;\\n    align-items: center;\\n    gap: 0.5rem;\\n\\n    line-height: 0;\\n\\n    font-size: 0.75rem;\\n    letter-spacing: 0.4px;\\n\\n    svg {\\n      width: var(--lg-icon-size);\\n      height: var(--lg-icon-size);\\n    }\\n  }\\n\\n  .default-sidebar-trigger .sidebar-trigger__label {\\n    display: block;\\n  }\\n\\n  &.excalidraw--mobile .default-sidebar-trigger .sidebar-trigger__label {\\n    display: none;\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 13124 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Sidebar/SidebarTrigger.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Spinner.scss": (
              /*!****************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Spinner.scss ***!
                \****************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ".excalidraw .Spinner {\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  height: 100%;\\n  margin-left: auto;\\n  margin-right: auto;\\n  --spinner-color: var(--icon-fill-color);\\n}\\n.excalidraw .Spinner svg {\\n  animation: rotate 1.6s linear infinite;\\n  animation-delay: var(--spinner-delay);\\n  transform-origin: center center;\\n}\\n.excalidraw .Spinner circle {\\n  stroke: var(--spinner-color);\\n  animation: dash 1.6s linear 0s infinite;\\n  stroke-linecap: round;\\n}\\n@keyframes rotate {\\n  100% {\\n    transform: rotate(360deg);\\n  }\\n}\\n@keyframes dash {\\n  0% {\\n    stroke-dasharray: 1, 300;\\n    stroke-dashoffset: 0;\\n  }\\n  50% {\\n    stroke-dasharray: 150, 300;\\n    stroke-dashoffset: -200;\\n  }\\n  100% {\\n    stroke-dasharray: 1, 300;\\n    stroke-dashoffset: -280;\\n  }\\n}", "",{"version":3,"sources":["webpack://./../../components/Spinner.scss"],"names":[],"mappings":"AAKE;EACE,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,YAAA;EACA,iBAAA;EACA,kBAAA;EAEA,uCAAA;AALJ;AAOI;EACE,sCAAA;EACA,qCAAA;EACA,+BAAA;AALN;AAQI;EACE,4BAAA;EACA,uCAAA;EACA,qBAAA;AANN;AAUE;EACE;IACE,yBAAA;EARJ;AACF;AAWE;EACE;IACE,wBAAA;IACA,oBAAA;EATJ;EAWE;IACE,0BAAA;IACA,uBAAA;EATJ;EAWE;IACE,wBAAA;IACA,uBAAA;EATJ;AACF","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n$duration: 1.6s;\\n\\n.excalidraw {\\n  .Spinner {\\n    display: flex;\\n    align-items: center;\\n    justify-content: center;\\n    height: 100%;\\n    margin-left: auto;\\n    margin-right: auto;\\n\\n    --spinner-color: var(--icon-fill-color);\\n\\n    svg {\\n      animation: rotate $duration linear infinite;\\n      animation-delay: var(--spinner-delay);\\n      transform-origin: center center;\\n    }\\n\\n    circle {\\n      stroke: var(--spinner-color);\\n      animation: dash $duration linear 0s infinite;\\n      stroke-linecap: round;\\n    }\\n  }\\n\\n  @keyframes rotate {\\n    100% {\\n      transform: rotate(360deg);\\n    }\\n  }\\n\\n  @keyframes dash {\\n    0% {\\n      stroke-dasharray: 1, 300;\\n      stroke-dashoffset: 0;\\n    }\\n    50% {\\n      stroke-dasharray: 150, 300;\\n      stroke-dashoffset: -200;\\n    }\\n    100% {\\n      stroke-dasharray: 1, 300;\\n      stroke-dashoffset: -280;\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5208 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Spinner.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Stack.scss": (
              /*!**************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Stack.scss ***!
                \**************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ".excalidraw .Stack {\\n  --gap: 0;\\n  display: grid;\\n  gap: calc(var(--space-factor) * var(--gap));\\n}\\n.excalidraw .Stack_vertical {\\n  grid-template-columns: auto;\\n  grid-auto-flow: row;\\n  grid-auto-rows: min-content;\\n}\\n.excalidraw .Stack_horizontal {\\n  grid-template-rows: auto;\\n  grid-auto-flow: column;\\n  grid-auto-columns: min-content;\\n}", "",{"version":3,"sources":["webpack://./../../components/Stack.scss"],"names":[],"mappings":"AACE;EACE,QAAA;EACA,aAAA;EACA,2CAAA;AAAJ;AAGE;EACE,2BAAA;EACA,mBAAA;EACA,2BAAA;AADJ;AAIE;EACE,wBAAA;EACA,sBAAA;EACA,8BAAA;AAFJ","sourcesContent":[".excalidraw {\\n  .Stack {\\n    --gap: 0;\\n    display: grid;\\n    gap: calc(var(--space-factor) * var(--gap));\\n  }\\n\\n  .Stack_vertical {\\n    grid-template-columns: auto;\\n    grid-auto-flow: row;\\n    grid-auto-rows: min-content;\\n  }\\n\\n  .Stack_horizontal {\\n    grid-template-rows: auto;\\n    grid-auto-flow: column;\\n    grid-auto-columns: min-content;\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vY29tcG9uZW50cy9TdGFjay5zY3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDOEg7QUFDakI7QUFDN0csOEJBQThCLHVHQUEyQixDQUFDLGdIQUFxQztBQUMvRjtBQUNBLDhEQUE4RCxhQUFhLGtCQUFrQixnREFBZ0QsR0FBRywrQkFBK0IsZ0NBQWdDLHdCQUF3QixnQ0FBZ0MsR0FBRyxpQ0FBaUMsNkJBQTZCLDJCQUEyQixtQ0FBbUMsR0FBRyxPQUFPLDhGQUE4RixVQUFVLFVBQVUsV0FBVyxLQUFLLEtBQUssV0FBVyxXQUFXLFdBQVcsS0FBSyxLQUFLLFdBQVcsV0FBVyxXQUFXLHNDQUFzQyxZQUFZLGVBQWUsb0JBQW9CLGtEQUFrRCxLQUFLLHVCQUF1QixrQ0FBa0MsMEJBQTBCLGtDQUFrQyxLQUFLLHlCQUF5QiwrQkFBK0IsNkJBQTZCLHFDQUFxQyxLQUFLLEdBQUcscUJBQXFCO0FBQ2hnQztBQUNBLGlFQUFlLHVCQUF1QixFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvU3RhY2suc2Nzcz80ZThhIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5leGNhbGlkcmF3IC5TdGFjayB7XFxuICAtLWdhcDogMDtcXG4gIGRpc3BsYXk6IGdyaWQ7XFxuICBnYXA6IGNhbGModmFyKC0tc3BhY2UtZmFjdG9yKSAqIHZhcigtLWdhcCkpO1xcbn1cXG4uZXhjYWxpZHJhdyAuU3RhY2tfdmVydGljYWwge1xcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvO1xcbiAgZ3JpZC1hdXRvLWZsb3c6IHJvdztcXG4gIGdyaWQtYXV0by1yb3dzOiBtaW4tY29udGVudDtcXG59XFxuLmV4Y2FsaWRyYXcgLlN0YWNrX2hvcml6b250YWwge1xcbiAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBhdXRvO1xcbiAgZ3JpZC1hdXRvLWZsb3c6IGNvbHVtbjtcXG4gIGdyaWQtYXV0by1jb2x1bW5zOiBtaW4tY29udGVudDtcXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vLi4vLi4vY29tcG9uZW50cy9TdGFjay5zY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUNFO0VBQ0UsUUFBQTtFQUNBLGFBQUE7RUFDQSwyQ0FBQTtBQUFKO0FBR0U7RUFDRSwyQkFBQTtFQUNBLG1CQUFBO0VBQ0EsMkJBQUE7QUFESjtBQUlFO0VBQ0Usd0JBQUE7RUFDQSxzQkFBQTtFQUNBLDhCQUFBO0FBRkpcIixcInNvdXJjZXNDb250ZW50XCI6W1wiLmV4Y2FsaWRyYXcge1xcbiAgLlN0YWNrIHtcXG4gICAgLS1nYXA6IDA7XFxuICAgIGRpc3BsYXk6IGdyaWQ7XFxuICAgIGdhcDogY2FsYyh2YXIoLS1zcGFjZS1mYWN0b3IpICogdmFyKC0tZ2FwKSk7XFxuICB9XFxuXFxuICAuU3RhY2tfdmVydGljYWwge1xcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IGF1dG87XFxuICAgIGdyaWQtYXV0by1mbG93OiByb3c7XFxuICAgIGdyaWQtYXV0by1yb3dzOiBtaW4tY29udGVudDtcXG4gIH1cXG5cXG4gIC5TdGFja19ob3Jpem9udGFsIHtcXG4gICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBhdXRvO1xcbiAgICBncmlkLWF1dG8tZmxvdzogY29sdW1uO1xcbiAgICBncmlkLWF1dG8tY29sdW1uczogbWluLWNvbnRlbnQ7XFxuICB9XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Stack.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Stats.scss": (
              /*!**************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Stats.scss ***!
                \**************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .Stats {\\n  position: absolute;\\n  top: 64px;\\n  right: 12px;\\n  font-size: 12px;\\n  z-index: 10;\\n  pointer-events: var(--ui-pointerEvents);\\n}\\n.excalidraw .Stats h3 {\\n  margin: 0 24px 8px 0;\\n  white-space: nowrap;\\n}\\n.excalidraw .Stats .close {\\n  float: right;\\n  height: 16px;\\n  width: 16px;\\n  cursor: pointer;\\n}\\n.excalidraw .Stats .close svg {\\n  width: 100%;\\n  height: 100%;\\n}\\n.excalidraw .Stats table {\\n  width: 100%;\\n}\\n.excalidraw .Stats table th {\\n  border-bottom: 1px solid var(--input-border-color);\\n  padding: 4px;\\n}\\n.excalidraw .Stats table tr td:nth-child(2) {\\n  min-width: 24px;\\n  text-align: right;\\n}\\n:root[dir=rtl] .excalidraw .Stats {\\n  left: 12px;\\n  right: initial;\\n}\\n:root[dir=rtl] .excalidraw .Stats h3 {\\n  margin: 0 0 8px 24px;\\n}\\n:root[dir=rtl] .excalidraw .Stats .close {\\n  float: left;\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/Stats.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AAAE;EACE,kBAAA;EACA,SAAA;EACA,WAAA;EACA,eAAA;EACA,WAAA;EACA,uCAAA;AAGJ;AADI;EACE,oBAAA;EACA,mBAAA;AAGN;AAAI;EACE,YAAA;EACA,YAAA;EACA,WAAA;EACA,eAAA;AAEN;AADM;EACE,WAAA;EACA,YAAA;AAGR;AACI;EACE,WAAA;AACN;AAAM;EACE,kDAAA;EACA,YAAA;AAER;AACQ;EACE,eAAA;EACA,iBAAA;AACV;AAII;EACE,UAAA;EACA,cAAA;AAFN;AAIM;EACE,oBAAA;AAFR;AAIM;EACE,WAAA;AAFR","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../css/variables.module\\";\\n\\n.excalidraw {\\n  .Stats {\\n    position: absolute;\\n    top: 64px;\\n    right: 12px;\\n    font-size: 12px;\\n    z-index: 10;\\n    pointer-events: var(--ui-pointerEvents);\\n\\n    h3 {\\n      margin: 0 24px 8px 0;\\n      white-space: nowrap;\\n    }\\n\\n    .close {\\n      float: right;\\n      height: 16px;\\n      width: 16px;\\n      cursor: pointer;\\n      svg {\\n        width: 100%;\\n        height: 100%;\\n      }\\n    }\\n\\n    table {\\n      width: 100%;\\n      th {\\n        border-bottom: 1px solid var(--input-border-color);\\n        padding: 4px;\\n      }\\n      tr {\\n        td:nth-child(2) {\\n          min-width: 24px;\\n          text-align: right;\\n        }\\n      }\\n    }\\n\\n    :root[dir=\\"rtl\\"] & {\\n      left: 12px;\\n      right: initial;\\n\\n      h3 {\\n        margin: 0 0 8px 24px;\\n      }\\n      .close {\\n        float: left;\\n      }\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 10972 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Stats.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Switch.scss": (
              /*!***************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Switch.scss ***!
                \***************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw {\\n  --Switch-disabled-color: var(--color-border-outline);\\n  --Switch-disabled-toggled-background: var(--color-border-outline-variant);\\n  --Switch-disabled-border: var(--color-border-outline-variant);\\n  --Switch-track-background: var(--island-bg-color);\\n  --Switch-thumb-background: var(--color-on-surface);\\n  --Switch-hover-background: var(--color-brand-hover);\\n  --Switch-active-background: var(--color-brand-active);\\n}\\n.excalidraw .Switch {\\n  position: relative;\\n  box-sizing: border-box;\\n  width: 40px;\\n  height: 20px;\\n  border-radius: 12px;\\n  transition-property: background, border;\\n  transition-duration: 150ms;\\n  transition-timing-function: ease-out;\\n  background: var(--Switch-track-background);\\n  border: 1px solid var(--Switch-disabled-color);\\n}\\n.excalidraw .Switch:hover {\\n  background: var(--Switch-track-background);\\n  border: 1px solid var(--Switch-hover-background);\\n}\\n.excalidraw .Switch:active {\\n  border: 1px solid var(--Switch-active-background);\\n}\\n.excalidraw .Switch.toggled {\\n  background: var(--color-primary);\\n  border: 1px solid var(--color-primary);\\n}\\n.excalidraw .Switch.toggled:hover {\\n  background: var(--color-primary-darker);\\n  border: 1px solid var(--color-primary-darker);\\n}\\n.excalidraw .Switch.disabled {\\n  background: var(--Switch-track-background);\\n  border: 1px solid var(--Switch-disabled-border);\\n}\\n.excalidraw .Switch.disabled.toggled {\\n  background: var(--Switch-disabled-toggled-background);\\n  border: 1px solid var(--Switch-disabled-toggled-background);\\n}\\n.excalidraw .Switch:before {\\n  content: \\"\\";\\n  box-sizing: border-box;\\n  display: block;\\n  pointer-events: none;\\n  position: absolute;\\n  border-radius: 100%;\\n  transition: all 150ms ease-out;\\n  width: 10px;\\n  height: 10px;\\n  top: 4px;\\n  left: 4px;\\n  background: var(--Switch-thumb-background);\\n}\\n.excalidraw .Switch:active:before {\\n  width: 12px;\\n}\\n.excalidraw .Switch.toggled:before {\\n  width: 14px;\\n  height: 14px;\\n  left: 22px;\\n  top: 2px;\\n  background: var(--Switch-track-background);\\n}\\n.excalidraw .Switch.toggled:active:before {\\n  width: 16px;\\n  left: 20px;\\n}\\n.excalidraw .Switch.disabled:before {\\n  background: var(--Switch-disabled-color);\\n}\\n.excalidraw .Switch.disabled.toggled:before {\\n  background: var(--Switch-disabled-color);\\n}\\n.excalidraw .Switch input {\\n  width: 100%;\\n  height: 100%;\\n  margin: 0;\\n  border-radius: 12px;\\n  appearance: none;\\n  cursor: pointer;\\n}\\n.excalidraw .Switch input:disabled {\\n  cursor: unset;\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/Switch.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AADA;EACE,oDAAA;EACA,yEAAA;EACA,6DAAA;EACA,iDAAA;EACA,kDAAA;EACA,mDAAA;EACA,qDAAA;AAIF;AAFE;EACE,kBAAA;EACA,sBAAA;EAEA,WAAA;EACA,YAAA;EACA,mBAAA;EAEA,uCAAA;EACA,0BAAA;EACA,oCAAA;EAEA,0CAAA;EACA,8CAAA;AACJ;AACI;EACE,0CAAA;EACA,gDAAA;AACN;AAEI;EACE,iDAAA;AAAN;AAGI;EACE,gCAAA;EACA,sCAAA;AADN;AAGM;EACE,uCAAA;EACA,6CAAA;AADR;AAKI;EACE,0CAAA;EACA,+CAAA;AAHN;AAKM;EACE,qDAAA;EACA,2DAAA;AAHR;AAOI;EACE,WAAA;EACA,sBAAA;EACA,cAAA;EACA,oBAAA;EACA,kBAAA;EAEA,mBAAA;EACA,8BAAA;EAEA,WAAA;EACA,YAAA;EACA,QAAA;EACA,SAAA;EAEA,0CAAA;AARN;AAWI;EACE,WAAA;AATN;AAYI;EACE,WAAA;EACA,YAAA;EACA,UAAA;EACA,QAAA;EAEA,0CAAA;AAXN;AAcI;EACE,WAAA;EACA,UAAA;AAZN;AAeI;EACE,wCAAA;AAbN;AAgBI;EACE,wCAAA;AAdN;AAiBI;EACE,WAAA;EACA,YAAA;EACA,SAAA;EAEA,mBAAA;EAIA,gBAAA;EAEA,eAAA;AAlBN;AAoBM;EACE,aAAA;AAlBR","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../css/variables.module\\";\\n\\n.excalidraw {\\n  --Switch-disabled-color: var(--color-border-outline);\\n  --Switch-disabled-toggled-background: var(--color-border-outline-variant);\\n  --Switch-disabled-border: var(--color-border-outline-variant);\\n  --Switch-track-background: var(--island-bg-color);\\n  --Switch-thumb-background: var(--color-on-surface);\\n  --Switch-hover-background: var(--color-brand-hover);\\n  --Switch-active-background: var(--color-brand-active);\\n\\n  .Switch {\\n    position: relative;\\n    box-sizing: border-box;\\n\\n    width: 40px;\\n    height: 20px;\\n    border-radius: 12px;\\n\\n    transition-property: background, border;\\n    transition-duration: 150ms;\\n    transition-timing-function: ease-out;\\n\\n    background: var(--Switch-track-background);\\n    border: 1px solid var(--Switch-disabled-color);\\n\\n    &:hover {\\n      background: var(--Switch-track-background);\\n      border: 1px solid var(--Switch-hover-background);\\n    }\\n\\n    &:active {\\n      border: 1px solid var(--Switch-active-background);\\n    }\\n\\n    &.toggled {\\n      background: var(--color-primary);\\n      border: 1px solid var(--color-primary);\\n\\n      &:hover {\\n        background: var(--color-primary-darker);\\n        border: 1px solid var(--color-primary-darker);\\n      }\\n    }\\n\\n    &.disabled {\\n      background: var(--Switch-track-background);\\n      border: 1px solid var(--Switch-disabled-border);\\n\\n      &.toggled {\\n        background: var(--Switch-disabled-toggled-background);\\n        border: 1px solid var(--Switch-disabled-toggled-background);\\n      }\\n    }\\n\\n    &:before {\\n      content: \\"\\";\\n      box-sizing: border-box;\\n      display: block;\\n      pointer-events: none;\\n      position: absolute;\\n\\n      border-radius: 100%;\\n      transition: all 150ms ease-out;\\n\\n      width: 10px;\\n      height: 10px;\\n      top: 4px;\\n      left: 4px;\\n\\n      background: var(--Switch-thumb-background);\\n    }\\n\\n    &:active:before {\\n      width: 12px;\\n    }\\n\\n    &.toggled:before {\\n      width: 14px;\\n      height: 14px;\\n      left: 22px;\\n      top: 2px;\\n\\n      background: var(--Switch-track-background);\\n    }\\n\\n    &.toggled:active:before {\\n      width: 16px;\\n      left: 20px;\\n    }\\n\\n    &.disabled:before {\\n      background: var(--Switch-disabled-color);\\n    }\\n\\n    &.disabled.toggled:before {\\n      background: var(--Switch-disabled-color);\\n    }\\n\\n    & input {\\n      width: 100%;\\n      height: 100%;\\n      margin: 0;\\n\\n      border-radius: 12px;\\n\\n      -webkit-appearance: none;\\n      -moz-appearance: none;\\n      appearance: none;\\n\\n      cursor: pointer;\\n\\n      &:disabled {\\n        cursor: unset;\\n      }\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 17476 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Switch.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/TextInput.scss": (
              /*!******************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/TextInput.scss ***!
                \******************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .TextInput {\\n  display: inline-block;\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/TextInput.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AAAE;EACE,qBAAA;AAGJ","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../css/variables.module\\";\\n\\n.excalidraw {\\n  .TextInput {\\n    display: inline-block;\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 7344 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/TextInput.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Toast.scss": (
              /*!**************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Toast.scss ***!
                \**************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .Toast {\\n  animation: fade-in 0.5s;\\n  background-color: var(--button-gray-1);\\n  border-radius: 4px;\\n  bottom: 10px;\\n  box-sizing: border-box;\\n  cursor: default;\\n  left: 50%;\\n  margin-left: -150px;\\n  padding: 4px 0;\\n  position: absolute;\\n  text-align: center;\\n  width: 300px;\\n  z-index: 999999;\\n}\\n.excalidraw .Toast .Toast__message {\\n  padding: 0 1.6rem;\\n  color: var(--popup-text-color);\\n  white-space: pre-wrap;\\n}\\n.excalidraw .Toast .close {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  padding: 0.4rem;\\n}\\n.excalidraw .Toast .close .ToolIcon__icon {\\n  width: 1.2rem;\\n  height: 1.2rem;\\n}\\n@keyframes fade-in {\\n  from {\\n    opacity: 0;\\n  }\\n  to {\\n    opacity: 1;\\n  }\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/Toast.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AAAE;EAIE,uBAAA;EACA,sCAAA;EACA,kBAAA;EACA,YAAA;EACA,sBAAA;EACA,eAAA;EACA,SAAA;EACA,mBAAA;EACA,cAAA;EACA,kBAAA;EACA,kBAAA;EACA,YAAA;EACA,eAAA;AAAJ;AAEI;EACE,iBAAA;EACA,8BAAA;EACA,qBAAA;AAAN;AAGI;EACE,kBAAA;EACA,MAAA;EACA,QAAA;EACA,eA1BmB;AAyBzB;AAGM;EACE,aA9Bc;EA+Bd,cA/Bc;AA8BtB;AAME;EACE;IACE,UAAA;EAJJ;EAME;IACE,UAAA;EAJJ;AACF","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../css/variables.module\\";\\n\\n.excalidraw {\\n  .Toast {\\n    $closeButtonSize: 1.2rem;\\n    $closeButtonPadding: 0.4rem;\\n\\n    animation: fade-in 0.5s;\\n    background-color: var(--button-gray-1);\\n    border-radius: 4px;\\n    bottom: 10px;\\n    box-sizing: border-box;\\n    cursor: default;\\n    left: 50%;\\n    margin-left: -150px;\\n    padding: 4px 0;\\n    position: absolute;\\n    text-align: center;\\n    width: 300px;\\n    z-index: 999999;\\n\\n    .Toast__message {\\n      padding: 0 $closeButtonSize + ($closeButtonPadding);\\n      color: var(--popup-text-color);\\n      white-space: pre-wrap;\\n    }\\n\\n    .close {\\n      position: absolute;\\n      top: 0;\\n      right: 0;\\n      padding: $closeButtonPadding;\\n\\n      .ToolIcon__icon {\\n        width: $closeButtonSize;\\n        height: $closeButtonSize;\\n      }\\n    }\\n  }\\n\\n  @keyframes fade-in {\\n    from {\\n      opacity: 0;\\n    }\\n    to {\\n      opacity: 1;\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 10708 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Toast.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ToolIcon.scss": (
              /*!*****************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ToolIcon.scss ***!
                \*****************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .ToolIcon {\\n  border-radius: var(--border-radius-lg);\\n  display: inline-flex;\\n  align-items: center;\\n  position: relative;\\n  cursor: pointer;\\n  -webkit-tap-highlight-color: transparent;\\n  user-select: none;\\n}\\n.excalidraw .ToolIcon__hidden {\\n  display: none !important;\\n}\\n.excalidraw .ToolIcon.fillable .ToolIcon_type_radio:checked + .ToolIcon__icon,\\n.excalidraw .ToolIcon.fillable .ToolIcon_type_checkbox:checked + .ToolIcon__icon {\\n  --icon-fill-color: var(--color-on-primary-container);\\n}\\n.excalidraw .ToolIcon.fillable .ToolIcon_type_radio:checked + .ToolIcon__icon svg,\\n.excalidraw .ToolIcon.fillable .ToolIcon_type_checkbox:checked + .ToolIcon__icon svg {\\n  fill: var(--icon-fill-color);\\n}\\n.excalidraw .ToolIcon .ToolIcon_type_radio:checked + .ToolIcon__icon,\\n.excalidraw .ToolIcon .ToolIcon_type_checkbox:checked + .ToolIcon__icon {\\n  background: var(--color-surface-primary-container);\\n  --keybinding-color: var(--color-on-primary-container);\\n}\\n.excalidraw .ToolIcon .ToolIcon_type_radio:checked + .ToolIcon__icon svg,\\n.excalidraw .ToolIcon .ToolIcon_type_checkbox:checked + .ToolIcon__icon svg {\\n  color: var(--color-on-primary-container);\\n}\\n.excalidraw .ToolIcon .ToolIcon__keybinding {\\n  bottom: 4px;\\n  right: 4px;\\n}\\n.excalidraw .ToolIcon .ToolIcon__icon:hover {\\n  background: var(--button-hover-bg);\\n}\\n.excalidraw .ToolIcon .ToolIcon__icon:active {\\n  background: var(--button-hover-bg);\\n  border: 1px solid var(--button-active-border);\\n}\\n.excalidraw .ToolIcon .ToolIcon__icon:active svg {\\n  color: var(--color-on-primary-container);\\n}\\n.excalidraw .ToolIcon--plain {\\n  background-color: transparent;\\n}\\n.excalidraw .ToolIcon--plain .ToolIcon__icon {\\n  width: 2rem;\\n  height: 2rem;\\n}\\n.excalidraw .ToolIcon_type_radio,\\n.excalidraw .ToolIcon_type_checkbox {\\n  position: absolute;\\n  opacity: 0;\\n  pointer-events: none;\\n}\\n.excalidraw .ToolIcon__icon {\\n  box-sizing: border-box;\\n  width: var(--default-button-size);\\n  height: var(--default-button-size);\\n  color: var(--icon-fill-color);\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  border-radius: var(--border-radius-lg);\\n}\\n.excalidraw .ToolIcon__icon + .ToolIcon__label {\\n  margin-inline-start: 0;\\n}\\n.excalidraw .ToolIcon__icon svg {\\n  position: relative;\\n  width: var(--default-icon-size);\\n  height: var(--default-icon-size);\\n  color: var(--icon-fill-color);\\n}\\n.excalidraw .ToolIcon__label {\\n  display: flex;\\n  align-items: center;\\n  color: var(--icon-fill-color);\\n  font-family: var(--ui-font);\\n  margin: 0 0.8em;\\n  text-overflow: ellipsis;\\n}\\n.excalidraw .ToolIcon__label .Spinner {\\n  margin-left: 0.6em;\\n}\\n.excalidraw .ToolIcon_size_small .ToolIcon__icon {\\n  width: 2rem;\\n  height: 2rem;\\n  font-size: 0.8em;\\n}\\n.excalidraw .ToolIcon_type_button,\\n.excalidraw .Modal .ToolIcon_type_button,\\n.excalidraw .ToolIcon_type_button {\\n  padding: 0;\\n  border: none;\\n  margin: 0;\\n  font-size: inherit;\\n  background-color: initial;\\n}\\n.excalidraw .ToolIcon_type_button:focus-visible,\\n.excalidraw .Modal .ToolIcon_type_button:focus-visible,\\n.excalidraw .ToolIcon_type_button:focus-visible {\\n  box-shadow: 0 0 0 2px var(--focus-highlight-color);\\n}\\n.excalidraw .ToolIcon_type_button.ToolIcon--selected,\\n.excalidraw .Modal .ToolIcon_type_button.ToolIcon--selected,\\n.excalidraw .ToolIcon_type_button.ToolIcon--selected {\\n  background-color: var(--button-gray-2);\\n}\\n.excalidraw .ToolIcon_type_button.ToolIcon--selected:active,\\n.excalidraw .Modal .ToolIcon_type_button.ToolIcon--selected:active,\\n.excalidraw .ToolIcon_type_button.ToolIcon--selected:active {\\n  background-color: var(--button-gray-3);\\n}\\n.excalidraw .ToolIcon_type_button:active,\\n.excalidraw .Modal .ToolIcon_type_button:active,\\n.excalidraw .ToolIcon_type_button:active {\\n  background-color: var(--button-gray-3);\\n}\\n.excalidraw .ToolIcon_type_button--show,\\n.excalidraw .Modal .ToolIcon_type_button--show,\\n.excalidraw .ToolIcon_type_button--show {\\n  visibility: visible;\\n}\\n.excalidraw .ToolIcon_type_button--hide,\\n.excalidraw .Modal .ToolIcon_type_button--hide,\\n.excalidraw .ToolIcon_type_button--hide {\\n  display: none !important;\\n}\\n.excalidraw .ToolIcon_type_floating {\\n  background-color: transparent;\\n}\\n.excalidraw .ToolIcon_type_floating:hover {\\n  background-color: transparent;\\n}\\n.excalidraw .ToolIcon_type_floating:active {\\n  background-color: transparent;\\n}\\n.excalidraw .ToolIcon_type_floating .ToolIcon__icon {\\n  background-color: var(--button-gray-1);\\n  width: 2rem;\\n  height: 2rem;\\n}\\n.excalidraw .ToolIcon_type_floating .ToolIcon__icon:hover {\\n  background-color: var(--button-gray-2);\\n}\\n.excalidraw .ToolIcon_type_floating .ToolIcon__icon:active {\\n  background-color: var(--button-gray-3);\\n}\\n.excalidraw .ToolIcon__keybinding {\\n  position: absolute;\\n  bottom: 2px;\\n  right: 3px;\\n  font-size: 0.625rem;\\n  color: var(--keybinding-color);\\n  font-family: var(--ui-font);\\n  user-select: none;\\n}\\n:root[dir=ltr] .excalidraw .unlocked-icon {\\n  left: 2px;\\n}\\n:root[dir=rtl] .excalidraw .unlocked-icon {\\n  right: 2px;\\n}\\n.excalidraw .App-toolbar-container .ToolIcon__icon {\\n  width: var(--lg-button-size);\\n  height: var(--lg-button-size);\\n}\\n@media screen and (max-width: 450px) {\\n  .excalidraw .App-toolbar-container .ToolIcon__icon {\\n    width: 1.8rem;\\n    height: 1.8rem;\\n  }\\n}\\n@media screen and (max-width: 379px) {\\n  .excalidraw .App-toolbar-container .ToolIcon__icon {\\n    width: 1.5rem;\\n    height: 1.5rem;\\n  }\\n}\\n.excalidraw .App-toolbar-container .ToolIcon__icon svg {\\n  width: var(--lg-icon-size);\\n  height: var(--lg-icon-size);\\n}\\n.excalidraw .App-toolbar-container .ToolIcon__LaserPointer .ToolIcon__icon {\\n  width: var(--default-button-size);\\n  height: var(--default-button-size);\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/ToolIcon.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AACE;EACE,sCAAA;EACA,oBAAA;EACA,mBAAA;EACA,kBAAA;EACA,eAAA;EACA,wCAAA;EACA,iBAAA;AAEJ;AAAI;EACE,wBAAA;AAEN;ADJM;;EACE,oDAAA;ACOR;ADLQ;;EACE,4BAAA;ACQV;ADAI;;EACE,kDAAA;EACA,qDAAA;ACGN;ADDM;;EACE,wCAAA;ACIR;ADCE;EACE,WAAA;EACA,UAAA;ACCJ;ADGI;EACE,kCAAA;ACDN;ADII;EACE,kCAAA;EACA,6CAAA;ACFN;ADIM;EACE,wCAAA;ACFR;AA3BE;EACE,6BAAA;AA6BJ;AA5BI;EACE,WAAA;EACA,YAAA;AA8BN;AA1BE;;EAEE,kBAAA;EACA,UAAA;EACA,oBAAA;AA4BJ;AAzBE;EACE,sBAAA;EACA,iCAAA;EACA,kCAAA;EACA,6BAAA;EAEA,aAAA;EACA,uBAAA;EACA,mBAAA;EAEA,sCAAA;AAyBJ;AAvBI;EACE,sBAAA;AAyBN;AAtBI;EACE,kBAAA;EACA,+BAAA;EACA,gCAAA;EACA,6BAAA;AAwBN;AApBE;EACE,aAAA;EACA,mBAAA;EACA,6BAAA;EACA,2BAAA;EACA,eAAA;EACA,uBAAA;AAsBJ;AApBI;EACE,kBAAA;AAsBN;AAlBE;EACE,WAAA;EACA,YAAA;EACA,gBAAA;AAoBJ;AAjBE;;;EAGE,UAAA;EACA,YAAA;EACA,SAAA;EACA,kBAAA;EACA,yBAAA;AAmBJ;AAjBI;;;EACE,kDAAA;AAqBN;AAlBI;;;EACE,sCAAA;AAsBN;AApBM;;;EACE,sCAAA;AAwBR;AApBI;;;EACE,sCAAA;AAwBN;AArBI;;;EACE,mBAAA;AAyBN;AAtBI;;;EACE,wBAAA;AA0BN;AAtBE;EACE,6BAAA;AAwBJ;AAtBI;EACE,6BAAA;AAwBN;AArBI;EACE,6BAAA;AAuBN;AApBI;EACE,sCAAA;EAQA,WAAA;EACA,YAAA;AAeN;AAvBM;EACE,sCAAA;AAyBR;AAvBM;EACE,sCAAA;AAyBR;AAjBE;EACE,kBAAA;EACA,WAAA;EACA,UAAA;EACA,mBAAA;EACA,8BAAA;EACA,2BAAA;EACA,iBAAA;AAmBJ;AAfI;EACE,SAAA;AAiBN;AAdI;EACE,UAAA;AAgBN;AAXI;EACE,4BAAA;EACA,6BAAA;AAaN;AAXM;EAJF;IAKI,aAAA;IACA,cAAA;EAcN;AACF;AAbM;EARF;IASI,aAAA;IACA,cAAA;EAgBN;AACF;AAdM;EACE,0BAAA;EACA,2BAAA;AAgBR;AAZI;EACE,iCAAA;EACA,kCAAA;AAcN","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"open-color/open-color.scss\\";\\n@import \\"../css/variables.module\\";\\n\\n.excalidraw {\\n  .ToolIcon {\\n    border-radius: var(--border-radius-lg);\\n    display: inline-flex;\\n    align-items: center;\\n    position: relative;\\n    cursor: pointer;\\n    -webkit-tap-highlight-color: transparent;\\n    user-select: none;\\n\\n    &__hidden {\\n      display: none !important;\\n    }\\n\\n    @include toolbarButtonColorStates;\\n  }\\n\\n  .ToolIcon--plain {\\n    background-color: transparent;\\n    .ToolIcon__icon {\\n      width: 2rem;\\n      height: 2rem;\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    position: absolute;\\n    opacity: 0;\\n    pointer-events: none;\\n  }\\n\\n  .ToolIcon__icon {\\n    box-sizing: border-box;\\n    width: var(--default-button-size);\\n    height: var(--default-button-size);\\n    color: var(--icon-fill-color);\\n\\n    display: flex;\\n    justify-content: center;\\n    align-items: center;\\n\\n    border-radius: var(--border-radius-lg);\\n\\n    & + .ToolIcon__label {\\n      margin-inline-start: 0;\\n    }\\n\\n    svg {\\n      position: relative;\\n      width: var(--default-icon-size);\\n      height: var(--default-icon-size);\\n      color: var(--icon-fill-color);\\n    }\\n  }\\n\\n  .ToolIcon__label {\\n    display: flex;\\n    align-items: center;\\n    color: var(--icon-fill-color);\\n    font-family: var(--ui-font);\\n    margin: 0 0.8em;\\n    text-overflow: ellipsis;\\n\\n    .Spinner {\\n      margin-left: 0.6em;\\n    }\\n  }\\n\\n  .ToolIcon_size_small .ToolIcon__icon {\\n    width: 2rem;\\n    height: 2rem;\\n    font-size: 0.8em;\\n  }\\n\\n  .ToolIcon_type_button,\\n  .Modal .ToolIcon_type_button,\\n  .ToolIcon_type_button {\\n    padding: 0;\\n    border: none;\\n    margin: 0;\\n    font-size: inherit;\\n    background-color: initial;\\n\\n    &:focus-visible {\\n      box-shadow: 0 0 0 2px var(--focus-highlight-color);\\n    }\\n\\n    &.ToolIcon--selected {\\n      background-color: var(--button-gray-2);\\n\\n      &:active {\\n        background-color: var(--button-gray-3);\\n      }\\n    }\\n\\n    &:active {\\n      background-color: var(--button-gray-3);\\n    }\\n\\n    &--show {\\n      visibility: visible;\\n    }\\n\\n    &--hide {\\n      display: none !important;\\n    }\\n  }\\n\\n  .ToolIcon_type_floating {\\n    background-color: transparent;\\n\\n    &:hover {\\n      background-color: transparent;\\n    }\\n\\n    &:active {\\n      background-color: transparent;\\n    }\\n\\n    .ToolIcon__icon {\\n      background-color: var(--button-gray-1);\\n      &:hover {\\n        background-color: var(--button-gray-2);\\n      }\\n      &:active {\\n        background-color: var(--button-gray-3);\\n      }\\n\\n      width: 2rem;\\n      height: 2rem;\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    position: absolute;\\n    bottom: 2px;\\n    right: 3px;\\n    font-size: 0.625rem;\\n    color: var(--keybinding-color);\\n    font-family: var(--ui-font);\\n    user-select: none;\\n  }\\n\\n  .unlocked-icon {\\n    :root[dir=\\"ltr\\"] & {\\n      left: 2px;\\n    }\\n\\n    :root[dir=\\"rtl\\"] & {\\n      right: 2px;\\n    }\\n  }\\n\\n  .App-toolbar-container {\\n    .ToolIcon__icon {\\n      width: var(--lg-button-size);\\n      height: var(--lg-button-size);\\n\\n      @media screen and (max-width: 450px) {\\n        width: 1.8rem;\\n        height: 1.8rem;\\n      }\\n      @media screen and (max-width: 379px) {\\n        width: 1.5rem;\\n        height: 1.5rem;\\n      }\\n\\n      svg {\\n        width: var(--lg-icon-size);\\n        height: var(--lg-icon-size);\\n      }\\n    }\\n\\n    .ToolIcon__LaserPointer .ToolIcon__icon {\\n      width: var(--default-button-size);\\n      height: var(--default-button-size);\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 25852 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ToolIcon.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Toolbar.scss": (
              /*!****************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Toolbar.scss ***!
                \****************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .App-toolbar.zen-mode .ToolIcon__keybinding,\\n.excalidraw .App-toolbar.zen-mode .HintViewer {\\n  display: none;\\n}\\n.excalidraw .App-toolbar__divider {\\n  width: 1px;\\n  height: 1.5rem;\\n  align-self: center;\\n  background-color: var(--default-border-color);\\n  margin: 0 0.25rem;\\n}\\n.excalidraw--mobile.excalidraw .App-toolbar__divider {\\n  margin: 0;\\n}\\n\\n.excalidraw .App-toolbar__extra-tools-trigger {\\n  box-shadow: none;\\n  border: 0;\\n  background-color: transparent;\\n}\\n.excalidraw .App-toolbar__extra-tools-trigger:active {\\n  background-color: var(--button-hover-bg);\\n  box-shadow: 0 0 0 1px var(--button-active-border, var(--color-primary-darkest)) inset;\\n}\\n.excalidraw .App-toolbar__extra-tools-trigger--selected, .excalidraw .App-toolbar__extra-tools-trigger--selected:hover {\\n  background: var(--color-primary-light);\\n  color: var(--color-primary);\\n}\\n.excalidraw .App-toolbar__extra-tools-dropdown {\\n  margin-top: 0.375rem;\\n  right: 0;\\n  min-width: 11.875rem;\\n  z-index: 1;\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/Toolbar.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AAGM;;EAEE,aAAA;AAAR;AAII;EACE,UAAA;EACA,cAAA;EACA,kBAAA;EACA,6CAAA;EACA,iBAAA;AAFN;ADZW;ECiBH,SAAA;AAFR;;AAOE;EACE,gBAAA;EACA,SAAA;EACA,6BAAA;AAJJ;AAMI;EACE,wCAAA;EACA,qFAAA;AAJN;AAQI;EAEE,sCAAA;EACA,2BAAA;AAPN;AAWE;EACE,oBAAA;EACA,QAAA;EACA,oBAAA;EACA,UAAA;AATJ","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"open-color/open-color.scss\\";\\n@import \\"../css/variables.module\\";\\n\\n.excalidraw {\\n  .App-toolbar {\\n    &.zen-mode {\\n      .ToolIcon__keybinding,\\n      .HintViewer {\\n        display: none;\\n      }\\n    }\\n\\n    &__divider {\\n      width: 1px;\\n      height: 1.5rem;\\n      align-self: center;\\n      background-color: var(--default-border-color);\\n      margin: 0 0.25rem;\\n\\n      @include isMobile {\\n        margin: 0;\\n      }\\n    }\\n  }\\n\\n  .App-toolbar__extra-tools-trigger {\\n    box-shadow: none;\\n    border: 0;\\n    background-color: transparent;\\n\\n    &:active {\\n      background-color: var(--button-hover-bg);\\n      box-shadow: 0 0 0 1px\\n        var(--button-active-border, var(--color-primary-darkest)) inset;\\n    }\\n\\n    &--selected,\\n    &--selected:hover {\\n      background: var(--color-primary-light);\\n      color: var(--color-primary);\\n    }\\n  }\\n\\n  .App-toolbar__extra-tools-dropdown {\\n    margin-top: 0.375rem;\\n    right: 0;\\n    min-width: 11.875rem;\\n    z-index: 1;\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 11008 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Toolbar.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Tooltip.scss": (
              /*!****************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Tooltip.scss ***!
                \****************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw-tooltip {\\n  --ui-font: Assistant, system-ui, BlinkMacSystemFont, -apple-system, Segoe UI,\\n    Roboto, Helvetica, Arial, sans-serif;\\n  font-family: var(--ui-font);\\n  position: fixed;\\n  z-index: var(--zIndex-popup);\\n  padding: 8px;\\n  border-radius: 6px;\\n  box-sizing: border-box;\\n  pointer-events: none;\\n  word-wrap: break-word;\\n  background: #000000;\\n  line-height: 1.5;\\n  text-align: center;\\n  font-size: 13px;\\n  font-weight: 500;\\n  color: #ffffff;\\n  display: none;\\n}\\n.excalidraw-tooltip.excalidraw-tooltip--visible {\\n  display: block;\\n}\\n\\n.excalidraw-tooltip-wrapper {\\n  display: flex;\\n}\\n\\n.excalidraw-tooltip-icon {\\n  width: 0.9em;\\n  height: 0.9em;\\n  margin-left: 5px;\\n  margin-top: 1px;\\n  display: flex;\\n}\\n.excalidraw--mobile.excalidraw-tooltip-icon {\\n  display: none;\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/Tooltip.scss","webpack://./../../../node_modules/open-color/open-color.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AAAA;EACE;wCAAA;EAEA,2BAAA;EACA,eAAA;EACA,4BAAA;EAEA,YAAA;EACA,kBAAA;EACA,sBAAA;EACA,oBAAA;EACA,qBAAA;EAEA,mBCJiB;EDMjB,gBAAA;EACA,kBAAA;EACA,eAAA;EACA,gBAAA;EACA,cCXiB;EDajB,aAAA;AADF;AAGE;EACE,cAAA;AADJ;;AAMA;EACE,aAAA;AAHF;;AAMA;EACE,YAAA;EACA,aAAA;EACA,gBAAA;EACA,eAAA;EACA,aAAA;AAHF;ADnCW;ECyCP,aAAA;AAHJ","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../css/variables.module\\";\\n\\n// container in body where the actual tooltip is appended to\\n.excalidraw-tooltip {\\n  --ui-font: Assistant, system-ui, BlinkMacSystemFont, -apple-system, Segoe UI,\\n    Roboto, Helvetica, Arial, sans-serif;\\n  font-family: var(--ui-font);\\n  position: fixed;\\n  z-index: var(--zIndex-popup);\\n\\n  padding: 8px;\\n  border-radius: 6px;\\n  box-sizing: border-box;\\n  pointer-events: none;\\n  word-wrap: break-word;\\n\\n  background: $oc-black;\\n\\n  line-height: 1.5;\\n  text-align: center;\\n  font-size: 13px;\\n  font-weight: 500;\\n  color: $oc-white;\\n\\n  display: none;\\n\\n  &.excalidraw-tooltip--visible {\\n    display: block;\\n  }\\n}\\n\\n// wraps the element we want to apply the tooltip to\\n.excalidraw-tooltip-wrapper {\\n  display: flex;\\n}\\n\\n.excalidraw-tooltip-icon {\\n  width: 0.9em;\\n  height: 0.9em;\\n  margin-left: 5px;\\n  margin-top: 1px;\\n  display: flex;\\n\\n  @include isMobile {\\n    display: none;\\n  }\\n}\\n","//\\n//\\n//  \u{1D5D6} \u{1D5E2} \u{1D5DF} \u{1D5E2} \u{1D5E5}\\n//  v 1.9.1\\n//\\n//  \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\\n\\n\\n//  General\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-white:         #ffffff;\\n$oc-black:         #000000;\\n\\n\\n//  Gray\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-gray-list: (\\n  \\"0\\": #f8f9fa,\\n  \\"1\\": #f1f3f5,\\n  \\"2\\": #e9ecef,\\n  \\"3\\": #dee2e6,\\n  \\"4\\": #ced4da,\\n  \\"5\\": #adb5bd,\\n  \\"6\\": #868e96,\\n  \\"7\\": #495057,\\n  \\"8\\": #343a40,\\n  \\"9\\": #212529\\n);\\n\\n$oc-gray-0: map-get($oc-gray-list, \\"0\\");\\n$oc-gray-1: map-get($oc-gray-list, \\"1\\");\\n$oc-gray-2: map-get($oc-gray-list, \\"2\\");\\n$oc-gray-3: map-get($oc-gray-list, \\"3\\");\\n$oc-gray-4: map-get($oc-gray-list, \\"4\\");\\n$oc-gray-5: map-get($oc-gray-list, \\"5\\");\\n$oc-gray-6: map-get($oc-gray-list, \\"6\\");\\n$oc-gray-7: map-get($oc-gray-list, \\"7\\");\\n$oc-gray-8: map-get($oc-gray-list, \\"8\\");\\n$oc-gray-9: map-get($oc-gray-list, \\"9\\");\\n\\n\\n//  Red\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-red-list: (\\n  \\"0\\": #fff5f5,\\n  \\"1\\": #ffe3e3,\\n  \\"2\\": #ffc9c9,\\n  \\"3\\": #ffa8a8,\\n  \\"4\\": #ff8787,\\n  \\"5\\": #ff6b6b,\\n  \\"6\\": #fa5252,\\n  \\"7\\": #f03e3e,\\n  \\"8\\": #e03131,\\n  \\"9\\": #c92a2a\\n);\\n\\n$oc-red-0: map-get($oc-red-list, \\"0\\");\\n$oc-red-1: map-get($oc-red-list, \\"1\\");\\n$oc-red-2: map-get($oc-red-list, \\"2\\");\\n$oc-red-3: map-get($oc-red-list, \\"3\\");\\n$oc-red-4: map-get($oc-red-list, \\"4\\");\\n$oc-red-5: map-get($oc-red-list, \\"5\\");\\n$oc-red-6: map-get($oc-red-list, \\"6\\");\\n$oc-red-7: map-get($oc-red-list, \\"7\\");\\n$oc-red-8: map-get($oc-red-list, \\"8\\");\\n$oc-red-9: map-get($oc-red-list, \\"9\\");\\n\\n\\n//  Pink\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-pink-list: (\\n  \\"0\\": #fff0f6,\\n  \\"1\\": #ffdeeb,\\n  \\"2\\": #fcc2d7,\\n  \\"3\\": #faa2c1,\\n  \\"4\\": #f783ac,\\n  \\"5\\": #f06595,\\n  \\"6\\": #e64980,\\n  \\"7\\": #d6336c,\\n  \\"8\\": #c2255c,\\n  \\"9\\": #a61e4d\\n);\\n\\n$oc-pink-0: map-get($oc-pink-list, \\"0\\");\\n$oc-pink-1: map-get($oc-pink-list, \\"1\\");\\n$oc-pink-2: map-get($oc-pink-list, \\"2\\");\\n$oc-pink-3: map-get($oc-pink-list, \\"3\\");\\n$oc-pink-4: map-get($oc-pink-list, \\"4\\");\\n$oc-pink-5: map-get($oc-pink-list, \\"5\\");\\n$oc-pink-6: map-get($oc-pink-list, \\"6\\");\\n$oc-pink-7: map-get($oc-pink-list, \\"7\\");\\n$oc-pink-8: map-get($oc-pink-list, \\"8\\");\\n$oc-pink-9: map-get($oc-pink-list, \\"9\\");\\n\\n\\n//  Grape\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-grape-list: (\\n  \\"0\\": #f8f0fc,\\n  \\"1\\": #f3d9fa,\\n  \\"2\\": #eebefa,\\n  \\"3\\": #e599f7,\\n  \\"4\\": #da77f2,\\n  \\"5\\": #cc5de8,\\n  \\"6\\": #be4bdb,\\n  \\"7\\": #ae3ec9,\\n  \\"8\\": #9c36b5,\\n  \\"9\\": #862e9c\\n);\\n\\n$oc-grape-0: map-get($oc-grape-list, \\"0\\");\\n$oc-grape-1: map-get($oc-grape-list, \\"1\\");\\n$oc-grape-2: map-get($oc-grape-list, \\"2\\");\\n$oc-grape-3: map-get($oc-grape-list, \\"3\\");\\n$oc-grape-4: map-get($oc-grape-list, \\"4\\");\\n$oc-grape-5: map-get($oc-grape-list, \\"5\\");\\n$oc-grape-6: map-get($oc-grape-list, \\"6\\");\\n$oc-grape-7: map-get($oc-grape-list, \\"7\\");\\n$oc-grape-8: map-get($oc-grape-list, \\"8\\");\\n$oc-grape-9: map-get($oc-grape-list, \\"9\\");\\n\\n\\n//  Violet\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-violet-list: (\\n  \\"0\\": #f3f0ff,\\n  \\"1\\": #e5dbff,\\n  \\"2\\": #d0bfff,\\n  \\"3\\": #b197fc,\\n  \\"4\\": #9775fa,\\n  \\"5\\": #845ef7,\\n  \\"6\\": #7950f2,\\n  \\"7\\": #7048e8,\\n  \\"8\\": #6741d9,\\n  \\"9\\": #5f3dc4\\n);\\n\\n$oc-violet-0: map-get($oc-violet-list, \\"0\\");\\n$oc-violet-1: map-get($oc-violet-list, \\"1\\");\\n$oc-violet-2: map-get($oc-violet-list, \\"2\\");\\n$oc-violet-3: map-get($oc-violet-list, \\"3\\");\\n$oc-violet-4: map-get($oc-violet-list, \\"4\\");\\n$oc-violet-5: map-get($oc-violet-list, \\"5\\");\\n$oc-violet-6: map-get($oc-violet-list, \\"6\\");\\n$oc-violet-7: map-get($oc-violet-list, \\"7\\");\\n$oc-violet-8: map-get($oc-violet-list, \\"8\\");\\n$oc-violet-9: map-get($oc-violet-list, \\"9\\");\\n\\n\\n//  Indigo\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-indigo-list: (\\n  \\"0\\": #edf2ff,\\n  \\"1\\": #dbe4ff,\\n  \\"2\\": #bac8ff,\\n  \\"3\\": #91a7ff,\\n  \\"4\\": #748ffc,\\n  \\"5\\": #5c7cfa,\\n  \\"6\\": #4c6ef5,\\n  \\"7\\": #4263eb,\\n  \\"8\\": #3b5bdb,\\n  \\"9\\": #364fc7\\n);\\n\\n$oc-indigo-0: map-get($oc-indigo-list, \\"0\\");\\n$oc-indigo-1: map-get($oc-indigo-list, \\"1\\");\\n$oc-indigo-2: map-get($oc-indigo-list, \\"2\\");\\n$oc-indigo-3: map-get($oc-indigo-list, \\"3\\");\\n$oc-indigo-4: map-get($oc-indigo-list, \\"4\\");\\n$oc-indigo-5: map-get($oc-indigo-list, \\"5\\");\\n$oc-indigo-6: map-get($oc-indigo-list, \\"6\\");\\n$oc-indigo-7: map-get($oc-indigo-list, \\"7\\");\\n$oc-indigo-8: map-get($oc-indigo-list, \\"8\\");\\n$oc-indigo-9: map-get($oc-indigo-list, \\"9\\");\\n\\n\\n//  Blue\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-blue-list: (\\n  \\"0\\": #e7f5ff,\\n  \\"1\\": #d0ebff,\\n  \\"2\\": #a5d8ff,\\n  \\"3\\": #74c0fc,\\n  \\"4\\": #4dabf7,\\n  \\"5\\": #339af0,\\n  \\"6\\": #228be6,\\n  \\"7\\": #1c7ed6,\\n  \\"8\\": #1971c2,\\n  \\"9\\": #1864ab\\n);\\n\\n$oc-blue-0: map-get($oc-blue-list, \\"0\\");\\n$oc-blue-1: map-get($oc-blue-list, \\"1\\");\\n$oc-blue-2: map-get($oc-blue-list, \\"2\\");\\n$oc-blue-3: map-get($oc-blue-list, \\"3\\");\\n$oc-blue-4: map-get($oc-blue-list, \\"4\\");\\n$oc-blue-5: map-get($oc-blue-list, \\"5\\");\\n$oc-blue-6: map-get($oc-blue-list, \\"6\\");\\n$oc-blue-7: map-get($oc-blue-list, \\"7\\");\\n$oc-blue-8: map-get($oc-blue-list, \\"8\\");\\n$oc-blue-9: map-get($oc-blue-list, \\"9\\");\\n\\n\\n//  Cyan\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-cyan-list: (\\n  \\"0\\": #e3fafc,\\n  \\"1\\": #c5f6fa,\\n  \\"2\\": #99e9f2,\\n  \\"3\\": #66d9e8,\\n  \\"4\\": #3bc9db,\\n  \\"5\\": #22b8cf,\\n  \\"6\\": #15aabf,\\n  \\"7\\": #1098ad,\\n  \\"8\\": #0c8599,\\n  \\"9\\": #0b7285\\n);\\n\\n$oc-cyan-0: map-get($oc-cyan-list, \\"0\\");\\n$oc-cyan-1: map-get($oc-cyan-list, \\"1\\");\\n$oc-cyan-2: map-get($oc-cyan-list, \\"2\\");\\n$oc-cyan-3: map-get($oc-cyan-list, \\"3\\");\\n$oc-cyan-4: map-get($oc-cyan-list, \\"4\\");\\n$oc-cyan-5: map-get($oc-cyan-list, \\"5\\");\\n$oc-cyan-6: map-get($oc-cyan-list, \\"6\\");\\n$oc-cyan-7: map-get($oc-cyan-list, \\"7\\");\\n$oc-cyan-8: map-get($oc-cyan-list, \\"8\\");\\n$oc-cyan-9: map-get($oc-cyan-list, \\"9\\");\\n\\n\\n//  Teal\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-teal-list: (\\n  \\"0\\": #e6fcf5,\\n  \\"1\\": #c3fae8,\\n  \\"2\\": #96f2d7,\\n  \\"3\\": #63e6be,\\n  \\"4\\": #38d9a9,\\n  \\"5\\": #20c997,\\n  \\"6\\": #12b886,\\n  \\"7\\": #0ca678,\\n  \\"8\\": #099268,\\n  \\"9\\": #087f5b\\n);\\n\\n$oc-teal-0: map-get($oc-teal-list, \\"0\\");\\n$oc-teal-1: map-get($oc-teal-list, \\"1\\");\\n$oc-teal-2: map-get($oc-teal-list, \\"2\\");\\n$oc-teal-3: map-get($oc-teal-list, \\"3\\");\\n$oc-teal-4: map-get($oc-teal-list, \\"4\\");\\n$oc-teal-5: map-get($oc-teal-list, \\"5\\");\\n$oc-teal-6: map-get($oc-teal-list, \\"6\\");\\n$oc-teal-7: map-get($oc-teal-list, \\"7\\");\\n$oc-teal-8: map-get($oc-teal-list, \\"8\\");\\n$oc-teal-9: map-get($oc-teal-list, \\"9\\");\\n\\n\\n//  Green\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-green-list: (\\n  \\"0\\": #ebfbee,\\n  \\"1\\": #d3f9d8,\\n  \\"2\\": #b2f2bb,\\n  \\"3\\": #8ce99a,\\n  \\"4\\": #69db7c,\\n  \\"5\\": #51cf66,\\n  \\"6\\": #40c057,\\n  \\"7\\": #37b24d,\\n  \\"8\\": #2f9e44,\\n  \\"9\\": #2b8a3e\\n);\\n\\n$oc-green-0: map-get($oc-green-list, \\"0\\");\\n$oc-green-1: map-get($oc-green-list, \\"1\\");\\n$oc-green-2: map-get($oc-green-list, \\"2\\");\\n$oc-green-3: map-get($oc-green-list, \\"3\\");\\n$oc-green-4: map-get($oc-green-list, \\"4\\");\\n$oc-green-5: map-get($oc-green-list, \\"5\\");\\n$oc-green-6: map-get($oc-green-list, \\"6\\");\\n$oc-green-7: map-get($oc-green-list, \\"7\\");\\n$oc-green-8: map-get($oc-green-list, \\"8\\");\\n$oc-green-9: map-get($oc-green-list, \\"9\\");\\n\\n\\n//  Lime\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-lime-list: (\\n  \\"0\\": #f4fce3,\\n  \\"1\\": #e9fac8,\\n  \\"2\\": #d8f5a2,\\n  \\"3\\": #c0eb75,\\n  \\"4\\": #a9e34b,\\n  \\"5\\": #94d82d,\\n  \\"6\\": #82c91e,\\n  \\"7\\": #74b816,\\n  \\"8\\": #66a80f,\\n  \\"9\\": #5c940d\\n);\\n\\n$oc-lime-0: map-get($oc-lime-list, \\"0\\");\\n$oc-lime-1: map-get($oc-lime-list, \\"1\\");\\n$oc-lime-2: map-get($oc-lime-list, \\"2\\");\\n$oc-lime-3: map-get($oc-lime-list, \\"3\\");\\n$oc-lime-4: map-get($oc-lime-list, \\"4\\");\\n$oc-lime-5: map-get($oc-lime-list, \\"5\\");\\n$oc-lime-6: map-get($oc-lime-list, \\"6\\");\\n$oc-lime-7: map-get($oc-lime-list, \\"7\\");\\n$oc-lime-8: map-get($oc-lime-list, \\"8\\");\\n$oc-lime-9: map-get($oc-lime-list, \\"9\\");\\n\\n\\n//  Yellow\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-yellow-list: (\\n  \\"0\\": #fff9db,\\n  \\"1\\": #fff3bf,\\n  \\"2\\": #ffec99,\\n  \\"3\\": #ffe066,\\n  \\"4\\": #ffd43b,\\n  \\"5\\": #fcc419,\\n  \\"6\\": #fab005,\\n  \\"7\\": #f59f00,\\n  \\"8\\": #f08c00,\\n  \\"9\\": #e67700\\n);\\n\\n$oc-yellow-0: map-get($oc-yellow-list, \\"0\\");\\n$oc-yellow-1: map-get($oc-yellow-list, \\"1\\");\\n$oc-yellow-2: map-get($oc-yellow-list, \\"2\\");\\n$oc-yellow-3: map-get($oc-yellow-list, \\"3\\");\\n$oc-yellow-4: map-get($oc-yellow-list, \\"4\\");\\n$oc-yellow-5: map-get($oc-yellow-list, \\"5\\");\\n$oc-yellow-6: map-get($oc-yellow-list, \\"6\\");\\n$oc-yellow-7: map-get($oc-yellow-list, \\"7\\");\\n$oc-yellow-8: map-get($oc-yellow-list, \\"8\\");\\n$oc-yellow-9: map-get($oc-yellow-list, \\"9\\");\\n\\n\\n//  Orange\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-orange-list: (\\n  \\"0\\": #fff4e6,\\n  \\"1\\": #ffe8cc,\\n  \\"2\\": #ffd8a8,\\n  \\"3\\": #ffc078,\\n  \\"4\\": #ffa94d,\\n  \\"5\\": #ff922b,\\n  \\"6\\": #fd7e14,\\n  \\"7\\": #f76707,\\n  \\"8\\": #e8590c,\\n  \\"9\\": #d9480f\\n);\\n\\n$oc-orange-0: map-get($oc-orange-list, \\"0\\");\\n$oc-orange-1: map-get($oc-orange-list, \\"1\\");\\n$oc-orange-2: map-get($oc-orange-list, \\"2\\");\\n$oc-orange-3: map-get($oc-orange-list, \\"3\\");\\n$oc-orange-4: map-get($oc-orange-list, \\"4\\");\\n$oc-orange-5: map-get($oc-orange-list, \\"5\\");\\n$oc-orange-6: map-get($oc-orange-list, \\"6\\");\\n$oc-orange-7: map-get($oc-orange-list, \\"7\\");\\n$oc-orange-8: map-get($oc-orange-list, \\"8\\");\\n$oc-orange-9: map-get($oc-orange-list, \\"9\\");\\n\\n\\n//  Color list\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-color-spectrum:   9;\\n\\n$oc-color-list: (\\n  $oc-gray-list:      \\"gray\\",\\n  $oc-red-list:      \\"red\\",\\n  $oc-pink-list:      \\"pink\\",\\n  $oc-grape-list:      \\"grape\\",\\n  $oc-violet-list:      \\"violet\\",\\n  $oc-indigo-list:      \\"indigo\\",\\n  $oc-blue-list:      \\"blue\\",\\n  $oc-cyan-list:      \\"cyan\\",\\n  $oc-teal-list:      \\"teal\\",\\n  $oc-green-list:      \\"green\\",\\n  $oc-lime-list:      \\"lime\\",\\n  $oc-yellow-list:      \\"yellow\\",\\n  $oc-orange-list:      \\"orange\\"\\n);\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 29284 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Tooltip.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/UserList.scss": (
              /*!*****************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/UserList.scss ***!
                \*****************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");
/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");
/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);
// Imports


var ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
// Module
___CSS_LOADER_EXPORT___.push([module.id, ".excalidraw .UserList {\\n  pointer-events: none;\\n  /*github corner*/\\n  padding: var(--space-factor) var(--space-factor) var(--space-factor) var(--space-factor);\\n  display: flex;\\n  flex-wrap: wrap;\\n  justify-content: flex-end;\\n  align-items: center;\\n  gap: 0.625rem;\\n  max-height: 140px;\\n  max-width: 290px;\\n  overflow: hidden;\\n}\\n.excalidraw .UserList:empty {\\n  display: none;\\n}\\n.excalidraw .UserList > * {\\n  pointer-events: var(--ui-pointerEvents);\\n}\\n.excalidraw .UserList_mobile {\\n  padding: 0;\\n  justify-content: normal;\\n  margin: 0.5rem 0;\\n}", "",{"version":3,"sources":["webpack://./../../components/UserList.scss"],"names":[],"mappings":"AACE;EACE,oBAAA;EACA,gBAAA;EACA,wFAAA;EAEA,aAAA;EACA,eAAA;EACA,yBAAA;EACA,mBAAA;EACA,aAAA;EAOA,iBAAA;EAGA,gBAAA;EAIA,gBAAA;AAZJ;AAAI;EACE,aAAA;AAEN;AAYE;EACE,uCAAA;AAVJ;AAaE;EACE,UAAA;EACA,uBAAA;EACA,gBAAA;AAXJ","sourcesContent":[".excalidraw {\\n  .UserList {\\n    pointer-events: none;\\n    /*github corner*/\\n    padding: var(--space-factor) var(--space-factor) var(--space-factor)\\n      var(--space-factor);\\n    display: flex;\\n    flex-wrap: wrap;\\n    justify-content: flex-end;\\n    align-items: center;\\n    gap: 0.625rem;\\n\\n    &:empty {\\n      display: none;\\n    }\\n\\n    // can fit max 5 avatars in a column\\n    max-height: 140px;\\n\\n    // can fit max 10 avatars in a row when there's enough space\\n    max-width: 290px;\\n\\n    // Tweak in 30px increments to fit more/fewer avatars in a row/column ^^\\n\\n    overflow: hidden;\\n  }\\n\\n  .UserList > * {\\n    pointer-events: var(--ui-pointerEvents);\\n  }\\n\\n  .UserList_mobile {\\n    padding: 0;\\n    justify-content: normal;\\n    margin: 0.5rem 0;\\n  }\\n}\\n"],"sourceRoot":""}]);
// Exports
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4164 characters]
//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/UserList.scss
`);
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/dropdownMenu/DropdownMenu.scss": (
              /*!**********************************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/dropdownMenu/DropdownMenu.scss ***!
                \**********************************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .dropdown-menu {\\n  position: absolute;\\n  top: 100%;\\n  margin-top: 0.25rem;\\n}\\n.excalidraw .dropdown-menu--mobile {\\n  left: 0;\\n  width: 100%;\\n  row-gap: 0.75rem;\\n}\\n.excalidraw .dropdown-menu--mobile .dropdown-menu-container {\\n  padding: 8px 8px;\\n  box-sizing: border-box;\\n  box-shadow: var(--shadow-island);\\n  border-radius: var(--border-radius-lg);\\n  position: relative;\\n  transition: box-shadow 0.5s ease-in-out;\\n}\\n.excalidraw .dropdown-menu--mobile .dropdown-menu-container.zen-mode {\\n  box-shadow: none;\\n}\\n.excalidraw .dropdown-menu .dropdown-menu-container {\\n  background-color: var(--island-bg-color);\\n  max-height: calc(100vh - 150px);\\n  overflow-y: auto;\\n  --gap: 2;\\n}\\n.excalidraw .dropdown-menu .dropdown-menu-item-base {\\n  display: flex;\\n  padding: 0 0.625rem;\\n  column-gap: 0.625rem;\\n  font-size: 0.875rem;\\n  color: var(--color-on-surface);\\n  width: 100%;\\n  box-sizing: border-box;\\n  font-weight: normal;\\n  font-family: inherit;\\n}\\n.excalidraw .dropdown-menu .dropdown-menu-item {\\n  background-color: transparent;\\n  border: 1px solid transparent;\\n  align-items: center;\\n  height: 2rem;\\n  cursor: pointer;\\n  border-radius: var(--border-radius-md);\\n}\\n@media screen and (min-width: 1921px) {\\n  .excalidraw .dropdown-menu .dropdown-menu-item {\\n    height: 2.25rem;\\n  }\\n}\\n.excalidraw .dropdown-menu .dropdown-menu-item--selected {\\n  background: var(--color-primary-light);\\n  --icon-fill-color: var(--color-primary-darker);\\n}\\n.excalidraw .dropdown-menu .dropdown-menu-item__text {\\n  text-overflow: ellipsis;\\n  overflow: hidden;\\n  white-space: nowrap;\\n}\\n.excalidraw .dropdown-menu .dropdown-menu-item__shortcut {\\n  margin-inline-start: auto;\\n  opacity: 0.5;\\n}\\n.excalidraw .dropdown-menu .dropdown-menu-item:hover {\\n  background-color: var(--button-hover-bg);\\n  text-decoration: none;\\n}\\n.excalidraw .dropdown-menu .dropdown-menu-item:active {\\n  background-color: var(--button-hover-bg);\\n  border-color: var(--color-brand-active);\\n}\\n.excalidraw .dropdown-menu .dropdown-menu-item svg {\\n  width: 1rem;\\n  height: 1rem;\\n  display: block;\\n}\\n.excalidraw .dropdown-menu .dropdown-menu-item-custom {\\n  margin-top: 0.5rem;\\n}\\n.excalidraw .dropdown-menu .dropdown-menu-group-title {\\n  font-size: 14px;\\n  text-align: left;\\n  margin: 10px 0;\\n  font-weight: 500;\\n}\\n.excalidraw .dropdown-menu-button {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n  width: var(--lg-button-size);\\n  height: var(--lg-button-size);\\n  --background: var(--color-surface-mid);\\n  background-color: var(--background);\\n}\\n.excalidraw .dropdown-menu-button svg {\\n  width: var(--button-width, var(--lg-icon-size));\\n  height: var(--button-height, var(--lg-icon-size));\\n}\\n.excalidraw .dropdown-menu-button:hover {\\n  background-color: var(--button-hover-bg, var(--island-bg-color));\\n  border-color: var(--button-hover-border, var(--button-border, var(--default-border-color)));\\n  color: var(--button-hover-color, var(--button-color, var(--text-primary-color, inherit)));\\n}\\n.excalidraw .dropdown-menu-button:active {\\n  background-color: var(--button-active-bg, var(--island-bg-color));\\n  border-color: var(--button-active-border, var(--color-primary-darkest));\\n}\\n.excalidraw .dropdown-menu-button.active {\\n  background-color: var(--button-selected-bg, var(--color-surface-primary-container));\\n  border-color: var(--button-selected-border, var(--color-surface-primary-container));\\n}\\n.excalidraw .dropdown-menu-button.active:hover {\\n  background-color: var(--button-selected-hover-bg, var(--color-surface-primary-container));\\n}\\n.excalidraw .dropdown-menu-button.active svg {\\n  color: var(--button-color, var(--color-on-primary-container));\\n}\\n.excalidraw.theme--dark.excalidraw .dropdown-menu-button {\\n  --background: var(--color-surface-high);\\n}\\n.excalidraw.theme--dark.excalidraw .dropdown-menu-button:hover {\\n  --background: #363541;\\n}\\n\\n.excalidraw .dropdown-menu-button:hover {\\n  --background: var(--color-surface-high);\\n  background-color: var(--background);\\n  text-decoration: none;\\n}\\n.excalidraw .dropdown-menu-button:active {\\n  border-color: var(--color-primary);\\n}\\n.excalidraw .dropdown-menu-button svg {\\n  width: var(--lg-icon-size);\\n  height: var(--lg-icon-size);\\n}\\n.excalidraw .dropdown-menu-button--mobile {\\n  border: none;\\n  margin: 0;\\n  padding: 0;\\n  width: var(--default-button-size);\\n  height: var(--default-button-size);\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/dropdownMenu/DropdownMenu.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AAAE;EACE,kBAAA;EACA,SAAA;EACA,mBAAA;AAGJ;AADI;EACE,OAAA;EACA,WAAA;EACA,gBAAA;AAGN;AADM;EACE,gBAAA;EACA,sBAAA;EAEA,gCAAA;EACA,sCAAA;EACA,kBAAA;EACA,uCAAA;AAER;AAAQ;EACE,gBAAA;AAEV;AAGI;EACE,wCAAA;EACA,+BAAA;EACA,gBAAA;EACA,QAAA;AADN;AAII;EACE,aAAA;EACA,mBAAA;EACA,oBAAA;EACA,mBAAA;EACA,8BAAA;EACA,WAAA;EACA,sBAAA;EACA,mBAAA;EACA,oBAAA;AAFN;AAKI;EACE,6BAAA;EACA,6BAAA;EACA,mBAAA;EACA,YAAA;EACA,eAAA;EACA,sCAAA;AAHN;AAKM;EARF;IASI,eAAA;EAFN;AACF;AAIM;EACE,sCAAA;EACA,8CAAA;AAFR;AAKM;EACE,uBAAA;EACA,gBAAA;EACA,mBAAA;AAHR;AAMM;EACE,yBAAA;EACA,YAAA;AAJR;AAOM;EACE,wCAAA;EACA,qBAAA;AALR;AAQM;EACE,wCAAA;EACA,uCAAA;AANR;AASM;EACE,WAAA;EACA,YAAA;EACA,cAAA;AAPR;AAWI;EACE,kBAAA;AATN;AAYI;EACE,eAAA;EACA,gBAAA;EACA,cAAA;EACA,gBAAA;AAVN;AAcE;EDhDA,aAAA;EACA,uBAAA;EACA,mBAAA;EACA,iBAAA;EACA,sDAAA;EACA,wDAAA;EACA,sBAAA;EACA,iBAAA;EACA,mBAAA;EACA,+DAAA;EACA,sCAAA;EACA,eAAA;EACA,0DAAA;EACA,mDAAA;ECqCE,4BAAA;EACA,6BAAA;EAEA,sCAAA;EAEA,mCAAA;AADJ;ADvCE;EACE,+CAAA;EACA,iDAAA;ACyCJ;ADtCE;EACE,gEAAA;EACA,2FAAA;EAIA,yFAAA;ACqCJ;AD/BE;EACE,iEAAA;EACA,uEAAA;ACiCJ;AD9BE;EACE,mFAAA;EAIA,mFAAA;AC6BJ;ADxBI;EACE,yFAAA;AC0BN;ADpBI;EACE,6DAAA;ACsBN;AApBa;EACP,uCAAA;AAsBN;AArBM;EACE,qBAAA;AAuBR;;AAnBI;EACE,uCAAA;EACA,mCAAA;EACA,qBAAA;AAsBN;AAnBI;EACE,kCAAA;AAqBN;AAlBI;EACE,0BAAA;EACA,2BAAA;AAoBN;AAjBI;EACE,YAAA;EACA,SAAA;EACA,UAAA;EACA,iCAAA;EACA,kCAAA;AAmBN","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../../css/variables.module\\";\\n\\n.excalidraw {\\n  .dropdown-menu {\\n    position: absolute;\\n    top: 100%;\\n    margin-top: 0.25rem;\\n\\n    &--mobile {\\n      left: 0;\\n      width: 100%;\\n      row-gap: 0.75rem;\\n\\n      .dropdown-menu-container {\\n        padding: 8px 8px;\\n        box-sizing: border-box;\\n        // background-color: var(--island-bg-color);\\n        box-shadow: var(--shadow-island);\\n        border-radius: var(--border-radius-lg);\\n        position: relative;\\n        transition: box-shadow 0.5s ease-in-out;\\n\\n        &.zen-mode {\\n          box-shadow: none;\\n        }\\n      }\\n    }\\n\\n    .dropdown-menu-container {\\n      background-color: var(--island-bg-color);\\n      max-height: calc(100vh - 150px);\\n      overflow-y: auto;\\n      --gap: 2;\\n    }\\n\\n    .dropdown-menu-item-base {\\n      display: flex;\\n      padding: 0 0.625rem;\\n      column-gap: 0.625rem;\\n      font-size: 0.875rem;\\n      color: var(--color-on-surface);\\n      width: 100%;\\n      box-sizing: border-box;\\n      font-weight: normal;\\n      font-family: inherit;\\n    }\\n\\n    .dropdown-menu-item {\\n      background-color: transparent;\\n      border: 1px solid transparent;\\n      align-items: center;\\n      height: 2rem;\\n      cursor: pointer;\\n      border-radius: var(--border-radius-md);\\n\\n      @media screen and (min-width: 1921px) {\\n        height: 2.25rem;\\n      }\\n\\n      &--selected {\\n        background: var(--color-primary-light);\\n        --icon-fill-color: var(--color-primary-darker);\\n      }\\n\\n      &__text {\\n        text-overflow: ellipsis;\\n        overflow: hidden;\\n        white-space: nowrap;\\n      }\\n\\n      &__shortcut {\\n        margin-inline-start: auto;\\n        opacity: 0.5;\\n      }\\n\\n      &:hover {\\n        background-color: var(--button-hover-bg);\\n        text-decoration: none;\\n      }\\n\\n      &:active {\\n        background-color: var(--button-hover-bg);\\n        border-color: var(--color-brand-active);\\n      }\\n\\n      svg {\\n        width: 1rem;\\n        height: 1rem;\\n        display: block;\\n      }\\n    }\\n\\n    .dropdown-menu-item-custom {\\n      margin-top: 0.5rem;\\n    }\\n\\n    .dropdown-menu-group-title {\\n      font-size: 14px;\\n      text-align: left;\\n      margin: 10px 0;\\n      font-weight: 500;\\n    }\\n  }\\n\\n  .dropdown-menu-button {\\n    @include outlineButtonStyles;\\n    width: var(--lg-button-size);\\n    height: var(--lg-button-size);\\n\\n    --background: var(--color-surface-mid);\\n\\n    background-color: var(--background);\\n\\n    @at-root .excalidraw.theme--dark#{&} {\\n      --background: var(--color-surface-high);\\n      &:hover {\\n        --background: #363541;\\n      }\\n    }\\n\\n    &:hover {\\n      --background: var(--color-surface-high);\\n      background-color: var(--background);\\n      text-decoration: none;\\n    }\\n\\n    &:active {\\n      border-color: var(--color-primary);\\n    }\\n\\n    svg {\\n      width: var(--lg-icon-size);\\n      height: var(--lg-icon-size);\\n    }\\n\\n    &--mobile {\\n      border: none;\\n      margin: 0;\\n      padding: 0;\\n      width: var(--default-button-size);\\n      height: var(--default-button-size);\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 23484 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/dropdownMenu/DropdownMenu.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/footer/FooterCenter.scss": (
              /*!****************************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/footer/FooterCenter.scss ***!
                \****************************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ".footer-center {\\n  pointer-events: none;\\n  display: flex;\\n  width: 100%;\\n  justify-content: flex-start;\\n  margin-inline-end: 0.6rem;\\n}\\n.footer-center > * {\\n  pointer-events: var(--ui-pointerEvents);\\n}", "",{"version":3,"sources":["webpack://./../../components/footer/FooterCenter.scss"],"names":[],"mappings":"AAAA;EACE,oBAAA;EAKA,aAAA;EACA,WAAA;EACA,2BAAA;EACA,yBAAA;AAHF;AAJE;EACE,uCAAA;AAMJ","sourcesContent":[".footer-center {\\n  pointer-events: none;\\n  & > * {\\n    pointer-events: var(--ui-pointerEvents);\\n  }\\n\\n  display: flex;\\n  width: 100%;\\n  justify-content: flex-start;\\n  margin-inline-end: 0.6rem;\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vY29tcG9uZW50cy9mb290ZXIvRm9vdGVyQ2VudGVyLnNjc3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNpSTtBQUNqQjtBQUNoSCw4QkFBOEIsdUdBQTJCLENBQUMsZ0hBQXFDO0FBQy9GO0FBQ0EsMERBQTBELHlCQUF5QixrQkFBa0IsZ0JBQWdCLGdDQUFnQyw4QkFBOEIsR0FBRyxzQkFBc0IsNENBQTRDLEdBQUcsT0FBTyw0R0FBNEcsV0FBVyxVQUFVLFVBQVUsV0FBVyxXQUFXLEtBQUssS0FBSyxXQUFXLHlDQUF5Qyx5QkFBeUIsV0FBVyw4Q0FBOEMsS0FBSyxvQkFBb0IsZ0JBQWdCLGdDQUFnQyw4QkFBOEIsR0FBRyxxQkFBcUI7QUFDbHJCO0FBQ0EsaUVBQWUsdUJBQXVCLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9mb290ZXIvRm9vdGVyQ2VudGVyLnNjc3M/ZGE2ZCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIuZm9vdGVyLWNlbnRlciB7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICB3aWR0aDogMTAwJTtcXG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcXG4gIG1hcmdpbi1pbmxpbmUtZW5kOiAwLjZyZW07XFxufVxcbi5mb290ZXItY2VudGVyID4gKiB7XFxuICBwb2ludGVyLWV2ZW50czogdmFyKC0tdWktcG9pbnRlckV2ZW50cyk7XFxufVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uLy4uLy4uL2NvbXBvbmVudHMvZm9vdGVyL0Zvb3RlckNlbnRlci5zY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUFBO0VBQ0Usb0JBQUE7RUFLQSxhQUFBO0VBQ0EsV0FBQTtFQUNBLDJCQUFBO0VBQ0EseUJBQUE7QUFIRjtBQUpFO0VBQ0UsdUNBQUE7QUFNSlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCIuZm9vdGVyLWNlbnRlciB7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG4gICYgPiAqIHtcXG4gICAgcG9pbnRlci1ldmVudHM6IHZhcigtLXVpLXBvaW50ZXJFdmVudHMpO1xcbiAgfVxcblxcbiAgZGlzcGxheTogZmxleDtcXG4gIHdpZHRoOiAxMDAlO1xcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xcbiAgbWFyZ2luLWlubGluZS1lbmQ6IDAuNnJlbTtcXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/footer/FooterCenter.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/live-collaboration/LiveCollaborationTrigger.scss": (
              /*!****************************************************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/live-collaboration/LiveCollaborationTrigger.scss ***!
                \****************************************************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw .collab-button {\\n  --button-bg: var(--color-primary);\\n  --button-color: white;\\n  --button-border: var(--color-primary);\\n  --button-width: var(--lg-button-size);\\n  --button-height: var(--lg-button-size);\\n  --button-hover-bg: var(--color-primary-darker);\\n  --button-hover-border: var(--color-primary-darker);\\n  --button-active-bg: var(--color-primary-darker);\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  flex-shrink: 0;\\n}\\n.excalidraw .collab-button.active.active {\\n  background-color: #0fb884;\\n  border-color: #0fb884;\\n}\\n.excalidraw .collab-button.active.active svg {\\n  color: #fff;\\n}\\n.excalidraw .collab-button.active.active:hover, .excalidraw .collab-button.active.active:active {\\n  background-color: #0fb884;\\n  border-color: #0fb884;\\n}\\n.excalidraw.theme--dark .collab-button {\\n  color: var(--color-gray-90);\\n}\\n.excalidraw .CollabButton.is-collaborating {\\n  background-color: var(--button-special-active-bg-color);\\n}\\n.excalidraw .CollabButton.is-collaborating .ToolIcon__icon svg,\\n.excalidraw .CollabButton.is-collaborating .ToolIcon__label {\\n  color: var(--icon-green-fill-color);\\n}\\n.excalidraw .CollabButton-collaborators {\\n  min-width: 1em;\\n  min-height: 1em;\\n  line-height: 1;\\n  position: absolute;\\n  bottom: -5px;\\n  padding: 3px;\\n  border-radius: 50%;\\n  background-color: #b2f2bb;\\n  color: #2b8a3e;\\n  font-size: 0.6rem;\\n  font-family: \\"Cascadia\\";\\n}\\n:root[dir=ltr] .excalidraw .CollabButton-collaborators {\\n  right: -5px;\\n}\\n:root[dir=rtl] .excalidraw .CollabButton-collaborators {\\n  left: -5px;\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../components/live-collaboration/LiveCollaborationTrigger.scss","webpack://./../../../node_modules/open-color/open-color.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AAAE;EACE,iCAAA;EACA,qBAAA;EACA,qCAAA;EAEA,qCAAA;EACA,sCAAA;EAEA,8CAAA;EACA,kDAAA;EAEA,+CAAA;EAEA,iDAAA;EAEA,cAAA;AAFJ;AAKI;EACE,yBAAA;EACA,qBAAA;AAHN;AAKM;EACE,WAAA;AAHR;AAMM;EAEE,yBAAA;EACA,qBAAA;AALR;AAWI;EACE,2BAAA;AATN;AAaE;EACE,uDAAA;AAXJ;AAaI;;EAEE,mCAAA;AAXN;AAeE;EAOE,cAAA;EACA,eAAA;EACA,cAAA;EACA,kBAAA;EACA,YAAA;EACA,YAAA;EACA,kBAAA;EACA,yBC2NS;ED1NT,cCiOS;EDhOT,iBAAA;EACA,uBAAA;AAnBJ;AAGI;EACE,WAAA;AADN;AAGI;EACE,UAAA;AADN","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../../css/variables.module\\";\\n\\n.excalidraw {\\n  .collab-button {\\n    --button-bg: var(--color-primary);\\n    --button-color: white;\\n    --button-border: var(--color-primary);\\n\\n    --button-width: var(--lg-button-size);\\n    --button-height: var(--lg-button-size);\\n\\n    --button-hover-bg: var(--color-primary-darker);\\n    --button-hover-border: var(--color-primary-darker);\\n\\n    --button-active-bg: var(--color-primary-darker);\\n\\n    box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n\\n    flex-shrink: 0;\\n\\n    // double .active to force specificity\\n    &.active.active {\\n      background-color: #0fb884;\\n      border-color: #0fb884;\\n\\n      svg {\\n        color: #fff;\\n      }\\n\\n      &:hover,\\n      &:active {\\n        background-color: #0fb884;\\n        border-color: #0fb884;\\n      }\\n    }\\n  }\\n\\n  &.theme--dark {\\n    .collab-button {\\n      color: var(--color-gray-90);\\n    }\\n  }\\n\\n  .CollabButton.is-collaborating {\\n    background-color: var(--button-special-active-bg-color);\\n\\n    .ToolIcon__icon svg,\\n    .ToolIcon__label {\\n      color: var(--icon-green-fill-color);\\n    }\\n  }\\n\\n  .CollabButton-collaborators {\\n    :root[dir=\\"ltr\\"] & {\\n      right: -5px;\\n    }\\n    :root[dir=\\"rtl\\"] & {\\n      left: -5px;\\n    }\\n    min-width: 1em;\\n    min-height: 1em;\\n    line-height: 1;\\n    position: absolute;\\n    bottom: -5px;\\n    padding: 3px;\\n    border-radius: 50%;\\n    background-color: $oc-green-2;\\n    color: $oc-green-9;\\n    font-size: 0.6rem;\\n    font-family: \\"Cascadia\\";\\n  }\\n}\\n","//\\n//\\n//  \u{1D5D6} \u{1D5E2} \u{1D5DF} \u{1D5E2} \u{1D5E5}\\n//  v 1.9.1\\n//\\n//  \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\\n\\n\\n//  General\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-white:         #ffffff;\\n$oc-black:         #000000;\\n\\n\\n//  Gray\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-gray-list: (\\n  \\"0\\": #f8f9fa,\\n  \\"1\\": #f1f3f5,\\n  \\"2\\": #e9ecef,\\n  \\"3\\": #dee2e6,\\n  \\"4\\": #ced4da,\\n  \\"5\\": #adb5bd,\\n  \\"6\\": #868e96,\\n  \\"7\\": #495057,\\n  \\"8\\": #343a40,\\n  \\"9\\": #212529\\n);\\n\\n$oc-gray-0: map-get($oc-gray-list, \\"0\\");\\n$oc-gray-1: map-get($oc-gray-list, \\"1\\");\\n$oc-gray-2: map-get($oc-gray-list, \\"2\\");\\n$oc-gray-3: map-get($oc-gray-list, \\"3\\");\\n$oc-gray-4: map-get($oc-gray-list, \\"4\\");\\n$oc-gray-5: map-get($oc-gray-list, \\"5\\");\\n$oc-gray-6: map-get($oc-gray-list, \\"6\\");\\n$oc-gray-7: map-get($oc-gray-list, \\"7\\");\\n$oc-gray-8: map-get($oc-gray-list, \\"8\\");\\n$oc-gray-9: map-get($oc-gray-list, \\"9\\");\\n\\n\\n//  Red\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-red-list: (\\n  \\"0\\": #fff5f5,\\n  \\"1\\": #ffe3e3,\\n  \\"2\\": #ffc9c9,\\n  \\"3\\": #ffa8a8,\\n  \\"4\\": #ff8787,\\n  \\"5\\": #ff6b6b,\\n  \\"6\\": #fa5252,\\n  \\"7\\": #f03e3e,\\n  \\"8\\": #e03131,\\n  \\"9\\": #c92a2a\\n);\\n\\n$oc-red-0: map-get($oc-red-list, \\"0\\");\\n$oc-red-1: map-get($oc-red-list, \\"1\\");\\n$oc-red-2: map-get($oc-red-list, \\"2\\");\\n$oc-red-3: map-get($oc-red-list, \\"3\\");\\n$oc-red-4: map-get($oc-red-list, \\"4\\");\\n$oc-red-5: map-get($oc-red-list, \\"5\\");\\n$oc-red-6: map-get($oc-red-list, \\"6\\");\\n$oc-red-7: map-get($oc-red-list, \\"7\\");\\n$oc-red-8: map-get($oc-red-list, \\"8\\");\\n$oc-red-9: map-get($oc-red-list, \\"9\\");\\n\\n\\n//  Pink\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-pink-list: (\\n  \\"0\\": #fff0f6,\\n  \\"1\\": #ffdeeb,\\n  \\"2\\": #fcc2d7,\\n  \\"3\\": #faa2c1,\\n  \\"4\\": #f783ac,\\n  \\"5\\": #f06595,\\n  \\"6\\": #e64980,\\n  \\"7\\": #d6336c,\\n  \\"8\\": #c2255c,\\n  \\"9\\": #a61e4d\\n);\\n\\n$oc-pink-0: map-get($oc-pink-list, \\"0\\");\\n$oc-pink-1: map-get($oc-pink-list, \\"1\\");\\n$oc-pink-2: map-get($oc-pink-list, \\"2\\");\\n$oc-pink-3: map-get($oc-pink-list, \\"3\\");\\n$oc-pink-4: map-get($oc-pink-list, \\"4\\");\\n$oc-pink-5: map-get($oc-pink-list, \\"5\\");\\n$oc-pink-6: map-get($oc-pink-list, \\"6\\");\\n$oc-pink-7: map-get($oc-pink-list, \\"7\\");\\n$oc-pink-8: map-get($oc-pink-list, \\"8\\");\\n$oc-pink-9: map-get($oc-pink-list, \\"9\\");\\n\\n\\n//  Grape\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-grape-list: (\\n  \\"0\\": #f8f0fc,\\n  \\"1\\": #f3d9fa,\\n  \\"2\\": #eebefa,\\n  \\"3\\": #e599f7,\\n  \\"4\\": #da77f2,\\n  \\"5\\": #cc5de8,\\n  \\"6\\": #be4bdb,\\n  \\"7\\": #ae3ec9,\\n  \\"8\\": #9c36b5,\\n  \\"9\\": #862e9c\\n);\\n\\n$oc-grape-0: map-get($oc-grape-list, \\"0\\");\\n$oc-grape-1: map-get($oc-grape-list, \\"1\\");\\n$oc-grape-2: map-get($oc-grape-list, \\"2\\");\\n$oc-grape-3: map-get($oc-grape-list, \\"3\\");\\n$oc-grape-4: map-get($oc-grape-list, \\"4\\");\\n$oc-grape-5: map-get($oc-grape-list, \\"5\\");\\n$oc-grape-6: map-get($oc-grape-list, \\"6\\");\\n$oc-grape-7: map-get($oc-grape-list, \\"7\\");\\n$oc-grape-8: map-get($oc-grape-list, \\"8\\");\\n$oc-grape-9: map-get($oc-grape-list, \\"9\\");\\n\\n\\n//  Violet\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-violet-list: (\\n  \\"0\\": #f3f0ff,\\n  \\"1\\": #e5dbff,\\n  \\"2\\": #d0bfff,\\n  \\"3\\": #b197fc,\\n  \\"4\\": #9775fa,\\n  \\"5\\": #845ef7,\\n  \\"6\\": #7950f2,\\n  \\"7\\": #7048e8,\\n  \\"8\\": #6741d9,\\n  \\"9\\": #5f3dc4\\n);\\n\\n$oc-violet-0: map-get($oc-violet-list, \\"0\\");\\n$oc-violet-1: map-get($oc-violet-list, \\"1\\");\\n$oc-violet-2: map-get($oc-violet-list, \\"2\\");\\n$oc-violet-3: map-get($oc-violet-list, \\"3\\");\\n$oc-violet-4: map-get($oc-violet-list, \\"4\\");\\n$oc-violet-5: map-get($oc-violet-list, \\"5\\");\\n$oc-violet-6: map-get($oc-violet-list, \\"6\\");\\n$oc-violet-7: map-get($oc-violet-list, \\"7\\");\\n$oc-violet-8: map-get($oc-violet-list, \\"8\\");\\n$oc-violet-9: map-get($oc-violet-list, \\"9\\");\\n\\n\\n//  Indigo\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-indigo-list: (\\n  \\"0\\": #edf2ff,\\n  \\"1\\": #dbe4ff,\\n  \\"2\\": #bac8ff,\\n  \\"3\\": #91a7ff,\\n  \\"4\\": #748ffc,\\n  \\"5\\": #5c7cfa,\\n  \\"6\\": #4c6ef5,\\n  \\"7\\": #4263eb,\\n  \\"8\\": #3b5bdb,\\n  \\"9\\": #364fc7\\n);\\n\\n$oc-indigo-0: map-get($oc-indigo-list, \\"0\\");\\n$oc-indigo-1: map-get($oc-indigo-list, \\"1\\");\\n$oc-indigo-2: map-get($oc-indigo-list, \\"2\\");\\n$oc-indigo-3: map-get($oc-indigo-list, \\"3\\");\\n$oc-indigo-4: map-get($oc-indigo-list, \\"4\\");\\n$oc-indigo-5: map-get($oc-indigo-list, \\"5\\");\\n$oc-indigo-6: map-get($oc-indigo-list, \\"6\\");\\n$oc-indigo-7: map-get($oc-indigo-list, \\"7\\");\\n$oc-indigo-8: map-get($oc-indigo-list, \\"8\\");\\n$oc-indigo-9: map-get($oc-indigo-list, \\"9\\");\\n\\n\\n//  Blue\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-blue-list: (\\n  \\"0\\": #e7f5ff,\\n  \\"1\\": #d0ebff,\\n  \\"2\\": #a5d8ff,\\n  \\"3\\": #74c0fc,\\n  \\"4\\": #4dabf7,\\n  \\"5\\": #339af0,\\n  \\"6\\": #228be6,\\n  \\"7\\": #1c7ed6,\\n  \\"8\\": #1971c2,\\n  \\"9\\": #1864ab\\n);\\n\\n$oc-blue-0: map-get($oc-blue-list, \\"0\\");\\n$oc-blue-1: map-get($oc-blue-list, \\"1\\");\\n$oc-blue-2: map-get($oc-blue-list, \\"2\\");\\n$oc-blue-3: map-get($oc-blue-list, \\"3\\");\\n$oc-blue-4: map-get($oc-blue-list, \\"4\\");\\n$oc-blue-5: map-get($oc-blue-list, \\"5\\");\\n$oc-blue-6: map-get($oc-blue-list, \\"6\\");\\n$oc-blue-7: map-get($oc-blue-list, \\"7\\");\\n$oc-blue-8: map-get($oc-blue-list, \\"8\\");\\n$oc-blue-9: map-get($oc-blue-list, \\"9\\");\\n\\n\\n//  Cyan\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-cyan-list: (\\n  \\"0\\": #e3fafc,\\n  \\"1\\": #c5f6fa,\\n  \\"2\\": #99e9f2,\\n  \\"3\\": #66d9e8,\\n  \\"4\\": #3bc9db,\\n  \\"5\\": #22b8cf,\\n  \\"6\\": #15aabf,\\n  \\"7\\": #1098ad,\\n  \\"8\\": #0c8599,\\n  \\"9\\": #0b7285\\n);\\n\\n$oc-cyan-0: map-get($oc-cyan-list, \\"0\\");\\n$oc-cyan-1: map-get($oc-cyan-list, \\"1\\");\\n$oc-cyan-2: map-get($oc-cyan-list, \\"2\\");\\n$oc-cyan-3: map-get($oc-cyan-list, \\"3\\");\\n$oc-cyan-4: map-get($oc-cyan-list, \\"4\\");\\n$oc-cyan-5: map-get($oc-cyan-list, \\"5\\");\\n$oc-cyan-6: map-get($oc-cyan-list, \\"6\\");\\n$oc-cyan-7: map-get($oc-cyan-list, \\"7\\");\\n$oc-cyan-8: map-get($oc-cyan-list, \\"8\\");\\n$oc-cyan-9: map-get($oc-cyan-list, \\"9\\");\\n\\n\\n//  Teal\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-teal-list: (\\n  \\"0\\": #e6fcf5,\\n  \\"1\\": #c3fae8,\\n  \\"2\\": #96f2d7,\\n  \\"3\\": #63e6be,\\n  \\"4\\": #38d9a9,\\n  \\"5\\": #20c997,\\n  \\"6\\": #12b886,\\n  \\"7\\": #0ca678,\\n  \\"8\\": #099268,\\n  \\"9\\": #087f5b\\n);\\n\\n$oc-teal-0: map-get($oc-teal-list, \\"0\\");\\n$oc-teal-1: map-get($oc-teal-list, \\"1\\");\\n$oc-teal-2: map-get($oc-teal-list, \\"2\\");\\n$oc-teal-3: map-get($oc-teal-list, \\"3\\");\\n$oc-teal-4: map-get($oc-teal-list, \\"4\\");\\n$oc-teal-5: map-get($oc-teal-list, \\"5\\");\\n$oc-teal-6: map-get($oc-teal-list, \\"6\\");\\n$oc-teal-7: map-get($oc-teal-list, \\"7\\");\\n$oc-teal-8: map-get($oc-teal-list, \\"8\\");\\n$oc-teal-9: map-get($oc-teal-list, \\"9\\");\\n\\n\\n//  Green\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-green-list: (\\n  \\"0\\": #ebfbee,\\n  \\"1\\": #d3f9d8,\\n  \\"2\\": #b2f2bb,\\n  \\"3\\": #8ce99a,\\n  \\"4\\": #69db7c,\\n  \\"5\\": #51cf66,\\n  \\"6\\": #40c057,\\n  \\"7\\": #37b24d,\\n  \\"8\\": #2f9e44,\\n  \\"9\\": #2b8a3e\\n);\\n\\n$oc-green-0: map-get($oc-green-list, \\"0\\");\\n$oc-green-1: map-get($oc-green-list, \\"1\\");\\n$oc-green-2: map-get($oc-green-list, \\"2\\");\\n$oc-green-3: map-get($oc-green-list, \\"3\\");\\n$oc-green-4: map-get($oc-green-list, \\"4\\");\\n$oc-green-5: map-get($oc-green-list, \\"5\\");\\n$oc-green-6: map-get($oc-green-list, \\"6\\");\\n$oc-green-7: map-get($oc-green-list, \\"7\\");\\n$oc-green-8: map-get($oc-green-list, \\"8\\");\\n$oc-green-9: map-get($oc-green-list, \\"9\\");\\n\\n\\n//  Lime\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-lime-list: (\\n  \\"0\\": #f4fce3,\\n  \\"1\\": #e9fac8,\\n  \\"2\\": #d8f5a2,\\n  \\"3\\": #c0eb75,\\n  \\"4\\": #a9e34b,\\n  \\"5\\": #94d82d,\\n  \\"6\\": #82c91e,\\n  \\"7\\": #74b816,\\n  \\"8\\": #66a80f,\\n  \\"9\\": #5c940d\\n);\\n\\n$oc-lime-0: map-get($oc-lime-list, \\"0\\");\\n$oc-lime-1: map-get($oc-lime-list, \\"1\\");\\n$oc-lime-2: map-get($oc-lime-list, \\"2\\");\\n$oc-lime-3: map-get($oc-lime-list, \\"3\\");\\n$oc-lime-4: map-get($oc-lime-list, \\"4\\");\\n$oc-lime-5: map-get($oc-lime-list, \\"5\\");\\n$oc-lime-6: map-get($oc-lime-list, \\"6\\");\\n$oc-lime-7: map-get($oc-lime-list, \\"7\\");\\n$oc-lime-8: map-get($oc-lime-list, \\"8\\");\\n$oc-lime-9: map-get($oc-lime-list, \\"9\\");\\n\\n\\n//  Yellow\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-yellow-list: (\\n  \\"0\\": #fff9db,\\n  \\"1\\": #fff3bf,\\n  \\"2\\": #ffec99,\\n  \\"3\\": #ffe066,\\n  \\"4\\": #ffd43b,\\n  \\"5\\": #fcc419,\\n  \\"6\\": #fab005,\\n  \\"7\\": #f59f00,\\n  \\"8\\": #f08c00,\\n  \\"9\\": #e67700\\n);\\n\\n$oc-yellow-0: map-get($oc-yellow-list, \\"0\\");\\n$oc-yellow-1: map-get($oc-yellow-list, \\"1\\");\\n$oc-yellow-2: map-get($oc-yellow-list, \\"2\\");\\n$oc-yellow-3: map-get($oc-yellow-list, \\"3\\");\\n$oc-yellow-4: map-get($oc-yellow-list, \\"4\\");\\n$oc-yellow-5: map-get($oc-yellow-list, \\"5\\");\\n$oc-yellow-6: map-get($oc-yellow-list, \\"6\\");\\n$oc-yellow-7: map-get($oc-yellow-list, \\"7\\");\\n$oc-yellow-8: map-get($oc-yellow-list, \\"8\\");\\n$oc-yellow-9: map-get($oc-yellow-list, \\"9\\");\\n\\n\\n//  Orange\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-orange-list: (\\n  \\"0\\": #fff4e6,\\n  \\"1\\": #ffe8cc,\\n  \\"2\\": #ffd8a8,\\n  \\"3\\": #ffc078,\\n  \\"4\\": #ffa94d,\\n  \\"5\\": #ff922b,\\n  \\"6\\": #fd7e14,\\n  \\"7\\": #f76707,\\n  \\"8\\": #e8590c,\\n  \\"9\\": #d9480f\\n);\\n\\n$oc-orange-0: map-get($oc-orange-list, \\"0\\");\\n$oc-orange-1: map-get($oc-orange-list, \\"1\\");\\n$oc-orange-2: map-get($oc-orange-list, \\"2\\");\\n$oc-orange-3: map-get($oc-orange-list, \\"3\\");\\n$oc-orange-4: map-get($oc-orange-list, \\"4\\");\\n$oc-orange-5: map-get($oc-orange-list, \\"5\\");\\n$oc-orange-6: map-get($oc-orange-list, \\"6\\");\\n$oc-orange-7: map-get($oc-orange-list, \\"7\\");\\n$oc-orange-8: map-get($oc-orange-list, \\"8\\");\\n$oc-orange-9: map-get($oc-orange-list, \\"9\\");\\n\\n\\n//  Color list\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-color-spectrum:   9;\\n\\n$oc-color-list: (\\n  $oc-gray-list:      \\"gray\\",\\n  $oc-red-list:      \\"red\\",\\n  $oc-pink-list:      \\"pink\\",\\n  $oc-grape-list:      \\"grape\\",\\n  $oc-violet-list:      \\"violet\\",\\n  $oc-indigo-list:      \\"indigo\\",\\n  $oc-blue-list:      \\"blue\\",\\n  $oc-cyan-list:      \\"cyan\\",\\n  $oc-teal-list:      \\"teal\\",\\n  $oc-green-list:      \\"green\\",\\n  $oc-lime-list:      \\"lime\\",\\n  $oc-yellow-list:      \\"yellow\\",\\n  $oc-orange-list:      \\"orange\\"\\n);\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 31904 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/live-collaboration/LiveCollaborationTrigger.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/main-menu/DefaultItems.scss": (
              /*!*******************************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/main-menu/DefaultItems.scss ***!
                \*******************************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ".excalidraw .ActiveFile .ActiveFile__fileName {\\n  display: flex;\\n  align-items: center;\\n}\\n.excalidraw .ActiveFile .ActiveFile__fileName span {\\n  text-overflow: ellipsis;\\n  overflow: hidden;\\n  white-space: nowrap;\\n  width: 9.3em;\\n}\\n.excalidraw .ActiveFile .ActiveFile__fileName svg {\\n  width: 1.15em;\\n  margin-inline-end: 0.3em;\\n  transform: scaleY(0.9);\\n}", "",{"version":3,"sources":["webpack://./../../components/main-menu/DefaultItems.scss"],"names":[],"mappings":"AAEI;EACE,aAAA;EACA,mBAAA;AADN;AAGM;EACE,uBAAA;EACA,gBAAA;EACA,mBAAA;EACA,YAAA;AADR;AAIM;EACE,aAAA;EACA,wBAAA;EACA,sBAAA;AAFR","sourcesContent":[".excalidraw {\\n  .ActiveFile {\\n    .ActiveFile__fileName {\\n      display: flex;\\n      align-items: center;\\n\\n      span {\\n        text-overflow: ellipsis;\\n        overflow: hidden;\\n        white-space: nowrap;\\n        width: 9.3em;\\n      }\\n\\n      svg {\\n        width: 1.15em;\\n        margin-inline-end: 0.3em;\\n        transform: scaleY(0.9);\\n      }\\n    }\\n  }\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vY29tcG9uZW50cy9tYWluLW1lbnUvRGVmYXVsdEl0ZW1zLnNjc3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNpSTtBQUNqQjtBQUNoSCw4QkFBOEIsdUdBQTJCLENBQUMsZ0hBQXFDO0FBQy9GO0FBQ0EseUZBQXlGLGtCQUFrQix3QkFBd0IsR0FBRyxzREFBc0QsNEJBQTRCLHFCQUFxQix3QkFBd0IsaUJBQWlCLEdBQUcscURBQXFELGtCQUFrQiw2QkFBNkIsMkJBQTJCLEdBQUcsT0FBTywrR0FBK0csVUFBVSxXQUFXLEtBQUssS0FBSyxXQUFXLFdBQVcsV0FBVyxVQUFVLEtBQUssS0FBSyxVQUFVLFdBQVcsV0FBVyxzQ0FBc0MsaUJBQWlCLDZCQUE2QixzQkFBc0IsNEJBQTRCLGdCQUFnQixrQ0FBa0MsMkJBQTJCLDhCQUE4Qix1QkFBdUIsU0FBUyxlQUFlLHdCQUF3QixtQ0FBbUMsaUNBQWlDLFNBQVMsT0FBTyxLQUFLLEdBQUcscUJBQXFCO0FBQzlpQztBQUNBLGlFQUFlLHVCQUF1QixFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvbWFpbi1tZW51L0RlZmF1bHRJdGVtcy5zY3NzPzYwNTkiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLmV4Y2FsaWRyYXcgLkFjdGl2ZUZpbGUgLkFjdGl2ZUZpbGVfX2ZpbGVOYW1lIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbn1cXG4uZXhjYWxpZHJhdyAuQWN0aXZlRmlsZSAuQWN0aXZlRmlsZV9fZmlsZU5hbWUgc3BhbiB7XFxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xcbiAgd2lkdGg6IDkuM2VtO1xcbn1cXG4uZXhjYWxpZHJhdyAuQWN0aXZlRmlsZSAuQWN0aXZlRmlsZV9fZmlsZU5hbWUgc3ZnIHtcXG4gIHdpZHRoOiAxLjE1ZW07XFxuICBtYXJnaW4taW5saW5lLWVuZDogMC4zZW07XFxuICB0cmFuc2Zvcm06IHNjYWxlWSgwLjkpO1xcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi8uLi8uLi9jb21wb25lbnRzL21haW4tbWVudS9EZWZhdWx0SXRlbXMuc2Nzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFFSTtFQUNFLGFBQUE7RUFDQSxtQkFBQTtBQUROO0FBR007RUFDRSx1QkFBQTtFQUNBLGdCQUFBO0VBQ0EsbUJBQUE7RUFDQSxZQUFBO0FBRFI7QUFJTTtFQUNFLGFBQUE7RUFDQSx3QkFBQTtFQUNBLHNCQUFBO0FBRlJcIixcInNvdXJjZXNDb250ZW50XCI6W1wiLmV4Y2FsaWRyYXcge1xcbiAgLkFjdGl2ZUZpbGUge1xcbiAgICAuQWN0aXZlRmlsZV9fZmlsZU5hbWUge1xcbiAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG5cXG4gICAgICBzcGFuIHtcXG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuICAgICAgICB3aWR0aDogOS4zZW07XFxuICAgICAgfVxcblxcbiAgICAgIHN2ZyB7XFxuICAgICAgICB3aWR0aDogMS4xNWVtO1xcbiAgICAgICAgbWFyZ2luLWlubGluZS1lbmQ6IDAuM2VtO1xcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVkoMC45KTtcXG4gICAgICB9XFxuICAgIH1cXG4gIH1cXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/main-menu/DefaultItems.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/welcome-screen/WelcomeScreen.scss": (
              /*!*************************************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/welcome-screen/WelcomeScreen.scss ***!
                \*************************************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ".excalidraw .virgil {\\n  font-family: \\"Virgil\\";\\n}\\n.excalidraw .welcome-screen-decor {\\n  pointer-events: none;\\n  color: var(--color-gray-40);\\n}\\n.excalidraw .welcome-screen-decor a {\\n  --color: var(--color-primary);\\n  color: var(--color);\\n  text-decoration: none;\\n  margin-bottom: -6px;\\n}\\n.excalidraw.theme--dark .welcome-screen-decor {\\n  color: var(--color-gray-60);\\n}\\n@media (max-height: 599px) {\\n  .excalidraw .welcome-screen-decor-hint {\\n    display: none !important;\\n  }\\n}\\n@media (max-width: 1024px), (max-width: 800px) {\\n  .excalidraw .welcome-screen-decor-hint .welcome-screen-decor--help, .excalidraw .welcome-screen-decor-hint .welcome-screen-decor--menu {\\n    display: none;\\n  }\\n}\\n.excalidraw .welcome-screen-decor-hint--help {\\n  display: flex;\\n  position: absolute;\\n  right: 0;\\n  bottom: 100%;\\n}\\n:root[dir=rtl] .excalidraw .welcome-screen-decor-hint--help {\\n  left: 0;\\n  right: auto;\\n}\\n.excalidraw .welcome-screen-decor-hint--help svg {\\n  margin-top: 0.5rem;\\n  width: 85px;\\n  height: 71px;\\n  transform: scaleX(-1) rotate(80deg);\\n}\\n:root[dir=rtl] .excalidraw .welcome-screen-decor-hint--help svg {\\n  transform: rotate(80deg);\\n}\\n.excalidraw .welcome-screen-decor-hint--toolbar {\\n  position: absolute;\\n  top: 100%;\\n  left: 50%;\\n  transform: translateX(-50%);\\n  margin-top: 2.5rem;\\n  display: flex;\\n  align-items: baseline;\\n}\\n.excalidraw .welcome-screen-decor-hint--toolbar .welcome-screen-decor-hint__label {\\n  width: 120px;\\n  position: relative;\\n  top: -0.5rem;\\n}\\n.excalidraw .welcome-screen-decor-hint--toolbar svg {\\n  width: 38px;\\n  height: 78px;\\n}\\n:root[dir=rtl] .excalidraw .welcome-screen-decor-hint--toolbar svg {\\n  transform: scaleX(-1);\\n}\\n.excalidraw .welcome-screen-decor-hint--menu {\\n  position: absolute;\\n  width: 320px;\\n  font-size: 1rem;\\n  top: 100%;\\n  margin-top: 0.25rem;\\n  margin-inline-start: 0.6rem;\\n  display: flex;\\n  align-items: flex-end;\\n  gap: 0.5rem;\\n}\\n.excalidraw .welcome-screen-decor-hint--menu svg {\\n  width: 41px;\\n  height: 94px;\\n}\\n:root[dir=rtl] .excalidraw .welcome-screen-decor-hint--menu svg {\\n  transform: scaleX(-1);\\n}\\n@media (max-width: 860px) {\\n  .excalidraw .welcome-screen-decor-hint--menu .welcome-screen-decor-hint__label {\\n    max-width: 160px;\\n  }\\n}\\n.excalidraw .welcome-screen-center {\\n  display: flex;\\n  flex-direction: column;\\n  gap: 2rem;\\n  justify-content: center;\\n  align-items: center;\\n  position: absolute;\\n  pointer-events: none;\\n  left: 1rem;\\n  top: 1rem;\\n  right: 1rem;\\n  bottom: 1rem;\\n}\\n.excalidraw .welcome-screen-center__logo {\\n  display: flex;\\n  align-items: center;\\n  column-gap: 0.75rem;\\n  font-size: 2.25rem;\\n}\\n.excalidraw .welcome-screen-center__heading {\\n  font-size: 1.125rem;\\n  text-align: center;\\n}\\n.excalidraw .welcome-screen-menu {\\n  display: flex;\\n  flex-direction: column;\\n  gap: 2px;\\n  justify-content: center;\\n  align-items: center;\\n}\\n.excalidraw .welcome-screen-menu-item {\\n  box-sizing: border-box;\\n  pointer-events: var(--ui-pointerEvents);\\n  color: var(--color-gray-50);\\n  font-size: 0.875rem;\\n  width: 100%;\\n  min-width: 300px;\\n  max-width: 400px;\\n  display: grid;\\n  align-items: center;\\n  justify-content: space-between;\\n  background: none;\\n  border: 1px solid transparent;\\n  padding: 0.75rem;\\n  border-radius: var(--border-radius-md);\\n  grid-template-columns: calc(var(--default-icon-size) + 0.5rem) 1fr 3rem;\\n}\\n.excalidraw .welcome-screen-menu-item__text {\\n  display: flex;\\n  align-items: center;\\n  margin-right: auto;\\n  text-align: left;\\n  column-gap: 0.5rem;\\n}\\n.excalidraw .welcome-screen-menu-item__icon {\\n  width: var(--default-icon-size);\\n  height: var(--default-icon-size);\\n}\\n.excalidraw .welcome-screen-menu-item__shortcut {\\n  margin-left: auto;\\n  color: var(--color-gray-40);\\n  font-size: 0.75rem;\\n}\\n.excalidraw .welcome-screen-menu-item:hover {\\n  text-decoration: none;\\n  background: var(--button-hover-bg);\\n}\\n.excalidraw .welcome-screen-menu-item:hover .welcome-screen-menu-item__shortcut {\\n  color: var(--color-gray-50);\\n}\\n.excalidraw .welcome-screen-menu-item:hover .welcome-screen-menu-item__text {\\n  color: var(--color-gray-100);\\n}\\n.excalidraw .welcome-screen-menu-item:active {\\n  background: var(--button-hover-bg);\\n  border-color: var(--color-brand-active);\\n}\\n.excalidraw .welcome-screen-menu-item:active .welcome-screen-menu-item__shortcut {\\n  color: var(--color-gray-50);\\n}\\n.excalidraw .welcome-screen-menu-item:active .welcome-screen-menu-item__text {\\n  color: var(--color-gray-100);\\n}\\n.excalidraw .welcome-screen-menu-item:active--promo {\\n  color: var(--color-promo) !important;\\n}\\n.excalidraw .welcome-screen-menu-item:active--promo:hover .welcome-screen-menu-item__text {\\n  color: var(--color-promo) !important;\\n}\\n.excalidraw.theme--dark .welcome-screen-menu-item {\\n  color: var(--color-gray-60);\\n}\\n.excalidraw.theme--dark .welcome-screen-menu-item__shortcut {\\n  color: var(--color-gray-60);\\n}\\n.excalidraw.theme--dark .welcome-screen-menu-item:hover {\\n  background-color: var(--color-surface-low);\\n}\\n.excalidraw.theme--dark .welcome-screen-menu-item:hover .welcome-screen-menu-item__shortcut {\\n  color: var(--color-gray-50);\\n}\\n.excalidraw.theme--dark .welcome-screen-menu-item:hover .welcome-screen-menu-item__text {\\n  color: var(--color-gray-10);\\n}\\n.excalidraw.theme--dark .welcome-screen-menu-item:active .welcome-screen-menu-item__text {\\n  color: var(--color-gray-10);\\n}\\n@media (max-height: 599px) {\\n  .excalidraw .welcome-screen-center {\\n    margin-top: 4rem;\\n  }\\n}\\n@media (min-height: 600px) and (max-height: 900px) {\\n  .excalidraw .welcome-screen-center {\\n    margin-top: 8rem;\\n  }\\n}\\n@media (max-height: 500px), (max-width: 320px) {\\n  .excalidraw .welcome-screen-center {\\n    display: none;\\n  }\\n}", "",{"version":3,"sources":["webpack://./../../components/welcome-screen/WelcomeScreen.scss"],"names":[],"mappings":"AACE;EACE,qBAAA;AAAJ;AAME;EACE,oBAAA;EAEA,2BAAA;AALJ;AAOI;EACE,6BAAA;EACA,mBAAA;EACA,qBAAA;EACA,mBAAA;AALN;AAUI;EACE,2BAAA;AARN;AAgBI;EADF;IAEI,wBAAA;EAbJ;AACF;AAeI;EAEI;IAEE,aAAA;EAfR;AACF;AAmBI;EACE,aAAA;EACA,kBAAA;EACA,QAAA;EACA,YAAA;AAjBN;AAmBM;EACE,OAAA;EACA,WAAA;AAjBR;AAoBM;EACE,kBAAA;EACA,WAAA;EACA,YAAA;EAEA,mCAAA;AAnBR;AAqBQ;EACE,wBAAA;AAnBV;AAwBI;EACE,kBAAA;EACA,SAAA;EACA,SAAA;EACA,2BAAA;EACA,kBAAA;EACA,aAAA;EACA,qBAAA;AAtBN;AAwBM;EACE,YAAA;EACA,kBAAA;EACA,YAAA;AAtBR;AAyBM;EACE,WAAA;EACA,YAAA;AAvBR;AAyBQ;EACE,qBAAA;AAvBV;AA4BI;EACE,kBAAA;EACA,YAAA;EACA,eAAA;EAEA,SAAA;EACA,mBAAA;EACA,2BAAA;EAEA,aAAA;EACA,qBAAA;EACA,WAAA;AA5BN;AA8BM;EACE,WAAA;EACA,YAAA;AA5BR;AA8BQ;EACE,qBAAA;AA5BV;AAgCM;EACE;IACE,gBAAA;EA9BR;AACF;AAsCE;EACE,aAAA;EACA,sBAAA;EACA,SAAA;EACA,uBAAA;EACA,mBAAA;EACA,kBAAA;EACA,oBAAA;EACA,UAAA;EACA,SAAA;EACA,WAAA;EACA,YAAA;AApCJ;AAuCE;EACE,aAAA;EACA,mBAAA;EACA,mBAAA;EACA,kBAAA;AArCJ;AAwCE;EACE,mBAAA;EACA,kBAAA;AAtCJ;AAyCE;EACE,aAAA;EACA,sBAAA;EACA,QAAA;EACA,uBAAA;EACA,mBAAA;AAvCJ;AA0CE;EACE,sBAAA;EAEA,uCAAA;EAEA,2BAAA;EACA,mBAAA;EAEA,WAAA;EACA,gBAAA;EACA,gBAAA;EACA,aAAA;EACA,mBAAA;EACA,8BAAA;EAEA,gBAAA;EACA,6BAAA;EAEA,gBAAA;EAEA,sCAAA;EAEA,uEAAA;AA/CJ;AAiDI;EACE,aAAA;EACA,mBAAA;EACA,kBAAA;EACA,gBAAA;EACA,kBAAA;AA/CN;AAkDI;EACE,+BAAA;EACA,gCAAA;AAhDN;AAmDI;EACE,iBAAA;EACA,2BAAA;EACA,kBAAA;AAjDN;AAqDE;EACE,qBAAA;EACA,kCAAA;AAnDJ;AAqDI;EACE,2BAAA;AAnDN;AAsDI;EACE,4BAAA;AApDN;AAwDE;EACE,kCAAA;EACA,uCAAA;AAtDJ;AAwDI;EACE,2BAAA;AAtDN;AAyDI;EACE,4BAAA;AAvDN;AA0DI;EACE,oCAAA;AAxDN;AA2DQ;EACE,oCAAA;AAzDV;AAgEI;EACE,2BAAA;AA9DN;AAgEM;EACE,2BAAA;AA9DR;AAkEI;EACE,0CAAA;AAhEN;AAiEM;EACE,2BAAA;AA/DR;AAkEM;EACE,2BAAA;AAhER;AAqEM;EACE,2BAAA;AAnER;AAwEE;EACE;IACE,gBAAA;EAtEJ;AACF;AAwEE;EACE;IACE,gBAAA;EAtEJ;AACF;AAwEE;EACE;IACE,aAAA;EAtEJ;AACF","sourcesContent":[".excalidraw {\\n  .virgil {\\n    font-family: \\"Virgil\\";\\n  }\\n\\n  // WelcomeSreen common\\n  // ---------------------------------------------------------------------------\\n\\n  .welcome-screen-decor {\\n    pointer-events: none;\\n\\n    color: var(--color-gray-40);\\n\\n    a {\\n      --color: var(--color-primary);\\n      color: var(--color);\\n      text-decoration: none;\\n      margin-bottom: -6px;\\n    }\\n  }\\n\\n  &.theme--dark {\\n    .welcome-screen-decor {\\n      color: var(--color-gray-60);\\n    }\\n  }\\n\\n  // WelcomeScreen.Hints\\n  // ---------------------------------------------------------------------------\\n\\n  .welcome-screen-decor-hint {\\n    @media (max-height: 599px) {\\n      display: none !important;\\n    }\\n\\n    @media (max-width: 1024px), (max-width: 800px) {\\n      .welcome-screen-decor {\\n        &--help,\\n        &--menu {\\n          display: none;\\n        }\\n      }\\n    }\\n\\n    &--help {\\n      display: flex;\\n      position: absolute;\\n      right: 0;\\n      bottom: 100%;\\n\\n      :root[dir=\\"rtl\\"] & {\\n        left: 0;\\n        right: auto;\\n      }\\n\\n      svg {\\n        margin-top: 0.5rem;\\n        width: 85px;\\n        height: 71px;\\n\\n        transform: scaleX(-1) rotate(80deg);\\n\\n        :root[dir=\\"rtl\\"] & {\\n          transform: rotate(80deg);\\n        }\\n      }\\n    }\\n\\n    &--toolbar {\\n      position: absolute;\\n      top: 100%;\\n      left: 50%;\\n      transform: translateX(-50%);\\n      margin-top: 2.5rem;\\n      display: flex;\\n      align-items: baseline;\\n\\n      .welcome-screen-decor-hint__label {\\n        width: 120px;\\n        position: relative;\\n        top: -0.5rem;\\n      }\\n\\n      svg {\\n        width: 38px;\\n        height: 78px;\\n\\n        :root[dir=\\"rtl\\"] & {\\n          transform: scaleX(-1);\\n        }\\n      }\\n    }\\n\\n    &--menu {\\n      position: absolute;\\n      width: 320px;\\n      font-size: 1rem;\\n\\n      top: 100%;\\n      margin-top: 0.25rem;\\n      margin-inline-start: 0.6rem;\\n\\n      display: flex;\\n      align-items: flex-end;\\n      gap: 0.5rem;\\n\\n      svg {\\n        width: 41px;\\n        height: 94px;\\n\\n        :root[dir=\\"rtl\\"] & {\\n          transform: scaleX(-1);\\n        }\\n      }\\n\\n      @media (max-width: 860px) {\\n        .welcome-screen-decor-hint__label {\\n          max-width: 160px;\\n        }\\n      }\\n    }\\n  }\\n\\n  // WelcomeSreen.Center\\n  // ---------------------------------------------------------------------------\\n\\n  .welcome-screen-center {\\n    display: flex;\\n    flex-direction: column;\\n    gap: 2rem;\\n    justify-content: center;\\n    align-items: center;\\n    position: absolute;\\n    pointer-events: none;\\n    left: 1rem;\\n    top: 1rem;\\n    right: 1rem;\\n    bottom: 1rem;\\n  }\\n\\n  .welcome-screen-center__logo {\\n    display: flex;\\n    align-items: center;\\n    column-gap: 0.75rem;\\n    font-size: 2.25rem;\\n  }\\n\\n  .welcome-screen-center__heading {\\n    font-size: 1.125rem;\\n    text-align: center;\\n  }\\n\\n  .welcome-screen-menu {\\n    display: flex;\\n    flex-direction: column;\\n    gap: 2px;\\n    justify-content: center;\\n    align-items: center;\\n  }\\n\\n  .welcome-screen-menu-item {\\n    box-sizing: border-box;\\n\\n    pointer-events: var(--ui-pointerEvents);\\n\\n    color: var(--color-gray-50);\\n    font-size: 0.875rem;\\n\\n    width: 100%;\\n    min-width: 300px;\\n    max-width: 400px;\\n    display: grid;\\n    align-items: center;\\n    justify-content: space-between;\\n\\n    background: none;\\n    border: 1px solid transparent;\\n\\n    padding: 0.75rem;\\n\\n    border-radius: var(--border-radius-md);\\n\\n    grid-template-columns: calc(var(--default-icon-size) + 0.5rem) 1fr 3rem;\\n\\n    &__text {\\n      display: flex;\\n      align-items: center;\\n      margin-right: auto;\\n      text-align: left;\\n      column-gap: 0.5rem;\\n    }\\n\\n    &__icon {\\n      width: var(--default-icon-size);\\n      height: var(--default-icon-size);\\n    }\\n\\n    &__shortcut {\\n      margin-left: auto;\\n      color: var(--color-gray-40);\\n      font-size: 0.75rem;\\n    }\\n  }\\n\\n  .welcome-screen-menu-item:hover {\\n    text-decoration: none;\\n    background: var(--button-hover-bg);\\n\\n    .welcome-screen-menu-item__shortcut {\\n      color: var(--color-gray-50);\\n    }\\n\\n    .welcome-screen-menu-item__text {\\n      color: var(--color-gray-100);\\n    }\\n  }\\n\\n  .welcome-screen-menu-item:active {\\n    background: var(--button-hover-bg);\\n    border-color: var(--color-brand-active);\\n\\n    .welcome-screen-menu-item__shortcut {\\n      color: var(--color-gray-50);\\n    }\\n\\n    .welcome-screen-menu-item__text {\\n      color: var(--color-gray-100);\\n    }\\n\\n    &--promo {\\n      color: var(--color-promo) !important;\\n\\n      &:hover {\\n        .welcome-screen-menu-item__text {\\n          color: var(--color-promo) !important;\\n        }\\n      }\\n    }\\n  }\\n\\n  &.theme--dark {\\n    .welcome-screen-menu-item {\\n      color: var(--color-gray-60);\\n\\n      &__shortcut {\\n        color: var(--color-gray-60);\\n      }\\n    }\\n\\n    .welcome-screen-menu-item:hover {\\n      background-color: var(--color-surface-low);\\n      .welcome-screen-menu-item__shortcut {\\n        color: var(--color-gray-50);\\n      }\\n\\n      .welcome-screen-menu-item__text {\\n        color: var(--color-gray-10);\\n      }\\n    }\\n\\n    .welcome-screen-menu-item:active {\\n      .welcome-screen-menu-item__text {\\n        color: var(--color-gray-10);\\n      }\\n    }\\n  }\\n\\n  @media (max-height: 599px) {\\n    .welcome-screen-center {\\n      margin-top: 4rem;\\n    }\\n  }\\n  @media (min-height: 600px) and (max-height: 900px) {\\n    .welcome-screen-center {\\n      margin-top: 8rem;\\n    }\\n  }\\n  @media (max-height: 500px), (max-width: 320px) {\\n    .welcome-screen-center {\\n      display: none;\\n    }\\n  }\\n\\n  // ---------------------------------------------------------------------------\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 25252 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/welcome-screen/WelcomeScreen.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../css/app.scss": (
              /*!*****************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../css/app.scss ***!
                \*****************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ".visually-hidden {\\n  position: absolute !important;\\n  height: 1px;\\n  width: 1px;\\n  overflow: hidden;\\n  clip: rect(1px, 1px, 1px, 1px);\\n  white-space: nowrap;\\n  /* added line */\\n  user-select: none;\\n}\\n\\n.LoadingMessage {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  z-index: 999;\\n  display: flex;\\n  flex-direction: column;\\n  align-items: center;\\n  justify-content: center;\\n  pointer-events: none;\\n}\\n.LoadingMessage .Spinner {\\n  font-size: 2.8em;\\n}\\n.LoadingMessage .LoadingMessage-text {\\n  margin-top: 1em;\\n  font-size: 0.8em;\\n}\\n\\n.LoadingMessage--dark {\\n  background-color: #121212;\\n  color: #ced4da;\\n}", "",{"version":3,"sources":["webpack://./../../css/app.scss"],"names":[],"mappings":"AAEA;EACE,6BAAA;EACA,WAAA;EACA,UAAA;EACA,gBAAA;EACA,8BAAA;EACA,mBAAA;EAAqB,eAAA;EACrB,iBAAA;AAAF;;AAGA;EACE,kBAAA;EACA,MAAA;EACA,QAAA;EACA,SAAA;EACA,OAAA;EACA,YAAA;EACA,aAAA;EACA,sBAAA;EACA,mBAAA;EACA,uBAAA;EACA,oBAAA;AAAF;AAEE;EACE,gBAAA;AAAJ;AAGE;EACE,eAAA;EACA,gBAAA;AADJ;;AAKA;EACE,yBAAA;EACA,cAAA;AAFF","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n.visually-hidden {\\n  position: absolute !important;\\n  height: 1px;\\n  width: 1px;\\n  overflow: hidden;\\n  clip: rect(1px, 1px, 1px, 1px);\\n  white-space: nowrap; /* added line */\\n  user-select: none;\\n}\\n\\n.LoadingMessage {\\n  position: absolute;\\n  top: 0;\\n  right: 0;\\n  bottom: 0;\\n  left: 0;\\n  z-index: 999;\\n  display: flex;\\n  flex-direction: column;\\n  align-items: center;\\n  justify-content: center;\\n  pointer-events: none;\\n\\n  .Spinner {\\n    font-size: 2.8em;\\n  }\\n\\n  .LoadingMessage-text {\\n    margin-top: 1em;\\n    font-size: 0.8em;\\n  }\\n}\\n\\n.LoadingMessage--dark {\\n  background-color: #121212;\\n  color: #ced4da;\\n}\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4472 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../css/app.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../css/styles.scss": (
              /*!********************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../css/styles.scss ***!
                \********************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");
/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");
/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/getUrl.js */ "./node_modules/css-loader/dist/runtime/getUrl.js");
/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__);
// Imports



var ___CSS_LOADER_URL_IMPORT_0___ = new URL(/* asset import */ __webpack_require__(/*! data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="292.4" height="292.4" viewBox="0 0 292 292"><path d="M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z"/></svg> */ "data:image/svg+xml,<svg xmlns=\\"http://www.w3.org/2000/svg\\" width=\\"292.4\\" height=\\"292.4\\" viewBox=\\"0 0 292 292\\"><path d=\\"M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z\\"/></svg>"), __webpack_require__.b);
var ___CSS_LOADER_URL_IMPORT_1___ = new URL(/* asset import */ __webpack_require__(/*! data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="292.4" height="292.4" viewBox="0 0 292 292"><path fill="%23ced4da" d="M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z"/></svg> */ "data:image/svg+xml,<svg xmlns=\\"http://www.w3.org/2000/svg\\" width=\\"292.4\\" height=\\"292.4\\" viewBox=\\"0 0 292 292\\"><path fill=\\"%23ced4da\\" d=\\"M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z\\"/></svg>"), __webpack_require__.b);
var ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
var ___CSS_LOADER_URL_REPLACEMENT_0___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_0___);
var ___CSS_LOADER_URL_REPLACEMENT_1___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_1___);
// Module
___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n:export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw {\\n  --theme-filter: none;\\n  --button-destructive-bg-color: #ffe3e3;\\n  --button-destructive-color: #c92a2a;\\n  --button-gray-1: #e9ecef;\\n  --button-gray-2: #ced4da;\\n  --button-gray-3: #adb5bd;\\n  --button-special-active-bg-color: #ebfbee;\\n  --dialog-border-color: var(--color-gray-20);\\n  --dropdown-icon: url(" + ___CSS_LOADER_URL_REPLACEMENT_0___ + ");\\n  --focus-highlight-color: #a5d8ff;\\n  --icon-fill-color: var(--color-on-surface);\\n  --icon-green-fill-color: #2b8a3e;\\n  --default-bg-color: #ffffff;\\n  --input-bg-color: #ffffff;\\n  --input-border-color: #ced4da;\\n  --input-hover-bg-color: #f1f3f5;\\n  --input-label-color: #495057;\\n  --island-bg-color: #ffffff;\\n  --keybinding-color: var(--color-gray-40);\\n  --link-color: #1c7ed6;\\n  --overlay-bg-color: rgba(255, 255, 255, 0.88);\\n  --popup-bg-color: var(--island-bg-color);\\n  --popup-secondary-bg-color: #f1f3f5;\\n  --popup-text-color: #000000;\\n  --popup-text-inverted-color: #ffffff;\\n  --select-highlight-color: #339af0;\\n  --shadow-island: 0px 0px 0.9310142993927002px 0px rgba(0, 0, 0, 0.17),\\n    0px 0px 3.1270833015441895px 0px rgba(0, 0, 0, 0.08),\\n    0px 7px 14px 0px rgba(0, 0, 0, 0.05);\\n  --button-hover-bg: var(--color-surface-high);\\n  --button-active-bg: var(--color-surface-high);\\n  --button-active-border: var(--color-brand-active);\\n  --default-border-color: var(--color-surface-high);\\n  --default-button-size: 2rem;\\n  --default-icon-size: 1rem;\\n  --lg-button-size: 2.25rem;\\n  --lg-icon-size: 1rem;\\n  --editor-container-padding: 1rem;\\n  --scrollbar-thumb: var(--button-gray-2);\\n  --scrollbar-thumb-hover: var(--button-gray-3);\\n  --modal-shadow: 0px 100px 80px rgba(0, 0, 0, 0.07),\\n    0px 41.7776px 33.4221px rgba(0, 0, 0, 0.0503198),\\n    0px 22.3363px 17.869px rgba(0, 0, 0, 0.0417275),\\n    0px 12.5216px 10.0172px rgba(0, 0, 0, 0.035),\\n    0px 6.6501px 5.32008px rgba(0, 0, 0, 0.0282725),\\n    0px 2.76726px 2.21381px rgba(0, 0, 0, 0.0196802);\\n  --avatar-border-color: var(--color-gray-20);\\n  --sidebar-shadow: 0px 100px 80px rgba(0, 0, 0, 0.07),\\n    0px 41.7776px 33.4221px rgba(0, 0, 0, 0.0503198),\\n    0px 22.3363px 17.869px rgba(0, 0, 0, 0.0417275),\\n    0px 12.5216px 10.0172px rgba(0, 0, 0, 0.035),\\n    0px 6.6501px 5.32008px rgba(0, 0, 0, 0.0282725),\\n    0px 2.76726px 2.21381px rgba(0, 0, 0, 0.0196802);\\n  --sidebar-border-color: var(--color-surface-high);\\n  --sidebar-bg-color: var(--island-bg-color);\\n  --library-dropdown-shadow: 0px 15px 6px rgba(0, 0, 0, 0.01),\\n    0px 8px 5px rgba(0, 0, 0, 0.05), 0px 4px 4px rgba(0, 0, 0, 0.09),\\n    0px 1px 2px rgba(0, 0, 0, 0.1), 0px 0px 0px rgba(0, 0, 0, 0.1);\\n  --space-factor: 0.25rem;\\n  --text-primary-color: var(--color-on-surface);\\n  --color-selection: #6965db;\\n  --color-icon-white: #ffffff;\\n  --color-primary: #6965db;\\n  --color-primary-darker: #5b57d1;\\n  --color-primary-darkest: #4a47b1;\\n  --color-primary-light: #e3e2fe;\\n  --color-primary-light-darker: #d7d5ff;\\n  --color-gray-10: #f5f5f5;\\n  --color-gray-20: #ebebeb;\\n  --color-gray-30: #d6d6d6;\\n  --color-gray-40: #b8b8b8;\\n  --color-gray-50: #999999;\\n  --color-gray-60: #7a7a7a;\\n  --color-gray-70: #5c5c5c;\\n  --color-gray-80: #3d3d3d;\\n  --color-gray-85: #242424;\\n  --color-gray-90: #1e1e1e;\\n  --color-gray-100: #121212;\\n  --color-warning: #fceeca;\\n  --color-warning-dark: #f5c354;\\n  --color-warning-darker: #f3ab2c;\\n  --color-warning-darkest: #ec8b14;\\n  --color-text-warning: var(--text-primary-color);\\n  --color-danger: #db6965;\\n  --color-danger-dark: #db6965;\\n  --color-danger-darker: #d65550;\\n  --color-danger-darkest: #d1413c;\\n  --color-danger-text: black;\\n  --color-danger-background: #fff0f0;\\n  --color-danger-icon-background: #ffdad6;\\n  --color-danger-color: #700000;\\n  --color-danger-icon-color: #700000;\\n  --color-warning-background: var(--color-warning);\\n  --color-warning-icon-background: var(--color-warning-dark);\\n  --color-warning-color: var(--text-primary-color);\\n  --color-warning-icon-color: var(--text-primary-color);\\n  --color-muted: var(--color-gray-30);\\n  --color-muted-darker: var(--color-gray-60);\\n  --color-muted-darkest: var(--color-gray-100);\\n  --color-muted-background: var(--color-gray-80);\\n  --color-muted-background-darker: var(--color-gray-100);\\n  --color-promo: #e70078;\\n  --color-success: #268029;\\n  --color-success-lighter: #cafccc;\\n  --color-logo-icon: var(--color-primary);\\n  --color-logo-text: #190064;\\n  --border-radius-md: 0.375rem;\\n  --border-radius-lg: 0.5rem;\\n  --color-surface-high: hsl(244, 100%, 97%);\\n  --color-surface-mid: hsl(240 25% 96%);\\n  --color-surface-low: hsl(240 25% 94%);\\n  --color-surface-lowest: #ffffff;\\n  --color-on-surface: #1b1b1f;\\n  --color-brand-hover: #5753d0;\\n  --color-on-primary-container: #030064;\\n  --color-surface-primary-container: #e0dfff;\\n  --color-brand-active: #4440bf;\\n  --color-border-outline: #767680;\\n  --color-border-outline-variant: #c5c5d0;\\n  --color-surface-primary-container: #e0dfff;\\n}\\n@media screen and (min-device-width: 1921px) {\\n  .excalidraw {\\n    --lg-button-size: 2.5rem;\\n    --lg-icon-size: 1.25rem;\\n    --default-button-size: 2.25rem;\\n    --default-icon-size: 1.25rem;\\n  }\\n}\\n.excalidraw.theme--dark.theme--dark-background-none {\\n  background: none;\\n}\\n.excalidraw.theme--dark {\\n  --theme-filter: invert(93%) hue-rotate(180deg);\\n  --button-destructive-bg-color: #5a0000;\\n  --button-destructive-color: #ffa8a8;\\n  --button-gray-1: #363636;\\n  --button-gray-2: #272727;\\n  --button-gray-3: #222;\\n  --button-special-active-bg-color: #204624;\\n  --dialog-border-color: var(--color-gray-80);\\n  --dropdown-icon: url(" + ___CSS_LOADER_URL_REPLACEMENT_1___ + ");\\n  --focus-highlight-color: #228be6;\\n  --icon-green-fill-color: #69db7c;\\n  --default-bg-color: #121212;\\n  --input-bg-color: #121212;\\n  --input-border-color: #2e2e2e;\\n  --input-hover-bg-color: #181818;\\n  --input-label-color: #e9ecef;\\n  --island-bg-color: #232329;\\n  --keybinding-color: var(--color-gray-60);\\n  --link-color: #4dabf7;\\n  --overlay-bg-color: rgba(52, 58, 64, 0.12);\\n  --popup-secondary-bg-color: #222;\\n  --popup-text-color: #ced4da;\\n  --popup-text-inverted-color: #2c2c2c;\\n  --select-highlight-color: #4dabf7;\\n  --shadow-island: 0px 0px 0.9310142993927002px 0px rgba(0, 0, 0, 0.17),\\n    0px 0px 3.1270833015441895px 0px rgba(0, 0, 0, 0.08),\\n    0px 7px 14px 0px rgba(0, 0, 0, 0.05);\\n  --modal-shadow: 0px 100px 80px rgba(0, 0, 0, 0.07),\\n    0px 41.7776px 33.4221px rgba(0, 0, 0, 0.0503198),\\n    0px 22.3363px 17.869px rgba(0, 0, 0, 0.0417275),\\n    0px 12.5216px 10.0172px rgba(0, 0, 0, 0.035),\\n    0px 6.6501px 5.32008px rgba(0, 0, 0, 0.0282725),\\n    0px 2.76726px 2.21381px rgba(0, 0, 0, 0.0196802);\\n  --avatar-border-color: var(--color-gray-85);\\n  --scrollbar-thumb: #343a40;\\n  --scrollbar-thumb-hover: #495057;\\n  --color-selection: #3530c4;\\n  --color-icon-white: var(--color-gray-90);\\n  --color-primary: #a8a5ff;\\n  --color-primary-darker: #b2aeff;\\n  --color-primary-darkest: #beb9ff;\\n  --color-primary-light: #4f4d6f;\\n  --color-primary-light-darker: #43415e;\\n  --color-text-warning: var(--color-gray-80);\\n  --color-danger: #ffa8a5;\\n  --color-danger-dark: #672120;\\n  --color-danger-darker: #8f2625;\\n  --color-danger-darkest: #ac2b29;\\n  --color-danger-text: #fbcbcc;\\n  --color-danger-background: #fbcbcc;\\n  --color-danger-icon-background: #672120;\\n  --color-danger-color: #261919;\\n  --color-danger-icon-color: #fbcbcc;\\n  --color-warning-background: var(--color-warning);\\n  --color-warning-icon-background: var(--color-warning-dark);\\n  --color-warning-color: var(--color-gray-80);\\n  --color-warning-icon-color: var(--color-gray-80);\\n  --color-muted: var(--color-gray-80);\\n  --color-muted-darker: var(--color-gray-60);\\n  --color-muted-darkest: var(--color-gray-20);\\n  --color-muted-background: var(--color-gray-40);\\n  --color-muted-background-darker: var(--color-gray-20);\\n  --color-promo: #d297ff;\\n  --color-logo-text: #e2dfff;\\n  --color-surface-high: hsl(245, 10%, 21%);\\n  --color-surface-low: hsl(240, 8%, 15%);\\n  --color-surface-mid: hsl(240 6% 10%);\\n  --color-surface-lowest: hsl(0, 0%, 7%);\\n  --color-on-surface: #e3e3e8;\\n  --color-brand-hover: #bbb8ff;\\n  --color-on-primary-container: #e0dfff;\\n  --color-surface-primary-container: #403e6a;\\n  --color-brand-active: #d0ccff;\\n  --color-border-outline: #8e8d9c;\\n  --color-border-outline-variant: #46464f;\\n  --color-surface-primary-container: #403e6a;\\n}\\n\\n:root {\\n  --zIndex-canvas: 1;\\n  --zIndex-interactiveCanvas: 2;\\n  --zIndex-wysiwyg: 3;\\n  --zIndex-layerUI: 4;\\n  --zIndex-eyeDropperBackdrop: 5;\\n  --zIndex-eyeDropperPreview: 6;\\n  --zIndex-modal: 1000;\\n  --zIndex-popup: 1001;\\n  --zIndex-toast: 999999;\\n  --sab: env(safe-area-inset-bottom);\\n  --sal: env(safe-area-inset-left);\\n  --sar: env(safe-area-inset-right);\\n  --sat: env(safe-area-inset-top);\\n}\\n\\n.excalidraw {\\n  --ui-font: Assistant, system-ui, BlinkMacSystemFont, -apple-system, Segoe UI,\\n    Roboto, Helvetica, Arial, sans-serif;\\n  font-family: var(--ui-font);\\n  position: relative;\\n  overflow: hidden;\\n  color: var(--text-primary-color);\\n  display: flex;\\n  top: 0;\\n  bottom: 0;\\n  left: 0;\\n  right: 0;\\n  height: 100%;\\n  width: 100%;\\n  user-select: none;\\n}\\n.excalidraw button {\\n  cursor: pointer;\\n}\\n.excalidraw:focus {\\n  outline: none;\\n}\\n.excalidraw a {\\n  font-weight: 500;\\n  text-decoration: none;\\n  color: var(--link-color);\\n}\\n.excalidraw a:hover {\\n  text-decoration: underline;\\n}\\n.excalidraw canvas {\\n  touch-action: none;\\n  image-rendering: pixelated;\\n  image-rendering: -moz-crisp-edges;\\n  z-index: var(--zIndex-canvas);\\n}\\n.excalidraw canvas.interactive {\\n  z-index: var(--zIndex-interactiveCanvas);\\n}\\n.excalidraw__canvas-wrapper, .excalidraw__canvas.static {\\n  pointer-events: none;\\n}\\n.excalidraw__canvas {\\n  position: absolute;\\n}\\n.excalidraw__embeddable {\\n  width: 100%;\\n  height: 100%;\\n  border: 0;\\n}\\n.excalidraw__embeddable-container {\\n  position: absolute;\\n  z-index: 2;\\n  transform-origin: top left;\\n  pointer-events: none;\\n}\\n.excalidraw.theme--dark canvas {\\n  filter: var(--theme-filter);\\n}\\n.excalidraw .FixedSideContainer {\\n  padding-top: var(--sat, 0);\\n  padding-right: var(--sar, 0);\\n  padding-bottom: var(--sab, 0);\\n  padding-left: var(--sal, 0);\\n}\\n.excalidraw .panelRow {\\n  display: flex;\\n  justify-content: space-between;\\n}\\n.excalidraw .panelColumn {\\n  display: flex;\\n  flex-direction: column;\\n  row-gap: 0.75rem;\\n}\\n.excalidraw .panelColumn h3,\\n.excalidraw .panelColumn legend,\\n.excalidraw .panelColumn .control-label {\\n  margin: 0;\\n  margin-bottom: 0.25rem;\\n  font-size: 0.75rem;\\n  color: var(--text-primary-color);\\n  font-weight: normal;\\n  display: block;\\n}\\n.excalidraw .panelColumn .control-label input {\\n  display: block;\\n  width: 100%;\\n}\\n.excalidraw .panelColumn legend {\\n  padding: 0;\\n}\\n.excalidraw .panelColumn .iconSelectList {\\n  flex-wrap: wrap;\\n  position: relative;\\n}\\n.excalidraw .panelColumn .buttonList {\\n  flex-wrap: wrap;\\n  display: flex;\\n  column-gap: 0.5rem;\\n  row-gap: 0.5rem;\\n}\\n.excalidraw .panelColumn .buttonList label {\\n  font-size: 0.75rem;\\n}\\n.excalidraw .panelColumn .buttonList input[type=radio],\\n.excalidraw .panelColumn .buttonList input[type=button] {\\n  opacity: 0;\\n  position: absolute;\\n  pointer-events: none;\\n}\\n.excalidraw .panelColumn .buttonList .iconRow {\\n  margin-top: 8px;\\n}\\n.excalidraw .panelColumn fieldset {\\n  margin: 0;\\n  padding: 0;\\n  border: none;\\n}\\n.excalidraw .divider {\\n  width: 1px;\\n  background-color: #e9ecef;\\n  margin: 1px;\\n}\\n.excalidraw .welcome-screen-menu-item:focus-visible,\\n.excalidraw .dropdown-menu-item:focus-visible,\\n.excalidraw button:focus-visible,\\n.excalidraw .buttonList label:focus-within,\\n.excalidraw input:focus-visible {\\n  outline: transparent;\\n  box-shadow: 0 0 0 1px var(--color-brand-hover);\\n}\\n.excalidraw .buttonList .ToolIcon__icon {\\n  all: unset !important;\\n  display: flex !important;\\n}\\n.excalidraw .buttonList button {\\n  background-color: transparent;\\n}\\n.excalidraw .buttonList label,\\n.excalidraw .buttonList button,\\n.excalidraw .buttonList .zIndexButton {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n  padding: 0;\\n}\\n.excalidraw .buttonList label svg,\\n.excalidraw .buttonList button svg,\\n.excalidraw .buttonList .zIndexButton svg {\\n  width: var(--button-width, var(--lg-icon-size));\\n  height: var(--button-height, var(--lg-icon-size));\\n}\\n.excalidraw .buttonList label:hover,\\n.excalidraw .buttonList button:hover,\\n.excalidraw .buttonList .zIndexButton:hover {\\n  background-color: var(--button-hover-bg, var(--island-bg-color));\\n  border-color: var(--button-hover-border, var(--button-border, var(--default-border-color)));\\n  color: var(--button-hover-color, var(--button-color, var(--text-primary-color, inherit)));\\n}\\n.excalidraw .buttonList label:active,\\n.excalidraw .buttonList button:active,\\n.excalidraw .buttonList .zIndexButton:active {\\n  background-color: var(--button-active-bg, var(--island-bg-color));\\n  border-color: var(--button-active-border, var(--color-primary-darkest));\\n}\\n.excalidraw .buttonList label.active,\\n.excalidraw .buttonList button.active,\\n.excalidraw .buttonList .zIndexButton.active {\\n  background-color: var(--button-selected-bg, var(--color-surface-primary-container));\\n  border-color: var(--button-selected-border, var(--color-surface-primary-container));\\n}\\n.excalidraw .buttonList label.active:hover,\\n.excalidraw .buttonList button.active:hover,\\n.excalidraw .buttonList .zIndexButton.active:hover {\\n  background-color: var(--button-selected-hover-bg, var(--color-surface-primary-container));\\n}\\n.excalidraw .buttonList label.active svg,\\n.excalidraw .buttonList button.active svg,\\n.excalidraw .buttonList .zIndexButton.active svg {\\n  color: var(--button-color, var(--color-on-primary-container));\\n}\\n.excalidraw .buttonList label svg,\\n.excalidraw .buttonList button svg,\\n.excalidraw .buttonList .zIndexButton svg {\\n  width: var(--default-icon-size);\\n  height: var(--default-icon-size);\\n}\\n.excalidraw .App-top-bar {\\n  z-index: var(--zIndex-layerUI);\\n  display: flex;\\n  flex-direction: column;\\n  align-items: center;\\n}\\n.excalidraw .App-bottom-bar {\\n  position: absolute;\\n  top: 0;\\n  bottom: 0;\\n  left: 0;\\n  right: 0;\\n  --bar-padding: calc(4 * var(--space-factor));\\n  padding-top: max(var(--bar-padding), var(--sat,0));\\n  padding-right: var(--sar, 0);\\n  padding-bottom: var(--sab, 0);\\n  padding-left: var(--sal, 0);\\n  z-index: 4;\\n  display: flex;\\n  align-items: flex-end;\\n  pointer-events: none;\\n}\\n.excalidraw .App-bottom-bar > .Island {\\n  width: 100%;\\n  max-width: 100%;\\n  min-width: 100%;\\n  box-sizing: border-box;\\n  max-height: 100%;\\n  display: flex;\\n  flex-direction: column;\\n  pointer-events: var(--ui-pointerEvents);\\n}\\n.excalidraw .App-bottom-bar > .Island .panelColumn {\\n  padding: 8px 8px 0 8px;\\n}\\n.excalidraw .App-toolbar {\\n  width: 100%;\\n}\\n.excalidraw .App-toolbar .eraser.ToolIcon:hover {\\n  --icon-fill-color: #fff;\\n  --keybinding-color: #fff;\\n}\\n.excalidraw .App-toolbar .eraser.active {\\n  background-color: var(--color-primary);\\n}\\n.excalidraw .App-toolbar-content {\\n  display: flex;\\n  align-items: center;\\n  justify-content: space-between;\\n  padding: 8px;\\n}\\n.excalidraw .App-toolbar-content .dropdown-menu--mobile {\\n  bottom: 55px;\\n  top: auto;\\n}\\n.excalidraw .App-mobile-menu {\\n  width: 100%;\\n  overflow-x: visible;\\n  overflow-y: auto;\\n  box-sizing: border-box;\\n  margin-bottom: var(--bar-padding);\\n}\\n.excalidraw .App-menu {\\n  display: grid;\\n  color: var(--icon-fill-color);\\n}\\n.excalidraw .shapes-section {\\n  display: flex;\\n  justify-content: center;\\n  pointer-events: none !important;\\n}\\n.excalidraw .shapes-section > * {\\n  pointer-events: var(--ui-pointerEvents);\\n}\\n.excalidraw .App-menu_top {\\n  grid-template-columns: 1fr 2fr 1fr;\\n  grid-gap: 2rem;\\n  align-items: flex-start;\\n  cursor: default;\\n  pointer-events: none !important;\\n}\\n.excalidraw .App-menu_top > * {\\n  pointer-events: var(--ui-pointerEvents);\\n}\\n@media (min-width: 1536px) {\\n  .excalidraw .App-menu_top {\\n    grid-template-columns: 1fr 1fr 1fr;\\n    grid-gap: 3rem;\\n  }\\n}\\n.excalidraw .App-menu_top > *:first-child {\\n  justify-self: flex-start;\\n}\\n.excalidraw .App-menu_top > *:last-child {\\n  justify-self: flex-end;\\n}\\n.excalidraw .App-menu_bottom {\\n  position: absolute;\\n  bottom: 1rem;\\n  display: flex;\\n  justify-content: space-between;\\n  align-items: flex-start;\\n  cursor: default;\\n  pointer-events: none !important;\\n  box-sizing: border-box;\\n  padding: 0 1rem;\\n}\\n.excalidraw .App-menu_bottom--transition-left section {\\n  width: 185px;\\n}\\n.excalidraw .App-menu_bottom section {\\n  display: flex;\\n}\\n.excalidraw .App-menu_bottom > *:first-child {\\n  justify-self: flex-start;\\n}\\n.excalidraw .App-menu_bottom > *:last-child {\\n  justify-self: flex-end;\\n}\\n.excalidraw .App-menu_left {\\n  grid-template-rows: 1fr auto 1fr;\\n  height: 100%;\\n}\\n.excalidraw .App-menu_right {\\n  grid-template-rows: 1fr;\\n  height: 100%;\\n}\\n.excalidraw .App-menu__left {\\n  overflow-y: auto;\\n  padding: 0.75rem;\\n  width: 202px;\\n  box-sizing: border-box;\\n  position: absolute;\\n}\\n.excalidraw .dropdown-select {\\n  height: 1.5rem;\\n  padding: 0;\\n  padding-inline-start: 0.5rem;\\n  padding-inline-end: 1.5rem;\\n  color: var(--icon-fill-color);\\n  background-color: var(--button-gray-1);\\n  border-radius: var(--space-factor);\\n  border: 1px solid var(--button-gray-2);\\n  font-size: 0.8rem;\\n  font-family: inherit;\\n  outline: none;\\n  appearance: none;\\n  background-image: var(--dropdown-icon);\\n  background-repeat: no-repeat;\\n  background-position: right 0.7rem top 50%, 0 0;\\n  background-size: 0.65em auto, 100%;\\n}\\n:root[dir=rtl] .excalidraw .dropdown-select {\\n  background-position: left 0.7rem top 50%, 0 0;\\n}\\n.excalidraw .dropdown-select:focus {\\n  box-shadow: 0 0 0 2px var(--focus-highlight-color);\\n}\\n.excalidraw .dropdown-select:hover {\\n  background-color: var(--button-gray-2);\\n}\\n.excalidraw .dropdown-select:active {\\n  background-color: var(--button-gray-2);\\n}\\n.excalidraw .dropdown-select__language {\\n  height: 2rem;\\n  background-color: var(--island-bg-color);\\n  border-color: var(--default-border-color) !important;\\n  cursor: pointer;\\n}\\n.excalidraw .dropdown-select__language:hover {\\n  background-color: var(--island-bg-color);\\n}\\n.excalidraw .scroll-back-to-content {\\n  border-radius: var(--border-radius-lg);\\n  background-color: var(--island-bg-color);\\n  color: var(--icon-fill-color);\\n  border: 1px solid var(--default-border-color);\\n  padding: 10px 20px;\\n  position: absolute;\\n  left: 50%;\\n  bottom: 30px;\\n  transform: translateX(-50%);\\n  pointer-events: var(--ui-pointerEvents);\\n  font-family: inherit;\\n}\\n.excalidraw .scroll-back-to-content:hover {\\n  background-color: var(--button-hover-bg);\\n}\\n.excalidraw .scroll-back-to-content:active {\\n  border: 1px solid var(--button-active-border);\\n}\\n.excalidraw .help-icon {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n  width: var(--lg-button-size);\\n  height: var(--lg-button-size);\\n}\\n.excalidraw .help-icon svg {\\n  width: var(--button-width, var(--lg-icon-size));\\n  height: var(--button-height, var(--lg-icon-size));\\n}\\n.excalidraw .help-icon:hover {\\n  background-color: var(--button-hover-bg, var(--island-bg-color));\\n  border-color: var(--button-hover-border, var(--button-border, var(--default-border-color)));\\n  color: var(--button-hover-color, var(--button-color, var(--text-primary-color, inherit)));\\n}\\n.excalidraw .help-icon:active {\\n  background-color: var(--button-active-bg, var(--island-bg-color));\\n  border-color: var(--button-active-border, var(--color-primary-darkest));\\n}\\n.excalidraw .help-icon.active {\\n  background-color: var(--button-selected-bg, var(--color-surface-primary-container));\\n  border-color: var(--button-selected-border, var(--color-surface-primary-container));\\n}\\n.excalidraw .help-icon.active:hover {\\n  background-color: var(--button-selected-hover-bg, var(--color-surface-primary-container));\\n}\\n.excalidraw .help-icon.active svg {\\n  color: var(--button-color, var(--color-on-primary-container));\\n}\\n.excalidraw .help-icon:active {\\n  box-shadow: 0 0 0 1px var(--color-brand-active);\\n}\\n.excalidraw .help-icon svg {\\n  width: var(--lg-icon-size);\\n  height: var(--lg-icon-size);\\n}\\n.excalidraw .reset-zoom-button {\\n  font-family: var(--ui-font);\\n}\\n.excalidraw .finalize-button {\\n  display: grid;\\n  grid-auto-flow: column;\\n  gap: 0.4em;\\n  margin-top: auto;\\n  margin-bottom: auto;\\n  margin-inline-start: 0.6em;\\n}\\n.excalidraw .undo-redo-buttons,\\n.excalidraw .eraser-buttons {\\n  display: grid;\\n  grid-auto-flow: column;\\n  margin-top: auto;\\n  margin-bottom: auto;\\n  margin-inline-start: 0.6em;\\n}\\n.excalidraw--mobile.excalidraw aside {\\n  display: none;\\n}\\n.excalidraw--mobile.excalidraw .scroll-back-to-content {\\n  bottom: calc(80px + var(--sab, 0));\\n  z-index: -1;\\n}\\n\\n:root[dir=rtl] .excalidraw .rtl-mirror {\\n  transform: scaleX(-1);\\n}\\n.excalidraw .zen-mode-visibility {\\n  visibility: visible;\\n  opacity: 1;\\n  height: auto;\\n  width: auto;\\n  transition: opacity 0.5s;\\n}\\n.excalidraw .zen-mode-visibility.zen-mode-visibility--hidden {\\n  visibility: hidden;\\n  opacity: 0;\\n  height: 0;\\n  width: 0;\\n  transition: opacity 0.5s;\\n}\\n.excalidraw .disable-pointerEvents {\\n  pointer-events: none !important;\\n}\\n.excalidraw.excalidraw--view-mode .App-menu {\\n  display: flex;\\n  justify-content: space-between;\\n}\\n.excalidraw input[type=text],\\n.excalidraw textarea:not(.excalidraw-wysiwyg) {\\n  color: var(--text-primary-color);\\n  border: 1.5px solid var(--input-border-color);\\n  padding: 0.75rem;\\n  white-space: nowrap;\\n  border-radius: var(--space-factor);\\n  background-color: var(--input-bg-color);\\n}\\n.excalidraw input[type=text]:not(:focus):hover,\\n.excalidraw textarea:not(.excalidraw-wysiwyg):not(:focus):hover {\\n  border-color: var(--color-brand-hover);\\n}\\n.excalidraw input[type=text]:focus,\\n.excalidraw textarea:not(.excalidraw-wysiwyg):focus {\\n  outline: none;\\n  border-color: var(--color-brand-hover);\\n}\\n@media print {\\n  .excalidraw .App-bottom-bar,\\n.excalidraw .FixedSideContainer,\\n.excalidraw .layer-ui__wrapper {\\n    display: none;\\n  }\\n}\\n.excalidraw ::-webkit-scrollbar {\\n  width: 3px;\\n  height: 3px;\\n}\\n.excalidraw select::-webkit-scrollbar {\\n  width: 10px;\\n}\\n.excalidraw ::-webkit-scrollbar-thumb {\\n  background: var(--scrollbar-thumb);\\n  border-radius: 10px;\\n}\\n.excalidraw ::-webkit-scrollbar-thumb:hover {\\n  background: var(--scrollbar-thumb-hover);\\n}\\n.excalidraw ::-webkit-scrollbar-thumb:active {\\n  background: var(--scrollbar-thumb);\\n}\\n.excalidraw .mobile-misc-tools-container {\\n  position: absolute;\\n  top: calc(5rem - var(--editor-container-padding));\\n  right: calc(var(--editor-container-padding) * -1);\\n  display: flex;\\n  flex-direction: column;\\n  border: 1px solid var(--sidebar-border-color);\\n  border-top-left-radius: var(--border-radius-lg);\\n  border-bottom-left-radius: var(--border-radius-lg);\\n  border-right: 0;\\n  overflow: hidden;\\n  background-color: var(--island-bg-color);\\n}\\n.excalidraw .mobile-misc-tools-container .ToolIcon__icon {\\n  width: 2rem;\\n  height: 2rem;\\n  border-radius: 0;\\n}\\n.excalidraw .mobile-misc-tools-container .default-sidebar-trigger {\\n  border: 0;\\n}\\n.excalidraw .App-toolbar--mobile {\\n  overflow: visible;\\n  max-width: 98vw;\\n}\\n.excalidraw .App-toolbar--mobile .ToolIcon__keybinding {\\n  display: none;\\n}\\n.excalidraw .UserList-Wrapper {\\n  margin: 0;\\n  padding: 0;\\n  border: none;\\n  text-align: left;\\n}\\n.excalidraw .UserList-Wrapper legend {\\n  display: block;\\n  font-size: 0.75rem;\\n  font-weight: 400;\\n  margin: 0 0 0.25rem;\\n  padding: 0;\\n}\\n.excalidraw .main-menu-trigger {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n}\\n.excalidraw .main-menu-trigger:active {\\n  box-shadow: 0 0 0 1px var(--color-brand-active);\\n}\\n.excalidraw .App-menu__left {\\n  --button-border: transparent;\\n  --button-bg: var(--color-surface-mid);\\n}\\n.excalidraw.theme--dark.excalidraw .App-menu__left {\\n  --button-hover-bg: #363541;\\n  --button-bg: var(--color-surface-high);\\n}\\n\\n.ErrorSplash.excalidraw {\\n  min-height: 100vh;\\n  padding: 20px 0;\\n  overflow: auto;\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  user-select: text;\\n}\\n.ErrorSplash.excalidraw .ErrorSplash-messageContainer {\\n  display: flex;\\n  flex-direction: column;\\n  align-items: center;\\n  justify-content: center;\\n  padding: 40px;\\n  background-color: #ffe3e3;\\n  border: 3px solid #c92a2a;\\n}\\n.ErrorSplash.excalidraw .ErrorSplash-paragraph {\\n  margin: 15px 0;\\n  max-width: 600px;\\n}\\n.ErrorSplash.excalidraw .ErrorSplash-paragraph.align-center {\\n  text-align: center;\\n}\\n.ErrorSplash.excalidraw .bigger,\\n.ErrorSplash.excalidraw .bigger button {\\n  font-size: 1.1em;\\n}\\n.ErrorSplash.excalidraw .smaller,\\n.ErrorSplash.excalidraw .smaller button {\\n  font-size: 0.9em;\\n}\\n.ErrorSplash.excalidraw .ErrorSplash-details {\\n  display: flex;\\n  flex-direction: column;\\n  align-items: flex-start;\\n}\\n.ErrorSplash.excalidraw .ErrorSplash-details textarea {\\n  width: 100%;\\n  margin: 10px 0;\\n  font-family: \\"Cascadia\\";\\n  font-size: 0.8em;\\n}\\n\\n.excalidraw__embeddable-container .excalidraw__embeddable-container__inner {\\n  overflow: hidden;\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  border-radius: var(--embeddable-radius);\\n}\\n.excalidraw__embeddable-container .excalidraw__embeddable__outer {\\n  width: 100%;\\n  height: 100%;\\n}\\n.excalidraw__embeddable-container .excalidraw__embeddable__outer > * {\\n  border-radius: var(--embeddable-radius);\\n}\\n.excalidraw__embeddable-container .excalidraw__embeddable-hint {\\n  position: absolute;\\n  z-index: 1;\\n  background: rgba(0, 0, 0, 0.5);\\n  padding: 1rem 1.6rem;\\n  border-radius: 12px;\\n  color: #fff;\\n  font-weight: bold;\\n  letter-spacing: 0.6px;\\n  font-family: \\"Assistant\\";\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../css/styles.scss","webpack://./../../css/theme.scss","webpack://./../../../node_modules/open-color/open-color.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AD8HA;EACE,2CAAA;EACA,wBAAA;AC3HF;;ACLA;EACE,oBAAA;EACA,sCAAA;EACA,mCAAA;EACA,wBAAA;EACA,wBAAA;EACA,wBAAA;EACA,yCAAA;EACA,2CAAA;EACA,wDAAA;EACA,gCAAA;EACA,0CAAA;EACA,gCAAA;EACA,2BAAA;EACA,yBAAA;EACA,6BAAA;EACA,+BAAA;EACA,4BAAA;EACA,0BAAA;EACA,wCAAA;EACA,qBAAA;EACA,6CAAA;EACA,wCAAA;EACA,mCAAA;EACA,2BAAA;EACA,oCAAA;EACA,iCAAA;EACA;;wCAAA;EAIA,4CAAA;EACA,6CAAA;EACA,iDAAA;EACA,iDAAA;EAEA,2BAAA;EACA,yBAAA;EACA,yBAAA;EACA,oBAAA;EACA,gCAAA;EASA,uCAAA;EACA,6CAAA;EAEA;;;;;oDAAA;EAMA,2CAAA;EACA;;;;;oDAAA;EAMA,iDAAA;EACA,0CAAA;EACA;;kEAAA;EAIA,uBAAA;EACA,6CAAA;EAEA,0BAAA;EAEA,2BAAA;EAEA,wBAAA;EACA,+BAAA;EACA,gCAAA;EACA,8BAAA;EACA,qCAAA;EAEA,wBAAA;EACA,wBAAA;EACA,wBAAA;EACA,wBAAA;EACA,wBAAA;EACA,wBAAA;EACA,wBAAA;EACA,wBAAA;EACA,wBAAA;EACA,wBAAA;EACA,yBAAA;EAEA,wBAAA;EACA,6BAAA;EACA,+BAAA;EACA,gCAAA;EACA,+CAAA;EAEA,uBAAA;EACA,4BAAA;EACA,8BAAA;EACA,+BAAA;EACA,0BAAA;EAEA,kCAAA;EACA,uCAAA;EACA,6BAAA;EACA,kCAAA;EAEA,gDAAA;EACA,0DAAA;EACA,gDAAA;EACA,qDAAA;EAEA,mCAAA;EACA,0CAAA;EACA,4CAAA;EACA,8CAAA;EACA,sDAAA;EAEA,sBAAA;EACA,wBAAA;EACA,gCAAA;EAEA,uCAAA;EACA,0BAAA;EAEA,4BAAA;EACA,0BAAA;EAEA,yCAAA;EACA,qCAAA;EACA,qCAAA;EACA,+BAAA;EACA,2BAAA;EACA,4BAAA;EACA,qCAAA;EACA,0CAAA;EACA,6BAAA;EACA,+BAAA;EACA,uCAAA;EACA,0CAAA;ADjBF;ACtFE;EA1CF;IA2CI,wBAAA;IACA,uBAAA;IACA,8BAAA;IACA,4BAAA;EDyFF;AACF;ACYI;EACE,gBAAA;ADVN;ACcE;EACE,8CAAA;EACA,sCAAA;EACA,mCAAA;EAEA,wBAAA;EACA,wBAAA;EACA,qBAAA;EACA,yCAAA;EACA,2CAAA;EACA,wDAAA;EACA,gCAAA;EACA,gCAAA;EACA,2BAAA;EACA,yBAAA;EACA,6BAAA;EACA,+BAAA;EACA,4BAAA;EACA,0BAAA;EACA,wCAAA;EACA,qBAAA;EACA,0CAAA;EACA,gCAAA;EACA,2BAAA;EACA,oCAAA;EACA,iCAAA;EACA;;wCAAA;EAIA;;;;;oDAAA;EAMA,2CAAA;EAEA,0BAAA;EACA,gCAAA;EAGA,0BAAA;EAEA,wCAAA;EAEA,wBAAA;EACA,+BAAA;EACA,gCAAA;EACA,8BAAA;EACA,qCAAA;EAEA,0CAAA;EAEA,uBAAA;EACA,4BAAA;EACA,8BAAA;EACA,+BAAA;EACA,4BAAA;EAEA,kCAAA;EACA,uCAAA;EACA,6BAAA;EACA,kCAAA;EAEA,gDAAA;EACA,0DAAA;EACA,2CAAA;EACA,gDAAA;EAEA,mCAAA;EACA,0CAAA;EACA,2CAAA;EACA,8CAAA;EACA,qDAAA;EAEA,sBAAA;EAEA,0BAAA;EAEA,wCAAA;EACA,sCAAA;EACA,oCAAA;EACA,sCAAA;EACA,2BAAA;EACA,4BAAA;EACA,qCAAA;EACA,0CAAA;EACA,6BAAA;EACA,+BAAA;EACA,uCAAA;EACA,0CAAA;AD3BJ;;AAzNA;EACE,kBAAA;EACA,6BAAA;EACA,mBAAA;EACA,mBAAA;EACA,8BAAA;EACA,6BAAA;EAEA,oBAAA;EACA,oBAAA;EACA,sBAAA;EAEA,kCAAA;EACA,gCAAA;EACA,iCAAA;EACA,+BAAA;AA0NF;;AAvNA;EACE;wCAAA;EAEA,2BAAA;EAEA,kBAAA;EACA,gBAAA;EACA,gCAAA;EACA,aAAA;EACA,MAAA;EACA,SAAA;EACA,OAAA;EACA,QAAA;EACA,YAAA;EACA,WAAA;EAeA,iBAAA;AA2MF;AAxNE;EACE,eAAA;AA0NJ;AAvNE;EACE,aAAA;AAyNJ;AA/ME;EACE,gBAAA;EACA,qBAAA;EACA,wBAAA;AAiNJ;AA/MI;EACE,0BAAA;AAiNN;AA7ME;EACE,kBAAA;EAKA,0BAAA;EAEA,iCAAA;EAEA,6BAAA;AAyMJ;AAvMI;EACE,wCAAA;AAyMN;AAlME;EAEE,oBAAA;AAmMJ;AAhME;EACE,kBAAA;AAkMJ;AA/LE;EACE,WAAA;EACA,YAAA;EACA,SAAA;AAiMJ;AA9LE;EACE,kBAAA;EACA,UAAA;EACA,0BAAA;EACA,oBAAA;AAgMJ;AAxLI;EACE,2BAAA;AA0LN;AAtLE;EACE,0BAAA;EACA,4BAAA;EACA,6BAAA;EACA,2BAAA;AAwLJ;AArLE;EACE,aAAA;EACA,8BAAA;AAuLJ;AApLE;EACE,aAAA;EACA,sBAAA;EACA,gBAAA;AAsLJ;AApLI;;;EAGE,SAAA;EACA,sBAAA;EACA,kBAAA;EACA,gCAAA;EACA,mBAAA;EACA,cAAA;AAsLN;AAnLI;EACE,cAAA;EACA,WAAA;AAqLN;AAlLI;EACE,UAAA;AAoLN;AAjLI;EACE,eAAA;EACA,kBAAA;AAmLN;AAhLI;EACE,eAAA;EACA,aAAA;EACA,kBAAA;EACA,eAAA;AAkLN;AAhLM;EACE,kBAAA;AAkLR;AA/KM;;EAEE,UAAA;EACA,kBAAA;EACA,oBAAA;AAiLR;AA9KM;EACE,eAAA;AAgLR;AA5KI;EACE,SAAA;EACA,UAAA;EACA,YAAA;AA8KN;AA1KE;EACE,UAAA;EACA,yBE1JQ;EF2JR,WAAA;AA4KJ;AAzKE;;;;;EAKE,oBAAA;EACA,8CAAA;AA2KJ;AAvKI;EACE,qBAAA;EACA,wBAAA;AAyKN;AAtKI;EACE,6BAAA;AAwKN;AArKI;;;ED1JF,aAAA;EACA,uBAAA;EACA,mBAAA;EACA,iBAAA;EACA,sDAAA;EACA,wDAAA;EACA,sBAAA;EACA,iBAAA;EACA,mBAAA;EACA,+DAAA;EACA,sCAAA;EACA,eAAA;EACA,0DAAA;EACA,mDAAA;ECkJI,UAAA;AAmLN;ADnUE;;;EACE,+CAAA;EACA,iDAAA;ACuUJ;ADpUE;;;EACE,gEAAA;EACA,2FAAA;EAIA,yFAAA;ACqUJ;AD/TE;;;EACE,iEAAA;EACA,uEAAA;ACmUJ;ADhUE;;;EACE,mFAAA;EAIA,mFAAA;ACiUJ;AD5TI;;;EACE,yFAAA;ACgUN;AD1TI;;;EACE,6DAAA;AC8TN;AApNM;;;EACE,+BAAA;EACA,gCAAA;AAwNR;AAnNE;EACE,8BAAA;EACA,aAAA;EACA,sBAAA;EACA,mBAAA;AAqNJ;AAlNE;EACE,kBAAA;EACA,MAAA;EACA,SAAA;EACA,OAAA;EACA,QAAA;EACA,4CAAA;EACA,kDAAA;EACA,4BAAA;EACA,6BAAA;EACA,2BAAA;EACA,UAAA;EACA,aAAA;EACA,qBAAA;EACA,oBAAA;AAoNJ;AAlNI;EACE,WAAA;EACA,eAAA;EACA,eAAA;EACA,sBAAA;EACA,gBAAA;EACA,aAAA;EACA,sBAAA;EACA,uCAAA;AAoNN;AAlNM;EACE,sBAAA;AAoNR;AA/ME;EACE,WAAA;AAiNJ;AA9MM;EACE,uBAAA;EACA,wBAAA;AAgNR;AA9MM;EACE,sCAAA;AAgNR;AA3ME;EACE,aAAA;EACA,mBAAA;EACA,8BAAA;EACA,YAAA;AA6MJ;AA3MI;EACE,YAAA;EACA,SAAA;AA6MN;AAzME;EACE,WAAA;EACA,mBAAA;EACA,gBAAA;EACA,sBAAA;EACA,iCAAA;AA2MJ;AAxME;EACE,aAAA;EACA,6BAAA;AA0MJ;AAvME;EACE,aAAA;EACA,uBAAA;EACA,+BAAA;AAyMJ;AAvMI;EACE,uCAAA;AAyMN;AArME;EACE,kCAAA;EACA,cAAA;EACA,uBAAA;EACA,eAAA;EACA,+BAAA;AAuMJ;AArMI;EACE,uCAAA;AAuMN;AApMI;EAXF;IAYI,kCAAA;IACA,cAAA;EAuMJ;AACF;AApME;EACE,wBAAA;AAsMJ;AAnME;EACE,sBAAA;AAqMJ;AAlME;EACE,kBAAA;EACA,YAAA;EACA,aAAA;EACA,8BAAA;EACA,uBAAA;EACA,eAAA;EACA,+BAAA;EACA,sBAAA;EACA,eAAA;AAoMJ;AAjMM;EACE,YAAA;AAmMR;AA/LI;EACE,aAAA;AAiMN;AA7LE;EACE,wBAAA;AA+LJ;AA5LE;EACE,sBAAA;AA8LJ;AA3LE;EACE,gCAAA;EACA,YAAA;AA6LJ;AA1LE;EACE,uBAAA;EACA,YAAA;AA4LJ;AAzLE;EACE,gBAAA;EACA,gBAAA;EACA,YAAA;EACA,sBAAA;EACA,kBAAA;AA2LJ;AAxLE;EACE,cAAA;EACA,UAAA;EACA,4BAAA;EACA,0BAAA;EACA,6BAAA;EACA,sCAAA;EACA,kCAAA;EACA,sCAAA;EACA,iBAAA;EACA,oBAAA;EACA,aAAA;EACA,gBAAA;EACA,sCAAA;EACA,4BAAA;EACA,8CAAA;EAMA,kCAAA;AAqLJ;AAzLI;EACE,6CAAA;AA2LN;AAtLI;EACE,kDAAA;AAwLN;AArLI;EACE,sCAAA;AAuLN;AApLI;EACE,sCAAA;AAsLN;AAnLI;EACE,YAAA;EACA,wCAAA;EACA,oDAAA;EACA,eAAA;AAqLN;AAnLM;EACE,wCAAA;AAqLR;AAhLE;EACE,sCAAA;EACA,wCAAA;EACA,6BAAA;EAEA,6CAAA;EACA,kBAAA;EACA,kBAAA;EACA,SAAA;EACA,YAAA;EACA,2BAAA;EACA,uCAAA;EACA,oBAAA;AAiLJ;AA/KI;EACE,wCAAA;AAiLN;AA9KI;EACE,6CAAA;AAgLN;AA5KE;ED/YA,aAAA;EACA,uBAAA;EACA,mBAAA;EACA,iBAAA;EACA,sDAAA;EACA,wDAAA;EACA,sBAAA;EACA,iBAAA;EACA,mBAAA;EACA,+DAAA;EACA,sCAAA;EACA,eAAA;EACA,0DAAA;EACA,mDAAA;EAgDA,YAAA;EACA,iDAAA;EACA,0CAAA;ECoVE,4BAAA;EACA,6BAAA;AA4LJ;ADjkBE;EACE,+CAAA;EACA,iDAAA;ACmkBJ;ADhkBE;EACE,gEAAA;EACA,2FAAA;EAIA,yFAAA;AC+jBJ;ADzjBE;EACE,iEAAA;EACA,uEAAA;AC2jBJ;ADxjBE;EACE,mFAAA;EAIA,mFAAA;ACujBJ;ADljBI;EACE,yFAAA;ACojBN;AD9iBI;EACE,6DAAA;ACgjBN;ADtiBE;EACE,+CAAA;ACwiBJ;AApNI;EACE,0BAAA;EACA,2BAAA;AAsNN;AAlNE;EACE,2BAAA;AAoNJ;AAjNE;EACE,aAAA;EACA,sBAAA;EACA,UAAA;EACA,gBAAA;EACA,mBAAA;EACA,0BAAA;AAmNJ;AAhNE;;EAEE,aAAA;EACA,sBAAA;EACA,gBAAA;EACA,mBAAA;EACA,0BAAA;AAkNJ;AA9MI;EACE,aAAA;AAgNN;AA9MI;EACE,kCAAA;EACA,WAAA;AAgNN;;AA3MI;EACE,qBAAA;AA8MN;AA1ME;EACE,mBAAA;EACA,UAAA;EACA,YAAA;EACA,WAAA;EACA,wBAAA;AA4MJ;AA1MI;EACE,kBAAA;EACA,UAAA;EACA,SAAA;EACA,QAAA;EACA,wBAAA;AA4MN;AAxME;EACE,+BAAA;AA0MJ;AAtMI;EACE,aAAA;EACA,8BAAA;AAwMN;AApME;;EAEE,gCAAA;EACA,6CAAA;EACA,gBAAA;EACA,mBAAA;EACA,kCAAA;EACA,uCAAA;AAsMJ;AAnMM;;EACE,sCAAA;AAsMR;AAlMI;;EACE,aAAA;EACA,sCAAA;AAqMN;AAjME;EACE;;;IAGE,aAAA;EAmMJ;AACF;AA9LE;EACE,UAAA;EACA,WAAA;AAgMJ;AA7LE;EACE,WAAA;AA+LJ;AA5LE;EACE,kCAAA;EACA,mBAAA;AA8LJ;AA5LE;EACE,wCAAA;AA8LJ;AA5LE;EACE,kCAAA;AA8LJ;AA3LE;EACE,kBAAA;EACA,iDAAA;EACA,iDAAA;EACA,aAAA;EACA,sBAAA;EACA,6CAAA;EACA,+CAAA;EACA,kDAAA;EACA,eAAA;EACA,gBAAA;EAEA,wCAAA;AA4LJ;AA1LI;EACE,WAAA;EACA,YAAA;EACA,gBAAA;AA4LN;AAzLI;EACE,SAAA;AA2LN;AAvLE;EACE,iBAAA;EACA,eAAA;AAyLJ;AAvLI;EACE,aAAA;AAyLN;AAtLE;EACE,SAAA;EACA,UAAA;EACA,YAAA;EACA,gBAAA;AAwLJ;AAtLI;EACE,cAAA;EACA,kBAAA;EACA,gBAAA;EACA,mBAAA;EACA,UAAA;AAwLN;AApLE;EDngBA,YAAA;EACA,iDAAA;EACA,0CAAA;AC0rBF;ADxrBE;EACE,+CAAA;AC0rBJ;AAxLE;EACE,4BAAA;EACA,qCAAA;AA0LJ;AAxLa;EACP,0BAAA;EACA,sCAAA;AA0LN;;AArLA;EACE,iBAAA;EACA,eAAA;EACA,cAAA;EACA,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,iBAAA;AAwLF;AAtLE;EACE,aAAA;EACA,sBAAA;EACA,mBAAA;EACA,uBAAA;EAEA,aAAA;EACA,yBE3lBO;EF4lBP,yBAAA;AAuLJ;AApLE;EACE,cAAA;EACA,gBAAA;AAsLJ;AApLI;EACE,kBAAA;AAsLN;AAlLE;;EAEE,gBAAA;AAoLJ;AAjLE;;EAEE,gBAAA;AAmLJ;AAhLE;EACE,aAAA;EACA,sBAAA;EACA,uBAAA;AAkLJ;AAhLI;EACE,WAAA;EACA,cAAA;EACA,uBAAA;EACA,gBAAA;AAkLN;;AA5KE;EACE,gBAAA;EACA,aAAA;EACA,mBAAA;EACA,uBAAA;EACA,uCAAA;AA+KJ;AA5KE;EACE,WAAA;EACA,YAAA;AA8KJ;AA7KI;EACE,uCAAA;AA+KN;AA3KE;EACE,kBAAA;EACA,UAAA;EACA,8BAAA;EACA,oBAAA;EACA,mBAAA;EACA,WAAA;EACA,iBAAA;EACA,qBAAA;EACA,wBAAA;AA6KJ","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"./variables.module\\";\\n@import \\"./theme\\";\\n\\n:root {\\n  --zIndex-canvas: 1;\\n  --zIndex-interactiveCanvas: 2;\\n  --zIndex-wysiwyg: 3;\\n  --zIndex-layerUI: 4;\\n  --zIndex-eyeDropperBackdrop: 5;\\n  --zIndex-eyeDropperPreview: 6;\\n\\n  --zIndex-modal: 1000;\\n  --zIndex-popup: 1001;\\n  --zIndex-toast: 999999;\\n\\n  --sab: env(safe-area-inset-bottom);\\n  --sal: env(safe-area-inset-left);\\n  --sar: env(safe-area-inset-right);\\n  --sat: env(safe-area-inset-top);\\n}\\n\\n.excalidraw {\\n  --ui-font: Assistant, system-ui, BlinkMacSystemFont, -apple-system, Segoe UI,\\n    Roboto, Helvetica, Arial, sans-serif;\\n  font-family: var(--ui-font);\\n\\n  position: relative;\\n  overflow: hidden;\\n  color: var(--text-primary-color);\\n  display: flex;\\n  top: 0;\\n  bottom: 0;\\n  left: 0;\\n  right: 0;\\n  height: 100%;\\n  width: 100%;\\n\\n  button {\\n    cursor: pointer;\\n  }\\n\\n  &:focus {\\n    outline: none;\\n  }\\n\\n  // serves 2 purposes:\\n  // 1. prevent selecting text outside the component when double-clicking or\\n  //    dragging inside it (e.g. on canvas)\\n  // 2. prevent selecting UI, both from the inside, and from outside the\\n  //    component (e.g. if you select text in a sidebar)\\n  user-select: none;\\n\\n  a {\\n    font-weight: 500;\\n    text-decoration: none;\\n    color: var(--link-color);\\n\\n    &:hover {\\n      text-decoration: underline;\\n    }\\n  }\\n\\n  canvas {\\n    touch-action: none;\\n\\n    // following props improve blurriness at certain devicePixelRatios.\\n    // AFAIK it doesn't affect export (in fact, export seems sharp either way).\\n\\n    image-rendering: pixelated; // chromium\\n    // NOTE: must be declared *after* the above\\n    image-rendering: -moz-crisp-edges; // FF\\n\\n    z-index: var(--zIndex-canvas);\\n\\n    &.interactive {\\n      z-index: var(--zIndex-interactiveCanvas);\\n    }\\n\\n    // Remove the main canvas from document flow to avoid resizeObserver\\n    // feedback loop (see https://github.com/excalidraw/excalidraw/pull/3379)\\n  }\\n\\n  &__canvas-wrapper,\\n  &__canvas.static {\\n    pointer-events: none;\\n  }\\n\\n  &__canvas {\\n    position: absolute;\\n  }\\n\\n  &__embeddable {\\n    width: 100%;\\n    height: 100%;\\n    border: 0;\\n  }\\n\\n  &__embeddable-container {\\n    position: absolute;\\n    z-index: 2;\\n    transform-origin: top left;\\n    pointer-events: none;\\n  }\\n\\n  &.theme--dark {\\n    // The percentage is inspired by\\n    // https://material.io/design/color/dark-theme.html#properties, which\\n    // recommends surface color of #121212, 93% yields #111111 for #FFF\\n\\n    canvas {\\n      filter: var(--theme-filter);\\n    }\\n  }\\n\\n  .FixedSideContainer {\\n    padding-top: var(--sat, 0);\\n    padding-right: var(--sar, 0);\\n    padding-bottom: var(--sab, 0);\\n    padding-left: var(--sal, 0);\\n  }\\n\\n  .panelRow {\\n    display: flex;\\n    justify-content: space-between;\\n  }\\n\\n  .panelColumn {\\n    display: flex;\\n    flex-direction: column;\\n    row-gap: 0.75rem;\\n\\n    h3,\\n    legend,\\n    .control-label {\\n      margin: 0;\\n      margin-bottom: 0.25rem;\\n      font-size: 0.75rem;\\n      color: var(--text-primary-color);\\n      font-weight: normal;\\n      display: block;\\n    }\\n\\n    .control-label input {\\n      display: block;\\n      width: 100%;\\n    }\\n\\n    legend {\\n      padding: 0;\\n    }\\n\\n    .iconSelectList {\\n      flex-wrap: wrap;\\n      position: relative;\\n    }\\n\\n    .buttonList {\\n      flex-wrap: wrap;\\n      display: flex;\\n      column-gap: 0.5rem;\\n      row-gap: 0.5rem;\\n\\n      label {\\n        font-size: 0.75rem;\\n      }\\n\\n      input[type=\\"radio\\"],\\n      input[type=\\"button\\"] {\\n        opacity: 0;\\n        position: absolute;\\n        pointer-events: none;\\n      }\\n\\n      .iconRow {\\n        margin-top: 8px;\\n      }\\n    }\\n\\n    fieldset {\\n      margin: 0;\\n      padding: 0;\\n      border: none;\\n    }\\n  }\\n\\n  .divider {\\n    width: 1px;\\n    background-color: $oc-gray-2;\\n    margin: 1px;\\n  }\\n\\n  .welcome-screen-menu-item:focus-visible,\\n  .dropdown-menu-item:focus-visible,\\n  button:focus-visible,\\n  .buttonList label:focus-within,\\n  input:focus-visible {\\n    outline: transparent;\\n    box-shadow: 0 0 0 1px var(--color-brand-hover);\\n  }\\n\\n  .buttonList {\\n    .ToolIcon__icon {\\n      all: unset !important;\\n      display: flex !important;\\n    }\\n\\n    button {\\n      background-color: transparent;\\n    }\\n\\n    label,\\n    button,\\n    .zIndexButton {\\n      @include outlineButtonStyles;\\n\\n      padding: 0;\\n\\n      svg {\\n        width: var(--default-icon-size);\\n        height: var(--default-icon-size);\\n      }\\n    }\\n  }\\n\\n  .App-top-bar {\\n    z-index: var(--zIndex-layerUI);\\n    display: flex;\\n    flex-direction: column;\\n    align-items: center;\\n  }\\n\\n  .App-bottom-bar {\\n    position: absolute;\\n    top: 0;\\n    bottom: 0;\\n    left: 0;\\n    right: 0;\\n    --bar-padding: calc(4 * var(--space-factor));\\n    padding-top: #{\\"max(var(--bar-padding), var(--sat,0))\\"};\\n    padding-right: var(--sar, 0);\\n    padding-bottom: var(--sab, 0);\\n    padding-left: var(--sal, 0);\\n    z-index: 4;\\n    display: flex;\\n    align-items: flex-end;\\n    pointer-events: none;\\n\\n    > .Island {\\n      width: 100%;\\n      max-width: 100%;\\n      min-width: 100%;\\n      box-sizing: border-box;\\n      max-height: 100%;\\n      display: flex;\\n      flex-direction: column;\\n      pointer-events: var(--ui-pointerEvents);\\n\\n      .panelColumn {\\n        padding: 8px 8px 0 8px;\\n      }\\n    }\\n  }\\n\\n  .App-toolbar {\\n    width: 100%;\\n\\n    .eraser {\\n      &.ToolIcon:hover {\\n        --icon-fill-color: #fff;\\n        --keybinding-color: #fff;\\n      }\\n      &.active {\\n        background-color: var(--color-primary);\\n      }\\n    }\\n  }\\n\\n  .App-toolbar-content {\\n    display: flex;\\n    align-items: center;\\n    justify-content: space-between;\\n    padding: 8px;\\n\\n    .dropdown-menu--mobile {\\n      bottom: 55px;\\n      top: auto;\\n    }\\n  }\\n\\n  .App-mobile-menu {\\n    width: 100%;\\n    overflow-x: visible;\\n    overflow-y: auto;\\n    box-sizing: border-box;\\n    margin-bottom: var(--bar-padding);\\n  }\\n\\n  .App-menu {\\n    display: grid;\\n    color: var(--icon-fill-color);\\n  }\\n\\n  .shapes-section {\\n    display: flex;\\n    justify-content: center;\\n    pointer-events: none !important;\\n\\n    & > * {\\n      pointer-events: var(--ui-pointerEvents);\\n    }\\n  }\\n\\n  .App-menu_top {\\n    grid-template-columns: 1fr 2fr 1fr;\\n    grid-gap: 2rem;\\n    align-items: flex-start;\\n    cursor: default;\\n    pointer-events: none !important;\\n\\n    & > * {\\n      pointer-events: var(--ui-pointerEvents);\\n    }\\n\\n    @media (min-width: 1536px) {\\n      grid-template-columns: 1fr 1fr 1fr;\\n      grid-gap: 3rem;\\n    }\\n  }\\n\\n  .App-menu_top > *:first-child {\\n    justify-self: flex-start;\\n  }\\n\\n  .App-menu_top > *:last-child {\\n    justify-self: flex-end;\\n  }\\n\\n  .App-menu_bottom {\\n    position: absolute;\\n    bottom: 1rem;\\n    display: flex;\\n    justify-content: space-between;\\n    align-items: flex-start;\\n    cursor: default;\\n    pointer-events: none !important;\\n    box-sizing: border-box;\\n    padding: 0 1rem;\\n\\n    &--transition-left {\\n      section {\\n        width: 185px;\\n      }\\n    }\\n\\n    section {\\n      display: flex;\\n    }\\n  }\\n\\n  .App-menu_bottom > *:first-child {\\n    justify-self: flex-start;\\n  }\\n\\n  .App-menu_bottom > *:last-child {\\n    justify-self: flex-end;\\n  }\\n\\n  .App-menu_left {\\n    grid-template-rows: 1fr auto 1fr;\\n    height: 100%;\\n  }\\n\\n  .App-menu_right {\\n    grid-template-rows: 1fr;\\n    height: 100%;\\n  }\\n\\n  .App-menu__left {\\n    overflow-y: auto;\\n    padding: 0.75rem;\\n    width: 202px;\\n    box-sizing: border-box;\\n    position: absolute;\\n  }\\n\\n  .dropdown-select {\\n    height: 1.5rem;\\n    padding: 0;\\n    padding-inline-start: 0.5rem;\\n    padding-inline-end: 1.5rem;\\n    color: var(--icon-fill-color);\\n    background-color: var(--button-gray-1);\\n    border-radius: var(--space-factor);\\n    border: 1px solid var(--button-gray-2);\\n    font-size: 0.8rem;\\n    font-family: inherit;\\n    outline: none;\\n    appearance: none;\\n    background-image: var(--dropdown-icon);\\n    background-repeat: no-repeat;\\n    background-position: right 0.7rem top 50%, 0 0;\\n\\n    :root[dir=\\"rtl\\"] & {\\n      background-position: left 0.7rem top 50%, 0 0;\\n    }\\n\\n    background-size: 0.65em auto, 100%;\\n\\n    &:focus {\\n      box-shadow: 0 0 0 2px var(--focus-highlight-color);\\n    }\\n\\n    &:hover {\\n      background-color: var(--button-gray-2);\\n    }\\n\\n    &:active {\\n      background-color: var(--button-gray-2);\\n    }\\n\\n    &__language {\\n      height: 2rem;\\n      background-color: var(--island-bg-color);\\n      border-color: var(--default-border-color) !important;\\n      cursor: pointer;\\n\\n      &:hover {\\n        background-color: var(--island-bg-color);\\n      }\\n    }\\n  }\\n\\n  .scroll-back-to-content {\\n    border-radius: var(--border-radius-lg);\\n    background-color: var(--island-bg-color);\\n    color: var(--icon-fill-color);\\n\\n    border: 1px solid var(--default-border-color);\\n    padding: 10px 20px;\\n    position: absolute;\\n    left: 50%;\\n    bottom: 30px;\\n    transform: translateX(-50%);\\n    pointer-events: var(--ui-pointerEvents);\\n    font-family: inherit;\\n\\n    &:hover {\\n      background-color: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      border: 1px solid var(--button-active-border);\\n    }\\n  }\\n\\n  .help-icon {\\n    @include outlineButtonStyles;\\n    @include filledButtonOnCanvas;\\n\\n    width: var(--lg-button-size);\\n    height: var(--lg-button-size);\\n\\n    svg {\\n      width: var(--lg-icon-size);\\n      height: var(--lg-icon-size);\\n    }\\n  }\\n\\n  .reset-zoom-button {\\n    font-family: var(--ui-font);\\n  }\\n\\n  .finalize-button {\\n    display: grid;\\n    grid-auto-flow: column;\\n    gap: 0.4em;\\n    margin-top: auto;\\n    margin-bottom: auto;\\n    margin-inline-start: 0.6em;\\n  }\\n\\n  .undo-redo-buttons,\\n  .eraser-buttons {\\n    display: grid;\\n    grid-auto-flow: column;\\n    margin-top: auto;\\n    margin-bottom: auto;\\n    margin-inline-start: 0.6em;\\n  }\\n\\n  @include isMobile {\\n    aside {\\n      display: none;\\n    }\\n    .scroll-back-to-content {\\n      bottom: calc(80px + var(--sab, 0));\\n      z-index: -1;\\n    }\\n  }\\n\\n  .rtl-mirror {\\n    :root[dir=\\"rtl\\"] & {\\n      transform: scaleX(-1);\\n    }\\n  }\\n\\n  .zen-mode-visibility {\\n    visibility: visible;\\n    opacity: 1;\\n    height: auto;\\n    width: auto;\\n    transition: opacity 0.5s;\\n\\n    &.zen-mode-visibility--hidden {\\n      visibility: hidden;\\n      opacity: 0;\\n      height: 0;\\n      width: 0;\\n      transition: opacity 0.5s;\\n    }\\n  }\\n\\n  .disable-pointerEvents {\\n    pointer-events: none !important;\\n  }\\n\\n  &.excalidraw--view-mode {\\n    .App-menu {\\n      display: flex;\\n      justify-content: space-between;\\n    }\\n  }\\n\\n  input[type=\\"text\\"],\\n  textarea:not(.excalidraw-wysiwyg) {\\n    color: var(--text-primary-color);\\n    border: 1.5px solid var(--input-border-color);\\n    padding: 0.75rem;\\n    white-space: nowrap;\\n    border-radius: var(--space-factor);\\n    background-color: var(--input-bg-color);\\n\\n    &:not(:focus) {\\n      &:hover {\\n        border-color: var(--color-brand-hover);\\n      }\\n    }\\n\\n    &:focus {\\n      outline: none;\\n      border-color: var(--color-brand-hover);\\n    }\\n  }\\n\\n  @media print {\\n    .App-bottom-bar,\\n    .FixedSideContainer,\\n    .layer-ui__wrapper {\\n      display: none;\\n    }\\n  }\\n\\n  // use custom, minimalistic scrollbar\\n  // (doesn't work in Firefox)\\n  ::-webkit-scrollbar {\\n    width: 3px;\\n    height: 3px;\\n  }\\n\\n  select::-webkit-scrollbar {\\n    width: 10px;\\n  }\\n\\n  ::-webkit-scrollbar-thumb {\\n    background: var(--scrollbar-thumb);\\n    border-radius: 10px;\\n  }\\n  ::-webkit-scrollbar-thumb:hover {\\n    background: var(--scrollbar-thumb-hover);\\n  }\\n  ::-webkit-scrollbar-thumb:active {\\n    background: var(--scrollbar-thumb);\\n  }\\n\\n  .mobile-misc-tools-container {\\n    position: absolute;\\n    top: calc(5rem - var(--editor-container-padding));\\n    right: calc(var(--editor-container-padding) * -1);\\n    display: flex;\\n    flex-direction: column;\\n    border: 1px solid var(--sidebar-border-color);\\n    border-top-left-radius: var(--border-radius-lg);\\n    border-bottom-left-radius: var(--border-radius-lg);\\n    border-right: 0;\\n    overflow: hidden;\\n\\n    background-color: var(--island-bg-color);\\n\\n    .ToolIcon__icon {\\n      width: 2rem;\\n      height: 2rem;\\n      border-radius: 0;\\n    }\\n\\n    .default-sidebar-trigger {\\n      border: 0;\\n    }\\n  }\\n\\n  .App-toolbar--mobile {\\n    overflow: visible;\\n    max-width: 98vw;\\n\\n    .ToolIcon__keybinding {\\n      display: none;\\n    }\\n  }\\n  .UserList-Wrapper {\\n    margin: 0;\\n    padding: 0;\\n    border: none;\\n    text-align: left;\\n\\n    legend {\\n      display: block;\\n      font-size: 0.75rem;\\n      font-weight: 400;\\n      margin: 0 0 0.25rem;\\n      padding: 0;\\n    }\\n  }\\n\\n  .main-menu-trigger {\\n    @include filledButtonOnCanvas;\\n  }\\n\\n  .App-menu__left {\\n    --button-border: transparent;\\n    --button-bg: var(--color-surface-mid);\\n\\n    @at-root .excalidraw.theme--dark#{&} {\\n      --button-hover-bg: #363541;\\n      --button-bg: var(--color-surface-high);\\n    }\\n  }\\n}\\n\\n.ErrorSplash.excalidraw {\\n  min-height: 100vh;\\n  padding: 20px 0;\\n  overflow: auto;\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  user-select: text;\\n\\n  .ErrorSplash-messageContainer {\\n    display: flex;\\n    flex-direction: column;\\n    align-items: center;\\n    justify-content: center;\\n\\n    padding: 40px;\\n    background-color: $oc-red-1;\\n    border: 3px solid $oc-red-9;\\n  }\\n\\n  .ErrorSplash-paragraph {\\n    margin: 15px 0;\\n    max-width: 600px;\\n\\n    &.align-center {\\n      text-align: center;\\n    }\\n  }\\n\\n  .bigger,\\n  .bigger button {\\n    font-size: 1.1em;\\n  }\\n\\n  .smaller,\\n  .smaller button {\\n    font-size: 0.9em;\\n  }\\n\\n  .ErrorSplash-details {\\n    display: flex;\\n    flex-direction: column;\\n    align-items: flex-start;\\n\\n    textarea {\\n      width: 100%;\\n      margin: 10px 0;\\n      font-family: \\"Cascadia\\";\\n      font-size: 0.8em;\\n    }\\n  }\\n}\\n\\n.excalidraw__embeddable-container {\\n  .excalidraw__embeddable-container__inner {\\n    overflow: hidden;\\n    display: flex;\\n    align-items: center;\\n    justify-content: center;\\n    border-radius: var(--embeddable-radius);\\n  }\\n\\n  .excalidraw__embeddable__outer {\\n    width: 100%;\\n    height: 100%;\\n    & > * {\\n      border-radius: var(--embeddable-radius);\\n    }\\n  }\\n\\n  .excalidraw__embeddable-hint {\\n    position: absolute;\\n    z-index: 1;\\n    background: rgba(0, 0, 0, 0.5);\\n    padding: 1rem 1.6rem;\\n    border-radius: 12px;\\n    color: #fff;\\n    font-weight: bold;\\n    letter-spacing: 0.6px;\\n    font-family: \\"Assistant\\";\\n  }\\n}\\n","@import \\"open-color/open-color.scss\\";\\n@import \\"./variables.module.scss\\";\\n\\n.excalidraw {\\n  --theme-filter: none;\\n  --button-destructive-bg-color: #{$oc-red-1};\\n  --button-destructive-color: #{$oc-red-9};\\n  --button-gray-1: #{$oc-gray-2};\\n  --button-gray-2: #{$oc-gray-4};\\n  --button-gray-3: #{$oc-gray-5};\\n  --button-special-active-bg-color: #{$oc-green-0};\\n  --dialog-border-color: var(--color-gray-20);\\n  --dropdown-icon: url('data:image/svg+xml,<svg xmlns=\\"http://www.w3.org/2000/svg\\" width=\\"292.4\\" height=\\"292.4\\" viewBox=\\"0 0 292 292\\"><path d=\\"M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z\\"/></svg>');\\n  --focus-highlight-color: #{$oc-blue-2};\\n  --icon-fill-color: var(--color-on-surface);\\n  --icon-green-fill-color: #{$oc-green-9};\\n  --default-bg-color: #{$oc-white};\\n  --input-bg-color: #{$oc-white};\\n  --input-border-color: #{$oc-gray-4};\\n  --input-hover-bg-color: #{$oc-gray-1};\\n  --input-label-color: #{$oc-gray-7};\\n  --island-bg-color: #ffffff;\\n  --keybinding-color: var(--color-gray-40);\\n  --link-color: #{$oc-blue-7};\\n  --overlay-bg-color: #{transparentize($oc-white, 0.12)};\\n  --popup-bg-color: var(--island-bg-color);\\n  --popup-secondary-bg-color: #{$oc-gray-1};\\n  --popup-text-color: #{$oc-black};\\n  --popup-text-inverted-color: #{$oc-white};\\n  --select-highlight-color: #{$oc-blue-5};\\n  --shadow-island: 0px 0px 0.9310142993927002px 0px rgba(0, 0, 0, 0.17),\\n    0px 0px 3.1270833015441895px 0px rgba(0, 0, 0, 0.08),\\n    0px 7px 14px 0px rgba(0, 0, 0, 0.05);\\n\\n  --button-hover-bg: var(--color-surface-high);\\n  --button-active-bg: var(--color-surface-high);\\n  --button-active-border: var(--color-brand-active);\\n  --default-border-color: var(--color-surface-high);\\n\\n  --default-button-size: 2rem;\\n  --default-icon-size: 1rem;\\n  --lg-button-size: 2.25rem;\\n  --lg-icon-size: 1rem;\\n  --editor-container-padding: 1rem;\\n\\n  @media screen and (min-device-width: 1921px) {\\n    --lg-button-size: 2.5rem;\\n    --lg-icon-size: 1.25rem;\\n    --default-button-size: 2.25rem;\\n    --default-icon-size: 1.25rem;\\n  }\\n\\n  --scrollbar-thumb: var(--button-gray-2);\\n  --scrollbar-thumb-hover: var(--button-gray-3);\\n\\n  --modal-shadow: 0px 100px 80px rgba(0, 0, 0, 0.07),\\n    0px 41.7776px 33.4221px rgba(0, 0, 0, 0.0503198),\\n    0px 22.3363px 17.869px rgba(0, 0, 0, 0.0417275),\\n    0px 12.5216px 10.0172px rgba(0, 0, 0, 0.035),\\n    0px 6.6501px 5.32008px rgba(0, 0, 0, 0.0282725),\\n    0px 2.76726px 2.21381px rgba(0, 0, 0, 0.0196802);\\n  --avatar-border-color: var(--color-gray-20);\\n  --sidebar-shadow: 0px 100px 80px rgba(0, 0, 0, 0.07),\\n    0px 41.7776px 33.4221px rgba(0, 0, 0, 0.0503198),\\n    0px 22.3363px 17.869px rgba(0, 0, 0, 0.0417275),\\n    0px 12.5216px 10.0172px rgba(0, 0, 0, 0.035),\\n    0px 6.6501px 5.32008px rgba(0, 0, 0, 0.0282725),\\n    0px 2.76726px 2.21381px rgba(0, 0, 0, 0.0196802);\\n  --sidebar-border-color: var(--color-surface-high);\\n  --sidebar-bg-color: var(--island-bg-color);\\n  --library-dropdown-shadow: 0px 15px 6px rgba(0, 0, 0, 0.01),\\n    0px 8px 5px rgba(0, 0, 0, 0.05), 0px 4px 4px rgba(0, 0, 0, 0.09),\\n    0px 1px 2px rgba(0, 0, 0, 0.1), 0px 0px 0px rgba(0, 0, 0, 0.1);\\n\\n  --space-factor: 0.25rem;\\n  --text-primary-color: var(--color-on-surface);\\n\\n  --color-selection: #6965db;\\n\\n  --color-icon-white: #{$oc-white};\\n\\n  --color-primary: #6965db;\\n  --color-primary-darker: #5b57d1;\\n  --color-primary-darkest: #4a47b1;\\n  --color-primary-light: #e3e2fe;\\n  --color-primary-light-darker: #d7d5ff;\\n\\n  --color-gray-10: #f5f5f5;\\n  --color-gray-20: #ebebeb;\\n  --color-gray-30: #d6d6d6;\\n  --color-gray-40: #b8b8b8;\\n  --color-gray-50: #999999;\\n  --color-gray-60: #7a7a7a;\\n  --color-gray-70: #5c5c5c;\\n  --color-gray-80: #3d3d3d;\\n  --color-gray-85: #242424;\\n  --color-gray-90: #1e1e1e;\\n  --color-gray-100: #121212;\\n\\n  --color-warning: #fceeca;\\n  --color-warning-dark: #f5c354;\\n  --color-warning-darker: #f3ab2c;\\n  --color-warning-darkest: #ec8b14;\\n  --color-text-warning: var(--text-primary-color);\\n\\n  --color-danger: #db6965;\\n  --color-danger-dark: #db6965;\\n  --color-danger-darker: #d65550;\\n  --color-danger-darkest: #d1413c;\\n  --color-danger-text: black;\\n\\n  --color-danger-background: #fff0f0;\\n  --color-danger-icon-background: #ffdad6;\\n  --color-danger-color: #700000;\\n  --color-danger-icon-color: #700000;\\n\\n  --color-warning-background: var(--color-warning);\\n  --color-warning-icon-background: var(--color-warning-dark);\\n  --color-warning-color: var(--text-primary-color);\\n  --color-warning-icon-color: var(--text-primary-color);\\n\\n  --color-muted: var(--color-gray-30);\\n  --color-muted-darker: var(--color-gray-60);\\n  --color-muted-darkest: var(--color-gray-100);\\n  --color-muted-background: var(--color-gray-80);\\n  --color-muted-background-darker: var(--color-gray-100);\\n\\n  --color-promo: #e70078;\\n  --color-success: #268029;\\n  --color-success-lighter: #cafccc;\\n\\n  --color-logo-icon: var(--color-primary);\\n  --color-logo-text: #190064;\\n\\n  --border-radius-md: 0.375rem;\\n  --border-radius-lg: 0.5rem;\\n\\n  --color-surface-high: hsl(244, 100%, 97%);\\n  --color-surface-mid: hsl(240 25% 96%);\\n  --color-surface-low: hsl(240 25% 94%);\\n  --color-surface-lowest: #ffffff;\\n  --color-on-surface: #1b1b1f;\\n  --color-brand-hover: #5753d0;\\n  --color-on-primary-container: #030064;\\n  --color-surface-primary-container: #e0dfff;\\n  --color-brand-active: #4440bf;\\n  --color-border-outline: #767680;\\n  --color-border-outline-variant: #c5c5d0;\\n  --color-surface-primary-container: #e0dfff;\\n\\n  &.theme--dark {\\n    &.theme--dark-background-none {\\n      background: none;\\n    }\\n  }\\n\\n  &.theme--dark {\\n    --theme-filter: #{$theme-filter};\\n    --button-destructive-bg-color: #5a0000;\\n    --button-destructive-color: #{$oc-red-3};\\n\\n    --button-gray-1: #363636;\\n    --button-gray-2: #272727;\\n    --button-gray-3: #222;\\n    --button-special-active-bg-color: #204624;\\n    --dialog-border-color: var(--color-gray-80);\\n    --dropdown-icon: url('data:image/svg+xml,<svg xmlns=\\"http://www.w3.org/2000/svg\\" width=\\"292.4\\" height=\\"292.4\\" viewBox=\\"0 0 292 292\\"><path fill=\\"%23ced4da\\" d=\\"M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z\\"/></svg>');\\n    --focus-highlight-color: #{$oc-blue-6};\\n    --icon-green-fill-color: #{$oc-green-4};\\n    --default-bg-color: #121212;\\n    --input-bg-color: #121212;\\n    --input-border-color: #2e2e2e;\\n    --input-hover-bg-color: #181818;\\n    --input-label-color: #{$oc-gray-2};\\n    --island-bg-color: #232329;\\n    --keybinding-color: var(--color-gray-60);\\n    --link-color: #{$oc-blue-4};\\n    --overlay-bg-color: #{transparentize($oc-gray-8, 0.88)};\\n    --popup-secondary-bg-color: #222;\\n    --popup-text-color: #{$oc-gray-4};\\n    --popup-text-inverted-color: #2c2c2c;\\n    --select-highlight-color: #{$oc-blue-4};\\n    --shadow-island: 0px 0px 0.9310142993927002px 0px rgba(0, 0, 0, 0.17),\\n      0px 0px 3.1270833015441895px 0px rgba(0, 0, 0, 0.08),\\n      0px 7px 14px 0px rgba(0, 0, 0, 0.05);\\n\\n    --modal-shadow: 0px 100px 80px rgba(0, 0, 0, 0.07),\\n      0px 41.7776px 33.4221px rgba(0, 0, 0, 0.0503198),\\n      0px 22.3363px 17.869px rgba(0, 0, 0, 0.0417275),\\n      0px 12.5216px 10.0172px rgba(0, 0, 0, 0.035),\\n      0px 6.6501px 5.32008px rgba(0, 0, 0, 0.0282725),\\n      0px 2.76726px 2.21381px rgba(0, 0, 0, 0.0196802);\\n    --avatar-border-color: var(--color-gray-85);\\n\\n    --scrollbar-thumb: #{$oc-gray-8};\\n    --scrollbar-thumb-hover: #{$oc-gray-7};\\n\\n    // will be inverted to a lighter color.\\n    --color-selection: #3530c4;\\n\\n    --color-icon-white: var(--color-gray-90);\\n\\n    --color-primary: #a8a5ff;\\n    --color-primary-darker: #b2aeff;\\n    --color-primary-darkest: #beb9ff;\\n    --color-primary-light: #4f4d6f;\\n    --color-primary-light-darker: #43415e;\\n\\n    --color-text-warning: var(--color-gray-80);\\n\\n    --color-danger: #ffa8a5;\\n    --color-danger-dark: #672120;\\n    --color-danger-darker: #8f2625;\\n    --color-danger-darkest: #ac2b29;\\n    --color-danger-text: #fbcbcc;\\n\\n    --color-danger-background: #fbcbcc;\\n    --color-danger-icon-background: #672120;\\n    --color-danger-color: #261919;\\n    --color-danger-icon-color: #fbcbcc;\\n\\n    --color-warning-background: var(--color-warning);\\n    --color-warning-icon-background: var(--color-warning-dark);\\n    --color-warning-color: var(--color-gray-80);\\n    --color-warning-icon-color: var(--color-gray-80);\\n\\n    --color-muted: var(--color-gray-80);\\n    --color-muted-darker: var(--color-gray-60);\\n    --color-muted-darkest: var(--color-gray-20);\\n    --color-muted-background: var(--color-gray-40);\\n    --color-muted-background-darker: var(--color-gray-20);\\n\\n    --color-promo: #d297ff;\\n\\n    --color-logo-text: #e2dfff;\\n\\n    --color-surface-high: hsl(245, 10%, 21%);\\n    --color-surface-low: hsl(240, 8%, 15%);\\n    --color-surface-mid: hsl(240 6% 10%);\\n    --color-surface-lowest: hsl(0, 0%, 7%);\\n    --color-on-surface: #e3e3e8;\\n    --color-brand-hover: #bbb8ff;\\n    --color-on-primary-container: #e0dfff;\\n    --color-surface-primary-container: #403e6a;\\n    --color-brand-active: #d0ccff;\\n    --color-border-outline: #8e8d9c;\\n    --color-border-outline-variant: #46464f;\\n    --color-surface-primary-container: #403e6a;\\n  }\\n}\\n","//\\n//\\n//  \u{1D5D6} \u{1D5E2} \u{1D5DF} \u{1D5E2} \u{1D5E5}\\n//  v 1.9.1\\n//\\n//  \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\\n\\n\\n//  General\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-white:         #ffffff;\\n$oc-black:         #000000;\\n\\n\\n//  Gray\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-gray-list: (\\n  \\"0\\": #f8f9fa,\\n  \\"1\\": #f1f3f5,\\n  \\"2\\": #e9ecef,\\n  \\"3\\": #dee2e6,\\n  \\"4\\": #ced4da,\\n  \\"5\\": #adb5bd,\\n  \\"6\\": #868e96,\\n  \\"7\\": #495057,\\n  \\"8\\": #343a40,\\n  \\"9\\": #212529\\n);\\n\\n$oc-gray-0: map-get($oc-gray-list, \\"0\\");\\n$oc-gray-1: map-get($oc-gray-list, \\"1\\");\\n$oc-gray-2: map-get($oc-gray-list, \\"2\\");\\n$oc-gray-3: map-get($oc-gray-list, \\"3\\");\\n$oc-gray-4: map-get($oc-gray-list, \\"4\\");\\n$oc-gray-5: map-get($oc-gray-list, \\"5\\");\\n$oc-gray-6: map-get($oc-gray-list, \\"6\\");\\n$oc-gray-7: map-get($oc-gray-list, \\"7\\");\\n$oc-gray-8: map-get($oc-gray-list, \\"8\\");\\n$oc-gray-9: map-get($oc-gray-list, \\"9\\");\\n\\n\\n//  Red\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-red-list: (\\n  \\"0\\": #fff5f5,\\n  \\"1\\": #ffe3e3,\\n  \\"2\\": #ffc9c9,\\n  \\"3\\": #ffa8a8,\\n  \\"4\\": #ff8787,\\n  \\"5\\": #ff6b6b,\\n  \\"6\\": #fa5252,\\n  \\"7\\": #f03e3e,\\n  \\"8\\": #e03131,\\n  \\"9\\": #c92a2a\\n);\\n\\n$oc-red-0: map-get($oc-red-list, \\"0\\");\\n$oc-red-1: map-get($oc-red-list, \\"1\\");\\n$oc-red-2: map-get($oc-red-list, \\"2\\");\\n$oc-red-3: map-get($oc-red-list, \\"3\\");\\n$oc-red-4: map-get($oc-red-list, \\"4\\");\\n$oc-red-5: map-get($oc-red-list, \\"5\\");\\n$oc-red-6: map-get($oc-red-list, \\"6\\");\\n$oc-red-7: map-get($oc-red-list, \\"7\\");\\n$oc-red-8: map-get($oc-red-list, \\"8\\");\\n$oc-red-9: map-get($oc-red-list, \\"9\\");\\n\\n\\n//  Pink\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-pink-list: (\\n  \\"0\\": #fff0f6,\\n  \\"1\\": #ffdeeb,\\n  \\"2\\": #fcc2d7,\\n  \\"3\\": #faa2c1,\\n  \\"4\\": #f783ac,\\n  \\"5\\": #f06595,\\n  \\"6\\": #e64980,\\n  \\"7\\": #d6336c,\\n  \\"8\\": #c2255c,\\n  \\"9\\": #a61e4d\\n);\\n\\n$oc-pink-0: map-get($oc-pink-list, \\"0\\");\\n$oc-pink-1: map-get($oc-pink-list, \\"1\\");\\n$oc-pink-2: map-get($oc-pink-list, \\"2\\");\\n$oc-pink-3: map-get($oc-pink-list, \\"3\\");\\n$oc-pink-4: map-get($oc-pink-list, \\"4\\");\\n$oc-pink-5: map-get($oc-pink-list, \\"5\\");\\n$oc-pink-6: map-get($oc-pink-list, \\"6\\");\\n$oc-pink-7: map-get($oc-pink-list, \\"7\\");\\n$oc-pink-8: map-get($oc-pink-list, \\"8\\");\\n$oc-pink-9: map-get($oc-pink-list, \\"9\\");\\n\\n\\n//  Grape\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-grape-list: (\\n  \\"0\\": #f8f0fc,\\n  \\"1\\": #f3d9fa,\\n  \\"2\\": #eebefa,\\n  \\"3\\": #e599f7,\\n  \\"4\\": #da77f2,\\n  \\"5\\": #cc5de8,\\n  \\"6\\": #be4bdb,\\n  \\"7\\": #ae3ec9,\\n  \\"8\\": #9c36b5,\\n  \\"9\\": #862e9c\\n);\\n\\n$oc-grape-0: map-get($oc-grape-list, \\"0\\");\\n$oc-grape-1: map-get($oc-grape-list, \\"1\\");\\n$oc-grape-2: map-get($oc-grape-list, \\"2\\");\\n$oc-grape-3: map-get($oc-grape-list, \\"3\\");\\n$oc-grape-4: map-get($oc-grape-list, \\"4\\");\\n$oc-grape-5: map-get($oc-grape-list, \\"5\\");\\n$oc-grape-6: map-get($oc-grape-list, \\"6\\");\\n$oc-grape-7: map-get($oc-grape-list, \\"7\\");\\n$oc-grape-8: map-get($oc-grape-list, \\"8\\");\\n$oc-grape-9: map-get($oc-grape-list, \\"9\\");\\n\\n\\n//  Violet\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-violet-list: (\\n  \\"0\\": #f3f0ff,\\n  \\"1\\": #e5dbff,\\n  \\"2\\": #d0bfff,\\n  \\"3\\": #b197fc,\\n  \\"4\\": #9775fa,\\n  \\"5\\": #845ef7,\\n  \\"6\\": #7950f2,\\n  \\"7\\": #7048e8,\\n  \\"8\\": #6741d9,\\n  \\"9\\": #5f3dc4\\n);\\n\\n$oc-violet-0: map-get($oc-violet-list, \\"0\\");\\n$oc-violet-1: map-get($oc-violet-list, \\"1\\");\\n$oc-violet-2: map-get($oc-violet-list, \\"2\\");\\n$oc-violet-3: map-get($oc-violet-list, \\"3\\");\\n$oc-violet-4: map-get($oc-violet-list, \\"4\\");\\n$oc-violet-5: map-get($oc-violet-list, \\"5\\");\\n$oc-violet-6: map-get($oc-violet-list, \\"6\\");\\n$oc-violet-7: map-get($oc-violet-list, \\"7\\");\\n$oc-violet-8: map-get($oc-violet-list, \\"8\\");\\n$oc-violet-9: map-get($oc-violet-list, \\"9\\");\\n\\n\\n//  Indigo\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-indigo-list: (\\n  \\"0\\": #edf2ff,\\n  \\"1\\": #dbe4ff,\\n  \\"2\\": #bac8ff,\\n  \\"3\\": #91a7ff,\\n  \\"4\\": #748ffc,\\n  \\"5\\": #5c7cfa,\\n  \\"6\\": #4c6ef5,\\n  \\"7\\": #4263eb,\\n  \\"8\\": #3b5bdb,\\n  \\"9\\": #364fc7\\n);\\n\\n$oc-indigo-0: map-get($oc-indigo-list, \\"0\\");\\n$oc-indigo-1: map-get($oc-indigo-list, \\"1\\");\\n$oc-indigo-2: map-get($oc-indigo-list, \\"2\\");\\n$oc-indigo-3: map-get($oc-indigo-list, \\"3\\");\\n$oc-indigo-4: map-get($oc-indigo-list, \\"4\\");\\n$oc-indigo-5: map-get($oc-indigo-list, \\"5\\");\\n$oc-indigo-6: map-get($oc-indigo-list, \\"6\\");\\n$oc-indigo-7: map-get($oc-indigo-list, \\"7\\");\\n$oc-indigo-8: map-get($oc-indigo-list, \\"8\\");\\n$oc-indigo-9: map-get($oc-indigo-list, \\"9\\");\\n\\n\\n//  Blue\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-blue-list: (\\n  \\"0\\": #e7f5ff,\\n  \\"1\\": #d0ebff,\\n  \\"2\\": #a5d8ff,\\n  \\"3\\": #74c0fc,\\n  \\"4\\": #4dabf7,\\n  \\"5\\": #339af0,\\n  \\"6\\": #228be6,\\n  \\"7\\": #1c7ed6,\\n  \\"8\\": #1971c2,\\n  \\"9\\": #1864ab\\n);\\n\\n$oc-blue-0: map-get($oc-blue-list, \\"0\\");\\n$oc-blue-1: map-get($oc-blue-list, \\"1\\");\\n$oc-blue-2: map-get($oc-blue-list, \\"2\\");\\n$oc-blue-3: map-get($oc-blue-list, \\"3\\");\\n$oc-blue-4: map-get($oc-blue-list, \\"4\\");\\n$oc-blue-5: map-get($oc-blue-list, \\"5\\");\\n$oc-blue-6: map-get($oc-blue-list, \\"6\\");\\n$oc-blue-7: map-get($oc-blue-list, \\"7\\");\\n$oc-blue-8: map-get($oc-blue-list, \\"8\\");\\n$oc-blue-9: map-get($oc-blue-list, \\"9\\");\\n\\n\\n//  Cyan\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-cyan-list: (\\n  \\"0\\": #e3fafc,\\n  \\"1\\": #c5f6fa,\\n  \\"2\\": #99e9f2,\\n  \\"3\\": #66d9e8,\\n  \\"4\\": #3bc9db,\\n  \\"5\\": #22b8cf,\\n  \\"6\\": #15aabf,\\n  \\"7\\": #1098ad,\\n  \\"8\\": #0c8599,\\n  \\"9\\": #0b7285\\n);\\n\\n$oc-cyan-0: map-get($oc-cyan-list, \\"0\\");\\n$oc-cyan-1: map-get($oc-cyan-list, \\"1\\");\\n$oc-cyan-2: map-get($oc-cyan-list, \\"2\\");\\n$oc-cyan-3: map-get($oc-cyan-list, \\"3\\");\\n$oc-cyan-4: map-get($oc-cyan-list, \\"4\\");\\n$oc-cyan-5: map-get($oc-cyan-list, \\"5\\");\\n$oc-cyan-6: map-get($oc-cyan-list, \\"6\\");\\n$oc-cyan-7: map-get($oc-cyan-list, \\"7\\");\\n$oc-cyan-8: map-get($oc-cyan-list, \\"8\\");\\n$oc-cyan-9: map-get($oc-cyan-list, \\"9\\");\\n\\n\\n//  Teal\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-teal-list: (\\n  \\"0\\": #e6fcf5,\\n  \\"1\\": #c3fae8,\\n  \\"2\\": #96f2d7,\\n  \\"3\\": #63e6be,\\n  \\"4\\": #38d9a9,\\n  \\"5\\": #20c997,\\n  \\"6\\": #12b886,\\n  \\"7\\": #0ca678,\\n  \\"8\\": #099268,\\n  \\"9\\": #087f5b\\n);\\n\\n$oc-teal-0: map-get($oc-teal-list, \\"0\\");\\n$oc-teal-1: map-get($oc-teal-list, \\"1\\");\\n$oc-teal-2: map-get($oc-teal-list, \\"2\\");\\n$oc-teal-3: map-get($oc-teal-list, \\"3\\");\\n$oc-teal-4: map-get($oc-teal-list, \\"4\\");\\n$oc-teal-5: map-get($oc-teal-list, \\"5\\");\\n$oc-teal-6: map-get($oc-teal-list, \\"6\\");\\n$oc-teal-7: map-get($oc-teal-list, \\"7\\");\\n$oc-teal-8: map-get($oc-teal-list, \\"8\\");\\n$oc-teal-9: map-get($oc-teal-list, \\"9\\");\\n\\n\\n//  Green\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-green-list: (\\n  \\"0\\": #ebfbee,\\n  \\"1\\": #d3f9d8,\\n  \\"2\\": #b2f2bb,\\n  \\"3\\": #8ce99a,\\n  \\"4\\": #69db7c,\\n  \\"5\\": #51cf66,\\n  \\"6\\": #40c057,\\n  \\"7\\": #37b24d,\\n  \\"8\\": #2f9e44,\\n  \\"9\\": #2b8a3e\\n);\\n\\n$oc-green-0: map-get($oc-green-list, \\"0\\");\\n$oc-green-1: map-get($oc-green-list, \\"1\\");\\n$oc-green-2: map-get($oc-green-list, \\"2\\");\\n$oc-green-3: map-get($oc-green-list, \\"3\\");\\n$oc-green-4: map-get($oc-green-list, \\"4\\");\\n$oc-green-5: map-get($oc-green-list, \\"5\\");\\n$oc-green-6: map-get($oc-green-list, \\"6\\");\\n$oc-green-7: map-get($oc-green-list, \\"7\\");\\n$oc-green-8: map-get($oc-green-list, \\"8\\");\\n$oc-green-9: map-get($oc-green-list, \\"9\\");\\n\\n\\n//  Lime\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-lime-list: (\\n  \\"0\\": #f4fce3,\\n  \\"1\\": #e9fac8,\\n  \\"2\\": #d8f5a2,\\n  \\"3\\": #c0eb75,\\n  \\"4\\": #a9e34b,\\n  \\"5\\": #94d82d,\\n  \\"6\\": #82c91e,\\n  \\"7\\": #74b816,\\n  \\"8\\": #66a80f,\\n  \\"9\\": #5c940d\\n);\\n\\n$oc-lime-0: map-get($oc-lime-list, \\"0\\");\\n$oc-lime-1: map-get($oc-lime-list, \\"1\\");\\n$oc-lime-2: map-get($oc-lime-list, \\"2\\");\\n$oc-lime-3: map-get($oc-lime-list, \\"3\\");\\n$oc-lime-4: map-get($oc-lime-list, \\"4\\");\\n$oc-lime-5: map-get($oc-lime-list, \\"5\\");\\n$oc-lime-6: map-get($oc-lime-list, \\"6\\");\\n$oc-lime-7: map-get($oc-lime-list, \\"7\\");\\n$oc-lime-8: map-get($oc-lime-list, \\"8\\");\\n$oc-lime-9: map-get($oc-lime-list, \\"9\\");\\n\\n\\n//  Yellow\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-yellow-list: (\\n  \\"0\\": #fff9db,\\n  \\"1\\": #fff3bf,\\n  \\"2\\": #ffec99,\\n  \\"3\\": #ffe066,\\n  \\"4\\": #ffd43b,\\n  \\"5\\": #fcc419,\\n  \\"6\\": #fab005,\\n  \\"7\\": #f59f00,\\n  \\"8\\": #f08c00,\\n  \\"9\\": #e67700\\n);\\n\\n$oc-yellow-0: map-get($oc-yellow-list, \\"0\\");\\n$oc-yellow-1: map-get($oc-yellow-list, \\"1\\");\\n$oc-yellow-2: map-get($oc-yellow-list, \\"2\\");\\n$oc-yellow-3: map-get($oc-yellow-list, \\"3\\");\\n$oc-yellow-4: map-get($oc-yellow-list, \\"4\\");\\n$oc-yellow-5: map-get($oc-yellow-list, \\"5\\");\\n$oc-yellow-6: map-get($oc-yellow-list, \\"6\\");\\n$oc-yellow-7: map-get($oc-yellow-list, \\"7\\");\\n$oc-yellow-8: map-get($oc-yellow-list, \\"8\\");\\n$oc-yellow-9: map-get($oc-yellow-list, \\"9\\");\\n\\n\\n//  Orange\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-orange-list: (\\n  \\"0\\": #fff4e6,\\n  \\"1\\": #ffe8cc,\\n  \\"2\\": #ffd8a8,\\n  \\"3\\": #ffc078,\\n  \\"4\\": #ffa94d,\\n  \\"5\\": #ff922b,\\n  \\"6\\": #fd7e14,\\n  \\"7\\": #f76707,\\n  \\"8\\": #e8590c,\\n  \\"9\\": #d9480f\\n);\\n\\n$oc-orange-0: map-get($oc-orange-list, \\"0\\");\\n$oc-orange-1: map-get($oc-orange-list, \\"1\\");\\n$oc-orange-2: map-get($oc-orange-list, \\"2\\");\\n$oc-orange-3: map-get($oc-orange-list, \\"3\\");\\n$oc-orange-4: map-get($oc-orange-list, \\"4\\");\\n$oc-orange-5: map-get($oc-orange-list, \\"5\\");\\n$oc-orange-6: map-get($oc-orange-list, \\"6\\");\\n$oc-orange-7: map-get($oc-orange-list, \\"7\\");\\n$oc-orange-8: map-get($oc-orange-list, \\"8\\");\\n$oc-orange-9: map-get($oc-orange-list, \\"9\\");\\n\\n\\n//  Color list\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-color-spectrum:   9;\\n\\n$oc-color-list: (\\n  $oc-gray-list:      \\"gray\\",\\n  $oc-red-list:      \\"red\\",\\n  $oc-pink-list:      \\"pink\\",\\n  $oc-grape-list:      \\"grape\\",\\n  $oc-violet-list:      \\"violet\\",\\n  $oc-indigo-list:      \\"indigo\\",\\n  $oc-blue-list:      \\"blue\\",\\n  $oc-cyan-list:      \\"cyan\\",\\n  $oc-teal-list:      \\"teal\\",\\n  $oc-green-list:      \\"green\\",\\n  $oc-lime-list:      \\"lime\\",\\n  $oc-yellow-list:      \\"yellow\\",\\n  $oc-orange-list:      \\"orange\\"\\n);\\n"],"sourceRoot":""}]);
// Exports
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 128952 characters]
//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../css/styles.scss
`);
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../css/variables.module.scss": (
              /*!******************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../css/variables.module.scss ***!
                \******************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, "", "",{"version":3,"sources":[],"names":[],"mappings":"","sourceRoot":""}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n	"themeFilter": "invert(93%) hue-rotate(180deg)",\n	"rightSidebarWidth": "302px"\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vY3NzL3ZhcmlhYmxlcy5tb2R1bGUuc2Nzcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQzhIO0FBQ2pCO0FBQzdHLDhCQUE4Qix1R0FBMkIsQ0FBQyxnSEFBcUM7QUFDL0Y7QUFDQSxpREFBaUQsa0VBQWtFO0FBQ25IO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpRUFBZSx1QkFBdUIsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jc3MvdmFyaWFibGVzLm1vZHVsZS5zY3NzP2VmNGMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiXCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W10sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIlwiLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5sb2NhbHMgPSB7XG5cdFwidGhlbWVGaWx0ZXJcIjogXCJpbnZlcnQoOTMlKSBodWUtcm90YXRlKDE4MGRlZylcIixcblx0XCJyaWdodFNpZGViYXJXaWR0aFwiOiBcIjMwMnB4XCJcbn07XG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../css/variables.module.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../element/Hyperlink.scss": (
              /*!***************************************************************************************************************************************************************************************!*\
                !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../element/Hyperlink.scss ***!
                \***************************************************************************************************************************************************************************************/
              /***/
              (module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ":export {\\n  themeFilter: invert(93%) hue-rotate(180deg);\\n  rightSidebarWidth: 302px;\\n}\\n\\n.excalidraw-hyperlinkContainer {\\n  display: flex;\\n  align-items: center;\\n  justify-content: space-between;\\n  position: absolute;\\n  box-shadow: 0px 2px 4px 0 rgba(0, 0, 0, 0.3);\\n  z-index: 100;\\n  background: var(--island-bg-color);\\n  border-radius: var(--border-radius-md);\\n  box-sizing: border-box;\\n  min-height: 42px;\\n}\\n.excalidraw-hyperlinkContainer-input,\\n.excalidraw-hyperlinkContainer button {\\n  z-index: 100;\\n}\\n.excalidraw-hyperlinkContainer-input, .excalidraw-hyperlinkContainer-link {\\n  height: 24px;\\n  padding: 0 8px;\\n  line-height: 24px;\\n  font-size: 0.9rem;\\n  font-weight: 500;\\n  font-family: var(--ui-font);\\n}\\n.excalidraw-hyperlinkContainer-input {\\n  width: 18rem;\\n  border: none;\\n  background-color: transparent;\\n  color: var(--text-primary-color);\\n  outline: none;\\n  border: none;\\n  box-shadow: none !important;\\n}\\n.excalidraw-hyperlinkContainer-link {\\n  overflow: hidden;\\n  text-overflow: ellipsis;\\n  white-space: nowrap;\\n  max-width: 15rem;\\n}\\n.excalidraw-hyperlinkContainer button {\\n  color: #228be6;\\n  background-color: transparent !important;\\n  font-weight: 500;\\n}\\n.excalidraw-hyperlinkContainer button.excalidraw-hyperlinkContainer--remove {\\n  color: #c92a2a;\\n}\\n.excalidraw-hyperlinkContainer--remove .ToolIcon__icon svg {\\n  color: #fa5252;\\n}\\n.excalidraw-hyperlinkContainer .ToolIcon__icon {\\n  width: 2rem;\\n  height: 2rem;\\n}\\n.excalidraw-hyperlinkContainer__buttons {\\n  flex: 0 0 auto;\\n}", "",{"version":3,"sources":["webpack://./../../css/variables.module.scss","webpack://./../../element/Hyperlink.scss","webpack://./../../../node_modules/open-color/open-color.scss"],"names":[],"mappings":"AAiIA;EACE,2CAAA;EACA,wBAAA;AChIF;;AADA;EACE,aAAA;EACA,mBAAA;EACA,8BAAA;EACA,kBAAA;EACA,4CAAA;EACA,YAAA;EACA,kCAAA;EACA,sCAAA;EACA,sBAAA;EAEA,gBAAA;AAGF;AADE;;EAEE,YAAA;AAGJ;AAAE;EAEE,YAAA;EACA,cAAA;EACA,iBAAA;EACA,iBAAA;EACA,gBAAA;EACA,2BAAA;AACJ;AAEE;EACE,YAAA;EACA,YAAA;EACA,6BAAA;EACA,gCAAA;EAEA,aAAA;EACA,YAAA;EACA,2BAAA;AADJ;AAIE;EACE,gBAAA;EACA,uBAAA;EACA,mBAAA;EACA,gBAAA;AAFJ;AAKE;EACE,cC4JQ;ED3JR,wCAAA;EACA,gBAAA;AAHJ;AAII;EACE,cCeK;ADjBX;AAME;EACE,cCOO;ADXX;AAOE;EACE,WAAA;EACA,YAAA;AALJ;AAQE;EACE,cAAA;AANJ","sourcesContent":["@import \\"open-color/open-color.scss\\";\\n\\n@mixin isMobile() {\\n  @at-root .excalidraw--mobile#{&} {\\n    @content;\\n  }\\n}\\n\\n@mixin toolbarButtonColorStates {\\n  &.fillable {\\n    .ToolIcon_type_radio,\\n    .ToolIcon_type_checkbox {\\n      &:checked + .ToolIcon__icon {\\n        --icon-fill-color: var(--color-on-primary-container);\\n\\n        svg {\\n          fill: var(--icon-fill-color);\\n        }\\n      }\\n    }\\n  }\\n\\n  .ToolIcon_type_radio,\\n  .ToolIcon_type_checkbox {\\n    &:checked + .ToolIcon__icon {\\n      background: var(--color-surface-primary-container);\\n      --keybinding-color: var(--color-on-primary-container);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n\\n  .ToolIcon__keybinding {\\n    bottom: 4px;\\n    right: 4px;\\n  }\\n\\n  .ToolIcon__icon {\\n    &:hover {\\n      background: var(--button-hover-bg);\\n    }\\n\\n    &:active {\\n      background: var(--button-hover-bg);\\n      border: 1px solid var(--button-active-border);\\n\\n      svg {\\n        color: var(--color-on-primary-container);\\n      }\\n    }\\n  }\\n}\\n\\n@mixin outlineButtonStyles {\\n  display: flex;\\n  justify-content: center;\\n  align-items: center;\\n  padding: 0.625rem;\\n  width: var(--button-width, var(--default-button-size));\\n  height: var(--button-height, var(--default-button-size));\\n  box-sizing: border-box;\\n  border-width: 1px;\\n  border-style: solid;\\n  border-color: var(--button-border, var(--default-border-color));\\n  border-radius: var(--border-radius-lg);\\n  cursor: pointer;\\n  background-color: var(--button-bg, var(--island-bg-color));\\n  color: var(--button-color, var(--color-on-surface));\\n\\n  svg {\\n    width: var(--button-width, var(--lg-icon-size));\\n    height: var(--button-height, var(--lg-icon-size));\\n  }\\n\\n  &:hover {\\n    background-color: var(--button-hover-bg, var(--island-bg-color));\\n    border-color: var(\\n      --button-hover-border,\\n      var(--button-border, var(--default-border-color))\\n    );\\n    color: var(\\n      --button-hover-color,\\n      var(--button-color, var(--text-primary-color, inherit))\\n    );\\n  }\\n\\n  &:active {\\n    background-color: var(--button-active-bg, var(--island-bg-color));\\n    border-color: var(--button-active-border, var(--color-primary-darkest));\\n  }\\n\\n  &.active {\\n    background-color: var(\\n      --button-selected-bg,\\n      var(--color-surface-primary-container)\\n    );\\n    border-color: var(\\n      --button-selected-border,\\n      var(--color-surface-primary-container)\\n    );\\n\\n    &:hover {\\n      background-color: var(\\n        --button-selected-hover-bg,\\n        var(--color-surface-primary-container)\\n      );\\n    }\\n\\n    svg {\\n      color: var(--button-color, var(--color-on-primary-container));\\n    }\\n  }\\n}\\n\\n@mixin filledButtonOnCanvas {\\n  border: none;\\n  box-shadow: 0 0 0 1px var(--color-surface-lowest);\\n  background-color: var(--color-surface-low);\\n\\n  &:active {\\n    box-shadow: 0 0 0 1px var(--color-brand-active);\\n  }\\n}\\n\\n$theme-filter: \\"invert(93%) hue-rotate(180deg)\\";\\n$right-sidebar-width: \\"302px\\";\\n\\n:export {\\n  themeFilter: unquote($theme-filter);\\n  rightSidebarWidth: unquote($right-sidebar-width);\\n}\\n","@import \\"../css/variables.module\\";\\n\\n.excalidraw-hyperlinkContainer {\\n  display: flex;\\n  align-items: center;\\n  justify-content: space-between;\\n  position: absolute;\\n  box-shadow: 0px 2px 4px 0 rgb(0 0 0 / 30%);\\n  z-index: 100;\\n  background: var(--island-bg-color);\\n  border-radius: var(--border-radius-md);\\n  box-sizing: border-box;\\n  // to account for LS due to rendering icons after new link created\\n  min-height: 42px;\\n\\n  &-input,\\n  button {\\n    z-index: 100;\\n  }\\n\\n  &-input,\\n  &-link {\\n    height: 24px;\\n    padding: 0 8px;\\n    line-height: 24px;\\n    font-size: 0.9rem;\\n    font-weight: 500;\\n    font-family: var(--ui-font);\\n  }\\n\\n  &-input {\\n    width: 18rem;\\n    border: none;\\n    background-color: transparent;\\n    color: var(--text-primary-color);\\n\\n    outline: none;\\n    border: none;\\n    box-shadow: none !important;\\n  }\\n\\n  &-link {\\n    overflow: hidden;\\n    text-overflow: ellipsis;\\n    white-space: nowrap;\\n    max-width: 15rem;\\n  }\\n\\n  button {\\n    color: $oc-blue-6;\\n    background-color: transparent !important;\\n    font-weight: 500;\\n    &.excalidraw-hyperlinkContainer--remove {\\n      color: $oc-red-9;\\n    }\\n  }\\n\\n  &--remove .ToolIcon__icon svg {\\n    color: $oc-red-6;\\n  }\\n\\n  .ToolIcon__icon {\\n    width: 2rem;\\n    height: 2rem;\\n  }\\n\\n  &__buttons {\\n    flex: 0 0 auto;\\n  }\\n}\\n","//\\n//\\n//  \u{1D5D6} \u{1D5E2} \u{1D5DF} \u{1D5E2} \u{1D5E5}\\n//  v 1.9.1\\n//\\n//  \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\\n\\n\\n//  General\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-white:         #ffffff;\\n$oc-black:         #000000;\\n\\n\\n//  Gray\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-gray-list: (\\n  \\"0\\": #f8f9fa,\\n  \\"1\\": #f1f3f5,\\n  \\"2\\": #e9ecef,\\n  \\"3\\": #dee2e6,\\n  \\"4\\": #ced4da,\\n  \\"5\\": #adb5bd,\\n  \\"6\\": #868e96,\\n  \\"7\\": #495057,\\n  \\"8\\": #343a40,\\n  \\"9\\": #212529\\n);\\n\\n$oc-gray-0: map-get($oc-gray-list, \\"0\\");\\n$oc-gray-1: map-get($oc-gray-list, \\"1\\");\\n$oc-gray-2: map-get($oc-gray-list, \\"2\\");\\n$oc-gray-3: map-get($oc-gray-list, \\"3\\");\\n$oc-gray-4: map-get($oc-gray-list, \\"4\\");\\n$oc-gray-5: map-get($oc-gray-list, \\"5\\");\\n$oc-gray-6: map-get($oc-gray-list, \\"6\\");\\n$oc-gray-7: map-get($oc-gray-list, \\"7\\");\\n$oc-gray-8: map-get($oc-gray-list, \\"8\\");\\n$oc-gray-9: map-get($oc-gray-list, \\"9\\");\\n\\n\\n//  Red\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-red-list: (\\n  \\"0\\": #fff5f5,\\n  \\"1\\": #ffe3e3,\\n  \\"2\\": #ffc9c9,\\n  \\"3\\": #ffa8a8,\\n  \\"4\\": #ff8787,\\n  \\"5\\": #ff6b6b,\\n  \\"6\\": #fa5252,\\n  \\"7\\": #f03e3e,\\n  \\"8\\": #e03131,\\n  \\"9\\": #c92a2a\\n);\\n\\n$oc-red-0: map-get($oc-red-list, \\"0\\");\\n$oc-red-1: map-get($oc-red-list, \\"1\\");\\n$oc-red-2: map-get($oc-red-list, \\"2\\");\\n$oc-red-3: map-get($oc-red-list, \\"3\\");\\n$oc-red-4: map-get($oc-red-list, \\"4\\");\\n$oc-red-5: map-get($oc-red-list, \\"5\\");\\n$oc-red-6: map-get($oc-red-list, \\"6\\");\\n$oc-red-7: map-get($oc-red-list, \\"7\\");\\n$oc-red-8: map-get($oc-red-list, \\"8\\");\\n$oc-red-9: map-get($oc-red-list, \\"9\\");\\n\\n\\n//  Pink\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-pink-list: (\\n  \\"0\\": #fff0f6,\\n  \\"1\\": #ffdeeb,\\n  \\"2\\": #fcc2d7,\\n  \\"3\\": #faa2c1,\\n  \\"4\\": #f783ac,\\n  \\"5\\": #f06595,\\n  \\"6\\": #e64980,\\n  \\"7\\": #d6336c,\\n  \\"8\\": #c2255c,\\n  \\"9\\": #a61e4d\\n);\\n\\n$oc-pink-0: map-get($oc-pink-list, \\"0\\");\\n$oc-pink-1: map-get($oc-pink-list, \\"1\\");\\n$oc-pink-2: map-get($oc-pink-list, \\"2\\");\\n$oc-pink-3: map-get($oc-pink-list, \\"3\\");\\n$oc-pink-4: map-get($oc-pink-list, \\"4\\");\\n$oc-pink-5: map-get($oc-pink-list, \\"5\\");\\n$oc-pink-6: map-get($oc-pink-list, \\"6\\");\\n$oc-pink-7: map-get($oc-pink-list, \\"7\\");\\n$oc-pink-8: map-get($oc-pink-list, \\"8\\");\\n$oc-pink-9: map-get($oc-pink-list, \\"9\\");\\n\\n\\n//  Grape\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-grape-list: (\\n  \\"0\\": #f8f0fc,\\n  \\"1\\": #f3d9fa,\\n  \\"2\\": #eebefa,\\n  \\"3\\": #e599f7,\\n  \\"4\\": #da77f2,\\n  \\"5\\": #cc5de8,\\n  \\"6\\": #be4bdb,\\n  \\"7\\": #ae3ec9,\\n  \\"8\\": #9c36b5,\\n  \\"9\\": #862e9c\\n);\\n\\n$oc-grape-0: map-get($oc-grape-list, \\"0\\");\\n$oc-grape-1: map-get($oc-grape-list, \\"1\\");\\n$oc-grape-2: map-get($oc-grape-list, \\"2\\");\\n$oc-grape-3: map-get($oc-grape-list, \\"3\\");\\n$oc-grape-4: map-get($oc-grape-list, \\"4\\");\\n$oc-grape-5: map-get($oc-grape-list, \\"5\\");\\n$oc-grape-6: map-get($oc-grape-list, \\"6\\");\\n$oc-grape-7: map-get($oc-grape-list, \\"7\\");\\n$oc-grape-8: map-get($oc-grape-list, \\"8\\");\\n$oc-grape-9: map-get($oc-grape-list, \\"9\\");\\n\\n\\n//  Violet\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-violet-list: (\\n  \\"0\\": #f3f0ff,\\n  \\"1\\": #e5dbff,\\n  \\"2\\": #d0bfff,\\n  \\"3\\": #b197fc,\\n  \\"4\\": #9775fa,\\n  \\"5\\": #845ef7,\\n  \\"6\\": #7950f2,\\n  \\"7\\": #7048e8,\\n  \\"8\\": #6741d9,\\n  \\"9\\": #5f3dc4\\n);\\n\\n$oc-violet-0: map-get($oc-violet-list, \\"0\\");\\n$oc-violet-1: map-get($oc-violet-list, \\"1\\");\\n$oc-violet-2: map-get($oc-violet-list, \\"2\\");\\n$oc-violet-3: map-get($oc-violet-list, \\"3\\");\\n$oc-violet-4: map-get($oc-violet-list, \\"4\\");\\n$oc-violet-5: map-get($oc-violet-list, \\"5\\");\\n$oc-violet-6: map-get($oc-violet-list, \\"6\\");\\n$oc-violet-7: map-get($oc-violet-list, \\"7\\");\\n$oc-violet-8: map-get($oc-violet-list, \\"8\\");\\n$oc-violet-9: map-get($oc-violet-list, \\"9\\");\\n\\n\\n//  Indigo\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-indigo-list: (\\n  \\"0\\": #edf2ff,\\n  \\"1\\": #dbe4ff,\\n  \\"2\\": #bac8ff,\\n  \\"3\\": #91a7ff,\\n  \\"4\\": #748ffc,\\n  \\"5\\": #5c7cfa,\\n  \\"6\\": #4c6ef5,\\n  \\"7\\": #4263eb,\\n  \\"8\\": #3b5bdb,\\n  \\"9\\": #364fc7\\n);\\n\\n$oc-indigo-0: map-get($oc-indigo-list, \\"0\\");\\n$oc-indigo-1: map-get($oc-indigo-list, \\"1\\");\\n$oc-indigo-2: map-get($oc-indigo-list, \\"2\\");\\n$oc-indigo-3: map-get($oc-indigo-list, \\"3\\");\\n$oc-indigo-4: map-get($oc-indigo-list, \\"4\\");\\n$oc-indigo-5: map-get($oc-indigo-list, \\"5\\");\\n$oc-indigo-6: map-get($oc-indigo-list, \\"6\\");\\n$oc-indigo-7: map-get($oc-indigo-list, \\"7\\");\\n$oc-indigo-8: map-get($oc-indigo-list, \\"8\\");\\n$oc-indigo-9: map-get($oc-indigo-list, \\"9\\");\\n\\n\\n//  Blue\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-blue-list: (\\n  \\"0\\": #e7f5ff,\\n  \\"1\\": #d0ebff,\\n  \\"2\\": #a5d8ff,\\n  \\"3\\": #74c0fc,\\n  \\"4\\": #4dabf7,\\n  \\"5\\": #339af0,\\n  \\"6\\": #228be6,\\n  \\"7\\": #1c7ed6,\\n  \\"8\\": #1971c2,\\n  \\"9\\": #1864ab\\n);\\n\\n$oc-blue-0: map-get($oc-blue-list, \\"0\\");\\n$oc-blue-1: map-get($oc-blue-list, \\"1\\");\\n$oc-blue-2: map-get($oc-blue-list, \\"2\\");\\n$oc-blue-3: map-get($oc-blue-list, \\"3\\");\\n$oc-blue-4: map-get($oc-blue-list, \\"4\\");\\n$oc-blue-5: map-get($oc-blue-list, \\"5\\");\\n$oc-blue-6: map-get($oc-blue-list, \\"6\\");\\n$oc-blue-7: map-get($oc-blue-list, \\"7\\");\\n$oc-blue-8: map-get($oc-blue-list, \\"8\\");\\n$oc-blue-9: map-get($oc-blue-list, \\"9\\");\\n\\n\\n//  Cyan\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-cyan-list: (\\n  \\"0\\": #e3fafc,\\n  \\"1\\": #c5f6fa,\\n  \\"2\\": #99e9f2,\\n  \\"3\\": #66d9e8,\\n  \\"4\\": #3bc9db,\\n  \\"5\\": #22b8cf,\\n  \\"6\\": #15aabf,\\n  \\"7\\": #1098ad,\\n  \\"8\\": #0c8599,\\n  \\"9\\": #0b7285\\n);\\n\\n$oc-cyan-0: map-get($oc-cyan-list, \\"0\\");\\n$oc-cyan-1: map-get($oc-cyan-list, \\"1\\");\\n$oc-cyan-2: map-get($oc-cyan-list, \\"2\\");\\n$oc-cyan-3: map-get($oc-cyan-list, \\"3\\");\\n$oc-cyan-4: map-get($oc-cyan-list, \\"4\\");\\n$oc-cyan-5: map-get($oc-cyan-list, \\"5\\");\\n$oc-cyan-6: map-get($oc-cyan-list, \\"6\\");\\n$oc-cyan-7: map-get($oc-cyan-list, \\"7\\");\\n$oc-cyan-8: map-get($oc-cyan-list, \\"8\\");\\n$oc-cyan-9: map-get($oc-cyan-list, \\"9\\");\\n\\n\\n//  Teal\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-teal-list: (\\n  \\"0\\": #e6fcf5,\\n  \\"1\\": #c3fae8,\\n  \\"2\\": #96f2d7,\\n  \\"3\\": #63e6be,\\n  \\"4\\": #38d9a9,\\n  \\"5\\": #20c997,\\n  \\"6\\": #12b886,\\n  \\"7\\": #0ca678,\\n  \\"8\\": #099268,\\n  \\"9\\": #087f5b\\n);\\n\\n$oc-teal-0: map-get($oc-teal-list, \\"0\\");\\n$oc-teal-1: map-get($oc-teal-list, \\"1\\");\\n$oc-teal-2: map-get($oc-teal-list, \\"2\\");\\n$oc-teal-3: map-get($oc-teal-list, \\"3\\");\\n$oc-teal-4: map-get($oc-teal-list, \\"4\\");\\n$oc-teal-5: map-get($oc-teal-list, \\"5\\");\\n$oc-teal-6: map-get($oc-teal-list, \\"6\\");\\n$oc-teal-7: map-get($oc-teal-list, \\"7\\");\\n$oc-teal-8: map-get($oc-teal-list, \\"8\\");\\n$oc-teal-9: map-get($oc-teal-list, \\"9\\");\\n\\n\\n//  Green\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-green-list: (\\n  \\"0\\": #ebfbee,\\n  \\"1\\": #d3f9d8,\\n  \\"2\\": #b2f2bb,\\n  \\"3\\": #8ce99a,\\n  \\"4\\": #69db7c,\\n  \\"5\\": #51cf66,\\n  \\"6\\": #40c057,\\n  \\"7\\": #37b24d,\\n  \\"8\\": #2f9e44,\\n  \\"9\\": #2b8a3e\\n);\\n\\n$oc-green-0: map-get($oc-green-list, \\"0\\");\\n$oc-green-1: map-get($oc-green-list, \\"1\\");\\n$oc-green-2: map-get($oc-green-list, \\"2\\");\\n$oc-green-3: map-get($oc-green-list, \\"3\\");\\n$oc-green-4: map-get($oc-green-list, \\"4\\");\\n$oc-green-5: map-get($oc-green-list, \\"5\\");\\n$oc-green-6: map-get($oc-green-list, \\"6\\");\\n$oc-green-7: map-get($oc-green-list, \\"7\\");\\n$oc-green-8: map-get($oc-green-list, \\"8\\");\\n$oc-green-9: map-get($oc-green-list, \\"9\\");\\n\\n\\n//  Lime\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-lime-list: (\\n  \\"0\\": #f4fce3,\\n  \\"1\\": #e9fac8,\\n  \\"2\\": #d8f5a2,\\n  \\"3\\": #c0eb75,\\n  \\"4\\": #a9e34b,\\n  \\"5\\": #94d82d,\\n  \\"6\\": #82c91e,\\n  \\"7\\": #74b816,\\n  \\"8\\": #66a80f,\\n  \\"9\\": #5c940d\\n);\\n\\n$oc-lime-0: map-get($oc-lime-list, \\"0\\");\\n$oc-lime-1: map-get($oc-lime-list, \\"1\\");\\n$oc-lime-2: map-get($oc-lime-list, \\"2\\");\\n$oc-lime-3: map-get($oc-lime-list, \\"3\\");\\n$oc-lime-4: map-get($oc-lime-list, \\"4\\");\\n$oc-lime-5: map-get($oc-lime-list, \\"5\\");\\n$oc-lime-6: map-get($oc-lime-list, \\"6\\");\\n$oc-lime-7: map-get($oc-lime-list, \\"7\\");\\n$oc-lime-8: map-get($oc-lime-list, \\"8\\");\\n$oc-lime-9: map-get($oc-lime-list, \\"9\\");\\n\\n\\n//  Yellow\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-yellow-list: (\\n  \\"0\\": #fff9db,\\n  \\"1\\": #fff3bf,\\n  \\"2\\": #ffec99,\\n  \\"3\\": #ffe066,\\n  \\"4\\": #ffd43b,\\n  \\"5\\": #fcc419,\\n  \\"6\\": #fab005,\\n  \\"7\\": #f59f00,\\n  \\"8\\": #f08c00,\\n  \\"9\\": #e67700\\n);\\n\\n$oc-yellow-0: map-get($oc-yellow-list, \\"0\\");\\n$oc-yellow-1: map-get($oc-yellow-list, \\"1\\");\\n$oc-yellow-2: map-get($oc-yellow-list, \\"2\\");\\n$oc-yellow-3: map-get($oc-yellow-list, \\"3\\");\\n$oc-yellow-4: map-get($oc-yellow-list, \\"4\\");\\n$oc-yellow-5: map-get($oc-yellow-list, \\"5\\");\\n$oc-yellow-6: map-get($oc-yellow-list, \\"6\\");\\n$oc-yellow-7: map-get($oc-yellow-list, \\"7\\");\\n$oc-yellow-8: map-get($oc-yellow-list, \\"8\\");\\n$oc-yellow-9: map-get($oc-yellow-list, \\"9\\");\\n\\n\\n//  Orange\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-orange-list: (\\n  \\"0\\": #fff4e6,\\n  \\"1\\": #ffe8cc,\\n  \\"2\\": #ffd8a8,\\n  \\"3\\": #ffc078,\\n  \\"4\\": #ffa94d,\\n  \\"5\\": #ff922b,\\n  \\"6\\": #fd7e14,\\n  \\"7\\": #f76707,\\n  \\"8\\": #e8590c,\\n  \\"9\\": #d9480f\\n);\\n\\n$oc-orange-0: map-get($oc-orange-list, \\"0\\");\\n$oc-orange-1: map-get($oc-orange-list, \\"1\\");\\n$oc-orange-2: map-get($oc-orange-list, \\"2\\");\\n$oc-orange-3: map-get($oc-orange-list, \\"3\\");\\n$oc-orange-4: map-get($oc-orange-list, \\"4\\");\\n$oc-orange-5: map-get($oc-orange-list, \\"5\\");\\n$oc-orange-6: map-get($oc-orange-list, \\"6\\");\\n$oc-orange-7: map-get($oc-orange-list, \\"7\\");\\n$oc-orange-8: map-get($oc-orange-list, \\"8\\");\\n$oc-orange-9: map-get($oc-orange-list, \\"9\\");\\n\\n\\n//  Color list\\n//  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n\\n$oc-color-spectrum:   9;\\n\\n$oc-color-list: (\\n  $oc-gray-list:      \\"gray\\",\\n  $oc-red-list:      \\"red\\",\\n  $oc-pink-list:      \\"pink\\",\\n  $oc-grape-list:      \\"grape\\",\\n  $oc-violet-list:      \\"violet\\",\\n  $oc-indigo-list:      \\"indigo\\",\\n  $oc-blue-list:      \\"blue\\",\\n  $oc-cyan-list:      \\"cyan\\",\\n  $oc-teal-list:      \\"teal\\",\\n  $oc-green-list:      \\"green\\",\\n  $oc-lime-list:      \\"lime\\",\\n  $oc-yellow-list:      \\"yellow\\",\\n  $oc-orange-list:      \\"orange\\"\\n);\\n"],"sourceRoot":""}]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 31476 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../element/Hyperlink.scss\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/runtime/api.js": (
              /*!*****************************************************!*\
                !*** ./node_modules/css-loader/dist/runtime/api.js ***!
                \*****************************************************/
              /***/
              (module) => {
                "use strict";
                eval('\n\n/*\n  MIT License http://www.opensource.org/licenses/mit-license.php\n  Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n  var list = []; // return the list of modules as css string\n\n  list.toString = function toString() {\n    return this.map(function (item) {\n      var content = "";\n      var needLayer = typeof item[5] !== "undefined";\n\n      if (item[4]) {\n        content += "@supports (".concat(item[4], ") {");\n      }\n\n      if (item[2]) {\n        content += "@media ".concat(item[2], " {");\n      }\n\n      if (needLayer) {\n        content += "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {");\n      }\n\n      content += cssWithMappingToString(item);\n\n      if (needLayer) {\n        content += "}";\n      }\n\n      if (item[2]) {\n        content += "}";\n      }\n\n      if (item[4]) {\n        content += "}";\n      }\n\n      return content;\n    }).join("");\n  }; // import a list of modules into the list\n\n\n  list.i = function i(modules, media, dedupe, supports, layer) {\n    if (typeof modules === "string") {\n      modules = [[null, modules, undefined]];\n    }\n\n    var alreadyImportedModules = {};\n\n    if (dedupe) {\n      for (var k = 0; k < this.length; k++) {\n        var id = this[k][0];\n\n        if (id != null) {\n          alreadyImportedModules[id] = true;\n        }\n      }\n    }\n\n    for (var _k = 0; _k < modules.length; _k++) {\n      var item = [].concat(modules[_k]);\n\n      if (dedupe && alreadyImportedModules[item[0]]) {\n        continue;\n      }\n\n      if (typeof layer !== "undefined") {\n        if (typeof item[5] === "undefined") {\n          item[5] = layer;\n        } else {\n          item[1] = "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {").concat(item[1], "}");\n          item[5] = layer;\n        }\n      }\n\n      if (media) {\n        if (!item[2]) {\n          item[2] = media;\n        } else {\n          item[1] = "@media ".concat(item[2], " {").concat(item[1], "}");\n          item[2] = media;\n        }\n      }\n\n      if (supports) {\n        if (!item[4]) {\n          item[4] = "".concat(supports);\n        } else {\n          item[1] = "@supports (".concat(item[4], ") {").concat(item[1], "}");\n          item[4] = supports;\n        }\n      }\n\n      list.push(item);\n    }\n  };\n\n  return list;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4356 characters]\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/runtime/api.js\n');
              }
            ),
            /***/
            "./node_modules/css-loader/dist/runtime/getUrl.js": (
              /*!********************************************************!*\
                !*** ./node_modules/css-loader/dist/runtime/getUrl.js ***!
                \********************************************************/
              /***/
              (module) => {
                "use strict";
                eval(`

module.exports = function (url, options) {
  if (!options) {
    options = {};
  }

  if (!url) {
    return url;
  }

  url = String(url.__esModule ? url.default : url); // If url is already wrapped in quotes, remove them

  if (/^['"].*['"]$/.test(url)) {
    url = url.slice(1, -1);
  }

  if (options.hash) {
    url += options.hash;
  } // Should url be wrapped?
  // See https://drafts.csswg.org/css-values-3/#urls


  if (/["'() \\t\\n]|(%20)/.test(url) || options.needQuotes) {
    return "\\"".concat(url.replace(/"/g, '\\\\"').replace(/\\n/g, "\\\\n"), "\\"");
  }

  return url;
};//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvZ2V0VXJsLmpzLmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxvREFBb0Q7O0FBRXBEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTtBQUNKOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9nZXRVcmwuanM/MWRlNSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodXJsLCBvcHRpb25zKSB7XG4gIGlmICghb3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuXG4gIGlmICghdXJsKSB7XG4gICAgcmV0dXJuIHVybDtcbiAgfVxuXG4gIHVybCA9IFN0cmluZyh1cmwuX19lc01vZHVsZSA/IHVybC5kZWZhdWx0IDogdXJsKTsgLy8gSWYgdXJsIGlzIGFscmVhZHkgd3JhcHBlZCBpbiBxdW90ZXMsIHJlbW92ZSB0aGVtXG5cbiAgaWYgKC9eWydcIl0uKlsnXCJdJC8udGVzdCh1cmwpKSB7XG4gICAgdXJsID0gdXJsLnNsaWNlKDEsIC0xKTtcbiAgfVxuXG4gIGlmIChvcHRpb25zLmhhc2gpIHtcbiAgICB1cmwgKz0gb3B0aW9ucy5oYXNoO1xuICB9IC8vIFNob3VsZCB1cmwgYmUgd3JhcHBlZD9cbiAgLy8gU2VlIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtdmFsdWVzLTMvI3VybHNcblxuXG4gIGlmICgvW1wiJygpIFxcdFxcbl18KCUyMCkvLnRlc3QodXJsKSB8fCBvcHRpb25zLm5lZWRRdW90ZXMpIHtcbiAgICByZXR1cm4gXCJcXFwiXCIuY29uY2F0KHVybC5yZXBsYWNlKC9cIi9nLCAnXFxcXFwiJykucmVwbGFjZSgvXFxuL2csIFwiXFxcXG5cIiksIFwiXFxcIlwiKTtcbiAgfVxuXG4gIHJldHVybiB1cmw7XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==
//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/runtime/getUrl.js
`);
              }
            ),
            /***/
            "./node_modules/css-loader/dist/runtime/sourceMaps.js": (
              /*!************************************************************!*\
                !*** ./node_modules/css-loader/dist/runtime/sourceMaps.js ***!
                \************************************************************/
              /***/
              (module) => {
                "use strict";
                eval('\n\nmodule.exports = function (item) {\n  var content = item[1];\n  var cssMapping = item[3];\n\n  if (!cssMapping) {\n    return content;\n  }\n\n  if (typeof btoa === "function") {\n    var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n    var data = "sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(base64);\n    var sourceMapping = "/*# ".concat(data, " */");\n    var sourceURLs = cssMapping.sources.map(function (source) {\n      return "/*# sourceURL=".concat(cssMapping.sourceRoot || "").concat(source, " */");\n    });\n    return [content].concat(sourceURLs).concat([sourceMapping]).join("\\n");\n  }\n\n  return [content].join("\\n");\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx1REFBdUQsY0FBYztBQUNyRTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanM/YWYxMiJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlbSkge1xuICB2YXIgY29udGVudCA9IGl0ZW1bMV07XG4gIHZhciBjc3NNYXBwaW5nID0gaXRlbVszXTtcblxuICBpZiAoIWNzc01hcHBpbmcpIHtcbiAgICByZXR1cm4gY29udGVudDtcbiAgfVxuXG4gIGlmICh0eXBlb2YgYnRvYSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgdmFyIGJhc2U2NCA9IGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KGNzc01hcHBpbmcpKSkpO1xuICAgIHZhciBkYXRhID0gXCJzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxcIi5jb25jYXQoYmFzZTY0KTtcbiAgICB2YXIgc291cmNlTWFwcGluZyA9IFwiLyojIFwiLmNvbmNhdChkYXRhLCBcIiAqL1wiKTtcbiAgICB2YXIgc291cmNlVVJMcyA9IGNzc01hcHBpbmcuc291cmNlcy5tYXAoZnVuY3Rpb24gKHNvdXJjZSkge1xuICAgICAgcmV0dXJuIFwiLyojIHNvdXJjZVVSTD1cIi5jb25jYXQoY3NzTWFwcGluZy5zb3VyY2VSb290IHx8IFwiXCIpLmNvbmNhdChzb3VyY2UsIFwiICovXCIpO1xuICAgIH0pO1xuICAgIHJldHVybiBbY29udGVudF0uY29uY2F0KHNvdXJjZVVSTHMpLmNvbmNhdChbc291cmNlTWFwcGluZ10pLmpvaW4oXCJcXG5cIik7XG4gIH1cblxuICByZXR1cm4gW2NvbnRlbnRdLmpvaW4oXCJcXG5cIik7XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/runtime/sourceMaps.js\n');
              }
            ),
            /***/
            "../../../node_modules/canvas-roundrect-polyfill/roundRect.js": (
              /*!********************************************************************!*\
                !*** ../../../node_modules/canvas-roundrect-polyfill/roundRect.js ***!
                \********************************************************************/
              /***/
              () => {
                eval('/*\n *  Implements the .roundRect() method of the CanvasPath mixin\n *  as introduced by https://github.com/whatwg/html/pull/6765\n */\n(() => {\n  "use strict";\n\n  var _a, _b, _c;\n\n  var _d, _e, _f;\n\n  (_a = (_d = Path2D.prototype).roundRect) !== null && _a !== void 0 ? _a : _d.roundRect = roundRect;\n\n  if (globalThis.CanvasRenderingContext2D) {\n    (_b = (_e = globalThis.CanvasRenderingContext2D.prototype).roundRect) !== null && _b !== void 0 ? _b : _e.roundRect = roundRect;\n  }\n\n  if (globalThis.OffscreenCanvasRenderingContext2D) {\n    (_c = (_f = globalThis.OffscreenCanvasRenderingContext2D.prototype).roundRect) !== null && _c !== void 0 ? _c : _f.roundRect = roundRect;\n  }\n\n  function roundRect(x, y, w, h, radii) {\n    if (![x, y, w, h].every(input => Number.isFinite(input))) {\n      return;\n    }\n\n    radii = parseRadiiArgument(radii);\n    let upperLeft, upperRight, lowerRight, lowerLeft;\n\n    if (radii.length === 4) {\n      upperLeft = toCornerPoint(radii[0]);\n      upperRight = toCornerPoint(radii[1]);\n      lowerRight = toCornerPoint(radii[2]);\n      lowerLeft = toCornerPoint(radii[3]);\n    } else if (radii.length === 3) {\n      upperLeft = toCornerPoint(radii[0]);\n      upperRight = toCornerPoint(radii[1]);\n      lowerLeft = toCornerPoint(radii[1]);\n      lowerRight = toCornerPoint(radii[2]);\n    } else if (radii.length === 2) {\n      upperLeft = toCornerPoint(radii[0]);\n      lowerRight = toCornerPoint(radii[0]);\n      upperRight = toCornerPoint(radii[1]);\n      lowerLeft = toCornerPoint(radii[1]);\n    } else if (radii.length === 1) {\n      upperLeft = toCornerPoint(radii[0]);\n      upperRight = toCornerPoint(radii[0]);\n      lowerRight = toCornerPoint(radii[0]);\n      lowerLeft = toCornerPoint(radii[0]);\n    } else {\n      throw new RangeError(`${getErrorMessageHeader(this)} ${radii.length} is not a valid size for radii sequence.`);\n    }\n\n    const corners = [upperLeft, upperRight, lowerRight, lowerLeft];\n    const negativeCorner = corners.find(({\n      x,\n      y\n    }) => x < 0 || y < 0);\n    const negativeValue = (negativeCorner === null || negativeCorner === void 0 ? void 0 : negativeCorner.x) < 0 ? negativeCorner.x : negativeCorner === null || negativeCorner === void 0 ? void 0 : negativeCorner.y;\n\n    if (corners.some(({\n      x,\n      y\n    }) => !Number.isFinite(x) || !Number.isFinite(y))) {\n      return;\n    }\n\n    if (negativeCorner) {\n      throw new RangeError(`${getErrorMessageHeader(this)} Radius value ${negativeCorner} is negative.`);\n    }\n\n    fixOverlappingCorners(corners);\n\n    if (w < 0 && h < 0) {\n      this.moveTo(x - upperLeft.x, y);\n      this.ellipse(x + w + upperRight.x, y - upperRight.y, upperRight.x, upperRight.y, 0, -Math.PI * 1.5, -Math.PI);\n      this.ellipse(x + w + lowerRight.x, y + h + lowerRight.y, lowerRight.x, lowerRight.y, 0, -Math.PI, -Math.PI / 2);\n      this.ellipse(x - lowerLeft.x, y + h + lowerLeft.y, lowerLeft.x, lowerLeft.y, 0, -Math.PI / 2, 0);\n      this.ellipse(x - upperLeft.x, y - upperLeft.y, upperLeft.x, upperLeft.y, 0, 0, -Math.PI / 2);\n    } else if (w < 0) {\n      this.moveTo(x - upperLeft.x, y);\n      this.ellipse(x + w + upperRight.x, y + upperRight.y, upperRight.x, upperRight.y, 0, -Math.PI / 2, -Math.PI, 1);\n      this.ellipse(x + w + lowerRight.x, y + h - lowerRight.y, lowerRight.x, lowerRight.y, 0, -Math.PI, -Math.PI * 1.5, 1);\n      this.ellipse(x - lowerLeft.x, y + h - lowerLeft.y, lowerLeft.x, lowerLeft.y, 0, Math.PI / 2, 0, 1);\n      this.ellipse(x - upperLeft.x, y + upperLeft.y, upperLeft.x, upperLeft.y, 0, 0, -Math.PI / 2, 1);\n    } else if (h < 0) {\n      this.moveTo(x + upperLeft.x, y);\n      this.ellipse(x + w - upperRight.x, y - upperRight.y, upperRight.x, upperRight.y, 0, Math.PI / 2, 0, 1);\n      this.ellipse(x + w - lowerRight.x, y + h + lowerRight.y, lowerRight.x, lowerRight.y, 0, 0, -Math.PI / 2, 1);\n      this.ellipse(x + lowerLeft.x, y + h + lowerLeft.y, lowerLeft.x, lowerLeft.y, 0, -Math.PI / 2, -Math.PI, 1);\n      this.ellipse(x + upperLeft.x, y - upperLeft.y, upperLeft.x, upperLeft.y, 0, -Math.PI, -Math.PI * 1.5, 1);\n    } else {\n      this.moveTo(x + upperLeft.x, y);\n      this.ellipse(x + w - upperRight.x, y + upperRight.y, upperRight.x, upperRight.y, 0, -Math.PI / 2, 0);\n      this.ellipse(x + w - lowerRight.x, y + h - lowerRight.y, lowerRight.x, lowerRight.y, 0, 0, Math.PI / 2);\n      this.ellipse(x + lowerLeft.x, y + h - lowerLeft.y, lowerLeft.x, lowerLeft.y, 0, Math.PI / 2, Math.PI);\n      this.ellipse(x + upperLeft.x, y + upperLeft.y, upperLeft.x, upperLeft.y, 0, Math.PI, Math.PI * 1.5);\n    }\n\n    this.closePath();\n    this.moveTo(x, y);\n\n    function toDOMPointInit(value) {\n      const {\n        x,\n        y,\n        z,\n        w\n      } = value;\n      return {\n        x,\n        y,\n        z,\n        w\n      };\n    }\n\n    function parseRadiiArgument(value) {\n      // https://webidl.spec.whatwg.org/#es-union\n      // with \'optional (unrestricted double or DOMPointInit\n      //   or sequence<(unrestricted double or DOMPointInit)>) radii = 0\'\n      const type = typeof value;\n\n      if (type === "undefined" || value === null) {\n        return [0];\n      }\n\n      if (type === "function") {\n        return [NaN];\n      }\n\n      if (type === "object") {\n        if (typeof value[Symbol.iterator] === "function") {\n          return [...value].map(elem => {\n            // https://webidl.spec.whatwg.org/#es-union\n            // with \'(unrestricted double or DOMPointInit)\'\n            const elemType = typeof elem;\n\n            if (elemType === "undefined" || elem === null) {\n              return 0;\n            }\n\n            if (elemType === "function") {\n              return NaN;\n            }\n\n            if (elemType === "object") {\n              return toDOMPointInit(elem);\n            }\n\n            return toUnrestrictedNumber(elem);\n          });\n        }\n\n        return [toDOMPointInit(value)];\n      }\n\n      return [toUnrestrictedNumber(value)];\n    }\n\n    function toUnrestrictedNumber(value) {\n      return +value;\n    }\n\n    function toCornerPoint(value) {\n      var _a, _b;\n\n      const asNumber = toUnrestrictedNumber(value);\n\n      if (Number.isFinite(asNumber)) {\n        return {\n          x: asNumber,\n          y: asNumber\n        };\n      }\n\n      if (Object(value) === value) {\n        return {\n          x: toUnrestrictedNumber((_a = value.x) !== null && _a !== void 0 ? _a : 0),\n          y: toUnrestrictedNumber((_b = value.y) !== null && _b !== void 0 ? _b : 0)\n        };\n      }\n\n      return {\n        x: NaN,\n        y: NaN\n      };\n    }\n\n    function fixOverlappingCorners(corners) {\n      const [upperLeft, upperRight, lowerRight, lowerLeft] = corners;\n      const factors = [Math.abs(w) / (upperLeft.x + upperRight.x), Math.abs(h) / (upperRight.y + lowerRight.y), Math.abs(w) / (lowerRight.x + lowerLeft.x), Math.abs(h) / (upperLeft.y + lowerLeft.y)];\n      const minFactor = Math.min(...factors);\n\n      if (minFactor <= 1) {\n        for (const radii of corners) {\n          radii.x *= minFactor;\n          radii.y *= minFactor;\n        }\n      }\n    }\n  }\n\n  function getErrorMessageHeader(instance) {\n    return `Failed to execute \'roundRect\' on \'${getConstructorName(instance)}\':`;\n  }\n\n  function getConstructorName(instance) {\n    return Object(instance) === instance && instance instanceof Path2D ? "Path2D" : instance instanceof (globalThis === null || globalThis === void 0 ? void 0 : globalThis.CanvasRenderingContext2D) ? "CanvasRenderingContext2D" : instance instanceof (globalThis === null || globalThis === void 0 ? void 0 : globalThis.OffscreenCanvasRenderingContext2D) ? "OffscreenCanvasRenderingContext2D" : (instance === null || instance === void 0 ? void 0 : instance.constructor.name) || instance;\n  }\n})();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 12356 characters]\n//# sourceURL=webpack-internal:///../../../node_modules/canvas-roundrect-polyfill/roundRect.js\n');
              }
            ),
            /***/
            "../../actions/actionAddToLibrary.ts": (
              /*!*******************************************!*\
                !*** ../../actions/actionAddToLibrary.ts ***!
                \*******************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "actionAddToLibrary": () => (/* binding */ actionAddToLibrary)\n/* harmony export */ });\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./register */ "../../actions/register.ts");\n/* harmony import */ var _element_newElement__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../element/newElement */ "../../element/newElement.ts");\n/* harmony import */ var _random__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../random */ "../../random.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n\n\n\n\n\nconst actionAddToLibrary = (0,_register__WEBPACK_IMPORTED_MODULE_0__.register)({\n  name: "addToLibrary",\n  trackEvent: {\n    category: "element"\n  },\n  perform: (elements, appState, _, app) => {\n    const selectedElements = app.scene.getSelectedElements({\n      selectedElementIds: appState.selectedElementIds,\n      includeBoundTextElement: true,\n      includeElementsInFrames: true\n    });\n\n    for (const type of _constants__WEBPACK_IMPORTED_MODULE_4__.LIBRARY_DISABLED_TYPES) {\n      if (selectedElements.some(element => element.type === type)) {\n        return {\n          commitToHistory: false,\n          appState: Object.assign(Object.assign({}, appState), {\n            errorMessage: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)(`errors.libraryElementTypeError.${type}`)\n          })\n        };\n      }\n    }\n\n    return app.library.getLatestLibrary().then(items => {\n      return app.library.setLibrary([{\n        id: (0,_random__WEBPACK_IMPORTED_MODULE_2__.randomId)(),\n        status: "unpublished",\n        elements: selectedElements.map(_element_newElement__WEBPACK_IMPORTED_MODULE_1__.deepCopyElement),\n        created: Date.now()\n      }, ...items]);\n    }).then(() => {\n      return {\n        commitToHistory: false,\n        appState: Object.assign(Object.assign({}, appState), {\n          toast: {\n            message: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("toast.addedToLibrary")\n          }\n        })\n      };\n    }).catch(error => {\n      return {\n        commitToHistory: false,\n        appState: Object.assign(Object.assign({}, appState), {\n          errorMessage: error.message\n        })\n      };\n    });\n  },\n  contextItemLabel: "labels.addToLibrary"\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vYWN0aW9ucy9hY3Rpb25BZGRUb0xpYnJhcnkudHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQXNDO0FBQ2tCO0FBQ25CO0FBQ1Q7QUFDMEI7QUFDL0MsMkJBQTJCLG1EQUFRO0FBQzFDO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTCx1QkFBdUIsOERBQXNCO0FBQzdDO0FBQ0E7QUFDQTtBQUNBLGtEQUFrRDtBQUNsRCwwQkFBMEIsd0NBQUMsbUNBQW1DLEtBQUs7QUFDbkUsV0FBVztBQUNYO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsWUFBWSxpREFBUTtBQUNwQjtBQUNBLHVDQUF1QyxnRUFBZTtBQUN0RDtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBLGdEQUFnRDtBQUNoRDtBQUNBLHFCQUFxQix3Q0FBQztBQUN0QjtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsZ0RBQWdEO0FBQ2hEO0FBQ0EsU0FBUztBQUNUO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vYWN0aW9ucy9hY3Rpb25BZGRUb0xpYnJhcnkudHM/YmEzNCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZWdpc3RlciB9IGZyb20gXCIuL3JlZ2lzdGVyXCI7XG5pbXBvcnQgeyBkZWVwQ29weUVsZW1lbnQgfSBmcm9tIFwiLi4vZWxlbWVudC9uZXdFbGVtZW50XCI7XG5pbXBvcnQgeyByYW5kb21JZCB9IGZyb20gXCIuLi9yYW5kb21cIjtcbmltcG9ydCB7IHQgfSBmcm9tIFwiLi4vaTE4blwiO1xuaW1wb3J0IHsgTElCUkFSWV9ESVNBQkxFRF9UWVBFUyB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcbmV4cG9ydCBjb25zdCBhY3Rpb25BZGRUb0xpYnJhcnkgPSByZWdpc3Rlcih7XG4gIG5hbWU6IFwiYWRkVG9MaWJyYXJ5XCIsXG4gIHRyYWNrRXZlbnQ6IHtcbiAgICBjYXRlZ29yeTogXCJlbGVtZW50XCJcbiAgfSxcbiAgcGVyZm9ybTogKGVsZW1lbnRzLCBhcHBTdGF0ZSwgXywgYXBwKSA9PiB7XG4gICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGFwcC5zY2VuZS5nZXRTZWxlY3RlZEVsZW1lbnRzKHtcbiAgICAgIHNlbGVjdGVkRWxlbWVudElkczogYXBwU3RhdGUuc2VsZWN0ZWRFbGVtZW50SWRzLFxuICAgICAgaW5jbHVkZUJvdW5kVGV4dEVsZW1lbnQ6IHRydWUsXG4gICAgICBpbmNsdWRlRWxlbWVudHNJbkZyYW1lczogdHJ1ZVxuICAgIH0pO1xuXG4gICAgZm9yIChjb25zdCB0eXBlIG9mIExJQlJBUllfRElTQUJMRURfVFlQRVMpIHtcbiAgICAgIGlmIChzZWxlY3RlZEVsZW1lbnRzLnNvbWUoZWxlbWVudCA9PiBlbGVtZW50LnR5cGUgPT09IHR5cGUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29tbWl0VG9IaXN0b3J5OiBmYWxzZSxcbiAgICAgICAgICBhcHBTdGF0ZTogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBhcHBTdGF0ZSksIHtcbiAgICAgICAgICAgIGVycm9yTWVzc2FnZTogdChgZXJyb3JzLmxpYnJhcnlFbGVtZW50VHlwZUVycm9yLiR7dHlwZX1gKVxuICAgICAgICAgIH0pXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGFwcC5saWJyYXJ5LmdldExhdGVzdExpYnJhcnkoKS50aGVuKGl0ZW1zID0+IHtcbiAgICAgIHJldHVybiBhcHAubGlicmFyeS5zZXRMaWJyYXJ5KFt7XG4gICAgICAgIGlkOiByYW5kb21JZCgpLFxuICAgICAgICBzdGF0dXM6IFwidW5wdWJsaXNoZWRcIixcbiAgICAgICAgZWxlbWVudHM6IHNlbGVjdGVkRWxlbWVudHMubWFwKGRlZXBDb3B5RWxlbWVudCksXG4gICAgICAgIGNyZWF0ZWQ6IERhdGUubm93KClcbiAgICAgIH0sIC4uLml0ZW1zXSk7XG4gICAgfSkudGhlbigoKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb21taXRUb0hpc3Rvcnk6IGZhbHNlLFxuICAgICAgICBhcHBTdGF0ZTogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBhcHBTdGF0ZSksIHtcbiAgICAgICAgICB0b2FzdDoge1xuICAgICAgICAgICAgbWVzc2FnZTogdChcInRvYXN0LmFkZGVkVG9MaWJyYXJ5XCIpXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgfTtcbiAgICB9KS5jYXRjaChlcnJvciA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb21taXRUb0hpc3Rvcnk6IGZhbHNlLFxuICAgICAgICBhcHBTdGF0ZTogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBhcHBTdGF0ZSksIHtcbiAgICAgICAgICBlcnJvck1lc3NhZ2U6IGVycm9yLm1lc3NhZ2VcbiAgICAgICAgfSlcbiAgICAgIH07XG4gICAgfSk7XG4gIH0sXG4gIGNvbnRleHRJdGVtTGFiZWw6IFwibGFiZWxzLmFkZFRvTGlicmFyeVwiXG59KTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../actions/actionAddToLibrary.ts\n');
              }
            ),
            /***/
            "../../actions/actionAlign.tsx": (
              /*!*************************************!*\
                !*** ../../actions/actionAlign.tsx ***!
                \*************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "actionAlignBottom": () => (/* binding */ actionAlignBottom),\n/* harmony export */   "actionAlignHorizontallyCentered": () => (/* binding */ actionAlignHorizontallyCentered),\n/* harmony export */   "actionAlignLeft": () => (/* binding */ actionAlignLeft),\n/* harmony export */   "actionAlignRight": () => (/* binding */ actionAlignRight),\n/* harmony export */   "actionAlignTop": () => (/* binding */ actionAlignTop),\n/* harmony export */   "actionAlignVerticallyCentered": () => (/* binding */ actionAlignVerticallyCentered)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var _align__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../align */ "../../align.ts");\n/* harmony import */ var _components_icons__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../components/icons */ "../../components/icons.tsx");\n/* harmony import */ var _components_ToolButton__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../components/ToolButton */ "../../components/ToolButton.tsx");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _frame__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../frame */ "../../frame.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../scene */ "../../scene/index.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./register */ "../../actions/register.ts");\n\n\n\n\n\n\n\n\n\n\n\n\nconst alignActionsPredicate = (elements, appState, _, app) => {\n  const selectedElements = app.scene.getSelectedElements(appState);\n  return selectedElements.length > 1 && // TODO enable aligning frames when implemented properly\n  !selectedElements.some(el => el.type === "frame");\n};\n\nconst alignSelectedElements = (elements, appState, app, alignment) => {\n  const selectedElements = app.scene.getSelectedElements(appState);\n  const updatedElements = (0,_align__WEBPACK_IMPORTED_MODULE_1__.alignElements)(selectedElements, alignment);\n  const updatedElementsMap = (0,_utils__WEBPACK_IMPORTED_MODULE_9__.arrayToMap)(updatedElements);\n  return (0,_frame__WEBPACK_IMPORTED_MODULE_5__.updateFrameMembershipOfSelectedElements)(elements.map(element => updatedElementsMap.get(element.id) || element), appState, app);\n};\n\nconst actionAlignTop = (0,_register__WEBPACK_IMPORTED_MODULE_10__.register)({\n  name: "alignTop",\n  trackEvent: {\n    category: "element"\n  },\n  predicate: alignActionsPredicate,\n  perform: (elements, appState, _, app) => {\n    return {\n      appState,\n      elements: alignSelectedElements(elements, appState, app, {\n        position: "start",\n        axis: "y"\n      }),\n      commitToHistory: true\n    };\n  },\n  keyTest: event => event[_keys__WEBPACK_IMPORTED_MODULE_7__.KEYS.CTRL_OR_CMD] && event.shiftKey && event.key === _keys__WEBPACK_IMPORTED_MODULE_7__.KEYS.ARROW_UP,\n  PanelComponent: ({\n    elements,\n    appState,\n    updateData,\n    app\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ToolButton__WEBPACK_IMPORTED_MODULE_3__.ToolButton, {\n    hidden: !alignActionsPredicate(elements, appState, null, app),\n    type: "button",\n    icon: _components_icons__WEBPACK_IMPORTED_MODULE_2__.AlignTopIcon,\n    onClick: () => updateData(null),\n    title: `${(0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("labels.alignTop")} \u2014 ${(0,_utils__WEBPACK_IMPORTED_MODULE_9__.getShortcutKey)("CtrlOrCmd+Shift+Up")}`,\n    "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("labels.alignTop"),\n    visible: (0,_scene__WEBPACK_IMPORTED_MODULE_8__.isSomeElementSelected)((0,_element__WEBPACK_IMPORTED_MODULE_4__.getNonDeletedElements)(elements), appState)\n  })\n});\nconst actionAlignBottom = (0,_register__WEBPACK_IMPORTED_MODULE_10__.register)({\n  name: "alignBottom",\n  trackEvent: {\n    category: "element"\n  },\n  predicate: alignActionsPredicate,\n  perform: (elements, appState, _, app) => {\n    return {\n      appState,\n      elements: alignSelectedElements(elements, appState, app, {\n        position: "end",\n        axis: "y"\n      }),\n      commitToHistory: true\n    };\n  },\n  keyTest: event => event[_keys__WEBPACK_IMPORTED_MODULE_7__.KEYS.CTRL_OR_CMD] && event.shiftKey && event.key === _keys__WEBPACK_IMPORTED_MODULE_7__.KEYS.ARROW_DOWN,\n  PanelComponent: ({\n    elements,\n    appState,\n    updateData,\n    app\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ToolButton__WEBPACK_IMPORTED_MODULE_3__.ToolButton, {\n    hidden: !alignActionsPredicate(elements, appState, null, app),\n    type: "button",\n    icon: _components_icons__WEBPACK_IMPORTED_MODULE_2__.AlignBottomIcon,\n    onClick: () => updateData(null),\n    title: `${(0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("labels.alignBottom")} \u2014 ${(0,_utils__WEBPACK_IMPORTED_MODULE_9__.getShortcutKey)("CtrlOrCmd+Shift+Down")}`,\n    "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("labels.alignBottom"),\n    visible: (0,_scene__WEBPACK_IMPORTED_MODULE_8__.isSomeElementSelected)((0,_element__WEBPACK_IMPORTED_MODULE_4__.getNonDeletedElements)(elements), appState)\n  })\n});\nconst actionAlignLeft = (0,_register__WEBPACK_IMPORTED_MODULE_10__.register)({\n  name: "alignLeft",\n  trackEvent: {\n    category: "element"\n  },\n  predicate: alignActionsPredicate,\n  perform: (elements, appState, _, app) => {\n    return {\n      appState,\n      elements: alignSelectedElements(elements, appState, app, {\n        position: "start",\n        axis: "x"\n      }),\n      commitToHistory: true\n    };\n  },\n  keyTest: event => event[_keys__WEBPACK_IMPORTED_MODULE_7__.KEYS.CTRL_OR_CMD] && event.shiftKey && event.key === _keys__WEBPACK_IMPORTED_MODULE_7__.KEYS.ARROW_LEFT,\n  PanelComponent: ({\n    elements,\n    appState,\n    updateData,\n    app\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ToolButton__WEBPACK_IMPORTED_MODULE_3__.ToolButton, {\n    hidden: !alignActionsPredicate(elements, appState, null, app),\n    type: "button",\n    icon: _components_icons__WEBPACK_IMPORTED_MODULE_2__.AlignLeftIcon,\n    onClick: () => updateData(null),\n    title: `${(0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("labels.alignLeft")} \u2014 ${(0,_utils__WEBPACK_IMPORTED_MODULE_9__.getShortcutKey)("CtrlOrCmd+Shift+Left")}`,\n    "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("labels.alignLeft"),\n    visible: (0,_scene__WEBPACK_IMPORTED_MODULE_8__.isSomeElementSelected)((0,_element__WEBPACK_IMPORTED_MODULE_4__.getNonDeletedElements)(elements), appState)\n  })\n});\nconst actionAlignRight = (0,_register__WEBPACK_IMPORTED_MODULE_10__.register)({\n  name: "alignRight",\n  trackEvent: {\n    category: "element"\n  },\n  predicate: alignActionsPredicate,\n  perform: (elements, appState, _, app) => {\n    return {\n      appState,\n      elements: alignSelectedElements(elements, appState, app, {\n        position: "end",\n        axis: "x"\n      }),\n      commitToHistory: true\n    };\n  },\n  keyTest: event => event[_keys__WEBPACK_IMPORTED_MODULE_7__.KEYS.CTRL_OR_CMD] && event.shiftKey && event.key === _keys__WEBPACK_IMPORTED_MODULE_7__.KEYS.ARROW_RIGHT,\n  PanelComponent: ({\n    elements,\n    appState,\n    updateData,\n    app\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ToolButton__WEBPACK_IMPORTED_MODULE_3__.ToolButton, {\n    hidden: !alignActionsPredicate(elements, appState, null, app),\n    type: "button",\n    icon: _components_icons__WEBPACK_IMPORTED_MODULE_2__.AlignRightIcon,\n    onClick: () => updateData(null),\n    title: `${(0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("labels.alignRight")} \u2014 ${(0,_utils__WEBPACK_IMPORTED_MODULE_9__.getShortcutKey)("CtrlOrCmd+Shift+Right")}`,\n    "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("labels.alignRight"),\n    visible: (0,_scene__WEBPACK_IMPORTED_MODULE_8__.isSomeElementSelected)((0,_element__WEBPACK_IMPORTED_MODULE_4__.getNonDeletedElements)(elements), appState)\n  })\n});\nconst actionAlignVerticallyCentered = (0,_register__WEBPACK_IMPORTED_MODULE_10__.register)({\n  name: "alignVerticallyCentered",\n  trackEvent: {\n    category: "element"\n  },\n  predicate: alignActionsPredicate,\n  perform: (elements, appState, _, app) => {\n    return {\n      appState,\n      elements: alignSelectedElements(elements, appState, app, {\n        position: "center",\n        axis: "y"\n      }),\n      commitToHistory: true\n    };\n  },\n  PanelComponent: ({\n    elements,\n    appState,\n    updateData,\n    app\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ToolButton__WEBPACK_IMPORTED_MODULE_3__.ToolButton, {\n    hidden: !alignActionsPredicate(elements, appState, null, app),\n    type: "button",\n    icon: _components_icons__WEBPACK_IMPORTED_MODULE_2__.CenterVerticallyIcon,\n    onClick: () => updateData(null),\n    title: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("labels.centerVertically"),\n    "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("labels.centerVertically"),\n    visible: (0,_scene__WEBPACK_IMPORTED_MODULE_8__.isSomeElementSelected)((0,_element__WEBPACK_IMPORTED_MODULE_4__.getNonDeletedElements)(elements), appState)\n  })\n});\nconst actionAlignHorizontallyCentered = (0,_register__WEBPACK_IMPORTED_MODULE_10__.register)({\n  name: "alignHorizontallyCentered",\n  trackEvent: {\n    category: "element"\n  },\n  predicate: alignActionsPredicate,\n  perform: (elements, appState, _, app) => {\n    return {\n      appState,\n      elements: alignSelectedElements(elements, appState, app, {\n        position: "center",\n        axis: "x"\n      }),\n      commitToHistory: true\n    };\n  },\n  PanelComponent: ({\n    elements,\n    appState,\n    updateData,\n    app\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ToolButton__WEBPACK_IMPORTED_MODULE_3__.ToolButton, {\n    hidden: !alignActionsPredicate(elements, appState, null, app),\n    type: "button",\n    icon: _components_icons__WEBPACK_IMPORTED_MODULE_2__.CenterHorizontallyIcon,\n    onClick: () => updateData(null),\n    title: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("labels.centerHorizontally"),\n    "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("labels.centerHorizontally"),\n    visible: (0,_scene__WEBPACK_IMPORTED_MODULE_8__.isSomeElementSelected)((0,_element__WEBPACK_IMPORTED_MODULE_4__.getNonDeletedElements)(elements), appState)\n  })\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 12524 characters]\n//# sourceURL=webpack-internal:///../../actions/actionAlign.tsx\n');
              }
            ),
            /***/
            "../../actions/actionBoundText.tsx": (
              /*!*****************************************!*\
                !*** ../../actions/actionBoundText.tsx ***!
                \*****************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "actionBindText": () => (/* binding */ actionBindText),\n/* harmony export */   "actionUnbindText": () => (/* binding */ actionUnbindText),\n/* harmony export */   "actionWrapTextInContainer": () => (/* binding */ actionWrapTextInContainer)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _element_mutateElement__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../element/mutateElement */ "../../element/mutateElement.ts");\n/* harmony import */ var _element_textElement__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../element/textElement */ "../../element/textElement.ts");\n/* harmony import */ var _element_textWysiwyg__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../element/textWysiwyg */ "../../element/textWysiwyg.tsx");\n/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../element/typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./register */ "../../actions/register.ts");\n\n\n\n\n\n\n\n\nconst actionUnbindText = (0,_register__WEBPACK_IMPORTED_MODULE_7__.register)({\n  name: "unbindText",\n  contextItemLabel: "labels.unbindText",\n  trackEvent: {\n    category: "element"\n  },\n  predicate: (elements, appState, _, app) => {\n    const selectedElements = app.scene.getSelectedElements(appState);\n    return selectedElements.some(element => (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_5__.hasBoundTextElement)(element));\n  },\n  perform: (elements, appState, _, app) => {\n    const selectedElements = app.scene.getSelectedElements(appState);\n    selectedElements.forEach(element => {\n      var _a;\n\n      const boundTextElement = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_3__.getBoundTextElement)(element);\n\n      if (boundTextElement) {\n        const {\n          width,\n          height,\n          baseline\n        } = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_3__.measureText)(boundTextElement.originalText, (0,_utils__WEBPACK_IMPORTED_MODULE_6__.getFontString)(boundTextElement), boundTextElement.lineHeight);\n        const originalContainerHeight = (0,_element_textWysiwyg__WEBPACK_IMPORTED_MODULE_4__.getOriginalContainerHeightFromCache)(element.id);\n        (0,_element_textWysiwyg__WEBPACK_IMPORTED_MODULE_4__.resetOriginalContainerCache)(element.id);\n        const {\n          x,\n          y\n        } = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_3__.computeBoundTextPosition)(element, boundTextElement);\n        (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_2__.mutateElement)(boundTextElement, {\n          containerId: null,\n          width,\n          height,\n          baseline,\n          text: boundTextElement.originalText,\n          x,\n          y\n        });\n        (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_2__.mutateElement)(element, {\n          boundElements: (_a = element.boundElements) === null || _a === void 0 ? void 0 : _a.filter(ele => ele.id !== boundTextElement.id),\n          height: originalContainerHeight ? originalContainerHeight : element.height\n        });\n      }\n    });\n    return {\n      elements,\n      appState,\n      commitToHistory: true\n    };\n  }\n});\nconst actionBindText = (0,_register__WEBPACK_IMPORTED_MODULE_7__.register)({\n  name: "bindText",\n  contextItemLabel: "labels.bindText",\n  trackEvent: {\n    category: "element"\n  },\n  predicate: (elements, appState, _, app) => {\n    const selectedElements = app.scene.getSelectedElements(appState);\n\n    if (selectedElements.length === 2) {\n      const textElement = (0,_element__WEBPACK_IMPORTED_MODULE_1__.isTextElement)(selectedElements[0]) || (0,_element__WEBPACK_IMPORTED_MODULE_1__.isTextElement)(selectedElements[1]);\n      let bindingContainer;\n\n      if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_5__.isTextBindableContainer)(selectedElements[0])) {\n        bindingContainer = selectedElements[0];\n      } else if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_5__.isTextBindableContainer)(selectedElements[1])) {\n        bindingContainer = selectedElements[1];\n      }\n\n      if (textElement && bindingContainer && (0,_element_textElement__WEBPACK_IMPORTED_MODULE_3__.getBoundTextElement)(bindingContainer) === null) {\n        return true;\n      }\n    }\n\n    return false;\n  },\n  perform: (elements, appState, _, app) => {\n    const selectedElements = app.scene.getSelectedElements(appState);\n    let textElement;\n    let container;\n\n    if ((0,_element__WEBPACK_IMPORTED_MODULE_1__.isTextElement)(selectedElements[0]) && (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_5__.isTextBindableContainer)(selectedElements[1])) {\n      textElement = selectedElements[0];\n      container = selectedElements[1];\n    } else {\n      textElement = selectedElements[1];\n      container = selectedElements[0];\n    }\n\n    (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_2__.mutateElement)(textElement, {\n      containerId: container.id,\n      verticalAlign: _constants__WEBPACK_IMPORTED_MODULE_0__.VERTICAL_ALIGN.MIDDLE,\n      textAlign: _constants__WEBPACK_IMPORTED_MODULE_0__.TEXT_ALIGN.CENTER\n    });\n    (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_2__.mutateElement)(container, {\n      boundElements: (container.boundElements || []).concat({\n        type: "text",\n        id: textElement.id\n      })\n    });\n    const originalContainerHeight = container.height;\n    (0,_element_textElement__WEBPACK_IMPORTED_MODULE_3__.redrawTextBoundingBox)(textElement, container); // overwritting the cache with original container height so\n    // it can be restored when unbind\n\n    (0,_element_textWysiwyg__WEBPACK_IMPORTED_MODULE_4__.updateOriginalContainerCache)(container.id, originalContainerHeight);\n    return {\n      elements: pushTextAboveContainer(elements, container, textElement),\n      appState: Object.assign(Object.assign({}, appState), {\n        selectedElementIds: {\n          [container.id]: true\n        }\n      }),\n      commitToHistory: true\n    };\n  }\n});\n\nconst pushTextAboveContainer = (elements, container, textElement) => {\n  const updatedElements = elements.slice();\n  const textElementIndex = updatedElements.findIndex(ele => ele.id === textElement.id);\n  updatedElements.splice(textElementIndex, 1);\n  const containerIndex = updatedElements.findIndex(ele => ele.id === container.id);\n  updatedElements.splice(containerIndex + 1, 0, textElement);\n  return updatedElements;\n};\n\nconst pushContainerBelowText = (elements, container, textElement) => {\n  const updatedElements = elements.slice();\n  const containerIndex = updatedElements.findIndex(ele => ele.id === container.id);\n  updatedElements.splice(containerIndex, 1);\n  const textElementIndex = updatedElements.findIndex(ele => ele.id === textElement.id);\n  updatedElements.splice(textElementIndex, 0, container);\n  return updatedElements;\n};\n\nconst actionWrapTextInContainer = (0,_register__WEBPACK_IMPORTED_MODULE_7__.register)({\n  name: "wrapTextInContainer",\n  contextItemLabel: "labels.createContainerFromText",\n  trackEvent: {\n    category: "element"\n  },\n  predicate: (elements, appState, _, app) => {\n    const selectedElements = app.scene.getSelectedElements(appState);\n    const areTextElements = selectedElements.every(el => (0,_element__WEBPACK_IMPORTED_MODULE_1__.isTextElement)(el));\n    return selectedElements.length > 0 && areTextElements;\n  },\n  perform: (elements, appState, _, app) => {\n    var _a;\n\n    const selectedElements = app.scene.getSelectedElements(appState);\n    let updatedElements = elements.slice();\n    const containerIds = {};\n\n    for (const textElement of selectedElements) {\n      if ((0,_element__WEBPACK_IMPORTED_MODULE_1__.isTextElement)(textElement)) {\n        const container = (0,_element__WEBPACK_IMPORTED_MODULE_1__.newElement)({\n          type: "rectangle",\n          backgroundColor: appState.currentItemBackgroundColor,\n          boundElements: [...(textElement.boundElements || []), {\n            id: textElement.id,\n            type: "text"\n          }],\n          angle: textElement.angle,\n          fillStyle: appState.currentItemFillStyle,\n          strokeColor: appState.currentItemStrokeColor,\n          roughness: appState.currentItemRoughness,\n          strokeWidth: appState.currentItemStrokeWidth,\n          strokeStyle: appState.currentItemStrokeStyle,\n          roundness: appState.currentItemRoundness === "round" ? {\n            type: (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_5__.isUsingAdaptiveRadius)("rectangle") ? _constants__WEBPACK_IMPORTED_MODULE_0__.ROUNDNESS.ADAPTIVE_RADIUS : _constants__WEBPACK_IMPORTED_MODULE_0__.ROUNDNESS.PROPORTIONAL_RADIUS\n          } : null,\n          opacity: 100,\n          locked: false,\n          x: textElement.x - _constants__WEBPACK_IMPORTED_MODULE_0__.BOUND_TEXT_PADDING,\n          y: textElement.y - _constants__WEBPACK_IMPORTED_MODULE_0__.BOUND_TEXT_PADDING,\n          width: (0,_element_textElement__WEBPACK_IMPORTED_MODULE_3__.computeContainerDimensionForBoundText)(textElement.width, "rectangle"),\n          height: (0,_element_textElement__WEBPACK_IMPORTED_MODULE_3__.computeContainerDimensionForBoundText)(textElement.height, "rectangle"),\n          groupIds: textElement.groupIds,\n          frameId: textElement.frameId\n        }); // update bindings\n\n        if ((_a = textElement.boundElements) === null || _a === void 0 ? void 0 : _a.length) {\n          const linearElementIds = textElement.boundElements.filter(ele => ele.type === "arrow").map(el => el.id);\n          const linearElements = updatedElements.filter(ele => linearElementIds.includes(ele.id));\n          linearElements.forEach(ele => {\n            let startBinding = ele.startBinding;\n            let endBinding = ele.endBinding;\n\n            if ((startBinding === null || startBinding === void 0 ? void 0 : startBinding.elementId) === textElement.id) {\n              startBinding = Object.assign(Object.assign({}, startBinding), {\n                elementId: container.id\n              });\n            }\n\n            if ((endBinding === null || endBinding === void 0 ? void 0 : endBinding.elementId) === textElement.id) {\n              endBinding = Object.assign(Object.assign({}, endBinding), {\n                elementId: container.id\n              });\n            }\n\n            if (startBinding || endBinding) {\n              (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_2__.mutateElement)(ele, {\n                startBinding,\n                endBinding\n              }, false);\n            }\n          });\n        }\n\n        (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_2__.mutateElement)(textElement, {\n          containerId: container.id,\n          verticalAlign: _constants__WEBPACK_IMPORTED_MODULE_0__.VERTICAL_ALIGN.MIDDLE,\n          boundElements: null,\n          textAlign: _constants__WEBPACK_IMPORTED_MODULE_0__.TEXT_ALIGN.CENTER\n        }, false);\n        (0,_element_textElement__WEBPACK_IMPORTED_MODULE_3__.redrawTextBoundingBox)(textElement, container);\n        updatedElements = pushContainerBelowText([...updatedElements, container], container, textElement);\n        containerIds[container.id] = true;\n      }\n    }\n\n    return {\n      elements: updatedElements,\n      appState: Object.assign(Object.assign({}, appState), {\n        selectedElementIds: containerIds\n      }),\n      commitToHistory: true\n    };\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 15176 characters]\n//# sourceURL=webpack-internal:///../../actions/actionBoundText.tsx\n');
              }
            ),
            /***/
            "../../actions/actionCanvas.tsx": (
              /*!**************************************!*\
                !*** ../../actions/actionCanvas.tsx ***!
                \**************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "actionChangeViewBackgroundColor": () => (/* binding */ actionChangeViewBackgroundColor),\n/* harmony export */   "actionClearCanvas": () => (/* binding */ actionClearCanvas),\n/* harmony export */   "actionResetZoom": () => (/* binding */ actionResetZoom),\n/* harmony export */   "actionToggleEraserTool": () => (/* binding */ actionToggleEraserTool),\n/* harmony export */   "actionToggleHandTool": () => (/* binding */ actionToggleHandTool),\n/* harmony export */   "actionToggleTheme": () => (/* binding */ actionToggleTheme),\n/* harmony export */   "actionZoomIn": () => (/* binding */ actionZoomIn),\n/* harmony export */   "actionZoomOut": () => (/* binding */ actionZoomOut),\n/* harmony export */   "actionZoomToFit": () => (/* binding */ actionZoomToFit),\n/* harmony export */   "actionZoomToFitSelection": () => (/* binding */ actionZoomToFitSelection),\n/* harmony export */   "actionZoomToFitSelectionInViewport": () => (/* binding */ actionZoomToFitSelectionInViewport),\n/* harmony export */   "zoomToFit": () => (/* binding */ zoomToFit)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var _components_ColorPicker_ColorPicker__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/ColorPicker/ColorPicker */ "../../components/ColorPicker/ColorPicker.tsx");\n/* harmony import */ var _components_icons__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../components/icons */ "../../components/icons.tsx");\n/* harmony import */ var _components_ToolButton__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../components/ToolButton */ "../../components/ToolButton.tsx");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../scene */ "../../scene/index.ts");\n/* harmony import */ var _scene_scroll__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../scene/scroll */ "../../scene/scroll.ts");\n/* harmony import */ var _scene_zoom__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../scene/zoom */ "../../scene/zoom.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./register */ "../../actions/register.ts");\n/* harmony import */ var _components_Tooltip__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../components/Tooltip */ "../../components/Tooltip.tsx");\n/* harmony import */ var _element_mutateElement__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../element/mutateElement */ "../../element/mutateElement.ts");\n/* harmony import */ var _appState__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../appState */ "../../appState.ts");\n/* harmony import */ var _colors__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../colors */ "../../colors.ts");\n/* harmony import */ var _cursor__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../cursor */ "../../cursor.ts");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst actionChangeViewBackgroundColor = (0,_register__WEBPACK_IMPORTED_MODULE_12__.register)({\n  name: "changeViewBackgroundColor",\n  trackEvent: false,\n  predicate: (elements, appState, props, app) => {\n    return !!app.props.UIOptions.canvasActions.changeViewBackgroundColor && !appState.viewModeEnabled;\n  },\n  perform: (_, appState, value) => {\n    return {\n      appState: Object.assign(Object.assign({}, appState), value),\n      commitToHistory: !!value.viewBackgroundColor\n    };\n  },\n  PanelComponent: ({\n    elements,\n    appState,\n    updateData,\n    appProps\n  }) => {\n    // FIXME move me to src/components/mainMenu/DefaultItems.tsx\n    return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ColorPicker_ColorPicker__WEBPACK_IMPORTED_MODULE_1__.ColorPicker, {\n      palette: null,\n      topPicks: _colors__WEBPACK_IMPORTED_MODULE_16__.DEFAULT_CANVAS_BACKGROUND_PICKS,\n      label: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("labels.canvasBackground"),\n      type: "canvasBackground",\n      color: appState.viewBackgroundColor,\n      onChange: color => updateData({\n        viewBackgroundColor: color\n      }),\n      "data-testid": "canvas-background-picker",\n      elements: elements,\n      appState: appState,\n      updateData: updateData\n    });\n  }\n});\nconst actionClearCanvas = (0,_register__WEBPACK_IMPORTED_MODULE_12__.register)({\n  name: "clearCanvas",\n  trackEvent: {\n    category: "canvas"\n  },\n  predicate: (elements, appState, props, app) => {\n    return !!app.props.UIOptions.canvasActions.clearCanvas && !appState.viewModeEnabled;\n  },\n  perform: (elements, appState, _, app) => {\n    app.imageCache.clear();\n    return {\n      elements: elements.map(element => (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_14__.newElementWith)(element, {\n        isDeleted: true\n      })),\n      appState: Object.assign(Object.assign({}, (0,_appState__WEBPACK_IMPORTED_MODULE_15__.getDefaultAppState)()), {\n        files: {},\n        theme: appState.theme,\n        penMode: appState.penMode,\n        penDetected: appState.penDetected,\n        exportBackground: appState.exportBackground,\n        exportEmbedScene: appState.exportEmbedScene,\n        gridSize: appState.gridSize,\n        showStats: appState.showStats,\n        pasteDialog: appState.pasteDialog,\n        activeTool: appState.activeTool.type === "image" ? Object.assign(Object.assign({}, appState.activeTool), {\n          type: "selection"\n        }) : appState.activeTool\n      }),\n      commitToHistory: true\n    };\n  }\n});\nconst actionZoomIn = (0,_register__WEBPACK_IMPORTED_MODULE_12__.register)({\n  name: "zoomIn",\n  viewMode: true,\n  trackEvent: {\n    category: "canvas"\n  },\n  perform: (_elements, appState, _, app) => {\n    return {\n      appState: Object.assign(Object.assign({}, appState), (0,_scene_zoom__WEBPACK_IMPORTED_MODULE_10__.getStateForZoom)({\n        viewportX: appState.width / 2 + appState.offsetLeft,\n        viewportY: appState.height / 2 + appState.offsetTop,\n        nextZoom: (0,_scene__WEBPACK_IMPORTED_MODULE_8__.getNormalizedZoom)(appState.zoom.value + _constants__WEBPACK_IMPORTED_MODULE_4__.ZOOM_STEP)\n      }, appState)),\n      commitToHistory: false\n    };\n  },\n  PanelComponent: ({\n    updateData\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ToolButton__WEBPACK_IMPORTED_MODULE_3__.ToolButton, {\n    type: "button",\n    className: "zoom-in-button zoom-button",\n    icon: _components_icons__WEBPACK_IMPORTED_MODULE_2__.ZoomInIcon,\n    title: `${(0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("buttons.zoomIn")} \u2014 ${(0,_utils__WEBPACK_IMPORTED_MODULE_11__.getShortcutKey)("CtrlOrCmd++")}`,\n    "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("buttons.zoomIn"),\n    onClick: () => {\n      updateData(null);\n    }\n  }),\n  keyTest: event => (event.code === _keys__WEBPACK_IMPORTED_MODULE_7__.CODES.EQUAL || event.code === _keys__WEBPACK_IMPORTED_MODULE_7__.CODES.NUM_ADD) && (event[_keys__WEBPACK_IMPORTED_MODULE_7__.KEYS.CTRL_OR_CMD] || event.shiftKey)\n});\nconst actionZoomOut = (0,_register__WEBPACK_IMPORTED_MODULE_12__.register)({\n  name: "zoomOut",\n  viewMode: true,\n  trackEvent: {\n    category: "canvas"\n  },\n  perform: (_elements, appState, _, app) => {\n    return {\n      appState: Object.assign(Object.assign({}, appState), (0,_scene_zoom__WEBPACK_IMPORTED_MODULE_10__.getStateForZoom)({\n        viewportX: appState.width / 2 + appState.offsetLeft,\n        viewportY: appState.height / 2 + appState.offsetTop,\n        nextZoom: (0,_scene__WEBPACK_IMPORTED_MODULE_8__.getNormalizedZoom)(appState.zoom.value - _constants__WEBPACK_IMPORTED_MODULE_4__.ZOOM_STEP)\n      }, appState)),\n      commitToHistory: false\n    };\n  },\n  PanelComponent: ({\n    updateData\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ToolButton__WEBPACK_IMPORTED_MODULE_3__.ToolButton, {\n    type: "button",\n    className: "zoom-out-button zoom-button",\n    icon: _components_icons__WEBPACK_IMPORTED_MODULE_2__.ZoomOutIcon,\n    title: `${(0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("buttons.zoomOut")} \u2014 ${(0,_utils__WEBPACK_IMPORTED_MODULE_11__.getShortcutKey)("CtrlOrCmd+-")}`,\n    "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("buttons.zoomOut"),\n    onClick: () => {\n      updateData(null);\n    }\n  }),\n  keyTest: event => (event.code === _keys__WEBPACK_IMPORTED_MODULE_7__.CODES.MINUS || event.code === _keys__WEBPACK_IMPORTED_MODULE_7__.CODES.NUM_SUBTRACT) && (event[_keys__WEBPACK_IMPORTED_MODULE_7__.KEYS.CTRL_OR_CMD] || event.shiftKey)\n});\nconst actionResetZoom = (0,_register__WEBPACK_IMPORTED_MODULE_12__.register)({\n  name: "resetZoom",\n  viewMode: true,\n  trackEvent: {\n    category: "canvas"\n  },\n  perform: (_elements, appState, _, app) => {\n    return {\n      appState: Object.assign(Object.assign({}, appState), (0,_scene_zoom__WEBPACK_IMPORTED_MODULE_10__.getStateForZoom)({\n        viewportX: appState.width / 2 + appState.offsetLeft,\n        viewportY: appState.height / 2 + appState.offsetTop,\n        nextZoom: (0,_scene__WEBPACK_IMPORTED_MODULE_8__.getNormalizedZoom)(1)\n      }, appState)),\n      commitToHistory: false\n    };\n  },\n  PanelComponent: ({\n    updateData,\n    appState\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_Tooltip__WEBPACK_IMPORTED_MODULE_13__.Tooltip, Object.assign({\n    label: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("buttons.resetZoom"),\n    style: {\n      height: "100%"\n    }\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components_ToolButton__WEBPACK_IMPORTED_MODULE_3__.ToolButton, Object.assign({\n      type: "button",\n      className: "reset-zoom-button zoom-button",\n      title: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("buttons.resetZoom"),\n      "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("buttons.resetZoom"),\n      onClick: () => {\n        updateData(null);\n      }\n    }, {\n      children: [(appState.zoom.value * 100).toFixed(0), "%"]\n    }))\n  })),\n  keyTest: event => (event.code === _keys__WEBPACK_IMPORTED_MODULE_7__.CODES.ZERO || event.code === _keys__WEBPACK_IMPORTED_MODULE_7__.CODES.NUM_ZERO) && (event[_keys__WEBPACK_IMPORTED_MODULE_7__.KEYS.CTRL_OR_CMD] || event.shiftKey)\n});\n\nconst zoomValueToFitBoundsOnViewport = (bounds, viewportDimensions) => {\n  const [x1, y1, x2, y2] = bounds;\n  const commonBoundsWidth = x2 - x1;\n  const zoomValueForWidth = viewportDimensions.width / commonBoundsWidth;\n  const commonBoundsHeight = y2 - y1;\n  const zoomValueForHeight = viewportDimensions.height / commonBoundsHeight;\n  const smallestZoomValue = Math.min(zoomValueForWidth, zoomValueForHeight);\n  const zoomAdjustedToSteps = Math.floor(smallestZoomValue / _constants__WEBPACK_IMPORTED_MODULE_4__.ZOOM_STEP) * _constants__WEBPACK_IMPORTED_MODULE_4__.ZOOM_STEP;\n  const clampedZoomValueToFitElements = Math.min(Math.max(zoomAdjustedToSteps, _constants__WEBPACK_IMPORTED_MODULE_4__.MIN_ZOOM), 1);\n  return clampedZoomValueToFitElements;\n};\n\nconst zoomToFit = ({\n  targetElements,\n  appState,\n  fitToViewport = false,\n  viewportZoomFactor = 0.7\n}) => {\n  const commonBounds = (0,_element__WEBPACK_IMPORTED_MODULE_5__.getCommonBounds)((0,_element__WEBPACK_IMPORTED_MODULE_5__.getNonDeletedElements)(targetElements));\n  const [x1, y1, x2, y2] = commonBounds;\n  const centerX = (x1 + x2) / 2;\n  const centerY = (y1 + y2) / 2;\n  let newZoomValue;\n  let scrollX;\n  let scrollY;\n\n  if (fitToViewport) {\n    const commonBoundsWidth = x2 - x1;\n    const commonBoundsHeight = y2 - y1;\n    newZoomValue = Math.min(appState.width / commonBoundsWidth, appState.height / commonBoundsHeight) * Math.min(1, Math.max(viewportZoomFactor, 0.1)); // Apply clamping to newZoomValue to be between 10% and 3000%\n\n    newZoomValue = Math.min(Math.max(newZoomValue, 0.1), 30.0);\n    scrollX = appState.width / 2 * (1 / newZoomValue) - centerX;\n    scrollY = appState.height / 2 * (1 / newZoomValue) - centerY;\n  } else {\n    newZoomValue = zoomValueToFitBoundsOnViewport(commonBounds, {\n      width: appState.width,\n      height: appState.height\n    });\n    const centerScroll = (0,_scene_scroll__WEBPACK_IMPORTED_MODULE_9__.centerScrollOn)({\n      scenePoint: {\n        x: centerX,\n        y: centerY\n      },\n      viewportDimensions: {\n        width: appState.width,\n        height: appState.height\n      },\n      zoom: {\n        value: newZoomValue\n      }\n    });\n    scrollX = centerScroll.scrollX;\n    scrollY = centerScroll.scrollY;\n  }\n\n  return {\n    appState: Object.assign(Object.assign({}, appState), {\n      scrollX,\n      scrollY,\n      zoom: {\n        value: newZoomValue\n      }\n    }),\n    commitToHistory: false\n  };\n}; // Note, this action differs from actionZoomToFitSelection in that it doesn\'t\n// zoom beyond 100%. In other words, if the content is smaller than viewport\n// size, it won\'t be zoomed in.\n\nconst actionZoomToFitSelectionInViewport = (0,_register__WEBPACK_IMPORTED_MODULE_12__.register)({\n  name: "zoomToFitSelectionInViewport",\n  trackEvent: {\n    category: "canvas"\n  },\n  perform: (elements, appState, _, app) => {\n    const selectedElements = app.scene.getSelectedElements(appState);\n    return zoomToFit({\n      targetElements: selectedElements.length ? selectedElements : elements,\n      appState,\n      fitToViewport: false\n    });\n  },\n  // NOTE shift-2 should have been assigned actionZoomToFitSelection.\n  // TBD on how proceed\n  keyTest: event => event.code === _keys__WEBPACK_IMPORTED_MODULE_7__.CODES.TWO && event.shiftKey && !event.altKey && !event[_keys__WEBPACK_IMPORTED_MODULE_7__.KEYS.CTRL_OR_CMD]\n});\nconst actionZoomToFitSelection = (0,_register__WEBPACK_IMPORTED_MODULE_12__.register)({\n  name: "zoomToFitSelection",\n  trackEvent: {\n    category: "canvas"\n  },\n  perform: (elements, appState, _, app) => {\n    const selectedElements = app.scene.getSelectedElements(appState);\n    return zoomToFit({\n      targetElements: selectedElements.length ? selectedElements : elements,\n      appState,\n      fitToViewport: true\n    });\n  },\n  // NOTE this action should use shift-2 per figma, alas\n  keyTest: event => event.code === _keys__WEBPACK_IMPORTED_MODULE_7__.CODES.THREE && event.shiftKey && !event.altKey && !event[_keys__WEBPACK_IMPORTED_MODULE_7__.KEYS.CTRL_OR_CMD]\n});\nconst actionZoomToFit = (0,_register__WEBPACK_IMPORTED_MODULE_12__.register)({\n  name: "zoomToFit",\n  viewMode: true,\n  trackEvent: {\n    category: "canvas"\n  },\n  perform: (elements, appState) => zoomToFit({\n    targetElements: elements,\n    appState,\n    fitToViewport: false\n  }),\n  keyTest: event => event.code === _keys__WEBPACK_IMPORTED_MODULE_7__.CODES.ONE && event.shiftKey && !event.altKey && !event[_keys__WEBPACK_IMPORTED_MODULE_7__.KEYS.CTRL_OR_CMD]\n});\nconst actionToggleTheme = (0,_register__WEBPACK_IMPORTED_MODULE_12__.register)({\n  name: "toggleTheme",\n  viewMode: true,\n  trackEvent: {\n    category: "canvas"\n  },\n  perform: (_, appState, value) => {\n    return {\n      appState: Object.assign(Object.assign({}, appState), {\n        theme: value || (appState.theme === _constants__WEBPACK_IMPORTED_MODULE_4__.THEME.LIGHT ? _constants__WEBPACK_IMPORTED_MODULE_4__.THEME.DARK : _constants__WEBPACK_IMPORTED_MODULE_4__.THEME.LIGHT)\n      }),\n      commitToHistory: false\n    };\n  },\n  keyTest: event => event.altKey && event.shiftKey && event.code === _keys__WEBPACK_IMPORTED_MODULE_7__.CODES.D,\n  predicate: (elements, appState, props, app) => {\n    return !!app.props.UIOptions.canvasActions.toggleTheme;\n  }\n});\nconst actionToggleEraserTool = (0,_register__WEBPACK_IMPORTED_MODULE_12__.register)({\n  name: "toggleEraserTool",\n  trackEvent: {\n    category: "toolbar"\n  },\n  perform: (elements, appState) => {\n    let activeTool;\n\n    if ((0,_appState__WEBPACK_IMPORTED_MODULE_15__.isEraserActive)(appState)) {\n      activeTool = (0,_utils__WEBPACK_IMPORTED_MODULE_11__.updateActiveTool)(appState, Object.assign(Object.assign({}, appState.activeTool.lastActiveTool || {\n        type: "selection"\n      }), {\n        lastActiveToolBeforeEraser: null\n      }));\n    } else {\n      activeTool = (0,_utils__WEBPACK_IMPORTED_MODULE_11__.updateActiveTool)(appState, {\n        type: "eraser",\n        lastActiveToolBeforeEraser: appState.activeTool\n      });\n    }\n\n    return {\n      appState: Object.assign(Object.assign({}, appState), {\n        selectedElementIds: {},\n        selectedGroupIds: {},\n        activeEmbeddable: null,\n        activeTool\n      }),\n      commitToHistory: true\n    };\n  },\n  keyTest: event => event.key === _keys__WEBPACK_IMPORTED_MODULE_7__.KEYS.E\n});\nconst actionToggleHandTool = (0,_register__WEBPACK_IMPORTED_MODULE_12__.register)({\n  name: "toggleHandTool",\n  trackEvent: {\n    category: "toolbar"\n  },\n  perform: (elements, appState, _, app) => {\n    let activeTool;\n\n    if ((0,_appState__WEBPACK_IMPORTED_MODULE_15__.isHandToolActive)(appState)) {\n      activeTool = (0,_utils__WEBPACK_IMPORTED_MODULE_11__.updateActiveTool)(appState, Object.assign(Object.assign({}, appState.activeTool.lastActiveTool || {\n        type: "selection"\n      }), {\n        lastActiveToolBeforeEraser: null\n      }));\n    } else {\n      activeTool = (0,_utils__WEBPACK_IMPORTED_MODULE_11__.updateActiveTool)(appState, {\n        type: "hand",\n        lastActiveToolBeforeEraser: appState.activeTool\n      });\n      (0,_cursor__WEBPACK_IMPORTED_MODULE_17__.setCursor)(app.interactiveCanvas, _constants__WEBPACK_IMPORTED_MODULE_4__.CURSOR_TYPE.GRAB);\n    }\n\n    return {\n      appState: Object.assign(Object.assign({}, appState), {\n        selectedElementIds: {},\n        selectedGroupIds: {},\n        activeEmbeddable: null,\n        activeTool\n      }),\n      commitToHistory: true\n    };\n  },\n  keyTest: event => !event.altKey && !event[_keys__WEBPACK_IMPORTED_MODULE_7__.KEYS.CTRL_OR_CMD] && event.key === _keys__WEBPACK_IMPORTED_MODULE_7__.KEYS.H\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 22332 characters]\n//# sourceURL=webpack-internal:///../../actions/actionCanvas.tsx\n');
              }
            ),
            /***/
            "../../actions/actionClipboard.tsx": (
              /*!*****************************************!*\
                !*** ../../actions/actionClipboard.tsx ***!
                \*****************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "actionCopy": () => (/* binding */ actionCopy),\n/* harmony export */   "actionCopyAsPng": () => (/* binding */ actionCopyAsPng),\n/* harmony export */   "actionCopyAsSvg": () => (/* binding */ actionCopyAsSvg),\n/* harmony export */   "actionCut": () => (/* binding */ actionCut),\n/* harmony export */   "actionPaste": () => (/* binding */ actionPaste),\n/* harmony export */   "copyText": () => (/* binding */ copyText)\n/* harmony export */ });\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./register */ "../../actions/register.ts");\n/* harmony import */ var _clipboard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../clipboard */ "../../clipboard.ts");\n/* harmony import */ var _actionDeleteSelected__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./actionDeleteSelected */ "../../actions/actionDeleteSelected.tsx");\n/* harmony import */ var _data_index__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../data/index */ "../../data/index.ts");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator["throw"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n\n\n\n\n\n\nconst actionCopy = (0,_register__WEBPACK_IMPORTED_MODULE_1__.register)({\n  name: "copy",\n  trackEvent: {\n    category: "element"\n  },\n  perform: (elements, appState, event, app) => __awaiter(void 0, void 0, void 0, function* () {\n    const elementsToCopy = app.scene.getSelectedElements({\n      selectedElementIds: appState.selectedElementIds,\n      includeBoundTextElement: true,\n      includeElementsInFrames: true\n    });\n\n    try {\n      yield (0,_clipboard__WEBPACK_IMPORTED_MODULE_2__.copyToClipboard)(elementsToCopy, app.files, event);\n    } catch (error) {\n      return {\n        commitToHistory: false,\n        appState: Object.assign(Object.assign({}, appState), {\n          errorMessage: error.message\n        })\n      };\n    }\n\n    return {\n      commitToHistory: false\n    };\n  }),\n  contextItemLabel: "labels.copy",\n  // don\'t supply a shortcut since we handle this conditionally via onCopy event\n  keyTest: undefined\n});\nconst actionPaste = (0,_register__WEBPACK_IMPORTED_MODULE_1__.register)({\n  name: "paste",\n  trackEvent: {\n    category: "element"\n  },\n  perform: (elements, appState, data, app) => __awaiter(void 0, void 0, void 0, function* () {\n    let types;\n\n    try {\n      types = yield (0,_clipboard__WEBPACK_IMPORTED_MODULE_2__.readSystemClipboard)();\n    } catch (error) {\n      if (error.name === "AbortError" || error.name === "NotAllowedError") {\n        // user probably aborted the action. Though not 100% sure, it\'s best\n        // to not annoy them with an error message.\n        return false;\n      }\n\n      console.error(`actionPaste ${error.name}: ${error.message}`);\n\n      if (_constants__WEBPACK_IMPORTED_MODULE_7__.isFirefox) {\n        return {\n          commitToHistory: false,\n          appState: Object.assign(Object.assign({}, appState), {\n            errorMessage: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("hints.firefox_clipboard_write")\n          })\n        };\n      }\n\n      return {\n        commitToHistory: false,\n        appState: Object.assign(Object.assign({}, appState), {\n          errorMessage: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("errors.asyncPasteFailedOnRead")\n        })\n      };\n    }\n\n    try {\n      app.pasteFromClipboard((0,_clipboard__WEBPACK_IMPORTED_MODULE_2__.createPasteEvent)({\n        types\n      }));\n    } catch (error) {\n      console.error(error);\n      return {\n        commitToHistory: false,\n        appState: Object.assign(Object.assign({}, appState), {\n          errorMessage: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("errors.asyncPasteFailedOnParse")\n        })\n      };\n    }\n\n    return {\n      commitToHistory: false\n    };\n  }),\n  contextItemLabel: "labels.paste",\n  // don\'t supply a shortcut since we handle this conditionally via onCopy event\n  keyTest: undefined\n});\nconst actionCut = (0,_register__WEBPACK_IMPORTED_MODULE_1__.register)({\n  name: "cut",\n  trackEvent: {\n    category: "element"\n  },\n  perform: (elements, appState, event, app) => {\n    actionCopy.perform(elements, appState, event, app);\n    return _actionDeleteSelected__WEBPACK_IMPORTED_MODULE_3__.actionDeleteSelected.perform(elements, appState);\n  },\n  contextItemLabel: "labels.cut",\n  keyTest: event => event[_keys__WEBPACK_IMPORTED_MODULE_0__.KEYS.CTRL_OR_CMD] && event.key === _keys__WEBPACK_IMPORTED_MODULE_0__.KEYS.X\n});\nconst actionCopyAsSvg = (0,_register__WEBPACK_IMPORTED_MODULE_1__.register)({\n  name: "copyAsSvg",\n  trackEvent: {\n    category: "element"\n  },\n  perform: (elements, appState, _data, app) => __awaiter(void 0, void 0, void 0, function* () {\n    if (!app.canvas) {\n      return {\n        commitToHistory: false\n      };\n    }\n\n    const {\n      exportedElements,\n      exportingFrame\n    } = (0,_data_index__WEBPACK_IMPORTED_MODULE_4__.prepareElementsForExport)(elements, appState, true);\n\n    try {\n      yield (0,_data_index__WEBPACK_IMPORTED_MODULE_4__.exportCanvas)("clipboard-svg", exportedElements, appState, app.files, Object.assign(Object.assign({}, appState), {\n        exportingFrame\n      }));\n      return {\n        commitToHistory: false\n      };\n    } catch (error) {\n      console.error(error);\n      return {\n        appState: Object.assign(Object.assign({}, appState), {\n          errorMessage: error.message\n        }),\n        commitToHistory: false\n      };\n    }\n  }),\n  predicate: elements => {\n    return _clipboard__WEBPACK_IMPORTED_MODULE_2__.probablySupportsClipboardWriteText && elements.length > 0;\n  },\n  contextItemLabel: "labels.copyAsSvg"\n});\nconst actionCopyAsPng = (0,_register__WEBPACK_IMPORTED_MODULE_1__.register)({\n  name: "copyAsPng",\n  trackEvent: {\n    category: "element"\n  },\n  perform: (elements, appState, _data, app) => __awaiter(void 0, void 0, void 0, function* () {\n    if (!app.canvas) {\n      return {\n        commitToHistory: false\n      };\n    }\n\n    const selectedElements = app.scene.getSelectedElements({\n      selectedElementIds: appState.selectedElementIds,\n      includeBoundTextElement: true,\n      includeElementsInFrames: true\n    });\n    const {\n      exportedElements,\n      exportingFrame\n    } = (0,_data_index__WEBPACK_IMPORTED_MODULE_4__.prepareElementsForExport)(elements, appState, true);\n\n    try {\n      yield (0,_data_index__WEBPACK_IMPORTED_MODULE_4__.exportCanvas)("clipboard", exportedElements, appState, app.files, Object.assign(Object.assign({}, appState), {\n        exportingFrame\n      }));\n      return {\n        appState: Object.assign(Object.assign({}, appState), {\n          toast: {\n            message: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("toast.copyToClipboardAsPng", {\n              exportSelection: selectedElements.length ? (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("toast.selection") : (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("toast.canvas"),\n              exportColorScheme: appState.exportWithDarkMode ? (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("buttons.darkMode") : (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("buttons.lightMode")\n            })\n          }\n        }),\n        commitToHistory: false\n      };\n    } catch (error) {\n      console.error(error);\n      return {\n        appState: Object.assign(Object.assign({}, appState), {\n          errorMessage: error.message\n        }),\n        commitToHistory: false\n      };\n    }\n  }),\n  predicate: elements => {\n    return _clipboard__WEBPACK_IMPORTED_MODULE_2__.probablySupportsClipboardBlob && elements.length > 0;\n  },\n  contextItemLabel: "labels.copyAsPng",\n  keyTest: event => event.code === _keys__WEBPACK_IMPORTED_MODULE_0__.CODES.C && event.altKey && event.shiftKey\n});\nconst copyText = (0,_register__WEBPACK_IMPORTED_MODULE_1__.register)({\n  name: "copyText",\n  trackEvent: {\n    category: "element"\n  },\n  perform: (elements, appState, _, app) => {\n    const selectedElements = app.scene.getSelectedElements({\n      selectedElementIds: appState.selectedElementIds,\n      includeBoundTextElement: true\n    });\n    const text = selectedElements.reduce((acc, element) => {\n      if ((0,_element__WEBPACK_IMPORTED_MODULE_5__.isTextElement)(element)) {\n        acc.push(element.text);\n      }\n\n      return acc;\n    }, []).join("\\n\\n");\n    (0,_clipboard__WEBPACK_IMPORTED_MODULE_2__.copyTextToSystemClipboard)(text);\n    return {\n      commitToHistory: false\n    };\n  },\n  predicate: (elements, appState, _, app) => {\n    return _clipboard__WEBPACK_IMPORTED_MODULE_2__.probablySupportsClipboardWriteText && app.scene.getSelectedElements({\n      selectedElementIds: appState.selectedElementIds,\n      includeBoundTextElement: true\n    }).some(_element__WEBPACK_IMPORTED_MODULE_5__.isTextElement);\n  },\n  contextItemLabel: "labels.copyText"\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 13552 characters]\n//# sourceURL=webpack-internal:///../../actions/actionClipboard.tsx\n');
              }
            ),
            /***/
            "../../actions/actionDeleteSelected.tsx": (
              /*!**********************************************!*\
                !*** ../../actions/actionDeleteSelected.tsx ***!
                \**********************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "actionDeleteSelected": () => (/* binding */ actionDeleteSelected)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../scene */ "../../scene/index.ts");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _components_ToolButton__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../components/ToolButton */ "../../components/ToolButton.tsx");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./register */ "../../actions/register.ts");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _element_mutateElement__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../element/mutateElement */ "../../element/mutateElement.ts");\n/* harmony import */ var _groups__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../groups */ "../../groups.ts");\n/* harmony import */ var _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../element/linearElementEditor */ "../../element/linearElementEditor.ts");\n/* harmony import */ var _element_binding__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../element/binding */ "../../element/binding.ts");\n/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../element/typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _components_icons__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../components/icons */ "../../components/icons.tsx");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst deleteSelectedElements = (elements, appState) => {\n  const framesToBeDeleted = new Set((0,_scene__WEBPACK_IMPORTED_MODULE_1__.getSelectedElements)(elements.filter(el => el.type === "frame"), appState).map(el => el.id));\n  return {\n    elements: elements.map(el => {\n      if (appState.selectedElementIds[el.id]) {\n        return (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_7__.newElementWith)(el, {\n          isDeleted: true\n        });\n      }\n\n      if (el.frameId && framesToBeDeleted.has(el.frameId)) {\n        return (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_7__.newElementWith)(el, {\n          isDeleted: true\n        });\n      }\n\n      if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_11__.isBoundToContainer)(el) && appState.selectedElementIds[el.containerId]) {\n        return (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_7__.newElementWith)(el, {\n          isDeleted: true\n        });\n      }\n\n      return el;\n    }),\n    appState: Object.assign(Object.assign({}, appState), {\n      selectedElementIds: {},\n      selectedGroupIds: {}\n    })\n  };\n};\n\nconst handleGroupEditingState = (appState, elements) => {\n  if (appState.editingGroupId) {\n    const siblingElements = (0,_groups__WEBPACK_IMPORTED_MODULE_8__.getElementsInGroup)((0,_element__WEBPACK_IMPORTED_MODULE_6__.getNonDeletedElements)(elements), appState.editingGroupId);\n\n    if (siblingElements.length) {\n      return Object.assign(Object.assign({}, appState), {\n        selectedElementIds: {\n          [siblingElements[0].id]: true\n        }\n      });\n    }\n  }\n\n  return appState;\n};\n\nconst actionDeleteSelected = (0,_register__WEBPACK_IMPORTED_MODULE_5__.register)({\n  name: "deleteSelectedElements",\n  trackEvent: {\n    category: "element",\n    action: "delete"\n  },\n  perform: (elements, appState) => {\n    if (appState.editingLinearElement) {\n      const {\n        elementId,\n        selectedPointsIndices,\n        startBindingElement,\n        endBindingElement\n      } = appState.editingLinearElement;\n      const element = _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_9__.LinearElementEditor.getElement(elementId);\n\n      if (!element) {\n        return false;\n      } // case: no point selected \u2192 do nothing, as deleting the whole element\n      // is most likely a mistake, where you wanted to delete a specific point\n      // but failed to select it (or you thought it\'s selected, while it was\n      // only in a hover state)\n\n\n      if (selectedPointsIndices == null) {\n        return false;\n      } // case: deleting last remaining point\n\n\n      if (element.points.length < 2) {\n        const nextElements = elements.map(el => {\n          if (el.id === element.id) {\n            return (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_7__.newElementWith)(el, {\n              isDeleted: true\n            });\n          }\n\n          return el;\n        });\n        const nextAppState = handleGroupEditingState(appState, nextElements);\n        return {\n          elements: nextElements,\n          appState: Object.assign(Object.assign({}, nextAppState), {\n            editingLinearElement: null\n          }),\n          commitToHistory: false\n        };\n      } // We cannot do this inside `movePoint` because it is also called\n      // when deleting the uncommitted point (which hasn\'t caused any binding)\n\n\n      const binding = {\n        startBindingElement: (selectedPointsIndices === null || selectedPointsIndices === void 0 ? void 0 : selectedPointsIndices.includes(0)) ? null : startBindingElement,\n        endBindingElement: (selectedPointsIndices === null || selectedPointsIndices === void 0 ? void 0 : selectedPointsIndices.includes(element.points.length - 1)) ? null : endBindingElement\n      };\n      _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_9__.LinearElementEditor.deletePoints(element, selectedPointsIndices);\n      return {\n        elements,\n        appState: Object.assign(Object.assign({}, appState), {\n          editingLinearElement: Object.assign(Object.assign(Object.assign({}, appState.editingLinearElement), binding), {\n            selectedPointsIndices: (selectedPointsIndices === null || selectedPointsIndices === void 0 ? void 0 : selectedPointsIndices[0]) > 0 ? [selectedPointsIndices[0] - 1] : [0]\n          })\n        }),\n        commitToHistory: true\n      };\n    }\n\n    let {\n      elements: nextElements,\n      appState: nextAppState\n    } = deleteSelectedElements(elements, appState);\n    (0,_element_binding__WEBPACK_IMPORTED_MODULE_10__.fixBindingsAfterDeletion)(nextElements, elements.filter(({\n      id\n    }) => appState.selectedElementIds[id]));\n    nextAppState = handleGroupEditingState(nextAppState, nextElements);\n    return {\n      elements: nextElements,\n      appState: Object.assign(Object.assign({}, nextAppState), {\n        activeTool: (0,_utils__WEBPACK_IMPORTED_MODULE_12__.updateActiveTool)(appState, {\n          type: "selection"\n        }),\n        multiElement: null,\n        activeEmbeddable: null\n      }),\n      commitToHistory: (0,_scene__WEBPACK_IMPORTED_MODULE_1__.isSomeElementSelected)((0,_element__WEBPACK_IMPORTED_MODULE_6__.getNonDeletedElements)(elements), appState)\n    };\n  },\n  contextItemLabel: "labels.delete",\n  keyTest: (event, appState, elements) => (event.key === _keys__WEBPACK_IMPORTED_MODULE_2__.KEYS.BACKSPACE || event.key === _keys__WEBPACK_IMPORTED_MODULE_2__.KEYS.DELETE) && !event[_keys__WEBPACK_IMPORTED_MODULE_2__.KEYS.CTRL_OR_CMD],\n  PanelComponent: ({\n    elements,\n    appState,\n    updateData\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ToolButton__WEBPACK_IMPORTED_MODULE_3__.ToolButton, {\n    type: "button",\n    icon: _components_icons__WEBPACK_IMPORTED_MODULE_13__.TrashIcon,\n    title: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("labels.delete"),\n    "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("labels.delete"),\n    onClick: () => updateData(null),\n    visible: (0,_scene__WEBPACK_IMPORTED_MODULE_1__.isSomeElementSelected)((0,_element__WEBPACK_IMPORTED_MODULE_6__.getNonDeletedElements)(elements), appState)\n  })\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 9800 characters]\n//# sourceURL=webpack-internal:///../../actions/actionDeleteSelected.tsx\n');
              }
            ),
            /***/
            "../../actions/actionDistribute.tsx": (
              /*!******************************************!*\
                !*** ../../actions/actionDistribute.tsx ***!
                \******************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "distributeHorizontally": () => (/* binding */ distributeHorizontally),\n/* harmony export */   "distributeVertically": () => (/* binding */ distributeVertically)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var _components_icons__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/icons */ "../../components/icons.tsx");\n/* harmony import */ var _components_ToolButton__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../components/ToolButton */ "../../components/ToolButton.tsx");\n/* harmony import */ var _distribute__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../distribute */ "../../distribute.ts");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _frame__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../frame */ "../../frame.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../scene */ "../../scene/index.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./register */ "../../actions/register.ts");\n\n\n\n\n\n\n\n\n\n\n\n\nconst enableActionGroup = (appState, app) => {\n  const selectedElements = app.scene.getSelectedElements(appState);\n  return selectedElements.length > 1 && // TODO enable distributing frames when implemented properly\n  !selectedElements.some(el => el.type === "frame");\n};\n\nconst distributeSelectedElements = (elements, appState, app, distribution) => {\n  const selectedElements = app.scene.getSelectedElements(appState);\n  const updatedElements = (0,_distribute__WEBPACK_IMPORTED_MODULE_3__.distributeElements)(selectedElements, distribution);\n  const updatedElementsMap = (0,_utils__WEBPACK_IMPORTED_MODULE_9__.arrayToMap)(updatedElements);\n  return (0,_frame__WEBPACK_IMPORTED_MODULE_5__.updateFrameMembershipOfSelectedElements)(elements.map(element => updatedElementsMap.get(element.id) || element), appState, app);\n};\n\nconst distributeHorizontally = (0,_register__WEBPACK_IMPORTED_MODULE_10__.register)({\n  name: "distributeHorizontally",\n  trackEvent: {\n    category: "element"\n  },\n  perform: (elements, appState, _, app) => {\n    return {\n      appState,\n      elements: distributeSelectedElements(elements, appState, app, {\n        space: "between",\n        axis: "x"\n      }),\n      commitToHistory: true\n    };\n  },\n  keyTest: event => !event[_keys__WEBPACK_IMPORTED_MODULE_7__.KEYS.CTRL_OR_CMD] && event.altKey && event.code === _keys__WEBPACK_IMPORTED_MODULE_7__.CODES.H,\n  PanelComponent: ({\n    elements,\n    appState,\n    updateData,\n    app\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ToolButton__WEBPACK_IMPORTED_MODULE_2__.ToolButton, {\n    hidden: !enableActionGroup(appState, app),\n    type: "button",\n    icon: _components_icons__WEBPACK_IMPORTED_MODULE_1__.DistributeHorizontallyIcon,\n    onClick: () => updateData(null),\n    title: `${(0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("labels.distributeHorizontally")} \u2014 ${(0,_utils__WEBPACK_IMPORTED_MODULE_9__.getShortcutKey)("Alt+H")}`,\n    "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("labels.distributeHorizontally"),\n    visible: (0,_scene__WEBPACK_IMPORTED_MODULE_8__.isSomeElementSelected)((0,_element__WEBPACK_IMPORTED_MODULE_4__.getNonDeletedElements)(elements), appState)\n  })\n});\nconst distributeVertically = (0,_register__WEBPACK_IMPORTED_MODULE_10__.register)({\n  name: "distributeVertically",\n  trackEvent: {\n    category: "element"\n  },\n  perform: (elements, appState, _, app) => {\n    return {\n      appState,\n      elements: distributeSelectedElements(elements, appState, app, {\n        space: "between",\n        axis: "y"\n      }),\n      commitToHistory: true\n    };\n  },\n  keyTest: event => !event[_keys__WEBPACK_IMPORTED_MODULE_7__.KEYS.CTRL_OR_CMD] && event.altKey && event.code === _keys__WEBPACK_IMPORTED_MODULE_7__.CODES.V,\n  PanelComponent: ({\n    elements,\n    appState,\n    updateData,\n    app\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ToolButton__WEBPACK_IMPORTED_MODULE_2__.ToolButton, {\n    hidden: !enableActionGroup(appState, app),\n    type: "button",\n    icon: _components_icons__WEBPACK_IMPORTED_MODULE_1__.DistributeVerticallyIcon,\n    onClick: () => updateData(null),\n    title: `${(0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("labels.distributeVertically")} \u2014 ${(0,_utils__WEBPACK_IMPORTED_MODULE_9__.getShortcutKey)("Alt+V")}`,\n    "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("labels.distributeVertically"),\n    visible: (0,_scene__WEBPACK_IMPORTED_MODULE_8__.isSomeElementSelected)((0,_element__WEBPACK_IMPORTED_MODULE_4__.getNonDeletedElements)(elements), appState)\n  })\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5724 characters]\n//# sourceURL=webpack-internal:///../../actions/actionDistribute.tsx\n');
              }
            ),
            /***/
            "../../actions/actionDuplicateSelection.tsx": (
              /*!**************************************************!*\
                !*** ../../actions/actionDuplicateSelection.tsx ***!
                \**************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "actionDuplicateSelection": () => (/* binding */ actionDuplicateSelection)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./register */ "../../actions/register.ts");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../scene */ "../../scene/index.ts");\n/* harmony import */ var _components_ToolButton__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../components/ToolButton */ "../../components/ToolButton.tsx");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../element/linearElementEditor */ "../../element/linearElementEditor.ts");\n/* harmony import */ var _groups__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../groups */ "../../groups.ts");\n/* harmony import */ var _element_binding__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../element/binding */ "../../element/binding.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _element_textElement__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../element/textElement */ "../../element/textElement.ts");\n/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../element/typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var _element_sortElements__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../element/sortElements */ "../../element/sortElements.ts");\n/* harmony import */ var _components_icons__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../components/icons */ "../../components/icons.tsx");\n/* harmony import */ var _frame__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../frame */ "../../frame.ts");\n/* harmony import */ var _scene_selection__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../scene/selection */ "../../scene/selection.ts");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst actionDuplicateSelection = (0,_register__WEBPACK_IMPORTED_MODULE_2__.register)({\n  name: "duplicateSelection",\n  trackEvent: {\n    category: "element"\n  },\n  perform: (elements, appState) => {\n    // duplicate selected point(s) if editing a line\n    if (appState.editingLinearElement) {\n      const ret = _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_8__.LinearElementEditor.duplicateSelectedPoints(appState);\n\n      if (!ret) {\n        return false;\n      }\n\n      return {\n        elements,\n        appState: ret.appState,\n        commitToHistory: true\n      };\n    }\n\n    return Object.assign(Object.assign({}, duplicateElements(elements, appState)), {\n      commitToHistory: true\n    });\n  },\n  contextItemLabel: "labels.duplicateSelection",\n  keyTest: event => event[_keys__WEBPACK_IMPORTED_MODULE_1__.KEYS.CTRL_OR_CMD] && event.key === _keys__WEBPACK_IMPORTED_MODULE_1__.KEYS.D,\n  PanelComponent: ({\n    elements,\n    appState,\n    updateData\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ToolButton__WEBPACK_IMPORTED_MODULE_5__.ToolButton, {\n    type: "button",\n    icon: _components_icons__WEBPACK_IMPORTED_MODULE_15__.DuplicateIcon,\n    title: `${(0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("labels.duplicateSelection")} \u2014 ${(0,_utils__WEBPACK_IMPORTED_MODULE_7__.getShortcutKey)("CtrlOrCmd+D")}`,\n    "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("labels.duplicateSelection"),\n    onClick: () => updateData(null),\n    visible: (0,_scene__WEBPACK_IMPORTED_MODULE_4__.isSomeElementSelected)((0,_element__WEBPACK_IMPORTED_MODULE_3__.getNonDeletedElements)(elements), appState)\n  })\n});\n\nconst duplicateElements = (elements, appState) => {\n  // ---------------------------------------------------------------------------\n  // step (1)\n  const sortedElements = (0,_element_sortElements__WEBPACK_IMPORTED_MODULE_14__.normalizeElementOrder)(elements);\n  const groupIdMap = new Map();\n  const newElements = [];\n  const oldElements = [];\n  const oldIdToDuplicatedId = new Map();\n\n  const duplicateAndOffsetElement = element => {\n    const newElement = (0,_element__WEBPACK_IMPORTED_MODULE_3__.duplicateElement)(appState.editingGroupId, groupIdMap, element, {\n      x: element.x + _constants__WEBPACK_IMPORTED_MODULE_11__.GRID_SIZE / 2,\n      y: element.y + _constants__WEBPACK_IMPORTED_MODULE_11__.GRID_SIZE / 2\n    });\n    oldIdToDuplicatedId.set(element.id, newElement.id);\n    oldElements.push(element);\n    newElements.push(newElement);\n    return newElement;\n  };\n\n  const idsOfElementsToDuplicate = (0,_utils__WEBPACK_IMPORTED_MODULE_7__.arrayToMap)((0,_scene_selection__WEBPACK_IMPORTED_MODULE_17__.getSelectedElements)(sortedElements, appState, {\n    includeBoundTextElement: true,\n    includeElementsInFrames: true\n  })); // Ids of elements that have already been processed so we don\'t push them\n  // into the array twice if we end up backtracking when retrieving\n  // discontiguous group of elements (can happen due to a bug, or in edge\n  // cases such as a group containing deleted elements which were not selected).\n  //\n  // This is not enough to prevent duplicates, so we do a second loop afterwards\n  // to remove them.\n  //\n  // For convenience we mark even the newly created ones even though we don\'t\n  // loop over them.\n\n  const processedIds = new Map();\n\n  const markAsProcessed = elements => {\n    for (const element of elements) {\n      processedIds.set(element.id, true);\n    }\n\n    return elements;\n  };\n\n  const elementsWithClones = [];\n  let index = -1;\n\n  while (++index < sortedElements.length) {\n    const element = sortedElements[index];\n\n    if (processedIds.get(element.id)) {\n      continue;\n    }\n\n    const boundTextElement = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_12__.getBoundTextElement)(element);\n    const isElementAFrame = (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_13__.isFrameElement)(element);\n\n    if (idsOfElementsToDuplicate.get(element.id)) {\n      // if a group or a container/bound-text or frame, duplicate atomically\n      if (element.groupIds.length || boundTextElement || isElementAFrame) {\n        const groupId = (0,_groups__WEBPACK_IMPORTED_MODULE_9__.getSelectedGroupForElement)(appState, element);\n\n        if (groupId) {\n          // TODO:\n          // remove `.flatMap...`\n          // if the elements in a frame are grouped when the frame is grouped\n          const groupElements = (0,_groups__WEBPACK_IMPORTED_MODULE_9__.getElementsInGroup)(sortedElements, groupId).flatMap(element => (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_13__.isFrameElement)(element) ? [...(0,_frame__WEBPACK_IMPORTED_MODULE_16__.getFrameChildren)(elements, element.id), element] : [element]);\n          elementsWithClones.push(...markAsProcessed([...groupElements, ...groupElements.map(element => duplicateAndOffsetElement(element))]));\n          continue;\n        }\n\n        if (boundTextElement) {\n          elementsWithClones.push(...markAsProcessed([element, boundTextElement, duplicateAndOffsetElement(element), duplicateAndOffsetElement(boundTextElement)]));\n          continue;\n        }\n\n        if (isElementAFrame) {\n          const elementsInFrame = (0,_frame__WEBPACK_IMPORTED_MODULE_16__.getFrameChildren)(sortedElements, element.id);\n          elementsWithClones.push(...markAsProcessed([...elementsInFrame, element, ...elementsInFrame.map(e => duplicateAndOffsetElement(e)), duplicateAndOffsetElement(element)]));\n          continue;\n        }\n      } // since elements in frames have a lower z-index than the frame itself,\n      // they will be looped first and if their frames are selected as well,\n      // they will have been copied along with the frame atomically in the\n      // above branch, so we must skip those elements here\n      //\n      // now, for elements do not belong any frames or elements whose frames\n      // are selected (or elements that are left out from the above\n      // steps for whatever reason) we (should at least) duplicate them here\n\n\n      if (!element.frameId || !idsOfElementsToDuplicate.has(element.frameId)) {\n        elementsWithClones.push(...markAsProcessed([element, duplicateAndOffsetElement(element)]));\n      }\n    } else {\n      elementsWithClones.push(...markAsProcessed([element]));\n    }\n  } // step (2)\n  // second pass to remove duplicates. We loop from the end as it\'s likelier\n  // that the last elements are in the correct order (contiguous or otherwise).\n  // Thus we need to reverse as the last step (3).\n\n\n  const finalElementsReversed = [];\n  const finalElementIds = new Map();\n  index = elementsWithClones.length;\n\n  while (--index >= 0) {\n    const element = elementsWithClones[index];\n\n    if (!finalElementIds.get(element.id)) {\n      finalElementIds.set(element.id, true);\n      finalElementsReversed.push(element);\n    }\n  } // step (3)\n\n\n  const finalElements = finalElementsReversed.reverse(); // ---------------------------------------------------------------------------\n\n  (0,_element_textElement__WEBPACK_IMPORTED_MODULE_12__.bindTextToShapeAfterDuplication)(elementsWithClones, oldElements, oldIdToDuplicatedId);\n  (0,_element_binding__WEBPACK_IMPORTED_MODULE_10__.fixBindingsAfterDuplication)(elementsWithClones, oldElements, oldIdToDuplicatedId);\n  (0,_frame__WEBPACK_IMPORTED_MODULE_16__.bindElementsToFramesAfterDuplication)(finalElements, oldElements, oldIdToDuplicatedId);\n  const nextElementsToSelect = (0,_scene_selection__WEBPACK_IMPORTED_MODULE_17__.excludeElementsInFramesFromSelection)(newElements);\n  return {\n    elements: finalElements,\n    appState: Object.assign(Object.assign({}, appState), (0,_groups__WEBPACK_IMPORTED_MODULE_9__.selectGroupsForSelectedElements)({\n      editingGroupId: appState.editingGroupId,\n      selectedElementIds: nextElementsToSelect.reduce((acc, element) => {\n        if (!(0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_13__.isBoundToContainer)(element)) {\n          acc[element.id] = true;\n        }\n\n        return acc;\n      }, {})\n    }, (0,_element__WEBPACK_IMPORTED_MODULE_3__.getNonDeletedElements)(finalElements), appState, null))\n  };\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 12908 characters]\n//# sourceURL=webpack-internal:///../../actions/actionDuplicateSelection.tsx\n');
              }
            ),
            /***/
            "../../actions/actionElementLock.ts": (
              /*!******************************************!*\
                !*** ../../actions/actionElementLock.ts ***!
                \******************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "actionToggleElementLock": () => (/* binding */ actionToggleElementLock),\n/* harmony export */   "actionUnlockAllElements": () => (/* binding */ actionUnlockAllElements)\n/* harmony export */ });\n/* harmony import */ var _element_mutateElement__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../element/mutateElement */ "../../element/mutateElement.ts");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./register */ "../../actions/register.ts");\n\n\n\n\n\nconst shouldLock = elements => elements.every(el => !el.locked);\n\nconst actionToggleElementLock = (0,_register__WEBPACK_IMPORTED_MODULE_3__.register)({\n  name: "toggleElementLock",\n  trackEvent: {\n    category: "element"\n  },\n  predicate: (elements, appState, _, app) => {\n    const selectedElements = app.scene.getSelectedElements(appState);\n    return !selectedElements.some(element => element.locked && element.frameId);\n  },\n  perform: (elements, appState, _, app) => {\n    const selectedElements = app.scene.getSelectedElements({\n      selectedElementIds: appState.selectedElementIds,\n      includeBoundTextElement: true,\n      includeElementsInFrames: true\n    });\n\n    if (!selectedElements.length) {\n      return false;\n    }\n\n    const nextLockState = shouldLock(selectedElements);\n    const selectedElementsMap = (0,_utils__WEBPACK_IMPORTED_MODULE_2__.arrayToMap)(selectedElements);\n    return {\n      elements: elements.map(element => {\n        if (!selectedElementsMap.has(element.id)) {\n          return element;\n        }\n\n        return (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_0__.newElementWith)(element, {\n          locked: nextLockState\n        });\n      }),\n      appState: Object.assign(Object.assign({}, appState), {\n        selectedLinearElement: nextLockState ? null : appState.selectedLinearElement\n      }),\n      commitToHistory: true\n    };\n  },\n  contextItemLabel: (elements, appState, app) => {\n    const selected = app.scene.getSelectedElements({\n      selectedElementIds: appState.selectedElementIds,\n      includeBoundTextElement: false\n    });\n\n    if (selected.length === 1 && selected[0].type !== "frame") {\n      return selected[0].locked ? "labels.elementLock.unlock" : "labels.elementLock.lock";\n    }\n\n    return shouldLock(selected) ? "labels.elementLock.lockAll" : "labels.elementLock.unlockAll";\n  },\n  keyTest: (event, appState, elements, app) => {\n    return event.key.toLocaleLowerCase() === _keys__WEBPACK_IMPORTED_MODULE_1__.KEYS.L && event[_keys__WEBPACK_IMPORTED_MODULE_1__.KEYS.CTRL_OR_CMD] && event.shiftKey && app.scene.getSelectedElements({\n      selectedElementIds: appState.selectedElementIds,\n      includeBoundTextElement: false\n    }).length > 0;\n  }\n});\nconst actionUnlockAllElements = (0,_register__WEBPACK_IMPORTED_MODULE_3__.register)({\n  name: "unlockAllElements",\n  trackEvent: {\n    category: "canvas"\n  },\n  viewMode: false,\n  predicate: elements => {\n    return elements.some(element => element.locked);\n  },\n  perform: (elements, appState) => {\n    const lockedElements = elements.filter(el => el.locked);\n    return {\n      elements: elements.map(element => {\n        if (element.locked) {\n          return (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_0__.newElementWith)(element, {\n            locked: false\n          });\n        }\n\n        return element;\n      }),\n      appState: Object.assign(Object.assign({}, appState), {\n        selectedElementIds: Object.fromEntries(lockedElements.map(el => [el.id, true]))\n      }),\n      commitToHistory: true\n    };\n  },\n  contextItemLabel: "labels.elementLock.unlockAll"\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5248 characters]\n//# sourceURL=webpack-internal:///../../actions/actionElementLock.ts\n');
              }
            ),
            /***/
            "../../actions/actionExport.tsx": (
              /*!**************************************!*\
                !*** ../../actions/actionExport.tsx ***!
                \**************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "actionChangeExportBackground": () => (/* binding */ actionChangeExportBackground),\n/* harmony export */   "actionChangeExportEmbedScene": () => (/* binding */ actionChangeExportEmbedScene),\n/* harmony export */   "actionChangeExportScale": () => (/* binding */ actionChangeExportScale),\n/* harmony export */   "actionChangeProjectName": () => (/* binding */ actionChangeProjectName),\n/* harmony export */   "actionExportWithDarkMode": () => (/* binding */ actionExportWithDarkMode),\n/* harmony export */   "actionLoadScene": () => (/* binding */ actionLoadScene),\n/* harmony export */   "actionSaveFileToDisk": () => (/* binding */ actionSaveFileToDisk),\n/* harmony export */   "actionSaveToActiveFile": () => (/* binding */ actionSaveToActiveFile)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var _components_icons__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/icons */ "../../components/icons.tsx");\n/* harmony import */ var _components_ProjectName__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../components/ProjectName */ "../../components/ProjectName.tsx");\n/* harmony import */ var _components_ToolButton__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../components/ToolButton */ "../../components/ToolButton.tsx");\n/* harmony import */ var _components_Tooltip__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../components/Tooltip */ "../../components/Tooltip.tsx");\n/* harmony import */ var _components_DarkModeToggle__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../components/DarkModeToggle */ "../../components/DarkModeToggle.tsx");\n/* harmony import */ var _data__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../data */ "../../data/index.ts");\n/* harmony import */ var _data_resave__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../data/resave */ "../../data/resave.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _components_App__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../components/App */ "../../components/App.tsx");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./register */ "../../actions/register.ts");\n/* harmony import */ var _components_CheckboxItem__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../components/CheckboxItem */ "../../components/CheckboxItem.tsx");\n/* harmony import */ var _scene_export__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../scene/export */ "../../scene/export.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../scene */ "../../scene/index.ts");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _data_blob__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../data/blob */ "../../data/blob.ts");\n/* harmony import */ var _data_filesystem__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../data/filesystem */ "../../data/filesystem.ts");\n/* harmony import */ var _components_ToolIcon_scss__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../components/ToolIcon.scss */ "../../components/ToolIcon.scss");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator["throw"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst actionChangeProjectName = (0,_register__WEBPACK_IMPORTED_MODULE_11__.register)({\n  name: "changeProjectName",\n  trackEvent: false,\n  perform: (_elements, appState, value) => {\n    return {\n      appState: Object.assign(Object.assign({}, appState), {\n        name: value\n      }),\n      commitToHistory: false\n    };\n  },\n  PanelComponent: ({\n    appState,\n    updateData,\n    appProps,\n    data\n  }) => {\n    var _a;\n\n    return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ProjectName__WEBPACK_IMPORTED_MODULE_2__.ProjectName, {\n      label: (0,_i18n__WEBPACK_IMPORTED_MODULE_8__.t)("labels.fileTitle"),\n      value: appState.name || "Unnamed",\n      onChange: name => updateData(name),\n      isNameEditable: typeof appProps.name === "undefined" && !appState.viewModeEnabled,\n      ignoreFocus: (_a = data === null || data === void 0 ? void 0 : data.ignoreFocus) !== null && _a !== void 0 ? _a : false\n    });\n  }\n});\nconst actionChangeExportScale = (0,_register__WEBPACK_IMPORTED_MODULE_11__.register)({\n  name: "changeExportScale",\n  trackEvent: {\n    category: "export",\n    action: "scale"\n  },\n  perform: (_elements, appState, value) => {\n    return {\n      appState: Object.assign(Object.assign({}, appState), {\n        exportScale: value\n      }),\n      commitToHistory: false\n    };\n  },\n  PanelComponent: ({\n    elements: allElements,\n    appState,\n    updateData\n  }) => {\n    const elements = (0,_element__WEBPACK_IMPORTED_MODULE_16__.getNonDeletedElements)(allElements);\n    const exportSelected = (0,_scene__WEBPACK_IMPORTED_MODULE_15__.isSomeElementSelected)(elements, appState);\n    const exportedElements = exportSelected ? (0,_scene__WEBPACK_IMPORTED_MODULE_15__.getSelectedElements)(elements, appState) : elements;\n    return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n      children: _constants__WEBPACK_IMPORTED_MODULE_14__.EXPORT_SCALES.map(s => {\n        const [width, height] = (0,_scene_export__WEBPACK_IMPORTED_MODULE_13__.getExportSize)(exportedElements, _constants__WEBPACK_IMPORTED_MODULE_14__.DEFAULT_EXPORT_PADDING, s);\n        const scaleButtonTitle = `${(0,_i18n__WEBPACK_IMPORTED_MODULE_8__.t)("imageExportDialog.label.scale")} ${s}x (${width}x${height})`;\n        return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ToolButton__WEBPACK_IMPORTED_MODULE_3__.ToolButton, {\n          size: "small",\n          type: "radio",\n          icon: `${s}x`,\n          name: "export-canvas-scale",\n          title: scaleButtonTitle,\n          "aria-label": scaleButtonTitle,\n          id: "export-canvas-scale",\n          checked: s === appState.exportScale,\n          onChange: () => updateData(s)\n        }, s);\n      })\n    });\n  }\n});\nconst actionChangeExportBackground = (0,_register__WEBPACK_IMPORTED_MODULE_11__.register)({\n  name: "changeExportBackground",\n  trackEvent: {\n    category: "export",\n    action: "toggleBackground"\n  },\n  perform: (_elements, appState, value) => {\n    return {\n      appState: Object.assign(Object.assign({}, appState), {\n        exportBackground: value\n      }),\n      commitToHistory: false\n    };\n  },\n  PanelComponent: ({\n    appState,\n    updateData\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_CheckboxItem__WEBPACK_IMPORTED_MODULE_12__.CheckboxItem, Object.assign({\n    checked: appState.exportBackground,\n    onChange: checked => updateData(checked)\n  }, {\n    children: (0,_i18n__WEBPACK_IMPORTED_MODULE_8__.t)("imageExportDialog.label.withBackground")\n  }))\n});\nconst actionChangeExportEmbedScene = (0,_register__WEBPACK_IMPORTED_MODULE_11__.register)({\n  name: "changeExportEmbedScene",\n  trackEvent: {\n    category: "export",\n    action: "embedScene"\n  },\n  perform: (_elements, appState, value) => {\n    return {\n      appState: Object.assign(Object.assign({}, appState), {\n        exportEmbedScene: value\n      }),\n      commitToHistory: false\n    };\n  },\n  PanelComponent: ({\n    appState,\n    updateData\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components_CheckboxItem__WEBPACK_IMPORTED_MODULE_12__.CheckboxItem, Object.assign({\n    checked: appState.exportEmbedScene,\n    onChange: checked => updateData(checked)\n  }, {\n    children: [(0,_i18n__WEBPACK_IMPORTED_MODULE_8__.t)("imageExportDialog.label.embedScene"), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_Tooltip__WEBPACK_IMPORTED_MODULE_4__.Tooltip, Object.assign({\n      label: (0,_i18n__WEBPACK_IMPORTED_MODULE_8__.t)("imageExportDialog.tooltip.embedScene"),\n      long: true\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n        className: "excalidraw-tooltip-icon"\n      }, {\n        children: _components_icons__WEBPACK_IMPORTED_MODULE_1__.questionCircle\n      }))\n    }))]\n  }))\n});\nconst actionSaveToActiveFile = (0,_register__WEBPACK_IMPORTED_MODULE_11__.register)({\n  name: "saveToActiveFile",\n  trackEvent: {\n    category: "export"\n  },\n  predicate: (elements, appState, props, app) => {\n    return !!app.props.UIOptions.canvasActions.saveToActiveFile && !!appState.fileHandle && !appState.viewModeEnabled;\n  },\n  perform: (elements, appState, value, app) => __awaiter(void 0, void 0, void 0, function* () {\n    const fileHandleExists = !!appState.fileHandle;\n\n    try {\n      const {\n        fileHandle\n      } = (0,_data_blob__WEBPACK_IMPORTED_MODULE_17__.isImageFileHandle)(appState.fileHandle) ? yield (0,_data_resave__WEBPACK_IMPORTED_MODULE_7__.resaveAsImageWithScene)(elements, appState, app.files) : yield (0,_data__WEBPACK_IMPORTED_MODULE_6__.saveAsJSON)(elements, appState, app.files);\n      return {\n        commitToHistory: false,\n        appState: Object.assign(Object.assign({}, appState), {\n          fileHandle,\n          toast: fileHandleExists ? {\n            message: (fileHandle === null || fileHandle === void 0 ? void 0 : fileHandle.name) ? (0,_i18n__WEBPACK_IMPORTED_MODULE_8__.t)("toast.fileSavedToFilename").replace("{filename}", `"${fileHandle.name}"`) : (0,_i18n__WEBPACK_IMPORTED_MODULE_8__.t)("toast.fileSaved")\n          } : null\n        })\n      };\n    } catch (error) {\n      if ((error === null || error === void 0 ? void 0 : error.name) !== "AbortError") {\n        console.error(error);\n      } else {\n        console.warn(error);\n      }\n\n      return {\n        commitToHistory: false\n      };\n    }\n  }),\n  keyTest: event => event.key === _keys__WEBPACK_IMPORTED_MODULE_10__.KEYS.S && event[_keys__WEBPACK_IMPORTED_MODULE_10__.KEYS.CTRL_OR_CMD] && !event.shiftKey\n});\nconst actionSaveFileToDisk = (0,_register__WEBPACK_IMPORTED_MODULE_11__.register)({\n  name: "saveFileToDisk",\n  viewMode: true,\n  trackEvent: {\n    category: "export"\n  },\n  perform: (elements, appState, value, app) => __awaiter(void 0, void 0, void 0, function* () {\n    try {\n      const {\n        fileHandle\n      } = yield (0,_data__WEBPACK_IMPORTED_MODULE_6__.saveAsJSON)(elements, Object.assign(Object.assign({}, appState), {\n        fileHandle: null\n      }), app.files);\n      return {\n        commitToHistory: false,\n        appState: Object.assign(Object.assign({}, appState), {\n          openDialog: null,\n          fileHandle,\n          toast: {\n            message: (0,_i18n__WEBPACK_IMPORTED_MODULE_8__.t)("toast.fileSaved")\n          }\n        })\n      };\n    } catch (error) {\n      if ((error === null || error === void 0 ? void 0 : error.name) !== "AbortError") {\n        console.error(error);\n      } else {\n        console.warn(error);\n      }\n\n      return {\n        commitToHistory: false\n      };\n    }\n  }),\n  keyTest: event => event.key === _keys__WEBPACK_IMPORTED_MODULE_10__.KEYS.S && event.shiftKey && event[_keys__WEBPACK_IMPORTED_MODULE_10__.KEYS.CTRL_OR_CMD],\n  PanelComponent: ({\n    updateData\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ToolButton__WEBPACK_IMPORTED_MODULE_3__.ToolButton, {\n    type: "button",\n    icon: _components_icons__WEBPACK_IMPORTED_MODULE_1__.saveAs,\n    title: (0,_i18n__WEBPACK_IMPORTED_MODULE_8__.t)("buttons.saveAs"),\n    "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_8__.t)("buttons.saveAs"),\n    showAriaLabel: (0,_components_App__WEBPACK_IMPORTED_MODULE_9__.useDevice)().editor.isMobile,\n    hidden: !_data_filesystem__WEBPACK_IMPORTED_MODULE_18__.nativeFileSystemSupported,\n    onClick: () => updateData(null),\n    "data-testid": "save-as-button"\n  })\n});\nconst actionLoadScene = (0,_register__WEBPACK_IMPORTED_MODULE_11__.register)({\n  name: "loadScene",\n  trackEvent: {\n    category: "export"\n  },\n  predicate: (elements, appState, props, app) => {\n    return !!app.props.UIOptions.canvasActions.loadScene && !appState.viewModeEnabled;\n  },\n  perform: (elements, appState, _, app) => __awaiter(void 0, void 0, void 0, function* () {\n    try {\n      const {\n        elements: loadedElements,\n        appState: loadedAppState,\n        files\n      } = yield (0,_data__WEBPACK_IMPORTED_MODULE_6__.loadFromJSON)(appState, elements);\n      return {\n        elements: loadedElements,\n        appState: loadedAppState,\n        files,\n        commitToHistory: true\n      };\n    } catch (error) {\n      if ((error === null || error === void 0 ? void 0 : error.name) === "AbortError") {\n        console.warn(error);\n        return false;\n      }\n\n      return {\n        elements,\n        appState: Object.assign(Object.assign({}, appState), {\n          errorMessage: error.message\n        }),\n        files: app.files,\n        commitToHistory: false\n      };\n    }\n  }),\n  keyTest: event => event[_keys__WEBPACK_IMPORTED_MODULE_10__.KEYS.CTRL_OR_CMD] && event.key === _keys__WEBPACK_IMPORTED_MODULE_10__.KEYS.O\n});\nconst actionExportWithDarkMode = (0,_register__WEBPACK_IMPORTED_MODULE_11__.register)({\n  name: "exportWithDarkMode",\n  trackEvent: {\n    category: "export",\n    action: "toggleTheme"\n  },\n  perform: (_elements, appState, value) => {\n    return {\n      appState: Object.assign(Object.assign({}, appState), {\n        exportWithDarkMode: value\n      }),\n      commitToHistory: false\n    };\n  },\n  PanelComponent: ({\n    appState,\n    updateData\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    style: {\n      display: "flex",\n      justifyContent: "flex-end",\n      marginTop: "-45px",\n      marginBottom: "10px"\n    }\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_DarkModeToggle__WEBPACK_IMPORTED_MODULE_5__.DarkModeToggle, {\n      value: appState.exportWithDarkMode ? _constants__WEBPACK_IMPORTED_MODULE_14__.THEME.DARK : _constants__WEBPACK_IMPORTED_MODULE_14__.THEME.LIGHT,\n      onChange: theme => {\n        updateData(theme === _constants__WEBPACK_IMPORTED_MODULE_14__.THEME.DARK);\n      },\n      title: (0,_i18n__WEBPACK_IMPORTED_MODULE_8__.t)("imageExportDialog.label.darkMode")\n    })\n  }))\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 18352 characters]\n//# sourceURL=webpack-internal:///../../actions/actionExport.tsx\n');
              }
            ),
            /***/
            "../../actions/actionFinalize.tsx": (
              /*!****************************************!*\
                !*** ../../actions/actionFinalize.tsx ***!
                \****************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "actionFinalize": () => (/* binding */ actionFinalize)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _components_ToolButton__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../components/ToolButton */ "../../components/ToolButton.tsx");\n/* harmony import */ var _components_icons__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../components/icons */ "../../components/icons.tsx");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./register */ "../../actions/register.ts");\n/* harmony import */ var _element_mutateElement__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../element/mutateElement */ "../../element/mutateElement.ts");\n/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../math */ "../../math.ts");\n/* harmony import */ var _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../element/linearElementEditor */ "../../element/linearElementEditor.ts");\n/* harmony import */ var _scene_Scene__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../scene/Scene */ "../../scene/Scene.ts");\n/* harmony import */ var _element_binding__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../element/binding */ "../../element/binding.ts");\n/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../element/typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var _cursor__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../cursor */ "../../cursor.ts");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst actionFinalize = (0,_register__WEBPACK_IMPORTED_MODULE_7__.register)({\n  name: "finalize",\n  trackEvent: false,\n  perform: (elements, appState, _, {\n    interactiveCanvas,\n    focusContainer,\n    scene\n  }) => {\n    var _a;\n\n    if (appState.editingLinearElement) {\n      const {\n        elementId,\n        startBindingElement,\n        endBindingElement\n      } = appState.editingLinearElement;\n      const element = _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_10__.LinearElementEditor.getElement(elementId);\n\n      if (element) {\n        if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_13__.isBindingElement)(element)) {\n          (0,_element_binding__WEBPACK_IMPORTED_MODULE_12__.bindOrUnbindLinearElement)(element, startBindingElement, endBindingElement);\n        }\n\n        return {\n          elements: element.points.length < 2 || (0,_element__WEBPACK_IMPORTED_MODULE_2__.isInvisiblySmallElement)(element) ? elements.filter(el => el.id !== element.id) : undefined,\n          appState: Object.assign(Object.assign({}, appState), {\n            cursorButton: "up",\n            editingLinearElement: null\n          }),\n          commitToHistory: true\n        };\n      }\n    }\n\n    let newElements = elements;\n    const pendingImageElement = appState.pendingImageElementId && scene.getElement(appState.pendingImageElementId);\n\n    if (pendingImageElement) {\n      (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_8__.mutateElement)(pendingImageElement, {\n        isDeleted: true\n      }, false);\n    }\n\n    if (window.document.activeElement instanceof HTMLElement) {\n      focusContainer();\n    }\n\n    const multiPointElement = appState.multiElement ? appState.multiElement : ((_a = appState.editingElement) === null || _a === void 0 ? void 0 : _a.type) === "freedraw" ? appState.editingElement : null;\n\n    if (multiPointElement) {\n      // pen and mouse have hover\n      if (multiPointElement.type !== "freedraw" && appState.lastPointerDownWith !== "touch") {\n        const {\n          points,\n          lastCommittedPoint\n        } = multiPointElement;\n\n        if (!lastCommittedPoint || points[points.length - 1] !== lastCommittedPoint) {\n          (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_8__.mutateElement)(multiPointElement, {\n            points: multiPointElement.points.slice(0, -1)\n          });\n        }\n      }\n\n      if ((0,_element__WEBPACK_IMPORTED_MODULE_2__.isInvisiblySmallElement)(multiPointElement)) {\n        newElements = newElements.filter(el => el.id !== multiPointElement.id);\n      } // If the multi point line closes the loop,\n      // set the last point to first point.\n      // This ensures that loop remains closed at different scales.\n\n\n      const isLoop = (0,_math__WEBPACK_IMPORTED_MODULE_9__.isPathALoop)(multiPointElement.points, appState.zoom.value);\n\n      if (multiPointElement.type === "line" || multiPointElement.type === "freedraw") {\n        if (isLoop) {\n          const linePoints = multiPointElement.points;\n          const firstPoint = linePoints[0];\n          (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_8__.mutateElement)(multiPointElement, {\n            points: linePoints.map((point, index) => index === linePoints.length - 1 ? [firstPoint[0], firstPoint[1]] : point)\n          });\n        }\n      }\n\n      if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_13__.isBindingElement)(multiPointElement) && !isLoop && multiPointElement.points.length > 1) {\n        const [x, y] = _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_10__.LinearElementEditor.getPointAtIndexGlobalCoordinates(multiPointElement, -1);\n        (0,_element_binding__WEBPACK_IMPORTED_MODULE_12__.maybeBindLinearElement)(multiPointElement, appState, _scene_Scene__WEBPACK_IMPORTED_MODULE_11__["default"].getScene(multiPointElement), {\n          x,\n          y\n        });\n      }\n    }\n\n    if (!appState.activeTool.locked && appState.activeTool.type !== "freedraw" || !multiPointElement) {\n      (0,_cursor__WEBPACK_IMPORTED_MODULE_14__.resetCursor)(interactiveCanvas);\n    }\n\n    let activeTool;\n\n    if (appState.activeTool.type === "eraser") {\n      activeTool = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.updateActiveTool)(appState, Object.assign(Object.assign({}, appState.activeTool.lastActiveTool || {\n        type: "selection"\n      }), {\n        lastActiveToolBeforeEraser: null\n      }));\n    } else {\n      activeTool = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.updateActiveTool)(appState, {\n        type: "selection"\n      });\n    }\n\n    return {\n      elements: newElements,\n      appState: Object.assign(Object.assign({}, appState), {\n        cursorButton: "up",\n        activeTool: (appState.activeTool.locked || appState.activeTool.type === "freedraw") && multiPointElement ? appState.activeTool : activeTool,\n        activeEmbeddable: null,\n        draggingElement: null,\n        multiElement: null,\n        editingElement: null,\n        startBoundElement: null,\n        suggestedBindings: [],\n        selectedElementIds: multiPointElement && !appState.activeTool.locked && appState.activeTool.type !== "freedraw" ? Object.assign(Object.assign({}, appState.selectedElementIds), {\n          [multiPointElement.id]: true\n        }) : appState.selectedElementIds,\n        // To select the linear element when user has finished mutipoint editing\n        selectedLinearElement: multiPointElement && (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_13__.isLinearElement)(multiPointElement) ? new _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_10__.LinearElementEditor(multiPointElement, scene) : appState.selectedLinearElement,\n        pendingImageElementId: null\n      }),\n      commitToHistory: appState.activeTool.type === "freedraw"\n    };\n  },\n  keyTest: (event, appState) => event.key === _keys__WEBPACK_IMPORTED_MODULE_1__.KEYS.ESCAPE && (appState.editingLinearElement !== null || !appState.draggingElement && appState.multiElement === null) || (event.key === _keys__WEBPACK_IMPORTED_MODULE_1__.KEYS.ESCAPE || event.key === _keys__WEBPACK_IMPORTED_MODULE_1__.KEYS.ENTER) && appState.multiElement !== null,\n  PanelComponent: ({\n    appState,\n    updateData,\n    data\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ToolButton__WEBPACK_IMPORTED_MODULE_4__.ToolButton, {\n    type: "button",\n    icon: _components_icons__WEBPACK_IMPORTED_MODULE_5__.done,\n    title: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("buttons.done"),\n    "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("buttons.done"),\n    onClick: updateData,\n    visible: appState.multiElement != null,\n    size: (data === null || data === void 0 ? void 0 : data.size) || "medium"\n  })\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 10404 characters]\n//# sourceURL=webpack-internal:///../../actions/actionFinalize.tsx\n');
              }
            ),
            /***/
            "../../actions/actionFlip.ts": (
              /*!***********************************!*\
                !*** ../../actions/actionFlip.ts ***!
                \***********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "actionFlipHorizontal": () => (/* binding */ actionFlipHorizontal),\n/* harmony export */   "actionFlipVertical": () => (/* binding */ actionFlipVertical)\n/* harmony export */ });\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./register */ "../../actions/register.ts");\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../scene */ "../../scene/index.ts");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _element_resizeElements__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../element/resizeElements */ "../../element/resizeElements.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _element_bounds__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../element/bounds */ "../../element/bounds.ts");\n/* harmony import */ var _element_binding__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../element/binding */ "../../element/binding.ts");\n/* harmony import */ var _frame__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../frame */ "../../frame.ts");\n\n\n\n\n\n\n\n\n\nconst actionFlipHorizontal = (0,_register__WEBPACK_IMPORTED_MODULE_0__.register)({\n  name: "flipHorizontal",\n  trackEvent: {\n    category: "element"\n  },\n  perform: (elements, appState, _, app) => {\n    return {\n      elements: (0,_frame__WEBPACK_IMPORTED_MODULE_8__.updateFrameMembershipOfSelectedElements)(flipSelectedElements(elements, appState, "horizontal"), appState, app),\n      appState,\n      commitToHistory: true\n    };\n  },\n  keyTest: event => event.shiftKey && event.code === _keys__WEBPACK_IMPORTED_MODULE_5__.CODES.H,\n  contextItemLabel: "labels.flipHorizontal"\n});\nconst actionFlipVertical = (0,_register__WEBPACK_IMPORTED_MODULE_0__.register)({\n  name: "flipVertical",\n  trackEvent: {\n    category: "element"\n  },\n  perform: (elements, appState, _, app) => {\n    return {\n      elements: (0,_frame__WEBPACK_IMPORTED_MODULE_8__.updateFrameMembershipOfSelectedElements)(flipSelectedElements(elements, appState, "vertical"), appState, app),\n      appState,\n      commitToHistory: true\n    };\n  },\n  keyTest: event => event.shiftKey && event.code === _keys__WEBPACK_IMPORTED_MODULE_5__.CODES.V && !event[_keys__WEBPACK_IMPORTED_MODULE_5__.KEYS.CTRL_OR_CMD],\n  contextItemLabel: "labels.flipVertical"\n});\n\nconst flipSelectedElements = (elements, appState, flipDirection) => {\n  const selectedElements = (0,_scene__WEBPACK_IMPORTED_MODULE_1__.getSelectedElements)((0,_element__WEBPACK_IMPORTED_MODULE_2__.getNonDeletedElements)(elements), appState, {\n    includeBoundTextElement: true,\n    includeElementsInFrames: true\n  });\n  const updatedElements = flipElements(selectedElements, appState, flipDirection);\n  const updatedElementsMap = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.arrayToMap)(updatedElements);\n  return elements.map(element => updatedElementsMap.get(element.id) || element);\n};\n\nconst flipElements = (elements, appState, flipDirection) => {\n  const {\n    minX,\n    minY,\n    maxX,\n    maxY\n  } = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_6__.getCommonBoundingBox)(elements);\n  (0,_element_resizeElements__WEBPACK_IMPORTED_MODULE_3__.resizeMultipleElements)({\n    originalElements: (0,_utils__WEBPACK_IMPORTED_MODULE_4__.arrayToMap)(elements)\n  }, elements, "nw", true, flipDirection === "horizontal" ? maxX : minX, flipDirection === "horizontal" ? minY : maxY);\n  ((0,_element_binding__WEBPACK_IMPORTED_MODULE_7__.isBindingEnabled)(appState) ? _element_binding__WEBPACK_IMPORTED_MODULE_7__.bindOrUnbindSelectedElements : _element_binding__WEBPACK_IMPORTED_MODULE_7__.unbindLinearElements)(elements);\n  return elements;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4352 characters]\n//# sourceURL=webpack-internal:///../../actions/actionFlip.ts\n');
              }
            ),
            /***/
            "../../actions/actionFrame.ts": (
              /*!************************************!*\
                !*** ../../actions/actionFrame.ts ***!
                \************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "actionRemoveAllElementsFromFrame": () => (/* binding */ actionRemoveAllElementsFromFrame),\n/* harmony export */   "actionSelectAllElementsInFrame": () => (/* binding */ actionSelectAllElementsInFrame),\n/* harmony export */   "actionSetFrameAsActiveTool": () => (/* binding */ actionSetFrameAsActiveTool),\n/* harmony export */   "actionupdateFrameRendering": () => (/* binding */ actionupdateFrameRendering)\n/* harmony export */ });\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _frame__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../frame */ "../../frame.ts");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _cursor__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../cursor */ "../../cursor.ts");\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./register */ "../../actions/register.ts");\n\n\n\n\n\n\n\n\nconst isSingleFrameSelected = (appState, app) => {\n  const selectedElements = app.scene.getSelectedElements(appState);\n  return selectedElements.length === 1 && selectedElements[0].type === "frame";\n};\n\nconst actionSelectAllElementsInFrame = (0,_register__WEBPACK_IMPORTED_MODULE_5__.register)({\n  name: "selectAllElementsInFrame",\n  trackEvent: {\n    category: "canvas"\n  },\n  perform: (elements, appState, _, app) => {\n    const selectedFrame = app.scene.getSelectedElements(appState)[0];\n\n    if (selectedFrame && selectedFrame.type === "frame") {\n      const elementsInFrame = (0,_frame__WEBPACK_IMPORTED_MODULE_1__.getFrameChildren)((0,_element__WEBPACK_IMPORTED_MODULE_0__.getNonDeletedElements)(elements), selectedFrame.id).filter(element => !(element.type === "text" && element.containerId));\n      return {\n        elements,\n        appState: Object.assign(Object.assign({}, appState), {\n          selectedElementIds: elementsInFrame.reduce((acc, element) => {\n            acc[element.id] = true;\n            return acc;\n          }, {})\n        }),\n        commitToHistory: false\n      };\n    }\n\n    return {\n      elements,\n      appState,\n      commitToHistory: false\n    };\n  },\n  contextItemLabel: "labels.selectAllElementsInFrame",\n  predicate: (elements, appState, _, app) => isSingleFrameSelected(appState, app)\n});\nconst actionRemoveAllElementsFromFrame = (0,_register__WEBPACK_IMPORTED_MODULE_5__.register)({\n  name: "removeAllElementsFromFrame",\n  trackEvent: {\n    category: "history"\n  },\n  perform: (elements, appState, _, app) => {\n    const selectedFrame = app.scene.getSelectedElements(appState)[0];\n\n    if (selectedFrame && selectedFrame.type === "frame") {\n      return {\n        elements: (0,_frame__WEBPACK_IMPORTED_MODULE_1__.removeAllElementsFromFrame)(elements, selectedFrame, appState),\n        appState: Object.assign(Object.assign({}, appState), {\n          selectedElementIds: {\n            [selectedFrame.id]: true\n          }\n        }),\n        commitToHistory: true\n      };\n    }\n\n    return {\n      elements,\n      appState,\n      commitToHistory: false\n    };\n  },\n  contextItemLabel: "labels.removeAllElementsFromFrame",\n  predicate: (elements, appState, _, app) => isSingleFrameSelected(appState, app)\n});\nconst actionupdateFrameRendering = (0,_register__WEBPACK_IMPORTED_MODULE_5__.register)({\n  name: "updateFrameRendering",\n  viewMode: true,\n  trackEvent: {\n    category: "canvas"\n  },\n  perform: (elements, appState) => {\n    return {\n      elements,\n      appState: Object.assign(Object.assign({}, appState), {\n        frameRendering: Object.assign(Object.assign({}, appState.frameRendering), {\n          enabled: !appState.frameRendering.enabled\n        })\n      }),\n      commitToHistory: false\n    };\n  },\n  contextItemLabel: "labels.updateFrameRendering",\n  checked: appState => appState.frameRendering.enabled\n});\nconst actionSetFrameAsActiveTool = (0,_register__WEBPACK_IMPORTED_MODULE_5__.register)({\n  name: "setFrameAsActiveTool",\n  trackEvent: {\n    category: "toolbar"\n  },\n  perform: (elements, appState, _, app) => {\n    const nextActiveTool = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.updateActiveTool)(appState, {\n      type: "frame"\n    });\n    (0,_cursor__WEBPACK_IMPORTED_MODULE_4__.setCursorForShape)(app.interactiveCanvas, Object.assign(Object.assign({}, appState), {\n      activeTool: nextActiveTool\n    }));\n    return {\n      elements,\n      appState: Object.assign(Object.assign({}, appState), {\n        activeTool: (0,_utils__WEBPACK_IMPORTED_MODULE_3__.updateActiveTool)(appState, {\n          type: "frame"\n        })\n      }),\n      commitToHistory: false\n    };\n  },\n  keyTest: event => !event[_keys__WEBPACK_IMPORTED_MODULE_2__.KEYS.CTRL_OR_CMD] && !event.shiftKey && !event.altKey && event.key.toLocaleLowerCase() === _keys__WEBPACK_IMPORTED_MODULE_2__.KEYS.F\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6592 characters]\n//# sourceURL=webpack-internal:///../../actions/actionFrame.ts\n');
              }
            ),
            /***/
            "../../actions/actionGroup.tsx": (
              /*!*************************************!*\
                !*** ../../actions/actionGroup.tsx ***!
                \*************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "actionGroup": () => (/* binding */ actionGroup),\n/* harmony export */   "actionUngroup": () => (/* binding */ actionUngroup)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./register */ "../../actions/register.ts");\n/* harmony import */ var _components_icons__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../components/icons */ "../../components/icons.tsx");\n/* harmony import */ var _element_mutateElement__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../element/mutateElement */ "../../element/mutateElement.ts");\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../scene */ "../../scene/index.ts");\n/* harmony import */ var _groups__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../groups */ "../../groups.ts");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _random__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../random */ "../../random.ts");\n/* harmony import */ var _components_ToolButton__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../components/ToolButton */ "../../components/ToolButton.tsx");\n/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../element/typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var _frame__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../frame */ "../../frame.ts");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst allElementsInSameGroup = elements => {\n  if (elements.length >= 2) {\n    const groupIds = elements[0].groupIds;\n\n    for (const groupId of groupIds) {\n      if (elements.reduce((acc, element) => acc && (0,_groups__WEBPACK_IMPORTED_MODULE_8__.isElementInGroup)(element, groupId), true)) {\n        return true;\n      }\n    }\n  }\n\n  return false;\n};\n\nconst enableActionGroup = (elements, appState, app) => {\n  const selectedElements = app.scene.getSelectedElements({\n    selectedElementIds: appState.selectedElementIds,\n    includeBoundTextElement: true\n  });\n  return selectedElements.length >= 2 && !allElementsInSameGroup(selectedElements);\n};\n\nconst actionGroup = (0,_register__WEBPACK_IMPORTED_MODULE_4__.register)({\n  name: "group",\n  trackEvent: {\n    category: "element"\n  },\n  perform: (elements, appState, _, app) => {\n    const selectedElements = app.scene.getSelectedElements({\n      selectedElementIds: appState.selectedElementIds,\n      includeBoundTextElement: true\n    });\n\n    if (selectedElements.length < 2) {\n      // nothing to group\n      return {\n        appState,\n        elements,\n        commitToHistory: false\n      };\n    } // if everything is already grouped into 1 group, there is nothing to do\n\n\n    const selectedGroupIds = (0,_groups__WEBPACK_IMPORTED_MODULE_8__.getSelectedGroupIds)(appState);\n\n    if (selectedGroupIds.length === 1) {\n      const selectedGroupId = selectedGroupIds[0];\n      const elementIdsInGroup = new Set((0,_groups__WEBPACK_IMPORTED_MODULE_8__.getElementsInGroup)(elements, selectedGroupId).map(element => element.id));\n      const selectedElementIds = new Set(selectedElements.map(element => element.id));\n      const combinedSet = new Set([...Array.from(elementIdsInGroup), ...Array.from(selectedElementIds)]);\n\n      if (combinedSet.size === elementIdsInGroup.size) {\n        // no incremental ids in the selected ids\n        return {\n          appState,\n          elements,\n          commitToHistory: false\n        };\n      }\n    }\n\n    let nextElements = [...elements]; // this includes the case where we are grouping elements inside a frame\n    // and elements outside that frame\n\n    const groupingElementsFromDifferentFrames = new Set(selectedElements.map(element => element.frameId)).size > 1; // when it happens, we want to remove elements that are in the frame\n    // and are going to be grouped from the frame (mouthful, I know)\n\n    if (groupingElementsFromDifferentFrames) {\n      const frameElementsMap = (0,_frame__WEBPACK_IMPORTED_MODULE_13__.groupByFrames)(selectedElements);\n      frameElementsMap.forEach((elementsInFrame, frameId) => {\n        nextElements = (0,_frame__WEBPACK_IMPORTED_MODULE_13__.removeElementsFromFrame)(nextElements, elementsInFrame, appState);\n      });\n    }\n\n    const newGroupId = (0,_random__WEBPACK_IMPORTED_MODULE_10__.randomId)();\n    const selectElementIds = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.arrayToMap)(selectedElements);\n    nextElements = nextElements.map(element => {\n      if (!selectElementIds.get(element.id)) {\n        return element;\n      }\n\n      return (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_6__.newElementWith)(element, {\n        groupIds: (0,_groups__WEBPACK_IMPORTED_MODULE_8__.addToGroup)(element.groupIds, newGroupId, appState.editingGroupId)\n      });\n    }); // keep the z order within the group the same, but move them\n    // to the z order of the highest element in the layer stack\n\n    const elementsInGroup = (0,_groups__WEBPACK_IMPORTED_MODULE_8__.getElementsInGroup)(nextElements, newGroupId);\n    const lastElementInGroup = elementsInGroup[elementsInGroup.length - 1];\n    const lastGroupElementIndex = nextElements.lastIndexOf(lastElementInGroup);\n    const elementsAfterGroup = nextElements.slice(lastGroupElementIndex + 1);\n    const elementsBeforeGroup = nextElements.slice(0, lastGroupElementIndex).filter(updatedElement => !(0,_groups__WEBPACK_IMPORTED_MODULE_8__.isElementInGroup)(updatedElement, newGroupId));\n    nextElements = [...elementsBeforeGroup, ...elementsInGroup, ...elementsAfterGroup];\n    return {\n      appState: Object.assign(Object.assign({}, appState), (0,_groups__WEBPACK_IMPORTED_MODULE_8__.selectGroup)(newGroupId, Object.assign(Object.assign({}, appState), {\n        selectedGroupIds: {}\n      }), (0,_element__WEBPACK_IMPORTED_MODULE_9__.getNonDeletedElements)(nextElements))),\n      elements: nextElements,\n      commitToHistory: true\n    };\n  },\n  contextItemLabel: "labels.group",\n  predicate: (elements, appState, _, app) => enableActionGroup(elements, appState, app),\n  keyTest: event => !event.shiftKey && event[_keys__WEBPACK_IMPORTED_MODULE_1__.KEYS.CTRL_OR_CMD] && event.key === _keys__WEBPACK_IMPORTED_MODULE_1__.KEYS.G,\n  PanelComponent: ({\n    elements,\n    appState,\n    updateData,\n    app\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ToolButton__WEBPACK_IMPORTED_MODULE_11__.ToolButton, {\n    hidden: !enableActionGroup(elements, appState, app),\n    type: "button",\n    icon: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_icons__WEBPACK_IMPORTED_MODULE_5__.GroupIcon, {\n      theme: appState.theme\n    }),\n    onClick: () => updateData(null),\n    title: `${(0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.group")} \u2014 ${(0,_utils__WEBPACK_IMPORTED_MODULE_3__.getShortcutKey)("CtrlOrCmd+G")}`,\n    "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.group"),\n    visible: (0,_scene__WEBPACK_IMPORTED_MODULE_7__.isSomeElementSelected)((0,_element__WEBPACK_IMPORTED_MODULE_9__.getNonDeletedElements)(elements), appState)\n  })\n});\nconst actionUngroup = (0,_register__WEBPACK_IMPORTED_MODULE_4__.register)({\n  name: "ungroup",\n  trackEvent: {\n    category: "element"\n  },\n  perform: (elements, appState, _, app) => {\n    const groupIds = (0,_groups__WEBPACK_IMPORTED_MODULE_8__.getSelectedGroupIds)(appState);\n\n    if (groupIds.length === 0) {\n      return {\n        appState,\n        elements,\n        commitToHistory: false\n      };\n    }\n\n    let nextElements = [...elements];\n    const boundTextElementIds = [];\n    nextElements = nextElements.map(element => {\n      if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_12__.isBoundToContainer)(element)) {\n        boundTextElementIds.push(element.id);\n      }\n\n      const nextGroupIds = (0,_groups__WEBPACK_IMPORTED_MODULE_8__.removeFromSelectedGroups)(element.groupIds, appState.selectedGroupIds);\n\n      if (nextGroupIds.length === element.groupIds.length) {\n        return element;\n      }\n\n      return (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_6__.newElementWith)(element, {\n        groupIds: nextGroupIds\n      });\n    });\n    const updateAppState = (0,_groups__WEBPACK_IMPORTED_MODULE_8__.selectGroupsForSelectedElements)(appState, (0,_element__WEBPACK_IMPORTED_MODULE_9__.getNonDeletedElements)(nextElements), appState, null);\n    const selectedElements = app.scene.getSelectedElements(appState);\n    const selectedElementFrameIds = new Set(selectedElements.filter(element => element.frameId).map(element => element.frameId));\n    const targetFrames = (0,_frame__WEBPACK_IMPORTED_MODULE_13__.getFrameElements)(elements).filter(frame => selectedElementFrameIds.has(frame.id));\n    targetFrames.forEach(frame => {\n      if (frame) {\n        nextElements = (0,_frame__WEBPACK_IMPORTED_MODULE_13__.replaceAllElementsInFrame)(nextElements, (0,_frame__WEBPACK_IMPORTED_MODULE_13__.getElementsInResizingFrame)(nextElements, frame, appState), frame, appState);\n      }\n    }); // remove binded text elements from selection\n\n    updateAppState.selectedElementIds = Object.entries(updateAppState.selectedElementIds).reduce((acc, [id, selected]) => {\n      if (selected && !boundTextElementIds.includes(id)) {\n        acc[id] = true;\n      }\n\n      return acc;\n    }, {});\n    return {\n      appState: Object.assign(Object.assign({}, appState), updateAppState),\n      elements: nextElements,\n      commitToHistory: true\n    };\n  },\n  keyTest: event => event.shiftKey && event[_keys__WEBPACK_IMPORTED_MODULE_1__.KEYS.CTRL_OR_CMD] && event.key === _keys__WEBPACK_IMPORTED_MODULE_1__.KEYS.G.toUpperCase(),\n  contextItemLabel: "labels.ungroup",\n  predicate: (elements, appState) => (0,_groups__WEBPACK_IMPORTED_MODULE_8__.getSelectedGroupIds)(appState).length > 0,\n  PanelComponent: ({\n    elements,\n    appState,\n    updateData\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ToolButton__WEBPACK_IMPORTED_MODULE_11__.ToolButton, {\n    type: "button",\n    hidden: (0,_groups__WEBPACK_IMPORTED_MODULE_8__.getSelectedGroupIds)(appState).length === 0,\n    icon: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_icons__WEBPACK_IMPORTED_MODULE_5__.UngroupIcon, {\n      theme: appState.theme\n    }),\n    onClick: () => updateData(null),\n    title: `${(0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.ungroup")} \u2014 ${(0,_utils__WEBPACK_IMPORTED_MODULE_3__.getShortcutKey)("CtrlOrCmd+Shift+G")}`,\n    "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.ungroup"),\n    visible: (0,_scene__WEBPACK_IMPORTED_MODULE_7__.isSomeElementSelected)((0,_element__WEBPACK_IMPORTED_MODULE_9__.getNonDeletedElements)(elements), appState)\n  })\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 13760 characters]\n//# sourceURL=webpack-internal:///../../actions/actionGroup.tsx\n');
              }
            ),
            /***/
            "../../actions/actionHistory.tsx": (
              /*!***************************************!*\
                !*** ../../actions/actionHistory.tsx ***!
                \***************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "createRedoAction": () => (/* binding */ createRedoAction),\n/* harmony export */   "createUndoAction": () => (/* binding */ createUndoAction)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var _components_icons__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/icons */ "../../components/icons.tsx");\n/* harmony import */ var _components_ToolButton__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../components/ToolButton */ "../../components/ToolButton.tsx");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _element_mutateElement__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../element/mutateElement */ "../../element/mutateElement.ts");\n/* harmony import */ var _element_binding__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../element/binding */ "../../element/binding.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n\n\n\n\n\n\n\n\n\n\nconst writeData = (prevElements, appState, updater) => {\n  const commitToHistory = false;\n\n  if (!appState.multiElement && !appState.resizingElement && !appState.editingElement && !appState.draggingElement) {\n    const data = updater();\n\n    if (data === null) {\n      return {\n        commitToHistory\n      };\n    }\n\n    const prevElementMap = (0,_utils__WEBPACK_IMPORTED_MODULE_7__.arrayToMap)(prevElements);\n    const nextElements = data.elements;\n    const nextElementMap = (0,_utils__WEBPACK_IMPORTED_MODULE_7__.arrayToMap)(nextElements);\n    const deletedElements = prevElements.filter(prevElement => !nextElementMap.has(prevElement.id));\n    const elements = nextElements.map(nextElement => (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_5__.newElementWith)(prevElementMap.get(nextElement.id) || nextElement, nextElement)).concat(deletedElements.map(prevElement => (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_5__.newElementWith)(prevElement, {\n      isDeleted: true\n    })));\n    (0,_element_binding__WEBPACK_IMPORTED_MODULE_6__.fixBindingsAfterDeletion)(elements, deletedElements);\n    return {\n      elements,\n      appState: Object.assign(Object.assign({}, appState), data.appState),\n      commitToHistory,\n      syncHistory: true\n    };\n  }\n\n  return {\n    commitToHistory\n  };\n};\n\nconst createUndoAction = history => ({\n  name: "undo",\n  trackEvent: {\n    category: "history"\n  },\n  perform: (elements, appState) => writeData(elements, appState, () => history.undoOnce()),\n  keyTest: event => event[_keys__WEBPACK_IMPORTED_MODULE_4__.KEYS.CTRL_OR_CMD] && event.key.toLowerCase() === _keys__WEBPACK_IMPORTED_MODULE_4__.KEYS.Z && !event.shiftKey,\n  PanelComponent: ({\n    updateData,\n    data\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ToolButton__WEBPACK_IMPORTED_MODULE_2__.ToolButton, {\n    type: "button",\n    icon: _components_icons__WEBPACK_IMPORTED_MODULE_1__.UndoIcon,\n    "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("buttons.undo"),\n    onClick: updateData,\n    size: (data === null || data === void 0 ? void 0 : data.size) || "medium"\n  }),\n  commitToHistory: () => false\n});\nconst createRedoAction = history => ({\n  name: "redo",\n  trackEvent: {\n    category: "history"\n  },\n  perform: (elements, appState) => writeData(elements, appState, () => history.redoOnce()),\n  keyTest: event => event[_keys__WEBPACK_IMPORTED_MODULE_4__.KEYS.CTRL_OR_CMD] && event.shiftKey && event.key.toLowerCase() === _keys__WEBPACK_IMPORTED_MODULE_4__.KEYS.Z || _constants__WEBPACK_IMPORTED_MODULE_8__.isWindows && event.ctrlKey && !event.shiftKey && event.key === _keys__WEBPACK_IMPORTED_MODULE_4__.KEYS.Y,\n  PanelComponent: ({\n    updateData,\n    data\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ToolButton__WEBPACK_IMPORTED_MODULE_2__.ToolButton, {\n    type: "button",\n    icon: _components_icons__WEBPACK_IMPORTED_MODULE_1__.RedoIcon,\n    "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("buttons.redo"),\n    onClick: updateData,\n    size: (data === null || data === void 0 ? void 0 : data.size) || "medium"\n  }),\n  commitToHistory: () => false\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5004 characters]\n//# sourceURL=webpack-internal:///../../actions/actionHistory.tsx\n');
              }
            ),
            /***/
            "../../actions/actionLinearEditor.ts": (
              /*!*******************************************!*\
                !*** ../../actions/actionLinearEditor.ts ***!
                \*******************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "actionToggleLinearEditor": () => (/* binding */ actionToggleLinearEditor)\n/* harmony export */ });\n/* harmony import */ var _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../element/linearElementEditor */ "../../element/linearElementEditor.ts");\n/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../element/typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./register */ "../../actions/register.ts");\n\n\n\nconst actionToggleLinearEditor = (0,_register__WEBPACK_IMPORTED_MODULE_2__.register)({\n  name: "toggleLinearEditor",\n  trackEvent: {\n    category: "element"\n  },\n  predicate: (elements, appState, _, app) => {\n    const selectedElements = app.scene.getSelectedElements(appState);\n\n    if (selectedElements.length === 1 && (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isLinearElement)(selectedElements[0])) {\n      return true;\n    }\n\n    return false;\n  },\n\n  perform(elements, appState, _, app) {\n    var _a;\n\n    const selectedElement = app.scene.getSelectedElements({\n      selectedElementIds: appState.selectedElementIds,\n      includeBoundTextElement: true\n    })[0];\n    const editingLinearElement = ((_a = appState.editingLinearElement) === null || _a === void 0 ? void 0 : _a.elementId) === selectedElement.id ? null : new _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_0__.LinearElementEditor(selectedElement, app.scene);\n    return {\n      appState: Object.assign(Object.assign({}, appState), {\n        editingLinearElement\n      }),\n      commitToHistory: false\n    };\n  },\n\n  contextItemLabel: (elements, appState, app) => {\n    var _a;\n\n    const selectedElement = app.scene.getSelectedElements({\n      selectedElementIds: appState.selectedElementIds,\n      includeBoundTextElement: true\n    })[0];\n    return ((_a = appState.editingLinearElement) === null || _a === void 0 ? void 0 : _a.elementId) === selectedElement.id ? "labels.lineEditor.exit" : "labels.lineEditor.edit";\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vYWN0aW9ucy9hY3Rpb25MaW5lYXJFZGl0b3IudHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFxRTtBQUNiO0FBQ2xCO0FBQy9CLGlDQUFpQyxtREFBUTtBQUNoRDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQSx5Q0FBeUMsb0VBQWU7QUFDeEQ7QUFDQTs7QUFFQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsOEpBQThKLDZFQUFtQjtBQUNqTDtBQUNBLDhDQUE4QztBQUM5QztBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9hY3Rpb25zL2FjdGlvbkxpbmVhckVkaXRvci50cz81ZjllIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExpbmVhckVsZW1lbnRFZGl0b3IgfSBmcm9tIFwiLi4vZWxlbWVudC9saW5lYXJFbGVtZW50RWRpdG9yXCI7XG5pbXBvcnQgeyBpc0xpbmVhckVsZW1lbnQgfSBmcm9tIFwiLi4vZWxlbWVudC90eXBlQ2hlY2tzXCI7XG5pbXBvcnQgeyByZWdpc3RlciB9IGZyb20gXCIuL3JlZ2lzdGVyXCI7XG5leHBvcnQgY29uc3QgYWN0aW9uVG9nZ2xlTGluZWFyRWRpdG9yID0gcmVnaXN0ZXIoe1xuICBuYW1lOiBcInRvZ2dsZUxpbmVhckVkaXRvclwiLFxuICB0cmFja0V2ZW50OiB7XG4gICAgY2F0ZWdvcnk6IFwiZWxlbWVudFwiXG4gIH0sXG4gIHByZWRpY2F0ZTogKGVsZW1lbnRzLCBhcHBTdGF0ZSwgXywgYXBwKSA9PiB7XG4gICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGFwcC5zY2VuZS5nZXRTZWxlY3RlZEVsZW1lbnRzKGFwcFN0YXRlKTtcblxuICAgIGlmIChzZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCA9PT0gMSAmJiBpc0xpbmVhckVsZW1lbnQoc2VsZWN0ZWRFbGVtZW50c1swXSkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfSxcblxuICBwZXJmb3JtKGVsZW1lbnRzLCBhcHBTdGF0ZSwgXywgYXBwKSB7XG4gICAgdmFyIF9hO1xuXG4gICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50ID0gYXBwLnNjZW5lLmdldFNlbGVjdGVkRWxlbWVudHMoe1xuICAgICAgc2VsZWN0ZWRFbGVtZW50SWRzOiBhcHBTdGF0ZS5zZWxlY3RlZEVsZW1lbnRJZHMsXG4gICAgICBpbmNsdWRlQm91bmRUZXh0RWxlbWVudDogdHJ1ZVxuICAgIH0pWzBdO1xuICAgIGNvbnN0IGVkaXRpbmdMaW5lYXJFbGVtZW50ID0gKChfYSA9IGFwcFN0YXRlLmVkaXRpbmdMaW5lYXJFbGVtZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZWxlbWVudElkKSA9PT0gc2VsZWN0ZWRFbGVtZW50LmlkID8gbnVsbCA6IG5ldyBMaW5lYXJFbGVtZW50RWRpdG9yKHNlbGVjdGVkRWxlbWVudCwgYXBwLnNjZW5lKTtcbiAgICByZXR1cm4ge1xuICAgICAgYXBwU3RhdGU6IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgYXBwU3RhdGUpLCB7XG4gICAgICAgIGVkaXRpbmdMaW5lYXJFbGVtZW50XG4gICAgICB9KSxcbiAgICAgIGNvbW1pdFRvSGlzdG9yeTogZmFsc2VcbiAgICB9O1xuICB9LFxuXG4gIGNvbnRleHRJdGVtTGFiZWw6IChlbGVtZW50cywgYXBwU3RhdGUsIGFwcCkgPT4ge1xuICAgIHZhciBfYTtcblxuICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudCA9IGFwcC5zY2VuZS5nZXRTZWxlY3RlZEVsZW1lbnRzKHtcbiAgICAgIHNlbGVjdGVkRWxlbWVudElkczogYXBwU3RhdGUuc2VsZWN0ZWRFbGVtZW50SWRzLFxuICAgICAgaW5jbHVkZUJvdW5kVGV4dEVsZW1lbnQ6IHRydWVcbiAgICB9KVswXTtcbiAgICByZXR1cm4gKChfYSA9IGFwcFN0YXRlLmVkaXRpbmdMaW5lYXJFbGVtZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZWxlbWVudElkKSA9PT0gc2VsZWN0ZWRFbGVtZW50LmlkID8gXCJsYWJlbHMubGluZUVkaXRvci5leGl0XCIgOiBcImxhYmVscy5saW5lRWRpdG9yLmVkaXRcIjtcbiAgfVxufSk7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../actions/actionLinearEditor.ts\n');
              }
            ),
            /***/
            "../../actions/actionMenu.tsx": (
              /*!************************************!*\
                !*** ../../actions/actionMenu.tsx ***!
                \************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "actionShortcuts": () => (/* binding */ actionShortcuts),\n/* harmony export */   "actionToggleCanvasMenu": () => (/* binding */ actionToggleCanvasMenu),\n/* harmony export */   "actionToggleEditMenu": () => (/* binding */ actionToggleEditMenu)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var _components_icons__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/icons */ "../../components/icons.tsx");\n/* harmony import */ var _components_ToolButton__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../components/ToolButton */ "../../components/ToolButton.tsx");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./register */ "../../actions/register.ts");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n\n\n\n\n\n\n\nconst actionToggleCanvasMenu = (0,_register__WEBPACK_IMPORTED_MODULE_5__.register)({\n  name: "toggleCanvasMenu",\n  trackEvent: {\n    category: "menu"\n  },\n  perform: (_, appState) => ({\n    appState: Object.assign(Object.assign({}, appState), {\n      openMenu: appState.openMenu === "canvas" ? null : "canvas"\n    }),\n    commitToHistory: false\n  }),\n  PanelComponent: ({\n    appState,\n    updateData\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ToolButton__WEBPACK_IMPORTED_MODULE_2__.ToolButton, {\n    type: "button",\n    icon: _components_icons__WEBPACK_IMPORTED_MODULE_1__.HamburgerMenuIcon,\n    "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("buttons.menu"),\n    onClick: updateData,\n    selected: appState.openMenu === "canvas"\n  })\n});\nconst actionToggleEditMenu = (0,_register__WEBPACK_IMPORTED_MODULE_5__.register)({\n  name: "toggleEditMenu",\n  trackEvent: {\n    category: "menu"\n  },\n  perform: (_elements, appState) => ({\n    appState: Object.assign(Object.assign({}, appState), {\n      openMenu: appState.openMenu === "shape" ? null : "shape"\n    }),\n    commitToHistory: false\n  }),\n  PanelComponent: ({\n    elements,\n    appState,\n    updateData\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ToolButton__WEBPACK_IMPORTED_MODULE_2__.ToolButton, {\n    visible: (0,_element__WEBPACK_IMPORTED_MODULE_4__.showSelectedShapeActions)(appState, (0,_element__WEBPACK_IMPORTED_MODULE_4__.getNonDeletedElements)(elements)),\n    type: "button",\n    icon: _components_icons__WEBPACK_IMPORTED_MODULE_1__.palette,\n    "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("buttons.edit"),\n    onClick: updateData,\n    selected: appState.openMenu === "shape"\n  })\n});\nconst actionShortcuts = (0,_register__WEBPACK_IMPORTED_MODULE_5__.register)({\n  name: "toggleShortcuts",\n  viewMode: true,\n  trackEvent: {\n    category: "menu",\n    action: "toggleHelpDialog"\n  },\n  perform: (_elements, appState, _, {\n    focusContainer\n  }) => {\n    if (appState.openDialog === "help") {\n      focusContainer();\n    }\n\n    return {\n      appState: Object.assign(Object.assign({}, appState), {\n        openDialog: appState.openDialog === "help" ? null : "help"\n      }),\n      commitToHistory: false\n    };\n  },\n  keyTest: event => event.key === _keys__WEBPACK_IMPORTED_MODULE_6__.KEYS.QUESTION_MARK\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4124 characters]\n//# sourceURL=webpack-internal:///../../actions/actionMenu.tsx\n');
              }
            ),
            /***/
            "../../actions/actionNavigate.tsx": (
              /*!****************************************!*\
                !*** ../../actions/actionNavigate.tsx ***!
                \****************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "actionGoToCollaborator": () => (/* binding */ actionGoToCollaborator)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var _clients__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../clients */ "../../clients.ts");\n/* harmony import */ var _components_Avatar__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../components/Avatar */ "../../components/Avatar.tsx");\n/* harmony import */ var _scene_scroll__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../scene/scroll */ "../../scene/scroll.ts");\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./register */ "../../actions/register.ts");\n\n\n\n\n\nconst actionGoToCollaborator = (0,_register__WEBPACK_IMPORTED_MODULE_4__.register)({\n  name: "goToCollaborator",\n  viewMode: true,\n  trackEvent: {\n    category: "collab"\n  },\n  perform: (_elements, appState, value) => {\n    const point = value;\n\n    if (!point) {\n      return {\n        appState,\n        commitToHistory: false\n      };\n    }\n\n    return {\n      appState: Object.assign(Object.assign(Object.assign({}, appState), (0,_scene_scroll__WEBPACK_IMPORTED_MODULE_3__.centerScrollOn)({\n        scenePoint: point,\n        viewportDimensions: {\n          width: appState.width,\n          height: appState.height\n        },\n        zoom: appState.zoom\n      })), {\n        // Close mobile menu\n        openMenu: appState.openMenu === "canvas" ? null : appState.openMenu\n      }),\n      commitToHistory: false\n    };\n  },\n  PanelComponent: ({\n    updateData,\n    data\n  }) => {\n    const [clientId, collaborator] = data;\n    const background = (0,_clients__WEBPACK_IMPORTED_MODULE_1__.getClientColor)(clientId);\n    return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_Avatar__WEBPACK_IMPORTED_MODULE_2__.Avatar, {\n      color: background,\n      onClick: () => updateData(collaborator.pointer),\n      name: collaborator.username || "",\n      src: collaborator.avatarUrl\n    });\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vYWN0aW9ucy9hY3Rpb25OYXZpZ2F0ZS50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQWdEO0FBQ0o7QUFDRTtBQUNHO0FBQ1g7QUFDL0IsK0JBQStCLG1EQUFRO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsNERBQTRELGFBQWEsNkRBQWM7QUFDdkY7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLHVCQUF1Qix3REFBYztBQUNyQyxXQUFXLHNEQUFJLENBQUMsc0RBQU07QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2FjdGlvbnMvYWN0aW9uTmF2aWdhdGUudHN4PzE1NjUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGdldENsaWVudENvbG9yIH0gZnJvbSBcIi4uL2NsaWVudHNcIjtcbmltcG9ydCB7IEF2YXRhciB9IGZyb20gXCIuLi9jb21wb25lbnRzL0F2YXRhclwiO1xuaW1wb3J0IHsgY2VudGVyU2Nyb2xsT24gfSBmcm9tIFwiLi4vc2NlbmUvc2Nyb2xsXCI7XG5pbXBvcnQgeyByZWdpc3RlciB9IGZyb20gXCIuL3JlZ2lzdGVyXCI7XG5leHBvcnQgY29uc3QgYWN0aW9uR29Ub0NvbGxhYm9yYXRvciA9IHJlZ2lzdGVyKHtcbiAgbmFtZTogXCJnb1RvQ29sbGFib3JhdG9yXCIsXG4gIHZpZXdNb2RlOiB0cnVlLFxuICB0cmFja0V2ZW50OiB7XG4gICAgY2F0ZWdvcnk6IFwiY29sbGFiXCJcbiAgfSxcbiAgcGVyZm9ybTogKF9lbGVtZW50cywgYXBwU3RhdGUsIHZhbHVlKSA9PiB7XG4gICAgY29uc3QgcG9pbnQgPSB2YWx1ZTtcblxuICAgIGlmICghcG9pbnQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFwcFN0YXRlLFxuICAgICAgICBjb21taXRUb0hpc3Rvcnk6IGZhbHNlXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBhcHBTdGF0ZTogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGFwcFN0YXRlKSwgY2VudGVyU2Nyb2xsT24oe1xuICAgICAgICBzY2VuZVBvaW50OiBwb2ludCxcbiAgICAgICAgdmlld3BvcnREaW1lbnNpb25zOiB7XG4gICAgICAgICAgd2lkdGg6IGFwcFN0YXRlLndpZHRoLFxuICAgICAgICAgIGhlaWdodDogYXBwU3RhdGUuaGVpZ2h0XG4gICAgICAgIH0sXG4gICAgICAgIHpvb206IGFwcFN0YXRlLnpvb21cbiAgICAgIH0pKSwge1xuICAgICAgICAvLyBDbG9zZSBtb2JpbGUgbWVudVxuICAgICAgICBvcGVuTWVudTogYXBwU3RhdGUub3Blbk1lbnUgPT09IFwiY2FudmFzXCIgPyBudWxsIDogYXBwU3RhdGUub3Blbk1lbnVcbiAgICAgIH0pLFxuICAgICAgY29tbWl0VG9IaXN0b3J5OiBmYWxzZVxuICAgIH07XG4gIH0sXG4gIFBhbmVsQ29tcG9uZW50OiAoe1xuICAgIHVwZGF0ZURhdGEsXG4gICAgZGF0YVxuICB9KSA9PiB7XG4gICAgY29uc3QgW2NsaWVudElkLCBjb2xsYWJvcmF0b3JdID0gZGF0YTtcbiAgICBjb25zdCBiYWNrZ3JvdW5kID0gZ2V0Q2xpZW50Q29sb3IoY2xpZW50SWQpO1xuICAgIHJldHVybiBfanN4KEF2YXRhciwge1xuICAgICAgY29sb3I6IGJhY2tncm91bmQsXG4gICAgICBvbkNsaWNrOiAoKSA9PiB1cGRhdGVEYXRhKGNvbGxhYm9yYXRvci5wb2ludGVyKSxcbiAgICAgIG5hbWU6IGNvbGxhYm9yYXRvci51c2VybmFtZSB8fCBcIlwiLFxuICAgICAgc3JjOiBjb2xsYWJvcmF0b3IuYXZhdGFyVXJsXG4gICAgfSk7XG4gIH1cbn0pOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../actions/actionNavigate.tsx\n');
              }
            ),
            /***/
            "../../actions/actionProperties.tsx": (
              /*!******************************************!*\
                !*** ../../actions/actionProperties.tsx ***!
                \******************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "actionChangeArrowhead": () => (/* binding */ actionChangeArrowhead),\n/* harmony export */   "actionChangeBackgroundColor": () => (/* binding */ actionChangeBackgroundColor),\n/* harmony export */   "actionChangeFillStyle": () => (/* binding */ actionChangeFillStyle),\n/* harmony export */   "actionChangeFontFamily": () => (/* binding */ actionChangeFontFamily),\n/* harmony export */   "actionChangeFontSize": () => (/* binding */ actionChangeFontSize),\n/* harmony export */   "actionChangeOpacity": () => (/* binding */ actionChangeOpacity),\n/* harmony export */   "actionChangeRoundness": () => (/* binding */ actionChangeRoundness),\n/* harmony export */   "actionChangeSloppiness": () => (/* binding */ actionChangeSloppiness),\n/* harmony export */   "actionChangeStrokeColor": () => (/* binding */ actionChangeStrokeColor),\n/* harmony export */   "actionChangeStrokeStyle": () => (/* binding */ actionChangeStrokeStyle),\n/* harmony export */   "actionChangeStrokeWidth": () => (/* binding */ actionChangeStrokeWidth),\n/* harmony export */   "actionChangeTextAlign": () => (/* binding */ actionChangeTextAlign),\n/* harmony export */   "actionChangeVerticalAlign": () => (/* binding */ actionChangeVerticalAlign),\n/* harmony export */   "actionDecreaseFontSize": () => (/* binding */ actionDecreaseFontSize),\n/* harmony export */   "actionIncreaseFontSize": () => (/* binding */ actionIncreaseFontSize),\n/* harmony export */   "changeProperty": () => (/* binding */ changeProperty),\n/* harmony export */   "getFormValue": () => (/* binding */ getFormValue)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var _colors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../colors */ "../../colors.ts");\n/* harmony import */ var _analytics__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../analytics */ "../../analytics.ts");\n/* harmony import */ var _components_ButtonIconSelect__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../components/ButtonIconSelect */ "../../components/ButtonIconSelect.tsx");\n/* harmony import */ var _components_ColorPicker_ColorPicker__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../components/ColorPicker/ColorPicker */ "../../components/ColorPicker/ColorPicker.tsx");\n/* harmony import */ var _components_IconPicker__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../components/IconPicker */ "../../components/IconPicker.tsx");\n/* harmony import */ var _components_icons__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../components/icons */ "../../components/icons.tsx");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _element_mutateElement__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../element/mutateElement */ "../../element/mutateElement.ts");\n/* harmony import */ var _element_textElement__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../element/textElement */ "../../element/textElement.ts");\n/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../element/typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _random__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../random */ "../../random.ts");\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../scene */ "../../scene/index.ts");\n/* harmony import */ var _scene_comparisons__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../scene/comparisons */ "../../scene/comparisons.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./register */ "../../actions/register.ts");\n\n\n\n\n\n // TODO barnabasmolnar/editor-redesign\n// TextAlignTopIcon, TextAlignBottomIcon,TextAlignMiddleIcon,\n// ArrowHead icons\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst FONT_SIZE_RELATIVE_INCREASE_STEP = 0.1;\nconst changeProperty = (elements, appState, callback, includeBoundText = false) => {\n  const selectedElementIds = (0,_utils__WEBPACK_IMPORTED_MODULE_17__.arrayToMap)((0,_scene__WEBPACK_IMPORTED_MODULE_15__.getSelectedElements)(elements, appState, {\n    includeBoundTextElement: includeBoundText\n  }));\n  return elements.map(element => {\n    var _a;\n\n    if (selectedElementIds.get(element.id) || element.id === ((_a = appState.editingElement) === null || _a === void 0 ? void 0 : _a.id)) {\n      return callback(element);\n    }\n\n    return element;\n  });\n};\nconst getFormValue = function (elements, appState, getAttribute, isRelevantElement, defaultValue) {\n  var _a;\n\n  const editingElement = appState.editingElement;\n  const nonDeletedElements = (0,_element__WEBPACK_IMPORTED_MODULE_8__.getNonDeletedElements)(elements);\n  let ret = null;\n\n  if (editingElement) {\n    ret = getAttribute(editingElement);\n  }\n\n  if (!ret) {\n    const hasSelection = (0,_scene__WEBPACK_IMPORTED_MODULE_15__.isSomeElementSelected)(nonDeletedElements, appState);\n\n    if (hasSelection) {\n      ret = (_a = (0,_scene__WEBPACK_IMPORTED_MODULE_15__.getCommonAttributeOfSelectedElements)(isRelevantElement === true ? nonDeletedElements : nonDeletedElements.filter(el => isRelevantElement(el)), appState, getAttribute)) !== null && _a !== void 0 ? _a : typeof defaultValue === "function" ? defaultValue(true) : defaultValue;\n    } else {\n      ret = typeof defaultValue === "function" ? defaultValue(false) : defaultValue;\n    }\n  }\n\n  return ret;\n};\n\nconst offsetElementAfterFontResize = (prevElement, nextElement) => {\n  if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_11__.isBoundToContainer)(nextElement)) {\n    return nextElement;\n  }\n\n  return (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_9__.mutateElement)(nextElement, {\n    x: prevElement.textAlign === "left" ? prevElement.x : prevElement.x + (prevElement.width - nextElement.width) / (prevElement.textAlign === "center" ? 2 : 1),\n    // centering vertically is non-standard, but for Excalidraw I think\n    // it makes sense\n    y: prevElement.y + (prevElement.height - nextElement.height) / 2\n  }, false);\n};\n\nconst changeFontSize = (elements, appState, getNewFontSize, fallbackValue) => {\n  const newFontSizes = new Set();\n  return {\n    elements: changeProperty(elements, appState, oldElement => {\n      if ((0,_element__WEBPACK_IMPORTED_MODULE_8__.isTextElement)(oldElement)) {\n        const newFontSize = getNewFontSize(oldElement);\n        newFontSizes.add(newFontSize);\n        let newElement = (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_9__.newElementWith)(oldElement, {\n          fontSize: newFontSize\n        });\n        (0,_element__WEBPACK_IMPORTED_MODULE_8__.redrawTextBoundingBox)(newElement, (0,_element_textElement__WEBPACK_IMPORTED_MODULE_10__.getContainerElement)(oldElement));\n        newElement = offsetElementAfterFontResize(oldElement, newElement);\n        return newElement;\n      }\n\n      return oldElement;\n    }, true),\n    appState: Object.assign(Object.assign({}, appState), {\n      // update state only if we\'ve set all select text elements to\n      // the same font size\n      currentItemFontSize: newFontSizes.size === 1 ? [...newFontSizes][0] : fallbackValue !== null && fallbackValue !== void 0 ? fallbackValue : appState.currentItemFontSize\n    }),\n    commitToHistory: true\n  };\n}; // -----------------------------------------------------------------------------\n\n\nconst actionChangeStrokeColor = (0,_register__WEBPACK_IMPORTED_MODULE_18__.register)({\n  name: "changeStrokeColor",\n  trackEvent: false,\n  perform: (elements, appState, value) => {\n    return Object.assign(Object.assign({}, value.currentItemStrokeColor && {\n      elements: changeProperty(elements, appState, el => {\n        return (0,_scene_comparisons__WEBPACK_IMPORTED_MODULE_16__.hasStrokeColor)(el.type) ? (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_9__.newElementWith)(el, {\n          strokeColor: value.currentItemStrokeColor\n        }) : el;\n      }, true)\n    }), {\n      appState: Object.assign(Object.assign({}, appState), value),\n      commitToHistory: !!value.currentItemStrokeColor\n    });\n  },\n  PanelComponent: ({\n    elements,\n    appState,\n    updateData,\n    appProps\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("h3", Object.assign({\n      "aria-hidden": "true"\n    }, {\n      children: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.stroke")\n    })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ColorPicker_ColorPicker__WEBPACK_IMPORTED_MODULE_4__.ColorPicker, {\n      topPicks: _colors__WEBPACK_IMPORTED_MODULE_1__.DEFAULT_ELEMENT_STROKE_PICKS,\n      palette: _colors__WEBPACK_IMPORTED_MODULE_1__.DEFAULT_ELEMENT_STROKE_COLOR_PALETTE,\n      type: "elementStroke",\n      label: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.stroke"),\n      color: getFormValue(elements, appState, element => element.strokeColor, true, appState.currentItemStrokeColor),\n      onChange: color => updateData({\n        currentItemStrokeColor: color\n      }),\n      elements: elements,\n      appState: appState,\n      updateData: updateData\n    })]\n  })\n});\nconst actionChangeBackgroundColor = (0,_register__WEBPACK_IMPORTED_MODULE_18__.register)({\n  name: "changeBackgroundColor",\n  trackEvent: false,\n  perform: (elements, appState, value) => {\n    return Object.assign(Object.assign({}, value.currentItemBackgroundColor && {\n      elements: changeProperty(elements, appState, el => (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_9__.newElementWith)(el, {\n        backgroundColor: value.currentItemBackgroundColor\n      }))\n    }), {\n      appState: Object.assign(Object.assign({}, appState), value),\n      commitToHistory: !!value.currentItemBackgroundColor\n    });\n  },\n  PanelComponent: ({\n    elements,\n    appState,\n    updateData,\n    appProps\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("h3", Object.assign({\n      "aria-hidden": "true"\n    }, {\n      children: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.background")\n    })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ColorPicker_ColorPicker__WEBPACK_IMPORTED_MODULE_4__.ColorPicker, {\n      topPicks: _colors__WEBPACK_IMPORTED_MODULE_1__.DEFAULT_ELEMENT_BACKGROUND_PICKS,\n      palette: _colors__WEBPACK_IMPORTED_MODULE_1__.DEFAULT_ELEMENT_BACKGROUND_COLOR_PALETTE,\n      type: "elementBackground",\n      label: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.background"),\n      color: getFormValue(elements, appState, element => element.backgroundColor, true, appState.currentItemBackgroundColor),\n      onChange: color => updateData({\n        currentItemBackgroundColor: color\n      }),\n      elements: elements,\n      appState: appState,\n      updateData: updateData\n    })]\n  })\n});\nconst actionChangeFillStyle = (0,_register__WEBPACK_IMPORTED_MODULE_18__.register)({\n  name: "changeFillStyle",\n  trackEvent: false,\n  perform: (elements, appState, value, app) => {\n    (0,_analytics__WEBPACK_IMPORTED_MODULE_2__.trackEvent)("element", "changeFillStyle", `${value} (${app.device.editor.isMobile ? "mobile" : "desktop"})`);\n    return {\n      elements: changeProperty(elements, appState, el => (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_9__.newElementWith)(el, {\n        fillStyle: value\n      })),\n      appState: Object.assign(Object.assign({}, appState), {\n        currentItemFillStyle: value\n      }),\n      commitToHistory: true\n    };\n  },\n  PanelComponent: ({\n    elements,\n    appState,\n    updateData\n  }) => {\n    const selectedElements = (0,_scene__WEBPACK_IMPORTED_MODULE_15__.getSelectedElements)(elements, appState);\n    const allElementsZigZag = selectedElements.length > 0 && selectedElements.every(el => el.fillStyle === "zigzag");\n    return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("fieldset", {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("legend", {\n        children: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.fill")\n      }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ButtonIconSelect__WEBPACK_IMPORTED_MODULE_3__.ButtonIconSelect, {\n        type: "button",\n        options: [{\n          value: "hachure",\n          text: `${allElementsZigZag ? (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.zigzag") : (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.hachure")} (${(0,_utils__WEBPACK_IMPORTED_MODULE_17__.getShortcutKey)("Alt-Click")})`,\n          icon: allElementsZigZag ? _components_icons__WEBPACK_IMPORTED_MODULE_6__.FillZigZagIcon : _components_icons__WEBPACK_IMPORTED_MODULE_6__.FillHachureIcon,\n          active: allElementsZigZag ? true : undefined,\n          testId: `fill-hachure`\n        }, {\n          value: "cross-hatch",\n          text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.crossHatch"),\n          icon: _components_icons__WEBPACK_IMPORTED_MODULE_6__.FillCrossHatchIcon,\n          testId: `fill-cross-hatch`\n        }, {\n          value: "solid",\n          text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.solid"),\n          icon: _components_icons__WEBPACK_IMPORTED_MODULE_6__.FillSolidIcon,\n          testId: `fill-solid`\n        }],\n        value: getFormValue(elements, appState, element => element.fillStyle, element => element.hasOwnProperty("fillStyle"), hasSelection => hasSelection ? null : appState.currentItemFillStyle),\n        onClick: (value, event) => {\n          const nextValue = event.altKey && value === "hachure" && selectedElements.every(el => el.fillStyle === "hachure") ? "zigzag" : value;\n          updateData(nextValue);\n        }\n      })]\n    });\n  }\n});\nconst actionChangeStrokeWidth = (0,_register__WEBPACK_IMPORTED_MODULE_18__.register)({\n  name: "changeStrokeWidth",\n  trackEvent: false,\n  perform: (elements, appState, value) => {\n    return {\n      elements: changeProperty(elements, appState, el => (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_9__.newElementWith)(el, {\n        strokeWidth: value\n      })),\n      appState: Object.assign(Object.assign({}, appState), {\n        currentItemStrokeWidth: value\n      }),\n      commitToHistory: true\n    };\n  },\n  PanelComponent: ({\n    elements,\n    appState,\n    updateData\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("fieldset", {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("legend", {\n      children: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.strokeWidth")\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ButtonIconSelect__WEBPACK_IMPORTED_MODULE_3__.ButtonIconSelect, {\n      group: "stroke-width",\n      options: [{\n        value: _constants__WEBPACK_IMPORTED_MODULE_7__.STROKE_WIDTH.thin,\n        text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.thin"),\n        icon: _components_icons__WEBPACK_IMPORTED_MODULE_6__.StrokeWidthBaseIcon,\n        testId: "strokeWidth-thin"\n      }, {\n        value: _constants__WEBPACK_IMPORTED_MODULE_7__.STROKE_WIDTH.bold,\n        text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.bold"),\n        icon: _components_icons__WEBPACK_IMPORTED_MODULE_6__.StrokeWidthBoldIcon,\n        testId: "strokeWidth-bold"\n      }, {\n        value: _constants__WEBPACK_IMPORTED_MODULE_7__.STROKE_WIDTH.extraBold,\n        text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.extraBold"),\n        icon: _components_icons__WEBPACK_IMPORTED_MODULE_6__.StrokeWidthExtraBoldIcon,\n        testId: "strokeWidth-extraBold"\n      }],\n      value: getFormValue(elements, appState, element => element.strokeWidth, element => element.hasOwnProperty("strokeWidth"), hasSelection => hasSelection ? null : appState.currentItemStrokeWidth),\n      onChange: value => updateData(value)\n    })]\n  })\n});\nconst actionChangeSloppiness = (0,_register__WEBPACK_IMPORTED_MODULE_18__.register)({\n  name: "changeSloppiness",\n  trackEvent: false,\n  perform: (elements, appState, value) => {\n    return {\n      elements: changeProperty(elements, appState, el => (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_9__.newElementWith)(el, {\n        seed: (0,_random__WEBPACK_IMPORTED_MODULE_14__.randomInteger)(),\n        roughness: value\n      })),\n      appState: Object.assign(Object.assign({}, appState), {\n        currentItemRoughness: value\n      }),\n      commitToHistory: true\n    };\n  },\n  PanelComponent: ({\n    elements,\n    appState,\n    updateData\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("fieldset", {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("legend", {\n      children: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.sloppiness")\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ButtonIconSelect__WEBPACK_IMPORTED_MODULE_3__.ButtonIconSelect, {\n      group: "sloppiness",\n      options: [{\n        value: 0,\n        text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.architect"),\n        icon: _components_icons__WEBPACK_IMPORTED_MODULE_6__.SloppinessArchitectIcon\n      }, {\n        value: 1,\n        text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.artist"),\n        icon: _components_icons__WEBPACK_IMPORTED_MODULE_6__.SloppinessArtistIcon\n      }, {\n        value: 2,\n        text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.cartoonist"),\n        icon: _components_icons__WEBPACK_IMPORTED_MODULE_6__.SloppinessCartoonistIcon\n      }],\n      value: getFormValue(elements, appState, element => element.roughness, element => element.hasOwnProperty("roughness"), hasSelection => hasSelection ? null : appState.currentItemRoughness),\n      onChange: value => updateData(value)\n    })]\n  })\n});\nconst actionChangeStrokeStyle = (0,_register__WEBPACK_IMPORTED_MODULE_18__.register)({\n  name: "changeStrokeStyle",\n  trackEvent: false,\n  perform: (elements, appState, value) => {\n    return {\n      elements: changeProperty(elements, appState, el => (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_9__.newElementWith)(el, {\n        strokeStyle: value\n      })),\n      appState: Object.assign(Object.assign({}, appState), {\n        currentItemStrokeStyle: value\n      }),\n      commitToHistory: true\n    };\n  },\n  PanelComponent: ({\n    elements,\n    appState,\n    updateData\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("fieldset", {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("legend", {\n      children: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.strokeStyle")\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ButtonIconSelect__WEBPACK_IMPORTED_MODULE_3__.ButtonIconSelect, {\n      group: "strokeStyle",\n      options: [{\n        value: "solid",\n        text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.strokeStyle_solid"),\n        icon: _components_icons__WEBPACK_IMPORTED_MODULE_6__.StrokeWidthBaseIcon\n      }, {\n        value: "dashed",\n        text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.strokeStyle_dashed"),\n        icon: _components_icons__WEBPACK_IMPORTED_MODULE_6__.StrokeStyleDashedIcon\n      }, {\n        value: "dotted",\n        text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.strokeStyle_dotted"),\n        icon: _components_icons__WEBPACK_IMPORTED_MODULE_6__.StrokeStyleDottedIcon\n      }],\n      value: getFormValue(elements, appState, element => element.strokeStyle, element => element.hasOwnProperty("strokeStyle"), hasSelection => hasSelection ? null : appState.currentItemStrokeStyle),\n      onChange: value => updateData(value)\n    })]\n  })\n});\nconst actionChangeOpacity = (0,_register__WEBPACK_IMPORTED_MODULE_18__.register)({\n  name: "changeOpacity",\n  trackEvent: false,\n  perform: (elements, appState, value) => {\n    return {\n      elements: changeProperty(elements, appState, el => (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_9__.newElementWith)(el, {\n        opacity: value\n      }), true),\n      appState: Object.assign(Object.assign({}, appState), {\n        currentItemOpacity: value\n      }),\n      commitToHistory: true\n    };\n  },\n  PanelComponent: ({\n    elements,\n    appState,\n    updateData\n  }) => {\n    var _a;\n\n    return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("label", Object.assign({\n      className: "control-label"\n    }, {\n      children: [(0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.opacity"), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input", {\n        type: "range",\n        min: "0",\n        max: "100",\n        step: "10",\n        onChange: event => updateData(+event.target.value),\n        value: (_a = getFormValue(elements, appState, element => element.opacity, true, appState.currentItemOpacity)) !== null && _a !== void 0 ? _a : undefined\n      })]\n    }));\n  }\n});\nconst actionChangeFontSize = (0,_register__WEBPACK_IMPORTED_MODULE_18__.register)({\n  name: "changeFontSize",\n  trackEvent: false,\n  perform: (elements, appState, value) => {\n    return changeFontSize(elements, appState, () => value, value);\n  },\n  PanelComponent: ({\n    elements,\n    appState,\n    updateData\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("fieldset", {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("legend", {\n      children: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.fontSize")\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ButtonIconSelect__WEBPACK_IMPORTED_MODULE_3__.ButtonIconSelect, {\n      group: "font-size",\n      options: [{\n        value: 16,\n        text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.small"),\n        icon: _components_icons__WEBPACK_IMPORTED_MODULE_6__.FontSizeSmallIcon,\n        testId: "fontSize-small"\n      }, {\n        value: 20,\n        text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.medium"),\n        icon: _components_icons__WEBPACK_IMPORTED_MODULE_6__.FontSizeMediumIcon,\n        testId: "fontSize-medium"\n      }, {\n        value: 28,\n        text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.large"),\n        icon: _components_icons__WEBPACK_IMPORTED_MODULE_6__.FontSizeLargeIcon,\n        testId: "fontSize-large"\n      }, {\n        value: 36,\n        text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.veryLarge"),\n        icon: _components_icons__WEBPACK_IMPORTED_MODULE_6__.FontSizeExtraLargeIcon,\n        testId: "fontSize-veryLarge"\n      }],\n      value: getFormValue(elements, appState, element => {\n        if ((0,_element__WEBPACK_IMPORTED_MODULE_8__.isTextElement)(element)) {\n          return element.fontSize;\n        }\n\n        const boundTextElement = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_10__.getBoundTextElement)(element);\n\n        if (boundTextElement) {\n          return boundTextElement.fontSize;\n        }\n\n        return null;\n      }, element => (0,_element__WEBPACK_IMPORTED_MODULE_8__.isTextElement)(element) || (0,_element_textElement__WEBPACK_IMPORTED_MODULE_10__.getBoundTextElement)(element) !== null, hasSelection => hasSelection ? null : appState.currentItemFontSize || _constants__WEBPACK_IMPORTED_MODULE_7__.DEFAULT_FONT_SIZE),\n      onChange: value => updateData(value)\n    })]\n  })\n});\nconst actionDecreaseFontSize = (0,_register__WEBPACK_IMPORTED_MODULE_18__.register)({\n  name: "decreaseFontSize",\n  trackEvent: false,\n  perform: (elements, appState, value) => {\n    return changeFontSize(elements, appState, element => Math.round( // get previous value before relative increase (doesn\'t work fully\n    // due to rounding and float precision issues)\n    1 / (1 + FONT_SIZE_RELATIVE_INCREASE_STEP) * element.fontSize));\n  },\n  keyTest: event => {\n    return event[_keys__WEBPACK_IMPORTED_MODULE_13__.KEYS.CTRL_OR_CMD] && event.shiftKey && ( // KEYS.COMMA needed for MacOS\n    event.key === _keys__WEBPACK_IMPORTED_MODULE_13__.KEYS.CHEVRON_LEFT || event.key === _keys__WEBPACK_IMPORTED_MODULE_13__.KEYS.COMMA);\n  }\n});\nconst actionIncreaseFontSize = (0,_register__WEBPACK_IMPORTED_MODULE_18__.register)({\n  name: "increaseFontSize",\n  trackEvent: false,\n  perform: (elements, appState, value) => {\n    return changeFontSize(elements, appState, element => Math.round(element.fontSize * (1 + FONT_SIZE_RELATIVE_INCREASE_STEP)));\n  },\n  keyTest: event => {\n    return event[_keys__WEBPACK_IMPORTED_MODULE_13__.KEYS.CTRL_OR_CMD] && event.shiftKey && ( // KEYS.PERIOD needed for MacOS\n    event.key === _keys__WEBPACK_IMPORTED_MODULE_13__.KEYS.CHEVRON_RIGHT || event.key === _keys__WEBPACK_IMPORTED_MODULE_13__.KEYS.PERIOD);\n  }\n});\nconst actionChangeFontFamily = (0,_register__WEBPACK_IMPORTED_MODULE_18__.register)({\n  name: "changeFontFamily",\n  trackEvent: false,\n  perform: (elements, appState, value) => {\n    return {\n      elements: changeProperty(elements, appState, oldElement => {\n        if ((0,_element__WEBPACK_IMPORTED_MODULE_8__.isTextElement)(oldElement)) {\n          const newElement = (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_9__.newElementWith)(oldElement, {\n            fontFamily: value,\n            lineHeight: (0,_element_textElement__WEBPACK_IMPORTED_MODULE_10__.getDefaultLineHeight)(value)\n          });\n          (0,_element__WEBPACK_IMPORTED_MODULE_8__.redrawTextBoundingBox)(newElement, (0,_element_textElement__WEBPACK_IMPORTED_MODULE_10__.getContainerElement)(oldElement));\n          return newElement;\n        }\n\n        return oldElement;\n      }, true),\n      appState: Object.assign(Object.assign({}, appState), {\n        currentItemFontFamily: value\n      }),\n      commitToHistory: true\n    };\n  },\n  PanelComponent: ({\n    elements,\n    appState,\n    updateData\n  }) => {\n    const options = [{\n      value: _constants__WEBPACK_IMPORTED_MODULE_7__.FONT_FAMILY.Virgil,\n      text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.handDrawn"),\n      icon: _components_icons__WEBPACK_IMPORTED_MODULE_6__.FreedrawIcon,\n      testId: "font-family-virgil"\n    }, {\n      value: _constants__WEBPACK_IMPORTED_MODULE_7__.FONT_FAMILY.Helvetica,\n      text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.normal"),\n      icon: _components_icons__WEBPACK_IMPORTED_MODULE_6__.FontFamilyNormalIcon,\n      testId: "font-family-normal"\n    }, {\n      value: _constants__WEBPACK_IMPORTED_MODULE_7__.FONT_FAMILY.Cascadia,\n      text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.code"),\n      icon: _components_icons__WEBPACK_IMPORTED_MODULE_6__.FontFamilyCodeIcon,\n      testId: "font-family-code"\n    }];\n    return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("fieldset", {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("legend", {\n        children: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.fontFamily")\n      }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ButtonIconSelect__WEBPACK_IMPORTED_MODULE_3__.ButtonIconSelect, {\n        group: "font-family",\n        options: options,\n        value: getFormValue(elements, appState, element => {\n          if ((0,_element__WEBPACK_IMPORTED_MODULE_8__.isTextElement)(element)) {\n            return element.fontFamily;\n          }\n\n          const boundTextElement = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_10__.getBoundTextElement)(element);\n\n          if (boundTextElement) {\n            return boundTextElement.fontFamily;\n          }\n\n          return null;\n        }, element => (0,_element__WEBPACK_IMPORTED_MODULE_8__.isTextElement)(element) || (0,_element_textElement__WEBPACK_IMPORTED_MODULE_10__.getBoundTextElement)(element) !== null, hasSelection => hasSelection ? null : appState.currentItemFontFamily || _constants__WEBPACK_IMPORTED_MODULE_7__.DEFAULT_FONT_FAMILY),\n        onChange: value => updateData(value)\n      })]\n    });\n  }\n});\nconst actionChangeTextAlign = (0,_register__WEBPACK_IMPORTED_MODULE_18__.register)({\n  name: "changeTextAlign",\n  trackEvent: false,\n  perform: (elements, appState, value) => {\n    return {\n      elements: changeProperty(elements, appState, oldElement => {\n        if ((0,_element__WEBPACK_IMPORTED_MODULE_8__.isTextElement)(oldElement)) {\n          const newElement = (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_9__.newElementWith)(oldElement, {\n            textAlign: value\n          });\n          (0,_element__WEBPACK_IMPORTED_MODULE_8__.redrawTextBoundingBox)(newElement, (0,_element_textElement__WEBPACK_IMPORTED_MODULE_10__.getContainerElement)(oldElement));\n          return newElement;\n        }\n\n        return oldElement;\n      }, true),\n      appState: Object.assign(Object.assign({}, appState), {\n        currentItemTextAlign: value\n      }),\n      commitToHistory: true\n    };\n  },\n  PanelComponent: ({\n    elements,\n    appState,\n    updateData\n  }) => {\n    return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("fieldset", {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("legend", {\n        children: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.textAlign")\n      }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ButtonIconSelect__WEBPACK_IMPORTED_MODULE_3__.ButtonIconSelect, {\n        group: "text-align",\n        options: [{\n          value: "left",\n          text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.left"),\n          icon: _components_icons__WEBPACK_IMPORTED_MODULE_6__.TextAlignLeftIcon,\n          testId: "align-left"\n        }, {\n          value: "center",\n          text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.center"),\n          icon: _components_icons__WEBPACK_IMPORTED_MODULE_6__.TextAlignCenterIcon,\n          testId: "align-horizontal-center"\n        }, {\n          value: "right",\n          text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.right"),\n          icon: _components_icons__WEBPACK_IMPORTED_MODULE_6__.TextAlignRightIcon,\n          testId: "align-right"\n        }],\n        value: getFormValue(elements, appState, element => {\n          if ((0,_element__WEBPACK_IMPORTED_MODULE_8__.isTextElement)(element)) {\n            return element.textAlign;\n          }\n\n          const boundTextElement = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_10__.getBoundTextElement)(element);\n\n          if (boundTextElement) {\n            return boundTextElement.textAlign;\n          }\n\n          return null;\n        }, element => (0,_element__WEBPACK_IMPORTED_MODULE_8__.isTextElement)(element) || (0,_element_textElement__WEBPACK_IMPORTED_MODULE_10__.getBoundTextElement)(element) !== null, hasSelection => hasSelection ? null : appState.currentItemTextAlign),\n        onChange: value => updateData(value)\n      })]\n    });\n  }\n});\nconst actionChangeVerticalAlign = (0,_register__WEBPACK_IMPORTED_MODULE_18__.register)({\n  name: "changeVerticalAlign",\n  trackEvent: {\n    category: "element"\n  },\n  perform: (elements, appState, value) => {\n    return {\n      elements: changeProperty(elements, appState, oldElement => {\n        if ((0,_element__WEBPACK_IMPORTED_MODULE_8__.isTextElement)(oldElement)) {\n          const newElement = (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_9__.newElementWith)(oldElement, {\n            verticalAlign: value\n          });\n          (0,_element__WEBPACK_IMPORTED_MODULE_8__.redrawTextBoundingBox)(newElement, (0,_element_textElement__WEBPACK_IMPORTED_MODULE_10__.getContainerElement)(oldElement));\n          return newElement;\n        }\n\n        return oldElement;\n      }, true),\n      appState: Object.assign({}, appState),\n      commitToHistory: true\n    };\n  },\n  PanelComponent: ({\n    elements,\n    appState,\n    updateData\n  }) => {\n    return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("fieldset", {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ButtonIconSelect__WEBPACK_IMPORTED_MODULE_3__.ButtonIconSelect, {\n        group: "text-align",\n        options: [{\n          value: _constants__WEBPACK_IMPORTED_MODULE_7__.VERTICAL_ALIGN.TOP,\n          text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.alignTop"),\n          icon: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_icons__WEBPACK_IMPORTED_MODULE_6__.TextAlignTopIcon, {\n            theme: appState.theme\n          }),\n          testId: "align-top"\n        }, {\n          value: _constants__WEBPACK_IMPORTED_MODULE_7__.VERTICAL_ALIGN.MIDDLE,\n          text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.centerVertically"),\n          icon: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_icons__WEBPACK_IMPORTED_MODULE_6__.TextAlignMiddleIcon, {\n            theme: appState.theme\n          }),\n          testId: "align-middle"\n        }, {\n          value: _constants__WEBPACK_IMPORTED_MODULE_7__.VERTICAL_ALIGN.BOTTOM,\n          text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.alignBottom"),\n          icon: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_icons__WEBPACK_IMPORTED_MODULE_6__.TextAlignBottomIcon, {\n            theme: appState.theme\n          }),\n          testId: "align-bottom"\n        }],\n        value: getFormValue(elements, appState, element => {\n          if ((0,_element__WEBPACK_IMPORTED_MODULE_8__.isTextElement)(element) && element.containerId) {\n            return element.verticalAlign;\n          }\n\n          const boundTextElement = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_10__.getBoundTextElement)(element);\n\n          if (boundTextElement) {\n            return boundTextElement.verticalAlign;\n          }\n\n          return null;\n        }, element => (0,_element__WEBPACK_IMPORTED_MODULE_8__.isTextElement)(element) || (0,_element_textElement__WEBPACK_IMPORTED_MODULE_10__.getBoundTextElement)(element) !== null, hasSelection => hasSelection ? null : _constants__WEBPACK_IMPORTED_MODULE_7__.VERTICAL_ALIGN.MIDDLE),\n        onChange: value => updateData(value)\n      })\n    });\n  }\n});\nconst actionChangeRoundness = (0,_register__WEBPACK_IMPORTED_MODULE_18__.register)({\n  name: "changeRoundness",\n  trackEvent: false,\n  perform: (elements, appState, value) => {\n    return {\n      elements: changeProperty(elements, appState, el => (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_9__.newElementWith)(el, {\n        roundness: value === "round" ? {\n          type: (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_11__.isUsingAdaptiveRadius)(el.type) ? _constants__WEBPACK_IMPORTED_MODULE_7__.ROUNDNESS.ADAPTIVE_RADIUS : _constants__WEBPACK_IMPORTED_MODULE_7__.ROUNDNESS.PROPORTIONAL_RADIUS\n        } : null\n      })),\n      appState: Object.assign(Object.assign({}, appState), {\n        currentItemRoundness: value\n      }),\n      commitToHistory: true\n    };\n  },\n  PanelComponent: ({\n    elements,\n    appState,\n    updateData\n  }) => {\n    const targetElements = (0,_scene__WEBPACK_IMPORTED_MODULE_15__.getTargetElements)((0,_element__WEBPACK_IMPORTED_MODULE_8__.getNonDeletedElements)(elements), appState);\n    const hasLegacyRoundness = targetElements.some(el => {\n      var _a;\n\n      return ((_a = el.roundness) === null || _a === void 0 ? void 0 : _a.type) === _constants__WEBPACK_IMPORTED_MODULE_7__.ROUNDNESS.LEGACY;\n    });\n    return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("fieldset", {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("legend", {\n        children: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.edges")\n      }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ButtonIconSelect__WEBPACK_IMPORTED_MODULE_3__.ButtonIconSelect, {\n        group: "edges",\n        options: [{\n          value: "sharp",\n          text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.sharp"),\n          icon: _components_icons__WEBPACK_IMPORTED_MODULE_6__.EdgeSharpIcon\n        }, {\n          value: "round",\n          text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.round"),\n          icon: _components_icons__WEBPACK_IMPORTED_MODULE_6__.EdgeRoundIcon\n        }],\n        value: getFormValue(elements, appState, element => hasLegacyRoundness ? null : element.roundness ? "round" : "sharp", element => element.hasOwnProperty("roundness"), hasSelection => hasSelection ? null : appState.currentItemRoundness),\n        onChange: value => updateData(value)\n      })]\n    });\n  }\n});\nconst actionChangeArrowhead = (0,_register__WEBPACK_IMPORTED_MODULE_18__.register)({\n  name: "changeArrowhead",\n  trackEvent: false,\n  perform: (elements, appState, value) => {\n    return {\n      elements: changeProperty(elements, appState, el => {\n        if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_11__.isLinearElement)(el)) {\n          const {\n            position,\n            type\n          } = value;\n\n          if (position === "start") {\n            const element = (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_9__.newElementWith)(el, {\n              startArrowhead: type\n            });\n            return element;\n          } else if (position === "end") {\n            const element = (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_9__.newElementWith)(el, {\n              endArrowhead: type\n            });\n            return element;\n          }\n        }\n\n        return el;\n      }),\n      appState: Object.assign(Object.assign({}, appState), {\n        [value.position === "start" ? "currentItemStartArrowhead" : "currentItemEndArrowhead"]: value.type\n      }),\n      commitToHistory: true\n    };\n  },\n  PanelComponent: ({\n    elements,\n    appState,\n    updateData\n  }) => {\n    const isRTL = (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.getLanguage)().rtl;\n    return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("fieldset", {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("legend", {\n        children: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.arrowheads")\n      }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n        className: "iconSelectList buttonList"\n      }, {\n        children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_IconPicker__WEBPACK_IMPORTED_MODULE_5__.IconPicker, {\n          label: "arrowhead_start",\n          options: [{\n            value: null,\n            text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.arrowhead_none"),\n            icon: _components_icons__WEBPACK_IMPORTED_MODULE_6__.ArrowheadNoneIcon,\n            keyBinding: "q"\n          }, {\n            value: "arrow",\n            text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.arrowhead_arrow"),\n            icon: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_icons__WEBPACK_IMPORTED_MODULE_6__.ArrowheadArrowIcon, {\n              flip: !isRTL\n            }),\n            keyBinding: "w"\n          }, {\n            value: "bar",\n            text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.arrowhead_bar"),\n            icon: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_icons__WEBPACK_IMPORTED_MODULE_6__.ArrowheadBarIcon, {\n              flip: !isRTL\n            }),\n            keyBinding: "e"\n          }, {\n            value: "dot",\n            text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.arrowhead_dot"),\n            icon: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_icons__WEBPACK_IMPORTED_MODULE_6__.ArrowheadDotIcon, {\n              flip: !isRTL\n            }),\n            keyBinding: "r"\n          }, {\n            value: "triangle",\n            text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.arrowhead_triangle"),\n            icon: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_icons__WEBPACK_IMPORTED_MODULE_6__.ArrowheadTriangleIcon, {\n              flip: !isRTL\n            }),\n            keyBinding: "t"\n          }],\n          value: getFormValue(elements, appState, element => (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_11__.isLinearElement)(element) && (0,_scene__WEBPACK_IMPORTED_MODULE_15__.canHaveArrowheads)(element.type) ? element.startArrowhead : appState.currentItemStartArrowhead, true, appState.currentItemStartArrowhead),\n          onChange: value => updateData({\n            position: "start",\n            type: value\n          })\n        }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_IconPicker__WEBPACK_IMPORTED_MODULE_5__.IconPicker, {\n          label: "arrowhead_end",\n          group: "arrowheads",\n          options: [{\n            value: null,\n            text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.arrowhead_none"),\n            keyBinding: "q",\n            icon: _components_icons__WEBPACK_IMPORTED_MODULE_6__.ArrowheadNoneIcon\n          }, {\n            value: "arrow",\n            text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.arrowhead_arrow"),\n            keyBinding: "w",\n            icon: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_icons__WEBPACK_IMPORTED_MODULE_6__.ArrowheadArrowIcon, {\n              flip: isRTL\n            })\n          }, {\n            value: "bar",\n            text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.arrowhead_bar"),\n            keyBinding: "e",\n            icon: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_icons__WEBPACK_IMPORTED_MODULE_6__.ArrowheadBarIcon, {\n              flip: isRTL\n            })\n          }, {\n            value: "dot",\n            text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.arrowhead_dot"),\n            keyBinding: "r",\n            icon: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_icons__WEBPACK_IMPORTED_MODULE_6__.ArrowheadDotIcon, {\n              flip: isRTL\n            })\n          }, {\n            value: "triangle",\n            text: (0,_i18n__WEBPACK_IMPORTED_MODULE_12__.t)("labels.arrowhead_triangle"),\n            icon: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_icons__WEBPACK_IMPORTED_MODULE_6__.ArrowheadTriangleIcon, {\n              flip: isRTL\n            }),\n            keyBinding: "t"\n          }],\n          value: getFormValue(elements, appState, element => (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_11__.isLinearElement)(element) && (0,_scene__WEBPACK_IMPORTED_MODULE_15__.canHaveArrowheads)(element.type) ? element.endArrowhead : appState.currentItemEndArrowhead, true, appState.currentItemEndArrowhead),\n          onChange: value => updateData({\n            position: "end",\n            type: value\n          })\n        })]\n      }))]\n    });\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 52136 characters]\n//# sourceURL=webpack-internal:///../../actions/actionProperties.tsx\n');
              }
            ),
            /***/
            "../../actions/actionSelectAll.ts": (
              /*!****************************************!*\
                !*** ../../actions/actionSelectAll.ts ***!
                \****************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "actionSelectAll": () => (/* binding */ actionSelectAll)\n/* harmony export */ });\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./register */ "../../actions/register.ts");\n/* harmony import */ var _groups__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../groups */ "../../groups.ts");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../element/typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../element/linearElementEditor */ "../../element/linearElementEditor.ts");\n/* harmony import */ var _scene_selection__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../scene/selection */ "../../scene/selection.ts");\n\n\n\n\n\n\n\nconst actionSelectAll = (0,_register__WEBPACK_IMPORTED_MODULE_1__.register)({\n  name: "selectAll",\n  trackEvent: {\n    category: "canvas"\n  },\n  perform: (elements, appState, value, app) => {\n    if (appState.editingLinearElement) {\n      return false;\n    }\n\n    const selectedElementIds = (0,_scene_selection__WEBPACK_IMPORTED_MODULE_6__.excludeElementsInFramesFromSelection)(elements.filter(element => !element.isDeleted && !((0,_element__WEBPACK_IMPORTED_MODULE_3__.isTextElement)(element) && element.containerId) && !element.locked)).reduce((map, element) => {\n      map[element.id] = true;\n      return map;\n    }, {});\n    return {\n      appState: Object.assign(Object.assign(Object.assign({}, appState), (0,_groups__WEBPACK_IMPORTED_MODULE_2__.selectGroupsForSelectedElements)({\n        editingGroupId: null,\n        selectedElementIds\n      }, (0,_element__WEBPACK_IMPORTED_MODULE_3__.getNonDeletedElements)(elements), appState, app)), {\n        selectedLinearElement: // single linear element selected\n        Object.keys(selectedElementIds).length === 1 && (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_4__.isLinearElement)(elements[0]) ? new _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_5__.LinearElementEditor(elements[0], app.scene) : null\n      }),\n      commitToHistory: true\n    };\n  },\n  contextItemLabel: "labels.selectAll",\n  keyTest: event => event[_keys__WEBPACK_IMPORTED_MODULE_0__.KEYS.CTRL_OR_CMD] && event.key === _keys__WEBPACK_IMPORTED_MODULE_0__.KEYS.A\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vYWN0aW9ucy9hY3Rpb25TZWxlY3RBbGwudHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBK0I7QUFDTztBQUNzQjtBQUNNO0FBQ1Y7QUFDYTtBQUNLO0FBQ25FLHdCQUF3QixtREFBUTtBQUN2QztBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsK0JBQStCLHNGQUFvQyxvREFBb0QsdURBQWE7QUFDcEk7QUFDQTtBQUNBLEtBQUssSUFBSTtBQUNUO0FBQ0EsNERBQTRELGFBQWEsd0VBQStCO0FBQ3hHO0FBQ0E7QUFDQSxPQUFPLEVBQUUsK0RBQXFCO0FBQzlCO0FBQ0Esd0RBQXdELG9FQUFlLG9CQUFvQiw2RUFBbUI7QUFDOUcsT0FBTztBQUNQO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSwwQkFBMEIsbURBQWdCLG1CQUFtQix5Q0FBTTtBQUNuRSxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2FjdGlvbnMvYWN0aW9uU2VsZWN0QWxsLnRzPzE3MTAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgS0VZUyB9IGZyb20gXCIuLi9rZXlzXCI7XG5pbXBvcnQgeyByZWdpc3RlciB9IGZyb20gXCIuL3JlZ2lzdGVyXCI7XG5pbXBvcnQgeyBzZWxlY3RHcm91cHNGb3JTZWxlY3RlZEVsZW1lbnRzIH0gZnJvbSBcIi4uL2dyb3Vwc1wiO1xuaW1wb3J0IHsgZ2V0Tm9uRGVsZXRlZEVsZW1lbnRzLCBpc1RleHRFbGVtZW50IH0gZnJvbSBcIi4uL2VsZW1lbnRcIjtcbmltcG9ydCB7IGlzTGluZWFyRWxlbWVudCB9IGZyb20gXCIuLi9lbGVtZW50L3R5cGVDaGVja3NcIjtcbmltcG9ydCB7IExpbmVhckVsZW1lbnRFZGl0b3IgfSBmcm9tIFwiLi4vZWxlbWVudC9saW5lYXJFbGVtZW50RWRpdG9yXCI7XG5pbXBvcnQgeyBleGNsdWRlRWxlbWVudHNJbkZyYW1lc0Zyb21TZWxlY3Rpb24gfSBmcm9tIFwiLi4vc2NlbmUvc2VsZWN0aW9uXCI7XG5leHBvcnQgY29uc3QgYWN0aW9uU2VsZWN0QWxsID0gcmVnaXN0ZXIoe1xuICBuYW1lOiBcInNlbGVjdEFsbFwiLFxuICB0cmFja0V2ZW50OiB7XG4gICAgY2F0ZWdvcnk6IFwiY2FudmFzXCJcbiAgfSxcbiAgcGVyZm9ybTogKGVsZW1lbnRzLCBhcHBTdGF0ZSwgdmFsdWUsIGFwcCkgPT4ge1xuICAgIGlmIChhcHBTdGF0ZS5lZGl0aW5nTGluZWFyRWxlbWVudCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudElkcyA9IGV4Y2x1ZGVFbGVtZW50c0luRnJhbWVzRnJvbVNlbGVjdGlvbihlbGVtZW50cy5maWx0ZXIoZWxlbWVudCA9PiAhZWxlbWVudC5pc0RlbGV0ZWQgJiYgIShpc1RleHRFbGVtZW50KGVsZW1lbnQpICYmIGVsZW1lbnQuY29udGFpbmVySWQpICYmICFlbGVtZW50LmxvY2tlZCkpLnJlZHVjZSgobWFwLCBlbGVtZW50KSA9PiB7XG4gICAgICBtYXBbZWxlbWVudC5pZF0gPSB0cnVlO1xuICAgICAgcmV0dXJuIG1hcDtcbiAgICB9LCB7fSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFwcFN0YXRlOiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgYXBwU3RhdGUpLCBzZWxlY3RHcm91cHNGb3JTZWxlY3RlZEVsZW1lbnRzKHtcbiAgICAgICAgZWRpdGluZ0dyb3VwSWQ6IG51bGwsXG4gICAgICAgIHNlbGVjdGVkRWxlbWVudElkc1xuICAgICAgfSwgZ2V0Tm9uRGVsZXRlZEVsZW1lbnRzKGVsZW1lbnRzKSwgYXBwU3RhdGUsIGFwcCkpLCB7XG4gICAgICAgIHNlbGVjdGVkTGluZWFyRWxlbWVudDogLy8gc2luZ2xlIGxpbmVhciBlbGVtZW50IHNlbGVjdGVkXG4gICAgICAgIE9iamVjdC5rZXlzKHNlbGVjdGVkRWxlbWVudElkcykubGVuZ3RoID09PSAxICYmIGlzTGluZWFyRWxlbWVudChlbGVtZW50c1swXSkgPyBuZXcgTGluZWFyRWxlbWVudEVkaXRvcihlbGVtZW50c1swXSwgYXBwLnNjZW5lKSA6IG51bGxcbiAgICAgIH0pLFxuICAgICAgY29tbWl0VG9IaXN0b3J5OiB0cnVlXG4gICAgfTtcbiAgfSxcbiAgY29udGV4dEl0ZW1MYWJlbDogXCJsYWJlbHMuc2VsZWN0QWxsXCIsXG4gIGtleVRlc3Q6IGV2ZW50ID0+IGV2ZW50W0tFWVMuQ1RSTF9PUl9DTURdICYmIGV2ZW50LmtleSA9PT0gS0VZUy5BXG59KTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../actions/actionSelectAll.ts\n');
              }
            ),
            /***/
            "../../actions/actionStyles.ts": (
              /*!*************************************!*\
                !*** ../../actions/actionStyles.ts ***!
                \*************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "actionCopyStyles": () => (/* binding */ actionCopyStyles),\n/* harmony export */   "actionPasteStyles": () => (/* binding */ actionPasteStyles),\n/* harmony export */   "copiedStyles": () => (/* binding */ copiedStyles)\n/* harmony export */ });\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./register */ "../../actions/register.ts");\n/* harmony import */ var _element_mutateElement__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../element/mutateElement */ "../../element/mutateElement.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _element_textElement__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../element/textElement */ "../../element/textElement.ts");\n/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../element/typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../scene */ "../../scene/index.ts");\n\n\n\n\n\n\n\n\n // `copiedStyles` is exported only for tests.\n\nlet copiedStyles = "{}";\nconst actionCopyStyles = (0,_register__WEBPACK_IMPORTED_MODULE_3__.register)({\n  name: "copyStyles",\n  trackEvent: {\n    category: "element"\n  },\n  perform: (elements, appState) => {\n    const elementsCopied = [];\n    const element = elements.find(el => appState.selectedElementIds[el.id]);\n    elementsCopied.push(element);\n\n    if (element && (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_7__.hasBoundTextElement)(element)) {\n      const boundTextElement = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_6__.getBoundTextElement)(element);\n      elementsCopied.push(boundTextElement);\n    }\n\n    if (element) {\n      copiedStyles = JSON.stringify(elementsCopied);\n    }\n\n    return {\n      appState: Object.assign(Object.assign({}, appState), {\n        toast: {\n          message: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("toast.copyStyles")\n        }\n      }),\n      commitToHistory: false\n    };\n  },\n  contextItemLabel: "labels.copyStyles",\n  keyTest: event => event[_keys__WEBPACK_IMPORTED_MODULE_1__.KEYS.CTRL_OR_CMD] && event.altKey && event.code === _keys__WEBPACK_IMPORTED_MODULE_1__.CODES.C\n});\nconst actionPasteStyles = (0,_register__WEBPACK_IMPORTED_MODULE_3__.register)({\n  name: "pasteStyles",\n  trackEvent: {\n    category: "element"\n  },\n  perform: (elements, appState) => {\n    const elementsCopied = JSON.parse(copiedStyles);\n    const pastedElement = elementsCopied[0];\n    const boundTextElement = elementsCopied[1];\n\n    if (!(0,_element__WEBPACK_IMPORTED_MODULE_0__.isExcalidrawElement)(pastedElement)) {\n      return {\n        elements,\n        commitToHistory: false\n      };\n    }\n\n    const selectedElements = (0,_scene__WEBPACK_IMPORTED_MODULE_8__.getSelectedElements)(elements, appState, {\n      includeBoundTextElement: true\n    });\n    const selectedElementIds = selectedElements.map(element => element.id);\n    return {\n      elements: elements.map(element => {\n        if (selectedElementIds.includes(element.id)) {\n          let elementStylesToCopyFrom = pastedElement;\n\n          if ((0,_element__WEBPACK_IMPORTED_MODULE_0__.isTextElement)(element) && element.containerId) {\n            elementStylesToCopyFrom = boundTextElement;\n          }\n\n          if (!elementStylesToCopyFrom) {\n            return element;\n          }\n\n          let newElement = (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_4__.newElementWith)(element, {\n            backgroundColor: elementStylesToCopyFrom === null || elementStylesToCopyFrom === void 0 ? void 0 : elementStylesToCopyFrom.backgroundColor,\n            strokeWidth: elementStylesToCopyFrom === null || elementStylesToCopyFrom === void 0 ? void 0 : elementStylesToCopyFrom.strokeWidth,\n            strokeColor: elementStylesToCopyFrom === null || elementStylesToCopyFrom === void 0 ? void 0 : elementStylesToCopyFrom.strokeColor,\n            strokeStyle: elementStylesToCopyFrom === null || elementStylesToCopyFrom === void 0 ? void 0 : elementStylesToCopyFrom.strokeStyle,\n            fillStyle: elementStylesToCopyFrom === null || elementStylesToCopyFrom === void 0 ? void 0 : elementStylesToCopyFrom.fillStyle,\n            opacity: elementStylesToCopyFrom === null || elementStylesToCopyFrom === void 0 ? void 0 : elementStylesToCopyFrom.opacity,\n            roughness: elementStylesToCopyFrom === null || elementStylesToCopyFrom === void 0 ? void 0 : elementStylesToCopyFrom.roughness,\n            roundness: elementStylesToCopyFrom.roundness ? (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_7__.canApplyRoundnessTypeToElement)(elementStylesToCopyFrom.roundness.type, element) ? elementStylesToCopyFrom.roundness : (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_7__.getDefaultRoundnessTypeForElement)(element) : null\n          });\n\n          if ((0,_element__WEBPACK_IMPORTED_MODULE_0__.isTextElement)(newElement)) {\n            const fontSize = elementStylesToCopyFrom.fontSize || _constants__WEBPACK_IMPORTED_MODULE_5__.DEFAULT_FONT_SIZE;\n            const fontFamily = elementStylesToCopyFrom.fontFamily || _constants__WEBPACK_IMPORTED_MODULE_5__.DEFAULT_FONT_FAMILY;\n            newElement = (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_4__.newElementWith)(newElement, {\n              fontSize,\n              fontFamily,\n              textAlign: elementStylesToCopyFrom.textAlign || _constants__WEBPACK_IMPORTED_MODULE_5__.DEFAULT_TEXT_ALIGN,\n              lineHeight: elementStylesToCopyFrom.lineHeight || (0,_element_textElement__WEBPACK_IMPORTED_MODULE_6__.getDefaultLineHeight)(fontFamily)\n            });\n            let container = null;\n\n            if (newElement.containerId) {\n              container = selectedElements.find(element => (0,_element__WEBPACK_IMPORTED_MODULE_0__.isTextElement)(newElement) && element.id === newElement.containerId) || null;\n            }\n\n            (0,_element__WEBPACK_IMPORTED_MODULE_0__.redrawTextBoundingBox)(newElement, container);\n          }\n\n          if (newElement.type === "arrow" && (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_7__.isArrowElement)(elementStylesToCopyFrom)) {\n            newElement = (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_4__.newElementWith)(newElement, {\n              startArrowhead: elementStylesToCopyFrom.startArrowhead,\n              endArrowhead: elementStylesToCopyFrom.endArrowhead\n            });\n          }\n\n          if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_7__.isFrameElement)(element)) {\n            newElement = (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_4__.newElementWith)(newElement, {\n              roundness: null,\n              backgroundColor: "transparent"\n            });\n          }\n\n          return newElement;\n        }\n\n        return element;\n      }),\n      commitToHistory: true\n    };\n  },\n  contextItemLabel: "labels.pasteStyles",\n  keyTest: event => event[_keys__WEBPACK_IMPORTED_MODULE_1__.KEYS.CTRL_OR_CMD] && event.altKey && event.code === _keys__WEBPACK_IMPORTED_MODULE_1__.CODES.V\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 9128 characters]\n//# sourceURL=webpack-internal:///../../actions/actionStyles.ts\n');
              }
            ),
            /***/
            "../../actions/actionToggleGridMode.tsx": (
              /*!**********************************************!*\
                !*** ../../actions/actionToggleGridMode.tsx ***!
                \**********************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "actionToggleGridMode": () => (/* binding */ actionToggleGridMode)\n/* harmony export */ });\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./register */ "../../actions/register.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n\n\n\nconst actionToggleGridMode = (0,_register__WEBPACK_IMPORTED_MODULE_1__.register)({\n  name: "gridMode",\n  viewMode: true,\n  trackEvent: {\n    category: "canvas",\n    predicate: appState => !appState.gridSize\n  },\n\n  perform(elements, appState) {\n    return {\n      appState: Object.assign(Object.assign({}, appState), {\n        gridSize: this.checked(appState) ? null : _constants__WEBPACK_IMPORTED_MODULE_2__.GRID_SIZE,\n        objectsSnapModeEnabled: false\n      }),\n      commitToHistory: false\n    };\n  },\n\n  checked: appState => appState.gridSize !== null,\n  predicate: (element, appState, props) => {\n    return typeof props.gridModeEnabled === "undefined";\n  },\n  contextItemLabel: "labels.showGrid",\n  keyTest: event => event[_keys__WEBPACK_IMPORTED_MODULE_0__.KEYS.CTRL_OR_CMD] && event.code === _keys__WEBPACK_IMPORTED_MODULE_0__.CODES.QUOTE\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vYWN0aW9ucy9hY3Rpb25Ub2dnbGVHcmlkTW9kZS50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFzQztBQUNBO0FBQ0c7QUFDbEMsNkJBQTZCLG1EQUFRO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSw4Q0FBOEM7QUFDOUMsa0RBQWtELGlEQUFTO0FBQzNEO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLDBCQUEwQixtREFBZ0Isb0JBQW9CLDhDQUFXO0FBQ3pFLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vYWN0aW9ucy9hY3Rpb25Ub2dnbGVHcmlkTW9kZS50c3g/YjBlNCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDT0RFUywgS0VZUyB9IGZyb20gXCIuLi9rZXlzXCI7XG5pbXBvcnQgeyByZWdpc3RlciB9IGZyb20gXCIuL3JlZ2lzdGVyXCI7XG5pbXBvcnQgeyBHUklEX1NJWkUgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5leHBvcnQgY29uc3QgYWN0aW9uVG9nZ2xlR3JpZE1vZGUgPSByZWdpc3Rlcih7XG4gIG5hbWU6IFwiZ3JpZE1vZGVcIixcbiAgdmlld01vZGU6IHRydWUsXG4gIHRyYWNrRXZlbnQ6IHtcbiAgICBjYXRlZ29yeTogXCJjYW52YXNcIixcbiAgICBwcmVkaWNhdGU6IGFwcFN0YXRlID0+ICFhcHBTdGF0ZS5ncmlkU2l6ZVxuICB9LFxuXG4gIHBlcmZvcm0oZWxlbWVudHMsIGFwcFN0YXRlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFwcFN0YXRlOiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGFwcFN0YXRlKSwge1xuICAgICAgICBncmlkU2l6ZTogdGhpcy5jaGVja2VkKGFwcFN0YXRlKSA/IG51bGwgOiBHUklEX1NJWkUsXG4gICAgICAgIG9iamVjdHNTbmFwTW9kZUVuYWJsZWQ6IGZhbHNlXG4gICAgICB9KSxcbiAgICAgIGNvbW1pdFRvSGlzdG9yeTogZmFsc2VcbiAgICB9O1xuICB9LFxuXG4gIGNoZWNrZWQ6IGFwcFN0YXRlID0+IGFwcFN0YXRlLmdyaWRTaXplICE9PSBudWxsLFxuICBwcmVkaWNhdGU6IChlbGVtZW50LCBhcHBTdGF0ZSwgcHJvcHMpID0+IHtcbiAgICByZXR1cm4gdHlwZW9mIHByb3BzLmdyaWRNb2RlRW5hYmxlZCA9PT0gXCJ1bmRlZmluZWRcIjtcbiAgfSxcbiAgY29udGV4dEl0ZW1MYWJlbDogXCJsYWJlbHMuc2hvd0dyaWRcIixcbiAga2V5VGVzdDogZXZlbnQgPT4gZXZlbnRbS0VZUy5DVFJMX09SX0NNRF0gJiYgZXZlbnQuY29kZSA9PT0gQ09ERVMuUVVPVEVcbn0pOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../actions/actionToggleGridMode.tsx\n');
              }
            ),
            /***/
            "../../actions/actionToggleObjectsSnapMode.tsx": (
              /*!*****************************************************!*\
                !*** ../../actions/actionToggleObjectsSnapMode.tsx ***!
                \*****************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "actionToggleObjectsSnapMode": () => (/* binding */ actionToggleObjectsSnapMode)\n/* harmony export */ });\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./register */ "../../actions/register.ts");\n\n\nconst actionToggleObjectsSnapMode = (0,_register__WEBPACK_IMPORTED_MODULE_1__.register)({\n  name: "objectsSnapMode",\n  viewMode: true,\n  trackEvent: {\n    category: "canvas",\n    predicate: appState => !appState.objectsSnapModeEnabled\n  },\n\n  perform(elements, appState) {\n    return {\n      appState: Object.assign(Object.assign({}, appState), {\n        objectsSnapModeEnabled: !this.checked(appState),\n        gridSize: null\n      }),\n      commitToHistory: false\n    };\n  },\n\n  checked: appState => appState.objectsSnapModeEnabled,\n  predicate: (elements, appState, appProps) => {\n    return typeof appProps.objectsSnapModeEnabled === "undefined";\n  },\n  contextItemLabel: "buttons.objectsSnapMode",\n  keyTest: event => !event[_keys__WEBPACK_IMPORTED_MODULE_0__.KEYS.CTRL_OR_CMD] && event.altKey && event.code === _keys__WEBPACK_IMPORTED_MODULE_0__.CODES.S\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vYWN0aW9ucy9hY3Rpb25Ub2dnbGVPYmplY3RzU25hcE1vZGUudHN4LmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUFzQztBQUNBO0FBQy9CLG9DQUFvQyxtREFBUTtBQUNuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsOENBQThDO0FBQzlDO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsMkJBQTJCLG1EQUFnQixvQ0FBb0MsMENBQU87QUFDdEYsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9hY3Rpb25zL2FjdGlvblRvZ2dsZU9iamVjdHNTbmFwTW9kZS50c3g/MmQ5ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDT0RFUywgS0VZUyB9IGZyb20gXCIuLi9rZXlzXCI7XG5pbXBvcnQgeyByZWdpc3RlciB9IGZyb20gXCIuL3JlZ2lzdGVyXCI7XG5leHBvcnQgY29uc3QgYWN0aW9uVG9nZ2xlT2JqZWN0c1NuYXBNb2RlID0gcmVnaXN0ZXIoe1xuICBuYW1lOiBcIm9iamVjdHNTbmFwTW9kZVwiLFxuICB2aWV3TW9kZTogdHJ1ZSxcbiAgdHJhY2tFdmVudDoge1xuICAgIGNhdGVnb3J5OiBcImNhbnZhc1wiLFxuICAgIHByZWRpY2F0ZTogYXBwU3RhdGUgPT4gIWFwcFN0YXRlLm9iamVjdHNTbmFwTW9kZUVuYWJsZWRcbiAgfSxcblxuICBwZXJmb3JtKGVsZW1lbnRzLCBhcHBTdGF0ZSkge1xuICAgIHJldHVybiB7XG4gICAgICBhcHBTdGF0ZTogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBhcHBTdGF0ZSksIHtcbiAgICAgICAgb2JqZWN0c1NuYXBNb2RlRW5hYmxlZDogIXRoaXMuY2hlY2tlZChhcHBTdGF0ZSksXG4gICAgICAgIGdyaWRTaXplOiBudWxsXG4gICAgICB9KSxcbiAgICAgIGNvbW1pdFRvSGlzdG9yeTogZmFsc2VcbiAgICB9O1xuICB9LFxuXG4gIGNoZWNrZWQ6IGFwcFN0YXRlID0+IGFwcFN0YXRlLm9iamVjdHNTbmFwTW9kZUVuYWJsZWQsXG4gIHByZWRpY2F0ZTogKGVsZW1lbnRzLCBhcHBTdGF0ZSwgYXBwUHJvcHMpID0+IHtcbiAgICByZXR1cm4gdHlwZW9mIGFwcFByb3BzLm9iamVjdHNTbmFwTW9kZUVuYWJsZWQgPT09IFwidW5kZWZpbmVkXCI7XG4gIH0sXG4gIGNvbnRleHRJdGVtTGFiZWw6IFwiYnV0dG9ucy5vYmplY3RzU25hcE1vZGVcIixcbiAga2V5VGVzdDogZXZlbnQgPT4gIWV2ZW50W0tFWVMuQ1RSTF9PUl9DTURdICYmIGV2ZW50LmFsdEtleSAmJiBldmVudC5jb2RlID09PSBDT0RFUy5TXG59KTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../actions/actionToggleObjectsSnapMode.tsx\n');
              }
            ),
            /***/
            "../../actions/actionToggleStats.tsx": (
              /*!*******************************************!*\
                !*** ../../actions/actionToggleStats.tsx ***!
                \*******************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "actionToggleStats": () => (/* binding */ actionToggleStats)\n/* harmony export */ });\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./register */ "../../actions/register.ts");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n\n\nconst actionToggleStats = (0,_register__WEBPACK_IMPORTED_MODULE_0__.register)({\n  name: "stats",\n  viewMode: true,\n  trackEvent: {\n    category: "menu"\n  },\n\n  perform(elements, appState) {\n    return {\n      appState: Object.assign(Object.assign({}, appState), {\n        showStats: !this.checked(appState)\n      }),\n      commitToHistory: false\n    };\n  },\n\n  checked: appState => appState.showStats,\n  contextItemLabel: "stats.title",\n  keyTest: event => !event[_keys__WEBPACK_IMPORTED_MODULE_1__.KEYS.CTRL_OR_CMD] && event.altKey && event.code === _keys__WEBPACK_IMPORTED_MODULE_1__.CODES.SLASH\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vYWN0aW9ucy9hY3Rpb25Ub2dnbGVTdGF0cy50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQXNDO0FBQ0E7QUFDL0IsMEJBQTBCLG1EQUFRO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsOENBQThDO0FBQzlDO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSwyQkFBMkIsbURBQWdCLG9DQUFvQyw4Q0FBVztBQUMxRixDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2FjdGlvbnMvYWN0aW9uVG9nZ2xlU3RhdHMudHN4PzBlNTIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVnaXN0ZXIgfSBmcm9tIFwiLi9yZWdpc3RlclwiO1xuaW1wb3J0IHsgQ09ERVMsIEtFWVMgfSBmcm9tIFwiLi4va2V5c1wiO1xuZXhwb3J0IGNvbnN0IGFjdGlvblRvZ2dsZVN0YXRzID0gcmVnaXN0ZXIoe1xuICBuYW1lOiBcInN0YXRzXCIsXG4gIHZpZXdNb2RlOiB0cnVlLFxuICB0cmFja0V2ZW50OiB7XG4gICAgY2F0ZWdvcnk6IFwibWVudVwiXG4gIH0sXG5cbiAgcGVyZm9ybShlbGVtZW50cywgYXBwU3RhdGUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYXBwU3RhdGU6IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgYXBwU3RhdGUpLCB7XG4gICAgICAgIHNob3dTdGF0czogIXRoaXMuY2hlY2tlZChhcHBTdGF0ZSlcbiAgICAgIH0pLFxuICAgICAgY29tbWl0VG9IaXN0b3J5OiBmYWxzZVxuICAgIH07XG4gIH0sXG5cbiAgY2hlY2tlZDogYXBwU3RhdGUgPT4gYXBwU3RhdGUuc2hvd1N0YXRzLFxuICBjb250ZXh0SXRlbUxhYmVsOiBcInN0YXRzLnRpdGxlXCIsXG4gIGtleVRlc3Q6IGV2ZW50ID0+ICFldmVudFtLRVlTLkNUUkxfT1JfQ01EXSAmJiBldmVudC5hbHRLZXkgJiYgZXZlbnQuY29kZSA9PT0gQ09ERVMuU0xBU0hcbn0pOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../actions/actionToggleStats.tsx\n');
              }
            ),
            /***/
            "../../actions/actionToggleViewMode.tsx": (
              /*!**********************************************!*\
                !*** ../../actions/actionToggleViewMode.tsx ***!
                \**********************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "actionToggleViewMode": () => (/* binding */ actionToggleViewMode)\n/* harmony export */ });\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./register */ "../../actions/register.ts");\n\n\nconst actionToggleViewMode = (0,_register__WEBPACK_IMPORTED_MODULE_1__.register)({\n  name: "viewMode",\n  viewMode: true,\n  trackEvent: {\n    category: "canvas",\n    predicate: appState => !appState.viewModeEnabled\n  },\n\n  perform(elements, appState) {\n    return {\n      appState: Object.assign(Object.assign({}, appState), {\n        viewModeEnabled: !this.checked(appState)\n      }),\n      commitToHistory: false\n    };\n  },\n\n  checked: appState => appState.viewModeEnabled,\n  predicate: (elements, appState, appProps) => {\n    return typeof appProps.viewModeEnabled === "undefined";\n  },\n  contextItemLabel: "labels.viewMode",\n  keyTest: event => !event[_keys__WEBPACK_IMPORTED_MODULE_0__.KEYS.CTRL_OR_CMD] && event.altKey && event.code === _keys__WEBPACK_IMPORTED_MODULE_0__.CODES.R\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vYWN0aW9ucy9hY3Rpb25Ub2dnbGVWaWV3TW9kZS50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQXNDO0FBQ0E7QUFDL0IsNkJBQTZCLG1EQUFRO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSw4Q0FBOEM7QUFDOUM7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsMkJBQTJCLG1EQUFnQixvQ0FBb0MsMENBQU87QUFDdEYsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9hY3Rpb25zL2FjdGlvblRvZ2dsZVZpZXdNb2RlLnRzeD9iZWNiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENPREVTLCBLRVlTIH0gZnJvbSBcIi4uL2tleXNcIjtcbmltcG9ydCB7IHJlZ2lzdGVyIH0gZnJvbSBcIi4vcmVnaXN0ZXJcIjtcbmV4cG9ydCBjb25zdCBhY3Rpb25Ub2dnbGVWaWV3TW9kZSA9IHJlZ2lzdGVyKHtcbiAgbmFtZTogXCJ2aWV3TW9kZVwiLFxuICB2aWV3TW9kZTogdHJ1ZSxcbiAgdHJhY2tFdmVudDoge1xuICAgIGNhdGVnb3J5OiBcImNhbnZhc1wiLFxuICAgIHByZWRpY2F0ZTogYXBwU3RhdGUgPT4gIWFwcFN0YXRlLnZpZXdNb2RlRW5hYmxlZFxuICB9LFxuXG4gIHBlcmZvcm0oZWxlbWVudHMsIGFwcFN0YXRlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFwcFN0YXRlOiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGFwcFN0YXRlKSwge1xuICAgICAgICB2aWV3TW9kZUVuYWJsZWQ6ICF0aGlzLmNoZWNrZWQoYXBwU3RhdGUpXG4gICAgICB9KSxcbiAgICAgIGNvbW1pdFRvSGlzdG9yeTogZmFsc2VcbiAgICB9O1xuICB9LFxuXG4gIGNoZWNrZWQ6IGFwcFN0YXRlID0+IGFwcFN0YXRlLnZpZXdNb2RlRW5hYmxlZCxcbiAgcHJlZGljYXRlOiAoZWxlbWVudHMsIGFwcFN0YXRlLCBhcHBQcm9wcykgPT4ge1xuICAgIHJldHVybiB0eXBlb2YgYXBwUHJvcHMudmlld01vZGVFbmFibGVkID09PSBcInVuZGVmaW5lZFwiO1xuICB9LFxuICBjb250ZXh0SXRlbUxhYmVsOiBcImxhYmVscy52aWV3TW9kZVwiLFxuICBrZXlUZXN0OiBldmVudCA9PiAhZXZlbnRbS0VZUy5DVFJMX09SX0NNRF0gJiYgZXZlbnQuYWx0S2V5ICYmIGV2ZW50LmNvZGUgPT09IENPREVTLlJcbn0pOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../actions/actionToggleViewMode.tsx\n');
              }
            ),
            /***/
            "../../actions/actionToggleZenMode.tsx": (
              /*!*********************************************!*\
                !*** ../../actions/actionToggleZenMode.tsx ***!
                \*********************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "actionToggleZenMode": () => (/* binding */ actionToggleZenMode)\n/* harmony export */ });\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./register */ "../../actions/register.ts");\n\n\nconst actionToggleZenMode = (0,_register__WEBPACK_IMPORTED_MODULE_1__.register)({\n  name: "zenMode",\n  viewMode: true,\n  trackEvent: {\n    category: "canvas",\n    predicate: appState => !appState.zenModeEnabled\n  },\n\n  perform(elements, appState) {\n    return {\n      appState: Object.assign(Object.assign({}, appState), {\n        zenModeEnabled: !this.checked(appState)\n      }),\n      commitToHistory: false\n    };\n  },\n\n  checked: appState => appState.zenModeEnabled,\n  predicate: (elements, appState, appProps) => {\n    return typeof appProps.zenModeEnabled === "undefined";\n  },\n  contextItemLabel: "buttons.zenMode",\n  keyTest: event => !event[_keys__WEBPACK_IMPORTED_MODULE_0__.KEYS.CTRL_OR_CMD] && event.altKey && event.code === _keys__WEBPACK_IMPORTED_MODULE_0__.CODES.Z\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vYWN0aW9ucy9hY3Rpb25Ub2dnbGVaZW5Nb2RlLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBc0M7QUFDQTtBQUMvQiw0QkFBNEIsbURBQVE7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLDhDQUE4QztBQUM5QztBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSwyQkFBMkIsbURBQWdCLG9DQUFvQywwQ0FBTztBQUN0RixDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2FjdGlvbnMvYWN0aW9uVG9nZ2xlWmVuTW9kZS50c3g/MDg2MyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDT0RFUywgS0VZUyB9IGZyb20gXCIuLi9rZXlzXCI7XG5pbXBvcnQgeyByZWdpc3RlciB9IGZyb20gXCIuL3JlZ2lzdGVyXCI7XG5leHBvcnQgY29uc3QgYWN0aW9uVG9nZ2xlWmVuTW9kZSA9IHJlZ2lzdGVyKHtcbiAgbmFtZTogXCJ6ZW5Nb2RlXCIsXG4gIHZpZXdNb2RlOiB0cnVlLFxuICB0cmFja0V2ZW50OiB7XG4gICAgY2F0ZWdvcnk6IFwiY2FudmFzXCIsXG4gICAgcHJlZGljYXRlOiBhcHBTdGF0ZSA9PiAhYXBwU3RhdGUuemVuTW9kZUVuYWJsZWRcbiAgfSxcblxuICBwZXJmb3JtKGVsZW1lbnRzLCBhcHBTdGF0ZSkge1xuICAgIHJldHVybiB7XG4gICAgICBhcHBTdGF0ZTogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBhcHBTdGF0ZSksIHtcbiAgICAgICAgemVuTW9kZUVuYWJsZWQ6ICF0aGlzLmNoZWNrZWQoYXBwU3RhdGUpXG4gICAgICB9KSxcbiAgICAgIGNvbW1pdFRvSGlzdG9yeTogZmFsc2VcbiAgICB9O1xuICB9LFxuXG4gIGNoZWNrZWQ6IGFwcFN0YXRlID0+IGFwcFN0YXRlLnplbk1vZGVFbmFibGVkLFxuICBwcmVkaWNhdGU6IChlbGVtZW50cywgYXBwU3RhdGUsIGFwcFByb3BzKSA9PiB7XG4gICAgcmV0dXJuIHR5cGVvZiBhcHBQcm9wcy56ZW5Nb2RlRW5hYmxlZCA9PT0gXCJ1bmRlZmluZWRcIjtcbiAgfSxcbiAgY29udGV4dEl0ZW1MYWJlbDogXCJidXR0b25zLnplbk1vZGVcIixcbiAga2V5VGVzdDogZXZlbnQgPT4gIWV2ZW50W0tFWVMuQ1RSTF9PUl9DTURdICYmIGV2ZW50LmFsdEtleSAmJiBldmVudC5jb2RlID09PSBDT0RFUy5aXG59KTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../actions/actionToggleZenMode.tsx\n');
              }
            ),
            /***/
            "../../actions/actionZindex.tsx": (
              /*!**************************************!*\
                !*** ../../actions/actionZindex.tsx ***!
                \**************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "actionBringForward": () => (/* binding */ actionBringForward),\n/* harmony export */   "actionBringToFront": () => (/* binding */ actionBringToFront),\n/* harmony export */   "actionSendBackward": () => (/* binding */ actionSendBackward),\n/* harmony export */   "actionSendToBack": () => (/* binding */ actionSendToBack)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _zindex__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../zindex */ "../../zindex.ts");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _register__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./register */ "../../actions/register.ts");\n/* harmony import */ var _components_icons__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../components/icons */ "../../components/icons.tsx");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n\n\n\n\n\n\n\n\n\nconst actionSendBackward = (0,_register__WEBPACK_IMPORTED_MODULE_6__.register)({\n  name: "sendBackward",\n  trackEvent: {\n    category: "element"\n  },\n  perform: (elements, appState) => {\n    return {\n      elements: (0,_zindex__WEBPACK_IMPORTED_MODULE_2__.moveOneLeft)(elements, appState),\n      appState,\n      commitToHistory: true\n    };\n  },\n  contextItemLabel: "labels.sendBackward",\n  keyPriority: 40,\n  keyTest: event => event[_keys__WEBPACK_IMPORTED_MODULE_3__.KEYS.CTRL_OR_CMD] && !event.shiftKey && event.code === _keys__WEBPACK_IMPORTED_MODULE_3__.CODES.BRACKET_LEFT,\n  PanelComponent: ({\n    updateData,\n    appState\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("button", Object.assign({\n    type: "button",\n    className: "zIndexButton",\n    onClick: () => updateData(null),\n    title: `${(0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("labels.sendBackward")} \u2014 ${(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+[")}`\n  }, {\n    children: _components_icons__WEBPACK_IMPORTED_MODULE_7__.SendBackwardIcon\n  }))\n});\nconst actionBringForward = (0,_register__WEBPACK_IMPORTED_MODULE_6__.register)({\n  name: "bringForward",\n  trackEvent: {\n    category: "element"\n  },\n  perform: (elements, appState) => {\n    return {\n      elements: (0,_zindex__WEBPACK_IMPORTED_MODULE_2__.moveOneRight)(elements, appState),\n      appState,\n      commitToHistory: true\n    };\n  },\n  contextItemLabel: "labels.bringForward",\n  keyPriority: 40,\n  keyTest: event => event[_keys__WEBPACK_IMPORTED_MODULE_3__.KEYS.CTRL_OR_CMD] && !event.shiftKey && event.code === _keys__WEBPACK_IMPORTED_MODULE_3__.CODES.BRACKET_RIGHT,\n  PanelComponent: ({\n    updateData,\n    appState\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("button", Object.assign({\n    type: "button",\n    className: "zIndexButton",\n    onClick: () => updateData(null),\n    title: `${(0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("labels.bringForward")} \u2014 ${(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+]")}`\n  }, {\n    children: _components_icons__WEBPACK_IMPORTED_MODULE_7__.BringForwardIcon\n  }))\n});\nconst actionSendToBack = (0,_register__WEBPACK_IMPORTED_MODULE_6__.register)({\n  name: "sendToBack",\n  trackEvent: {\n    category: "element"\n  },\n  perform: (elements, appState) => {\n    return {\n      elements: (0,_zindex__WEBPACK_IMPORTED_MODULE_2__.moveAllLeft)(elements, appState),\n      appState,\n      commitToHistory: true\n    };\n  },\n  contextItemLabel: "labels.sendToBack",\n  keyTest: event => _constants__WEBPACK_IMPORTED_MODULE_8__.isDarwin ? event[_keys__WEBPACK_IMPORTED_MODULE_3__.KEYS.CTRL_OR_CMD] && event.altKey && event.code === _keys__WEBPACK_IMPORTED_MODULE_3__.CODES.BRACKET_LEFT : event[_keys__WEBPACK_IMPORTED_MODULE_3__.KEYS.CTRL_OR_CMD] && event.shiftKey && event.code === _keys__WEBPACK_IMPORTED_MODULE_3__.CODES.BRACKET_LEFT,\n  PanelComponent: ({\n    updateData,\n    appState\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("button", Object.assign({\n    type: "button",\n    className: "zIndexButton",\n    onClick: () => updateData(null),\n    title: `${(0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("labels.sendToBack")} \u2014 ${_constants__WEBPACK_IMPORTED_MODULE_8__.isDarwin ? (0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+Alt+[") : (0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+Shift+[")}`\n  }, {\n    children: _components_icons__WEBPACK_IMPORTED_MODULE_7__.SendToBackIcon\n  }))\n});\nconst actionBringToFront = (0,_register__WEBPACK_IMPORTED_MODULE_6__.register)({\n  name: "bringToFront",\n  trackEvent: {\n    category: "element"\n  },\n  perform: (elements, appState) => {\n    return {\n      elements: (0,_zindex__WEBPACK_IMPORTED_MODULE_2__.moveAllRight)(elements, appState),\n      appState,\n      commitToHistory: true\n    };\n  },\n  contextItemLabel: "labels.bringToFront",\n  keyTest: event => _constants__WEBPACK_IMPORTED_MODULE_8__.isDarwin ? event[_keys__WEBPACK_IMPORTED_MODULE_3__.KEYS.CTRL_OR_CMD] && event.altKey && event.code === _keys__WEBPACK_IMPORTED_MODULE_3__.CODES.BRACKET_RIGHT : event[_keys__WEBPACK_IMPORTED_MODULE_3__.KEYS.CTRL_OR_CMD] && event.shiftKey && event.code === _keys__WEBPACK_IMPORTED_MODULE_3__.CODES.BRACKET_RIGHT,\n  PanelComponent: ({\n    updateData,\n    appState\n  }) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("button", Object.assign({\n    type: "button",\n    className: "zIndexButton",\n    onClick: event => updateData(null),\n    title: `${(0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("labels.bringToFront")} \u2014 ${_constants__WEBPACK_IMPORTED_MODULE_8__.isDarwin ? (0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+Alt+]") : (0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+Shift+]")}`\n  }, {\n    children: _components_icons__WEBPACK_IMPORTED_MODULE_7__.BringToFrontIcon\n  }))\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 7108 characters]\n//# sourceURL=webpack-internal:///../../actions/actionZindex.tsx\n');
              }
            ),
            /***/
            "../../actions/index.ts": (
              /*!******************************!*\
                !*** ../../actions/index.ts ***!
                \******************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "actionAddToLibrary": () => (/* reexport safe */ _actionAddToLibrary__WEBPACK_IMPORTED_MODULE_12__.actionAddToLibrary),\n/* harmony export */   "actionAlignBottom": () => (/* reexport safe */ _actionAlign__WEBPACK_IMPORTED_MODULE_13__.actionAlignBottom),\n/* harmony export */   "actionAlignHorizontallyCentered": () => (/* reexport safe */ _actionAlign__WEBPACK_IMPORTED_MODULE_13__.actionAlignHorizontallyCentered),\n/* harmony export */   "actionAlignLeft": () => (/* reexport safe */ _actionAlign__WEBPACK_IMPORTED_MODULE_13__.actionAlignLeft),\n/* harmony export */   "actionAlignRight": () => (/* reexport safe */ _actionAlign__WEBPACK_IMPORTED_MODULE_13__.actionAlignRight),\n/* harmony export */   "actionAlignTop": () => (/* reexport safe */ _actionAlign__WEBPACK_IMPORTED_MODULE_13__.actionAlignTop),\n/* harmony export */   "actionAlignVerticallyCentered": () => (/* reexport safe */ _actionAlign__WEBPACK_IMPORTED_MODULE_13__.actionAlignVerticallyCentered),\n/* harmony export */   "actionBindText": () => (/* reexport safe */ _actionBoundText__WEBPACK_IMPORTED_MODULE_21__.actionBindText),\n/* harmony export */   "actionBringForward": () => (/* reexport safe */ _actionZindex__WEBPACK_IMPORTED_MODULE_1__.actionBringForward),\n/* harmony export */   "actionBringToFront": () => (/* reexport safe */ _actionZindex__WEBPACK_IMPORTED_MODULE_1__.actionBringToFront),\n/* harmony export */   "actionChangeBackgroundColor": () => (/* reexport safe */ _actionProperties__WEBPACK_IMPORTED_MODULE_4__.actionChangeBackgroundColor),\n/* harmony export */   "actionChangeExportBackground": () => (/* reexport safe */ _actionExport__WEBPACK_IMPORTED_MODULE_7__.actionChangeExportBackground),\n/* harmony export */   "actionChangeFillStyle": () => (/* reexport safe */ _actionProperties__WEBPACK_IMPORTED_MODULE_4__.actionChangeFillStyle),\n/* harmony export */   "actionChangeFontFamily": () => (/* reexport safe */ _actionProperties__WEBPACK_IMPORTED_MODULE_4__.actionChangeFontFamily),\n/* harmony export */   "actionChangeFontSize": () => (/* reexport safe */ _actionProperties__WEBPACK_IMPORTED_MODULE_4__.actionChangeFontSize),\n/* harmony export */   "actionChangeOpacity": () => (/* reexport safe */ _actionProperties__WEBPACK_IMPORTED_MODULE_4__.actionChangeOpacity),\n/* harmony export */   "actionChangeProjectName": () => (/* reexport safe */ _actionExport__WEBPACK_IMPORTED_MODULE_7__.actionChangeProjectName),\n/* harmony export */   "actionChangeSloppiness": () => (/* reexport safe */ _actionProperties__WEBPACK_IMPORTED_MODULE_4__.actionChangeSloppiness),\n/* harmony export */   "actionChangeStrokeColor": () => (/* reexport safe */ _actionProperties__WEBPACK_IMPORTED_MODULE_4__.actionChangeStrokeColor),\n/* harmony export */   "actionChangeStrokeWidth": () => (/* reexport safe */ _actionProperties__WEBPACK_IMPORTED_MODULE_4__.actionChangeStrokeWidth),\n/* harmony export */   "actionChangeTextAlign": () => (/* reexport safe */ _actionProperties__WEBPACK_IMPORTED_MODULE_4__.actionChangeTextAlign),\n/* harmony export */   "actionChangeVerticalAlign": () => (/* reexport safe */ _actionProperties__WEBPACK_IMPORTED_MODULE_4__.actionChangeVerticalAlign),\n/* harmony export */   "actionChangeViewBackgroundColor": () => (/* reexport safe */ _actionCanvas__WEBPACK_IMPORTED_MODULE_5__.actionChangeViewBackgroundColor),\n/* harmony export */   "actionClearCanvas": () => (/* reexport safe */ _actionCanvas__WEBPACK_IMPORTED_MODULE_5__.actionClearCanvas),\n/* harmony export */   "actionCopy": () => (/* reexport safe */ _actionClipboard__WEBPACK_IMPORTED_MODULE_16__.actionCopy),\n/* harmony export */   "actionCopyAsPng": () => (/* reexport safe */ _actionClipboard__WEBPACK_IMPORTED_MODULE_16__.actionCopyAsPng),\n/* harmony export */   "actionCopyAsSvg": () => (/* reexport safe */ _actionClipboard__WEBPACK_IMPORTED_MODULE_16__.actionCopyAsSvg),\n/* harmony export */   "actionCopyStyles": () => (/* reexport safe */ _actionStyles__WEBPACK_IMPORTED_MODULE_8__.actionCopyStyles),\n/* harmony export */   "actionCut": () => (/* reexport safe */ _actionClipboard__WEBPACK_IMPORTED_MODULE_16__.actionCut),\n/* harmony export */   "actionDeleteSelected": () => (/* reexport safe */ _actionDeleteSelected__WEBPACK_IMPORTED_MODULE_0__.actionDeleteSelected),\n/* harmony export */   "actionDuplicateSelection": () => (/* reexport safe */ _actionDuplicateSelection__WEBPACK_IMPORTED_MODULE_3__.actionDuplicateSelection),\n/* harmony export */   "actionFinalize": () => (/* reexport safe */ _actionFinalize__WEBPACK_IMPORTED_MODULE_6__.actionFinalize),\n/* harmony export */   "actionFlipHorizontal": () => (/* reexport safe */ _actionFlip__WEBPACK_IMPORTED_MODULE_15__.actionFlipHorizontal),\n/* harmony export */   "actionFlipVertical": () => (/* reexport safe */ _actionFlip__WEBPACK_IMPORTED_MODULE_15__.actionFlipVertical),\n/* harmony export */   "actionGoToCollaborator": () => (/* reexport safe */ _actionNavigate__WEBPACK_IMPORTED_MODULE_11__.actionGoToCollaborator),\n/* harmony export */   "actionGroup": () => (/* reexport safe */ _actionGroup__WEBPACK_IMPORTED_MODULE_10__.actionGroup),\n/* harmony export */   "actionLink": () => (/* reexport safe */ _element_Hyperlink__WEBPACK_IMPORTED_MODULE_22__.actionLink),\n/* harmony export */   "actionLoadScene": () => (/* reexport safe */ _actionExport__WEBPACK_IMPORTED_MODULE_7__.actionLoadScene),\n/* harmony export */   "actionPasteStyles": () => (/* reexport safe */ _actionStyles__WEBPACK_IMPORTED_MODULE_8__.actionPasteStyles),\n/* harmony export */   "actionResetZoom": () => (/* reexport safe */ _actionCanvas__WEBPACK_IMPORTED_MODULE_5__.actionResetZoom),\n/* harmony export */   "actionSaveFileToDisk": () => (/* reexport safe */ _actionExport__WEBPACK_IMPORTED_MODULE_7__.actionSaveFileToDisk),\n/* harmony export */   "actionSaveToActiveFile": () => (/* reexport safe */ _actionExport__WEBPACK_IMPORTED_MODULE_7__.actionSaveToActiveFile),\n/* harmony export */   "actionSelectAll": () => (/* reexport safe */ _actionSelectAll__WEBPACK_IMPORTED_MODULE_2__.actionSelectAll),\n/* harmony export */   "actionSendBackward": () => (/* reexport safe */ _actionZindex__WEBPACK_IMPORTED_MODULE_1__.actionSendBackward),\n/* harmony export */   "actionSendToBack": () => (/* reexport safe */ _actionZindex__WEBPACK_IMPORTED_MODULE_1__.actionSendToBack),\n/* harmony export */   "actionShortcuts": () => (/* reexport safe */ _actionMenu__WEBPACK_IMPORTED_MODULE_9__.actionShortcuts),\n/* harmony export */   "actionToggleCanvasMenu": () => (/* reexport safe */ _actionMenu__WEBPACK_IMPORTED_MODULE_9__.actionToggleCanvasMenu),\n/* harmony export */   "actionToggleEditMenu": () => (/* reexport safe */ _actionMenu__WEBPACK_IMPORTED_MODULE_9__.actionToggleEditMenu),\n/* harmony export */   "actionToggleElementLock": () => (/* reexport safe */ _actionElementLock__WEBPACK_IMPORTED_MODULE_23__.actionToggleElementLock),\n/* harmony export */   "actionToggleGridMode": () => (/* reexport safe */ _actionToggleGridMode__WEBPACK_IMPORTED_MODULE_17__.actionToggleGridMode),\n/* harmony export */   "actionToggleLinearEditor": () => (/* reexport safe */ _actionLinearEditor__WEBPACK_IMPORTED_MODULE_24__.actionToggleLinearEditor),\n/* harmony export */   "actionToggleObjectsSnapMode": () => (/* reexport safe */ _actionToggleObjectsSnapMode__WEBPACK_IMPORTED_MODULE_19__.actionToggleObjectsSnapMode),\n/* harmony export */   "actionToggleStats": () => (/* reexport safe */ _actionToggleStats__WEBPACK_IMPORTED_MODULE_20__.actionToggleStats),\n/* harmony export */   "actionToggleTheme": () => (/* reexport safe */ _actionCanvas__WEBPACK_IMPORTED_MODULE_5__.actionToggleTheme),\n/* harmony export */   "actionToggleZenMode": () => (/* reexport safe */ _actionToggleZenMode__WEBPACK_IMPORTED_MODULE_18__.actionToggleZenMode),\n/* harmony export */   "actionUnbindText": () => (/* reexport safe */ _actionBoundText__WEBPACK_IMPORTED_MODULE_21__.actionUnbindText),\n/* harmony export */   "actionUngroup": () => (/* reexport safe */ _actionGroup__WEBPACK_IMPORTED_MODULE_10__.actionUngroup),\n/* harmony export */   "actionZoomIn": () => (/* reexport safe */ _actionCanvas__WEBPACK_IMPORTED_MODULE_5__.actionZoomIn),\n/* harmony export */   "actionZoomOut": () => (/* reexport safe */ _actionCanvas__WEBPACK_IMPORTED_MODULE_5__.actionZoomOut),\n/* harmony export */   "actionZoomToFit": () => (/* reexport safe */ _actionCanvas__WEBPACK_IMPORTED_MODULE_5__.actionZoomToFit),\n/* harmony export */   "copyText": () => (/* reexport safe */ _actionClipboard__WEBPACK_IMPORTED_MODULE_16__.copyText),\n/* harmony export */   "distributeHorizontally": () => (/* reexport safe */ _actionDistribute__WEBPACK_IMPORTED_MODULE_14__.distributeHorizontally),\n/* harmony export */   "distributeVertically": () => (/* reexport safe */ _actionDistribute__WEBPACK_IMPORTED_MODULE_14__.distributeVertically)\n/* harmony export */ });\n/* harmony import */ var _actionDeleteSelected__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./actionDeleteSelected */ "../../actions/actionDeleteSelected.tsx");\n/* harmony import */ var _actionZindex__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./actionZindex */ "../../actions/actionZindex.tsx");\n/* harmony import */ var _actionSelectAll__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./actionSelectAll */ "../../actions/actionSelectAll.ts");\n/* harmony import */ var _actionDuplicateSelection__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./actionDuplicateSelection */ "../../actions/actionDuplicateSelection.tsx");\n/* harmony import */ var _actionProperties__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./actionProperties */ "../../actions/actionProperties.tsx");\n/* harmony import */ var _actionCanvas__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./actionCanvas */ "../../actions/actionCanvas.tsx");\n/* harmony import */ var _actionFinalize__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./actionFinalize */ "../../actions/actionFinalize.tsx");\n/* harmony import */ var _actionExport__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./actionExport */ "../../actions/actionExport.tsx");\n/* harmony import */ var _actionStyles__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./actionStyles */ "../../actions/actionStyles.ts");\n/* harmony import */ var _actionMenu__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./actionMenu */ "../../actions/actionMenu.tsx");\n/* harmony import */ var _actionGroup__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./actionGroup */ "../../actions/actionGroup.tsx");\n/* harmony import */ var _actionNavigate__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./actionNavigate */ "../../actions/actionNavigate.tsx");\n/* harmony import */ var _actionAddToLibrary__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./actionAddToLibrary */ "../../actions/actionAddToLibrary.ts");\n/* harmony import */ var _actionAlign__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./actionAlign */ "../../actions/actionAlign.tsx");\n/* harmony import */ var _actionDistribute__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./actionDistribute */ "../../actions/actionDistribute.tsx");\n/* harmony import */ var _actionFlip__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./actionFlip */ "../../actions/actionFlip.ts");\n/* harmony import */ var _actionClipboard__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./actionClipboard */ "../../actions/actionClipboard.tsx");\n/* harmony import */ var _actionToggleGridMode__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./actionToggleGridMode */ "../../actions/actionToggleGridMode.tsx");\n/* harmony import */ var _actionToggleZenMode__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./actionToggleZenMode */ "../../actions/actionToggleZenMode.tsx");\n/* harmony import */ var _actionToggleObjectsSnapMode__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./actionToggleObjectsSnapMode */ "../../actions/actionToggleObjectsSnapMode.tsx");\n/* harmony import */ var _actionToggleStats__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./actionToggleStats */ "../../actions/actionToggleStats.tsx");\n/* harmony import */ var _actionBoundText__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./actionBoundText */ "../../actions/actionBoundText.tsx");\n/* harmony import */ var _element_Hyperlink__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../element/Hyperlink */ "../../element/Hyperlink.tsx");\n/* harmony import */ var _actionElementLock__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./actionElementLock */ "../../actions/actionElementLock.ts");\n/* harmony import */ var _actionLinearEditor__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./actionLinearEditor */ "../../actions/actionLinearEditor.ts");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vYWN0aW9ucy9pbmRleC50cy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQThEO0FBQ2dEO0FBQzFEO0FBQ2tCO0FBQ2lOO0FBQ2pIO0FBQ3BIO0FBQ29HO0FBQ2pGO0FBQ3dCO0FBQ2xDO0FBQ0Q7QUFDQTtBQUMyRztBQUNuRjtBQUNWO0FBQzhCO0FBQ3hDO0FBQ0Y7QUFDZ0I7QUFDcEI7QUFDYTtBQUNuQjtBQUNZIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2FjdGlvbnMvaW5kZXgudHM/OWJlMyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBhY3Rpb25EZWxldGVTZWxlY3RlZCB9IGZyb20gXCIuL2FjdGlvbkRlbGV0ZVNlbGVjdGVkXCI7XG5leHBvcnQgeyBhY3Rpb25CcmluZ0ZvcndhcmQsIGFjdGlvbkJyaW5nVG9Gcm9udCwgYWN0aW9uU2VuZEJhY2t3YXJkLCBhY3Rpb25TZW5kVG9CYWNrIH0gZnJvbSBcIi4vYWN0aW9uWmluZGV4XCI7XG5leHBvcnQgeyBhY3Rpb25TZWxlY3RBbGwgfSBmcm9tIFwiLi9hY3Rpb25TZWxlY3RBbGxcIjtcbmV4cG9ydCB7IGFjdGlvbkR1cGxpY2F0ZVNlbGVjdGlvbiB9IGZyb20gXCIuL2FjdGlvbkR1cGxpY2F0ZVNlbGVjdGlvblwiO1xuZXhwb3J0IHsgYWN0aW9uQ2hhbmdlU3Ryb2tlQ29sb3IsIGFjdGlvbkNoYW5nZUJhY2tncm91bmRDb2xvciwgYWN0aW9uQ2hhbmdlU3Ryb2tlV2lkdGgsIGFjdGlvbkNoYW5nZUZpbGxTdHlsZSwgYWN0aW9uQ2hhbmdlU2xvcHBpbmVzcywgYWN0aW9uQ2hhbmdlT3BhY2l0eSwgYWN0aW9uQ2hhbmdlRm9udFNpemUsIGFjdGlvbkNoYW5nZUZvbnRGYW1pbHksIGFjdGlvbkNoYW5nZVRleHRBbGlnbiwgYWN0aW9uQ2hhbmdlVmVydGljYWxBbGlnbiB9IGZyb20gXCIuL2FjdGlvblByb3BlcnRpZXNcIjtcbmV4cG9ydCB7IGFjdGlvbkNoYW5nZVZpZXdCYWNrZ3JvdW5kQ29sb3IsIGFjdGlvbkNsZWFyQ2FudmFzLCBhY3Rpb25ab29tSW4sIGFjdGlvblpvb21PdXQsIGFjdGlvblJlc2V0Wm9vbSwgYWN0aW9uWm9vbVRvRml0LCBhY3Rpb25Ub2dnbGVUaGVtZSB9IGZyb20gXCIuL2FjdGlvbkNhbnZhc1wiO1xuZXhwb3J0IHsgYWN0aW9uRmluYWxpemUgfSBmcm9tIFwiLi9hY3Rpb25GaW5hbGl6ZVwiO1xuZXhwb3J0IHsgYWN0aW9uQ2hhbmdlUHJvamVjdE5hbWUsIGFjdGlvbkNoYW5nZUV4cG9ydEJhY2tncm91bmQsIGFjdGlvblNhdmVUb0FjdGl2ZUZpbGUsIGFjdGlvblNhdmVGaWxlVG9EaXNrLCBhY3Rpb25Mb2FkU2NlbmUgfSBmcm9tIFwiLi9hY3Rpb25FeHBvcnRcIjtcbmV4cG9ydCB7IGFjdGlvbkNvcHlTdHlsZXMsIGFjdGlvblBhc3RlU3R5bGVzIH0gZnJvbSBcIi4vYWN0aW9uU3R5bGVzXCI7XG5leHBvcnQgeyBhY3Rpb25Ub2dnbGVDYW52YXNNZW51LCBhY3Rpb25Ub2dnbGVFZGl0TWVudSwgYWN0aW9uU2hvcnRjdXRzIH0gZnJvbSBcIi4vYWN0aW9uTWVudVwiO1xuZXhwb3J0IHsgYWN0aW9uR3JvdXAsIGFjdGlvblVuZ3JvdXAgfSBmcm9tIFwiLi9hY3Rpb25Hcm91cFwiO1xuZXhwb3J0IHsgYWN0aW9uR29Ub0NvbGxhYm9yYXRvciB9IGZyb20gXCIuL2FjdGlvbk5hdmlnYXRlXCI7XG5leHBvcnQgeyBhY3Rpb25BZGRUb0xpYnJhcnkgfSBmcm9tIFwiLi9hY3Rpb25BZGRUb0xpYnJhcnlcIjtcbmV4cG9ydCB7IGFjdGlvbkFsaWduVG9wLCBhY3Rpb25BbGlnbkJvdHRvbSwgYWN0aW9uQWxpZ25MZWZ0LCBhY3Rpb25BbGlnblJpZ2h0LCBhY3Rpb25BbGlnblZlcnRpY2FsbHlDZW50ZXJlZCwgYWN0aW9uQWxpZ25Ib3Jpem9udGFsbHlDZW50ZXJlZCB9IGZyb20gXCIuL2FjdGlvbkFsaWduXCI7XG5leHBvcnQgeyBkaXN0cmlidXRlSG9yaXpvbnRhbGx5LCBkaXN0cmlidXRlVmVydGljYWxseSB9IGZyb20gXCIuL2FjdGlvbkRpc3RyaWJ1dGVcIjtcbmV4cG9ydCB7IGFjdGlvbkZsaXBIb3Jpem9udGFsLCBhY3Rpb25GbGlwVmVydGljYWwgfSBmcm9tIFwiLi9hY3Rpb25GbGlwXCI7XG5leHBvcnQgeyBhY3Rpb25Db3B5LCBhY3Rpb25DdXQsIGFjdGlvbkNvcHlBc1BuZywgYWN0aW9uQ29weUFzU3ZnLCBjb3B5VGV4dCB9IGZyb20gXCIuL2FjdGlvbkNsaXBib2FyZFwiO1xuZXhwb3J0IHsgYWN0aW9uVG9nZ2xlR3JpZE1vZGUgfSBmcm9tIFwiLi9hY3Rpb25Ub2dnbGVHcmlkTW9kZVwiO1xuZXhwb3J0IHsgYWN0aW9uVG9nZ2xlWmVuTW9kZSB9IGZyb20gXCIuL2FjdGlvblRvZ2dsZVplbk1vZGVcIjtcbmV4cG9ydCB7IGFjdGlvblRvZ2dsZU9iamVjdHNTbmFwTW9kZSB9IGZyb20gXCIuL2FjdGlvblRvZ2dsZU9iamVjdHNTbmFwTW9kZVwiO1xuZXhwb3J0IHsgYWN0aW9uVG9nZ2xlU3RhdHMgfSBmcm9tIFwiLi9hY3Rpb25Ub2dnbGVTdGF0c1wiO1xuZXhwb3J0IHsgYWN0aW9uVW5iaW5kVGV4dCwgYWN0aW9uQmluZFRleHQgfSBmcm9tIFwiLi9hY3Rpb25Cb3VuZFRleHRcIjtcbmV4cG9ydCB7IGFjdGlvbkxpbmsgfSBmcm9tIFwiLi4vZWxlbWVudC9IeXBlcmxpbmtcIjtcbmV4cG9ydCB7IGFjdGlvblRvZ2dsZUVsZW1lbnRMb2NrIH0gZnJvbSBcIi4vYWN0aW9uRWxlbWVudExvY2tcIjtcbmV4cG9ydCB7IGFjdGlvblRvZ2dsZUxpbmVhckVkaXRvciB9IGZyb20gXCIuL2FjdGlvbkxpbmVhckVkaXRvclwiOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../actions/index.ts\n');
              }
            ),
            /***/
            "../../actions/manager.tsx": (
              /*!*********************************!*\
                !*** ../../actions/manager.tsx ***!
                \*********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "ActionManager": () => (/* binding */ ActionManager)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _analytics__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../analytics */ "../../analytics.ts");\n\n\n\n\nconst trackAction = (action, source, appState, elements, app, value) => {\n  if (action.trackEvent) {\n    try {\n      if (typeof action.trackEvent === "object") {\n        const shouldTrack = action.trackEvent.predicate ? action.trackEvent.predicate(appState, elements, value) : true;\n\n        if (shouldTrack) {\n          (0,_analytics__WEBPACK_IMPORTED_MODULE_2__.trackEvent)(action.trackEvent.category, action.trackEvent.action || action.name, `${source} (${app.device.editor.isMobile ? "mobile" : "desktop"})`);\n        }\n      }\n    } catch (error) {\n      console.error("error while logging action:", error);\n    }\n  }\n};\n\nclass ActionManager {\n  constructor(updater, getAppState, getElementsIncludingDeleted, app) {\n    this.actions = {};\n    /**\n     * @param data additional data sent to the PanelComponent\n     */\n\n    this.renderAction = (name, data) => {\n      const canvasActions = this.app.props.UIOptions.canvasActions;\n\n      if (this.actions[name] && "PanelComponent" in this.actions[name] && (name in canvasActions ? canvasActions[name] : true)) {\n        const action = this.actions[name];\n        const PanelComponent = action.PanelComponent;\n        PanelComponent.displayName = "PanelComponent";\n        const elements = this.getElementsIncludingDeleted();\n        const appState = this.getAppState();\n\n        const updateData = formState => {\n          trackAction(action, "ui", appState, elements, this.app, formState);\n          this.updater(action.perform(this.getElementsIncludingDeleted(), this.getAppState(), formState, this.app));\n        };\n\n        return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(PanelComponent, {\n          elements: this.getElementsIncludingDeleted(),\n          appState: this.getAppState(),\n          updateData: updateData,\n          appProps: this.app.props,\n          app: this.app,\n          data: data\n        });\n      }\n\n      return null;\n    };\n\n    this.isActionEnabled = action => {\n      const elements = this.getElementsIncludingDeleted();\n      const appState = this.getAppState();\n      return !action.predicate || action.predicate(elements, appState, this.app.props, this.app);\n    };\n\n    this.updater = actionResult => {\n      if (actionResult && "then" in actionResult) {\n        actionResult.then(actionResult => {\n          return updater(actionResult);\n        });\n      } else {\n        return updater(actionResult);\n      }\n    };\n\n    this.getAppState = getAppState;\n    this.getElementsIncludingDeleted = getElementsIncludingDeleted;\n    this.app = app;\n  }\n\n  registerAction(action) {\n    this.actions[action.name] = action;\n  }\n\n  registerAll(actions) {\n    actions.forEach(action => this.registerAction(action));\n  }\n\n  handleKeyDown(event) {\n    const canvasActions = this.app.props.UIOptions.canvasActions;\n    const data = Object.values(this.actions).sort((a, b) => (b.keyPriority || 0) - (a.keyPriority || 0)).filter(action => (action.name in canvasActions ? canvasActions[action.name] : true) && action.keyTest && action.keyTest(event, this.getAppState(), this.getElementsIncludingDeleted(), this.app));\n\n    if (data.length !== 1) {\n      if (data.length > 1) {\n        console.warn("Canceling as multiple actions match this shortcut", data);\n      }\n\n      return false;\n    }\n\n    const action = data[0];\n\n    if (this.getAppState().viewModeEnabled && action.viewMode !== true) {\n      return false;\n    }\n\n    const elements = this.getElementsIncludingDeleted();\n    const appState = this.getAppState();\n    const value = null;\n    trackAction(action, "keyboard", appState, elements, this.app, null);\n    event.preventDefault();\n    event.stopPropagation();\n    this.updater(data[0].perform(elements, appState, value, this.app));\n    return true;\n  }\n\n  executeAction(action, source = "api", value = null) {\n    const elements = this.getElementsIncludingDeleted();\n    const appState = this.getAppState();\n    trackAction(action, source, appState, elements, this.app, value);\n    this.updater(action.perform(elements, appState, value, this.app));\n  }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6668 characters]\n//# sourceURL=webpack-internal:///../../actions/manager.tsx\n');
              }
            ),
            /***/
            "../../actions/register.ts": (
              /*!*********************************!*\
                !*** ../../actions/register.ts ***!
                \*********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "actions": () => (/* binding */ actions),\n/* harmony export */   "register": () => (/* binding */ register)\n/* harmony export */ });\nlet actions = [];\nconst register = action => {\n  actions = actions.concat(action);\n  return action;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vYWN0aW9ucy9yZWdpc3Rlci50cy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFPO0FBQ0E7QUFDUDtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vYWN0aW9ucy9yZWdpc3Rlci50cz83Y2FhIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBsZXQgYWN0aW9ucyA9IFtdO1xuZXhwb3J0IGNvbnN0IHJlZ2lzdGVyID0gYWN0aW9uID0+IHtcbiAgYWN0aW9ucyA9IGFjdGlvbnMuY29uY2F0KGFjdGlvbik7XG4gIHJldHVybiBhY3Rpb247XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../actions/register.ts\n');
              }
            ),
            /***/
            "../../actions/shortcuts.ts": (
              /*!**********************************!*\
                !*** ../../actions/shortcuts.ts ***!
                \**********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "getShortcutFromShortcutName": () => (/* binding */ getShortcutFromShortcutName)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n\n\n\nconst shortcutMap = {\n  toggleTheme: [(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("Shift+Alt+D")],\n  saveScene: [(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("CtrlOrCmd+S")],\n  loadScene: [(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("CtrlOrCmd+O")],\n  clearCanvas: [(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("CtrlOrCmd+Delete")],\n  imageExport: [(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("CtrlOrCmd+Shift+E")],\n  cut: [(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("CtrlOrCmd+X")],\n  copy: [(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("CtrlOrCmd+C")],\n  paste: [(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("CtrlOrCmd+V")],\n  copyStyles: [(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("CtrlOrCmd+Alt+C")],\n  pasteStyles: [(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("CtrlOrCmd+Alt+V")],\n  selectAll: [(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("CtrlOrCmd+A")],\n  deleteSelectedElements: [(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("Delete")],\n  duplicateSelection: [(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("CtrlOrCmd+D"), (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)(`Alt+${(0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("helpDialog.drag")}`)],\n  sendBackward: [(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("CtrlOrCmd+[")],\n  bringForward: [(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("CtrlOrCmd+]")],\n  sendToBack: [_constants__WEBPACK_IMPORTED_MODULE_0__.isDarwin ? (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("CtrlOrCmd+Alt+[") : (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("CtrlOrCmd+Shift+[")],\n  bringToFront: [_constants__WEBPACK_IMPORTED_MODULE_0__.isDarwin ? (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("CtrlOrCmd+Alt+]") : (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("CtrlOrCmd+Shift+]")],\n  copyAsPng: [(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("Shift+Alt+C")],\n  copyAsSvg: [],\n  group: [(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("CtrlOrCmd+G")],\n  ungroup: [(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("CtrlOrCmd+Shift+G")],\n  gridMode: [(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("CtrlOrCmd+\'")],\n  zenMode: [(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("Alt+Z")],\n  objectsSnapMode: [(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("Alt+S")],\n  stats: [(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("Alt+/")],\n  addToLibrary: [],\n  flipHorizontal: [(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("Shift+H")],\n  flipVertical: [(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("Shift+V")],\n  viewMode: [(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("Alt+R")],\n  hyperlink: [(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("CtrlOrCmd+K")],\n  toggleElementLock: [(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getShortcutKey)("CtrlOrCmd+Shift+L")]\n};\nconst getShortcutFromShortcutName = name => {\n  const shortcuts = shortcutMap[name]; // if multiple shortcuts available, take the first one\n\n  return shortcuts && shortcuts.length > 0 ? shortcuts[0] : "";\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vYWN0aW9ucy9zaG9ydGN1dHMudHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUF3QztBQUNaO0FBQ2M7QUFDMUM7QUFDQSxnQkFBZ0Isc0RBQWM7QUFDOUIsY0FBYyxzREFBYztBQUM1QixjQUFjLHNEQUFjO0FBQzVCLGdCQUFnQixzREFBYztBQUM5QixnQkFBZ0Isc0RBQWM7QUFDOUIsUUFBUSxzREFBYztBQUN0QixTQUFTLHNEQUFjO0FBQ3ZCLFVBQVUsc0RBQWM7QUFDeEIsZUFBZSxzREFBYztBQUM3QixnQkFBZ0Isc0RBQWM7QUFDOUIsY0FBYyxzREFBYztBQUM1QiwyQkFBMkIsc0RBQWM7QUFDekMsdUJBQXVCLHNEQUFjLGlCQUFpQixzREFBYyxRQUFRLHdDQUFDLG9CQUFvQjtBQUNqRyxpQkFBaUIsc0RBQWM7QUFDL0IsaUJBQWlCLHNEQUFjO0FBQy9CLGVBQWUsZ0RBQVEsR0FBRyxzREFBYyxzQkFBc0Isc0RBQWM7QUFDNUUsaUJBQWlCLGdEQUFRLEdBQUcsc0RBQWMsc0JBQXNCLHNEQUFjO0FBQzlFLGNBQWMsc0RBQWM7QUFDNUI7QUFDQSxVQUFVLHNEQUFjO0FBQ3hCLFlBQVksc0RBQWM7QUFDMUIsYUFBYSxzREFBYztBQUMzQixZQUFZLHNEQUFjO0FBQzFCLG9CQUFvQixzREFBYztBQUNsQyxVQUFVLHNEQUFjO0FBQ3hCO0FBQ0EsbUJBQW1CLHNEQUFjO0FBQ2pDLGlCQUFpQixzREFBYztBQUMvQixhQUFhLHNEQUFjO0FBQzNCLGNBQWMsc0RBQWM7QUFDNUIsc0JBQXNCLHNEQUFjO0FBQ3BDO0FBQ087QUFDUCx1Q0FBdUM7O0FBRXZDO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vYWN0aW9ucy9zaG9ydGN1dHMudHM/OTZhMiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0RhcndpbiB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IHQgfSBmcm9tIFwiLi4vaTE4blwiO1xuaW1wb3J0IHsgZ2V0U2hvcnRjdXRLZXkgfSBmcm9tIFwiLi4vdXRpbHNcIjtcbmNvbnN0IHNob3J0Y3V0TWFwID0ge1xuICB0b2dnbGVUaGVtZTogW2dldFNob3J0Y3V0S2V5KFwiU2hpZnQrQWx0K0RcIildLFxuICBzYXZlU2NlbmU6IFtnZXRTaG9ydGN1dEtleShcIkN0cmxPckNtZCtTXCIpXSxcbiAgbG9hZFNjZW5lOiBbZ2V0U2hvcnRjdXRLZXkoXCJDdHJsT3JDbWQrT1wiKV0sXG4gIGNsZWFyQ2FudmFzOiBbZ2V0U2hvcnRjdXRLZXkoXCJDdHJsT3JDbWQrRGVsZXRlXCIpXSxcbiAgaW1hZ2VFeHBvcnQ6IFtnZXRTaG9ydGN1dEtleShcIkN0cmxPckNtZCtTaGlmdCtFXCIpXSxcbiAgY3V0OiBbZ2V0U2hvcnRjdXRLZXkoXCJDdHJsT3JDbWQrWFwiKV0sXG4gIGNvcHk6IFtnZXRTaG9ydGN1dEtleShcIkN0cmxPckNtZCtDXCIpXSxcbiAgcGFzdGU6IFtnZXRTaG9ydGN1dEtleShcIkN0cmxPckNtZCtWXCIpXSxcbiAgY29weVN0eWxlczogW2dldFNob3J0Y3V0S2V5KFwiQ3RybE9yQ21kK0FsdCtDXCIpXSxcbiAgcGFzdGVTdHlsZXM6IFtnZXRTaG9ydGN1dEtleShcIkN0cmxPckNtZCtBbHQrVlwiKV0sXG4gIHNlbGVjdEFsbDogW2dldFNob3J0Y3V0S2V5KFwiQ3RybE9yQ21kK0FcIildLFxuICBkZWxldGVTZWxlY3RlZEVsZW1lbnRzOiBbZ2V0U2hvcnRjdXRLZXkoXCJEZWxldGVcIildLFxuICBkdXBsaWNhdGVTZWxlY3Rpb246IFtnZXRTaG9ydGN1dEtleShcIkN0cmxPckNtZCtEXCIpLCBnZXRTaG9ydGN1dEtleShgQWx0KyR7dChcImhlbHBEaWFsb2cuZHJhZ1wiKX1gKV0sXG4gIHNlbmRCYWNrd2FyZDogW2dldFNob3J0Y3V0S2V5KFwiQ3RybE9yQ21kK1tcIildLFxuICBicmluZ0ZvcndhcmQ6IFtnZXRTaG9ydGN1dEtleShcIkN0cmxPckNtZCtdXCIpXSxcbiAgc2VuZFRvQmFjazogW2lzRGFyd2luID8gZ2V0U2hvcnRjdXRLZXkoXCJDdHJsT3JDbWQrQWx0K1tcIikgOiBnZXRTaG9ydGN1dEtleShcIkN0cmxPckNtZCtTaGlmdCtbXCIpXSxcbiAgYnJpbmdUb0Zyb250OiBbaXNEYXJ3aW4gPyBnZXRTaG9ydGN1dEtleShcIkN0cmxPckNtZCtBbHQrXVwiKSA6IGdldFNob3J0Y3V0S2V5KFwiQ3RybE9yQ21kK1NoaWZ0K11cIildLFxuICBjb3B5QXNQbmc6IFtnZXRTaG9ydGN1dEtleShcIlNoaWZ0K0FsdCtDXCIpXSxcbiAgY29weUFzU3ZnOiBbXSxcbiAgZ3JvdXA6IFtnZXRTaG9ydGN1dEtleShcIkN0cmxPckNtZCtHXCIpXSxcbiAgdW5ncm91cDogW2dldFNob3J0Y3V0S2V5KFwiQ3RybE9yQ21kK1NoaWZ0K0dcIildLFxuICBncmlkTW9kZTogW2dldFNob3J0Y3V0S2V5KFwiQ3RybE9yQ21kKydcIildLFxuICB6ZW5Nb2RlOiBbZ2V0U2hvcnRjdXRLZXkoXCJBbHQrWlwiKV0sXG4gIG9iamVjdHNTbmFwTW9kZTogW2dldFNob3J0Y3V0S2V5KFwiQWx0K1NcIildLFxuICBzdGF0czogW2dldFNob3J0Y3V0S2V5KFwiQWx0Ky9cIildLFxuICBhZGRUb0xpYnJhcnk6IFtdLFxuICBmbGlwSG9yaXpvbnRhbDogW2dldFNob3J0Y3V0S2V5KFwiU2hpZnQrSFwiKV0sXG4gIGZsaXBWZXJ0aWNhbDogW2dldFNob3J0Y3V0S2V5KFwiU2hpZnQrVlwiKV0sXG4gIHZpZXdNb2RlOiBbZ2V0U2hvcnRjdXRLZXkoXCJBbHQrUlwiKV0sXG4gIGh5cGVybGluazogW2dldFNob3J0Y3V0S2V5KFwiQ3RybE9yQ21kK0tcIildLFxuICB0b2dnbGVFbGVtZW50TG9jazogW2dldFNob3J0Y3V0S2V5KFwiQ3RybE9yQ21kK1NoaWZ0K0xcIildXG59O1xuZXhwb3J0IGNvbnN0IGdldFNob3J0Y3V0RnJvbVNob3J0Y3V0TmFtZSA9IG5hbWUgPT4ge1xuICBjb25zdCBzaG9ydGN1dHMgPSBzaG9ydGN1dE1hcFtuYW1lXTsgLy8gaWYgbXVsdGlwbGUgc2hvcnRjdXRzIGF2YWlsYWJsZSwgdGFrZSB0aGUgZmlyc3Qgb25lXG5cbiAgcmV0dXJuIHNob3J0Y3V0cyAmJiBzaG9ydGN1dHMubGVuZ3RoID4gMCA/IHNob3J0Y3V0c1swXSA6IFwiXCI7XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../actions/shortcuts.ts\n');
              }
            ),
            /***/
            "../../align.ts": (
              /*!**********************!*\
                !*** ../../align.ts ***!
                \**********************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "alignElements": () => (/* binding */ alignElements)\n/* harmony export */ });\n/* harmony import */ var _element_mutateElement__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./element/mutateElement */ "../../element/mutateElement.ts");\n/* harmony import */ var _element_bounds__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./element/bounds */ "../../element/bounds.ts");\n/* harmony import */ var _groups__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./groups */ "../../groups.ts");\n\n\n\nconst alignElements = (selectedElements, alignment) => {\n  const groups = (0,_groups__WEBPACK_IMPORTED_MODULE_2__.getMaximumGroups)(selectedElements);\n  const selectionBoundingBox = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_1__.getCommonBoundingBox)(selectedElements);\n  return groups.flatMap(group => {\n    const translation = calculateTranslation(group, selectionBoundingBox, alignment);\n    return group.map(element => (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_0__.newElementWith)(element, {\n      x: element.x + translation.x,\n      y: element.y + translation.y\n    }));\n  });\n};\n\nconst calculateTranslation = (group, selectionBoundingBox, {\n  axis,\n  position\n}) => {\n  const groupBoundingBox = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_1__.getCommonBoundingBox)(group);\n  const [min, max] = axis === "x" ? ["minX", "maxX"] : ["minY", "maxY"];\n  const noTranslation = {\n    x: 0,\n    y: 0\n  };\n\n  if (position === "start") {\n    return Object.assign(Object.assign({}, noTranslation), {\n      [axis]: selectionBoundingBox[min] - groupBoundingBox[min]\n    });\n  } else if (position === "end") {\n    return Object.assign(Object.assign({}, noTranslation), {\n      [axis]: selectionBoundingBox[max] - groupBoundingBox[max]\n    });\n  } // else if (position === "center") {\n\n\n  return Object.assign(Object.assign({}, noTranslation), {\n    [axis]: (selectionBoundingBox[min] + selectionBoundingBox[max]) / 2 - (groupBoundingBox[min] + groupBoundingBox[max]) / 2\n  });\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vYWxpZ24udHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUF5RDtBQUNEO0FBQ1o7QUFDckM7QUFDUCxpQkFBaUIseURBQWdCO0FBQ2pDLCtCQUErQixxRUFBb0I7QUFDbkQ7QUFDQTtBQUNBLGdDQUFnQyxzRUFBYztBQUM5QztBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsMkJBQTJCLHFFQUFvQjtBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EseUNBQXlDO0FBQ3pDO0FBQ0EsS0FBSztBQUNMLElBQUk7QUFDSix5Q0FBeUM7QUFDekM7QUFDQSxLQUFLO0FBQ0wsSUFBSTs7O0FBR0osdUNBQXVDO0FBQ3ZDO0FBQ0EsR0FBRztBQUNIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2FsaWduLnRzPzUzNDAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbmV3RWxlbWVudFdpdGggfSBmcm9tIFwiLi9lbGVtZW50L211dGF0ZUVsZW1lbnRcIjtcbmltcG9ydCB7IGdldENvbW1vbkJvdW5kaW5nQm94IH0gZnJvbSBcIi4vZWxlbWVudC9ib3VuZHNcIjtcbmltcG9ydCB7IGdldE1heGltdW1Hcm91cHMgfSBmcm9tIFwiLi9ncm91cHNcIjtcbmV4cG9ydCBjb25zdCBhbGlnbkVsZW1lbnRzID0gKHNlbGVjdGVkRWxlbWVudHMsIGFsaWdubWVudCkgPT4ge1xuICBjb25zdCBncm91cHMgPSBnZXRNYXhpbXVtR3JvdXBzKHNlbGVjdGVkRWxlbWVudHMpO1xuICBjb25zdCBzZWxlY3Rpb25Cb3VuZGluZ0JveCA9IGdldENvbW1vbkJvdW5kaW5nQm94KHNlbGVjdGVkRWxlbWVudHMpO1xuICByZXR1cm4gZ3JvdXBzLmZsYXRNYXAoZ3JvdXAgPT4ge1xuICAgIGNvbnN0IHRyYW5zbGF0aW9uID0gY2FsY3VsYXRlVHJhbnNsYXRpb24oZ3JvdXAsIHNlbGVjdGlvbkJvdW5kaW5nQm94LCBhbGlnbm1lbnQpO1xuICAgIHJldHVybiBncm91cC5tYXAoZWxlbWVudCA9PiBuZXdFbGVtZW50V2l0aChlbGVtZW50LCB7XG4gICAgICB4OiBlbGVtZW50LnggKyB0cmFuc2xhdGlvbi54LFxuICAgICAgeTogZWxlbWVudC55ICsgdHJhbnNsYXRpb24ueVxuICAgIH0pKTtcbiAgfSk7XG59O1xuXG5jb25zdCBjYWxjdWxhdGVUcmFuc2xhdGlvbiA9IChncm91cCwgc2VsZWN0aW9uQm91bmRpbmdCb3gsIHtcbiAgYXhpcyxcbiAgcG9zaXRpb25cbn0pID0+IHtcbiAgY29uc3QgZ3JvdXBCb3VuZGluZ0JveCA9IGdldENvbW1vbkJvdW5kaW5nQm94KGdyb3VwKTtcbiAgY29uc3QgW21pbiwgbWF4XSA9IGF4aXMgPT09IFwieFwiID8gW1wibWluWFwiLCBcIm1heFhcIl0gOiBbXCJtaW5ZXCIsIFwibWF4WVwiXTtcbiAgY29uc3Qgbm9UcmFuc2xhdGlvbiA9IHtcbiAgICB4OiAwLFxuICAgIHk6IDBcbiAgfTtcblxuICBpZiAocG9zaXRpb24gPT09IFwic3RhcnRcIikge1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIG5vVHJhbnNsYXRpb24pLCB7XG4gICAgICBbYXhpc106IHNlbGVjdGlvbkJvdW5kaW5nQm94W21pbl0gLSBncm91cEJvdW5kaW5nQm94W21pbl1cbiAgICB9KTtcbiAgfSBlbHNlIGlmIChwb3NpdGlvbiA9PT0gXCJlbmRcIikge1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIG5vVHJhbnNsYXRpb24pLCB7XG4gICAgICBbYXhpc106IHNlbGVjdGlvbkJvdW5kaW5nQm94W21heF0gLSBncm91cEJvdW5kaW5nQm94W21heF1cbiAgICB9KTtcbiAgfSAvLyBlbHNlIGlmIChwb3NpdGlvbiA9PT0gXCJjZW50ZXJcIikge1xuXG5cbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgbm9UcmFuc2xhdGlvbiksIHtcbiAgICBbYXhpc106IChzZWxlY3Rpb25Cb3VuZGluZ0JveFttaW5dICsgc2VsZWN0aW9uQm91bmRpbmdCb3hbbWF4XSkgLyAyIC0gKGdyb3VwQm91bmRpbmdCb3hbbWluXSArIGdyb3VwQm91bmRpbmdCb3hbbWF4XSkgLyAyXG4gIH0pO1xufTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../align.ts\n');
              }
            ),
            /***/
            "../../analytics.ts": (
              /*!**************************!*\
                !*** ../../analytics.ts ***!
                \**************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "trackEvent": () => (/* binding */ trackEvent)\n/* harmony export */ });\nconst trackEvent = (category, action, label, value) => {\n  try {\n    // place here categories that you want to track as events\n    // KEEP IN MIND THE PRICING\n    const ALLOWED_CATEGORIES_TO_TRACK = []; // Uncomment the next line to track locally\n    // console.log("Track Event", { category, action, label, value });\n\n    if (typeof window === "undefined" || ({"VITE_APP_BACKEND_V2_GET_URL":"https://json-dev.excalidraw.com/api/v2/","VITE_APP_BACKEND_V2_POST_URL":"https://json-dev.excalidraw.com/api/v2/post/","VITE_APP_LIBRARY_URL":"https://libraries.excalidraw.com","VITE_APP_LIBRARY_BACKEND":"https://us-central1-excalidraw-room-persistence.cloudfunctions.net/libraries","VITE_APP_WS_SERVER_URL":"http://localhost:3002","VITE_APP_PORTAL_URL":"","VITE_APP_PLUS_LP":"https://plus.excalidraw.com","VITE_APP_PLUS_APP":"https://app.excalidraw.com","VITE_APP_FIREBASE_CONFIG":"{\\"apiKey\\":\\"AIzaSyCMkxA60XIW8KbqMYL7edC4qT5l4qHX2h8\\",\\"authDomain\\":\\"excalidraw-oss-dev.firebaseapp.com\\",\\"projectId\\":\\"excalidraw-oss-dev\\",\\"storageBucket\\":\\"excalidraw-oss-dev.appspot.com\\",\\"messagingSenderId\\":\\"664559512677\\",\\"appId\\":\\"1:664559512677:web:a385181f2928d328a7aa8c\\"}","VITE_APP_DEV_ENABLE_SW":"","VITE_APP_DEV_DISABLE_LIVE_RELOAD":"","VITE_APP_DISABLE_TRACKING":"true","FAST_REFRESH":"false","VITE_APP_PORT":"3000","VITE_APP_DEBUG_ENABLE_TEXT_CONTAINER_BOUNDING_BOX":"","VITE_APP_COLLAPSE_OVERLAY":"true","VITE_APP_ENABLE_ESLINT":"true","VITE_PKG_NAME":"@excalidraw/excalidraw","VITE_PKG_VERSION":"0.17.6","VITE_IS_EXCALIDRAW_NPM_PACKAGE":true}).VITE_WORKER_ID) {\n      return;\n    }\n\n    if (!ALLOWED_CATEGORIES_TO_TRACK.includes(category)) {\n      return;\n    }\n\n    if (window.sa_event) {\n      window.sa_event(action, {\n        category,\n        label,\n        value\n      });\n    }\n  } catch (error) {\n    console.error("error during analytics", error);\n  }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vYW5hbHl0aWNzLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLDRDQUE0QztBQUM1QyxvQ0FBb0MsZ0NBQWdDOztBQUVwRSx5Q0FBeUMsc3FDQUFXO0FBQ3BEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2FuYWx5dGljcy50cz81NDIxIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCB0cmFja0V2ZW50ID0gKGNhdGVnb3J5LCBhY3Rpb24sIGxhYmVsLCB2YWx1ZSkgPT4ge1xuICB0cnkge1xuICAgIC8vIHBsYWNlIGhlcmUgY2F0ZWdvcmllcyB0aGF0IHlvdSB3YW50IHRvIHRyYWNrIGFzIGV2ZW50c1xuICAgIC8vIEtFRVAgSU4gTUlORCBUSEUgUFJJQ0lOR1xuICAgIGNvbnN0IEFMTE9XRURfQ0FURUdPUklFU19UT19UUkFDSyA9IFtdOyAvLyBVbmNvbW1lbnQgdGhlIG5leHQgbGluZSB0byB0cmFjayBsb2NhbGx5XG4gICAgLy8gY29uc29sZS5sb2coXCJUcmFjayBFdmVudFwiLCB7IGNhdGVnb3J5LCBhY3Rpb24sIGxhYmVsLCB2YWx1ZSB9KTtcblxuICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSBcInVuZGVmaW5lZFwiIHx8IHByb2Nlc3MuZW52LlZJVEVfV09SS0VSX0lEKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFBTExPV0VEX0NBVEVHT1JJRVNfVE9fVFJBQ0suaW5jbHVkZXMoY2F0ZWdvcnkpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHdpbmRvdy5zYV9ldmVudCkge1xuICAgICAgd2luZG93LnNhX2V2ZW50KGFjdGlvbiwge1xuICAgICAgICBjYXRlZ29yeSxcbiAgICAgICAgbGFiZWwsXG4gICAgICAgIHZhbHVlXG4gICAgICB9KTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcihcImVycm9yIGR1cmluZyBhbmFseXRpY3NcIiwgZXJyb3IpO1xuICB9XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../analytics.ts\n');
              }
            ),
            /***/
            "../../appState.ts": (
              /*!*************************!*\
                !*** ../../appState.ts ***!
                \*************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "cleanAppStateForExport": () => (/* binding */ cleanAppStateForExport),\n/* harmony export */   "clearAppStateForDatabase": () => (/* binding */ clearAppStateForDatabase),\n/* harmony export */   "clearAppStateForLocalStorage": () => (/* binding */ clearAppStateForLocalStorage),\n/* harmony export */   "getDefaultAppState": () => (/* binding */ getDefaultAppState),\n/* harmony export */   "isEraserActive": () => (/* binding */ isEraserActive),\n/* harmony export */   "isHandToolActive": () => (/* binding */ isHandToolActive)\n/* harmony export */ });\n/* harmony import */ var _colors__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./colors */ "../../colors.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constants */ "../../constants.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./i18n */ "../../i18n.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils */ "../../utils.ts");\n\n\n\n\nconst defaultExportScale = _constants__WEBPACK_IMPORTED_MODULE_1__.EXPORT_SCALES.includes(devicePixelRatio) ? devicePixelRatio : 1;\nconst getDefaultAppState = () => {\n  return {\n    showWelcomeScreen: false,\n    theme: _constants__WEBPACK_IMPORTED_MODULE_1__.THEME.LIGHT,\n    collaborators: new Map(),\n    currentChartType: "bar",\n    currentItemBackgroundColor: _constants__WEBPACK_IMPORTED_MODULE_1__.DEFAULT_ELEMENT_PROPS.backgroundColor,\n    currentItemEndArrowhead: "arrow",\n    currentItemFillStyle: _constants__WEBPACK_IMPORTED_MODULE_1__.DEFAULT_ELEMENT_PROPS.fillStyle,\n    currentItemFontFamily: _constants__WEBPACK_IMPORTED_MODULE_1__.DEFAULT_FONT_FAMILY,\n    currentItemFontSize: _constants__WEBPACK_IMPORTED_MODULE_1__.DEFAULT_FONT_SIZE,\n    currentItemOpacity: _constants__WEBPACK_IMPORTED_MODULE_1__.DEFAULT_ELEMENT_PROPS.opacity,\n    currentItemRoughness: _constants__WEBPACK_IMPORTED_MODULE_1__.DEFAULT_ELEMENT_PROPS.roughness,\n    currentItemStartArrowhead: null,\n    currentItemStrokeColor: _constants__WEBPACK_IMPORTED_MODULE_1__.DEFAULT_ELEMENT_PROPS.strokeColor,\n    currentItemRoundness: "round",\n    currentItemStrokeStyle: _constants__WEBPACK_IMPORTED_MODULE_1__.DEFAULT_ELEMENT_PROPS.strokeStyle,\n    currentItemStrokeWidth: _constants__WEBPACK_IMPORTED_MODULE_1__.DEFAULT_ELEMENT_PROPS.strokeWidth,\n    currentItemTextAlign: _constants__WEBPACK_IMPORTED_MODULE_1__.DEFAULT_TEXT_ALIGN,\n    cursorButton: "up",\n    activeEmbeddable: null,\n    draggingElement: null,\n    editingElement: null,\n    editingGroupId: null,\n    editingLinearElement: null,\n    activeTool: {\n      type: "selection",\n      customType: null,\n      locked: _constants__WEBPACK_IMPORTED_MODULE_1__.DEFAULT_ELEMENT_PROPS.locked,\n      lastActiveTool: null\n    },\n    penMode: false,\n    penDetected: false,\n    errorMessage: null,\n    exportBackground: true,\n    exportScale: defaultExportScale,\n    exportEmbedScene: false,\n    exportWithDarkMode: false,\n    fileHandle: null,\n    gridSize: null,\n    isBindingEnabled: true,\n    defaultSidebarDockedPreference: false,\n    isLoading: false,\n    isResizing: false,\n    isRotating: false,\n    lastPointerDownWith: "mouse",\n    multiElement: null,\n    name: `${(0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.untitled")}-${(0,_utils__WEBPACK_IMPORTED_MODULE_3__.getDateTime)()}`,\n    contextMenu: null,\n    openMenu: null,\n    openPopup: null,\n    openSidebar: null,\n    openDialog: null,\n    pasteDialog: {\n      shown: false,\n      data: null\n    },\n    previousSelectedElementIds: {},\n    resizingElement: null,\n    scrolledOutside: false,\n    scrollX: 0,\n    scrollY: 0,\n    selectedElementIds: {},\n    selectedGroupIds: {},\n    selectedElementsAreBeingDragged: false,\n    selectionElement: null,\n    shouldCacheIgnoreZoom: false,\n    showStats: false,\n    startBoundElement: null,\n    suggestedBindings: [],\n    frameRendering: {\n      enabled: true,\n      clip: true,\n      name: true,\n      outline: true\n    },\n    frameToHighlight: null,\n    editingFrame: null,\n    elementsToHighlight: null,\n    toast: null,\n    viewBackgroundColor: _colors__WEBPACK_IMPORTED_MODULE_0__.COLOR_PALETTE.white,\n    zenModeEnabled: false,\n    zoom: {\n      value: 1\n    },\n    viewModeEnabled: false,\n    pendingImageElementId: null,\n    showHyperlinkPopup: false,\n    selectedLinearElement: null,\n    snapLines: [],\n    originSnapOffset: {\n      x: 0,\n      y: 0\n    },\n    objectsSnapModeEnabled: false\n  };\n};\n/**\n * Config containing all AppState keys. Used to determine whether given state\n *  prop should be stripped when exporting to given storage type.\n */\n\nconst APP_STATE_STORAGE_CONF = (config => config)({\n  showWelcomeScreen: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  theme: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  collaborators: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  currentChartType: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  currentItemBackgroundColor: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  currentItemEndArrowhead: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  currentItemFillStyle: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  currentItemFontFamily: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  currentItemFontSize: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  currentItemRoundness: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  currentItemOpacity: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  currentItemRoughness: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  currentItemStartArrowhead: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  currentItemStrokeColor: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  currentItemStrokeStyle: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  currentItemStrokeWidth: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  currentItemTextAlign: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  cursorButton: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  activeEmbeddable: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  draggingElement: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  editingElement: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  editingGroupId: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  editingLinearElement: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  activeTool: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  penMode: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  penDetected: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  errorMessage: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  exportBackground: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  exportEmbedScene: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  exportScale: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  exportWithDarkMode: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  fileHandle: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  gridSize: {\n    browser: true,\n    export: true,\n    server: true\n  },\n  height: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  isBindingEnabled: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  defaultSidebarDockedPreference: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  isLoading: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  isResizing: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  isRotating: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  lastPointerDownWith: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  multiElement: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  name: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  offsetLeft: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  offsetTop: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  contextMenu: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  openMenu: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  openPopup: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  openSidebar: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  openDialog: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  pasteDialog: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  previousSelectedElementIds: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  resizingElement: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  scrolledOutside: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  scrollX: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  scrollY: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  selectedElementIds: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  selectedGroupIds: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  selectedElementsAreBeingDragged: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  selectionElement: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  shouldCacheIgnoreZoom: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  showStats: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  startBoundElement: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  suggestedBindings: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  frameRendering: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  frameToHighlight: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  editingFrame: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  elementsToHighlight: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  toast: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  viewBackgroundColor: {\n    browser: true,\n    export: true,\n    server: true\n  },\n  width: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  zenModeEnabled: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  zoom: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  viewModeEnabled: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  pendingImageElementId: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  showHyperlinkPopup: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  selectedLinearElement: {\n    browser: true,\n    export: false,\n    server: false\n  },\n  snapLines: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  originSnapOffset: {\n    browser: false,\n    export: false,\n    server: false\n  },\n  objectsSnapModeEnabled: {\n    browser: true,\n    export: false,\n    server: false\n  }\n});\n\nconst _clearAppStateForStorage = (appState, exportType) => {\n  const stateForExport = {};\n\n  for (const key of Object.keys(appState)) {\n    const propConfig = APP_STATE_STORAGE_CONF[key];\n\n    if (propConfig === null || propConfig === void 0 ? void 0 : propConfig[exportType]) {\n      const nextValue = appState[key]; // https://github.com/microsoft/TypeScript/issues/31445\n\n      stateForExport[key] = nextValue;\n    }\n  }\n\n  return stateForExport;\n};\n\nconst clearAppStateForLocalStorage = appState => {\n  return _clearAppStateForStorage(appState, "browser");\n};\nconst cleanAppStateForExport = appState => {\n  return _clearAppStateForStorage(appState, "export");\n};\nconst clearAppStateForDatabase = appState => {\n  return _clearAppStateForStorage(appState, "server");\n};\nconst isEraserActive = ({\n  activeTool\n}) => activeTool.type === "eraser";\nconst isHandToolActive = ({\n  activeTool\n}) => {\n  return activeTool.type === "hand";\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 19800 characters]\n//# sourceURL=webpack-internal:///../../appState.ts\n');
              }
            ),
            /***/
            "../../charts.ts": (
              /*!***********************!*\
                !*** ../../charts.ts ***!
                \***********************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "NOT_SPREADSHEET": () => (/* binding */ NOT_SPREADSHEET),\n/* harmony export */   "VALID_SPREADSHEET": () => (/* binding */ VALID_SPREADSHEET),\n/* harmony export */   "renderSpreadsheet": () => (/* binding */ renderSpreadsheet),\n/* harmony export */   "tryParseCells": () => (/* binding */ tryParseCells),\n/* harmony export */   "tryParseNumber": () => (/* binding */ tryParseNumber),\n/* harmony export */   "tryParseSpreadsheet": () => (/* binding */ tryParseSpreadsheet)\n/* harmony export */ });\n/* harmony import */ var _colors__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./colors */ "../../colors.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constants */ "../../constants.ts");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./element */ "../../element/index.ts");\n/* harmony import */ var _random__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./random */ "../../random.ts");\n\n\n\n\nconst BAR_WIDTH = 32;\nconst BAR_GAP = 12;\nconst BAR_HEIGHT = 256;\nconst GRID_OPACITY = 50;\nconst NOT_SPREADSHEET = "NOT_SPREADSHEET";\nconst VALID_SPREADSHEET = "VALID_SPREADSHEET";\n/**\n * @private exported for testing\n */\n\nconst tryParseNumber = s => {\n  const match = /^([-+]?)[$\u20AC\xA3\xA5\u20A9]?([-+]?)([\\d.,]+)[%]?$/.exec(s);\n\n  if (!match) {\n    return null;\n  }\n\n  return parseFloat(`${(match[1] || match[2]) + match[3]}`.replace(/,/g, ""));\n};\n\nconst isNumericColumn = (lines, columnIndex) => lines.slice(1).every(line => tryParseNumber(line[columnIndex]) !== null);\n/**\n * @private exported for testing\n */\n\n\nconst tryParseCells = cells => {\n  const numCols = cells[0].length;\n\n  if (numCols > 2) {\n    return {\n      type: NOT_SPREADSHEET,\n      reason: "More than 2 columns"\n    };\n  }\n\n  if (numCols === 1) {\n    if (!isNumericColumn(cells, 0)) {\n      return {\n        type: NOT_SPREADSHEET,\n        reason: "Value is not numeric"\n      };\n    }\n\n    const hasHeader = tryParseNumber(cells[0][0]) === null;\n    const values = (hasHeader ? cells.slice(1) : cells).map(line => tryParseNumber(line[0]));\n\n    if (values.length < 2) {\n      return {\n        type: NOT_SPREADSHEET,\n        reason: "Less than two rows"\n      };\n    }\n\n    return {\n      type: VALID_SPREADSHEET,\n      spreadsheet: {\n        title: hasHeader ? cells[0][0] : null,\n        labels: null,\n        values: values\n      }\n    };\n  }\n\n  const labelColumnNumeric = isNumericColumn(cells, 0);\n  const valueColumnNumeric = isNumericColumn(cells, 1);\n\n  if (!labelColumnNumeric && !valueColumnNumeric) {\n    return {\n      type: NOT_SPREADSHEET,\n      reason: "Value is not numeric"\n    };\n  }\n\n  const [labelColumnIndex, valueColumnIndex] = valueColumnNumeric ? [0, 1] : [1, 0];\n  const hasHeader = tryParseNumber(cells[0][valueColumnIndex]) === null;\n  const rows = hasHeader ? cells.slice(1) : cells;\n\n  if (rows.length < 2) {\n    return {\n      type: NOT_SPREADSHEET,\n      reason: "Less than 2 rows"\n    };\n  }\n\n  return {\n    type: VALID_SPREADSHEET,\n    spreadsheet: {\n      title: hasHeader ? cells[0][valueColumnIndex] : null,\n      labels: rows.map(row => row[labelColumnIndex]),\n      values: rows.map(row => tryParseNumber(row[valueColumnIndex]))\n    }\n  };\n};\n\nconst transposeCells = cells => {\n  const nextCells = [];\n\n  for (let col = 0; col < cells[0].length; col++) {\n    const nextCellRow = [];\n\n    for (let row = 0; row < cells.length; row++) {\n      nextCellRow.push(cells[row][col]);\n    }\n\n    nextCells.push(nextCellRow);\n  }\n\n  return nextCells;\n};\n\nconst tryParseSpreadsheet = text => {\n  // Copy/paste from excel, spreadsheets, tsv, csv.\n  // For now we only accept 2 columns with an optional header\n  // Check for tab separated values\n  let lines = text.trim().split("\\n").map(line => line.trim().split("\\t")); // Check for comma separated files\n\n  if (lines.length && lines[0].length !== 2) {\n    lines = text.trim().split("\\n").map(line => line.trim().split(","));\n  }\n\n  if (lines.length === 0) {\n    return {\n      type: NOT_SPREADSHEET,\n      reason: "No values"\n    };\n  }\n\n  const numColsFirstLine = lines[0].length;\n  const isSpreadsheet = lines.every(line => line.length === numColsFirstLine);\n\n  if (!isSpreadsheet) {\n    return {\n      type: NOT_SPREADSHEET,\n      reason: "All rows don\'t have same number of columns"\n    };\n  }\n\n  const result = tryParseCells(lines);\n\n  if (result.type !== VALID_SPREADSHEET) {\n    const transposedResults = tryParseCells(transposeCells(lines));\n\n    if (transposedResults.type === VALID_SPREADSHEET) {\n      return transposedResults;\n    }\n  }\n\n  return result;\n};\nconst bgColors = (0,_colors__WEBPACK_IMPORTED_MODULE_0__.getAllColorsSpecificShade)(_colors__WEBPACK_IMPORTED_MODULE_0__.DEFAULT_CHART_COLOR_INDEX); // Put all the common properties here so when the whole chart is selected\n// the properties dialog shows the correct selected values\n\nconst commonProps = {\n  fillStyle: "hachure",\n  fontFamily: _constants__WEBPACK_IMPORTED_MODULE_1__.DEFAULT_FONT_FAMILY,\n  fontSize: _constants__WEBPACK_IMPORTED_MODULE_1__.DEFAULT_FONT_SIZE,\n  opacity: 100,\n  roughness: 1,\n  strokeColor: _colors__WEBPACK_IMPORTED_MODULE_0__.COLOR_PALETTE.black,\n  roundness: null,\n  strokeStyle: "solid",\n  strokeWidth: 1,\n  verticalAlign: _constants__WEBPACK_IMPORTED_MODULE_1__.VERTICAL_ALIGN.MIDDLE,\n  locked: false\n};\n\nconst getChartDimensions = spreadsheet => {\n  const chartWidth = (BAR_WIDTH + BAR_GAP) * spreadsheet.values.length + BAR_GAP;\n  const chartHeight = BAR_HEIGHT + BAR_GAP * 2;\n  return {\n    chartWidth,\n    chartHeight\n  };\n};\n\nconst chartXLabels = (spreadsheet, x, y, groupId, backgroundColor) => {\n  var _a;\n\n  return ((_a = spreadsheet.labels) === null || _a === void 0 ? void 0 : _a.map((label, index) => {\n    return (0,_element__WEBPACK_IMPORTED_MODULE_2__.newTextElement)(Object.assign(Object.assign({\n      groupIds: [groupId],\n      backgroundColor\n    }, commonProps), {\n      text: label.length > 8 ? `${label.slice(0, 5)}...` : label,\n      x: x + index * (BAR_WIDTH + BAR_GAP) + BAR_GAP * 2,\n      y: y + BAR_GAP / 2,\n      width: BAR_WIDTH,\n      angle: 5.87,\n      fontSize: 16,\n      textAlign: "center",\n      verticalAlign: "top"\n    }));\n  })) || [];\n};\n\nconst chartYLabels = (spreadsheet, x, y, groupId, backgroundColor) => {\n  const minYLabel = (0,_element__WEBPACK_IMPORTED_MODULE_2__.newTextElement)(Object.assign(Object.assign({\n    groupIds: [groupId],\n    backgroundColor\n  }, commonProps), {\n    x: x - BAR_GAP,\n    y: y - BAR_GAP,\n    text: "0",\n    textAlign: "right"\n  }));\n  const maxYLabel = (0,_element__WEBPACK_IMPORTED_MODULE_2__.newTextElement)(Object.assign(Object.assign({\n    groupIds: [groupId],\n    backgroundColor\n  }, commonProps), {\n    x: x - BAR_GAP,\n    y: y - BAR_HEIGHT - minYLabel.height / 2,\n    text: Math.max(...spreadsheet.values).toLocaleString(),\n    textAlign: "right"\n  }));\n  return [minYLabel, maxYLabel];\n};\n\nconst chartLines = (spreadsheet, x, y, groupId, backgroundColor) => {\n  const {\n    chartWidth,\n    chartHeight\n  } = getChartDimensions(spreadsheet);\n  const xLine = (0,_element__WEBPACK_IMPORTED_MODULE_2__.newLinearElement)(Object.assign(Object.assign({\n    backgroundColor,\n    groupIds: [groupId]\n  }, commonProps), {\n    type: "line",\n    x,\n    y,\n    startArrowhead: null,\n    endArrowhead: null,\n    width: chartWidth,\n    points: [[0, 0], [chartWidth, 0]]\n  }));\n  const yLine = (0,_element__WEBPACK_IMPORTED_MODULE_2__.newLinearElement)(Object.assign(Object.assign({\n    backgroundColor,\n    groupIds: [groupId]\n  }, commonProps), {\n    type: "line",\n    x,\n    y,\n    startArrowhead: null,\n    endArrowhead: null,\n    height: chartHeight,\n    points: [[0, 0], [0, -chartHeight]]\n  }));\n  const maxLine = (0,_element__WEBPACK_IMPORTED_MODULE_2__.newLinearElement)(Object.assign(Object.assign({\n    backgroundColor,\n    groupIds: [groupId]\n  }, commonProps), {\n    type: "line",\n    x,\n    y: y - BAR_HEIGHT - BAR_GAP,\n    startArrowhead: null,\n    endArrowhead: null,\n    strokeStyle: "dotted",\n    width: chartWidth,\n    opacity: GRID_OPACITY,\n    points: [[0, 0], [chartWidth, 0]]\n  }));\n  return [xLine, yLine, maxLine];\n}; // For the maths behind it https://excalidraw.com/#json=6320864370884608,O_5xfD-Agh32tytHpRJx1g\n\n\nconst chartBaseElements = (spreadsheet, x, y, groupId, backgroundColor, debug) => {\n  const {\n    chartWidth,\n    chartHeight\n  } = getChartDimensions(spreadsheet);\n  const title = spreadsheet.title ? (0,_element__WEBPACK_IMPORTED_MODULE_2__.newTextElement)(Object.assign(Object.assign({\n    backgroundColor,\n    groupIds: [groupId]\n  }, commonProps), {\n    text: spreadsheet.title,\n    x: x + chartWidth / 2,\n    y: y - BAR_HEIGHT - BAR_GAP * 2 - _constants__WEBPACK_IMPORTED_MODULE_1__.DEFAULT_FONT_SIZE,\n    roundness: null,\n    textAlign: "center"\n  })) : null;\n  const debugRect = debug ? (0,_element__WEBPACK_IMPORTED_MODULE_2__.newElement)(Object.assign(Object.assign({\n    backgroundColor,\n    groupIds: [groupId]\n  }, commonProps), {\n    type: "rectangle",\n    x,\n    y: y - chartHeight,\n    width: chartWidth,\n    height: chartHeight,\n    strokeColor: _colors__WEBPACK_IMPORTED_MODULE_0__.COLOR_PALETTE.black,\n    fillStyle: "solid",\n    opacity: 6\n  })) : null;\n  return [...(debugRect ? [debugRect] : []), ...(title ? [title] : []), ...chartXLabels(spreadsheet, x, y, groupId, backgroundColor), ...chartYLabels(spreadsheet, x, y, groupId, backgroundColor), ...chartLines(spreadsheet, x, y, groupId, backgroundColor)];\n};\n\nconst chartTypeBar = (spreadsheet, x, y) => {\n  const max = Math.max(...spreadsheet.values);\n  const groupId = (0,_random__WEBPACK_IMPORTED_MODULE_3__.randomId)();\n  const backgroundColor = bgColors[Math.floor(Math.random() * bgColors.length)];\n  const bars = spreadsheet.values.map((value, index) => {\n    const barHeight = value / max * BAR_HEIGHT;\n    return (0,_element__WEBPACK_IMPORTED_MODULE_2__.newElement)(Object.assign(Object.assign({\n      backgroundColor,\n      groupIds: [groupId]\n    }, commonProps), {\n      type: "rectangle",\n      x: x + index * (BAR_WIDTH + BAR_GAP) + BAR_GAP,\n      y: y - barHeight - BAR_GAP,\n      width: BAR_WIDTH,\n      height: barHeight\n    }));\n  });\n  return [...bars, ...chartBaseElements(spreadsheet, x, y, groupId, backgroundColor, "development" !== "production")];\n};\n\nconst chartTypeLine = (spreadsheet, x, y) => {\n  const max = Math.max(...spreadsheet.values);\n  const groupId = (0,_random__WEBPACK_IMPORTED_MODULE_3__.randomId)();\n  const backgroundColor = bgColors[Math.floor(Math.random() * bgColors.length)];\n  let index = 0;\n  const points = [];\n\n  for (const value of spreadsheet.values) {\n    const cx = index * (BAR_WIDTH + BAR_GAP);\n    const cy = -(value / max) * BAR_HEIGHT;\n    points.push([cx, cy]);\n    index++;\n  }\n\n  const maxX = Math.max(...points.map(element => element[0]));\n  const maxY = Math.max(...points.map(element => element[1]));\n  const minX = Math.min(...points.map(element => element[0]));\n  const minY = Math.min(...points.map(element => element[1]));\n  const line = (0,_element__WEBPACK_IMPORTED_MODULE_2__.newLinearElement)(Object.assign(Object.assign({\n    backgroundColor,\n    groupIds: [groupId]\n  }, commonProps), {\n    type: "line",\n    x: x + BAR_GAP + BAR_WIDTH / 2,\n    y: y - BAR_GAP,\n    startArrowhead: null,\n    endArrowhead: null,\n    height: maxY - minY,\n    width: maxX - minX,\n    strokeWidth: 2,\n    points: points\n  }));\n  const dots = spreadsheet.values.map((value, index) => {\n    const cx = index * (BAR_WIDTH + BAR_GAP) + BAR_GAP / 2;\n    const cy = -(value / max) * BAR_HEIGHT + BAR_GAP / 2;\n    return (0,_element__WEBPACK_IMPORTED_MODULE_2__.newElement)(Object.assign(Object.assign({\n      backgroundColor,\n      groupIds: [groupId]\n    }, commonProps), {\n      fillStyle: "solid",\n      strokeWidth: 2,\n      type: "ellipse",\n      x: x + cx + BAR_WIDTH / 2,\n      y: y + cy - BAR_GAP * 2,\n      width: BAR_GAP,\n      height: BAR_GAP\n    }));\n  });\n  const lines = spreadsheet.values.map((value, index) => {\n    const cx = index * (BAR_WIDTH + BAR_GAP) + BAR_GAP / 2;\n    const cy = value / max * BAR_HEIGHT + BAR_GAP / 2 + BAR_GAP;\n    return (0,_element__WEBPACK_IMPORTED_MODULE_2__.newLinearElement)(Object.assign(Object.assign({\n      backgroundColor,\n      groupIds: [groupId]\n    }, commonProps), {\n      type: "line",\n      x: x + cx + BAR_WIDTH / 2 + BAR_GAP / 2,\n      y: y - cy,\n      startArrowhead: null,\n      endArrowhead: null,\n      height: cy,\n      strokeStyle: "dotted",\n      opacity: GRID_OPACITY,\n      points: [[0, 0], [0, cy]]\n    }));\n  });\n  return [...chartBaseElements(spreadsheet, x, y, groupId, backgroundColor, "development" !== "production"), line, ...lines, ...dots];\n};\n\nconst renderSpreadsheet = (chartType, spreadsheet, x, y) => {\n  if (chartType === "line") {\n    return chartTypeLine(spreadsheet, x, y);\n  }\n\n  return chartTypeBar(spreadsheet, x, y);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 19136 characters]\n//# sourceURL=webpack-internal:///../../charts.ts\n');
              }
            ),
            /***/
            "../../clients.ts": (
              /*!************************!*\
                !*** ../../clients.ts ***!
                \************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "getClientColor": () => (/* binding */ getClientColor),\n/* harmony export */   "getNameInitial": () => (/* binding */ getNameInitial)\n/* harmony export */ });\nfunction hashToInteger(id) {\n  let hash = 0;\n\n  if (id.length === 0) {\n    return hash;\n  }\n\n  for (let i = 0; i < id.length; i++) {\n    const char = id.charCodeAt(i);\n    hash = (hash << 5) - hash + char;\n  }\n\n  return hash;\n}\n\nconst getClientColor = (\n/**\n * any uniquely identifying key, such as user id or socket id\n */\nid) => {\n  // to get more even distribution in case `id` is not uniformly distributed to\n  // begin with, we hash it\n  const hash = Math.abs(hashToInteger(id)); // we want to get a multiple of 10 number in the range of 0-360 (in other\n  // words a hue value of step size 10). There are 37 such values including 0.\n\n  const hue = hash % 37 * 10;\n  const saturation = 100;\n  const lightness = 83;\n  return `hsl(${hue}, ${saturation}%, ${lightness}%)`;\n};\n/**\n * returns first char, capitalized\n */\n\nconst getNameInitial = name => {\n  var _a; // first char can be a surrogate pair, hence using codePointAt\n\n\n  const firstCodePoint = (_a = name === null || name === void 0 ? void 0 : name.trim()) === null || _a === void 0 ? void 0 : _a.codePointAt(0);\n  return (firstCodePoint ? String.fromCodePoint(firstCodePoint) : "?").toUpperCase();\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY2xpZW50cy50cy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLGtCQUFrQixlQUFlO0FBQ2pDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNENBQTRDO0FBQzVDOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixJQUFJLElBQUksV0FBVyxLQUFLLFVBQVU7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUCxVQUFVOzs7QUFHVjtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY2xpZW50cy50cz9jN2QxIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIGhhc2hUb0ludGVnZXIoaWQpIHtcbiAgbGV0IGhhc2ggPSAwO1xuXG4gIGlmIChpZC5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gaGFzaDtcbiAgfVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgaWQubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBjaGFyID0gaWQuY2hhckNvZGVBdChpKTtcbiAgICBoYXNoID0gKGhhc2ggPDwgNSkgLSBoYXNoICsgY2hhcjtcbiAgfVxuXG4gIHJldHVybiBoYXNoO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0Q2xpZW50Q29sb3IgPSAoXG4vKipcbiAqIGFueSB1bmlxdWVseSBpZGVudGlmeWluZyBrZXksIHN1Y2ggYXMgdXNlciBpZCBvciBzb2NrZXQgaWRcbiAqL1xuaWQpID0+IHtcbiAgLy8gdG8gZ2V0IG1vcmUgZXZlbiBkaXN0cmlidXRpb24gaW4gY2FzZSBgaWRgIGlzIG5vdCB1bmlmb3JtbHkgZGlzdHJpYnV0ZWQgdG9cbiAgLy8gYmVnaW4gd2l0aCwgd2UgaGFzaCBpdFxuICBjb25zdCBoYXNoID0gTWF0aC5hYnMoaGFzaFRvSW50ZWdlcihpZCkpOyAvLyB3ZSB3YW50IHRvIGdldCBhIG11bHRpcGxlIG9mIDEwIG51bWJlciBpbiB0aGUgcmFuZ2Ugb2YgMC0zNjAgKGluIG90aGVyXG4gIC8vIHdvcmRzIGEgaHVlIHZhbHVlIG9mIHN0ZXAgc2l6ZSAxMCkuIFRoZXJlIGFyZSAzNyBzdWNoIHZhbHVlcyBpbmNsdWRpbmcgMC5cblxuICBjb25zdCBodWUgPSBoYXNoICUgMzcgKiAxMDtcbiAgY29uc3Qgc2F0dXJhdGlvbiA9IDEwMDtcbiAgY29uc3QgbGlnaHRuZXNzID0gODM7XG4gIHJldHVybiBgaHNsKCR7aHVlfSwgJHtzYXR1cmF0aW9ufSUsICR7bGlnaHRuZXNzfSUpYDtcbn07XG4vKipcbiAqIHJldHVybnMgZmlyc3QgY2hhciwgY2FwaXRhbGl6ZWRcbiAqL1xuXG5leHBvcnQgY29uc3QgZ2V0TmFtZUluaXRpYWwgPSBuYW1lID0+IHtcbiAgdmFyIF9hOyAvLyBmaXJzdCBjaGFyIGNhbiBiZSBhIHN1cnJvZ2F0ZSBwYWlyLCBoZW5jZSB1c2luZyBjb2RlUG9pbnRBdFxuXG5cbiAgY29uc3QgZmlyc3RDb2RlUG9pbnQgPSAoX2EgPSBuYW1lID09PSBudWxsIHx8IG5hbWUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG5hbWUudHJpbSgpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY29kZVBvaW50QXQoMCk7XG4gIHJldHVybiAoZmlyc3RDb2RlUG9pbnQgPyBTdHJpbmcuZnJvbUNvZGVQb2ludChmaXJzdENvZGVQb2ludCkgOiBcIj9cIikudG9VcHBlckNhc2UoKTtcbn07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../clients.ts\n');
              }
            ),
            /***/
            "../../clipboard.ts": (
              /*!**************************!*\
                !*** ../../clipboard.ts ***!
                \**************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "copyBlobToClipboardAsPng": () => (/* binding */ copyBlobToClipboardAsPng),\n/* harmony export */   "copyTextToSystemClipboard": () => (/* binding */ copyTextToSystemClipboard),\n/* harmony export */   "copyToClipboard": () => (/* binding */ copyToClipboard),\n/* harmony export */   "createPasteEvent": () => (/* binding */ createPasteEvent),\n/* harmony export */   "parseClipboard": () => (/* binding */ parseClipboard),\n/* harmony export */   "probablySupportsClipboardBlob": () => (/* binding */ probablySupportsClipboardBlob),\n/* harmony export */   "probablySupportsClipboardReadText": () => (/* binding */ probablySupportsClipboardReadText),\n/* harmony export */   "probablySupportsClipboardWriteText": () => (/* binding */ probablySupportsClipboardWriteText),\n/* harmony export */   "readSystemClipboard": () => (/* binding */ readSystemClipboard),\n/* harmony export */   "serializeAsClipboardJSON": () => (/* binding */ serializeAsClipboardJSON)\n/* harmony export */ });\n/* harmony import */ var _charts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./charts */ "../../charts.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constants */ "../../constants.ts");\n/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./element/typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var _element_newElement__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./element/newElement */ "../../element/newElement.ts");\n/* harmony import */ var _element_mutateElement__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./element/mutateElement */ "../../element/mutateElement.ts");\n/* harmony import */ var _frame__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./frame */ "../../frame.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./utils */ "../../utils.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./i18n */ "../../i18n.ts");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator["throw"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n\n\n\n\n\n\nconst probablySupportsClipboardReadText = "clipboard" in navigator && "readText" in navigator.clipboard;\nconst probablySupportsClipboardWriteText = "clipboard" in navigator && "writeText" in navigator.clipboard;\nconst probablySupportsClipboardBlob = "clipboard" in navigator && "write" in navigator.clipboard && "ClipboardItem" in window && "toBlob" in HTMLCanvasElement.prototype;\n\nconst clipboardContainsElements = contents => {\n  if ([_constants__WEBPACK_IMPORTED_MODULE_1__.EXPORT_DATA_TYPES.excalidraw, _constants__WEBPACK_IMPORTED_MODULE_1__.EXPORT_DATA_TYPES.excalidrawClipboard, _constants__WEBPACK_IMPORTED_MODULE_1__.EXPORT_DATA_TYPES.excalidrawClipboardWithAPI].includes(contents === null || contents === void 0 ? void 0 : contents.type) && Array.isArray(contents.elements)) {\n    return true;\n  }\n\n  return false;\n};\n\nconst createPasteEvent = ({\n  types,\n  files\n}) => {\n  var _a, _b, _c, _d;\n\n  if (!types && !files) {\n    console.warn("createPasteEvent: no types or files provided");\n  }\n\n  const event = new ClipboardEvent("paste", {\n    clipboardData: new DataTransfer()\n  });\n\n  if (types) {\n    for (const [type, value] of Object.entries(types)) {\n      try {\n        (_a = event.clipboardData) === null || _a === void 0 ? void 0 : _a.setData(type, value);\n\n        if (((_b = event.clipboardData) === null || _b === void 0 ? void 0 : _b.getData(type)) !== value) {\n          throw new Error(`Failed to set "${type}" as clipboardData item`);\n        }\n      } catch (error) {\n        throw new Error(error.message);\n      }\n    }\n  }\n\n  if (files) {\n    let idx = -1;\n\n    for (const file of files) {\n      idx++;\n\n      try {\n        (_c = event.clipboardData) === null || _c === void 0 ? void 0 : _c.items.add(file);\n\n        if (((_d = event.clipboardData) === null || _d === void 0 ? void 0 : _d.files[idx]) !== file) {\n          throw new Error(`Failed to set file "${file.name}" as clipboardData item`);\n        }\n      } catch (error) {\n        throw new Error(error.message);\n      }\n    }\n  }\n\n  return event;\n};\nconst serializeAsClipboardJSON = ({\n  elements,\n  files\n}) => {\n  const framesToCopy = new Set(elements.filter(element => element.type === "frame"));\n  let foundFile = false;\n\n  const _files = elements.reduce((acc, element) => {\n    if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_2__.isInitializedImageElement)(element)) {\n      foundFile = true;\n\n      if (files && files[element.fileId]) {\n        acc[element.fileId] = files[element.fileId];\n      }\n    }\n\n    return acc;\n  }, {});\n\n  if (foundFile && !files) {\n    console.warn("copyToClipboard: attempting to file element(s) without providing associated `files` object.");\n  } // select bound text elements when copying\n\n\n  const contents = {\n    type: _constants__WEBPACK_IMPORTED_MODULE_1__.EXPORT_DATA_TYPES.excalidrawClipboard,\n    elements: elements.map(element => {\n      if ((0,_frame__WEBPACK_IMPORTED_MODULE_5__.getContainingFrame)(element) && !framesToCopy.has((0,_frame__WEBPACK_IMPORTED_MODULE_5__.getContainingFrame)(element))) {\n        const copiedElement = (0,_element_newElement__WEBPACK_IMPORTED_MODULE_3__.deepCopyElement)(element);\n        (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_4__.mutateElement)(copiedElement, {\n          frameId: null\n        });\n        return copiedElement;\n      }\n\n      return element;\n    }),\n    files: files ? _files : undefined\n  };\n  return JSON.stringify(contents);\n};\nconst copyToClipboard = (elements, files,\n/** supply if available to make the operation more certain to succeed */\nclipboardEvent) => __awaiter(void 0, void 0, void 0, function* () {\n  yield copyTextToSystemClipboard(serializeAsClipboardJSON({\n    elements,\n    files\n  }), clipboardEvent);\n});\n\nconst parsePotentialSpreadsheet = text => {\n  const result = (0,_charts__WEBPACK_IMPORTED_MODULE_0__.tryParseSpreadsheet)(text);\n\n  if (result.type === _charts__WEBPACK_IMPORTED_MODULE_0__.VALID_SPREADSHEET) {\n    return {\n      spreadsheet: result.spreadsheet\n    };\n  }\n\n  return null;\n};\n/** internal, specific to parsing paste events. Do not reuse. */\n\n\nfunction parseHTMLTree(el) {\n  var _a;\n\n  let result = [];\n\n  for (const node of el.childNodes) {\n    if (node.nodeType === 3) {\n      const text = (_a = node.textContent) === null || _a === void 0 ? void 0 : _a.trim();\n\n      if (text) {\n        result.push({\n          type: "text",\n          value: text\n        });\n      }\n    } else if (node instanceof HTMLImageElement) {\n      const url = node.getAttribute("src");\n\n      if (url && url.startsWith("http")) {\n        result.push({\n          type: "imageUrl",\n          value: url\n        });\n      }\n    } else {\n      result = result.concat(parseHTMLTree(node));\n    }\n  }\n\n  return result;\n}\n\nconst maybeParseHTMLPaste = event => {\n  var _a;\n\n  const html = (_a = event.clipboardData) === null || _a === void 0 ? void 0 : _a.getData("text/html");\n\n  if (!html) {\n    return null;\n  }\n\n  try {\n    const doc = new DOMParser().parseFromString(html, "text/html");\n    const content = parseHTMLTree(doc.body);\n\n    if (content.length) {\n      return {\n        type: "mixedContent",\n        value: content\n      };\n    }\n  } catch (error) {\n    console.error(`error in parseHTMLFromPaste: ${error.message}`);\n  }\n\n  return null;\n};\n\nconst readSystemClipboard = () => __awaiter(void 0, void 0, void 0, function* () {\n  var _a, _b, _c, _d;\n\n  const types = {};\n\n  try {\n    if ((_a = navigator.clipboard) === null || _a === void 0 ? void 0 : _a.readText) {\n      return {\n        "text/plain": yield (_b = navigator.clipboard) === null || _b === void 0 ? void 0 : _b.readText()\n      };\n    }\n  } catch (error) {\n    // @ts-ignore\n    if ((_c = navigator.clipboard) === null || _c === void 0 ? void 0 : _c.read) {\n      console.warn(`navigator.clipboard.readText() failed (${error.message}). Failling back to navigator.clipboard.read()`);\n    } else {\n      throw error;\n    }\n  }\n\n  let clipboardItems;\n\n  try {\n    clipboardItems = yield (_d = navigator.clipboard) === null || _d === void 0 ? void 0 : _d.read();\n  } catch (error) {\n    if (error.name === "DataError") {\n      console.warn(`navigator.clipboard.read() error, clipboard is probably empty: ${error.message}`);\n      return types;\n    }\n\n    throw error;\n  }\n\n  for (const item of clipboardItems) {\n    for (const type of item.types) {\n      if (!(0,_utils__WEBPACK_IMPORTED_MODULE_6__.isMemberOf)(_constants__WEBPACK_IMPORTED_MODULE_1__.ALLOWED_PASTE_MIME_TYPES, type)) {\n        continue;\n      }\n\n      try {\n        types[type] = yield (yield item.getType(type)).text();\n      } catch (error) {\n        console.warn(`Cannot retrieve ${type} from clipboardItem: ${error.message}`);\n      }\n    }\n  }\n\n  if (Object.keys(types).length === 0) {\n    console.warn("No clipboard data found from clipboard.read().");\n    return types;\n  }\n\n  return types;\n});\n/**\n * Parses "paste" ClipboardEvent.\n */\n\nconst parseClipboardEvent = (event, isPlainPaste = false) => __awaiter(void 0, void 0, void 0, function* () {\n  var _e, _f;\n\n  try {\n    const mixedContent = !isPlainPaste && event && maybeParseHTMLPaste(event);\n\n    if (mixedContent) {\n      if (mixedContent.value.every(item => item.type === "text")) {\n        return {\n          type: "text",\n          value: ((_e = event.clipboardData) === null || _e === void 0 ? void 0 : _e.getData("text/plain")) || mixedContent.value.map(item => item.value).join("\\n").trim()\n        };\n      }\n\n      return mixedContent;\n    }\n\n    const text = (_f = event.clipboardData) === null || _f === void 0 ? void 0 : _f.getData("text/plain");\n    return {\n      type: "text",\n      value: (text || "").trim()\n    };\n  } catch (_g) {\n    return {\n      type: "text",\n      value: ""\n    };\n  }\n});\n/**\n * Attempts to parse clipboard. Prefers system clipboard.\n */\n\n\nconst parseClipboard = (event, isPlainPaste = false) => __awaiter(void 0, void 0, void 0, function* () {\n  const parsedEventData = yield parseClipboardEvent(event, isPlainPaste);\n\n  if (parsedEventData.type === "mixedContent") {\n    return {\n      mixedContent: parsedEventData.value\n    };\n  }\n\n  try {\n    // if system clipboard contains spreadsheet, use it even though it\'s\n    // technically possible it\'s staler than in-app clipboard\n    const spreadsheetResult = !isPlainPaste && parsePotentialSpreadsheet(parsedEventData.value);\n\n    if (spreadsheetResult) {\n      return spreadsheetResult;\n    }\n  } catch (error) {\n    console.error(error);\n  }\n\n  try {\n    const systemClipboardData = JSON.parse(parsedEventData.value);\n    const programmaticAPI = systemClipboardData.type === _constants__WEBPACK_IMPORTED_MODULE_1__.EXPORT_DATA_TYPES.excalidrawClipboardWithAPI;\n\n    if (clipboardContainsElements(systemClipboardData)) {\n      return {\n        elements: systemClipboardData.elements,\n        files: systemClipboardData.files,\n        text: isPlainPaste ? JSON.stringify(systemClipboardData.elements, null, 2) : undefined,\n        programmaticAPI\n      };\n    }\n  } catch (_h) {}\n\n  return {\n    text: parsedEventData.value\n  };\n});\nconst copyBlobToClipboardAsPng = blob => __awaiter(void 0, void 0, void 0, function* () {\n  try {\n    // in Safari so far we need to construct the ClipboardItem synchronously\n    // (i.e. in the same tick) otherwise browser will complain for lack of\n    // user intent. Using a Promise ClipboardItem constructor solves this.\n    // https://bugs.webkit.org/show_bug.cgi?id=222262\n    //\n    // Note that Firefox (and potentially others) seems to support Promise\n    // ClipboardItem constructor, but throws on an unrelated MIME type error.\n    // So we need to await this and fallback to awaiting the blob if applicable.\n    yield navigator.clipboard.write([new window.ClipboardItem({\n      [_constants__WEBPACK_IMPORTED_MODULE_1__.MIME_TYPES.png]: blob\n    })]);\n  } catch (error) {\n    // if we\'re using a Promise ClipboardItem, let\'s try constructing\n    // with resolution value instead\n    if ((0,_utils__WEBPACK_IMPORTED_MODULE_6__.isPromiseLike)(blob)) {\n      yield navigator.clipboard.write([new window.ClipboardItem({\n        [_constants__WEBPACK_IMPORTED_MODULE_1__.MIME_TYPES.png]: yield blob\n      })]);\n    } else {\n      throw error;\n    }\n  }\n});\nconst copyTextToSystemClipboard = (text, clipboardEvent) => __awaiter(void 0, void 0, void 0, function* () {\n  var _j, _k; // (1) first try using Async Clipboard API\n\n\n  if (probablySupportsClipboardWriteText) {\n    try {\n      // NOTE: doesn\'t work on FF on non-HTTPS domains, or when document\n      // not focused\n      yield navigator.clipboard.writeText(text || "");\n      return;\n    } catch (error) {\n      console.error(error);\n    }\n  } // (2) if fails and we have access to ClipboardEvent, use plain old setData()\n\n\n  try {\n    if (clipboardEvent) {\n      (_j = clipboardEvent.clipboardData) === null || _j === void 0 ? void 0 : _j.setData("text/plain", text || "");\n\n      if (((_k = clipboardEvent.clipboardData) === null || _k === void 0 ? void 0 : _k.getData("text/plain")) !== text) {\n        throw new Error("Failed to setData on clipboardEvent");\n      }\n\n      return;\n    }\n  } catch (error) {\n    console.error(error);\n  } // (3) if that fails, use document.execCommand\n\n\n  if (!copyTextViaExecCommand(text)) {\n    throw new Error((0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)("errors.copyToSystemClipboardFailed"));\n  }\n}); // adapted from https://github.com/zenorocha/clipboard.js/blob/ce79f170aa655c408b6aab33c9472e8e4fa52e19/src/clipboard-action.js#L48\n\nconst copyTextViaExecCommand = text => {\n  // execCommand doesn\'t allow copying empty strings, so if we\'re\n  // clearing clipboard using this API, we must copy at least an empty char\n  if (!text) {\n    text = " ";\n  }\n\n  const isRTL = document.documentElement.getAttribute("dir") === "rtl";\n  const textarea = document.createElement("textarea");\n  textarea.style.border = "0";\n  textarea.style.padding = "0";\n  textarea.style.margin = "0";\n  textarea.style.position = "absolute";\n  textarea.style[isRTL ? "right" : "left"] = "-9999px";\n  const yPosition = window.pageYOffset || document.documentElement.scrollTop;\n  textarea.style.top = `${yPosition}px`; // Prevent zooming on iOS\n\n  textarea.style.fontSize = "12pt";\n  textarea.setAttribute("readonly", "");\n  textarea.value = text;\n  document.body.appendChild(textarea);\n  let success = false;\n\n  try {\n    textarea.select();\n    textarea.setSelectionRange(0, textarea.value.length);\n    success = document.execCommand("copy");\n  } catch (error) {\n    console.error(error);\n  }\n\n  textarea.remove();\n  return success;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 21828 characters]\n//# sourceURL=webpack-internal:///../../clipboard.ts\n');
              }
            ),
            /***/
            "../../colors.ts": (
              /*!***********************!*\
                !*** ../../colors.ts ***!
                \***********************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "CANVAS_PALETTE_SHADE_INDEXES": () => (/* binding */ CANVAS_PALETTE_SHADE_INDEXES),\n/* harmony export */   "COLORS_PER_ROW": () => (/* binding */ COLORS_PER_ROW),\n/* harmony export */   "COLOR_PALETTE": () => (/* binding */ COLOR_PALETTE),\n/* harmony export */   "DEFAULT_CANVAS_BACKGROUND_PICKS": () => (/* binding */ DEFAULT_CANVAS_BACKGROUND_PICKS),\n/* harmony export */   "DEFAULT_CHART_COLOR_INDEX": () => (/* binding */ DEFAULT_CHART_COLOR_INDEX),\n/* harmony export */   "DEFAULT_ELEMENT_BACKGROUND_COLOR_INDEX": () => (/* binding */ DEFAULT_ELEMENT_BACKGROUND_COLOR_INDEX),\n/* harmony export */   "DEFAULT_ELEMENT_BACKGROUND_COLOR_PALETTE": () => (/* binding */ DEFAULT_ELEMENT_BACKGROUND_COLOR_PALETTE),\n/* harmony export */   "DEFAULT_ELEMENT_BACKGROUND_PICKS": () => (/* binding */ DEFAULT_ELEMENT_BACKGROUND_PICKS),\n/* harmony export */   "DEFAULT_ELEMENT_STROKE_COLOR_INDEX": () => (/* binding */ DEFAULT_ELEMENT_STROKE_COLOR_INDEX),\n/* harmony export */   "DEFAULT_ELEMENT_STROKE_COLOR_PALETTE": () => (/* binding */ DEFAULT_ELEMENT_STROKE_COLOR_PALETTE),\n/* harmony export */   "DEFAULT_ELEMENT_STROKE_PICKS": () => (/* binding */ DEFAULT_ELEMENT_STROKE_PICKS),\n/* harmony export */   "ELEMENTS_PALETTE_SHADE_INDEXES": () => (/* binding */ ELEMENTS_PALETTE_SHADE_INDEXES),\n/* harmony export */   "MAX_CUSTOM_COLORS_USED_IN_CANVAS": () => (/* binding */ MAX_CUSTOM_COLORS_USED_IN_CANVAS),\n/* harmony export */   "getAllColorsSpecificShade": () => (/* binding */ getAllColorsSpecificShade),\n/* harmony export */   "getSpecificColorShades": () => (/* binding */ getSpecificColorShades),\n/* harmony export */   "rgbToHex": () => (/* binding */ rgbToHex)\n/* harmony export */ });\n/* harmony import */ var open_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! open-color */ "../../../node_modules/open-color/open-color.json");\n // FIXME can\'t put to utils.ts rn because of circular dependency\n\nconst pick = (source, keys) => {\n  return keys.reduce((acc, key) => {\n    if (key in source) {\n      acc[key] = source[key];\n    }\n\n    return acc;\n  }, {});\n};\n\nconst MAX_CUSTOM_COLORS_USED_IN_CANVAS = 5;\nconst COLORS_PER_ROW = 5;\nconst DEFAULT_CHART_COLOR_INDEX = 4;\nconst DEFAULT_ELEMENT_STROKE_COLOR_INDEX = 4;\nconst DEFAULT_ELEMENT_BACKGROUND_COLOR_INDEX = 1;\nconst ELEMENTS_PALETTE_SHADE_INDEXES = [0, 2, 4, 6, 8];\nconst CANVAS_PALETTE_SHADE_INDEXES = [0, 1, 2, 3, 4];\nconst getSpecificColorShades = (color, indexArr) => {\n  return indexArr.map(index => open_color__WEBPACK_IMPORTED_MODULE_0__[color][index]);\n};\nconst COLOR_PALETTE = {\n  transparent: "transparent",\n  black: "#1e1e1e",\n  white: "#ffffff",\n  // open-colors\n  gray: getSpecificColorShades("gray", ELEMENTS_PALETTE_SHADE_INDEXES),\n  red: getSpecificColorShades("red", ELEMENTS_PALETTE_SHADE_INDEXES),\n  pink: getSpecificColorShades("pink", ELEMENTS_PALETTE_SHADE_INDEXES),\n  grape: getSpecificColorShades("grape", ELEMENTS_PALETTE_SHADE_INDEXES),\n  violet: getSpecificColorShades("violet", ELEMENTS_PALETTE_SHADE_INDEXES),\n  blue: getSpecificColorShades("blue", ELEMENTS_PALETTE_SHADE_INDEXES),\n  cyan: getSpecificColorShades("cyan", ELEMENTS_PALETTE_SHADE_INDEXES),\n  teal: getSpecificColorShades("teal", ELEMENTS_PALETTE_SHADE_INDEXES),\n  green: getSpecificColorShades("green", ELEMENTS_PALETTE_SHADE_INDEXES),\n  yellow: getSpecificColorShades("yellow", ELEMENTS_PALETTE_SHADE_INDEXES),\n  orange: getSpecificColorShades("orange", ELEMENTS_PALETTE_SHADE_INDEXES),\n  // radix bronze shades 3,5,7,9,11\n  bronze: ["#f8f1ee", "#eaddd7", "#d2bab0", "#a18072", "#846358"]\n};\nconst COMMON_ELEMENT_SHADES = pick(COLOR_PALETTE, ["cyan", "blue", "violet", "grape", "pink", "green", "teal", "yellow", "orange", "red"]); // -----------------------------------------------------------------------------\n// quick picks defaults\n// -----------------------------------------------------------------------------\n// ORDER matters for positioning in quick picker\n\nconst DEFAULT_ELEMENT_STROKE_PICKS = [COLOR_PALETTE.black, COLOR_PALETTE.red[DEFAULT_ELEMENT_STROKE_COLOR_INDEX], COLOR_PALETTE.green[DEFAULT_ELEMENT_STROKE_COLOR_INDEX], COLOR_PALETTE.blue[DEFAULT_ELEMENT_STROKE_COLOR_INDEX], COLOR_PALETTE.yellow[DEFAULT_ELEMENT_STROKE_COLOR_INDEX]]; // ORDER matters for positioning in quick picker\n\nconst DEFAULT_ELEMENT_BACKGROUND_PICKS = [COLOR_PALETTE.transparent, COLOR_PALETTE.red[DEFAULT_ELEMENT_BACKGROUND_COLOR_INDEX], COLOR_PALETTE.green[DEFAULT_ELEMENT_BACKGROUND_COLOR_INDEX], COLOR_PALETTE.blue[DEFAULT_ELEMENT_BACKGROUND_COLOR_INDEX], COLOR_PALETTE.yellow[DEFAULT_ELEMENT_BACKGROUND_COLOR_INDEX]]; // ORDER matters for positioning in quick picker\n\nconst DEFAULT_CANVAS_BACKGROUND_PICKS = [COLOR_PALETTE.white, // radix slate2\n"#f8f9fa", // radix blue2\n"#f5faff", // radix yellow2\n"#fffce8", // radix bronze2\n"#fdf8f6"]; // -----------------------------------------------------------------------------\n// palette defaults\n// -----------------------------------------------------------------------------\n\nconst DEFAULT_ELEMENT_STROKE_COLOR_PALETTE = Object.assign({\n  // 1st row\n  transparent: COLOR_PALETTE.transparent,\n  white: COLOR_PALETTE.white,\n  gray: COLOR_PALETTE.gray,\n  black: COLOR_PALETTE.black,\n  bronze: COLOR_PALETTE.bronze\n}, COMMON_ELEMENT_SHADES); // ORDER matters for positioning in pallete (5x3 grid)s\n\nconst DEFAULT_ELEMENT_BACKGROUND_COLOR_PALETTE = Object.assign({\n  transparent: COLOR_PALETTE.transparent,\n  white: COLOR_PALETTE.white,\n  gray: COLOR_PALETTE.gray,\n  black: COLOR_PALETTE.black,\n  bronze: COLOR_PALETTE.bronze\n}, COMMON_ELEMENT_SHADES); // -----------------------------------------------------------------------------\n// helpers\n// -----------------------------------------------------------------------------\n// !!!MUST BE WITHOUT GRAY, TRANSPARENT AND BLACK!!!\n\nconst getAllColorsSpecificShade = index => [// 2nd row\nCOLOR_PALETTE.cyan[index], COLOR_PALETTE.blue[index], COLOR_PALETTE.violet[index], COLOR_PALETTE.grape[index], COLOR_PALETTE.pink[index], // 3rd row\nCOLOR_PALETTE.green[index], COLOR_PALETTE.teal[index], COLOR_PALETTE.yellow[index], COLOR_PALETTE.orange[index], COLOR_PALETTE.red[index]];\nconst rgbToHex = (r, g, b) => `#${((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1)}`; // -----------------------------------------------------------------------------//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 7144 characters]\n//# sourceURL=webpack-internal:///../../colors.ts\n');
              }
            ),
            /***/
            "../../components/Actions.tsx": (
              /*!************************************!*\
                !*** ../../components/Actions.tsx ***!
                \************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "ExitZenModeAction": () => (/* binding */ ExitZenModeAction),\n/* harmony export */   "FinalizeAction": () => (/* binding */ FinalizeAction),\n/* harmony export */   "SelectedShapeActions": () => (/* binding */ SelectedShapeActions),\n/* harmony export */   "ShapesSwitcher": () => (/* binding */ ShapesSwitcher),\n/* harmony export */   "UndoRedoActions": () => (/* binding */ UndoRedoActions),\n/* harmony export */   "ZoomActions": () => (/* binding */ ZoomActions)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _components_App__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../components/App */ "../../components/App.tsx");\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../scene */ "../../scene/index.ts");\n/* harmony import */ var _shapes__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../shapes */ "../../shapes.tsx");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _Stack__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Stack */ "../../components/Stack.tsx");\n/* harmony import */ var _ToolButton__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./ToolButton */ "../../components/ToolButton.tsx");\n/* harmony import */ var _scene_comparisons__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../scene/comparisons */ "../../scene/comparisons.ts");\n/* harmony import */ var _analytics__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../analytics */ "../../analytics.ts");\n/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../element/typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../actions */ "../../actions/index.ts");\n/* harmony import */ var _Tooltip__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./Tooltip */ "../../components/Tooltip.tsx");\n/* harmony import */ var _element_textElement__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../element/textElement */ "../../element/textElement.ts");\n/* harmony import */ var _Actions_scss__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./Actions.scss */ "../../components/Actions.scss");\n/* harmony import */ var _dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./dropdownMenu/DropdownMenu */ "../../components/dropdownMenu/DropdownMenu.tsx");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./icons */ "../../components/icons.tsx");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst SelectedShapeActions = ({\n  appState,\n  elements,\n  renderAction\n}) => {\n  var _a;\n\n  const targetElements = (0,_scene__WEBPACK_IMPORTED_MODULE_5__.getTargetElements)((0,_element__WEBPACK_IMPORTED_MODULE_2__.getNonDeletedElements)(elements), appState);\n  let isSingleElementBoundContainer = false;\n\n  if (targetElements.length === 2 && ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_12__.hasBoundTextElement)(targetElements[0]) || (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_12__.hasBoundTextElement)(targetElements[1]))) {\n    isSingleElementBoundContainer = true;\n  }\n\n  const isEditing = Boolean(appState.editingElement);\n  const device = (0,_components_App__WEBPACK_IMPORTED_MODULE_4__.useDevice)();\n  const isRTL = document.documentElement.getAttribute("dir") === "rtl";\n  const showFillIcons = (0,_scene__WEBPACK_IMPORTED_MODULE_5__.hasBackground)(appState.activeTool.type) && !(0,_utils__WEBPACK_IMPORTED_MODULE_7__.isTransparent)(appState.currentItemBackgroundColor) || targetElements.some(element => (0,_scene__WEBPACK_IMPORTED_MODULE_5__.hasBackground)(element.type) && !(0,_utils__WEBPACK_IMPORTED_MODULE_7__.isTransparent)(element.backgroundColor));\n  const showChangeBackgroundIcons = (0,_scene__WEBPACK_IMPORTED_MODULE_5__.hasBackground)(appState.activeTool.type) || targetElements.some(element => (0,_scene__WEBPACK_IMPORTED_MODULE_5__.hasBackground)(element.type));\n  const showLinkIcon = targetElements.length === 1 || isSingleElementBoundContainer;\n  let commonSelectedType = ((_a = targetElements[0]) === null || _a === void 0 ? void 0 : _a.type) || null;\n\n  for (const element of targetElements) {\n    if (element.type !== commonSelectedType) {\n      commonSelectedType = null;\n      break;\n    }\n  }\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n    className: "panelColumn"\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n      children: ((0,_scene_comparisons__WEBPACK_IMPORTED_MODULE_10__.hasStrokeColor)(appState.activeTool.type) && appState.activeTool.type !== "image" && commonSelectedType !== "image" && commonSelectedType !== "frame" || targetElements.some(element => (0,_scene_comparisons__WEBPACK_IMPORTED_MODULE_10__.hasStrokeColor)(element.type))) && renderAction("changeStrokeColor")\n    }), showChangeBackgroundIcons && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n      children: renderAction("changeBackgroundColor")\n    }), showFillIcons && renderAction("changeFillStyle"), ((0,_scene__WEBPACK_IMPORTED_MODULE_5__.hasStrokeWidth)(appState.activeTool.type) || targetElements.some(element => (0,_scene__WEBPACK_IMPORTED_MODULE_5__.hasStrokeWidth)(element.type))) && renderAction("changeStrokeWidth"), (appState.activeTool.type === "freedraw" || targetElements.some(element => element.type === "freedraw")) && renderAction("changeStrokeShape"), ((0,_scene__WEBPACK_IMPORTED_MODULE_5__.hasStrokeStyle)(appState.activeTool.type) || targetElements.some(element => (0,_scene__WEBPACK_IMPORTED_MODULE_5__.hasStrokeStyle)(element.type))) && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n      children: [renderAction("changeStrokeStyle"), renderAction("changeSloppiness")]\n    }), ((0,_scene__WEBPACK_IMPORTED_MODULE_5__.canChangeRoundness)(appState.activeTool.type) || targetElements.some(element => (0,_scene__WEBPACK_IMPORTED_MODULE_5__.canChangeRoundness)(element.type))) && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n      children: renderAction("changeRoundness")\n    }), (appState.activeTool.type === "text" || targetElements.some(_element_typeChecks__WEBPACK_IMPORTED_MODULE_12__.isTextElement)) && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n      children: [renderAction("changeFontSize"), renderAction("changeFontFamily"), (appState.activeTool.type === "text" || (0,_element_textElement__WEBPACK_IMPORTED_MODULE_16__.suppportsHorizontalAlign)(targetElements)) && renderAction("changeTextAlign")]\n    }), (0,_element_textElement__WEBPACK_IMPORTED_MODULE_16__.shouldAllowVerticalAlign)(targetElements) && renderAction("changeVerticalAlign"), ((0,_scene__WEBPACK_IMPORTED_MODULE_5__.canHaveArrowheads)(appState.activeTool.type) || targetElements.some(element => (0,_scene__WEBPACK_IMPORTED_MODULE_5__.canHaveArrowheads)(element.type))) && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n      children: renderAction("changeArrowhead")\n    }), renderAction("changeOpacity"), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("fieldset", {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("legend", {\n        children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("labels.layers")\n      }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n        className: "buttonList"\n      }, {\n        children: [renderAction("sendToBack"), renderAction("sendBackward"), renderAction("bringToFront"), renderAction("bringForward")]\n      }))]\n    }), targetElements.length > 1 && !isSingleElementBoundContainer && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("fieldset", {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("legend", {\n        children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("labels.align")\n      }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n        className: "buttonList"\n      }, {\n        children: [isRTL ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n          children: [renderAction("alignRight"), renderAction("alignHorizontallyCentered"), renderAction("alignLeft")]\n        }) : (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n          children: [renderAction("alignLeft"), renderAction("alignHorizontallyCentered"), renderAction("alignRight")]\n        }), targetElements.length > 2 && renderAction("distributeHorizontally"), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n          style: {\n            flexBasis: "100%",\n            height: 0\n          }\n        }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n          style: {\n            display: "flex",\n            flexWrap: "wrap",\n            gap: ".5rem",\n            marginTop: "-0.5rem"\n          }\n        }, {\n          children: [renderAction("alignTop"), renderAction("alignVerticallyCentered"), renderAction("alignBottom"), targetElements.length > 2 && renderAction("distributeVertically")]\n        }))]\n      }))]\n    }), !isEditing && targetElements.length > 0 && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("fieldset", {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("legend", {\n        children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("labels.actions")\n      }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n        className: "buttonList"\n      }, {\n        children: [!device.editor.isMobile && renderAction("duplicateSelection"), !device.editor.isMobile && renderAction("deleteSelectedElements"), renderAction("group"), renderAction("ungroup"), showLinkIcon && renderAction("hyperlink")]\n      }))]\n    })]\n  }));\n};\nconst ShapesSwitcher = ({\n  activeTool,\n  appState,\n  app,\n  UIOptions\n}) => {\n  const [isExtraToolsMenuOpen, setIsExtraToolsMenuOpen] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n  const frameToolSelected = activeTool.type === "frame";\n  const laserToolSelected = activeTool.type === "laser";\n  const embeddableToolSelected = activeTool.type === "embeddable";\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n    children: [_shapes__WEBPACK_IMPORTED_MODULE_6__.SHAPES.map(({\n      value,\n      icon,\n      key,\n      numericKey,\n      fillable\n    }, index) => {\n      var _a;\n\n      if (((_a = UIOptions.tools) === null || _a === void 0 ? void 0 : _a[value]) === false) {\n        return null;\n      }\n\n      const label = (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)(`toolBar.${value}`);\n      const letter = key && (0,_utils__WEBPACK_IMPORTED_MODULE_7__.capitalizeString)(typeof key === "string" ? key : key[0]);\n      const shortcut = letter ? `${letter} ${(0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("helpDialog.or")} ${numericKey}` : `${numericKey}`;\n      return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ToolButton__WEBPACK_IMPORTED_MODULE_9__.ToolButton, {\n        className: (0,clsx__WEBPACK_IMPORTED_MODULE_13__["default"])("Shape", {\n          fillable\n        }),\n        type: "radio",\n        icon: icon,\n        checked: activeTool.type === value,\n        name: "editor-current-shape",\n        title: `${(0,_utils__WEBPACK_IMPORTED_MODULE_7__.capitalizeString)(label)} \u2014 ${shortcut}`,\n        keyBindingLabel: numericKey || letter,\n        "aria-label": (0,_utils__WEBPACK_IMPORTED_MODULE_7__.capitalizeString)(label),\n        "aria-keyshortcuts": shortcut,\n        "data-testid": `toolbar-${value}`,\n        onPointerDown: ({\n          pointerType\n        }) => {\n          if (!appState.penDetected && pointerType === "pen") {\n            app.togglePenMode(true);\n          }\n        },\n        onChange: ({\n          pointerType\n        }) => {\n          if (appState.activeTool.type !== value) {\n            (0,_analytics__WEBPACK_IMPORTED_MODULE_11__.trackEvent)("toolbar", value, "ui");\n          }\n\n          if (value === "image") {\n            app.setActiveTool({\n              type: value,\n              insertOnCanvasDirectly: pointerType !== "mouse"\n            });\n          } else {\n            app.setActiveTool({\n              type: value\n            });\n          }\n        }\n      }, value);\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n      className: "App-toolbar__divider"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_18__["default"], Object.assign({\n      open: isExtraToolsMenuOpen\n    }, {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_18__["default"].Trigger, Object.assign({\n        className: (0,clsx__WEBPACK_IMPORTED_MODULE_13__["default"])("App-toolbar__extra-tools-trigger", {\n          "App-toolbar__extra-tools-trigger--selected": frameToolSelected || embeddableToolSelected || // in collab we\'re already highlighting the laser button\n          // outside toolbar, so let\'s not highlight extra-tools button\n          // on top of it\n          laserToolSelected && !app.props.isCollaborating\n        }),\n        onToggle: () => setIsExtraToolsMenuOpen(!isExtraToolsMenuOpen),\n        title: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("toolBar.extraTools")\n      }, {\n        children: _icons__WEBPACK_IMPORTED_MODULE_19__.extraToolsIcon\n      })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_18__["default"].Content, Object.assign({\n        onClickOutside: () => setIsExtraToolsMenuOpen(false),\n        onSelect: () => setIsExtraToolsMenuOpen(false),\n        className: "App-toolbar__extra-tools-dropdown"\n      }, {\n        children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_18__["default"].Item, Object.assign({\n          onSelect: () => app.setActiveTool({\n            type: "frame"\n          }),\n          icon: _icons__WEBPACK_IMPORTED_MODULE_19__.frameToolIcon,\n          shortcut: _keys__WEBPACK_IMPORTED_MODULE_20__.KEYS.F.toLocaleUpperCase(),\n          "data-testid": "toolbar-frame",\n          selected: frameToolSelected\n        }, {\n          children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("toolBar.frame")\n        })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_18__["default"].Item, Object.assign({\n          onSelect: () => app.setActiveTool({\n            type: "embeddable"\n          }),\n          icon: _icons__WEBPACK_IMPORTED_MODULE_19__.EmbedIcon,\n          "data-testid": "toolbar-embeddable",\n          selected: embeddableToolSelected\n        }, {\n          children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("toolBar.embeddable")\n        })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_18__["default"].Item, Object.assign({\n          onSelect: () => app.setActiveTool({\n            type: "laser"\n          }),\n          icon: _icons__WEBPACK_IMPORTED_MODULE_19__.laserPointerToolIcon,\n          "data-testid": "toolbar-laser",\n          selected: laserToolSelected,\n          shortcut: _keys__WEBPACK_IMPORTED_MODULE_20__.KEYS.K.toLocaleUpperCase()\n        }, {\n          children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("toolBar.laser")\n        })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_18__["default"].Item, Object.assign({\n          onSelect: () => app.setOpenDialog("mermaid"),\n          icon: _icons__WEBPACK_IMPORTED_MODULE_19__.mermaidLogoIcon,\n          "data-testid": "toolbar-embeddable"\n        }, {\n          children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("toolBar.mermaidToExcalidraw")\n        }))]\n      }))]\n    }))]\n  });\n};\nconst ZoomActions = ({\n  renderAction,\n  zoom\n}) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Stack__WEBPACK_IMPORTED_MODULE_8__["default"].Col, Object.assign({\n  gap: 1,\n  className: "zoom-actions"\n}, {\n  children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Stack__WEBPACK_IMPORTED_MODULE_8__["default"].Row, Object.assign({\n    align: "center"\n  }, {\n    children: [renderAction("zoomOut"), renderAction("resetZoom"), renderAction("zoomIn")]\n  }))\n}));\nconst UndoRedoActions = ({\n  renderAction,\n  className\n}) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n  className: `undo-redo-buttons ${className}`\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: "undo-button-container"\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Tooltip__WEBPACK_IMPORTED_MODULE_15__.Tooltip, Object.assign({\n      label: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("buttons.undo")\n    }, {\n      children: renderAction("undo")\n    }))\n  })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: "redo-button-container"\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Tooltip__WEBPACK_IMPORTED_MODULE_15__.Tooltip, Object.assign({\n      label: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("buttons.redo")\n    }, {\n      children: [" ", renderAction("redo")]\n    }))\n  }))]\n}));\nconst ExitZenModeAction = ({\n  actionManager,\n  showExitZenModeBtn\n}) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("button", Object.assign({\n  className: (0,clsx__WEBPACK_IMPORTED_MODULE_13__["default"])("disable-zen-mode", {\n    "disable-zen-mode--visible": showExitZenModeBtn\n  }),\n  onClick: () => actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_14__.actionToggleZenMode)\n}, {\n  children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("buttons.exitZenMode")\n}));\nconst FinalizeAction = ({\n  renderAction,\n  className\n}) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n  className: `finalize-button ${className}`\n}, {\n  children: renderAction("finalize", {\n    size: "small"\n  })\n}));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 21548 characters]\n//# sourceURL=webpack-internal:///../../components/Actions.tsx\n');
              }
            ),
            /***/
            "../../components/ActiveConfirmDialog.tsx": (
              /*!************************************************!*\
                !*** ../../components/ActiveConfirmDialog.tsx ***!
                \************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "ActiveConfirmDialog": () => (/* binding */ ActiveConfirmDialog),\n/* harmony export */   "activeConfirmDialogAtom": () => (/* binding */ activeConfirmDialogAtom)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var jotai__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! jotai */ "../../../node_modules/jotai/esm/index.mjs");\n/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../actions */ "../../actions/index.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _jotai__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../jotai */ "../../jotai.ts");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./App */ "../../components/App.tsx");\n/* harmony import */ var _ConfirmDialog__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./ConfirmDialog */ "../../components/ConfirmDialog.tsx");\n\n\n\n\n\n\n\nconst activeConfirmDialogAtom = (0,jotai__WEBPACK_IMPORTED_MODULE_6__.atom)(null);\nconst ActiveConfirmDialog = () => {\n  const [activeConfirmDialog, setActiveConfirmDialog] = (0,jotai__WEBPACK_IMPORTED_MODULE_6__.useAtom)(activeConfirmDialogAtom, _jotai__WEBPACK_IMPORTED_MODULE_3__.jotaiScope);\n  const actionManager = (0,_App__WEBPACK_IMPORTED_MODULE_4__.useExcalidrawActionManager)();\n\n  if (!activeConfirmDialog) {\n    return null;\n  }\n\n  if (activeConfirmDialog === "clearCanvas") {\n    return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ConfirmDialog__WEBPACK_IMPORTED_MODULE_5__["default"], Object.assign({\n      onConfirm: () => {\n        actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_1__.actionClearCanvas);\n        setActiveConfirmDialog(null);\n      },\n      onCancel: () => setActiveConfirmDialog(null),\n      title: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("clearCanvasDialog.title")\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("p", Object.assign({\n        className: "clear-canvas__content"\n      }, {\n        children: [" ", (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("alerts.clearReset")]\n      }))\n    }));\n  }\n\n  return null;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9BY3RpdmVDb25maXJtRGlhbG9nLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBK0Q7QUFDekI7QUFDUztBQUNuQjtBQUNVO0FBQ2E7QUFDUDtBQUNyQyxnQ0FBZ0MsMkNBQUk7QUFDcEM7QUFDUCx3REFBd0QsOENBQU8sMEJBQTBCLDhDQUFVO0FBQ25HLHdCQUF3QixnRUFBMEI7O0FBRWxEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFdBQVcsc0RBQUksQ0FBQyxzREFBYTtBQUM3QjtBQUNBLG9DQUFvQyx1REFBaUI7QUFDckQ7QUFDQSxPQUFPO0FBQ1A7QUFDQSxhQUFhLHdDQUFDO0FBQ2QsS0FBSztBQUNMLGdCQUFnQix1REFBSztBQUNyQjtBQUNBLE9BQU87QUFDUCx3QkFBd0Isd0NBQUM7QUFDekIsT0FBTztBQUNQLEtBQUs7QUFDTDs7QUFFQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvQWN0aXZlQ29uZmlybURpYWxvZy50c3g/NzA5ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3hzIGFzIF9qc3hzLCBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgYXRvbSwgdXNlQXRvbSB9IGZyb20gXCJqb3RhaVwiO1xuaW1wb3J0IHsgYWN0aW9uQ2xlYXJDYW52YXMgfSBmcm9tIFwiLi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgdCB9IGZyb20gXCIuLi9pMThuXCI7XG5pbXBvcnQgeyBqb3RhaVNjb3BlIH0gZnJvbSBcIi4uL2pvdGFpXCI7XG5pbXBvcnQgeyB1c2VFeGNhbGlkcmF3QWN0aW9uTWFuYWdlciB9IGZyb20gXCIuL0FwcFwiO1xuaW1wb3J0IENvbmZpcm1EaWFsb2cgZnJvbSBcIi4vQ29uZmlybURpYWxvZ1wiO1xuZXhwb3J0IGNvbnN0IGFjdGl2ZUNvbmZpcm1EaWFsb2dBdG9tID0gYXRvbShudWxsKTtcbmV4cG9ydCBjb25zdCBBY3RpdmVDb25maXJtRGlhbG9nID0gKCkgPT4ge1xuICBjb25zdCBbYWN0aXZlQ29uZmlybURpYWxvZywgc2V0QWN0aXZlQ29uZmlybURpYWxvZ10gPSB1c2VBdG9tKGFjdGl2ZUNvbmZpcm1EaWFsb2dBdG9tLCBqb3RhaVNjb3BlKTtcbiAgY29uc3QgYWN0aW9uTWFuYWdlciA9IHVzZUV4Y2FsaWRyYXdBY3Rpb25NYW5hZ2VyKCk7XG5cbiAgaWYgKCFhY3RpdmVDb25maXJtRGlhbG9nKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAoYWN0aXZlQ29uZmlybURpYWxvZyA9PT0gXCJjbGVhckNhbnZhc1wiKSB7XG4gICAgcmV0dXJuIF9qc3goQ29uZmlybURpYWxvZywgT2JqZWN0LmFzc2lnbih7XG4gICAgICBvbkNvbmZpcm06ICgpID0+IHtcbiAgICAgICAgYWN0aW9uTWFuYWdlci5leGVjdXRlQWN0aW9uKGFjdGlvbkNsZWFyQ2FudmFzKTtcbiAgICAgICAgc2V0QWN0aXZlQ29uZmlybURpYWxvZyhudWxsKTtcbiAgICAgIH0sXG4gICAgICBvbkNhbmNlbDogKCkgPT4gc2V0QWN0aXZlQ29uZmlybURpYWxvZyhudWxsKSxcbiAgICAgIHRpdGxlOiB0KFwiY2xlYXJDYW52YXNEaWFsb2cudGl0bGVcIilcbiAgICB9LCB7XG4gICAgICBjaGlsZHJlbjogX2pzeHMoXCJwXCIsIE9iamVjdC5hc3NpZ24oe1xuICAgICAgICBjbGFzc05hbWU6IFwiY2xlYXItY2FudmFzX19jb250ZW50XCJcbiAgICAgIH0sIHtcbiAgICAgICAgY2hpbGRyZW46IFtcIiBcIiwgdChcImFsZXJ0cy5jbGVhclJlc2V0XCIpXVxuICAgICAgfSkpXG4gICAgfSkpO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/ActiveConfirmDialog.tsx\n');
              }
            ),
            /***/
            "../../components/App.tsx": (
              /*!********************************!*\
                !*** ../../components/App.tsx ***!
                \********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "ExcalidrawContainerContext": () => (/* binding */ ExcalidrawContainerContext),\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */   "useApp": () => (/* binding */ useApp),\n/* harmony export */   "useAppProps": () => (/* binding */ useAppProps),\n/* harmony export */   "useDevice": () => (/* binding */ useDevice),\n/* harmony export */   "useExcalidrawActionManager": () => (/* binding */ useExcalidrawActionManager),\n/* harmony export */   "useExcalidrawAppState": () => (/* binding */ useExcalidrawAppState),\n/* harmony export */   "useExcalidrawContainer": () => (/* binding */ useExcalidrawContainer),\n/* harmony export */   "useExcalidrawElements": () => (/* binding */ useExcalidrawElements),\n/* harmony export */   "useExcalidrawSetAppState": () => (/* binding */ useExcalidrawSetAppState)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-dom */ "react-dom");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! roughjs/bin/rough */ "../../../node_modules/roughjs/bin/rough.js");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var nanoid__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(/*! nanoid */ "../../../node_modules/nanoid/index.browser.js");\n/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../actions */ "../../actions/index.ts");\n/* harmony import */ var _actions_actionHistory__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../actions/actionHistory */ "../../actions/actionHistory.tsx");\n/* harmony import */ var _actions_manager__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../actions/manager */ "../../actions/manager.tsx");\n/* harmony import */ var _actions_register__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../actions/register */ "../../actions/register.ts");\n/* harmony import */ var _analytics__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../analytics */ "../../analytics.ts");\n/* harmony import */ var _appState__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../appState */ "../../appState.ts");\n/* harmony import */ var _clipboard__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../clipboard */ "../../clipboard.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _data__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../data */ "../../data/index.ts");\n/* harmony import */ var _data_library__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../data/library */ "../../data/library.ts");\n/* harmony import */ var _data_restore__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../data/restore */ "../../data/restore.ts");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _element_binding__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../element/binding */ "../../element/binding.ts");\n/* harmony import */ var _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../element/linearElementEditor */ "../../element/linearElementEditor.ts");\n/* harmony import */ var _element_mutateElement__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../element/mutateElement */ "../../element/mutateElement.ts");\n/* harmony import */ var _element_newElement__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../element/newElement */ "../../element/newElement.ts");\n/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../element/typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var _gesture__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../gesture */ "../../gesture.ts");\n/* harmony import */ var _groups__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../groups */ "../../groups.ts");\n/* harmony import */ var _history__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../history */ "../../history.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _element_sizeHelpers__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ../element/sizeHelpers */ "../../element/sizeHelpers.ts");\n/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ../math */ "../../math.ts");\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ../scene */ "../../scene/index.ts");\n/* harmony import */ var _scene_Scene__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ../scene/Scene */ "../../scene/Scene.ts");\n/* harmony import */ var _scene_zoom__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ../scene/zoom */ "../../scene/zoom.ts");\n/* harmony import */ var _shapes__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ../shapes */ "../../shapes.tsx");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _element_embeddable__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ../element/embeddable */ "../../element/embeddable.ts");\n/* harmony import */ var _ContextMenu__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./ContextMenu */ "../../components/ContextMenu.tsx");\n/* harmony import */ var _LayerUI__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./LayerUI */ "../../components/LayerUI.tsx");\n/* harmony import */ var _Toast__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./Toast */ "../../components/Toast.tsx");\n/* harmony import */ var _actions_actionToggleViewMode__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ../actions/actionToggleViewMode */ "../../actions/actionToggleViewMode.tsx");\n/* harmony import */ var _data_blob__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ../data/blob */ "../../data/blob.ts");\n/* harmony import */ var _element_image__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ../element/image */ "../../element/image.ts");\n/* harmony import */ var lodash_throttle__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! lodash.throttle */ "../../../node_modules/lodash.throttle/index.js");\n/* harmony import */ var lodash_throttle__WEBPACK_IMPORTED_MODULE_41___default = /*#__PURE__*/__webpack_require__.n(lodash_throttle__WEBPACK_IMPORTED_MODULE_41__);\n/* harmony import */ var _data_filesystem__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ../data/filesystem */ "../../data/filesystem.ts");\n/* harmony import */ var _element_textElement__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ../element/textElement */ "../../element/textElement.ts");\n/* harmony import */ var _element_collision__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ../element/collision */ "../../element/collision.ts");\n/* harmony import */ var _element_Hyperlink__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ../element/Hyperlink */ "../../element/Hyperlink.tsx");\n/* harmony import */ var _data_url__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ../data/url */ "../../data/url.ts");\n/* harmony import */ var _element_transformHandles__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! ../element/transformHandles */ "../../element/transformHandles.ts");\n/* harmony import */ var _actions_actionElementLock__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! ../actions/actionElementLock */ "../../actions/actionElementLock.ts");\n/* harmony import */ var _scene_Fonts__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(/*! ../scene/Fonts */ "../../scene/Fonts.ts");\n/* harmony import */ var _frame__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(/*! ../frame */ "../../frame.ts");\n/* harmony import */ var _scene_selection__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(/*! ../scene/selection */ "../../scene/selection.ts");\n/* harmony import */ var _actions_actionClipboard__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(/*! ../actions/actionClipboard */ "../../actions/actionClipboard.tsx");\n/* harmony import */ var _actions_actionFrame__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(/*! ../actions/actionFrame */ "../../actions/actionFrame.ts");\n/* harmony import */ var _actions_actionCanvas__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(/*! ../actions/actionCanvas */ "../../actions/actionCanvas.tsx");\n/* harmony import */ var _jotai__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(/*! ../jotai */ "../../jotai.ts");\n/* harmony import */ var _ActiveConfirmDialog__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(/*! ./ActiveConfirmDialog */ "../../components/ActiveConfirmDialog.tsx");\n/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(/*! ../errors */ "../../errors.ts");\n/* harmony import */ var _snapping__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(/*! ../snapping */ "../../snapping.ts");\n/* harmony import */ var _actions_actionBoundText__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(/*! ../actions/actionBoundText */ "../../actions/actionBoundText.tsx");\n/* harmony import */ var _BraveMeasureTextError__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(/*! ./BraveMeasureTextError */ "../../components/BraveMeasureTextError.tsx");\n/* harmony import */ var _EyeDropper__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(/*! ./EyeDropper */ "../../components/EyeDropper.tsx");\n/* harmony import */ var _data_transform__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(/*! ../data/transform */ "../../data/transform.ts");\n/* harmony import */ var _Sidebar_Sidebar__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(/*! ./Sidebar/Sidebar */ "../../components/Sidebar/Sidebar.tsx");\n/* harmony import */ var _canvases__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(/*! ./canvases */ "../../components/canvases/index.tsx");\n/* harmony import */ var _scene_Renderer__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(/*! ../scene/Renderer */ "../../scene/Renderer.ts");\n/* harmony import */ var _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(/*! ../scene/ShapeCache */ "../../scene/ShapeCache.ts");\n/* harmony import */ var _MermaidToExcalidraw__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(/*! ./MermaidToExcalidraw */ "../../components/MermaidToExcalidraw.tsx");\n/* harmony import */ var _LaserTool_LaserTool__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(/*! ./LaserTool/LaserTool */ "../../components/LaserTool/LaserTool.tsx");\n/* harmony import */ var _LaserTool_LaserPathManager__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(/*! ./LaserTool/LaserPathManager */ "../../components/LaserTool/LaserPathManager.ts");\n/* harmony import */ var _cursor__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(/*! ../cursor */ "../../cursor.ts");\n/* harmony import */ var _emitter__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(/*! ../emitter */ "../../emitter.ts");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator["throw"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst AppContext = react__WEBPACK_IMPORTED_MODULE_1___default().createContext(null);\nconst AppPropsContext = react__WEBPACK_IMPORTED_MODULE_1___default().createContext(null);\nconst deviceContextInitialValue = {\n  viewport: {\n    isMobile: false,\n    isLandscape: false\n  },\n  editor: {\n    isMobile: false,\n    canFitSidebar: false\n  },\n  isTouchScreen: false\n};\nconst DeviceContext = react__WEBPACK_IMPORTED_MODULE_1___default().createContext(deviceContextInitialValue);\nDeviceContext.displayName = "DeviceContext";\nconst ExcalidrawContainerContext = react__WEBPACK_IMPORTED_MODULE_1___default().createContext({\n  container: null,\n  id: null\n});\nExcalidrawContainerContext.displayName = "ExcalidrawContainerContext";\nconst ExcalidrawElementsContext = react__WEBPACK_IMPORTED_MODULE_1___default().createContext([]);\nExcalidrawElementsContext.displayName = "ExcalidrawElementsContext";\nconst ExcalidrawAppStateContext = react__WEBPACK_IMPORTED_MODULE_1___default().createContext(Object.assign(Object.assign({}, (0,_appState__WEBPACK_IMPORTED_MODULE_10__.getDefaultAppState)()), {\n  width: 0,\n  height: 0,\n  offsetLeft: 0,\n  offsetTop: 0\n}));\nExcalidrawAppStateContext.displayName = "ExcalidrawAppStateContext";\nconst ExcalidrawSetAppStateContext = react__WEBPACK_IMPORTED_MODULE_1___default().createContext(() => {\n  console.warn("unitialized ExcalidrawSetAppStateContext context!");\n});\nExcalidrawSetAppStateContext.displayName = "ExcalidrawSetAppStateContext";\nconst ExcalidrawActionManagerContext = react__WEBPACK_IMPORTED_MODULE_1___default().createContext(null);\nExcalidrawActionManagerContext.displayName = "ExcalidrawActionManagerContext";\nconst useApp = () => (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(AppContext);\nconst useAppProps = () => (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(AppPropsContext);\nconst useDevice = () => (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(DeviceContext);\nconst useExcalidrawContainer = () => (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(ExcalidrawContainerContext);\nconst useExcalidrawElements = () => (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(ExcalidrawElementsContext);\nconst useExcalidrawAppState = () => (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(ExcalidrawAppStateContext);\nconst useExcalidrawSetAppState = () => (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(ExcalidrawSetAppStateContext);\nconst useExcalidrawActionManager = () => (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(ExcalidrawActionManagerContext);\nconst supportsResizeObserver = typeof window !== "undefined" && "ResizeObserver" in window;\nlet didTapTwice = false;\nlet tappedTwiceTimer = 0;\nlet isHoldingSpace = false;\nlet isPanning = false;\nlet isDraggingScrollBar = false;\nlet currentScrollBars = {\n  horizontal: null,\n  vertical: null\n};\nlet touchTimeout = 0;\nlet invalidateContextMenu = false;\n/**\n * Map of youtube embed video states\n */\n\nconst YOUTUBE_VIDEO_STATES = new Map();\nlet IS_PLAIN_PASTE = false;\nlet IS_PLAIN_PASTE_TIMER = 0;\nlet PLAIN_PASTE_TOAST_SHOWN = false;\nlet lastPointerUp = null;\nconst gesture = {\n  pointers: new Map(),\n  lastCenter: null,\n  initialDistance: null,\n  initialScale: null\n};\n\nclass App extends (react__WEBPACK_IMPORTED_MODULE_1___default().Component) {\n  constructor(props) {\n    super(props);\n    this.interactiveCanvas = null;\n    this.unmounted = false;\n    this.device = deviceContextInitialValue;\n    this.excalidrawContainerRef = react__WEBPACK_IMPORTED_MODULE_1___default().createRef();\n    this.files = {};\n    this.imageCache = new Map();\n    this.iFrameRefs = new Map();\n    this.lastPointerDownEvent = null;\n    this.lastPointerUpEvent = null;\n    this.lastViewportPosition = {\n      x: 0,\n      y: 0\n    };\n    this.laserPathManager = new _LaserTool_LaserPathManager__WEBPACK_IMPORTED_MODULE_69__.LaserPathManager(this);\n    this.onChangeEmitter = new _emitter__WEBPACK_IMPORTED_MODULE_71__.Emitter();\n    this.onPointerDownEmitter = new _emitter__WEBPACK_IMPORTED_MODULE_71__.Emitter();\n    this.onPointerUpEmitter = new _emitter__WEBPACK_IMPORTED_MODULE_71__.Emitter();\n\n    this.updateEmbeddables = () => {\n      const embeddableElements = new Map();\n      let updated = false;\n      this.scene.getNonDeletedElements().filter(element => {\n        if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isEmbeddableElement)(element)) {\n          embeddableElements.set(element.id, true);\n\n          if (element.validated == null) {\n            updated = true;\n            const validated = (0,_element_embeddable__WEBPACK_IMPORTED_MODULE_34__.embeddableURLValidator)(element.link, this.props.validateEmbeddable);\n            (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(element, {\n              validated\n            }, false);\n            _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_66__.ShapeCache["delete"](element);\n          }\n        }\n\n        return false;\n      });\n\n      if (updated) {\n        this.scene.informMutation();\n      } // GC\n\n\n      this.iFrameRefs.forEach((ref, id) => {\n        if (!embeddableElements.has(id)) {\n          this.iFrameRefs.delete(id);\n        }\n      });\n    };\n\n    this.getFrameNameDOMId = frameElement => {\n      return `${this.id}-frame-name-${frameElement.id}`;\n    };\n\n    this.frameNameBoundsCache = {\n      get: frameElement => {\n        let bounds = this.frameNameBoundsCache._cache.get(frameElement.id);\n\n        if (!bounds || bounds.zoom !== this.state.zoom.value || bounds.versionNonce !== frameElement.versionNonce) {\n          const frameNameDiv = document.getElementById(this.getFrameNameDOMId(frameElement));\n\n          if (frameNameDiv) {\n            const box = frameNameDiv.getBoundingClientRect();\n            const boxSceneTopLeft = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.viewportCoordsToSceneCoords)({\n              clientX: box.x,\n              clientY: box.y\n            }, this.state);\n            const boxSceneBottomRight = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.viewportCoordsToSceneCoords)({\n              clientX: box.right,\n              clientY: box.bottom\n            }, this.state);\n            bounds = {\n              x: boxSceneTopLeft.x,\n              y: boxSceneTopLeft.y,\n              width: boxSceneBottomRight.x - boxSceneTopLeft.x,\n              height: boxSceneBottomRight.y - boxSceneTopLeft.y,\n              angle: 0,\n              zoom: this.state.zoom.value,\n              versionNonce: frameElement.versionNonce\n            };\n\n            this.frameNameBoundsCache._cache.set(frameElement.id, bounds);\n\n            return bounds;\n          }\n\n          return null;\n        }\n\n        return bounds;\n      },\n\n      /**\n       * @private\n       */\n      _cache: new Map()\n    };\n\n    this.renderFrameNames = () => {\n      if (!this.state.frameRendering.enabled || !this.state.frameRendering.name) {\n        return null;\n      }\n\n      const isDarkTheme = this.state.theme === "dark";\n      return this.scene.getNonDeletedFrames().map((f, index) => {\n        if (!(0,_element_sizeHelpers__WEBPACK_IMPORTED_MODULE_27__.isElementInViewport)(f, this.canvas.width / window.devicePixelRatio, this.canvas.height / window.devicePixelRatio, {\n          offsetLeft: this.state.offsetLeft,\n          offsetTop: this.state.offsetTop,\n          scrollX: this.state.scrollX,\n          scrollY: this.state.scrollY,\n          zoom: this.state.zoom\n        })) {\n          // if frame not visible, don\'t render its name\n          return null;\n        }\n\n        const {\n          x: x1,\n          y: y1\n        } = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.sceneCoordsToViewportCoords)({\n          sceneX: f.x,\n          sceneY: f.y\n        }, this.state);\n        const FRAME_NAME_EDIT_PADDING = 6;\n\n        const reset = () => {\n          var _a;\n\n          if (((_a = f.name) === null || _a === void 0 ? void 0 : _a.trim()) === "") {\n            (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(f, {\n              name: null\n            });\n          }\n\n          this.setState({\n            editingFrame: null\n          });\n        };\n\n        let frameNameJSX;\n\n        if (f.id === this.state.editingFrame) {\n          const frameNameInEdit = f.name == null ? `Frame ${index + 1}` : f.name;\n          frameNameJSX = (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input", {\n            autoFocus: true,\n            value: frameNameInEdit,\n            onChange: e => {\n              (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(f, {\n                name: e.target.value\n              });\n            },\n            onBlur: () => reset(),\n            onKeyDown: event => {\n              // for some inexplicable reason, `onBlur` triggered on ESC\n              // does not reset `state.editingFrame` despite being called,\n              // and we need to reset it here as well\n              if (event.key === _keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.ESCAPE || event.key === _keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.ENTER) {\n                reset();\n              }\n            },\n            style: {\n              background: this.state.viewBackgroundColor,\n              filter: isDarkTheme ? _constants__WEBPACK_IMPORTED_MODULE_12__.THEME_FILTER : "none",\n              zIndex: 2,\n              border: "none",\n              display: "block",\n              padding: `${FRAME_NAME_EDIT_PADDING}px`,\n              borderRadius: 4,\n              boxShadow: "inset 0 0 0 1px var(--color-primary)",\n              fontFamily: "Assistant",\n              fontSize: "14px",\n              transform: `translate(-${FRAME_NAME_EDIT_PADDING}px, ${FRAME_NAME_EDIT_PADDING}px)`,\n              color: "var(--color-gray-80)",\n              overflow: "hidden",\n              maxWidth: `${document.body.clientWidth - x1 - FRAME_NAME_EDIT_PADDING}px`\n            },\n            size: frameNameInEdit.length + 1 || 1,\n            dir: "auto",\n            autoComplete: "off",\n            autoCapitalize: "off",\n            autoCorrect: "off"\n          });\n        } else {\n          frameNameJSX = f.name == null || f.name.trim() === "" ? `Frame ${index + 1}` : f.name.trim();\n        }\n\n        return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n          id: this.getFrameNameDOMId(f),\n          style: {\n            position: "absolute",\n            // Positioning from bottom so that we don\'t to either\n            // calculate text height or adjust using transform (which)\n            // messes up input position when editing the frame name.\n            // This makes the positioning deterministic and we can calculate\n            // the same position when rendering to canvas / svg.\n            bottom: `${this.state.height + _constants__WEBPACK_IMPORTED_MODULE_12__.FRAME_STYLE.nameOffsetY - y1 + this.state.offsetTop}px`,\n            left: `${x1 - this.state.offsetLeft}px`,\n            zIndex: 2,\n            fontSize: _constants__WEBPACK_IMPORTED_MODULE_12__.FRAME_STYLE.nameFontSize,\n            color: isDarkTheme ? _constants__WEBPACK_IMPORTED_MODULE_12__.FRAME_STYLE.nameColorDarkTheme : _constants__WEBPACK_IMPORTED_MODULE_12__.FRAME_STYLE.nameColorLightTheme,\n            lineHeight: _constants__WEBPACK_IMPORTED_MODULE_12__.FRAME_STYLE.nameLineHeight,\n            width: "max-content",\n            maxWidth: `${f.width}px`,\n            overflow: f.id === this.state.editingFrame ? "visible" : "hidden",\n            whiteSpace: "nowrap",\n            textOverflow: "ellipsis",\n            cursor: _constants__WEBPACK_IMPORTED_MODULE_12__.CURSOR_TYPE.MOVE,\n            pointerEvents: this.state.viewModeEnabled ? _constants__WEBPACK_IMPORTED_MODULE_12__.POINTER_EVENTS.disabled : _constants__WEBPACK_IMPORTED_MODULE_12__.POINTER_EVENTS.enabled\n          },\n          onPointerDown: event => this.handleCanvasPointerDown(event),\n          onWheel: event => this.handleWheel(event),\n          onContextMenu: this.handleCanvasContextMenu,\n          onDoubleClick: () => {\n            this.setState({\n              editingFrame: f.id\n            });\n          }\n        }, {\n          children: frameNameJSX\n        }), f.id);\n      });\n    };\n\n    this.focusContainer = () => {\n      var _a;\n\n      (_a = this.excalidrawContainerRef.current) === null || _a === void 0 ? void 0 : _a.focus();\n    };\n\n    this.getSceneElementsIncludingDeleted = () => {\n      return this.scene.getElementsIncludingDeleted();\n    };\n\n    this.getSceneElements = () => {\n      return this.scene.getNonDeletedElements();\n    };\n\n    this.onInsertElements = elements => {\n      this.addElementsFromPasteOrLibrary({\n        elements,\n        position: "center",\n        files: null\n      });\n    };\n\n    this.onExportImage = (type, elements, opts) => __awaiter(this, void 0, void 0, function* () {\n      (0,_analytics__WEBPACK_IMPORTED_MODULE_9__.trackEvent)("export", type, "ui");\n      const fileHandle = yield (0,_data__WEBPACK_IMPORTED_MODULE_13__.exportCanvas)(type, elements, this.state, this.files, {\n        exportBackground: this.state.exportBackground,\n        name: this.state.name,\n        viewBackgroundColor: this.state.viewBackgroundColor,\n        exportingFrame: opts.exportingFrame\n      }).catch(_utils__WEBPACK_IMPORTED_MODULE_33__.muteFSAbortError).catch(error => {\n        console.error(error);\n        this.setState({\n          errorMessage: error.message\n        });\n      });\n\n      if (this.state.exportEmbedScene && fileHandle && (0,_data_blob__WEBPACK_IMPORTED_MODULE_39__.isImageFileHandle)(fileHandle)) {\n        this.setState({\n          fileHandle\n        });\n      }\n    });\n\n    this.openEyeDropper = ({\n      type\n    }) => {\n      _jotai__WEBPACK_IMPORTED_MODULE_55__.jotaiStore.set(_EyeDropper__WEBPACK_IMPORTED_MODULE_61__.activeEyeDropperAtom, {\n        swapPreviewOnAlt: true,\n        colorPickerType: type === "stroke" ? "elementStroke" : "elementBackground",\n        onSelect: (color, event) => {\n          const shouldUpdateStrokeColor = type === "background" && event.altKey || type === "stroke" && !event.altKey;\n          const selectedElements = this.scene.getSelectedElements(this.state);\n\n          if (!selectedElements.length || this.state.activeTool.type !== "selection") {\n            if (shouldUpdateStrokeColor) {\n              this.syncActionResult({\n                appState: Object.assign(Object.assign({}, this.state), {\n                  currentItemStrokeColor: color\n                }),\n                commitToHistory: true\n              });\n            } else {\n              this.syncActionResult({\n                appState: Object.assign(Object.assign({}, this.state), {\n                  currentItemBackgroundColor: color\n                }),\n                commitToHistory: true\n              });\n            }\n          } else {\n            this.updateScene({\n              elements: this.scene.getElementsIncludingDeleted().map(el => {\n                if (this.state.selectedElementIds[el.id]) {\n                  return (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.newElementWith)(el, {\n                    [shouldUpdateStrokeColor ? "strokeColor" : "backgroundColor"]: color\n                  });\n                }\n\n                return el;\n              })\n            });\n          }\n        },\n        keepOpenOnAlt: false\n      });\n    };\n\n    this.syncActionResult = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.withBatchedUpdates)(actionResult => {\n      var _a, _b, _c, _d, _e, _f, _g, _h, _j;\n\n      if (this.unmounted || actionResult === false) {\n        return;\n      }\n\n      let editingElement = null;\n\n      if (actionResult.elements) {\n        actionResult.elements.forEach(element => {\n          var _a;\n\n          if (((_a = this.state.editingElement) === null || _a === void 0 ? void 0 : _a.id) === element.id && this.state.editingElement !== element && (0,_element__WEBPACK_IMPORTED_MODULE_16__.isNonDeletedElement)(element)) {\n            editingElement = element;\n          }\n        });\n        this.scene.replaceAllElements(actionResult.elements);\n\n        if (actionResult.commitToHistory) {\n          this.history.resumeRecording();\n        }\n      }\n\n      if (actionResult.files) {\n        this.files = actionResult.replaceFiles ? actionResult.files : Object.assign(Object.assign({}, this.files), actionResult.files);\n        this.addNewImagesToImageCache();\n      }\n\n      if (actionResult.appState || editingElement || this.state.contextMenu) {\n        if (actionResult.commitToHistory) {\n          this.history.resumeRecording();\n        }\n\n        let viewModeEnabled = ((_a = actionResult === null || actionResult === void 0 ? void 0 : actionResult.appState) === null || _a === void 0 ? void 0 : _a.viewModeEnabled) || false;\n        let zenModeEnabled = ((_b = actionResult === null || actionResult === void 0 ? void 0 : actionResult.appState) === null || _b === void 0 ? void 0 : _b.zenModeEnabled) || false;\n        let gridSize = ((_c = actionResult === null || actionResult === void 0 ? void 0 : actionResult.appState) === null || _c === void 0 ? void 0 : _c.gridSize) || null;\n        const theme = ((_d = actionResult === null || actionResult === void 0 ? void 0 : actionResult.appState) === null || _d === void 0 ? void 0 : _d.theme) || this.props.theme || _constants__WEBPACK_IMPORTED_MODULE_12__.THEME.LIGHT;\n        let name = (_f = (_e = actionResult === null || actionResult === void 0 ? void 0 : actionResult.appState) === null || _e === void 0 ? void 0 : _e.name) !== null && _f !== void 0 ? _f : this.state.name;\n        const errorMessage = (_h = (_g = actionResult === null || actionResult === void 0 ? void 0 : actionResult.appState) === null || _g === void 0 ? void 0 : _g.errorMessage) !== null && _h !== void 0 ? _h : this.state.errorMessage;\n\n        if (typeof this.props.viewModeEnabled !== "undefined") {\n          viewModeEnabled = this.props.viewModeEnabled;\n        }\n\n        if (typeof this.props.zenModeEnabled !== "undefined") {\n          zenModeEnabled = this.props.zenModeEnabled;\n        }\n\n        if (typeof this.props.gridModeEnabled !== "undefined") {\n          gridSize = this.props.gridModeEnabled ? _constants__WEBPACK_IMPORTED_MODULE_12__.GRID_SIZE : null;\n        }\n\n        if (typeof this.props.name !== "undefined") {\n          name = this.props.name;\n        }\n\n        editingElement = editingElement || ((_j = actionResult.appState) === null || _j === void 0 ? void 0 : _j.editingElement) || null;\n\n        if (editingElement === null || editingElement === void 0 ? void 0 : editingElement.isDeleted) {\n          editingElement = null;\n        }\n\n        this.setState(state => {\n          // using Object.assign instead of spread to fool TS 4.2.2+ into\n          // regarding the resulting type as not containing undefined\n          // (which the following expression will never contain)\n          return Object.assign(actionResult.appState || {}, {\n            // NOTE this will prevent opening context menu using an action\n            // or programmatically from the host, so it will need to be\n            // rewritten later\n            contextMenu: null,\n            editingElement,\n            viewModeEnabled,\n            zenModeEnabled,\n            gridSize,\n            theme,\n            name,\n            errorMessage\n          });\n        }, () => {\n          if (actionResult.syncHistory) {\n            this.history.setCurrentState(this.state, this.scene.getElementsIncludingDeleted());\n          }\n        });\n      }\n    }); // Lifecycle\n\n    this.onBlur = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.withBatchedUpdates)(() => {\n      isHoldingSpace = false;\n      this.setState({\n        isBindingEnabled: true\n      });\n    });\n\n    this.onUnload = () => {\n      this.onBlur();\n    };\n\n    this.disableEvent = event => {\n      event.preventDefault();\n    };\n\n    this.resetHistory = () => {\n      this.history.clear();\n    };\n    /**\n     * Resets scene & history.\n     * ! Do not use to clear scene user action !\n     */\n\n\n    this.resetScene = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.withBatchedUpdates)(opts => {\n      this.scene.replaceAllElements([]);\n      this.setState(state => Object.assign(Object.assign({}, (0,_appState__WEBPACK_IMPORTED_MODULE_10__.getDefaultAppState)()), {\n        isLoading: (opts === null || opts === void 0 ? void 0 : opts.resetLoadingState) ? false : state.isLoading,\n        theme: this.state.theme\n      }));\n      this.resetHistory();\n    });\n\n    this.initializeScene = () => __awaiter(this, void 0, void 0, function* () {\n      var _a;\n\n      if ("launchQueue" in window && "LaunchParams" in window) {\n        window.launchQueue.setConsumer(launchParams => __awaiter(this, void 0, void 0, function* () {\n          if (!launchParams.files.length) {\n            return;\n          }\n\n          const fileHandle = launchParams.files[0];\n          const blob = yield fileHandle.getFile();\n          this.loadFileToCanvas(new File([blob], blob.name || "", {\n            type: blob.type\n          }), fileHandle);\n        }));\n      }\n\n      if (this.props.theme) {\n        this.setState({\n          theme: this.props.theme\n        });\n      }\n\n      if (!this.state.isLoading) {\n        this.setState({\n          isLoading: true\n        });\n      }\n\n      let initialData = null;\n\n      try {\n        initialData = (yield this.props.initialData) || null;\n\n        if (initialData === null || initialData === void 0 ? void 0 : initialData.libraryItems) {\n          this.library.updateLibrary({\n            libraryItems: initialData.libraryItems,\n            merge: true\n          }).catch(error => {\n            console.error(error);\n          });\n        }\n      } catch (error) {\n        console.error(error);\n        initialData = {\n          appState: {\n            errorMessage: error.message || "Encountered an error during importing or restoring scene data"\n          }\n        };\n      }\n\n      const scene = (0,_data_restore__WEBPACK_IMPORTED_MODULE_15__.restore)(initialData, null, null, {\n        repairBindings: true\n      });\n      scene.appState = Object.assign(Object.assign({}, scene.appState), {\n        theme: this.props.theme || scene.appState.theme,\n        // we\'re falling back to current (pre-init) state when deciding\n        // whether to open the library, to handle a case where we\n        // update the state outside of initialData (e.g. when loading the app\n        // with a library install link, which should auto-open the library)\n        openSidebar: ((_a = scene.appState) === null || _a === void 0 ? void 0 : _a.openSidebar) || this.state.openSidebar,\n        activeTool: scene.appState.activeTool.type === "image" ? Object.assign(Object.assign({}, scene.appState.activeTool), {\n          type: "selection"\n        }) : scene.appState.activeTool,\n        isLoading: false,\n        toast: this.state.toast\n      });\n\n      if (initialData === null || initialData === void 0 ? void 0 : initialData.scrollToContent) {\n        scene.appState = Object.assign(Object.assign({}, scene.appState), (0,_scene__WEBPACK_IMPORTED_MODULE_29__.calculateScrollCenter)(scene.elements, Object.assign(Object.assign({}, scene.appState), {\n          width: this.state.width,\n          height: this.state.height,\n          offsetTop: this.state.offsetTop,\n          offsetLeft: this.state.offsetLeft\n        })));\n      } // FontFaceSet loadingdone event we listen on may not always fire\n      // (looking at you Safari), so on init we manually load fonts for current\n      // text elements on canvas, and rerender them once done. This also\n      // seems faster even in browsers that do fire the loadingdone event.\n\n\n      this.fonts.loadFontsForElements(scene.elements);\n      this.resetHistory();\n      this.syncActionResult(Object.assign(Object.assign({}, scene), {\n        commitToHistory: true\n      }));\n    });\n\n    this.isMobileBreakpoint = (width, height) => {\n      return width < _constants__WEBPACK_IMPORTED_MODULE_12__.MQ_MAX_WIDTH_PORTRAIT || height < _constants__WEBPACK_IMPORTED_MODULE_12__.MQ_MAX_HEIGHT_LANDSCAPE && width < _constants__WEBPACK_IMPORTED_MODULE_12__.MQ_MAX_WIDTH_LANDSCAPE;\n    };\n\n    this.refreshViewportBreakpoints = () => {\n      const container = this.excalidrawContainerRef.current;\n\n      if (!container) {\n        return;\n      }\n\n      const {\n        clientWidth: viewportWidth,\n        clientHeight: viewportHeight\n      } = document.body;\n      const prevViewportState = this.device.viewport;\n      const nextViewportState = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.updateObject)(prevViewportState, {\n        isLandscape: viewportWidth > viewportHeight,\n        isMobile: this.isMobileBreakpoint(viewportWidth, viewportHeight)\n      });\n\n      if (prevViewportState !== nextViewportState) {\n        this.device = Object.assign(Object.assign({}, this.device), {\n          viewport: nextViewportState\n        });\n        return true;\n      }\n\n      return false;\n    };\n\n    this.refreshEditorBreakpoints = () => {\n      const container = this.excalidrawContainerRef.current;\n\n      if (!container) {\n        return;\n      }\n\n      const {\n        width: editorWidth,\n        height: editorHeight\n      } = container.getBoundingClientRect();\n      const sidebarBreakpoint = this.props.UIOptions.dockedSidebarBreakpoint != null ? this.props.UIOptions.dockedSidebarBreakpoint : _constants__WEBPACK_IMPORTED_MODULE_12__.MQ_RIGHT_SIDEBAR_MIN_WIDTH;\n      const prevEditorState = this.device.editor;\n      const nextEditorState = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.updateObject)(prevEditorState, {\n        isMobile: this.isMobileBreakpoint(editorWidth, editorHeight),\n        canFitSidebar: editorWidth > sidebarBreakpoint\n      });\n\n      if (prevEditorState !== nextEditorState) {\n        this.device = Object.assign(Object.assign({}, this.device), {\n          editor: nextEditorState\n        });\n        return true;\n      }\n\n      return false;\n    };\n\n    this.onResize = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.withBatchedUpdates)(() => {\n      this.scene.getElementsIncludingDeleted().forEach(element => _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_66__.ShapeCache["delete"](element));\n      this.refreshViewportBreakpoints();\n      this.updateDOMRect();\n\n      if (!supportsResizeObserver) {\n        this.refreshEditorBreakpoints();\n      }\n\n      this.setState({});\n    });\n\n    this.renderInteractiveSceneCallback = ({\n      atLeastOneVisibleElement,\n      scrollBars,\n      elements\n    }) => {\n      if (scrollBars) {\n        currentScrollBars = scrollBars;\n      }\n\n      const scrolledOutside = // hide when editing text\n      (0,_element__WEBPACK_IMPORTED_MODULE_16__.isTextElement)(this.state.editingElement) ? false : !atLeastOneVisibleElement && elements.length > 0;\n\n      if (this.state.scrolledOutside !== scrolledOutside) {\n        this.setState({\n          scrolledOutside\n        });\n      }\n\n      this.scheduleImageRefresh();\n    };\n\n    this.onScroll = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.debounce)(() => {\n      const {\n        offsetTop,\n        offsetLeft\n      } = this.getCanvasOffsets();\n      this.setState(state => {\n        if (state.offsetLeft === offsetLeft && state.offsetTop === offsetTop) {\n          return null;\n        }\n\n        return {\n          offsetTop,\n          offsetLeft\n        };\n      });\n    }, _constants__WEBPACK_IMPORTED_MODULE_12__.SCROLL_TIMEOUT); // Copy/paste\n\n    this.onCut = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.withBatchedUpdates)(event => {\n      var _a;\n\n      const isExcalidrawActive = (_a = this.excalidrawContainerRef.current) === null || _a === void 0 ? void 0 : _a.contains(document.activeElement);\n\n      if (!isExcalidrawActive || (0,_utils__WEBPACK_IMPORTED_MODULE_33__.isWritableElement)(event.target)) {\n        return;\n      }\n\n      this.actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_5__.actionCut, "keyboard", event);\n      event.preventDefault();\n      event.stopPropagation();\n    });\n    this.onCopy = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.withBatchedUpdates)(event => {\n      var _a;\n\n      const isExcalidrawActive = (_a = this.excalidrawContainerRef.current) === null || _a === void 0 ? void 0 : _a.contains(document.activeElement);\n\n      if (!isExcalidrawActive || (0,_utils__WEBPACK_IMPORTED_MODULE_33__.isWritableElement)(event.target)) {\n        return;\n      }\n\n      this.actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_5__.actionCopy, "keyboard", event);\n      event.preventDefault();\n      event.stopPropagation();\n    });\n\n    this.onTouchStart = event => {\n      // fix for Apple Pencil Scribble\n      // On Android, preventing the event would disable contextMenu on tap-hold\n      if (!_constants__WEBPACK_IMPORTED_MODULE_12__.isAndroid) {\n        event.preventDefault();\n      }\n\n      if (!didTapTwice) {\n        didTapTwice = true;\n        clearTimeout(tappedTwiceTimer);\n        tappedTwiceTimer = window.setTimeout(App.resetTapTwice, _constants__WEBPACK_IMPORTED_MODULE_12__.TAP_TWICE_TIMEOUT);\n        return;\n      } // insert text only if we tapped twice with a single finger\n      // event.touches.length === 1 will also prevent inserting text when user\'s zooming\n\n\n      if (didTapTwice && event.touches.length === 1) {\n        const touch = event.touches[0]; // @ts-ignore\n\n        this.handleCanvasDoubleClick({\n          clientX: touch.clientX,\n          clientY: touch.clientY\n        });\n        didTapTwice = false;\n        clearTimeout(tappedTwiceTimer);\n      }\n\n      if (_constants__WEBPACK_IMPORTED_MODULE_12__.isAndroid) {\n        event.preventDefault();\n      }\n\n      if (event.touches.length === 2) {\n        this.setState({\n          selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)({}, this.state),\n          activeEmbeddable: null\n        });\n      }\n    };\n\n    this.onTouchEnd = event => {\n      this.resetContextMenuTimer();\n\n      if (event.touches.length > 0) {\n        this.setState({\n          previousSelectedElementIds: {},\n          selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)(this.state.previousSelectedElementIds, this.state)\n        });\n      } else {\n        gesture.pointers.clear();\n      }\n    };\n\n    this.pasteFromClipboard = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.withBatchedUpdates)(event => __awaiter(this, void 0, void 0, function* () {\n      var _b, _c, _d;\n\n      const isPlainPaste = !!IS_PLAIN_PASTE; // #686\n\n      const target = document.activeElement;\n      const isExcalidrawActive = (_b = this.excalidrawContainerRef.current) === null || _b === void 0 ? void 0 : _b.contains(target);\n\n      if (event && !isExcalidrawActive) {\n        return;\n      }\n\n      const elementUnderCursor = document.elementFromPoint(this.lastViewportPosition.x, this.lastViewportPosition.y);\n\n      if (event && (!(elementUnderCursor instanceof HTMLCanvasElement) || (0,_utils__WEBPACK_IMPORTED_MODULE_33__.isWritableElement)(target))) {\n        return;\n      }\n\n      const {\n        x: sceneX,\n        y: sceneY\n      } = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.viewportCoordsToSceneCoords)({\n        clientX: this.lastViewportPosition.x,\n        clientY: this.lastViewportPosition.y\n      }, this.state); // must be called in the same frame (thus before any awaits) as the paste\n      // event else some browsers (FF...) will clear the clipboardData\n      // (something something security)\n\n      let file = (_c = event === null || event === void 0 ? void 0 : event.clipboardData) === null || _c === void 0 ? void 0 : _c.files[0];\n      const data = yield (0,_clipboard__WEBPACK_IMPORTED_MODULE_11__.parseClipboard)(event, isPlainPaste);\n\n      if (!file && !isPlainPaste) {\n        if (data.mixedContent) {\n          return this.addElementsFromMixedContentPaste(data.mixedContent, {\n            isPlainPaste,\n            sceneX,\n            sceneY\n          });\n        } else if (data.text) {\n          const string = data.text.trim();\n\n          if (string.startsWith("<svg") && string.endsWith("</svg>")) {\n            // ignore SVG validation/normalization which will be done during image\n            // initialization\n            file = (0,_data_blob__WEBPACK_IMPORTED_MODULE_39__.SVGStringToFile)(string);\n          }\n        }\n      } // prefer spreadsheet data over image file (MS Office/Libre Office)\n\n\n      if ((0,_data_blob__WEBPACK_IMPORTED_MODULE_39__.isSupportedImageFile)(file) && !data.spreadsheet) {\n        if (!this.isToolSupported("image")) {\n          this.setState({\n            errorMessage: (0,_i18n__WEBPACK_IMPORTED_MODULE_25__.t)("errors.imageToolNotSupported")\n          });\n          return;\n        }\n\n        const imageElement = this.createImageElement({\n          sceneX,\n          sceneY\n        });\n        this.insertImageElement(imageElement, file);\n        this.initializeImageDimensions(imageElement);\n        this.setState({\n          selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)({\n            [imageElement.id]: true\n          }, this.state)\n        });\n        return;\n      }\n\n      if (this.props.onPaste) {\n        try {\n          if ((yield this.props.onPaste(data, event)) === false) {\n            return;\n          }\n        } catch (error) {\n          console.error(error);\n        }\n      }\n\n      if (data.errorMessage) {\n        this.setState({\n          errorMessage: data.errorMessage\n        });\n      } else if (data.spreadsheet && !isPlainPaste) {\n        this.setState({\n          pasteDialog: {\n            data: data.spreadsheet,\n            shown: true\n          }\n        });\n      } else if (data.elements) {\n        const elements = data.programmaticAPI ? (0,_data_transform__WEBPACK_IMPORTED_MODULE_62__.convertToExcalidrawElements)(data.elements) : data.elements; // TODO remove formatting from elements if isPlainPaste\n\n        this.addElementsFromPasteOrLibrary({\n          elements,\n          files: data.files || null,\n          position: "cursor",\n          retainSeed: isPlainPaste\n        });\n      } else if (data.text) {\n        const maybeUrl = (0,_element_embeddable__WEBPACK_IMPORTED_MODULE_34__.extractSrc)(data.text);\n\n        if (!isPlainPaste && (0,_element_embeddable__WEBPACK_IMPORTED_MODULE_34__.embeddableURLValidator)(maybeUrl, this.props.validateEmbeddable) && (/^(http|https):\\/\\/[^\\s/$.?#].[^\\s]*$/.test(maybeUrl) || ((_d = (0,_element_embeddable__WEBPACK_IMPORTED_MODULE_34__.getEmbedLink)(maybeUrl)) === null || _d === void 0 ? void 0 : _d.type) === "video")) {\n          const embeddable = this.insertEmbeddableElement({\n            sceneX,\n            sceneY,\n            link: (0,_data_url__WEBPACK_IMPORTED_MODULE_46__.normalizeLink)(maybeUrl)\n          });\n\n          if (embeddable) {\n            this.setState({\n              selectedElementIds: {\n                [embeddable.id]: true\n              }\n            });\n          }\n\n          return;\n        }\n\n        this.addTextFromPaste(data.text, isPlainPaste);\n      }\n\n      this.setActiveTool({\n        type: "selection"\n      });\n      event === null || event === void 0 ? void 0 : event.preventDefault();\n    }));\n\n    this.addElementsFromPasteOrLibrary = opts => {\n      const elements = (0,_data_restore__WEBPACK_IMPORTED_MODULE_15__.restoreElements)(opts.elements, null, undefined);\n      const [minX, minY, maxX, maxY] = (0,_element__WEBPACK_IMPORTED_MODULE_16__.getCommonBounds)(elements);\n      const elementsCenterX = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.distance)(minX, maxX) / 2;\n      const elementsCenterY = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.distance)(minY, maxY) / 2;\n      const clientX = typeof opts.position === "object" ? opts.position.clientX : opts.position === "cursor" ? this.lastViewportPosition.x : this.state.width / 2 + this.state.offsetLeft;\n      const clientY = typeof opts.position === "object" ? opts.position.clientY : opts.position === "cursor" ? this.lastViewportPosition.y : this.state.height / 2 + this.state.offsetTop;\n      const {\n        x,\n        y\n      } = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.viewportCoordsToSceneCoords)({\n        clientX,\n        clientY\n      }, this.state);\n      const dx = x - elementsCenterX;\n      const dy = y - elementsCenterY;\n      const [gridX, gridY] = (0,_math__WEBPACK_IMPORTED_MODULE_28__.getGridPoint)(dx, dy, this.state.gridSize);\n      const newElements = (0,_element_newElement__WEBPACK_IMPORTED_MODULE_20__.duplicateElements)(elements.map(element => {\n        return (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.newElementWith)(element, {\n          x: element.x + gridX - minX,\n          y: element.y + gridY - minY\n        });\n      }), {\n        randomizeSeed: !opts.retainSeed\n      });\n      const nextElements = [...this.scene.getElementsIncludingDeleted(), ...newElements];\n      this.scene.replaceAllElements(nextElements);\n      newElements.forEach(newElement => {\n        if ((0,_element__WEBPACK_IMPORTED_MODULE_16__.isTextElement)(newElement) && (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isBoundToContainer)(newElement)) {\n          const container = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_43__.getContainerElement)(newElement);\n          (0,_element__WEBPACK_IMPORTED_MODULE_16__.redrawTextBoundingBox)(newElement, container);\n        }\n      });\n\n      if (opts.files) {\n        this.files = Object.assign(Object.assign({}, this.files), opts.files);\n      }\n\n      this.history.resumeRecording();\n      const nextElementsToSelect = (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.excludeElementsInFramesFromSelection)(newElements);\n      this.setState(Object.assign(Object.assign(Object.assign({}, this.state), {\n        // keep sidebar (presumably the library) open if it\'s docked and\n        // can fit.\n        //\n        // Note, we should close the sidebar only if we\'re dropping items\n        // from library, not when pasting from clipboard. Alas.\n        openSidebar: this.state.openSidebar && this.device.editor.canFitSidebar && _jotai__WEBPACK_IMPORTED_MODULE_55__.jotaiStore.get(_Sidebar_Sidebar__WEBPACK_IMPORTED_MODULE_63__.isSidebarDockedAtom) ? this.state.openSidebar : null\n      }), (0,_groups__WEBPACK_IMPORTED_MODULE_23__.selectGroupsForSelectedElements)({\n        editingGroupId: null,\n        selectedElementIds: nextElementsToSelect.reduce((acc, element) => {\n          if (!(0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isBoundToContainer)(element)) {\n            acc[element.id] = true;\n          }\n\n          return acc;\n        }, {})\n      }, this.scene.getNonDeletedElements(), this.state, this)), () => {\n        if (opts.files) {\n          this.addNewImagesToImageCache();\n        }\n      });\n      this.setActiveTool({\n        type: "selection"\n      });\n\n      if (opts.fitToContent) {\n        this.scrollToContent(newElements, {\n          fitToContent: true\n        });\n      }\n    };\n\n    this.setAppState = (state, callback) => {\n      this.setState(state, callback);\n    };\n\n    this.removePointer = event => {\n      if (touchTimeout) {\n        this.resetContextMenuTimer();\n      }\n\n      gesture.pointers.delete(event.pointerId);\n    };\n\n    this.toggleLock = (source = "ui") => {\n      if (!this.state.activeTool.locked) {\n        (0,_analytics__WEBPACK_IMPORTED_MODULE_9__.trackEvent)("toolbar", "toggleLock", `${source} (${this.device.editor.isMobile ? "mobile" : "desktop"})`);\n      }\n\n      this.setState(prevState => {\n        return {\n          activeTool: Object.assign(Object.assign(Object.assign({}, prevState.activeTool), (0,_utils__WEBPACK_IMPORTED_MODULE_33__.updateActiveTool)(this.state, prevState.activeTool.locked ? {\n            type: "selection"\n          } : prevState.activeTool)), {\n            locked: !prevState.activeTool.locked\n          })\n        };\n      });\n    };\n\n    this.updateFrameRendering = opts => {\n      this.setState(prevState => {\n        var _a, _b, _c, _d;\n\n        const next = typeof opts === "function" ? opts(prevState.frameRendering) : opts;\n        return {\n          frameRendering: {\n            enabled: (_a = next === null || next === void 0 ? void 0 : next.enabled) !== null && _a !== void 0 ? _a : prevState.frameRendering.enabled,\n            clip: (_b = next === null || next === void 0 ? void 0 : next.clip) !== null && _b !== void 0 ? _b : prevState.frameRendering.clip,\n            name: (_c = next === null || next === void 0 ? void 0 : next.name) !== null && _c !== void 0 ? _c : prevState.frameRendering.name,\n            outline: (_d = next === null || next === void 0 ? void 0 : next.outline) !== null && _d !== void 0 ? _d : prevState.frameRendering.outline\n          }\n        };\n      });\n    };\n\n    this.togglePenMode = force => {\n      this.setState(prevState => {\n        return {\n          penMode: force !== null && force !== void 0 ? force : !prevState.penMode,\n          penDetected: true\n        };\n      });\n    };\n\n    this.onHandToolToggle = () => {\n      this.actionManager.executeAction(_actions_actionCanvas__WEBPACK_IMPORTED_MODULE_54__.actionToggleHandTool);\n    };\n    /**\n     * Zooms on canvas viewport center\n     */\n\n\n    this.zoomCanvas = (\n    /** decimal fraction between 0.1 (10% zoom) and 30 (3000% zoom) */\n    value) => {\n      this.setState(Object.assign({}, (0,_scene_zoom__WEBPACK_IMPORTED_MODULE_31__.getStateForZoom)({\n        viewportX: this.state.width / 2 + this.state.offsetLeft,\n        viewportY: this.state.height / 2 + this.state.offsetTop,\n        nextZoom: (0,_scene__WEBPACK_IMPORTED_MODULE_29__.getNormalizedZoom)(value)\n      }, this.state)));\n    };\n\n    this.cancelInProgresAnimation = null;\n\n    this.scrollToContent = (target = this.scene.getNonDeletedElements(), opts) => {\n      var _a, _b;\n\n      (_a = this.cancelInProgresAnimation) === null || _a === void 0 ? void 0 : _a.call(this); // convert provided target into ExcalidrawElement[] if necessary\n\n      const targetElements = Array.isArray(target) ? target : [target];\n      let zoom = this.state.zoom;\n      let scrollX = this.state.scrollX;\n      let scrollY = this.state.scrollY;\n\n      if ((opts === null || opts === void 0 ? void 0 : opts.fitToContent) || (opts === null || opts === void 0 ? void 0 : opts.fitToViewport)) {\n        const {\n          appState\n        } = (0,_actions_actionCanvas__WEBPACK_IMPORTED_MODULE_54__.zoomToFit)({\n          targetElements,\n          appState: this.state,\n          fitToViewport: !!(opts === null || opts === void 0 ? void 0 : opts.fitToViewport),\n          viewportZoomFactor: opts === null || opts === void 0 ? void 0 : opts.viewportZoomFactor\n        });\n        zoom = appState.zoom;\n        scrollX = appState.scrollX;\n        scrollY = appState.scrollY;\n      } else {\n        // compute only the viewport location, without any zoom adjustment\n        const scroll = (0,_scene__WEBPACK_IMPORTED_MODULE_29__.calculateScrollCenter)(targetElements, this.state);\n        scrollX = scroll.scrollX;\n        scrollY = scroll.scrollY;\n      } // when animating, we use RequestAnimationFrame to prevent the animation\n      // from slowing down other processes\n\n\n      if (opts === null || opts === void 0 ? void 0 : opts.animate) {\n        const origScrollX = this.state.scrollX;\n        const origScrollY = this.state.scrollY;\n        const origZoom = this.state.zoom.value;\n        const cancel = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.easeToValuesRAF)({\n          fromValues: {\n            scrollX: origScrollX,\n            scrollY: origScrollY,\n            zoom: origZoom\n          },\n          toValues: {\n            scrollX,\n            scrollY,\n            zoom: zoom.value\n          },\n          interpolateValue: (from, to, progress, key) => {\n            // for zoom, use different easing\n            if (key === "zoom") {\n              return from * Math.pow(to / from, (0,_utils__WEBPACK_IMPORTED_MODULE_33__.easeOut)(progress));\n            } // handle using default\n\n\n            return undefined;\n          },\n          onStep: ({\n            scrollX,\n            scrollY,\n            zoom\n          }) => {\n            this.setState({\n              scrollX,\n              scrollY,\n              zoom: {\n                value: zoom\n              }\n            });\n          },\n          onStart: () => {\n            this.setState({\n              shouldCacheIgnoreZoom: true\n            });\n          },\n          onEnd: () => {\n            this.setState({\n              shouldCacheIgnoreZoom: false\n            });\n          },\n          onCancel: () => {\n            this.setState({\n              shouldCacheIgnoreZoom: false\n            });\n          },\n          duration: (_b = opts === null || opts === void 0 ? void 0 : opts.duration) !== null && _b !== void 0 ? _b : 500\n        });\n\n        this.cancelInProgresAnimation = () => {\n          cancel();\n          this.cancelInProgresAnimation = null;\n        };\n      } else {\n        this.setState({\n          scrollX,\n          scrollY,\n          zoom\n        });\n      }\n    };\n    /** use when changing scrollX/scrollY/zoom based on user interaction */\n\n\n    this.translateCanvas = state => {\n      var _a;\n\n      (_a = this.cancelInProgresAnimation) === null || _a === void 0 ? void 0 : _a.call(this);\n      this.setState(state);\n    };\n\n    this.setToast = toast => {\n      this.setState({\n        toast\n      });\n    };\n\n    this.restoreFileFromShare = () => __awaiter(this, void 0, void 0, function* () {\n      try {\n        const webShareTargetCache = yield caches.open("web-share-target");\n        const response = yield webShareTargetCache.match("shared-file");\n\n        if (response) {\n          const blob = yield response.blob();\n          const file = new File([blob], blob.name || "", {\n            type: blob.type\n          });\n          this.loadFileToCanvas(file, null);\n          yield webShareTargetCache.delete("shared-file");\n          window.history.replaceState(null, _constants__WEBPACK_IMPORTED_MODULE_12__.APP_NAME, window.location.pathname);\n        }\n      } catch (error) {\n        this.setState({\n          errorMessage: error.message\n        });\n      }\n    });\n    /** adds supplied files to existing files in the appState */\n\n\n    this.addFiles = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.withBatchedUpdates)(files => {\n      const filesMap = files.reduce((acc, fileData) => {\n        acc.set(fileData.id, fileData);\n        return acc;\n      }, new Map());\n      this.files = Object.assign(Object.assign({}, this.files), Object.fromEntries(filesMap));\n      this.scene.getNonDeletedElements().forEach(element => {\n        if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isInitializedImageElement)(element) && filesMap.has(element.fileId)) {\n          this.imageCache.delete(element.fileId);\n          _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_66__.ShapeCache["delete"](element);\n        }\n      });\n      this.scene.informMutation();\n      this.addNewImagesToImageCache();\n    });\n    this.updateScene = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.withBatchedUpdates)(sceneData => {\n      if (sceneData.commitToHistory) {\n        this.history.resumeRecording();\n      }\n\n      if (sceneData.appState) {\n        this.setState(sceneData.appState);\n      }\n\n      if (sceneData.elements) {\n        this.scene.replaceAllElements(sceneData.elements);\n      }\n\n      if (sceneData.collaborators) {\n        this.setState({\n          collaborators: sceneData.collaborators\n        });\n      }\n    });\n\n    this.onSceneUpdated = () => {\n      this.setState({});\n    };\n    /**\n     * @returns whether the menu was toggled on or off\n     */\n\n\n    this.toggleSidebar = ({\n      name,\n      tab,\n      force\n    }) => {\n      var _a;\n\n      let nextName;\n\n      if (force === undefined) {\n        nextName = ((_a = this.state.openSidebar) === null || _a === void 0 ? void 0 : _a.name) === name ? null : name;\n      } else {\n        nextName = force ? name : null;\n      }\n\n      this.setState({\n        openSidebar: nextName ? {\n          name: nextName,\n          tab\n        } : null\n      });\n      return !!nextName;\n    };\n\n    this.updateCurrentCursorPosition = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.withBatchedUpdates)(event => {\n      this.lastViewportPosition.x = event.clientX;\n      this.lastViewportPosition.y = event.clientY;\n    }); // Input handling\n\n    this.onKeyDown = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.withBatchedUpdates)(event => {\n      // normalize `event.key` when CapsLock is pressed #2372\n      if ("Proxy" in window && (!event.shiftKey && /^[A-Z]$/.test(event.key) || event.shiftKey && /^[a-z]$/.test(event.key))) {\n        event = new Proxy(event, {\n          get(ev, prop) {\n            const value = ev[prop];\n\n            if (typeof value === "function") {\n              // fix for Proxies hijacking `this`\n              return value.bind(ev);\n            }\n\n            return prop === "key" ? // CapsLock inverts capitalization based on ShiftKey, so invert\n            // it back\n            event.shiftKey ? ev.key.toUpperCase() : ev.key.toLowerCase() : value;\n          }\n\n        });\n      }\n\n      if (event[_keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.CTRL_OR_CMD] && event.key.toLowerCase() === _keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.V) {\n        IS_PLAIN_PASTE = event.shiftKey;\n        clearTimeout(IS_PLAIN_PASTE_TIMER); // reset (100ms to be safe that we it runs after the ensuing\n        // paste event). Though, technically unnecessary to reset since we\n        // (re)set the flag before each paste event.\n\n        IS_PLAIN_PASTE_TIMER = window.setTimeout(() => {\n          IS_PLAIN_PASTE = false;\n        }, 100);\n      } // prevent browser zoom in input fields\n\n\n      if (event[_keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.CTRL_OR_CMD] && (0,_utils__WEBPACK_IMPORTED_MODULE_33__.isWritableElement)(event.target)) {\n        if (event.code === _keys__WEBPACK_IMPORTED_MODULE_26__.CODES.MINUS || event.code === _keys__WEBPACK_IMPORTED_MODULE_26__.CODES.EQUAL) {\n          event.preventDefault();\n          return;\n        }\n      } // bail if\n\n\n      if ( // inside an input\n      (0,_utils__WEBPACK_IMPORTED_MODULE_33__.isWritableElement)(event.target) && // unless pressing escape (finalize action)\n      event.key !== _keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.ESCAPE || // or unless using arrows (to move between buttons)\n      (0,_keys__WEBPACK_IMPORTED_MODULE_26__.isArrowKey)(event.key) && (0,_utils__WEBPACK_IMPORTED_MODULE_33__.isInputLike)(event.target)) {\n        return;\n      }\n\n      if (event.key === _keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.QUESTION_MARK) {\n        this.setState({\n          openDialog: "help"\n        });\n        return;\n      } else if (event.key.toLowerCase() === _keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.E && event.shiftKey && event[_keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.CTRL_OR_CMD]) {\n        event.preventDefault();\n        this.setState({\n          openDialog: "imageExport"\n        });\n        return;\n      }\n\n      if (event.key === _keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.PAGE_UP || event.key === _keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.PAGE_DOWN) {\n        let offset = (event.shiftKey ? this.state.width : this.state.height) / this.state.zoom.value;\n\n        if (event.key === _keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.PAGE_DOWN) {\n          offset = -offset;\n        }\n\n        if (event.shiftKey) {\n          this.translateCanvas(state => ({\n            scrollX: state.scrollX + offset\n          }));\n        } else {\n          this.translateCanvas(state => ({\n            scrollY: state.scrollY + offset\n          }));\n        }\n      }\n\n      if (this.actionManager.handleKeyDown(event)) {\n        return;\n      }\n\n      if (this.state.viewModeEnabled) {\n        return;\n      }\n\n      if (event[_keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.CTRL_OR_CMD] && this.state.isBindingEnabled) {\n        this.setState({\n          isBindingEnabled: false\n        });\n      }\n\n      if ((0,_keys__WEBPACK_IMPORTED_MODULE_26__.isArrowKey)(event.key)) {\n        const step = this.state.gridSize && (event.shiftKey ? _constants__WEBPACK_IMPORTED_MODULE_12__.ELEMENT_TRANSLATE_AMOUNT : this.state.gridSize) || (event.shiftKey ? _constants__WEBPACK_IMPORTED_MODULE_12__.ELEMENT_SHIFT_TRANSLATE_AMOUNT : _constants__WEBPACK_IMPORTED_MODULE_12__.ELEMENT_TRANSLATE_AMOUNT);\n        let offsetX = 0;\n        let offsetY = 0;\n\n        if (event.key === _keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.ARROW_LEFT) {\n          offsetX = -step;\n        } else if (event.key === _keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.ARROW_RIGHT) {\n          offsetX = step;\n        } else if (event.key === _keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.ARROW_UP) {\n          offsetY = -step;\n        } else if (event.key === _keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.ARROW_DOWN) {\n          offsetY = step;\n        }\n\n        const selectedElements = this.scene.getSelectedElements({\n          selectedElementIds: this.state.selectedElementIds,\n          includeBoundTextElement: true,\n          includeElementsInFrames: true\n        });\n        selectedElements.forEach(element => {\n          (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(element, {\n            x: element.x + offsetX,\n            y: element.y + offsetY\n          });\n          (0,_element_binding__WEBPACK_IMPORTED_MODULE_17__.updateBoundElements)(element, {\n            simultaneouslyUpdated: selectedElements\n          });\n        });\n        this.maybeSuggestBindingForAll(selectedElements);\n        event.preventDefault();\n      } else if (event.key === _keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.ENTER) {\n        const selectedElements = this.scene.getSelectedElements(this.state);\n\n        if (selectedElements.length === 1) {\n          const selectedElement = selectedElements[0];\n\n          if (event[_keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.CTRL_OR_CMD]) {\n            if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isLinearElement)(selectedElement)) {\n              if (!this.state.editingLinearElement || this.state.editingLinearElement.elementId !== selectedElements[0].id) {\n                this.history.resumeRecording();\n                this.setState({\n                  editingLinearElement: new _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_18__.LinearElementEditor(selectedElement, this.scene)\n                });\n              }\n            }\n          } else if ((0,_element__WEBPACK_IMPORTED_MODULE_16__.isTextElement)(selectedElement) || (0,_element_textElement__WEBPACK_IMPORTED_MODULE_43__.isValidTextContainer)(selectedElement)) {\n            let container;\n\n            if (!(0,_element__WEBPACK_IMPORTED_MODULE_16__.isTextElement)(selectedElement)) {\n              container = selectedElement;\n            }\n\n            const midPoint = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_43__.getContainerCenter)(selectedElement, this.state);\n            const sceneX = midPoint.x;\n            const sceneY = midPoint.y;\n            this.startTextEditing({\n              sceneX,\n              sceneY,\n              container\n            });\n            event.preventDefault();\n            return;\n          } else if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isFrameElement)(selectedElement)) {\n            this.setState({\n              editingFrame: selectedElement.id\n            });\n          }\n        }\n      } else if (!event.ctrlKey && !event.altKey && !event.metaKey && this.state.draggingElement === null) {\n        const shape = (0,_shapes__WEBPACK_IMPORTED_MODULE_32__.findShapeByKey)(event.key);\n\n        if (shape) {\n          if (this.state.activeTool.type !== shape) {\n            (0,_analytics__WEBPACK_IMPORTED_MODULE_9__.trackEvent)("toolbar", shape, `keyboard (${this.device.editor.isMobile ? "mobile" : "desktop"})`);\n          }\n\n          this.setActiveTool({\n            type: shape\n          });\n          event.stopPropagation();\n        } else if (event.key === _keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.Q) {\n          this.toggleLock("keyboard");\n          event.stopPropagation();\n        }\n      }\n\n      if (event.key === _keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.SPACE && gesture.pointers.size === 0) {\n        isHoldingSpace = true;\n        (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursor)(this.interactiveCanvas, _constants__WEBPACK_IMPORTED_MODULE_12__.CURSOR_TYPE.GRAB);\n        event.preventDefault();\n      }\n\n      if ((event.key === _keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.G || event.key === _keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.S) && !event.altKey && !event[_keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.CTRL_OR_CMD]) {\n        const selectedElements = this.scene.getSelectedElements(this.state);\n\n        if (this.state.activeTool.type === "selection" && !selectedElements.length) {\n          return;\n        }\n\n        if (event.key === _keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.G && ((0,_scene__WEBPACK_IMPORTED_MODULE_29__.hasBackground)(this.state.activeTool.type) || selectedElements.some(element => (0,_scene__WEBPACK_IMPORTED_MODULE_29__.hasBackground)(element.type)))) {\n          this.setState({\n            openPopup: "elementBackground"\n          });\n          event.stopPropagation();\n        }\n\n        if (event.key === _keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.S) {\n          this.setState({\n            openPopup: "elementStroke"\n          });\n          event.stopPropagation();\n        }\n      }\n\n      if (event.key === _keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.K && !event.altKey && !event[_keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.CTRL_OR_CMD]) {\n        if (this.state.activeTool.type === "laser") {\n          this.setActiveTool({\n            type: "selection"\n          });\n        } else {\n          this.setActiveTool({\n            type: "laser"\n          });\n        }\n\n        return;\n      }\n\n      if (event[_keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.CTRL_OR_CMD] && (event.key === _keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.BACKSPACE || event.key === _keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.DELETE)) {\n        _jotai__WEBPACK_IMPORTED_MODULE_55__.jotaiStore.set(_ActiveConfirmDialog__WEBPACK_IMPORTED_MODULE_56__.activeConfirmDialogAtom, "clearCanvas");\n      } // eye dropper\n      // -----------------------------------------------------------------------\n\n\n      const lowerCased = event.key.toLocaleLowerCase();\n      const isPickingStroke = lowerCased === _keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.S && event.shiftKey;\n      const isPickingBackground = event.key === _keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.I || lowerCased === _keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.G && event.shiftKey;\n\n      if (isPickingStroke || isPickingBackground) {\n        this.openEyeDropper({\n          type: isPickingStroke ? "stroke" : "background"\n        });\n      } // -----------------------------------------------------------------------\n\n    });\n    this.onWheel = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.withBatchedUpdates)(event => {\n      // prevent browser pinch zoom on DOM elements\n      if (!(event.target instanceof HTMLCanvasElement) && event.ctrlKey) {\n        event.preventDefault();\n      }\n    });\n    this.onKeyUp = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.withBatchedUpdates)(event => {\n      if (event.key === _keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.SPACE) {\n        if (this.state.viewModeEnabled) {\n          (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursor)(this.interactiveCanvas, _constants__WEBPACK_IMPORTED_MODULE_12__.CURSOR_TYPE.GRAB);\n        } else if (this.state.activeTool.type === "selection") {\n          (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.resetCursor)(this.interactiveCanvas);\n        } else {\n          (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursorForShape)(this.interactiveCanvas, this.state);\n          this.setState({\n            selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)({}, this.state),\n            selectedGroupIds: {},\n            editingGroupId: null,\n            activeEmbeddable: null\n          });\n        }\n\n        isHoldingSpace = false;\n      }\n\n      if (!event[_keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.CTRL_OR_CMD] && !this.state.isBindingEnabled) {\n        this.setState({\n          isBindingEnabled: true\n        });\n      }\n\n      if ((0,_keys__WEBPACK_IMPORTED_MODULE_26__.isArrowKey)(event.key)) {\n        const selectedElements = this.scene.getSelectedElements(this.state);\n        (0,_element_binding__WEBPACK_IMPORTED_MODULE_17__.isBindingEnabled)(this.state) ? (0,_element_binding__WEBPACK_IMPORTED_MODULE_17__.bindOrUnbindSelectedElements)(selectedElements) : (0,_element_binding__WEBPACK_IMPORTED_MODULE_17__.unbindLinearElements)(selectedElements);\n        this.setState({\n          suggestedBindings: []\n        });\n      }\n    }); // We purposely widen the `tool` type so this helper can be called with\n    // any tool without having to type check it\n\n    this.isToolSupported = tool => {\n      var _a;\n\n      return ((_a = this.props.UIOptions.tools) === null || _a === void 0 ? void 0 : _a[tool]) !== false;\n    };\n\n    this.setActiveTool = tool => {\n      var _a;\n\n      if (!this.isToolSupported(tool.type)) {\n        console.warn(`"${tool.type}" tool is disabled via "UIOptions.canvasActions.tools.${tool.type}"`);\n        return;\n      }\n\n      const nextActiveTool = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.updateActiveTool)(this.state, tool);\n\n      if (nextActiveTool.type === "hand") {\n        (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursor)(this.interactiveCanvas, _constants__WEBPACK_IMPORTED_MODULE_12__.CURSOR_TYPE.GRAB);\n      } else if (!isHoldingSpace) {\n        (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursorForShape)(this.interactiveCanvas, this.state);\n      }\n\n      if ((0,_utils__WEBPACK_IMPORTED_MODULE_33__.isToolIcon)(document.activeElement)) {\n        this.focusContainer();\n      }\n\n      if (!(0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isLinearElementType)(nextActiveTool.type)) {\n        this.setState({\n          suggestedBindings: []\n        });\n      }\n\n      if (nextActiveTool.type === "image") {\n        this.onImageAction({\n          insertOnCanvasDirectly: (_a = tool.type === "image" && tool.insertOnCanvasDirectly) !== null && _a !== void 0 ? _a : false\n        });\n      }\n\n      this.setState(prevState => {\n        const commonResets = {\n          snapLines: prevState.snapLines.length ? [] : prevState.snapLines,\n          originSnapOffset: null,\n          activeEmbeddable: null\n        };\n\n        if (nextActiveTool.type !== "selection") {\n          return Object.assign(Object.assign(Object.assign({}, prevState), {\n            activeTool: nextActiveTool,\n            selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)({}, prevState),\n            selectedGroupIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)({}, prevState),\n            editingGroupId: null,\n            multiElement: null\n          }), commonResets);\n        }\n\n        return Object.assign(Object.assign(Object.assign({}, prevState), {\n          activeTool: nextActiveTool\n        }), commonResets);\n      });\n    };\n\n    this.setOpenDialog = dialogType => {\n      this.setState({\n        openDialog: dialogType\n      });\n    };\n\n    this.setCursor = cursor => {\n      (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursor)(this.interactiveCanvas, cursor);\n    };\n\n    this.resetCursor = () => {\n      (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.resetCursor)(this.interactiveCanvas);\n    };\n    /**\n     * returns whether user is making a gesture with >= 2 fingers (points)\n     * on o touch screen (not on a trackpad). Currently only relates to Darwin\n     * (iOS/iPadOS,MacOS), but may work on other devices in the future if\n     * GestureEvent is standardized.\n     */\n\n\n    this.isTouchScreenMultiTouchGesture = () => {\n      // we don\'t want to deselect when using trackpad, and multi-point gestures\n      // only work on touch screens, so checking for >= pointers means we\'re on a\n      // touchscreen\n      return gesture.pointers.size >= 2;\n    }; // fires only on Safari\n\n\n    this.onGestureStart = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.withBatchedUpdates)(event => {\n      event.preventDefault(); // we only want to deselect on touch screens because user may have selected\n      // elements by mistake while zooming\n\n      if (this.isTouchScreenMultiTouchGesture()) {\n        this.setState({\n          selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)({}, this.state),\n          activeEmbeddable: null\n        });\n      }\n\n      gesture.initialScale = this.state.zoom.value;\n    }); // fires only on Safari\n\n    this.onGestureChange = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.withBatchedUpdates)(event => {\n      event.preventDefault(); // onGestureChange only has zoom factor but not the center.\n      // If we\'re on iPad or iPhone, then we recognize multi-touch and will\n      // zoom in at the right location in the touchmove handler\n      // (handleCanvasPointerMove).\n      //\n      // On Macbook trackpad, we don\'t have those events so will zoom in at the\n      // current location instead.\n      //\n      // As such, bail from this handler on touch devices.\n\n      if (this.isTouchScreenMultiTouchGesture()) {\n        return;\n      }\n\n      const initialScale = gesture.initialScale;\n\n      if (initialScale) {\n        this.setState(state => Object.assign({}, (0,_scene_zoom__WEBPACK_IMPORTED_MODULE_31__.getStateForZoom)({\n          viewportX: this.lastViewportPosition.x,\n          viewportY: this.lastViewportPosition.y,\n          nextZoom: (0,_scene__WEBPACK_IMPORTED_MODULE_29__.getNormalizedZoom)(initialScale * event.scale)\n        }, state)));\n      }\n    }); // fires only on Safari\n\n    this.onGestureEnd = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.withBatchedUpdates)(event => {\n      event.preventDefault(); // reselect elements only on touch screens (see onGestureStart)\n\n      if (this.isTouchScreenMultiTouchGesture()) {\n        this.setState({\n          previousSelectedElementIds: {},\n          selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)(this.state.previousSelectedElementIds, this.state)\n        });\n      }\n\n      gesture.initialScale = null;\n    });\n\n    this.startTextEditing = ({\n      sceneX,\n      sceneY,\n      insertAtParentCenter = true,\n      container\n    }) => {\n      var _a, _b;\n\n      let shouldBindToContainer = false;\n      let parentCenterPosition = insertAtParentCenter && this.getTextWysiwygSnappedToCenterPosition(sceneX, sceneY, this.state, container);\n\n      if (container && parentCenterPosition) {\n        const boundTextElementToContainer = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_43__.getBoundTextElement)(container);\n\n        if (!boundTextElementToContainer) {\n          shouldBindToContainer = true;\n        }\n      }\n\n      let existingTextElement = null;\n      const selectedElements = this.scene.getSelectedElements(this.state);\n\n      if (selectedElements.length === 1) {\n        if ((0,_element__WEBPACK_IMPORTED_MODULE_16__.isTextElement)(selectedElements[0])) {\n          existingTextElement = selectedElements[0];\n        } else if (container) {\n          existingTextElement = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_43__.getBoundTextElement)(selectedElements[0]);\n        } else {\n          existingTextElement = this.getTextElementAtPosition(sceneX, sceneY);\n        }\n      } else {\n        existingTextElement = this.getTextElementAtPosition(sceneX, sceneY);\n      }\n\n      const fontFamily = (existingTextElement === null || existingTextElement === void 0 ? void 0 : existingTextElement.fontFamily) || this.state.currentItemFontFamily;\n      const lineHeight = (existingTextElement === null || existingTextElement === void 0 ? void 0 : existingTextElement.lineHeight) || (0,_element_textElement__WEBPACK_IMPORTED_MODULE_43__.getDefaultLineHeight)(fontFamily);\n      const fontSize = this.state.currentItemFontSize;\n\n      if (!existingTextElement && shouldBindToContainer && container && !(0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isArrowElement)(container)) {\n        const fontString = {\n          fontSize,\n          fontFamily\n        };\n        const minWidth = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_43__.getApproxMinLineWidth)((0,_utils__WEBPACK_IMPORTED_MODULE_33__.getFontString)(fontString), lineHeight);\n        const minHeight = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_43__.getApproxMinLineHeight)(fontSize, lineHeight);\n        const newHeight = Math.max(container.height, minHeight);\n        const newWidth = Math.max(container.width, minWidth);\n        (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(container, {\n          height: newHeight,\n          width: newWidth\n        });\n        sceneX = container.x + newWidth / 2;\n        sceneY = container.y + newHeight / 2;\n\n        if (parentCenterPosition) {\n          parentCenterPosition = this.getTextWysiwygSnappedToCenterPosition(sceneX, sceneY, this.state, container);\n        }\n      }\n\n      const topLayerFrame = this.getTopLayerFrameAtSceneCoords({\n        x: sceneX,\n        y: sceneY\n      });\n      const element = existingTextElement ? existingTextElement : (0,_element__WEBPACK_IMPORTED_MODULE_16__.newTextElement)({\n        x: parentCenterPosition ? parentCenterPosition.elementCenterX : sceneX,\n        y: parentCenterPosition ? parentCenterPosition.elementCenterY : sceneY,\n        strokeColor: this.state.currentItemStrokeColor,\n        backgroundColor: this.state.currentItemBackgroundColor,\n        fillStyle: this.state.currentItemFillStyle,\n        strokeWidth: this.state.currentItemStrokeWidth,\n        strokeStyle: this.state.currentItemStrokeStyle,\n        roughness: this.state.currentItemRoughness,\n        opacity: this.state.currentItemOpacity,\n        text: "",\n        fontSize,\n        fontFamily,\n        textAlign: parentCenterPosition ? "center" : this.state.currentItemTextAlign,\n        verticalAlign: parentCenterPosition ? _constants__WEBPACK_IMPORTED_MODULE_12__.VERTICAL_ALIGN.MIDDLE : _constants__WEBPACK_IMPORTED_MODULE_12__.DEFAULT_VERTICAL_ALIGN,\n        containerId: shouldBindToContainer ? container === null || container === void 0 ? void 0 : container.id : undefined,\n        groupIds: (_a = container === null || container === void 0 ? void 0 : container.groupIds) !== null && _a !== void 0 ? _a : [],\n        lineHeight,\n        angle: (_b = container === null || container === void 0 ? void 0 : container.angle) !== null && _b !== void 0 ? _b : 0,\n        frameId: topLayerFrame ? topLayerFrame.id : null\n      });\n\n      if (!existingTextElement && shouldBindToContainer && container) {\n        (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(container, {\n          boundElements: (container.boundElements || []).concat({\n            type: "text",\n            id: element.id\n          })\n        });\n      }\n\n      this.setState({\n        editingElement: element\n      });\n\n      if (!existingTextElement) {\n        if (container && shouldBindToContainer) {\n          const containerIndex = this.scene.getElementIndex(container.id);\n          this.scene.insertElementAtIndex(element, containerIndex + 1);\n        } else {\n          this.scene.addNewElement(element);\n        }\n      }\n\n      this.setState({\n        editingElement: element\n      });\n      this.handleTextWysiwyg(element, {\n        isExistingElement: !!existingTextElement\n      });\n    };\n\n    this.handleCanvasDoubleClick = event => {\n      // case: double-clicking with arrow/line tool selected would both create\n      // text and enter multiElement mode\n      if (this.state.multiElement) {\n        return;\n      } // we should only be able to double click when mode is selection\n\n\n      if (this.state.activeTool.type !== "selection") {\n        return;\n      }\n\n      const selectedElements = this.scene.getSelectedElements(this.state);\n\n      if (selectedElements.length === 1 && (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isLinearElement)(selectedElements[0])) {\n        if (event[_keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.CTRL_OR_CMD] && (!this.state.editingLinearElement || this.state.editingLinearElement.elementId !== selectedElements[0].id)) {\n          this.history.resumeRecording();\n          this.setState({\n            editingLinearElement: new _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_18__.LinearElementEditor(selectedElements[0], this.scene)\n          });\n          return;\n        } else if (this.state.editingLinearElement && this.state.editingLinearElement.elementId === selectedElements[0].id) {\n          return;\n        }\n      }\n\n      (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.resetCursor)(this.interactiveCanvas);\n      let {\n        x: sceneX,\n        y: sceneY\n      } = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.viewportCoordsToSceneCoords)(event, this.state);\n      const selectedGroupIds = (0,_groups__WEBPACK_IMPORTED_MODULE_23__.getSelectedGroupIds)(this.state);\n\n      if (selectedGroupIds.length > 0) {\n        const hitElement = this.getElementAtPosition(sceneX, sceneY);\n        const selectedGroupId = hitElement && (0,_groups__WEBPACK_IMPORTED_MODULE_23__.getSelectedGroupIdForElement)(hitElement, this.state.selectedGroupIds);\n\n        if (selectedGroupId) {\n          this.setState(prevState => Object.assign(Object.assign({}, prevState), (0,_groups__WEBPACK_IMPORTED_MODULE_23__.selectGroupsForSelectedElements)({\n            editingGroupId: selectedGroupId,\n            selectedElementIds: {\n              [hitElement.id]: true\n            }\n          }, this.scene.getNonDeletedElements(), prevState, this)));\n          return;\n        }\n      }\n\n      (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.resetCursor)(this.interactiveCanvas);\n\n      if (!event[_keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.CTRL_OR_CMD] && !this.state.viewModeEnabled) {\n        const hitElement = this.getElementAtPosition(sceneX, sceneY);\n\n        if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isEmbeddableElement)(hitElement)) {\n          this.setState({\n            activeEmbeddable: {\n              element: hitElement,\n              state: "active"\n            }\n          });\n          return;\n        }\n\n        const container = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_43__.getTextBindableContainerAtPosition)(this.scene.getNonDeletedElements(), this.state, sceneX, sceneY);\n\n        if (container) {\n          if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.hasBoundTextElement)(container) || !(0,_utils__WEBPACK_IMPORTED_MODULE_33__.isTransparent)(container.backgroundColor) || (0,_element_collision__WEBPACK_IMPORTED_MODULE_44__.isHittingElementNotConsideringBoundingBox)(container, this.state, this.frameNameBoundsCache, [sceneX, sceneY])) {\n            const midPoint = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_43__.getContainerCenter)(container, this.state);\n            sceneX = midPoint.x;\n            sceneY = midPoint.y;\n          }\n        }\n\n        this.startTextEditing({\n          sceneX,\n          sceneY,\n          insertAtParentCenter: !event.altKey,\n          container\n        });\n      }\n    };\n\n    this.getElementLinkAtPosition = (scenePointer, hitElement) => {\n      // Reversing so we traverse the elements in decreasing order\n      // of z-index\n      const elements = this.scene.getNonDeletedElements().slice().reverse();\n      let hitElementIndex = Infinity;\n      return elements.find((element, index) => {\n        if (hitElement && element.id === hitElement.id) {\n          hitElementIndex = index;\n        }\n\n        return element.link && index <= hitElementIndex && (0,_element_Hyperlink__WEBPACK_IMPORTED_MODULE_45__.isPointHittingLink)(element, this.state, [scenePointer.x, scenePointer.y], this.device.editor.isMobile);\n      });\n    };\n\n    this.redirectToLink = (event, isTouchScreen) => {\n      const draggedDistance = (0,_math__WEBPACK_IMPORTED_MODULE_28__.distance2d)(this.lastPointerDownEvent.clientX, this.lastPointerDownEvent.clientY, this.lastPointerUpEvent.clientX, this.lastPointerUpEvent.clientY);\n\n      if (!this.hitLinkElement || // For touch screen allow dragging threshold else strict check\n      isTouchScreen && draggedDistance > _constants__WEBPACK_IMPORTED_MODULE_12__.DRAGGING_THRESHOLD || !isTouchScreen && draggedDistance !== 0) {\n        return;\n      }\n\n      const lastPointerDownCoords = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.viewportCoordsToSceneCoords)(this.lastPointerDownEvent, this.state);\n      const lastPointerDownHittingLinkIcon = (0,_element_Hyperlink__WEBPACK_IMPORTED_MODULE_45__.isPointHittingLink)(this.hitLinkElement, this.state, [lastPointerDownCoords.x, lastPointerDownCoords.y], this.device.editor.isMobile);\n      const lastPointerUpCoords = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.viewportCoordsToSceneCoords)(this.lastPointerUpEvent, this.state);\n      const lastPointerUpHittingLinkIcon = (0,_element_Hyperlink__WEBPACK_IMPORTED_MODULE_45__.isPointHittingLink)(this.hitLinkElement, this.state, [lastPointerUpCoords.x, lastPointerUpCoords.y], this.device.editor.isMobile);\n\n      if (lastPointerDownHittingLinkIcon && lastPointerUpHittingLinkIcon) {\n        let url = this.hitLinkElement.link;\n\n        if (url) {\n          url = (0,_data_url__WEBPACK_IMPORTED_MODULE_46__.normalizeLink)(url);\n          let customEvent;\n\n          if (this.props.onLinkOpen) {\n            customEvent = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.wrapEvent)(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.EXCALIDRAW_LINK, event.nativeEvent);\n            this.props.onLinkOpen(Object.assign(Object.assign({}, this.hitLinkElement), {\n              link: url\n            }), customEvent);\n          }\n\n          if (!(customEvent === null || customEvent === void 0 ? void 0 : customEvent.defaultPrevented)) {\n            const target = (0,_data_url__WEBPACK_IMPORTED_MODULE_46__.isLocalLink)(url) ? "_self" : "_blank";\n            const newWindow = window.open(undefined, target); // https://mathiasbynens.github.io/rel-noopener/\n\n            if (newWindow) {\n              newWindow.opener = null;\n              newWindow.location = url;\n            }\n          }\n        }\n      }\n    };\n\n    this.getTopLayerFrameAtSceneCoords = sceneCoords => {\n      const frames = this.scene.getNonDeletedFrames().filter(frame => (0,_frame__WEBPACK_IMPORTED_MODULE_50__.isCursorInFrame)(sceneCoords, frame));\n      return frames.length ? frames[frames.length - 1] : null;\n    };\n\n    this.handleCanvasPointerMove = event => {\n      var _a, _b;\n\n      this.savePointer(event.clientX, event.clientY, this.state.cursorButton);\n\n      if (gesture.pointers.has(event.pointerId)) {\n        gesture.pointers.set(event.pointerId, {\n          x: event.clientX,\n          y: event.clientY\n        });\n      }\n\n      const initialScale = gesture.initialScale;\n\n      if (gesture.pointers.size === 2 && gesture.lastCenter && initialScale && gesture.initialDistance) {\n        const center = (0,_gesture__WEBPACK_IMPORTED_MODULE_22__.getCenter)(gesture.pointers);\n        const deltaX = center.x - gesture.lastCenter.x;\n        const deltaY = center.y - gesture.lastCenter.y;\n        gesture.lastCenter = center;\n        const distance = (0,_gesture__WEBPACK_IMPORTED_MODULE_22__.getDistance)(Array.from(gesture.pointers.values()));\n        const scaleFactor = this.state.activeTool.type === "freedraw" && this.state.penMode ? 1 : distance / gesture.initialDistance;\n        const nextZoom = scaleFactor ? (0,_scene__WEBPACK_IMPORTED_MODULE_29__.getNormalizedZoom)(initialScale * scaleFactor) : this.state.zoom.value;\n        this.setState(state => {\n          const zoomState = (0,_scene_zoom__WEBPACK_IMPORTED_MODULE_31__.getStateForZoom)({\n            viewportX: center.x,\n            viewportY: center.y,\n            nextZoom\n          }, state);\n          this.translateCanvas({\n            zoom: zoomState.zoom,\n            scrollX: zoomState.scrollX + deltaX / nextZoom,\n            scrollY: zoomState.scrollY + deltaY / nextZoom,\n            shouldCacheIgnoreZoom: true\n          });\n        });\n        this.resetShouldCacheIgnoreZoomDebounced();\n      } else {\n        gesture.lastCenter = gesture.initialDistance = gesture.initialScale = null;\n      }\n\n      if (isHoldingSpace || isPanning || isDraggingScrollBar || (0,_appState__WEBPACK_IMPORTED_MODULE_10__.isHandToolActive)(this.state)) {\n        return;\n      }\n\n      const isPointerOverScrollBars = (0,_scene__WEBPACK_IMPORTED_MODULE_29__.isOverScrollBars)(currentScrollBars, event.clientX - this.state.offsetLeft, event.clientY - this.state.offsetTop);\n      const isOverScrollBar = isPointerOverScrollBars.isOverEither;\n\n      if (!this.state.draggingElement && !this.state.multiElement) {\n        if (isOverScrollBar) {\n          (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.resetCursor)(this.interactiveCanvas);\n        } else {\n          (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursorForShape)(this.interactiveCanvas, this.state);\n        }\n      }\n\n      const scenePointer = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.viewportCoordsToSceneCoords)(event, this.state);\n      const {\n        x: scenePointerX,\n        y: scenePointerY\n      } = scenePointer;\n\n      if (!this.state.draggingElement && (0,_snapping__WEBPACK_IMPORTED_MODULE_58__.isActiveToolNonLinearSnappable)(this.state.activeTool.type)) {\n        const {\n          originOffset,\n          snapLines\n        } = (0,_snapping__WEBPACK_IMPORTED_MODULE_58__.getSnapLinesAtPointer)(this.scene.getNonDeletedElements(), this.state, {\n          x: scenePointerX,\n          y: scenePointerY\n        }, event);\n        this.setState({\n          snapLines,\n          originSnapOffset: originOffset\n        });\n      } else if (!this.state.draggingElement) {\n        this.setState({\n          snapLines: []\n        });\n      }\n\n      if (this.state.editingLinearElement && !this.state.editingLinearElement.isDragging) {\n        const editingLinearElement = _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_18__.LinearElementEditor.handlePointerMove(event, scenePointerX, scenePointerY, this.state);\n\n        if (editingLinearElement && editingLinearElement !== this.state.editingLinearElement) {\n          // Since we are reading from previous state which is not possible with\n          // automatic batching in React 18 hence using flush sync to synchronously\n          // update the state. Check https://github.com/excalidraw/excalidraw/pull/5508 for more details.\n          (0,react_dom__WEBPACK_IMPORTED_MODULE_2__.flushSync)(() => {\n            this.setState({\n              editingLinearElement\n            });\n          });\n        }\n\n        if ((editingLinearElement === null || editingLinearElement === void 0 ? void 0 : editingLinearElement.lastUncommittedPoint) != null) {\n          this.maybeSuggestBindingAtCursor(scenePointer);\n        } else {\n          // causes stack overflow if not sync\n          (0,react_dom__WEBPACK_IMPORTED_MODULE_2__.flushSync)(() => {\n            this.setState({\n              suggestedBindings: []\n            });\n          });\n        }\n      }\n\n      if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isBindingElementType)(this.state.activeTool.type)) {\n        // Hovering with a selected tool or creating new linear element via click\n        // and point\n        const {\n          draggingElement\n        } = this.state;\n\n        if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isBindingElement)(draggingElement, false)) {\n          this.maybeSuggestBindingsForLinearElementAtCoords(draggingElement, [scenePointer], this.state.startBoundElement);\n        } else {\n          this.maybeSuggestBindingAtCursor(scenePointer);\n        }\n      }\n\n      if (this.state.multiElement) {\n        const {\n          multiElement\n        } = this.state;\n        const {\n          x: rx,\n          y: ry\n        } = multiElement;\n        const {\n          points,\n          lastCommittedPoint\n        } = multiElement;\n        const lastPoint = points[points.length - 1];\n        (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursorForShape)(this.interactiveCanvas, this.state);\n\n        if (lastPoint === lastCommittedPoint) {\n          // if we haven\'t yet created a temp point and we\'re beyond commit-zone\n          // threshold, add a point\n          if ((0,_math__WEBPACK_IMPORTED_MODULE_28__.distance2d)(scenePointerX - rx, scenePointerY - ry, lastPoint[0], lastPoint[1]) >= _constants__WEBPACK_IMPORTED_MODULE_12__.LINE_CONFIRM_THRESHOLD) {\n            (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(multiElement, {\n              points: [...points, [scenePointerX - rx, scenePointerY - ry]]\n            });\n          } else {\n            (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursor)(this.interactiveCanvas, _constants__WEBPACK_IMPORTED_MODULE_12__.CURSOR_TYPE.POINTER); // in this branch, we\'re inside the commit zone, and no uncommitted\n            // point exists. Thus do nothing (don\'t add/remove points).\n          }\n        } else if (points.length > 2 && lastCommittedPoint && (0,_math__WEBPACK_IMPORTED_MODULE_28__.distance2d)(scenePointerX - rx, scenePointerY - ry, lastCommittedPoint[0], lastCommittedPoint[1]) < _constants__WEBPACK_IMPORTED_MODULE_12__.LINE_CONFIRM_THRESHOLD) {\n          (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursor)(this.interactiveCanvas, _constants__WEBPACK_IMPORTED_MODULE_12__.CURSOR_TYPE.POINTER);\n          (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(multiElement, {\n            points: points.slice(0, -1)\n          });\n        } else {\n          const [gridX, gridY] = (0,_math__WEBPACK_IMPORTED_MODULE_28__.getGridPoint)(scenePointerX, scenePointerY, event[_keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.CTRL_OR_CMD] ? null : this.state.gridSize);\n          const [lastCommittedX, lastCommittedY] = (_a = multiElement === null || multiElement === void 0 ? void 0 : multiElement.lastCommittedPoint) !== null && _a !== void 0 ? _a : [0, 0];\n          let dxFromLastCommitted = gridX - rx - lastCommittedX;\n          let dyFromLastCommitted = gridY - ry - lastCommittedY;\n\n          if ((0,_keys__WEBPACK_IMPORTED_MODULE_26__.shouldRotateWithDiscreteAngle)(event)) {\n            ({\n              width: dxFromLastCommitted,\n              height: dyFromLastCommitted\n            } = (0,_element__WEBPACK_IMPORTED_MODULE_16__.getLockedLinearCursorAlignSize)( // actual coordinate of the last committed point\n            lastCommittedX + rx, lastCommittedY + ry, // cursor-grid coordinate\n            gridX, gridY));\n          }\n\n          if ((0,_math__WEBPACK_IMPORTED_MODULE_28__.isPathALoop)(points, this.state.zoom.value)) {\n            (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursor)(this.interactiveCanvas, _constants__WEBPACK_IMPORTED_MODULE_12__.CURSOR_TYPE.POINTER);\n          } // update last uncommitted point\n\n\n          (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(multiElement, {\n            points: [...points.slice(0, -1), [lastCommittedX + dxFromLastCommitted, lastCommittedY + dyFromLastCommitted]]\n          });\n        }\n\n        return;\n      }\n\n      const hasDeselectedButton = Boolean(event.buttons);\n\n      if (hasDeselectedButton || this.state.activeTool.type !== "selection" && this.state.activeTool.type !== "text" && this.state.activeTool.type !== "eraser") {\n        return;\n      }\n\n      const elements = this.scene.getNonDeletedElements();\n      const selectedElements = this.scene.getSelectedElements(this.state);\n\n      if (selectedElements.length === 1 && !isOverScrollBar && !this.state.editingLinearElement) {\n        const elementWithTransformHandleType = (0,_element__WEBPACK_IMPORTED_MODULE_16__.getElementWithTransformHandleType)(elements, this.state, scenePointerX, scenePointerY, this.state.zoom, event.pointerType);\n\n        if (elementWithTransformHandleType && elementWithTransformHandleType.transformHandleType) {\n          (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursor)(this.interactiveCanvas, (0,_element__WEBPACK_IMPORTED_MODULE_16__.getCursorForResizingElement)(elementWithTransformHandleType));\n          return;\n        }\n      } else if (selectedElements.length > 1 && !isOverScrollBar) {\n        const transformHandleType = (0,_element__WEBPACK_IMPORTED_MODULE_16__.getTransformHandleTypeFromCoords)((0,_element__WEBPACK_IMPORTED_MODULE_16__.getCommonBounds)(selectedElements), scenePointerX, scenePointerY, this.state.zoom, event.pointerType);\n\n        if (transformHandleType) {\n          (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursor)(this.interactiveCanvas, (0,_element__WEBPACK_IMPORTED_MODULE_16__.getCursorForResizingElement)({\n            transformHandleType\n          }));\n          return;\n        }\n      }\n\n      const hitElement = this.getElementAtPosition(scenePointer.x, scenePointer.y);\n      this.hitLinkElement = this.getElementLinkAtPosition(scenePointer, hitElement);\n\n      if ((0,_appState__WEBPACK_IMPORTED_MODULE_10__.isEraserActive)(this.state)) {\n        return;\n      }\n\n      if (this.hitLinkElement && !this.state.selectedElementIds[this.hitLinkElement.id]) {\n        (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursor)(this.interactiveCanvas, _constants__WEBPACK_IMPORTED_MODULE_12__.CURSOR_TYPE.POINTER);\n        (0,_element_Hyperlink__WEBPACK_IMPORTED_MODULE_45__.showHyperlinkTooltip)(this.hitLinkElement, this.state);\n      } else {\n        (0,_element_Hyperlink__WEBPACK_IMPORTED_MODULE_45__.hideHyperlinkToolip)();\n\n        if (hitElement && (hitElement.link || (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isEmbeddableElement)(hitElement)) && this.state.selectedElementIds[hitElement.id] && !this.state.contextMenu && !this.state.showHyperlinkPopup) {\n          this.setState({\n            showHyperlinkPopup: "info"\n          });\n        } else if (this.state.activeTool.type === "text") {\n          (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursor)(this.interactiveCanvas, (0,_element__WEBPACK_IMPORTED_MODULE_16__.isTextElement)(hitElement) ? _constants__WEBPACK_IMPORTED_MODULE_12__.CURSOR_TYPE.TEXT : _constants__WEBPACK_IMPORTED_MODULE_12__.CURSOR_TYPE.CROSSHAIR);\n        } else if (this.state.viewModeEnabled) {\n          (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursor)(this.interactiveCanvas, _constants__WEBPACK_IMPORTED_MODULE_12__.CURSOR_TYPE.GRAB);\n        } else if (isOverScrollBar) {\n          (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursor)(this.interactiveCanvas, _constants__WEBPACK_IMPORTED_MODULE_12__.CURSOR_TYPE.AUTO);\n        } else if (this.state.selectedLinearElement) {\n          this.handleHoverSelectedLinearElement(this.state.selectedLinearElement, scenePointerX, scenePointerY);\n        } else if ( // if using cmd/ctrl, we\'re not dragging\n        !event[_keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.CTRL_OR_CMD]) {\n          if ((hitElement || this.isHittingCommonBoundingBoxOfSelectedElements(scenePointer, selectedElements)) && !(hitElement === null || hitElement === void 0 ? void 0 : hitElement.locked)) {\n            if (hitElement && (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isEmbeddableElement)(hitElement) && this.isEmbeddableCenter(hitElement, event, scenePointerX, scenePointerY)) {\n              (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursor)(this.interactiveCanvas, _constants__WEBPACK_IMPORTED_MODULE_12__.CURSOR_TYPE.POINTER);\n              this.setState({\n                activeEmbeddable: {\n                  element: hitElement,\n                  state: "hover"\n                }\n              });\n            } else {\n              (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursor)(this.interactiveCanvas, _constants__WEBPACK_IMPORTED_MODULE_12__.CURSOR_TYPE.MOVE);\n\n              if (((_b = this.state.activeEmbeddable) === null || _b === void 0 ? void 0 : _b.state) === "hover") {\n                this.setState({\n                  activeEmbeddable: null\n                });\n              }\n            }\n          }\n        } else {\n          (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursor)(this.interactiveCanvas, _constants__WEBPACK_IMPORTED_MODULE_12__.CURSOR_TYPE.AUTO);\n        }\n      }\n    };\n\n    this.handleEraser = (event, pointerDownState, scenePointer) => {\n      const updateElementIds = elements => {\n        elements.forEach(element => {\n          if (element.locked) {\n            return;\n          }\n\n          idsToUpdate.push(element.id);\n\n          if (event.altKey) {\n            if (pointerDownState.elementIdsToErase[element.id] && pointerDownState.elementIdsToErase[element.id].erase) {\n              pointerDownState.elementIdsToErase[element.id].erase = false;\n            }\n          } else if (!pointerDownState.elementIdsToErase[element.id]) {\n            pointerDownState.elementIdsToErase[element.id] = {\n              erase: true,\n              opacity: element.opacity\n            };\n          }\n        });\n      };\n\n      const idsToUpdate = [];\n      const distance = (0,_math__WEBPACK_IMPORTED_MODULE_28__.distance2d)(pointerDownState.lastCoords.x, pointerDownState.lastCoords.y, scenePointer.x, scenePointer.y);\n      const threshold = 10 / this.state.zoom.value;\n      const point = Object.assign({}, pointerDownState.lastCoords);\n      let samplingInterval = 0;\n\n      while (samplingInterval <= distance) {\n        const hitElements = this.getElementsAtPosition(point.x, point.y);\n        updateElementIds(hitElements); // Exit since we reached current point\n\n        if (samplingInterval === distance) {\n          break;\n        } // Calculate next point in the line at a distance of sampling interval\n\n\n        samplingInterval = Math.min(samplingInterval + threshold, distance);\n        const distanceRatio = samplingInterval / distance;\n        const nextX = (1 - distanceRatio) * point.x + distanceRatio * scenePointer.x;\n        const nextY = (1 - distanceRatio) * point.y + distanceRatio * scenePointer.y;\n        point.x = nextX;\n        point.y = nextY;\n      }\n\n      const elements = this.scene.getElementsIncludingDeleted().map(ele => {\n        const id = (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isBoundToContainer)(ele) && idsToUpdate.includes(ele.containerId) ? ele.containerId : ele.id;\n\n        if (idsToUpdate.includes(id)) {\n          if (event.altKey) {\n            if (pointerDownState.elementIdsToErase[id] && pointerDownState.elementIdsToErase[id].erase === false) {\n              return (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.newElementWith)(ele, {\n                opacity: pointerDownState.elementIdsToErase[id].opacity\n              });\n            }\n          } else {\n            return (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.newElementWith)(ele, {\n              opacity: _constants__WEBPACK_IMPORTED_MODULE_12__.ELEMENT_READY_TO_ERASE_OPACITY\n            });\n          }\n        }\n\n        return ele;\n      });\n      this.scene.replaceAllElements(elements);\n      pointerDownState.lastCoords.x = scenePointer.x;\n      pointerDownState.lastCoords.y = scenePointer.y;\n    }; // set touch moving for mobile context menu\n\n\n    this.handleTouchMove = event => {\n      invalidateContextMenu = true;\n    };\n\n    this.handleCanvasPointerDown = event => {\n      var _a, _b; // since contextMenu options are potentially evaluated on each render,\n      // and an contextMenu action may depend on selection state, we must\n      // close the contextMenu before we update the selection on pointerDown\n      // (e.g. resetting selection)\n\n\n      if (this.state.contextMenu) {\n        this.setState({\n          contextMenu: null\n        });\n      }\n\n      if (this.state.snapLines) {\n        this.setAppState({\n          snapLines: []\n        });\n      }\n\n      this.updateGestureOnPointerDown(event); // if dragging element is freedraw and another pointerdown event occurs\n      // a second finger is on the screen\n      // discard the freedraw element if it is very short because it is likely\n      // just a spike, otherwise finalize the freedraw element when the second\n      // finger is lifted\n\n      if (event.pointerType === "touch" && this.state.draggingElement && this.state.draggingElement.type === "freedraw") {\n        const element = this.state.draggingElement;\n        this.updateScene(Object.assign(Object.assign({}, element.points.length < 10 ? {\n          elements: this.scene.getElementsIncludingDeleted().filter(el => el.id !== element.id)\n        } : {}), {\n          appState: {\n            draggingElement: null,\n            editingElement: null,\n            startBoundElement: null,\n            suggestedBindings: [],\n            selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)(Object.keys(this.state.selectedElementIds).filter(key => key !== element.id).reduce((obj, key) => {\n              obj[key] = this.state.selectedElementIds[key];\n              return obj;\n            }, {}), this.state)\n          }\n        }));\n        return;\n      } // remove any active selection when we start to interact with canvas\n      // (mainly, we care about removing selection outside the component which\n      //  would prevent our copy handling otherwise)\n\n\n      const selection = document.getSelection();\n\n      if (selection === null || selection === void 0 ? void 0 : selection.anchorNode) {\n        selection.removeAllRanges();\n      }\n\n      this.maybeOpenContextMenuAfterPointerDownOnTouchDevices(event);\n      this.maybeCleanupAfterMissingPointerUp(event); //fires only once, if pen is detected, penMode is enabled\n      //the user can disable this by toggling the penMode button\n\n      if (!this.state.penDetected && event.pointerType === "pen") {\n        this.setState(prevState => {\n          return {\n            penMode: true,\n            penDetected: true\n          };\n        });\n      }\n\n      if (!this.device.isTouchScreen && ["pen", "touch"].includes(event.pointerType)) {\n        this.device = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.updateObject)(this.device, {\n          isTouchScreen: true\n        });\n      }\n\n      if (isPanning) {\n        return;\n      }\n\n      this.lastPointerDownEvent = event; // we must exit before we set `cursorButton` state and `savePointer`\n      // else it will send pointer state & laser pointer events in collab when\n      // panning\n\n      if (this.handleCanvasPanUsingWheelOrSpaceDrag(event)) {\n        return;\n      }\n\n      this.setState({\n        lastPointerDownWith: event.pointerType,\n        cursorButton: "down"\n      });\n      this.savePointer(event.clientX, event.clientY, "down"); // only handle left mouse button or touch\n\n      if (event.button !== _constants__WEBPACK_IMPORTED_MODULE_12__.POINTER_BUTTON.MAIN && event.button !== _constants__WEBPACK_IMPORTED_MODULE_12__.POINTER_BUTTON.TOUCH) {\n        return;\n      } // don\'t select while panning\n\n\n      if (gesture.pointers.size > 1) {\n        return;\n      } // State for the duration of a pointer interaction, which starts with a\n      // pointerDown event, ends with a pointerUp event (or another pointerDown)\n\n\n      const pointerDownState = this.initialPointerDownState(event);\n      this.setState({\n        selectedElementsAreBeingDragged: false\n      });\n\n      if (this.handleDraggingScrollBar(event, pointerDownState)) {\n        return;\n      }\n\n      this.clearSelectionIfNotUsingSelection();\n      this.updateBindingEnabledOnPointerMove(event);\n\n      if (this.handleSelectionOnPointerDown(event, pointerDownState)) {\n        return;\n      }\n\n      const allowOnPointerDown = !this.state.penMode || event.pointerType !== "touch" || this.state.activeTool.type === "selection" || this.state.activeTool.type === "text" || this.state.activeTool.type === "image";\n\n      if (!allowOnPointerDown) {\n        return;\n      }\n\n      if (this.state.activeTool.type === "text") {\n        this.handleTextOnPointerDown(event, pointerDownState);\n        return;\n      } else if (this.state.activeTool.type === "arrow" || this.state.activeTool.type === "line") {\n        this.handleLinearElementOnPointerDown(event, this.state.activeTool.type, pointerDownState);\n      } else if (this.state.activeTool.type === "image") {\n        // reset image preview on pointerdown\n        (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursor)(this.interactiveCanvas, _constants__WEBPACK_IMPORTED_MODULE_12__.CURSOR_TYPE.CROSSHAIR); // retrieve the latest element as the state may be stale\n\n        const pendingImageElement = this.state.pendingImageElementId && this.scene.getElement(this.state.pendingImageElementId);\n\n        if (!pendingImageElement) {\n          return;\n        }\n\n        this.setState({\n          draggingElement: pendingImageElement,\n          editingElement: pendingImageElement,\n          pendingImageElementId: null,\n          multiElement: null\n        });\n        const {\n          x,\n          y\n        } = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.viewportCoordsToSceneCoords)(event, this.state);\n        const frame = this.getTopLayerFrameAtSceneCoords({\n          x,\n          y\n        });\n        (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(pendingImageElement, {\n          x,\n          y,\n          frameId: frame ? frame.id : null\n        });\n      } else if (this.state.activeTool.type === "freedraw") {\n        this.handleFreeDrawElementOnPointerDown(event, this.state.activeTool.type, pointerDownState);\n      } else if (this.state.activeTool.type === "custom") {\n        (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursorForShape)(this.interactiveCanvas, this.state);\n      } else if (this.state.activeTool.type === "frame") {\n        this.createFrameElementOnPointerDown(pointerDownState);\n      } else if (this.state.activeTool.type === "laser") {\n        this.laserPathManager.startPath(pointerDownState.lastCoords.x, pointerDownState.lastCoords.y);\n      } else if (this.state.activeTool.type !== "eraser" && this.state.activeTool.type !== "hand") {\n        this.createGenericElementOnPointerDown(this.state.activeTool.type, pointerDownState);\n      }\n\n      (_b = (_a = this.props) === null || _a === void 0 ? void 0 : _a.onPointerDown) === null || _b === void 0 ? void 0 : _b.call(_a, this.state.activeTool, pointerDownState);\n      this.onPointerDownEmitter.trigger(this.state.activeTool, pointerDownState, event);\n      const onPointerMove = this.onPointerMoveFromPointerDownHandler(pointerDownState);\n      const onPointerUp = this.onPointerUpFromPointerDownHandler(pointerDownState);\n      const onKeyDown = this.onKeyDownFromPointerDownHandler(pointerDownState);\n      const onKeyUp = this.onKeyUpFromPointerDownHandler(pointerDownState);\n      lastPointerUp = onPointerUp;\n\n      if (!this.state.viewModeEnabled || this.state.activeTool.type === "laser") {\n        window.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.POINTER_MOVE, onPointerMove);\n        window.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.POINTER_UP, onPointerUp);\n        window.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.KEYDOWN, onKeyDown);\n        window.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.KEYUP, onKeyUp);\n        pointerDownState.eventListeners.onMove = onPointerMove;\n        pointerDownState.eventListeners.onUp = onPointerUp;\n        pointerDownState.eventListeners.onKeyUp = onKeyUp;\n        pointerDownState.eventListeners.onKeyDown = onKeyDown;\n      }\n    };\n\n    this.handleCanvasPointerUp = event => {\n      var _a, _b;\n\n      this.removePointer(event);\n      this.lastPointerUpEvent = event;\n      const scenePointer = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.viewportCoordsToSceneCoords)({\n        clientX: event.clientX,\n        clientY: event.clientY\n      }, this.state);\n      const clicklength = event.timeStamp - ((_b = (_a = this.lastPointerDownEvent) === null || _a === void 0 ? void 0 : _a.timeStamp) !== null && _b !== void 0 ? _b : 0);\n\n      if (this.device.editor.isMobile && clicklength < 300) {\n        const hitElement = this.getElementAtPosition(scenePointer.x, scenePointer.y);\n\n        if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isEmbeddableElement)(hitElement) && this.isEmbeddableCenter(hitElement, event, scenePointer.x, scenePointer.y)) {\n          this.handleEmbeddableCenterClick(hitElement);\n          return;\n        }\n      }\n\n      if (this.device.isTouchScreen) {\n        const hitElement = this.getElementAtPosition(scenePointer.x, scenePointer.y);\n        this.hitLinkElement = this.getElementLinkAtPosition(scenePointer, hitElement);\n      }\n\n      if (this.hitLinkElement && !this.state.selectedElementIds[this.hitLinkElement.id]) {\n        if (clicklength < 300 && this.hitLinkElement.type === "embeddable" && !(0,_element_Hyperlink__WEBPACK_IMPORTED_MODULE_45__.isPointHittingLinkIcon)(this.hitLinkElement, this.state, [scenePointer.x, scenePointer.y])) {\n          this.handleEmbeddableCenterClick(this.hitLinkElement);\n        } else {\n          this.redirectToLink(event, this.device.isTouchScreen);\n        }\n      } else if (this.state.viewModeEnabled) {\n        this.setState({\n          activeEmbeddable: null,\n          selectedElementIds: {}\n        });\n      }\n    };\n\n    this.maybeOpenContextMenuAfterPointerDownOnTouchDevices = event => {\n      // deal with opening context menu on touch devices\n      if (event.pointerType === "touch") {\n        invalidateContextMenu = false;\n\n        if (touchTimeout) {\n          // If there\'s already a touchTimeout, this means that there\'s another\n          // touch down and we are doing another touch, so we shouldn\'t open the\n          // context menu.\n          invalidateContextMenu = true;\n        } else {\n          // open the context menu with the first touch\'s clientX and clientY\n          // if the touch is not moving\n          touchTimeout = window.setTimeout(() => {\n            touchTimeout = 0;\n\n            if (!invalidateContextMenu) {\n              this.handleCanvasContextMenu(event);\n            }\n          }, _constants__WEBPACK_IMPORTED_MODULE_12__.TOUCH_CTX_MENU_TIMEOUT);\n        }\n      }\n    };\n\n    this.resetContextMenuTimer = () => {\n      clearTimeout(touchTimeout);\n      touchTimeout = 0;\n      invalidateContextMenu = false;\n    }; // Returns whether the event is a panning\n\n\n    this.handleCanvasPanUsingWheelOrSpaceDrag = event => {\n      if (!(gesture.pointers.size <= 1 && (event.button === _constants__WEBPACK_IMPORTED_MODULE_12__.POINTER_BUTTON.WHEEL || event.button === _constants__WEBPACK_IMPORTED_MODULE_12__.POINTER_BUTTON.MAIN && isHoldingSpace || (0,_appState__WEBPACK_IMPORTED_MODULE_10__.isHandToolActive)(this.state) || this.state.viewModeEnabled)) || (0,_element__WEBPACK_IMPORTED_MODULE_16__.isTextElement)(this.state.editingElement)) {\n        return false;\n      }\n\n      isPanning = true;\n      event.preventDefault();\n      let nextPastePrevented = false;\n      const isLinux = /Linux/.test(window.navigator.platform);\n      (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursor)(this.interactiveCanvas, _constants__WEBPACK_IMPORTED_MODULE_12__.CURSOR_TYPE.GRABBING);\n      let {\n        clientX: lastX,\n        clientY: lastY\n      } = event;\n      const onPointerMove = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.withBatchedUpdatesThrottled)(event => {\n        const deltaX = lastX - event.clientX;\n        const deltaY = lastY - event.clientY;\n        lastX = event.clientX;\n        lastY = event.clientY;\n        /*\n         * Prevent paste event if we move while middle clicking on Linux.\n         * See issue #1383.\n         */\n\n        if (isLinux && !nextPastePrevented && (Math.abs(deltaX) > 1 || Math.abs(deltaY) > 1)) {\n          nextPastePrevented = true;\n          /* Prevent the next paste event */\n\n          const preventNextPaste = event => {\n            document.body.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.PASTE, preventNextPaste);\n            event.stopPropagation();\n          };\n          /*\n           * Reenable next paste in case of disabled middle click paste for\n           * any reason:\n           * - right click paste\n           * - empty clipboard\n           */\n\n\n          const enableNextPaste = () => {\n            setTimeout(() => {\n              document.body.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.PASTE, preventNextPaste);\n              window.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.POINTER_UP, enableNextPaste);\n            }, 100);\n          };\n\n          document.body.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.PASTE, preventNextPaste);\n          window.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.POINTER_UP, enableNextPaste);\n        }\n\n        this.translateCanvas({\n          scrollX: this.state.scrollX - deltaX / this.state.zoom.value,\n          scrollY: this.state.scrollY - deltaY / this.state.zoom.value\n        });\n      });\n      const teardown = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.withBatchedUpdates)(lastPointerUp = () => {\n        lastPointerUp = null;\n        isPanning = false;\n\n        if (!isHoldingSpace) {\n          if (this.state.viewModeEnabled) {\n            (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursor)(this.interactiveCanvas, _constants__WEBPACK_IMPORTED_MODULE_12__.CURSOR_TYPE.GRAB);\n          } else {\n            (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursorForShape)(this.interactiveCanvas, this.state);\n          }\n        }\n\n        this.setState({\n          cursorButton: "up"\n        });\n        this.savePointer(event.clientX, event.clientY, "up");\n        window.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.POINTER_MOVE, onPointerMove);\n        window.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.POINTER_UP, teardown);\n        window.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.BLUR, teardown);\n        onPointerMove.flush();\n      });\n      window.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.BLUR, teardown);\n      window.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.POINTER_MOVE, onPointerMove, {\n        passive: true\n      });\n      window.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.POINTER_UP, teardown);\n      return true;\n    };\n\n    this.clearSelectionIfNotUsingSelection = () => {\n      if (this.state.activeTool.type !== "selection") {\n        this.setState({\n          selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)({}, this.state),\n          selectedGroupIds: {},\n          editingGroupId: null,\n          activeEmbeddable: null\n        });\n      }\n    };\n    /**\n     * @returns whether the pointer event has been completely handled\n     */\n\n\n    this.handleSelectionOnPointerDown = (event, pointerDownState) => {\n      var _a;\n\n      if (this.state.activeTool.type === "selection") {\n        const elements = this.scene.getNonDeletedElements();\n        const selectedElements = this.scene.getSelectedElements(this.state);\n\n        if (selectedElements.length === 1 && !this.state.editingLinearElement) {\n          const elementWithTransformHandleType = (0,_element__WEBPACK_IMPORTED_MODULE_16__.getElementWithTransformHandleType)(elements, this.state, pointerDownState.origin.x, pointerDownState.origin.y, this.state.zoom, event.pointerType);\n\n          if (elementWithTransformHandleType != null) {\n            this.setState({\n              resizingElement: elementWithTransformHandleType.element\n            });\n            pointerDownState.resize.handleType = elementWithTransformHandleType.transformHandleType;\n          }\n        } else if (selectedElements.length > 1) {\n          pointerDownState.resize.handleType = (0,_element__WEBPACK_IMPORTED_MODULE_16__.getTransformHandleTypeFromCoords)((0,_element__WEBPACK_IMPORTED_MODULE_16__.getCommonBounds)(selectedElements), pointerDownState.origin.x, pointerDownState.origin.y, this.state.zoom, event.pointerType);\n        }\n\n        if (pointerDownState.resize.handleType) {\n          pointerDownState.resize.isResizing = true;\n          pointerDownState.resize.offset = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.tupleToCoors)((0,_element__WEBPACK_IMPORTED_MODULE_16__.getResizeOffsetXY)(pointerDownState.resize.handleType, selectedElements, pointerDownState.origin.x, pointerDownState.origin.y));\n\n          if (selectedElements.length === 1 && (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isLinearElement)(selectedElements[0]) && selectedElements[0].points.length === 2) {\n            pointerDownState.resize.arrowDirection = (0,_element__WEBPACK_IMPORTED_MODULE_16__.getResizeArrowDirection)(pointerDownState.resize.handleType, selectedElements[0]);\n          }\n        } else {\n          if (this.state.selectedLinearElement) {\n            const linearElementEditor = this.state.editingLinearElement || this.state.selectedLinearElement;\n            const ret = _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_18__.LinearElementEditor.handlePointerDown(event, this.state, this.history, pointerDownState.origin, linearElementEditor);\n\n            if (ret.hitElement) {\n              pointerDownState.hit.element = ret.hitElement;\n            }\n\n            if (ret.linearElementEditor) {\n              this.setState({\n                selectedLinearElement: ret.linearElementEditor\n              });\n\n              if (this.state.editingLinearElement) {\n                this.setState({\n                  editingLinearElement: ret.linearElementEditor\n                });\n              }\n            }\n\n            if (ret.didAddPoint) {\n              return true;\n            }\n          } // hitElement may already be set above, so check first\n\n\n          pointerDownState.hit.element = (_a = pointerDownState.hit.element) !== null && _a !== void 0 ? _a : this.getElementAtPosition(pointerDownState.origin.x, pointerDownState.origin.y);\n\n          if (pointerDownState.hit.element) {\n            // Early return if pointer is hitting link icon\n            const hitLinkElement = this.getElementLinkAtPosition({\n              x: pointerDownState.origin.x,\n              y: pointerDownState.origin.y\n            }, pointerDownState.hit.element);\n\n            if (hitLinkElement) {\n              return false;\n            }\n          } // For overlapped elements one position may hit\n          // multiple elements\n\n\n          pointerDownState.hit.allHitElements = this.getElementsAtPosition(pointerDownState.origin.x, pointerDownState.origin.y);\n          const hitElement = pointerDownState.hit.element;\n          const someHitElementIsSelected = pointerDownState.hit.allHitElements.some(element => this.isASelectedElement(element));\n\n          if ((hitElement === null || !someHitElementIsSelected) && !event.shiftKey && !pointerDownState.hit.hasHitCommonBoundingBoxOfSelectedElements) {\n            this.clearSelection(hitElement);\n          }\n\n          if (this.state.editingLinearElement) {\n            this.setState({\n              selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)({\n                [this.state.editingLinearElement.elementId]: true\n              }, this.state)\n            }); // If we click on something\n          } else if (hitElement != null) {\n            // on CMD/CTRL, drill down to hit element regardless of groups etc.\n            if (event[_keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.CTRL_OR_CMD]) {\n              if (!this.state.selectedElementIds[hitElement.id]) {\n                pointerDownState.hit.wasAddedToSelection = true;\n              }\n\n              this.setState(prevState => Object.assign(Object.assign({}, (0,_groups__WEBPACK_IMPORTED_MODULE_23__.editGroupForSelectedElement)(prevState, hitElement)), {\n                previousSelectedElementIds: this.state.selectedElementIds\n              })); // mark as not completely handled so as to allow dragging etc.\n\n              return false;\n            } // deselect if item is selected\n            // if shift is not clicked, this will always return true\n            // otherwise, it will trigger selection based on current\n            // state of the box\n\n\n            if (!this.state.selectedElementIds[hitElement.id]) {\n              // if we are currently editing a group, exiting editing mode and deselect the group.\n              if (this.state.editingGroupId && !(0,_groups__WEBPACK_IMPORTED_MODULE_23__.isElementInGroup)(hitElement, this.state.editingGroupId)) {\n                this.setState({\n                  selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)({}, this.state),\n                  selectedGroupIds: {},\n                  editingGroupId: null,\n                  activeEmbeddable: null\n                });\n              } // Add hit element to selection. At this point if we\'re not holding\n              // SHIFT the previously selected element(s) were deselected above\n              // (make sure you use setState updater to use latest state)\n              // With shift-selection, we want to make sure that frames and their containing\n              // elements are not selected at the same time.\n\n\n              if (!someHitElementIsSelected && !pointerDownState.hit.hasHitCommonBoundingBoxOfSelectedElements) {\n                this.setState(prevState => {\n                  const nextSelectedElementIds = Object.assign(Object.assign({}, prevState.selectedElementIds), {\n                    [hitElement.id]: true\n                  });\n                  const previouslySelectedElements = [];\n                  Object.keys(prevState.selectedElementIds).forEach(id => {\n                    const element = this.scene.getElement(id);\n                    element && previouslySelectedElements.push(element);\n                  }); // if hitElement is frame, deselect all of its elements if they are selected\n\n                  if (hitElement.type === "frame") {\n                    (0,_frame__WEBPACK_IMPORTED_MODULE_50__.getFrameChildren)(previouslySelectedElements, hitElement.id).forEach(element => {\n                      delete nextSelectedElementIds[element.id];\n                    });\n                  } else if (hitElement.frameId) {\n                    // if hitElement is in a frame and its frame has been selected\n                    // disable selection for the given element\n                    if (nextSelectedElementIds[hitElement.frameId]) {\n                      delete nextSelectedElementIds[hitElement.id];\n                    }\n                  } else {\n                    // hitElement is neither a frame nor an element in a frame\n                    // but since hitElement could be in a group with some frames\n                    // this means selecting hitElement will have the frames selected as well\n                    // because we want to keep the invariant:\n                    // - frames and their elements are not selected at the same time\n                    // we deselect elements in those frames that were previously selected\n                    const groupIds = hitElement.groupIds;\n                    const framesInGroups = new Set(groupIds.flatMap(gid => (0,_groups__WEBPACK_IMPORTED_MODULE_23__.getElementsInGroup)(this.scene.getNonDeletedElements(), gid)).filter(element => element.type === "frame").map(frame => frame.id));\n\n                    if (framesInGroups.size > 0) {\n                      previouslySelectedElements.forEach(element => {\n                        if (element.frameId && framesInGroups.has(element.frameId)) {\n                          // deselect element and groups containing the element\n                          delete nextSelectedElementIds[element.id];\n                          element.groupIds.flatMap(gid => (0,_groups__WEBPACK_IMPORTED_MODULE_23__.getElementsInGroup)(this.scene.getNonDeletedElements(), gid)).forEach(element => {\n                            delete nextSelectedElementIds[element.id];\n                          });\n                        }\n                      });\n                    }\n                  }\n\n                  return Object.assign(Object.assign({}, (0,_groups__WEBPACK_IMPORTED_MODULE_23__.selectGroupsForSelectedElements)({\n                    editingGroupId: prevState.editingGroupId,\n                    selectedElementIds: nextSelectedElementIds\n                  }, this.scene.getNonDeletedElements(), prevState, this)), {\n                    showHyperlinkPopup: hitElement.link || (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isEmbeddableElement)(hitElement) ? "info" : false\n                  });\n                });\n                pointerDownState.hit.wasAddedToSelection = true;\n              }\n            }\n          }\n\n          this.setState({\n            previousSelectedElementIds: this.state.selectedElementIds\n          });\n        }\n      }\n\n      return false;\n    };\n\n    this.handleTextOnPointerDown = (event, pointerDownState) => {\n      // if we\'re currently still editing text, clicking outside\n      // should only finalize it, not create another (irrespective\n      // of state.activeTool.locked)\n      if ((0,_element__WEBPACK_IMPORTED_MODULE_16__.isTextElement)(this.state.editingElement)) {\n        return;\n      }\n\n      let sceneX = pointerDownState.origin.x;\n      let sceneY = pointerDownState.origin.y;\n      const element = this.getElementAtPosition(sceneX, sceneY, {\n        includeBoundTextElement: true\n      }); // FIXME\n\n      let container = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_43__.getTextBindableContainerAtPosition)(this.scene.getNonDeletedElements(), this.state, sceneX, sceneY);\n\n      if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.hasBoundTextElement)(element)) {\n        container = element;\n        sceneX = element.x + element.width / 2;\n        sceneY = element.y + element.height / 2;\n      }\n\n      this.startTextEditing({\n        sceneX,\n        sceneY,\n        insertAtParentCenter: !event.altKey,\n        container\n      });\n      (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.resetCursor)(this.interactiveCanvas);\n\n      if (!this.state.activeTool.locked) {\n        this.setState({\n          activeTool: (0,_utils__WEBPACK_IMPORTED_MODULE_33__.updateActiveTool)(this.state, {\n            type: "selection"\n          })\n        });\n      }\n    };\n\n    this.handleFreeDrawElementOnPointerDown = (event, elementType, pointerDownState) => {\n      // Begin a mark capture. This does not have to update state yet.\n      const [gridX, gridY] = (0,_math__WEBPACK_IMPORTED_MODULE_28__.getGridPoint)(pointerDownState.origin.x, pointerDownState.origin.y, null);\n      const topLayerFrame = this.getTopLayerFrameAtSceneCoords({\n        x: gridX,\n        y: gridY\n      });\n      const element = (0,_element_newElement__WEBPACK_IMPORTED_MODULE_20__.newFreeDrawElement)({\n        type: elementType,\n        x: gridX,\n        y: gridY,\n        strokeColor: this.state.currentItemStrokeColor,\n        backgroundColor: this.state.currentItemBackgroundColor,\n        fillStyle: this.state.currentItemFillStyle,\n        strokeWidth: this.state.currentItemStrokeWidth,\n        strokeStyle: this.state.currentItemStrokeStyle,\n        roughness: this.state.currentItemRoughness,\n        opacity: this.state.currentItemOpacity,\n        roundness: null,\n        simulatePressure: event.pressure === 0.5,\n        locked: false,\n        frameId: topLayerFrame ? topLayerFrame.id : null\n      });\n      this.setState(prevState => {\n        const nextSelectedElementIds = Object.assign({}, prevState.selectedElementIds);\n        delete nextSelectedElementIds[element.id];\n        return {\n          selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)(nextSelectedElementIds, prevState)\n        };\n      });\n      const pressures = element.simulatePressure ? element.pressures : [...element.pressures, event.pressure];\n      (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(element, {\n        points: [[0, 0]],\n        pressures\n      });\n      const boundElement = (0,_element_binding__WEBPACK_IMPORTED_MODULE_17__.getHoveredElementForBinding)(pointerDownState.origin, this.scene);\n      this.scene.addNewElement(element);\n      this.setState({\n        draggingElement: element,\n        editingElement: element,\n        startBoundElement: boundElement,\n        suggestedBindings: []\n      });\n    }; //create rectangle element with youtube top left on nearest grid point width / hight 640/360\n\n\n    this.insertEmbeddableElement = ({\n      sceneX,\n      sceneY,\n      link\n    }) => {\n      var _a;\n\n      const [gridX, gridY] = (0,_math__WEBPACK_IMPORTED_MODULE_28__.getGridPoint)(sceneX, sceneY, ((_a = this.lastPointerDownEvent) === null || _a === void 0 ? void 0 : _a[_keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.CTRL_OR_CMD]) ? null : this.state.gridSize);\n      const embedLink = (0,_element_embeddable__WEBPACK_IMPORTED_MODULE_34__.getEmbedLink)(link);\n\n      if (!embedLink) {\n        return;\n      }\n\n      if (embedLink.warning) {\n        this.setToast({\n          message: embedLink.warning,\n          closable: true\n        });\n      }\n\n      const element = (0,_element_newElement__WEBPACK_IMPORTED_MODULE_20__.newEmbeddableElement)({\n        type: "embeddable",\n        x: gridX,\n        y: gridY,\n        strokeColor: "transparent",\n        backgroundColor: "transparent",\n        fillStyle: this.state.currentItemFillStyle,\n        strokeWidth: this.state.currentItemStrokeWidth,\n        strokeStyle: this.state.currentItemStrokeStyle,\n        roughness: this.state.currentItemRoughness,\n        roundness: this.getCurrentItemRoundness("embeddable"),\n        opacity: this.state.currentItemOpacity,\n        locked: false,\n        width: embedLink.aspectRatio.w,\n        height: embedLink.aspectRatio.h,\n        link,\n        validated: null\n      });\n      this.scene.replaceAllElements([...this.scene.getElementsIncludingDeleted(), element]);\n      return element;\n    };\n\n    this.createImageElement = ({\n      sceneX,\n      sceneY,\n      addToFrameUnderCursor = true\n    }) => {\n      var _a;\n\n      const [gridX, gridY] = (0,_math__WEBPACK_IMPORTED_MODULE_28__.getGridPoint)(sceneX, sceneY, ((_a = this.lastPointerDownEvent) === null || _a === void 0 ? void 0 : _a[_keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.CTRL_OR_CMD]) ? null : this.state.gridSize);\n      const topLayerFrame = addToFrameUnderCursor ? this.getTopLayerFrameAtSceneCoords({\n        x: gridX,\n        y: gridY\n      }) : null;\n      const element = (0,_element__WEBPACK_IMPORTED_MODULE_16__.newImageElement)({\n        type: "image",\n        x: gridX,\n        y: gridY,\n        strokeColor: this.state.currentItemStrokeColor,\n        backgroundColor: this.state.currentItemBackgroundColor,\n        fillStyle: this.state.currentItemFillStyle,\n        strokeWidth: this.state.currentItemStrokeWidth,\n        strokeStyle: this.state.currentItemStrokeStyle,\n        roughness: this.state.currentItemRoughness,\n        roundness: null,\n        opacity: this.state.currentItemOpacity,\n        locked: false,\n        frameId: topLayerFrame ? topLayerFrame.id : null\n      });\n      return element;\n    };\n\n    this.handleLinearElementOnPointerDown = (event, elementType, pointerDownState) => {\n      if (this.state.multiElement) {\n        const {\n          multiElement\n        } = this.state; // finalize if completing a loop\n\n        if (multiElement.type === "line" && (0,_math__WEBPACK_IMPORTED_MODULE_28__.isPathALoop)(multiElement.points, this.state.zoom.value)) {\n          (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(multiElement, {\n            lastCommittedPoint: multiElement.points[multiElement.points.length - 1]\n          });\n          this.actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_5__.actionFinalize);\n          return;\n        }\n\n        const {\n          x: rx,\n          y: ry,\n          lastCommittedPoint\n        } = multiElement; // clicking inside commit zone \u2192 finalize arrow\n\n        if (multiElement.points.length > 1 && lastCommittedPoint && (0,_math__WEBPACK_IMPORTED_MODULE_28__.distance2d)(pointerDownState.origin.x - rx, pointerDownState.origin.y - ry, lastCommittedPoint[0], lastCommittedPoint[1]) < _constants__WEBPACK_IMPORTED_MODULE_12__.LINE_CONFIRM_THRESHOLD) {\n          this.actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_5__.actionFinalize);\n          return;\n        }\n\n        this.setState(prevState => ({\n          selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)(Object.assign(Object.assign({}, prevState.selectedElementIds), {\n            [multiElement.id]: true\n          }), prevState)\n        })); // clicking outside commit zone \u2192 update reference for last committed\n        // point\n\n        (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(multiElement, {\n          lastCommittedPoint: multiElement.points[multiElement.points.length - 1]\n        });\n        (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursor)(this.interactiveCanvas, _constants__WEBPACK_IMPORTED_MODULE_12__.CURSOR_TYPE.POINTER);\n      } else {\n        const [gridX, gridY] = (0,_math__WEBPACK_IMPORTED_MODULE_28__.getGridPoint)(pointerDownState.origin.x, pointerDownState.origin.y, event[_keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.CTRL_OR_CMD] ? null : this.state.gridSize);\n        const topLayerFrame = this.getTopLayerFrameAtSceneCoords({\n          x: gridX,\n          y: gridY\n        });\n        /* If arrow is pre-arrowheads, it will have undefined for both start and end arrowheads.\n        If so, we want it to be null for start and "arrow" for end. If the linear item is not\n        an arrow, we want it to be null for both. Otherwise, we want it to use the\n        values from appState. */\n\n        const {\n          currentItemStartArrowhead,\n          currentItemEndArrowhead\n        } = this.state;\n        const [startArrowhead, endArrowhead] = elementType === "arrow" ? [currentItemStartArrowhead, currentItemEndArrowhead] : [null, null];\n        const element = (0,_element__WEBPACK_IMPORTED_MODULE_16__.newLinearElement)({\n          type: elementType,\n          x: gridX,\n          y: gridY,\n          strokeColor: this.state.currentItemStrokeColor,\n          backgroundColor: this.state.currentItemBackgroundColor,\n          fillStyle: this.state.currentItemFillStyle,\n          strokeWidth: this.state.currentItemStrokeWidth,\n          strokeStyle: this.state.currentItemStrokeStyle,\n          roughness: this.state.currentItemRoughness,\n          opacity: this.state.currentItemOpacity,\n          roundness: this.state.currentItemRoundness === "round" ? {\n            type: _constants__WEBPACK_IMPORTED_MODULE_12__.ROUNDNESS.PROPORTIONAL_RADIUS\n          } : null,\n          startArrowhead,\n          endArrowhead,\n          locked: false,\n          frameId: topLayerFrame ? topLayerFrame.id : null\n        });\n        this.setState(prevState => {\n          const nextSelectedElementIds = Object.assign({}, prevState.selectedElementIds);\n          delete nextSelectedElementIds[element.id];\n          return {\n            selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)(nextSelectedElementIds, prevState)\n          };\n        });\n        (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(element, {\n          points: [...element.points, [0, 0]]\n        });\n        const boundElement = (0,_element_binding__WEBPACK_IMPORTED_MODULE_17__.getHoveredElementForBinding)(pointerDownState.origin, this.scene);\n        this.scene.addNewElement(element);\n        this.setState({\n          draggingElement: element,\n          editingElement: element,\n          startBoundElement: boundElement,\n          suggestedBindings: []\n        });\n      }\n    };\n\n    this.createGenericElementOnPointerDown = (elementType, pointerDownState) => {\n      var _a;\n\n      const [gridX, gridY] = (0,_math__WEBPACK_IMPORTED_MODULE_28__.getGridPoint)(pointerDownState.origin.x, pointerDownState.origin.y, ((_a = this.lastPointerDownEvent) === null || _a === void 0 ? void 0 : _a[_keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.CTRL_OR_CMD]) ? null : this.state.gridSize);\n      const topLayerFrame = this.getTopLayerFrameAtSceneCoords({\n        x: gridX,\n        y: gridY\n      });\n      const baseElementAttributes = {\n        x: gridX,\n        y: gridY,\n        strokeColor: this.state.currentItemStrokeColor,\n        backgroundColor: this.state.currentItemBackgroundColor,\n        fillStyle: this.state.currentItemFillStyle,\n        strokeWidth: this.state.currentItemStrokeWidth,\n        strokeStyle: this.state.currentItemStrokeStyle,\n        roughness: this.state.currentItemRoughness,\n        opacity: this.state.currentItemOpacity,\n        roundness: this.getCurrentItemRoundness(elementType),\n        locked: false,\n        frameId: topLayerFrame ? topLayerFrame.id : null\n      };\n      let element;\n\n      if (elementType === "embeddable") {\n        element = (0,_element_newElement__WEBPACK_IMPORTED_MODULE_20__.newEmbeddableElement)(Object.assign({\n          type: "embeddable",\n          validated: null\n        }, baseElementAttributes));\n      } else {\n        element = (0,_element__WEBPACK_IMPORTED_MODULE_16__.newElement)(Object.assign({\n          type: elementType\n        }, baseElementAttributes));\n      }\n\n      if (element.type === "selection") {\n        this.setState({\n          selectionElement: element,\n          draggingElement: element\n        });\n      } else {\n        this.scene.addNewElement(element);\n        this.setState({\n          multiElement: null,\n          draggingElement: element,\n          editingElement: element\n        });\n      }\n    };\n\n    this.createFrameElementOnPointerDown = pointerDownState => {\n      var _a;\n\n      const [gridX, gridY] = (0,_math__WEBPACK_IMPORTED_MODULE_28__.getGridPoint)(pointerDownState.origin.x, pointerDownState.origin.y, ((_a = this.lastPointerDownEvent) === null || _a === void 0 ? void 0 : _a[_keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.CTRL_OR_CMD]) ? null : this.state.gridSize);\n      const frame = (0,_element_newElement__WEBPACK_IMPORTED_MODULE_20__.newFrameElement)(Object.assign({\n        x: gridX,\n        y: gridY,\n        opacity: this.state.currentItemOpacity,\n        locked: false\n      }, _constants__WEBPACK_IMPORTED_MODULE_12__.FRAME_STYLE));\n      this.scene.replaceAllElements([...this.scene.getElementsIncludingDeleted(), frame]);\n      this.setState({\n        multiElement: null,\n        draggingElement: frame,\n        editingElement: frame\n      });\n    };\n\n    this.restoreReadyToEraseElements = pointerDownState => {\n      const elements = this.scene.getElementsIncludingDeleted().map(ele => {\n        if (pointerDownState.elementIdsToErase[ele.id] && pointerDownState.elementIdsToErase[ele.id].erase) {\n          return (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.newElementWith)(ele, {\n            opacity: pointerDownState.elementIdsToErase[ele.id].opacity\n          });\n        } else if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isBoundToContainer)(ele) && pointerDownState.elementIdsToErase[ele.containerId] && pointerDownState.elementIdsToErase[ele.containerId].erase) {\n          return (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.newElementWith)(ele, {\n            opacity: pointerDownState.elementIdsToErase[ele.containerId].opacity\n          });\n        } else if (ele.frameId && pointerDownState.elementIdsToErase[ele.frameId] && pointerDownState.elementIdsToErase[ele.frameId].erase) {\n          return (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.newElementWith)(ele, {\n            opacity: pointerDownState.elementIdsToErase[ele.frameId].opacity\n          });\n        }\n\n        return ele;\n      });\n      this.scene.replaceAllElements(elements);\n    };\n\n    this.eraseElements = pointerDownState => {\n      const elements = this.scene.getElementsIncludingDeleted().map(ele => {\n        if (pointerDownState.elementIdsToErase[ele.id] && pointerDownState.elementIdsToErase[ele.id].erase) {\n          return (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.newElementWith)(ele, {\n            isDeleted: true\n          });\n        } else if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isBoundToContainer)(ele) && pointerDownState.elementIdsToErase[ele.containerId] && pointerDownState.elementIdsToErase[ele.containerId].erase) {\n          return (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.newElementWith)(ele, {\n            isDeleted: true\n          });\n        } else if (ele.frameId && pointerDownState.elementIdsToErase[ele.frameId] && pointerDownState.elementIdsToErase[ele.frameId].erase) {\n          return (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.newElementWith)(ele, {\n            isDeleted: true\n          });\n        }\n\n        return ele;\n      });\n      this.history.resumeRecording();\n      this.scene.replaceAllElements(elements);\n    };\n\n    this.initializeImage = ({\n      imageFile,\n      imageElement: _imageElement,\n      showCursorImagePreview = false\n    }) => __awaiter(this, void 0, void 0, function* () {\n      var _e, _f, _g, _h; // at this point this should be guaranteed image file, but we do this check\n      // to satisfy TS down the line\n\n\n      if (!(0,_data_blob__WEBPACK_IMPORTED_MODULE_39__.isSupportedImageFile)(imageFile)) {\n        throw new Error((0,_i18n__WEBPACK_IMPORTED_MODULE_25__.t)("errors.unsupportedFileType"));\n      }\n\n      const mimeType = imageFile.type;\n      (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursor)(this.interactiveCanvas, "wait");\n\n      if (mimeType === _constants__WEBPACK_IMPORTED_MODULE_12__.MIME_TYPES.svg) {\n        try {\n          imageFile = (0,_data_blob__WEBPACK_IMPORTED_MODULE_39__.SVGStringToFile)(yield (0,_element_image__WEBPACK_IMPORTED_MODULE_40__.normalizeSVG)(yield imageFile.text()), imageFile.name);\n        } catch (error) {\n          console.warn(error);\n          throw new Error((0,_i18n__WEBPACK_IMPORTED_MODULE_25__.t)("errors.svgImageInsertError"));\n        }\n      } // generate image id (by default the file digest) before any\n      // resizing/compression takes place to keep it more portable\n\n\n      const fileId = yield ((_f = (_e = this.props).generateIdForFile) === null || _f === void 0 ? void 0 : _f.call(_e, imageFile)) || (0,_data_blob__WEBPACK_IMPORTED_MODULE_39__.generateIdFromFile)(imageFile);\n\n      if (!fileId) {\n        console.warn("Couldn\'t generate file id or the supplied `generateIdForFile` didn\'t resolve to one.");\n        throw new Error((0,_i18n__WEBPACK_IMPORTED_MODULE_25__.t)("errors.imageInsertError"));\n      }\n\n      const existingFileData = this.files[fileId];\n\n      if (!(existingFileData === null || existingFileData === void 0 ? void 0 : existingFileData.dataURL)) {\n        try {\n          imageFile = yield (0,_data_blob__WEBPACK_IMPORTED_MODULE_39__.resizeImageFile)(imageFile, {\n            maxWidthOrHeight: _constants__WEBPACK_IMPORTED_MODULE_12__.DEFAULT_MAX_IMAGE_WIDTH_OR_HEIGHT\n          });\n        } catch (error) {\n          console.error("error trying to resing image file on insertion", error);\n        }\n\n        if (imageFile.size > _constants__WEBPACK_IMPORTED_MODULE_12__.MAX_ALLOWED_FILE_BYTES) {\n          throw new Error((0,_i18n__WEBPACK_IMPORTED_MODULE_25__.t)("errors.fileTooBig", {\n            maxSize: `${Math.trunc(_constants__WEBPACK_IMPORTED_MODULE_12__.MAX_ALLOWED_FILE_BYTES / 1024 / 1024)}MB`\n          }));\n        }\n      }\n\n      if (showCursorImagePreview) {\n        const dataURL = (_g = this.files[fileId]) === null || _g === void 0 ? void 0 : _g.dataURL; // optimization so that we don\'t unnecessarily resize the original\n        // full-size file for cursor preview\n        // (it\'s much faster to convert the resized dataURL to File)\n\n        const resizedFile = dataURL && (0,_data_blob__WEBPACK_IMPORTED_MODULE_39__.dataURLToFile)(dataURL);\n        this.setImagePreviewCursor(resizedFile || imageFile);\n      }\n\n      const dataURL = ((_h = this.files[fileId]) === null || _h === void 0 ? void 0 : _h.dataURL) || (yield (0,_data_blob__WEBPACK_IMPORTED_MODULE_39__.getDataURL)(imageFile));\n      const imageElement = (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(_imageElement, {\n        fileId\n      }, false);\n      return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {\n        var _j;\n\n        try {\n          this.files = Object.assign(Object.assign({}, this.files), {\n            [fileId]: {\n              mimeType,\n              id: fileId,\n              dataURL,\n              created: Date.now(),\n              lastRetrieved: Date.now()\n            }\n          });\n          const cachedImageData = this.imageCache.get(fileId);\n\n          if (!cachedImageData) {\n            this.addNewImagesToImageCache();\n            yield this.updateImageCache([imageElement]);\n          }\n\n          if ((cachedImageData === null || cachedImageData === void 0 ? void 0 : cachedImageData.image) instanceof Promise) {\n            yield cachedImageData.image;\n          }\n\n          if (this.state.pendingImageElementId !== imageElement.id && ((_j = this.state.draggingElement) === null || _j === void 0 ? void 0 : _j.id) !== imageElement.id) {\n            this.initializeImageDimensions(imageElement, true);\n          }\n\n          resolve(imageElement);\n        } catch (error) {\n          console.error(error);\n          reject(new Error((0,_i18n__WEBPACK_IMPORTED_MODULE_25__.t)("errors.imageInsertError")));\n        } finally {\n          if (!showCursorImagePreview) {\n            (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.resetCursor)(this.interactiveCanvas);\n          }\n        }\n      }));\n    });\n    /**\n     * inserts image into elements array and rerenders\n     */\n\n\n    this.insertImageElement = (imageElement, imageFile, showCursorImagePreview) => __awaiter(this, void 0, void 0, function* () {\n      // we should be handling all cases upstream, but in case we forget to handle\n      // a future case, let\'s throw here\n      if (!this.isToolSupported("image")) {\n        this.setState({\n          errorMessage: (0,_i18n__WEBPACK_IMPORTED_MODULE_25__.t)("errors.imageToolNotSupported")\n        });\n        return;\n      }\n\n      this.scene.addNewElement(imageElement);\n\n      try {\n        return yield this.initializeImage({\n          imageFile,\n          imageElement,\n          showCursorImagePreview\n        });\n      } catch (error) {\n        (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(imageElement, {\n          isDeleted: true\n        });\n        this.actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_5__.actionFinalize);\n        this.setState({\n          errorMessage: error.message || (0,_i18n__WEBPACK_IMPORTED_MODULE_25__.t)("errors.imageInsertError")\n        });\n        return null;\n      }\n    });\n\n    this.setImagePreviewCursor = imageFile => __awaiter(this, void 0, void 0, function* () {\n      // mustn\'t be larger than 128 px\n      // https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Basic_User_Interface/Using_URL_values_for_the_cursor_property\n      const cursorImageSizePx = 96;\n      const imagePreview = yield (0,_data_blob__WEBPACK_IMPORTED_MODULE_39__.resizeImageFile)(imageFile, {\n        maxWidthOrHeight: cursorImageSizePx\n      });\n      let previewDataURL = yield (0,_data_blob__WEBPACK_IMPORTED_MODULE_39__.getDataURL)(imagePreview); // SVG cannot be resized via `resizeImageFile` so we resize by rendering to\n      // a small canvas\n\n      if (imageFile.type === _constants__WEBPACK_IMPORTED_MODULE_12__.MIME_TYPES.svg) {\n        const img = yield (0,_element_image__WEBPACK_IMPORTED_MODULE_40__.loadHTMLImageElement)(previewDataURL);\n        let height = Math.min(img.height, cursorImageSizePx);\n        let width = height * (img.width / img.height);\n\n        if (width > cursorImageSizePx) {\n          width = cursorImageSizePx;\n          height = width * (img.height / img.width);\n        }\n\n        const canvas = document.createElement("canvas");\n        canvas.height = height;\n        canvas.width = width;\n        const context = canvas.getContext("2d");\n        context.drawImage(img, 0, 0, width, height);\n        previewDataURL = canvas.toDataURL(_constants__WEBPACK_IMPORTED_MODULE_12__.MIME_TYPES.svg);\n      }\n\n      if (this.state.pendingImageElementId) {\n        (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursor)(this.interactiveCanvas, `url(${previewDataURL}) 4 4, auto`);\n      }\n    });\n\n    this.onImageAction = ({\n      insertOnCanvasDirectly\n    }) => __awaiter(this, void 0, void 0, function* () {\n      try {\n        const clientX = this.state.width / 2 + this.state.offsetLeft;\n        const clientY = this.state.height / 2 + this.state.offsetTop;\n        const {\n          x,\n          y\n        } = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.viewportCoordsToSceneCoords)({\n          clientX,\n          clientY\n        }, this.state);\n        const imageFile = yield (0,_data_filesystem__WEBPACK_IMPORTED_MODULE_42__.fileOpen)({\n          description: "Image",\n          extensions: Object.keys(_constants__WEBPACK_IMPORTED_MODULE_12__.IMAGE_MIME_TYPES)\n        });\n        const imageElement = this.createImageElement({\n          sceneX: x,\n          sceneY: y,\n          addToFrameUnderCursor: false\n        });\n\n        if (insertOnCanvasDirectly) {\n          this.insertImageElement(imageElement, imageFile);\n          this.initializeImageDimensions(imageElement);\n          this.setState({\n            selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)({\n              [imageElement.id]: true\n            }, this.state)\n          }, () => {\n            this.actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_5__.actionFinalize);\n          });\n        } else {\n          this.setState({\n            pendingImageElementId: imageElement.id\n          }, () => {\n            this.insertImageElement(imageElement, imageFile,\n            /* showCursorImagePreview */\n            true);\n          });\n        }\n      } catch (error) {\n        if (error.name !== "AbortError") {\n          console.error(error);\n        } else {\n          console.warn(error);\n        }\n\n        this.setState({\n          pendingImageElementId: null,\n          editingElement: null,\n          activeTool: (0,_utils__WEBPACK_IMPORTED_MODULE_33__.updateActiveTool)(this.state, {\n            type: "selection"\n          })\n        }, () => {\n          this.actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_5__.actionFinalize);\n        });\n      }\n    });\n\n    this.initializeImageDimensions = (imageElement, forceNaturalSize = false) => {\n      var _a;\n\n      const image = (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isInitializedImageElement)(imageElement) && ((_a = this.imageCache.get(imageElement.fileId)) === null || _a === void 0 ? void 0 : _a.image);\n\n      if (!image || image instanceof Promise) {\n        if (imageElement.width < _constants__WEBPACK_IMPORTED_MODULE_12__.DRAGGING_THRESHOLD / this.state.zoom.value && imageElement.height < _constants__WEBPACK_IMPORTED_MODULE_12__.DRAGGING_THRESHOLD / this.state.zoom.value) {\n          const placeholderSize = 100 / this.state.zoom.value;\n          (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(imageElement, {\n            x: imageElement.x - placeholderSize / 2,\n            y: imageElement.y - placeholderSize / 2,\n            width: placeholderSize,\n            height: placeholderSize\n          });\n        }\n\n        return;\n      }\n\n      if (forceNaturalSize || // if user-created bounding box is below threshold, assume the\n      // intention was to click instead of drag, and use the image\'s\n      // intrinsic size\n      imageElement.width < _constants__WEBPACK_IMPORTED_MODULE_12__.DRAGGING_THRESHOLD / this.state.zoom.value && imageElement.height < _constants__WEBPACK_IMPORTED_MODULE_12__.DRAGGING_THRESHOLD / this.state.zoom.value) {\n        const minHeight = Math.max(this.state.height - 120, 160); // max 65% of canvas height, clamped to <300px, vh - 120px>\n\n        const maxHeight = Math.min(minHeight, Math.floor(this.state.height * 0.5) / this.state.zoom.value);\n        const height = Math.min(image.naturalHeight, maxHeight);\n        const width = height * (image.naturalWidth / image.naturalHeight); // add current imageElement width/height to account for previous centering\n        // of the placeholder image\n\n        const x = imageElement.x + imageElement.width / 2 - width / 2;\n        const y = imageElement.y + imageElement.height / 2 - height / 2;\n        (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(imageElement, {\n          x,\n          y,\n          width,\n          height\n        });\n      }\n    };\n    /** updates image cache, refreshing updated elements and/or setting status\n        to error for images that fail during <img> element creation */\n\n\n    this.updateImageCache = (elements, files = this.files) => __awaiter(this, void 0, void 0, function* () {\n      const {\n        updatedFiles,\n        erroredFiles\n      } = yield (0,_element_image__WEBPACK_IMPORTED_MODULE_40__.updateImageCache)({\n        imageCache: this.imageCache,\n        fileIds: elements.map(element => element.fileId),\n        files\n      });\n\n      if (updatedFiles.size || erroredFiles.size) {\n        for (const element of elements) {\n          if (updatedFiles.has(element.fileId)) {\n            _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_66__.ShapeCache["delete"](element);\n          }\n        }\n      }\n\n      if (erroredFiles.size) {\n        this.scene.replaceAllElements(this.scene.getElementsIncludingDeleted().map(element => {\n          if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isInitializedImageElement)(element) && erroredFiles.has(element.fileId)) {\n            return (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.newElementWith)(element, {\n              status: "error"\n            });\n          }\n\n          return element;\n        }));\n      }\n\n      return {\n        updatedFiles,\n        erroredFiles\n      };\n    });\n    /** adds new images to imageCache and re-renders if needed */\n\n\n    this.addNewImagesToImageCache = (imageElements = (0,_element_image__WEBPACK_IMPORTED_MODULE_40__.getInitializedImageElements)(this.scene.getNonDeletedElements()), files = this.files) => __awaiter(this, void 0, void 0, function* () {\n      const uncachedImageElements = imageElements.filter(element => !element.isDeleted && !this.imageCache.has(element.fileId));\n\n      if (uncachedImageElements.length) {\n        const {\n          updatedFiles\n        } = yield this.updateImageCache(uncachedImageElements, files);\n\n        if (updatedFiles.size) {\n          this.scene.informMutation();\n        }\n      }\n    });\n    /** generally you should use `addNewImagesToImageCache()` directly if you need\n     *  to render new images. This is just a failsafe  */\n\n\n    this.scheduleImageRefresh = lodash_throttle__WEBPACK_IMPORTED_MODULE_41___default()(() => {\n      this.addNewImagesToImageCache();\n    }, _constants__WEBPACK_IMPORTED_MODULE_12__.IMAGE_RENDER_TIMEOUT);\n\n    this.updateBindingEnabledOnPointerMove = event => {\n      const shouldEnableBinding = (0,_element_binding__WEBPACK_IMPORTED_MODULE_17__.shouldEnableBindingForPointerEvent)(event);\n\n      if (this.state.isBindingEnabled !== shouldEnableBinding) {\n        this.setState({\n          isBindingEnabled: shouldEnableBinding\n        });\n      }\n    };\n\n    this.maybeSuggestBindingAtCursor = pointerCoords => {\n      const hoveredBindableElement = (0,_element_binding__WEBPACK_IMPORTED_MODULE_17__.getHoveredElementForBinding)(pointerCoords, this.scene);\n      this.setState({\n        suggestedBindings: hoveredBindableElement != null ? [hoveredBindableElement] : []\n      });\n    };\n\n    this.maybeSuggestBindingsForLinearElementAtCoords = (linearElement,\n    /** scene coords */\n    pointerCoords, // During line creation the start binding hasn\'t been written yet\n    // into `linearElement`\n    oppositeBindingBoundElement) => {\n      if (!pointerCoords.length) {\n        return;\n      }\n\n      const suggestedBindings = pointerCoords.reduce((acc, coords) => {\n        const hoveredBindableElement = (0,_element_binding__WEBPACK_IMPORTED_MODULE_17__.getHoveredElementForBinding)(coords, this.scene);\n\n        if (hoveredBindableElement != null && !(0,_element_binding__WEBPACK_IMPORTED_MODULE_17__.isLinearElementSimpleAndAlreadyBound)(linearElement, oppositeBindingBoundElement === null || oppositeBindingBoundElement === void 0 ? void 0 : oppositeBindingBoundElement.id, hoveredBindableElement)) {\n          acc.push(hoveredBindableElement);\n        }\n\n        return acc;\n      }, []);\n      this.setState({\n        suggestedBindings\n      });\n    };\n\n    this.handleInteractiveCanvasRef = canvas => {\n      var _a, _b, _c; // canvas is null when unmounting\n\n\n      if (canvas !== null) {\n        this.interactiveCanvas = canvas; // -----------------------------------------------------------------------\n        // NOTE wheel, touchstart, touchend events must be registered outside\n        // of react because react binds them them passively (so we can\'t prevent\n        // default on them)\n\n        this.interactiveCanvas.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.WHEEL, this.handleWheel);\n        this.interactiveCanvas.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.TOUCH_START, this.onTouchStart);\n        this.interactiveCanvas.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.TOUCH_END, this.onTouchEnd); // -----------------------------------------------------------------------\n      } else {\n        (_a = this.interactiveCanvas) === null || _a === void 0 ? void 0 : _a.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.WHEEL, this.handleWheel);\n        (_b = this.interactiveCanvas) === null || _b === void 0 ? void 0 : _b.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.TOUCH_START, this.onTouchStart);\n        (_c = this.interactiveCanvas) === null || _c === void 0 ? void 0 : _c.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.TOUCH_END, this.onTouchEnd);\n      }\n    };\n\n    this.handleAppOnDrop = event => __awaiter(this, void 0, void 0, function* () {\n      var _k, _l, _m, _o; // must be retrieved first, in the same frame\n\n\n      const {\n        file,\n        fileHandle\n      } = yield (0,_data_blob__WEBPACK_IMPORTED_MODULE_39__.getFileFromEvent)(event);\n      const {\n        x: sceneX,\n        y: sceneY\n      } = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.viewportCoordsToSceneCoords)(event, this.state);\n\n      try {\n        // if image tool not supported, don\'t show an error here and let it fall\n        // through so we still support importing scene data from images. If no\n        // scene data encoded, we\'ll show an error then\n        if ((0,_data_blob__WEBPACK_IMPORTED_MODULE_39__.isSupportedImageFile)(file) && this.isToolSupported("image")) {\n          // first attempt to decode scene from the image if it\'s embedded\n          // ---------------------------------------------------------------------\n          if ((file === null || file === void 0 ? void 0 : file.type) === _constants__WEBPACK_IMPORTED_MODULE_12__.MIME_TYPES.png || (file === null || file === void 0 ? void 0 : file.type) === _constants__WEBPACK_IMPORTED_MODULE_12__.MIME_TYPES.svg) {\n            try {\n              const scene = yield (0,_data__WEBPACK_IMPORTED_MODULE_13__.loadFromBlob)(file, this.state, this.scene.getElementsIncludingDeleted(), fileHandle);\n              this.syncActionResult(Object.assign(Object.assign({}, scene), {\n                appState: Object.assign(Object.assign({}, scene.appState || this.state), {\n                  isLoading: false\n                }),\n                replaceFiles: true,\n                commitToHistory: true\n              }));\n              return;\n            } catch (error) {\n              if (error.name !== "EncodingError") {\n                throw error;\n              }\n            }\n          } // if no scene is embedded or we fail for whatever reason, fall back\n          // to importing as regular image\n          // ---------------------------------------------------------------------\n\n\n          const imageElement = this.createImageElement({\n            sceneX,\n            sceneY\n          });\n          this.insertImageElement(imageElement, file);\n          this.initializeImageDimensions(imageElement);\n          this.setState({\n            selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)({\n              [imageElement.id]: true\n            }, this.state)\n          });\n          return;\n        }\n      } catch (error) {\n        return this.setState({\n          isLoading: false,\n          errorMessage: error.message\n        });\n      }\n\n      const libraryJSON = event.dataTransfer.getData(_constants__WEBPACK_IMPORTED_MODULE_12__.MIME_TYPES.excalidrawlib);\n\n      if (libraryJSON && typeof libraryJSON === "string") {\n        try {\n          const libraryItems = (0,_data_blob__WEBPACK_IMPORTED_MODULE_39__.parseLibraryJSON)(libraryJSON);\n          this.addElementsFromPasteOrLibrary({\n            elements: (0,_data_library__WEBPACK_IMPORTED_MODULE_14__.distributeLibraryItemsOnSquareGrid)(libraryItems),\n            position: event,\n            files: null\n          });\n        } catch (error) {\n          this.setState({\n            errorMessage: error.message\n          });\n        }\n\n        return;\n      }\n\n      if (file) {\n        // atetmpt to parse an excalidraw/excalidrawlib file\n        yield this.loadFileToCanvas(file, fileHandle);\n      }\n\n      if ((_l = (_k = event.dataTransfer) === null || _k === void 0 ? void 0 : _k.types) === null || _l === void 0 ? void 0 : _l.includes("text/plain")) {\n        const text = (_m = event.dataTransfer) === null || _m === void 0 ? void 0 : _m.getData("text");\n\n        if (text && (0,_element_embeddable__WEBPACK_IMPORTED_MODULE_34__.embeddableURLValidator)(text, this.props.validateEmbeddable) && (/^(http|https):\\/\\/[^\\s/$.?#].[^\\s]*$/.test(text) || ((_o = (0,_element_embeddable__WEBPACK_IMPORTED_MODULE_34__.getEmbedLink)(text)) === null || _o === void 0 ? void 0 : _o.type) === "video")) {\n          const embeddable = this.insertEmbeddableElement({\n            sceneX,\n            sceneY,\n            link: (0,_data_url__WEBPACK_IMPORTED_MODULE_46__.normalizeLink)(text)\n          });\n\n          if (embeddable) {\n            this.setState({\n              selectedElementIds: {\n                [embeddable.id]: true\n              }\n            });\n          }\n        }\n      }\n    });\n\n    this.loadFileToCanvas = (file, fileHandle) => __awaiter(this, void 0, void 0, function* () {\n      file = yield (0,_data_blob__WEBPACK_IMPORTED_MODULE_39__.normalizeFile)(file);\n\n      try {\n        const ret = yield (0,_data_blob__WEBPACK_IMPORTED_MODULE_39__.loadSceneOrLibraryFromBlob)(file, this.state, this.scene.getElementsIncludingDeleted(), fileHandle);\n\n        if (ret.type === _constants__WEBPACK_IMPORTED_MODULE_12__.MIME_TYPES.excalidraw) {\n          this.setState({\n            isLoading: true\n          });\n          this.syncActionResult(Object.assign(Object.assign({}, ret.data), {\n            appState: Object.assign(Object.assign({}, ret.data.appState || this.state), {\n              isLoading: false\n            }),\n            replaceFiles: true,\n            commitToHistory: true\n          }));\n        } else if (ret.type === _constants__WEBPACK_IMPORTED_MODULE_12__.MIME_TYPES.excalidrawlib) {\n          yield this.library.updateLibrary({\n            libraryItems: file,\n            merge: true,\n            openLibraryMenu: true\n          }).catch(error => {\n            console.error(error);\n            this.setState({\n              errorMessage: (0,_i18n__WEBPACK_IMPORTED_MODULE_25__.t)("errors.importLibraryError")\n            });\n          });\n        }\n      } catch (error) {\n        if (error instanceof _errors__WEBPACK_IMPORTED_MODULE_57__.ImageSceneDataError && error.code === "IMAGE_NOT_CONTAINS_SCENE_DATA" && !this.isToolSupported("image")) {\n          this.setState({\n            isLoading: false,\n            errorMessage: (0,_i18n__WEBPACK_IMPORTED_MODULE_25__.t)("errors.imageToolNotSupported")\n          });\n          return;\n        }\n\n        this.setState({\n          isLoading: false,\n          errorMessage: error.message\n        });\n      }\n    });\n\n    this.handleCanvasContextMenu = event => {\n      event.preventDefault();\n\n      if (("pointerType" in event.nativeEvent && event.nativeEvent.pointerType === "touch" || "pointerType" in event.nativeEvent && event.nativeEvent.pointerType === "pen" && // always allow if user uses a pen secondary button\n      event.button !== _constants__WEBPACK_IMPORTED_MODULE_12__.POINTER_BUTTON.SECONDARY) && this.state.activeTool.type !== "selection") {\n        return;\n      }\n\n      const {\n        x,\n        y\n      } = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.viewportCoordsToSceneCoords)(event, this.state);\n      const element = this.getElementAtPosition(x, y, {\n        preferSelected: true,\n        includeLockedElements: true\n      });\n      const selectedElements = this.scene.getSelectedElements(this.state);\n      const isHittignCommonBoundBox = this.isHittingCommonBoundingBoxOfSelectedElements({\n        x,\n        y\n      }, selectedElements);\n      const type = element || isHittignCommonBoundBox ? "element" : "canvas";\n      const container = this.excalidrawContainerRef.current;\n      const {\n        top: offsetTop,\n        left: offsetLeft\n      } = container.getBoundingClientRect();\n      const left = event.clientX - offsetLeft;\n      const top = event.clientY - offsetTop;\n      (0,_analytics__WEBPACK_IMPORTED_MODULE_9__.trackEvent)("contextMenu", "openContextMenu", type);\n      this.setState(Object.assign(Object.assign({}, element && !this.state.selectedElementIds[element.id] ? Object.assign(Object.assign(Object.assign({}, this.state), (0,_groups__WEBPACK_IMPORTED_MODULE_23__.selectGroupsForSelectedElements)({\n        editingGroupId: this.state.editingGroupId,\n        selectedElementIds: {\n          [element.id]: true\n        }\n      }, this.scene.getNonDeletedElements(), this.state, this)), {\n        selectedLinearElement: (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isLinearElement)(element) ? new _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_18__.LinearElementEditor(element, this.scene) : null\n      }) : this.state), {\n        showHyperlinkPopup: false\n      }), () => {\n        this.setState({\n          contextMenu: {\n            top,\n            left,\n            items: this.getContextMenuItems(type)\n          }\n        });\n      });\n    };\n\n    this.maybeDragNewGenericElement = (pointerDownState, event) => {\n      var _a, _b, _c, _d, _e;\n\n      const draggingElement = this.state.draggingElement;\n      const pointerCoords = pointerDownState.lastCoords;\n\n      if (!draggingElement) {\n        return;\n      }\n\n      if (draggingElement.type === "selection" && this.state.activeTool.type !== "eraser") {\n        (0,_element__WEBPACK_IMPORTED_MODULE_16__.dragNewElement)(draggingElement, this.state.activeTool.type, pointerDownState.origin.x, pointerDownState.origin.y, pointerCoords.x, pointerCoords.y, (0,_utils__WEBPACK_IMPORTED_MODULE_33__.distance)(pointerDownState.origin.x, pointerCoords.x), (0,_utils__WEBPACK_IMPORTED_MODULE_33__.distance)(pointerDownState.origin.y, pointerCoords.y), (0,_keys__WEBPACK_IMPORTED_MODULE_26__.shouldMaintainAspectRatio)(event), (0,_keys__WEBPACK_IMPORTED_MODULE_26__.shouldResizeFromCenter)(event));\n      } else {\n        let [gridX, gridY] = (0,_math__WEBPACK_IMPORTED_MODULE_28__.getGridPoint)(pointerCoords.x, pointerCoords.y, event[_keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.CTRL_OR_CMD] ? null : this.state.gridSize);\n        const image = (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isInitializedImageElement)(draggingElement) && ((_a = this.imageCache.get(draggingElement.fileId)) === null || _a === void 0 ? void 0 : _a.image);\n        const aspectRatio = image && !(image instanceof Promise) ? image.width / image.height : null;\n        this.maybeCacheReferenceSnapPoints(event, [draggingElement]);\n        const {\n          snapOffset,\n          snapLines\n        } = (0,_snapping__WEBPACK_IMPORTED_MODULE_58__.snapNewElement)(draggingElement, this.state, event, {\n          x: pointerDownState.originInGrid.x + ((_c = (_b = this.state.originSnapOffset) === null || _b === void 0 ? void 0 : _b.x) !== null && _c !== void 0 ? _c : 0),\n          y: pointerDownState.originInGrid.y + ((_e = (_d = this.state.originSnapOffset) === null || _d === void 0 ? void 0 : _d.y) !== null && _e !== void 0 ? _e : 0)\n        }, {\n          x: gridX - pointerDownState.originInGrid.x,\n          y: gridY - pointerDownState.originInGrid.y\n        });\n        gridX += snapOffset.x;\n        gridY += snapOffset.y;\n        this.setState({\n          snapLines\n        });\n        (0,_element__WEBPACK_IMPORTED_MODULE_16__.dragNewElement)(draggingElement, this.state.activeTool.type, pointerDownState.originInGrid.x, pointerDownState.originInGrid.y, gridX, gridY, (0,_utils__WEBPACK_IMPORTED_MODULE_33__.distance)(pointerDownState.originInGrid.x, gridX), (0,_utils__WEBPACK_IMPORTED_MODULE_33__.distance)(pointerDownState.originInGrid.y, gridY), (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isImageElement)(draggingElement) ? !(0,_keys__WEBPACK_IMPORTED_MODULE_26__.shouldMaintainAspectRatio)(event) : (0,_keys__WEBPACK_IMPORTED_MODULE_26__.shouldMaintainAspectRatio)(event), (0,_keys__WEBPACK_IMPORTED_MODULE_26__.shouldResizeFromCenter)(event), aspectRatio, this.state.originSnapOffset);\n        this.maybeSuggestBindingForAll([draggingElement]); // highlight elements that are to be added to frames on frames creation\n\n        if (this.state.activeTool.type === "frame") {\n          this.setState({\n            elementsToHighlight: (0,_frame__WEBPACK_IMPORTED_MODULE_50__.getElementsInResizingFrame)(this.scene.getNonDeletedElements(), draggingElement, this.state)\n          });\n        }\n      }\n    };\n\n    this.maybeHandleResize = (pointerDownState, event) => {\n      const selectedElements = this.scene.getSelectedElements(this.state);\n      const selectedFrames = selectedElements.filter(element => element.type === "frame");\n      const transformHandleType = pointerDownState.resize.handleType;\n\n      if (selectedFrames.length > 0 && transformHandleType === "rotation") {\n        return false;\n      }\n\n      this.setState({\n        // TODO: rename this state field to "isScaling" to distinguish\n        // it from the generic "isResizing" which includes scaling and\n        // rotating\n        isResizing: transformHandleType && transformHandleType !== "rotation",\n        isRotating: transformHandleType === "rotation",\n        activeEmbeddable: null\n      });\n      const pointerCoords = pointerDownState.lastCoords;\n      let [resizeX, resizeY] = (0,_math__WEBPACK_IMPORTED_MODULE_28__.getGridPoint)(pointerCoords.x - pointerDownState.resize.offset.x, pointerCoords.y - pointerDownState.resize.offset.y, event[_keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.CTRL_OR_CMD] ? null : this.state.gridSize);\n      const frameElementsOffsetsMap = new Map();\n      selectedFrames.forEach(frame => {\n        const elementsInFrame = (0,_frame__WEBPACK_IMPORTED_MODULE_50__.getFrameChildren)(this.scene.getNonDeletedElements(), frame.id);\n        elementsInFrame.forEach(element => {\n          frameElementsOffsetsMap.set(frame.id + element.id, {\n            x: element.x - frame.x,\n            y: element.y - frame.y\n          });\n        });\n      }); // check needed for avoiding flickering when a key gets pressed\n      // during dragging\n\n      if (!this.state.selectedElementsAreBeingDragged) {\n        const [gridX, gridY] = (0,_math__WEBPACK_IMPORTED_MODULE_28__.getGridPoint)(pointerCoords.x, pointerCoords.y, event[_keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.CTRL_OR_CMD] ? null : this.state.gridSize);\n        const dragOffset = {\n          x: gridX - pointerDownState.originInGrid.x,\n          y: gridY - pointerDownState.originInGrid.y\n        };\n        const originalElements = [...pointerDownState.originalElements.values()];\n        this.maybeCacheReferenceSnapPoints(event, selectedElements);\n        const {\n          snapOffset,\n          snapLines\n        } = (0,_snapping__WEBPACK_IMPORTED_MODULE_58__.snapResizingElements)(selectedElements, (0,_scene__WEBPACK_IMPORTED_MODULE_29__.getSelectedElements)(originalElements, this.state), this.state, event, dragOffset, transformHandleType);\n        resizeX += snapOffset.x;\n        resizeY += snapOffset.y;\n        this.setState({\n          snapLines\n        });\n      }\n\n      if ((0,_element__WEBPACK_IMPORTED_MODULE_16__.transformElements)(pointerDownState, transformHandleType, selectedElements, pointerDownState.resize.arrowDirection, (0,_keys__WEBPACK_IMPORTED_MODULE_26__.shouldRotateWithDiscreteAngle)(event), (0,_keys__WEBPACK_IMPORTED_MODULE_26__.shouldResizeFromCenter)(event), selectedElements.length === 1 && (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isImageElement)(selectedElements[0]) ? !(0,_keys__WEBPACK_IMPORTED_MODULE_26__.shouldMaintainAspectRatio)(event) : (0,_keys__WEBPACK_IMPORTED_MODULE_26__.shouldMaintainAspectRatio)(event), resizeX, resizeY, pointerDownState.resize.center.x, pointerDownState.resize.center.y, this.state)) {\n        this.maybeSuggestBindingForAll(selectedElements);\n        const elementsToHighlight = new Set();\n        selectedFrames.forEach(frame => {\n          const elementsInFrame = (0,_frame__WEBPACK_IMPORTED_MODULE_50__.getFrameChildren)(this.scene.getNonDeletedElements(), frame.id); // keep elements\' positions relative to their frames on frames resizing\n\n          if (transformHandleType) {\n            if (transformHandleType.includes("w")) {\n              elementsInFrame.forEach(element => {\n                var _a, _b;\n\n                (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(element, {\n                  x: frame.x + (((_a = frameElementsOffsetsMap.get(frame.id + element.id)) === null || _a === void 0 ? void 0 : _a.x) || 0),\n                  y: frame.y + (((_b = frameElementsOffsetsMap.get(frame.id + element.id)) === null || _b === void 0 ? void 0 : _b.y) || 0)\n                });\n              });\n            }\n\n            if (transformHandleType.includes("n")) {\n              elementsInFrame.forEach(element => {\n                var _a, _b;\n\n                (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(element, {\n                  x: frame.x + (((_a = frameElementsOffsetsMap.get(frame.id + element.id)) === null || _a === void 0 ? void 0 : _a.x) || 0),\n                  y: frame.y + (((_b = frameElementsOffsetsMap.get(frame.id + element.id)) === null || _b === void 0 ? void 0 : _b.y) || 0)\n                });\n              });\n            }\n          }\n\n          (0,_frame__WEBPACK_IMPORTED_MODULE_50__.getElementsInResizingFrame)(this.scene.getNonDeletedElements(), frame, this.state).forEach(element => elementsToHighlight.add(element));\n        });\n        this.setState({\n          elementsToHighlight: [...elementsToHighlight]\n        });\n        return true;\n      }\n\n      return false;\n    };\n\n    this.getContextMenuItems = type => {\n      const options = [];\n      options.push(_actions__WEBPACK_IMPORTED_MODULE_5__.actionCopyAsPng, _actions__WEBPACK_IMPORTED_MODULE_5__.actionCopyAsSvg); // canvas contextMenu\n      // -------------------------------------------------------------------------\n\n      if (type === "canvas") {\n        if (this.state.viewModeEnabled) {\n          return [...options, _actions__WEBPACK_IMPORTED_MODULE_5__.actionToggleGridMode, _actions__WEBPACK_IMPORTED_MODULE_5__.actionToggleZenMode, _actions_actionToggleViewMode__WEBPACK_IMPORTED_MODULE_38__.actionToggleViewMode, _actions__WEBPACK_IMPORTED_MODULE_5__.actionToggleStats];\n        }\n\n        return [_actions_actionClipboard__WEBPACK_IMPORTED_MODULE_52__.actionPaste, _ContextMenu__WEBPACK_IMPORTED_MODULE_35__.CONTEXT_MENU_SEPARATOR, _actions__WEBPACK_IMPORTED_MODULE_5__.actionCopyAsPng, _actions__WEBPACK_IMPORTED_MODULE_5__.actionCopyAsSvg, _actions__WEBPACK_IMPORTED_MODULE_5__.copyText, _ContextMenu__WEBPACK_IMPORTED_MODULE_35__.CONTEXT_MENU_SEPARATOR, _actions__WEBPACK_IMPORTED_MODULE_5__.actionSelectAll, _actions_actionElementLock__WEBPACK_IMPORTED_MODULE_48__.actionUnlockAllElements, _ContextMenu__WEBPACK_IMPORTED_MODULE_35__.CONTEXT_MENU_SEPARATOR, _actions__WEBPACK_IMPORTED_MODULE_5__.actionToggleGridMode, _actions__WEBPACK_IMPORTED_MODULE_5__.actionToggleObjectsSnapMode, _actions__WEBPACK_IMPORTED_MODULE_5__.actionToggleZenMode, _actions_actionToggleViewMode__WEBPACK_IMPORTED_MODULE_38__.actionToggleViewMode, _actions__WEBPACK_IMPORTED_MODULE_5__.actionToggleStats];\n      } // element contextMenu\n      // -------------------------------------------------------------------------\n\n\n      options.push(_actions__WEBPACK_IMPORTED_MODULE_5__.copyText);\n\n      if (this.state.viewModeEnabled) {\n        return [_actions__WEBPACK_IMPORTED_MODULE_5__.actionCopy, ...options];\n      }\n\n      return [_actions__WEBPACK_IMPORTED_MODULE_5__.actionCut, _actions__WEBPACK_IMPORTED_MODULE_5__.actionCopy, _actions_actionClipboard__WEBPACK_IMPORTED_MODULE_52__.actionPaste, _actions_actionFrame__WEBPACK_IMPORTED_MODULE_53__.actionSelectAllElementsInFrame, _actions_actionFrame__WEBPACK_IMPORTED_MODULE_53__.actionRemoveAllElementsFromFrame, _ContextMenu__WEBPACK_IMPORTED_MODULE_35__.CONTEXT_MENU_SEPARATOR, ...options, _ContextMenu__WEBPACK_IMPORTED_MODULE_35__.CONTEXT_MENU_SEPARATOR, _actions__WEBPACK_IMPORTED_MODULE_5__.actionCopyStyles, _actions__WEBPACK_IMPORTED_MODULE_5__.actionPasteStyles, _ContextMenu__WEBPACK_IMPORTED_MODULE_35__.CONTEXT_MENU_SEPARATOR, _actions__WEBPACK_IMPORTED_MODULE_5__.actionGroup, _actions__WEBPACK_IMPORTED_MODULE_5__.actionUnbindText, _actions__WEBPACK_IMPORTED_MODULE_5__.actionBindText, _actions_actionBoundText__WEBPACK_IMPORTED_MODULE_59__.actionWrapTextInContainer, _actions__WEBPACK_IMPORTED_MODULE_5__.actionUngroup, _ContextMenu__WEBPACK_IMPORTED_MODULE_35__.CONTEXT_MENU_SEPARATOR, _actions__WEBPACK_IMPORTED_MODULE_5__.actionAddToLibrary, _ContextMenu__WEBPACK_IMPORTED_MODULE_35__.CONTEXT_MENU_SEPARATOR, _actions__WEBPACK_IMPORTED_MODULE_5__.actionSendBackward, _actions__WEBPACK_IMPORTED_MODULE_5__.actionBringForward, _actions__WEBPACK_IMPORTED_MODULE_5__.actionSendToBack, _actions__WEBPACK_IMPORTED_MODULE_5__.actionBringToFront, _ContextMenu__WEBPACK_IMPORTED_MODULE_35__.CONTEXT_MENU_SEPARATOR, _actions__WEBPACK_IMPORTED_MODULE_5__.actionFlipHorizontal, _actions__WEBPACK_IMPORTED_MODULE_5__.actionFlipVertical, _ContextMenu__WEBPACK_IMPORTED_MODULE_35__.CONTEXT_MENU_SEPARATOR, _actions__WEBPACK_IMPORTED_MODULE_5__.actionToggleLinearEditor, _actions__WEBPACK_IMPORTED_MODULE_5__.actionLink, _actions__WEBPACK_IMPORTED_MODULE_5__.actionDuplicateSelection, _actions__WEBPACK_IMPORTED_MODULE_5__.actionToggleElementLock, _ContextMenu__WEBPACK_IMPORTED_MODULE_35__.CONTEXT_MENU_SEPARATOR, _actions__WEBPACK_IMPORTED_MODULE_5__.actionDeleteSelected];\n    };\n\n    this.handleWheel = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.withBatchedUpdates)(event => {\n      event.preventDefault();\n\n      if (isPanning) {\n        return;\n      }\n\n      const {\n        deltaX,\n        deltaY\n      } = event; // note that event.ctrlKey is necessary to handle pinch zooming\n\n      if (event.metaKey || event.ctrlKey) {\n        const sign = Math.sign(deltaY);\n        const MAX_STEP = _constants__WEBPACK_IMPORTED_MODULE_12__.ZOOM_STEP * 100;\n        const absDelta = Math.abs(deltaY);\n        let delta = deltaY;\n\n        if (absDelta > MAX_STEP) {\n          delta = MAX_STEP * sign;\n        }\n\n        let newZoom = this.state.zoom.value - delta / 100; // increase zoom steps the more zoomed-in we are (applies to >100% only)\n\n        newZoom += Math.log10(Math.max(1, this.state.zoom.value)) * -sign * // reduced amplification for small deltas (small movements on a trackpad)\n        Math.min(1, absDelta / 20);\n        this.translateCanvas(state => Object.assign(Object.assign({}, (0,_scene_zoom__WEBPACK_IMPORTED_MODULE_31__.getStateForZoom)({\n          viewportX: this.lastViewportPosition.x,\n          viewportY: this.lastViewportPosition.y,\n          nextZoom: (0,_scene__WEBPACK_IMPORTED_MODULE_29__.getNormalizedZoom)(newZoom)\n        }, state)), {\n          shouldCacheIgnoreZoom: true\n        }));\n        this.resetShouldCacheIgnoreZoomDebounced();\n        return;\n      } // scroll horizontally when shift pressed\n\n\n      if (event.shiftKey) {\n        this.translateCanvas(({\n          zoom,\n          scrollX\n        }) => ({\n          // on Mac, shift+wheel tends to result in deltaX\n          scrollX: scrollX - (deltaY || deltaX) / zoom.value\n        }));\n        return;\n      }\n\n      this.translateCanvas(({\n        zoom,\n        scrollX,\n        scrollY\n      }) => ({\n        scrollX: scrollX - deltaX / zoom.value,\n        scrollY: scrollY - deltaY / zoom.value\n      }));\n    });\n\n    this.savePointer = (x, y, button) => {\n      var _a, _b;\n\n      if (!x || !y) {\n        return;\n      }\n\n      const {\n        x: sceneX,\n        y: sceneY\n      } = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.viewportCoordsToSceneCoords)({\n        clientX: x,\n        clientY: y\n      }, this.state);\n\n      if (isNaN(sceneX) || isNaN(sceneY)) {// sometimes the pointer goes off screen\n      }\n\n      const pointer = {\n        x: sceneX,\n        y: sceneY,\n        tool: this.state.activeTool.type === "laser" ? "laser" : "pointer"\n      };\n      (_b = (_a = this.props).onPointerUpdate) === null || _b === void 0 ? void 0 : _b.call(_a, {\n        pointer,\n        button,\n        pointersMap: gesture.pointers\n      });\n    };\n\n    this.resetShouldCacheIgnoreZoomDebounced = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.debounce)(() => {\n      if (!this.unmounted) {\n        this.setState({\n          shouldCacheIgnoreZoom: false\n        });\n      }\n    }, 300);\n\n    this.updateDOMRect = cb => {\n      var _a;\n\n      if ((_a = this.excalidrawContainerRef) === null || _a === void 0 ? void 0 : _a.current) {\n        const excalidrawContainer = this.excalidrawContainerRef.current;\n        const {\n          width,\n          height,\n          left: offsetLeft,\n          top: offsetTop\n        } = excalidrawContainer.getBoundingClientRect();\n        const {\n          width: currentWidth,\n          height: currentHeight,\n          offsetTop: currentOffsetTop,\n          offsetLeft: currentOffsetLeft\n        } = this.state;\n\n        if (width === currentWidth && height === currentHeight && offsetLeft === currentOffsetLeft && offsetTop === currentOffsetTop) {\n          if (cb) {\n            cb();\n          }\n\n          return;\n        }\n\n        this.setState({\n          width,\n          height,\n          offsetLeft,\n          offsetTop\n        }, () => {\n          cb && cb();\n        });\n      }\n    };\n\n    this.refresh = () => {\n      this.setState(Object.assign({}, this.getCanvasOffsets()));\n    };\n\n    const defaultAppState = (0,_appState__WEBPACK_IMPORTED_MODULE_10__.getDefaultAppState)();\n    const {\n      excalidrawAPI,\n      viewModeEnabled = false,\n      zenModeEnabled = false,\n      gridModeEnabled = false,\n      objectsSnapModeEnabled = false,\n      theme = defaultAppState.theme,\n      name = defaultAppState.name\n    } = props;\n    this.state = Object.assign(Object.assign(Object.assign(Object.assign({}, defaultAppState), {\n      theme,\n      isLoading: true\n    }), this.getCanvasOffsets()), {\n      viewModeEnabled,\n      zenModeEnabled,\n      objectsSnapModeEnabled,\n      gridSize: gridModeEnabled ? _constants__WEBPACK_IMPORTED_MODULE_12__.GRID_SIZE : null,\n      name,\n      width: window.innerWidth,\n      height: window.innerHeight\n    });\n    this.id = (0,nanoid__WEBPACK_IMPORTED_MODULE_72__.nanoid)();\n    this.library = new _data_library__WEBPACK_IMPORTED_MODULE_14__["default"](this);\n    this.scene = new _scene_Scene__WEBPACK_IMPORTED_MODULE_30__["default"]();\n    this.canvas = document.createElement("canvas");\n    this.rc = roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_3__["default"].canvas(this.canvas);\n    this.renderer = new _scene_Renderer__WEBPACK_IMPORTED_MODULE_65__.Renderer(this.scene);\n\n    if (excalidrawAPI) {\n      const api = {\n        updateScene: this.updateScene,\n        updateLibrary: this.library.updateLibrary,\n        addFiles: this.addFiles,\n        resetScene: this.resetScene,\n        getSceneElementsIncludingDeleted: this.getSceneElementsIncludingDeleted,\n        history: {\n          clear: this.resetHistory\n        },\n        scrollToContent: this.scrollToContent,\n        getSceneElements: this.getSceneElements,\n        getAppState: () => this.state,\n        getFiles: () => this.files,\n        refresh: this.refresh,\n        setToast: this.setToast,\n        id: this.id,\n        setActiveTool: this.setActiveTool,\n        setCursor: this.setCursor,\n        resetCursor: this.resetCursor,\n        updateFrameRendering: this.updateFrameRendering,\n        toggleSidebar: this.toggleSidebar,\n        onChange: cb => this.onChangeEmitter.on(cb),\n        onPointerDown: cb => this.onPointerDownEmitter.on(cb),\n        onPointerUp: cb => this.onPointerUpEmitter.on(cb)\n      };\n\n      if (typeof excalidrawAPI === "function") {\n        excalidrawAPI(api);\n      } else {\n        console.error("excalidrawAPI should be a function!");\n      }\n    }\n\n    this.excalidrawContainerValue = {\n      container: this.excalidrawContainerRef.current,\n      id: this.id\n    };\n    this.fonts = new _scene_Fonts__WEBPACK_IMPORTED_MODULE_49__.Fonts({\n      scene: this.scene,\n      onSceneUpdated: this.onSceneUpdated\n    });\n    this.history = new _history__WEBPACK_IMPORTED_MODULE_24__["default"]();\n    this.actionManager = new _actions_manager__WEBPACK_IMPORTED_MODULE_7__.ActionManager(this.syncActionResult, () => this.state, () => this.scene.getElementsIncludingDeleted(), this);\n    this.actionManager.registerAll(_actions_register__WEBPACK_IMPORTED_MODULE_8__.actions);\n    this.actionManager.registerAction((0,_actions_actionHistory__WEBPACK_IMPORTED_MODULE_6__.createUndoAction)(this.history));\n    this.actionManager.registerAction((0,_actions_actionHistory__WEBPACK_IMPORTED_MODULE_6__.createRedoAction)(this.history));\n  }\n\n  onWindowMessage(event) {\n    if (event.origin !== "https://player.vimeo.com" && event.origin !== "https://www.youtube.com") {\n      return;\n    }\n\n    let data = null;\n\n    try {\n      data = JSON.parse(event.data);\n    } catch (e) {}\n\n    if (!data) {\n      return;\n    }\n\n    switch (event.origin) {\n      case "https://player.vimeo.com":\n        //Allowing for multiple instances of Excalidraw running in the window\n        if (data.method === "paused") {\n          let source = null;\n          const iframes = document.body.querySelectorAll("iframe.excalidraw__embeddable");\n\n          if (!iframes) {\n            break;\n          }\n\n          for (const iframe of iframes) {\n            if (iframe.contentWindow === event.source) {\n              source = iframe.contentWindow;\n            }\n          }\n\n          source === null || source === void 0 ? void 0 : source.postMessage(JSON.stringify({\n            method: data.value ? "play" : "pause",\n            value: true\n          }), "*");\n        }\n\n        break;\n\n      case "https://www.youtube.com":\n        if (data.event === "infoDelivery" && data.info && data.id && typeof data.info.playerState === "number") {\n          const id = data.id;\n          const playerState = data.info.playerState;\n\n          if (Object.values(_constants__WEBPACK_IMPORTED_MODULE_12__.YOUTUBE_STATES).includes(playerState)) {\n            YOUTUBE_VIDEO_STATES.set(id, playerState);\n          }\n        }\n\n        break;\n    }\n  }\n\n  updateEmbeddableRef(id, ref) {\n    if (ref) {\n      this.iFrameRefs.set(id, ref);\n    }\n  }\n\n  getHTMLIFrameElement(id) {\n    return this.iFrameRefs.get(id);\n  }\n\n  handleEmbeddableCenterClick(element) {\n    var _a, _b, _c, _d;\n\n    if (((_a = this.state.activeEmbeddable) === null || _a === void 0 ? void 0 : _a.element) === element && ((_b = this.state.activeEmbeddable) === null || _b === void 0 ? void 0 : _b.state) === "active") {\n      return;\n    } // The delay serves two purposes\n    // 1. To prevent first click propagating to iframe on mobile,\n    //    else the click will immediately start and stop the video\n    // 2. If the user double clicks the frame center to activate it\n    //    without the delay youtube will immediately open the video\n    //    in fullscreen mode\n\n\n    setTimeout(() => {\n      this.setState({\n        activeEmbeddable: {\n          element,\n          state: "active"\n        },\n        selectedElementIds: {\n          [element.id]: true\n        },\n        draggingElement: null,\n        selectionElement: null\n      });\n    }, 100);\n    const iframe = this.getHTMLIFrameElement(element.id);\n\n    if (!(iframe === null || iframe === void 0 ? void 0 : iframe.contentWindow)) {\n      return;\n    }\n\n    if (iframe.src.includes("youtube")) {\n      const state = YOUTUBE_VIDEO_STATES.get(element.id);\n\n      if (!state) {\n        YOUTUBE_VIDEO_STATES.set(element.id, _constants__WEBPACK_IMPORTED_MODULE_12__.YOUTUBE_STATES.UNSTARTED);\n        iframe.contentWindow.postMessage(JSON.stringify({\n          event: "listening",\n          id: element.id\n        }), "*");\n      }\n\n      switch (state) {\n        case _constants__WEBPACK_IMPORTED_MODULE_12__.YOUTUBE_STATES.PLAYING:\n        case _constants__WEBPACK_IMPORTED_MODULE_12__.YOUTUBE_STATES.BUFFERING:\n          (_c = iframe.contentWindow) === null || _c === void 0 ? void 0 : _c.postMessage(JSON.stringify({\n            event: "command",\n            func: "pauseVideo",\n            args: ""\n          }), "*");\n          break;\n\n        default:\n          (_d = iframe.contentWindow) === null || _d === void 0 ? void 0 : _d.postMessage(JSON.stringify({\n            event: "command",\n            func: "playVideo",\n            args: ""\n          }), "*");\n      }\n    }\n\n    if (iframe.src.includes("player.vimeo.com")) {\n      iframe.contentWindow.postMessage(JSON.stringify({\n        method: "paused" //video play/pause in onWindowMessage handler\n\n      }), "*");\n    }\n  }\n\n  isEmbeddableCenter(el, event, sceneX, sceneY) {\n    var _a, _b;\n\n    return el && !event.altKey && !event.shiftKey && !event.metaKey && !event.ctrlKey && (((_a = this.state.activeEmbeddable) === null || _a === void 0 ? void 0 : _a.element) !== el || ((_b = this.state.activeEmbeddable) === null || _b === void 0 ? void 0 : _b.state) === "hover" || !this.state.activeEmbeddable) && sceneX >= el.x + el.width / 3 && sceneX <= el.x + 2 * el.width / 3 && sceneY >= el.y + el.height / 3 && sceneY <= el.y + 2 * el.height / 3;\n  }\n\n  renderEmbeddables() {\n    const scale = this.state.zoom.value;\n    const normalizedWidth = this.state.width;\n    const normalizedHeight = this.state.height;\n    const embeddableElements = this.scene.getNonDeletedElements().filter(el => (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isEmbeddableElement)(el) && !!el.validated);\n    return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n      children: embeddableElements.map(el => {\n        var _a, _b, _c, _d, _e, _f, _g, _h, _j;\n\n        const {\n          x,\n          y\n        } = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.sceneCoordsToViewportCoords)({\n          sceneX: el.x,\n          sceneY: el.y\n        }, this.state);\n        const embedLink = (0,_element_embeddable__WEBPACK_IMPORTED_MODULE_34__.getEmbedLink)((0,_data_url__WEBPACK_IMPORTED_MODULE_46__.toValidURL)(el.link || ""));\n        const isVisible = (0,_element_sizeHelpers__WEBPACK_IMPORTED_MODULE_27__.isElementInViewport)(el, normalizedWidth, normalizedHeight, this.state);\n        const isActive = ((_a = this.state.activeEmbeddable) === null || _a === void 0 ? void 0 : _a.element) === el && ((_b = this.state.activeEmbeddable) === null || _b === void 0 ? void 0 : _b.state) === "active";\n        const isHovered = ((_c = this.state.activeEmbeddable) === null || _c === void 0 ? void 0 : _c.element) === el && ((_d = this.state.activeEmbeddable) === null || _d === void 0 ? void 0 : _d.state) === "hover";\n        return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n          className: (0,clsx__WEBPACK_IMPORTED_MODULE_4__["default"])("excalidraw__embeddable-container", {\n            "is-hovered": isHovered\n          }),\n          style: {\n            transform: isVisible ? `translate(${x - this.state.offsetLeft}px, ${y - this.state.offsetTop}px) scale(${scale})` : "none",\n            display: isVisible ? "block" : "none",\n            opacity: el.opacity / 100,\n            ["--embeddable-radius"]: `${(0,_math__WEBPACK_IMPORTED_MODULE_28__.getCornerRadius)(Math.min(el.width, el.height), el)}px`\n          }\n        }, {\n          children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n            //this is a hack that addresses isse with embedded excalidraw.com embeddable\n            //https://github.com/excalidraw/excalidraw/pull/6691#issuecomment-1607383938\n\n            /*ref={(ref) => {\n              if (!this.excalidrawContainerRef.current) {\n                return;\n              }\n              const container = this.excalidrawContainerRef.current;\n              const sh = container.scrollHeight;\n              const ch = container.clientHeight;\n              if (sh !== ch) {\n                container.style.height = `${sh}px`;\n                setTimeout(() => {\n                  container.style.height = `100%`;\n                });\n              }\n            }}*/\n            className: "excalidraw__embeddable-container__inner",\n            style: {\n              width: isVisible ? `${el.width}px` : 0,\n              height: isVisible ? `${el.height}px` : 0,\n              transform: isVisible ? `rotate(${el.angle}rad)` : "none",\n              pointerEvents: isActive ? _constants__WEBPACK_IMPORTED_MODULE_12__.POINTER_EVENTS.enabled : _constants__WEBPACK_IMPORTED_MODULE_12__.POINTER_EVENTS.disabled\n            }\n          }, {\n            children: [isHovered && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n              className: "excalidraw__embeddable-hint"\n            }, {\n              children: (0,_i18n__WEBPACK_IMPORTED_MODULE_25__.t)("buttons.embeddableInteractionButton")\n            })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n              className: "excalidraw__embeddable__outer",\n              style: {\n                padding: `${el.strokeWidth}px`\n              }\n            }, {\n              children: (_g = (_f = (_e = this.props).renderEmbeddable) === null || _f === void 0 ? void 0 : _f.call(_e, el, this.state)) !== null && _g !== void 0 ? _g : (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("iframe", {\n                ref: ref => this.updateEmbeddableRef(el.id, ref),\n                className: "excalidraw__embeddable",\n                srcDoc: (embedLink === null || embedLink === void 0 ? void 0 : embedLink.type) === "document" ? embedLink.srcdoc(this.state.theme) : undefined,\n                src: (embedLink === null || embedLink === void 0 ? void 0 : embedLink.type) !== "document" ? (_h = embedLink === null || embedLink === void 0 ? void 0 : embedLink.link) !== null && _h !== void 0 ? _h : "" : undefined,\n                // https://stackoverflow.com/q/18470015\n                scrolling: "no",\n                referrerPolicy: "no-referrer-when-downgrade",\n                title: "Excalidraw Embedded Content",\n                allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",\n                allowFullScreen: true,\n                sandbox: `${((_j = embedLink === null || embedLink === void 0 ? void 0 : embedLink.sandbox) === null || _j === void 0 ? void 0 : _j.allowSameOrigin) ? "allow-same-origin" : ""} allow-scripts allow-forms allow-popups allow-popups-to-escape-sandbox allow-presentation allow-downloads`\n              })\n            }))]\n          }))\n        }), el.id);\n      })\n    });\n  }\n\n  render() {\n    var _a, _b, _c;\n\n    const selectedElements = this.scene.getSelectedElements(this.state);\n    const {\n      renderTopRightUI,\n      renderCustomStats\n    } = this.props;\n    const versionNonce = this.scene.getVersionNonce();\n    const {\n      canvasElements,\n      visibleElements\n    } = this.renderer.getRenderableElements({\n      versionNonce,\n      zoom: this.state.zoom,\n      offsetLeft: this.state.offsetLeft,\n      offsetTop: this.state.offsetTop,\n      scrollX: this.state.scrollX,\n      scrollY: this.state.scrollY,\n      height: this.state.height,\n      width: this.state.width,\n      editingElement: this.state.editingElement,\n      pendingImageElementId: this.state.pendingImageElementId\n    });\n    const shouldBlockPointerEvents = !(this.state.editingElement && (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isLinearElement)(this.state.editingElement)) && (this.state.selectionElement || this.state.draggingElement || this.state.resizingElement || this.state.activeTool.type === "laser" && // technically we can just test on this once we make it more safe\n    this.state.cursorButton === "down" || this.state.editingElement && !(0,_element__WEBPACK_IMPORTED_MODULE_16__.isTextElement)(this.state.editingElement));\n    return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_4__["default"])("excalidraw excalidraw-container", {\n        "excalidraw--view-mode": this.state.viewModeEnabled,\n        "excalidraw--mobile": this.device.editor.isMobile\n      }),\n      style: {\n        ["--ui-pointerEvents"]: shouldBlockPointerEvents ? _constants__WEBPACK_IMPORTED_MODULE_12__.POINTER_EVENTS.disabled : _constants__WEBPACK_IMPORTED_MODULE_12__.POINTER_EVENTS.enabled\n      },\n      ref: this.excalidrawContainerRef,\n      onDrop: this.handleAppOnDrop,\n      tabIndex: 0,\n      onKeyDown: this.props.handleKeyboardGlobally ? undefined : this.onKeyDown\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(AppContext.Provider, Object.assign({\n        value: this\n      }, {\n        children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(AppPropsContext.Provider, Object.assign({\n          value: this.props\n        }, {\n          children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(ExcalidrawContainerContext.Provider, Object.assign({\n            value: this.excalidrawContainerValue\n          }, {\n            children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(DeviceContext.Provider, Object.assign({\n              value: this.device\n            }, {\n              children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(ExcalidrawSetAppStateContext.Provider, Object.assign({\n                value: this.setAppState\n              }, {\n                children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(ExcalidrawAppStateContext.Provider, Object.assign({\n                  value: this.state\n                }, {\n                  children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(ExcalidrawElementsContext.Provider, Object.assign({\n                    value: this.scene.getNonDeletedElements()\n                  }, {\n                    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(ExcalidrawActionManagerContext.Provider, Object.assign({\n                      value: this.actionManager\n                    }, {\n                      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_LayerUI__WEBPACK_IMPORTED_MODULE_36__["default"], Object.assign({\n                        canvas: this.canvas,\n                        appState: this.state,\n                        files: this.files,\n                        setAppState: this.setAppState,\n                        actionManager: this.actionManager,\n                        elements: this.scene.getNonDeletedElements(),\n                        onLockToggle: this.toggleLock,\n                        onPenModeToggle: this.togglePenMode,\n                        onHandToolToggle: this.onHandToolToggle,\n                        langCode: (0,_i18n__WEBPACK_IMPORTED_MODULE_25__.getLanguage)().code,\n                        renderTopRightUI: renderTopRightUI,\n                        renderCustomStats: renderCustomStats,\n                        showExitZenModeBtn: typeof ((_a = this.props) === null || _a === void 0 ? void 0 : _a.zenModeEnabled) === "undefined" && this.state.zenModeEnabled,\n                        UIOptions: this.props.UIOptions,\n                        onExportImage: this.onExportImage,\n                        renderWelcomeScreen: !this.state.isLoading && this.state.showWelcomeScreen && this.state.activeTool.type === "selection" && !this.state.zenModeEnabled && !this.scene.getElementsIncludingDeleted().length,\n                        app: this,\n                        isCollaborating: this.props.isCollaborating\n                      }, {\n                        children: [this.props.children, this.state.openDialog === "mermaid" && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_MermaidToExcalidraw__WEBPACK_IMPORTED_MODULE_67__["default"], {})]\n                      })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n                        className: "excalidraw-textEditorContainer"\n                      }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n                        className: "excalidraw-contextMenuContainer"\n                      }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n                        className: "excalidraw-eye-dropper-container"\n                      }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LaserTool_LaserTool__WEBPACK_IMPORTED_MODULE_68__.LaserToolOverlay, {\n                        manager: this.laserPathManager\n                      }), selectedElements.length === 1 && !this.state.contextMenu && this.state.showHyperlinkPopup && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_element_Hyperlink__WEBPACK_IMPORTED_MODULE_45__.Hyperlink, {\n                        element: selectedElements[0],\n                        setAppState: this.setAppState,\n                        onLinkOpen: this.props.onLinkOpen,\n                        setToast: this.setToast\n                      }, selectedElements[0].id), this.state.toast !== null && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Toast__WEBPACK_IMPORTED_MODULE_37__.Toast, {\n                        message: this.state.toast.message,\n                        onClose: () => this.setToast(null),\n                        duration: this.state.toast.duration,\n                        closable: this.state.toast.closable\n                      }), this.state.contextMenu && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ContextMenu__WEBPACK_IMPORTED_MODULE_35__.ContextMenu, {\n                        items: this.state.contextMenu.items,\n                        top: this.state.contextMenu.top,\n                        left: this.state.contextMenu.left,\n                        actionManager: this.actionManager,\n                        onClose: callback => {\n                          this.setState({\n                            contextMenu: null\n                          }, () => {\n                            this.focusContainer();\n                            callback === null || callback === void 0 ? void 0 : callback();\n                          });\n                        }\n                      }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_canvases__WEBPACK_IMPORTED_MODULE_64__.StaticCanvas, {\n                        canvas: this.canvas,\n                        rc: this.rc,\n                        elements: canvasElements,\n                        visibleElements: visibleElements,\n                        versionNonce: versionNonce,\n                        selectionNonce: (_b = this.state.selectionElement) === null || _b === void 0 ? void 0 : _b.versionNonce,\n                        scale: window.devicePixelRatio,\n                        appState: this.state,\n                        renderConfig: {\n                          imageCache: this.imageCache,\n                          isExporting: false,\n                          renderGrid: true\n                        }\n                      }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_canvases__WEBPACK_IMPORTED_MODULE_64__.InteractiveCanvas, {\n                        containerRef: this.excalidrawContainerRef,\n                        canvas: this.interactiveCanvas,\n                        elements: canvasElements,\n                        visibleElements: visibleElements,\n                        selectedElements: selectedElements,\n                        versionNonce: versionNonce,\n                        selectionNonce: (_c = this.state.selectionElement) === null || _c === void 0 ? void 0 : _c.versionNonce,\n                        scale: window.devicePixelRatio,\n                        appState: this.state,\n                        renderInteractiveSceneCallback: this.renderInteractiveSceneCallback,\n                        handleCanvasRef: this.handleInteractiveCanvasRef,\n                        onContextMenu: this.handleCanvasContextMenu,\n                        onPointerMove: this.handleCanvasPointerMove,\n                        onPointerUp: this.handleCanvasPointerUp,\n                        onPointerCancel: this.removePointer,\n                        onTouchMove: this.handleTouchMove,\n                        onPointerDown: this.handleCanvasPointerDown,\n                        onDoubleClick: this.handleCanvasDoubleClick\n                      }), this.renderFrameNames()]\n                    })), this.renderEmbeddables()]\n                  }))\n                }))\n              }))\n            }))\n          }))\n        }))\n      }))\n    }));\n  }\n\n  componentDidMount() {\n    var _a;\n\n    return __awaiter(this, void 0, void 0, function* () {\n      this.unmounted = false;\n      this.excalidrawContainerValue.container = this.excalidrawContainerRef.current;\n\n      if ("development" === _constants__WEBPACK_IMPORTED_MODULE_12__.ENV.TEST || "development" !== "production") {\n        const setState = this.setState.bind(this);\n        Object.defineProperties(window.h, {\n          state: {\n            configurable: true,\n            get: () => {\n              return this.state;\n            }\n          },\n          setState: {\n            configurable: true,\n            value: (...args) => {\n              return this.setState(...args);\n            }\n          },\n          app: {\n            configurable: true,\n            value: this\n          },\n          history: {\n            configurable: true,\n            value: this.history\n          }\n        });\n      }\n\n      this.scene.addCallback(this.onSceneUpdated);\n      this.addEventListeners();\n\n      if (this.props.autoFocus && this.excalidrawContainerRef.current) {\n        this.focusContainer();\n      }\n\n      if ( // bounding rects don\'t work in tests so updating\n      // the state on init would result in making the test enviro run\n      // in mobile breakpoint (0 width/height), making everything fail\n      !(0,_utils__WEBPACK_IMPORTED_MODULE_33__.isTestEnv)()) {\n        this.refreshViewportBreakpoints();\n        this.refreshEditorBreakpoints();\n      }\n\n      if (supportsResizeObserver && this.excalidrawContainerRef.current) {\n        this.resizeObserver = new ResizeObserver(() => {\n          this.refreshEditorBreakpoints();\n          this.updateDOMRect();\n        });\n        (_a = this.resizeObserver) === null || _a === void 0 ? void 0 : _a.observe(this.excalidrawContainerRef.current);\n      }\n\n      const searchParams = new URLSearchParams(window.location.search.slice(1));\n\n      if (searchParams.has("web-share-target")) {\n        // Obtain a file that was shared via the Web Share Target API.\n        this.restoreFileFromShare();\n      } else {\n        this.updateDOMRect(this.initializeScene);\n      } // note that this check seems to always pass in localhost\n\n\n      if ((0,_constants__WEBPACK_IMPORTED_MODULE_12__.isBrave)() && !(0,_element_textElement__WEBPACK_IMPORTED_MODULE_43__.isMeasureTextSupported)()) {\n        this.setState({\n          errorMessage: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_BraveMeasureTextError__WEBPACK_IMPORTED_MODULE_60__["default"], {})\n        });\n      }\n    });\n  }\n\n  componentWillUnmount() {\n    var _a;\n\n    this.renderer.destroy();\n    this.scene = new _scene_Scene__WEBPACK_IMPORTED_MODULE_30__["default"]();\n    this.renderer = new _scene_Renderer__WEBPACK_IMPORTED_MODULE_65__.Renderer(this.scene);\n    this.files = {};\n    this.imageCache.clear();\n    (_a = this.resizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();\n    this.unmounted = true;\n    this.removeEventListeners();\n    this.scene.destroy();\n    this.library.destroy();\n    this.laserPathManager.destroy();\n    this.onChangeEmitter.destroy();\n    _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_66__.ShapeCache.destroy();\n    _snapping__WEBPACK_IMPORTED_MODULE_58__.SnapCache.destroy();\n    clearTimeout(touchTimeout);\n    _scene__WEBPACK_IMPORTED_MODULE_29__.isSomeElementSelected.clearCache();\n    _groups__WEBPACK_IMPORTED_MODULE_23__.selectGroupsForSelectedElements.clearCache();\n    touchTimeout = 0;\n  }\n\n  removeEventListeners() {\n    var _a, _b, _c, _d;\n\n    document.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.POINTER_UP, this.removePointer);\n    document.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.COPY, this.onCopy);\n    document.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.PASTE, this.pasteFromClipboard);\n    document.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.CUT, this.onCut);\n    (_a = this.excalidrawContainerRef.current) === null || _a === void 0 ? void 0 : _a.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.WHEEL, this.onWheel);\n    (_b = this.nearestScrollableContainer) === null || _b === void 0 ? void 0 : _b.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.SCROLL, this.onScroll);\n    document.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.KEYDOWN, this.onKeyDown, false);\n    document.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.MOUSE_MOVE, this.updateCurrentCursorPosition, false);\n    document.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.KEYUP, this.onKeyUp);\n    window.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.RESIZE, this.onResize, false);\n    window.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.UNLOAD, this.onUnload, false);\n    window.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.BLUR, this.onBlur, false);\n    (_c = this.excalidrawContainerRef.current) === null || _c === void 0 ? void 0 : _c.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.DRAG_OVER, this.disableEvent, false);\n    (_d = this.excalidrawContainerRef.current) === null || _d === void 0 ? void 0 : _d.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.DROP, this.disableEvent, false);\n    document.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.GESTURE_START, this.onGestureStart, false);\n    document.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.GESTURE_CHANGE, this.onGestureChange, false);\n    document.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.GESTURE_END, this.onGestureEnd, false);\n    window.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.MESSAGE, this.onWindowMessage, false);\n  }\n\n  addEventListeners() {\n    var _a, _b, _c, _d, _e;\n\n    this.removeEventListeners();\n    window.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.MESSAGE, this.onWindowMessage, false);\n    document.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.POINTER_UP, this.removePointer); // #3553\n\n    document.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.COPY, this.onCopy);\n    (_a = this.excalidrawContainerRef.current) === null || _a === void 0 ? void 0 : _a.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.WHEEL, this.onWheel, {\n      passive: false\n    });\n\n    if (this.props.handleKeyboardGlobally) {\n      document.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.KEYDOWN, this.onKeyDown, false);\n    }\n\n    document.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.KEYUP, this.onKeyUp, {\n      passive: true\n    });\n    document.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.MOUSE_MOVE, this.updateCurrentCursorPosition); // rerender text elements on font load to fix #637 && #1553\n\n    (_c = (_b = document.fonts) === null || _b === void 0 ? void 0 : _b.addEventListener) === null || _c === void 0 ? void 0 : _c.call(_b, "loadingdone", event => {\n      const loadedFontFaces = event.fontfaces;\n      this.fonts.onFontsLoaded(loadedFontFaces);\n    }); // Safari-only desktop pinch zoom\n\n    document.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.GESTURE_START, this.onGestureStart, false);\n    document.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.GESTURE_CHANGE, this.onGestureChange, false);\n    document.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.GESTURE_END, this.onGestureEnd, false);\n\n    if (this.state.viewModeEnabled) {\n      return;\n    }\n\n    document.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.PASTE, this.pasteFromClipboard);\n    document.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.CUT, this.onCut);\n\n    if (this.props.detectScroll) {\n      this.nearestScrollableContainer = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.getNearestScrollableContainer)(this.excalidrawContainerRef.current);\n      this.nearestScrollableContainer.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.SCROLL, this.onScroll);\n    }\n\n    window.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.RESIZE, this.onResize, false);\n    window.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.UNLOAD, this.onUnload, false);\n    window.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.BLUR, this.onBlur, false);\n    (_d = this.excalidrawContainerRef.current) === null || _d === void 0 ? void 0 : _d.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.DRAG_OVER, this.disableEvent, false);\n    (_e = this.excalidrawContainerRef.current) === null || _e === void 0 ? void 0 : _e.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.DROP, this.disableEvent, false);\n  }\n\n  componentDidUpdate(prevProps, prevState) {\n    var _a, _b, _c, _d, _e, _f;\n\n    this.updateEmbeddables();\n\n    if (!this.state.showWelcomeScreen && !this.scene.getElementsIncludingDeleted().length) {\n      this.setState({\n        showWelcomeScreen: true\n      });\n    }\n\n    if (prevProps.UIOptions.dockedSidebarBreakpoint !== this.props.UIOptions.dockedSidebarBreakpoint) {\n      this.refreshEditorBreakpoints();\n    }\n\n    if (prevState.scrollX !== this.state.scrollX || prevState.scrollY !== this.state.scrollY) {\n      (_b = (_a = this.props) === null || _a === void 0 ? void 0 : _a.onScrollChange) === null || _b === void 0 ? void 0 : _b.call(_a, this.state.scrollX, this.state.scrollY);\n    }\n\n    if (Object.keys(this.state.selectedElementIds).length && (0,_appState__WEBPACK_IMPORTED_MODULE_10__.isEraserActive)(this.state)) {\n      this.setState({\n        activeTool: (0,_utils__WEBPACK_IMPORTED_MODULE_33__.updateActiveTool)(this.state, {\n          type: "selection"\n        })\n      });\n    }\n\n    if (this.state.activeTool.type === "eraser" && prevState.theme !== this.state.theme) {\n      (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setEraserCursor)(this.interactiveCanvas, this.state.theme);\n    } // Hide hyperlink popup if shown when element type is not selection\n\n\n    if (prevState.activeTool.type === "selection" && this.state.activeTool.type !== "selection" && this.state.showHyperlinkPopup) {\n      this.setState({\n        showHyperlinkPopup: false\n      });\n    }\n\n    if (prevProps.langCode !== this.props.langCode) {\n      this.updateLanguage();\n    }\n\n    if (prevProps.viewModeEnabled !== this.props.viewModeEnabled) {\n      this.setState({\n        viewModeEnabled: !!this.props.viewModeEnabled\n      });\n    }\n\n    if (prevState.viewModeEnabled !== this.state.viewModeEnabled) {\n      this.addEventListeners();\n      this.deselectElements();\n    }\n\n    if (prevProps.zenModeEnabled !== this.props.zenModeEnabled) {\n      this.setState({\n        zenModeEnabled: !!this.props.zenModeEnabled\n      });\n    }\n\n    if (prevProps.theme !== this.props.theme && this.props.theme) {\n      this.setState({\n        theme: this.props.theme\n      });\n    }\n\n    if (prevProps.gridModeEnabled !== this.props.gridModeEnabled) {\n      this.setState({\n        gridSize: this.props.gridModeEnabled ? _constants__WEBPACK_IMPORTED_MODULE_12__.GRID_SIZE : null\n      });\n    }\n\n    if (this.props.name && prevProps.name !== this.props.name) {\n      this.setState({\n        name: this.props.name\n      });\n    }\n\n    (_c = this.excalidrawContainerRef.current) === null || _c === void 0 ? void 0 : _c.classList.toggle("theme--dark", this.state.theme === "dark");\n\n    if (this.state.editingLinearElement && !this.state.selectedElementIds[this.state.editingLinearElement.elementId]) {\n      // defer so that the commitToHistory flag isn\'t reset via current update\n      setTimeout(() => {\n        // execute only if the condition still holds when the deferred callback\n        // executes (it can be scheduled multiple times depending on how\n        // many times the component renders)\n        this.state.editingLinearElement && this.actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_5__.actionFinalize);\n      });\n    } // failsafe in case the state is being updated in incorrect order resulting\n    // in the editingElement being now a deleted element\n\n\n    if ((_d = this.state.editingElement) === null || _d === void 0 ? void 0 : _d.isDeleted) {\n      this.setState({\n        editingElement: null\n      });\n    }\n\n    if (this.state.selectedLinearElement && !this.state.selectedElementIds[this.state.selectedLinearElement.elementId]) {\n      // To make sure `selectedLinearElement` is in sync with `selectedElementIds`, however this shouldn\'t be needed once\n      // we have a single API to update `selectedElementIds`\n      this.setState({\n        selectedLinearElement: null\n      });\n    }\n\n    const {\n      multiElement\n    } = prevState;\n\n    if (prevState.activeTool !== this.state.activeTool && multiElement != null && (0,_element_binding__WEBPACK_IMPORTED_MODULE_17__.isBindingEnabled)(this.state) && (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isBindingElement)(multiElement, false)) {\n      (0,_element_binding__WEBPACK_IMPORTED_MODULE_17__.maybeBindLinearElement)(multiElement, this.state, this.scene, (0,_utils__WEBPACK_IMPORTED_MODULE_33__.tupleToCoors)(_element_linearElementEditor__WEBPACK_IMPORTED_MODULE_18__.LinearElementEditor.getPointAtIndexGlobalCoordinates(multiElement, -1)));\n    }\n\n    this.history.record(this.state, this.scene.getElementsIncludingDeleted()); // Do not notify consumers if we\'re still loading the scene. Among other\n    // potential issues, this fixes a case where the tab isn\'t focused during\n    // init, which would trigger onChange with empty elements, which would then\n    // override whatever is in localStorage currently.\n\n    if (!this.state.isLoading) {\n      (_f = (_e = this.props).onChange) === null || _f === void 0 ? void 0 : _f.call(_e, this.scene.getElementsIncludingDeleted(), this.state, this.files);\n      this.onChangeEmitter.trigger(this.scene.getElementsIncludingDeleted(), this.state, this.files);\n    }\n  }\n\n  static resetTapTwice() {\n    didTapTwice = false;\n  } // TODO rewrite this to paste both text & images at the same time if\n  // pasted data contains both\n\n\n  addElementsFromMixedContentPaste(mixedContent, {\n    isPlainPaste,\n    sceneX,\n    sceneY\n  }) {\n    return __awaiter(this, void 0, void 0, function* () {\n      if (!isPlainPaste && mixedContent.some(node => node.type === "imageUrl") && this.isToolSupported("image")) {\n        const imageURLs = mixedContent.filter(node => node.type === "imageUrl").map(node => node.value);\n        const responses = yield Promise.all(imageURLs.map(url => __awaiter(this, void 0, void 0, function* () {\n          try {\n            return {\n              file: yield (0,_data_blob__WEBPACK_IMPORTED_MODULE_39__.ImageURLToFile)(url)\n            };\n          } catch (error) {\n            return {\n              errorMessage: error.message\n            };\n          }\n        })));\n        let y = sceneY;\n        let firstImageYOffsetDone = false;\n        const nextSelectedIds = {};\n\n        for (const response of responses) {\n          if (response.file) {\n            const imageElement = this.createImageElement({\n              sceneX,\n              sceneY: y\n            });\n            const initializedImageElement = yield this.insertImageElement(imageElement, response.file);\n\n            if (initializedImageElement) {\n              // vertically center first image in the batch\n              if (!firstImageYOffsetDone) {\n                firstImageYOffsetDone = true;\n                y -= initializedImageElement.height / 2;\n              } // hack to reset the `y` coord because we vertically center during\n              // insertImageElement\n\n\n              (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(initializedImageElement, {\n                y\n              }, false);\n              y = imageElement.y + imageElement.height + 25;\n              nextSelectedIds[imageElement.id] = true;\n            }\n          }\n        }\n\n        this.setState({\n          selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)(nextSelectedIds, this.state)\n        });\n        const error = responses.find(response => !!response.errorMessage);\n\n        if (error && error.errorMessage) {\n          this.setState({\n            errorMessage: error.errorMessage\n          });\n        }\n      } else {\n        const textNodes = mixedContent.filter(node => node.type === "text");\n\n        if (textNodes.length) {\n          this.addTextFromPaste(textNodes.map(node => node.value).join("\\n\\n"), isPlainPaste);\n        }\n      }\n    });\n  }\n\n  addTextFromPaste(text, isPlainPaste = false) {\n    const {\n      x,\n      y\n    } = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.viewportCoordsToSceneCoords)({\n      clientX: this.lastViewportPosition.x,\n      clientY: this.lastViewportPosition.y\n    }, this.state);\n    const textElementProps = {\n      x,\n      y,\n      strokeColor: this.state.currentItemStrokeColor,\n      backgroundColor: this.state.currentItemBackgroundColor,\n      fillStyle: this.state.currentItemFillStyle,\n      strokeWidth: this.state.currentItemStrokeWidth,\n      strokeStyle: this.state.currentItemStrokeStyle,\n      roundness: null,\n      roughness: this.state.currentItemRoughness,\n      opacity: this.state.currentItemOpacity,\n      text,\n      fontSize: this.state.currentItemFontSize,\n      fontFamily: this.state.currentItemFontFamily,\n      textAlign: this.state.currentItemTextAlign,\n      verticalAlign: _constants__WEBPACK_IMPORTED_MODULE_12__.DEFAULT_VERTICAL_ALIGN,\n      locked: false\n    };\n    const LINE_GAP = 10;\n    let currentY = y;\n    const lines = isPlainPaste ? [text] : text.split("\\n");\n    const textElements = lines.reduce((acc, line, idx) => {\n      var _a;\n\n      const text = line.trim();\n      const lineHeight = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_43__.getDefaultLineHeight)(textElementProps.fontFamily);\n\n      if (text.length) {\n        const topLayerFrame = this.getTopLayerFrameAtSceneCoords({\n          x,\n          y: currentY\n        });\n        const element = (0,_element__WEBPACK_IMPORTED_MODULE_16__.newTextElement)(Object.assign(Object.assign({}, textElementProps), {\n          x,\n          y: currentY,\n          text,\n          lineHeight,\n          frameId: topLayerFrame ? topLayerFrame.id : null\n        }));\n        acc.push(element);\n        currentY += element.height + LINE_GAP;\n      } else {\n        const prevLine = (_a = lines[idx - 1]) === null || _a === void 0 ? void 0 : _a.trim(); // add paragraph only if previous line was not empty, IOW don\'t add\n        // more than one empty line\n\n        if (prevLine) {\n          currentY += (0,_element_textElement__WEBPACK_IMPORTED_MODULE_43__.getLineHeightInPx)(textElementProps.fontSize, lineHeight) + LINE_GAP;\n        }\n      }\n\n      return acc;\n    }, []);\n\n    if (textElements.length === 0) {\n      return;\n    }\n\n    const frameId = textElements[0].frameId;\n\n    if (frameId) {\n      this.scene.insertElementsAtIndex(textElements, this.scene.getElementIndex(frameId));\n    } else {\n      this.scene.replaceAllElements([...this.scene.getElementsIncludingDeleted(), ...textElements]);\n    }\n\n    this.setState({\n      selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)(Object.fromEntries(textElements.map(el => [el.id, true])), this.state)\n    });\n\n    if (!isPlainPaste && textElements.length > 1 && PLAIN_PASTE_TOAST_SHOWN === false && !this.device.editor.isMobile) {\n      this.setToast({\n        message: (0,_i18n__WEBPACK_IMPORTED_MODULE_25__.t)("toast.pasteAsSingleElement", {\n          shortcut: (0,_utils__WEBPACK_IMPORTED_MODULE_33__.getShortcutKey)("CtrlOrCmd+Shift+V")\n        }),\n        duration: 5000\n      });\n      PLAIN_PASTE_TOAST_SHOWN = true;\n    }\n\n    this.history.resumeRecording();\n  }\n\n  handleTextWysiwyg(element, {\n    isExistingElement = false\n  }) {\n    const updateElement = (text, originalText, isDeleted) => {\n      this.scene.replaceAllElements([...this.scene.getElementsIncludingDeleted().map(_element => {\n        if (_element.id === element.id && (0,_element__WEBPACK_IMPORTED_MODULE_16__.isTextElement)(_element)) {\n          return (0,_element__WEBPACK_IMPORTED_MODULE_16__.updateTextElement)(_element, {\n            text,\n            isDeleted,\n            originalText\n          });\n        }\n\n        return _element;\n      })]);\n    };\n\n    (0,_element__WEBPACK_IMPORTED_MODULE_16__.textWysiwyg)({\n      id: element.id,\n      canvas: this.canvas,\n      getViewportCoords: (x, y) => {\n        const {\n          x: viewportX,\n          y: viewportY\n        } = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.sceneCoordsToViewportCoords)({\n          sceneX: x,\n          sceneY: y\n        }, this.state);\n        return [viewportX - this.state.offsetLeft, viewportY - this.state.offsetTop];\n      },\n      onChange: (0,_utils__WEBPACK_IMPORTED_MODULE_33__.withBatchedUpdates)(text => {\n        updateElement(text, text, false);\n\n        if ((0,_element__WEBPACK_IMPORTED_MODULE_16__.isNonDeletedElement)(element)) {\n          (0,_element_binding__WEBPACK_IMPORTED_MODULE_17__.updateBoundElements)(element);\n        }\n      }),\n      onSubmit: (0,_utils__WEBPACK_IMPORTED_MODULE_33__.withBatchedUpdates)(({\n        text,\n        viaKeyboard,\n        originalText\n      }) => {\n        const isDeleted = !text.trim();\n        updateElement(text, originalText, isDeleted); // select the created text element only if submitting via keyboard\n        // (when submitting via click it should act as signal to deselect)\n\n        if (!isDeleted && viaKeyboard) {\n          const elementIdToSelect = element.containerId ? element.containerId : element.id;\n          this.setState(prevState => ({\n            selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)(Object.assign(Object.assign({}, prevState.selectedElementIds), {\n              [elementIdToSelect]: true\n            }), prevState)\n          }));\n        }\n\n        if (isDeleted) {\n          (0,_element_binding__WEBPACK_IMPORTED_MODULE_17__.fixBindingsAfterDeletion)(this.scene.getNonDeletedElements(), [element]);\n        }\n\n        if (!isDeleted || isExistingElement) {\n          this.history.resumeRecording();\n        }\n\n        this.setState({\n          draggingElement: null,\n          editingElement: null\n        });\n\n        if (this.state.activeTool.locked) {\n          (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursorForShape)(this.interactiveCanvas, this.state);\n        }\n\n        this.focusContainer();\n      }),\n      element,\n      excalidrawContainer: this.excalidrawContainerRef.current,\n      app: this\n    }); // deselect all other elements when inserting text\n\n    this.deselectElements(); // do an initial update to re-initialize element position since we were\n    // modifying element\'s x/y for sake of editor (case: syncing to remote)\n\n    updateElement(element.text, element.originalText, false);\n  }\n\n  deselectElements() {\n    this.setState({\n      selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)({}, this.state),\n      selectedGroupIds: {},\n      editingGroupId: null,\n      activeEmbeddable: null\n    });\n  }\n\n  getTextElementAtPosition(x, y) {\n    const element = this.getElementAtPosition(x, y, {\n      includeBoundTextElement: true\n    });\n\n    if (element && (0,_element__WEBPACK_IMPORTED_MODULE_16__.isTextElement)(element) && !element.isDeleted) {\n      return element;\n    }\n\n    return null;\n  }\n\n  getElementAtPosition(x, y, opts) {\n    const allHitElements = this.getElementsAtPosition(x, y, opts === null || opts === void 0 ? void 0 : opts.includeBoundTextElement, opts === null || opts === void 0 ? void 0 : opts.includeLockedElements);\n\n    if (allHitElements.length > 1) {\n      if (opts === null || opts === void 0 ? void 0 : opts.preferSelected) {\n        for (let index = allHitElements.length - 1; index > -1; index--) {\n          if (this.state.selectedElementIds[allHitElements[index].id]) {\n            return allHitElements[index];\n          }\n        }\n      }\n\n      const elementWithHighestZIndex = allHitElements[allHitElements.length - 1]; // If we\'re hitting element with highest z-index only on its bounding box\n      // while also hitting other element figure, the latter should be considered.\n\n      return (0,_element__WEBPACK_IMPORTED_MODULE_16__.isHittingElementBoundingBoxWithoutHittingElement)(elementWithHighestZIndex, this.state, this.frameNameBoundsCache, x, y) ? allHitElements[allHitElements.length - 2] : elementWithHighestZIndex;\n    }\n\n    if (allHitElements.length === 1) {\n      return allHitElements[0];\n    }\n\n    return null;\n  }\n\n  getElementsAtPosition(x, y, includeBoundTextElement = false, includeLockedElements = false) {\n    const elements = includeBoundTextElement && includeLockedElements ? this.scene.getNonDeletedElements() : this.scene.getNonDeletedElements().filter(element => (includeLockedElements || !element.locked) && (includeBoundTextElement || !((0,_element__WEBPACK_IMPORTED_MODULE_16__.isTextElement)(element) && element.containerId)));\n    return (0,_scene__WEBPACK_IMPORTED_MODULE_29__.getElementsAtPosition)(elements, element => (0,_element__WEBPACK_IMPORTED_MODULE_16__.hitTest)(element, this.state, this.frameNameBoundsCache, x, y)).filter(element => {\n      // hitting a frame\'s element from outside the frame is not considered a hit\n      const containingFrame = (0,_frame__WEBPACK_IMPORTED_MODULE_50__.getContainingFrame)(element);\n      return containingFrame && this.state.frameRendering.enabled && this.state.frameRendering.clip ? (0,_frame__WEBPACK_IMPORTED_MODULE_50__.isCursorInFrame)({\n        x,\n        y\n      }, containingFrame) : true;\n    });\n  }\n\n  handleHoverSelectedLinearElement(linearElementEditor, scenePointerX, scenePointerY) {\n    const element = _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_18__.LinearElementEditor.getElement(linearElementEditor.elementId);\n    const boundTextElement = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_43__.getBoundTextElement)(element);\n\n    if (!element) {\n      return;\n    }\n\n    if (this.state.selectedLinearElement) {\n      let hoverPointIndex = -1;\n      let segmentMidPointHoveredCoords = null;\n\n      if ((0,_element_collision__WEBPACK_IMPORTED_MODULE_44__.isHittingElementNotConsideringBoundingBox)(element, this.state, this.frameNameBoundsCache, [scenePointerX, scenePointerY])) {\n        hoverPointIndex = _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_18__.LinearElementEditor.getPointIndexUnderCursor(element, this.state.zoom, scenePointerX, scenePointerY);\n        segmentMidPointHoveredCoords = _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_18__.LinearElementEditor.getSegmentMidpointHitCoords(linearElementEditor, {\n          x: scenePointerX,\n          y: scenePointerY\n        }, this.state);\n\n        if (hoverPointIndex >= 0 || segmentMidPointHoveredCoords) {\n          (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursor)(this.interactiveCanvas, _constants__WEBPACK_IMPORTED_MODULE_12__.CURSOR_TYPE.POINTER);\n        } else {\n          (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursor)(this.interactiveCanvas, _constants__WEBPACK_IMPORTED_MODULE_12__.CURSOR_TYPE.MOVE);\n        }\n      } else if ((0,_element_transformHandles__WEBPACK_IMPORTED_MODULE_47__.shouldShowBoundingBox)([element], this.state) && (0,_element__WEBPACK_IMPORTED_MODULE_16__.isHittingElementBoundingBoxWithoutHittingElement)(element, this.state, this.frameNameBoundsCache, scenePointerX, scenePointerY)) {\n        (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursor)(this.interactiveCanvas, _constants__WEBPACK_IMPORTED_MODULE_12__.CURSOR_TYPE.MOVE);\n      } else if (boundTextElement && (0,_element__WEBPACK_IMPORTED_MODULE_16__.hitTest)(boundTextElement, this.state, this.frameNameBoundsCache, scenePointerX, scenePointerY)) {\n        (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursor)(this.interactiveCanvas, _constants__WEBPACK_IMPORTED_MODULE_12__.CURSOR_TYPE.MOVE);\n      }\n\n      if (this.state.selectedLinearElement.hoverPointIndex !== hoverPointIndex) {\n        this.setState({\n          selectedLinearElement: Object.assign(Object.assign({}, this.state.selectedLinearElement), {\n            hoverPointIndex\n          })\n        });\n      }\n\n      if (!_element_linearElementEditor__WEBPACK_IMPORTED_MODULE_18__.LinearElementEditor.arePointsEqual(this.state.selectedLinearElement.segmentMidPointHoveredCoords, segmentMidPointHoveredCoords)) {\n        this.setState({\n          selectedLinearElement: Object.assign(Object.assign({}, this.state.selectedLinearElement), {\n            segmentMidPointHoveredCoords\n          })\n        });\n      }\n    } else {\n      (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursor)(this.interactiveCanvas, _constants__WEBPACK_IMPORTED_MODULE_12__.CURSOR_TYPE.AUTO);\n    }\n  }\n\n  maybeCleanupAfterMissingPointerUp(event) {\n    if (lastPointerUp !== null) {\n      // Unfortunately, sometimes we don\'t get a pointerup after a pointerdown,\n      // this can happen when a contextual menu or alert is triggered. In order to avoid\n      // being in a weird state, we clean up on the next pointerdown\n      lastPointerUp(event);\n    }\n  }\n\n  updateGestureOnPointerDown(event) {\n    gesture.pointers.set(event.pointerId, {\n      x: event.clientX,\n      y: event.clientY\n    });\n\n    if (gesture.pointers.size === 2) {\n      gesture.lastCenter = (0,_gesture__WEBPACK_IMPORTED_MODULE_22__.getCenter)(gesture.pointers);\n      gesture.initialScale = this.state.zoom.value;\n      gesture.initialDistance = (0,_gesture__WEBPACK_IMPORTED_MODULE_22__.getDistance)(Array.from(gesture.pointers.values()));\n    }\n  }\n\n  initialPointerDownState(event) {\n    const origin = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.viewportCoordsToSceneCoords)(event, this.state);\n    const selectedElements = this.scene.getSelectedElements(this.state);\n    const [minX, minY, maxX, maxY] = (0,_element__WEBPACK_IMPORTED_MODULE_16__.getCommonBounds)(selectedElements);\n    return {\n      origin,\n      withCmdOrCtrl: event[_keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.CTRL_OR_CMD],\n      originInGrid: (0,_utils__WEBPACK_IMPORTED_MODULE_33__.tupleToCoors)((0,_math__WEBPACK_IMPORTED_MODULE_28__.getGridPoint)(origin.x, origin.y, event[_keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.CTRL_OR_CMD] ? null : this.state.gridSize)),\n      scrollbars: (0,_scene__WEBPACK_IMPORTED_MODULE_29__.isOverScrollBars)(currentScrollBars, event.clientX - this.state.offsetLeft, event.clientY - this.state.offsetTop),\n      // we need to duplicate because we\'ll be updating this state\n      lastCoords: Object.assign({}, origin),\n      originalElements: this.scene.getNonDeletedElements().reduce((acc, element) => {\n        acc.set(element.id, (0,_element_newElement__WEBPACK_IMPORTED_MODULE_20__.deepCopyElement)(element));\n        return acc;\n      }, new Map()),\n      resize: {\n        handleType: false,\n        isResizing: false,\n        offset: {\n          x: 0,\n          y: 0\n        },\n        arrowDirection: "origin",\n        center: {\n          x: (maxX + minX) / 2,\n          y: (maxY + minY) / 2\n        }\n      },\n      hit: {\n        element: null,\n        allHitElements: [],\n        wasAddedToSelection: false,\n        hasBeenDuplicated: false,\n        hasHitCommonBoundingBoxOfSelectedElements: this.isHittingCommonBoundingBoxOfSelectedElements(origin, selectedElements)\n      },\n      drag: {\n        hasOccurred: false,\n        offset: null\n      },\n      eventListeners: {\n        onMove: null,\n        onUp: null,\n        onKeyUp: null,\n        onKeyDown: null\n      },\n      boxSelection: {\n        hasOccurred: false\n      },\n      elementIdsToErase: {}\n    };\n  } // Returns whether the event is a dragging a scrollbar\n\n\n  handleDraggingScrollBar(event, pointerDownState) {\n    if (!(pointerDownState.scrollbars.isOverEither && !this.state.multiElement)) {\n      return false;\n    }\n\n    isDraggingScrollBar = true;\n    pointerDownState.lastCoords.x = event.clientX;\n    pointerDownState.lastCoords.y = event.clientY;\n    const onPointerMove = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.withBatchedUpdatesThrottled)(event => {\n      const target = event.target;\n\n      if (!(target instanceof HTMLElement)) {\n        return;\n      }\n\n      this.handlePointerMoveOverScrollbars(event, pointerDownState);\n    });\n    const onPointerUp = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.withBatchedUpdates)(() => {\n      isDraggingScrollBar = false;\n      (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.setCursorForShape)(this.interactiveCanvas, this.state);\n      lastPointerUp = null;\n      this.setState({\n        cursorButton: "up"\n      });\n      this.savePointer(event.clientX, event.clientY, "up");\n      window.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.POINTER_MOVE, onPointerMove);\n      window.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.POINTER_UP, onPointerUp);\n      onPointerMove.flush();\n    });\n    lastPointerUp = onPointerUp;\n    window.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.POINTER_MOVE, onPointerMove);\n    window.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.POINTER_UP, onPointerUp);\n    return true;\n  }\n\n  isASelectedElement(hitElement) {\n    return hitElement != null && this.state.selectedElementIds[hitElement.id];\n  }\n\n  isHittingCommonBoundingBoxOfSelectedElements(point, selectedElements) {\n    if (selectedElements.length < 2) {\n      return false;\n    } // How many pixels off the shape boundary we still consider a hit\n\n\n    const threshold = 10 / this.state.zoom.value;\n    const [x1, y1, x2, y2] = (0,_element__WEBPACK_IMPORTED_MODULE_16__.getCommonBounds)(selectedElements);\n    return point.x > x1 - threshold && point.x < x2 + threshold && point.y > y1 - threshold && point.y < y2 + threshold;\n  }\n\n  getCurrentItemRoundness(elementType) {\n    return this.state.currentItemRoundness === "round" ? {\n      type: (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isUsingAdaptiveRadius)(elementType) ? _constants__WEBPACK_IMPORTED_MODULE_12__.ROUNDNESS.ADAPTIVE_RADIUS : _constants__WEBPACK_IMPORTED_MODULE_12__.ROUNDNESS.PROPORTIONAL_RADIUS\n    } : null;\n  }\n\n  maybeCacheReferenceSnapPoints(event, selectedElements, recomputeAnyways = false) {\n    if ((0,_snapping__WEBPACK_IMPORTED_MODULE_58__.isSnappingEnabled)({\n      event,\n      appState: this.state,\n      selectedElements\n    }) && (recomputeAnyways || !_snapping__WEBPACK_IMPORTED_MODULE_58__.SnapCache.getReferenceSnapPoints())) {\n      _snapping__WEBPACK_IMPORTED_MODULE_58__.SnapCache.setReferenceSnapPoints((0,_snapping__WEBPACK_IMPORTED_MODULE_58__.getReferenceSnapPoints)(this.scene.getNonDeletedElements(), selectedElements, this.state));\n    }\n  }\n\n  maybeCacheVisibleGaps(event, selectedElements, recomputeAnyways = false) {\n    if ((0,_snapping__WEBPACK_IMPORTED_MODULE_58__.isSnappingEnabled)({\n      event,\n      appState: this.state,\n      selectedElements\n    }) && (recomputeAnyways || !_snapping__WEBPACK_IMPORTED_MODULE_58__.SnapCache.getVisibleGaps())) {\n      _snapping__WEBPACK_IMPORTED_MODULE_58__.SnapCache.setVisibleGaps((0,_snapping__WEBPACK_IMPORTED_MODULE_58__.getVisibleGaps)(this.scene.getNonDeletedElements(), selectedElements, this.state));\n    }\n  }\n\n  onKeyDownFromPointerDownHandler(pointerDownState) {\n    return (0,_utils__WEBPACK_IMPORTED_MODULE_33__.withBatchedUpdates)(event => {\n      if (this.maybeHandleResize(pointerDownState, event)) {\n        return;\n      }\n\n      this.maybeDragNewGenericElement(pointerDownState, event);\n    });\n  }\n\n  onKeyUpFromPointerDownHandler(pointerDownState) {\n    return (0,_utils__WEBPACK_IMPORTED_MODULE_33__.withBatchedUpdates)(event => {\n      // Prevents focus from escaping excalidraw tab\n      event.key === _keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.ALT && event.preventDefault();\n\n      if (this.maybeHandleResize(pointerDownState, event)) {\n        return;\n      }\n\n      this.maybeDragNewGenericElement(pointerDownState, event);\n    });\n  }\n\n  onPointerMoveFromPointerDownHandler(pointerDownState) {\n    return (0,_utils__WEBPACK_IMPORTED_MODULE_33__.withBatchedUpdatesThrottled)(event => {\n      var _a, _b; // We need to initialize dragOffsetXY only after we\'ve updated\n      // `state.selectedElementIds` on pointerDown. Doing it here in pointerMove\n      // event handler should hopefully ensure we\'re already working with\n      // the updated state.\n\n\n      if (pointerDownState.drag.offset === null) {\n        pointerDownState.drag.offset = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.tupleToCoors)((0,_element__WEBPACK_IMPORTED_MODULE_16__.getDragOffsetXY)(this.scene.getSelectedElements(this.state), pointerDownState.origin.x, pointerDownState.origin.y));\n      }\n\n      const target = event.target;\n\n      if (!(target instanceof HTMLElement)) {\n        return;\n      }\n\n      if (this.handlePointerMoveOverScrollbars(event, pointerDownState)) {\n        return;\n      }\n\n      const pointerCoords = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.viewportCoordsToSceneCoords)(event, this.state);\n\n      if ((0,_appState__WEBPACK_IMPORTED_MODULE_10__.isEraserActive)(this.state)) {\n        this.handleEraser(event, pointerDownState, pointerCoords);\n        return;\n      }\n\n      if (this.state.activeTool.type === "laser") {\n        this.laserPathManager.addPointToPath(pointerCoords.x, pointerCoords.y);\n      }\n\n      const [gridX, gridY] = (0,_math__WEBPACK_IMPORTED_MODULE_28__.getGridPoint)(pointerCoords.x, pointerCoords.y, event[_keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.CTRL_OR_CMD] ? null : this.state.gridSize); // for arrows/lines, don\'t start dragging until a given threshold\n      // to ensure we don\'t create a 2-point arrow by mistake when\n      // user clicks mouse in a way that it moves a tiny bit (thus\n      // triggering pointermove)\n\n      if (!pointerDownState.drag.hasOccurred && (this.state.activeTool.type === "arrow" || this.state.activeTool.type === "line")) {\n        if ((0,_math__WEBPACK_IMPORTED_MODULE_28__.distance2d)(pointerCoords.x, pointerCoords.y, pointerDownState.origin.x, pointerDownState.origin.y) < _constants__WEBPACK_IMPORTED_MODULE_12__.DRAGGING_THRESHOLD) {\n          return;\n        }\n      }\n\n      if (pointerDownState.resize.isResizing) {\n        pointerDownState.lastCoords.x = pointerCoords.x;\n        pointerDownState.lastCoords.y = pointerCoords.y;\n\n        if (this.maybeHandleResize(pointerDownState, event)) {\n          return true;\n        }\n      }\n\n      if (this.state.selectedLinearElement) {\n        const linearElementEditor = this.state.editingLinearElement || this.state.selectedLinearElement;\n\n        if (_element_linearElementEditor__WEBPACK_IMPORTED_MODULE_18__.LinearElementEditor.shouldAddMidpoint(this.state.selectedLinearElement, pointerCoords, this.state)) {\n          const ret = _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_18__.LinearElementEditor.addMidpoint(this.state.selectedLinearElement, pointerCoords, this.state, !event[_keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.CTRL_OR_CMD]);\n\n          if (!ret) {\n            return;\n          } // Since we are reading from previous state which is not possible with\n          // automatic batching in React 18 hence using flush sync to synchronously\n          // update the state. Check https://github.com/excalidraw/excalidraw/pull/5508 for more details.\n\n\n          (0,react_dom__WEBPACK_IMPORTED_MODULE_2__.flushSync)(() => {\n            if (this.state.selectedLinearElement) {\n              this.setState({\n                selectedLinearElement: Object.assign(Object.assign({}, this.state.selectedLinearElement), {\n                  pointerDownState: ret.pointerDownState,\n                  selectedPointsIndices: ret.selectedPointsIndices\n                })\n              });\n            }\n\n            if (this.state.editingLinearElement) {\n              this.setState({\n                editingLinearElement: Object.assign(Object.assign({}, this.state.editingLinearElement), {\n                  pointerDownState: ret.pointerDownState,\n                  selectedPointsIndices: ret.selectedPointsIndices\n                })\n              });\n            }\n          });\n          return;\n        } else if (linearElementEditor.pointerDownState.segmentMidpoint.value !== null && !linearElementEditor.pointerDownState.segmentMidpoint.added) {\n          return;\n        }\n\n        const didDrag = _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_18__.LinearElementEditor.handlePointDragging(event, this.state, pointerCoords.x, pointerCoords.y, (element, pointsSceneCoords) => {\n          this.maybeSuggestBindingsForLinearElementAtCoords(element, pointsSceneCoords);\n        }, linearElementEditor);\n\n        if (didDrag) {\n          pointerDownState.lastCoords.x = pointerCoords.x;\n          pointerDownState.lastCoords.y = pointerCoords.y;\n          pointerDownState.drag.hasOccurred = true;\n\n          if (this.state.editingLinearElement && !this.state.editingLinearElement.isDragging) {\n            this.setState({\n              editingLinearElement: Object.assign(Object.assign({}, this.state.editingLinearElement), {\n                isDragging: true\n              })\n            });\n          }\n\n          if (!this.state.selectedLinearElement.isDragging) {\n            this.setState({\n              selectedLinearElement: Object.assign(Object.assign({}, this.state.selectedLinearElement), {\n                isDragging: true\n              })\n            });\n          }\n\n          return;\n        }\n      }\n\n      const hasHitASelectedElement = pointerDownState.hit.allHitElements.some(element => this.isASelectedElement(element));\n      const isSelectingPointsInLineEditor = this.state.editingLinearElement && event.shiftKey && this.state.editingLinearElement.elementId === ((_a = pointerDownState.hit.element) === null || _a === void 0 ? void 0 : _a.id);\n\n      if ((hasHitASelectedElement || pointerDownState.hit.hasHitCommonBoundingBoxOfSelectedElements) && !isSelectingPointsInLineEditor) {\n        const selectedElements = this.scene.getSelectedElements(this.state);\n\n        if (selectedElements.every(element => element.locked)) {\n          return;\n        }\n\n        const selectedElementsHasAFrame = selectedElements.find(e => (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isFrameElement)(e));\n        const topLayerFrame = this.getTopLayerFrameAtSceneCoords(pointerCoords);\n        this.setState({\n          frameToHighlight: topLayerFrame && !selectedElementsHasAFrame ? topLayerFrame : null\n        }); // Marking that click was used for dragging to check\n        // if elements should be deselected on pointerup\n\n        pointerDownState.drag.hasOccurred = true;\n        this.setState({\n          selectedElementsAreBeingDragged: true\n        }); // prevent dragging even if we\'re no longer holding cmd/ctrl otherwise\n        // it would have weird results (stuff jumping all over the screen)\n        // Checking for editingElement to avoid jump while editing on mobile #6503\n\n        if (selectedElements.length > 0 && !pointerDownState.withCmdOrCtrl && !this.state.editingElement && ((_b = this.state.activeEmbeddable) === null || _b === void 0 ? void 0 : _b.state) !== "active") {\n          const dragOffset = {\n            x: pointerCoords.x - pointerDownState.origin.x,\n            y: pointerCoords.y - pointerDownState.origin.y\n          };\n          const originalElements = [...pointerDownState.originalElements.values()]; // We only drag in one direction if shift is pressed\n\n          const lockDirection = event.shiftKey;\n\n          if (lockDirection) {\n            const distanceX = Math.abs(dragOffset.x);\n            const distanceY = Math.abs(dragOffset.y);\n            const lockX = lockDirection && distanceX < distanceY;\n            const lockY = lockDirection && distanceX > distanceY;\n\n            if (lockX) {\n              dragOffset.x = 0;\n            }\n\n            if (lockY) {\n              dragOffset.y = 0;\n            }\n          } // Snap cache *must* be synchronously popuplated before initial drag,\n          // otherwise the first drag even will not snap, causing a jump before\n          // it snaps to its position if previously snapped already.\n\n\n          this.maybeCacheVisibleGaps(event, selectedElements);\n          this.maybeCacheReferenceSnapPoints(event, selectedElements);\n          const {\n            snapOffset,\n            snapLines\n          } = (0,_snapping__WEBPACK_IMPORTED_MODULE_58__.snapDraggedElements)((0,_scene__WEBPACK_IMPORTED_MODULE_29__.getSelectedElements)(originalElements, this.state), dragOffset, this.state, event);\n          this.setState({\n            snapLines\n          }); // when we\'re editing the name of a frame, we want the user to be\n          // able to select and interact with the text input\n\n          !this.state.editingFrame && (0,_element__WEBPACK_IMPORTED_MODULE_16__.dragSelectedElements)(pointerDownState, selectedElements, dragOffset, this.state, this.scene, snapOffset, event[_keys__WEBPACK_IMPORTED_MODULE_26__.KEYS.CTRL_OR_CMD] ? null : this.state.gridSize);\n          this.maybeSuggestBindingForAll(selectedElements); // We duplicate the selected element if alt is pressed on pointer move\n\n          if (event.altKey && !pointerDownState.hit.hasBeenDuplicated) {\n            // Move the currently selected elements to the top of the z index stack, and\n            // put the duplicates where the selected elements used to be.\n            // (the origin point where the dragging started)\n            pointerDownState.hit.hasBeenDuplicated = true;\n            const nextElements = [];\n            const elementsToAppend = [];\n            const groupIdMap = new Map();\n            const oldIdToDuplicatedId = new Map();\n            const hitElement = pointerDownState.hit.element;\n            const selectedElementIds = new Set(this.scene.getSelectedElements({\n              selectedElementIds: this.state.selectedElementIds,\n              includeBoundTextElement: true,\n              includeElementsInFrames: true\n            }).map(element => element.id));\n            const elements = this.scene.getElementsIncludingDeleted();\n\n            for (const element of elements) {\n              if (selectedElementIds.has(element.id) || // case: the state.selectedElementIds might not have been\n              // updated yet by the time this mousemove event is fired\n              element.id === (hitElement === null || hitElement === void 0 ? void 0 : hitElement.id) && pointerDownState.hit.wasAddedToSelection) {\n                const duplicatedElement = (0,_element__WEBPACK_IMPORTED_MODULE_16__.duplicateElement)(this.state.editingGroupId, groupIdMap, element);\n                const origElement = pointerDownState.originalElements.get(element.id);\n                (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(duplicatedElement, {\n                  x: origElement.x,\n                  y: origElement.y\n                }); // put duplicated element to pointerDownState.originalElements\n                // so that we can snap to the duplicated element without releasing\n\n                pointerDownState.originalElements.set(duplicatedElement.id, duplicatedElement);\n                nextElements.push(duplicatedElement);\n                elementsToAppend.push(element);\n                oldIdToDuplicatedId.set(element.id, duplicatedElement.id);\n              } else {\n                nextElements.push(element);\n              }\n            }\n\n            const nextSceneElements = [...nextElements, ...elementsToAppend];\n            (0,_element_textElement__WEBPACK_IMPORTED_MODULE_43__.bindTextToShapeAfterDuplication)(nextElements, elementsToAppend, oldIdToDuplicatedId);\n            (0,_element_binding__WEBPACK_IMPORTED_MODULE_17__.fixBindingsAfterDuplication)(nextSceneElements, elementsToAppend, oldIdToDuplicatedId, "duplicatesServeAsOld");\n            (0,_frame__WEBPACK_IMPORTED_MODULE_50__.bindElementsToFramesAfterDuplication)(nextSceneElements, elementsToAppend, oldIdToDuplicatedId);\n            this.scene.replaceAllElements(nextSceneElements);\n            this.maybeCacheVisibleGaps(event, selectedElements, true);\n            this.maybeCacheReferenceSnapPoints(event, selectedElements, true);\n          }\n\n          return;\n        }\n      } // It is very important to read this.state within each move event,\n      // otherwise we would read a stale one!\n\n\n      const draggingElement = this.state.draggingElement;\n\n      if (!draggingElement) {\n        return;\n      }\n\n      if (draggingElement.type === "freedraw") {\n        const points = draggingElement.points;\n        const dx = pointerCoords.x - draggingElement.x;\n        const dy = pointerCoords.y - draggingElement.y;\n        const lastPoint = points.length > 0 && points[points.length - 1];\n        const discardPoint = lastPoint && lastPoint[0] === dx && lastPoint[1] === dy;\n\n        if (!discardPoint) {\n          const pressures = draggingElement.simulatePressure ? draggingElement.pressures : [...draggingElement.pressures, event.pressure];\n          (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(draggingElement, {\n            points: [...points, [dx, dy]],\n            pressures\n          });\n        }\n      } else if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isLinearElement)(draggingElement)) {\n        pointerDownState.drag.hasOccurred = true;\n        this.setState({\n          selectedElementsAreBeingDragged: true\n        });\n        const points = draggingElement.points;\n        let dx = gridX - draggingElement.x;\n        let dy = gridY - draggingElement.y;\n\n        if ((0,_keys__WEBPACK_IMPORTED_MODULE_26__.shouldRotateWithDiscreteAngle)(event) && points.length === 2) {\n          ({\n            width: dx,\n            height: dy\n          } = (0,_element__WEBPACK_IMPORTED_MODULE_16__.getLockedLinearCursorAlignSize)(draggingElement.x, draggingElement.y, pointerCoords.x, pointerCoords.y));\n        }\n\n        if (points.length === 1) {\n          (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(draggingElement, {\n            points: [...points, [dx, dy]]\n          });\n        } else if (points.length === 2) {\n          (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(draggingElement, {\n            points: [...points.slice(0, -1), [dx, dy]]\n          });\n        }\n\n        if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isBindingElement)(draggingElement, false)) {\n          // When creating a linear element by dragging\n          this.maybeSuggestBindingsForLinearElementAtCoords(draggingElement, [pointerCoords], this.state.startBoundElement);\n        }\n      } else {\n        pointerDownState.lastCoords.x = pointerCoords.x;\n        pointerDownState.lastCoords.y = pointerCoords.y;\n        this.maybeDragNewGenericElement(pointerDownState, event);\n      }\n\n      if (this.state.activeTool.type === "selection") {\n        pointerDownState.boxSelection.hasOccurred = true;\n        const elements = this.scene.getNonDeletedElements(); // box-select line editor points\n\n        if (this.state.editingLinearElement) {\n          _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_18__.LinearElementEditor.handleBoxSelection(event, this.state, this.setState.bind(this)); // regular box-select\n        } else {\n          let shouldReuseSelection = true;\n\n          if (!event.shiftKey && (0,_scene__WEBPACK_IMPORTED_MODULE_29__.isSomeElementSelected)(elements, this.state)) {\n            if (pointerDownState.withCmdOrCtrl && pointerDownState.hit.element) {\n              this.setState(prevState => (0,_groups__WEBPACK_IMPORTED_MODULE_23__.selectGroupsForSelectedElements)(Object.assign(Object.assign({}, prevState), {\n                selectedElementIds: {\n                  [pointerDownState.hit.element.id]: true\n                }\n              }), this.scene.getNonDeletedElements(), prevState, this));\n            } else {\n              shouldReuseSelection = false;\n            }\n          }\n\n          const elementsWithinSelection = (0,_scene__WEBPACK_IMPORTED_MODULE_29__.getElementsWithinSelection)(elements, draggingElement);\n          this.setState(prevState => {\n            const nextSelectedElementIds = Object.assign(Object.assign({}, shouldReuseSelection && prevState.selectedElementIds), elementsWithinSelection.reduce((acc, element) => {\n              acc[element.id] = true;\n              return acc;\n            }, {}));\n\n            if (pointerDownState.hit.element) {\n              // if using ctrl/cmd, select the hitElement only if we\n              // haven\'t box-selected anything else\n              if (!elementsWithinSelection.length) {\n                nextSelectedElementIds[pointerDownState.hit.element.id] = true;\n              } else {\n                delete nextSelectedElementIds[pointerDownState.hit.element.id];\n              }\n            }\n\n            prevState = !shouldReuseSelection ? Object.assign(Object.assign({}, prevState), {\n              selectedGroupIds: {},\n              editingGroupId: null\n            }) : prevState;\n            return Object.assign(Object.assign({}, (0,_groups__WEBPACK_IMPORTED_MODULE_23__.selectGroupsForSelectedElements)({\n              editingGroupId: prevState.editingGroupId,\n              selectedElementIds: nextSelectedElementIds\n            }, this.scene.getNonDeletedElements(), prevState, this)), {\n              // select linear element only when we haven\'t box-selected anything else\n              selectedLinearElement: elementsWithinSelection.length === 1 && (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isLinearElement)(elementsWithinSelection[0]) ? new _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_18__.LinearElementEditor(elementsWithinSelection[0], this.scene) : null,\n              showHyperlinkPopup: elementsWithinSelection.length === 1 && (elementsWithinSelection[0].link || (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isEmbeddableElement)(elementsWithinSelection[0])) ? "info" : false\n            });\n          });\n        }\n      }\n    });\n  } // Returns whether the pointer move happened over either scrollbar\n\n\n  handlePointerMoveOverScrollbars(event, pointerDownState) {\n    if (pointerDownState.scrollbars.isOverHorizontal) {\n      const x = event.clientX;\n      const dx = x - pointerDownState.lastCoords.x;\n      this.translateCanvas({\n        scrollX: this.state.scrollX - dx / this.state.zoom.value\n      });\n      pointerDownState.lastCoords.x = x;\n      return true;\n    }\n\n    if (pointerDownState.scrollbars.isOverVertical) {\n      const y = event.clientY;\n      const dy = y - pointerDownState.lastCoords.y;\n      this.translateCanvas({\n        scrollY: this.state.scrollY - dy / this.state.zoom.value\n      });\n      pointerDownState.lastCoords.y = y;\n      return true;\n    }\n\n    return false;\n  }\n\n  onPointerUpFromPointerDownHandler(pointerDownState) {\n    return (0,_utils__WEBPACK_IMPORTED_MODULE_33__.withBatchedUpdates)(childEvent => {\n      var _a, _b, _c, _d, _e, _f;\n\n      if (pointerDownState.eventListeners.onMove) {\n        pointerDownState.eventListeners.onMove.flush();\n      }\n\n      const {\n        draggingElement,\n        resizingElement,\n        multiElement,\n        activeTool,\n        isResizing,\n        isRotating\n      } = this.state;\n      this.setState({\n        isResizing: false,\n        isRotating: false,\n        resizingElement: null,\n        selectionElement: null,\n        frameToHighlight: null,\n        elementsToHighlight: null,\n        cursorButton: "up",\n        // text elements are reset on finalize, and resetting on pointerup\n        // may cause issues with double taps\n        editingElement: multiElement || (0,_element__WEBPACK_IMPORTED_MODULE_16__.isTextElement)(this.state.editingElement) ? this.state.editingElement : null,\n        snapLines: [],\n        originSnapOffset: null\n      });\n      _snapping__WEBPACK_IMPORTED_MODULE_58__.SnapCache.setReferenceSnapPoints(null);\n      _snapping__WEBPACK_IMPORTED_MODULE_58__.SnapCache.setVisibleGaps(null);\n      this.savePointer(childEvent.clientX, childEvent.clientY, "up");\n      this.setState({\n        selectedElementsAreBeingDragged: false\n      }); // Handle end of dragging a point of a linear element, might close a loop\n      // and sets binding element\n\n      if (this.state.editingLinearElement) {\n        if (!pointerDownState.boxSelection.hasOccurred && ((_b = (_a = pointerDownState.hit) === null || _a === void 0 ? void 0 : _a.element) === null || _b === void 0 ? void 0 : _b.id) !== this.state.editingLinearElement.elementId) {\n          this.actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_5__.actionFinalize);\n        } else {\n          const editingLinearElement = _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_18__.LinearElementEditor.handlePointerUp(childEvent, this.state.editingLinearElement, this.state);\n\n          if (editingLinearElement !== this.state.editingLinearElement) {\n            this.setState({\n              editingLinearElement,\n              suggestedBindings: []\n            });\n          }\n        }\n      } else if (this.state.selectedLinearElement) {\n        if (((_d = (_c = pointerDownState.hit) === null || _c === void 0 ? void 0 : _c.element) === null || _d === void 0 ? void 0 : _d.id) !== this.state.selectedLinearElement.elementId) {\n          const selectedELements = this.scene.getSelectedElements(this.state); // set selectedLinearElement to null if there is more than one element selected since we don\'t want to show linear element handles\n\n          if (selectedELements.length > 1) {\n            this.setState({\n              selectedLinearElement: null\n            });\n          }\n        } else {\n          const linearElementEditor = _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_18__.LinearElementEditor.handlePointerUp(childEvent, this.state.selectedLinearElement, this.state);\n          const {\n            startBindingElement,\n            endBindingElement\n          } = linearElementEditor;\n          const element = this.scene.getElement(linearElementEditor.elementId);\n\n          if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isBindingElement)(element)) {\n            (0,_element_binding__WEBPACK_IMPORTED_MODULE_17__.bindOrUnbindLinearElement)(element, startBindingElement, endBindingElement);\n          }\n\n          if (linearElementEditor !== this.state.selectedLinearElement) {\n            this.setState({\n              selectedLinearElement: Object.assign(Object.assign({}, linearElementEditor), {\n                selectedPointsIndices: null\n              }),\n              suggestedBindings: []\n            });\n          }\n        }\n      }\n\n      lastPointerUp = null;\n      window.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.POINTER_MOVE, pointerDownState.eventListeners.onMove);\n      window.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.POINTER_UP, pointerDownState.eventListeners.onUp);\n      window.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.KEYDOWN, pointerDownState.eventListeners.onKeyDown);\n      window.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_12__.EVENT.KEYUP, pointerDownState.eventListeners.onKeyUp);\n\n      if (this.state.pendingImageElementId) {\n        this.setState({\n          pendingImageElementId: null\n        });\n      }\n\n      this.onPointerUpEmitter.trigger(this.state.activeTool, pointerDownState, childEvent);\n\n      if ((draggingElement === null || draggingElement === void 0 ? void 0 : draggingElement.type) === "freedraw") {\n        const pointerCoords = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.viewportCoordsToSceneCoords)(childEvent, this.state);\n        const points = draggingElement.points;\n        let dx = pointerCoords.x - draggingElement.x;\n        let dy = pointerCoords.y - draggingElement.y; // Allows dots to avoid being flagged as infinitely small\n\n        if (dx === points[0][0] && dy === points[0][1]) {\n          dy += 0.0001;\n          dx += 0.0001;\n        }\n\n        const pressures = draggingElement.simulatePressure ? [] : [...draggingElement.pressures, childEvent.pressure];\n        (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(draggingElement, {\n          points: [...points, [dx, dy]],\n          pressures,\n          lastCommittedPoint: [dx, dy]\n        });\n        this.actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_5__.actionFinalize);\n        return;\n      }\n\n      if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isImageElement)(draggingElement)) {\n        const imageElement = draggingElement;\n\n        try {\n          this.initializeImageDimensions(imageElement);\n          this.setState({\n            selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)({\n              [imageElement.id]: true\n            }, this.state)\n          }, () => {\n            this.actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_5__.actionFinalize);\n          });\n        } catch (error) {\n          console.error(error);\n          this.scene.replaceAllElements(this.scene.getElementsIncludingDeleted().filter(el => el.id !== imageElement.id));\n          this.actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_5__.actionFinalize);\n        }\n\n        return;\n      }\n\n      if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isLinearElement)(draggingElement)) {\n        if (draggingElement.points.length > 1) {\n          this.history.resumeRecording();\n        }\n\n        const pointerCoords = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.viewportCoordsToSceneCoords)(childEvent, this.state);\n\n        if (!pointerDownState.drag.hasOccurred && draggingElement && !multiElement) {\n          (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(draggingElement, {\n            points: [...draggingElement.points, [pointerCoords.x - draggingElement.x, pointerCoords.y - draggingElement.y]]\n          });\n          this.setState({\n            multiElement: draggingElement,\n            editingElement: this.state.draggingElement\n          });\n        } else if (pointerDownState.drag.hasOccurred && !multiElement) {\n          if ((0,_element_binding__WEBPACK_IMPORTED_MODULE_17__.isBindingEnabled)(this.state) && (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isBindingElement)(draggingElement, false)) {\n            (0,_element_binding__WEBPACK_IMPORTED_MODULE_17__.maybeBindLinearElement)(draggingElement, this.state, this.scene, pointerCoords);\n          }\n\n          this.setState({\n            suggestedBindings: [],\n            startBoundElement: null\n          });\n\n          if (!activeTool.locked) {\n            (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.resetCursor)(this.interactiveCanvas);\n            this.setState(prevState => ({\n              draggingElement: null,\n              activeTool: (0,_utils__WEBPACK_IMPORTED_MODULE_33__.updateActiveTool)(this.state, {\n                type: "selection"\n              }),\n              selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)(Object.assign(Object.assign({}, prevState.selectedElementIds), {\n                [draggingElement.id]: true\n              }), prevState),\n              selectedLinearElement: new _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_18__.LinearElementEditor(draggingElement, this.scene)\n            }));\n          } else {\n            this.setState(prevState => ({\n              draggingElement: null\n            }));\n          }\n        }\n\n        return;\n      }\n\n      if (activeTool.type !== "selection" && draggingElement && (0,_element__WEBPACK_IMPORTED_MODULE_16__.isInvisiblySmallElement)(draggingElement)) {\n        // remove invisible element which was added in onPointerDown\n        this.scene.replaceAllElements(this.scene.getElementsIncludingDeleted().filter(el => el.id !== draggingElement.id));\n        this.setState({\n          draggingElement: null\n        });\n        return;\n      }\n\n      if (draggingElement) {\n        if (pointerDownState.drag.hasOccurred) {\n          const sceneCoords = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.viewportCoordsToSceneCoords)(childEvent, this.state); // when editing the points of a linear element, we check if the\n          // linear element still is in the frame afterwards\n          // if not, the linear element will be removed from its frame (if any)\n\n          if (this.state.selectedLinearElement && this.state.selectedLinearElement.isDragging) {\n            const linearElement = this.scene.getElement(this.state.selectedLinearElement.elementId);\n\n            if (linearElement === null || linearElement === void 0 ? void 0 : linearElement.frameId) {\n              const frame = (0,_frame__WEBPACK_IMPORTED_MODULE_50__.getContainingFrame)(linearElement);\n\n              if (frame && linearElement) {\n                if (!(0,_frame__WEBPACK_IMPORTED_MODULE_50__.elementOverlapsWithFrame)(linearElement, frame)) {\n                  // remove the linear element from all groups\n                  // before removing it from the frame as well\n                  (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(linearElement, {\n                    groupIds: []\n                  });\n                  this.scene.replaceAllElements((0,_frame__WEBPACK_IMPORTED_MODULE_50__.removeElementsFromFrame)(this.scene.getElementsIncludingDeleted(), [linearElement], this.state));\n                }\n              }\n            }\n          } else {\n            // update the relationships between selected elements and frames\n            const topLayerFrame = this.getTopLayerFrameAtSceneCoords(sceneCoords);\n            const selectedElements = this.scene.getSelectedElements(this.state);\n            let nextElements = this.scene.getElementsIncludingDeleted();\n\n            const updateGroupIdsAfterEditingGroup = elements => {\n              if (elements.length > 0) {\n                for (const element of elements) {\n                  const index = element.groupIds.indexOf(this.state.editingGroupId);\n                  (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(element, {\n                    groupIds: element.groupIds.slice(0, index)\n                  }, false);\n                }\n\n                nextElements.forEach(element => {\n                  if (element.groupIds.length && (0,_groups__WEBPACK_IMPORTED_MODULE_23__.getElementsInGroup)(nextElements, element.groupIds[element.groupIds.length - 1]).length < 2) {\n                    (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(element, {\n                      groupIds: []\n                    }, false);\n                  }\n                });\n                this.setState({\n                  editingGroupId: null\n                });\n              }\n            };\n\n            if (topLayerFrame && !this.state.selectedElementIds[topLayerFrame.id]) {\n              const elementsToAdd = selectedElements.filter(element => element.frameId !== topLayerFrame.id && (0,_frame__WEBPACK_IMPORTED_MODULE_50__.isElementInFrame)(element, nextElements, this.state));\n\n              if (this.state.editingGroupId) {\n                updateGroupIdsAfterEditingGroup(elementsToAdd);\n              }\n\n              nextElements = (0,_frame__WEBPACK_IMPORTED_MODULE_50__.addElementsToFrame)(nextElements, elementsToAdd, topLayerFrame);\n            } else if (!topLayerFrame) {\n              if (this.state.editingGroupId) {\n                const elementsToRemove = selectedElements.filter(element => element.frameId && !(0,_frame__WEBPACK_IMPORTED_MODULE_50__.isElementInFrame)(element, nextElements, this.state));\n                updateGroupIdsAfterEditingGroup(elementsToRemove);\n              }\n            }\n\n            nextElements = (0,_frame__WEBPACK_IMPORTED_MODULE_50__.updateFrameMembershipOfSelectedElements)(nextElements, this.state, this);\n            this.scene.replaceAllElements(nextElements);\n          }\n        }\n\n        if (draggingElement.type === "frame") {\n          const elementsInsideFrame = (0,_frame__WEBPACK_IMPORTED_MODULE_50__.getElementsInNewFrame)(this.scene.getElementsIncludingDeleted(), draggingElement);\n          this.scene.replaceAllElements((0,_frame__WEBPACK_IMPORTED_MODULE_50__.addElementsToFrame)(this.scene.getElementsIncludingDeleted(), elementsInsideFrame, draggingElement));\n        }\n\n        (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement)(draggingElement, (0,_element__WEBPACK_IMPORTED_MODULE_16__.getNormalizedDimensions)(draggingElement));\n      }\n\n      if (resizingElement) {\n        this.history.resumeRecording();\n      }\n\n      if (resizingElement && (0,_element__WEBPACK_IMPORTED_MODULE_16__.isInvisiblySmallElement)(resizingElement)) {\n        this.scene.replaceAllElements(this.scene.getElementsIncludingDeleted().filter(el => el.id !== resizingElement.id));\n      } // handle frame membership for resizing frames and/or selected elements\n\n\n      if (pointerDownState.resize.isResizing) {\n        let nextElements = (0,_frame__WEBPACK_IMPORTED_MODULE_50__.updateFrameMembershipOfSelectedElements)(this.scene.getElementsIncludingDeleted(), this.state, this);\n        const selectedFrames = this.scene.getSelectedElements(this.state).filter(element => element.type === "frame");\n\n        for (const frame of selectedFrames) {\n          nextElements = (0,_frame__WEBPACK_IMPORTED_MODULE_50__.replaceAllElementsInFrame)(nextElements, (0,_frame__WEBPACK_IMPORTED_MODULE_50__.getElementsInResizingFrame)(this.scene.getElementsIncludingDeleted(), frame, this.state), frame, this.state);\n        }\n\n        this.scene.replaceAllElements(nextElements);\n      } // Code below handles selection when element(s) weren\'t\n      // drag or added to selection on pointer down phase.\n\n\n      const hitElement = pointerDownState.hit.element;\n\n      if (((_e = this.state.selectedLinearElement) === null || _e === void 0 ? void 0 : _e.elementId) !== (hitElement === null || hitElement === void 0 ? void 0 : hitElement.id) && (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isLinearElement)(hitElement)) {\n        const selectedELements = this.scene.getSelectedElements(this.state); // set selectedLinearElement when no other element selected except\n        // the one we\'ve hit\n\n        if (selectedELements.length === 1) {\n          this.setState({\n            selectedLinearElement: new _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_18__.LinearElementEditor(hitElement, this.scene)\n          });\n        }\n      }\n\n      if ((0,_appState__WEBPACK_IMPORTED_MODULE_10__.isEraserActive)(this.state)) {\n        const draggedDistance = (0,_math__WEBPACK_IMPORTED_MODULE_28__.distance2d)(this.lastPointerDownEvent.clientX, this.lastPointerDownEvent.clientY, this.lastPointerUpEvent.clientX, this.lastPointerUpEvent.clientY);\n\n        if (draggedDistance === 0) {\n          const scenePointer = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.viewportCoordsToSceneCoords)({\n            clientX: this.lastPointerUpEvent.clientX,\n            clientY: this.lastPointerUpEvent.clientY\n          }, this.state);\n          const hitElements = this.getElementsAtPosition(scenePointer.x, scenePointer.y);\n          hitElements.forEach(hitElement => pointerDownState.elementIdsToErase[hitElement.id] = {\n            erase: true,\n            opacity: hitElement.opacity\n          });\n        }\n\n        this.eraseElements(pointerDownState);\n        return;\n      } else if (Object.keys(pointerDownState.elementIdsToErase).length) {\n        this.restoreReadyToEraseElements(pointerDownState);\n      }\n\n      if (hitElement && !pointerDownState.drag.hasOccurred && !pointerDownState.hit.wasAddedToSelection && ( // if we\'re editing a line, pointerup shouldn\'t switch selection if\n      // box selected\n      !this.state.editingLinearElement || !pointerDownState.boxSelection.hasOccurred)) {\n        // when inside line editor, shift selects points instead\n        if (childEvent.shiftKey && !this.state.editingLinearElement) {\n          if (this.state.selectedElementIds[hitElement.id]) {\n            if ((0,_groups__WEBPACK_IMPORTED_MODULE_23__.isSelectedViaGroup)(this.state, hitElement)) {\n              this.setState(_prevState => {\n                const nextSelectedElementIds = Object.assign({}, _prevState.selectedElementIds); // We want to unselect all groups hitElement is part of\n                // as well as all elements that are part of the groups\n                // hitElement is part of\n\n                for (const groupedElement of hitElement.groupIds.flatMap(groupId => (0,_groups__WEBPACK_IMPORTED_MODULE_23__.getElementsInGroup)(this.scene.getNonDeletedElements(), groupId))) {\n                  delete nextSelectedElementIds[groupedElement.id];\n                }\n\n                return {\n                  selectedGroupIds: Object.assign(Object.assign({}, _prevState.selectedElementIds), hitElement.groupIds.map(gId => ({\n                    [gId]: false\n                  })).reduce((prev, acc) => Object.assign(Object.assign({}, prev), acc), {})),\n                  selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)(nextSelectedElementIds, _prevState)\n                };\n              }); // if not gragging a linear element point (outside editor)\n            } else if (!((_f = this.state.selectedLinearElement) === null || _f === void 0 ? void 0 : _f.isDragging)) {\n              // remove element from selection while\n              // keeping prev elements selected\n              this.setState(prevState => {\n                const newSelectedElementIds = Object.assign({}, prevState.selectedElementIds);\n                delete newSelectedElementIds[hitElement.id];\n                const newSelectedElements = (0,_scene__WEBPACK_IMPORTED_MODULE_29__.getSelectedElements)(this.scene.getNonDeletedElements(), {\n                  selectedElementIds: newSelectedElementIds\n                });\n                return Object.assign(Object.assign({}, (0,_groups__WEBPACK_IMPORTED_MODULE_23__.selectGroupsForSelectedElements)({\n                  editingGroupId: prevState.editingGroupId,\n                  selectedElementIds: newSelectedElementIds\n                }, this.scene.getNonDeletedElements(), prevState, this)), {\n                  // set selectedLinearElement only if thats the only element selected\n                  selectedLinearElement: newSelectedElements.length === 1 && (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isLinearElement)(newSelectedElements[0]) ? new _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_18__.LinearElementEditor(newSelectedElements[0], this.scene) : prevState.selectedLinearElement\n                });\n              });\n            }\n          } else if (hitElement.frameId && this.state.selectedElementIds[hitElement.frameId]) {\n            // when hitElement is part of a selected frame, deselect the frame\n            // to avoid frame and containing elements selected simultaneously\n            this.setState(prevState => {\n              var _a, _b;\n\n              const nextSelectedElementIds = Object.assign(Object.assign({}, prevState.selectedElementIds), {\n                [hitElement.id]: true\n              }); // deselect the frame\n\n              delete nextSelectedElementIds[hitElement.frameId]; // deselect groups containing the frame\n\n              ((_b = (_a = this.scene.getElement(hitElement.frameId)) === null || _a === void 0 ? void 0 : _a.groupIds) !== null && _b !== void 0 ? _b : []).flatMap(gid => (0,_groups__WEBPACK_IMPORTED_MODULE_23__.getElementsInGroup)(this.scene.getNonDeletedElements(), gid)).forEach(element => {\n                delete nextSelectedElementIds[element.id];\n              });\n              return Object.assign(Object.assign({}, (0,_groups__WEBPACK_IMPORTED_MODULE_23__.selectGroupsForSelectedElements)({\n                editingGroupId: prevState.editingGroupId,\n                selectedElementIds: nextSelectedElementIds\n              }, this.scene.getNonDeletedElements(), prevState, this)), {\n                showHyperlinkPopup: hitElement.link || (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isEmbeddableElement)(hitElement) ? "info" : false\n              });\n            });\n          } else {\n            // add element to selection while keeping prev elements selected\n            this.setState(_prevState => ({\n              selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)(Object.assign(Object.assign({}, _prevState.selectedElementIds), {\n                [hitElement.id]: true\n              }), _prevState)\n            }));\n          }\n        } else {\n          this.setState(prevState => {\n            var _a;\n\n            return Object.assign(Object.assign({}, (0,_groups__WEBPACK_IMPORTED_MODULE_23__.selectGroupsForSelectedElements)({\n              editingGroupId: prevState.editingGroupId,\n              selectedElementIds: {\n                [hitElement.id]: true\n              }\n            }, this.scene.getNonDeletedElements(), prevState, this)), {\n              selectedLinearElement: (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isLinearElement)(hitElement) && // Don\'t set `selectedLinearElement` if its same as the hitElement, this is mainly to prevent resetting the `hoverPointIndex` to -1.\n              // Future we should update the API to take care of setting the correct `hoverPointIndex` when initialized\n              ((_a = prevState.selectedLinearElement) === null || _a === void 0 ? void 0 : _a.elementId) !== hitElement.id ? new _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_18__.LinearElementEditor(hitElement, this.scene) : prevState.selectedLinearElement\n            });\n          });\n        }\n      }\n\n      if (!pointerDownState.drag.hasOccurred && !this.state.isResizing && (hitElement && (0,_element__WEBPACK_IMPORTED_MODULE_16__.isHittingElementBoundingBoxWithoutHittingElement)(hitElement, this.state, this.frameNameBoundsCache, pointerDownState.origin.x, pointerDownState.origin.y) || !hitElement && pointerDownState.hit.hasHitCommonBoundingBoxOfSelectedElements)) {\n        if (this.state.editingLinearElement) {\n          this.setState({\n            editingLinearElement: null\n          });\n        } else {\n          // Deselect selected elements\n          this.setState({\n            selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)({}, this.state),\n            selectedGroupIds: {},\n            editingGroupId: null,\n            activeEmbeddable: null\n          });\n        }\n\n        return;\n      }\n\n      if (!activeTool.locked && activeTool.type !== "freedraw" && draggingElement && draggingElement.type !== "selection") {\n        this.setState(prevState => ({\n          selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)(Object.assign(Object.assign({}, prevState.selectedElementIds), {\n            [draggingElement.id]: true\n          }), prevState),\n          showHyperlinkPopup: (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isEmbeddableElement)(draggingElement) && !draggingElement.link ? "editor" : prevState.showHyperlinkPopup\n        }));\n      }\n\n      if (activeTool.type !== "selection" || (0,_scene__WEBPACK_IMPORTED_MODULE_29__.isSomeElementSelected)(this.scene.getNonDeletedElements(), this.state)) {\n        this.history.resumeRecording();\n      }\n\n      if (pointerDownState.drag.hasOccurred || isResizing || isRotating) {\n        ((0,_element_binding__WEBPACK_IMPORTED_MODULE_17__.isBindingEnabled)(this.state) ? _element_binding__WEBPACK_IMPORTED_MODULE_17__.bindOrUnbindSelectedElements : _element_binding__WEBPACK_IMPORTED_MODULE_17__.unbindLinearElements)(this.scene.getSelectedElements(this.state));\n      }\n\n      if (activeTool.type === "laser") {\n        this.laserPathManager.endPath();\n        return;\n      }\n\n      if (!activeTool.locked && activeTool.type !== "freedraw") {\n        (0,_cursor__WEBPACK_IMPORTED_MODULE_70__.resetCursor)(this.interactiveCanvas);\n        this.setState({\n          draggingElement: null,\n          suggestedBindings: [],\n          activeTool: (0,_utils__WEBPACK_IMPORTED_MODULE_33__.updateActiveTool)(this.state, {\n            type: "selection"\n          })\n        });\n      } else {\n        this.setState({\n          draggingElement: null,\n          suggestedBindings: []\n        });\n      }\n\n      if (hitElement && this.lastPointerUpEvent && this.lastPointerDownEvent && this.lastPointerUpEvent.timeStamp - this.lastPointerDownEvent.timeStamp < 300 && gesture.pointers.size <= 1 && (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_21__.isEmbeddableElement)(hitElement) && this.isEmbeddableCenter(hitElement, this.lastPointerUpEvent, pointerDownState.origin.x, pointerDownState.origin.y)) {\n        this.handleEmbeddableCenterClick(hitElement);\n      }\n    });\n  }\n\n  maybeSuggestBindingForAll(selectedElements) {\n    if (selectedElements.length > 50) {\n      return;\n    }\n\n    const suggestedBindings = (0,_element_binding__WEBPACK_IMPORTED_MODULE_17__.getEligibleElementsForBinding)(selectedElements);\n    this.setState({\n      suggestedBindings\n    });\n  }\n\n  clearSelection(hitElement) {\n    this.setState(prevState => ({\n      selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)({}, prevState),\n      activeEmbeddable: null,\n      selectedGroupIds: {},\n      // Continue editing the same group if the user selected a different\n      // element from it\n      editingGroupId: prevState.editingGroupId && hitElement != null && (0,_groups__WEBPACK_IMPORTED_MODULE_23__.isElementInGroup)(hitElement, prevState.editingGroupId) ? prevState.editingGroupId : null\n    }));\n    this.setState({\n      selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_51__.makeNextSelectedElementIds)({}, this.state),\n      activeEmbeddable: null,\n      previousSelectedElementIds: this.state.selectedElementIds\n    });\n  }\n\n  getTextWysiwygSnappedToCenterPosition(x, y, appState, container) {\n    if (container) {\n      let elementCenterX = container.x + container.width / 2;\n      let elementCenterY = container.y + container.height / 2;\n      const elementCenter = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_43__.getContainerCenter)(container, appState);\n\n      if (elementCenter) {\n        elementCenterX = elementCenter.x;\n        elementCenterY = elementCenter.y;\n      }\n\n      const distanceToCenter = Math.hypot(x - elementCenterX, y - elementCenterY);\n      const isSnappedToCenter = distanceToCenter < _constants__WEBPACK_IMPORTED_MODULE_12__.TEXT_TO_CENTER_SNAP_THRESHOLD;\n\n      if (isSnappedToCenter) {\n        const {\n          x: viewportX,\n          y: viewportY\n        } = (0,_utils__WEBPACK_IMPORTED_MODULE_33__.sceneCoordsToViewportCoords)({\n          sceneX: elementCenterX,\n          sceneY: elementCenterY\n        }, appState);\n        return {\n          viewportX,\n          viewportY,\n          elementCenterX,\n          elementCenterY\n        };\n      }\n    }\n  }\n\n  getCanvasOffsets() {\n    var _a;\n\n    if ((_a = this.excalidrawContainerRef) === null || _a === void 0 ? void 0 : _a.current) {\n      const excalidrawContainer = this.excalidrawContainerRef.current;\n      const {\n        left,\n        top\n      } = excalidrawContainer.getBoundingClientRect();\n      return {\n        offsetLeft: left,\n        offsetTop: top\n      };\n    }\n\n    return {\n      offsetLeft: 0,\n      offsetTop: 0\n    };\n  }\n\n  updateLanguage() {\n    return __awaiter(this, void 0, void 0, function* () {\n      const currentLang = _i18n__WEBPACK_IMPORTED_MODULE_25__.languages.find(lang => lang.code === this.props.langCode) || _i18n__WEBPACK_IMPORTED_MODULE_25__.defaultLang;\n      yield (0,_i18n__WEBPACK_IMPORTED_MODULE_25__.setLanguage)(currentLang);\n      this.setAppState({});\n    });\n  }\n\n}\n\nApp.defaultProps = {\n  // needed for tests to pass since we directly render App in many tests\n  UIOptions: _constants__WEBPACK_IMPORTED_MODULE_12__.DEFAULT_UI_OPTIONS\n};\n\nif ("development" === _constants__WEBPACK_IMPORTED_MODULE_12__.ENV.TEST || "development" !== "production") {\n  window.h = window.h || {};\n  Object.defineProperties(window.h, {\n    elements: {\n      configurable: true,\n\n      get() {\n        var _a;\n\n        return (_a = this.app) === null || _a === void 0 ? void 0 : _a.scene.getElementsIncludingDeleted();\n      },\n\n      set(elements) {\n        var _a;\n\n        return (_a = this.app) === null || _a === void 0 ? void 0 : _a.scene.replaceAllElements(elements);\n      }\n\n    }\n  });\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (App);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 413052 characters]\n//# sourceURL=webpack-internal:///../../components/App.tsx\n');
              }
            ),
            /***/
            "../../components/Avatar.tsx": (
              /*!***********************************!*\
                !*** ../../components/Avatar.tsx ***!
                \***********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "Avatar": () => (/* binding */ Avatar)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var _Avatar_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Avatar.scss */ "../../components/Avatar.scss");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _clients__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../clients */ "../../clients.ts");\n\n\n\n\nconst Avatar = ({\n  color,\n  onClick,\n  name,\n  src\n}) => {\n  const shortName = (0,_clients__WEBPACK_IMPORTED_MODULE_3__.getNameInitial)(name);\n  const [error, setError] = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(false);\n  const loadImg = !error && src;\n  const style = loadImg ? undefined : {\n    background: color\n  };\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: "Avatar",\n    style: style,\n    onClick: onClick\n  }, {\n    children: loadImg ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("img", {\n      className: "Avatar-img",\n      src: src,\n      alt: shortName,\n      referrerPolicy: "no-referrer",\n      onError: () => setError(true)\n    }) : shortName\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9BdmF0YXIudHN4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFnRDtBQUN6QjtBQUNpQjtBQUNJO0FBQ3JDO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Qsb0JBQW9CLHdEQUFjO0FBQ2xDLDRCQUE0QiwrQ0FBUTtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsc0RBQUk7QUFDYjtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsd0JBQXdCLHNEQUFJO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvQXZhdGFyLnRzeD8zYWU2Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgXCIuL0F2YXRhci5zY3NzXCI7XG5pbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IGdldE5hbWVJbml0aWFsIH0gZnJvbSBcIi4uL2NsaWVudHNcIjtcbmV4cG9ydCBjb25zdCBBdmF0YXIgPSAoe1xuICBjb2xvcixcbiAgb25DbGljayxcbiAgbmFtZSxcbiAgc3JjXG59KSA9PiB7XG4gIGNvbnN0IHNob3J0TmFtZSA9IGdldE5hbWVJbml0aWFsKG5hbWUpO1xuICBjb25zdCBbZXJyb3IsIHNldEVycm9yXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgbG9hZEltZyA9ICFlcnJvciAmJiBzcmM7XG4gIGNvbnN0IHN0eWxlID0gbG9hZEltZyA/IHVuZGVmaW5lZCA6IHtcbiAgICBiYWNrZ3JvdW5kOiBjb2xvclxuICB9O1xuICByZXR1cm4gX2pzeChcImRpdlwiLCBPYmplY3QuYXNzaWduKHtcbiAgICBjbGFzc05hbWU6IFwiQXZhdGFyXCIsXG4gICAgc3R5bGU6IHN0eWxlLFxuICAgIG9uQ2xpY2s6IG9uQ2xpY2tcbiAgfSwge1xuICAgIGNoaWxkcmVuOiBsb2FkSW1nID8gX2pzeChcImltZ1wiLCB7XG4gICAgICBjbGFzc05hbWU6IFwiQXZhdGFyLWltZ1wiLFxuICAgICAgc3JjOiBzcmMsXG4gICAgICBhbHQ6IHNob3J0TmFtZSxcbiAgICAgIHJlZmVycmVyUG9saWN5OiBcIm5vLXJlZmVycmVyXCIsXG4gICAgICBvbkVycm9yOiAoKSA9PiBzZXRFcnJvcih0cnVlKVxuICAgIH0pIDogc2hvcnROYW1lXG4gIH0pKTtcbn07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/Avatar.tsx\n');
              }
            ),
            /***/
            "../../components/BraveMeasureTextError.tsx": (
              /*!**************************************************!*\
                !*** ../../components/BraveMeasureTextError.tsx ***!
                \**************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var _Trans__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Trans */ "../../components/Trans.tsx");\n\n\n\nconst BraveMeasureTextError = () => {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n    "data-testid": "brave-measure-text-error"\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("p", {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Trans__WEBPACK_IMPORTED_MODULE_1__["default"], {\n        i18nKey: "errors.brave_measure_text_error.line1",\n        bold: el => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", Object.assign({\n          style: {\n            fontWeight: 600\n          }\n        }, {\n          children: el\n        }))\n      })\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("p", {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Trans__WEBPACK_IMPORTED_MODULE_1__["default"], {\n        i18nKey: "errors.brave_measure_text_error.line2",\n        bold: el => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", Object.assign({\n          style: {\n            fontWeight: 600\n          }\n        }, {\n          children: el\n        }))\n      })\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("p", {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Trans__WEBPACK_IMPORTED_MODULE_1__["default"], {\n        i18nKey: "errors.brave_measure_text_error.line3",\n        link: el => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("a", Object.assign({\n          href: "http://docs.excalidraw.com/docs/@excalidraw/excalidraw/faq#turning-off-aggresive-block-fingerprinting-in-brave-browser"\n        }, {\n          children: el\n        }))\n      })\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("p", {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Trans__WEBPACK_IMPORTED_MODULE_1__["default"], {\n        i18nKey: "errors.brave_measure_text_error.line4",\n        issueLink: el => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("a", Object.assign({\n          href: "https://github.com/excalidraw/excalidraw/issues/new"\n        }, {\n          children: el\n        })),\n        discordLink: el => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("a", Object.assign({\n          href: "https://discord.gg/UexuTaE"\n        }, {\n          children: [el, "."]\n        }))\n      })\n    })]\n  }));\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (BraveMeasureTextError);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9CcmF2ZU1lYXN1cmVUZXh0RXJyb3IudHN4LmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUErRDtBQUNuQzs7QUFFNUI7QUFDQSxTQUFTLHVEQUFLO0FBQ2Q7QUFDQSxHQUFHO0FBQ0gsZUFBZSxzREFBSTtBQUNuQixnQkFBZ0Isc0RBQUksQ0FBQyw4Q0FBSztBQUMxQjtBQUNBLG9CQUFvQixzREFBSTtBQUN4QjtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQLEtBQUssR0FBRyxzREFBSTtBQUNaLGdCQUFnQixzREFBSSxDQUFDLDhDQUFLO0FBQzFCO0FBQ0Esb0JBQW9CLHNEQUFJO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1AsS0FBSyxHQUFHLHNEQUFJO0FBQ1osZ0JBQWdCLHNEQUFJLENBQUMsOENBQUs7QUFDMUI7QUFDQSxvQkFBb0Isc0RBQUk7QUFDeEI7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQLEtBQUssR0FBRyxzREFBSTtBQUNaLGdCQUFnQixzREFBSSxDQUFDLDhDQUFLO0FBQzFCO0FBQ0EseUJBQXlCLHNEQUFJO0FBQzdCO0FBQ0EsU0FBUztBQUNUO0FBQ0EsU0FBUztBQUNULDJCQUEyQix1REFBSztBQUNoQztBQUNBLFNBQVM7QUFDVDtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1AsS0FBSztBQUNMLEdBQUc7QUFDSDs7QUFFQSxpRUFBZSxxQkFBcUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9CcmF2ZU1lYXN1cmVUZXh0RXJyb3IudHN4P2MwZTQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCBUcmFucyBmcm9tIFwiLi9UcmFuc1wiO1xuXG5jb25zdCBCcmF2ZU1lYXN1cmVUZXh0RXJyb3IgPSAoKSA9PiB7XG4gIHJldHVybiBfanN4cyhcImRpdlwiLCBPYmplY3QuYXNzaWduKHtcbiAgICBcImRhdGEtdGVzdGlkXCI6IFwiYnJhdmUtbWVhc3VyZS10ZXh0LWVycm9yXCJcbiAgfSwge1xuICAgIGNoaWxkcmVuOiBbX2pzeChcInBcIiwge1xuICAgICAgY2hpbGRyZW46IF9qc3goVHJhbnMsIHtcbiAgICAgICAgaTE4bktleTogXCJlcnJvcnMuYnJhdmVfbWVhc3VyZV90ZXh0X2Vycm9yLmxpbmUxXCIsXG4gICAgICAgIGJvbGQ6IGVsID0+IF9qc3goXCJzcGFuXCIsIE9iamVjdC5hc3NpZ24oe1xuICAgICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICBmb250V2VpZ2h0OiA2MDBcbiAgICAgICAgICB9XG4gICAgICAgIH0sIHtcbiAgICAgICAgICBjaGlsZHJlbjogZWxcbiAgICAgICAgfSkpXG4gICAgICB9KVxuICAgIH0pLCBfanN4KFwicFwiLCB7XG4gICAgICBjaGlsZHJlbjogX2pzeChUcmFucywge1xuICAgICAgICBpMThuS2V5OiBcImVycm9ycy5icmF2ZV9tZWFzdXJlX3RleHRfZXJyb3IubGluZTJcIixcbiAgICAgICAgYm9sZDogZWwgPT4gX2pzeChcInNwYW5cIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIGZvbnRXZWlnaHQ6IDYwMFxuICAgICAgICAgIH1cbiAgICAgICAgfSwge1xuICAgICAgICAgIGNoaWxkcmVuOiBlbFxuICAgICAgICB9KSlcbiAgICAgIH0pXG4gICAgfSksIF9qc3goXCJwXCIsIHtcbiAgICAgIGNoaWxkcmVuOiBfanN4KFRyYW5zLCB7XG4gICAgICAgIGkxOG5LZXk6IFwiZXJyb3JzLmJyYXZlX21lYXN1cmVfdGV4dF9lcnJvci5saW5lM1wiLFxuICAgICAgICBsaW5rOiBlbCA9PiBfanN4KFwiYVwiLCBPYmplY3QuYXNzaWduKHtcbiAgICAgICAgICBocmVmOiBcImh0dHA6Ly9kb2NzLmV4Y2FsaWRyYXcuY29tL2RvY3MvQGV4Y2FsaWRyYXcvZXhjYWxpZHJhdy9mYXEjdHVybmluZy1vZmYtYWdncmVzaXZlLWJsb2NrLWZpbmdlcnByaW50aW5nLWluLWJyYXZlLWJyb3dzZXJcIlxuICAgICAgICB9LCB7XG4gICAgICAgICAgY2hpbGRyZW46IGVsXG4gICAgICAgIH0pKVxuICAgICAgfSlcbiAgICB9KSwgX2pzeChcInBcIiwge1xuICAgICAgY2hpbGRyZW46IF9qc3goVHJhbnMsIHtcbiAgICAgICAgaTE4bktleTogXCJlcnJvcnMuYnJhdmVfbWVhc3VyZV90ZXh0X2Vycm9yLmxpbmU0XCIsXG4gICAgICAgIGlzc3VlTGluazogZWwgPT4gX2pzeChcImFcIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgICAgICAgaHJlZjogXCJodHRwczovL2dpdGh1Yi5jb20vZXhjYWxpZHJhdy9leGNhbGlkcmF3L2lzc3Vlcy9uZXdcIlxuICAgICAgICB9LCB7XG4gICAgICAgICAgY2hpbGRyZW46IGVsXG4gICAgICAgIH0pKSxcbiAgICAgICAgZGlzY29yZExpbms6IGVsID0+IF9qc3hzKFwiYVwiLCBPYmplY3QuYXNzaWduKHtcbiAgICAgICAgICBocmVmOiBcImh0dHBzOi8vZGlzY29yZC5nZy9VZXh1VGFFXCJcbiAgICAgICAgfSwge1xuICAgICAgICAgIGNoaWxkcmVuOiBbZWwsIFwiLlwiXVxuICAgICAgICB9KSlcbiAgICAgIH0pXG4gICAgfSldXG4gIH0pKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEJyYXZlTWVhc3VyZVRleHRFcnJvcjsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/BraveMeasureTextError.tsx\n');
              }
            ),
            /***/
            "../../components/Button.tsx": (
              /*!***********************************!*\
                !*** ../../components/Button.tsx ***!
                \***********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "Button": () => (/* binding */ Button)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _Button_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Button.scss */ "../../components/Button.scss");\nvar __rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n\n  if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\n/**\n * A generic button component that follows Excalidraw\'s design system.\n * Style can be customised using `className` or `style` prop.\n * Accepts all props that a regular `button` element accepts.\n */\n\nconst Button = _a => {\n  var {\n    type = "button",\n    onSelect,\n    selected,\n    children,\n    className = ""\n  } = _a,\n      rest = __rest(_a, ["type", "onSelect", "selected", "children", "className"]);\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("button", Object.assign({\n    onClick: (0,_utils__WEBPACK_IMPORTED_MODULE_2__.composeEventHandlers)(rest.onClick, event => {\n      onSelect();\n    }),\n    type: type,\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__["default"])("excalidraw-button", className, {\n      selected\n    })\n  }, rest, {\n    children: children\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9CdXR0b24udHN4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsYUFBYSxTQUFJLElBQUksU0FBSTtBQUN6Qjs7QUFFQTs7QUFFQSw0SEFBNEgsY0FBYztBQUMxSTtBQUNBO0FBQ0E7QUFDQTs7QUFFZ0Q7QUFDeEI7QUFDd0I7QUFDekI7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjs7QUFFQSxTQUFTLHNEQUFJO0FBQ2IsYUFBYSw0REFBb0I7QUFDakM7QUFDQSxLQUFLO0FBQ0w7QUFDQSxlQUFlLGdEQUFJO0FBQ25CO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBLEdBQUc7QUFDSCIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL0J1dHRvbi50c3g/ODJlNSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19yZXN0ID0gdGhpcyAmJiB0aGlzLl9fcmVzdCB8fCBmdW5jdGlvbiAocywgZSkge1xuICB2YXIgdCA9IHt9O1xuXG4gIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKSB0W3BdID0gc1twXTtcblxuICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpIHRbcFtpXV0gPSBzW3BbaV1dO1xuICB9XG4gIHJldHVybiB0O1xufTtcblxuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCBjbHN4IGZyb20gXCJjbHN4XCI7XG5pbXBvcnQgeyBjb21wb3NlRXZlbnRIYW5kbGVycyB9IGZyb20gXCIuLi91dGlsc1wiO1xuaW1wb3J0IFwiLi9CdXR0b24uc2Nzc1wiO1xuLyoqXG4gKiBBIGdlbmVyaWMgYnV0dG9uIGNvbXBvbmVudCB0aGF0IGZvbGxvd3MgRXhjYWxpZHJhdydzIGRlc2lnbiBzeXN0ZW0uXG4gKiBTdHlsZSBjYW4gYmUgY3VzdG9taXNlZCB1c2luZyBgY2xhc3NOYW1lYCBvciBgc3R5bGVgIHByb3AuXG4gKiBBY2NlcHRzIGFsbCBwcm9wcyB0aGF0IGEgcmVndWxhciBgYnV0dG9uYCBlbGVtZW50IGFjY2VwdHMuXG4gKi9cblxuZXhwb3J0IGNvbnN0IEJ1dHRvbiA9IF9hID0+IHtcbiAgdmFyIHtcbiAgICB0eXBlID0gXCJidXR0b25cIixcbiAgICBvblNlbGVjdCxcbiAgICBzZWxlY3RlZCxcbiAgICBjaGlsZHJlbixcbiAgICBjbGFzc05hbWUgPSBcIlwiXG4gIH0gPSBfYSxcbiAgICAgIHJlc3QgPSBfX3Jlc3QoX2EsIFtcInR5cGVcIiwgXCJvblNlbGVjdFwiLCBcInNlbGVjdGVkXCIsIFwiY2hpbGRyZW5cIiwgXCJjbGFzc05hbWVcIl0pO1xuXG4gIHJldHVybiBfanN4KFwiYnV0dG9uXCIsIE9iamVjdC5hc3NpZ24oe1xuICAgIG9uQ2xpY2s6IGNvbXBvc2VFdmVudEhhbmRsZXJzKHJlc3Qub25DbGljaywgZXZlbnQgPT4ge1xuICAgICAgb25TZWxlY3QoKTtcbiAgICB9KSxcbiAgICB0eXBlOiB0eXBlLFxuICAgIGNsYXNzTmFtZTogY2xzeChcImV4Y2FsaWRyYXctYnV0dG9uXCIsIGNsYXNzTmFtZSwge1xuICAgICAgc2VsZWN0ZWRcbiAgICB9KVxuICB9LCByZXN0LCB7XG4gICAgY2hpbGRyZW46IGNoaWxkcmVuXG4gIH0pKTtcbn07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/Button.tsx\n');
              }
            ),
            /***/
            "../../components/ButtonIconSelect.tsx": (
              /*!*********************************************!*\
                !*** ../../components/ButtonIconSelect.tsx ***!
                \*********************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "ButtonIconSelect": () => (/* binding */ ButtonIconSelect)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n\n // TODO: It might be "clever" to add option.icon to the existing component <ButtonSelect />\n\nconst ButtonIconSelect = props => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n  className: "buttonList buttonListIcon"\n}, {\n  children: props.options.map(option => {\n    var _a;\n\n    return props.type === "button" ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("button", Object.assign({\n      onClick: event => props.onClick(option.value, event),\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__["default"])({\n        active: (_a = option.active) !== null && _a !== void 0 ? _a : props.value === option.value\n      }),\n      "data-testid": option.testId,\n      title: option.text\n    }, {\n      children: option.icon\n    }), option.text) : (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("label", Object.assign({\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__["default"])({\n        active: props.value === option.value\n      }),\n      title: option.text\n    }, {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input", {\n        type: "radio",\n        name: props.group,\n        onChange: () => props.onChange(option.value),\n        checked: props.value === option.value,\n        "data-testid": option.testId\n      }), option.icon]\n    }), option.text);\n  })\n}));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9CdXR0b25JY29uU2VsZWN0LnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBK0Q7QUFDdkMsQ0FBQzs7QUFFbEIsa0NBQWtDLHNEQUFJO0FBQzdDO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7O0FBRUEscUNBQXFDLHNEQUFJO0FBQ3pDO0FBQ0EsaUJBQWlCLGdEQUFJO0FBQ3JCO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLLGtCQUFrQix1REFBSztBQUM1QixpQkFBaUIsZ0RBQUk7QUFDckI7QUFDQSxPQUFPO0FBQ1A7QUFDQSxLQUFLO0FBQ0wsaUJBQWlCLHNEQUFJO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMLEdBQUc7QUFDSCxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvQnV0dG9uSWNvblNlbGVjdC50c3g/NzVjNyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IGNsc3ggZnJvbSBcImNsc3hcIjsgLy8gVE9ETzogSXQgbWlnaHQgYmUgXCJjbGV2ZXJcIiB0byBhZGQgb3B0aW9uLmljb24gdG8gdGhlIGV4aXN0aW5nIGNvbXBvbmVudCA8QnV0dG9uU2VsZWN0IC8+XG5cbmV4cG9ydCBjb25zdCBCdXR0b25JY29uU2VsZWN0ID0gcHJvcHMgPT4gX2pzeChcImRpdlwiLCBPYmplY3QuYXNzaWduKHtcbiAgY2xhc3NOYW1lOiBcImJ1dHRvbkxpc3QgYnV0dG9uTGlzdEljb25cIlxufSwge1xuICBjaGlsZHJlbjogcHJvcHMub3B0aW9ucy5tYXAob3B0aW9uID0+IHtcbiAgICB2YXIgX2E7XG5cbiAgICByZXR1cm4gcHJvcHMudHlwZSA9PT0gXCJidXR0b25cIiA/IF9qc3goXCJidXR0b25cIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgICBvbkNsaWNrOiBldmVudCA9PiBwcm9wcy5vbkNsaWNrKG9wdGlvbi52YWx1ZSwgZXZlbnQpLFxuICAgICAgY2xhc3NOYW1lOiBjbHN4KHtcbiAgICAgICAgYWN0aXZlOiAoX2EgPSBvcHRpb24uYWN0aXZlKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBwcm9wcy52YWx1ZSA9PT0gb3B0aW9uLnZhbHVlXG4gICAgICB9KSxcbiAgICAgIFwiZGF0YS10ZXN0aWRcIjogb3B0aW9uLnRlc3RJZCxcbiAgICAgIHRpdGxlOiBvcHRpb24udGV4dFxuICAgIH0sIHtcbiAgICAgIGNoaWxkcmVuOiBvcHRpb24uaWNvblxuICAgIH0pLCBvcHRpb24udGV4dCkgOiBfanN4cyhcImxhYmVsXCIsIE9iamVjdC5hc3NpZ24oe1xuICAgICAgY2xhc3NOYW1lOiBjbHN4KHtcbiAgICAgICAgYWN0aXZlOiBwcm9wcy52YWx1ZSA9PT0gb3B0aW9uLnZhbHVlXG4gICAgICB9KSxcbiAgICAgIHRpdGxlOiBvcHRpb24udGV4dFxuICAgIH0sIHtcbiAgICAgIGNoaWxkcmVuOiBbX2pzeChcImlucHV0XCIsIHtcbiAgICAgICAgdHlwZTogXCJyYWRpb1wiLFxuICAgICAgICBuYW1lOiBwcm9wcy5ncm91cCxcbiAgICAgICAgb25DaGFuZ2U6ICgpID0+IHByb3BzLm9uQ2hhbmdlKG9wdGlvbi52YWx1ZSksXG4gICAgICAgIGNoZWNrZWQ6IHByb3BzLnZhbHVlID09PSBvcHRpb24udmFsdWUsXG4gICAgICAgIFwiZGF0YS10ZXN0aWRcIjogb3B0aW9uLnRlc3RJZFxuICAgICAgfSksIG9wdGlvbi5pY29uXVxuICAgIH0pLCBvcHRpb24udGV4dCk7XG4gIH0pXG59KSk7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/ButtonIconSelect.tsx\n');
              }
            ),
            /***/
            "../../components/Card.tsx": (
              /*!*********************************!*\
                !*** ../../components/Card.tsx ***!
                \*********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "Card": () => (/* binding */ Card)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var open_color__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! open-color */ "../../../node_modules/open-color/open-color.json");\n/* harmony import */ var _Card_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Card.scss */ "../../components/Card.scss");\n\n\n\nconst Card = ({\n  children,\n  color\n}) => {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: "Card",\n    style: {\n      ["--card-color"]: color === "primary" ? "var(--color-primary)" : open_color__WEBPACK_IMPORTED_MODULE_1__[color][7],\n      ["--card-color-darker"]: color === "primary" ? "var(--color-primary-darker)" : open_color__WEBPACK_IMPORTED_MODULE_1__[color][8],\n      ["--card-color-darkest"]: color === "primary" ? "var(--color-primary-darkest)" : open_color__WEBPACK_IMPORTED_MODULE_1__[color][9]\n    }\n  }, {\n    children: children\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9DYXJkLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQWdEO0FBQ2I7QUFDZDtBQUNkO0FBQ1A7QUFDQTtBQUNBLENBQUM7QUFDRCxTQUFTLHNEQUFJO0FBQ2I7QUFDQTtBQUNBLHVFQUF1RSx1Q0FBUztBQUNoRixxRkFBcUYsdUNBQVM7QUFDOUYsdUZBQXVGLHVDQUFTO0FBQ2hHO0FBQ0EsR0FBRztBQUNIO0FBQ0EsR0FBRztBQUNIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvQ2FyZC50c3g/MTMyMCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IE9wZW5Db2xvciBmcm9tIFwib3Blbi1jb2xvclwiO1xuaW1wb3J0IFwiLi9DYXJkLnNjc3NcIjtcbmV4cG9ydCBjb25zdCBDYXJkID0gKHtcbiAgY2hpbGRyZW4sXG4gIGNvbG9yXG59KSA9PiB7XG4gIHJldHVybiBfanN4KFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oe1xuICAgIGNsYXNzTmFtZTogXCJDYXJkXCIsXG4gICAgc3R5bGU6IHtcbiAgICAgIFtcIi0tY2FyZC1jb2xvclwiXTogY29sb3IgPT09IFwicHJpbWFyeVwiID8gXCJ2YXIoLS1jb2xvci1wcmltYXJ5KVwiIDogT3BlbkNvbG9yW2NvbG9yXVs3XSxcbiAgICAgIFtcIi0tY2FyZC1jb2xvci1kYXJrZXJcIl06IGNvbG9yID09PSBcInByaW1hcnlcIiA/IFwidmFyKC0tY29sb3ItcHJpbWFyeS1kYXJrZXIpXCIgOiBPcGVuQ29sb3JbY29sb3JdWzhdLFxuICAgICAgW1wiLS1jYXJkLWNvbG9yLWRhcmtlc3RcIl06IGNvbG9yID09PSBcInByaW1hcnlcIiA/IFwidmFyKC0tY29sb3ItcHJpbWFyeS1kYXJrZXN0KVwiIDogT3BlbkNvbG9yW2NvbG9yXVs5XVxuICAgIH1cbiAgfSwge1xuICAgIGNoaWxkcmVuOiBjaGlsZHJlblxuICB9KSk7XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/Card.tsx\n');
              }
            ),
            /***/
            "../../components/CheckboxItem.tsx": (
              /*!*****************************************!*\
                !*** ../../components/CheckboxItem.tsx ***!
                \*****************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "CheckboxItem": () => (/* binding */ CheckboxItem)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./icons */ "../../components/icons.tsx");\n/* harmony import */ var _CheckboxItem_scss__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./CheckboxItem.scss */ "../../components/CheckboxItem.scss");\n\n\n\n\n\nconst CheckboxItem = ({\n  children,\n  checked,\n  onChange,\n  className\n}) => {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_2__["default"])("Checkbox", className, {\n      "is-checked": checked\n    }),\n    onClick: event => {\n      onChange(!checked, event);\n      event.currentTarget.querySelector(".Checkbox-box").focus();\n    }\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("button", Object.assign({\n      className: "Checkbox-box",\n      role: "checkbox",\n      "aria-checked": checked\n    }, {\n      children: _icons__WEBPACK_IMPORTED_MODULE_3__.checkIcon\n    })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: "Checkbox-label"\n    }, {\n      children: children\n    }))]\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9DaGVja2JveEl0ZW0udHN4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBK0Q7QUFDckM7QUFDRjtBQUNZO0FBQ1A7QUFDdEI7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCxTQUFTLHVEQUFLO0FBQ2QsZUFBZSxnREFBSTtBQUNuQjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCxlQUFlLHNEQUFJO0FBQ25CO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxnQkFBZ0IsNkNBQVM7QUFDekIsS0FBSyxJQUFJLHNEQUFJO0FBQ2I7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvQ2hlY2tib3hJdGVtLnRzeD9mNmZiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgY2xzeCBmcm9tIFwiY2xzeFwiO1xuaW1wb3J0IHsgY2hlY2tJY29uIH0gZnJvbSBcIi4vaWNvbnNcIjtcbmltcG9ydCBcIi4vQ2hlY2tib3hJdGVtLnNjc3NcIjtcbmV4cG9ydCBjb25zdCBDaGVja2JveEl0ZW0gPSAoe1xuICBjaGlsZHJlbixcbiAgY2hlY2tlZCxcbiAgb25DaGFuZ2UsXG4gIGNsYXNzTmFtZVxufSkgPT4ge1xuICByZXR1cm4gX2pzeHMoXCJkaXZcIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgY2xhc3NOYW1lOiBjbHN4KFwiQ2hlY2tib3hcIiwgY2xhc3NOYW1lLCB7XG4gICAgICBcImlzLWNoZWNrZWRcIjogY2hlY2tlZFxuICAgIH0pLFxuICAgIG9uQ2xpY2s6IGV2ZW50ID0+IHtcbiAgICAgIG9uQ2hhbmdlKCFjaGVja2VkLCBldmVudCk7XG4gICAgICBldmVudC5jdXJyZW50VGFyZ2V0LnF1ZXJ5U2VsZWN0b3IoXCIuQ2hlY2tib3gtYm94XCIpLmZvY3VzKCk7XG4gICAgfVxuICB9LCB7XG4gICAgY2hpbGRyZW46IFtfanN4KFwiYnV0dG9uXCIsIE9iamVjdC5hc3NpZ24oe1xuICAgICAgY2xhc3NOYW1lOiBcIkNoZWNrYm94LWJveFwiLFxuICAgICAgcm9sZTogXCJjaGVja2JveFwiLFxuICAgICAgXCJhcmlhLWNoZWNrZWRcIjogY2hlY2tlZFxuICAgIH0sIHtcbiAgICAgIGNoaWxkcmVuOiBjaGVja0ljb25cbiAgICB9KSksIF9qc3goXCJkaXZcIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgICBjbGFzc05hbWU6IFwiQ2hlY2tib3gtbGFiZWxcIlxuICAgIH0sIHtcbiAgICAgIGNoaWxkcmVuOiBjaGlsZHJlblxuICAgIH0pKV1cbiAgfSkpO1xufTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/CheckboxItem.tsx\n');
              }
            ),
            /***/
            "../../components/ColorPicker/ColorInput.tsx": (
              /*!***************************************************!*\
                !*** ../../components/ColorPicker/ColorInput.tsx ***!
                \***************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "ColorInput": () => (/* binding */ ColorInput)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _ColorPicker__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ColorPicker */ "../../components/ColorPicker/ColorPicker.tsx");\n/* harmony import */ var jotai__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! jotai */ "../../../node_modules/jotai/esm/index.mjs");\n/* harmony import */ var _colorPickerUtils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./colorPickerUtils */ "../../components/ColorPicker/colorPickerUtils.ts");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../icons */ "../../components/icons.tsx");\n/* harmony import */ var _jotai__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../jotai */ "../../jotai.ts");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../keys */ "../../keys.ts");\n/* harmony import */ var _EyeDropper__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../EyeDropper */ "../../components/EyeDropper.tsx");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../i18n */ "../../i18n.ts");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../App */ "../../components/App.tsx");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../utils */ "../../utils.ts");\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst ColorInput = ({\n  color,\n  onChange,\n  label,\n  colorPickerType\n}) => {\n  const device = (0,_App__WEBPACK_IMPORTED_MODULE_10__.useDevice)();\n  const [innerValue, setInnerValue] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(color);\n  const [activeSection, setActiveColorPickerSection] = (0,jotai__WEBPACK_IMPORTED_MODULE_12__.useAtom)(_colorPickerUtils__WEBPACK_IMPORTED_MODULE_3__.activeColorPickerSectionAtom);\n  (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {\n    setInnerValue(color);\n  }, [color]);\n  const changeColor = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(inputValue => {\n    const value = inputValue.toLowerCase();\n    const color = (0,_ColorPicker__WEBPACK_IMPORTED_MODULE_2__.getColor)(value);\n\n    if (color) {\n      onChange(color);\n    }\n\n    setInnerValue(value);\n  }, [onChange]);\n  const inputRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n  const eyeDropperTriggerRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n  (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {\n    if (inputRef.current) {\n      inputRef.current.focus();\n    }\n  }, [activeSection]);\n  const [eyeDropperState, setEyeDropperState] = (0,jotai__WEBPACK_IMPORTED_MODULE_12__.useAtom)(_EyeDropper__WEBPACK_IMPORTED_MODULE_7__.activeEyeDropperAtom, _jotai__WEBPACK_IMPORTED_MODULE_5__.jotaiScope);\n  (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {\n    return () => {\n      setEyeDropperState(null);\n    };\n  }, [setEyeDropperState]);\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n    className: "color-picker__input-label"\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: "color-picker__input-hash"\n    }, {\n      children: "#"\n    })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input", {\n      ref: activeSection === "hex" ? inputRef : undefined,\n      style: {\n        border: 0,\n        padding: 0\n      },\n      spellCheck: false,\n      className: "color-picker-input",\n      "aria-label": label,\n      onChange: event => {\n        changeColor(event.target.value);\n      },\n      value: (innerValue || "").replace(/^#/, ""),\n      onBlur: () => {\n        setInnerValue(color);\n      },\n      tabIndex: -1,\n      onFocus: () => setActiveColorPickerSection("hex"),\n      onKeyDown: event => {\n        var _a;\n\n        if (event.key === _keys__WEBPACK_IMPORTED_MODULE_6__.KEYS.TAB) {\n          return;\n        } else if (event.key === _keys__WEBPACK_IMPORTED_MODULE_6__.KEYS.ESCAPE) {\n          (_a = eyeDropperTriggerRef.current) === null || _a === void 0 ? void 0 : _a.focus();\n        }\n\n        event.stopPropagation();\n      }\n    }), !device.editor.isMobile && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n        style: {\n          width: "1px",\n          height: "1.25rem",\n          backgroundColor: "var(--default-border-color)"\n        }\n      }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n        ref: eyeDropperTriggerRef,\n        className: (0,clsx__WEBPACK_IMPORTED_MODULE_8__["default"])("excalidraw-eye-dropper-trigger", {\n          selected: eyeDropperState\n        }),\n        onClick: () => setEyeDropperState(s => s ? null : {\n          keepOpenOnAlt: false,\n          onSelect: color => onChange(color),\n          colorPickerType\n        }),\n        title: `${(0,_i18n__WEBPACK_IMPORTED_MODULE_9__.t)("labels.eyeDropper")} \u2014 ${_keys__WEBPACK_IMPORTED_MODULE_6__.KEYS.I.toLocaleUpperCase()} or ${(0,_utils__WEBPACK_IMPORTED_MODULE_11__.getShortcutKey)("Alt")} `\n      }, {\n        children: _icons__WEBPACK_IMPORTED_MODULE_4__.eyeDropperIcon\n      }))]\n    })]\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6268 characters]\n//# sourceURL=webpack-internal:///../../components/ColorPicker/ColorInput.tsx\n');
              }
            ),
            /***/
            "../../components/ColorPicker/ColorPicker.tsx": (
              /*!****************************************************!*\
                !*** ../../components/ColorPicker/ColorPicker.tsx ***!
                \****************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "ColorPicker": () => (/* binding */ ColorPicker),\n/* harmony export */   "getColor": () => (/* binding */ getColor)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils */ "../../utils.ts");\n/* harmony import */ var _TopPicks__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./TopPicks */ "../../components/ColorPicker/TopPicks.tsx");\n/* harmony import */ var _Picker__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Picker */ "../../components/ColorPicker/Picker.tsx");\n/* harmony import */ var _radix_ui_react_popover__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @radix-ui/react-popover */ "../../../node_modules/@radix-ui/react-popover/dist/index.module.js");\n/* harmony import */ var jotai__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! jotai */ "../../../node_modules/jotai/esm/index.mjs");\n/* harmony import */ var _colorPickerUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./colorPickerUtils */ "../../components/ColorPicker/colorPickerUtils.ts");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../App */ "../../components/App.tsx");\n/* harmony import */ var _colors__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../colors */ "../../colors.ts");\n/* harmony import */ var _PickerHeading__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./PickerHeading */ "../../components/ColorPicker/PickerHeading.tsx");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../i18n */ "../../i18n.ts");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _jotai__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../jotai */ "../../jotai.ts");\n/* harmony import */ var _ColorInput__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./ColorInput */ "../../components/ColorPicker/ColorInput.tsx");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var _EyeDropper__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../EyeDropper */ "../../components/EyeDropper.tsx");\n/* harmony import */ var _ColorPicker_scss__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./ColorPicker.scss */ "../../components/ColorPicker/ColorPicker.scss");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst isValidColor = color => {\n  const style = new Option().style;\n  style.color = color;\n  return !!style.color;\n};\n\nconst getColor = color => {\n  if ((0,_utils__WEBPACK_IMPORTED_MODULE_1__.isTransparent)(color)) {\n    return color;\n  } // testing for `#` first fixes a bug on Electron (more specfically, an\n  // Obsidian popout window), where a hex color without `#` is (incorrectly)\n  // considered valid\n\n\n  return isValidColor(`#${color}`) ? `#${color}` : isValidColor(color) ? color : null;\n};\n\nconst ColorPickerPopupContent = ({\n  type,\n  color,\n  onChange,\n  label,\n  elements,\n  palette = _colors__WEBPACK_IMPORTED_MODULE_6__.COLOR_PALETTE,\n  updateData\n}) => {\n  const [, setActiveColorPickerSection] = (0,jotai__WEBPACK_IMPORTED_MODULE_15__.useAtom)(_colorPickerUtils__WEBPACK_IMPORTED_MODULE_4__.activeColorPickerSectionAtom);\n  const [eyeDropperState, setEyeDropperState] = (0,jotai__WEBPACK_IMPORTED_MODULE_15__.useAtom)(_EyeDropper__WEBPACK_IMPORTED_MODULE_13__.activeEyeDropperAtom, _jotai__WEBPACK_IMPORTED_MODULE_10__.jotaiScope);\n  const {\n    container\n  } = (0,_App__WEBPACK_IMPORTED_MODULE_5__.useExcalidrawContainer)();\n  const device = (0,_App__WEBPACK_IMPORTED_MODULE_5__.useDevice)();\n\n  const colorInputJSX = (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_PickerHeading__WEBPACK_IMPORTED_MODULE_7__["default"], {\n      children: (0,_i18n__WEBPACK_IMPORTED_MODULE_8__.t)("colorPicker.hexCode")\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ColorInput__WEBPACK_IMPORTED_MODULE_11__.ColorInput, {\n      color: color,\n      label: label,\n      onChange: color => {\n        onChange(color);\n      },\n      colorPickerType: type\n    })]\n  });\n\n  const popoverRef = (0,react__WEBPACK_IMPORTED_MODULE_12__.useRef)(null);\n\n  const focusPickerContent = () => {\n    var _a, _b;\n\n    (_b = (_a = popoverRef.current) === null || _a === void 0 ? void 0 : _a.querySelector(".color-picker-content")) === null || _b === void 0 ? void 0 : _b.focus();\n  };\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_radix_ui_react_popover__WEBPACK_IMPORTED_MODULE_16__.Portal, Object.assign({\n    container: container\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_radix_ui_react_popover__WEBPACK_IMPORTED_MODULE_16__.Content, Object.assign({\n      ref: popoverRef,\n      className: "focus-visible-none",\n      "data-prevent-outside-click": true,\n      onFocusOutside: event => {\n        focusPickerContent();\n        event.preventDefault();\n      },\n      onPointerDownOutside: event => {\n        if (eyeDropperState) {\n          // prevent from closing if we click outside the popover\n          // while eyedropping (e.g. click when clicking the sidebar;\n          // the eye-dropper-backdrop is prevented downstream)\n          event.preventDefault();\n        }\n      },\n      onCloseAutoFocus: e => {\n        e.stopPropagation(); // prevents focusing the trigger\n\n        e.preventDefault(); // return focus to excalidraw container unless\n        // user focuses an interactive element, such as a button, or\n        // enters the text editor by clicking on canvas with the text tool\n\n        if (container && !(0,_utils__WEBPACK_IMPORTED_MODULE_1__.isInteractive)(document.activeElement)) {\n          container.focus();\n        }\n\n        updateData({\n          openPopup: null\n        });\n        setActiveColorPickerSection(null);\n      },\n      side: device.editor.isMobile && !device.viewport.isLandscape ? "bottom" : "right",\n      align: device.editor.isMobile && !device.viewport.isLandscape ? "center" : "start",\n      alignOffset: -16,\n      sideOffset: 20,\n      style: {\n        zIndex: "var(--zIndex-layerUI)",\n        backgroundColor: "var(--popup-bg-color)",\n        maxWidth: "208px",\n        maxHeight: window.innerHeight,\n        padding: "12px",\n        borderRadius: "8px",\n        boxSizing: "border-box",\n        overflowY: "auto",\n        boxShadow: "0px 7px 14px rgba(0, 0, 0, 0.05), 0px 0px 3.12708px rgba(0, 0, 0, 0.0798), 0px 0px 0.931014px rgba(0, 0, 0, 0.1702)"\n      }\n    }, {\n      children: [palette ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Picker__WEBPACK_IMPORTED_MODULE_3__.Picker, Object.assign({\n        palette: palette,\n        color: color,\n        onChange: changedColor => {\n          onChange(changedColor);\n        },\n        onEyeDropperToggle: force => {\n          setEyeDropperState(state => {\n            if (force) {\n              state = state || {\n                keepOpenOnAlt: true,\n                onSelect: onChange,\n                colorPickerType: type\n              };\n              state.keepOpenOnAlt = true;\n              return state;\n            }\n\n            return force === false || state ? null : {\n              keepOpenOnAlt: false,\n              onSelect: onChange,\n              colorPickerType: type\n            };\n          });\n        },\n        onEscape: event => {\n          if (eyeDropperState) {\n            setEyeDropperState(null);\n          } else if ((0,_utils__WEBPACK_IMPORTED_MODULE_1__.isWritableElement)(event.target)) {\n            focusPickerContent();\n          } else {\n            updateData({\n              openPopup: null\n            });\n          }\n        },\n        label: label,\n        type: type,\n        elements: elements,\n        updateData: updateData\n      }, {\n        children: colorInputJSX\n      })) : colorInputJSX, (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_radix_ui_react_popover__WEBPACK_IMPORTED_MODULE_16__.Arrow, {\n        width: 20,\n        height: 10,\n        style: {\n          fill: "var(--popup-bg-color)",\n          filter: "drop-shadow(rgba(0, 0, 0, 0.05) 0px 3px 2px)"\n        }\n      })]\n    }))\n  }));\n};\n\nconst ColorPickerTrigger = ({\n  label,\n  color,\n  type\n}) => {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_radix_ui_react_popover__WEBPACK_IMPORTED_MODULE_16__.Trigger, Object.assign({\n    type: "button",\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_9__["default"])("color-picker__button active-color", {\n      "is-transparent": color === "transparent" || !color\n    }),\n    "aria-label": label,\n    style: color ? {\n      "--swatch-color": color\n    } : undefined,\n    title: type === "elementStroke" ? (0,_i18n__WEBPACK_IMPORTED_MODULE_8__.t)("labels.showStroke") : (0,_i18n__WEBPACK_IMPORTED_MODULE_8__.t)("labels.showBackground")\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n      className: "color-picker__button-outline"\n    })\n  }));\n};\n\nconst ColorPicker = ({\n  type,\n  color,\n  onChange,\n  label,\n  elements,\n  palette = _colors__WEBPACK_IMPORTED_MODULE_6__.COLOR_PALETTE,\n  topPicks,\n  updateData,\n  appState\n}) => {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n      role: "dialog",\n      "aria-modal": "true",\n      className: "color-picker-container"\n    }, {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_TopPicks__WEBPACK_IMPORTED_MODULE_2__.TopPicks, {\n        activeColor: color,\n        onChange: onChange,\n        type: type,\n        topPicks: topPicks\n      }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n        style: {\n          width: 1,\n          height: "100%",\n          backgroundColor: "var(--default-border-color)",\n          margin: "0 auto"\n        }\n      }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_radix_ui_react_popover__WEBPACK_IMPORTED_MODULE_16__.Root, Object.assign({\n        open: appState.openPopup === type,\n        onOpenChange: open => {\n          updateData({\n            openPopup: open ? type : null\n          });\n        }\n      }, {\n        children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(ColorPickerTrigger, {\n          color: color,\n          label: label,\n          type: type\n        }), appState.openPopup === type && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(ColorPickerPopupContent, {\n          type: type,\n          color: color,\n          onChange: onChange,\n          label: label,\n          elements: elements,\n          palette: palette,\n          updateData: updateData\n        })]\n      }))]\n    }))\n  });\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 13168 characters]\n//# sourceURL=webpack-internal:///../../components/ColorPicker/ColorPicker.tsx\n');
              }
            ),
            /***/
            "../../components/ColorPicker/CustomColorList.tsx": (
              /*!********************************************************!*\
                !*** ../../components/ColorPicker/CustomColorList.tsx ***!
                \********************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "CustomColorList": () => (/* binding */ CustomColorList)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var jotai__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! jotai */ "../../../node_modules/jotai/esm/index.mjs");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _colorPickerUtils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./colorPickerUtils */ "../../components/ColorPicker/colorPickerUtils.ts");\n/* harmony import */ var _HotkeyLabel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./HotkeyLabel */ "../../components/ColorPicker/HotkeyLabel.tsx");\n\n\n\n\n\n\nconst CustomColorList = ({\n  colors,\n  color,\n  onChange,\n  label\n}) => {\n  const [activeColorPickerSection, setActiveColorPickerSection] = (0,jotai__WEBPACK_IMPORTED_MODULE_5__.useAtom)(_colorPickerUtils__WEBPACK_IMPORTED_MODULE_3__.activeColorPickerSectionAtom);\n  const btnRef = (0,react__WEBPACK_IMPORTED_MODULE_2__.useRef)(null);\n  (0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(() => {\n    if (btnRef.current) {\n      btnRef.current.focus();\n    }\n  }, [color, activeColorPickerSection]);\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: "color-picker-content--default"\n  }, {\n    children: colors.map((c, i) => {\n      return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("button", Object.assign({\n        ref: color === c ? btnRef : undefined,\n        tabIndex: -1,\n        type: "button",\n        className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__["default"])("color-picker__button color-picker__button--large", {\n          active: color === c,\n          "is-transparent": c === "transparent" || !c\n        }),\n        onClick: () => {\n          onChange(c);\n          setActiveColorPickerSection("custom");\n        },\n        title: c,\n        "aria-label": label,\n        style: {\n          "--swatch-color": c\n        }\n      }, {\n        children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n          className: "color-picker__button-outline"\n        }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_HotkeyLabel__WEBPACK_IMPORTED_MODULE_4__["default"], {\n          color: c,\n          keyLabel: i + 1,\n          isCustomColor: true\n        })]\n      }), i);\n    })\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9Db2xvclBpY2tlci9DdXN0b21Db2xvckxpc3QudHN4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQStEO0FBQ3ZDO0FBQ1E7QUFDVTtBQUN3QjtBQUMxQjtBQUNqQztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELGtFQUFrRSw4Q0FBTyxDQUFDLDJFQUE0QjtBQUN0RyxpQkFBaUIsNkNBQU07QUFDdkIsRUFBRSxnREFBUztBQUNYO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCxTQUFTLHNEQUFJO0FBQ2I7QUFDQSxHQUFHO0FBQ0g7QUFDQSxhQUFhLHVEQUFLO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixnREFBSTtBQUN2QjtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLG1CQUFtQixzREFBSTtBQUN2QjtBQUNBLFNBQVMsR0FBRyxzREFBSSxDQUFDLG9EQUFXO0FBQzVCO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1AsS0FBSztBQUNMLEdBQUc7QUFDSCIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL0NvbG9yUGlja2VyL0N1c3RvbUNvbG9yTGlzdC50c3g/ZjJiYiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IGNsc3ggZnJvbSBcImNsc3hcIjtcbmltcG9ydCB7IHVzZUF0b20gfSBmcm9tIFwiam90YWlcIjtcbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBhY3RpdmVDb2xvclBpY2tlclNlY3Rpb25BdG9tIH0gZnJvbSBcIi4vY29sb3JQaWNrZXJVdGlsc1wiO1xuaW1wb3J0IEhvdGtleUxhYmVsIGZyb20gXCIuL0hvdGtleUxhYmVsXCI7XG5leHBvcnQgY29uc3QgQ3VzdG9tQ29sb3JMaXN0ID0gKHtcbiAgY29sb3JzLFxuICBjb2xvcixcbiAgb25DaGFuZ2UsXG4gIGxhYmVsXG59KSA9PiB7XG4gIGNvbnN0IFthY3RpdmVDb2xvclBpY2tlclNlY3Rpb24sIHNldEFjdGl2ZUNvbG9yUGlja2VyU2VjdGlvbl0gPSB1c2VBdG9tKGFjdGl2ZUNvbG9yUGlja2VyU2VjdGlvbkF0b20pO1xuICBjb25zdCBidG5SZWYgPSB1c2VSZWYobnVsbCk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGJ0blJlZi5jdXJyZW50KSB7XG4gICAgICBidG5SZWYuY3VycmVudC5mb2N1cygpO1xuICAgIH1cbiAgfSwgW2NvbG9yLCBhY3RpdmVDb2xvclBpY2tlclNlY3Rpb25dKTtcbiAgcmV0dXJuIF9qc3goXCJkaXZcIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgY2xhc3NOYW1lOiBcImNvbG9yLXBpY2tlci1jb250ZW50LS1kZWZhdWx0XCJcbiAgfSwge1xuICAgIGNoaWxkcmVuOiBjb2xvcnMubWFwKChjLCBpKSA9PiB7XG4gICAgICByZXR1cm4gX2pzeHMoXCJidXR0b25cIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgICAgIHJlZjogY29sb3IgPT09IGMgPyBidG5SZWYgOiB1bmRlZmluZWQsXG4gICAgICAgIHRhYkluZGV4OiAtMSxcbiAgICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgICAgY2xhc3NOYW1lOiBjbHN4KFwiY29sb3ItcGlja2VyX19idXR0b24gY29sb3ItcGlja2VyX19idXR0b24tLWxhcmdlXCIsIHtcbiAgICAgICAgICBhY3RpdmU6IGNvbG9yID09PSBjLFxuICAgICAgICAgIFwiaXMtdHJhbnNwYXJlbnRcIjogYyA9PT0gXCJ0cmFuc3BhcmVudFwiIHx8ICFjXG4gICAgICAgIH0pLFxuICAgICAgICBvbkNsaWNrOiAoKSA9PiB7XG4gICAgICAgICAgb25DaGFuZ2UoYyk7XG4gICAgICAgICAgc2V0QWN0aXZlQ29sb3JQaWNrZXJTZWN0aW9uKFwiY3VzdG9tXCIpO1xuICAgICAgICB9LFxuICAgICAgICB0aXRsZTogYyxcbiAgICAgICAgXCJhcmlhLWxhYmVsXCI6IGxhYmVsLFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgIFwiLS1zd2F0Y2gtY29sb3JcIjogY1xuICAgICAgICB9XG4gICAgICB9LCB7XG4gICAgICAgIGNoaWxkcmVuOiBbX2pzeChcImRpdlwiLCB7XG4gICAgICAgICAgY2xhc3NOYW1lOiBcImNvbG9yLXBpY2tlcl9fYnV0dG9uLW91dGxpbmVcIlxuICAgICAgICB9KSwgX2pzeChIb3RrZXlMYWJlbCwge1xuICAgICAgICAgIGNvbG9yOiBjLFxuICAgICAgICAgIGtleUxhYmVsOiBpICsgMSxcbiAgICAgICAgICBpc0N1c3RvbUNvbG9yOiB0cnVlXG4gICAgICAgIH0pXVxuICAgICAgfSksIGkpO1xuICAgIH0pXG4gIH0pKTtcbn07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/ColorPicker/CustomColorList.tsx\n');
              }
            ),
            /***/
            "../../components/ColorPicker/HotkeyLabel.tsx": (
              /*!****************************************************!*\
                !*** ../../components/ColorPicker/HotkeyLabel.tsx ***!
                \****************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _colorPickerUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./colorPickerUtils */ "../../components/ColorPicker/colorPickerUtils.ts");\n\n\n\n\nconst HotkeyLabel = ({\n  color,\n  keyLabel,\n  isCustomColor = false,\n  isShade = false\n}) => {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n    className: "color-picker__button__hotkey-label",\n    style: {\n      color: (0,_colorPickerUtils__WEBPACK_IMPORTED_MODULE_2__.getContrastYIQ)(color, isCustomColor)\n    }\n  }, {\n    children: [isShade && "\u21E7", keyLabel]\n  }));\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (HotkeyLabel);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9Db2xvclBpY2tlci9Ib3RrZXlMYWJlbC50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBa0Q7QUFDeEI7QUFDMEI7O0FBRXBEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsU0FBUyx1REFBSztBQUNkO0FBQ0E7QUFDQSxhQUFhLGlFQUFjO0FBQzNCO0FBQ0EsR0FBRztBQUNIO0FBQ0EsR0FBRztBQUNIOztBQUVBLGlFQUFlLFdBQVciLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9Db2xvclBpY2tlci9Ib3RrZXlMYWJlbC50c3g/NzQ4ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBnZXRDb250cmFzdFlJUSB9IGZyb20gXCIuL2NvbG9yUGlja2VyVXRpbHNcIjtcblxuY29uc3QgSG90a2V5TGFiZWwgPSAoe1xuICBjb2xvcixcbiAga2V5TGFiZWwsXG4gIGlzQ3VzdG9tQ29sb3IgPSBmYWxzZSxcbiAgaXNTaGFkZSA9IGZhbHNlXG59KSA9PiB7XG4gIHJldHVybiBfanN4cyhcImRpdlwiLCBPYmplY3QuYXNzaWduKHtcbiAgICBjbGFzc05hbWU6IFwiY29sb3ItcGlja2VyX19idXR0b25fX2hvdGtleS1sYWJlbFwiLFxuICAgIHN0eWxlOiB7XG4gICAgICBjb2xvcjogZ2V0Q29udHJhc3RZSVEoY29sb3IsIGlzQ3VzdG9tQ29sb3IpXG4gICAgfVxuICB9LCB7XG4gICAgY2hpbGRyZW46IFtpc1NoYWRlICYmIFwi4oenXCIsIGtleUxhYmVsXVxuICB9KSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBIb3RrZXlMYWJlbDsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/ColorPicker/HotkeyLabel.tsx\n');
              }
            ),
            /***/
            "../../components/ColorPicker/Picker.tsx": (
              /*!***********************************************!*\
                !*** ../../components/ColorPicker/Picker.tsx ***!
                \***********************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "Picker": () => (/* binding */ Picker)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../i18n */ "../../i18n.ts");\n/* harmony import */ var _ShadeList__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./ShadeList */ "../../components/ColorPicker/ShadeList.tsx");\n/* harmony import */ var _PickerColorList__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./PickerColorList */ "../../components/ColorPicker/PickerColorList.tsx");\n/* harmony import */ var jotai__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! jotai */ "../../../node_modules/jotai/esm/index.mjs");\n/* harmony import */ var _CustomColorList__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./CustomColorList */ "../../components/ColorPicker/CustomColorList.tsx");\n/* harmony import */ var _keyboardNavHandlers__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./keyboardNavHandlers */ "../../components/ColorPicker/keyboardNavHandlers.ts");\n/* harmony import */ var _PickerHeading__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./PickerHeading */ "../../components/ColorPicker/PickerHeading.tsx");\n/* harmony import */ var _colorPickerUtils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./colorPickerUtils */ "../../components/ColorPicker/colorPickerUtils.ts");\n/* harmony import */ var _colors__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../colors */ "../../colors.ts");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../keys */ "../../keys.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../constants */ "../../constants.ts");\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst Picker = ({\n  color,\n  onChange,\n  label,\n  type,\n  elements,\n  palette,\n  updateData,\n  children,\n  onEyeDropperToggle,\n  onEscape\n}) => {\n  var _a;\n\n  const [customColors] = react__WEBPACK_IMPORTED_MODULE_1___default().useState(() => {\n    if (type === "canvasBackground") {\n      return [];\n    }\n\n    return (0,_colorPickerUtils__WEBPACK_IMPORTED_MODULE_8__.getMostUsedCustomColors)(elements, type, palette);\n  });\n  const [activeColorPickerSection, setActiveColorPickerSection] = (0,jotai__WEBPACK_IMPORTED_MODULE_12__.useAtom)(_colorPickerUtils__WEBPACK_IMPORTED_MODULE_8__.activeColorPickerSectionAtom);\n  const colorObj = (0,_colorPickerUtils__WEBPACK_IMPORTED_MODULE_8__.getColorNameAndShadeFromColor)({\n    color,\n    palette\n  });\n  (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {\n    if (!activeColorPickerSection) {\n      const isCustom = (0,_colorPickerUtils__WEBPACK_IMPORTED_MODULE_8__.isCustomColor)({\n        color,\n        palette\n      });\n      const isCustomButNotInList = isCustom && !customColors.includes(color);\n      setActiveColorPickerSection(isCustomButNotInList ? "hex" : isCustom ? "custom" : (colorObj === null || colorObj === void 0 ? void 0 : colorObj.shade) != null ? "shades" : "baseColors");\n    }\n  }, [activeColorPickerSection, color, palette, setActiveColorPickerSection, colorObj, customColors]);\n  const [activeShade, setActiveShade] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)((_a = colorObj === null || colorObj === void 0 ? void 0 : colorObj.shade) !== null && _a !== void 0 ? _a : type === "elementBackground" ? _colors__WEBPACK_IMPORTED_MODULE_9__.DEFAULT_ELEMENT_BACKGROUND_COLOR_INDEX : _colors__WEBPACK_IMPORTED_MODULE_9__.DEFAULT_ELEMENT_STROKE_COLOR_INDEX);\n  (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {\n    if ((colorObj === null || colorObj === void 0 ? void 0 : colorObj.shade) != null) {\n      setActiveShade(colorObj.shade);\n    }\n\n    const keyup = event => {\n      if (event.key === _keys__WEBPACK_IMPORTED_MODULE_10__.KEYS.ALT) {\n        onEyeDropperToggle(false);\n      }\n    };\n\n    document.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_11__.EVENT.KEYUP, keyup, {\n      capture: true\n    });\n    return () => {\n      document.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_11__.EVENT.KEYUP, keyup, {\n        capture: true\n      });\n    };\n  }, [colorObj, onEyeDropperToggle]);\n  const pickerRef = react__WEBPACK_IMPORTED_MODULE_1___default().useRef(null);\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    role: "dialog",\n    "aria-modal": "true",\n    "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.colorPicker")\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n      ref: pickerRef,\n      onKeyDown: event => {\n        const handled = (0,_keyboardNavHandlers__WEBPACK_IMPORTED_MODULE_6__.colorPickerKeyNavHandler)({\n          event,\n          activeColorPickerSection,\n          palette,\n          color,\n          onChange,\n          onEyeDropperToggle,\n          customColors,\n          setActiveColorPickerSection,\n          updateData,\n          activeShade,\n          onEscape\n        });\n\n        if (handled) {\n          event.preventDefault();\n          event.stopPropagation();\n        }\n      },\n      className: "color-picker-content",\n      // to allow focusing by clicking but not by tabbing\n      tabIndex: -1\n    }, {\n      children: [!!customColors.length && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", {\n        children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_PickerHeading__WEBPACK_IMPORTED_MODULE_7__["default"], {\n          children: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("colorPicker.mostUsedCustomColors")\n        }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_CustomColorList__WEBPACK_IMPORTED_MODULE_5__.CustomColorList, {\n          colors: customColors,\n          color: color,\n          label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("colorPicker.mostUsedCustomColors"),\n          onChange: onChange\n        })]\n      }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", {\n        children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_PickerHeading__WEBPACK_IMPORTED_MODULE_7__["default"], {\n          children: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("colorPicker.colors")\n        }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_PickerColorList__WEBPACK_IMPORTED_MODULE_4__["default"], {\n          color: color,\n          label: label,\n          palette: palette,\n          onChange: onChange,\n          activeShade: activeShade\n        })]\n      }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", {\n        children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_PickerHeading__WEBPACK_IMPORTED_MODULE_7__["default"], {\n          children: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("colorPicker.shades")\n        }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ShadeList__WEBPACK_IMPORTED_MODULE_3__.ShadeList, {\n          hex: color,\n          onChange: onChange,\n          palette: palette\n        })]\n      }), children]\n    }))\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 7980 characters]\n//# sourceURL=webpack-internal:///../../components/ColorPicker/Picker.tsx\n');
              }
            ),
            /***/
            "../../components/ColorPicker/PickerColorList.tsx": (
              /*!********************************************************!*\
                !*** ../../components/ColorPicker/PickerColorList.tsx ***!
                \********************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var jotai__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! jotai */ "../../../node_modules/jotai/esm/index.mjs");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _colorPickerUtils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./colorPickerUtils */ "../../components/ColorPicker/colorPickerUtils.ts");\n/* harmony import */ var _HotkeyLabel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./HotkeyLabel */ "../../components/ColorPicker/HotkeyLabel.tsx");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../i18n */ "../../i18n.ts");\n\n\n\n\n\n\n\n\nconst PickerColorList = ({\n  palette,\n  color,\n  onChange,\n  label,\n  activeShade\n}) => {\n  const colorObj = (0,_colorPickerUtils__WEBPACK_IMPORTED_MODULE_3__.getColorNameAndShadeFromColor)({\n    color: color || "transparent",\n    palette\n  });\n  const [activeColorPickerSection, setActiveColorPickerSection] = (0,jotai__WEBPACK_IMPORTED_MODULE_6__.useAtom)(_colorPickerUtils__WEBPACK_IMPORTED_MODULE_3__.activeColorPickerSectionAtom);\n  const btnRef = (0,react__WEBPACK_IMPORTED_MODULE_2__.useRef)(null);\n  (0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(() => {\n    if (btnRef.current && activeColorPickerSection === "baseColors") {\n      btnRef.current.focus();\n    }\n  }, [colorObj === null || colorObj === void 0 ? void 0 : colorObj.colorName, activeColorPickerSection]);\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: "color-picker-content--default"\n  }, {\n    children: Object.entries(palette).map(([key, value], index) => {\n      const color = (Array.isArray(value) ? value[activeShade] : value) || "transparent";\n      const keybinding = _colorPickerUtils__WEBPACK_IMPORTED_MODULE_3__.colorPickerHotkeyBindings[index];\n      const label = (0,_i18n__WEBPACK_IMPORTED_MODULE_5__.t)(`colors.${key.replace(/\\d+/, "")}`, null, "");\n      return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("button", Object.assign({\n        ref: (colorObj === null || colorObj === void 0 ? void 0 : colorObj.colorName) === key ? btnRef : undefined,\n        tabIndex: -1,\n        type: "button",\n        className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__["default"])("color-picker__button color-picker__button--large", {\n          active: (colorObj === null || colorObj === void 0 ? void 0 : colorObj.colorName) === key,\n          "is-transparent": color === "transparent" || !color\n        }),\n        onClick: () => {\n          onChange(color);\n          setActiveColorPickerSection("baseColors");\n        },\n        title: `${label}${color.startsWith("#") ? ` ${color}` : ""} \u2014 ${keybinding}`,\n        "aria-label": `${label} \u2014 ${keybinding}`,\n        style: color ? {\n          "--swatch-color": color\n        } : undefined,\n        "data-testid": `color-${key}`\n      }, {\n        children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n          className: "color-picker__button-outline"\n        }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_HotkeyLabel__WEBPACK_IMPORTED_MODULE_4__["default"], {\n          color: color,\n          keyLabel: keybinding\n        })]\n      }), key);\n    })\n  }));\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (PickerColorList);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4536 characters]\n//# sourceURL=webpack-internal:///../../components/ColorPicker/PickerColorList.tsx\n');
              }
            ),
            /***/
            "../../components/ColorPicker/PickerHeading.tsx": (
              /*!******************************************************!*\
                !*** ../../components/ColorPicker/PickerHeading.tsx ***!
                \******************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n\n\nconst PickerHeading = ({\n  children\n}) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n  className: "color-picker__heading"\n}, {\n  children: children\n}));\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (PickerHeading);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9Db2xvclBpY2tlci9QaWNrZXJIZWFkaW5nLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFnRDs7QUFFaEQ7QUFDQTtBQUNBLENBQUMsS0FBSyxzREFBSTtBQUNWO0FBQ0EsQ0FBQztBQUNEO0FBQ0EsQ0FBQzs7QUFFRCxpRUFBZSxhQUFhIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvQ29sb3JQaWNrZXIvUGlja2VySGVhZGluZy50c3g/YWNiYyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuXG5jb25zdCBQaWNrZXJIZWFkaW5nID0gKHtcbiAgY2hpbGRyZW5cbn0pID0+IF9qc3goXCJkaXZcIiwgT2JqZWN0LmFzc2lnbih7XG4gIGNsYXNzTmFtZTogXCJjb2xvci1waWNrZXJfX2hlYWRpbmdcIlxufSwge1xuICBjaGlsZHJlbjogY2hpbGRyZW5cbn0pKTtcblxuZXhwb3J0IGRlZmF1bHQgUGlja2VySGVhZGluZzsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/ColorPicker/PickerHeading.tsx\n');
              }
            ),
            /***/
            "../../components/ColorPicker/ShadeList.tsx": (
              /*!**************************************************!*\
                !*** ../../components/ColorPicker/ShadeList.tsx ***!
                \**************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "ShadeList": () => (/* binding */ ShadeList)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var jotai__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! jotai */ "../../../node_modules/jotai/esm/index.mjs");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _colorPickerUtils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./colorPickerUtils */ "../../components/ColorPicker/colorPickerUtils.ts");\n/* harmony import */ var _HotkeyLabel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./HotkeyLabel */ "../../components/ColorPicker/HotkeyLabel.tsx");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../i18n */ "../../i18n.ts");\n\n\n\n\n\n\n\nconst ShadeList = ({\n  hex,\n  onChange,\n  palette\n}) => {\n  const colorObj = (0,_colorPickerUtils__WEBPACK_IMPORTED_MODULE_3__.getColorNameAndShadeFromColor)({\n    color: hex || "transparent",\n    palette\n  });\n  const [activeColorPickerSection, setActiveColorPickerSection] = (0,jotai__WEBPACK_IMPORTED_MODULE_6__.useAtom)(_colorPickerUtils__WEBPACK_IMPORTED_MODULE_3__.activeColorPickerSectionAtom);\n  const btnRef = (0,react__WEBPACK_IMPORTED_MODULE_2__.useRef)(null);\n  (0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(() => {\n    if (btnRef.current && activeColorPickerSection === "shades") {\n      btnRef.current.focus();\n    }\n  }, [colorObj, activeColorPickerSection]);\n\n  if (colorObj) {\n    const {\n      colorName,\n      shade\n    } = colorObj;\n    const shades = palette[colorName];\n\n    if (Array.isArray(shades)) {\n      return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n        className: "color-picker-content--default shades"\n      }, {\n        children: shades.map((color, i) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("button", Object.assign({\n          ref: i === shade && activeColorPickerSection === "shades" ? btnRef : undefined,\n          tabIndex: -1,\n          type: "button",\n          className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__["default"])("color-picker__button color-picker__button--large", {\n            active: i === shade\n          }),\n          "aria-label": "Shade",\n          title: `${colorName} - ${i + 1}`,\n          style: color ? {\n            "--swatch-color": color\n          } : undefined,\n          onClick: () => {\n            onChange(color);\n            setActiveColorPickerSection("shades");\n          }\n        }, {\n          children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n            className: "color-picker__button-outline"\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_HotkeyLabel__WEBPACK_IMPORTED_MODULE_4__["default"], {\n            color: color,\n            keyLabel: i + 1,\n            isShade: true\n          })]\n        }), i))\n      }));\n    }\n  }\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n    className: "color-picker-content--default",\n    style: {\n      position: "relative"\n    },\n    tabIndex: -1\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("button", {\n      type: "button",\n      tabIndex: -1,\n      className: "color-picker__button color-picker__button--large color-picker__button--no-focus-visible"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      tabIndex: -1,\n      style: {\n        position: "absolute",\n        top: 0,\n        left: 0,\n        right: 0,\n        bottom: 0,\n        display: "flex",\n        alignItems: "center",\n        justifyContent: "center",\n        textAlign: "center",\n        fontSize: "0.75rem"\n      }\n    }, {\n      children: (0,_i18n__WEBPACK_IMPORTED_MODULE_5__.t)("colorPicker.noShades")\n    }))]\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5120 characters]\n//# sourceURL=webpack-internal:///../../components/ColorPicker/ShadeList.tsx\n');
              }
            ),
            /***/
            "../../components/ColorPicker/TopPicks.tsx": (
              /*!*************************************************!*\
                !*** ../../components/ColorPicker/TopPicks.tsx ***!
                \*************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "TopPicks": () => (/* binding */ TopPicks)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _colors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../colors */ "../../colors.ts");\n\n\n\nconst TopPicks = ({\n  onChange,\n  type,\n  activeColor,\n  topPicks\n}) => {\n  let colors;\n\n  if (type === "elementStroke") {\n    colors = _colors__WEBPACK_IMPORTED_MODULE_2__.DEFAULT_ELEMENT_STROKE_PICKS;\n  }\n\n  if (type === "elementBackground") {\n    colors = _colors__WEBPACK_IMPORTED_MODULE_2__.DEFAULT_ELEMENT_BACKGROUND_PICKS;\n  }\n\n  if (type === "canvasBackground") {\n    colors = _colors__WEBPACK_IMPORTED_MODULE_2__.DEFAULT_CANVAS_BACKGROUND_PICKS;\n  } // this one can overwrite defaults\n\n\n  if (topPicks) {\n    colors = topPicks;\n  }\n\n  if (!colors) {\n    console.error("Invalid type for TopPicks");\n    return null;\n  }\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: "color-picker__top-picks"\n  }, {\n    children: colors.map(color => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("button", Object.assign({\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__["default"])("color-picker__button", {\n        active: color === activeColor,\n        "is-transparent": color === "transparent" || !color\n      }),\n      style: {\n        "--swatch-color": color\n      },\n      type: "button",\n      title: color,\n      onClick: () => onChange(color),\n      "data-testid": `color-top-pick-${color}`\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n        className: "color-picker__button-outline"\n      })\n    }), color))\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9Db2xvclBpY2tlci9Ub3BQaWNrcy50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFnRDtBQUN4QjtBQUN1RztBQUN4SDtBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEOztBQUVBO0FBQ0EsYUFBYSxpRUFBNEI7QUFDekM7O0FBRUE7QUFDQSxhQUFhLHFFQUFnQztBQUM3Qzs7QUFFQTtBQUNBLGFBQWEsb0VBQStCO0FBQzVDLElBQUk7OztBQUdKO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxTQUFTLHNEQUFJO0FBQ2I7QUFDQSxHQUFHO0FBQ0gsa0NBQWtDLHNEQUFJO0FBQ3RDLGlCQUFpQixnREFBSTtBQUNyQjtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDLE1BQU07QUFDN0MsS0FBSztBQUNMLGdCQUFnQixzREFBSTtBQUNwQjtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0wsR0FBRztBQUNIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvQ29sb3JQaWNrZXIvVG9wUGlja3MudHN4P2Q3NjciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCBjbHN4IGZyb20gXCJjbHN4XCI7XG5pbXBvcnQgeyBERUZBVUxUX0NBTlZBU19CQUNLR1JPVU5EX1BJQ0tTLCBERUZBVUxUX0VMRU1FTlRfQkFDS0dST1VORF9QSUNLUywgREVGQVVMVF9FTEVNRU5UX1NUUk9LRV9QSUNLUyB9IGZyb20gXCIuLi8uLi9jb2xvcnNcIjtcbmV4cG9ydCBjb25zdCBUb3BQaWNrcyA9ICh7XG4gIG9uQ2hhbmdlLFxuICB0eXBlLFxuICBhY3RpdmVDb2xvcixcbiAgdG9wUGlja3Ncbn0pID0+IHtcbiAgbGV0IGNvbG9ycztcblxuICBpZiAodHlwZSA9PT0gXCJlbGVtZW50U3Ryb2tlXCIpIHtcbiAgICBjb2xvcnMgPSBERUZBVUxUX0VMRU1FTlRfU1RST0tFX1BJQ0tTO1xuICB9XG5cbiAgaWYgKHR5cGUgPT09IFwiZWxlbWVudEJhY2tncm91bmRcIikge1xuICAgIGNvbG9ycyA9IERFRkFVTFRfRUxFTUVOVF9CQUNLR1JPVU5EX1BJQ0tTO1xuICB9XG5cbiAgaWYgKHR5cGUgPT09IFwiY2FudmFzQmFja2dyb3VuZFwiKSB7XG4gICAgY29sb3JzID0gREVGQVVMVF9DQU5WQVNfQkFDS0dST1VORF9QSUNLUztcbiAgfSAvLyB0aGlzIG9uZSBjYW4gb3ZlcndyaXRlIGRlZmF1bHRzXG5cblxuICBpZiAodG9wUGlja3MpIHtcbiAgICBjb2xvcnMgPSB0b3BQaWNrcztcbiAgfVxuXG4gIGlmICghY29sb3JzKSB7XG4gICAgY29uc29sZS5lcnJvcihcIkludmFsaWQgdHlwZSBmb3IgVG9wUGlja3NcIik7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gX2pzeChcImRpdlwiLCBPYmplY3QuYXNzaWduKHtcbiAgICBjbGFzc05hbWU6IFwiY29sb3ItcGlja2VyX190b3AtcGlja3NcIlxuICB9LCB7XG4gICAgY2hpbGRyZW46IGNvbG9ycy5tYXAoY29sb3IgPT4gX2pzeChcImJ1dHRvblwiLCBPYmplY3QuYXNzaWduKHtcbiAgICAgIGNsYXNzTmFtZTogY2xzeChcImNvbG9yLXBpY2tlcl9fYnV0dG9uXCIsIHtcbiAgICAgICAgYWN0aXZlOiBjb2xvciA9PT0gYWN0aXZlQ29sb3IsXG4gICAgICAgIFwiaXMtdHJhbnNwYXJlbnRcIjogY29sb3IgPT09IFwidHJhbnNwYXJlbnRcIiB8fCAhY29sb3JcbiAgICAgIH0pLFxuICAgICAgc3R5bGU6IHtcbiAgICAgICAgXCItLXN3YXRjaC1jb2xvclwiOiBjb2xvclxuICAgICAgfSxcbiAgICAgIHR5cGU6IFwiYnV0dG9uXCIsXG4gICAgICB0aXRsZTogY29sb3IsXG4gICAgICBvbkNsaWNrOiAoKSA9PiBvbkNoYW5nZShjb2xvciksXG4gICAgICBcImRhdGEtdGVzdGlkXCI6IGBjb2xvci10b3AtcGljay0ke2NvbG9yfWBcbiAgICB9LCB7XG4gICAgICBjaGlsZHJlbjogX2pzeChcImRpdlwiLCB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJjb2xvci1waWNrZXJfX2J1dHRvbi1vdXRsaW5lXCJcbiAgICAgIH0pXG4gICAgfSksIGNvbG9yKSlcbiAgfSkpO1xufTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/ColorPicker/TopPicks.tsx\n');
              }
            ),
            /***/
            "../../components/ColorPicker/colorPickerUtils.ts": (
              /*!********************************************************!*\
                !*** ../../components/ColorPicker/colorPickerUtils.ts ***!
                \********************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "activeColorPickerSectionAtom": () => (/* binding */ activeColorPickerSectionAtom),\n/* harmony export */   "colorPickerHotkeyBindings": () => (/* binding */ colorPickerHotkeyBindings),\n/* harmony export */   "getColorNameAndShadeFromColor": () => (/* binding */ getColorNameAndShadeFromColor),\n/* harmony export */   "getContrastYIQ": () => (/* binding */ getContrastYIQ),\n/* harmony export */   "getMostUsedCustomColors": () => (/* binding */ getMostUsedCustomColors),\n/* harmony export */   "isCustomColor": () => (/* binding */ isCustomColor)\n/* harmony export */ });\n/* harmony import */ var jotai__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! jotai */ "../../../node_modules/jotai/esm/index.mjs");\n/* harmony import */ var _colors__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../colors */ "../../colors.ts");\n\n\nconst getColorNameAndShadeFromColor = ({\n  palette,\n  color\n}) => {\n  for (const [colorName, colorVal] of Object.entries(palette)) {\n    if (Array.isArray(colorVal)) {\n      const shade = colorVal.indexOf(color);\n\n      if (shade > -1) {\n        return {\n          colorName: colorName,\n          shade\n        };\n      }\n    } else if (colorVal === color) {\n      return {\n        colorName: colorName,\n        shade: null\n      };\n    }\n  }\n\n  return null;\n};\nconst colorPickerHotkeyBindings = [["q", "w", "e", "r", "t"], ["a", "s", "d", "f", "g"], ["z", "x", "c", "v", "b"]].flat();\nconst isCustomColor = ({\n  color,\n  palette\n}) => {\n  const paletteValues = Object.values(palette).flat();\n  return !paletteValues.includes(color);\n};\nconst getMostUsedCustomColors = (elements, type, palette) => {\n  const elementColorTypeMap = {\n    elementBackground: "backgroundColor",\n    elementStroke: "strokeColor"\n  };\n  const colors = elements.filter(element => {\n    if (element.isDeleted) {\n      return false;\n    }\n\n    const color = element[elementColorTypeMap[type]];\n    return isCustomColor({\n      color,\n      palette\n    });\n  });\n  const colorCountMap = new Map();\n  colors.forEach(element => {\n    const color = element[elementColorTypeMap[type]];\n\n    if (colorCountMap.has(color)) {\n      colorCountMap.set(color, colorCountMap.get(color) + 1);\n    } else {\n      colorCountMap.set(color, 1);\n    }\n  });\n  return [...colorCountMap.entries()].sort((a, b) => b[1] - a[1]).map(c => c[0]).slice(0, _colors__WEBPACK_IMPORTED_MODULE_0__.MAX_CUSTOM_COLORS_USED_IN_CANVAS);\n};\nconst activeColorPickerSectionAtom = (0,jotai__WEBPACK_IMPORTED_MODULE_1__.atom)(null);\n\nconst calculateContrast = (r, g, b) => {\n  const yiq = (r * 299 + g * 587 + b * 114) / 1000;\n  return yiq >= 160 ? "black" : "white";\n}; // inspiration from https://stackoverflow.com/a/11868398\n\n\nconst getContrastYIQ = (bgHex, isCustomColor) => {\n  if (isCustomColor) {\n    const style = new Option().style;\n    style.color = bgHex;\n\n    if (style.color) {\n      const rgb = style.color.replace(/^(rgb|rgba)\\(/, "").replace(/\\)$/, "").replace(/\\s/g, "").split(",");\n      const r = parseInt(rgb[0]);\n      const g = parseInt(rgb[1]);\n      const b = parseInt(rgb[2]);\n      return calculateContrast(r, g, b);\n    }\n  } // TODO: ? is this wanted?\n\n\n  if (bgHex === "transparent") {\n    return "black";\n  }\n\n  const r = parseInt(bgHex.substring(1, 3), 16);\n  const g = parseInt(bgHex.substring(3, 5), 16);\n  const b = parseInt(bgHex.substring(5, 7), 16);\n  return calculateContrast(r, g, b);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4668 characters]\n//# sourceURL=webpack-internal:///../../components/ColorPicker/colorPickerUtils.ts\n');
              }
            ),
            /***/
            "../../components/ColorPicker/keyboardNavHandlers.ts": (
              /*!***********************************************************!*\
                !*** ../../components/ColorPicker/keyboardNavHandlers.ts ***!
                \***********************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "colorPickerKeyNavHandler": () => (/* binding */ colorPickerKeyNavHandler)\n/* harmony export */ });\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../keys */ "../../keys.ts");\n/* harmony import */ var _colors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../colors */ "../../colors.ts");\n/* harmony import */ var _colorPickerUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./colorPickerUtils */ "../../components/ColorPicker/colorPickerUtils.ts");\n\n\n\n\nconst arrowHandler = (eventKey, currentIndex, length) => {\n  const rows = Math.ceil(length / _colors__WEBPACK_IMPORTED_MODULE_1__.COLORS_PER_ROW);\n  currentIndex = currentIndex !== null && currentIndex !== void 0 ? currentIndex : -1;\n\n  switch (eventKey) {\n    case "ArrowLeft":\n      {\n        const prevIndex = currentIndex - 1;\n        return prevIndex < 0 ? length - 1 : prevIndex;\n      }\n\n    case "ArrowRight":\n      {\n        return (currentIndex + 1) % length;\n      }\n\n    case "ArrowDown":\n      {\n        const nextIndex = currentIndex + _colors__WEBPACK_IMPORTED_MODULE_1__.COLORS_PER_ROW;\n        return nextIndex >= length ? currentIndex % _colors__WEBPACK_IMPORTED_MODULE_1__.COLORS_PER_ROW : nextIndex;\n      }\n\n    case "ArrowUp":\n      {\n        const prevIndex = currentIndex - _colors__WEBPACK_IMPORTED_MODULE_1__.COLORS_PER_ROW;\n        const newIndex = prevIndex < 0 ? _colors__WEBPACK_IMPORTED_MODULE_1__.COLORS_PER_ROW * rows + prevIndex : prevIndex;\n        return newIndex >= length ? undefined : newIndex;\n      }\n  }\n};\n/**\n * @returns true if the event was handled\n */\n\n\nconst hotkeyHandler = ({\n  e,\n  colorObj,\n  onChange,\n  palette,\n  customColors,\n  setActiveColorPickerSection,\n  activeShade\n}) => {\n  if ((colorObj === null || colorObj === void 0 ? void 0 : colorObj.shade) != null) {\n    // shift + numpad is extremely messed up on windows apparently\n    if (["Digit1", "Digit2", "Digit3", "Digit4", "Digit5"].includes(e.code) && e.shiftKey) {\n      const newShade = Number(e.code.slice(-1)) - 1;\n      onChange(palette[colorObj.colorName][newShade]);\n      setActiveColorPickerSection("shades");\n      return true;\n    }\n  }\n\n  if (["1", "2", "3", "4", "5"].includes(e.key)) {\n    const c = customColors[Number(e.key) - 1];\n\n    if (c) {\n      onChange(customColors[Number(e.key) - 1]);\n      setActiveColorPickerSection("custom");\n      return true;\n    }\n  }\n\n  if (_colorPickerUtils__WEBPACK_IMPORTED_MODULE_2__.colorPickerHotkeyBindings.includes(e.key)) {\n    const index = _colorPickerUtils__WEBPACK_IMPORTED_MODULE_2__.colorPickerHotkeyBindings.indexOf(e.key);\n    const paletteKey = Object.keys(palette)[index];\n    const paletteValue = palette[paletteKey];\n    const r = Array.isArray(paletteValue) ? paletteValue[activeShade] : paletteValue;\n    onChange(r);\n    setActiveColorPickerSection("baseColors");\n    return true;\n  }\n\n  return false;\n};\n/**\n * @returns true if the event was handled\n */\n\n\nconst colorPickerKeyNavHandler = ({\n  event,\n  activeColorPickerSection,\n  palette,\n  color,\n  onChange,\n  customColors,\n  setActiveColorPickerSection,\n  updateData,\n  activeShade,\n  onEyeDropperToggle,\n  onEscape\n}) => {\n  if (event[_keys__WEBPACK_IMPORTED_MODULE_0__.KEYS.CTRL_OR_CMD]) {\n    return false;\n  }\n\n  if (event.key === _keys__WEBPACK_IMPORTED_MODULE_0__.KEYS.ESCAPE) {\n    onEscape(event);\n    return true;\n  } // checkt using `key` to ignore combos with Alt modifier\n\n\n  if (event.key === _keys__WEBPACK_IMPORTED_MODULE_0__.KEYS.ALT) {\n    onEyeDropperToggle(true);\n    return true;\n  }\n\n  if (event.key === _keys__WEBPACK_IMPORTED_MODULE_0__.KEYS.I) {\n    onEyeDropperToggle();\n    return true;\n  }\n\n  const colorObj = (0,_colorPickerUtils__WEBPACK_IMPORTED_MODULE_2__.getColorNameAndShadeFromColor)({\n    color,\n    palette\n  });\n\n  if (event.key === _keys__WEBPACK_IMPORTED_MODULE_0__.KEYS.TAB) {\n    const sectionsMap = {\n      custom: !!customColors.length,\n      baseColors: true,\n      shades: (colorObj === null || colorObj === void 0 ? void 0 : colorObj.shade) != null,\n      hex: true\n    };\n    const sections = Object.entries(sectionsMap).reduce((acc, [key, value]) => {\n      if (value) {\n        acc.push(key);\n      }\n\n      return acc;\n    }, []);\n    const activeSectionIndex = sections.indexOf(activeColorPickerSection);\n    const indexOffset = event.shiftKey ? -1 : 1;\n    const nextSectionIndex = activeSectionIndex + indexOffset > sections.length - 1 ? 0 : activeSectionIndex + indexOffset < 0 ? sections.length - 1 : activeSectionIndex + indexOffset;\n    const nextSection = sections[nextSectionIndex];\n\n    if (nextSection) {\n      setActiveColorPickerSection(nextSection);\n    }\n\n    if (nextSection === "custom") {\n      onChange(customColors[0]);\n    } else if (nextSection === "baseColors") {\n      const baseColorName = Object.entries(palette).find(([name, shades]) => {\n        if (Array.isArray(shades)) {\n          return shades.includes(color);\n        } else if (shades === color) {\n          return name;\n        }\n\n        return null;\n      });\n\n      if (!baseColorName) {\n        onChange(_colors__WEBPACK_IMPORTED_MODULE_1__.COLOR_PALETTE.black);\n      }\n    }\n\n    event.preventDefault();\n    event.stopPropagation();\n    return true;\n  }\n\n  if (hotkeyHandler({\n    e: event,\n    colorObj,\n    onChange,\n    palette,\n    customColors,\n    setActiveColorPickerSection,\n    activeShade\n  })) {\n    return true;\n  }\n\n  if (activeColorPickerSection === "shades") {\n    if (colorObj) {\n      const {\n        shade\n      } = colorObj;\n      const newShade = arrowHandler(event.key, shade, _colors__WEBPACK_IMPORTED_MODULE_1__.COLORS_PER_ROW);\n\n      if (newShade !== undefined) {\n        onChange(palette[colorObj.colorName][newShade]);\n        return true;\n      }\n    }\n  }\n\n  if (activeColorPickerSection === "baseColors") {\n    if (colorObj) {\n      const {\n        colorName\n      } = colorObj;\n      const colorNames = Object.keys(palette);\n      const indexOfColorName = colorNames.indexOf(colorName);\n      const newColorIndex = arrowHandler(event.key, indexOfColorName, colorNames.length);\n\n      if (newColorIndex !== undefined) {\n        const newColorName = colorNames[newColorIndex];\n        const newColorNameValue = palette[newColorName];\n        onChange(Array.isArray(newColorNameValue) ? newColorNameValue[activeShade] : newColorNameValue);\n        return true;\n      }\n    }\n  }\n\n  if (activeColorPickerSection === "custom") {\n    const indexOfColor = customColors.indexOf(color);\n    const newColorIndex = arrowHandler(event.key, indexOfColor, customColors.length);\n\n    if (newColorIndex !== undefined) {\n      const newColor = customColors[newColorIndex];\n      onChange(newColor);\n      return true;\n    }\n  }\n\n  return false;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 10188 characters]\n//# sourceURL=webpack-internal:///../../components/ColorPicker/keyboardNavHandlers.ts\n');
              }
            ),
            /***/
            "../../components/ConfirmDialog.tsx": (
              /*!******************************************!*\
                !*** ../../components/ConfirmDialog.tsx ***!
                \******************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _Dialog__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Dialog */ "../../components/Dialog.tsx");\n/* harmony import */ var _ConfirmDialog_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./ConfirmDialog.scss */ "../../components/ConfirmDialog.scss");\n/* harmony import */ var _DialogActionButton__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./DialogActionButton */ "../../components/DialogActionButton.tsx");\n/* harmony import */ var jotai__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! jotai */ "../../../node_modules/jotai/esm/index.mjs");\n/* harmony import */ var _LibraryMenu__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./LibraryMenu */ "../../components/LibraryMenu.tsx");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./App */ "../../components/App.tsx");\n/* harmony import */ var _jotai__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../jotai */ "../../jotai.ts");\nvar __rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n\n  if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\n\n\n\n\n\n\nconst ConfirmDialog = props => {\n  const {\n    onConfirm,\n    onCancel,\n    children,\n    confirmText = (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("buttons.confirm"),\n    cancelText = (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("buttons.cancel"),\n    className = ""\n  } = props,\n        rest = __rest(props, ["onConfirm", "onCancel", "children", "confirmText", "cancelText", "className"]);\n\n  const setAppState = (0,_App__WEBPACK_IMPORTED_MODULE_6__.useExcalidrawSetAppState)();\n  const setIsLibraryMenuOpen = (0,jotai__WEBPACK_IMPORTED_MODULE_8__.useSetAtom)(_LibraryMenu__WEBPACK_IMPORTED_MODULE_5__.isLibraryMenuOpenAtom, _jotai__WEBPACK_IMPORTED_MODULE_7__.jotaiScope);\n  const {\n    container\n  } = (0,_App__WEBPACK_IMPORTED_MODULE_6__.useExcalidrawContainer)();\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Dialog__WEBPACK_IMPORTED_MODULE_2__.Dialog, Object.assign({\n    onCloseRequest: onCancel,\n    size: "small"\n  }, rest, {\n    className: `confirm-dialog ${className}`\n  }, {\n    children: [children, (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n      className: "confirm-dialog-buttons"\n    }, {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_DialogActionButton__WEBPACK_IMPORTED_MODULE_4__["default"], {\n        label: cancelText,\n        onClick: () => {\n          setAppState({\n            openMenu: null\n          });\n          setIsLibraryMenuOpen(false);\n          onCancel();\n          container === null || container === void 0 ? void 0 : container.focus();\n        }\n      }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_DialogActionButton__WEBPACK_IMPORTED_MODULE_4__["default"], {\n        label: confirmText,\n        onClick: () => {\n          setAppState({\n            openMenu: null\n          });\n          setIsLibraryMenuOpen(false);\n          onConfirm();\n          container === null || container === void 0 ? void 0 : container.focus();\n        },\n        actionType: "danger"\n      })]\n    }))]\n  }));\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ConfirmDialog);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4380 characters]\n//# sourceURL=webpack-internal:///../../components/ConfirmDialog.tsx\n');
              }
            ),
            /***/
            "../../components/ContextMenu.tsx": (
              /*!****************************************!*\
                !*** ../../components/ContextMenu.tsx ***!
                \****************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "CONTEXT_MENU_SEPARATOR": () => (/* binding */ CONTEXT_MENU_SEPARATOR),
/* harmony export */   "ContextMenu": () => (/* binding */ ContextMenu)
/* harmony export */ });
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");
/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");
/* harmony import */ var _Popover__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Popover */ "../../components/Popover.tsx");
/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");
/* harmony import */ var _ContextMenu_scss__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./ContextMenu.scss */ "../../components/ContextMenu.scss");
/* harmony import */ var _actions_shortcuts__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../actions/shortcuts */ "../../actions/shortcuts.ts");
/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./App */ "../../components/App.tsx");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_7__);








const CONTEXT_MENU_SEPARATOR = "separator";
const ContextMenu = react__WEBPACK_IMPORTED_MODULE_7___default().memo(({
  actionManager,
  items,
  top,
  left,
  onClose
}) => {
  const appState = (0,_App__WEBPACK_IMPORTED_MODULE_6__.useExcalidrawAppState)();
  const elements = (0,_App__WEBPACK_IMPORTED_MODULE_6__.useExcalidrawElements)();
  const filteredItems = items.reduce((acc, item) => {
    if (item && (item === CONTEXT_MENU_SEPARATOR || !item.predicate || item.predicate(elements, appState, actionManager.app.props, actionManager.app))) {
      acc.push(item);
    }

    return acc;
  }, []);
  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Popover__WEBPACK_IMPORTED_MODULE_2__.Popover, Object.assign({
    onCloseRequest: () => {
      onClose();
    },
    top: top,
    left: left,
    fitInViewport: true,
    offsetLeft: appState.offsetLeft,
    offsetTop: appState.offsetTop,
    viewportWidth: appState.width,
    viewportHeight: appState.height
  }, {
    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("ul", Object.assign({
      className: "context-menu",
      onContextMenu: event => event.preventDefault()
    }, {
      children: filteredItems.map((item, idx) => {
        var _a;

        if (item === CONTEXT_MENU_SEPARATOR) {
          if (!filteredItems[idx - 1] || filteredItems[idx - 1] === CONTEXT_MENU_SEPARATOR) {
            return null;
          }

          return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("hr", {
            className: "context-menu-item-separator"
          }, idx);
        }

        const actionName = item.name;
        let label = "";

        if (item.contextItemLabel) {
          if (typeof item.contextItemLabel === "function") {
            label = (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)(item.contextItemLabel(elements, appState, actionManager.app));
          } else {
            label = (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)(item.contextItemLabel);
          }
        }

        return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("li", Object.assign({
          "data-testid": actionName,
          onClick: () => {
            // we need update state before executing the action in case
            // the action uses the appState it's being passed (that still
            // contains a defined contextMenu) to return the next state.
            onClose(() => {
              actionManager.executeAction(item, "contextMenu");
            });
          }
        }, {
          children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("button", Object.assign({
            className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__["default"])("context-menu-item", {
              dangerous: actionName === "deleteSelectedElements",
              checkmark: (_a = item.checked) === null || _a === void 0 ? void 0 : _a.call(item, appState)
            })
          }, {
            children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({
              className: "context-menu-item__label"
            }, {
              children: label
            })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("kbd", Object.assign({
              className: "context-menu-item__shortcut"
            }, {
              children: actionName ? (0,_actions_shortcuts__WEBPACK_IMPORTED_MODULE_5__.getShortcutFromShortcutName)(actionName) : ""
            }))]
          }))
        }), idx);
      })
    }))
  }));
});//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5712 characters]
//# sourceURL=webpack-internal:///../../components/ContextMenu.tsx
`);
              }
            ),
            /***/
            "../../components/DarkModeToggle.tsx": (
              /*!*******************************************!*\
                !*** ../../components/DarkModeToggle.tsx ***!
                \*******************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "DarkModeToggle": () => (/* binding */ DarkModeToggle)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var _ToolIcon_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ToolIcon.scss */ "../../components/ToolIcon.scss");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _ToolButton__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./ToolButton */ "../../components/ToolButton.tsx");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n\n\n\n\n // We chose to use only explicit toggle and not a third option for system value,\n// but this could be added in the future.\n\nconst DarkModeToggle = props => {\n  const title = props.title || (props.value === "dark" ? (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("buttons.lightMode") : (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("buttons.darkMode"));\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ToolButton__WEBPACK_IMPORTED_MODULE_3__.ToolButton, {\n    type: "icon",\n    icon: props.value === _constants__WEBPACK_IMPORTED_MODULE_4__.THEME.LIGHT ? ICONS.MOON : ICONS.SUN,\n    title: title,\n    "aria-label": title,\n    onClick: () => props.onChange(props.value === _constants__WEBPACK_IMPORTED_MODULE_4__.THEME.DARK ? _constants__WEBPACK_IMPORTED_MODULE_4__.THEME.LIGHT : _constants__WEBPACK_IMPORTED_MODULE_4__.THEME.DARK),\n    "data-testid": "toggle-dark-mode"\n  });\n};\nconst ICONS = {\n  SUN: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("svg", Object.assign({\n    width: "512",\n    height: "512",\n    className: "rtl-mirror",\n    viewBox: "0 0 512 512"\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      fill: "currentColor",\n      d: "M256 160c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm246.4 80.5l-94.7-47.3 33.5-100.4c4.5-13.6-8.4-26.5-21.9-21.9l-100.4 33.5-47.4-94.8c-6.4-12.8-24.6-12.8-31 0l-47.3 94.7L92.7 70.8c-13.6-4.5-26.5 8.4-21.9 21.9l33.5 100.4-94.7 47.4c-12.8 6.4-12.8 24.6 0 31l94.7 47.3-33.5 100.5c-4.5 13.6 8.4 26.5 21.9 21.9l100.4-33.5 47.3 94.7c6.4 12.8 24.6 12.8 31 0l47.3-94.7 100.4 33.5c13.6 4.5 26.5-8.4 21.9-21.9l-33.5-100.4 94.7-47.3c13-6.5 13-24.7.2-31.1zm-155.9 106c-49.9 49.9-131.1 49.9-181 0-49.9-49.9-49.9-131.1 0-181 49.9-49.9 131.1-49.9 181 0 49.9 49.9 49.9 131.1 0 181z"\n    })\n  })),\n  MOON: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("svg", Object.assign({\n    width: "512",\n    height: "512",\n    className: "rtl-mirror",\n    viewBox: "0 0 512 512"\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      fill: "currentColor",\n      d: "M283.211 512c78.962 0 151.079-35.925 198.857-94.792 7.068-8.708-.639-21.43-11.562-19.35-124.203 23.654-238.262-71.576-238.262-196.954 0-72.222 38.662-138.635 101.498-174.394 9.686-5.512 7.25-20.197-3.756-22.23A258.156 258.156 0 0 0 283.211 0c-141.309 0-256 114.511-256 256 0 141.309 114.511 256 256 256z"\n    })\n  }))\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9EYXJrTW9kZVRvZ2dsZS50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQWdEO0FBQ3ZCO0FBQ0c7QUFDYztBQUNMLENBQUM7QUFDdEM7O0FBRU87QUFDUCx5REFBeUQsd0NBQUMsd0JBQXdCLHdDQUFDO0FBQ25GLFNBQVMsc0RBQUksQ0FBQyxtREFBVTtBQUN4QjtBQUNBLDBCQUEwQixtREFBVztBQUNyQztBQUNBO0FBQ0Esa0RBQWtELGtEQUFVLEdBQUcsbURBQVcsR0FBRyxrREFBVTtBQUN2RjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsT0FBTyxzREFBSTtBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILGNBQWMsc0RBQUk7QUFDbEI7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0gsUUFBUSxzREFBSTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILGNBQWMsc0RBQUk7QUFDbEI7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0giLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9EYXJrTW9kZVRvZ2dsZS50c3g/MzkxYSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IFwiLi9Ub29sSWNvbi5zY3NzXCI7XG5pbXBvcnQgeyB0IH0gZnJvbSBcIi4uL2kxOG5cIjtcbmltcG9ydCB7IFRvb2xCdXR0b24gfSBmcm9tIFwiLi9Ub29sQnV0dG9uXCI7XG5pbXBvcnQgeyBUSEVNRSB9IGZyb20gXCIuLi9jb25zdGFudHNcIjsgLy8gV2UgY2hvc2UgdG8gdXNlIG9ubHkgZXhwbGljaXQgdG9nZ2xlIGFuZCBub3QgYSB0aGlyZCBvcHRpb24gZm9yIHN5c3RlbSB2YWx1ZSxcbi8vIGJ1dCB0aGlzIGNvdWxkIGJlIGFkZGVkIGluIHRoZSBmdXR1cmUuXG5cbmV4cG9ydCBjb25zdCBEYXJrTW9kZVRvZ2dsZSA9IHByb3BzID0+IHtcbiAgY29uc3QgdGl0bGUgPSBwcm9wcy50aXRsZSB8fCAocHJvcHMudmFsdWUgPT09IFwiZGFya1wiID8gdChcImJ1dHRvbnMubGlnaHRNb2RlXCIpIDogdChcImJ1dHRvbnMuZGFya01vZGVcIikpO1xuICByZXR1cm4gX2pzeChUb29sQnV0dG9uLCB7XG4gICAgdHlwZTogXCJpY29uXCIsXG4gICAgaWNvbjogcHJvcHMudmFsdWUgPT09IFRIRU1FLkxJR0hUID8gSUNPTlMuTU9PTiA6IElDT05TLlNVTixcbiAgICB0aXRsZTogdGl0bGUsXG4gICAgXCJhcmlhLWxhYmVsXCI6IHRpdGxlLFxuICAgIG9uQ2xpY2s6ICgpID0+IHByb3BzLm9uQ2hhbmdlKHByb3BzLnZhbHVlID09PSBUSEVNRS5EQVJLID8gVEhFTUUuTElHSFQgOiBUSEVNRS5EQVJLKSxcbiAgICBcImRhdGEtdGVzdGlkXCI6IFwidG9nZ2xlLWRhcmstbW9kZVwiXG4gIH0pO1xufTtcbmNvbnN0IElDT05TID0ge1xuICBTVU46IF9qc3goXCJzdmdcIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgd2lkdGg6IFwiNTEyXCIsXG4gICAgaGVpZ2h0OiBcIjUxMlwiLFxuICAgIGNsYXNzTmFtZTogXCJydGwtbWlycm9yXCIsXG4gICAgdmlld0JveDogXCIwIDAgNTEyIDUxMlwiXG4gIH0sIHtcbiAgICBjaGlsZHJlbjogX2pzeChcInBhdGhcIiwge1xuICAgICAgZmlsbDogXCJjdXJyZW50Q29sb3JcIixcbiAgICAgIGQ6IFwiTTI1NiAxNjBjLTUyLjkgMC05NiA0My4xLTk2IDk2czQzLjEgOTYgOTYgOTYgOTYtNDMuMSA5Ni05Ni00My4xLTk2LTk2LTk2em0yNDYuNCA4MC41bC05NC43LTQ3LjMgMzMuNS0xMDAuNGM0LjUtMTMuNi04LjQtMjYuNS0yMS45LTIxLjlsLTEwMC40IDMzLjUtNDcuNC05NC44Yy02LjQtMTIuOC0yNC42LTEyLjgtMzEgMGwtNDcuMyA5NC43TDkyLjcgNzAuOGMtMTMuNi00LjUtMjYuNSA4LjQtMjEuOSAyMS45bDMzLjUgMTAwLjQtOTQuNyA0Ny40Yy0xMi44IDYuNC0xMi44IDI0LjYgMCAzMWw5NC43IDQ3LjMtMzMuNSAxMDAuNWMtNC41IDEzLjYgOC40IDI2LjUgMjEuOSAyMS45bDEwMC40LTMzLjUgNDcuMyA5NC43YzYuNCAxMi44IDI0LjYgMTIuOCAzMSAwbDQ3LjMtOTQuNyAxMDAuNCAzMy41YzEzLjYgNC41IDI2LjUtOC40IDIxLjktMjEuOWwtMzMuNS0xMDAuNCA5NC43LTQ3LjNjMTMtNi41IDEzLTI0LjcuMi0zMS4xem0tMTU1LjkgMTA2Yy00OS45IDQ5LjktMTMxLjEgNDkuOS0xODEgMC00OS45LTQ5LjktNDkuOS0xMzEuMSAwLTE4MSA0OS45LTQ5LjkgMTMxLjEtNDkuOSAxODEgMCA0OS45IDQ5LjkgNDkuOSAxMzEuMSAwIDE4MXpcIlxuICAgIH0pXG4gIH0pKSxcbiAgTU9PTjogX2pzeChcInN2Z1wiLCBPYmplY3QuYXNzaWduKHtcbiAgICB3aWR0aDogXCI1MTJcIixcbiAgICBoZWlnaHQ6IFwiNTEyXCIsXG4gICAgY2xhc3NOYW1lOiBcInJ0bC1taXJyb3JcIixcbiAgICB2aWV3Qm94OiBcIjAgMCA1MTIgNTEyXCJcbiAgfSwge1xuICAgIGNoaWxkcmVuOiBfanN4KFwicGF0aFwiLCB7XG4gICAgICBmaWxsOiBcImN1cnJlbnRDb2xvclwiLFxuICAgICAgZDogXCJNMjgzLjIxMSA1MTJjNzguOTYyIDAgMTUxLjA3OS0zNS45MjUgMTk4Ljg1Ny05NC43OTIgNy4wNjgtOC43MDgtLjYzOS0yMS40My0xMS41NjItMTkuMzUtMTI0LjIwMyAyMy42NTQtMjM4LjI2Mi03MS41NzYtMjM4LjI2Mi0xOTYuOTU0IDAtNzIuMjIyIDM4LjY2Mi0xMzguNjM1IDEwMS40OTgtMTc0LjM5NCA5LjY4Ni01LjUxMiA3LjI1LTIwLjE5Ny0zLjc1Ni0yMi4yM0EyNTguMTU2IDI1OC4xNTYgMCAwIDAgMjgzLjIxMSAwYy0xNDEuMzA5IDAtMjU2IDExNC41MTEtMjU2IDI1NiAwIDE0MS4zMDkgMTE0LjUxMSAyNTYgMjU2IDI1NnpcIlxuICAgIH0pXG4gIH0pKVxufTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/DarkModeToggle.tsx\n');
              }
            ),
            /***/
            "../../components/DefaultSidebar.tsx": (
              /*!*******************************************!*\
                !*** ../../components/DefaultSidebar.tsx ***!
                \*******************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "DefaultSidebar": () => (/* binding */ DefaultSidebar)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _context_tunnels__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../context/tunnels */ "../../context/tunnels.ts");\n/* harmony import */ var _context_ui_appState__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../context/ui-appState */ "../../context/ui-appState.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./App */ "../../components/App.tsx");\n/* harmony import */ var _hoc_withInternalFallback__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./hoc/withInternalFallback */ "../../components/hoc/withInternalFallback.tsx");\n/* harmony import */ var _LibraryMenu__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./LibraryMenu */ "../../components/LibraryMenu.tsx");\n/* harmony import */ var _Sidebar_Sidebar__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./Sidebar/Sidebar */ "../../components/Sidebar/Sidebar.tsx");\nvar __rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n\n  if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst DefaultSidebarTrigger = (0,_hoc_withInternalFallback__WEBPACK_IMPORTED_MODULE_9__.withInternalFallback)("DefaultSidebarTrigger", props => {\n  const {\n    DefaultSidebarTriggerTunnel\n  } = (0,_context_tunnels__WEBPACK_IMPORTED_MODULE_4__.useTunnels)();\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(DefaultSidebarTriggerTunnel.In, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_Sidebar_Sidebar__WEBPACK_IMPORTED_MODULE_11__.Sidebar.Trigger, Object.assign({}, props, {\n      className: "default-sidebar-trigger",\n      name: _constants__WEBPACK_IMPORTED_MODULE_3__.DEFAULT_SIDEBAR.name\n    }))\n  });\n});\nDefaultSidebarTrigger.displayName = "DefaultSidebarTrigger";\n\nconst DefaultTabTriggers = _a => {\n  var {\n    children\n  } = _a,\n      rest = __rest(_a, ["children"]);\n\n  const {\n    DefaultSidebarTabTriggersTunnel\n  } = (0,_context_tunnels__WEBPACK_IMPORTED_MODULE_4__.useTunnels)();\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(DefaultSidebarTabTriggersTunnel.In, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_Sidebar_Sidebar__WEBPACK_IMPORTED_MODULE_11__.Sidebar.TabTriggers, Object.assign({}, rest, {\n      children: children\n    }))\n  });\n};\n\nDefaultTabTriggers.displayName = "DefaultTabTriggers";\nconst DefaultSidebar = Object.assign((0,_hoc_withInternalFallback__WEBPACK_IMPORTED_MODULE_9__.withInternalFallback)("DefaultSidebar", _a => {\n  var {\n    children,\n    className,\n    onDock,\n    docked\n  } = _a,\n      rest = __rest(_a, ["children", "className", "onDock", "docked"]);\n\n  const appState = (0,_context_ui_appState__WEBPACK_IMPORTED_MODULE_5__.useUIAppState)();\n  const setAppState = (0,_App__WEBPACK_IMPORTED_MODULE_8__.useExcalidrawSetAppState)();\n  const {\n    DefaultSidebarTabTriggersTunnel\n  } = (0,_context_tunnels__WEBPACK_IMPORTED_MODULE_4__.useTunnels)();\n  return (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_Sidebar_Sidebar__WEBPACK_IMPORTED_MODULE_11__.Sidebar, Object.assign({}, rest, {\n    name: "default",\n    key: "default",\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_2__["default"])("default-sidebar", className),\n    docked: docked !== null && docked !== void 0 ? docked : appState.defaultSidebarDockedPreference,\n    onDock: // `onDock=false` disables docking.\n    // if `docked` passed, but no onDock passed, disable manual docking.\n    onDock === false || !onDock && docked != null ? undefined : // compose to allow the host app to listen on default behavior\n    (0,_utils__WEBPACK_IMPORTED_MODULE_7__.composeEventHandlers)(onDock, docked => {\n      setAppState({\n        defaultSidebarDockedPreference: docked\n      });\n    })\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsxs)(_Sidebar_Sidebar__WEBPACK_IMPORTED_MODULE_11__.Sidebar.Tabs, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsxs)(_Sidebar_Sidebar__WEBPACK_IMPORTED_MODULE_11__.Sidebar.Header, {\n      children: [rest.__fallback && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)("div", Object.assign({\n        style: {\n          color: "var(--color-primary)",\n          fontSize: "1.2em",\n          fontWeight: "bold",\n          textOverflow: "ellipsis",\n          overflow: "hidden",\n          whiteSpace: "nowrap",\n          paddingRight: "1em"\n        }\n      }, {\n        children: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("toolBar.library")\n      })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(DefaultSidebarTabTriggersTunnel.Out, {})]\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_Sidebar_Sidebar__WEBPACK_IMPORTED_MODULE_11__.Sidebar.Tab, Object.assign({\n      tab: _constants__WEBPACK_IMPORTED_MODULE_3__.LIBRARY_SIDEBAR_TAB\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_LibraryMenu__WEBPACK_IMPORTED_MODULE_10__.LibraryMenu, {})\n    })), children]\n  }));\n}), {\n  Trigger: DefaultSidebarTrigger,\n  TabTriggers: DefaultTabTriggers\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6680 characters]\n//# sourceURL=webpack-internal:///../../components/DefaultSidebar.tsx\n');
              }
            ),
            /***/
            "../../components/Dialog.tsx": (
              /*!***********************************!*\
                !*** ../../components/Dialog.tsx ***!
                \***********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "Dialog": () => (/* binding */ Dialog)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _hooks_useCallbackRefState__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../hooks/useCallbackRefState */ "../../hooks/useCallbackRefState.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _components_App__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../components/App */ "../../components/App.tsx");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _Dialog_scss__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./Dialog.scss */ "../../components/Dialog.scss");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./icons */ "../../components/icons.tsx");\n/* harmony import */ var _Island__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./Island */ "../../components/Island.tsx");\n/* harmony import */ var _Modal__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./Modal */ "../../components/Modal.tsx");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var jotai__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! jotai */ "../../../node_modules/jotai/esm/index.mjs");\n/* harmony import */ var _LibraryMenu__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./LibraryMenu */ "../../components/LibraryMenu.tsx");\n/* harmony import */ var _jotai__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../jotai */ "../../jotai.ts");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction getDialogSize(size) {\n  if (size && typeof size === "number") {\n    return size;\n  }\n\n  switch (size) {\n    case "small":\n      return 550;\n\n    case "wide":\n      return 1024;\n\n    case "regular":\n    default:\n      return 800;\n  }\n}\n\nconst Dialog = props => {\n  const [islandNode, setIslandNode] = (0,_hooks_useCallbackRefState__WEBPACK_IMPORTED_MODULE_3__.useCallbackRefState)();\n  const [lastActiveElement] = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(document.activeElement);\n  const {\n    id\n  } = (0,_components_App__WEBPACK_IMPORTED_MODULE_5__.useExcalidrawContainer)();\n  const isFullscreen = (0,_components_App__WEBPACK_IMPORTED_MODULE_5__.useDevice)().viewport.isMobile;\n  (0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(() => {\n    if (!islandNode) {\n      return;\n    }\n\n    const focusableElements = (0,_utils__WEBPACK_IMPORTED_MODULE_11__.queryFocusableElements)(islandNode);\n\n    if (focusableElements.length > 0 && props.autofocus !== false) {\n      // If there\'s an element other than close, focus it.\n      (focusableElements[1] || focusableElements[0]).focus();\n    }\n\n    const handleKeyDown = event => {\n      if (event.key === _keys__WEBPACK_IMPORTED_MODULE_6__.KEYS.TAB) {\n        const focusableElements = (0,_utils__WEBPACK_IMPORTED_MODULE_11__.queryFocusableElements)(islandNode);\n        const {\n          activeElement\n        } = document;\n        const currentIndex = focusableElements.findIndex(element => element === activeElement);\n\n        if (currentIndex === 0 && event.shiftKey) {\n          focusableElements[focusableElements.length - 1].focus();\n          event.preventDefault();\n        } else if (currentIndex === focusableElements.length - 1 && !event.shiftKey) {\n          focusableElements[0].focus();\n          event.preventDefault();\n        }\n      }\n    };\n\n    islandNode.addEventListener("keydown", handleKeyDown);\n    return () => islandNode.removeEventListener("keydown", handleKeyDown);\n  }, [islandNode, props.autofocus]);\n  const setAppState = (0,_components_App__WEBPACK_IMPORTED_MODULE_5__.useExcalidrawSetAppState)();\n  const setIsLibraryMenuOpen = (0,jotai__WEBPACK_IMPORTED_MODULE_14__.useSetAtom)(_LibraryMenu__WEBPACK_IMPORTED_MODULE_12__.isLibraryMenuOpenAtom, _jotai__WEBPACK_IMPORTED_MODULE_13__.jotaiScope);\n\n  const onClose = () => {\n    setAppState({\n      openMenu: null\n    });\n    setIsLibraryMenuOpen(false);\n    lastActiveElement.focus();\n    props.onCloseRequest();\n  };\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Modal__WEBPACK_IMPORTED_MODULE_10__.Modal, Object.assign({\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__["default"])("Dialog", props.className, {\n      "Dialog--fullscreen": isFullscreen\n    }),\n    labelledBy: "dialog-title",\n    maxWidth: getDialogSize(props.size),\n    onCloseRequest: onClose,\n    closeOnClickOutside: props.closeOnClickOutside\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Island__WEBPACK_IMPORTED_MODULE_9__.Island, Object.assign({\n      ref: setIslandNode\n    }, {\n      children: [props.title && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("h2", Object.assign({\n        id: `${id}-dialog-title`,\n        className: "Dialog__title"\n      }, {\n        children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", Object.assign({\n          className: "Dialog__titleContent"\n        }, {\n          children: props.title\n        }))\n      })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("button", Object.assign({\n        className: "Dialog__close",\n        onClick: onClose,\n        title: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("buttons.close"),\n        "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("buttons.close")\n      }, {\n        children: isFullscreen ? _icons__WEBPACK_IMPORTED_MODULE_8__.back : _icons__WEBPACK_IMPORTED_MODULE_8__.CloseIcon\n      })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n        className: "Dialog__content"\n      }, {\n        children: props.children\n      }))]\n    }))\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6748 characters]\n//# sourceURL=webpack-internal:///../../components/Dialog.tsx\n');
              }
            ),
            /***/
            "../../components/DialogActionButton.tsx": (
              /*!***********************************************!*\
                !*** ../../components/DialogActionButton.tsx ***!
                \***********************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _DialogActionButton_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./DialogActionButton.scss */ "../../components/DialogActionButton.scss");\n/* harmony import */ var _Spinner__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Spinner */ "../../components/Spinner.tsx");\nvar __rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n\n  if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\n\nconst DialogActionButton = _a => {\n  var {\n    label,\n    onClick,\n    className,\n    children,\n    actionType,\n    type = "button",\n    isLoading\n  } = _a,\n      rest = __rest(_a, ["label", "onClick", "className", "children", "actionType", "type", "isLoading"]);\n\n  const cs = actionType ? `Dialog__action-button--${actionType}` : "";\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("button", Object.assign({\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__["default"])("Dialog__action-button", cs, className),\n    type: type,\n    "aria-label": label,\n    onClick: onClick\n  }, rest, {\n    children: [children && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      style: isLoading ? {\n        visibility: "hidden"\n      } : {}\n    }, {\n      children: children\n    })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      style: isLoading ? {\n        visibility: "hidden"\n      } : {}\n    }, {\n      children: label\n    })), isLoading && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      style: {\n        position: "absolute",\n        inset: 0\n      }\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Spinner__WEBPACK_IMPORTED_MODULE_3__["default"], {})\n    }))]\n  }));\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (DialogActionButton);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9EaWFsb2dBY3Rpb25CdXR0b24udHN4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsYUFBYSxTQUFJLElBQUksU0FBSTtBQUN6Qjs7QUFFQTs7QUFFQSw0SEFBNEgsY0FBYztBQUMxSTtBQUNBO0FBQ0E7QUFDQTs7QUFFK0Q7QUFDdkM7QUFDVztBQUNIOztBQUVoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7O0FBRUEsb0RBQW9ELFdBQVc7QUFDL0QsU0FBUyx1REFBSztBQUNkLGVBQWUsZ0RBQUk7QUFDbkI7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILDJCQUEyQixzREFBSTtBQUMvQjtBQUNBO0FBQ0EsUUFBUTtBQUNSLEtBQUs7QUFDTDtBQUNBLEtBQUssSUFBSSxzREFBSTtBQUNiO0FBQ0E7QUFDQSxRQUFRO0FBQ1IsS0FBSztBQUNMO0FBQ0EsS0FBSyxpQkFBaUIsc0RBQUk7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsZ0JBQWdCLHNEQUFJLENBQUMsZ0RBQU8sSUFBSTtBQUNoQyxLQUFLO0FBQ0wsR0FBRztBQUNIOztBQUVBLGlFQUFlLGtCQUFrQiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL0RpYWxvZ0FjdGlvbkJ1dHRvbi50c3g/MTFjOCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19yZXN0ID0gdGhpcyAmJiB0aGlzLl9fcmVzdCB8fCBmdW5jdGlvbiAocywgZSkge1xuICB2YXIgdCA9IHt9O1xuXG4gIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKSB0W3BdID0gc1twXTtcblxuICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpIHRbcFtpXV0gPSBzW3BbaV1dO1xuICB9XG4gIHJldHVybiB0O1xufTtcblxuaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCBjbHN4IGZyb20gXCJjbHN4XCI7XG5pbXBvcnQgXCIuL0RpYWxvZ0FjdGlvbkJ1dHRvbi5zY3NzXCI7XG5pbXBvcnQgU3Bpbm5lciBmcm9tIFwiLi9TcGlubmVyXCI7XG5cbmNvbnN0IERpYWxvZ0FjdGlvbkJ1dHRvbiA9IF9hID0+IHtcbiAgdmFyIHtcbiAgICBsYWJlbCxcbiAgICBvbkNsaWNrLFxuICAgIGNsYXNzTmFtZSxcbiAgICBjaGlsZHJlbixcbiAgICBhY3Rpb25UeXBlLFxuICAgIHR5cGUgPSBcImJ1dHRvblwiLFxuICAgIGlzTG9hZGluZ1xuICB9ID0gX2EsXG4gICAgICByZXN0ID0gX19yZXN0KF9hLCBbXCJsYWJlbFwiLCBcIm9uQ2xpY2tcIiwgXCJjbGFzc05hbWVcIiwgXCJjaGlsZHJlblwiLCBcImFjdGlvblR5cGVcIiwgXCJ0eXBlXCIsIFwiaXNMb2FkaW5nXCJdKTtcblxuICBjb25zdCBjcyA9IGFjdGlvblR5cGUgPyBgRGlhbG9nX19hY3Rpb24tYnV0dG9uLS0ke2FjdGlvblR5cGV9YCA6IFwiXCI7XG4gIHJldHVybiBfanN4cyhcImJ1dHRvblwiLCBPYmplY3QuYXNzaWduKHtcbiAgICBjbGFzc05hbWU6IGNsc3goXCJEaWFsb2dfX2FjdGlvbi1idXR0b25cIiwgY3MsIGNsYXNzTmFtZSksXG4gICAgdHlwZTogdHlwZSxcbiAgICBcImFyaWEtbGFiZWxcIjogbGFiZWwsXG4gICAgb25DbGljazogb25DbGlja1xuICB9LCByZXN0LCB7XG4gICAgY2hpbGRyZW46IFtjaGlsZHJlbiAmJiBfanN4KFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oe1xuICAgICAgc3R5bGU6IGlzTG9hZGluZyA/IHtcbiAgICAgICAgdmlzaWJpbGl0eTogXCJoaWRkZW5cIlxuICAgICAgfSA6IHt9XG4gICAgfSwge1xuICAgICAgY2hpbGRyZW46IGNoaWxkcmVuXG4gICAgfSkpLCBfanN4KFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oe1xuICAgICAgc3R5bGU6IGlzTG9hZGluZyA/IHtcbiAgICAgICAgdmlzaWJpbGl0eTogXCJoaWRkZW5cIlxuICAgICAgfSA6IHt9XG4gICAgfSwge1xuICAgICAgY2hpbGRyZW46IGxhYmVsXG4gICAgfSkpLCBpc0xvYWRpbmcgJiYgX2pzeChcImRpdlwiLCBPYmplY3QuYXNzaWduKHtcbiAgICAgIHN0eWxlOiB7XG4gICAgICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgICAgIGluc2V0OiAwXG4gICAgICB9XG4gICAgfSwge1xuICAgICAgY2hpbGRyZW46IF9qc3goU3Bpbm5lciwge30pXG4gICAgfSkpXVxuICB9KSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBEaWFsb2dBY3Rpb25CdXR0b247Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/DialogActionButton.tsx\n');
              }
            ),
            /***/
            "../../components/ErrorDialog.tsx": (
              /*!****************************************!*\
                !*** ../../components/ErrorDialog.tsx ***!
                \****************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "ErrorDialog": () => (/* binding */ ErrorDialog)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _Dialog__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Dialog */ "../../components/Dialog.tsx");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./App */ "../../components/App.tsx");\n\n\n\n\n\nconst ErrorDialog = ({\n  children,\n  onClose\n}) => {\n  const [modalIsShown, setModalIsShown] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(!!children);\n  const {\n    container: excalidrawContainer\n  } = (0,_App__WEBPACK_IMPORTED_MODULE_4__.useExcalidrawContainer)();\n  const handleClose = react__WEBPACK_IMPORTED_MODULE_1___default().useCallback(() => {\n    setModalIsShown(false);\n\n    if (onClose) {\n      onClose();\n    } // TODO: Fix the A11y issues so this is never needed since we should always focus on last active element\n\n\n    excalidrawContainer === null || excalidrawContainer === void 0 ? void 0 : excalidrawContainer.focus();\n  }, [onClose, excalidrawContainer]);\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n    children: modalIsShown && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Dialog__WEBPACK_IMPORTED_MODULE_3__.Dialog, Object.assign({\n      size: "small",\n      onCloseRequest: handleClose,\n      title: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("errorDialog.title")\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n        style: {\n          whiteSpace: "pre-wrap"\n        }\n      }, {\n        children: children\n      }))\n    }))\n  });\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9FcnJvckRpYWxvZy50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUF1RTtBQUMvQjtBQUNaO0FBQ007QUFDYTtBQUN4QztBQUNQO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsMENBQTBDLCtDQUFRO0FBQ2xEO0FBQ0E7QUFDQSxJQUFJLEVBQUUsNERBQXNCO0FBQzVCLHNCQUFzQix3REFBaUI7QUFDdkM7O0FBRUE7QUFDQTtBQUNBLE1BQU07OztBQUdOO0FBQ0EsR0FBRztBQUNILFNBQVMsc0RBQUksQ0FBQyx1REFBUztBQUN2Qiw4QkFBOEIsc0RBQUksQ0FBQywyQ0FBTTtBQUN6QztBQUNBO0FBQ0EsYUFBYSx3Q0FBQztBQUNkLEtBQUs7QUFDTCxnQkFBZ0Isc0RBQUk7QUFDcEI7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTCxHQUFHO0FBQ0giLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9FcnJvckRpYWxvZy50c3g/Mjg3MiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCwgRnJhZ21lbnQgYXMgX0ZyYWdtZW50IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHQgfSBmcm9tIFwiLi4vaTE4blwiO1xuaW1wb3J0IHsgRGlhbG9nIH0gZnJvbSBcIi4vRGlhbG9nXCI7XG5pbXBvcnQgeyB1c2VFeGNhbGlkcmF3Q29udGFpbmVyIH0gZnJvbSBcIi4vQXBwXCI7XG5leHBvcnQgY29uc3QgRXJyb3JEaWFsb2cgPSAoe1xuICBjaGlsZHJlbixcbiAgb25DbG9zZVxufSkgPT4ge1xuICBjb25zdCBbbW9kYWxJc1Nob3duLCBzZXRNb2RhbElzU2hvd25dID0gdXNlU3RhdGUoISFjaGlsZHJlbik7XG4gIGNvbnN0IHtcbiAgICBjb250YWluZXI6IGV4Y2FsaWRyYXdDb250YWluZXJcbiAgfSA9IHVzZUV4Y2FsaWRyYXdDb250YWluZXIoKTtcbiAgY29uc3QgaGFuZGxlQ2xvc2UgPSBSZWFjdC51c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0TW9kYWxJc1Nob3duKGZhbHNlKTtcblxuICAgIGlmIChvbkNsb3NlKSB7XG4gICAgICBvbkNsb3NlKCk7XG4gICAgfSAvLyBUT0RPOiBGaXggdGhlIEExMXkgaXNzdWVzIHNvIHRoaXMgaXMgbmV2ZXIgbmVlZGVkIHNpbmNlIHdlIHNob3VsZCBhbHdheXMgZm9jdXMgb24gbGFzdCBhY3RpdmUgZWxlbWVudFxuXG5cbiAgICBleGNhbGlkcmF3Q29udGFpbmVyID09PSBudWxsIHx8IGV4Y2FsaWRyYXdDb250YWluZXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV4Y2FsaWRyYXdDb250YWluZXIuZm9jdXMoKTtcbiAgfSwgW29uQ2xvc2UsIGV4Y2FsaWRyYXdDb250YWluZXJdKTtcbiAgcmV0dXJuIF9qc3goX0ZyYWdtZW50LCB7XG4gICAgY2hpbGRyZW46IG1vZGFsSXNTaG93biAmJiBfanN4KERpYWxvZywgT2JqZWN0LmFzc2lnbih7XG4gICAgICBzaXplOiBcInNtYWxsXCIsXG4gICAgICBvbkNsb3NlUmVxdWVzdDogaGFuZGxlQ2xvc2UsXG4gICAgICB0aXRsZTogdChcImVycm9yRGlhbG9nLnRpdGxlXCIpXG4gICAgfSwge1xuICAgICAgY2hpbGRyZW46IF9qc3goXCJkaXZcIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgd2hpdGVTcGFjZTogXCJwcmUtd3JhcFwiXG4gICAgICAgIH1cbiAgICAgIH0sIHtcbiAgICAgICAgY2hpbGRyZW46IGNoaWxkcmVuXG4gICAgICB9KSlcbiAgICB9KSlcbiAgfSk7XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/ErrorDialog.tsx\n');
              }
            ),
            /***/
            "../../components/ExcalidrawLogo.tsx": (
              /*!*******************************************!*\
                !*** ../../components/ExcalidrawLogo.tsx ***!
                \*******************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "ExcalidrawLogo": () => (/* binding */ ExcalidrawLogo)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var _ExcalidrawLogo_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ExcalidrawLogo.scss */ "../../components/ExcalidrawLogo.scss");\n\n\n\nconst LogoIcon = () => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("svg", Object.assign({\n  viewBox: "0 0 40 40",\n  fill: "none",\n  xmlns: "http://www.w3.org/2000/svg",\n  className: "ExcalidrawLogo-icon"\n}, {\n  children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M39.9 32.889a.326.326 0 0 0-.279-.056c-2.094-3.083-4.774-6-7.343-8.833l-.419-.472a.212.212 0 0 0-.056-.139.586.586 0 0 0-.167-.111l-.084-.083-.056-.056c-.084-.167-.28-.278-.475-.167-.782.39-1.507.973-2.206 1.528-.92.722-1.842 1.445-2.708 2.25a8.405 8.405 0 0 0-.977 1.028c-.14.194-.028.361.14.444-.615.611-1.23 1.223-1.843 1.861a.315.315 0 0 0-.084.223c0 .083.056.166.111.194l1.09.833v.028c1.535 1.528 4.244 3.611 7.12 5.861.418.334.865.667 1.284 1 .195.223.39.473.558.695.084.11.28.139.391.055.056.056.14.111.196.167a.398.398 0 0 0 .167.056.255.255 0 0 0 .224-.111.394.394 0 0 0 .055-.167c.029 0 .028.028.056.028a.318.318 0 0 0 .224-.084l5.082-5.528a.309.309 0 0 0 0-.444Zm-14.63-1.917a.485.485 0 0 0 .111.14c.586.5 1.2 1 1.843 1.555l-2.569-1.945-.251-.166c-.056-.028-.112-.084-.168-.111l-.195-.167.056-.056.055-.055.112-.111c.866-.861 2.346-2.306 3.1-3.028-.81.805-2.43 3.167-2.095 3.944Zm8.767 6.89-2.122-1.612a44.713 44.713 0 0 0-2.625-2.5c1.145.861 2.122 1.611 2.262 1.75 1.117.972 1.06.806 1.815 1.445l.921.666a1.06 1.06 0 0 1-.251.25Zm.558.416-.056-.028c.084-.055.168-.111.252-.194l-.196.222ZM1.089 5.75c.055.361.14.722.195 1.056.335 1.833.67 3.5 1.284 4.75l.252.944c.084.361.223.806.363.917 1.424 1.25 3.602 3.11 5.947 4.889a.295.295 0 0 0 .363 0s0 .027.028.027a.254.254 0 0 0 .196.084.318.318 0 0 0 .223-.084c2.988-3.305 5.221-6.027 6.813-8.305.112-.111.14-.278.14-.417.111-.111.195-.25.307-.333.111-.111.111-.306 0-.39l-.028-.027c0-.055-.028-.139-.084-.167-.698-.666-1.2-1.138-1.731-1.638-.922-.862-1.871-1.75-3.881-3.75l-.028-.028c-.028-.028-.056-.056-.112-.056-.558-.194-1.703-.389-3.127-.639C6.087 2.223 3.21 1.723.614.944c0 0-.168 0-.196.028l-.083.084c-.028.027-.056.055-.224.11h.056-.056c.028.167.028.278.084.473 0 .055.112.5.112.555l.782 3.556Zm15.496 3.278-.335-.334c.084.112.196.195.335.334Zm-3.546 4.666-.056.056c0-.028.028-.056.056-.056Zm-2.038-10c.168.167.866.834 1.033.973-.726-.334-2.54-1.167-3.379-1.445.838.167 1.983.334 2.346.472ZM1.424 2.306c.419.722.754 3.222 1.089 5.666-.196-.778-.335-1.555-.503-2.278-.251-1.277-.503-2.416-.838-3.416.056 0 .14 0 .252.028Zm-.168-.584c-.112 0-.223-.028-.307-.028 0-.027 0-.055-.028-.055.14 0 .223.028.335.083Zm-1.089.222c0-.027 0-.027 0 0ZM39.453 1.333c.028-.11-.558-.61-.363-.639.42-.027.42-.666 0-.666-.558.028-1.144.166-1.675.25-.977.194-1.982.389-2.96.61-2.205.473-4.383.973-6.561 1.557-.67.194-1.424.333-2.066.666-.224.111-.196.333-.084.472-.056.028-.084.028-.14.056-.195.028-.363.056-.558.083-.168.028-.252.167-.224.334 0 .027.028.083.028.11-1.173 1.556-2.485 3.195-3.909 4.945-1.396 1.611-2.876 3.306-4.356 5.056-4.719 5.5-10.052 11.75-15.943 17.25a.268.268 0 0 0 0 .389c.028.027.056.055.084.055-.084.084-.168.14-.252.222-.056.056-.084.111-.084.167a.605.605 0 0 0-.111.139c-.112.111-.112.305.028.389.111.11.307.11.39-.028.029-.028.029-.056.056-.056a.44.44 0 0 1 .615 0c.335.362.67.723.977 1.028l-.698-.583c-.112-.111-.307-.083-.39.028-.113.11-.085.305.027.389l7.427 6.194c.056.056.112.056.196.056s.14-.028.195-.084l.168-.166c.028.027.083.027.111.027.084 0 .14-.027.196-.083 10.052-10.055 18.15-17.639 27.42-24.417.083-.055.111-.166.111-.25.112 0 .196-.083.251-.194 1.704-5.194 2.039-9.806 2.15-12.083v-.028c0-.028.028-.056.028-.083.028-.056.028-.084.028-.084a1.626 1.626 0 0 0-.111-1.028ZM21.472 9.5c.446-.5.893-1.028 1.34-1.5-2.876 3.778-7.65 9.583-14.408 16.5 4.607-5.083 9.242-10.333 13.068-15ZM5.193 35.778h.084-.084Zm3.462 3.194c-.027-.028-.027-.028 0-.028v.028Zm4.16-3.583c.224-.25.448-.472.699-.722 0 0 0 .027.028.027-.252.223-.475.445-.726.695Zm1.146-1.111c.14-.14.279-.334.446-.5l.028-.028c1.648-1.694 3.351-3.389 5.082-5.111l.028-.028c.419-.333.921-.694 1.368-1.028a379.003 379.003 0 0 0-6.952 6.695ZM24.794 6.472c-.921 1.195-1.954 2.778-2.82 4.028-2.736 3.944-11.532 13.583-11.727 13.75a1976.983 1976.983 0 0 1-8.042 7.639l-.167.167c-.14-.167-.14-.417.028-.556C14.49 19.861 22.03 10.167 25.074 5.917c-.084.194-.14.36-.28.555Zm4.83 5.695c-1.116-.64-1.646-1.64-1.34-2.611l.084-.334c.028-.083.084-.194.14-.277.307-.5.754-.917 1.257-1.167.027 0 .055 0 .083-.028-.028-.056-.028-.139-.028-.222.028-.167.14-.278.335-.278.335 0 1.369.306 1.76.639.111.083.223.194.335.305.14.167.363.445.474.667.056.028.112.306.196.445.056.222.111.472.084.694-.028.028 0 .194-.028.194a2.668 2.668 0 0 1-.363 1.028c-.028.028-.028.056-.056.084l-.028.027c-.14.223-.335.417-.53.556-.643.444-1.369.583-2.095.389 0 0-.195-.084-.28-.111Zm8.154-.834a39.098 39.098 0 0 1-.893 3.167c0 .028-.028.083 0 .111-.056 0-.084.028-.14.056-2.206 1.61-4.356 3.305-6.506 5.028 1.843-1.64 3.686-3.306 5.613-4.945.558-.5.949-1.139 1.06-1.861l.28-1.667v-.055c.14-.334.67-.195.586.166Z",\n    fill: "currentColor"\n  })\n}));\n\nconst LogoText = () => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("svg", Object.assign({\n  viewBox: "0 0 450 55",\n  xmlns: "http://www.w3.org/2000/svg",\n  fill: "none",\n  className: "ExcalidrawLogo-text"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M429.27 96.74c2.47-1.39 4.78-3.02 6.83-4.95 1.43-1.35 2.73-2.86 3.81-4.51-.66.9-1.4 1.77-2.23 2.59-2.91 2.84-5.72 5.09-8.42 6.87h.01ZM343.6 69.36c.33 3.13.58 6.27.79 9.4.09 1.37.18 2.75.25 4.12-.12-4.46-.27-8.93-.5-13.39-.11-2.08-.24-4.16-.4-6.24-.06 1.79-.11 3.85-.13 6.11h-.01ZM378.47 98.34c.01-.37.07-1.13.01-6.51-.11 1.9-.22 3.81-.31 5.71-.07 1.42-.22 2.91-.16 4.35.39.03.78.07 1.17.1-.92-.85-.76-2.01-.72-3.66l.01.01ZM344.09 86.12c-.09-2.41-.22-4.83-.39-7.24v12.21c.15-.05.32-.09.47-.14.05-1.61-.03-3.23-.09-4.83h.01ZM440.69 66.79c-.22-.34-.45-.67-.69-.99-3.71-4.87-9.91-7.14-15.65-8.55-1.05-.26-2.12-.49-3.18-.71 2.29.59 4.48 1.26 6.64 2.02 7.19 2.54 10.57 5.41 12.88 8.23ZM305.09 72.46l1.2 3.6c.84 2.53 1.67 5.06 2.46 7.61.24.78.5 1.57.73 2.36.22-.04.44-.08.67-.12a776.9 776.9 0 0 1-5.01-13.57c-.02.04-.03.09-.05.13v-.01ZM345.49 90.25v.31c1.48-.42 3.05-.83 4.66-1.2-1.56.25-3.12.52-4.66.89ZM371.02 90.22c0-.57-.04-1.14-.11-1.71-.06-.02-.12-.04-.19-.05-.21-.05-.43-.08-.65-.11.42.16.74.88.95 1.87ZM398.93 54.23c-.13 0-.27-.01-.4-.02l.03.4c.11-.15.23-.27.37-.38ZM401.57 62.28v-.15c-1.22-.24-2.86-.61-3.23-1.25-.09-.15-.18-.51-.27-.98-.09.37-.2.73-.33 1.09 1.24.56 2.52.98 3.83 1.29ZM421.73 88.68c-2.97 1.65-6.28 3.12-9.69 3.68v.18c4.72-.14 11.63-3.85 16.33-8.38-2.04 1.75-4.33 3.24-6.63 4.53l-.01-.01ZM411.28 80.92c-.05-1.2-.09-2.4-.15-3.6-.21 5.66-.46 11.38-.47 14.51.24-.02.48-.04.71-.07.15-3.61.05-7.23-.09-10.83v-.01Z",\n    transform: "translate(-144.023 -51.76)"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M425.38 67.41c-3.5-1.45-7.19-2.57-14.06-3.62.09 1.97.06 4.88-.03 8.12.03.04.06.09.06.15.19 1.36.28 2.73.37 4.1.25 3.77.39 7.55.41 11.33 0 1.38-.01 2.76-.07 4.13 1.4-.25 2.78-.65 4.12-1.15 4.07-1.5 7.94-3.78 11.28-6.54 2.33-1.92 5.13-4.49 5.88-7.58.63-3.53-2.45-6.68-7.97-8.96l.01.02ZM411.35 92.53v-.06l-.34.03c.11.01.22.03.34.03ZM314.26 64.06c-.23-.59-.47-1.17-.7-1.75.57 1.62 1.11 3.25 1.6 4.9l.15.54 2.35 6.05c.32.82.66 1.64.98 2.46-1.38-4.1-2.83-8.17-4.39-12.2h.01ZM156.82 103.07c-.18.13-.38.23-.58.33 1.32-.03 2.66-.2 3.93-.34.86-.09 1.72-.22 2.58-.33-2.12.1-4.12.17-5.94.34h.01ZM210.14 68.88s.03.04.05.07c.18-.31.39-.64.58-.96-.21.3-.42.6-.64.89h.01ZM201.65 82.8c-.5.77-1.02 1.56-1.49 2.37 1.11-1.55 2.21-3.1 3.2-4.59-.23.23-.49.51-.75.79-.32.47-.65.95-.96 1.43ZM194.03 98.66c-.33-.4-.65-.84-1.05-1.17-.24-.2-.07-.49.17-.56-.23-.26-.42-.5-.63-.75 1.51-2.55 3.93-5.87 6.4-9.28-.17-.08-.29-.28-.2-.49.04-.09.09-.17.13-.26-1.21 1.78-2.42 3.55-3.61 5.33-.87 1.31-1.74 2.64-2.54 4-.29.5-.63 1.04-.87 1.61.81.65 1.63 1.27 2.47 1.88-.09-.11-.18-.21-.27-.32v.01ZM307.79 82.93c-1-3.17-2.05-6.32-3.1-9.48-1.62 4.08-3.69 9.17-6.16 15.19 3.32-1.04 6.77-1.87 10.27-2.5-.32-1.08-.67-2.15-1.01-3.21ZM149.5 80.7c.05-1.71.04-3.43 0-5.14-.1 2.26-.16 4.51-.22 6.77-.02.73-.03 1.46-.04 2.19.14-1.27.2-2.55.24-3.82h.02ZM228.98 98.3c.39 1.25.91 3.03.94 3.91.06-.03.12-.07.17-.1.08-1.29-.55-2.65-1.11-3.81ZM307.72 53.36c.81.5 1.53 1.04 2.07 1.49-.38-.8-.78-1.58-1.21-2.35-.17.03-.34.06-.51.11-.43.12-.86.26-1.29.41.35-.01.53.1.94.34ZM283.69 96.14c3.91-7.25 6.89-13.35 8.88-18.15l1.1-2.66c-1.27 2.64-2.56 5.27-3.83 7.9-1.53 3.15-3.06 6.31-4.58 9.47-.87 1.81-1.76 3.62-2.54 5.47.04.02.07.04.11.07.05.05.1.09.15.14.05-.73.27-1.48.71-2.24ZM289.92 103.23s-.04.01-.05.03c0-.02.04-.03.05-.04.05-.05.11-.1.16-.15l.21-.21c-.55 0-1.5-.27-2.55-.72.4.26.8.51 1.22.74.24.13.48.26.73.37.05.02.1.03.14.05a.27.27 0 0 1 .08-.07h.01ZM269.23 68.49c-.39-.19-.82-.48-1.33-.87-3.06-1.56-6.31-2.78-9.36-2.35-3.5.49-5.7 1.11-7.74 2.44 5.71-2.6 12.82-2.07 18.44.79l-.01-.01ZM177.87 53.69l1.06.03c-.96-.22-2-.25-2.89-.3-4.95-.26-9.99.33-14.86 1.19-2.44.43-4.88.95-7.28 1.59 9.09-1.76 15.69-2.77 23.97-2.51ZM219.85 55.51c-.18.12-.36.27-.56.45-.45.53-.86 1.11-1.26 1.66-1.91 2.61-3.71 5.31-5.57 7.95l-.12.18 8.05-10.11c-.18-.05-.36-.1-.55-.13h.01ZM510.71 54.1c.12-.15.29-.3.53-.45.69-.4 3.72-.63 5.87-.74-.36-.02-.73-.04-1.09-.05-1.84-.03-3.67.09-5.49.35.05.3.12.59.18.88v.01ZM510.76 86.02c1.37-3.07 2.49-6.27 3.57-9.46.55-1.64 1.12-3.3 1.6-4.97-1.59 4.01-3.67 9.14-6.2 15.3.24-.08.5-.14.74-.22.1-.22.19-.44.29-.65ZM566.95 75.76c.11-.02.23.03.31.11-.05-.13-.09-.26-.14-.39-.05.09-.11.18-.17.28ZM511.33 86.41c3.08-.89 6.24-1.62 9.46-2.14-1.51-3.98-2.98-7.96-4.39-11.87-.05.15-.09.31-.14.46-1.02 3.32-2.15 6.61-3.39 9.85-.48 1.25-.98 2.49-1.53 3.7h-.01ZM578.24 74.45c.11-.44.23-.87.35-1.31-.31.7-.64 1.39-.97 2.08.09.21.19.4.28.61.12-.46.23-.92.35-1.38h-.01ZM520.62 53.11c-.09 0-.18-.01-.28-.02.38.34.29 1.08.93 2.53l6.65 17.15c2.2 5.68 4.69 11.36 7.41 16.87l1.06 2.17c-2.95-7.05-5.92-14.08-8.87-21.13-1.58-3.79-3.16-7.59-4.7-11.4-.78-1.92-1.73-3.89-2.25-5.91-.03-.1 0-.19.04-.26h.01ZM578.78 77.87c1.45-5.77 3.07-10.43 3.58-13.36.05-.34.16-.88.31-1.55-.67 1.79-1.37 3.56-2.08 5.33-.12.43-.23.86-.35 1.29-.65 2.43-1.29 4.86-1.9 7.3.14.33.29.65.43 1l.01-.01ZM545.3 94.66c.02-.44.03-.83.05-1.12.02-1.01.05-2.02.11-3.02.03-6.66-.46-14.33-1.46-22.8-.13-.42-.27-1.24-.56-2.89 0-.02 0-.04-.01-.06.62 6.61.95 13.25 1.32 19.87.17 3.08.33 6.16.52 9.23.02.25.03.52.04.78l-.01.01ZM580.77 102.81c.13.2.27.38.37.49.27-.11.53-.22.8-.32-.43.09-.82.05-1.17-.16v-.01ZM530.48 104.07h.33c-.36-.13-.71-.32-1.04-.56.14.24.3.47.45.7.06-.08.14-.13.26-.13v-.01ZM542.63 58.82c.06.23.11.47.15.71.14-.33.36-.62.7-.86-.28.05-.57.11-.85.15ZM583.81 57.87c.15-.7.29-1.41.42-2.11-.14.45-.28.9-.42 1.34-.46 1.44-.89 2.89-1.31 4.34.44-1.19.88-2.37 1.31-3.57ZM523.62 91.48c-4.66 1.17-9.05 2.89-14.02 5.27 4.65-1.84 9.48-3.29 14.28-4.63-.09-.22-.17-.41-.26-.64ZM460.64 78.3c-.04-2.9-.11-5.81-.28-8.71-.1-1.68-.17-3.43-.5-5.09-.07.02-.14.03-.2.05.3 6.54.45 12.17.51 17.12.17-.07.34-.14.51-.2 0-1.06-.01-2.11-.03-3.17h-.01ZM470.63 63.24c-3.38-.26-6.81.32-10.1 1.1.41 2.01.47 4.14.57 6.18.18 3.55.25 7.11.27 10.67 3.31-1.38 6.5-3.12 9.3-5.35 1.96-1.56 3.86-3.41 5.02-5.66.73-1.41 1.19-3.22.26-4.65-1.09-1.7-3.46-2.14-5.32-2.29ZM460.29 63.68c1-.24 2.01-.46 3.04-.65-1.15.16-2.37.38-3.71.69v.13c.07-.02.15-.04.22-.05.11-.13.3-.18.45-.11v-.01ZM457.24 100.96c.43-.03.86-.07 1.29-.11.14-.49.27-.99.38-1.49-.44.7-1 1.23-1.67 1.6ZM482.88 104.98c-.18.23-.36.38-.55.47.14.09.27.19.4.28a70.76 70.76 0 0 0 4.37-4.63c.76-.89 1.52-1.81 2.19-2.77-.3-.27-.61-.53-.92-.79-.07 1.94-4.62 6.32-5.49 7.45v-.01Z",\n    transform: "translate(-144.023 -51.76)"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M474.36 63.31c-.4-.16-.84-.27-1.29-.37 1.56.42 3.08 1.22 3.76 2.74.62 1.4.32 2.95-.28 4.32.7-1.22.94-2.34.74-3.47-.24-1.33-1.19-2.54-2.93-3.21v-.01ZM477.34 89.18c-1.2-.81-2.4-1.62-3.6-2.42-.14.1-.26.19-.4.29 1.4.67 2.73 1.39 4 2.13ZM465.88 93.85c.37.25.74.5 1.1.75.46.32.92.65 1.38.97-1.57-1.2-2.01-1.61-2.49-1.72h.01ZM574.92 90.06c-2.28-5.21-4.93-11.13-5.67-12.26-.1-.15-1.57-3.01-1.63-3.08 0 0-.01.02-.02.02.4 1.37 1.09 2.69 1.65 3.99 2.14 4.95 4.36 9.86 6.67 14.73.6 1.26 1.21 2.52 1.83 3.78-.75-2.01-1.64-4.45-2.83-7.18ZM448.73 65.29c.1.2.22.38.34.57.22-.02.43-.06.65-.08v-.08c-.14-.05-.25 0-.99-.41ZM460.16 94.81c-.02.31-.06.59-.1.89-.03 1.71-.33 3.43-.79 5.07.15-.02.3-.03.45-.05.01-.04.02-.08.03-.11.09-.34.15-.69.2-1.03.17-1.07.25-2.16.33-3.24.05-.69.08-1.39.12-2.08-.27.1-.27.26-.24.57v-.02Z",\n    transform: "translate(-144.023 -51.76)"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "m328.67 98.12-3.22-6.58c-1.29-2.63-2.53-5.29-3.72-7.97-.25-.85-.52-1.69-.79-2.53-.81-2.57-1.67-5.12-2.55-7.67-1.92-5.53-3.9-11.08-6.32-16.41-.72-1.58-1.46-3.44-2.63-4.79-.03-.17-.16-.29-.34-.36a.282.282 0 0 0-.23-.04c-.06-.01-.12 0-.18.01-.74.06-1.5.38-2.19.61-2.22.77-4.4 1.64-6.63 2.38-.03-.08-.06-.16-.09-.25-.15-.42-.82-.24-.67.19.03.09.07.19.1.28l-.18.06c-.36.11-.28.6 0 .68.18 1.18.63 2.36.98 3.49.03.09.06.17.08.26-.08.23-.17.46-.24.64-.37.98-.79 1.94-1.21 2.9-1.27 2.89-2.62 5.75-3.98 8.6-3.18 6.67-6.44 13.31-9.64 19.97-1.08 2.25-2.2 4.5-3.15 6.81-.13.32.24.5.5.37 1.34 1.33 2.84 2.5 4.4 3.57.65.44 1.31.87 2.01 1.24.4.22.86.48 1.33.5.24.01.35-.19.33-.37.11-.1.21-.21.28-.28.41-.41.81-.84 1.2-1.26.85-.92 1.69-1.87 2.5-2.84 6.31-2.34 12.6-4.31 18.71-5.84 2.14 5.3 3.43 8.43 3.97 9.58.55 1.05 1.15 1.88 1.82 2.52 1.32.56 6.96-.03 9.23-1.96.87-1.28 1.19-2.67.93-4.15-.09-.5-.22-.95-.4-1.33l-.01-.03Zm-20.09-45.61c.43.77.83 1.56 1.21 2.35-.54-.45-1.27-.99-2.07-1.49-.42-.24-.6-.35-.94-.34.43-.15.85-.29 1.29-.41.17-.05.34-.08.51-.11Zm-25.86 45.66c.78-1.85 1.67-3.66 2.54-5.47 1.51-3.16 3.05-6.31 4.58-9.47 1.28-2.63 2.56-5.26 3.83-7.9l-1.1 2.66c-1.99 4.79-4.97 10.9-8.88 18.15-.43.76-.66 1.51-.71 2.24-.05-.05-.1-.09-.15-.14a.259.259 0 0 0-.11-.07Zm6.24 4.71c-.42-.23-.82-.48-1.22-.74 1.05.45 2 .72 2.55.72l-.21.21c-.05.05-.11.1-.16.15-.01.01-.04.03-.05.04 0-.02.03-.02.05-.03a.27.27 0 0 0-.08.07c-.05-.02-.1-.03-.14-.05-.25-.1-.49-.24-.73-.37h-.01Zm15.73-29.43c1.05 3.15 2.1 6.31 3.1 9.48.34 1.06.69 2.13 1.01 3.21-3.5.63-6.95 1.46-10.27 2.5 2.48-6.03 4.54-11.11 6.16-15.19Zm4.79 12.57c-.23-.79-.49-1.58-.73-2.36-.79-2.54-1.63-5.08-2.46-7.61l-1.2-3.6c.02-.04.04-.09.05-.13 1.6 4.45 3.28 9 5.01 13.57l-.67.12v.01Zm5.83-18.27-.15-.54c-.49-1.64-1.03-3.28-1.6-4.9.23.58.47 1.17.7 1.75 1.56 4.03 3.01 8.1 4.39 12.2-.33-.82-.67-1.64-.98-2.46l-2.35-6.05h-.01ZM390.43 79.37c-.13-10.43-.22-17.5-.24-19.97-.24-1.6.21-2.88-.65-3.65-.14-.13-.32-.23-.52-.32h.03c.45 0 .45-.69 0-.7-1.75-.03-3.5-.04-5.25-.14-1.38-.08-2.76-.21-4.15-.31-.07 0-.12.01-.17.04-.21-.07-.47.03-.45.31l.03.45c-.11.14-.19.3-.22.5-.21 1.26-.32 13.67-.36 23.59-.32 5.79-.67 11.57-.97 17.36-.09 1.73-.29 3.54-.21 5.3-.39.02-.38.64.04.69v.12c.05.44.74.45.7 0v-.06c1.1.09 2.2.21 3.3.3 1.14.19 2.44.2 3.29.17 1.73-.05 2.92-.05 3.8-.37.45-.05.9-.11 1.35-.17.44-.06.25-.73-.19-.67h-.01c.24-.32.45-.72.62-1.25.66-1.84.41-6.36.34-11.33l-.13-9.9.02.01Zm-12.26 18.17c.09-1.91.2-3.81.31-5.71.06 5.38 0 6.14-.01 6.51-.05 1.65-.21 2.81.72 3.66-.39-.04-.78-.07-1.17-.1-.06-1.44.09-2.93.16-4.35l-.01-.01ZM588.97 53.85c-2.06-.25-3.17-.51-3.76-.6a.3.3 0 0 1 .04-.08c.22-.39-.39-.75-.6-.35-.56 1.02-.9 2.19-1.26 3.29-.61 1.88-1.17 3.78-1.72 5.68-.63 2.19-1.24 4.39-1.83 6.59-.81 2.03-1.67 4.05-2.61 6.03-1.7-3.64-3.11-6.04-4.03-7.57-2.26-3.74-2.85-5.48-3.57-6.08l.31-.09c.43-.12.25-.8-.19-.67-1.06.3-2.12.6-3.17.95-.93.32-1.85.69-2.76 1.07-.13.05-.19.16-.22.27-.04.02-.08.05-.11.07-.04-.06-.07-.12-.11-.18a.354.354 0 0 0-.48-.12c-.16.09-.22.32-.13.48l.33.54c0 .09.02.18.06.28.51 1.16.78 1.38.72 1.47-2.42 3.44-5.41 7.86-6.2 9.1-1.27 1.97-2.01 3.14-2.45 3.84l-.91-6.56-.43-4.1c-.19-1.85-.37-3.23-.53-4.13-.19-1.1-.3-2.15-.45-3.16-.2-1.36-.29-2.06-.47-2.42h.04c.45.02.45-.68 0-.7-3.43-.16-6.81.94-10.17 1.48-.24-.22-.73-.04-.58.32.24.59.33 1.25.43 1.87.17 1.06.29 2.13.4 3.2.32 3.09.53 6.2.74 9.3.44 6.75.77 13.51 1.17 20.26.11 1.95.13 3.96.46 5.89.05.3.37.31.55.14.74 1.71 2.87 1.27 6.13 1.27 1.34 0 2.39.04 2.99-.11.02.32.48.53.63.18 3.61-8.26 7.41-16.46 12.05-24.2.03-.05.04-.1.05-.15.3.73.64 1.45.94 2.16.97 2.26 1.97 4.52 2.98 6.76 2.26 5.03 4.54 10.07 7.09 14.96.47.9.94 1.79 1.47 2.65.2.32.4.67.66.96-.18.25 0 .68.34.54.91-.38 1.82-.75 2.76-1.07 1.04-.35 2.11-.65 3.17-.95.39-.11.28-.66-.07-.68.62-.4.95-.96.87-1.91-.3-3.34.72-7.47.86-8.52l2.14-11.43c1.75-10.74 3.13-17.51 3.23-20.86.02-.49.08-2.84.13-3.24.17-1.25.48-1-4.96-1.65l.03-.02Zm-46.19 5.67c-.04-.24-.09-.48-.15-.71l.85-.15c-.34.24-.56.53-.7.86Zm1.95 25.12c-.36-6.63-.7-13.26-1.32-19.87 0 .02 0 .04.01.06.29 1.65.44 2.47.56 2.89 1 8.46 1.5 16.14 1.46 22.8-.06.99-.1 2-.11 3.02-.01.29-.03.68-.05 1.12-.01-.26-.03-.53-.04-.78-.19-3.08-.35-6.16-.52-9.23l.01-.01Zm36.4 18.66c-.11-.11-.24-.29-.37-.49.35.21.74.26 1.17.16-.27.11-.53.22-.8.32v.01Zm-.89-33.72c.12-.43.23-.86.35-1.29.71-1.77 1.41-3.55 2.08-5.33-.15.68-.26 1.22-.31 1.55-.5 2.94-2.13 7.59-3.58 13.36-.15-.35-.29-.66-.43-1 .61-2.44 1.25-4.87 1.9-7.3l-.01.01Zm3.56-12.48c.14-.44.28-.89.42-1.34-.13.7-.27 1.41-.42 2.11-.43 1.19-.86 2.38-1.31 3.57.42-1.45.85-2.9 1.31-4.34Zm-5.22 16.05c-.11.44-.23.87-.35 1.31-.12.46-.23.92-.35 1.38-.1-.22-.19-.4-.28-.61.34-.69.66-1.38.97-2.08h.01Zm-11.64 2.62c.06-.1.12-.19.17-.28.05.13.09.26.14.39a.398.398 0 0 0-.31-.11Zm2.3 2.98c-.56-1.3-1.25-2.63-1.65-3.99 0 0 .01-.02.02-.02.06.08 1.52 2.93 1.63 3.08.73 1.13 3.38 7.04 5.67 12.26 1.2 2.73 2.08 5.17 2.83 7.18-.62-1.25-1.23-2.51-1.83-3.78-2.31-4.87-4.53-9.78-6.67-14.73ZM275.92 87.03c-1.06-2.18-1.13-3.45-2.44-2.93-1.52.57-2.94 1.3-4.5 2.1-1.4.72-2.68 1.44-3.92 2.12.01-.25-.24-.5-.51-.34-4.8 2.93-12.41 4.7-17.28 1.31-1.98-1.77-3.32-4.15-3.97-5.78-.29-.95-.49-1.94-.63-2.93-.14-3.34 1.58-6.53 3.9-9.12.8-.79 1.68-1.51 2.66-2.12 3.7-2.3 8.22-3.07 12.51-2.51 2.71.35 5.32 1.24 7.71 2.55.39.22.75-.39.35-.6-.18-.1-.37-.18-.55-.27.56.27 1.03.33 1.51.19l-.48.39c-.15.11-.23.3-.13.48.09.15.33.24.48.13 1.3-.97 2.46-2.09 3.45-3.37.37-.29.64-.6.65-.97v-.02c.08-.33-.03-.7-.21-1.08-.31-.87-.98-2.01-2.19-3.26-2.43-2.52-3.79-3.45-5.68-4.26-1.14-.49-3.12-1.06-4.42-1.23-3.28-.42-10.64-1.21-18.18 4.11-7.74 5.46-11.94 12.3-12.23 20.61-.08 2.06.04 3.98.34 5.71.74 4.18 2.57 8 5.44 11.34 4.26 4.99 9.76 7.52 16.34 7.52 4.85 0 9.69-1.77 14.89-4.62.23-.12.45-.23.68-.35 2.19-1.1 4.37-2.23 6.46-3.5.49-.3 1.03-.61 1.5-.98 1.47-.87 1.11-1.12.49-2.95-.39-1.14-.76-2.7-2.06-5.36l.02-.01Zm-17.38-21.76c3.05-.42 6.31.79 9.36 2.35.51.39.94.68 1.33.87-5.61-2.86-12.72-3.39-18.44-.79 2.05-1.33 4.24-1.95 7.74-2.44l.01.01ZM443.67 72.67c-.4-2.2-1.15-4.33-2.37-6.22-1.49-2.32-3.58-4.19-5.91-5.64-6.17-3.81-13.75-5.11-20.83-6.01-3.23-.41-6.47-.69-9.72-.92l-1.39-.12c-.85-.07-1.52-.1-2.05-.1-1.08-.06-2.17-.12-3.25-.17-.08 0-.14.02-.19.05-.1.05-.18.14-.16.3.27 2.55-.01 5.12-.92 7.52-.15.38.4.56.62.28 1.32.59 2.68 1.05 4.08 1.37 0 2.78-.14 7.58-.33 12.91 0 0 0 .02-.01.03-.61 3.66-.79 7.42-1 11.12-.23 4.01-.43 8.03-.44 12.05 0 .64 0 1.28.03 1.93.02.31 0 .68.15.96.06.11.14.16.24.17-.2.17-.21.54.11.59 3.83.67 7.78.71 11.68.25 2.3-.19 4.87-.65 7.65-1.56 1.85-.54 3.67-1.18 5.43-1.91 7.2-3.02 14.31-8.07 17.35-15.53.76-1.86 1.17-3.8 1.31-5.75.3-1.93.28-3.82-.09-5.58l.01-.02Zm-19.32-15.42c5.74 1.41 11.94 3.68 15.65 8.55.25.32.47.65.69.99-2.3-2.82-5.68-5.69-12.88-8.23-2.16-.76-4.35-1.43-6.64-2.02 1.06.21 2.13.45 3.18.71Zm-25.82-3.04c.13 0 .27.01.4.02-.14.1-.26.23-.37.38 0-.13-.02-.26-.03-.4Zm34.82 22.17c-.75 3.09-3.55 5.66-5.88 7.58-3.35 2.76-7.21 5.03-11.28 6.54-1.33.49-2.71.9-4.12 1.15.06-1.38.08-2.76.07-4.13-.02-3.78-.16-7.56-.41-11.33-.09-1.37-.18-2.74-.37-4.1 0-.06-.03-.11-.06-.15.09-3.25.12-6.16.03-8.12 6.86 1.05 10.56 2.17 14.06 3.62 5.52 2.28 8.59 5.44 7.97 8.96l-.01-.02Zm-22 16.15c-.12 0-.23-.02-.34-.03l.34-.03v.06Zm-.69-.7c0-3.13.26-8.84.47-14.51.06 1.2.11 2.41.15 3.6.15 3.6.25 7.23.09 10.83-.24.03-.48.05-.71.07v.01Zm-12.33-30.94c.37.63 2.01 1.01 3.23 1.25v.15c-1.31-.31-2.59-.73-3.83-1.29.12-.36.23-.72.33-1.09.08.48.18.84.27.98Zm13.7 31.65v-.18c3.41-.56 6.71-2.02 9.69-3.68 2.31-1.28 4.59-2.78 6.63-4.53-4.69 4.53-11.61 8.24-16.33 8.38l.01.01Zm24.07-.75c-2.05 1.93-4.37 3.56-6.83 4.95 2.7-1.78 5.52-4.03 8.42-6.87.82-.82 1.56-1.69 2.23-2.59-1.08 1.65-2.38 3.16-3.81 4.51h-.01ZM187.16 92.14c-.79-2.47-2.1-7.12-3.1-6.87-.19-.01-2.09.77-4.08 1.54-3.06 1.18-5.91 2.13-10.09 2.82-2.74.42-5.87 1.01-10.61 1.06.04-3.34.05-6.01.05-7.99 7.97-.65 12.33-2.11 16.37-3.55 1.11-.39 2.69-1.01 2.63-1.8-.08-.35-.55-1.39-1.17-2.61-.47-1.16-.98-2.31-1.61-3.38-.42-.71-1.04-1.69-1.86-2.06-.11-.08-.22-.13-.29-.12-.02 0-.04 0-.07.01-.19-.04-.39-.05-.6-.01-.17.03-.24.15-.25.28-.04.02-.09.04-.14.05-4.33 1.48-8.85 2.33-13.24 3.61a499.1 499.1 0 0 0-.31-8.19c4.51-.99 8.88-1.38 13.11-1.82 3.68-.38 6.28.12 7.47.34.59.11.9.16 1.16.18h.1c-.1.37.44.66.62.28.02-.04.03-.08.05-.13.15.2.53.22.62-.1.17-.58.19-1.21.21-1.81v-.36c.03-.15.05-.3.07-.45.52-2.47.33-5.09-.64-7.44-.11-.27-.44-.28-.6-.14-.08-.21-.15-.42-.24-.62-.19-.41-.79-.05-.6.35.03.07.05.15.09.22-.98-.42-2.15-.54-3.17-.63-2.17-.19-4.37-.14-6.54 0-5.7.35-11.4 1.3-16.91 2.79-2.08.56-4.13 1.22-6.14 2-4.54 1.05-3.79 1.51-2.17 6.07.18.51.46 1.68.54 1.94.82 2.47 1.08 2.13 3.1 2.13s0 .05 0 .08h.52c-.48 2.66-.51 5.45-.62 8.13-.15 3.48-.22 6.96-.28 10.45 0 .41-.01.82-.02 1.23-.16.29-.33.57-.51.85-.05.38-.09.77-.14 1.18-.42 3.52-.59 6.48-.52 8.8v.34c.02.47.05.76.06.87.16 1.57-.26 3.47 1.35 3.79 1.61.32 3.5.55 4.85.55.11 0 .22-.02.33-.02 1.79.24 3.67.05 5.45-.12 2.85-.28 5.69-.7 8.51-1.19 3.03-.53 6.05-1.14 9.04-1.86 2.4-.58 4.82-1.19 7.13-2.06.51-.19 1.73-.57 2.46-1.14 1.81-.68 2.18-1 1.57-2.67-.23-.62-.48-1.49-.91-2.78l-.03-.02Zm-11.12-38.71c.89.05 1.93.08 2.89.3-.33 0-.68-.02-1.06-.03-8.28-.26-14.88.75-23.97 2.51 2.41-.64 4.85-1.16 7.28-1.59 4.87-.86 9.91-1.45 14.86-1.19Zm-26.53 22.13c.03 1.71.04 3.43 0 5.14-.04 1.27-.11 2.55-.24 3.82 0-.73.02-1.46.04-2.19.05-2.26.12-4.51.22-6.77h-.02Zm6.73 27.85c.2-.1.4-.21.58-.33 1.82-.17 3.82-.24 5.94-.34-.86.11-1.72.24-2.58.33-1.27.14-2.61.31-3.93.34h-.01ZM534.48 85.44c-3.52-8.38-7.07-16.75-10.5-25.17-.63-1.54-1.25-3.09-1.86-4.65-.31-.8-.65-1.6-.87-2.43-.04-.17-.17-.24-.31-.25.1-.2 0-.51-.29-.53-1.59-.08-3.18-.22-4.78-.25-1.96-.03-3.91.13-5.84.42-.31.05-.31.38-.13.56-.03.06-.05.14-.04.22.23 1.54.63 3.06 1.16 4.53.13.35.27.7.41 1.06l-2.68 6.18c-.11.03-.2.09-.25.22-.67 1.9-1.52 3.73-2.34 5.56a536.85 536.85 0 0 1-3.9 8.45c-2.64 5.64-5.34 11.25-7.91 16.93-.44.97-.88 1.94-1.29 2.93-.2.48-.47 1-.55 1.52v.05c-.02.12.02.26.16.34 1.19.73 2.41 1.41 3.66 2.05 1.2.62 2.45 1.25 3.76 1.61.43.12.62-.55.19-.67-1.13-.31-2.2-.83-3.24-1.36 1.09.36 2.1.69 2.75.93 2.82 1.01 2.38 1.1 4.3-3.75 2.1-1.09 4.34-1.96 6.53-2.79 4.35-1.64 8.8-3.03 13.27-4.29.82 2.01 1.77 3.97 2.72 5.92.35.83.62 1.45.79 1.82.22.42.45.8.69 1.15.17.33.33.67.5 1 .42.8.84 1.63 1.4 2.35.23.29.6 0 .55-.31 1.53-.02 3.06-.07 4.58-.27.92-.12 1.82-.32 2.71-.54 1.39-.27 3.85-1.11 3.74-1.42-.67-1.96-1.55-3.87-2.34-5.78-1.57-3.78-3.16-7.56-4.75-11.33v-.01Zm-11.65-26.16c1.54 3.81 3.12 7.6 4.7 11.4 2.94 7.05 5.91 14.09 8.87 21.13l-1.06-2.17c-2.71-5.51-5.2-11.19-7.41-16.87l-6.65-17.15c-.65-1.45-.55-2.19-.93-2.53.09 0 .18.01.28.02a.29.29 0 0 0-.04.26c.52 2.02 1.47 3.98 2.25 5.91h-.01Zm-6.58 13.58c.05-.15.09-.31.14-.46 1.41 3.92 2.88 7.9 4.39 11.87-3.22.52-6.38 1.25-9.46 2.14.55-1.22 1.05-2.46 1.53-3.7 1.24-3.24 2.37-6.53 3.39-9.85h.01Zm-.23-20c.36 0 .73.03 1.09.05-2.15.1-5.18.33-5.87.74-.24.15-.41.3-.53.45-.06-.29-.13-.58-.18-.88 1.82-.26 3.65-.39 5.49-.35v-.01Zm-.09 18.72c-.49 1.67-1.05 3.33-1.6 4.97-1.07 3.19-2.19 6.38-3.57 9.46-.09.21-.19.43-.29.65-.25.07-.5.14-.74.22 2.53-6.16 4.61-11.29 6.2-15.3Zm-6.34 25.16c4.97-2.38 9.37-4.1 14.02-5.27l.26.64c-4.8 1.35-9.63 2.8-14.28 4.63Zm20.17 6.76c.33.23.68.42 1.04.56h-.33c-.12 0-.21.06-.26.13-.15-.23-.31-.45-.45-.7v.01ZM226.57 91.75c-3.55-4.74-6.68-9.11-9.31-12.99 9.2-15.25 10.05-17.81 10.35-18.38.17-.34 1.09-2.27.64-2.53-1.13-.65-1.03-.65-2.97-1.71-1.19-.65-3.04-1.61-4.53-2.12-1.71-.59-1.24-.36-3 2.77-.06.1-.11.2-.17.3-.75 1.02-1.48 2.05-2.2 3.09-1.88 2.71-3.73 5.45-5.69 8.1-3.68-4.91-6.88-8.76-9.51-11.43-.15-.15-.3-.29-.46-.42-1.27-1.28-7.24 3.53-7.93 5.58-.09.09-.19.16-.28.25-.27.26.03.64.33.58.19.65.5 1.29.94 1.91 3.85 5.06 7.19 9.76 9.94 14-1.23 2.61-3.06 5-4.67 7.38l-2.28 3.33c-.5.66-.93 1.23-1.29 1.69-.67.93-2.09 2.61-2.3 3.87-.51.85-1.16 1.84-1.29 2.83-.06.44.61.63.67.19.01-.08.04-.15.06-.22 1.36 1.08 2.76 2.11 4.19 3.11 1.3.91 2.62 1.85 4.04 2.56.21.1.4 0 .48-.17.24.07.48.14.72.2.44.1.62-.57.19-.67-2.02-.48-3.77-1.57-5.23-3.02-.47-.46-.9-.96-1.32-1.46 1.74 1.35 4.2 2.89 5.89 4.14 1.39 1.03 2.85-2.27 4.22-4.2 1.86-2.64 3.96-5.86 5.52-8.29l10.39 14.51c.67.81 1.14 1.21 1.57 1.36-.05.24.12.51.41.4 1.53-.58 3.05-1.19 4.54-1.87 1.52-.69 3.06-1.45 4.36-2.5a.28.28 0 0 0 .12-.23c1.66-1.1.81-1.74-1.41-4.91-1.13-1.58-1.71-2.36-3.7-5.01l-.03-.02Zm2.41 6.54c.56 1.15 1.19 2.52 1.11 3.81-.06.04-.12.07-.17.1-.03-.88-.55-2.66-.94-3.91Zm-16.51-32.73c1.86-2.65 3.65-5.35 5.57-7.95.4-.55.81-1.13 1.26-1.66.19-.18.38-.33.56-.45.18.03.36.08.55.13l-8.05 10.11.12-.18h-.01ZM192.7 95.48c.79-1.37 1.66-2.69 2.54-4 1.19-1.79 2.4-3.56 3.61-5.33-.04.09-.09.17-.13.26-.1.22.03.41.2.49-2.47 3.42-4.89 6.73-6.4 9.28.21.24.4.48.63.75-.24.07-.4.36-.17.56.4.33.72.77 1.05 1.17.09.11.18.21.27.32-.84-.61-1.66-1.24-2.47-1.88.24-.57.58-1.11.87-1.61v-.01Zm7.46-10.32c.47-.81.98-1.59 1.49-2.37.31-.48.64-.95.96-1.43.26-.29.52-.56.75-.79-.99 1.48-2.09 3.03-3.2 4.59Zm10.03-16.22s-.03-.05-.05-.07c.22-.29.43-.59.64-.89-.2.32-.4.65-.58.96h-.01ZM371.54 87.96c-.01-.08-.01-.16-.03-.23-.06-.38-.58-.29-.66.03-.3-.05-.6-.08-.81-.11-1.14-.15-2.29-.19-3.44-.2 1.04-.09 2.09-.18 3.14-.23.45-.02.45-.72 0-.7-6.57.35-13.14 1.23-19.65 2.11-1.53.21-3.05.42-4.57.68-.01 0-.02.01-.04.01-.04-3.33-.13-6.66-.24-9.99-.19-5.7-.4-11.41-.88-17.1-.13-1.51-.23-3.07-.49-4.58 0-.25 0-.48-.02-.68-.06-1.19-.04-2.61-.68-2.78-.16-.07-.72-.16-1.5-.24.22-.17.16-.62-.2-.63-1.19-.04-2.39.09-3.57.23-1.2.14-2.41.32-3.59.6-.16-.1-.41-.06-.5.12-.06.02-.13.03-.19.05-.35.1-.29.55-.03.66-.26.6-.19 2.27-.21 3-.02.66-.66 33.73-.9 40.3-.03.65.06 1.12.04 1.45-.16 3.05.87 4.96 6.34 3.93 1.09-.08 2.75-.77 5.36-1.43 4.13-1.04 5.78-1.52 6.2-1.65 6.43-1.69 6.78-1.97 11.72-2.43.55-.05 4.8-.38 6.03-.3.64.04 1.19.07 1.65.1.09 0 .16-.03.24-.05.1.27.56.33.66-.02.39-1.32.61-2.71.78-4.08.2-1.61.29-3.24.15-4.86.24.03.52-.23.38-.53-.09-.2-.27-.33-.49-.43v-.02Zm-.63.56c.07.57.11 1.14.11 1.71-.21-.99-.53-1.71-.95-1.87.22.03.44.06.65.11.06.01.12.04.19.05Zm-25.41 1.73c1.54-.36 3.1-.64 4.66-.89-1.61.37-3.18.77-4.66 1.2v-.31Zm-.86-7.37c-.07-1.37-.16-2.75-.25-4.12-.21-3.13-.45-6.27-.79-9.4.02-2.25.08-4.31.13-6.11.16 2.08.29 4.16.4 6.24.23 4.46.38 8.93.5 13.39h.01Zm-.94-4c.16 2.41.29 4.83.39 7.24.06 1.6.14 3.22.09 4.83-.15.05-.32.09-.47.14V78.88h-.01ZM483.72 92.83c-3.05-2.28-6.22-4.4-9.38-6.51 8.86-6.49 13.49-12.95 13.73-19.23.04-.76 0-1.5-.13-2.2-.67-3.82-3.5-6.68-8.39-8.48.13.04.27.08.4.13 3.92 1.39 7.74 4.23 8.5 8.56.34 1.95-.05 3.96-.98 5.69-.21.4.39.75.6.35 1.86-3.46 1.46-7.55-.97-10.63-3.53-4.47-9.76-5.88-15.16-6.16-2.32-.12-4.64-.04-6.95.19-6 .32-12.71 1.68-17.63 3.21-.37.11-.67.23-.92.35-.2-.17-.62.02-.57.37v.03c-.64.68-.18 1.64.48 3.21.38.91.67 1.89 1.15 2.58.32.76.68 1.51 1.13 2.19.14.21.38.19.53.07.19-.02.38-.05.57-.08v1.57c-.06.06-.1.13-.11.23-.27 4.18-.34 8.38-.48 12.57l-.3 9.03c-.24 3.91-.44 6.77-.46 7.26-.05.88-.11 1.95.07 2.81-.01.22-.02.43-.04.65 0 .11-.02.23-.03.35 0 .05-.03.27-.01.16-.05.4.5.59.64.28.05.04.12.08.2.08 1.75.13 3.5.28 5.25.3 1.69.02 3.38-.12 5.06-.32.08.23.36.39.55.15.06-.08.11-.17.16-.26.18-.09.24-.32.18-.48.05-.2.1-.4.13-.6.16-.86.25-1.74.33-2.62.11-1.17.17-2.34.23-3.51.15-.01.32-.03.52-.04.36-.03 1.73-.15 2.06-.15.39 0 .7-.02.95-.04 1.76 1.11 3.45 2.35 5.14 3.55 2.83 2.01 5.64 4.04 8.47 6.04 1.42 1 2.85 2 4.29 2.97.1.06.19.07.27.04.08 0 .17-.02.25-.1 1.61-1.56 3.15-3.18 4.6-4.88.75-.88 1.49-1.78 2.15-2.73.01.01.03.02.04.03.34.3.83-.2.49-.49-2.16-1.9-4.34-3.76-6.64-5.48l.03-.01Zm-6.38-3.65a55.72 55.72 0 0 0-4-2.13c.14-.1.26-.19.4-.29 1.2.81 2.4 1.61 3.6 2.42Zm-20.1 11.78c.67-.37 1.23-.91 1.67-1.6-.11.5-.24 1-.38 1.49-.43.04-.86.08-1.29.11Zm2.38-37.24c1.34-.31 2.56-.52 3.71-.69-1.03.19-2.04.41-3.04.65-.14-.07-.34-.02-.45.11-.07.02-.15.04-.22.05v-.13.01Zm.04.84c.07-.02.14-.03.2-.05.34 1.66.41 3.41.5 5.09.17 2.9.24 5.81.28 8.71l.03 3.17c-.17.07-.34.14-.51.2-.06-4.96-.21-10.58-.51-17.12h.01Zm16.04 5.62c-1.16 2.25-3.06 4.1-5.02 5.66-2.8 2.23-5.99 3.97-9.3 5.35-.01-3.56-.09-7.12-.27-10.67-.1-2.04-.16-4.16-.57-6.18 3.3-.78 6.72-1.36 10.1-1.1 1.85.14 4.23.59 5.32 2.29.92 1.43.46 3.24-.26 4.65Zm.85-.18c.6-1.37.9-2.92.28-4.32-.67-1.52-2.2-2.32-3.76-2.74.46.1.89.21 1.29.37 1.74.67 2.69 1.88 2.93 3.21.2 1.13-.05 2.25-.74 3.47V70Zm-27.47-4.14c-.12-.19-.23-.38-.34-.57.74.42.85.36.99.41v.08c-.22.03-.43.06-.65.08Zm11.21 30.46c-.08 1.08-.16 2.17-.33 3.24-.05.35-.11.69-.2 1.03 0 .04-.02.07-.03.11-.15.02-.3.04-.45.05.45-1.64.76-3.36.79-5.07.03-.29.08-.57.1-.89-.03-.31-.03-.47.24-.57-.04.69-.07 1.39-.12 2.08v.02Zm5.6-2.47c.48.11.92.52 2.49 1.72-.46-.32-.92-.65-1.38-.97-.37-.25-.73-.5-1.1-.75h-.01Zm21.23 7.24a70.76 70.76 0 0 1-4.37 4.63c-.14-.09-.27-.19-.4-.28.19-.09.37-.24.55-.47.87-1.14 5.43-5.51 5.49-7.45.31.26.62.53.92.79-.67.97-1.42 1.88-2.19 2.77v.01Z",\n    fill: "currentColor",\n    transform: "translate(-144.023 -51.76)"\n  })]\n}));\n\nconst ExcalidrawLogo = ({\n  style,\n  size = "small",\n  withText\n}) => {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n    className: `ExcalidrawLogo is-${size}`,\n    style: style\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(LogoIcon, {}), withText && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(LogoText, {})]\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 40024 characters]\n//# sourceURL=webpack-internal:///../../components/ExcalidrawLogo.tsx\n');
              }
            ),
            /***/
            "../../components/EyeDropper.tsx": (
              /*!***************************************!*\
                !*** ../../components/EyeDropper.tsx ***!
                \***************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "EyeDropper": () => (/* binding */ EyeDropper),\n/* harmony export */   "activeEyeDropperAtom": () => (/* binding */ activeEyeDropperAtom)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var jotai__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! jotai */ "../../../node_modules/jotai/esm/index.mjs");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-dom */ "react-dom");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _colors__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../colors */ "../../colors.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _context_ui_appState__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../context/ui-appState */ "../../context/ui-appState.ts");\n/* harmony import */ var _hooks_useCreatePortalContainer__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../hooks/useCreatePortalContainer */ "../../hooks/useCreatePortalContainer.ts");\n/* harmony import */ var _hooks_useOutsideClick__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../hooks/useOutsideClick */ "../../hooks/useOutsideClick.ts");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../scene */ "../../scene/index.ts");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./App */ "../../components/App.tsx");\n/* harmony import */ var _hooks_useStable__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../hooks/useStable */ "../../hooks/useStable.ts");\n/* harmony import */ var _EyeDropper_scss__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./EyeDropper.scss */ "../../components/EyeDropper.scss");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst activeEyeDropperAtom = (0,jotai__WEBPACK_IMPORTED_MODULE_13__.atom)(null);\nconst EyeDropper = ({\n  onCancel,\n  onChange,\n  onSelect,\n  colorPickerType\n}) => {\n  const eyeDropperContainer = (0,_hooks_useCreatePortalContainer__WEBPACK_IMPORTED_MODULE_6__.useCreatePortalContainer)({\n    className: "excalidraw-eye-dropper-backdrop",\n    parentSelector: ".excalidraw-eye-dropper-container"\n  });\n  const appState = (0,_context_ui_appState__WEBPACK_IMPORTED_MODULE_5__.useUIAppState)();\n  const elements = (0,_App__WEBPACK_IMPORTED_MODULE_10__.useExcalidrawElements)();\n  const app = (0,_App__WEBPACK_IMPORTED_MODULE_10__.useApp)();\n  const selectedElements = (0,_scene__WEBPACK_IMPORTED_MODULE_9__.getSelectedElements)(elements, appState);\n  const stableProps = (0,_hooks_useStable__WEBPACK_IMPORTED_MODULE_11__.useStable)({\n    app,\n    onCancel,\n    onChange,\n    onSelect,\n    selectedElements\n  });\n  const {\n    container: excalidrawContainer\n  } = (0,_App__WEBPACK_IMPORTED_MODULE_10__.useExcalidrawContainer)();\n  (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {\n    const colorPreviewDiv = ref.current;\n\n    if (!colorPreviewDiv || !app.canvas || !eyeDropperContainer) {\n      return;\n    }\n\n    let isHoldingPointerDown = false;\n    const ctx = app.canvas.getContext("2d");\n\n    const getCurrentColor = ({\n      clientX,\n      clientY\n    }) => {\n      const pixel = ctx.getImageData((clientX - appState.offsetLeft) * window.devicePixelRatio, (clientY - appState.offsetTop) * window.devicePixelRatio, 1, 1).data;\n      return (0,_colors__WEBPACK_IMPORTED_MODULE_3__.rgbToHex)(pixel[0], pixel[1], pixel[2]);\n    };\n\n    const mouseMoveListener = ({\n      clientX,\n      clientY,\n      altKey\n    }) => {\n      // FIXME swap offset when the preview gets outside viewport\n      colorPreviewDiv.style.top = `${clientY + 20}px`;\n      colorPreviewDiv.style.left = `${clientX + 20}px`;\n      const currentColor = getCurrentColor({\n        clientX,\n        clientY\n      });\n\n      if (isHoldingPointerDown) {\n        stableProps.onChange(colorPickerType, currentColor, stableProps.selectedElements, {\n          altKey\n        });\n      }\n\n      colorPreviewDiv.style.background = currentColor;\n    };\n\n    const onCancel = () => {\n      stableProps.onCancel();\n    };\n\n    const onSelect = (color, event) => {\n      stableProps.onSelect(color, event);\n    };\n\n    const pointerDownListener = event => {\n      isHoldingPointerDown = true; // NOTE we can\'t event.preventDefault() as that would stop\n      // pointermove events\n\n      event.stopImmediatePropagation();\n    };\n\n    const pointerUpListener = event => {\n      isHoldingPointerDown = false; // since we\'re not preventing default on pointerdown, the focus would\n      // goes back to `body` so we want to refocus the editor container instead\n\n      excalidrawContainer === null || excalidrawContainer === void 0 ? void 0 : excalidrawContainer.focus();\n      event.stopImmediatePropagation();\n      event.preventDefault();\n      onSelect(getCurrentColor(event), event);\n    };\n\n    const keyDownListener = event => {\n      if (event.key === _keys__WEBPACK_IMPORTED_MODULE_8__.KEYS.ESCAPE) {\n        event.preventDefault();\n        event.stopImmediatePropagation();\n        onCancel();\n      }\n    }; // -------------------------------------------------------------------------\n\n\n    eyeDropperContainer.tabIndex = -1; // focus container so we can listen on keydown events\n\n    eyeDropperContainer.focus(); // init color preview else it would show only after the first mouse move\n\n    mouseMoveListener({\n      clientX: stableProps.app.lastViewportPosition.x,\n      clientY: stableProps.app.lastViewportPosition.y,\n      altKey: false\n    });\n    eyeDropperContainer.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_4__.EVENT.KEYDOWN, keyDownListener);\n    eyeDropperContainer.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_4__.EVENT.POINTER_DOWN, pointerDownListener);\n    eyeDropperContainer.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_4__.EVENT.POINTER_UP, pointerUpListener);\n    window.addEventListener("pointermove", mouseMoveListener, {\n      passive: true\n    });\n    window.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_4__.EVENT.BLUR, onCancel);\n    return () => {\n      isHoldingPointerDown = false;\n      eyeDropperContainer.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_4__.EVENT.KEYDOWN, keyDownListener);\n      eyeDropperContainer.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_4__.EVENT.POINTER_DOWN, pointerDownListener);\n      eyeDropperContainer.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_4__.EVENT.POINTER_UP, pointerUpListener);\n      window.removeEventListener("pointermove", mouseMoveListener);\n      window.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_4__.EVENT.BLUR, onCancel);\n    };\n  }, [stableProps, app.canvas, eyeDropperContainer, colorPickerType, excalidrawContainer, appState.offsetLeft, appState.offsetTop]);\n  const ref = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n  (0,_hooks_useOutsideClick__WEBPACK_IMPORTED_MODULE_7__.useOutsideClick)(ref, () => {\n    onCancel();\n  }, event => {\n    if (event.target.closest(".excalidraw-eye-dropper-trigger, .excalidraw-eye-dropper-backdrop")) {\n      return true;\n    } // consider all other clicks as outside\n\n\n    return false;\n  });\n\n  if (!eyeDropperContainer) {\n    return null;\n  }\n\n  return (0,react_dom__WEBPACK_IMPORTED_MODULE_2__.createPortal)((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n    ref: ref,\n    className: "excalidraw-eye-dropper-preview"\n  }), eyeDropperContainer);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 9216 characters]\n//# sourceURL=webpack-internal:///../../components/EyeDropper.tsx\n');
              }
            ),
            /***/
            "../../components/FilledButton.tsx": (
              /*!*****************************************!*\
                !*** ../../components/FilledButton.tsx ***!
                \*****************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "FilledButton": () => (/* binding */ FilledButton)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _FilledButton_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./FilledButton.scss */ "../../components/FilledButton.scss");\n\n\n\n\nconst FilledButton = (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)(({\n  children,\n  startIcon,\n  onClick,\n  label,\n  variant = "filled",\n  color = "primary",\n  size = "medium",\n  fullWidth,\n  className\n}, ref) => {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("button", Object.assign({\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_2__["default"])("ExcButton", `ExcButton--color-${color}`, `ExcButton--variant-${variant}`, `ExcButton--size-${size}`, {\n      "ExcButton--fullWidth": fullWidth\n    }, className),\n    onClick: onClick,\n    type: "button",\n    "aria-label": label,\n    ref: ref\n  }, {\n    children: [startIcon && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: "ExcButton__icon",\n      "aria-hidden": true\n    }, {\n      children: startIcon\n    })), variant !== "icon" && (children !== null && children !== void 0 ? children : label)]\n  }));\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9GaWxsZWRCdXR0b24udHN4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUErRDtBQUNyQjtBQUNsQjtBQUNLO0FBQ3RCLHFCQUFxQixpREFBVTtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsU0FBUyx1REFBSztBQUNkLGVBQWUsZ0RBQUksa0NBQWtDLE1BQU0seUJBQXlCLFFBQVEsc0JBQXNCLEtBQUs7QUFDdkg7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsNEJBQTRCLHNEQUFJO0FBQ2hDO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNILENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9GaWxsZWRCdXR0b24udHN4P2E2OGMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCBSZWFjdCwgeyBmb3J3YXJkUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgY2xzeCBmcm9tIFwiY2xzeFwiO1xuaW1wb3J0IFwiLi9GaWxsZWRCdXR0b24uc2Nzc1wiO1xuZXhwb3J0IGNvbnN0IEZpbGxlZEJ1dHRvbiA9IGZvcndhcmRSZWYoKHtcbiAgY2hpbGRyZW4sXG4gIHN0YXJ0SWNvbixcbiAgb25DbGljayxcbiAgbGFiZWwsXG4gIHZhcmlhbnQgPSBcImZpbGxlZFwiLFxuICBjb2xvciA9IFwicHJpbWFyeVwiLFxuICBzaXplID0gXCJtZWRpdW1cIixcbiAgZnVsbFdpZHRoLFxuICBjbGFzc05hbWVcbn0sIHJlZikgPT4ge1xuICByZXR1cm4gX2pzeHMoXCJidXR0b25cIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgY2xhc3NOYW1lOiBjbHN4KFwiRXhjQnV0dG9uXCIsIGBFeGNCdXR0b24tLWNvbG9yLSR7Y29sb3J9YCwgYEV4Y0J1dHRvbi0tdmFyaWFudC0ke3ZhcmlhbnR9YCwgYEV4Y0J1dHRvbi0tc2l6ZS0ke3NpemV9YCwge1xuICAgICAgXCJFeGNCdXR0b24tLWZ1bGxXaWR0aFwiOiBmdWxsV2lkdGhcbiAgICB9LCBjbGFzc05hbWUpLFxuICAgIG9uQ2xpY2s6IG9uQ2xpY2ssXG4gICAgdHlwZTogXCJidXR0b25cIixcbiAgICBcImFyaWEtbGFiZWxcIjogbGFiZWwsXG4gICAgcmVmOiByZWZcbiAgfSwge1xuICAgIGNoaWxkcmVuOiBbc3RhcnRJY29uICYmIF9qc3goXCJkaXZcIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgICBjbGFzc05hbWU6IFwiRXhjQnV0dG9uX19pY29uXCIsXG4gICAgICBcImFyaWEtaGlkZGVuXCI6IHRydWVcbiAgICB9LCB7XG4gICAgICBjaGlsZHJlbjogc3RhcnRJY29uXG4gICAgfSkpLCB2YXJpYW50ICE9PSBcImljb25cIiAmJiAoY2hpbGRyZW4gIT09IG51bGwgJiYgY2hpbGRyZW4gIT09IHZvaWQgMCA/IGNoaWxkcmVuIDogbGFiZWwpXVxuICB9KSk7XG59KTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/FilledButton.tsx\n');
              }
            ),
            /***/
            "../../components/FixedSideContainer.tsx": (
              /*!***********************************************!*\
                !*** ../../components/FixedSideContainer.tsx ***!
                \***********************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "FixedSideContainer": () => (/* binding */ FixedSideContainer)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var _FixedSideContainer_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./FixedSideContainer.scss */ "../../components/FixedSideContainer.scss");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n\n\n\n\nconst FixedSideContainer = ({\n  children,\n  side,\n  className\n}) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n  className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__["default"])("FixedSideContainer", `FixedSideContainer_side_${side}`, className)\n}, {\n  children: children\n}));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9GaXhlZFNpZGVDb250YWluZXIudHN4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFnRDtBQUNiO0FBQ1Q7QUFDRjtBQUNqQjtBQUNQO0FBQ0E7QUFDQTtBQUNBLENBQUMsS0FBSyxzREFBSTtBQUNWLGFBQWEsZ0RBQUksa0RBQWtELEtBQUs7QUFDeEUsQ0FBQztBQUNEO0FBQ0EsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL0ZpeGVkU2lkZUNvbnRhaW5lci50c3g/ZjY2NSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IFwiLi9GaXhlZFNpZGVDb250YWluZXIuc2Nzc1wiO1xuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IGNsc3ggZnJvbSBcImNsc3hcIjtcbmV4cG9ydCBjb25zdCBGaXhlZFNpZGVDb250YWluZXIgPSAoe1xuICBjaGlsZHJlbixcbiAgc2lkZSxcbiAgY2xhc3NOYW1lXG59KSA9PiBfanN4KFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oe1xuICBjbGFzc05hbWU6IGNsc3goXCJGaXhlZFNpZGVDb250YWluZXJcIiwgYEZpeGVkU2lkZUNvbnRhaW5lcl9zaWRlXyR7c2lkZX1gLCBjbGFzc05hbWUpXG59LCB7XG4gIGNoaWxkcmVuOiBjaGlsZHJlblxufSkpOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/FixedSideContainer.tsx\n');
              }
            ),
            /***/
            "../../components/HandButton.tsx": (
              /*!***************************************!*\
                !*** ../../components/HandButton.tsx ***!
                \***************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "HandButton": () => (/* binding */ HandButton)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var _ToolIcon_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ToolIcon.scss */ "../../components/ToolIcon.scss");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _ToolButton__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./ToolButton */ "../../components/ToolButton.tsx");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./icons */ "../../components/icons.tsx");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n\n\n\n\n\n\nconst HandButton = props => {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ToolButton__WEBPACK_IMPORTED_MODULE_3__.ToolButton, {\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_2__["default"])("Shape", {\n      fillable: false\n    }),\n    type: "radio",\n    icon: _icons__WEBPACK_IMPORTED_MODULE_4__.handIcon,\n    name: "editor-current-shape",\n    checked: props.checked,\n    title: `${props.title} \u2014 H`,\n    keyBindingLabel: !props.isMobile ? _keys__WEBPACK_IMPORTED_MODULE_5__.KEYS.H.toLocaleUpperCase() : undefined,\n    "aria-label": `${props.title} \u2014 H`,\n    "aria-keyshortcuts": _keys__WEBPACK_IMPORTED_MODULE_5__.KEYS.H,\n    "data-testid": `toolbar-hand`,\n    onChange: () => {\n      var _a;\n\n      return (_a = props.onChange) === null || _a === void 0 ? void 0 : _a.call(props);\n    }\n  });\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9IYW5kQnV0dG9uLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQWdEO0FBQ3ZCO0FBQ0Q7QUFDa0I7QUFDUDtBQUNKO0FBQ3hCO0FBQ1AsU0FBUyxzREFBSSxDQUFDLG1EQUFVO0FBQ3hCLGVBQWUsZ0RBQUk7QUFDbkI7QUFDQSxLQUFLO0FBQ0w7QUFDQSxVQUFVLDRDQUFRO0FBQ2xCO0FBQ0E7QUFDQSxjQUFjLGFBQWE7QUFDM0IsdUNBQXVDLDJEQUF3QjtBQUMvRCxxQkFBcUIsYUFBYTtBQUNsQyx5QkFBeUIseUNBQU07QUFDL0I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0giLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9IYW5kQnV0dG9uLnRzeD85OTEyIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgXCIuL1Rvb2xJY29uLnNjc3NcIjtcbmltcG9ydCBjbHN4IGZyb20gXCJjbHN4XCI7XG5pbXBvcnQgeyBUb29sQnV0dG9uIH0gZnJvbSBcIi4vVG9vbEJ1dHRvblwiO1xuaW1wb3J0IHsgaGFuZEljb24gfSBmcm9tIFwiLi9pY29uc1wiO1xuaW1wb3J0IHsgS0VZUyB9IGZyb20gXCIuLi9rZXlzXCI7XG5leHBvcnQgY29uc3QgSGFuZEJ1dHRvbiA9IHByb3BzID0+IHtcbiAgcmV0dXJuIF9qc3goVG9vbEJ1dHRvbiwge1xuICAgIGNsYXNzTmFtZTogY2xzeChcIlNoYXBlXCIsIHtcbiAgICAgIGZpbGxhYmxlOiBmYWxzZVxuICAgIH0pLFxuICAgIHR5cGU6IFwicmFkaW9cIixcbiAgICBpY29uOiBoYW5kSWNvbixcbiAgICBuYW1lOiBcImVkaXRvci1jdXJyZW50LXNoYXBlXCIsXG4gICAgY2hlY2tlZDogcHJvcHMuY2hlY2tlZCxcbiAgICB0aXRsZTogYCR7cHJvcHMudGl0bGV9IOKAlCBIYCxcbiAgICBrZXlCaW5kaW5nTGFiZWw6ICFwcm9wcy5pc01vYmlsZSA/IEtFWVMuSC50b0xvY2FsZVVwcGVyQ2FzZSgpIDogdW5kZWZpbmVkLFxuICAgIFwiYXJpYS1sYWJlbFwiOiBgJHtwcm9wcy50aXRsZX0g4oCUIEhgLFxuICAgIFwiYXJpYS1rZXlzaG9ydGN1dHNcIjogS0VZUy5ILFxuICAgIFwiZGF0YS10ZXN0aWRcIjogYHRvb2xiYXItaGFuZGAsXG4gICAgb25DaGFuZ2U6ICgpID0+IHtcbiAgICAgIHZhciBfYTtcblxuICAgICAgcmV0dXJuIChfYSA9IHByb3BzLm9uQ2hhbmdlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2FsbChwcm9wcyk7XG4gICAgfVxuICB9KTtcbn07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/HandButton.tsx\n');
              }
            ),
            /***/
            "../../components/HelpButton.tsx": (
              /*!***************************************!*\
                !*** ../../components/HelpButton.tsx ***!
                \***************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "HelpButton": () => (/* binding */ HelpButton)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./icons */ "../../components/icons.tsx");\n\n\n\nconst HelpButton = props => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("button", Object.assign({\n  className: "help-icon",\n  onClick: props.onClick,\n  type: "button",\n  title: `${(0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("helpDialog.title")} \u2014 ?`,\n  "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("helpDialog.title")\n}, {\n  children: _icons__WEBPACK_IMPORTED_MODULE_2__.HelpIcon\n}));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9IZWxwQnV0dG9uLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQWdEO0FBQ3BCO0FBQ087QUFDNUIsNEJBQTRCLHNEQUFJO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBLFlBQVksd0NBQUMsc0JBQXNCO0FBQ25DLGdCQUFnQix3Q0FBQztBQUNqQixDQUFDO0FBQ0QsWUFBWSw0Q0FBUTtBQUNwQixDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvSGVscEJ1dHRvbi50c3g/ZjcyNSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgdCB9IGZyb20gXCIuLi9pMThuXCI7XG5pbXBvcnQgeyBIZWxwSWNvbiB9IGZyb20gXCIuL2ljb25zXCI7XG5leHBvcnQgY29uc3QgSGVscEJ1dHRvbiA9IHByb3BzID0+IF9qc3goXCJidXR0b25cIiwgT2JqZWN0LmFzc2lnbih7XG4gIGNsYXNzTmFtZTogXCJoZWxwLWljb25cIixcbiAgb25DbGljazogcHJvcHMub25DbGljayxcbiAgdHlwZTogXCJidXR0b25cIixcbiAgdGl0bGU6IGAke3QoXCJoZWxwRGlhbG9nLnRpdGxlXCIpfSDigJQgP2AsXG4gIFwiYXJpYS1sYWJlbFwiOiB0KFwiaGVscERpYWxvZy50aXRsZVwiKVxufSwge1xuICBjaGlsZHJlbjogSGVscEljb25cbn0pKTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/HelpButton.tsx\n');
              }
            ),
            /***/
            "../../components/HelpDialog.tsx": (
              /*!***************************************!*\
                !*** ../../components/HelpDialog.tsx ***!
                \***************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "HelpDialog": () => (/* binding */ HelpDialog)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _Dialog__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Dialog */ "../../components/Dialog.tsx");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _HelpDialog_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./HelpDialog.scss */ "../../components/HelpDialog.scss");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./icons */ "../../components/icons.tsx");\n/* harmony import */ var _clipboard__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../clipboard */ "../../clipboard.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n\n\n\n\n\n\n\n\n\n\n\nconst Header = () => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n  className: "HelpDialog__header"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("a", Object.assign({\n    className: "HelpDialog__btn",\n    href: "https://docs.excalidraw.com",\n    target: "_blank",\n    rel: "noopener noreferrer"\n  }, {\n    children: [(0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.documentation"), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: "HelpDialog__link-icon"\n    }, {\n      children: _icons__WEBPACK_IMPORTED_MODULE_7__.ExternalLinkIcon\n    }))]\n  })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("a", Object.assign({\n    className: "HelpDialog__btn",\n    href: "https://blog.excalidraw.com",\n    target: "_blank",\n    rel: "noopener noreferrer"\n  }, {\n    children: [(0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.blog"), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: "HelpDialog__link-icon"\n    }, {\n      children: _icons__WEBPACK_IMPORTED_MODULE_7__.ExternalLinkIcon\n    }))]\n  })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("a", Object.assign({\n    className: "HelpDialog__btn",\n    href: "https://github.com/excalidraw/excalidraw/issues",\n    target: "_blank",\n    rel: "noopener noreferrer"\n  }, {\n    children: [(0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.github"), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: "HelpDialog__link-icon"\n    }, {\n      children: _icons__WEBPACK_IMPORTED_MODULE_7__.ExternalLinkIcon\n    }))]\n  }))]\n}));\n\nconst Section = props => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("h3", {\n    children: props.title\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: "HelpDialog__islands-container"\n  }, {\n    children: props.children\n  }))]\n});\n\nconst ShortcutIsland = props => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n  className: `HelpDialog__island ${props.className}`\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("h4", Object.assign({\n    className: "HelpDialog__island-title"\n  }, {\n    children: props.caption\n  })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: "HelpDialog__island-content"\n  }, {\n    children: props.children\n  }))]\n}));\n\nfunction* intersperse(as, delim) {\n  let first = true;\n\n  for (const x of as) {\n    if (!first) {\n      yield delim;\n    }\n\n    first = false;\n    yield x;\n  }\n}\n\nconst upperCaseSingleChars = str => {\n  return str.replace(/\\b[a-z]\\b/, c => c.toUpperCase());\n};\n\nconst Shortcut = ({\n  label,\n  shortcuts,\n  isOr = true\n}) => {\n  const splitShortcutKeys = shortcuts.map(shortcut => {\n    const keys = shortcut.endsWith("++") ? [...shortcut.slice(0, -2).split("+"), "+"] : shortcut.split("+");\n    return keys.map(key => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(ShortcutKey, {\n      children: upperCaseSingleChars(key)\n    }, key));\n  });\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n    className: "HelpDialog__shortcut"\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n      children: label\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: "HelpDialog__key-container"\n    }, {\n      children: [...intersperse(splitShortcutKeys, isOr ? (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.or") : null)]\n    }))]\n  }));\n};\n\nconst ShortcutKey = props => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("kbd", Object.assign({\n  className: "HelpDialog__key"\n}, props));\n\nconst HelpDialog = ({\n  onClose\n}) => {\n  const handleClose = react__WEBPACK_IMPORTED_MODULE_1___default().useCallback(() => {\n    if (onClose) {\n      onClose();\n    }\n  }, [onClose]);\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Dialog__WEBPACK_IMPORTED_MODULE_4__.Dialog, Object.assign({\n      onCloseRequest: handleClose,\n      title: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.title"),\n      className: "HelpDialog"\n    }, {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Header, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(Section, Object.assign({\n        title: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.shortcuts")\n      }, {\n        children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(ShortcutIsland, Object.assign({\n          className: "HelpDialog__island--tools",\n          caption: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.tools")\n        }, {\n          children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("toolBar.hand"),\n            shortcuts: [_keys__WEBPACK_IMPORTED_MODULE_3__.KEYS.H]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("toolBar.selection"),\n            shortcuts: [_keys__WEBPACK_IMPORTED_MODULE_3__.KEYS.V, _keys__WEBPACK_IMPORTED_MODULE_3__.KEYS[1]]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("toolBar.rectangle"),\n            shortcuts: [_keys__WEBPACK_IMPORTED_MODULE_3__.KEYS.R, _keys__WEBPACK_IMPORTED_MODULE_3__.KEYS[2]]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("toolBar.diamond"),\n            shortcuts: [_keys__WEBPACK_IMPORTED_MODULE_3__.KEYS.D, _keys__WEBPACK_IMPORTED_MODULE_3__.KEYS[3]]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("toolBar.ellipse"),\n            shortcuts: [_keys__WEBPACK_IMPORTED_MODULE_3__.KEYS.O, _keys__WEBPACK_IMPORTED_MODULE_3__.KEYS[4]]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("toolBar.arrow"),\n            shortcuts: [_keys__WEBPACK_IMPORTED_MODULE_3__.KEYS.A, _keys__WEBPACK_IMPORTED_MODULE_3__.KEYS[5]]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("toolBar.line"),\n            shortcuts: [_keys__WEBPACK_IMPORTED_MODULE_3__.KEYS.L, _keys__WEBPACK_IMPORTED_MODULE_3__.KEYS[6]]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("toolBar.freedraw"),\n            shortcuts: [_keys__WEBPACK_IMPORTED_MODULE_3__.KEYS.P, _keys__WEBPACK_IMPORTED_MODULE_3__.KEYS[7]]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("toolBar.text"),\n            shortcuts: [_keys__WEBPACK_IMPORTED_MODULE_3__.KEYS.T, _keys__WEBPACK_IMPORTED_MODULE_3__.KEYS[8]]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("toolBar.image"),\n            shortcuts: [_keys__WEBPACK_IMPORTED_MODULE_3__.KEYS[9]]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("toolBar.eraser"),\n            shortcuts: [_keys__WEBPACK_IMPORTED_MODULE_3__.KEYS.E, _keys__WEBPACK_IMPORTED_MODULE_3__.KEYS[0]]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("toolBar.frame"),\n            shortcuts: [_keys__WEBPACK_IMPORTED_MODULE_3__.KEYS.F]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("toolBar.laser"),\n            shortcuts: [_keys__WEBPACK_IMPORTED_MODULE_3__.KEYS.K]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.eyeDropper"),\n            shortcuts: [_keys__WEBPACK_IMPORTED_MODULE_3__.KEYS.I, "Shift+S", "Shift+G"]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.editLineArrowPoints"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+Enter")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.editText"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("Enter")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.textNewLine"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("Enter"), (0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("Shift+Enter")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.textFinish"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("Esc"), (0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+Enter")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.curvedArrow"),\n            shortcuts: ["A", (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.click"), (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.click"), (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.click")],\n            isOr: false\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.curvedLine"),\n            shortcuts: ["L", (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.click"), (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.click"), (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.click")],\n            isOr: false\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("toolBar.lock"),\n            shortcuts: [_keys__WEBPACK_IMPORTED_MODULE_3__.KEYS.Q]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.preventBinding"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("toolBar.link"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+K")]\n          })]\n        })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(ShortcutIsland, Object.assign({\n          className: "HelpDialog__island--view",\n          caption: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.view")\n        }, {\n          children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("buttons.zoomIn"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd++")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("buttons.zoomOut"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+-")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("buttons.resetZoom"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+0")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.zoomToFit"),\n            shortcuts: ["Shift+1"]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.zoomToSelection"),\n            shortcuts: ["Shift+2"]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.movePageUpDown"),\n            shortcuts: ["PgUp/PgDn"]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.movePageLeftRight"),\n            shortcuts: ["Shift+PgUp/PgDn"]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("buttons.zenMode"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("Alt+Z")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("buttons.objectsSnapMode"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("Alt+S")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.showGrid"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+\'")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.viewMode"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("Alt+R")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.toggleTheme"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("Alt+Shift+D")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("stats.title"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("Alt+/")]\n          })]\n        })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(ShortcutIsland, Object.assign({\n          className: "HelpDialog__island--editor",\n          caption: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.editor")\n        }, {\n          children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.moveCanvas"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)(`Space+${(0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.drag")}`), (0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)(`Wheel+${(0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.drag")}`)],\n            isOr: true\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("buttons.clearReset"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+Delete")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.delete"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("Delete")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.cut"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+X")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.copy"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+C")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.paste"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+V")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.pasteAsPlaintext"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+Shift+V")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.selectAll"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+A")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.multiSelect"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)(`Shift+${(0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.click")}`)]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.deepSelect"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)(`CtrlOrCmd+${(0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.click")}`)]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.deepBoxSelect"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)(`CtrlOrCmd+${(0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.drag")}`)]\n          }), (_clipboard__WEBPACK_IMPORTED_MODULE_8__.probablySupportsClipboardBlob || _constants__WEBPACK_IMPORTED_MODULE_9__.isFirefox) && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.copyAsPng"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("Shift+Alt+C")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.copyStyles"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+Alt+C")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.pasteStyles"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+Alt+V")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.sendToBack"),\n            shortcuts: [_constants__WEBPACK_IMPORTED_MODULE_9__.isDarwin ? (0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+Alt+[") : (0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+Shift+[")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.bringToFront"),\n            shortcuts: [_constants__WEBPACK_IMPORTED_MODULE_9__.isDarwin ? (0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+Alt+]") : (0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+Shift+]")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.sendBackward"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+[")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.bringForward"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+]")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.alignTop"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+Shift+Up")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.alignBottom"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+Shift+Down")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.alignLeft"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+Shift+Left")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.alignRight"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+Shift+Right")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.duplicateSelection"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+D"), (0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)(`Alt+${(0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.drag")}`)]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("helpDialog.toggleElementLock"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+Shift+L")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("buttons.undo"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+Z")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("buttons.redo"),\n            shortcuts: _constants__WEBPACK_IMPORTED_MODULE_9__.isWindows ? [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+Y"), (0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+Shift+Z")] : [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+Shift+Z")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.group"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+G")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.ungroup"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+Shift+G")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.flipHorizontal"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("Shift+H")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.flipVertical"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("Shift+V")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.showStroke"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("S")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.showBackground"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("G")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.decreaseFontSize"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+Shift+<")]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Shortcut, {\n            label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.increaseFontSize"),\n            shortcuts: [(0,_utils__WEBPACK_IMPORTED_MODULE_5__.getShortcutKey)("CtrlOrCmd+Shift+>")]\n          })]\n        }))]\n      }))]\n    }))\n  });\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 27640 characters]\n//# sourceURL=webpack-internal:///../../components/HelpDialog.tsx\n');
              }
            ),
            /***/
            "../../components/HintViewer.tsx": (
              /*!***************************************!*\
                !*** ../../components/HintViewer.tsx ***!
                \***************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "HintViewer": () => (/* binding */ HintViewer)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../element/typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _appState__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../appState */ "../../appState.ts");\n/* harmony import */ var _HintViewer_scss__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./HintViewer.scss */ "../../components/HintViewer.scss");\n\n\n\n\n\n\n\nconst getHints = ({\n  appState,\n  isMobile,\n  device,\n  app\n}) => {\n  var _a;\n\n  const {\n    activeTool,\n    isResizing,\n    isRotating,\n    lastPointerDownWith\n  } = appState;\n  const multiMode = appState.multiElement !== null;\n\n  if (appState.openSidebar && !device.editor.canFitSidebar) {\n    return null;\n  }\n\n  if ((0,_appState__WEBPACK_IMPORTED_MODULE_4__.isEraserActive)(appState)) {\n    return (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("hints.eraserRevert");\n  }\n\n  if (activeTool.type === "arrow" || activeTool.type === "line") {\n    if (!multiMode) {\n      return (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("hints.linearElement");\n    }\n\n    return (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("hints.linearElementMulti");\n  }\n\n  if (activeTool.type === "freedraw") {\n    return (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("hints.freeDraw");\n  }\n\n  if (activeTool.type === "text") {\n    return (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("hints.text");\n  }\n\n  if (activeTool.type === "embeddable") {\n    return (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("hints.embeddable");\n  }\n\n  if (appState.activeTool.type === "image" && appState.pendingImageElementId) {\n    return (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("hints.placeImage");\n  }\n\n  const selectedElements = app.scene.getSelectedElements(appState);\n\n  if (isResizing && lastPointerDownWith === "mouse" && selectedElements.length === 1) {\n    const targetElement = selectedElements[0];\n\n    if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_2__.isLinearElement)(targetElement) && targetElement.points.length === 2) {\n      return (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("hints.lockAngle");\n    }\n\n    return (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_2__.isImageElement)(targetElement) ? (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("hints.resizeImage") : (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("hints.resize");\n  }\n\n  if (isRotating && lastPointerDownWith === "mouse") {\n    return (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("hints.rotate");\n  }\n\n  if (selectedElements.length === 1 && (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_2__.isTextElement)(selectedElements[0])) {\n    return (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("hints.text_selected");\n  }\n\n  if (appState.editingElement && (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_2__.isTextElement)(appState.editingElement)) {\n    return (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("hints.text_editing");\n  }\n\n  if (activeTool.type === "selection") {\n    if (((_a = appState.draggingElement) === null || _a === void 0 ? void 0 : _a.type) === "selection" && !selectedElements.length && !appState.editingElement && !appState.editingLinearElement) {\n      return (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("hints.deepBoxSelect");\n    }\n\n    if (appState.gridSize && appState.draggingElement) {\n      return (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("hints.disableSnapping");\n    }\n\n    if (!selectedElements.length && !isMobile) {\n      return (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("hints.canvasPanning");\n    }\n\n    if (selectedElements.length === 1) {\n      if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_2__.isLinearElement)(selectedElements[0])) {\n        if (appState.editingLinearElement) {\n          return appState.editingLinearElement.selectedPointsIndices ? (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("hints.lineEditor_pointSelected") : (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("hints.lineEditor_nothingSelected");\n        }\n\n        return (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("hints.lineEditor_info");\n      }\n\n      if (!appState.draggingElement && (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_2__.isTextBindableContainer)(selectedElements[0])) {\n        return (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("hints.bindTextToElement");\n      }\n    }\n  }\n\n  return null;\n};\n\nconst HintViewer = ({\n  appState,\n  isMobile,\n  device,\n  app\n}) => {\n  let hint = getHints({\n    appState,\n    isMobile,\n    device,\n    app\n  });\n\n  if (!hint) {\n    return null;\n  }\n\n  hint = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.getShortcutKey)(hint);\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: "HintViewer"\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", {\n      children: hint\n    })\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6276 characters]\n//# sourceURL=webpack-internal:///../../components/HintViewer.tsx\n');
              }
            ),
            /***/
            "../../components/IconPicker.tsx": (
              /*!***************************************!*\
                !*** ../../components/IconPicker.tsx ***!
                \***************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "IconPicker": () => (/* binding */ IconPicker)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _Popover__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Popover */ "../../components/Popover.tsx");\n/* harmony import */ var _IconPicker_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./IconPicker.scss */ "../../components/IconPicker.scss");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n\n\n\n\n\n\n\n\nfunction Picker({\n  options,\n  value,\n  label,\n  onChange,\n  onClose\n}) {\n  const rFirstItem = react__WEBPACK_IMPORTED_MODULE_1___default().useRef();\n  const rActiveItem = react__WEBPACK_IMPORTED_MODULE_1___default().useRef();\n  const rGallery = react__WEBPACK_IMPORTED_MODULE_1___default().useRef(null);\n  react__WEBPACK_IMPORTED_MODULE_1___default().useEffect(() => {\n    // After the component is first mounted focus on first input\n    if (rActiveItem.current) {\n      rActiveItem.current.focus();\n    } else if (rGallery.current) {\n      rGallery.current.focus();\n    }\n  }, []);\n\n  const handleKeyDown = event => {\n    const pressedOption = options.find(option => option.keyBinding === event.key.toLowerCase());\n\n    if (!(event.metaKey || event.altKey || event.ctrlKey) && pressedOption) {\n      // Keybinding navigation\n      const index = options.indexOf(pressedOption);\n      rGallery.current.children[index].focus();\n      event.preventDefault();\n    } else if (event.key === _keys__WEBPACK_IMPORTED_MODULE_4__.KEYS.TAB) {\n      // Tab navigation cycle through options. If the user tabs\n      // away from the picker, close the picker. We need to use\n      // a timeout here to let the stack clear before checking.\n      setTimeout(() => {\n        const active = rActiveItem.current;\n        const docActive = document.activeElement;\n\n        if (active !== docActive) {\n          onClose();\n        }\n      }, 0);\n    } else if ((0,_keys__WEBPACK_IMPORTED_MODULE_4__.isArrowKey)(event.key)) {\n      // Arrow navigation\n      const {\n        activeElement\n      } = document;\n      const isRTL = (0,_i18n__WEBPACK_IMPORTED_MODULE_5__.getLanguage)().rtl;\n      const index = Array.prototype.indexOf.call(rGallery.current.children, activeElement);\n\n      if (index !== -1) {\n        const length = options.length;\n        let nextIndex = index;\n\n        switch (event.key) {\n          // Select the next option\n          case isRTL ? _keys__WEBPACK_IMPORTED_MODULE_4__.KEYS.ARROW_LEFT : _keys__WEBPACK_IMPORTED_MODULE_4__.KEYS.ARROW_RIGHT:\n          case _keys__WEBPACK_IMPORTED_MODULE_4__.KEYS.ARROW_DOWN:\n            {\n              nextIndex = (index + 1) % length;\n              break;\n            }\n          // Select the previous option\n\n          case isRTL ? _keys__WEBPACK_IMPORTED_MODULE_4__.KEYS.ARROW_RIGHT : _keys__WEBPACK_IMPORTED_MODULE_4__.KEYS.ARROW_LEFT:\n          case _keys__WEBPACK_IMPORTED_MODULE_4__.KEYS.ARROW_UP:\n            {\n              nextIndex = (length + index - 1) % length;\n              break;\n            }\n        }\n\n        rGallery.current.children[nextIndex].focus();\n      }\n\n      event.preventDefault();\n    } else if (event.key === _keys__WEBPACK_IMPORTED_MODULE_4__.KEYS.ESCAPE || event.key === _keys__WEBPACK_IMPORTED_MODULE_4__.KEYS.ENTER) {\n      // Close on escape or enter\n      event.preventDefault();\n      onClose();\n    }\n\n    event.nativeEvent.stopImmediatePropagation();\n    event.stopPropagation();\n  };\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: `picker`,\n    role: "dialog",\n    "aria-modal": "true",\n    "aria-label": label,\n    onKeyDown: handleKeyDown\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: "picker-content",\n      ref: rGallery\n    }, {\n      children: options.map((option, i) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("button", Object.assign({\n        className: (0,clsx__WEBPACK_IMPORTED_MODULE_6__["default"])("picker-option", {\n          active: value === option.value\n        }),\n        onClick: event => {\n          event.currentTarget.focus();\n          onChange(option.value);\n        },\n        title: `${option.text} \u2014 ${option.keyBinding.toUpperCase()}`,\n        "aria-label": option.text || "none",\n        "aria-keyshortcuts": option.keyBinding,\n        ref: el => {\n          if (el && i === 0) {\n            rFirstItem.current = el;\n          }\n\n          if (el && option.value === value) {\n            rActiveItem.current = el;\n          }\n        },\n        onFocus: () => {\n          onChange(option.value);\n        }\n      }, {\n        children: [option.icon, (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", Object.assign({\n          className: "picker-keybinding"\n        }, {\n          children: option.keyBinding\n        }))]\n      }), option.text))\n    }))\n  }));\n}\n\nfunction IconPicker({\n  value,\n  label,\n  options,\n  onChange,\n  group = ""\n}) {\n  var _a;\n\n  const [isActive, setActive] = react__WEBPACK_IMPORTED_MODULE_1___default().useState(false);\n  const rPickerButton = react__WEBPACK_IMPORTED_MODULE_1___default().useRef(null);\n  const isRTL = (0,_i18n__WEBPACK_IMPORTED_MODULE_5__.getLanguage)().rtl;\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("button", Object.assign({\n      name: group,\n      className: isActive ? "active" : "",\n      "aria-label": label,\n      onClick: () => setActive(!isActive),\n      ref: rPickerButton\n    }, {\n      children: (_a = options.find(option => option.value === value)) === null || _a === void 0 ? void 0 : _a.icon\n    })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)((react__WEBPACK_IMPORTED_MODULE_1___default().Suspense), Object.assign({\n      fallback: ""\n    }, {\n      children: isActive ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n        children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Popover__WEBPACK_IMPORTED_MODULE_2__.Popover, Object.assign({\n          onCloseRequest: event => event.target !== rPickerButton.current && setActive(false)\n        }, isRTL ? {\n          right: 5.5\n        } : {\n          left: -5.5\n        }, {\n          children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Picker, {\n            options: options,\n            value: value,\n            label: label,\n            onChange: onChange,\n            onClose: () => {\n              var _a;\n\n              setActive(false);\n              (_a = rPickerButton.current) === null || _a === void 0 ? void 0 : _a.focus();\n            }\n          })\n        })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n          className: "picker-triangle"\n        })]\n      }) : null\n    }))]\n  });\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 9680 characters]\n//# sourceURL=webpack-internal:///../../components/IconPicker.tsx\n');
              }
            ),
            /***/
            "../../components/ImageExportDialog.tsx": (
              /*!**********************************************!*\
                !*** ../../components/ImageExportDialog.tsx ***!
                \**********************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "ErrorCanvasPreview": () => (/* binding */ ErrorCanvasPreview),\n/* harmony export */   "ImageExportDialog": () => (/* binding */ ImageExportDialog)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _actions_actionExport__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../actions/actionExport */ "../../actions/actionExport.tsx");\n/* harmony import */ var _clipboard__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../clipboard */ "../../clipboard.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _data_blob__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../data/blob */ "../../data/blob.ts");\n/* harmony import */ var _data_filesystem__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../data/filesystem */ "../../data/filesystem.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../scene */ "../../scene/index.ts");\n/* harmony import */ var _packages_utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../packages/utils */ "../utils.ts");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./icons */ "../../components/icons.tsx");\n/* harmony import */ var _Dialog__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./Dialog */ "../../components/Dialog.tsx");\n/* harmony import */ var _RadioGroup__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./RadioGroup */ "../../components/RadioGroup.tsx");\n/* harmony import */ var _Switch__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./Switch */ "../../components/Switch.tsx");\n/* harmony import */ var _Tooltip__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./Tooltip */ "../../components/Tooltip.tsx");\n/* harmony import */ var _ImageExportDialog_scss__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./ImageExportDialog.scss */ "../../components/ImageExportDialog.scss");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./App */ "../../components/App.tsx");\n/* harmony import */ var _FilledButton__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./FilledButton */ "../../components/FilledButton.tsx");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _data__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../data */ "../../data/index.ts");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst supportsContextFilters = ("filter" in document.createElement("canvas").getContext("2d"));\nconst ErrorCanvasPreview = () => {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("h3", {\n      children: (0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)("canvasError.cannotShowPreview")\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("p", {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", {\n        children: (0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)("canvasError.canvasTooBig")\n      })\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("em", {\n      children: ["(", (0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)("canvasError.canvasTooBigTip"), ")"]\n    })]\n  });\n};\n\nconst ImageExportModal = ({\n  appStateSnapshot,\n  elementsSnapshot,\n  files,\n  actionManager,\n  onExportImage\n}) => {\n  const hasSelection = (0,_scene__WEBPACK_IMPORTED_MODULE_8__.isSomeElementSelected)(elementsSnapshot, appStateSnapshot);\n  const appProps = (0,_App__WEBPACK_IMPORTED_MODULE_16__.useAppProps)();\n  const [projectName, setProjectName] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(appStateSnapshot.name);\n  const [exportSelectionOnly, setExportSelectionOnly] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(hasSelection);\n  const [exportWithBackground, setExportWithBackground] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(appStateSnapshot.exportBackground);\n  const [exportDarkMode, setExportDarkMode] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(appStateSnapshot.exportWithDarkMode);\n  const [embedScene, setEmbedScene] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(appStateSnapshot.exportEmbedScene);\n  const [exportScale, setExportScale] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(appStateSnapshot.exportScale);\n  const previewRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n  const [renderError, setRenderError] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n  const {\n    exportedElements,\n    exportingFrame\n  } = (0,_data__WEBPACK_IMPORTED_MODULE_19__.prepareElementsForExport)(elementsSnapshot, appStateSnapshot, exportSelectionOnly);\n  (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {\n    const previewNode = previewRef.current;\n\n    if (!previewNode) {\n      return;\n    }\n\n    const maxWidth = previewNode.offsetWidth;\n    const maxHeight = previewNode.offsetHeight;\n\n    if (!maxWidth) {\n      return;\n    }\n\n    (0,_packages_utils__WEBPACK_IMPORTED_MODULE_9__.exportToCanvas)({\n      elements: exportedElements,\n      appState: Object.assign(Object.assign({}, appStateSnapshot), {\n        name: projectName,\n        exportBackground: exportWithBackground,\n        exportWithDarkMode: exportDarkMode,\n        exportScale,\n        exportEmbedScene: embedScene\n      }),\n      files,\n      exportPadding: _constants__WEBPACK_IMPORTED_MODULE_4__.DEFAULT_EXPORT_PADDING,\n      maxWidthOrHeight: Math.max(maxWidth, maxHeight),\n      exportingFrame\n    }).then(canvas => {\n      setRenderError(null); // if converting to blob fails, there\'s some problem that will\n      // likely prevent preview and export (e.g. canvas too big)\n\n      return (0,_data_blob__WEBPACK_IMPORTED_MODULE_5__.canvasToBlob)(canvas).then(() => {\n        previewNode.replaceChildren(canvas);\n      });\n    }).catch(error => {\n      console.error(error);\n      setRenderError(error);\n    });\n  }, [appStateSnapshot, files, exportedElements, exportingFrame, projectName, exportWithBackground, exportDarkMode, exportScale, embedScene]);\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n    className: "ImageExportModal"\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("h3", {\n      children: (0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)("imageExportDialog.header")\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n      className: "ImageExportModal__preview"\n    }, {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n        className: "ImageExportModal__preview__canvas",\n        ref: previewRef\n      }, {\n        children: renderError && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(ErrorCanvasPreview, {})\n      })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n        className: "ImageExportModal__preview__filename"\n      }, {\n        children: !_data_filesystem__WEBPACK_IMPORTED_MODULE_6__.nativeFileSystemSupported && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input", {\n          type: "text",\n          className: "TextInput",\n          value: projectName,\n          style: {\n            width: "30ch"\n          },\n          disabled: typeof appProps.name !== "undefined" || appStateSnapshot.viewModeEnabled,\n          onChange: event => {\n            setProjectName(event.target.value);\n            actionManager.executeAction(_actions_actionExport__WEBPACK_IMPORTED_MODULE_2__.actionChangeProjectName, "ui", event.target.value);\n          }\n        })\n      }))]\n    })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n      className: "ImageExportModal__settings"\n    }, {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("h3", {\n        children: (0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)("imageExportDialog.header")\n      }), hasSelection && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(ExportSetting, Object.assign({\n        label: (0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)("imageExportDialog.label.onlySelected"),\n        name: "exportOnlySelected"\n      }, {\n        children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Switch__WEBPACK_IMPORTED_MODULE_13__.Switch, {\n          name: "exportOnlySelected",\n          checked: exportSelectionOnly,\n          onChange: checked => {\n            setExportSelectionOnly(checked);\n          }\n        })\n      })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(ExportSetting, Object.assign({\n        label: (0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)("imageExportDialog.label.withBackground"),\n        name: "exportBackgroundSwitch"\n      }, {\n        children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Switch__WEBPACK_IMPORTED_MODULE_13__.Switch, {\n          name: "exportBackgroundSwitch",\n          checked: exportWithBackground,\n          onChange: checked => {\n            setExportWithBackground(checked);\n            actionManager.executeAction(_actions_actionExport__WEBPACK_IMPORTED_MODULE_2__.actionChangeExportBackground, "ui", checked);\n          }\n        })\n      })), supportsContextFilters && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(ExportSetting, Object.assign({\n        label: (0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)("imageExportDialog.label.darkMode"),\n        name: "exportDarkModeSwitch"\n      }, {\n        children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Switch__WEBPACK_IMPORTED_MODULE_13__.Switch, {\n          name: "exportDarkModeSwitch",\n          checked: exportDarkMode,\n          onChange: checked => {\n            setExportDarkMode(checked);\n            actionManager.executeAction(_actions_actionExport__WEBPACK_IMPORTED_MODULE_2__.actionExportWithDarkMode, "ui", checked);\n          }\n        })\n      })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(ExportSetting, Object.assign({\n        label: (0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)("imageExportDialog.label.embedScene"),\n        tooltip: (0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)("imageExportDialog.tooltip.embedScene"),\n        name: "exportEmbedSwitch"\n      }, {\n        children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Switch__WEBPACK_IMPORTED_MODULE_13__.Switch, {\n          name: "exportEmbedSwitch",\n          checked: embedScene,\n          onChange: checked => {\n            setEmbedScene(checked);\n            actionManager.executeAction(_actions_actionExport__WEBPACK_IMPORTED_MODULE_2__.actionChangeExportEmbedScene, "ui", checked);\n          }\n        })\n      })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(ExportSetting, Object.assign({\n        label: (0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)("imageExportDialog.label.scale"),\n        name: "exportScale"\n      }, {\n        children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_RadioGroup__WEBPACK_IMPORTED_MODULE_12__.RadioGroup, {\n          name: "exportScale",\n          value: exportScale,\n          onChange: scale => {\n            setExportScale(scale);\n            actionManager.executeAction(_actions_actionExport__WEBPACK_IMPORTED_MODULE_2__.actionChangeExportScale, "ui", scale);\n          },\n          choices: _constants__WEBPACK_IMPORTED_MODULE_4__.EXPORT_SCALES.map(scale => ({\n            value: scale,\n            label: `${scale}\\u00d7`\n          }))\n        })\n      })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n        className: "ImageExportModal__settings__buttons"\n      }, {\n        children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_FilledButton__WEBPACK_IMPORTED_MODULE_17__.FilledButton, Object.assign({\n          className: "ImageExportModal__settings__buttons__button",\n          label: (0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)("imageExportDialog.title.exportToPng"),\n          onClick: () => onExportImage(_constants__WEBPACK_IMPORTED_MODULE_4__.EXPORT_IMAGE_TYPES.png, exportedElements, {\n            exportingFrame\n          }),\n          startIcon: _icons__WEBPACK_IMPORTED_MODULE_10__.downloadIcon\n        }, {\n          children: (0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)("imageExportDialog.button.exportToPng")\n        })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_FilledButton__WEBPACK_IMPORTED_MODULE_17__.FilledButton, Object.assign({\n          className: "ImageExportModal__settings__buttons__button",\n          label: (0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)("imageExportDialog.title.exportToSvg"),\n          onClick: () => onExportImage(_constants__WEBPACK_IMPORTED_MODULE_4__.EXPORT_IMAGE_TYPES.svg, exportedElements, {\n            exportingFrame\n          }),\n          startIcon: _icons__WEBPACK_IMPORTED_MODULE_10__.downloadIcon\n        }, {\n          children: (0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)("imageExportDialog.button.exportToSvg")\n        })), (_clipboard__WEBPACK_IMPORTED_MODULE_3__.probablySupportsClipboardBlob || _constants__WEBPACK_IMPORTED_MODULE_4__.isFirefox) && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_FilledButton__WEBPACK_IMPORTED_MODULE_17__.FilledButton, Object.assign({\n          className: "ImageExportModal__settings__buttons__button",\n          label: (0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)("imageExportDialog.title.copyPngToClipboard"),\n          onClick: () => onExportImage(_constants__WEBPACK_IMPORTED_MODULE_4__.EXPORT_IMAGE_TYPES.clipboard, exportedElements, {\n            exportingFrame\n          }),\n          startIcon: _icons__WEBPACK_IMPORTED_MODULE_10__.copyIcon\n        }, {\n          children: (0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)("imageExportDialog.button.copyPngToClipboard")\n        }))]\n      }))]\n    }))]\n  }));\n};\n\nconst ExportSetting = ({\n  label,\n  children,\n  tooltip,\n  name\n}) => {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n    className: "ImageExportModal__settings__setting",\n    title: label\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("label", Object.assign({\n      htmlFor: name,\n      className: "ImageExportModal__settings__setting__label"\n    }, {\n      children: [label, tooltip && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Tooltip__WEBPACK_IMPORTED_MODULE_14__.Tooltip, Object.assign({\n        label: tooltip,\n        long: true\n      }, {\n        children: _icons__WEBPACK_IMPORTED_MODULE_10__.helpIcon\n      }))]\n    })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: "ImageExportModal__settings__setting__content"\n    }, {\n      children: children\n    }))]\n  }));\n};\n\nconst ImageExportDialog = ({\n  elements,\n  appState,\n  files,\n  actionManager,\n  onExportImage,\n  onCloseRequest\n}) => {\n  // we need to take a snapshot so that the exported state can\'t be modified\n  // while the dialog is open\n  const [{\n    appStateSnapshot,\n    elementsSnapshot\n  }] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(() => {\n    return {\n      appStateSnapshot: (0,_utils__WEBPACK_IMPORTED_MODULE_18__.cloneJSON)(appState),\n      elementsSnapshot: (0,_utils__WEBPACK_IMPORTED_MODULE_18__.cloneJSON)(elements)\n    };\n  });\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Dialog__WEBPACK_IMPORTED_MODULE_11__.Dialog, Object.assign({\n    onCloseRequest: onCloseRequest,\n    size: "wide",\n    title: false\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(ImageExportModal, {\n      elementsSnapshot: elementsSnapshot,\n      appStateSnapshot: appStateSnapshot,\n      files: files,\n      actionManager: actionManager,\n      onExportImage: onExportImage\n    })\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 18540 characters]\n//# sourceURL=webpack-internal:///../../components/ImageExportDialog.tsx\n');
              }
            ),
            /***/
            "../../components/InitializeApp.tsx": (
              /*!******************************************!*\
                !*** ../../components/InitializeApp.tsx ***!
                \******************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "InitializeApp": () => (/* binding */ InitializeApp)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _LoadingMessage__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./LoadingMessage */ "../../components/LoadingMessage.tsx");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator["throw"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n\n\nconst InitializeApp = props => {\n  const [loading, setLoading] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n  (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {\n    const updateLang = () => __awaiter(void 0, void 0, void 0, function* () {\n      yield (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.setLanguage)(currentLang);\n      setLoading(false);\n    });\n\n    const currentLang = _i18n__WEBPACK_IMPORTED_MODULE_3__.languages.find(lang => lang.code === props.langCode) || _i18n__WEBPACK_IMPORTED_MODULE_3__.defaultLang;\n    updateLang();\n  }, [props.langCode]);\n  return loading ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LoadingMessage__WEBPACK_IMPORTED_MODULE_2__.LoadingMessage, {\n    theme: props.theme\n  }) : props.children;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9Jbml0aWFsaXplQXBwLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxnQkFBZ0IsU0FBSSxJQUFJLFNBQUk7QUFDNUI7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDs7QUFFZ0Q7QUFDRztBQUNEO0FBQ1k7QUFDdkQ7QUFDUCxnQ0FBZ0MsK0NBQVE7QUFDeEMsRUFBRSxnREFBUztBQUNYO0FBQ0EsWUFBWSxrREFBVztBQUN2QjtBQUNBLEtBQUs7O0FBRUwsd0JBQXdCLGlEQUFjLDBDQUEwQyw4Q0FBVztBQUMzRjtBQUNBLEdBQUc7QUFDSCxtQkFBbUIsc0RBQUksQ0FBQywyREFBYztBQUN0QztBQUNBLEdBQUc7QUFDSCIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL0luaXRpYWxpemVBcHAudHN4PzFlOWMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fYXdhaXRlciA9IHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgICByZXNvbHZlKHZhbHVlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZWplY3QoZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7XG4gICAgICByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTtcbiAgICB9XG5cbiAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gIH0pO1xufTtcblxuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBMb2FkaW5nTWVzc2FnZSB9IGZyb20gXCIuL0xvYWRpbmdNZXNzYWdlXCI7XG5pbXBvcnQgeyBkZWZhdWx0TGFuZywgbGFuZ3VhZ2VzLCBzZXRMYW5ndWFnZSB9IGZyb20gXCIuLi9pMThuXCI7XG5leHBvcnQgY29uc3QgSW5pdGlhbGl6ZUFwcCA9IHByb3BzID0+IHtcbiAgY29uc3QgW2xvYWRpbmcsIHNldExvYWRpbmddID0gdXNlU3RhdGUodHJ1ZSk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgdXBkYXRlTGFuZyA9ICgpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgeWllbGQgc2V0TGFuZ3VhZ2UoY3VycmVudExhbmcpO1xuICAgICAgc2V0TG9hZGluZyhmYWxzZSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBjdXJyZW50TGFuZyA9IGxhbmd1YWdlcy5maW5kKGxhbmcgPT4gbGFuZy5jb2RlID09PSBwcm9wcy5sYW5nQ29kZSkgfHwgZGVmYXVsdExhbmc7XG4gICAgdXBkYXRlTGFuZygpO1xuICB9LCBbcHJvcHMubGFuZ0NvZGVdKTtcbiAgcmV0dXJuIGxvYWRpbmcgPyBfanN4KExvYWRpbmdNZXNzYWdlLCB7XG4gICAgdGhlbWU6IHByb3BzLnRoZW1lXG4gIH0pIDogcHJvcHMuY2hpbGRyZW47XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/InitializeApp.tsx\n');
              }
            ),
            /***/
            "../../components/Island.tsx": (
              /*!***********************************!*\
                !*** ../../components/Island.tsx ***!
                \***********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "Island": () => (/* binding */ Island)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var _Island_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Island.scss */ "../../components/Island.scss");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n\n\n\n\nconst Island = react__WEBPACK_IMPORTED_MODULE_2___default().forwardRef(({\n  children,\n  padding,\n  className,\n  style\n}, ref) => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n  className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__["default"])("Island", className),\n  style: Object.assign({\n    "--padding": padding\n  }, style),\n  ref: ref\n}, {\n  children: children\n})));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9Jc2xhbmQudHN4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFnRDtBQUN6QjtBQUNHO0FBQ0Y7QUFDakIsZUFBZSx1REFBZ0I7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLFVBQVUsc0RBQUk7QUFDZixhQUFhLGdEQUFJO0FBQ2pCO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxDQUFDO0FBQ0Q7QUFDQSxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvSXNsYW5kLnRzeD9jOWY0Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgXCIuL0lzbGFuZC5zY3NzXCI7XG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgY2xzeCBmcm9tIFwiY2xzeFwiO1xuZXhwb3J0IGNvbnN0IElzbGFuZCA9IFJlYWN0LmZvcndhcmRSZWYoKHtcbiAgY2hpbGRyZW4sXG4gIHBhZGRpbmcsXG4gIGNsYXNzTmFtZSxcbiAgc3R5bGVcbn0sIHJlZikgPT4gX2pzeChcImRpdlwiLCBPYmplY3QuYXNzaWduKHtcbiAgY2xhc3NOYW1lOiBjbHN4KFwiSXNsYW5kXCIsIGNsYXNzTmFtZSksXG4gIHN0eWxlOiBPYmplY3QuYXNzaWduKHtcbiAgICBcIi0tcGFkZGluZ1wiOiBwYWRkaW5nXG4gIH0sIHN0eWxlKSxcbiAgcmVmOiByZWZcbn0sIHtcbiAgY2hpbGRyZW46IGNoaWxkcmVuXG59KSkpOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/Island.tsx\n');
              }
            ),
            /***/
            "../../components/JSONExportDialog.tsx": (
              /*!*********************************************!*\
                !*** ../../components/JSONExportDialog.tsx ***!
                \*********************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "JSONExportDialog": () => (/* binding */ JSONExportDialog)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _Dialog__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Dialog */ "../../components/Dialog.tsx");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./icons */ "../../components/icons.tsx");\n/* harmony import */ var _ToolButton__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./ToolButton */ "../../components/ToolButton.tsx");\n/* harmony import */ var _actions_actionExport__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../actions/actionExport */ "../../actions/actionExport.tsx");\n/* harmony import */ var _Card__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./Card */ "../../components/Card.tsx");\n/* harmony import */ var _ExportDialog_scss__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./ExportDialog.scss */ "../../components/ExportDialog.scss");\n/* harmony import */ var _data_filesystem__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../data/filesystem */ "../../data/filesystem.ts");\n/* harmony import */ var _analytics__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../analytics */ "../../analytics.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator["throw"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst JSONExportModal = ({\n  elements,\n  appState,\n  setAppState,\n  files,\n  actionManager,\n  exportOpts,\n  canvas,\n  onCloseRequest\n}) => {\n  const {\n    onExportToBackend\n  } = exportOpts;\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: "ExportDialog ExportDialog--json"\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n      className: "ExportDialog-cards"\n    }, {\n      children: [exportOpts.saveFileToDisk && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Card__WEBPACK_IMPORTED_MODULE_7__.Card, Object.assign({\n        color: "lime"\n      }, {\n        children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n          className: "Card-icon"\n        }, {\n          children: _icons__WEBPACK_IMPORTED_MODULE_4__.exportToFileIcon\n        })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("h2", {\n          children: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("exportDialog.disk_title")\n        }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n          className: "Card-details"\n        }, {\n          children: [(0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("exportDialog.disk_details"), !_data_filesystem__WEBPACK_IMPORTED_MODULE_9__.nativeFileSystemSupported && actionManager.renderAction("changeProjectName")]\n        })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ToolButton__WEBPACK_IMPORTED_MODULE_5__.ToolButton, {\n          className: "Card-button",\n          type: "button",\n          title: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("exportDialog.disk_button"),\n          "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("exportDialog.disk_button"),\n          showAriaLabel: true,\n          onClick: () => {\n            actionManager.executeAction(_actions_actionExport__WEBPACK_IMPORTED_MODULE_6__.actionSaveFileToDisk, "ui");\n          }\n        })]\n      })), onExportToBackend && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Card__WEBPACK_IMPORTED_MODULE_7__.Card, Object.assign({\n        color: "pink"\n      }, {\n        children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n          className: "Card-icon"\n        }, {\n          children: _icons__WEBPACK_IMPORTED_MODULE_4__.LinkIcon\n        })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("h2", {\n          children: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("exportDialog.link_title")\n        }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n          className: "Card-details"\n        }, {\n          children: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("exportDialog.link_details")\n        })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ToolButton__WEBPACK_IMPORTED_MODULE_5__.ToolButton, {\n          className: "Card-button",\n          type: "button",\n          title: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("exportDialog.link_button"),\n          "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("exportDialog.link_button"),\n          showAriaLabel: true,\n          onClick: () => __awaiter(void 0, void 0, void 0, function* () {\n            try {\n              (0,_analytics__WEBPACK_IMPORTED_MODULE_10__.trackEvent)("export", "link", `ui (${(0,_utils__WEBPACK_IMPORTED_MODULE_11__.getFrame)()})`);\n              yield onExportToBackend(elements, appState, files, canvas);\n              onCloseRequest();\n            } catch (error) {\n              setAppState({\n                errorMessage: error.message\n              });\n            }\n          })\n        })]\n      })), exportOpts.renderCustomUI && exportOpts.renderCustomUI(elements, appState, files, canvas)]\n    }))\n  }));\n};\n\nconst JSONExportDialog = ({\n  elements,\n  appState,\n  files,\n  actionManager,\n  exportOpts,\n  canvas,\n  setAppState\n}) => {\n  const handleClose = react__WEBPACK_IMPORTED_MODULE_1___default().useCallback(() => {\n    setAppState({\n      openDialog: null\n    });\n  }, [setAppState]);\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n    children: appState.openDialog === "jsonExport" && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Dialog__WEBPACK_IMPORTED_MODULE_3__.Dialog, Object.assign({\n      onCloseRequest: handleClose,\n      title: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("buttons.export")\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(JSONExportModal, {\n        elements: elements,\n        appState: appState,\n        setAppState: setAppState,\n        files: files,\n        actionManager: actionManager,\n        onCloseRequest: handleClose,\n        exportOpts: exportOpts,\n        canvas: canvas\n      })\n    }))\n  });\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 8552 characters]\n//# sourceURL=webpack-internal:///../../components/JSONExportDialog.tsx\n');
              }
            ),
            /***/
            "../../components/LaserTool/LaserPathManager.ts": (
              /*!******************************************************!*\
                !*** ../../components/LaserTool/LaserPathManager.ts ***!
                \******************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "LaserPathManager": () => (/* binding */ LaserPathManager)\n/* harmony export */ });\n/* harmony import */ var _excalidraw_laser_pointer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @excalidraw/laser-pointer */ "../../../node_modules/@excalidraw/laser-pointer/dist/esm.js");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils */ "../../utils.ts");\n/* harmony import */ var _clients__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../clients */ "../../clients.ts");\n\n\n // decay time in milliseconds\n\nconst DECAY_TIME = 1000; // length of line in points before it starts decaying\n\nconst DECAY_LENGTH = 50;\n\nconst average = (a, b) => (a + b) / 2;\n\nfunction getSvgPathFromStroke(points, closed = true) {\n  const len = points.length;\n\n  if (len < 4) {\n    return ``;\n  }\n\n  let a = points[0];\n  let b = points[1];\n  const c = points[2];\n  let result = `M${a[0].toFixed(2)},${a[1].toFixed(2)} Q${b[0].toFixed(2)},${b[1].toFixed(2)} ${average(b[0], c[0]).toFixed(2)},${average(b[1], c[1]).toFixed(2)} T`;\n\n  for (let i = 2, max = len - 1; i < max; i++) {\n    a = points[i];\n    b = points[i + 1];\n    result += `${average(a[0], b[0]).toFixed(2)},${average(a[1], b[1]).toFixed(2)} `;\n  }\n\n  if (closed) {\n    result += "Z";\n  }\n\n  return result;\n}\n\nfunction easeOutCubic(t) {\n  return 1 - Math.pow(1 - t, 3);\n}\n\nfunction instantiateCollabolatorState() {\n  return {\n    currentPath: undefined,\n    finishedPaths: [],\n    lastPoint: [-10000, -10000],\n    svg: document.createElementNS("http://www.w3.org/2000/svg", "path")\n  };\n}\n\nfunction instantiatePath() {\n  _excalidraw_laser_pointer__WEBPACK_IMPORTED_MODULE_0__.LaserPointer.constants.cornerDetectionMaxAngle = 70;\n  return new _excalidraw_laser_pointer__WEBPACK_IMPORTED_MODULE_0__.LaserPointer({\n    simplify: 0,\n    streamline: 0.4,\n    sizeMapping: c => {\n      const pt = DECAY_TIME;\n      const pl = DECAY_LENGTH;\n      const t = Math.max(0, 1 - (performance.now() - c.pressure) / pt);\n      const l = (pl - Math.min(pl, c.totalLength - c.currentIndex)) / pl;\n      return Math.min(easeOutCubic(l), easeOutCubic(t));\n    }\n  });\n}\n\nclass LaserPathManager {\n  constructor(app) {\n    this.app = app;\n    this.collaboratorsState = new Map();\n    this.isDrawing = false;\n    this.isRunning = false;\n    this.ownState = instantiateCollabolatorState();\n  }\n\n  destroy() {\n    this.stop();\n    this.isDrawing = false;\n    this.ownState = instantiateCollabolatorState();\n    this.collaboratorsState = new Map();\n  }\n\n  startPath(x, y) {\n    this.ownState.currentPath = instantiatePath();\n    this.ownState.currentPath.addPoint([x, y, performance.now()]);\n    this.updatePath(this.ownState);\n  }\n\n  addPointToPath(x, y) {\n    var _a;\n\n    if (this.ownState.currentPath) {\n      (_a = this.ownState.currentPath) === null || _a === void 0 ? void 0 : _a.addPoint([x, y, performance.now()]);\n      this.updatePath(this.ownState);\n    }\n  }\n\n  endPath() {\n    if (this.ownState.currentPath) {\n      this.ownState.currentPath.close();\n      this.ownState.finishedPaths.push(this.ownState.currentPath);\n      this.updatePath(this.ownState);\n    }\n  }\n\n  updatePath(state) {\n    this.isDrawing = true;\n\n    if (!this.isRunning) {\n      this.start();\n    }\n  }\n\n  start(svg) {\n    if (svg) {\n      this.container = svg;\n      this.container.appendChild(this.ownState.svg);\n    }\n\n    this.stop();\n    this.isRunning = true;\n    this.loop();\n  }\n\n  stop() {\n    this.isRunning = false;\n\n    if (this.rafId) {\n      cancelAnimationFrame(this.rafId);\n    }\n\n    this.rafId = undefined;\n  }\n\n  loop() {\n    this.rafId = requestAnimationFrame(this.loop.bind(this));\n    this.updateCollabolatorsState();\n\n    if (this.isDrawing) {\n      this.update();\n    } else {\n      this.isRunning = false;\n    }\n  }\n\n  draw(path) {\n    const stroke = path.getStrokeOutline(path.options.size / this.app.state.zoom.value).map(([x, y]) => {\n      const result = (0,_utils__WEBPACK_IMPORTED_MODULE_1__.sceneCoordsToViewportCoords)({\n        sceneX: x,\n        sceneY: y\n      }, this.app.state);\n      return [result.x, result.y];\n    });\n    return getSvgPathFromStroke(stroke, true);\n  }\n\n  updateCollabolatorsState() {\n    if (!this.container || !this.app.state.collaborators.size) {\n      return;\n    }\n\n    for (const [key, collabolator] of this.app.state.collaborators.entries()) {\n      if (!this.collaboratorsState.has(key)) {\n        const state = instantiateCollabolatorState();\n        this.container.appendChild(state.svg);\n        this.collaboratorsState.set(key, state);\n        this.updatePath(state);\n      }\n\n      const state = this.collaboratorsState.get(key);\n\n      if (collabolator.pointer && collabolator.pointer.tool === "laser") {\n        if (collabolator.button === "down" && state.currentPath === undefined) {\n          state.lastPoint = [collabolator.pointer.x, collabolator.pointer.y];\n          state.currentPath = instantiatePath();\n          state.currentPath.addPoint([collabolator.pointer.x, collabolator.pointer.y, performance.now()]);\n          this.updatePath(state);\n        }\n\n        if (collabolator.button === "down" && state.currentPath !== undefined) {\n          if (collabolator.pointer.x !== state.lastPoint[0] || collabolator.pointer.y !== state.lastPoint[1]) {\n            state.lastPoint = [collabolator.pointer.x, collabolator.pointer.y];\n            state.currentPath.addPoint([collabolator.pointer.x, collabolator.pointer.y, performance.now()]);\n            this.updatePath(state);\n          }\n        }\n\n        if (collabolator.button === "up" && state.currentPath !== undefined) {\n          state.lastPoint = [collabolator.pointer.x, collabolator.pointer.y];\n          state.currentPath.addPoint([collabolator.pointer.x, collabolator.pointer.y, performance.now()]);\n          state.currentPath.close();\n          state.finishedPaths.push(state.currentPath);\n          state.currentPath = undefined;\n          this.updatePath(state);\n        }\n      }\n    }\n  }\n\n  update() {\n    if (!this.container) {\n      return;\n    }\n\n    let somePathsExist = false;\n\n    for (const [key, state] of this.collaboratorsState.entries()) {\n      if (!this.app.state.collaborators.has(key)) {\n        state.svg.remove();\n        this.collaboratorsState.delete(key);\n        continue;\n      }\n\n      state.finishedPaths = state.finishedPaths.filter(path => {\n        const lastPoint = path.originalPoints[path.originalPoints.length - 1];\n        return !(lastPoint && lastPoint[2] < performance.now() - DECAY_TIME);\n      });\n      let paths = state.finishedPaths.map(path => this.draw(path)).join(" ");\n\n      if (state.currentPath) {\n        paths += ` ${this.draw(state.currentPath)}`;\n      }\n\n      if (paths.trim()) {\n        somePathsExist = true;\n      }\n\n      state.svg.setAttribute("d", paths);\n      state.svg.setAttribute("fill", (0,_clients__WEBPACK_IMPORTED_MODULE_2__.getClientColor)(key));\n    }\n\n    this.ownState.finishedPaths = this.ownState.finishedPaths.filter(path => {\n      const lastPoint = path.originalPoints[path.originalPoints.length - 1];\n      return !(lastPoint && lastPoint[2] < performance.now() - DECAY_TIME);\n    });\n    let paths = this.ownState.finishedPaths.map(path => this.draw(path)).join(" ");\n\n    if (this.ownState.currentPath) {\n      paths += ` ${this.draw(this.ownState.currentPath)}`;\n    }\n\n    paths = paths.trim();\n\n    if (paths) {\n      somePathsExist = true;\n    }\n\n    this.ownState.svg.setAttribute("d", paths);\n    this.ownState.svg.setAttribute("fill", "red");\n\n    if (!somePathsExist) {\n      this.isDrawing = false;\n    }\n  }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 11832 characters]\n//# sourceURL=webpack-internal:///../../components/LaserTool/LaserPathManager.ts\n');
              }
            ),
            /***/
            "../../components/LaserTool/LaserPointerButton.tsx": (
              /*!*********************************************************!*\
                !*** ../../components/LaserTool/LaserPointerButton.tsx ***!
                \*********************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "LaserPointerButton": () => (/* binding */ LaserPointerButton)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var _ToolIcon_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ToolIcon.scss */ "../../components/ToolIcon.scss");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../icons */ "../../components/icons.tsx");\n\n\n\n\nconst DEFAULT_SIZE = "small";\nconst LaserPointerButton = props => {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("label", Object.assign({\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_2__["default"])("ToolIcon ToolIcon__LaserPointer", `ToolIcon_size_${DEFAULT_SIZE}`, {\n      "is-mobile": props.isMobile\n    }),\n    title: `${props.title}`\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input", {\n      className: "ToolIcon_type_checkbox",\n      type: "checkbox",\n      name: props.name,\n      onChange: props.onChange,\n      checked: props.checked,\n      "aria-label": props.title,\n      "data-testid": "toolbar-LaserPointer"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: "ToolIcon__icon"\n    }, {\n      children: _icons__WEBPACK_IMPORTED_MODULE_3__.laserPointerToolIcon\n    }))]\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9MYXNlclRvb2wvTGFzZXJQb2ludGVyQnV0dG9uLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUErRDtBQUNyQztBQUNGO0FBQ3dCO0FBQ2hEO0FBQ087QUFDUCxTQUFTLHVEQUFLO0FBQ2QsZUFBZSxnREFBSSxxREFBcUQsYUFBYTtBQUNyRjtBQUNBLEtBQUs7QUFDTCxjQUFjLFlBQVk7QUFDMUIsR0FBRztBQUNILGVBQWUsc0RBQUk7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLLEdBQUcsc0RBQUk7QUFDWjtBQUNBLEtBQUs7QUFDTCxnQkFBZ0Isd0RBQW9CO0FBQ3BDLEtBQUs7QUFDTCxHQUFHO0FBQ0giLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9MYXNlclRvb2wvTGFzZXJQb2ludGVyQnV0dG9uLnRzeD83MGYzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgXCIuLi9Ub29sSWNvbi5zY3NzXCI7XG5pbXBvcnQgY2xzeCBmcm9tIFwiY2xzeFwiO1xuaW1wb3J0IHsgbGFzZXJQb2ludGVyVG9vbEljb24gfSBmcm9tIFwiLi4vaWNvbnNcIjtcbmNvbnN0IERFRkFVTFRfU0laRSA9IFwic21hbGxcIjtcbmV4cG9ydCBjb25zdCBMYXNlclBvaW50ZXJCdXR0b24gPSBwcm9wcyA9PiB7XG4gIHJldHVybiBfanN4cyhcImxhYmVsXCIsIE9iamVjdC5hc3NpZ24oe1xuICAgIGNsYXNzTmFtZTogY2xzeChcIlRvb2xJY29uIFRvb2xJY29uX19MYXNlclBvaW50ZXJcIiwgYFRvb2xJY29uX3NpemVfJHtERUZBVUxUX1NJWkV9YCwge1xuICAgICAgXCJpcy1tb2JpbGVcIjogcHJvcHMuaXNNb2JpbGVcbiAgICB9KSxcbiAgICB0aXRsZTogYCR7cHJvcHMudGl0bGV9YFxuICB9LCB7XG4gICAgY2hpbGRyZW46IFtfanN4KFwiaW5wdXRcIiwge1xuICAgICAgY2xhc3NOYW1lOiBcIlRvb2xJY29uX3R5cGVfY2hlY2tib3hcIixcbiAgICAgIHR5cGU6IFwiY2hlY2tib3hcIixcbiAgICAgIG5hbWU6IHByb3BzLm5hbWUsXG4gICAgICBvbkNoYW5nZTogcHJvcHMub25DaGFuZ2UsXG4gICAgICBjaGVja2VkOiBwcm9wcy5jaGVja2VkLFxuICAgICAgXCJhcmlhLWxhYmVsXCI6IHByb3BzLnRpdGxlLFxuICAgICAgXCJkYXRhLXRlc3RpZFwiOiBcInRvb2xiYXItTGFzZXJQb2ludGVyXCJcbiAgICB9KSwgX2pzeChcImRpdlwiLCBPYmplY3QuYXNzaWduKHtcbiAgICAgIGNsYXNzTmFtZTogXCJUb29sSWNvbl9faWNvblwiXG4gICAgfSwge1xuICAgICAgY2hpbGRyZW46IGxhc2VyUG9pbnRlclRvb2xJY29uXG4gICAgfSkpXVxuICB9KSk7XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/LaserTool/LaserPointerButton.tsx\n');
              }
            ),
            /***/
            "../../components/LaserTool/LaserTool.tsx": (
              /*!************************************************!*\
                !*** ../../components/LaserTool/LaserTool.tsx ***!
                \************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "LaserToolOverlay": () => (/* binding */ LaserToolOverlay)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _LaserToolOverlay_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./LaserToolOverlay.scss */ "../../components/LaserTool/LaserToolOverlay.scss");\n\n\n\nconst LaserToolOverlay = ({\n  manager\n}) => {\n  const svgRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n  (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {\n    if (svgRef.current) {\n      manager.start(svgRef.current);\n    }\n\n    return () => {\n      manager.stop();\n    };\n  }, [manager]);\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: "LaserToolOverlay"\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("svg", {\n      ref: svgRef,\n      className: "LaserToolOverlayCanvas"\n    })\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9MYXNlclRvb2wvTGFzZXJUb29sLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFnRDtBQUNOO0FBQ1Q7QUFDMUI7QUFDUDtBQUNBLENBQUM7QUFDRCxpQkFBaUIsNkNBQU07QUFDdkIsRUFBRSxnREFBUztBQUNYO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsU0FBUyxzREFBSTtBQUNiO0FBQ0EsR0FBRztBQUNILGNBQWMsc0RBQUk7QUFDbEI7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0giLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9MYXNlclRvb2wvTGFzZXJUb29sLnRzeD8zZTg1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFwiLi9MYXNlclRvb2xPdmVybGF5LnNjc3NcIjtcbmV4cG9ydCBjb25zdCBMYXNlclRvb2xPdmVybGF5ID0gKHtcbiAgbWFuYWdlclxufSkgPT4ge1xuICBjb25zdCBzdmdSZWYgPSB1c2VSZWYobnVsbCk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHN2Z1JlZi5jdXJyZW50KSB7XG4gICAgICBtYW5hZ2VyLnN0YXJ0KHN2Z1JlZi5jdXJyZW50KTtcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbWFuYWdlci5zdG9wKCk7XG4gICAgfTtcbiAgfSwgW21hbmFnZXJdKTtcbiAgcmV0dXJuIF9qc3goXCJkaXZcIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgY2xhc3NOYW1lOiBcIkxhc2VyVG9vbE92ZXJsYXlcIlxuICB9LCB7XG4gICAgY2hpbGRyZW46IF9qc3goXCJzdmdcIiwge1xuICAgICAgcmVmOiBzdmdSZWYsXG4gICAgICBjbGFzc05hbWU6IFwiTGFzZXJUb29sT3ZlcmxheUNhbnZhc1wiXG4gICAgfSlcbiAgfSkpO1xufTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/LaserTool/LaserTool.tsx\n');
              }
            ),
            /***/
            "../../components/LayerUI.tsx": (
              /*!************************************!*\
                !*** ../../components/LayerUI.tsx ***!
                \************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../scene */ "../../scene/index.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _Actions__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Actions */ "../../components/Actions.tsx");\n/* harmony import */ var _ErrorDialog__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./ErrorDialog */ "../../components/ErrorDialog.tsx");\n/* harmony import */ var _ImageExportDialog__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./ImageExportDialog */ "../../components/ImageExportDialog.tsx");\n/* harmony import */ var _FixedSideContainer__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./FixedSideContainer */ "../../components/FixedSideContainer.tsx");\n/* harmony import */ var _HintViewer__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./HintViewer */ "../../components/HintViewer.tsx");\n/* harmony import */ var _Island__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./Island */ "../../components/Island.tsx");\n/* harmony import */ var _LoadingMessage__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./LoadingMessage */ "../../components/LoadingMessage.tsx");\n/* harmony import */ var _LockButton__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./LockButton */ "../../components/LockButton.tsx");\n/* harmony import */ var _MobileMenu__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./MobileMenu */ "../../components/MobileMenu.tsx");\n/* harmony import */ var _PasteChartDialog__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./PasteChartDialog */ "../../components/PasteChartDialog.tsx");\n/* harmony import */ var _Section__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./Section */ "../../components/Section.tsx");\n/* harmony import */ var _HelpDialog__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./HelpDialog */ "../../components/HelpDialog.tsx");\n/* harmony import */ var _Stack__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./Stack */ "../../components/Stack.tsx");\n/* harmony import */ var _UserList__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./UserList */ "../../components/UserList.tsx");\n/* harmony import */ var _JSONExportDialog__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./JSONExportDialog */ "../../components/JSONExportDialog.tsx");\n/* harmony import */ var _PenModeButton__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./PenModeButton */ "../../components/PenModeButton.tsx");\n/* harmony import */ var _analytics__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../analytics */ "../../analytics.ts");\n/* harmony import */ var _components_App__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../components/App */ "../../components/App.tsx");\n/* harmony import */ var _Stats__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./Stats */ "../../components/Stats.tsx");\n/* harmony import */ var _actions_actionToggleStats__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ../actions/actionToggleStats */ "../../actions/actionToggleStats.tsx");\n/* harmony import */ var _footer_Footer__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./footer/Footer */ "../../components/footer/Footer.tsx");\n/* harmony import */ var _Sidebar_Sidebar__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./Sidebar/Sidebar */ "../../components/Sidebar/Sidebar.tsx");\n/* harmony import */ var _jotai__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ../jotai */ "../../jotai.ts");\n/* harmony import */ var jotai__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! jotai */ "../../../node_modules/jotai/esm/index.mjs");\n/* harmony import */ var _main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./main-menu/MainMenu */ "../../components/main-menu/MainMenu.tsx");\n/* harmony import */ var _ActiveConfirmDialog__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./ActiveConfirmDialog */ "../../components/ActiveConfirmDialog.tsx");\n/* harmony import */ var _OverwriteConfirm_OverwriteConfirm__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./OverwriteConfirm/OverwriteConfirm */ "../../components/OverwriteConfirm/OverwriteConfirm.tsx");\n/* harmony import */ var _HandButton__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./HandButton */ "../../components/HandButton.tsx");\n/* harmony import */ var _appState__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ../appState */ "../../appState.ts");\n/* harmony import */ var _context_tunnels__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ../context/tunnels */ "../../context/tunnels.ts");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./icons */ "../../components/icons.tsx");\n/* harmony import */ var _context_ui_appState__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ../context/ui-appState */ "../../context/ui-appState.ts");\n/* harmony import */ var _DefaultSidebar__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./DefaultSidebar */ "../../components/DefaultSidebar.tsx");\n/* harmony import */ var _EyeDropper__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./EyeDropper */ "../../components/EyeDropper.tsx");\n/* harmony import */ var _LayerUI_scss__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./LayerUI.scss */ "../../components/LayerUI.scss");\n/* harmony import */ var _Toolbar_scss__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./Toolbar.scss */ "../../components/Toolbar.scss");\n/* harmony import */ var _element_mutateElement__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ../element/mutateElement */ "../../element/mutateElement.ts");\n/* harmony import */ var _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ../scene/ShapeCache */ "../../scene/ShapeCache.ts");\n/* harmony import */ var _scene_Scene__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ../scene/Scene */ "../../scene/Scene.ts");\n/* harmony import */ var _LaserTool_LaserPointerButton__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ./LaserTool/LaserPointerButton */ "../../components/LaserTool/LaserPointerButton.tsx");\nvar __rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n\n  if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst DefaultMainMenu = ({\n  UIOptions\n}) => {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_31__["default"], Object.assign({\n    __fallback: true\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_31__["default"].DefaultItems.LoadScene, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_31__["default"].DefaultItems.SaveToActiveFile, {}), UIOptions.canvasActions.export && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_31__["default"].DefaultItems.Export, {}), UIOptions.canvasActions.saveAsImage && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_31__["default"].DefaultItems.SaveAsImage, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_31__["default"].DefaultItems.Help, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_31__["default"].DefaultItems.ClearCanvas, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_31__["default"].Separator, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_31__["default"].Group, Object.assign({\n      title: "Excalidraw links"\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_31__["default"].DefaultItems.Socials, {})\n    })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_31__["default"].Separator, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_31__["default"].DefaultItems.ToggleTheme, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_31__["default"].DefaultItems.ChangeCanvasBackground, {})]\n  }));\n};\n\nconst DefaultOverwriteConfirmDialog = () => {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_OverwriteConfirm_OverwriteConfirm__WEBPACK_IMPORTED_MODULE_33__.OverwriteConfirmDialog, Object.assign({\n    __fallback: true\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_OverwriteConfirm_OverwriteConfirm__WEBPACK_IMPORTED_MODULE_33__.OverwriteConfirmDialog.Actions.SaveToDisk, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_OverwriteConfirm_OverwriteConfirm__WEBPACK_IMPORTED_MODULE_33__.OverwriteConfirmDialog.Actions.ExportToImage, {})]\n  }));\n};\n\nconst LayerUI = ({\n  actionManager,\n  appState,\n  files,\n  setAppState,\n  elements,\n  canvas,\n  onLockToggle,\n  onHandToolToggle,\n  onPenModeToggle,\n  showExitZenModeBtn,\n  renderTopRightUI,\n  renderCustomStats,\n  UIOptions,\n  onExportImage,\n  renderWelcomeScreen,\n  children,\n  app,\n  isCollaborating\n}) => {\n  const device = (0,_components_App__WEBPACK_IMPORTED_MODULE_25__.useDevice)();\n  const tunnels = (0,_context_tunnels__WEBPACK_IMPORTED_MODULE_36__.useInitializeTunnels)();\n  const [eyeDropperState, setEyeDropperState] = (0,jotai__WEBPACK_IMPORTED_MODULE_47__.useAtom)(_EyeDropper__WEBPACK_IMPORTED_MODULE_40__.activeEyeDropperAtom, _jotai__WEBPACK_IMPORTED_MODULE_30__.jotaiScope);\n\n  const renderJSONExportDialog = () => {\n    if (!UIOptions.canvasActions.export) {\n      return null;\n    }\n\n    return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_JSONExportDialog__WEBPACK_IMPORTED_MODULE_22__.JSONExportDialog, {\n      elements: elements,\n      appState: appState,\n      files: files,\n      actionManager: actionManager,\n      exportOpts: UIOptions.canvasActions.export,\n      canvas: canvas,\n      setAppState: setAppState\n    });\n  };\n\n  const renderImageExportDialog = () => {\n    if (!UIOptions.canvasActions.saveAsImage || appState.openDialog !== "imageExport") {\n      return null;\n    }\n\n    return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ImageExportDialog__WEBPACK_IMPORTED_MODULE_10__.ImageExportDialog, {\n      elements: elements,\n      appState: appState,\n      files: files,\n      actionManager: actionManager,\n      onExportImage: onExportImage,\n      onCloseRequest: () => setAppState({\n        openDialog: null\n      })\n    });\n  };\n\n  const renderCanvasActions = () => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n    style: {\n      position: "relative"\n    }\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(tunnels.MainMenuTunnel.Out, {}), renderWelcomeScreen && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(tunnels.WelcomeScreenMenuHintTunnel.Out, {})]\n  }));\n\n  const renderSelectedShapeActions = () => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Section__WEBPACK_IMPORTED_MODULE_18__.Section, Object.assign({\n    heading: "selectedShapeActions",\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__["default"])("selected-shape-actions zen-mode-transition", {\n      "transition-left": appState.zenModeEnabled\n    })\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Island__WEBPACK_IMPORTED_MODULE_13__.Island, Object.assign({\n      className: _constants__WEBPACK_IMPORTED_MODULE_3__.CLASSES.SHAPE_ACTIONS_MENU,\n      padding: 2,\n      style: {\n        // we want to make sure this doesn\'t overflow so subtracting the\n        // approximate height of hamburgerMenu + footer\n        maxHeight: `${appState.height - 166}px`\n      }\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Actions__WEBPACK_IMPORTED_MODULE_8__.SelectedShapeActions, {\n        appState: appState,\n        elements: elements,\n        renderAction: actionManager.renderAction\n      })\n    }))\n  }));\n\n  const renderFixedSideContainer = () => {\n    var _a;\n\n    const shouldRenderSelectedShapeActions = (0,_element__WEBPACK_IMPORTED_MODULE_4__.showSelectedShapeActions)(appState, elements);\n    return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_FixedSideContainer__WEBPACK_IMPORTED_MODULE_11__.FixedSideContainer, Object.assign({\n      side: "top"\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n        className: "App-menu App-menu_top"\n      }, {\n        children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Stack__WEBPACK_IMPORTED_MODULE_20__["default"].Col, Object.assign({\n          gap: 6,\n          className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__["default"])("App-menu_top__left")\n        }, {\n          children: [renderCanvasActions(), shouldRenderSelectedShapeActions && renderSelectedShapeActions()]\n        })), !appState.viewModeEnabled && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Section__WEBPACK_IMPORTED_MODULE_18__.Section, Object.assign({\n          heading: "shapes",\n          className: "shapes-section"\n        }, {\n          children: heading => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n            style: {\n              position: "relative"\n            }\n          }, {\n            children: [renderWelcomeScreen && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(tunnels.WelcomeScreenToolbarHintTunnel.Out, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Stack__WEBPACK_IMPORTED_MODULE_20__["default"].Col, Object.assign({\n              gap: 4,\n              align: "start"\n            }, {\n              children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Stack__WEBPACK_IMPORTED_MODULE_20__["default"].Row, Object.assign({\n                gap: 1,\n                className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__["default"])("App-toolbar-container", {\n                  "zen-mode": appState.zenModeEnabled\n                })\n              }, {\n                children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Island__WEBPACK_IMPORTED_MODULE_13__.Island, Object.assign({\n                  padding: 1,\n                  className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__["default"])("App-toolbar", {\n                    "zen-mode": appState.zenModeEnabled\n                  })\n                }, {\n                  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_HintViewer__WEBPACK_IMPORTED_MODULE_12__.HintViewer, {\n                    appState: appState,\n                    isMobile: device.editor.isMobile,\n                    device: device,\n                    app: app\n                  }), heading, (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Stack__WEBPACK_IMPORTED_MODULE_20__["default"].Row, Object.assign({\n                    gap: 1\n                  }, {\n                    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_PenModeButton__WEBPACK_IMPORTED_MODULE_23__.PenModeButton, {\n                      zenModeEnabled: appState.zenModeEnabled,\n                      checked: appState.penMode,\n                      onChange: () => onPenModeToggle(null),\n                      title: (0,_i18n__WEBPACK_IMPORTED_MODULE_5__.t)("toolBar.penMode"),\n                      penDetected: appState.penDetected\n                    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LockButton__WEBPACK_IMPORTED_MODULE_15__.LockButton, {\n                      checked: appState.activeTool.locked,\n                      onChange: onLockToggle,\n                      title: (0,_i18n__WEBPACK_IMPORTED_MODULE_5__.t)("toolBar.lock")\n                    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n                      className: "App-toolbar__divider"\n                    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_HandButton__WEBPACK_IMPORTED_MODULE_34__.HandButton, {\n                      checked: (0,_appState__WEBPACK_IMPORTED_MODULE_35__.isHandToolActive)(appState),\n                      onChange: () => onHandToolToggle(),\n                      title: (0,_i18n__WEBPACK_IMPORTED_MODULE_5__.t)("toolBar.hand"),\n                      isMobile: true\n                    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Actions__WEBPACK_IMPORTED_MODULE_8__.ShapesSwitcher, {\n                      appState: appState,\n                      activeTool: appState.activeTool,\n                      UIOptions: UIOptions,\n                      app: app\n                    })]\n                  }))]\n                })), isCollaborating && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Island__WEBPACK_IMPORTED_MODULE_13__.Island, Object.assign({\n                  style: {\n                    marginLeft: 8,\n                    alignSelf: "center",\n                    height: "fit-content"\n                  }\n                }, {\n                  children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LaserTool_LaserPointerButton__WEBPACK_IMPORTED_MODULE_46__.LaserPointerButton, {\n                    title: (0,_i18n__WEBPACK_IMPORTED_MODULE_5__.t)("toolBar.laser"),\n                    checked: appState.activeTool.type === "laser",\n                    onChange: () => app.setActiveTool({\n                      type: "laser"\n                    }),\n                    isMobile: true\n                  })\n                }))]\n              }))\n            }))]\n          }))\n        })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n          className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__["default"])("layer-ui__wrapper__top-right zen-mode-transition", {\n            "transition-right": appState.zenModeEnabled\n          })\n        }, {\n          children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_UserList__WEBPACK_IMPORTED_MODULE_21__.UserList, {\n            collaborators: appState.collaborators\n          }), renderTopRightUI === null || renderTopRightUI === void 0 ? void 0 : renderTopRightUI(device.editor.isMobile, appState), !appState.viewModeEnabled && ( // hide button when sidebar docked\n          !isSidebarDocked || ((_a = appState.openSidebar) === null || _a === void 0 ? void 0 : _a.name) !== _constants__WEBPACK_IMPORTED_MODULE_3__.DEFAULT_SIDEBAR.name) && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(tunnels.DefaultSidebarTriggerTunnel.Out, {})]\n        }))]\n      }))\n    }));\n  };\n\n  const renderSidebars = () => {\n    return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_DefaultSidebar__WEBPACK_IMPORTED_MODULE_39__.DefaultSidebar, {\n      __fallback: true,\n      onDock: docked => {\n        (0,_analytics__WEBPACK_IMPORTED_MODULE_24__.trackEvent)("sidebar", `toggleDock (${docked ? "dock" : "undock"})`, `(${device.editor.isMobile ? "mobile" : "desktop"})`);\n      }\n    });\n  };\n\n  const isSidebarDocked = (0,jotai__WEBPACK_IMPORTED_MODULE_47__.useAtomValue)(_Sidebar_Sidebar__WEBPACK_IMPORTED_MODULE_29__.isSidebarDockedAtom, _jotai__WEBPACK_IMPORTED_MODULE_30__.jotaiScope);\n\n  const layerUIJSX = (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n    children: [children, (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(DefaultMainMenu, {\n      UIOptions: UIOptions\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_DefaultSidebar__WEBPACK_IMPORTED_MODULE_39__.DefaultSidebar.Trigger, Object.assign({\n      __fallback: true,\n      icon: _icons__WEBPACK_IMPORTED_MODULE_37__.LibraryIcon,\n      title: (0,_utils__WEBPACK_IMPORTED_MODULE_7__.capitalizeString)((0,_i18n__WEBPACK_IMPORTED_MODULE_5__.t)("toolBar.library")),\n      onToggle: open => {\n        if (open) {\n          (0,_analytics__WEBPACK_IMPORTED_MODULE_24__.trackEvent)("sidebar", `${_constants__WEBPACK_IMPORTED_MODULE_3__.DEFAULT_SIDEBAR.name} (open)`, `button (${device.editor.isMobile ? "mobile" : "desktop"})`);\n        }\n      },\n      tab: _constants__WEBPACK_IMPORTED_MODULE_3__.DEFAULT_SIDEBAR.defaultTab\n    }, {\n      children: (0,_i18n__WEBPACK_IMPORTED_MODULE_5__.t)("toolBar.library")\n    })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(DefaultOverwriteConfirmDialog, {}), appState.isLoading && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LoadingMessage__WEBPACK_IMPORTED_MODULE_14__.LoadingMessage, {\n      delay: 250\n    }), appState.errorMessage && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ErrorDialog__WEBPACK_IMPORTED_MODULE_9__.ErrorDialog, Object.assign({\n      onClose: () => setAppState({\n        errorMessage: null\n      })\n    }, {\n      children: appState.errorMessage\n    })), eyeDropperState && !device.editor.isMobile && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_EyeDropper__WEBPACK_IMPORTED_MODULE_40__.EyeDropper, {\n      colorPickerType: eyeDropperState.colorPickerType,\n      onCancel: () => {\n        setEyeDropperState(null);\n      },\n      onChange: (colorPickerType, color, selectedElements, {\n        altKey\n      }) => {\n        var _a;\n\n        if (colorPickerType !== "elementBackground" && colorPickerType !== "elementStroke") {\n          return;\n        }\n\n        if (selectedElements.length) {\n          for (const element of selectedElements) {\n            (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_43__.mutateElement)(element, {\n              [altKey && eyeDropperState.swapPreviewOnAlt ? colorPickerType === "elementBackground" ? "strokeColor" : "backgroundColor" : colorPickerType === "elementBackground" ? "backgroundColor" : "strokeColor"]: color\n            }, false);\n            _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_44__.ShapeCache["delete"](element);\n          }\n\n          (_a = _scene_Scene__WEBPACK_IMPORTED_MODULE_45__["default"].getScene(selectedElements[0])) === null || _a === void 0 ? void 0 : _a.informMutation();\n        } else if (colorPickerType === "elementBackground") {\n          setAppState({\n            currentItemBackgroundColor: color\n          });\n        } else {\n          setAppState({\n            currentItemStrokeColor: color\n          });\n        }\n      },\n      onSelect: (color, event) => {\n        var _a;\n\n        setEyeDropperState(state => {\n          return (state === null || state === void 0 ? void 0 : state.keepOpenOnAlt) && event.altKey ? state : null;\n        });\n        (_a = eyeDropperState === null || eyeDropperState === void 0 ? void 0 : eyeDropperState.onSelect) === null || _a === void 0 ? void 0 : _a.call(eyeDropperState, color, event);\n      }\n    }), appState.openDialog === "help" && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_HelpDialog__WEBPACK_IMPORTED_MODULE_19__.HelpDialog, {\n      onClose: () => {\n        setAppState({\n          openDialog: null\n        });\n      }\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ActiveConfirmDialog__WEBPACK_IMPORTED_MODULE_32__.ActiveConfirmDialog, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(tunnels.OverwriteConfirmDialogTunnel.Out, {}), renderImageExportDialog(), renderJSONExportDialog(), appState.pasteDialog.shown && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_PasteChartDialog__WEBPACK_IMPORTED_MODULE_17__.PasteChartDialog, {\n      setAppState: setAppState,\n      appState: appState,\n      onClose: () => setAppState({\n        pasteDialog: {\n          shown: false,\n          data: null\n        }\n      })\n    }), device.editor.isMobile && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_MobileMenu__WEBPACK_IMPORTED_MODULE_16__.MobileMenu, {\n      app: app,\n      appState: appState,\n      elements: elements,\n      actionManager: actionManager,\n      renderJSONExportDialog: renderJSONExportDialog,\n      renderImageExportDialog: renderImageExportDialog,\n      setAppState: setAppState,\n      onLockToggle: onLockToggle,\n      onHandToolToggle: onHandToolToggle,\n      onPenModeToggle: onPenModeToggle,\n      renderTopRightUI: renderTopRightUI,\n      renderCustomStats: renderCustomStats,\n      renderSidebars: renderSidebars,\n      device: device,\n      renderWelcomeScreen: renderWelcomeScreen,\n      UIOptions: UIOptions\n    }), !device.editor.isMobile && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n        className: "layer-ui__wrapper",\n        style: appState.openSidebar && isSidebarDocked && device.editor.canFitSidebar ? {\n          width: `calc(100% - ${_constants__WEBPACK_IMPORTED_MODULE_3__.LIBRARY_SIDEBAR_WIDTH}px)`\n        } : {}\n      }, {\n        children: [renderWelcomeScreen && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(tunnels.WelcomeScreenCenterTunnel.Out, {}), renderFixedSideContainer(), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_footer_Footer__WEBPACK_IMPORTED_MODULE_28__["default"], {\n          appState: appState,\n          actionManager: actionManager,\n          showExitZenModeBtn: showExitZenModeBtn,\n          renderWelcomeScreen: renderWelcomeScreen\n        }), appState.showStats && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Stats__WEBPACK_IMPORTED_MODULE_26__.Stats, {\n          appState: appState,\n          setAppState: setAppState,\n          elements: elements,\n          onClose: () => {\n            actionManager.executeAction(_actions_actionToggleStats__WEBPACK_IMPORTED_MODULE_27__.actionToggleStats);\n          },\n          renderCustomStats: renderCustomStats\n        }), appState.scrolledOutside && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("button", Object.assign({\n          className: "scroll-back-to-content",\n          onClick: () => {\n            setAppState(appState => Object.assign({}, (0,_scene__WEBPACK_IMPORTED_MODULE_6__.calculateScrollCenter)(elements, appState)));\n          }\n        }, {\n          children: (0,_i18n__WEBPACK_IMPORTED_MODULE_5__.t)("buttons.scrollBackToContent")\n        }))]\n      })), renderSidebars()]\n    })]\n  });\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_context_ui_appState__WEBPACK_IMPORTED_MODULE_38__.UIAppStateContext.Provider, Object.assign({\n    value: appState\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(jotai__WEBPACK_IMPORTED_MODULE_47__.Provider, Object.assign({\n      scope: tunnels.jotaiScope\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_context_tunnels__WEBPACK_IMPORTED_MODULE_36__.TunnelsContext.Provider, Object.assign({\n        value: tunnels\n      }, {\n        children: layerUIJSX\n      }))\n    }))\n  }));\n};\n\nconst stripIrrelevantAppStateProps = appState => {\n  const {\n    suggestedBindings,\n    startBoundElement,\n    cursorButton,\n    scrollX,\n    scrollY\n  } = appState,\n        ret = __rest(appState, ["suggestedBindings", "startBoundElement", "cursorButton", "scrollX", "scrollY"]);\n\n  return ret;\n};\n\nconst areEqual = (prevProps, nextProps) => {\n  // short-circuit early\n  if (prevProps.children !== nextProps.children) {\n    return false;\n  }\n\n  const {\n    canvas: _pC,\n    appState: prevAppState\n  } = prevProps,\n        prev = __rest(prevProps, ["canvas", "appState"]);\n\n  const {\n    canvas: _nC,\n    appState: nextAppState\n  } = nextProps,\n        next = __rest(nextProps, ["canvas", "appState"]);\n\n  return (0,_utils__WEBPACK_IMPORTED_MODULE_7__.isShallowEqual)( // asserting AppState because we\'re being passed the whole AppState\n  // but resolve to only the UI-relevant props\n  stripIrrelevantAppStateProps(prevAppState), stripIrrelevantAppStateProps(nextAppState), {\n    selectedElementIds: _utils__WEBPACK_IMPORTED_MODULE_7__.isShallowEqual,\n    selectedGroupIds: _utils__WEBPACK_IMPORTED_MODULE_7__.isShallowEqual\n  }) && (0,_utils__WEBPACK_IMPORTED_MODULE_7__.isShallowEqual)(prev, next);\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (react__WEBPACK_IMPORTED_MODULE_2___default().memo(LayerUI, areEqual));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 30832 characters]\n//# sourceURL=webpack-internal:///../../components/LayerUI.tsx\n');
              }
            ),
            /***/
            "../../components/LibraryMenu.tsx": (
              /*!****************************************!*\
                !*** ../../components/LibraryMenu.tsx ***!
                \****************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "LibraryMenu": () => (/* binding */ LibraryMenu),\n/* harmony export */   "LibraryMenuContent": () => (/* binding */ LibraryMenuContent),\n/* harmony export */   "isLibraryMenuOpenAtom": () => (/* binding */ isLibraryMenuOpenAtom)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _data_library__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../data/library */ "../../data/library.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _random__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../random */ "../../random.ts");\n/* harmony import */ var _LibraryMenuItems__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./LibraryMenuItems */ "../../components/LibraryMenuItems.tsx");\n/* harmony import */ var _analytics__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../analytics */ "../../analytics.ts");\n/* harmony import */ var jotai__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! jotai */ "../../../node_modules/jotai/esm/index.mjs");\n/* harmony import */ var _jotai__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../jotai */ "../../jotai.ts");\n/* harmony import */ var _Spinner__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Spinner */ "../../components/Spinner.tsx");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./App */ "../../components/App.tsx");\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../scene */ "../../scene/index.ts");\n/* harmony import */ var _context_ui_appState__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../context/ui-appState */ "../../context/ui-appState.ts");\n/* harmony import */ var _LibraryMenu_scss__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./LibraryMenu.scss */ "../../components/LibraryMenu.scss");\n/* harmony import */ var _LibraryMenuControlButtons__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./LibraryMenuControlButtons */ "../../components/LibraryMenuControlButtons.tsx");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator["throw"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst isLibraryMenuOpenAtom = (0,jotai__WEBPACK_IMPORTED_MODULE_16__.atom)(false);\n\nconst LibraryMenuWrapper = ({\n  children\n}) => {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: "layer-ui__library"\n  }, {\n    children: children\n  }));\n};\n\nconst LibraryMenuContent = ({\n  onInsertLibraryItems,\n  pendingElements,\n  onAddToLibrary,\n  setAppState,\n  libraryReturnUrl,\n  library,\n  id,\n  theme,\n  selectedItems,\n  onSelectItems\n}) => {\n  const [libraryItemsData] = (0,jotai__WEBPACK_IMPORTED_MODULE_16__.useAtom)(_data_library__WEBPACK_IMPORTED_MODULE_2__.libraryItemsAtom, _jotai__WEBPACK_IMPORTED_MODULE_7__.jotaiScope);\n\n  const _onAddToLibrary = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(elements => {\n    const addToLibrary = (processedElements, libraryItems) => __awaiter(void 0, void 0, void 0, function* () {\n      (0,_analytics__WEBPACK_IMPORTED_MODULE_6__.trackEvent)("element", "addToLibrary", "ui");\n\n      for (const type of _constants__WEBPACK_IMPORTED_MODULE_15__.LIBRARY_DISABLED_TYPES) {\n        if (processedElements.some(element => element.type === type)) {\n          return setAppState({\n            errorMessage: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)(`errors.libraryElementTypeError.${type}`)\n          });\n        }\n      }\n\n      const nextItems = [{\n        status: "unpublished",\n        elements: processedElements,\n        id: (0,_random__WEBPACK_IMPORTED_MODULE_4__.randomId)(),\n        created: Date.now()\n      }, ...libraryItems];\n      onAddToLibrary();\n      library.setLibrary(nextItems).catch(() => {\n        setAppState({\n          errorMessage: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("alerts.errorAddingToLibrary")\n        });\n      });\n    });\n\n    addToLibrary(elements, libraryItemsData.libraryItems);\n  }, [onAddToLibrary, library, setAppState, libraryItemsData.libraryItems]);\n\n  const libraryItems = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(() => libraryItemsData.libraryItems, [libraryItemsData]);\n\n  if (libraryItemsData.status === "loading" && !libraryItemsData.isInitialized) {\n    return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(LibraryMenuWrapper, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n        className: "layer-ui__library-message"\n      }, {\n        children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", {\n          children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Spinner__WEBPACK_IMPORTED_MODULE_8__["default"], {\n            size: "2em"\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", {\n            children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("labels.libraryLoadingMessage")\n          })]\n        })\n      }))\n    });\n  }\n\n  const showBtn = libraryItemsData.libraryItems.length > 0 || pendingElements.length > 0;\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(LibraryMenuWrapper, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LibraryMenuItems__WEBPACK_IMPORTED_MODULE_5__["default"], {\n      isLoading: libraryItemsData.status === "loading",\n      libraryItems: libraryItems,\n      onAddToLibrary: _onAddToLibrary,\n      onInsertLibraryItems: onInsertLibraryItems,\n      pendingElements: pendingElements,\n      id: id,\n      libraryReturnUrl: libraryReturnUrl,\n      theme: theme,\n      onSelectItems: onSelectItems,\n      selectedItems: selectedItems\n    }), showBtn && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LibraryMenuControlButtons__WEBPACK_IMPORTED_MODULE_13__.LibraryMenuControlButtons, {\n      className: "library-menu-control-buttons--at-bottom",\n      style: {\n        padding: "16px 12px 0 12px"\n      },\n      id: id,\n      libraryReturnUrl: libraryReturnUrl,\n      theme: theme\n    })]\n  });\n};\n\nconst usePendingElementsMemo = (appState, elements) => {\n  const create = () => (0,_scene__WEBPACK_IMPORTED_MODULE_10__.getSelectedElements)(elements, appState, {\n    includeBoundTextElement: true,\n    includeElementsInFrames: true\n  });\n\n  const val = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(create());\n  const prevAppState = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(appState);\n  const prevElements = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(elements);\n\n  if (!(0,_utils__WEBPACK_IMPORTED_MODULE_14__.isShallowEqual)(appState.selectedElementIds, prevAppState.current.selectedElementIds) || !(0,_utils__WEBPACK_IMPORTED_MODULE_14__.isShallowEqual)(elements, prevElements.current)) {\n    val.current = create();\n    prevAppState.current = appState;\n    prevElements.current = elements;\n  }\n\n  return val.current;\n};\n/**\n * This component is meant to be rendered inside <Sidebar.Tab/> inside our\n * <DefaultSidebar/> or host apps Sidebar components.\n */\n\n\nconst LibraryMenu = () => {\n  const {\n    library,\n    id,\n    onInsertElements\n  } = (0,_App__WEBPACK_IMPORTED_MODULE_9__.useApp)();\n  const appProps = (0,_App__WEBPACK_IMPORTED_MODULE_9__.useAppProps)();\n  const appState = (0,_context_ui_appState__WEBPACK_IMPORTED_MODULE_11__.useUIAppState)();\n  const setAppState = (0,_App__WEBPACK_IMPORTED_MODULE_9__.useExcalidrawSetAppState)();\n  const elements = (0,_App__WEBPACK_IMPORTED_MODULE_9__.useExcalidrawElements)();\n  const [selectedItems, setSelectedItems] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n  const memoizedLibrary = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(() => library, [library]); // BUG: pendingElements are still causing some unnecessary rerenders because clicking into canvas returns some ids even when no element is selected.\n\n  const pendingElements = usePendingElementsMemo(appState, elements);\n  const onInsertLibraryItems = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(libraryItems => {\n    onInsertElements((0,_data_library__WEBPACK_IMPORTED_MODULE_2__.distributeLibraryItemsOnSquareGrid)(libraryItems));\n  }, [onInsertElements]);\n  const deselectItems = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(() => {\n    setAppState({\n      selectedElementIds: {},\n      selectedGroupIds: {},\n      activeEmbeddable: null\n    });\n  }, [setAppState]);\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(LibraryMenuContent, {\n    pendingElements: pendingElements,\n    onInsertLibraryItems: onInsertLibraryItems,\n    onAddToLibrary: deselectItems,\n    setAppState: setAppState,\n    libraryReturnUrl: appProps.libraryReturnUrl,\n    library: memoizedLibrary,\n    id: id,\n    theme: appState.theme,\n    selectedItems: selectedItems,\n    onSelectItems: setSelectedItems\n  });\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 11592 characters]\n//# sourceURL=webpack-internal:///../../components/LibraryMenu.tsx\n');
              }
            ),
            /***/
            "../../components/LibraryMenuBrowseButton.tsx": (
              /*!****************************************************!*\
                !*** ../../components/LibraryMenuBrowseButton.tsx ***!
                \****************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n\n\n\n\nconst LibraryMenuBrowseButton = ({\n  theme,\n  id,\n  libraryReturnUrl\n}) => {\n  const referrer = libraryReturnUrl || window.location.origin + window.location.pathname;\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("a", Object.assign({\n    className: "library-menu-browse-button",\n    href: `${"https://libraries.excalidraw.com"}?target=${window.name || "_blank"}&referrer=${referrer}&useHash=true&token=${id}&theme=${theme}&version=${_constants__WEBPACK_IMPORTED_MODULE_1__.VERSIONS.excalidrawLibrary}`,\n    target: "_excalidraw_libraries"\n  }, {\n    children: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("labels.libraries")\n  }));\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (LibraryMenuBrowseButton);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9MaWJyYXJ5TWVudUJyb3dzZUJ1dHRvbi50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFnRDtBQUNSO0FBQ1o7O0FBRTVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0EsU0FBUyxzREFBSTtBQUNiO0FBQ0EsYUFBYSxrQ0FBZ0MsQ0FBQyxVQUFVLHdCQUF3QixZQUFZLFNBQVMsc0JBQXNCLEdBQUcsU0FBUyxNQUFNLFdBQVcsa0VBQTBCLENBQUM7QUFDbkw7QUFDQSxHQUFHO0FBQ0gsY0FBYyx3Q0FBQztBQUNmLEdBQUc7QUFDSDs7QUFFQSxpRUFBZSx1QkFBdUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9MaWJyYXJ5TWVudUJyb3dzZUJ1dHRvbi50c3g/MmI5ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgVkVSU0lPTlMgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyB0IH0gZnJvbSBcIi4uL2kxOG5cIjtcblxuY29uc3QgTGlicmFyeU1lbnVCcm93c2VCdXR0b24gPSAoe1xuICB0aGVtZSxcbiAgaWQsXG4gIGxpYnJhcnlSZXR1cm5Vcmxcbn0pID0+IHtcbiAgY29uc3QgcmVmZXJyZXIgPSBsaWJyYXJ5UmV0dXJuVXJsIHx8IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7XG4gIHJldHVybiBfanN4KFwiYVwiLCBPYmplY3QuYXNzaWduKHtcbiAgICBjbGFzc05hbWU6IFwibGlicmFyeS1tZW51LWJyb3dzZS1idXR0b25cIixcbiAgICBocmVmOiBgJHtwcm9jZXNzLmVudi5WSVRFX0FQUF9MSUJSQVJZX1VSTH0/dGFyZ2V0PSR7d2luZG93Lm5hbWUgfHwgXCJfYmxhbmtcIn0mcmVmZXJyZXI9JHtyZWZlcnJlcn0mdXNlSGFzaD10cnVlJnRva2VuPSR7aWR9JnRoZW1lPSR7dGhlbWV9JnZlcnNpb249JHtWRVJTSU9OUy5leGNhbGlkcmF3TGlicmFyeX1gLFxuICAgIHRhcmdldDogXCJfZXhjYWxpZHJhd19saWJyYXJpZXNcIlxuICB9LCB7XG4gICAgY2hpbGRyZW46IHQoXCJsYWJlbHMubGlicmFyaWVzXCIpXG4gIH0pKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IExpYnJhcnlNZW51QnJvd3NlQnV0dG9uOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/LibraryMenuBrowseButton.tsx\n');
              }
            ),
            /***/
            "../../components/LibraryMenuControlButtons.tsx": (
              /*!******************************************************!*\
                !*** ../../components/LibraryMenuControlButtons.tsx ***!
                \******************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "LibraryMenuControlButtons": () => (/* binding */ LibraryMenuControlButtons)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var _LibraryMenuBrowseButton__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./LibraryMenuBrowseButton */ "../../components/LibraryMenuBrowseButton.tsx");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n\n\n\nconst LibraryMenuControlButtons = ({\n  libraryReturnUrl,\n  theme,\n  id,\n  style,\n  children,\n  className\n}) => {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_2__["default"])("library-menu-control-buttons", className),\n    style: style\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LibraryMenuBrowseButton__WEBPACK_IMPORTED_MODULE_1__["default"], {\n      id: id,\n      libraryReturnUrl: libraryReturnUrl,\n      theme: theme\n    }), children]\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9MaWJyYXJ5TWVudUNvbnRyb2xCdXR0b25zLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQStEO0FBQ0M7QUFDeEM7QUFDakI7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsU0FBUyx1REFBSztBQUNkLGVBQWUsZ0RBQUk7QUFDbkI7QUFDQSxHQUFHO0FBQ0gsZUFBZSxzREFBSSxDQUFDLGdFQUF1QjtBQUMzQztBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvTGlicmFyeU1lbnVDb250cm9sQnV0dG9ucy50c3g/MmRmNCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IExpYnJhcnlNZW51QnJvd3NlQnV0dG9uIGZyb20gXCIuL0xpYnJhcnlNZW51QnJvd3NlQnV0dG9uXCI7XG5pbXBvcnQgY2xzeCBmcm9tIFwiY2xzeFwiO1xuZXhwb3J0IGNvbnN0IExpYnJhcnlNZW51Q29udHJvbEJ1dHRvbnMgPSAoe1xuICBsaWJyYXJ5UmV0dXJuVXJsLFxuICB0aGVtZSxcbiAgaWQsXG4gIHN0eWxlLFxuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lXG59KSA9PiB7XG4gIHJldHVybiBfanN4cyhcImRpdlwiLCBPYmplY3QuYXNzaWduKHtcbiAgICBjbGFzc05hbWU6IGNsc3goXCJsaWJyYXJ5LW1lbnUtY29udHJvbC1idXR0b25zXCIsIGNsYXNzTmFtZSksXG4gICAgc3R5bGU6IHN0eWxlXG4gIH0sIHtcbiAgICBjaGlsZHJlbjogW19qc3goTGlicmFyeU1lbnVCcm93c2VCdXR0b24sIHtcbiAgICAgIGlkOiBpZCxcbiAgICAgIGxpYnJhcnlSZXR1cm5Vcmw6IGxpYnJhcnlSZXR1cm5VcmwsXG4gICAgICB0aGVtZTogdGhlbWVcbiAgICB9KSwgY2hpbGRyZW5dXG4gIH0pKTtcbn07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/LibraryMenuControlButtons.tsx\n');
              }
            ),
            /***/
            "../../components/LibraryMenuHeaderContent.tsx": (
              /*!*****************************************************!*\
                !*** ../../components/LibraryMenuHeaderContent.tsx ***!
                \*****************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "LibraryDropdownMenu": () => (/* binding */ LibraryDropdownMenu),\n/* harmony export */   "LibraryDropdownMenuButton": () => (/* binding */ LibraryDropdownMenuButton)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _Trans__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Trans */ "../../components/Trans.tsx");\n/* harmony import */ var _jotai__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../jotai */ "../../jotai.ts");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./App */ "../../components/App.tsx");\n/* harmony import */ var _data_json__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../data/json */ "../../data/json.ts");\n/* harmony import */ var _data_library__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../data/library */ "../../data/library.ts");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./icons */ "../../components/icons.tsx");\n/* harmony import */ var _ToolButton__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./ToolButton */ "../../components/ToolButton.tsx");\n/* harmony import */ var _data_filesystem__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../data/filesystem */ "../../data/filesystem.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var jotai__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! jotai */ "../../../node_modules/jotai/esm/index.mjs");\n/* harmony import */ var _ConfirmDialog__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./ConfirmDialog */ "../../components/ConfirmDialog.tsx");\n/* harmony import */ var _PublishLibrary__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./PublishLibrary */ "../../components/PublishLibrary.tsx");\n/* harmony import */ var _Dialog__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./Dialog */ "../../components/Dialog.tsx");\n/* harmony import */ var _dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./dropdownMenu/DropdownMenu */ "../../components/dropdownMenu/DropdownMenu.tsx");\n/* harmony import */ var _LibraryMenu__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./LibraryMenu */ "../../components/LibraryMenu.tsx");\n/* harmony import */ var _context_ui_appState__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../context/ui-appState */ "../../context/ui-appState.ts");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _hooks_useLibraryItemSvg__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../hooks/useLibraryItemSvg */ "../../hooks/useLibraryItemSvg.ts");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator["throw"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst getSelectedItems = (libraryItems, selectedItems) => libraryItems.filter(item => selectedItems.includes(item.id));\n\nconst LibraryDropdownMenuButton = ({\n  setAppState,\n  selectedItems,\n  library,\n  onRemoveFromLibrary,\n  resetLibrary,\n  onSelectItems,\n  appState,\n  className\n}) => {\n  const [libraryItemsData] = (0,jotai__WEBPACK_IMPORTED_MODULE_20__.useAtom)(_data_library__WEBPACK_IMPORTED_MODULE_7__.libraryItemsAtom, _jotai__WEBPACK_IMPORTED_MODULE_4__.jotaiScope);\n  const [isLibraryMenuOpen, setIsLibraryMenuOpen] = (0,jotai__WEBPACK_IMPORTED_MODULE_20__.useAtom)(_LibraryMenu__WEBPACK_IMPORTED_MODULE_16__.isLibraryMenuOpenAtom, _jotai__WEBPACK_IMPORTED_MODULE_4__.jotaiScope);\n\n  const renderRemoveLibAlert = () => {\n    const content = selectedItems.length ? (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("alerts.removeItemsFromsLibrary", {\n      count: selectedItems.length\n    }) : (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("alerts.resetLibrary");\n    const title = selectedItems.length ? (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("confirmDialog.removeItemsFromLib") : (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("confirmDialog.resetLibrary");\n    return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ConfirmDialog__WEBPACK_IMPORTED_MODULE_12__["default"], Object.assign({\n      onConfirm: () => {\n        if (selectedItems.length) {\n          onRemoveFromLibrary();\n        } else {\n          resetLibrary();\n        }\n\n        setShowRemoveLibAlert(false);\n      },\n      onCancel: () => {\n        setShowRemoveLibAlert(false);\n      },\n      title: title\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("p", {\n        children: content\n      })\n    }));\n  };\n\n  const [showRemoveLibAlert, setShowRemoveLibAlert] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n  const itemsSelected = !!selectedItems.length;\n  const items = itemsSelected ? libraryItemsData.libraryItems.filter(item => selectedItems.includes(item.id)) : libraryItemsData.libraryItems;\n  const resetLabel = itemsSelected ? (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("buttons.remove") : (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("buttons.resetLibrary");\n  const [showPublishLibraryDialog, setShowPublishLibraryDialog] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n  const [publishLibSuccess, setPublishLibSuccess] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n  const renderPublishSuccess = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(() => {\n    return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Dialog__WEBPACK_IMPORTED_MODULE_14__.Dialog, Object.assign({\n      onCloseRequest: () => setPublishLibSuccess(null),\n      title: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("publishSuccessDialog.title"),\n      className: "publish-library-success",\n      size: "small"\n    }, {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("p", {\n        children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Trans__WEBPACK_IMPORTED_MODULE_3__["default"], {\n          i18nKey: "publishSuccessDialog.content",\n          authorName: publishLibSuccess.authorName,\n          link: el => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("a", Object.assign({\n            href: publishLibSuccess === null || publishLibSuccess === void 0 ? void 0 : publishLibSuccess.url,\n            target: "_blank",\n            rel: "noopener noreferrer"\n          }, {\n            children: el\n          }))\n        })\n      }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ToolButton__WEBPACK_IMPORTED_MODULE_9__.ToolButton, {\n        type: "button",\n        title: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("buttons.close"),\n        "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("buttons.close"),\n        label: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("buttons.close"),\n        onClick: () => setPublishLibSuccess(null),\n        "data-testid": "publish-library-success-close",\n        className: "publish-library-success-close"\n      })]\n    }));\n  }, [setPublishLibSuccess, publishLibSuccess]);\n\n  const onPublishLibSuccess = (data, libraryItems) => {\n    setShowPublishLibraryDialog(false);\n    setPublishLibSuccess({\n      url: data.url,\n      authorName: data.authorName\n    });\n    const nextLibItems = libraryItems.slice();\n    nextLibItems.forEach(libItem => {\n      if (selectedItems.includes(libItem.id)) {\n        libItem.status = "published";\n      }\n    });\n    library.setLibrary(nextLibItems);\n  };\n\n  const onLibraryImport = () => __awaiter(void 0, void 0, void 0, function* () {\n    try {\n      yield library.updateLibrary({\n        libraryItems: (0,_data_filesystem__WEBPACK_IMPORTED_MODULE_10__.fileOpen)({\n          description: "Excalidraw library files" // ToDo: Be over-permissive until https://bugs.webkit.org/show_bug.cgi?id=34442\n          // gets resolved. Else, iOS users cannot open `.excalidraw` files.\n\n          /*\n            extensions: [".json", ".excalidrawlib"],\n            */\n\n        }),\n        merge: true,\n        openLibraryMenu: true\n      });\n    } catch (error) {\n      if ((error === null || error === void 0 ? void 0 : error.name) === "AbortError") {\n        console.warn(error);\n        return;\n      }\n\n      setAppState({\n        errorMessage: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("errors.importLibraryError")\n      });\n    }\n  });\n\n  const onLibraryExport = () => __awaiter(void 0, void 0, void 0, function* () {\n    const libraryItems = itemsSelected ? items : yield library.getLatestLibrary();\n    (0,_data_json__WEBPACK_IMPORTED_MODULE_6__.saveLibraryAsJSON)(libraryItems).catch(_utils__WEBPACK_IMPORTED_MODULE_11__.muteFSAbortError).catch(error => {\n      setAppState({\n        errorMessage: error.message\n      });\n    });\n  });\n\n  const renderLibraryMenu = () => {\n    return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_15__["default"], Object.assign({\n      open: isLibraryMenuOpen\n    }, {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_15__["default"].Trigger, Object.assign({\n        onToggle: () => setIsLibraryMenuOpen(!isLibraryMenuOpen)\n      }, {\n        children: _icons__WEBPACK_IMPORTED_MODULE_8__.DotsIcon\n      })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_15__["default"].Content, Object.assign({\n        onClickOutside: () => setIsLibraryMenuOpen(false),\n        onSelect: () => setIsLibraryMenuOpen(false),\n        className: "library-menu"\n      }, {\n        children: [!itemsSelected && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_15__["default"].Item, Object.assign({\n          onSelect: onLibraryImport,\n          icon: _icons__WEBPACK_IMPORTED_MODULE_8__.LoadIcon,\n          "data-testid": "lib-dropdown--load"\n        }, {\n          children: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("buttons.load")\n        })), !!items.length && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_15__["default"].Item, Object.assign({\n          onSelect: onLibraryExport,\n          icon: _icons__WEBPACK_IMPORTED_MODULE_8__.ExportIcon,\n          "data-testid": "lib-dropdown--export"\n        }, {\n          children: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("buttons.export")\n        })), !!items.length && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_15__["default"].Item, Object.assign({\n          onSelect: () => setShowRemoveLibAlert(true),\n          icon: _icons__WEBPACK_IMPORTED_MODULE_8__.TrashIcon\n        }, {\n          children: resetLabel\n        })), itemsSelected && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_15__["default"].Item, Object.assign({\n          icon: _icons__WEBPACK_IMPORTED_MODULE_8__.publishIcon,\n          onSelect: () => setShowPublishLibraryDialog(true),\n          "data-testid": "lib-dropdown--remove"\n        }, {\n          children: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("buttons.publishLibrary")\n        }))]\n      }))]\n    }));\n  };\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_18__["default"])("library-menu-dropdown-container", className)\n  }, {\n    children: [renderLibraryMenu(), selectedItems.length > 0 && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: "library-actions-counter"\n    }, {\n      children: selectedItems.length\n    })), showRemoveLibAlert && renderRemoveLibAlert(), showPublishLibraryDialog && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_PublishLibrary__WEBPACK_IMPORTED_MODULE_13__["default"], {\n      onClose: () => setShowPublishLibraryDialog(false),\n      libraryItems: getSelectedItems(libraryItemsData.libraryItems, selectedItems),\n      appState: appState,\n      onSuccess: data => onPublishLibSuccess(data, libraryItemsData.libraryItems),\n      onError: error => window.alert(error),\n      updateItemsInStorage: () => library.setLibrary(libraryItemsData.libraryItems),\n      onRemove: id => onSelectItems(selectedItems.filter(_id => _id !== id))\n    }), publishLibSuccess && renderPublishSuccess()]\n  }));\n};\nconst LibraryDropdownMenu = ({\n  selectedItems,\n  onSelectItems,\n  className\n}) => {\n  const {\n    library\n  } = (0,_App__WEBPACK_IMPORTED_MODULE_5__.useApp)();\n  const {\n    clearLibraryCache,\n    deleteItemsFromLibraryCache\n  } = (0,_hooks_useLibraryItemSvg__WEBPACK_IMPORTED_MODULE_19__.useLibraryCache)();\n  const appState = (0,_context_ui_appState__WEBPACK_IMPORTED_MODULE_17__.useUIAppState)();\n  const setAppState = (0,_App__WEBPACK_IMPORTED_MODULE_5__.useExcalidrawSetAppState)();\n  const [libraryItemsData] = (0,jotai__WEBPACK_IMPORTED_MODULE_20__.useAtom)(_data_library__WEBPACK_IMPORTED_MODULE_7__.libraryItemsAtom, _jotai__WEBPACK_IMPORTED_MODULE_4__.jotaiScope);\n\n  const removeFromLibrary = libraryItems => __awaiter(void 0, void 0, void 0, function* () {\n    const nextItems = libraryItems.filter(item => !selectedItems.includes(item.id));\n    library.setLibrary(nextItems).catch(() => {\n      setAppState({\n        errorMessage: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("alerts.errorRemovingFromLibrary")\n      });\n    });\n    deleteItemsFromLibraryCache(selectedItems);\n    onSelectItems([]);\n  });\n\n  const resetLibrary = () => {\n    library.resetLibrary();\n    clearLibraryCache();\n  };\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(LibraryDropdownMenuButton, {\n    appState: appState,\n    setAppState: setAppState,\n    selectedItems: selectedItems,\n    onSelectItems: onSelectItems,\n    library: library,\n    onRemoveFromLibrary: () => removeFromLibrary(libraryItemsData.libraryItems),\n    resetLibrary: resetLibrary,\n    className: className\n  });\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 17196 characters]\n//# sourceURL=webpack-internal:///../../components/LibraryMenuHeaderContent.tsx\n');
              }
            ),
            /***/
            "../../components/LibraryMenuItems.tsx": (
              /*!*********************************************!*\
                !*** ../../components/LibraryMenuItems.tsx ***!
                \*********************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (/* binding */ LibraryMenuItems)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _data_json__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../data/json */ "../../data/json.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _Stack__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Stack */ "../../components/Stack.tsx");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _Spinner__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./Spinner */ "../../components/Spinner.tsx");\n/* harmony import */ var _element_newElement__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../element/newElement */ "../../element/newElement.ts");\n/* harmony import */ var _LibraryMenuControlButtons__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./LibraryMenuControlButtons */ "../../components/LibraryMenuControlButtons.tsx");\n/* harmony import */ var _LibraryMenuHeaderContent__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./LibraryMenuHeaderContent */ "../../components/LibraryMenuHeaderContent.tsx");\n/* harmony import */ var _LibraryMenuSection__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./LibraryMenuSection */ "../../components/LibraryMenuSection.tsx");\n/* harmony import */ var _hooks_useScrollPosition__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../hooks/useScrollPosition */ "../../hooks/useScrollPosition.ts");\n/* harmony import */ var _hooks_useLibraryItemSvg__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../hooks/useLibraryItemSvg */ "../../hooks/useLibraryItemSvg.ts");\n/* harmony import */ var _LibraryMenuItems_scss__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./LibraryMenuItems.scss */ "../../components/LibraryMenuItems.scss");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n // using an odd number of items per batch so the rendering creates an irregular\n// pattern which looks more organic\n\nconst ITEMS_RENDERED_PER_BATCH = 17; // when render outputs cached we can render many more items per batch to\n// speed it up\n\nconst CACHED_ITEMS_RENDERED_PER_BATCH = 64;\nfunction LibraryMenuItems({\n  isLoading,\n  libraryItems,\n  onAddToLibrary,\n  onInsertLibraryItems,\n  pendingElements,\n  theme,\n  id,\n  libraryReturnUrl,\n  onSelectItems,\n  selectedItems\n}) {\n  const libraryContainerRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n  const scrollPosition = (0,_hooks_useScrollPosition__WEBPACK_IMPORTED_MODULE_12__.useScrollPosition)(libraryContainerRef); // This effect has to be called only on first render, therefore  `scrollPosition` isn\'t in the dependency array\n\n  (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {\n    var _a;\n\n    if (scrollPosition > 0) {\n      (_a = libraryContainerRef.current) === null || _a === void 0 ? void 0 : _a.scrollTo(0, scrollPosition);\n    }\n  }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n  const {\n    svgCache\n  } = (0,_hooks_useLibraryItemSvg__WEBPACK_IMPORTED_MODULE_13__.useLibraryCache)();\n  const unpublishedItems = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(() => libraryItems.filter(item => item.status !== "published"), [libraryItems]);\n  const publishedItems = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(() => libraryItems.filter(item => item.status === "published"), [libraryItems]);\n  const showBtn = !libraryItems.length && !pendingElements.length;\n  const isLibraryEmpty = !pendingElements.length && !unpublishedItems.length && !publishedItems.length;\n  const [lastSelectedItem, setLastSelectedItem] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n  const onItemSelectToggle = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)((id, event) => {\n    const shouldSelect = !selectedItems.includes(id);\n    const orderedItems = [...unpublishedItems, ...publishedItems];\n\n    if (shouldSelect) {\n      if (event.shiftKey && lastSelectedItem) {\n        const rangeStart = orderedItems.findIndex(item => item.id === lastSelectedItem);\n        const rangeEnd = orderedItems.findIndex(item => item.id === id);\n\n        if (rangeStart === -1 || rangeEnd === -1) {\n          onSelectItems([...selectedItems, id]);\n          return;\n        }\n\n        const selectedItemsMap = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.arrayToMap)(selectedItems);\n        const nextSelectedIds = orderedItems.reduce((acc, item, idx) => {\n          if (idx >= rangeStart && idx <= rangeEnd || selectedItemsMap.has(item.id)) {\n            acc.push(item.id);\n          }\n\n          return acc;\n        }, []);\n        onSelectItems(nextSelectedIds);\n      } else {\n        onSelectItems([...selectedItems, id]);\n      }\n\n      setLastSelectedItem(id);\n    } else {\n      setLastSelectedItem(null);\n      onSelectItems(selectedItems.filter(_id => _id !== id));\n    }\n  }, [lastSelectedItem, onSelectItems, publishedItems, selectedItems, unpublishedItems]);\n  const getInsertedElements = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(id => {\n    let targetElements;\n\n    if (selectedItems.includes(id)) {\n      targetElements = libraryItems.filter(item => selectedItems.includes(item.id));\n    } else {\n      targetElements = libraryItems.filter(item => item.id === id);\n    }\n\n    return targetElements.map(item => {\n      return Object.assign(Object.assign({}, item), {\n        // duplicate each library item before inserting on canvas to confine\n        // ids and bindings to each library item. See #6465\n        elements: (0,_element_newElement__WEBPACK_IMPORTED_MODULE_8__.duplicateElements)(item.elements, {\n          randomizeSeed: true\n        })\n      });\n    });\n  }, [libraryItems, selectedItems]);\n  const onItemDrag = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)((id, event) => {\n    event.dataTransfer.setData(_constants__WEBPACK_IMPORTED_MODULE_6__.MIME_TYPES.excalidrawlib, (0,_data_json__WEBPACK_IMPORTED_MODULE_2__.serializeLibraryAsJSON)(getInsertedElements(id)));\n  }, [getInsertedElements]);\n  const isItemSelected = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(id => {\n    if (!id) {\n      return false;\n    }\n\n    return selectedItems.includes(id);\n  }, [selectedItems]);\n  const onAddToLibraryClick = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(() => {\n    onAddToLibrary(pendingElements);\n  }, [pendingElements, onAddToLibrary]);\n  const onItemClick = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(id => {\n    if (id) {\n      onInsertLibraryItems(getInsertedElements(id));\n    }\n  }, [getInsertedElements, onInsertLibraryItems]);\n  const itemsRenderedPerBatch = svgCache.size >= libraryItems.length ? CACHED_ITEMS_RENDERED_PER_BATCH : ITEMS_RENDERED_PER_BATCH;\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n    className: "library-menu-items-container",\n    style: pendingElements.length || unpublishedItems.length || publishedItems.length ? {\n      justifyContent: "flex-start"\n    } : {\n      borderBottom: 0\n    }\n  }, {\n    children: [!isLibraryEmpty && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LibraryMenuHeaderContent__WEBPACK_IMPORTED_MODULE_10__.LibraryDropdownMenu, {\n      selectedItems: selectedItems,\n      onSelectItems: onSelectItems,\n      className: "library-menu-dropdown-container--in-heading"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Stack__WEBPACK_IMPORTED_MODULE_5__["default"].Col, Object.assign({\n      className: "library-menu-items-container__items",\n      align: "start",\n      gap: 1,\n      style: {\n        flex: publishedItems.length > 0 ? 1 : "0 1 auto",\n        marginBottom: 0\n      },\n      ref: libraryContainerRef\n    }, {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n        children: [!isLibraryEmpty && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n          className: "library-menu-items-container__header"\n        }, {\n          children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("labels.personalLib")\n        })), isLoading && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n          style: {\n            position: "absolute",\n            top: "var(--container-padding-y)",\n            right: "var(--container-padding-x)",\n            transform: "translateY(50%)"\n          }\n        }, {\n          children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Spinner__WEBPACK_IMPORTED_MODULE_7__["default"], {})\n        })), !pendingElements.length && !unpublishedItems.length ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n          className: "library-menu-items__no-items"\n        }, {\n          children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n            className: "library-menu-items__no-items__label"\n          }, {\n            children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("library.noItems")\n          })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n            className: "library-menu-items__no-items__hint"\n          }, {\n            children: publishedItems.length > 0 ? (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("library.hint_emptyPrivateLibrary") : (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("library.hint_emptyLibrary")\n          }))]\n        })) : (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_LibraryMenuSection__WEBPACK_IMPORTED_MODULE_11__.LibraryMenuSectionGrid, {\n          children: [pendingElements.length > 0 && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LibraryMenuSection__WEBPACK_IMPORTED_MODULE_11__.LibraryMenuSection, {\n            itemsRenderedPerBatch: itemsRenderedPerBatch,\n            items: [{\n              id: null,\n              elements: pendingElements\n            }],\n            onItemSelectToggle: onItemSelectToggle,\n            onItemDrag: onItemDrag,\n            onClick: onAddToLibraryClick,\n            isItemSelected: isItemSelected,\n            svgCache: svgCache\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LibraryMenuSection__WEBPACK_IMPORTED_MODULE_11__.LibraryMenuSection, {\n            itemsRenderedPerBatch: itemsRenderedPerBatch,\n            items: unpublishedItems,\n            onItemSelectToggle: onItemSelectToggle,\n            onItemDrag: onItemDrag,\n            onClick: onItemClick,\n            isItemSelected: isItemSelected,\n            svgCache: svgCache\n          })]\n        })]\n      }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n        children: [(publishedItems.length > 0 || pendingElements.length > 0 || unpublishedItems.length > 0) && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n          className: "library-menu-items-container__header library-menu-items-container__header--excal"\n        }, {\n          children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("labels.excalidrawLib")\n        })), publishedItems.length > 0 ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LibraryMenuSection__WEBPACK_IMPORTED_MODULE_11__.LibraryMenuSectionGrid, {\n          children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LibraryMenuSection__WEBPACK_IMPORTED_MODULE_11__.LibraryMenuSection, {\n            itemsRenderedPerBatch: itemsRenderedPerBatch,\n            items: publishedItems,\n            onItemSelectToggle: onItemSelectToggle,\n            onItemDrag: onItemDrag,\n            onClick: onItemClick,\n            isItemSelected: isItemSelected,\n            svgCache: svgCache\n          })\n        }) : unpublishedItems.length > 0 ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n          style: {\n            margin: "1rem 0",\n            display: "flex",\n            flexDirection: "column",\n            alignItems: "center",\n            justifyContent: "center",\n            width: "100%",\n            fontSize: ".9rem"\n          }\n        }, {\n          children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("library.noItems")\n        })) : null]\n      }), showBtn && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LibraryMenuControlButtons__WEBPACK_IMPORTED_MODULE_9__.LibraryMenuControlButtons, Object.assign({\n        style: {\n          padding: "16px 0",\n          width: "100%"\n        },\n        id: id,\n        libraryReturnUrl: libraryReturnUrl,\n        theme: theme\n      }, {\n        children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LibraryMenuHeaderContent__WEBPACK_IMPORTED_MODULE_10__.LibraryDropdownMenu, {\n          selectedItems: selectedItems,\n          onSelectItems: onSelectItems\n        })\n      }))]\n    }))]\n  }));\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 15852 characters]\n//# sourceURL=webpack-internal:///../../components/LibraryMenuItems.tsx\n');
              }
            ),
            /***/
            "../../components/LibraryMenuSection.tsx": (
              /*!***********************************************!*\
                !*** ../../components/LibraryMenuSection.tsx ***!
                \***********************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "LibraryMenuSection": () => (/* binding */ LibraryMenuSection),\n/* harmony export */   "LibraryMenuSectionGrid": () => (/* binding */ LibraryMenuSectionGrid)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _LibraryUnit__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./LibraryUnit */ "../../components/LibraryUnit.tsx");\n/* harmony import */ var _hooks_useTransition__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../hooks/useTransition */ "../../hooks/useTransition.ts");\n\n\n\n\nconst LibraryMenuSectionGrid = ({\n  children\n}) => {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: "library-menu-items-container__grid"\n  }, {\n    children: children\n  }));\n};\nconst LibraryMenuSection = (0,react__WEBPACK_IMPORTED_MODULE_1__.memo)(({\n  items,\n  onItemSelectToggle,\n  onItemDrag,\n  isItemSelected,\n  onClick,\n  svgCache,\n  itemsRenderedPerBatch\n}) => {\n  const [, startTransition] = (0,_hooks_useTransition__WEBPACK_IMPORTED_MODULE_3__.useTransition)();\n  const [index, setIndex] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(0);\n  (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {\n    if (index < items.length) {\n      startTransition(() => {\n        setIndex(index + itemsRenderedPerBatch);\n      });\n    }\n  }, [index, items.length, startTransition, itemsRenderedPerBatch]);\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n    children: items.map((item, i) => {\n      var _a;\n\n      return i < index ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LibraryUnit__WEBPACK_IMPORTED_MODULE_2__.LibraryUnit, {\n        elements: item === null || item === void 0 ? void 0 : item.elements,\n        isPending: !(item === null || item === void 0 ? void 0 : item.id) && !!(item === null || item === void 0 ? void 0 : item.elements),\n        onClick: onClick,\n        svgCache: svgCache,\n        id: item === null || item === void 0 ? void 0 : item.id,\n        selected: isItemSelected(item.id),\n        onToggle: onItemSelectToggle,\n        onDrag: onItemDrag\n      }, (_a = item === null || item === void 0 ? void 0 : item.id) !== null && _a !== void 0 ? _a : i) : (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LibraryUnit__WEBPACK_IMPORTED_MODULE_2__.EmptyLibraryUnit, {}, i);\n    })\n  });\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9MaWJyYXJ5TWVudVNlY3Rpb24udHN4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBdUU7QUFDZDtBQUNLO0FBQ1A7QUFDaEQ7QUFDUDtBQUNBLENBQUM7QUFDRCxTQUFTLHNEQUFJO0FBQ2I7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDTywyQkFBMkIsMkNBQUk7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsOEJBQThCLG1FQUFhO0FBQzNDLDRCQUE0QiwrQ0FBUTtBQUNwQyxFQUFFLGdEQUFTO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRztBQUNILFNBQVMsc0RBQUksQ0FBQyx1REFBUztBQUN2QjtBQUNBOztBQUVBLHlCQUF5QixzREFBSSxDQUFDLHFEQUFXO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLG1HQUFtRyxzREFBSSxDQUFDLDBEQUFnQixJQUFJO0FBQ25JLEtBQUs7QUFDTCxHQUFHO0FBQ0gsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL0xpYnJhcnlNZW51U2VjdGlvbi50c3g/NDgyNCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCwgRnJhZ21lbnQgYXMgX0ZyYWdtZW50IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgUmVhY3QsIHsgbWVtbywgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgRW1wdHlMaWJyYXJ5VW5pdCwgTGlicmFyeVVuaXQgfSBmcm9tIFwiLi9MaWJyYXJ5VW5pdFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNpdGlvbiB9IGZyb20gXCIuLi9ob29rcy91c2VUcmFuc2l0aW9uXCI7XG5leHBvcnQgY29uc3QgTGlicmFyeU1lbnVTZWN0aW9uR3JpZCA9ICh7XG4gIGNoaWxkcmVuXG59KSA9PiB7XG4gIHJldHVybiBfanN4KFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oe1xuICAgIGNsYXNzTmFtZTogXCJsaWJyYXJ5LW1lbnUtaXRlbXMtY29udGFpbmVyX19ncmlkXCJcbiAgfSwge1xuICAgIGNoaWxkcmVuOiBjaGlsZHJlblxuICB9KSk7XG59O1xuZXhwb3J0IGNvbnN0IExpYnJhcnlNZW51U2VjdGlvbiA9IG1lbW8oKHtcbiAgaXRlbXMsXG4gIG9uSXRlbVNlbGVjdFRvZ2dsZSxcbiAgb25JdGVtRHJhZyxcbiAgaXNJdGVtU2VsZWN0ZWQsXG4gIG9uQ2xpY2ssXG4gIHN2Z0NhY2hlLFxuICBpdGVtc1JlbmRlcmVkUGVyQmF0Y2hcbn0pID0+IHtcbiAgY29uc3QgWywgc3RhcnRUcmFuc2l0aW9uXSA9IHVzZVRyYW5zaXRpb24oKTtcbiAgY29uc3QgW2luZGV4LCBzZXRJbmRleF0gPSB1c2VTdGF0ZSgwKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaW5kZXggPCBpdGVtcy5sZW5ndGgpIHtcbiAgICAgIHN0YXJ0VHJhbnNpdGlvbigoKSA9PiB7XG4gICAgICAgIHNldEluZGV4KGluZGV4ICsgaXRlbXNSZW5kZXJlZFBlckJhdGNoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwgW2luZGV4LCBpdGVtcy5sZW5ndGgsIHN0YXJ0VHJhbnNpdGlvbiwgaXRlbXNSZW5kZXJlZFBlckJhdGNoXSk7XG4gIHJldHVybiBfanN4KF9GcmFnbWVudCwge1xuICAgIGNoaWxkcmVuOiBpdGVtcy5tYXAoKGl0ZW0sIGkpID0+IHtcbiAgICAgIHZhciBfYTtcblxuICAgICAgcmV0dXJuIGkgPCBpbmRleCA/IF9qc3goTGlicmFyeVVuaXQsIHtcbiAgICAgICAgZWxlbWVudHM6IGl0ZW0gPT09IG51bGwgfHwgaXRlbSA9PT0gdm9pZCAwID8gdm9pZCAwIDogaXRlbS5lbGVtZW50cyxcbiAgICAgICAgaXNQZW5kaW5nOiAhKGl0ZW0gPT09IG51bGwgfHwgaXRlbSA9PT0gdm9pZCAwID8gdm9pZCAwIDogaXRlbS5pZCkgJiYgISEoaXRlbSA9PT0gbnVsbCB8fCBpdGVtID09PSB2b2lkIDAgPyB2b2lkIDAgOiBpdGVtLmVsZW1lbnRzKSxcbiAgICAgICAgb25DbGljazogb25DbGljayxcbiAgICAgICAgc3ZnQ2FjaGU6IHN2Z0NhY2hlLFxuICAgICAgICBpZDogaXRlbSA9PT0gbnVsbCB8fCBpdGVtID09PSB2b2lkIDAgPyB2b2lkIDAgOiBpdGVtLmlkLFxuICAgICAgICBzZWxlY3RlZDogaXNJdGVtU2VsZWN0ZWQoaXRlbS5pZCksXG4gICAgICAgIG9uVG9nZ2xlOiBvbkl0ZW1TZWxlY3RUb2dnbGUsXG4gICAgICAgIG9uRHJhZzogb25JdGVtRHJhZ1xuICAgICAgfSwgKF9hID0gaXRlbSA9PT0gbnVsbCB8fCBpdGVtID09PSB2b2lkIDAgPyB2b2lkIDAgOiBpdGVtLmlkKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBpKSA6IF9qc3goRW1wdHlMaWJyYXJ5VW5pdCwge30sIGkpO1xuICAgIH0pXG4gIH0pO1xufSk7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/LibraryMenuSection.tsx\n');
              }
            ),
            /***/
            "../../components/LibraryUnit.tsx": (
              /*!****************************************!*\
                !*** ../../components/LibraryUnit.tsx ***!
                \****************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "EmptyLibraryUnit": () => (/* binding */ EmptyLibraryUnit),\n/* harmony export */   "LibraryUnit": () => (/* binding */ LibraryUnit)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _components_App__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../components/App */ "../../components/App.tsx");\n/* harmony import */ var _LibraryUnit_scss__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./LibraryUnit.scss */ "../../components/LibraryUnit.scss");\n/* harmony import */ var _CheckboxItem__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./CheckboxItem */ "../../components/CheckboxItem.tsx");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./icons */ "../../components/icons.tsx");\n/* harmony import */ var _hooks_useLibraryItemSvg__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../hooks/useLibraryItemSvg */ "../../hooks/useLibraryItemSvg.ts");\n\n\n\n\n\n\n\n\nconst LibraryUnit = (0,react__WEBPACK_IMPORTED_MODULE_2__.memo)(({\n  id,\n  elements,\n  isPending,\n  onClick,\n  selected,\n  onToggle,\n  onDrag,\n  svgCache\n}) => {\n  const ref = (0,react__WEBPACK_IMPORTED_MODULE_2__.useRef)(null);\n  const svg = (0,_hooks_useLibraryItemSvg__WEBPACK_IMPORTED_MODULE_7__.useLibraryItemSvg)(id, elements, svgCache);\n  (0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(() => {\n    const node = ref.current;\n\n    if (!node) {\n      return;\n    }\n\n    if (svg) {\n      node.innerHTML = svg.outerHTML;\n    }\n\n    return () => {\n      node.innerHTML = "";\n    };\n  }, [svg]);\n  const [isHovered, setIsHovered] = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(false);\n  const isMobile = (0,_components_App__WEBPACK_IMPORTED_MODULE_3__.useDevice)().editor.isMobile;\n\n  const adder = isPending && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: "library-unit__adder"\n  }, {\n    children: _icons__WEBPACK_IMPORTED_MODULE_6__.PlusIcon\n  }));\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__["default"])("library-unit", {\n      "library-unit__active": elements,\n      "library-unit--hover": elements && isHovered,\n      "library-unit--selected": selected,\n      "library-unit--skeleton": !svg\n    }),\n    onMouseEnter: () => setIsHovered(true),\n    onMouseLeave: () => setIsHovered(false)\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__["default"])("library-unit__dragger", {\n        "library-unit__pulse": !!isPending\n      }),\n      ref: ref,\n      draggable: !!elements,\n      onClick: !!elements || !!isPending ? event => {\n        if (id && event.shiftKey) {\n          onToggle(id, event);\n        } else {\n          onClick(id);\n        }\n      } : undefined,\n      onDragStart: event => {\n        if (!id) {\n          event.preventDefault();\n          return;\n        }\n\n        setIsHovered(false);\n        onDrag(id, event);\n      }\n    }), adder, id && elements && (isHovered || isMobile || selected) && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_CheckboxItem__WEBPACK_IMPORTED_MODULE_5__.CheckboxItem, {\n      checked: selected,\n      onChange: (checked, event) => onToggle(id, event),\n      className: "library-unit__checkbox"\n    })]\n  }));\n});\nconst EmptyLibraryUnit = () => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n  className: "library-unit library-unit--skeleton"\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4368 characters]\n//# sourceURL=webpack-internal:///../../components/LibraryUnit.tsx\n');
              }
            ),
            /***/
            "../../components/LoadingMessage.tsx": (
              /*!*******************************************!*\
                !*** ../../components/LoadingMessage.tsx ***!
                \*******************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "LoadingMessage": () => (/* binding */ LoadingMessage)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _Spinner__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Spinner */ "../../components/Spinner.tsx");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n\n\n\n\n\n\nconst LoadingMessage = ({\n  delay,\n  theme\n}) => {\n  const [isWaiting, setIsWaiting] = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(!!delay);\n  (0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(() => {\n    if (!delay) {\n      return;\n    }\n\n    const timer = setTimeout(() => {\n      setIsWaiting(false);\n    }, delay);\n    return () => clearTimeout(timer);\n  }, [delay]);\n\n  if (isWaiting) {\n    return null;\n  }\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_4__["default"])("LoadingMessage", {\n      "LoadingMessage--dark": theme === _constants__WEBPACK_IMPORTED_MODULE_5__.THEME.DARK\n    })\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Spinner__WEBPACK_IMPORTED_MODULE_3__["default"], {})\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: "LoadingMessage-text"\n    }, {\n      children: (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("labels.loadingScene")\n    }))]\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9Mb2FkaW5nTWVzc2FnZS50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBK0Q7QUFDbkM7QUFDZ0I7QUFDWjtBQUNSO0FBQ2E7QUFDOUI7QUFDUDtBQUNBO0FBQ0EsQ0FBQztBQUNELG9DQUFvQywrQ0FBUTtBQUM1QyxFQUFFLGdEQUFTO0FBQ1g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTs7QUFFQSxTQUFTLHVEQUFLO0FBQ2QsZUFBZSxnREFBSTtBQUNuQix3Q0FBd0Msa0RBQVU7QUFDbEQsS0FBSztBQUNMLEdBQUc7QUFDSCxlQUFlLHNEQUFJO0FBQ25CLGdCQUFnQixzREFBSSxDQUFDLGdEQUFPLElBQUk7QUFDaEMsS0FBSyxHQUFHLHNEQUFJO0FBQ1o7QUFDQSxLQUFLO0FBQ0wsZ0JBQWdCLHdDQUFDO0FBQ2pCLEtBQUs7QUFDTCxHQUFHO0FBQ0giLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9Mb2FkaW5nTWVzc2FnZS50c3g/MzhmMSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgdCB9IGZyb20gXCIuLi9pMThuXCI7XG5pbXBvcnQgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgU3Bpbm5lciBmcm9tIFwiLi9TcGlubmVyXCI7XG5pbXBvcnQgY2xzeCBmcm9tIFwiY2xzeFwiO1xuaW1wb3J0IHsgVEhFTUUgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5leHBvcnQgY29uc3QgTG9hZGluZ01lc3NhZ2UgPSAoe1xuICBkZWxheSxcbiAgdGhlbWVcbn0pID0+IHtcbiAgY29uc3QgW2lzV2FpdGluZywgc2V0SXNXYWl0aW5nXSA9IHVzZVN0YXRlKCEhZGVsYXkpO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghZGVsYXkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgc2V0SXNXYWl0aW5nKGZhbHNlKTtcbiAgICB9LCBkZWxheSk7XG4gICAgcmV0dXJuICgpID0+IGNsZWFyVGltZW91dCh0aW1lcik7XG4gIH0sIFtkZWxheV0pO1xuXG4gIGlmIChpc1dhaXRpbmcpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiBfanN4cyhcImRpdlwiLCBPYmplY3QuYXNzaWduKHtcbiAgICBjbGFzc05hbWU6IGNsc3goXCJMb2FkaW5nTWVzc2FnZVwiLCB7XG4gICAgICBcIkxvYWRpbmdNZXNzYWdlLS1kYXJrXCI6IHRoZW1lID09PSBUSEVNRS5EQVJLXG4gICAgfSlcbiAgfSwge1xuICAgIGNoaWxkcmVuOiBbX2pzeChcImRpdlwiLCB7XG4gICAgICBjaGlsZHJlbjogX2pzeChTcGlubmVyLCB7fSlcbiAgICB9KSwgX2pzeChcImRpdlwiLCBPYmplY3QuYXNzaWduKHtcbiAgICAgIGNsYXNzTmFtZTogXCJMb2FkaW5nTWVzc2FnZS10ZXh0XCJcbiAgICB9LCB7XG4gICAgICBjaGlsZHJlbjogdChcImxhYmVscy5sb2FkaW5nU2NlbmVcIilcbiAgICB9KSldXG4gIH0pKTtcbn07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/LoadingMessage.tsx\n');
              }
            ),
            /***/
            "../../components/LockButton.tsx": (
              /*!***************************************!*\
                !*** ../../components/LockButton.tsx ***!
                \***************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "LockButton": () => (/* binding */ LockButton)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var _ToolIcon_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ToolIcon.scss */ "../../components/ToolIcon.scss");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./icons */ "../../components/icons.tsx");\n\n\n\n\nconst DEFAULT_SIZE = "medium";\nconst ICONS = {\n  CHECKED: _icons__WEBPACK_IMPORTED_MODULE_3__.LockedIcon,\n  UNCHECKED: _icons__WEBPACK_IMPORTED_MODULE_3__.UnlockedIcon\n};\nconst LockButton = props => {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("label", Object.assign({\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_2__["default"])("ToolIcon ToolIcon__lock", `ToolIcon_size_${DEFAULT_SIZE}`, {\n      "is-mobile": props.isMobile\n    }),\n    title: `${props.title} \u2014 Q`\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input", {\n      className: "ToolIcon_type_checkbox",\n      type: "checkbox",\n      name: props.name,\n      onChange: props.onChange,\n      checked: props.checked,\n      "aria-label": props.title,\n      "data-testid": "toolbar-lock"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: "ToolIcon__icon"\n    }, {\n      children: props.checked ? ICONS.CHECKED : ICONS.UNCHECKED\n    }))]\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9Mb2NrQnV0dG9uLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUErRDtBQUN0QztBQUNEO0FBQzJCO0FBQ25EO0FBQ0E7QUFDQSxXQUFXLDhDQUFVO0FBQ3JCLGFBQWEsZ0RBQVk7QUFDekI7QUFDTztBQUNQLFNBQVMsdURBQUs7QUFDZCxlQUFlLGdEQUFJLDZDQUE2QyxhQUFhO0FBQzdFO0FBQ0EsS0FBSztBQUNMLGNBQWMsYUFBYTtBQUMzQixHQUFHO0FBQ0gsZUFBZSxzREFBSTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUssR0FBRyxzREFBSTtBQUNaO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSCIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL0xvY2tCdXR0b24udHN4PzBjZTAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCBcIi4vVG9vbEljb24uc2Nzc1wiO1xuaW1wb3J0IGNsc3ggZnJvbSBcImNsc3hcIjtcbmltcG9ydCB7IExvY2tlZEljb24sIFVubG9ja2VkSWNvbiB9IGZyb20gXCIuL2ljb25zXCI7XG5jb25zdCBERUZBVUxUX1NJWkUgPSBcIm1lZGl1bVwiO1xuY29uc3QgSUNPTlMgPSB7XG4gIENIRUNLRUQ6IExvY2tlZEljb24sXG4gIFVOQ0hFQ0tFRDogVW5sb2NrZWRJY29uXG59O1xuZXhwb3J0IGNvbnN0IExvY2tCdXR0b24gPSBwcm9wcyA9PiB7XG4gIHJldHVybiBfanN4cyhcImxhYmVsXCIsIE9iamVjdC5hc3NpZ24oe1xuICAgIGNsYXNzTmFtZTogY2xzeChcIlRvb2xJY29uIFRvb2xJY29uX19sb2NrXCIsIGBUb29sSWNvbl9zaXplXyR7REVGQVVMVF9TSVpFfWAsIHtcbiAgICAgIFwiaXMtbW9iaWxlXCI6IHByb3BzLmlzTW9iaWxlXG4gICAgfSksXG4gICAgdGl0bGU6IGAke3Byb3BzLnRpdGxlfSDigJQgUWBcbiAgfSwge1xuICAgIGNoaWxkcmVuOiBbX2pzeChcImlucHV0XCIsIHtcbiAgICAgIGNsYXNzTmFtZTogXCJUb29sSWNvbl90eXBlX2NoZWNrYm94XCIsXG4gICAgICB0eXBlOiBcImNoZWNrYm94XCIsXG4gICAgICBuYW1lOiBwcm9wcy5uYW1lLFxuICAgICAgb25DaGFuZ2U6IHByb3BzLm9uQ2hhbmdlLFxuICAgICAgY2hlY2tlZDogcHJvcHMuY2hlY2tlZCxcbiAgICAgIFwiYXJpYS1sYWJlbFwiOiBwcm9wcy50aXRsZSxcbiAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJ0b29sYmFyLWxvY2tcIlxuICAgIH0pLCBfanN4KFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oe1xuICAgICAgY2xhc3NOYW1lOiBcIlRvb2xJY29uX19pY29uXCJcbiAgICB9LCB7XG4gICAgICBjaGlsZHJlbjogcHJvcHMuY2hlY2tlZCA/IElDT05TLkNIRUNLRUQgOiBJQ09OUy5VTkNIRUNLRURcbiAgICB9KSldXG4gIH0pKTtcbn07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/LockButton.tsx\n');
              }
            ),
            /***/
            "../../components/MermaidToExcalidraw.tsx": (
              /*!************************************************!*\
                !*** ../../components/MermaidToExcalidraw.tsx ***!
                \************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./App */ "../../components/App.tsx");
/* harmony import */ var _Button__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Button */ "../../components/Button.tsx");
/* harmony import */ var _Dialog__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Dialog */ "../../components/Dialog.tsx");
/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../constants */ "../../constants.ts");
/* harmony import */ var _packages_excalidraw_index__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../packages/excalidraw/index */ "./index.tsx");
/* harmony import */ var _data_blob__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../data/blob */ "../../data/blob.ts");
/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./icons */ "../../components/icons.tsx");
/* harmony import */ var _Spinner__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./Spinner */ "../../components/Spinner.tsx");
/* harmony import */ var _MermaidToExcalidraw_scss__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./MermaidToExcalidraw.scss */ "../../components/MermaidToExcalidraw.scss");
/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");
/* harmony import */ var _Trans__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./Trans */ "../../components/Trans.tsx");
var __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {
  function adopt(value) {
    return value instanceof P ? value : new P(function (resolve) {
      resolve(value);
    });
  }

  return new (P || (P = Promise))(function (resolve, reject) {
    function fulfilled(value) {
      try {
        step(generator.next(value));
      } catch (e) {
        reject(e);
      }
    }

    function rejected(value) {
      try {
        step(generator["throw"](value));
      } catch (e) {
        reject(e);
      }
    }

    function step(result) {
      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
    }

    step((generator = generator.apply(thisArg, _arguments || [])).next());
  });
};














const LOCAL_STORAGE_KEY_MERMAID_TO_EXCALIDRAW = "mermaid-to-excalidraw";
const MERMAID_EXAMPLE = "flowchart TD\\n A[Christmas] -->|Get money| B(Go shopping)\\n B --> C{Let me think}\\n C -->|One| D[Laptop]\\n C -->|Two| E[iPhone]\\n C -->|Three| F[Car]";

const saveMermaidDataToStorage = data => {
  try {
    localStorage.setItem(LOCAL_STORAGE_KEY_MERMAID_TO_EXCALIDRAW, data);
  } catch (error) {
    // Unable to access window.localStorage
    console.error(error);
  }
};

const importMermaidDataFromStorage = () => {
  try {
    const data = localStorage.getItem(LOCAL_STORAGE_KEY_MERMAID_TO_EXCALIDRAW);

    if (data) {
      return data;
    }
  } catch (error) {
    // Unable to access localStorage
    console.error(error);
  }

  return null;
};

const ErrorComp = ({
  error
}) => {
  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({
    "data-testid": "mermaid-error",
    className: "mermaid-error"
  }, {
    children: ["Error! ", (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("p", {
      children: error
    })]
  }));
};

const MermaidToExcalidraw = () => {
  const [mermaidToExcalidrawLib, setMermaidToExcalidrawLib] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({
    loaded: false,
    api: null
  });
  const [text, setText] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)("");
  const deferredText = (0,react__WEBPACK_IMPORTED_MODULE_1__.useDeferredValue)(text.trim());
  const [error, setError] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);
  const canvasRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);
  const data = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)({
    elements: [],
    files: null
  });
  const app = (0,_App__WEBPACK_IMPORTED_MODULE_2__.useApp)();

  const resetPreview = () => {
    const canvasNode = canvasRef.current;

    if (!canvasNode) {
      return;
    }

    const parent = canvasNode.parentElement;

    if (!parent) {
      return;
    }

    parent.style.background = "";
    setError(null);
    canvasNode.replaceChildren();
  };

  (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {
    const loadMermaidToExcalidrawLib = () => __awaiter(void 0, void 0, void 0, function* () {
      const api = yield __webpack_require__.e(/*! import() | mermaid-to-excalidraw */ "vendor").then(__webpack_require__.bind(__webpack_require__, /*! @excalidraw/mermaid-to-excalidraw */ "../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/index.js"));
      setMermaidToExcalidrawLib({
        loaded: true,
        api
      });
    });

    loadMermaidToExcalidrawLib();
  }, []);
  (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {
    const data = importMermaidDataFromStorage() || MERMAID_EXAMPLE;
    setText(data);
  }, []);
  (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {
    const renderExcalidrawPreview = () => __awaiter(void 0, void 0, void 0, function* () {
      const canvasNode = canvasRef.current;
      const parent = canvasNode === null || canvasNode === void 0 ? void 0 : canvasNode.parentElement;

      if (!mermaidToExcalidrawLib.loaded || !canvasNode || !parent || !mermaidToExcalidrawLib.api) {
        return;
      }

      if (!deferredText) {
        resetPreview();
        return;
      }

      try {
        const {
          elements,
          files
        } = yield mermaidToExcalidrawLib.api.parseMermaidToExcalidraw(deferredText, {
          fontSize: _constants__WEBPACK_IMPORTED_MODULE_5__.DEFAULT_FONT_SIZE
        });
        setError(null);
        data.current = {
          elements: (0,_packages_excalidraw_index__WEBPACK_IMPORTED_MODULE_6__.convertToExcalidrawElements)(elements, {
            regenerateIds: true
          }),
          files
        };
        const canvas = yield (0,_packages_excalidraw_index__WEBPACK_IMPORTED_MODULE_6__.exportToCanvas)({
          elements: data.current.elements,
          files: data.current.files,
          exportPadding: _constants__WEBPACK_IMPORTED_MODULE_5__.DEFAULT_EXPORT_PADDING,
          maxWidthOrHeight: Math.max(parent.offsetWidth, parent.offsetHeight) * window.devicePixelRatio
        }); // if converting to blob fails, there's some problem that will
        // likely prevent preview and export (e.g. canvas too big)

        yield (0,_data_blob__WEBPACK_IMPORTED_MODULE_7__.canvasToBlob)(canvas);
        parent.style.background = "var(--default-bg-color)";
        canvasNode.replaceChildren(canvas);
      } catch (e) {
        parent.style.background = "var(--default-bg-color)";

        if (deferredText) {
          setError(e.message);
        }
      }
    });

    renderExcalidrawPreview();
  }, [deferredText, mermaidToExcalidrawLib]);

  const onClose = () => {
    app.setOpenDialog(null);
    saveMermaidDataToStorage(text);
  };

  const onSelect = () => {
    const {
      elements: newElements,
      files
    } = data.current;
    app.addElementsFromPasteOrLibrary({
      elements: newElements,
      files,
      position: "center",
      fitToContent: true
    });
    onClose();
  };

  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Dialog__WEBPACK_IMPORTED_MODULE_4__.Dialog, Object.assign({
    className: "dialog-mermaid",
    onCloseRequest: onClose,
    size: 1200,
    title: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {
      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("p", Object.assign({
        className: "dialog-mermaid-title"
      }, {
        children: (0,_i18n__WEBPACK_IMPORTED_MODULE_11__.t)("mermaid.title")
      })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("span", Object.assign({
        className: "dialog-mermaid-desc"
      }, {
        children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Trans__WEBPACK_IMPORTED_MODULE_12__["default"], {
          i18nKey: "mermaid.description",
          flowchartLink: el => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("a", Object.assign({
            href: "https://mermaid.js.org/syntax/flowchart.html"
          }, {
            children: el
          })),
          sequenceLink: el => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("a", Object.assign({
            href: "https://mermaid.js.org/syntax/sequenceDiagram.html"
          }, {
            children: el
          }))
        }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("br", {})]
      }))]
    })
  }, {
    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({
      className: "dialog-mermaid-body"
    }, {
      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({
        className: "dialog-mermaid-panels"
      }, {
        children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({
          className: "dialog-mermaid-panels-text"
        }, {
          children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("label", {
            children: (0,_i18n__WEBPACK_IMPORTED_MODULE_11__.t)("mermaid.syntax")
          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("textarea", {
            onChange: event => setText(event.target.value),
            value: text
          })]
        })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({
          className: "dialog-mermaid-panels-preview"
        }, {
          children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("label", {
            children: (0,_i18n__WEBPACK_IMPORTED_MODULE_11__.t)("mermaid.preview")
          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({
            className: "dialog-mermaid-panels-preview-wrapper"
          }, {
            children: [error && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(ErrorComp, {
              error: error
            }), mermaidToExcalidrawLib.loaded ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {
              ref: canvasRef,
              style: {
                opacity: error ? "0.15" : 1
              },
              className: "dialog-mermaid-panels-preview-canvas-container"
            }) : (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Spinner__WEBPACK_IMPORTED_MODULE_9__["default"], {
              size: "2rem"
            })]
          }))]
        }))]
      })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({
        className: "dialog-mermaid-buttons"
      }, {
        children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Button__WEBPACK_IMPORTED_MODULE_3__.Button, Object.assign({
          className: "dialog-mermaid-insert",
          onSelect: onSelect
        }, {
          children: [(0,_i18n__WEBPACK_IMPORTED_MODULE_11__.t)("mermaid.button"), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", {
            children: _icons__WEBPACK_IMPORTED_MODULE_8__.ArrowRightIcon
          })]
        }))
      }))]
    }))
  }));
};

/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (MermaidToExcalidraw);//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 14776 characters]
//# sourceURL=webpack-internal:///../../components/MermaidToExcalidraw.tsx
`);
              }
            ),
            /***/
            "../../components/MobileMenu.tsx": (
              /*!***************************************!*\
                !*** ../../components/MobileMenu.tsx ***!
                \***************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "MobileMenu": () => (/* binding */ MobileMenu)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _Stack__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Stack */ "../../components/Stack.tsx");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _FixedSideContainer__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./FixedSideContainer */ "../../components/FixedSideContainer.tsx");\n/* harmony import */ var _Island__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Island */ "../../components/Island.tsx");\n/* harmony import */ var _HintViewer__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./HintViewer */ "../../components/HintViewer.tsx");\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../scene */ "../../scene/index.ts");\n/* harmony import */ var _Actions__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./Actions */ "../../components/Actions.tsx");\n/* harmony import */ var _Section__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./Section */ "../../components/Section.tsx");\n/* harmony import */ var _scene_scrollbars__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../scene/scrollbars */ "../../scene/scrollbars.ts");\n/* harmony import */ var _LockButton__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./LockButton */ "../../components/LockButton.tsx");\n/* harmony import */ var _PenModeButton__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./PenModeButton */ "../../components/PenModeButton.tsx");\n/* harmony import */ var _Stats__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./Stats */ "../../components/Stats.tsx");\n/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../actions */ "../../actions/index.ts");\n/* harmony import */ var _HandButton__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./HandButton */ "../../components/HandButton.tsx");\n/* harmony import */ var _appState__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../appState */ "../../appState.ts");\n/* harmony import */ var _context_tunnels__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../context/tunnels */ "../../context/tunnels.ts");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst MobileMenu = ({\n  appState,\n  elements,\n  actionManager,\n  setAppState,\n  onLockToggle,\n  onHandToolToggle,\n  onPenModeToggle,\n  renderTopRightUI,\n  renderCustomStats,\n  renderSidebars,\n  device,\n  renderWelcomeScreen,\n  UIOptions,\n  app\n}) => {\n  const {\n    WelcomeScreenCenterTunnel,\n    MainMenuTunnel,\n    DefaultSidebarTriggerTunnel\n  } = (0,_context_tunnels__WEBPACK_IMPORTED_MODULE_18__.useTunnels)();\n\n  const renderToolbar = () => {\n    return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_FixedSideContainer__WEBPACK_IMPORTED_MODULE_5__.FixedSideContainer, Object.assign({\n      side: "top",\n      className: "App-top-bar"\n    }, {\n      children: [renderWelcomeScreen && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(WelcomeScreenCenterTunnel.Out, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Section__WEBPACK_IMPORTED_MODULE_10__.Section, Object.assign({\n        heading: "shapes"\n      }, {\n        children: heading => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Stack__WEBPACK_IMPORTED_MODULE_3__["default"].Col, Object.assign({\n          gap: 4,\n          align: "center"\n        }, {\n          children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Stack__WEBPACK_IMPORTED_MODULE_3__["default"].Row, Object.assign({\n            gap: 1,\n            className: "App-toolbar-container"\n          }, {\n            children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Island__WEBPACK_IMPORTED_MODULE_6__.Island, Object.assign({\n              padding: 1,\n              className: "App-toolbar App-toolbar--mobile"\n            }, {\n              children: [heading, (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Stack__WEBPACK_IMPORTED_MODULE_3__["default"].Row, Object.assign({\n                gap: 1\n              }, {\n                children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Actions__WEBPACK_IMPORTED_MODULE_9__.ShapesSwitcher, {\n                  appState: appState,\n                  activeTool: appState.activeTool,\n                  UIOptions: UIOptions,\n                  app: app\n                })\n              }))]\n            })), renderTopRightUI && renderTopRightUI(true, appState), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n              className: "mobile-misc-tools-container"\n            }, {\n              children: [!appState.viewModeEnabled && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(DefaultSidebarTriggerTunnel.Out, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_PenModeButton__WEBPACK_IMPORTED_MODULE_13__.PenModeButton, {\n                checked: appState.penMode,\n                onChange: () => onPenModeToggle(null),\n                title: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("toolBar.penMode"),\n                isMobile: true,\n                penDetected: appState.penDetected\n              }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LockButton__WEBPACK_IMPORTED_MODULE_12__.LockButton, {\n                checked: appState.activeTool.locked,\n                onChange: onLockToggle,\n                title: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("toolBar.lock"),\n                isMobile: true\n              }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_HandButton__WEBPACK_IMPORTED_MODULE_16__.HandButton, {\n                checked: (0,_appState__WEBPACK_IMPORTED_MODULE_17__.isHandToolActive)(appState),\n                onChange: () => onHandToolToggle(),\n                title: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("toolBar.hand"),\n                isMobile: true\n              })]\n            }))]\n          }))\n        }))\n      })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_HintViewer__WEBPACK_IMPORTED_MODULE_7__.HintViewer, {\n        appState: appState,\n        isMobile: true,\n        device: device,\n        app: app\n      })]\n    }));\n  };\n\n  const renderAppToolbar = () => {\n    if (appState.viewModeEnabled) {\n      return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n        className: "App-toolbar-content"\n      }, {\n        children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(MainMenuTunnel.Out, {})\n      }));\n    }\n\n    return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n      className: "App-toolbar-content"\n    }, {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(MainMenuTunnel.Out, {}), actionManager.renderAction("toggleEditMenu"), actionManager.renderAction("undo"), actionManager.renderAction("redo"), actionManager.renderAction(appState.multiElement ? "finalize" : "duplicateSelection"), actionManager.renderAction("deleteSelectedElements")]\n    }));\n  };\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n    children: [renderSidebars(), !appState.viewModeEnabled && renderToolbar(), !appState.openMenu && appState.showStats && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Stats__WEBPACK_IMPORTED_MODULE_14__.Stats, {\n      appState: appState,\n      setAppState: setAppState,\n      elements: elements,\n      onClose: () => {\n        actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_15__.actionToggleStats);\n      },\n      renderCustomStats: renderCustomStats\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: "App-bottom-bar",\n      style: {\n        marginBottom: _scene_scrollbars__WEBPACK_IMPORTED_MODULE_11__.SCROLLBAR_WIDTH + _scene_scrollbars__WEBPACK_IMPORTED_MODULE_11__.SCROLLBAR_MARGIN * 2,\n        marginLeft: _scene_scrollbars__WEBPACK_IMPORTED_MODULE_11__.SCROLLBAR_WIDTH + _scene_scrollbars__WEBPACK_IMPORTED_MODULE_11__.SCROLLBAR_MARGIN * 2,\n        marginRight: _scene_scrollbars__WEBPACK_IMPORTED_MODULE_11__.SCROLLBAR_WIDTH + _scene_scrollbars__WEBPACK_IMPORTED_MODULE_11__.SCROLLBAR_MARGIN * 2\n      }\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Island__WEBPACK_IMPORTED_MODULE_6__.Island, Object.assign({\n        padding: 0\n      }, {\n        children: [appState.openMenu === "shape" && !appState.viewModeEnabled && (0,_element__WEBPACK_IMPORTED_MODULE_4__.showSelectedShapeActions)(appState, elements) ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Section__WEBPACK_IMPORTED_MODULE_10__.Section, Object.assign({\n          className: "App-mobile-menu",\n          heading: "selectedShapeActions"\n        }, {\n          children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Actions__WEBPACK_IMPORTED_MODULE_9__.SelectedShapeActions, {\n            appState: appState,\n            elements: elements,\n            renderAction: actionManager.renderAction\n          })\n        })) : null, (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("footer", Object.assign({\n          className: "App-toolbar"\n        }, {\n          children: [renderAppToolbar(), appState.scrolledOutside && !appState.openMenu && !appState.openSidebar && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("button", Object.assign({\n            className: "scroll-back-to-content",\n            onClick: () => {\n              setAppState(appState => Object.assign({}, (0,_scene__WEBPACK_IMPORTED_MODULE_8__.calculateScrollCenter)(elements, appState)));\n            }\n          }, {\n            children: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("buttons.scrollBackToContent")\n          }))]\n        }))]\n      }))\n    }))]\n  });\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 10776 characters]\n//# sourceURL=webpack-internal:///../../components/MobileMenu.tsx\n');
              }
            ),
            /***/
            "../../components/Modal.tsx": (
              /*!**********************************!*\
                !*** ../../components/Modal.tsx ***!
                \**********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "Modal": () => (/* binding */ Modal)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var _Modal_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Modal.scss */ "../../components/Modal.scss");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-dom */ "react-dom");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _hooks_useCreatePortalContainer__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../hooks/useCreatePortalContainer */ "../../hooks/useCreatePortalContainer.ts");\n\n\n\n\n\n\n\nconst Modal = props => {\n  const {\n    closeOnClickOutside = true\n  } = props;\n  const modalRoot = (0,_hooks_useCreatePortalContainer__WEBPACK_IMPORTED_MODULE_6__.useCreatePortalContainer)({\n    className: "excalidraw-modal-container"\n  });\n\n  if (!modalRoot) {\n    return null;\n  }\n\n  const handleKeydown = event => {\n    if (event.key === _keys__WEBPACK_IMPORTED_MODULE_5__.KEYS.ESCAPE) {\n      event.nativeEvent.stopImmediatePropagation();\n      event.stopPropagation();\n      props.onCloseRequest();\n    }\n  };\n\n  return (0,react_dom__WEBPACK_IMPORTED_MODULE_3__.createPortal)((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_4__["default"])("Modal", props.className),\n    role: "dialog",\n    "aria-modal": "true",\n    onKeyDown: handleKeydown,\n    "aria-labelledby": props.labelledBy,\n    "data-prevent-outside-click": true\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n      className: "Modal__background",\n      onClick: closeOnClickOutside ? props.onCloseRequest : undefined\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: "Modal__content",\n      style: {\n        "--max-width": `${props.maxWidth}px`\n      },\n      tabIndex: 0\n    }, {\n      children: props.children\n    }))]\n  })), modalRoot);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9Nb2RhbC50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUErRDtBQUN6QztBQUNJO0FBQ2U7QUFDakI7QUFDTztBQUM4QztBQUN0RTtBQUNQO0FBQ0E7QUFDQSxJQUFJO0FBQ0osb0JBQW9CLHlGQUF3QjtBQUM1QztBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBOztBQUVBO0FBQ0Esc0JBQXNCLDhDQUFXO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsU0FBUyx1REFBWSxDQUFDLHVEQUFLO0FBQzNCLGVBQWUsZ0RBQUk7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCxlQUFlLHNEQUFJO0FBQ25CO0FBQ0E7QUFDQSxLQUFLLEdBQUcsc0RBQUk7QUFDWjtBQUNBO0FBQ0EsMEJBQTBCLGVBQWU7QUFDekMsT0FBTztBQUNQO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSCIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL01vZGFsLnRzeD82MDM0Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgXCIuL01vZGFsLnNjc3NcIjtcbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IGNyZWF0ZVBvcnRhbCB9IGZyb20gXCJyZWFjdC1kb21cIjtcbmltcG9ydCBjbHN4IGZyb20gXCJjbHN4XCI7XG5pbXBvcnQgeyBLRVlTIH0gZnJvbSBcIi4uL2tleXNcIjtcbmltcG9ydCB7IHVzZUNyZWF0ZVBvcnRhbENvbnRhaW5lciB9IGZyb20gXCIuLi9ob29rcy91c2VDcmVhdGVQb3J0YWxDb250YWluZXJcIjtcbmV4cG9ydCBjb25zdCBNb2RhbCA9IHByb3BzID0+IHtcbiAgY29uc3Qge1xuICAgIGNsb3NlT25DbGlja091dHNpZGUgPSB0cnVlXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgbW9kYWxSb290ID0gdXNlQ3JlYXRlUG9ydGFsQ29udGFpbmVyKHtcbiAgICBjbGFzc05hbWU6IFwiZXhjYWxpZHJhdy1tb2RhbC1jb250YWluZXJcIlxuICB9KTtcblxuICBpZiAoIW1vZGFsUm9vdCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgaGFuZGxlS2V5ZG93biA9IGV2ZW50ID0+IHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSBLRVlTLkVTQ0FQRSkge1xuICAgICAgZXZlbnQubmF0aXZlRXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIHByb3BzLm9uQ2xvc2VSZXF1ZXN0KCk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBjcmVhdGVQb3J0YWwoX2pzeHMoXCJkaXZcIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgY2xhc3NOYW1lOiBjbHN4KFwiTW9kYWxcIiwgcHJvcHMuY2xhc3NOYW1lKSxcbiAgICByb2xlOiBcImRpYWxvZ1wiLFxuICAgIFwiYXJpYS1tb2RhbFwiOiBcInRydWVcIixcbiAgICBvbktleURvd246IGhhbmRsZUtleWRvd24sXG4gICAgXCJhcmlhLWxhYmVsbGVkYnlcIjogcHJvcHMubGFiZWxsZWRCeSxcbiAgICBcImRhdGEtcHJldmVudC1vdXRzaWRlLWNsaWNrXCI6IHRydWVcbiAgfSwge1xuICAgIGNoaWxkcmVuOiBbX2pzeChcImRpdlwiLCB7XG4gICAgICBjbGFzc05hbWU6IFwiTW9kYWxfX2JhY2tncm91bmRcIixcbiAgICAgIG9uQ2xpY2s6IGNsb3NlT25DbGlja091dHNpZGUgPyBwcm9wcy5vbkNsb3NlUmVxdWVzdCA6IHVuZGVmaW5lZFxuICAgIH0pLCBfanN4KFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oe1xuICAgICAgY2xhc3NOYW1lOiBcIk1vZGFsX19jb250ZW50XCIsXG4gICAgICBzdHlsZToge1xuICAgICAgICBcIi0tbWF4LXdpZHRoXCI6IGAke3Byb3BzLm1heFdpZHRofXB4YFxuICAgICAgfSxcbiAgICAgIHRhYkluZGV4OiAwXG4gICAgfSwge1xuICAgICAgY2hpbGRyZW46IHByb3BzLmNoaWxkcmVuXG4gICAgfSkpXVxuICB9KSksIG1vZGFsUm9vdCk7XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/Modal.tsx\n');
              }
            ),
            /***/
            "../../components/OverwriteConfirm/OverwriteConfirm.tsx": (
              /*!**************************************************************!*\
                !*** ../../components/OverwriteConfirm/OverwriteConfirm.tsx ***!
                \**************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "OverwriteConfirmDialog": () => (/* binding */ OverwriteConfirmDialog)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var jotai__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! jotai */ "../../../node_modules/jotai/esm/index.mjs");\n/* harmony import */ var _context_tunnels__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../context/tunnels */ "../../context/tunnels.ts");\n/* harmony import */ var _jotai__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../jotai */ "../../jotai.ts");\n/* harmony import */ var _Dialog__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../Dialog */ "../../components/Dialog.tsx");\n/* harmony import */ var _hoc_withInternalFallback__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../hoc/withInternalFallback */ "../../components/hoc/withInternalFallback.tsx");\n/* harmony import */ var _OverwriteConfirmState__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./OverwriteConfirmState */ "../../components/OverwriteConfirm/OverwriteConfirmState.ts");\n/* harmony import */ var _FilledButton__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../FilledButton */ "../../components/FilledButton.tsx");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../icons */ "../../components/icons.tsx");\n/* harmony import */ var _OverwriteConfirmActions__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./OverwriteConfirmActions */ "../../components/OverwriteConfirm/OverwriteConfirmActions.tsx");\n/* harmony import */ var _OverwriteConfirm_scss__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./OverwriteConfirm.scss */ "../../components/OverwriteConfirm/OverwriteConfirm.scss");\n\n\n\n\n\n\n\n\n\n\n\n\nconst OverwriteConfirmDialog = Object.assign((0,_hoc_withInternalFallback__WEBPACK_IMPORTED_MODULE_5__.withInternalFallback)("OverwriteConfirmDialog", ({\n  children\n}) => {\n  const {\n    OverwriteConfirmDialogTunnel\n  } = (0,_context_tunnels__WEBPACK_IMPORTED_MODULE_2__.useTunnels)();\n  const [overwriteConfirmState, setState] = (0,jotai__WEBPACK_IMPORTED_MODULE_11__.useAtom)(_OverwriteConfirmState__WEBPACK_IMPORTED_MODULE_6__.overwriteConfirmStateAtom, _jotai__WEBPACK_IMPORTED_MODULE_3__.jotaiScope);\n\n  if (!overwriteConfirmState.active) {\n    return null;\n  }\n\n  const handleClose = () => {\n    overwriteConfirmState.onClose();\n    setState(state => Object.assign(Object.assign({}, state), {\n      active: false\n    }));\n  };\n\n  const handleConfirm = () => {\n    overwriteConfirmState.onConfirm();\n    setState(state => Object.assign(Object.assign({}, state), {\n      active: false\n    }));\n  };\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(OverwriteConfirmDialogTunnel.In, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Dialog__WEBPACK_IMPORTED_MODULE_4__.Dialog, Object.assign({\n      onCloseRequest: handleClose,\n      title: false,\n      size: 916\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n        className: "OverwriteConfirm"\n      }, {\n        children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("h3", {\n          children: overwriteConfirmState.title\n        }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n          className: `OverwriteConfirm__Description OverwriteConfirm__Description--color-${overwriteConfirmState.color}`\n        }, {\n          children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n            className: "OverwriteConfirm__Description__icon"\n          }, {\n            children: _icons__WEBPACK_IMPORTED_MODULE_8__.alertTriangleIcon\n          })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n            children: overwriteConfirmState.description\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n            className: "OverwriteConfirm__Description__spacer"\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_FilledButton__WEBPACK_IMPORTED_MODULE_7__.FilledButton, {\n            color: overwriteConfirmState.color,\n            size: "large",\n            label: overwriteConfirmState.actionLabel,\n            onClick: handleConfirm\n          })]\n        })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_OverwriteConfirmActions__WEBPACK_IMPORTED_MODULE_9__.Actions, {\n          children: children\n        })]\n      }))\n    }))\n  });\n}), {\n  Actions: _OverwriteConfirmActions__WEBPACK_IMPORTED_MODULE_9__.Actions,\n  Action: _OverwriteConfirmActions__WEBPACK_IMPORTED_MODULE_9__.Action\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4796 characters]\n//# sourceURL=webpack-internal:///../../components/OverwriteConfirm/OverwriteConfirm.tsx\n');
              }
            ),
            /***/
            "../../components/OverwriteConfirm/OverwriteConfirmActions.tsx": (
              /*!*********************************************************************!*\
                !*** ../../components/OverwriteConfirm/OverwriteConfirmActions.tsx ***!
                \*********************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "Action": () => (/* binding */ Action),\n/* harmony export */   "Actions": () => (/* binding */ Actions),\n/* harmony export */   "ExportToImage": () => (/* binding */ ExportToImage),\n/* harmony export */   "SaveToDisk": () => (/* binding */ SaveToDisk)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _FilledButton__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../FilledButton */ "../../components/FilledButton.tsx");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../App */ "../../components/App.tsx");\n/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../actions */ "../../actions/index.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../i18n */ "../../i18n.ts");\n/* harmony import */ var _actions_actionExport__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../actions/actionExport */ "../../actions/actionExport.tsx");\n\n\n\n\n\n\n\nconst Action = ({\n  title,\n  children,\n  actionLabel,\n  onClick\n}) => {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n    className: "OverwriteConfirm__Actions__Action"\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("h4", {\n      children: title\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: "OverwriteConfirm__Actions__Action__content"\n    }, {\n      children: children\n    })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_FilledButton__WEBPACK_IMPORTED_MODULE_2__.FilledButton, {\n      variant: "outlined",\n      color: "muted",\n      label: actionLabel,\n      size: "large",\n      fullWidth: true,\n      onClick: onClick\n    })]\n  }));\n};\nconst ExportToImage = () => {\n  const {\n    t\n  } = (0,_i18n__WEBPACK_IMPORTED_MODULE_5__.useI18n)();\n  const actionManager = (0,_App__WEBPACK_IMPORTED_MODULE_3__.useExcalidrawActionManager)();\n  const setAppState = (0,_App__WEBPACK_IMPORTED_MODULE_3__.useExcalidrawSetAppState)();\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Action, Object.assign({\n    title: t("overwriteConfirm.action.exportToImage.title"),\n    actionLabel: t("overwriteConfirm.action.exportToImage.button"),\n    onClick: () => {\n      actionManager.executeAction(_actions_actionExport__WEBPACK_IMPORTED_MODULE_6__.actionChangeExportEmbedScene, "ui", true);\n      setAppState({\n        openDialog: "imageExport"\n      });\n    }\n  }, {\n    children: t("overwriteConfirm.action.exportToImage.description")\n  }));\n};\nconst SaveToDisk = () => {\n  const {\n    t\n  } = (0,_i18n__WEBPACK_IMPORTED_MODULE_5__.useI18n)();\n  const actionManager = (0,_App__WEBPACK_IMPORTED_MODULE_3__.useExcalidrawActionManager)();\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Action, Object.assign({\n    title: t("overwriteConfirm.action.saveToDisk.title"),\n    actionLabel: t("overwriteConfirm.action.saveToDisk.button"),\n    onClick: () => {\n      actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_4__.actionSaveFileToDisk, "ui");\n    }\n  }, {\n    children: t("overwriteConfirm.action.saveToDisk.description")\n  }));\n};\nconst Actions = Object.assign(({\n  children\n}) => {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: "OverwriteConfirm__Actions"\n  }, {\n    children: children\n  }));\n}, {\n  ExportToImage,\n  SaveToDisk\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4368 characters]\n//# sourceURL=webpack-internal:///../../components/OverwriteConfirm/OverwriteConfirmActions.tsx\n');
              }
            ),
            /***/
            "../../components/OverwriteConfirm/OverwriteConfirmState.ts": (
              /*!******************************************************************!*\
                !*** ../../components/OverwriteConfirm/OverwriteConfirmState.ts ***!
                \******************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "openConfirmModal": () => (/* binding */ openConfirmModal),\n/* harmony export */   "overwriteConfirmStateAtom": () => (/* binding */ overwriteConfirmStateAtom)\n/* harmony export */ });\n/* harmony import */ var jotai__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! jotai */ "../../../node_modules/jotai/esm/index.mjs");\n/* harmony import */ var _jotai__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../jotai */ "../../jotai.ts");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator["throw"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\nconst overwriteConfirmStateAtom = (0,jotai__WEBPACK_IMPORTED_MODULE_1__.atom)({\n  active: false\n});\nfunction openConfirmModal({\n  title,\n  description,\n  actionLabel,\n  color\n}) {\n  return __awaiter(this, void 0, void 0, function* () {\n    return new Promise(resolve => {\n      _jotai__WEBPACK_IMPORTED_MODULE_0__.jotaiStore.set(overwriteConfirmStateAtom, {\n        active: true,\n        onConfirm: () => resolve(true),\n        onClose: () => resolve(false),\n        onReject: () => resolve(false),\n        title,\n        description,\n        actionLabel,\n        color\n      });\n    });\n  });\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9PdmVyd3JpdGVDb25maXJtL092ZXJ3cml0ZUNvbmZpcm1TdGF0ZS50cy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsZ0JBQWdCLFNBQUksSUFBSSxTQUFJO0FBQzVCO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7O0FBRTZCO0FBQ1k7QUFDbEMsa0NBQWtDLDJDQUFJO0FBQzdDO0FBQ0EsQ0FBQztBQUNNO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBLE1BQU0sa0RBQWM7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0wsR0FBRztBQUNIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvT3ZlcndyaXRlQ29uZmlybS9PdmVyd3JpdGVDb25maXJtU3RhdGUudHM/MTFlOSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19hd2FpdGVyID0gdGhpcyAmJiB0aGlzLl9fYXdhaXRlciB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAgIHJlc29sdmUodmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7XG4gICAgICB0cnkge1xuICAgICAgICBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJlamVjdChlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZWplY3QoZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHtcbiAgICAgIHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpO1xuICAgIH1cblxuICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgfSk7XG59O1xuXG5pbXBvcnQgeyBhdG9tIH0gZnJvbSBcImpvdGFpXCI7XG5pbXBvcnQgeyBqb3RhaVN0b3JlIH0gZnJvbSBcIi4uLy4uL2pvdGFpXCI7XG5leHBvcnQgY29uc3Qgb3ZlcndyaXRlQ29uZmlybVN0YXRlQXRvbSA9IGF0b20oe1xuICBhY3RpdmU6IGZhbHNlXG59KTtcbmV4cG9ydCBmdW5jdGlvbiBvcGVuQ29uZmlybU1vZGFsKHtcbiAgdGl0bGUsXG4gIGRlc2NyaXB0aW9uLFxuICBhY3Rpb25MYWJlbCxcbiAgY29sb3Jcbn0pIHtcbiAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICBqb3RhaVN0b3JlLnNldChvdmVyd3JpdGVDb25maXJtU3RhdGVBdG9tLCB7XG4gICAgICAgIGFjdGl2ZTogdHJ1ZSxcbiAgICAgICAgb25Db25maXJtOiAoKSA9PiByZXNvbHZlKHRydWUpLFxuICAgICAgICBvbkNsb3NlOiAoKSA9PiByZXNvbHZlKGZhbHNlKSxcbiAgICAgICAgb25SZWplY3Q6ICgpID0+IHJlc29sdmUoZmFsc2UpLFxuICAgICAgICB0aXRsZSxcbiAgICAgICAgZGVzY3JpcHRpb24sXG4gICAgICAgIGFjdGlvbkxhYmVsLFxuICAgICAgICBjb2xvclxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/OverwriteConfirm/OverwriteConfirmState.ts\n');
              }
            ),
            /***/
            "../../components/PasteChartDialog.tsx": (
              /*!*********************************************!*\
                !*** ../../components/PasteChartDialog.tsx ***!
                \*********************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "PasteChartDialog": () => (/* binding */ PasteChartDialog)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var open_color__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! open-color */ "../../../node_modules/open-color/open-color.json");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _analytics__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../analytics */ "../../analytics.ts");\n/* harmony import */ var _charts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../charts */ "../../charts.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _scene_export__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../scene/export */ "../../scene/export.ts");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./App */ "../../components/App.tsx");\n/* harmony import */ var _Dialog__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Dialog */ "../../components/Dialog.tsx");\n/* harmony import */ var _PasteChartDialog_scss__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./PasteChartDialog.scss */ "../../components/PasteChartDialog.scss");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator["throw"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n\n\n\n\n\n\n\n\n\nconst ChartPreviewBtn = props => {\n  const previewRef = (0,react__WEBPACK_IMPORTED_MODULE_2__.useRef)(null);\n  const [chartElements, setChartElements] = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(null);\n  (0,react__WEBPACK_IMPORTED_MODULE_2__.useLayoutEffect)(() => {\n    if (!props.spreadsheet) {\n      return;\n    }\n\n    const elements = (0,_charts__WEBPACK_IMPORTED_MODULE_4__.renderSpreadsheet)(props.chartType, props.spreadsheet, 0, 0);\n    setChartElements(elements);\n    let svg;\n    const previewNode = previewRef.current;\n\n    (() => __awaiter(void 0, void 0, void 0, function* () {\n      var _a;\n\n      svg = yield (0,_scene_export__WEBPACK_IMPORTED_MODULE_6__.exportToSvg)(elements, {\n        exportBackground: false,\n        viewBackgroundColor: open_color__WEBPACK_IMPORTED_MODULE_1__.white\n      }, null);\n      (_a = svg.querySelector(".style-fonts")) === null || _a === void 0 ? void 0 : _a.remove();\n      previewNode.replaceChildren();\n      previewNode.appendChild(svg);\n\n      if (props.selected) {\n        previewNode.parentNode.focus();\n      }\n    }))();\n\n    return () => {\n      previewNode.replaceChildren();\n    };\n  }, [props.spreadsheet, props.chartType, props.selected]);\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("button", Object.assign({\n    className: "ChartPreview",\n    onClick: () => {\n      if (chartElements) {\n        props.onClick(props.chartType, chartElements);\n      }\n    }\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n      ref: previewRef\n    })\n  }));\n};\n\nconst PasteChartDialog = ({\n  setAppState,\n  appState,\n  onClose\n}) => {\n  const {\n    onInsertElements\n  } = (0,_App__WEBPACK_IMPORTED_MODULE_7__.useApp)();\n  const handleClose = react__WEBPACK_IMPORTED_MODULE_2___default().useCallback(() => {\n    if (onClose) {\n      onClose();\n    }\n  }, [onClose]);\n\n  const handleChartClick = (chartType, elements) => {\n    onInsertElements(elements);\n    (0,_analytics__WEBPACK_IMPORTED_MODULE_3__.trackEvent)("magic", "chart", chartType);\n    setAppState({\n      currentChartType: chartType,\n      pasteDialog: {\n        shown: false,\n        data: null\n      }\n    });\n  };\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Dialog__WEBPACK_IMPORTED_MODULE_8__.Dialog, Object.assign({\n    size: "small",\n    onCloseRequest: handleClose,\n    title: (0,_i18n__WEBPACK_IMPORTED_MODULE_5__.t)("labels.pasteCharts"),\n    className: "PasteChartDialog",\n    autofocus: false\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n      className: "container"\n    }, {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(ChartPreviewBtn, {\n        chartType: "bar",\n        spreadsheet: appState.pasteDialog.data,\n        selected: appState.currentChartType === "bar",\n        onClick: handleChartClick\n      }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(ChartPreviewBtn, {\n        chartType: "line",\n        spreadsheet: appState.pasteDialog.data,\n        selected: appState.currentChartType === "line",\n        onClick: handleChartClick\n      })]\n    }))\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6680 characters]\n//# sourceURL=webpack-internal:///../../components/PasteChartDialog.tsx\n');
              }
            ),
            /***/
            "../../components/PenModeButton.tsx": (
              /*!******************************************!*\
                !*** ../../components/PenModeButton.tsx ***!
                \******************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "PenModeButton": () => (/* binding */ PenModeButton)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var _ToolIcon_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ToolIcon.scss */ "../../components/ToolIcon.scss");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./icons */ "../../components/icons.tsx");\n\n\n\n\nconst DEFAULT_SIZE = "medium";\nconst PenModeButton = props => {\n  if (!props.penDetected) {\n    return null;\n  }\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("label", Object.assign({\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_2__["default"])("ToolIcon ToolIcon__penMode", `ToolIcon_size_${DEFAULT_SIZE}`, {\n      "is-mobile": props.isMobile\n    }),\n    title: `${props.title}`\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input", {\n      className: "ToolIcon_type_checkbox",\n      type: "checkbox",\n      name: props.name,\n      onChange: props.onChange,\n      checked: props.checked,\n      "aria-label": props.title\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: "ToolIcon__icon"\n    }, {\n      children: _icons__WEBPACK_IMPORTED_MODULE_3__.PenModeIcon\n    }))]\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9QZW5Nb2RlQnV0dG9uLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUErRDtBQUN0QztBQUNEO0FBQ2M7QUFDdEM7QUFDTztBQUNQO0FBQ0E7QUFDQTs7QUFFQSxTQUFTLHVEQUFLO0FBQ2QsZUFBZSxnREFBSSxnREFBZ0QsYUFBYTtBQUNoRjtBQUNBLEtBQUs7QUFDTCxjQUFjLFlBQVk7QUFDMUIsR0FBRztBQUNILGVBQWUsc0RBQUk7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSyxHQUFHLHNEQUFJO0FBQ1o7QUFDQSxLQUFLO0FBQ0wsZ0JBQWdCLCtDQUFXO0FBQzNCLEtBQUs7QUFDTCxHQUFHO0FBQ0giLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9QZW5Nb2RlQnV0dG9uLnRzeD85MmQ2Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgXCIuL1Rvb2xJY29uLnNjc3NcIjtcbmltcG9ydCBjbHN4IGZyb20gXCJjbHN4XCI7XG5pbXBvcnQgeyBQZW5Nb2RlSWNvbiB9IGZyb20gXCIuL2ljb25zXCI7XG5jb25zdCBERUZBVUxUX1NJWkUgPSBcIm1lZGl1bVwiO1xuZXhwb3J0IGNvbnN0IFBlbk1vZGVCdXR0b24gPSBwcm9wcyA9PiB7XG4gIGlmICghcHJvcHMucGVuRGV0ZWN0ZWQpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiBfanN4cyhcImxhYmVsXCIsIE9iamVjdC5hc3NpZ24oe1xuICAgIGNsYXNzTmFtZTogY2xzeChcIlRvb2xJY29uIFRvb2xJY29uX19wZW5Nb2RlXCIsIGBUb29sSWNvbl9zaXplXyR7REVGQVVMVF9TSVpFfWAsIHtcbiAgICAgIFwiaXMtbW9iaWxlXCI6IHByb3BzLmlzTW9iaWxlXG4gICAgfSksXG4gICAgdGl0bGU6IGAke3Byb3BzLnRpdGxlfWBcbiAgfSwge1xuICAgIGNoaWxkcmVuOiBbX2pzeChcImlucHV0XCIsIHtcbiAgICAgIGNsYXNzTmFtZTogXCJUb29sSWNvbl90eXBlX2NoZWNrYm94XCIsXG4gICAgICB0eXBlOiBcImNoZWNrYm94XCIsXG4gICAgICBuYW1lOiBwcm9wcy5uYW1lLFxuICAgICAgb25DaGFuZ2U6IHByb3BzLm9uQ2hhbmdlLFxuICAgICAgY2hlY2tlZDogcHJvcHMuY2hlY2tlZCxcbiAgICAgIFwiYXJpYS1sYWJlbFwiOiBwcm9wcy50aXRsZVxuICAgIH0pLCBfanN4KFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oe1xuICAgICAgY2xhc3NOYW1lOiBcIlRvb2xJY29uX19pY29uXCJcbiAgICB9LCB7XG4gICAgICBjaGlsZHJlbjogUGVuTW9kZUljb25cbiAgICB9KSldXG4gIH0pKTtcbn07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/PenModeButton.tsx\n');
              }
            ),
            /***/
            "../../components/Popover.tsx": (
              /*!************************************!*\
                !*** ../../components/Popover.tsx ***!
                \************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "Popover": () => (/* binding */ Popover)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _Popover_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Popover.scss */ "../../components/Popover.scss");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-dom */ "react-dom");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n\n\n\n\n\n\nconst Popover = ({\n  children,\n  left,\n  top,\n  onCloseRequest,\n  fitInViewport = false,\n  offsetLeft = 0,\n  offsetTop = 0,\n  viewportWidth = window.innerWidth,\n  viewportHeight = window.innerHeight\n}) => {\n  const popoverRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n  (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {\n    const container = popoverRef.current;\n\n    if (!container) {\n      return;\n    } // focus popover only if the caller didn\'t focus on something else nested\n    // within the popover, which should take precedence. Fixes cases\n    // like color picker listening to keydown events on containers nested\n    // in the popover.\n\n\n    if (!container.contains(document.activeElement)) {\n      container.focus();\n    }\n\n    const handleKeyDown = event => {\n      var _a, _b, _c;\n\n      if (event.key === _keys__WEBPACK_IMPORTED_MODULE_5__.KEYS.TAB) {\n        const focusableElements = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.queryFocusableElements)(container);\n        const {\n          activeElement\n        } = document;\n        const currentIndex = focusableElements.findIndex(element => element === activeElement);\n\n        if (activeElement === container) {\n          if (event.shiftKey) {\n            (_a = focusableElements[focusableElements.length - 1]) === null || _a === void 0 ? void 0 : _a.focus();\n          } else {\n            focusableElements[0].focus();\n          }\n\n          event.preventDefault();\n          event.stopImmediatePropagation();\n        } else if (currentIndex === 0 && event.shiftKey) {\n          (_b = focusableElements[focusableElements.length - 1]) === null || _b === void 0 ? void 0 : _b.focus();\n          event.preventDefault();\n          event.stopImmediatePropagation();\n        } else if (currentIndex === focusableElements.length - 1 && !event.shiftKey) {\n          (_c = focusableElements[0]) === null || _c === void 0 ? void 0 : _c.focus();\n          event.preventDefault();\n          event.stopImmediatePropagation();\n        }\n      }\n    };\n\n    container.addEventListener("keydown", handleKeyDown);\n    return () => container.removeEventListener("keydown", handleKeyDown);\n  }, []);\n  const lastInitializedPosRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null); // ensure the popover doesn\'t overflow the viewport\n\n  (0,react__WEBPACK_IMPORTED_MODULE_1__.useLayoutEffect)(() => {\n    var _a, _b;\n\n    if (fitInViewport && popoverRef.current && top != null && left != null) {\n      const container = popoverRef.current;\n      const {\n        width,\n        height\n      } = container.getBoundingClientRect(); // hack for StrictMode so this effect only runs once for\n      // the same top/left position, otherwise\n      // we\'d potentically reposition twice (once for viewport overflow)\n      // and once for top/left position afterwards\n\n      if (((_a = lastInitializedPosRef.current) === null || _a === void 0 ? void 0 : _a.top) === top && ((_b = lastInitializedPosRef.current) === null || _b === void 0 ? void 0 : _b.left) === left) {\n        return;\n      }\n\n      lastInitializedPosRef.current = {\n        top,\n        left\n      };\n\n      if (width >= viewportWidth) {\n        container.style.width = `${viewportWidth}px`;\n        container.style.left = "0px";\n        container.style.overflowX = "scroll";\n      } else if (left + width - offsetLeft > viewportWidth) {\n        container.style.left = `${viewportWidth - width - 10}px`;\n      } else {\n        container.style.left = `${left}px`;\n      }\n\n      if (height >= viewportHeight) {\n        container.style.height = `${viewportHeight - 20}px`;\n        container.style.top = "10px";\n        container.style.overflowY = "scroll";\n      } else if (top + height - offsetTop > viewportHeight) {\n        container.style.top = `${viewportHeight - height}px`;\n      } else {\n        container.style.top = `${top}px`;\n      }\n    }\n  }, [top, left, fitInViewport, viewportWidth, viewportHeight, offsetLeft, offsetTop]);\n  (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {\n    if (onCloseRequest) {\n      const handler = event => {\n        var _a;\n\n        if (!((_a = popoverRef.current) === null || _a === void 0 ? void 0 : _a.contains(event.target))) {\n          (0,react_dom__WEBPACK_IMPORTED_MODULE_3__.unstable_batchedUpdates)(() => onCloseRequest(event));\n        }\n      };\n\n      document.addEventListener("pointerdown", handler, false);\n      return () => document.removeEventListener("pointerdown", handler, false);\n    }\n  }, [onCloseRequest]);\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: "popover",\n    ref: popoverRef,\n    tabIndex: -1\n  }, {\n    children: children\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 7832 characters]\n//# sourceURL=webpack-internal:///../../components/Popover.tsx\n');
              }
            ),
            /***/
            "../../components/ProjectName.tsx": (
              /*!****************************************!*\
                !*** ../../components/ProjectName.tsx ***!
                \****************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "ProjectName": () => (/* binding */ ProjectName)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var _TextInput_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./TextInput.scss */ "../../components/TextInput.scss");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _ProjectName_scss__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./ProjectName.scss */ "../../components/ProjectName.scss");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./App */ "../../components/App.tsx");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n\n\n\n\n\n\n\nconst ProjectName = props => {\n  const {\n    id\n  } = (0,_App__WEBPACK_IMPORTED_MODULE_5__.useExcalidrawContainer)();\n  const [fileName, setFileName] = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(props.value);\n\n  const handleBlur = event => {\n    if (!props.ignoreFocus) {\n      (0,_utils__WEBPACK_IMPORTED_MODULE_3__.focusNearestParent)(event.target);\n    }\n\n    const value = event.target.value;\n\n    if (value !== props.value) {\n      props.onChange(value);\n    }\n  };\n\n  const handleKeyDown = event => {\n    if (event.key === _keys__WEBPACK_IMPORTED_MODULE_6__.KEYS.ENTER) {\n      event.preventDefault();\n\n      if (event.nativeEvent.isComposing || event.keyCode === 229) {\n        return;\n      }\n\n      event.currentTarget.blur();\n    }\n  };\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n    className: "ProjectName"\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("label", Object.assign({\n      className: "ProjectName-label",\n      htmlFor: "filename"\n    }, {\n      children: `${props.label}${props.isNameEditable ? "" : ":"}`\n    })), props.isNameEditable ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input", {\n      type: "text",\n      className: "TextInput",\n      onBlur: handleBlur,\n      onKeyDown: handleKeyDown,\n      id: `${id}-filename`,\n      value: fileName,\n      onChange: event => setFileName(event.target.value)\n    }) : (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", Object.assign({\n      className: "TextInput TextInput--readonly",\n      id: `${id}-filename`\n    }, {\n      children: props.value\n    }))]\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9Qcm9qZWN0TmFtZS50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQStEO0FBQ3JDO0FBQ2M7QUFDTTtBQUNsQjtBQUNtQjtBQUNoQjtBQUN4QjtBQUNQO0FBQ0E7QUFDQSxJQUFJLEVBQUUsNERBQXNCO0FBQzVCLGtDQUFrQywrQ0FBUTs7QUFFMUM7QUFDQTtBQUNBLE1BQU0sMERBQWtCO0FBQ3hCOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esc0JBQXNCLDZDQUFVO0FBQ2hDOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsU0FBUyx1REFBSztBQUNkO0FBQ0EsR0FBRztBQUNILGVBQWUsc0RBQUk7QUFDbkI7QUFDQTtBQUNBLEtBQUs7QUFDTCxtQkFBbUIsWUFBWSxFQUFFLGdDQUFnQztBQUNqRSxLQUFLLDJCQUEyQixzREFBSTtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsR0FBRztBQUNoQjtBQUNBO0FBQ0EsS0FBSyxJQUFJLHNEQUFJO0FBQ2I7QUFDQSxhQUFhLEdBQUc7QUFDaEIsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSCIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL1Byb2plY3ROYW1lLnRzeD9jZTU4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgXCIuL1RleHRJbnB1dC5zY3NzXCI7XG5pbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IGZvY3VzTmVhcmVzdFBhcmVudCB9IGZyb20gXCIuLi91dGlsc1wiO1xuaW1wb3J0IFwiLi9Qcm9qZWN0TmFtZS5zY3NzXCI7XG5pbXBvcnQgeyB1c2VFeGNhbGlkcmF3Q29udGFpbmVyIH0gZnJvbSBcIi4vQXBwXCI7XG5pbXBvcnQgeyBLRVlTIH0gZnJvbSBcIi4uL2tleXNcIjtcbmV4cG9ydCBjb25zdCBQcm9qZWN0TmFtZSA9IHByb3BzID0+IHtcbiAgY29uc3Qge1xuICAgIGlkXG4gIH0gPSB1c2VFeGNhbGlkcmF3Q29udGFpbmVyKCk7XG4gIGNvbnN0IFtmaWxlTmFtZSwgc2V0RmlsZU5hbWVdID0gdXNlU3RhdGUocHJvcHMudmFsdWUpO1xuXG4gIGNvbnN0IGhhbmRsZUJsdXIgPSBldmVudCA9PiB7XG4gICAgaWYgKCFwcm9wcy5pZ25vcmVGb2N1cykge1xuICAgICAgZm9jdXNOZWFyZXN0UGFyZW50KGV2ZW50LnRhcmdldCk7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU7XG5cbiAgICBpZiAodmFsdWUgIT09IHByb3BzLnZhbHVlKSB7XG4gICAgICBwcm9wcy5vbkNoYW5nZSh2YWx1ZSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUtleURvd24gPSBldmVudCA9PiB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gS0VZUy5FTlRFUikge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgaWYgKGV2ZW50Lm5hdGl2ZUV2ZW50LmlzQ29tcG9zaW5nIHx8IGV2ZW50LmtleUNvZGUgPT09IDIyOSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGV2ZW50LmN1cnJlbnRUYXJnZXQuYmx1cigpO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gX2pzeHMoXCJkaXZcIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgY2xhc3NOYW1lOiBcIlByb2plY3ROYW1lXCJcbiAgfSwge1xuICAgIGNoaWxkcmVuOiBbX2pzeChcImxhYmVsXCIsIE9iamVjdC5hc3NpZ24oe1xuICAgICAgY2xhc3NOYW1lOiBcIlByb2plY3ROYW1lLWxhYmVsXCIsXG4gICAgICBodG1sRm9yOiBcImZpbGVuYW1lXCJcbiAgICB9LCB7XG4gICAgICBjaGlsZHJlbjogYCR7cHJvcHMubGFiZWx9JHtwcm9wcy5pc05hbWVFZGl0YWJsZSA/IFwiXCIgOiBcIjpcIn1gXG4gICAgfSkpLCBwcm9wcy5pc05hbWVFZGl0YWJsZSA/IF9qc3goXCJpbnB1dFwiLCB7XG4gICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgIGNsYXNzTmFtZTogXCJUZXh0SW5wdXRcIixcbiAgICAgIG9uQmx1cjogaGFuZGxlQmx1cixcbiAgICAgIG9uS2V5RG93bjogaGFuZGxlS2V5RG93bixcbiAgICAgIGlkOiBgJHtpZH0tZmlsZW5hbWVgLFxuICAgICAgdmFsdWU6IGZpbGVOYW1lLFxuICAgICAgb25DaGFuZ2U6IGV2ZW50ID0+IHNldEZpbGVOYW1lKGV2ZW50LnRhcmdldC52YWx1ZSlcbiAgICB9KSA6IF9qc3goXCJzcGFuXCIsIE9iamVjdC5hc3NpZ24oe1xuICAgICAgY2xhc3NOYW1lOiBcIlRleHRJbnB1dCBUZXh0SW5wdXQtLXJlYWRvbmx5XCIsXG4gICAgICBpZDogYCR7aWR9LWZpbGVuYW1lYFxuICAgIH0sIHtcbiAgICAgIGNoaWxkcmVuOiBwcm9wcy52YWx1ZVxuICAgIH0pKV1cbiAgfSkpO1xufTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/ProjectName.tsx\n');
              }
            ),
            /***/
            "../../components/PublishLibrary.tsx": (
              /*!*******************************************!*\
                !*** ../../components/PublishLibrary.tsx ***!
                \*******************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var open_color__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! open-color */ "../../../node_modules/open-color/open-color.json");\n/* harmony import */ var _Dialog__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Dialog */ "../../components/Dialog.tsx");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _Trans__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Trans */ "../../components/Trans.tsx");\n/* harmony import */ var _packages_utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../packages/utils */ "../utils.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _data_blob__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../data/blob */ "../../data/blob.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _DialogActionButton__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./DialogActionButton */ "../../components/DialogActionButton.tsx");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./icons */ "../../components/icons.tsx");\n/* harmony import */ var _ToolButton__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./ToolButton */ "../../components/ToolButton.tsx");\n/* harmony import */ var _PublishLibrary_scss__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./PublishLibrary.scss */ "../../components/PublishLibrary.scss");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator["throw"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst LOCAL_STORAGE_KEY_PUBLISH_LIBRARY = "publish-library-data";\n\nconst savePublishLibDataToStorage = data => {\n  try {\n    localStorage.setItem(LOCAL_STORAGE_KEY_PUBLISH_LIBRARY, JSON.stringify(data));\n  } catch (error) {\n    // Unable to access window.localStorage\n    console.error(error);\n  }\n};\n\nconst importPublishLibDataFromStorage = () => {\n  try {\n    const data = localStorage.getItem(LOCAL_STORAGE_KEY_PUBLISH_LIBRARY);\n\n    if (data) {\n      return JSON.parse(data);\n    }\n  } catch (error) {\n    // Unable to access localStorage\n    console.error(error);\n  }\n\n  return null;\n};\n\nconst generatePreviewImage = libraryItems => __awaiter(void 0, void 0, void 0, function* () {\n  const MAX_ITEMS_PER_ROW = 6;\n  const BOX_SIZE = 128;\n  const BOX_PADDING = Math.round(BOX_SIZE / 16);\n  const BORDER_WIDTH = Math.max(Math.round(BOX_SIZE / 64), 2);\n  const rows = (0,_utils__WEBPACK_IMPORTED_MODULE_9__.chunk)(libraryItems, MAX_ITEMS_PER_ROW);\n  const canvas = document.createElement("canvas");\n  canvas.width = rows[0].length * BOX_SIZE + (rows[0].length + 1) * (BOX_PADDING * 2) - BOX_PADDING * 2;\n  canvas.height = rows.length * BOX_SIZE + (rows.length + 1) * (BOX_PADDING * 2) - BOX_PADDING * 2;\n  const ctx = canvas.getContext("2d");\n  ctx.fillStyle = open_color__WEBPACK_IMPORTED_MODULE_2__.white;\n  ctx.fillRect(0, 0, canvas.width, canvas.height); // draw items\n  // ---------------------------------------------------------------------------\n\n  for (const [index, item] of libraryItems.entries()) {\n    const itemCanvas = yield (0,_packages_utils__WEBPACK_IMPORTED_MODULE_6__.exportToCanvas)({\n      elements: item.elements,\n      files: null,\n      maxWidthOrHeight: BOX_SIZE\n    });\n    const {\n      width,\n      height\n    } = itemCanvas; // draw item\n    // -------------------------------------------------------------------------\n\n    const rowOffset = Math.floor(index / MAX_ITEMS_PER_ROW) * (BOX_SIZE + BOX_PADDING * 2);\n    const colOffset = index % MAX_ITEMS_PER_ROW * (BOX_SIZE + BOX_PADDING * 2);\n    ctx.drawImage(itemCanvas, colOffset + (BOX_SIZE - width) / 2 + BOX_PADDING, rowOffset + (BOX_SIZE - height) / 2 + BOX_PADDING); // draw item border\n    // -------------------------------------------------------------------------\n\n    ctx.lineWidth = BORDER_WIDTH;\n    ctx.strokeStyle = open_color__WEBPACK_IMPORTED_MODULE_2__.gray[4];\n    ctx.strokeRect(colOffset + BOX_PADDING / 2, rowOffset + BOX_PADDING / 2, BOX_SIZE + BOX_PADDING, BOX_SIZE + BOX_PADDING);\n  }\n\n  return yield (0,_data_blob__WEBPACK_IMPORTED_MODULE_8__.resizeImageFile)(new File([yield (0,_data_blob__WEBPACK_IMPORTED_MODULE_8__.canvasToBlob)(canvas)], "preview", {\n    type: _constants__WEBPACK_IMPORTED_MODULE_7__.MIME_TYPES.png\n  }), {\n    outputType: _constants__WEBPACK_IMPORTED_MODULE_7__.MIME_TYPES.jpg,\n    maxWidthOrHeight: 5000\n  });\n});\n\nconst SingleLibraryItem = ({\n  libItem,\n  appState,\n  index,\n  onChange,\n  onRemove\n}) => {\n  const svgRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n  const inputRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n  (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {\n    const node = svgRef.current;\n\n    if (!node) {\n      return;\n    }\n\n    (() => __awaiter(void 0, void 0, void 0, function* () {\n      const svg = yield (0,_packages_utils__WEBPACK_IMPORTED_MODULE_6__.exportToSvg)({\n        elements: libItem.elements,\n        appState: Object.assign(Object.assign({}, appState), {\n          viewBackgroundColor: open_color__WEBPACK_IMPORTED_MODULE_2__.white,\n          exportBackground: true\n        }),\n        files: null\n      });\n      node.innerHTML = svg.outerHTML;\n    }))();\n  }, [libItem.elements, appState]);\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n    className: "single-library-item"\n  }, {\n    children: [libItem.status === "published" && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", Object.assign({\n      className: "single-library-item-status"\n    }, {\n      children: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("labels.statusPublished")\n    })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n      ref: svgRef,\n      className: "single-library-item__svg"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ToolButton__WEBPACK_IMPORTED_MODULE_12__.ToolButton, {\n      "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("buttons.remove"),\n      type: "button",\n      icon: _icons__WEBPACK_IMPORTED_MODULE_11__.CloseIcon,\n      className: "single-library-item--remove",\n      onClick: onRemove.bind(null, libItem.id),\n      title: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("buttons.remove")\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n      style: {\n        display: "flex",\n        margin: "0.8rem 0",\n        width: "100%",\n        fontSize: "14px",\n        fontWeight: 500,\n        flexDirection: "column"\n      }\n    }, {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("label", Object.assign({\n        style: {\n          display: "flex",\n          justifyContent: "space-between",\n          flexDirection: "column"\n        }\n      }, {\n        children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n          style: {\n            padding: "0.5em 0"\n          }\n        }, {\n          children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", Object.assign({\n            style: {\n              fontWeight: 500,\n              color: open_color__WEBPACK_IMPORTED_MODULE_2__.gray[6]\n            }\n          }, {\n            children: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("publishDialog.itemName")\n          })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", Object.assign({\n            "aria-hidden": "true",\n            className: "required"\n          }, {\n            children: "*"\n          }))]\n        })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input", {\n          type: "text",\n          ref: inputRef,\n          style: {\n            width: "80%",\n            padding: "0.2rem"\n          },\n          defaultValue: libItem.name,\n          placeholder: "Item name",\n          onChange: event => {\n            onChange(event.target.value, index);\n          }\n        })]\n      })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", Object.assign({\n        className: "error"\n      }, {\n        children: libItem.error\n      }))]\n    }))]\n  }));\n};\n\nconst PublishLibrary = ({\n  onClose,\n  libraryItems,\n  appState,\n  onSuccess,\n  onError,\n  updateItemsInStorage,\n  onRemove\n}) => {\n  const [libraryData, setLibraryData] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({\n    authorName: "",\n    githubHandle: "",\n    name: "",\n    description: "",\n    twitterHandle: "",\n    website: ""\n  });\n  const [isSubmitting, setIsSubmitting] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n  (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {\n    const data = importPublishLibDataFromStorage();\n\n    if (data) {\n      setLibraryData(data);\n    }\n  }, []);\n  const [clonedLibItems, setClonedLibItems] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(libraryItems.slice());\n  (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {\n    setClonedLibItems(libraryItems.slice());\n  }, [libraryItems]);\n\n  const onInputChange = event => {\n    setLibraryData(Object.assign(Object.assign({}, libraryData), {\n      [event.target.name]: event.target.value\n    }));\n  };\n\n  const onSubmit = event => __awaiter(void 0, void 0, void 0, function* () {\n    event.preventDefault();\n    setIsSubmitting(true);\n    const erroredLibItems = [];\n    let isError = false;\n    clonedLibItems.forEach(libItem => {\n      let error = "";\n\n      if (!libItem.name) {\n        error = (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("publishDialog.errors.required");\n        isError = true;\n      }\n\n      erroredLibItems.push(Object.assign(Object.assign({}, libItem), {\n        error\n      }));\n    });\n\n    if (isError) {\n      setClonedLibItems(erroredLibItems);\n      setIsSubmitting(false);\n      return;\n    }\n\n    const previewImage = yield generatePreviewImage(clonedLibItems);\n    const libContent = {\n      type: _constants__WEBPACK_IMPORTED_MODULE_7__.EXPORT_DATA_TYPES.excalidrawLibrary,\n      version: _constants__WEBPACK_IMPORTED_MODULE_7__.VERSIONS.excalidrawLibrary,\n      source: _constants__WEBPACK_IMPORTED_MODULE_7__.EXPORT_SOURCE,\n      libraryItems: clonedLibItems\n    };\n    const content = JSON.stringify(libContent, null, 2);\n    const lib = new Blob([content], {\n      type: "application/json"\n    });\n    const formData = new FormData();\n    formData.append("excalidrawLib", lib);\n    formData.append("previewImage", previewImage);\n    formData.append("previewImageType", previewImage.type);\n    formData.append("title", libraryData.name);\n    formData.append("authorName", libraryData.authorName);\n    formData.append("githubHandle", libraryData.githubHandle);\n    formData.append("name", libraryData.name);\n    formData.append("description", libraryData.description);\n    formData.append("twitterHandle", libraryData.twitterHandle);\n    formData.append("website", libraryData.website);\n    fetch(`${"https://us-central1-excalidraw-room-persistence.cloudfunctions.net/libraries"}/submit`, {\n      method: "post",\n      body: formData\n    }).then(response => {\n      if (response.ok) {\n        return response.json().then(({\n          url\n        }) => {\n          // flush data from local storage\n          localStorage.removeItem(LOCAL_STORAGE_KEY_PUBLISH_LIBRARY);\n          onSuccess({\n            url,\n            authorName: libraryData.authorName,\n            items: clonedLibItems\n          });\n        });\n      }\n\n      return response.json().catch(() => {\n        throw new Error(response.statusText || "something went wrong");\n      }).then(error => {\n        throw new Error(error.message || response.statusText || "something went wrong");\n      });\n    }, err => {\n      console.error(err);\n      onError(err);\n      setIsSubmitting(false);\n    }).catch(err => {\n      console.error(err);\n      onError(err);\n      setIsSubmitting(false);\n    });\n  });\n\n  const renderLibraryItems = () => {\n    const items = [];\n    clonedLibItems.forEach((libItem, index) => {\n      items.push((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n        className: "single-library-item-wrapper"\n      }, {\n        children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(SingleLibraryItem, {\n          libItem: libItem,\n          appState: appState,\n          index: index,\n          onChange: (val, index) => {\n            const items = clonedLibItems.slice();\n            items[index].name = val;\n            setClonedLibItems(items);\n          },\n          onRemove: onRemove\n        })\n      }), index));\n    });\n    return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: "selected-library-items"\n    }, {\n      children: items\n    }));\n  };\n\n  const onDialogClose = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(() => {\n    updateItemsInStorage(clonedLibItems);\n    savePublishLibDataToStorage(libraryData);\n    onClose();\n  }, [clonedLibItems, onClose, updateItemsInStorage, libraryData]);\n  const shouldRenderForm = !!libraryItems.length;\n  const containsPublishedItems = libraryItems.some(item => item.status === "published");\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Dialog__WEBPACK_IMPORTED_MODULE_3__.Dialog, Object.assign({\n    onCloseRequest: onDialogClose,\n    title: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("publishDialog.title"),\n    className: "publish-library"\n  }, {\n    children: shouldRenderForm ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("form", Object.assign({\n      onSubmit: onSubmit\n    }, {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n        className: "publish-library-note"\n      }, {\n        children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Trans__WEBPACK_IMPORTED_MODULE_5__["default"], {\n          i18nKey: "publishDialog.noteDescription",\n          link: el => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("a", Object.assign({\n            href: "https://libraries.excalidraw.com",\n            target: "_blank",\n            rel: "noopener noreferrer"\n          }, {\n            children: el\n          }))\n        })\n      })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", Object.assign({\n        className: "publish-library-note"\n      }, {\n        children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Trans__WEBPACK_IMPORTED_MODULE_5__["default"], {\n          i18nKey: "publishDialog.noteGuidelines",\n          link: el => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("a", Object.assign({\n            href: "https://github.com/excalidraw/excalidraw-libraries#guidelines",\n            target: "_blank",\n            rel: "noopener noreferrer"\n          }, {\n            children: el\n          }))\n        })\n      })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n        className: "publish-library-note"\n      }, {\n        children: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("publishDialog.noteItems")\n      })), containsPublishedItems && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", Object.assign({\n        className: "publish-library-note publish-library-warning"\n      }, {\n        children: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("publishDialog.republishWarning")\n      })), renderLibraryItems(), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n        className: "publish-library__fields"\n      }, {\n        children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("label", {\n          children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", {\n            children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", {\n              children: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("publishDialog.libraryName")\n            }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", Object.assign({\n              "aria-hidden": "true",\n              className: "required"\n            }, {\n              children: "*"\n            }))]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input", {\n            type: "text",\n            name: "name",\n            required: true,\n            value: libraryData.name,\n            onChange: onInputChange,\n            placeholder: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("publishDialog.placeholder.libraryName")\n          })]\n        }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("label", Object.assign({\n          style: {\n            alignItems: "flex-start"\n          }\n        }, {\n          children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", {\n            children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", {\n              children: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("publishDialog.libraryDesc")\n            }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", Object.assign({\n              "aria-hidden": "true",\n              className: "required"\n            }, {\n              children: "*"\n            }))]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("textarea", {\n            name: "description",\n            rows: 4,\n            required: true,\n            value: libraryData.description,\n            onChange: onInputChange,\n            placeholder: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("publishDialog.placeholder.libraryDesc")\n          })]\n        })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("label", {\n          children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", {\n            children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", {\n              children: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("publishDialog.authorName")\n            }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", Object.assign({\n              "aria-hidden": "true",\n              className: "required"\n            }, {\n              children: "*"\n            }))]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input", {\n            type: "text",\n            name: "authorName",\n            required: true,\n            value: libraryData.authorName,\n            onChange: onInputChange,\n            placeholder: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("publishDialog.placeholder.authorName")\n          })]\n        }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("label", {\n          children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", {\n            children: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("publishDialog.githubUsername")\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input", {\n            type: "text",\n            name: "githubHandle",\n            value: libraryData.githubHandle,\n            onChange: onInputChange,\n            placeholder: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("publishDialog.placeholder.githubHandle")\n          })]\n        }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("label", {\n          children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", {\n            children: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("publishDialog.twitterUsername")\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input", {\n            type: "text",\n            name: "twitterHandle",\n            value: libraryData.twitterHandle,\n            onChange: onInputChange,\n            placeholder: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("publishDialog.placeholder.twitterHandle")\n          })]\n        }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("label", {\n          children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", {\n            children: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("publishDialog.website")\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input", {\n            type: "text",\n            name: "website",\n            pattern: "https?://.+",\n            title: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("publishDialog.errors.website"),\n            value: libraryData.website,\n            onChange: onInputChange,\n            placeholder: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("publishDialog.placeholder.website")\n          })]\n        }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", Object.assign({\n          className: "publish-library-note"\n        }, {\n          children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Trans__WEBPACK_IMPORTED_MODULE_5__["default"], {\n            i18nKey: "publishDialog.noteLicense",\n            link: el => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("a", Object.assign({\n              href: "https://github.com/excalidraw/excalidraw-libraries/blob/main/LICENSE",\n              target: "_blank",\n              rel: "noopener noreferrer"\n            }, {\n              children: el\n            }))\n          })\n        }))]\n      })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n        className: "publish-library__buttons"\n      }, {\n        children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_DialogActionButton__WEBPACK_IMPORTED_MODULE_10__["default"], {\n          label: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("buttons.cancel"),\n          onClick: onDialogClose,\n          "data-testid": "cancel-clear-canvas-button"\n        }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_DialogActionButton__WEBPACK_IMPORTED_MODULE_10__["default"], {\n          type: "submit",\n          label: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("buttons.submit"),\n          actionType: "primary",\n          isLoading: isSubmitting\n        })]\n      }))]\n    })) : (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("p", Object.assign({\n      style: {\n        padding: "1em",\n        textAlign: "center",\n        fontWeight: 500\n      }\n    }, {\n      children: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("publishDialog.atleastOneLibItem")\n    }))\n  }));\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (PublishLibrary);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 30380 characters]\n//# sourceURL=webpack-internal:///../../components/PublishLibrary.tsx\n');
              }
            ),
            /***/
            "../../components/RadioGroup.tsx": (
              /*!***************************************!*\
                !*** ../../components/RadioGroup.tsx ***!
                \***************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "RadioGroup": () => (/* binding */ RadioGroup)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _RadioGroup_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./RadioGroup.scss */ "../../components/RadioGroup.scss");\n\n\n\nconst RadioGroup = function ({\n  onChange,\n  value,\n  choices,\n  name\n}) {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: "RadioGroup"\n  }, {\n    children: choices.map(choice => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__["default"])("RadioGroup__choice", {\n        active: choice.value === value\n      })\n    }, {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input", {\n        name: name,\n        type: "radio",\n        checked: choice.value === value,\n        onChange: () => onChange(choice.value)\n      }), choice.label]\n    }), choice.label))\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9SYWRpb0dyb3VwLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQStEO0FBQ3ZDO0FBQ0c7QUFDcEI7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCxTQUFTLHNEQUFJO0FBQ2I7QUFDQSxHQUFHO0FBQ0gsb0NBQW9DLHVEQUFLO0FBQ3pDLGlCQUFpQixnREFBSTtBQUNyQjtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0wsaUJBQWlCLHNEQUFJO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTCxHQUFHO0FBQ0giLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9SYWRpb0dyb3VwLnRzeD8wN2EzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgY2xzeCBmcm9tIFwiY2xzeFwiO1xuaW1wb3J0IFwiLi9SYWRpb0dyb3VwLnNjc3NcIjtcbmV4cG9ydCBjb25zdCBSYWRpb0dyb3VwID0gZnVuY3Rpb24gKHtcbiAgb25DaGFuZ2UsXG4gIHZhbHVlLFxuICBjaG9pY2VzLFxuICBuYW1lXG59KSB7XG4gIHJldHVybiBfanN4KFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oe1xuICAgIGNsYXNzTmFtZTogXCJSYWRpb0dyb3VwXCJcbiAgfSwge1xuICAgIGNoaWxkcmVuOiBjaG9pY2VzLm1hcChjaG9pY2UgPT4gX2pzeHMoXCJkaXZcIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgICBjbGFzc05hbWU6IGNsc3goXCJSYWRpb0dyb3VwX19jaG9pY2VcIiwge1xuICAgICAgICBhY3RpdmU6IGNob2ljZS52YWx1ZSA9PT0gdmFsdWVcbiAgICAgIH0pXG4gICAgfSwge1xuICAgICAgY2hpbGRyZW46IFtfanN4KFwiaW5wdXRcIiwge1xuICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICB0eXBlOiBcInJhZGlvXCIsXG4gICAgICAgIGNoZWNrZWQ6IGNob2ljZS52YWx1ZSA9PT0gdmFsdWUsXG4gICAgICAgIG9uQ2hhbmdlOiAoKSA9PiBvbkNoYW5nZShjaG9pY2UudmFsdWUpXG4gICAgICB9KSwgY2hvaWNlLmxhYmVsXVxuICAgIH0pLCBjaG9pY2UubGFiZWwpKVxuICB9KSk7XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/RadioGroup.tsx\n');
              }
            ),
            /***/
            "../../components/Section.tsx": (
              /*!************************************!*\
                !*** ../../components/Section.tsx ***!
                \************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "Section": () => (/* binding */ Section)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./App */ "../../components/App.tsx");\nvar __rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n\n  if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\nconst Section = _a => {\n  var {\n    heading,\n    children\n  } = _a,\n      props = __rest(_a, ["heading", "children"]);\n\n  const {\n    id\n  } = (0,_App__WEBPACK_IMPORTED_MODULE_3__.useExcalidrawContainer)();\n\n  const header = (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("h2", Object.assign({\n    className: "visually-hidden",\n    id: `${id}-${heading}-title`\n  }, {\n    children: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)(`headings.${heading}`)\n  }));\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("section", Object.assign({}, props, {\n    "aria-labelledby": `${id}-${heading}-title`\n  }, {\n    children: typeof children === "function" ? children(header) : (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n      children: [header, children]\n    })\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9TZWN0aW9uLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxhQUFhLFNBQUksSUFBSSxTQUFJO0FBQ3pCOztBQUVBOztBQUVBLDRIQUE0SCxjQUFjO0FBQzFJO0FBQ0E7QUFDQTtBQUNBOztBQUVzRjtBQUM1RDtBQUNFO0FBQ21CO0FBQ3hDO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKOztBQUVBO0FBQ0E7QUFDQSxJQUFJLEVBQUUsNERBQXNCOztBQUU1QixpQkFBaUIsc0RBQUk7QUFDckI7QUFDQSxXQUFXLEdBQUcsR0FBRyxRQUFRO0FBQ3pCLEdBQUc7QUFDSCxjQUFjLHdDQUFDLGFBQWEsUUFBUTtBQUNwQyxHQUFHOztBQUVILFNBQVMsc0RBQUksNEJBQTRCO0FBQ3pDLDBCQUEwQixHQUFHLEdBQUcsUUFBUTtBQUN4QyxHQUFHO0FBQ0gsa0VBQWtFLHVEQUFLLENBQUMsdURBQVM7QUFDakY7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvU2VjdGlvbi50c3g/M2FlZSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19yZXN0ID0gdGhpcyAmJiB0aGlzLl9fcmVzdCB8fCBmdW5jdGlvbiAocywgZSkge1xuICB2YXIgdCA9IHt9O1xuXG4gIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKSB0W3BdID0gc1twXTtcblxuICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpIHRbcFtpXV0gPSBzW3BbaV1dO1xuICB9XG4gIHJldHVybiB0O1xufTtcblxuaW1wb3J0IHsganN4IGFzIF9qc3gsIEZyYWdtZW50IGFzIF9GcmFnbWVudCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdCB9IGZyb20gXCIuLi9pMThuXCI7XG5pbXBvcnQgeyB1c2VFeGNhbGlkcmF3Q29udGFpbmVyIH0gZnJvbSBcIi4vQXBwXCI7XG5leHBvcnQgY29uc3QgU2VjdGlvbiA9IF9hID0+IHtcbiAgdmFyIHtcbiAgICBoZWFkaW5nLFxuICAgIGNoaWxkcmVuXG4gIH0gPSBfYSxcbiAgICAgIHByb3BzID0gX19yZXN0KF9hLCBbXCJoZWFkaW5nXCIsIFwiY2hpbGRyZW5cIl0pO1xuXG4gIGNvbnN0IHtcbiAgICBpZFxuICB9ID0gdXNlRXhjYWxpZHJhd0NvbnRhaW5lcigpO1xuXG4gIGNvbnN0IGhlYWRlciA9IF9qc3goXCJoMlwiLCBPYmplY3QuYXNzaWduKHtcbiAgICBjbGFzc05hbWU6IFwidmlzdWFsbHktaGlkZGVuXCIsXG4gICAgaWQ6IGAke2lkfS0ke2hlYWRpbmd9LXRpdGxlYFxuICB9LCB7XG4gICAgY2hpbGRyZW46IHQoYGhlYWRpbmdzLiR7aGVhZGluZ31gKVxuICB9KSk7XG5cbiAgcmV0dXJuIF9qc3goXCJzZWN0aW9uXCIsIE9iamVjdC5hc3NpZ24oe30sIHByb3BzLCB7XG4gICAgXCJhcmlhLWxhYmVsbGVkYnlcIjogYCR7aWR9LSR7aGVhZGluZ30tdGl0bGVgXG4gIH0sIHtcbiAgICBjaGlsZHJlbjogdHlwZW9mIGNoaWxkcmVuID09PSBcImZ1bmN0aW9uXCIgPyBjaGlsZHJlbihoZWFkZXIpIDogX2pzeHMoX0ZyYWdtZW50LCB7XG4gICAgICBjaGlsZHJlbjogW2hlYWRlciwgY2hpbGRyZW5dXG4gICAgfSlcbiAgfSkpO1xufTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/Section.tsx\n');
              }
            ),
            /***/
            "../../components/Sidebar/Sidebar.tsx": (
              /*!********************************************!*\
                !*** ../../components/Sidebar/Sidebar.tsx ***!
                \********************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "Sidebar": () => (/* binding */ Sidebar),\n/* harmony export */   "SidebarInner": () => (/* binding */ SidebarInner),\n/* harmony export */   "isSidebarDockedAtom": () => (/* binding */ isSidebarDockedAtom)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var _Island__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! .././Island */ "../../components/Island.tsx");\n/* harmony import */ var jotai__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! jotai */ "../../../node_modules/jotai/esm/index.mjs");\n/* harmony import */ var _jotai__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../jotai */ "../../jotai.ts");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./common */ "../../components/Sidebar/common.ts");\n/* harmony import */ var _SidebarHeader__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./SidebarHeader */ "../../components/Sidebar/SidebarHeader.tsx");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../App */ "../../components/App.tsx");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../utils */ "../../utils.ts");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../keys */ "../../keys.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../constants */ "../../constants.ts");\n/* harmony import */ var _SidebarTrigger__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./SidebarTrigger */ "../../components/Sidebar/SidebarTrigger.tsx");\n/* harmony import */ var _SidebarTabTriggers__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./SidebarTabTriggers */ "../../components/Sidebar/SidebarTabTriggers.tsx");\n/* harmony import */ var _SidebarTabTrigger__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./SidebarTabTrigger */ "../../components/Sidebar/SidebarTabTrigger.tsx");\n/* harmony import */ var _SidebarTabs__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./SidebarTabs */ "../../components/Sidebar/SidebarTabs.tsx");\n/* harmony import */ var _SidebarTab__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./SidebarTab */ "../../components/Sidebar/SidebarTab.tsx");\n/* harmony import */ var _context_ui_appState__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../context/ui-appState */ "../../context/ui-appState.ts");\n/* harmony import */ var _hooks_useOutsideClick__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../hooks/useOutsideClick */ "../../hooks/useOutsideClick.ts");\n/* harmony import */ var _Sidebar_scss__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./Sidebar.scss */ "../../components/Sidebar/Sidebar.scss");\nvar __rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n\n  if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Flags whether the currently rendered Sidebar is docked or not, for use\n * in upstream components that need to act on this (e.g. LayerUI to shift the\n * UI). We use an atom because of potential host app sidebars (for the default\n * sidebar we could just read from appState.defaultSidebarDockedPreference).\n *\n * Since we can only render one Sidebar at a time, we can use a simple flag.\n */\n\nconst isSidebarDockedAtom = (0,jotai__WEBPACK_IMPORTED_MODULE_19__.atom)(false);\nconst SidebarInner = (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)((_a, ref) => {\n  var {\n    name,\n    children,\n    onDock,\n    docked,\n    className\n  } = _a,\n      rest = __rest(_a, ["name", "children", "onDock", "docked", "className"]);\n\n  if ( true && onDock && docked == null) {\n    console.warn("Sidebar: `docked` must be set when `onDock` is supplied for the sidebar to be user-dockable. To hide this message, either pass `docked` or remove `onDock`");\n  }\n\n  const setAppState = (0,_App__WEBPACK_IMPORTED_MODULE_7__.useExcalidrawSetAppState)();\n  const setIsSidebarDockedAtom = (0,jotai__WEBPACK_IMPORTED_MODULE_19__.useSetAtom)(isSidebarDockedAtom, _jotai__WEBPACK_IMPORTED_MODULE_3__.jotaiScope);\n  (0,react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect)(() => {\n    setIsSidebarDockedAtom(!!docked);\n    return () => {\n      setIsSidebarDockedAtom(false);\n    };\n  }, [setIsSidebarDockedAtom, docked]);\n  const headerPropsRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)({});\n\n  headerPropsRef.current.onCloseRequest = () => {\n    setAppState({\n      openSidebar: null\n    });\n  };\n\n  headerPropsRef.current.onDock = isDocked => onDock === null || onDock === void 0 ? void 0 : onDock(isDocked); // renew the ref object if the following props change since we want to\n  // rerender. We can\'t pass down as component props manually because\n  // the <Sidebar.Header/> can be rendered upstream.\n\n\n  headerPropsRef.current = (0,_utils__WEBPACK_IMPORTED_MODULE_8__.updateObject)(headerPropsRef.current, {\n    docked,\n    // explicit prop to rerender on update\n    shouldRenderDockButton: !!onDock && docked != null\n  });\n  const islandRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n  (0,react__WEBPACK_IMPORTED_MODULE_0__.useImperativeHandle)(ref, () => {\n    return islandRef.current;\n  });\n  const device = (0,_App__WEBPACK_IMPORTED_MODULE_7__.useDevice)();\n  const closeLibrary = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(() => {\n    const isDialogOpen = !!document.querySelector(".Dialog"); // Prevent closing if any dialog is open\n\n    if (isDialogOpen) {\n      return;\n    }\n\n    setAppState({\n      openSidebar: null\n    });\n  }, [setAppState]);\n  (0,_hooks_useOutsideClick__WEBPACK_IMPORTED_MODULE_17__.useOutsideClick)(islandRef, (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(event => {\n    // If click on the library icon, do nothing so that LibraryButton\n    // can toggle library menu\n    if (event.target.closest(".sidebar-trigger")) {\n      return;\n    }\n\n    if (!docked || !device.editor.canFitSidebar) {\n      closeLibrary();\n    }\n  }, [closeLibrary, docked, device.editor.canFitSidebar]));\n  (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n    const handleKeyDown = event => {\n      if (event.key === _keys__WEBPACK_IMPORTED_MODULE_9__.KEYS.ESCAPE && (!docked || !device.editor.canFitSidebar)) {\n        closeLibrary();\n      }\n    };\n\n    document.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_10__.EVENT.KEYDOWN, handleKeyDown);\n    return () => {\n      document.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_10__.EVENT.KEYDOWN, handleKeyDown);\n    };\n  }, [closeLibrary, docked, device.editor.canFitSidebar]);\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_Island__WEBPACK_IMPORTED_MODULE_2__.Island, Object.assign({}, rest, {\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_6__["default"])("sidebar", {\n      "sidebar--docked": docked\n    }, className),\n    ref: islandRef\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_common__WEBPACK_IMPORTED_MODULE_4__.SidebarPropsContext.Provider, Object.assign({\n      value: headerPropsRef.current\n    }, {\n      children: children\n    }))\n  }));\n});\nSidebarInner.displayName = "SidebarInner";\nconst Sidebar = Object.assign((0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)((props, ref) => {\n  var _a;\n\n  const appState = (0,_context_ui_appState__WEBPACK_IMPORTED_MODULE_16__.useUIAppState)();\n  const {\n    onStateChange\n  } = props;\n  const refPrevOpenSidebar = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(appState.openSidebar);\n  (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n    var _a, _b, _c, _d, _e;\n\n    if ( // closing sidebar\n    (!appState.openSidebar && ((_a = refPrevOpenSidebar === null || refPrevOpenSidebar === void 0 ? void 0 : refPrevOpenSidebar.current) === null || _a === void 0 ? void 0 : _a.name) === props.name || // opening current sidebar\n    ((_b = appState.openSidebar) === null || _b === void 0 ? void 0 : _b.name) === props.name && ((_c = refPrevOpenSidebar === null || refPrevOpenSidebar === void 0 ? void 0 : refPrevOpenSidebar.current) === null || _c === void 0 ? void 0 : _c.name) !== props.name || // switching tabs or switching to a different sidebar\n    ((_d = refPrevOpenSidebar.current) === null || _d === void 0 ? void 0 : _d.name) === props.name) && appState.openSidebar !== refPrevOpenSidebar.current) {\n      onStateChange === null || onStateChange === void 0 ? void 0 : onStateChange(((_e = appState.openSidebar) === null || _e === void 0 ? void 0 : _e.name) !== props.name ? null : appState.openSidebar);\n    }\n\n    refPrevOpenSidebar.current = appState.openSidebar;\n  }, [appState.openSidebar, onStateChange, props.name]);\n  const [mounted, setMounted] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n  (0,react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect)(() => {\n    setMounted(true);\n    return () => setMounted(false);\n  }, []); // We want to render in the next tick (hence `mounted` flag) so that it\'s\n  // guaranteed to happen after unmount of the previous sidebar (in case the\n  // previous sidebar is mounted after the next one). This is necessary to\n  // prevent flicker of subcomponents that support fallbacks\n  // (e.g. SidebarHeader). This is because we\'re using flags to determine\n  // whether prefer the fallback component or not (otherwise both will render\n  // initially), and the flag won\'t be reset in time if the unmount order\n  // it not correct.\n  //\n  // Alternative, and more general solution would be to namespace the fallback\n  // HoC so that state is not shared between subcomponents when the wrapping\n  // component is of the same type (e.g. Sidebar -> SidebarHeader).\n\n  const shouldRender = mounted && ((_a = appState.openSidebar) === null || _a === void 0 ? void 0 : _a.name) === props.name;\n\n  if (!shouldRender) {\n    return null;\n  }\n\n  return (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(SidebarInner, Object.assign({}, props, {\n    ref: ref,\n    key: props.name\n  }));\n}), {\n  Header: _SidebarHeader__WEBPACK_IMPORTED_MODULE_5__.SidebarHeader,\n  TabTriggers: _SidebarTabTriggers__WEBPACK_IMPORTED_MODULE_12__.SidebarTabTriggers,\n  TabTrigger: _SidebarTabTrigger__WEBPACK_IMPORTED_MODULE_13__.SidebarTabTrigger,\n  Tabs: _SidebarTabs__WEBPACK_IMPORTED_MODULE_14__.SidebarTabs,\n  Tab: _SidebarTab__WEBPACK_IMPORTED_MODULE_15__.SidebarTab,\n  Trigger: _SidebarTrigger__WEBPACK_IMPORTED_MODULE_11__.SidebarTrigger\n});\nSidebar.displayName = "Sidebar";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 12768 characters]\n//# sourceURL=webpack-internal:///../../components/Sidebar/Sidebar.tsx\n');
              }
            ),
            /***/
            "../../components/Sidebar/SidebarHeader.tsx": (
              /*!**************************************************!*\
                !*** ../../components/Sidebar/SidebarHeader.tsx ***!
                \**************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "SidebarHeader": () => (/* binding */ SidebarHeader)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../i18n */ "../../i18n.ts");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../App */ "../../components/App.tsx");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./common */ "../../components/Sidebar/common.ts");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../icons */ "../../components/icons.tsx");\n/* harmony import */ var _Tooltip__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../Tooltip */ "../../components/Tooltip.tsx");\n/* harmony import */ var _Button__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../Button */ "../../components/Button.tsx");\n\n\n\n\n\n\n\n\n\nconst SidebarHeader = ({\n  children,\n  className\n}) => {\n  const device = (0,_App__WEBPACK_IMPORTED_MODULE_4__.useDevice)();\n  const props = (0,react__WEBPACK_IMPORTED_MODULE_2__.useContext)(_common__WEBPACK_IMPORTED_MODULE_5__.SidebarPropsContext);\n  const renderDockButton = !!(device.editor.canFitSidebar && props.shouldRenderDockButton);\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__["default"])("sidebar__header", className),\n    "data-testid": "sidebar-header"\n  }, {\n    children: [children, (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n      className: "sidebar__header__buttons"\n    }, {\n      children: [renderDockButton && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Tooltip__WEBPACK_IMPORTED_MODULE_7__.Tooltip, Object.assign({\n        label: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("labels.sidebarLock")\n      }, {\n        children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Button__WEBPACK_IMPORTED_MODULE_8__.Button, Object.assign({\n          onSelect: () => {\n            var _a;\n\n            return (_a = props.onDock) === null || _a === void 0 ? void 0 : _a.call(props, !props.docked);\n          },\n          selected: !!props.docked,\n          className: "sidebar__dock",\n          "data-testid": "sidebar-dock",\n          "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("labels.sidebarLock")\n        }, {\n          children: _icons__WEBPACK_IMPORTED_MODULE_6__.PinIcon\n        }))\n      })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Button__WEBPACK_IMPORTED_MODULE_8__.Button, Object.assign({\n        "data-testid": "sidebar-close",\n        className: "sidebar__close",\n        onSelect: props.onCloseRequest,\n        "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("buttons.close")\n      }, {\n        children: _icons__WEBPACK_IMPORTED_MODULE_6__.CloseIcon\n      }))]\n    }))]\n  }));\n};\nSidebarHeader.displayName = "SidebarHeader";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9TaWRlYmFyL1NpZGViYXJIZWFkZXIudHN4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQStEO0FBQ3ZDO0FBQ1c7QUFDSjtBQUNJO0FBQ1k7QUFDRDtBQUNUO0FBQ0Y7QUFDNUI7QUFDUDtBQUNBO0FBQ0EsQ0FBQztBQUNELGlCQUFpQiwrQ0FBUztBQUMxQixnQkFBZ0IsaURBQVUsQ0FBQyx3REFBbUI7QUFDOUM7QUFDQSxTQUFTLHVEQUFLO0FBQ2QsZUFBZSxnREFBSTtBQUNuQjtBQUNBLEdBQUc7QUFDSCx5QkFBeUIsdURBQUs7QUFDOUI7QUFDQSxLQUFLO0FBQ0wscUNBQXFDLHNEQUFJLENBQUMsNkNBQU87QUFDakQsZUFBZSx3Q0FBQztBQUNoQixPQUFPO0FBQ1Asa0JBQWtCLHNEQUFJLENBQUMsMkNBQU07QUFDN0I7QUFDQTs7QUFFQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSx3QkFBd0Isd0NBQUM7QUFDekIsU0FBUztBQUNULG9CQUFvQiwyQ0FBTztBQUMzQixTQUFTO0FBQ1QsT0FBTyxJQUFJLHNEQUFJLENBQUMsMkNBQU07QUFDdEI7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLHdDQUFDO0FBQ3ZCLE9BQU87QUFDUCxrQkFBa0IsNkNBQVM7QUFDM0IsT0FBTztBQUNQLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL1NpZGViYXIvU2lkZWJhckhlYWRlci50c3g/MmNmNCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IGNsc3ggZnJvbSBcImNsc3hcIjtcbmltcG9ydCB7IHVzZUNvbnRleHQgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHQgfSBmcm9tIFwiLi4vLi4vaTE4blwiO1xuaW1wb3J0IHsgdXNlRGV2aWNlIH0gZnJvbSBcIi4uL0FwcFwiO1xuaW1wb3J0IHsgU2lkZWJhclByb3BzQ29udGV4dCB9IGZyb20gXCIuL2NvbW1vblwiO1xuaW1wb3J0IHsgQ2xvc2VJY29uLCBQaW5JY29uIH0gZnJvbSBcIi4uL2ljb25zXCI7XG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSBcIi4uL1Rvb2x0aXBcIjtcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCIuLi9CdXR0b25cIjtcbmV4cG9ydCBjb25zdCBTaWRlYmFySGVhZGVyID0gKHtcbiAgY2hpbGRyZW4sXG4gIGNsYXNzTmFtZVxufSkgPT4ge1xuICBjb25zdCBkZXZpY2UgPSB1c2VEZXZpY2UoKTtcbiAgY29uc3QgcHJvcHMgPSB1c2VDb250ZXh0KFNpZGViYXJQcm9wc0NvbnRleHQpO1xuICBjb25zdCByZW5kZXJEb2NrQnV0dG9uID0gISEoZGV2aWNlLmVkaXRvci5jYW5GaXRTaWRlYmFyICYmIHByb3BzLnNob3VsZFJlbmRlckRvY2tCdXR0b24pO1xuICByZXR1cm4gX2pzeHMoXCJkaXZcIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgY2xhc3NOYW1lOiBjbHN4KFwic2lkZWJhcl9faGVhZGVyXCIsIGNsYXNzTmFtZSksXG4gICAgXCJkYXRhLXRlc3RpZFwiOiBcInNpZGViYXItaGVhZGVyXCJcbiAgfSwge1xuICAgIGNoaWxkcmVuOiBbY2hpbGRyZW4sIF9qc3hzKFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oe1xuICAgICAgY2xhc3NOYW1lOiBcInNpZGViYXJfX2hlYWRlcl9fYnV0dG9uc1wiXG4gICAgfSwge1xuICAgICAgY2hpbGRyZW46IFtyZW5kZXJEb2NrQnV0dG9uICYmIF9qc3goVG9vbHRpcCwgT2JqZWN0LmFzc2lnbih7XG4gICAgICAgIGxhYmVsOiB0KFwibGFiZWxzLnNpZGViYXJMb2NrXCIpXG4gICAgICB9LCB7XG4gICAgICAgIGNoaWxkcmVuOiBfanN4KEJ1dHRvbiwgT2JqZWN0LmFzc2lnbih7XG4gICAgICAgICAgb25TZWxlY3Q6ICgpID0+IHtcbiAgICAgICAgICAgIHZhciBfYTtcblxuICAgICAgICAgICAgcmV0dXJuIChfYSA9IHByb3BzLm9uRG9jaykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwocHJvcHMsICFwcm9wcy5kb2NrZWQpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZWN0ZWQ6ICEhcHJvcHMuZG9ja2VkLFxuICAgICAgICAgIGNsYXNzTmFtZTogXCJzaWRlYmFyX19kb2NrXCIsXG4gICAgICAgICAgXCJkYXRhLXRlc3RpZFwiOiBcInNpZGViYXItZG9ja1wiLFxuICAgICAgICAgIFwiYXJpYS1sYWJlbFwiOiB0KFwibGFiZWxzLnNpZGViYXJMb2NrXCIpXG4gICAgICAgIH0sIHtcbiAgICAgICAgICBjaGlsZHJlbjogUGluSWNvblxuICAgICAgICB9KSlcbiAgICAgIH0pKSwgX2pzeChCdXR0b24sIE9iamVjdC5hc3NpZ24oe1xuICAgICAgICBcImRhdGEtdGVzdGlkXCI6IFwic2lkZWJhci1jbG9zZVwiLFxuICAgICAgICBjbGFzc05hbWU6IFwic2lkZWJhcl9fY2xvc2VcIixcbiAgICAgICAgb25TZWxlY3Q6IHByb3BzLm9uQ2xvc2VSZXF1ZXN0LFxuICAgICAgICBcImFyaWEtbGFiZWxcIjogdChcImJ1dHRvbnMuY2xvc2VcIilcbiAgICAgIH0sIHtcbiAgICAgICAgY2hpbGRyZW46IENsb3NlSWNvblxuICAgICAgfSkpXVxuICAgIH0pKV1cbiAgfSkpO1xufTtcblNpZGViYXJIZWFkZXIuZGlzcGxheU5hbWUgPSBcIlNpZGViYXJIZWFkZXJcIjsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/Sidebar/SidebarHeader.tsx\n');
              }
            ),
            /***/
            "../../components/Sidebar/SidebarTab.tsx": (
              /*!***********************************************!*\
                !*** ../../components/Sidebar/SidebarTab.tsx ***!
                \***********************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "SidebarTab": () => (/* binding */ SidebarTab)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var _radix_ui_react_tabs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @radix-ui/react-tabs */ "../../../node_modules/@radix-ui/react-tabs/dist/index.module.js");\nvar __rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n\n  if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\nconst SidebarTab = _a => {\n  var {\n    tab,\n    children\n  } = _a,\n      rest = __rest(_a, ["tab", "children"]);\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_radix_ui_react_tabs__WEBPACK_IMPORTED_MODULE_1__.Content, Object.assign({}, rest, {\n    value: tab\n  }, {\n    children: children\n  }));\n};\nSidebarTab.displayName = "SidebarTab";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9TaWRlYmFyL1NpZGViYXJUYWIudHN4LmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGFBQWEsU0FBSSxJQUFJLFNBQUk7QUFDekI7O0FBRUE7O0FBRUEsNEhBQTRILGNBQWM7QUFDMUk7QUFDQTtBQUNBO0FBQ0E7O0FBRWdEO0FBQ0U7QUFDM0M7QUFDUDtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7O0FBRUEsU0FBUyxzREFBSSxDQUFDLHlEQUFpQixrQkFBa0I7QUFDakQ7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL1NpZGViYXIvU2lkZWJhclRhYi50c3g/YjE3OCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19yZXN0ID0gdGhpcyAmJiB0aGlzLl9fcmVzdCB8fCBmdW5jdGlvbiAocywgZSkge1xuICB2YXIgdCA9IHt9O1xuXG4gIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKSB0W3BdID0gc1twXTtcblxuICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpIHRbcFtpXV0gPSBzW3BbaV1dO1xuICB9XG4gIHJldHVybiB0O1xufTtcblxuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCAqIGFzIFJhZGl4VGFicyBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXRhYnNcIjtcbmV4cG9ydCBjb25zdCBTaWRlYmFyVGFiID0gX2EgPT4ge1xuICB2YXIge1xuICAgIHRhYixcbiAgICBjaGlsZHJlblxuICB9ID0gX2EsXG4gICAgICByZXN0ID0gX19yZXN0KF9hLCBbXCJ0YWJcIiwgXCJjaGlsZHJlblwiXSk7XG5cbiAgcmV0dXJuIF9qc3goUmFkaXhUYWJzLkNvbnRlbnQsIE9iamVjdC5hc3NpZ24oe30sIHJlc3QsIHtcbiAgICB2YWx1ZTogdGFiXG4gIH0sIHtcbiAgICBjaGlsZHJlbjogY2hpbGRyZW5cbiAgfSkpO1xufTtcblNpZGViYXJUYWIuZGlzcGxheU5hbWUgPSBcIlNpZGViYXJUYWJcIjsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/Sidebar/SidebarTab.tsx\n');
              }
            ),
            /***/
            "../../components/Sidebar/SidebarTabTrigger.tsx": (
              /*!******************************************************!*\
                !*** ../../components/Sidebar/SidebarTabTrigger.tsx ***!
                \******************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "SidebarTabTrigger": () => (/* binding */ SidebarTabTrigger)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var _radix_ui_react_tabs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @radix-ui/react-tabs */ "../../../node_modules/@radix-ui/react-tabs/dist/index.module.js");\nvar __rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n\n  if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\nconst SidebarTabTrigger = _a => {\n  var {\n    children,\n    tab,\n    onSelect\n  } = _a,\n      rest = __rest(_a, ["children", "tab", "onSelect"]);\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_radix_ui_react_tabs__WEBPACK_IMPORTED_MODULE_1__.Trigger, Object.assign({\n    value: tab,\n    asChild: true,\n    onSelect: onSelect\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("button", Object.assign({\n      type: "button",\n      className: `excalidraw-button sidebar-tab-trigger`\n    }, rest, {\n      children: children\n    }))\n  }));\n};\nSidebarTabTrigger.displayName = "SidebarTabTrigger";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9TaWRlYmFyL1NpZGViYXJUYWJUcmlnZ2VyLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxhQUFhLFNBQUksSUFBSSxTQUFJO0FBQ3pCOztBQUVBOztBQUVBLDRIQUE0SCxjQUFjO0FBQzFJO0FBQ0E7QUFDQTtBQUNBOztBQUVnRDtBQUNFO0FBQzNDO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7O0FBRUEsU0FBUyxzREFBSSxDQUFDLHlEQUFpQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsY0FBYyxzREFBSTtBQUNsQjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvU2lkZWJhci9TaWRlYmFyVGFiVHJpZ2dlci50c3g/MTNjZCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19yZXN0ID0gdGhpcyAmJiB0aGlzLl9fcmVzdCB8fCBmdW5jdGlvbiAocywgZSkge1xuICB2YXIgdCA9IHt9O1xuXG4gIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKSB0W3BdID0gc1twXTtcblxuICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpIHRbcFtpXV0gPSBzW3BbaV1dO1xuICB9XG4gIHJldHVybiB0O1xufTtcblxuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCAqIGFzIFJhZGl4VGFicyBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXRhYnNcIjtcbmV4cG9ydCBjb25zdCBTaWRlYmFyVGFiVHJpZ2dlciA9IF9hID0+IHtcbiAgdmFyIHtcbiAgICBjaGlsZHJlbixcbiAgICB0YWIsXG4gICAgb25TZWxlY3RcbiAgfSA9IF9hLFxuICAgICAgcmVzdCA9IF9fcmVzdChfYSwgW1wiY2hpbGRyZW5cIiwgXCJ0YWJcIiwgXCJvblNlbGVjdFwiXSk7XG5cbiAgcmV0dXJuIF9qc3goUmFkaXhUYWJzLlRyaWdnZXIsIE9iamVjdC5hc3NpZ24oe1xuICAgIHZhbHVlOiB0YWIsXG4gICAgYXNDaGlsZDogdHJ1ZSxcbiAgICBvblNlbGVjdDogb25TZWxlY3RcbiAgfSwge1xuICAgIGNoaWxkcmVuOiBfanN4KFwiYnV0dG9uXCIsIE9iamVjdC5hc3NpZ24oe1xuICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgIGNsYXNzTmFtZTogYGV4Y2FsaWRyYXctYnV0dG9uIHNpZGViYXItdGFiLXRyaWdnZXJgXG4gICAgfSwgcmVzdCwge1xuICAgICAgY2hpbGRyZW46IGNoaWxkcmVuXG4gICAgfSkpXG4gIH0pKTtcbn07XG5TaWRlYmFyVGFiVHJpZ2dlci5kaXNwbGF5TmFtZSA9IFwiU2lkZWJhclRhYlRyaWdnZXJcIjsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/Sidebar/SidebarTabTrigger.tsx\n');
              }
            ),
            /***/
            "../../components/Sidebar/SidebarTabTriggers.tsx": (
              /*!*******************************************************!*\
                !*** ../../components/Sidebar/SidebarTabTriggers.tsx ***!
                \*******************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "SidebarTabTriggers": () => (/* binding */ SidebarTabTriggers)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var _radix_ui_react_tabs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @radix-ui/react-tabs */ "../../../node_modules/@radix-ui/react-tabs/dist/index.module.js");\nvar __rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n\n  if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\nconst SidebarTabTriggers = _a => {\n  var {\n    children\n  } = _a,\n      rest = __rest(_a, ["children"]);\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_radix_ui_react_tabs__WEBPACK_IMPORTED_MODULE_1__.List, Object.assign({\n    className: "sidebar-triggers"\n  }, rest, {\n    children: children\n  }));\n};\nSidebarTabTriggers.displayName = "SidebarTabTriggers";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9TaWRlYmFyL1NpZGViYXJUYWJUcmlnZ2Vycy50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsYUFBYSxTQUFJLElBQUksU0FBSTtBQUN6Qjs7QUFFQTs7QUFFQSw0SEFBNEgsY0FBYztBQUMxSTtBQUNBO0FBQ0E7QUFDQTs7QUFFZ0Q7QUFDRTtBQUMzQztBQUNQO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7O0FBRUEsU0FBUyxzREFBSSxDQUFDLHNEQUFjO0FBQzVCO0FBQ0EsR0FBRztBQUNIO0FBQ0EsR0FBRztBQUNIO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9TaWRlYmFyL1NpZGViYXJUYWJUcmlnZ2Vycy50c3g/NjYxOSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19yZXN0ID0gdGhpcyAmJiB0aGlzLl9fcmVzdCB8fCBmdW5jdGlvbiAocywgZSkge1xuICB2YXIgdCA9IHt9O1xuXG4gIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKSB0W3BdID0gc1twXTtcblxuICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpIHRbcFtpXV0gPSBzW3BbaV1dO1xuICB9XG4gIHJldHVybiB0O1xufTtcblxuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCAqIGFzIFJhZGl4VGFicyBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXRhYnNcIjtcbmV4cG9ydCBjb25zdCBTaWRlYmFyVGFiVHJpZ2dlcnMgPSBfYSA9PiB7XG4gIHZhciB7XG4gICAgY2hpbGRyZW5cbiAgfSA9IF9hLFxuICAgICAgcmVzdCA9IF9fcmVzdChfYSwgW1wiY2hpbGRyZW5cIl0pO1xuXG4gIHJldHVybiBfanN4KFJhZGl4VGFicy5MaXN0LCBPYmplY3QuYXNzaWduKHtcbiAgICBjbGFzc05hbWU6IFwic2lkZWJhci10cmlnZ2Vyc1wiXG4gIH0sIHJlc3QsIHtcbiAgICBjaGlsZHJlbjogY2hpbGRyZW5cbiAgfSkpO1xufTtcblNpZGViYXJUYWJUcmlnZ2Vycy5kaXNwbGF5TmFtZSA9IFwiU2lkZWJhclRhYlRyaWdnZXJzXCI7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/Sidebar/SidebarTabTriggers.tsx\n');
              }
            ),
            /***/
            "../../components/Sidebar/SidebarTabs.tsx": (
              /*!************************************************!*\
                !*** ../../components/Sidebar/SidebarTabs.tsx ***!
                \************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "SidebarTabs": () => (/* binding */ SidebarTabs)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var _radix_ui_react_tabs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @radix-ui/react-tabs */ "../../../node_modules/@radix-ui/react-tabs/dist/index.module.js");\n/* harmony import */ var _context_ui_appState__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../context/ui-appState */ "../../context/ui-appState.ts");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../App */ "../../components/App.tsx");\nvar __rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n\n  if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\nconst SidebarTabs = _a => {\n  var {\n    children\n  } = _a,\n      rest = __rest(_a, ["children"]);\n\n  const appState = (0,_context_ui_appState__WEBPACK_IMPORTED_MODULE_1__.useUIAppState)();\n  const setAppState = (0,_App__WEBPACK_IMPORTED_MODULE_2__.useExcalidrawSetAppState)();\n\n  if (!appState.openSidebar) {\n    return null;\n  }\n\n  const {\n    name\n  } = appState.openSidebar;\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_radix_ui_react_tabs__WEBPACK_IMPORTED_MODULE_3__.Root, Object.assign({\n    className: "sidebar-tabs-root",\n    value: appState.openSidebar.tab,\n    onValueChange: tab => setAppState(state => Object.assign(Object.assign({}, state), {\n      openSidebar: Object.assign(Object.assign({}, state.openSidebar), {\n        name,\n        tab\n      })\n    }))\n  }, rest, {\n    children: children\n  }));\n};\nSidebarTabs.displayName = "SidebarTabs";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9TaWRlYmFyL1NpZGViYXJUYWJzLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLGFBQWEsU0FBSSxJQUFJLFNBQUk7QUFDekI7O0FBRUE7O0FBRUEsNEhBQTRILGNBQWM7QUFDMUk7QUFDQTtBQUNBO0FBQ0E7O0FBRWdEO0FBQ0U7QUFDUTtBQUNSO0FBQzNDO0FBQ1A7QUFDQTtBQUNBLElBQUk7QUFDSjs7QUFFQSxtQkFBbUIsbUVBQWE7QUFDaEMsc0JBQXNCLDhEQUF3Qjs7QUFFOUM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osU0FBUyxzREFBSSxDQUFDLHNEQUFjO0FBQzVCO0FBQ0E7QUFDQSw2RUFBNkU7QUFDN0UsaURBQWlEO0FBQ2pEO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBLEdBQUc7QUFDSDtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvU2lkZWJhci9TaWRlYmFyVGFicy50c3g/MDE5ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19yZXN0ID0gdGhpcyAmJiB0aGlzLl9fcmVzdCB8fCBmdW5jdGlvbiAocywgZSkge1xuICB2YXIgdCA9IHt9O1xuXG4gIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKSB0W3BdID0gc1twXTtcblxuICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpIHRbcFtpXV0gPSBzW3BbaV1dO1xuICB9XG4gIHJldHVybiB0O1xufTtcblxuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCAqIGFzIFJhZGl4VGFicyBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXRhYnNcIjtcbmltcG9ydCB7IHVzZVVJQXBwU3RhdGUgfSBmcm9tIFwiLi4vLi4vY29udGV4dC91aS1hcHBTdGF0ZVwiO1xuaW1wb3J0IHsgdXNlRXhjYWxpZHJhd1NldEFwcFN0YXRlIH0gZnJvbSBcIi4uL0FwcFwiO1xuZXhwb3J0IGNvbnN0IFNpZGViYXJUYWJzID0gX2EgPT4ge1xuICB2YXIge1xuICAgIGNoaWxkcmVuXG4gIH0gPSBfYSxcbiAgICAgIHJlc3QgPSBfX3Jlc3QoX2EsIFtcImNoaWxkcmVuXCJdKTtcblxuICBjb25zdCBhcHBTdGF0ZSA9IHVzZVVJQXBwU3RhdGUoKTtcbiAgY29uc3Qgc2V0QXBwU3RhdGUgPSB1c2VFeGNhbGlkcmF3U2V0QXBwU3RhdGUoKTtcblxuICBpZiAoIWFwcFN0YXRlLm9wZW5TaWRlYmFyKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCB7XG4gICAgbmFtZVxuICB9ID0gYXBwU3RhdGUub3BlblNpZGViYXI7XG4gIHJldHVybiBfanN4KFJhZGl4VGFicy5Sb290LCBPYmplY3QuYXNzaWduKHtcbiAgICBjbGFzc05hbWU6IFwic2lkZWJhci10YWJzLXJvb3RcIixcbiAgICB2YWx1ZTogYXBwU3RhdGUub3BlblNpZGViYXIudGFiLFxuICAgIG9uVmFsdWVDaGFuZ2U6IHRhYiA9PiBzZXRBcHBTdGF0ZShzdGF0ZSA9PiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHN0YXRlKSwge1xuICAgICAgb3BlblNpZGViYXI6IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUub3BlblNpZGViYXIpLCB7XG4gICAgICAgIG5hbWUsXG4gICAgICAgIHRhYlxuICAgICAgfSlcbiAgICB9KSlcbiAgfSwgcmVzdCwge1xuICAgIGNoaWxkcmVuOiBjaGlsZHJlblxuICB9KSk7XG59O1xuU2lkZWJhclRhYnMuZGlzcGxheU5hbWUgPSBcIlNpZGViYXJUYWJzXCI7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/Sidebar/SidebarTabs.tsx\n');
              }
            ),
            /***/
            "../../components/Sidebar/SidebarTrigger.tsx": (
              /*!***************************************************!*\
                !*** ../../components/Sidebar/SidebarTrigger.tsx ***!
                \***************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "SidebarTrigger": () => (/* binding */ SidebarTrigger)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../App */ "../../components/App.tsx");\n/* harmony import */ var _context_ui_appState__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../context/ui-appState */ "../../context/ui-appState.ts");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _SidebarTrigger_scss__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./SidebarTrigger.scss */ "../../components/Sidebar/SidebarTrigger.scss");\n\n\n\n\n\nconst SidebarTrigger = ({\n  name,\n  tab,\n  icon,\n  title,\n  children,\n  onToggle,\n  className,\n  style\n}) => {\n  var _a;\n\n  const setAppState = (0,_App__WEBPACK_IMPORTED_MODULE_1__.useExcalidrawSetAppState)();\n  const appState = (0,_context_ui_appState__WEBPACK_IMPORTED_MODULE_2__.useUIAppState)();\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("label", Object.assign({\n    title: title\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input", {\n      className: "ToolIcon_type_checkbox",\n      type: "checkbox",\n      onChange: event => {\n        var _a;\n\n        (_a = document.querySelector(".layer-ui__wrapper")) === null || _a === void 0 ? void 0 : _a.classList.remove("animate");\n        const isOpen = event.target.checked;\n        setAppState({\n          openSidebar: isOpen ? {\n            name,\n            tab\n          } : null\n        });\n        onToggle === null || onToggle === void 0 ? void 0 : onToggle(isOpen);\n      },\n      checked: ((_a = appState.openSidebar) === null || _a === void 0 ? void 0 : _a.name) === name,\n      "aria-label": title,\n      "aria-keyshortcuts": "0"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__["default"])("sidebar-trigger", className),\n      style: style\n    }, {\n      children: [icon && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n        children: icon\n      }), children && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n        className: "sidebar-trigger__label"\n      }, {\n        children: children\n      }))]\n    }))]\n  }));\n};\nSidebarTrigger.displayName = "SidebarTrigger";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9TaWRlYmFyL1NpZGViYXJUcmlnZ2VyLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBK0Q7QUFDYjtBQUNRO0FBQ2xDO0FBQ087QUFDeEI7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEOztBQUVBLHNCQUFzQiw4REFBd0I7QUFDOUMsbUJBQW1CLG1FQUFhO0FBQ2hDLFNBQVMsdURBQUs7QUFDZDtBQUNBLEdBQUc7QUFDSCxlQUFlLHNEQUFJO0FBQ25CO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWixTQUFTO0FBQ1Q7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsS0FBSyxHQUFHLHVEQUFLO0FBQ2IsaUJBQWlCLGdEQUFJO0FBQ3JCO0FBQ0EsS0FBSztBQUNMLHlCQUF5QixzREFBSTtBQUM3QjtBQUNBLE9BQU8sZUFBZSxzREFBSTtBQUMxQjtBQUNBLE9BQU87QUFDUDtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9TaWRlYmFyL1NpZGViYXJUcmlnZ2VyLnRzeD9lYTgzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyB1c2VFeGNhbGlkcmF3U2V0QXBwU3RhdGUgfSBmcm9tIFwiLi4vQXBwXCI7XG5pbXBvcnQgeyB1c2VVSUFwcFN0YXRlIH0gZnJvbSBcIi4uLy4uL2NvbnRleHQvdWktYXBwU3RhdGVcIjtcbmltcG9ydCBjbHN4IGZyb20gXCJjbHN4XCI7XG5pbXBvcnQgXCIuL1NpZGViYXJUcmlnZ2VyLnNjc3NcIjtcbmV4cG9ydCBjb25zdCBTaWRlYmFyVHJpZ2dlciA9ICh7XG4gIG5hbWUsXG4gIHRhYixcbiAgaWNvbixcbiAgdGl0bGUsXG4gIGNoaWxkcmVuLFxuICBvblRvZ2dsZSxcbiAgY2xhc3NOYW1lLFxuICBzdHlsZVxufSkgPT4ge1xuICB2YXIgX2E7XG5cbiAgY29uc3Qgc2V0QXBwU3RhdGUgPSB1c2VFeGNhbGlkcmF3U2V0QXBwU3RhdGUoKTtcbiAgY29uc3QgYXBwU3RhdGUgPSB1c2VVSUFwcFN0YXRlKCk7XG4gIHJldHVybiBfanN4cyhcImxhYmVsXCIsIE9iamVjdC5hc3NpZ24oe1xuICAgIHRpdGxlOiB0aXRsZVxuICB9LCB7XG4gICAgY2hpbGRyZW46IFtfanN4KFwiaW5wdXRcIiwge1xuICAgICAgY2xhc3NOYW1lOiBcIlRvb2xJY29uX3R5cGVfY2hlY2tib3hcIixcbiAgICAgIHR5cGU6IFwiY2hlY2tib3hcIixcbiAgICAgIG9uQ2hhbmdlOiBldmVudCA9PiB7XG4gICAgICAgIHZhciBfYTtcblxuICAgICAgICAoX2EgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiLmxheWVyLXVpX193cmFwcGVyXCIpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2xhc3NMaXN0LnJlbW92ZShcImFuaW1hdGVcIik7XG4gICAgICAgIGNvbnN0IGlzT3BlbiA9IGV2ZW50LnRhcmdldC5jaGVja2VkO1xuICAgICAgICBzZXRBcHBTdGF0ZSh7XG4gICAgICAgICAgb3BlblNpZGViYXI6IGlzT3BlbiA/IHtcbiAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICB0YWJcbiAgICAgICAgICB9IDogbnVsbFxuICAgICAgICB9KTtcbiAgICAgICAgb25Ub2dnbGUgPT09IG51bGwgfHwgb25Ub2dnbGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uVG9nZ2xlKGlzT3Blbik7XG4gICAgICB9LFxuICAgICAgY2hlY2tlZDogKChfYSA9IGFwcFN0YXRlLm9wZW5TaWRlYmFyKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubmFtZSkgPT09IG5hbWUsXG4gICAgICBcImFyaWEtbGFiZWxcIjogdGl0bGUsXG4gICAgICBcImFyaWEta2V5c2hvcnRjdXRzXCI6IFwiMFwiXG4gICAgfSksIF9qc3hzKFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oe1xuICAgICAgY2xhc3NOYW1lOiBjbHN4KFwic2lkZWJhci10cmlnZ2VyXCIsIGNsYXNzTmFtZSksXG4gICAgICBzdHlsZTogc3R5bGVcbiAgICB9LCB7XG4gICAgICBjaGlsZHJlbjogW2ljb24gJiYgX2pzeChcImRpdlwiLCB7XG4gICAgICAgIGNoaWxkcmVuOiBpY29uXG4gICAgICB9KSwgY2hpbGRyZW4gJiYgX2pzeChcImRpdlwiLCBPYmplY3QuYXNzaWduKHtcbiAgICAgICAgY2xhc3NOYW1lOiBcInNpZGViYXItdHJpZ2dlcl9fbGFiZWxcIlxuICAgICAgfSwge1xuICAgICAgICBjaGlsZHJlbjogY2hpbGRyZW5cbiAgICAgIH0pKV1cbiAgICB9KSldXG4gIH0pKTtcbn07XG5TaWRlYmFyVHJpZ2dlci5kaXNwbGF5TmFtZSA9IFwiU2lkZWJhclRyaWdnZXJcIjsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/Sidebar/SidebarTrigger.tsx\n');
              }
            ),
            /***/
            "../../components/Sidebar/common.ts": (
              /*!******************************************!*\
                !*** ../../components/Sidebar/common.ts ***!
                \******************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "SidebarPropsContext": () => (/* binding */ SidebarPropsContext)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n\nconst SidebarPropsContext = react__WEBPACK_IMPORTED_MODULE_0___default().createContext({});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9TaWRlYmFyL2NvbW1vbi50cy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBMEI7QUFDbkIsNEJBQTRCLDBEQUFtQixHQUFHIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvU2lkZWJhci9jb21tb24udHM/NmY4MCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5leHBvcnQgY29uc3QgU2lkZWJhclByb3BzQ29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQoe30pOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/Sidebar/common.ts\n');
              }
            ),
            /***/
            "../../components/Spinner.tsx": (
              /*!************************************!*\
                !*** ../../components/Spinner.tsx ***!
                \************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _Spinner_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Spinner.scss */ "../../components/Spinner.scss");\n\n\n\n\nconst Spinner = ({\n  size = "1em",\n  circleWidth = 8,\n  synchronized = false\n}) => {\n  const mountTime = react__WEBPACK_IMPORTED_MODULE_1___default().useRef(Date.now());\n  const mountDelay = -(mountTime.current % 1600);\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: "Spinner"\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("svg", Object.assign({\n      viewBox: "0 0 100 100",\n      style: {\n        width: size,\n        height: size,\n        // fix for remounting causing spinner flicker\n        ["--spinner-delay"]: synchronized ? `${mountDelay}ms` : 0\n      }\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("circle", {\n        cx: "50",\n        cy: "50",\n        r: 50 - circleWidth / 2,\n        strokeWidth: circleWidth,\n        fill: "none",\n        strokeMiterlimit: "10"\n      })\n    }))\n  }));\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Spinner);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9TcGlubmVyLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFnRDtBQUN0QjtBQUNGOztBQUV4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCxvQkFBb0IsbURBQVk7QUFDaEM7QUFDQSxTQUFTLHNEQUFJO0FBQ2I7QUFDQSxHQUFHO0FBQ0gsY0FBYyxzREFBSTtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0NBQStDLFdBQVc7QUFDMUQ7QUFDQSxLQUFLO0FBQ0wsZ0JBQWdCLHNEQUFJO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0wsR0FBRztBQUNIOztBQUVBLGlFQUFlLE9BQU8iLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9TcGlubmVyLnRzeD83NDYyIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgXCIuL1NwaW5uZXIuc2Nzc1wiO1xuXG5jb25zdCBTcGlubmVyID0gKHtcbiAgc2l6ZSA9IFwiMWVtXCIsXG4gIGNpcmNsZVdpZHRoID0gOCxcbiAgc3luY2hyb25pemVkID0gZmFsc2Vcbn0pID0+IHtcbiAgY29uc3QgbW91bnRUaW1lID0gUmVhY3QudXNlUmVmKERhdGUubm93KCkpO1xuICBjb25zdCBtb3VudERlbGF5ID0gLShtb3VudFRpbWUuY3VycmVudCAlIDE2MDApO1xuICByZXR1cm4gX2pzeChcImRpdlwiLCBPYmplY3QuYXNzaWduKHtcbiAgICBjbGFzc05hbWU6IFwiU3Bpbm5lclwiXG4gIH0sIHtcbiAgICBjaGlsZHJlbjogX2pzeChcInN2Z1wiLCBPYmplY3QuYXNzaWduKHtcbiAgICAgIHZpZXdCb3g6IFwiMCAwIDEwMCAxMDBcIixcbiAgICAgIHN0eWxlOiB7XG4gICAgICAgIHdpZHRoOiBzaXplLFxuICAgICAgICBoZWlnaHQ6IHNpemUsXG4gICAgICAgIC8vIGZpeCBmb3IgcmVtb3VudGluZyBjYXVzaW5nIHNwaW5uZXIgZmxpY2tlclxuICAgICAgICBbXCItLXNwaW5uZXItZGVsYXlcIl06IHN5bmNocm9uaXplZCA/IGAke21vdW50RGVsYXl9bXNgIDogMFxuICAgICAgfVxuICAgIH0sIHtcbiAgICAgIGNoaWxkcmVuOiBfanN4KFwiY2lyY2xlXCIsIHtcbiAgICAgICAgY3g6IFwiNTBcIixcbiAgICAgICAgY3k6IFwiNTBcIixcbiAgICAgICAgcjogNTAgLSBjaXJjbGVXaWR0aCAvIDIsXG4gICAgICAgIHN0cm9rZVdpZHRoOiBjaXJjbGVXaWR0aCxcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZU1pdGVybGltaXQ6IFwiMTBcIlxuICAgICAgfSlcbiAgICB9KSlcbiAgfSkpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU3Bpbm5lcjsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/Spinner.tsx\n');
              }
            ),
            /***/
            "../../components/Stack.tsx": (
              /*!**********************************!*\
                !*** ../../components/Stack.tsx ***!
                \**********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var _Stack_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Stack.scss */ "../../components/Stack.scss");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n\n\n\n\nconst RowStack = (0,react__WEBPACK_IMPORTED_MODULE_2__.forwardRef)(({\n  children,\n  gap,\n  align,\n  justifyContent,\n  className,\n  style\n}, ref) => {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__["default"])("Stack Stack_horizontal", className),\n    style: Object.assign({\n      "--gap": gap,\n      alignItems: align,\n      justifyContent\n    }, style),\n    ref: ref\n  }, {\n    children: children\n  }));\n});\nconst ColStack = (0,react__WEBPACK_IMPORTED_MODULE_2__.forwardRef)(({\n  children,\n  gap,\n  align,\n  justifyContent,\n  className,\n  style\n}, ref) => {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__["default"])("Stack Stack_vertical", className),\n    style: Object.assign({\n      "--gap": gap,\n      justifyItems: align,\n      justifyContent\n    }, style),\n    ref: ref\n  }, {\n    children: children\n  }));\n});\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n  Row: RowStack,\n  Col: ColStack\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9TdGFjay50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQWdEO0FBQzFCO0FBQ29CO0FBQ2xCO0FBQ3hCLGlCQUFpQixpREFBVTtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsU0FBUyxzREFBSTtBQUNiLGVBQWUsZ0RBQUk7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0gsQ0FBQztBQUNELGlCQUFpQixpREFBVTtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsU0FBUyxzREFBSTtBQUNiLGVBQWUsZ0RBQUk7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0gsQ0FBQztBQUNELGlFQUFlO0FBQ2Y7QUFDQTtBQUNBLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9TdGFjay50c3g/Mjc4NCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IFwiLi9TdGFjay5zY3NzXCI7XG5pbXBvcnQgUmVhY3QsIHsgZm9yd2FyZFJlZiB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IGNsc3ggZnJvbSBcImNsc3hcIjtcbmNvbnN0IFJvd1N0YWNrID0gZm9yd2FyZFJlZigoe1xuICBjaGlsZHJlbixcbiAgZ2FwLFxuICBhbGlnbixcbiAganVzdGlmeUNvbnRlbnQsXG4gIGNsYXNzTmFtZSxcbiAgc3R5bGVcbn0sIHJlZikgPT4ge1xuICByZXR1cm4gX2pzeChcImRpdlwiLCBPYmplY3QuYXNzaWduKHtcbiAgICBjbGFzc05hbWU6IGNsc3goXCJTdGFjayBTdGFja19ob3Jpem9udGFsXCIsIGNsYXNzTmFtZSksXG4gICAgc3R5bGU6IE9iamVjdC5hc3NpZ24oe1xuICAgICAgXCItLWdhcFwiOiBnYXAsXG4gICAgICBhbGlnbkl0ZW1zOiBhbGlnbixcbiAgICAgIGp1c3RpZnlDb250ZW50XG4gICAgfSwgc3R5bGUpLFxuICAgIHJlZjogcmVmXG4gIH0sIHtcbiAgICBjaGlsZHJlbjogY2hpbGRyZW5cbiAgfSkpO1xufSk7XG5jb25zdCBDb2xTdGFjayA9IGZvcndhcmRSZWYoKHtcbiAgY2hpbGRyZW4sXG4gIGdhcCxcbiAgYWxpZ24sXG4gIGp1c3RpZnlDb250ZW50LFxuICBjbGFzc05hbWUsXG4gIHN0eWxlXG59LCByZWYpID0+IHtcbiAgcmV0dXJuIF9qc3goXCJkaXZcIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgY2xhc3NOYW1lOiBjbHN4KFwiU3RhY2sgU3RhY2tfdmVydGljYWxcIiwgY2xhc3NOYW1lKSxcbiAgICBzdHlsZTogT2JqZWN0LmFzc2lnbih7XG4gICAgICBcIi0tZ2FwXCI6IGdhcCxcbiAgICAgIGp1c3RpZnlJdGVtczogYWxpZ24sXG4gICAgICBqdXN0aWZ5Q29udGVudFxuICAgIH0sIHN0eWxlKSxcbiAgICByZWY6IHJlZlxuICB9LCB7XG4gICAgY2hpbGRyZW46IGNoaWxkcmVuXG4gIH0pKTtcbn0pO1xuZXhwb3J0IGRlZmF1bHQge1xuICBSb3c6IFJvd1N0YWNrLFxuICBDb2w6IENvbFN0YWNrXG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/Stack.tsx\n');
              }
            ),
            /***/
            "../../components/Stats.tsx": (
              /*!**********************************!*\
                !*** ../../components/Stats.tsx ***!
                \**********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "Stats": () => (/* binding */ Stats)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _element_bounds__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../element/bounds */ "../../element/bounds.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../scene */ "../../scene/index.ts");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./icons */ "../../components/icons.tsx");\n/* harmony import */ var _Island__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Island */ "../../components/Island.tsx");\n/* harmony import */ var _Stats_scss__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./Stats.scss */ "../../components/Stats.scss");\n\n\n\n\n\n\n\n\nconst Stats = props => {\n  var _a;\n\n  const boundingBox = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_2__.getCommonBounds)(props.elements);\n  const selectedElements = (0,_scene__WEBPACK_IMPORTED_MODULE_4__.getTargetElements)(props.elements, props.appState);\n  const selectedBoundingBox = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_2__.getCommonBounds)(selectedElements);\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: "Stats"\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Island__WEBPACK_IMPORTED_MODULE_6__.Island, Object.assign({\n      padding: 2\n    }, {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n        className: "close",\n        onClick: props.onClose\n      }, {\n        children: _icons__WEBPACK_IMPORTED_MODULE_5__.CloseIcon\n      })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("h3", {\n        children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("stats.title")\n      }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("table", {\n        children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("tbody", {\n          children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("tr", {\n            children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("th", Object.assign({\n              colSpan: 2\n            }, {\n              children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("stats.scene")\n            }))\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("tr", {\n            children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("td", {\n              children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("stats.elements")\n            }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("td", {\n              children: props.elements.length\n            })]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("tr", {\n            children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("td", {\n              children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("stats.width")\n            }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("td", {\n              children: Math.round(boundingBox[2]) - Math.round(boundingBox[0])\n            })]\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("tr", {\n            children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("td", {\n              children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("stats.height")\n            }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("td", {\n              children: Math.round(boundingBox[3]) - Math.round(boundingBox[1])\n            })]\n          }), selectedElements.length === 1 && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("tr", {\n            children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("th", Object.assign({\n              colSpan: 2\n            }, {\n              children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("stats.element")\n            }))\n          }), selectedElements.length > 1 && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n            children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("tr", {\n              children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("th", Object.assign({\n                colSpan: 2\n              }, {\n                children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("stats.selected")\n              }))\n            }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("tr", {\n              children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("td", {\n                children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("stats.elements")\n              }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("td", {\n                children: selectedElements.length\n              })]\n            })]\n          }), selectedElements.length > 0 && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n            children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("tr", {\n              children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("td", {\n                children: "x"\n              }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("td", {\n                children: Math.round(selectedBoundingBox[0])\n              })]\n            }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("tr", {\n              children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("td", {\n                children: "y"\n              }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("td", {\n                children: Math.round(selectedBoundingBox[1])\n              })]\n            }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("tr", {\n              children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("td", {\n                children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("stats.width")\n              }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("td", {\n                children: Math.round(selectedBoundingBox[2] - selectedBoundingBox[0])\n              })]\n            }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("tr", {\n              children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("td", {\n                children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("stats.height")\n              }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("td", {\n                children: Math.round(selectedBoundingBox[3] - selectedBoundingBox[1])\n              })]\n            })]\n          }), selectedElements.length === 1 && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("tr", {\n            children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("td", {\n              children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("stats.angle")\n            }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("td", {\n              children: `${Math.round(selectedElements[0].angle * 180 / Math.PI)}\xB0`\n            })]\n          }), (_a = props.renderCustomStats) === null || _a === void 0 ? void 0 : _a.call(props, props.elements, props.appState)]\n        })\n      })]\n    }))\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 7932 characters]\n//# sourceURL=webpack-internal:///../../components/Stats.tsx\n');
              }
            ),
            /***/
            "../../components/Switch.tsx": (
              /*!***********************************!*\
                !*** ../../components/Switch.tsx ***!
                \***********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "Switch": () => (/* binding */ Switch)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _Switch_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Switch.scss */ "../../components/Switch.scss");\n\n\n\nconst Switch = ({\n  title,\n  name,\n  checked,\n  onChange,\n  disabled = false\n}) => {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__["default"])("Switch", {\n      toggled: checked,\n      disabled\n    })\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input", {\n      name: name,\n      id: name,\n      title: title,\n      type: "checkbox",\n      checked: checked,\n      disabled: disabled,\n      onChange: () => onChange(!checked),\n      onKeyDown: event => {\n        if (event.key === " ") {\n          onChange(!checked);\n        }\n      }\n    })\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9Td2l0Y2gudHN4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBZ0Q7QUFDeEI7QUFDRDtBQUNoQjtBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsU0FBUyxzREFBSTtBQUNiLGVBQWUsZ0RBQUk7QUFDbkI7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0gsY0FBYyxzREFBSTtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvU3dpdGNoLnRzeD9kYWRhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgY2xzeCBmcm9tIFwiY2xzeFwiO1xuaW1wb3J0IFwiLi9Td2l0Y2guc2Nzc1wiO1xuZXhwb3J0IGNvbnN0IFN3aXRjaCA9ICh7XG4gIHRpdGxlLFxuICBuYW1lLFxuICBjaGVja2VkLFxuICBvbkNoYW5nZSxcbiAgZGlzYWJsZWQgPSBmYWxzZVxufSkgPT4ge1xuICByZXR1cm4gX2pzeChcImRpdlwiLCBPYmplY3QuYXNzaWduKHtcbiAgICBjbGFzc05hbWU6IGNsc3goXCJTd2l0Y2hcIiwge1xuICAgICAgdG9nZ2xlZDogY2hlY2tlZCxcbiAgICAgIGRpc2FibGVkXG4gICAgfSlcbiAgfSwge1xuICAgIGNoaWxkcmVuOiBfanN4KFwiaW5wdXRcIiwge1xuICAgICAgbmFtZTogbmFtZSxcbiAgICAgIGlkOiBuYW1lLFxuICAgICAgdGl0bGU6IHRpdGxlLFxuICAgICAgdHlwZTogXCJjaGVja2JveFwiLFxuICAgICAgY2hlY2tlZDogY2hlY2tlZCxcbiAgICAgIGRpc2FibGVkOiBkaXNhYmxlZCxcbiAgICAgIG9uQ2hhbmdlOiAoKSA9PiBvbkNoYW5nZSghY2hlY2tlZCksXG4gICAgICBvbktleURvd246IGV2ZW50ID0+IHtcbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gXCIgXCIpIHtcbiAgICAgICAgICBvbkNoYW5nZSghY2hlY2tlZCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KVxuICB9KSk7XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/Switch.tsx\n');
              }
            ),
            /***/
            "../../components/Toast.tsx": (
              /*!**********************************!*\
                !*** ../../components/Toast.tsx ***!
                \**********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "Toast": () => (/* binding */ Toast)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./icons */ "../../components/icons.tsx");\n/* harmony import */ var _Toast_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Toast.scss */ "../../components/Toast.scss");\n/* harmony import */ var _ToolButton__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./ToolButton */ "../../components/ToolButton.tsx");\n\n\n\n\n\nconst DEFAULT_TOAST_TIMEOUT = 5000;\nconst Toast = ({\n  message,\n  onClose,\n  closable = false,\n  // To prevent autoclose, pass duration as Infinity\n  duration = DEFAULT_TOAST_TIMEOUT\n}) => {\n  const timerRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(0);\n  const shouldAutoClose = duration !== Infinity;\n  const scheduleTimeout = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(() => {\n    if (!shouldAutoClose) {\n      return;\n    }\n\n    timerRef.current = window.setTimeout(() => onClose(), duration);\n  }, [onClose, duration, shouldAutoClose]);\n  (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {\n    if (!shouldAutoClose) {\n      return;\n    }\n\n    scheduleTimeout();\n    return () => clearTimeout(timerRef.current);\n  }, [scheduleTimeout, message, duration, shouldAutoClose]);\n  const onMouseEnter = shouldAutoClose ? () => clearTimeout(timerRef === null || timerRef === void 0 ? void 0 : timerRef.current) : undefined;\n  const onMouseLeave = shouldAutoClose ? scheduleTimeout : undefined;\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n    className: "Toast",\n    onMouseEnter: onMouseEnter,\n    onMouseLeave: onMouseLeave\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("p", Object.assign({\n      className: "Toast__message"\n    }, {\n      children: message\n    })), closable && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ToolButton__WEBPACK_IMPORTED_MODULE_4__.ToolButton, {\n      icon: _icons__WEBPACK_IMPORTED_MODULE_2__.CloseIcon,\n      "aria-label": "close",\n      type: "icon",\n      onClick: onClose,\n      className: "close"\n    })]\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9Ub2FzdC50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUErRDtBQUNSO0FBQ25CO0FBQ2Q7QUFDb0I7QUFDMUM7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsbUJBQW1CLDZDQUFNO0FBQ3pCO0FBQ0EsMEJBQTBCLGtEQUFXO0FBQ3JDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSCxFQUFFLGdEQUFTO0FBQ1g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLFNBQVMsdURBQUs7QUFDZDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsZUFBZSxzREFBSTtBQUNuQjtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUssZ0JBQWdCLHNEQUFJLENBQUMsbURBQVU7QUFDcEMsWUFBWSw2Q0FBUztBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0giLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9Ub2FzdC50c3g/NGRiOSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBDbG9zZUljb24gfSBmcm9tIFwiLi9pY29uc1wiO1xuaW1wb3J0IFwiLi9Ub2FzdC5zY3NzXCI7XG5pbXBvcnQgeyBUb29sQnV0dG9uIH0gZnJvbSBcIi4vVG9vbEJ1dHRvblwiO1xuY29uc3QgREVGQVVMVF9UT0FTVF9USU1FT1VUID0gNTAwMDtcbmV4cG9ydCBjb25zdCBUb2FzdCA9ICh7XG4gIG1lc3NhZ2UsXG4gIG9uQ2xvc2UsXG4gIGNsb3NhYmxlID0gZmFsc2UsXG4gIC8vIFRvIHByZXZlbnQgYXV0b2Nsb3NlLCBwYXNzIGR1cmF0aW9uIGFzIEluZmluaXR5XG4gIGR1cmF0aW9uID0gREVGQVVMVF9UT0FTVF9USU1FT1VUXG59KSA9PiB7XG4gIGNvbnN0IHRpbWVyUmVmID0gdXNlUmVmKDApO1xuICBjb25zdCBzaG91bGRBdXRvQ2xvc2UgPSBkdXJhdGlvbiAhPT0gSW5maW5pdHk7XG4gIGNvbnN0IHNjaGVkdWxlVGltZW91dCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoIXNob3VsZEF1dG9DbG9zZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRpbWVyUmVmLmN1cnJlbnQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiBvbkNsb3NlKCksIGR1cmF0aW9uKTtcbiAgfSwgW29uQ2xvc2UsIGR1cmF0aW9uLCBzaG91bGRBdXRvQ2xvc2VdKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXNob3VsZEF1dG9DbG9zZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHNjaGVkdWxlVGltZW91dCgpO1xuICAgIHJldHVybiAoKSA9PiBjbGVhclRpbWVvdXQodGltZXJSZWYuY3VycmVudCk7XG4gIH0sIFtzY2hlZHVsZVRpbWVvdXQsIG1lc3NhZ2UsIGR1cmF0aW9uLCBzaG91bGRBdXRvQ2xvc2VdKTtcbiAgY29uc3Qgb25Nb3VzZUVudGVyID0gc2hvdWxkQXV0b0Nsb3NlID8gKCkgPT4gY2xlYXJUaW1lb3V0KHRpbWVyUmVmID09PSBudWxsIHx8IHRpbWVyUmVmID09PSB2b2lkIDAgPyB2b2lkIDAgOiB0aW1lclJlZi5jdXJyZW50KSA6IHVuZGVmaW5lZDtcbiAgY29uc3Qgb25Nb3VzZUxlYXZlID0gc2hvdWxkQXV0b0Nsb3NlID8gc2NoZWR1bGVUaW1lb3V0IDogdW5kZWZpbmVkO1xuICByZXR1cm4gX2pzeHMoXCJkaXZcIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgY2xhc3NOYW1lOiBcIlRvYXN0XCIsXG4gICAgb25Nb3VzZUVudGVyOiBvbk1vdXNlRW50ZXIsXG4gICAgb25Nb3VzZUxlYXZlOiBvbk1vdXNlTGVhdmVcbiAgfSwge1xuICAgIGNoaWxkcmVuOiBbX2pzeChcInBcIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgICBjbGFzc05hbWU6IFwiVG9hc3RfX21lc3NhZ2VcIlxuICAgIH0sIHtcbiAgICAgIGNoaWxkcmVuOiBtZXNzYWdlXG4gICAgfSkpLCBjbG9zYWJsZSAmJiBfanN4KFRvb2xCdXR0b24sIHtcbiAgICAgIGljb246IENsb3NlSWNvbixcbiAgICAgIFwiYXJpYS1sYWJlbFwiOiBcImNsb3NlXCIsXG4gICAgICB0eXBlOiBcImljb25cIixcbiAgICAgIG9uQ2xpY2s6IG9uQ2xvc2UsXG4gICAgICBjbGFzc05hbWU6IFwiY2xvc2VcIlxuICAgIH0pXVxuICB9KSk7XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/Toast.tsx\n');
              }
            ),
            /***/
            "../../components/ToolButton.tsx": (
              /*!***************************************!*\
                !*** ../../components/ToolButton.tsx ***!
                \***************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "ToolButton": () => (/* binding */ ToolButton)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var _ToolIcon_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ToolIcon.scss */ "../../components/ToolIcon.scss");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./App */ "../../components/App.tsx");\n/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../errors */ "../../errors.ts");\n/* harmony import */ var _Spinner__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Spinner */ "../../components/Spinner.tsx");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator["throw"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n\n\n\n\n\nconst ToolButton = react__WEBPACK_IMPORTED_MODULE_2___default().forwardRef((props, ref) => {\n  const {\n    id: excalId\n  } = (0,_App__WEBPACK_IMPORTED_MODULE_4__.useExcalidrawContainer)();\n  const innerRef = react__WEBPACK_IMPORTED_MODULE_2___default().useRef(null);\n  react__WEBPACK_IMPORTED_MODULE_2___default().useImperativeHandle(ref, () => innerRef.current);\n  const sizeCn = `ToolIcon_size_${props.size}`;\n  const [isLoading, setIsLoading] = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(false);\n  const isMountedRef = (0,react__WEBPACK_IMPORTED_MODULE_2__.useRef)(true);\n\n  const onClick = event => __awaiter(void 0, void 0, void 0, function* () {\n    var _a;\n\n    const ret = "onClick" in props && ((_a = props.onClick) === null || _a === void 0 ? void 0 : _a.call(props, event));\n\n    if (ret && "then" in ret) {\n      try {\n        setIsLoading(true);\n        yield ret;\n      } catch (error) {\n        if (!(error instanceof _errors__WEBPACK_IMPORTED_MODULE_5__.AbortError)) {\n          throw error;\n        } else {\n          console.warn(error);\n        }\n      } finally {\n        if (isMountedRef.current) {\n          setIsLoading(false);\n        }\n      }\n    }\n  });\n\n  (0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(() => {\n    isMountedRef.current = true;\n    return () => {\n      isMountedRef.current = false;\n    };\n  }, []);\n  const lastPointerTypeRef = (0,react__WEBPACK_IMPORTED_MODULE_2__.useRef)(null);\n\n  if (props.type === "button" || props.type === "icon" || props.type === "submit") {\n    const type = props.type === "icon" ? "button" : props.type;\n    return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("button", Object.assign({\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__["default"])("ToolIcon_type_button", sizeCn, props.className, props.visible && !props.hidden ? "ToolIcon_type_button--show" : "ToolIcon_type_button--hide", {\n        ToolIcon: !props.hidden,\n        "ToolIcon--selected": props.selected,\n        "ToolIcon--plain": props.type === "icon"\n      }),\n      style: props.style,\n      "data-testid": props["data-testid"],\n      hidden: props.hidden,\n      title: props.title,\n      "aria-label": props["aria-label"],\n      type: type,\n      onClick: onClick,\n      ref: innerRef,\n      disabled: isLoading || props.isLoading\n    }, {\n      children: [(props.icon || props.label) && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n        className: "ToolIcon__icon",\n        "aria-hidden": "true"\n      }, {\n        children: [props.icon || props.label, props.keyBindingLabel && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", Object.assign({\n          className: "ToolIcon__keybinding"\n        }, {\n          children: props.keyBindingLabel\n        })), props.isLoading && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Spinner__WEBPACK_IMPORTED_MODULE_6__["default"], {})]\n      })), props.showAriaLabel && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n        className: "ToolIcon__label"\n      }, {\n        children: [props["aria-label"], " ", isLoading && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Spinner__WEBPACK_IMPORTED_MODULE_6__["default"], {})]\n      })), props.children]\n    }));\n  }\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("label", Object.assign({\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__["default"])("ToolIcon", props.className),\n    title: props.title,\n    onPointerDown: event => {\n      var _a;\n\n      lastPointerTypeRef.current = event.pointerType || null;\n      (_a = props.onPointerDown) === null || _a === void 0 ? void 0 : _a.call(props, {\n        pointerType: event.pointerType || null\n      });\n    },\n    onPointerUp: () => {\n      requestAnimationFrame(() => {\n        lastPointerTypeRef.current = null;\n      });\n    }\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input", {\n      className: `ToolIcon_type_radio ${sizeCn}`,\n      type: "radio",\n      name: props.name,\n      "aria-label": props["aria-label"],\n      "aria-keyshortcuts": props["aria-keyshortcuts"],\n      "data-testid": props["data-testid"],\n      id: `${excalId}-${props.id}`,\n      onChange: () => {\n        var _a;\n\n        (_a = props.onChange) === null || _a === void 0 ? void 0 : _a.call(props, {\n          pointerType: lastPointerTypeRef.current\n        });\n      },\n      checked: props.checked,\n      ref: innerRef\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n      className: "ToolIcon__icon"\n    }, {\n      children: [props.icon, props.keyBindingLabel && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", Object.assign({\n        className: "ToolIcon__keybinding"\n      }, {\n        children: props.keyBindingLabel\n      }))]\n    }))]\n  }));\n});\nToolButton.defaultProps = {\n  visible: true,\n  className: "",\n  size: "medium"\n};\nToolButton.displayName = "ToolButton";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 9076 characters]\n//# sourceURL=webpack-internal:///../../components/ToolButton.tsx\n');
              }
            ),
            /***/
            "../../components/Tooltip.tsx": (
              /*!************************************!*\
                !*** ../../components/Tooltip.tsx ***!
                \************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "Tooltip": () => (/* binding */ Tooltip),\n/* harmony export */   "getTooltipDiv": () => (/* binding */ getTooltipDiv),\n/* harmony export */   "updateTooltipPosition": () => (/* binding */ updateTooltipPosition)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var _Tooltip_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Tooltip.scss */ "../../components/Tooltip.scss");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\nconst getTooltipDiv = () => {\n  const existingDiv = document.querySelector(".excalidraw-tooltip");\n\n  if (existingDiv) {\n    return existingDiv;\n  }\n\n  const div = document.createElement("div");\n  document.body.appendChild(div);\n  div.classList.add("excalidraw-tooltip");\n  return div;\n};\nconst updateTooltipPosition = (tooltip, item, position = "bottom") => {\n  const tooltipRect = tooltip.getBoundingClientRect();\n  const viewportWidth = window.innerWidth;\n  const viewportHeight = window.innerHeight;\n  const margin = 5;\n  let left = item.left + item.width / 2 - tooltipRect.width / 2;\n\n  if (left < 0) {\n    left = margin;\n  } else if (left + tooltipRect.width >= viewportWidth) {\n    left = viewportWidth - tooltipRect.width - margin;\n  }\n\n  let top;\n\n  if (position === "bottom") {\n    top = item.top + item.height + margin;\n\n    if (top + tooltipRect.height >= viewportHeight) {\n      top = item.top - tooltipRect.height - margin;\n    }\n  } else {\n    top = item.top - tooltipRect.height - margin;\n\n    if (top < 0) {\n      top = item.top + item.height + margin;\n    }\n  }\n\n  Object.assign(tooltip.style, {\n    top: `${top}px`,\n    left: `${left}px`\n  });\n};\n\nconst updateTooltip = (item, tooltip, label, long) => {\n  tooltip.classList.add("excalidraw-tooltip--visible");\n  tooltip.style.minWidth = long ? "50ch" : "10ch";\n  tooltip.style.maxWidth = long ? "50ch" : "15ch";\n  tooltip.textContent = label;\n  const itemRect = item.getBoundingClientRect();\n  updateTooltipPosition(tooltip, itemRect);\n};\n\nconst Tooltip = ({\n  children,\n  label,\n  long = false,\n  style\n}) => {\n  (0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(() => {\n    return () => getTooltipDiv().classList.remove("excalidraw-tooltip--visible");\n  }, []);\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: "excalidraw-tooltip-wrapper",\n    onPointerEnter: event => updateTooltip(event.currentTarget, getTooltipDiv(), label, long),\n    onPointerLeave: () => getTooltipDiv().classList.remove("excalidraw-tooltip--visible"),\n    style: style\n  }, {\n    children: children\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9Ub29sdGlwLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQWdEO0FBQ3hCO0FBQ2lCO0FBQ2xDO0FBQ1A7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsWUFBWSxJQUFJO0FBQ2hCLGFBQWEsS0FBSztBQUNsQixHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELEVBQUUsZ0RBQVM7QUFDWDtBQUNBLEdBQUc7QUFDSCxTQUFTLHNEQUFJO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0giLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9Ub29sdGlwLnRzeD9iMDUzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgXCIuL1Rvb2x0aXAuc2Nzc1wiO1xuaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuZXhwb3J0IGNvbnN0IGdldFRvb2x0aXBEaXYgPSAoKSA9PiB7XG4gIGNvbnN0IGV4aXN0aW5nRGl2ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5leGNhbGlkcmF3LXRvb2x0aXBcIik7XG5cbiAgaWYgKGV4aXN0aW5nRGl2KSB7XG4gICAgcmV0dXJuIGV4aXN0aW5nRGl2O1xuICB9XG5cbiAgY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaXYpO1xuICBkaXYuY2xhc3NMaXN0LmFkZChcImV4Y2FsaWRyYXctdG9vbHRpcFwiKTtcbiAgcmV0dXJuIGRpdjtcbn07XG5leHBvcnQgY29uc3QgdXBkYXRlVG9vbHRpcFBvc2l0aW9uID0gKHRvb2x0aXAsIGl0ZW0sIHBvc2l0aW9uID0gXCJib3R0b21cIikgPT4ge1xuICBjb25zdCB0b29sdGlwUmVjdCA9IHRvb2x0aXAuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIGNvbnN0IHZpZXdwb3J0V2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgY29uc3Qgdmlld3BvcnRIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XG4gIGNvbnN0IG1hcmdpbiA9IDU7XG4gIGxldCBsZWZ0ID0gaXRlbS5sZWZ0ICsgaXRlbS53aWR0aCAvIDIgLSB0b29sdGlwUmVjdC53aWR0aCAvIDI7XG5cbiAgaWYgKGxlZnQgPCAwKSB7XG4gICAgbGVmdCA9IG1hcmdpbjtcbiAgfSBlbHNlIGlmIChsZWZ0ICsgdG9vbHRpcFJlY3Qud2lkdGggPj0gdmlld3BvcnRXaWR0aCkge1xuICAgIGxlZnQgPSB2aWV3cG9ydFdpZHRoIC0gdG9vbHRpcFJlY3Qud2lkdGggLSBtYXJnaW47XG4gIH1cblxuICBsZXQgdG9wO1xuXG4gIGlmIChwb3NpdGlvbiA9PT0gXCJib3R0b21cIikge1xuICAgIHRvcCA9IGl0ZW0udG9wICsgaXRlbS5oZWlnaHQgKyBtYXJnaW47XG5cbiAgICBpZiAodG9wICsgdG9vbHRpcFJlY3QuaGVpZ2h0ID49IHZpZXdwb3J0SGVpZ2h0KSB7XG4gICAgICB0b3AgPSBpdGVtLnRvcCAtIHRvb2x0aXBSZWN0LmhlaWdodCAtIG1hcmdpbjtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdG9wID0gaXRlbS50b3AgLSB0b29sdGlwUmVjdC5oZWlnaHQgLSBtYXJnaW47XG5cbiAgICBpZiAodG9wIDwgMCkge1xuICAgICAgdG9wID0gaXRlbS50b3AgKyBpdGVtLmhlaWdodCArIG1hcmdpbjtcbiAgICB9XG4gIH1cblxuICBPYmplY3QuYXNzaWduKHRvb2x0aXAuc3R5bGUsIHtcbiAgICB0b3A6IGAke3RvcH1weGAsXG4gICAgbGVmdDogYCR7bGVmdH1weGBcbiAgfSk7XG59O1xuXG5jb25zdCB1cGRhdGVUb29sdGlwID0gKGl0ZW0sIHRvb2x0aXAsIGxhYmVsLCBsb25nKSA9PiB7XG4gIHRvb2x0aXAuY2xhc3NMaXN0LmFkZChcImV4Y2FsaWRyYXctdG9vbHRpcC0tdmlzaWJsZVwiKTtcbiAgdG9vbHRpcC5zdHlsZS5taW5XaWR0aCA9IGxvbmcgPyBcIjUwY2hcIiA6IFwiMTBjaFwiO1xuICB0b29sdGlwLnN0eWxlLm1heFdpZHRoID0gbG9uZyA/IFwiNTBjaFwiIDogXCIxNWNoXCI7XG4gIHRvb2x0aXAudGV4dENvbnRlbnQgPSBsYWJlbDtcbiAgY29uc3QgaXRlbVJlY3QgPSBpdGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICB1cGRhdGVUb29sdGlwUG9zaXRpb24odG9vbHRpcCwgaXRlbVJlY3QpO1xufTtcblxuZXhwb3J0IGNvbnN0IFRvb2x0aXAgPSAoe1xuICBjaGlsZHJlbixcbiAgbGFiZWwsXG4gIGxvbmcgPSBmYWxzZSxcbiAgc3R5bGVcbn0pID0+IHtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gKCkgPT4gZ2V0VG9vbHRpcERpdigpLmNsYXNzTGlzdC5yZW1vdmUoXCJleGNhbGlkcmF3LXRvb2x0aXAtLXZpc2libGVcIik7XG4gIH0sIFtdKTtcbiAgcmV0dXJuIF9qc3goXCJkaXZcIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgY2xhc3NOYW1lOiBcImV4Y2FsaWRyYXctdG9vbHRpcC13cmFwcGVyXCIsXG4gICAgb25Qb2ludGVyRW50ZXI6IGV2ZW50ID0+IHVwZGF0ZVRvb2x0aXAoZXZlbnQuY3VycmVudFRhcmdldCwgZ2V0VG9vbHRpcERpdigpLCBsYWJlbCwgbG9uZyksXG4gICAgb25Qb2ludGVyTGVhdmU6ICgpID0+IGdldFRvb2x0aXBEaXYoKS5jbGFzc0xpc3QucmVtb3ZlKFwiZXhjYWxpZHJhdy10b29sdGlwLS12aXNpYmxlXCIpLFxuICAgIHN0eWxlOiBzdHlsZVxuICB9LCB7XG4gICAgY2hpbGRyZW46IGNoaWxkcmVuXG4gIH0pKTtcbn07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/Tooltip.tsx\n');
              }
            ),
            /***/
            "../../components/Trans.tsx": (
              /*!**********************************!*\
                !*** ../../components/Trans.tsx ***!
                \**********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\nvar __rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n\n  if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n // Used for splitting i18nKey into tokens in Trans component\n// Example:\n// "Please <link>click {{location}}</link> to continue.".split(SPLIT_REGEX).filter(Boolean)\n// produces\n// ["Please ", "<link>", "click ", "{{location}}", "</link>", " to continue."]\n\nconst SPLIT_REGEX = /({{[\\w-]+}})|(<[\\w-]+>)|(<\\/[\\w-]+>)/g; // Used for extracting "location" from "{{location}}"\n\nconst KEY_REGEXP = /{{([\\w-]+)}}/; // Used for extracting "link" from "<link>"\n\nconst TAG_START_REGEXP = /<([\\w-]+)>/; // Used for extracting "link" from "</link>"\n\nconst TAG_END_REGEXP = /<\\/([\\w-]+)>/;\n\nconst getTransChildren = (format, props) => {\n  const stack = [{\n    name: "",\n    children: []\n  }];\n  format.split(SPLIT_REGEX).filter(Boolean).forEach(match => {\n    const tagStartMatch = match.match(TAG_START_REGEXP);\n    const tagEndMatch = match.match(TAG_END_REGEXP);\n    const keyMatch = match.match(KEY_REGEXP);\n\n    if (tagStartMatch !== null) {\n      // The match is <tag>. Set the tag name as the name if it\'s one of the\n      // props, e.g. for "Please <link>click the button</link> to continue"\n      // tagStartMatch[1] = "link" and props contain "link" then it will be\n      // pushed to stack.\n      const name = tagStartMatch[1];\n\n      if (props.hasOwnProperty(name)) {\n        stack.push({\n          name,\n          children: []\n        });\n      } else {\n        console.warn(`Trans: missed to pass in prop ${name} for interpolating ${format}`);\n      }\n    } else if (tagEndMatch !== null) {\n      // If tag end match is found, this means we need to replace the content with\n      // its actual value in prop e.g. format = "Please <link>click the\n      // button</link> to continue", tagEndMatch is for "</link>", stack last item name =\n      // "link" and props.link = (el) => <a\n      // href="https://example.com">{el}</a> then its prop value will be\n      // pushed to "link"\'s children so on DOM when rendering it\'s rendered as\n      // <a href="https://example.com">click the button</a>\n      const name = tagEndMatch[1];\n\n      if (name === stack[stack.length - 1].name) {\n        const item = stack.pop();\n        const itemChildren = react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), {}, ...item.children);\n        const fn = props[item.name];\n\n        if (typeof fn === "function") {\n          stack[stack.length - 1].children.push(fn(itemChildren));\n        }\n      } else {\n        console.warn(`Trans: unexpected end tag ${match} for interpolating ${format}`);\n      }\n    } else if (keyMatch !== null) {\n      // The match is for {{key}}. Check if the key is present in props and set\n      // the prop value as children of last stack item e.g. format = "Hello\n      // {{name}}", key = "name" and props.name = "Excalidraw" then its prop\n      // value will be pushed to "name"\'s children so it\'s rendered on DOM as\n      // "Hello Excalidraw"\n      const name = keyMatch[1];\n\n      if (props.hasOwnProperty(name)) {\n        stack[stack.length - 1].children.push(props[name]);\n      } else {\n        console.warn(`Trans: key ${name} not in props for interpolating ${format}`);\n      }\n    } else {\n      // If none of cases match means we just need to push the string\n      // to stack eg - "Hello {{name}} Whats up?" "Hello", "Whats up" will be pushed\n      stack[stack.length - 1].children.push(match);\n    }\n  });\n\n  if (stack.length !== 1) {\n    console.warn(`Trans: stack not empty for interpolating ${format}`);\n  }\n\n  return stack[0].children;\n};\n/*\nTrans component is used for translating JSX.\n\n```json\n{\n  "example1": "Hello {{audience}}",\n  "example2": "Please <link>click the button</link> to continue.",\n  "example3": "Please <link>click {{location}}</link> to continue.",\n  "example4": "Please <link>click <bold>{{location}}</bold></link> to continue.",\n}\n```\n\n```jsx\n<Trans i18nKey="example1" audience="world" />\n\n<Trans\n  i18nKey="example2"\n  connectLink={(el) => <a href="https://example.com">{el}</a>}\n/>\n\n<Trans\n  i18nKey="example3"\n  connectLink={(el) => <a href="https://example.com">{el}</a>}\n  location="the button"\n/>\n\n<Trans\n  i18nKey="example4"\n  connectLink={(el) => <a href="https://example.com">{el}</a>}\n  location="the button"\n  bold={(el) => <strong>{el}</strong>}\n/>\n```\n\nOutput:\n\n```html\nHello world\nPlease <a href="https://example.com">click the button</a> to continue.\nPlease <a href="https://example.com">click the button</a> to continue.\nPlease <a href="https://example.com">click <strong>the button</strong></a> to continue.\n```\n*/\n\n\nconst Trans = _a => {\n  var {\n    i18nKey,\n    children\n  } = _a,\n      props = __rest(_a, ["i18nKey", "children"]);\n\n  const {\n    t\n  } = (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.useI18n)(); // This is needed to avoid unique key error in list which gets rendered from getTransChildren\n\n  return react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), {}, ...getTransChildren(t(i18nKey), props));\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Trans);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 9320 characters]\n//# sourceURL=webpack-internal:///../../components/Trans.tsx\n');
              }
            ),
            /***/
            "../../components/UserList.tsx": (
              /*!*************************************!*\
                !*** ../../components/UserList.tsx ***!
                \*************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "UserList": () => (/* binding */ UserList)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var _UserList_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./UserList.scss */ "../../components/UserList.scss");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _Tooltip__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Tooltip */ "../../components/Tooltip.tsx");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./App */ "../../components/App.tsx");\n\n\n\n\n\n\nconst UserList = ({\n  className,\n  mobile,\n  collaborators\n}) => {\n  const actionManager = (0,_App__WEBPACK_IMPORTED_MODULE_5__.useExcalidrawActionManager)();\n  const uniqueCollaborators = new Map();\n  collaborators.forEach((collaborator, socketId) => {\n    uniqueCollaborators.set( // filter on user id, else fall back on unique socketId\n    collaborator.id || socketId, collaborator);\n  });\n  const avatars = uniqueCollaborators.size > 0 && Array.from(uniqueCollaborators).filter(([_, client]) => Object.keys(client).length !== 0).map(([clientId, collaborator]) => {\n    const avatarJSX = actionManager.renderAction("goToCollaborator", [clientId, collaborator]);\n    return mobile ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Tooltip__WEBPACK_IMPORTED_MODULE_4__.Tooltip, Object.assign({\n      label: collaborator.username || "Unknown user"\n    }, {\n      children: avatarJSX\n    }), clientId) : (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)((react__WEBPACK_IMPORTED_MODULE_2___default().Fragment), {\n      children: avatarJSX\n    }, clientId);\n  });\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__["default"])("UserList", className, {\n      UserList_mobile: mobile\n    })\n  }, {\n    children: avatars\n  }));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9Vc2VyTGlzdC50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBZ0Q7QUFDdkI7QUFDQztBQUNGO0FBQ1k7QUFDZTtBQUM1QztBQUNQO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCx3QkFBd0IsZ0VBQTBCO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxvQkFBb0Isc0RBQUksQ0FBQyw2Q0FBTztBQUNoQztBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUssZUFBZSxzREFBSSxDQUFDLHVEQUFjO0FBQ3ZDO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSCxTQUFTLHNEQUFJO0FBQ2IsZUFBZSxnREFBSTtBQUNuQjtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0giLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9Vc2VyTGlzdC50c3g/NjM3YyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IFwiLi9Vc2VyTGlzdC5zY3NzXCI7XG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgY2xzeCBmcm9tIFwiY2xzeFwiO1xuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gXCIuL1Rvb2x0aXBcIjtcbmltcG9ydCB7IHVzZUV4Y2FsaWRyYXdBY3Rpb25NYW5hZ2VyIH0gZnJvbSBcIi4vQXBwXCI7XG5leHBvcnQgY29uc3QgVXNlckxpc3QgPSAoe1xuICBjbGFzc05hbWUsXG4gIG1vYmlsZSxcbiAgY29sbGFib3JhdG9yc1xufSkgPT4ge1xuICBjb25zdCBhY3Rpb25NYW5hZ2VyID0gdXNlRXhjYWxpZHJhd0FjdGlvbk1hbmFnZXIoKTtcbiAgY29uc3QgdW5pcXVlQ29sbGFib3JhdG9ycyA9IG5ldyBNYXAoKTtcbiAgY29sbGFib3JhdG9ycy5mb3JFYWNoKChjb2xsYWJvcmF0b3IsIHNvY2tldElkKSA9PiB7XG4gICAgdW5pcXVlQ29sbGFib3JhdG9ycy5zZXQoIC8vIGZpbHRlciBvbiB1c2VyIGlkLCBlbHNlIGZhbGwgYmFjayBvbiB1bmlxdWUgc29ja2V0SWRcbiAgICBjb2xsYWJvcmF0b3IuaWQgfHwgc29ja2V0SWQsIGNvbGxhYm9yYXRvcik7XG4gIH0pO1xuICBjb25zdCBhdmF0YXJzID0gdW5pcXVlQ29sbGFib3JhdG9ycy5zaXplID4gMCAmJiBBcnJheS5mcm9tKHVuaXF1ZUNvbGxhYm9yYXRvcnMpLmZpbHRlcigoW18sIGNsaWVudF0pID0+IE9iamVjdC5rZXlzKGNsaWVudCkubGVuZ3RoICE9PSAwKS5tYXAoKFtjbGllbnRJZCwgY29sbGFib3JhdG9yXSkgPT4ge1xuICAgIGNvbnN0IGF2YXRhckpTWCA9IGFjdGlvbk1hbmFnZXIucmVuZGVyQWN0aW9uKFwiZ29Ub0NvbGxhYm9yYXRvclwiLCBbY2xpZW50SWQsIGNvbGxhYm9yYXRvcl0pO1xuICAgIHJldHVybiBtb2JpbGUgPyBfanN4KFRvb2x0aXAsIE9iamVjdC5hc3NpZ24oe1xuICAgICAgbGFiZWw6IGNvbGxhYm9yYXRvci51c2VybmFtZSB8fCBcIlVua25vd24gdXNlclwiXG4gICAgfSwge1xuICAgICAgY2hpbGRyZW46IGF2YXRhckpTWFxuICAgIH0pLCBjbGllbnRJZCkgOiBfanN4KFJlYWN0LkZyYWdtZW50LCB7XG4gICAgICBjaGlsZHJlbjogYXZhdGFySlNYXG4gICAgfSwgY2xpZW50SWQpO1xuICB9KTtcbiAgcmV0dXJuIF9qc3goXCJkaXZcIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgY2xhc3NOYW1lOiBjbHN4KFwiVXNlckxpc3RcIiwgY2xhc3NOYW1lLCB7XG4gICAgICBVc2VyTGlzdF9tb2JpbGU6IG1vYmlsZVxuICAgIH0pXG4gIH0sIHtcbiAgICBjaGlsZHJlbjogYXZhdGFyc1xuICB9KSk7XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/UserList.tsx\n');
              }
            ),
            /***/
            "../../components/canvases/InteractiveCanvas.tsx": (
              /*!*******************************************************!*\
                !*** ../../components/canvases/InteractiveCanvas.tsx ***!
                \*******************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _renderer_renderScene__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../renderer/renderScene */ "../../renderer/renderScene.ts");
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../utils */ "../../utils.ts");
/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../constants */ "../../constants.ts");
/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../i18n */ "../../i18n.ts");







const InteractiveCanvas = props => {
  const isComponentMounted = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(false);
  (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {
    var _a;

    if (!isComponentMounted.current) {
      isComponentMounted.current = true;
      return;
    }

    const cursorButton = {};
    const pointerViewportCoords = {};
    const remoteSelectedElementIds = {};
    const pointerUsernames = {};
    const pointerUserStates = {};
    props.appState.collaborators.forEach((user, socketId) => {
      if (user.selectedElementIds) {
        for (const id of Object.keys(user.selectedElementIds)) {
          if (!(id in remoteSelectedElementIds)) {
            remoteSelectedElementIds[id] = [];
          }

          remoteSelectedElementIds[id].push(socketId);
        }
      }

      if (!user.pointer) {
        return;
      }

      if (user.username) {
        pointerUsernames[socketId] = user.username;
      }

      if (user.userState) {
        pointerUserStates[socketId] = user.userState;
      }

      pointerViewportCoords[socketId] = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.sceneCoordsToViewportCoords)({
        sceneX: user.pointer.x,
        sceneY: user.pointer.y
      }, props.appState);
      cursorButton[socketId] = user.button;
    });
    const selectionColor = ((_a = props.containerRef) === null || _a === void 0 ? void 0 : _a.current) && getComputedStyle(props.containerRef.current).getPropertyValue("--color-selection") || "#6965db";
    (0,_renderer_renderScene__WEBPACK_IMPORTED_MODULE_2__.renderInteractiveScene)({
      canvas: props.canvas,
      elements: props.elements,
      visibleElements: props.visibleElements,
      selectedElements: props.selectedElements,
      scale: window.devicePixelRatio,
      appState: props.appState,
      renderConfig: {
        remotePointerViewportCoords: pointerViewportCoords,
        remotePointerButton: cursorButton,
        remoteSelectedElementIds,
        remotePointerUsernames: pointerUsernames,
        remotePointerUserStates: pointerUserStates,
        selectionColor,
        renderScrollbars: false
      },
      callback: props.renderInteractiveSceneCallback
    }, (0,_utils__WEBPACK_IMPORTED_MODULE_3__.isRenderThrottlingEnabled)());
  });
  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("canvas", Object.assign({
    className: "excalidraw__canvas interactive",
    style: {
      width: props.appState.width,
      height: props.appState.height,
      cursor: props.appState.viewModeEnabled ? _constants__WEBPACK_IMPORTED_MODULE_4__.CURSOR_TYPE.GRAB : _constants__WEBPACK_IMPORTED_MODULE_4__.CURSOR_TYPE.AUTO
    },
    width: props.appState.width * props.scale,
    height: props.appState.height * props.scale,
    ref: props.handleCanvasRef,
    onContextMenu: props.onContextMenu,
    onPointerMove: props.onPointerMove,
    onPointerUp: props.onPointerUp,
    onPointerCancel: props.onPointerCancel,
    onTouchMove: props.onTouchMove,
    onPointerDown: props.onPointerDown,
    onDoubleClick: props.appState.viewModeEnabled ? undefined : props.onDoubleClick
  }, {
    children: (0,_i18n__WEBPACK_IMPORTED_MODULE_5__.t)("labels.drawingCanvas")
  }));
};

const getRelevantAppStateProps = appState => ({
  zoom: appState.zoom,
  scrollX: appState.scrollX,
  scrollY: appState.scrollY,
  width: appState.width,
  height: appState.height,
  viewModeEnabled: appState.viewModeEnabled,
  editingGroupId: appState.editingGroupId,
  editingLinearElement: appState.editingLinearElement,
  selectedElementIds: appState.selectedElementIds,
  frameToHighlight: appState.frameToHighlight,
  offsetLeft: appState.offsetLeft,
  offsetTop: appState.offsetTop,
  theme: appState.theme,
  pendingImageElementId: appState.pendingImageElementId,
  selectionElement: appState.selectionElement,
  selectedGroupIds: appState.selectedGroupIds,
  selectedLinearElement: appState.selectedLinearElement,
  multiElement: appState.multiElement,
  isBindingEnabled: appState.isBindingEnabled,
  suggestedBindings: appState.suggestedBindings,
  isRotating: appState.isRotating,
  elementsToHighlight: appState.elementsToHighlight,
  openSidebar: appState.openSidebar,
  showHyperlinkPopup: appState.showHyperlinkPopup,
  collaborators: appState.collaborators,
  activeEmbeddable: appState.activeEmbeddable,
  snapLines: appState.snapLines,
  zenModeEnabled: appState.zenModeEnabled
});

const areEqual = (prevProps, nextProps) => {
  // This could be further optimised if needed, as we don't have to render interactive canvas on each scene mutation
  if (prevProps.selectionNonce !== nextProps.selectionNonce || prevProps.versionNonce !== nextProps.versionNonce || prevProps.scale !== nextProps.scale || // we need to memoize on element arrays because they may have renewed
  // even if versionNonce didn't change (e.g. we filter elements out based
  // on appState)
  prevProps.elements !== nextProps.elements || prevProps.visibleElements !== nextProps.visibleElements || prevProps.selectedElements !== nextProps.selectedElements) {
    return false;
  } // Comparing the interactive appState for changes in case of some edge cases


  return (0,_utils__WEBPACK_IMPORTED_MODULE_3__.isShallowEqual)( // asserting AppState because we're being passed the whole AppState
  // but resolve to only the InteractiveCanvas-relevant props
  getRelevantAppStateProps(prevProps.appState), getRelevantAppStateProps(nextProps.appState));
};

/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (react__WEBPACK_IMPORTED_MODULE_1___default().memo(InteractiveCanvas, areEqual));//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 8900 characters]
//# sourceURL=webpack-internal:///../../components/canvases/InteractiveCanvas.tsx
`);
              }
            ),
            /***/
            "../../components/canvases/StaticCanvas.tsx": (
              /*!**************************************************!*\
                !*** ../../components/canvases/StaticCanvas.tsx ***!
                \**************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _renderer_renderScene__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../renderer/renderScene */ "../../renderer/renderScene.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../utils */ "../../utils.ts");\n\n\n\n\n\nconst StaticCanvas = props => {\n  const wrapperRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n  const isComponentMounted = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(false);\n  (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {\n    const wrapper = wrapperRef.current;\n\n    if (!wrapper) {\n      return;\n    }\n\n    const canvas = props.canvas;\n\n    if (!isComponentMounted.current) {\n      isComponentMounted.current = true;\n      wrapper.replaceChildren(canvas);\n      canvas.classList.add("excalidraw__canvas", "static");\n    }\n\n    const widthString = `${props.appState.width}px`;\n    const heightString = `${props.appState.height}px`;\n\n    if (canvas.style.width !== widthString) {\n      canvas.style.width = widthString;\n    }\n\n    if (canvas.style.height !== heightString) {\n      canvas.style.height = heightString;\n    }\n\n    const scaledWidth = props.appState.width * props.scale;\n    const scaledHeight = props.appState.height * props.scale; // setting width/height resets the canvas even if dimensions not changed,\n    // which would cause flicker when we skip frame (due to throttling)\n\n    if (canvas.width !== scaledWidth) {\n      canvas.width = scaledWidth;\n    }\n\n    if (canvas.height !== scaledHeight) {\n      canvas.height = scaledHeight;\n    }\n\n    (0,_renderer_renderScene__WEBPACK_IMPORTED_MODULE_2__.renderStaticScene)({\n      canvas,\n      rc: props.rc,\n      scale: props.scale,\n      elements: props.elements,\n      visibleElements: props.visibleElements,\n      appState: props.appState,\n      renderConfig: props.renderConfig\n    }, (0,_utils__WEBPACK_IMPORTED_MODULE_3__.isRenderThrottlingEnabled)());\n  });\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n    className: "excalidraw__canvas-wrapper",\n    ref: wrapperRef\n  });\n};\n\nconst getRelevantAppStateProps = appState => ({\n  zoom: appState.zoom,\n  scrollX: appState.scrollX,\n  scrollY: appState.scrollY,\n  width: appState.width,\n  height: appState.height,\n  viewModeEnabled: appState.viewModeEnabled,\n  offsetLeft: appState.offsetLeft,\n  offsetTop: appState.offsetTop,\n  theme: appState.theme,\n  pendingImageElementId: appState.pendingImageElementId,\n  shouldCacheIgnoreZoom: appState.shouldCacheIgnoreZoom,\n  viewBackgroundColor: appState.viewBackgroundColor,\n  exportScale: appState.exportScale,\n  selectedElementsAreBeingDragged: appState.selectedElementsAreBeingDragged,\n  gridSize: appState.gridSize,\n  frameRendering: appState.frameRendering,\n  selectedElementIds: appState.selectedElementIds,\n  frameToHighlight: appState.frameToHighlight,\n  editingGroupId: appState.editingGroupId\n});\n\nconst areEqual = (prevProps, nextProps) => {\n  if (prevProps.versionNonce !== nextProps.versionNonce || prevProps.scale !== nextProps.scale || // we need to memoize on element arrays because they may have renewed\n  // even if versionNonce didn\'t change (e.g. we filter elements out based\n  // on appState)\n  prevProps.elements !== nextProps.elements || prevProps.visibleElements !== nextProps.visibleElements) {\n    return false;\n  }\n\n  return (0,_utils__WEBPACK_IMPORTED_MODULE_3__.isShallowEqual)( // asserting AppState because we\'re being passed the whole AppState\n  // but resolve to only the StaticCanvas-relevant props\n  getRelevantAppStateProps(prevProps.appState), getRelevantAppStateProps(nextProps.appState)) && (0,_utils__WEBPACK_IMPORTED_MODULE_3__.isShallowEqual)(prevProps.renderConfig, nextProps.renderConfig);\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (react__WEBPACK_IMPORTED_MODULE_1___default().memo(StaticCanvas, areEqual));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5780 characters]\n//# sourceURL=webpack-internal:///../../components/canvases/StaticCanvas.tsx\n');
              }
            ),
            /***/
            "../../components/canvases/index.tsx": (
              /*!*******************************************!*\
                !*** ../../components/canvases/index.tsx ***!
                \*******************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "InteractiveCanvas": () => (/* reexport safe */ _InteractiveCanvas__WEBPACK_IMPORTED_MODULE_0__["default"]),\n/* harmony export */   "StaticCanvas": () => (/* reexport safe */ _StaticCanvas__WEBPACK_IMPORTED_MODULE_1__["default"])\n/* harmony export */ });\n/* harmony import */ var _InteractiveCanvas__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./InteractiveCanvas */ "../../components/canvases/InteractiveCanvas.tsx");\n/* harmony import */ var _StaticCanvas__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./StaticCanvas */ "../../components/canvases/StaticCanvas.tsx");\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9jYW52YXNlcy9pbmRleC50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFvRDtBQUNWIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvY2FudmFzZXMvaW5kZXgudHN4PzMyODciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEludGVyYWN0aXZlQ2FudmFzIGZyb20gXCIuL0ludGVyYWN0aXZlQ2FudmFzXCI7XG5pbXBvcnQgU3RhdGljQ2FudmFzIGZyb20gXCIuL1N0YXRpY0NhbnZhc1wiO1xuZXhwb3J0IHsgSW50ZXJhY3RpdmVDYW52YXMsIFN0YXRpY0NhbnZhcyB9OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/canvases/index.tsx\n');
              }
            ),
            /***/
            "../../components/dropdownMenu/DropdownMenu.tsx": (
              /*!******************************************************!*\
                !*** ../../components/dropdownMenu/DropdownMenu.tsx ***!
                \******************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _DropdownMenuTrigger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./DropdownMenuTrigger */ "../../components/dropdownMenu/DropdownMenuTrigger.tsx");\n/* harmony import */ var _DropdownMenuItem__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./DropdownMenuItem */ "../../components/dropdownMenu/DropdownMenuItem.tsx");\n/* harmony import */ var _DropdownMenuSeparator__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./DropdownMenuSeparator */ "../../components/dropdownMenu/DropdownMenuSeparator.tsx");\n/* harmony import */ var _DropdownMenuGroup__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./DropdownMenuGroup */ "../../components/dropdownMenu/DropdownMenuGroup.tsx");\n/* harmony import */ var _DropdownMenuContent__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./DropdownMenuContent */ "../../components/dropdownMenu/DropdownMenuContent.tsx");\n/* harmony import */ var _DropdownMenuItemLink__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./DropdownMenuItemLink */ "../../components/dropdownMenu/DropdownMenuItemLink.tsx");\n/* harmony import */ var _DropdownMenuItemCustom__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./DropdownMenuItemCustom */ "../../components/dropdownMenu/DropdownMenuItemCustom.tsx");\n/* harmony import */ var _dropdownMenuUtils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./dropdownMenuUtils */ "../../components/dropdownMenu/dropdownMenuUtils.ts");\n/* harmony import */ var _DropdownMenu_scss__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./DropdownMenu.scss */ "../../components/dropdownMenu/DropdownMenu.scss");\n\n\n\n\n\n\n\n\n\n\n\n\nconst DropdownMenu = ({\n  children,\n  open\n}) => {\n  const MenuTriggerComp = (0,_dropdownMenuUtils__WEBPACK_IMPORTED_MODULE_9__.getMenuTriggerComponent)(children);\n  const MenuContentComp = (0,_dropdownMenuUtils__WEBPACK_IMPORTED_MODULE_9__.getMenuContentComponent)(children);\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n    children: [MenuTriggerComp, open && MenuContentComp]\n  });\n};\n\nDropdownMenu.Trigger = _DropdownMenuTrigger__WEBPACK_IMPORTED_MODULE_2__["default"];\nDropdownMenu.Content = _DropdownMenuContent__WEBPACK_IMPORTED_MODULE_6__["default"];\nDropdownMenu.Item = _DropdownMenuItem__WEBPACK_IMPORTED_MODULE_3__["default"];\nDropdownMenu.ItemLink = _DropdownMenuItemLink__WEBPACK_IMPORTED_MODULE_7__["default"];\nDropdownMenu.ItemCustom = _DropdownMenuItemCustom__WEBPACK_IMPORTED_MODULE_8__["default"];\nDropdownMenu.Group = _DropdownMenuGroup__WEBPACK_IMPORTED_MODULE_5__["default"];\nDropdownMenu.Separator = _DropdownMenuSeparator__WEBPACK_IMPORTED_MODULE_4__["default"];\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (DropdownMenu);\nDropdownMenu.displayName = "DropdownMenu";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9kcm9wZG93bk1lbnUvRHJvcGRvd25NZW51LnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQXlFO0FBQy9DO0FBQzhCO0FBQ047QUFDRTtBQUNBO0FBQ0k7QUFDRTtBQUNJO0FBQ3lCO0FBQzFEOztBQUU3QjtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsMEJBQTBCLDJFQUF1QjtBQUNqRCwwQkFBMEIsMkVBQXVCO0FBQ2pELFNBQVMsdURBQUssQ0FBQyx1REFBUztBQUN4QjtBQUNBLEdBQUc7QUFDSDs7QUFFQSx1QkFBdUIsNERBQW1CO0FBQzFDLHVCQUF1Qiw0REFBbUI7QUFDMUMsb0JBQW9CLHlEQUFnQjtBQUNwQyx3QkFBd0IsNkRBQW9CO0FBQzVDLDBCQUEwQiwrREFBc0I7QUFDaEQscUJBQXFCLDBEQUFpQjtBQUN0Qyx5QkFBeUIsOERBQWE7QUFDdEMsaUVBQWUsWUFBWSxFQUFDO0FBQzVCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvZHJvcGRvd25NZW51L0Ryb3Bkb3duTWVudS50c3g/NjVkZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGcmFnbWVudCBhcyBfRnJhZ21lbnQsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBEcm9wZG93bk1lbnVUcmlnZ2VyIGZyb20gXCIuL0Ryb3Bkb3duTWVudVRyaWdnZXJcIjtcbmltcG9ydCBEcm9wZG93bk1lbnVJdGVtIGZyb20gXCIuL0Ryb3Bkb3duTWVudUl0ZW1cIjtcbmltcG9ydCBNZW51U2VwYXJhdG9yIGZyb20gXCIuL0Ryb3Bkb3duTWVudVNlcGFyYXRvclwiO1xuaW1wb3J0IERyb3Bkb3duTWVudUdyb3VwIGZyb20gXCIuL0Ryb3Bkb3duTWVudUdyb3VwXCI7XG5pbXBvcnQgRHJvcGRvd25NZW51Q29udGVudCBmcm9tIFwiLi9Ecm9wZG93bk1lbnVDb250ZW50XCI7XG5pbXBvcnQgRHJvcGRvd25NZW51SXRlbUxpbmsgZnJvbSBcIi4vRHJvcGRvd25NZW51SXRlbUxpbmtcIjtcbmltcG9ydCBEcm9wZG93bk1lbnVJdGVtQ3VzdG9tIGZyb20gXCIuL0Ryb3Bkb3duTWVudUl0ZW1DdXN0b21cIjtcbmltcG9ydCB7IGdldE1lbnVDb250ZW50Q29tcG9uZW50LCBnZXRNZW51VHJpZ2dlckNvbXBvbmVudCB9IGZyb20gXCIuL2Ryb3Bkb3duTWVudVV0aWxzXCI7XG5pbXBvcnQgXCIuL0Ryb3Bkb3duTWVudS5zY3NzXCI7XG5cbmNvbnN0IERyb3Bkb3duTWVudSA9ICh7XG4gIGNoaWxkcmVuLFxuICBvcGVuXG59KSA9PiB7XG4gIGNvbnN0IE1lbnVUcmlnZ2VyQ29tcCA9IGdldE1lbnVUcmlnZ2VyQ29tcG9uZW50KGNoaWxkcmVuKTtcbiAgY29uc3QgTWVudUNvbnRlbnRDb21wID0gZ2V0TWVudUNvbnRlbnRDb21wb25lbnQoY2hpbGRyZW4pO1xuICByZXR1cm4gX2pzeHMoX0ZyYWdtZW50LCB7XG4gICAgY2hpbGRyZW46IFtNZW51VHJpZ2dlckNvbXAsIG9wZW4gJiYgTWVudUNvbnRlbnRDb21wXVxuICB9KTtcbn07XG5cbkRyb3Bkb3duTWVudS5UcmlnZ2VyID0gRHJvcGRvd25NZW51VHJpZ2dlcjtcbkRyb3Bkb3duTWVudS5Db250ZW50ID0gRHJvcGRvd25NZW51Q29udGVudDtcbkRyb3Bkb3duTWVudS5JdGVtID0gRHJvcGRvd25NZW51SXRlbTtcbkRyb3Bkb3duTWVudS5JdGVtTGluayA9IERyb3Bkb3duTWVudUl0ZW1MaW5rO1xuRHJvcGRvd25NZW51Lkl0ZW1DdXN0b20gPSBEcm9wZG93bk1lbnVJdGVtQ3VzdG9tO1xuRHJvcGRvd25NZW51Lkdyb3VwID0gRHJvcGRvd25NZW51R3JvdXA7XG5Ecm9wZG93bk1lbnUuU2VwYXJhdG9yID0gTWVudVNlcGFyYXRvcjtcbmV4cG9ydCBkZWZhdWx0IERyb3Bkb3duTWVudTtcbkRyb3Bkb3duTWVudS5kaXNwbGF5TmFtZSA9IFwiRHJvcGRvd25NZW51XCI7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/dropdownMenu/DropdownMenu.tsx\n');
              }
            ),
            /***/
            "../../components/dropdownMenu/DropdownMenuContent.tsx": (
              /*!*************************************************************!*\
                !*** ../../components/dropdownMenu/DropdownMenuContent.tsx ***!
                \*************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var _Island__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Island */ "../../components/Island.tsx");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../App */ "../../components/App.tsx");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _Stack__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../Stack */ "../../components/Stack.tsx");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./common */ "../../components/dropdownMenu/common.ts");\n/* harmony import */ var _hooks_useOutsideClick__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../hooks/useOutsideClick */ "../../hooks/useOutsideClick.ts");\n\n\n\n\n\n\n\n\n\nconst MenuContent = ({\n  children,\n  onClickOutside,\n  className = "",\n  onSelect,\n  style\n}) => {\n  const device = (0,_App__WEBPACK_IMPORTED_MODULE_2__.useDevice)();\n  const menuRef = (0,react__WEBPACK_IMPORTED_MODULE_5__.useRef)(null);\n  (0,_hooks_useOutsideClick__WEBPACK_IMPORTED_MODULE_7__.useOutsideClick)(menuRef, () => {\n    onClickOutside === null || onClickOutside === void 0 ? void 0 : onClickOutside();\n  });\n  const classNames = (0,clsx__WEBPACK_IMPORTED_MODULE_3__["default"])(`dropdown-menu ${className}`, {\n    "dropdown-menu--mobile": device.editor.isMobile\n  }).trim();\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_common__WEBPACK_IMPORTED_MODULE_6__.DropdownMenuContentPropsContext.Provider, Object.assign({\n    value: {\n      onSelect\n    }\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      ref: menuRef,\n      className: classNames,\n      style: style,\n      "data-testid": "dropdown-menu"\n    }, {\n      children: device.editor.isMobile ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Stack__WEBPACK_IMPORTED_MODULE_4__["default"].Col, Object.assign({\n        className: "dropdown-menu-container"\n      }, {\n        children: children\n      })) : (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Island__WEBPACK_IMPORTED_MODULE_1__.Island, Object.assign({\n        className: "dropdown-menu-container",\n        padding: 2,\n        style: {\n          zIndex: 2\n        }\n      }, {\n        children: children\n      }))\n    }))\n  }));\n};\n\nMenuContent.displayName = "DropdownMenuContent";\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (MenuContent);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9kcm9wZG93bk1lbnUvRHJvcGRvd25NZW51Q29udGVudC50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFnRDtBQUNiO0FBQ0E7QUFDWDtBQUNLO0FBQ1M7QUFDcUI7QUFDRzs7QUFFOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELGlCQUFpQiwrQ0FBUztBQUMxQixrQkFBa0IsNkNBQU07QUFDeEIsRUFBRSx1RUFBZTtBQUNqQjtBQUNBLEdBQUc7QUFDSCxxQkFBcUIsZ0RBQUksa0JBQWtCLFVBQVU7QUFDckQ7QUFDQSxHQUFHO0FBQ0gsU0FBUyxzREFBSSxDQUFDLDZFQUF3QztBQUN0RDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsY0FBYyxzREFBSTtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCx5Q0FBeUMsc0RBQUksQ0FBQyxrREFBUztBQUN2RDtBQUNBLE9BQU87QUFDUDtBQUNBLE9BQU8sS0FBSyxzREFBSSxDQUFDLDJDQUFNO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMLEdBQUc7QUFDSDs7QUFFQTtBQUNBLGlFQUFlLFdBQVciLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9kcm9wZG93bk1lbnUvRHJvcGRvd25NZW51Q29udGVudC50c3g/ODY5MCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgSXNsYW5kIH0gZnJvbSBcIi4uL0lzbGFuZFwiO1xuaW1wb3J0IHsgdXNlRGV2aWNlIH0gZnJvbSBcIi4uL0FwcFwiO1xuaW1wb3J0IGNsc3ggZnJvbSBcImNsc3hcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiLi4vU3RhY2tcIjtcbmltcG9ydCBSZWFjdCwgeyB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IERyb3Bkb3duTWVudUNvbnRlbnRQcm9wc0NvbnRleHQgfSBmcm9tIFwiLi9jb21tb25cIjtcbmltcG9ydCB7IHVzZU91dHNpZGVDbGljayB9IGZyb20gXCIuLi8uLi9ob29rcy91c2VPdXRzaWRlQ2xpY2tcIjtcblxuY29uc3QgTWVudUNvbnRlbnQgPSAoe1xuICBjaGlsZHJlbixcbiAgb25DbGlja091dHNpZGUsXG4gIGNsYXNzTmFtZSA9IFwiXCIsXG4gIG9uU2VsZWN0LFxuICBzdHlsZVxufSkgPT4ge1xuICBjb25zdCBkZXZpY2UgPSB1c2VEZXZpY2UoKTtcbiAgY29uc3QgbWVudVJlZiA9IHVzZVJlZihudWxsKTtcbiAgdXNlT3V0c2lkZUNsaWNrKG1lbnVSZWYsICgpID0+IHtcbiAgICBvbkNsaWNrT3V0c2lkZSA9PT0gbnVsbCB8fCBvbkNsaWNrT3V0c2lkZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DbGlja091dHNpZGUoKTtcbiAgfSk7XG4gIGNvbnN0IGNsYXNzTmFtZXMgPSBjbHN4KGBkcm9wZG93bi1tZW51ICR7Y2xhc3NOYW1lfWAsIHtcbiAgICBcImRyb3Bkb3duLW1lbnUtLW1vYmlsZVwiOiBkZXZpY2UuZWRpdG9yLmlzTW9iaWxlXG4gIH0pLnRyaW0oKTtcbiAgcmV0dXJuIF9qc3goRHJvcGRvd25NZW51Q29udGVudFByb3BzQ29udGV4dC5Qcm92aWRlciwgT2JqZWN0LmFzc2lnbih7XG4gICAgdmFsdWU6IHtcbiAgICAgIG9uU2VsZWN0XG4gICAgfVxuICB9LCB7XG4gICAgY2hpbGRyZW46IF9qc3goXCJkaXZcIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgICByZWY6IG1lbnVSZWYsXG4gICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMsXG4gICAgICBzdHlsZTogc3R5bGUsXG4gICAgICBcImRhdGEtdGVzdGlkXCI6IFwiZHJvcGRvd24tbWVudVwiXG4gICAgfSwge1xuICAgICAgY2hpbGRyZW46IGRldmljZS5lZGl0b3IuaXNNb2JpbGUgPyBfanN4KFN0YWNrLkNvbCwgT2JqZWN0LmFzc2lnbih7XG4gICAgICAgIGNsYXNzTmFtZTogXCJkcm9wZG93bi1tZW51LWNvbnRhaW5lclwiXG4gICAgICB9LCB7XG4gICAgICAgIGNoaWxkcmVuOiBjaGlsZHJlblxuICAgICAgfSkpIDogX2pzeChJc2xhbmQsIE9iamVjdC5hc3NpZ24oe1xuICAgICAgICBjbGFzc05hbWU6IFwiZHJvcGRvd24tbWVudS1jb250YWluZXJcIixcbiAgICAgICAgcGFkZGluZzogMixcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICB6SW5kZXg6IDJcbiAgICAgICAgfVxuICAgICAgfSwge1xuICAgICAgICBjaGlsZHJlbjogY2hpbGRyZW5cbiAgICAgIH0pKVxuICAgIH0pKVxuICB9KSk7XG59O1xuXG5NZW51Q29udGVudC5kaXNwbGF5TmFtZSA9IFwiRHJvcGRvd25NZW51Q29udGVudFwiO1xuZXhwb3J0IGRlZmF1bHQgTWVudUNvbnRlbnQ7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/dropdownMenu/DropdownMenuContent.tsx\n');
              }
            ),
            /***/
            "../../components/dropdownMenu/DropdownMenuGroup.tsx": (
              /*!***********************************************************!*\
                !*** ../../components/dropdownMenu/DropdownMenuGroup.tsx ***!
                \***********************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n\n\n\nconst MenuGroup = ({\n  children,\n  className = "",\n  style,\n  title\n}) => {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n    className: `dropdown-menu-group ${className}`,\n    style: style\n  }, {\n    children: [title && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("p", Object.assign({\n      className: "dropdown-menu-group-title"\n    }, {\n      children: title\n    })), children]\n  }));\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (MenuGroup);\nMenuGroup.displayName = "DropdownMenuGroup";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9kcm9wZG93bk1lbnUvRHJvcGRvd25NZW51R3JvdXAudHN4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBK0Q7QUFDckM7O0FBRTFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsU0FBUyx1REFBSztBQUNkLHNDQUFzQyxVQUFVO0FBQ2hEO0FBQ0EsR0FBRztBQUNILHdCQUF3QixzREFBSTtBQUM1QjtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7O0FBRUEsaUVBQWUsU0FBUyxFQUFDO0FBQ3pCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvZHJvcGRvd25NZW51L0Ryb3Bkb3duTWVudUdyb3VwLnRzeD83Y2FkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmNvbnN0IE1lbnVHcm91cCA9ICh7XG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUgPSBcIlwiLFxuICBzdHlsZSxcbiAgdGl0bGVcbn0pID0+IHtcbiAgcmV0dXJuIF9qc3hzKFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oe1xuICAgIGNsYXNzTmFtZTogYGRyb3Bkb3duLW1lbnUtZ3JvdXAgJHtjbGFzc05hbWV9YCxcbiAgICBzdHlsZTogc3R5bGVcbiAgfSwge1xuICAgIGNoaWxkcmVuOiBbdGl0bGUgJiYgX2pzeChcInBcIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgICBjbGFzc05hbWU6IFwiZHJvcGRvd24tbWVudS1ncm91cC10aXRsZVwiXG4gICAgfSwge1xuICAgICAgY2hpbGRyZW46IHRpdGxlXG4gICAgfSkpLCBjaGlsZHJlbl1cbiAgfSkpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgTWVudUdyb3VwO1xuTWVudUdyb3VwLmRpc3BsYXlOYW1lID0gXCJEcm9wZG93bk1lbnVHcm91cFwiOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/dropdownMenu/DropdownMenuGroup.tsx\n');
              }
            ),
            /***/
            "../../components/dropdownMenu/DropdownMenuItem.tsx": (
              /*!**********************************************************!*\
                !*** ../../components/dropdownMenu/DropdownMenuItem.tsx ***!
                \**********************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./common */ "../../components/dropdownMenu/common.ts");\n/* harmony import */ var _DropdownMenuItemContent__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./DropdownMenuItemContent */ "../../components/dropdownMenu/DropdownMenuItemContent.tsx");\nvar __rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n\n  if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\n\nconst DropdownMenuItem = _a => {\n  var _b;\n\n  var {\n    icon,\n    onSelect,\n    children,\n    shortcut,\n    className,\n    selected\n  } = _a,\n      rest = __rest(_a, ["icon", "onSelect", "children", "shortcut", "className", "selected"]);\n\n  const handleClick = (0,_common__WEBPACK_IMPORTED_MODULE_2__.useHandleDropdownMenuItemClick)(rest.onClick, onSelect);\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("button", Object.assign({}, rest, {\n    onClick: handleClick,\n    type: "button",\n    className: (0,_common__WEBPACK_IMPORTED_MODULE_2__.getDropdownMenuItemClassName)(className, selected),\n    title: (_b = rest.title) !== null && _b !== void 0 ? _b : rest["aria-label"]\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_DropdownMenuItemContent__WEBPACK_IMPORTED_MODULE_3__["default"], Object.assign({\n      icon: icon,\n      shortcut: shortcut\n    }, {\n      children: children\n    }))\n  }));\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (DropdownMenuItem);\nDropdownMenuItem.displayName = "DropdownMenuItem";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9kcm9wZG93bk1lbnUvRHJvcGRvd25NZW51SXRlbS50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsYUFBYSxTQUFJLElBQUksU0FBSTtBQUN6Qjs7QUFFQTs7QUFFQSw0SEFBNEgsY0FBYztBQUMxSTtBQUNBO0FBQ0E7QUFDQTs7QUFFZ0Q7QUFDdEI7QUFDOEQ7QUFDaEM7O0FBRXhEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7O0FBRUEsc0JBQXNCLHVFQUE4QjtBQUNwRCxTQUFTLHNEQUFJLDJCQUEyQjtBQUN4QztBQUNBO0FBQ0EsZUFBZSxxRUFBNEI7QUFDM0M7QUFDQSxHQUFHO0FBQ0gsY0FBYyxzREFBSSxDQUFDLGdFQUFlO0FBQ2xDO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIOztBQUVBLGlFQUFlLGdCQUFnQixFQUFDO0FBQ2hDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvZHJvcGRvd25NZW51L0Ryb3Bkb3duTWVudUl0ZW0udHN4PzRmOTIiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fcmVzdCA9IHRoaXMgJiYgdGhpcy5fX3Jlc3QgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgdmFyIHQgPSB7fTtcblxuICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMCkgdFtwXSA9IHNbcF07XG5cbiAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKSBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKSB0W3BbaV1dID0gc1twW2ldXTtcbiAgfVxuICByZXR1cm4gdDtcbn07XG5cbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBnZXREcm9wZG93bk1lbnVJdGVtQ2xhc3NOYW1lLCB1c2VIYW5kbGVEcm9wZG93bk1lbnVJdGVtQ2xpY2sgfSBmcm9tIFwiLi9jb21tb25cIjtcbmltcG9ydCBNZW51SXRlbUNvbnRlbnQgZnJvbSBcIi4vRHJvcGRvd25NZW51SXRlbUNvbnRlbnRcIjtcblxuY29uc3QgRHJvcGRvd25NZW51SXRlbSA9IF9hID0+IHtcbiAgdmFyIF9iO1xuXG4gIHZhciB7XG4gICAgaWNvbixcbiAgICBvblNlbGVjdCxcbiAgICBjaGlsZHJlbixcbiAgICBzaG9ydGN1dCxcbiAgICBjbGFzc05hbWUsXG4gICAgc2VsZWN0ZWRcbiAgfSA9IF9hLFxuICAgICAgcmVzdCA9IF9fcmVzdChfYSwgW1wiaWNvblwiLCBcIm9uU2VsZWN0XCIsIFwiY2hpbGRyZW5cIiwgXCJzaG9ydGN1dFwiLCBcImNsYXNzTmFtZVwiLCBcInNlbGVjdGVkXCJdKTtcblxuICBjb25zdCBoYW5kbGVDbGljayA9IHVzZUhhbmRsZURyb3Bkb3duTWVudUl0ZW1DbGljayhyZXN0Lm9uQ2xpY2ssIG9uU2VsZWN0KTtcbiAgcmV0dXJuIF9qc3goXCJidXR0b25cIiwgT2JqZWN0LmFzc2lnbih7fSwgcmVzdCwge1xuICAgIG9uQ2xpY2s6IGhhbmRsZUNsaWNrLFxuICAgIHR5cGU6IFwiYnV0dG9uXCIsXG4gICAgY2xhc3NOYW1lOiBnZXREcm9wZG93bk1lbnVJdGVtQ2xhc3NOYW1lKGNsYXNzTmFtZSwgc2VsZWN0ZWQpLFxuICAgIHRpdGxlOiAoX2IgPSByZXN0LnRpdGxlKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiByZXN0W1wiYXJpYS1sYWJlbFwiXVxuICB9LCB7XG4gICAgY2hpbGRyZW46IF9qc3goTWVudUl0ZW1Db250ZW50LCBPYmplY3QuYXNzaWduKHtcbiAgICAgIGljb246IGljb24sXG4gICAgICBzaG9ydGN1dDogc2hvcnRjdXRcbiAgICB9LCB7XG4gICAgICBjaGlsZHJlbjogY2hpbGRyZW5cbiAgICB9KSlcbiAgfSkpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRHJvcGRvd25NZW51SXRlbTtcbkRyb3Bkb3duTWVudUl0ZW0uZGlzcGxheU5hbWUgPSBcIkRyb3Bkb3duTWVudUl0ZW1cIjsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/dropdownMenu/DropdownMenuItem.tsx\n');
              }
            ),
            /***/
            "../../components/dropdownMenu/DropdownMenuItemContent.tsx": (
              /*!*****************************************************************!*\
                !*** ../../components/dropdownMenu/DropdownMenuItemContent.tsx ***!
                \*****************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../App */ "../../components/App.tsx");\n\n\n\nconst MenuItemContent = ({\n  icon,\n  shortcut,\n  children\n}) => {\n  const device = (0,_App__WEBPACK_IMPORTED_MODULE_1__.useDevice)();\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: "dropdown-menu-item__icon"\n    }, {\n      children: icon\n    })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: "dropdown-menu-item__text"\n    }, {\n      children: children\n    })), shortcut && !device.editor.isMobile && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: "dropdown-menu-item__shortcut"\n    }, {\n      children: shortcut\n    }))]\n  });\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (MenuItemContent);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9kcm9wZG93bk1lbnUvRHJvcGRvd25NZW51SXRlbUNvbnRlbnQudHN4LmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUFzRjtBQUNuRDs7QUFFbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsaUJBQWlCLCtDQUFTO0FBQzFCLFNBQVMsdURBQUssQ0FBQyx1REFBUztBQUN4QixlQUFlLHNEQUFJO0FBQ25CO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSyxJQUFJLHNEQUFJO0FBQ2I7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLLDJDQUEyQyxzREFBSTtBQUNwRDtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7O0FBRUEsaUVBQWUsZUFBZSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL2Ryb3Bkb3duTWVudS9Ecm9wZG93bk1lbnVJdGVtQ29udGVudC50c3g/ODg1NyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCwgRnJhZ21lbnQgYXMgX0ZyYWdtZW50LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyB1c2VEZXZpY2UgfSBmcm9tIFwiLi4vQXBwXCI7XG5cbmNvbnN0IE1lbnVJdGVtQ29udGVudCA9ICh7XG4gIGljb24sXG4gIHNob3J0Y3V0LFxuICBjaGlsZHJlblxufSkgPT4ge1xuICBjb25zdCBkZXZpY2UgPSB1c2VEZXZpY2UoKTtcbiAgcmV0dXJuIF9qc3hzKF9GcmFnbWVudCwge1xuICAgIGNoaWxkcmVuOiBbX2pzeChcImRpdlwiLCBPYmplY3QuYXNzaWduKHtcbiAgICAgIGNsYXNzTmFtZTogXCJkcm9wZG93bi1tZW51LWl0ZW1fX2ljb25cIlxuICAgIH0sIHtcbiAgICAgIGNoaWxkcmVuOiBpY29uXG4gICAgfSkpLCBfanN4KFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oe1xuICAgICAgY2xhc3NOYW1lOiBcImRyb3Bkb3duLW1lbnUtaXRlbV9fdGV4dFwiXG4gICAgfSwge1xuICAgICAgY2hpbGRyZW46IGNoaWxkcmVuXG4gICAgfSkpLCBzaG9ydGN1dCAmJiAhZGV2aWNlLmVkaXRvci5pc01vYmlsZSAmJiBfanN4KFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oe1xuICAgICAgY2xhc3NOYW1lOiBcImRyb3Bkb3duLW1lbnUtaXRlbV9fc2hvcnRjdXRcIlxuICAgIH0sIHtcbiAgICAgIGNoaWxkcmVuOiBzaG9ydGN1dFxuICAgIH0pKV1cbiAgfSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBNZW51SXRlbUNvbnRlbnQ7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/dropdownMenu/DropdownMenuItemContent.tsx\n');
              }
            ),
            /***/
            "../../components/dropdownMenu/DropdownMenuItemCustom.tsx": (
              /*!****************************************************************!*\
                !*** ../../components/dropdownMenu/DropdownMenuItemCustom.tsx ***!
                \****************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\nvar __rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n\n  if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\nconst DropdownMenuItemCustom = _a => {\n  var {\n    children,\n    className = "",\n    selected\n  } = _a,\n      rest = __rest(_a, ["children", "className", "selected"]);\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({}, rest, {\n    className: `dropdown-menu-item-base dropdown-menu-item-custom ${className} ${selected ? `dropdown-menu-item--selected` : ``}`.trim()\n  }, {\n    children: children\n  }));\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (DropdownMenuItemCustom);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9kcm9wZG93bk1lbnUvRHJvcGRvd25NZW51SXRlbUN1c3RvbS50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLGFBQWEsU0FBSSxJQUFJLFNBQUk7QUFDekI7O0FBRUE7O0FBRUEsNEhBQTRILGNBQWM7QUFDMUk7QUFDQTtBQUNBO0FBQ0E7O0FBRWdEO0FBQ3RCOztBQUUxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKOztBQUVBLFNBQVMsc0RBQUksd0JBQXdCO0FBQ3JDLG9FQUFvRSxXQUFXLEVBQUUsK0NBQStDO0FBQ2hJLEdBQUc7QUFDSDtBQUNBLEdBQUc7QUFDSDs7QUFFQSxpRUFBZSxzQkFBc0IiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9kcm9wZG93bk1lbnUvRHJvcGRvd25NZW51SXRlbUN1c3RvbS50c3g/ZTE2MyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19yZXN0ID0gdGhpcyAmJiB0aGlzLl9fcmVzdCB8fCBmdW5jdGlvbiAocywgZSkge1xuICB2YXIgdCA9IHt9O1xuXG4gIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKSB0W3BdID0gc1twXTtcblxuICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpIHRbcFtpXV0gPSBzW3BbaV1dO1xuICB9XG4gIHJldHVybiB0O1xufTtcblxuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuY29uc3QgRHJvcGRvd25NZW51SXRlbUN1c3RvbSA9IF9hID0+IHtcbiAgdmFyIHtcbiAgICBjaGlsZHJlbixcbiAgICBjbGFzc05hbWUgPSBcIlwiLFxuICAgIHNlbGVjdGVkXG4gIH0gPSBfYSxcbiAgICAgIHJlc3QgPSBfX3Jlc3QoX2EsIFtcImNoaWxkcmVuXCIsIFwiY2xhc3NOYW1lXCIsIFwic2VsZWN0ZWRcIl0pO1xuXG4gIHJldHVybiBfanN4KFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oe30sIHJlc3QsIHtcbiAgICBjbGFzc05hbWU6IGBkcm9wZG93bi1tZW51LWl0ZW0tYmFzZSBkcm9wZG93bi1tZW51LWl0ZW0tY3VzdG9tICR7Y2xhc3NOYW1lfSAke3NlbGVjdGVkID8gYGRyb3Bkb3duLW1lbnUtaXRlbS0tc2VsZWN0ZWRgIDogYGB9YC50cmltKClcbiAgfSwge1xuICAgIGNoaWxkcmVuOiBjaGlsZHJlblxuICB9KSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBEcm9wZG93bk1lbnVJdGVtQ3VzdG9tOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/dropdownMenu/DropdownMenuItemCustom.tsx\n');
              }
            ),
            /***/
            "../../components/dropdownMenu/DropdownMenuItemLink.tsx": (
              /*!**************************************************************!*\
                !*** ../../components/dropdownMenu/DropdownMenuItemLink.tsx ***!
                \**************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var _DropdownMenuItemContent__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./DropdownMenuItemContent */ "../../components/dropdownMenu/DropdownMenuItemContent.tsx");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./common */ "../../components/dropdownMenu/common.ts");\nvar __rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n\n  if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\n\nconst DropdownMenuItemLink = _a => {\n  var _b;\n\n  var {\n    icon,\n    shortcut,\n    href,\n    children,\n    onSelect,\n    className = "",\n    selected\n  } = _a,\n      rest = __rest(_a, ["icon", "shortcut", "href", "children", "onSelect", "className", "selected"]);\n\n  const handleClick = (0,_common__WEBPACK_IMPORTED_MODULE_3__.useHandleDropdownMenuItemClick)(rest.onClick, onSelect);\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("a", Object.assign({}, rest, {\n    href: href,\n    target: "_blank",\n    rel: "noreferrer",\n    className: (0,_common__WEBPACK_IMPORTED_MODULE_3__.getDropdownMenuItemClassName)(className, selected),\n    title: (_b = rest.title) !== null && _b !== void 0 ? _b : rest["aria-label"],\n    onClick: handleClick\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_DropdownMenuItemContent__WEBPACK_IMPORTED_MODULE_1__["default"], Object.assign({\n      icon: icon,\n      shortcut: shortcut\n    }, {\n      children: children\n    }))\n  }));\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (DropdownMenuItemLink);\nDropdownMenuItemLink.displayName = "DropdownMenuItemLink";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9kcm9wZG93bk1lbnUvRHJvcGRvd25NZW51SXRlbUxpbmsudHN4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLGFBQWEsU0FBSSxJQUFJLFNBQUk7QUFDekI7O0FBRUE7O0FBRUEsNEhBQTRILGNBQWM7QUFDMUk7QUFDQTtBQUNBO0FBQ0E7O0FBRWdEO0FBQ1E7QUFDOUI7QUFDOEQ7O0FBRXhGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjs7QUFFQSxzQkFBc0IsdUVBQThCO0FBQ3BELFNBQVMsc0RBQUksc0JBQXNCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLGVBQWUscUVBQTRCO0FBQzNDO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsY0FBYyxzREFBSSxDQUFDLGdFQUFlO0FBQ2xDO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIOztBQUVBLGlFQUFlLG9CQUFvQixFQUFDO0FBQ3BDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvZHJvcGRvd25NZW51L0Ryb3Bkb3duTWVudUl0ZW1MaW5rLnRzeD8wOTkzIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBfX3Jlc3QgPSB0aGlzICYmIHRoaXMuX19yZXN0IHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gIHZhciB0ID0ge307XG5cbiAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApIHRbcF0gPSBzW3BdO1xuXG4gIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIikgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSkgdFtwW2ldXSA9IHNbcFtpXV07XG4gIH1cbiAgcmV0dXJuIHQ7XG59O1xuXG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IE1lbnVJdGVtQ29udGVudCBmcm9tIFwiLi9Ecm9wZG93bk1lbnVJdGVtQ29udGVudFwiO1xuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgZ2V0RHJvcGRvd25NZW51SXRlbUNsYXNzTmFtZSwgdXNlSGFuZGxlRHJvcGRvd25NZW51SXRlbUNsaWNrIH0gZnJvbSBcIi4vY29tbW9uXCI7XG5cbmNvbnN0IERyb3Bkb3duTWVudUl0ZW1MaW5rID0gX2EgPT4ge1xuICB2YXIgX2I7XG5cbiAgdmFyIHtcbiAgICBpY29uLFxuICAgIHNob3J0Y3V0LFxuICAgIGhyZWYsXG4gICAgY2hpbGRyZW4sXG4gICAgb25TZWxlY3QsXG4gICAgY2xhc3NOYW1lID0gXCJcIixcbiAgICBzZWxlY3RlZFxuICB9ID0gX2EsXG4gICAgICByZXN0ID0gX19yZXN0KF9hLCBbXCJpY29uXCIsIFwic2hvcnRjdXRcIiwgXCJocmVmXCIsIFwiY2hpbGRyZW5cIiwgXCJvblNlbGVjdFwiLCBcImNsYXNzTmFtZVwiLCBcInNlbGVjdGVkXCJdKTtcblxuICBjb25zdCBoYW5kbGVDbGljayA9IHVzZUhhbmRsZURyb3Bkb3duTWVudUl0ZW1DbGljayhyZXN0Lm9uQ2xpY2ssIG9uU2VsZWN0KTtcbiAgcmV0dXJuIF9qc3goXCJhXCIsIE9iamVjdC5hc3NpZ24oe30sIHJlc3QsIHtcbiAgICBocmVmOiBocmVmLFxuICAgIHRhcmdldDogXCJfYmxhbmtcIixcbiAgICByZWw6IFwibm9yZWZlcnJlclwiLFxuICAgIGNsYXNzTmFtZTogZ2V0RHJvcGRvd25NZW51SXRlbUNsYXNzTmFtZShjbGFzc05hbWUsIHNlbGVjdGVkKSxcbiAgICB0aXRsZTogKF9iID0gcmVzdC50aXRsZSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogcmVzdFtcImFyaWEtbGFiZWxcIl0sXG4gICAgb25DbGljazogaGFuZGxlQ2xpY2tcbiAgfSwge1xuICAgIGNoaWxkcmVuOiBfanN4KE1lbnVJdGVtQ29udGVudCwgT2JqZWN0LmFzc2lnbih7XG4gICAgICBpY29uOiBpY29uLFxuICAgICAgc2hvcnRjdXQ6IHNob3J0Y3V0XG4gICAgfSwge1xuICAgICAgY2hpbGRyZW46IGNoaWxkcmVuXG4gICAgfSkpXG4gIH0pKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IERyb3Bkb3duTWVudUl0ZW1MaW5rO1xuRHJvcGRvd25NZW51SXRlbUxpbmsuZGlzcGxheU5hbWUgPSBcIkRyb3Bkb3duTWVudUl0ZW1MaW5rXCI7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/dropdownMenu/DropdownMenuItemLink.tsx\n');
              }
            ),
            /***/
            "../../components/dropdownMenu/DropdownMenuSeparator.tsx": (
              /*!***************************************************************!*\
                !*** ../../components/dropdownMenu/DropdownMenuSeparator.tsx ***!
                \***************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n\n\n\nconst MenuSeparator = () => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n  style: {\n    height: "1px",\n    backgroundColor: "var(--default-border-color)",\n    margin: ".5rem 0"\n  }\n});\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (MenuSeparator);\nMenuSeparator.displayName = "DropdownMenuSeparator";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9kcm9wZG93bk1lbnUvRHJvcGRvd25NZW51U2VwYXJhdG9yLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQWdEO0FBQ3RCOztBQUUxQiw0QkFBNEIsc0RBQUk7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQsaUVBQWUsYUFBYSxFQUFDO0FBQzdCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvZHJvcGRvd25NZW51L0Ryb3Bkb3duTWVudVNlcGFyYXRvci50c3g/YjNmMyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5jb25zdCBNZW51U2VwYXJhdG9yID0gKCkgPT4gX2pzeChcImRpdlwiLCB7XG4gIHN0eWxlOiB7XG4gICAgaGVpZ2h0OiBcIjFweFwiLFxuICAgIGJhY2tncm91bmRDb2xvcjogXCJ2YXIoLS1kZWZhdWx0LWJvcmRlci1jb2xvcilcIixcbiAgICBtYXJnaW46IFwiLjVyZW0gMFwiXG4gIH1cbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBNZW51U2VwYXJhdG9yO1xuTWVudVNlcGFyYXRvci5kaXNwbGF5TmFtZSA9IFwiRHJvcGRvd25NZW51U2VwYXJhdG9yXCI7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/dropdownMenu/DropdownMenuSeparator.tsx\n');
              }
            ),
            /***/
            "../../components/dropdownMenu/DropdownMenuTrigger.tsx": (
              /*!*************************************************************!*\
                !*** ../../components/dropdownMenu/DropdownMenuTrigger.tsx ***!
                \*************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../App */ "../../components/App.tsx");\nvar __rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n\n  if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\nconst MenuTrigger = _a => {\n  var {\n    className = "",\n    children,\n    onToggle,\n    title\n  } = _a,\n      rest = __rest(_a, ["className", "children", "onToggle", "title"]);\n\n  const device = (0,_App__WEBPACK_IMPORTED_MODULE_2__.useDevice)();\n  const classNames = (0,clsx__WEBPACK_IMPORTED_MODULE_1__["default"])(`dropdown-menu-button ${className}`, "zen-mode-transition", {\n    "dropdown-menu-button--mobile": device.editor.isMobile\n  }).trim();\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("button", Object.assign({\n    "data-prevent-outside-click": true,\n    className: classNames,\n    onClick: onToggle,\n    type: "button",\n    "data-testid": "dropdown-menu-button",\n    title: title\n  }, rest, {\n    children: children\n  }));\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (MenuTrigger);\nMenuTrigger.displayName = "DropdownMenuTrigger";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9kcm9wZG93bk1lbnUvRHJvcGRvd25NZW51VHJpZ2dlci50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLGFBQWEsU0FBSSxJQUFJLFNBQUk7QUFDekI7O0FBRUE7O0FBRUEsNEhBQTRILGNBQWM7QUFDMUk7QUFDQTtBQUNBO0FBQ0E7O0FBRWdEO0FBQ3hCO0FBQ1c7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjs7QUFFQSxpQkFBaUIsK0NBQVM7QUFDMUIscUJBQXFCLGdEQUFJLHlCQUF5QixVQUFVO0FBQzVEO0FBQ0EsR0FBRztBQUNILFNBQVMsc0RBQUk7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7O0FBRUEsaUVBQWUsV0FBVyxFQUFDO0FBQzNCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvZHJvcGRvd25NZW51L0Ryb3Bkb3duTWVudVRyaWdnZXIudHN4PzRiOWIiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fcmVzdCA9IHRoaXMgJiYgdGhpcy5fX3Jlc3QgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgdmFyIHQgPSB7fTtcblxuICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMCkgdFtwXSA9IHNbcF07XG5cbiAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKSBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKSB0W3BbaV1dID0gc1twW2ldXTtcbiAgfVxuICByZXR1cm4gdDtcbn07XG5cbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgY2xzeCBmcm9tIFwiY2xzeFwiO1xuaW1wb3J0IHsgdXNlRGV2aWNlIH0gZnJvbSBcIi4uL0FwcFwiO1xuXG5jb25zdCBNZW51VHJpZ2dlciA9IF9hID0+IHtcbiAgdmFyIHtcbiAgICBjbGFzc05hbWUgPSBcIlwiLFxuICAgIGNoaWxkcmVuLFxuICAgIG9uVG9nZ2xlLFxuICAgIHRpdGxlXG4gIH0gPSBfYSxcbiAgICAgIHJlc3QgPSBfX3Jlc3QoX2EsIFtcImNsYXNzTmFtZVwiLCBcImNoaWxkcmVuXCIsIFwib25Ub2dnbGVcIiwgXCJ0aXRsZVwiXSk7XG5cbiAgY29uc3QgZGV2aWNlID0gdXNlRGV2aWNlKCk7XG4gIGNvbnN0IGNsYXNzTmFtZXMgPSBjbHN4KGBkcm9wZG93bi1tZW51LWJ1dHRvbiAke2NsYXNzTmFtZX1gLCBcInplbi1tb2RlLXRyYW5zaXRpb25cIiwge1xuICAgIFwiZHJvcGRvd24tbWVudS1idXR0b24tLW1vYmlsZVwiOiBkZXZpY2UuZWRpdG9yLmlzTW9iaWxlXG4gIH0pLnRyaW0oKTtcbiAgcmV0dXJuIF9qc3goXCJidXR0b25cIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgXCJkYXRhLXByZXZlbnQtb3V0c2lkZS1jbGlja1wiOiB0cnVlLFxuICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lcyxcbiAgICBvbkNsaWNrOiBvblRvZ2dsZSxcbiAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgIFwiZGF0YS10ZXN0aWRcIjogXCJkcm9wZG93bi1tZW51LWJ1dHRvblwiLFxuICAgIHRpdGxlOiB0aXRsZVxuICB9LCByZXN0LCB7XG4gICAgY2hpbGRyZW46IGNoaWxkcmVuXG4gIH0pKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE1lbnVUcmlnZ2VyO1xuTWVudVRyaWdnZXIuZGlzcGxheU5hbWUgPSBcIkRyb3Bkb3duTWVudVRyaWdnZXJcIjsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/dropdownMenu/DropdownMenuTrigger.tsx\n');
              }
            ),
            /***/
            "../../components/dropdownMenu/common.ts": (
              /*!***********************************************!*\
                !*** ../../components/dropdownMenu/common.ts ***!
                \***********************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "DropdownMenuContentPropsContext": () => (/* binding */ DropdownMenuContentPropsContext),\n/* harmony export */   "getDropdownMenuItemClassName": () => (/* binding */ getDropdownMenuItemClassName),\n/* harmony export */   "useHandleDropdownMenuItemClick": () => (/* binding */ useHandleDropdownMenuItemClick)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../constants */ "../../constants.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils */ "../../utils.ts");\n\n\n\nconst DropdownMenuContentPropsContext = react__WEBPACK_IMPORTED_MODULE_0___default().createContext({});\nconst getDropdownMenuItemClassName = (className = "", selected = false) => {\n  return `dropdown-menu-item dropdown-menu-item-base ${className} ${selected ? "dropdown-menu-item--selected" : ""}`.trim();\n};\nconst useHandleDropdownMenuItemClick = (origOnClick, onSelect) => {\n  const DropdownMenuContentProps = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(DropdownMenuContentPropsContext);\n  return (0,_utils__WEBPACK_IMPORTED_MODULE_2__.composeEventHandlers)(origOnClick, event => {\n    var _a;\n\n    const itemSelectEvent = new CustomEvent(_constants__WEBPACK_IMPORTED_MODULE_1__.EVENT.MENU_ITEM_SELECT, {\n      bubbles: true,\n      cancelable: true\n    });\n    onSelect === null || onSelect === void 0 ? void 0 : onSelect(itemSelectEvent);\n\n    if (!itemSelectEvent.defaultPrevented) {\n      (_a = DropdownMenuContentProps.onSelect) === null || _a === void 0 ? void 0 : _a.call(DropdownMenuContentProps, itemSelectEvent);\n    }\n  });\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9kcm9wZG93bk1lbnUvY29tbW9uLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBMEM7QUFDRjtBQUNXO0FBQzVDLHdDQUF3QywwREFBbUIsR0FBRztBQUM5RDtBQUNQLHVEQUF1RCxXQUFXLEVBQUUsK0NBQStDO0FBQ25IO0FBQ087QUFDUCxtQ0FBbUMsaURBQVU7QUFDN0MsU0FBUyw0REFBb0I7QUFDN0I7O0FBRUEsNENBQTRDLDhEQUFzQjtBQUNsRTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL2Ryb3Bkb3duTWVudS9jb21tb24udHM/ZTVhYiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlQ29udGV4dCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgRVZFTlQgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBjb21wb3NlRXZlbnRIYW5kbGVycyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuZXhwb3J0IGNvbnN0IERyb3Bkb3duTWVudUNvbnRlbnRQcm9wc0NvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0KHt9KTtcbmV4cG9ydCBjb25zdCBnZXREcm9wZG93bk1lbnVJdGVtQ2xhc3NOYW1lID0gKGNsYXNzTmFtZSA9IFwiXCIsIHNlbGVjdGVkID0gZmFsc2UpID0+IHtcbiAgcmV0dXJuIGBkcm9wZG93bi1tZW51LWl0ZW0gZHJvcGRvd24tbWVudS1pdGVtLWJhc2UgJHtjbGFzc05hbWV9ICR7c2VsZWN0ZWQgPyBcImRyb3Bkb3duLW1lbnUtaXRlbS0tc2VsZWN0ZWRcIiA6IFwiXCJ9YC50cmltKCk7XG59O1xuZXhwb3J0IGNvbnN0IHVzZUhhbmRsZURyb3Bkb3duTWVudUl0ZW1DbGljayA9IChvcmlnT25DbGljaywgb25TZWxlY3QpID0+IHtcbiAgY29uc3QgRHJvcGRvd25NZW51Q29udGVudFByb3BzID0gdXNlQ29udGV4dChEcm9wZG93bk1lbnVDb250ZW50UHJvcHNDb250ZXh0KTtcbiAgcmV0dXJuIGNvbXBvc2VFdmVudEhhbmRsZXJzKG9yaWdPbkNsaWNrLCBldmVudCA9PiB7XG4gICAgdmFyIF9hO1xuXG4gICAgY29uc3QgaXRlbVNlbGVjdEV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KEVWRU5ULk1FTlVfSVRFTV9TRUxFQ1QsIHtcbiAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICBjYW5jZWxhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgb25TZWxlY3QgPT09IG51bGwgfHwgb25TZWxlY3QgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uU2VsZWN0KGl0ZW1TZWxlY3RFdmVudCk7XG5cbiAgICBpZiAoIWl0ZW1TZWxlY3RFdmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAoX2EgPSBEcm9wZG93bk1lbnVDb250ZW50UHJvcHMub25TZWxlY3QpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKERyb3Bkb3duTWVudUNvbnRlbnRQcm9wcywgaXRlbVNlbGVjdEV2ZW50KTtcbiAgICB9XG4gIH0pO1xufTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/dropdownMenu/common.ts\n');
              }
            ),
            /***/
            "../../components/dropdownMenu/dropdownMenuUtils.ts": (
              /*!**********************************************************!*\
                !*** ../../components/dropdownMenu/dropdownMenuUtils.ts ***!
                \**********************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "getMenuContentComponent": () => (/* binding */ getMenuContentComponent),\n/* harmony export */   "getMenuTriggerComponent": () => (/* binding */ getMenuTriggerComponent)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n\nconst getMenuTriggerComponent = children => {\n  const comp = react__WEBPACK_IMPORTED_MODULE_0___default().Children.toArray(children).find(child => react__WEBPACK_IMPORTED_MODULE_0___default().isValidElement(child) && typeof child.type !== "string" && ( //@ts-ignore\n  child === null || child === void 0 ? void 0 : child.type.displayName) && //@ts-ignore\n  child.type.displayName === "DropdownMenuTrigger");\n\n  if (!comp) {\n    return null;\n  } //@ts-ignore\n\n\n  return comp;\n};\nconst getMenuContentComponent = children => {\n  const comp = react__WEBPACK_IMPORTED_MODULE_0___default().Children.toArray(children).find(child => react__WEBPACK_IMPORTED_MODULE_0___default().isValidElement(child) && typeof child.type !== "string" && ( //@ts-ignore\n  child === null || child === void 0 ? void 0 : child.type.displayName) && //@ts-ignore\n  child.type.displayName === "DropdownMenuContent");\n\n  if (!comp) {\n    return null;\n  } //@ts-ignore\n\n\n  return comp;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9kcm9wZG93bk1lbnUvZHJvcGRvd25NZW51VXRpbHMudHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUEwQjtBQUNuQjtBQUNQLGVBQWUsNkRBQXNCLHlCQUF5QiwyREFBb0I7QUFDbEY7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNPO0FBQ1AsZUFBZSw2REFBc0IseUJBQXlCLDJEQUFvQjtBQUNsRjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJOzs7QUFHSjtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvZHJvcGRvd25NZW51L2Ryb3Bkb3duTWVudVV0aWxzLnRzP2IyMWQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuZXhwb3J0IGNvbnN0IGdldE1lbnVUcmlnZ2VyQ29tcG9uZW50ID0gY2hpbGRyZW4gPT4ge1xuICBjb25zdCBjb21wID0gUmVhY3QuQ2hpbGRyZW4udG9BcnJheShjaGlsZHJlbikuZmluZChjaGlsZCA9PiBSZWFjdC5pc1ZhbGlkRWxlbWVudChjaGlsZCkgJiYgdHlwZW9mIGNoaWxkLnR5cGUgIT09IFwic3RyaW5nXCIgJiYgKCAvL0B0cy1pZ25vcmVcbiAgY2hpbGQgPT09IG51bGwgfHwgY2hpbGQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNoaWxkLnR5cGUuZGlzcGxheU5hbWUpICYmIC8vQHRzLWlnbm9yZVxuICBjaGlsZC50eXBlLmRpc3BsYXlOYW1lID09PSBcIkRyb3Bkb3duTWVudVRyaWdnZXJcIik7XG5cbiAgaWYgKCFjb21wKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH0gLy9AdHMtaWdub3JlXG5cblxuICByZXR1cm4gY29tcDtcbn07XG5leHBvcnQgY29uc3QgZ2V0TWVudUNvbnRlbnRDb21wb25lbnQgPSBjaGlsZHJlbiA9PiB7XG4gIGNvbnN0IGNvbXAgPSBSZWFjdC5DaGlsZHJlbi50b0FycmF5KGNoaWxkcmVuKS5maW5kKGNoaWxkID0+IFJlYWN0LmlzVmFsaWRFbGVtZW50KGNoaWxkKSAmJiB0eXBlb2YgY2hpbGQudHlwZSAhPT0gXCJzdHJpbmdcIiAmJiAoIC8vQHRzLWlnbm9yZVxuICBjaGlsZCA9PT0gbnVsbCB8fCBjaGlsZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogY2hpbGQudHlwZS5kaXNwbGF5TmFtZSkgJiYgLy9AdHMtaWdub3JlXG4gIGNoaWxkLnR5cGUuZGlzcGxheU5hbWUgPT09IFwiRHJvcGRvd25NZW51Q29udGVudFwiKTtcblxuICBpZiAoIWNvbXApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfSAvL0B0cy1pZ25vcmVcblxuXG4gIHJldHVybiBjb21wO1xufTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/dropdownMenu/dropdownMenuUtils.ts\n');
              }
            ),
            /***/
            "../../components/footer/Footer.tsx": (
              /*!******************************************!*\
                !*** ../../components/footer/Footer.tsx ***!
                \******************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../actions */ "../../actions/index.ts");\n/* harmony import */ var _Actions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Actions */ "../../components/Actions.tsx");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../App */ "../../components/App.tsx");\n/* harmony import */ var _context_tunnels__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../context/tunnels */ "../../context/tunnels.ts");\n/* harmony import */ var _HelpButton__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../HelpButton */ "../../components/HelpButton.tsx");\n/* harmony import */ var _Section__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../Section */ "../../components/Section.tsx");\n/* harmony import */ var _Stack__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../Stack */ "../../components/Stack.tsx");\n\n\n\n\n\n\n\n\n\n\nconst Footer = ({\n  appState,\n  actionManager,\n  showExitZenModeBtn,\n  renderWelcomeScreen\n}) => {\n  const {\n    FooterCenterTunnel,\n    WelcomeScreenHelpHintTunnel\n  } = (0,_context_tunnels__WEBPACK_IMPORTED_MODULE_5__.useTunnels)();\n  const device = (0,_App__WEBPACK_IMPORTED_MODULE_4__.useDevice)();\n  const showFinalize = !appState.viewModeEnabled && appState.multiElement && device.isTouchScreen;\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("footer", Object.assign({\n    role: "contentinfo",\n    className: "layer-ui__wrapper__footer App-menu App-menu_bottom"\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__["default"])("layer-ui__wrapper__footer-left zen-mode-transition", {\n        "layer-ui__wrapper__footer-left--transition-left": appState.zenModeEnabled\n      })\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Stack__WEBPACK_IMPORTED_MODULE_8__["default"].Col, Object.assign({\n        gap: 2\n      }, {\n        children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Section__WEBPACK_IMPORTED_MODULE_7__.Section, Object.assign({\n          heading: "canvasActions"\n        }, {\n          children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Actions__WEBPACK_IMPORTED_MODULE_3__.ZoomActions, {\n            renderAction: actionManager.renderAction,\n            zoom: appState.zoom\n          }), !appState.viewModeEnabled && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Actions__WEBPACK_IMPORTED_MODULE_3__.UndoRedoActions, {\n            renderAction: actionManager.renderAction,\n            className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__["default"])("zen-mode-transition", {\n              "layer-ui__wrapper__footer-left--transition-bottom": appState.zenModeEnabled\n            })\n          }), showFinalize && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Actions__WEBPACK_IMPORTED_MODULE_3__.FinalizeAction, {\n            renderAction: actionManager.renderAction,\n            className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__["default"])("zen-mode-transition", {\n              "layer-ui__wrapper__footer-left--transition-left": appState.zenModeEnabled\n            })\n          })]\n        }))\n      }))\n    })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(FooterCenterTunnel.Out, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__["default"])("layer-ui__wrapper__footer-right zen-mode-transition", {\n        "transition-right": appState.zenModeEnabled\n      })\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n        style: {\n          position: "relative"\n        }\n      }, {\n        children: [renderWelcomeScreen && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(WelcomeScreenHelpHintTunnel.Out, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_HelpButton__WEBPACK_IMPORTED_MODULE_6__.HelpButton, {\n          onClick: () => actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_2__.actionShortcuts)\n        })]\n      }))\n    })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Actions__WEBPACK_IMPORTED_MODULE_3__.ExitZenModeAction, {\n      actionManager: actionManager,\n      showExitZenModeBtn: showExitZenModeBtn\n    })]\n  }));\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Footer);\nFooter.displayName = "Footer";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5200 characters]\n//# sourceURL=webpack-internal:///../../components/footer/Footer.tsx\n');
              }
            ),
            /***/
            "../../components/footer/FooterCenter.tsx": (
              /*!************************************************!*\
                !*** ../../components/footer/FooterCenter.tsx ***!
                \************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _context_tunnels__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../context/tunnels */ "../../context/tunnels.ts");\n/* harmony import */ var _FooterCenter_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./FooterCenter.scss */ "../../components/footer/FooterCenter.scss");\n/* harmony import */ var _context_ui_appState__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../context/ui-appState */ "../../context/ui-appState.ts");\n\n\n\n\n\n\nconst FooterCenter = ({\n  children\n}) => {\n  const {\n    FooterCenterTunnel\n  } = (0,_context_tunnels__WEBPACK_IMPORTED_MODULE_2__.useTunnels)();\n  const appState = (0,_context_ui_appState__WEBPACK_IMPORTED_MODULE_4__.useUIAppState)();\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(FooterCenterTunnel.In, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__["default"])("footer-center zen-mode-transition", {\n        "layer-ui__wrapper__footer-left--transition-bottom": appState.zenModeEnabled\n      })\n    }, {\n      children: children\n    }))\n  });\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (FooterCenter);\nFooterCenter.displayName = "FooterCenter";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9mb290ZXIvRm9vdGVyQ2VudGVyLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBZ0Q7QUFDeEI7QUFDMkI7QUFDdEI7QUFDNkI7O0FBRTFEO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBLElBQUksRUFBRSw0REFBVTtBQUNoQixtQkFBbUIsbUVBQWE7QUFDaEMsU0FBUyxzREFBSTtBQUNiLGNBQWMsc0RBQUk7QUFDbEIsaUJBQWlCLGdEQUFJO0FBQ3JCO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7O0FBRUEsaUVBQWUsWUFBWSxFQUFDO0FBQzVCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvZm9vdGVyL0Zvb3RlckNlbnRlci50c3g/MjcyZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IGNsc3ggZnJvbSBcImNsc3hcIjtcbmltcG9ydCB7IHVzZVR1bm5lbHMgfSBmcm9tIFwiLi4vLi4vY29udGV4dC90dW5uZWxzXCI7XG5pbXBvcnQgXCIuL0Zvb3RlckNlbnRlci5zY3NzXCI7XG5pbXBvcnQgeyB1c2VVSUFwcFN0YXRlIH0gZnJvbSBcIi4uLy4uL2NvbnRleHQvdWktYXBwU3RhdGVcIjtcblxuY29uc3QgRm9vdGVyQ2VudGVyID0gKHtcbiAgY2hpbGRyZW5cbn0pID0+IHtcbiAgY29uc3Qge1xuICAgIEZvb3RlckNlbnRlclR1bm5lbFxuICB9ID0gdXNlVHVubmVscygpO1xuICBjb25zdCBhcHBTdGF0ZSA9IHVzZVVJQXBwU3RhdGUoKTtcbiAgcmV0dXJuIF9qc3goRm9vdGVyQ2VudGVyVHVubmVsLkluLCB7XG4gICAgY2hpbGRyZW46IF9qc3goXCJkaXZcIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgICBjbGFzc05hbWU6IGNsc3goXCJmb290ZXItY2VudGVyIHplbi1tb2RlLXRyYW5zaXRpb25cIiwge1xuICAgICAgICBcImxheWVyLXVpX193cmFwcGVyX19mb290ZXItbGVmdC0tdHJhbnNpdGlvbi1ib3R0b21cIjogYXBwU3RhdGUuemVuTW9kZUVuYWJsZWRcbiAgICAgIH0pXG4gICAgfSwge1xuICAgICAgY2hpbGRyZW46IGNoaWxkcmVuXG4gICAgfSkpXG4gIH0pO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRm9vdGVyQ2VudGVyO1xuRm9vdGVyQ2VudGVyLmRpc3BsYXlOYW1lID0gXCJGb290ZXJDZW50ZXJcIjsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/footer/FooterCenter.tsx\n');
              }
            ),
            /***/
            "../../components/hoc/withInternalFallback.tsx": (
              /*!*****************************************************!*\
                !*** ../../components/hoc/withInternalFallback.tsx ***!
                \*****************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "withInternalFallback": () => (/* binding */ withInternalFallback)
/* harmony export */ });
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");
/* harmony import */ var jotai__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! jotai */ "../../../node_modules/jotai/esm/index.mjs");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _context_tunnels__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../context/tunnels */ "../../context/tunnels.ts");




const withInternalFallback = (componentName, Component) => {
  const renderAtom = (0,jotai__WEBPACK_IMPORTED_MODULE_3__.atom)(0);

  const WrapperComponent = props => {
    const {
      jotaiScope
    } = (0,_context_tunnels__WEBPACK_IMPORTED_MODULE_2__.useTunnels)(); // for rerenders

    const [, setCounter] = (0,jotai__WEBPACK_IMPORTED_MODULE_3__.useAtom)(renderAtom, jotaiScope); // for initial & subsequent renders. Tracked as component state
    // due to excalidraw multi-instance scanerios.

    const metaRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)({
      // flag set on initial render to tell the fallback component to skip the
      // render until mount counter are initialized. This is because the counter
      // is initialized in an effect, and thus we could end rendering both
      // components at the same time until counter is initialized.
      preferHost: false,
      counter: 0
    });
    (0,react__WEBPACK_IMPORTED_MODULE_1__.useLayoutEffect)(() => {
      const meta = metaRef.current;
      setCounter(c => {
        const next = c + 1;
        meta.counter = next;
        return next;
      });
      return () => {
        setCounter(c => {
          const next = c - 1;
          meta.counter = next;

          if (!next) {
            meta.preferHost = false;
          }

          return next;
        });
      };
    }, [setCounter]);

    if (!props.__fallback) {
      metaRef.current.preferHost = true;
    } // ensure we don't render fallback and host components at the same time


    if ( // either before the counters are initialized
    !metaRef.current.counter && props.__fallback && metaRef.current.preferHost || // or after the counters are initialized, and both are rendered
    // (this is the default when host renders as well)
    metaRef.current.counter > 1 && props.__fallback) {
      return null;
    }

    return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Component, Object.assign({}, props));
  };

  WrapperComponent.displayName = componentName;
  return WrapperComponent;
};//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9ob2Mvd2l0aEludGVybmFsRmFsbGJhY2sudHN4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFnRDtBQUNWO0FBQ2lCO0FBQ0o7QUFDNUM7QUFDUCxxQkFBcUIsMkNBQUk7O0FBRXpCO0FBQ0E7QUFDQTtBQUNBLE1BQU0sRUFBRSw0REFBVSxJQUFJOztBQUV0QiwyQkFBMkIsOENBQU8sMEJBQTBCO0FBQzVEOztBQUVBLG9CQUFvQiw2Q0FBTTtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsSUFBSSxzREFBZTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLE1BQU07OztBQUdOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxXQUFXLHNEQUFJLDRCQUE0QjtBQUMzQzs7QUFFQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9ob2Mvd2l0aEludGVybmFsRmFsbGJhY2sudHN4P2U1NGMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGF0b20sIHVzZUF0b20gfSBmcm9tIFwiam90YWlcIjtcbmltcG9ydCBSZWFjdCwgeyB1c2VMYXlvdXRFZmZlY3QsIHVzZVJlZiB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlVHVubmVscyB9IGZyb20gXCIuLi8uLi9jb250ZXh0L3R1bm5lbHNcIjtcbmV4cG9ydCBjb25zdCB3aXRoSW50ZXJuYWxGYWxsYmFjayA9IChjb21wb25lbnROYW1lLCBDb21wb25lbnQpID0+IHtcbiAgY29uc3QgcmVuZGVyQXRvbSA9IGF0b20oMCk7XG5cbiAgY29uc3QgV3JhcHBlckNvbXBvbmVudCA9IHByb3BzID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBqb3RhaVNjb3BlXG4gICAgfSA9IHVzZVR1bm5lbHMoKTsgLy8gZm9yIHJlcmVuZGVyc1xuXG4gICAgY29uc3QgWywgc2V0Q291bnRlcl0gPSB1c2VBdG9tKHJlbmRlckF0b20sIGpvdGFpU2NvcGUpOyAvLyBmb3IgaW5pdGlhbCAmIHN1YnNlcXVlbnQgcmVuZGVycy4gVHJhY2tlZCBhcyBjb21wb25lbnQgc3RhdGVcbiAgICAvLyBkdWUgdG8gZXhjYWxpZHJhdyBtdWx0aS1pbnN0YW5jZSBzY2FuZXJpb3MuXG5cbiAgICBjb25zdCBtZXRhUmVmID0gdXNlUmVmKHtcbiAgICAgIC8vIGZsYWcgc2V0IG9uIGluaXRpYWwgcmVuZGVyIHRvIHRlbGwgdGhlIGZhbGxiYWNrIGNvbXBvbmVudCB0byBza2lwIHRoZVxuICAgICAgLy8gcmVuZGVyIHVudGlsIG1vdW50IGNvdW50ZXIgYXJlIGluaXRpYWxpemVkLiBUaGlzIGlzIGJlY2F1c2UgdGhlIGNvdW50ZXJcbiAgICAgIC8vIGlzIGluaXRpYWxpemVkIGluIGFuIGVmZmVjdCwgYW5kIHRodXMgd2UgY291bGQgZW5kIHJlbmRlcmluZyBib3RoXG4gICAgICAvLyBjb21wb25lbnRzIGF0IHRoZSBzYW1lIHRpbWUgdW50aWwgY291bnRlciBpcyBpbml0aWFsaXplZC5cbiAgICAgIHByZWZlckhvc3Q6IGZhbHNlLFxuICAgICAgY291bnRlcjogMFxuICAgIH0pO1xuICAgIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBtZXRhID0gbWV0YVJlZi5jdXJyZW50O1xuICAgICAgc2V0Q291bnRlcihjID0+IHtcbiAgICAgICAgY29uc3QgbmV4dCA9IGMgKyAxO1xuICAgICAgICBtZXRhLmNvdW50ZXIgPSBuZXh0O1xuICAgICAgICByZXR1cm4gbmV4dDtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgc2V0Q291bnRlcihjID0+IHtcbiAgICAgICAgICBjb25zdCBuZXh0ID0gYyAtIDE7XG4gICAgICAgICAgbWV0YS5jb3VudGVyID0gbmV4dDtcblxuICAgICAgICAgIGlmICghbmV4dCkge1xuICAgICAgICAgICAgbWV0YS5wcmVmZXJIb3N0ID0gZmFsc2U7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIG5leHQ7XG4gICAgICAgIH0pO1xuICAgICAgfTtcbiAgICB9LCBbc2V0Q291bnRlcl0pO1xuXG4gICAgaWYgKCFwcm9wcy5fX2ZhbGxiYWNrKSB7XG4gICAgICBtZXRhUmVmLmN1cnJlbnQucHJlZmVySG9zdCA9IHRydWU7XG4gICAgfSAvLyBlbnN1cmUgd2UgZG9uJ3QgcmVuZGVyIGZhbGxiYWNrIGFuZCBob3N0IGNvbXBvbmVudHMgYXQgdGhlIHNhbWUgdGltZVxuXG5cbiAgICBpZiAoIC8vIGVpdGhlciBiZWZvcmUgdGhlIGNvdW50ZXJzIGFyZSBpbml0aWFsaXplZFxuICAgICFtZXRhUmVmLmN1cnJlbnQuY291bnRlciAmJiBwcm9wcy5fX2ZhbGxiYWNrICYmIG1ldGFSZWYuY3VycmVudC5wcmVmZXJIb3N0IHx8IC8vIG9yIGFmdGVyIHRoZSBjb3VudGVycyBhcmUgaW5pdGlhbGl6ZWQsIGFuZCBib3RoIGFyZSByZW5kZXJlZFxuICAgIC8vICh0aGlzIGlzIHRoZSBkZWZhdWx0IHdoZW4gaG9zdCByZW5kZXJzIGFzIHdlbGwpXG4gICAgbWV0YVJlZi5jdXJyZW50LmNvdW50ZXIgPiAxICYmIHByb3BzLl9fZmFsbGJhY2spIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBfanN4KENvbXBvbmVudCwgT2JqZWN0LmFzc2lnbih7fSwgcHJvcHMpKTtcbiAgfTtcblxuICBXcmFwcGVyQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gY29tcG9uZW50TmFtZTtcbiAgcmV0dXJuIFdyYXBwZXJDb21wb25lbnQ7XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==
//# sourceURL=webpack-internal:///../../components/hoc/withInternalFallback.tsx
`);
              }
            ),
            /***/
            "../../components/icons.tsx": (
              /*!**********************************!*\
                !*** ../../components/icons.tsx ***!
                \**********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "AlignBottomIcon": () => (/* binding */ AlignBottomIcon),\n/* harmony export */   "AlignLeftIcon": () => (/* binding */ AlignLeftIcon),\n/* harmony export */   "AlignRightIcon": () => (/* binding */ AlignRightIcon),\n/* harmony export */   "AlignTopIcon": () => (/* binding */ AlignTopIcon),\n/* harmony export */   "ArrowIcon": () => (/* binding */ ArrowIcon),\n/* harmony export */   "ArrowRightIcon": () => (/* binding */ ArrowRightIcon),\n/* harmony export */   "ArrowheadArrowIcon": () => (/* binding */ ArrowheadArrowIcon),\n/* harmony export */   "ArrowheadBarIcon": () => (/* binding */ ArrowheadBarIcon),\n/* harmony export */   "ArrowheadDotIcon": () => (/* binding */ ArrowheadDotIcon),\n/* harmony export */   "ArrowheadNoneIcon": () => (/* binding */ ArrowheadNoneIcon),\n/* harmony export */   "ArrowheadTriangleIcon": () => (/* binding */ ArrowheadTriangleIcon),\n/* harmony export */   "BringForwardIcon": () => (/* binding */ BringForwardIcon),\n/* harmony export */   "BringToFrontIcon": () => (/* binding */ BringToFrontIcon),\n/* harmony export */   "CenterHorizontallyIcon": () => (/* binding */ CenterHorizontallyIcon),\n/* harmony export */   "CenterVerticallyIcon": () => (/* binding */ CenterVerticallyIcon),\n/* harmony export */   "CloseIcon": () => (/* binding */ CloseIcon),\n/* harmony export */   "DiamondIcon": () => (/* binding */ DiamondIcon),\n/* harmony export */   "DiscordIcon": () => (/* binding */ DiscordIcon),\n/* harmony export */   "DistributeHorizontallyIcon": () => (/* binding */ DistributeHorizontallyIcon),\n/* harmony export */   "DistributeVerticallyIcon": () => (/* binding */ DistributeVerticallyIcon),\n/* harmony export */   "DotsIcon": () => (/* binding */ DotsIcon),\n/* harmony export */   "DuplicateIcon": () => (/* binding */ DuplicateIcon),\n/* harmony export */   "EdgeRoundIcon": () => (/* binding */ EdgeRoundIcon),\n/* harmony export */   "EdgeSharpIcon": () => (/* binding */ EdgeSharpIcon),\n/* harmony export */   "EllipseIcon": () => (/* binding */ EllipseIcon),\n/* harmony export */   "EmbedIcon": () => (/* binding */ EmbedIcon),\n/* harmony export */   "EraserIcon": () => (/* binding */ EraserIcon),\n/* harmony export */   "ExcalLogo": () => (/* binding */ ExcalLogo),\n/* harmony export */   "ExportIcon": () => (/* binding */ ExportIcon),\n/* harmony export */   "ExportImageIcon": () => (/* binding */ ExportImageIcon),\n/* harmony export */   "ExternalLinkIcon": () => (/* binding */ ExternalLinkIcon),\n/* harmony export */   "FillCrossHatchIcon": () => (/* binding */ FillCrossHatchIcon),\n/* harmony export */   "FillHachureIcon": () => (/* binding */ FillHachureIcon),\n/* harmony export */   "FillSolidIcon": () => (/* binding */ FillSolidIcon),\n/* harmony export */   "FillZigZagIcon": () => (/* binding */ FillZigZagIcon),\n/* harmony export */   "FontFamilyCodeIcon": () => (/* binding */ FontFamilyCodeIcon),\n/* harmony export */   "FontFamilyNormalIcon": () => (/* binding */ FontFamilyNormalIcon),\n/* harmony export */   "FontSizeExtraLargeIcon": () => (/* binding */ FontSizeExtraLargeIcon),\n/* harmony export */   "FontSizeLargeIcon": () => (/* binding */ FontSizeLargeIcon),\n/* harmony export */   "FontSizeMediumIcon": () => (/* binding */ FontSizeMediumIcon),\n/* harmony export */   "FontSizeSmallIcon": () => (/* binding */ FontSizeSmallIcon),\n/* harmony export */   "FreedrawIcon": () => (/* binding */ FreedrawIcon),\n/* harmony export */   "GithubIcon": () => (/* binding */ GithubIcon),\n/* harmony export */   "GroupIcon": () => (/* binding */ GroupIcon),\n/* harmony export */   "HamburgerMenuIcon": () => (/* binding */ HamburgerMenuIcon),\n/* harmony export */   "HelpIcon": () => (/* binding */ HelpIcon),\n/* harmony export */   "ImageIcon": () => (/* binding */ ImageIcon),\n/* harmony export */   "LibraryIcon": () => (/* binding */ LibraryIcon),\n/* harmony export */   "LineIcon": () => (/* binding */ LineIcon),\n/* harmony export */   "LinkIcon": () => (/* binding */ LinkIcon),\n/* harmony export */   "LoadIcon": () => (/* binding */ LoadIcon),\n/* harmony export */   "LockedIcon": () => (/* binding */ LockedIcon),\n/* harmony export */   "MoonIcon": () => (/* binding */ MoonIcon),\n/* harmony export */   "PenModeIcon": () => (/* binding */ PenModeIcon),\n/* harmony export */   "PinIcon": () => (/* binding */ PinIcon),\n/* harmony export */   "PlusIcon": () => (/* binding */ PlusIcon),\n/* harmony export */   "PlusPromoIcon": () => (/* binding */ PlusPromoIcon),\n/* harmony export */   "RectangleIcon": () => (/* binding */ RectangleIcon),\n/* harmony export */   "RedoIcon": () => (/* binding */ RedoIcon),\n/* harmony export */   "SelectionIcon": () => (/* binding */ SelectionIcon),\n/* harmony export */   "SendBackwardIcon": () => (/* binding */ SendBackwardIcon),\n/* harmony export */   "SendToBackIcon": () => (/* binding */ SendToBackIcon),\n/* harmony export */   "SloppinessArchitectIcon": () => (/* binding */ SloppinessArchitectIcon),\n/* harmony export */   "SloppinessArtistIcon": () => (/* binding */ SloppinessArtistIcon),\n/* harmony export */   "SloppinessCartoonistIcon": () => (/* binding */ SloppinessCartoonistIcon),\n/* harmony export */   "StrokeStyleDashedIcon": () => (/* binding */ StrokeStyleDashedIcon),\n/* harmony export */   "StrokeStyleDottedIcon": () => (/* binding */ StrokeStyleDottedIcon),\n/* harmony export */   "StrokeStyleSolidIcon": () => (/* binding */ StrokeStyleSolidIcon),\n/* harmony export */   "StrokeWidthBaseIcon": () => (/* binding */ StrokeWidthBaseIcon),\n/* harmony export */   "StrokeWidthBoldIcon": () => (/* binding */ StrokeWidthBoldIcon),\n/* harmony export */   "StrokeWidthExtraBoldIcon": () => (/* binding */ StrokeWidthExtraBoldIcon),\n/* harmony export */   "SunIcon": () => (/* binding */ SunIcon),\n/* harmony export */   "TextAlignBottomIcon": () => (/* binding */ TextAlignBottomIcon),\n/* harmony export */   "TextAlignCenterIcon": () => (/* binding */ TextAlignCenterIcon),\n/* harmony export */   "TextAlignLeftIcon": () => (/* binding */ TextAlignLeftIcon),\n/* harmony export */   "TextAlignMiddleIcon": () => (/* binding */ TextAlignMiddleIcon),\n/* harmony export */   "TextAlignRightIcon": () => (/* binding */ TextAlignRightIcon),\n/* harmony export */   "TextAlignTopIcon": () => (/* binding */ TextAlignTopIcon),\n/* harmony export */   "TextIcon": () => (/* binding */ TextIcon),\n/* harmony export */   "TrashIcon": () => (/* binding */ TrashIcon),\n/* harmony export */   "TwitterIcon": () => (/* binding */ TwitterIcon),\n/* harmony export */   "UndoIcon": () => (/* binding */ UndoIcon),\n/* harmony export */   "UngroupIcon": () => (/* binding */ UngroupIcon),\n/* harmony export */   "UnlockedIcon": () => (/* binding */ UnlockedIcon),\n/* harmony export */   "WelcomeScreenHelpArrow": () => (/* binding */ WelcomeScreenHelpArrow),\n/* harmony export */   "WelcomeScreenMenuArrow": () => (/* binding */ WelcomeScreenMenuArrow),\n/* harmony export */   "WelcomeScreenTopToolbarArrow": () => (/* binding */ WelcomeScreenTopToolbarArrow),\n/* harmony export */   "ZoomInIcon": () => (/* binding */ ZoomInIcon),\n/* harmony export */   "ZoomOutIcon": () => (/* binding */ ZoomOutIcon),\n/* harmony export */   "alertTriangleIcon": () => (/* binding */ alertTriangleIcon),\n/* harmony export */   "back": () => (/* binding */ back),\n/* harmony export */   "checkIcon": () => (/* binding */ checkIcon),\n/* harmony export */   "clipboard": () => (/* binding */ clipboard),\n/* harmony export */   "clone": () => (/* binding */ clone),\n/* harmony export */   "copyIcon": () => (/* binding */ copyIcon),\n/* harmony export */   "createIcon": () => (/* binding */ createIcon),\n/* harmony export */   "done": () => (/* binding */ done),\n/* harmony export */   "downloadIcon": () => (/* binding */ downloadIcon),\n/* harmony export */   "eraser": () => (/* binding */ eraser),\n/* harmony export */   "exportToFileIcon": () => (/* binding */ exportToFileIcon),\n/* harmony export */   "extraToolsIcon": () => (/* binding */ extraToolsIcon),\n/* harmony export */   "eyeDropperIcon": () => (/* binding */ eyeDropperIcon),\n/* harmony export */   "file": () => (/* binding */ file),\n/* harmony export */   "frameToolIcon": () => (/* binding */ frameToolIcon),\n/* harmony export */   "handIcon": () => (/* binding */ handIcon),\n/* harmony export */   "helpIcon": () => (/* binding */ helpIcon),\n/* harmony export */   "iconFillColor": () => (/* binding */ iconFillColor),\n/* harmony export */   "laserPointerToolIcon": () => (/* binding */ laserPointerToolIcon),\n/* harmony export */   "menu": () => (/* binding */ menu),\n/* harmony export */   "mermaidLogoIcon": () => (/* binding */ mermaidLogoIcon),\n/* harmony export */   "palette": () => (/* binding */ palette),\n/* harmony export */   "playerPlayIcon": () => (/* binding */ playerPlayIcon),\n/* harmony export */   "playerStopFilledIcon": () => (/* binding */ playerStopFilledIcon),\n/* harmony export */   "publishIcon": () => (/* binding */ publishIcon),\n/* harmony export */   "questionCircle": () => (/* binding */ questionCircle),\n/* harmony export */   "resetZoom": () => (/* binding */ resetZoom),\n/* harmony export */   "save": () => (/* binding */ save),\n/* harmony export */   "saveAs": () => (/* binding */ saveAs),\n/* harmony export */   "share": () => (/* binding */ share),\n/* harmony export */   "shareIOS": () => (/* binding */ shareIOS),\n/* harmony export */   "shareWindows": () => (/* binding */ shareWindows),\n/* harmony export */   "shield": () => (/* binding */ shield),\n/* harmony export */   "start": () => (/* binding */ start),\n/* harmony export */   "stop": () => (/* binding */ stop),\n/* harmony export */   "tablerCheckIcon": () => (/* binding */ tablerCheckIcon),\n/* harmony export */   "usersIcon": () => (/* binding */ usersIcon),\n/* harmony export */   "zoomIn": () => (/* binding */ zoomIn),\n/* harmony export */   "zoomOut": () => (/* binding */ zoomOut)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var open_color__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! open-color */ "../../../node_modules/open-color/open-color.json");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\nvar __rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n\n  if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n //\n// All icons are imported from https://fontawesome.com/icons?d=gallery\n// Icons are under the license https://fontawesome.com/license\n//\n// Note: when adding new icons, review https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/RTL_Guidelines\n// to determine whether or not the icons should be mirrored in right-to-left languages.\n\n\n\n\n\nconst iconFillColor = theme => "var(--icon-fill-color)";\n\nconst handlerColor = theme => theme === _constants__WEBPACK_IMPORTED_MODULE_4__.THEME.LIGHT ? open_color__WEBPACK_IMPORTED_MODULE_2__.white : "#1e1e1e";\n\nconst createIcon = (d, opts = 512) => {\n  const _a = typeof opts === "number" ? {\n    width: opts\n  } : opts,\n        {\n    width = 512,\n    height = width,\n    mirror,\n    style\n  } = _a,\n        rest = __rest(_a, ["width", "height", "mirror", "style"]);\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("svg", Object.assign({\n    "aria-hidden": "true",\n    focusable: "false",\n    role: "img",\n    viewBox: `0 0 ${width} ${height}`,\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_3__["default"])({\n      "rtl-mirror": mirror\n    }),\n    style: style\n  }, rest, {\n    children: typeof d === "string" ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      fill: "currentColor",\n      d: d\n    }) : d\n  }));\n};\nconst tablerIconProps = {\n  width: 24,\n  height: 24,\n  fill: "none",\n  strokeWidth: 2,\n  stroke: "currentColor",\n  strokeLinecap: "round",\n  strokeLinejoin: "round"\n};\nconst modifiedTablerIconProps = {\n  width: 20,\n  height: 20,\n  fill: "none",\n  stroke: "currentColor",\n  strokeLinecap: "round",\n  strokeLinejoin: "round"\n}; // -----------------------------------------------------------------------------\n// tabler-icons: present\n\nconst PlusPromoIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "1.5"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("rect", {\n    x: 3,\n    y: 8,\n    width: 18,\n    height: 4,\n    rx: 1\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: 12,\n    y1: 8,\n    x2: 12,\n    y2: 21\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M19 12v7a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2v-7"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M7.5 8a2.5 2.5 0 0 1 0 -5a4.8 8 0 0 1 4.5 5a4.8 8 0 0 1 4.5 -5a2.5 2.5 0 0 1 0 5"\n  })]\n})), tablerIconProps); // tabler-icons: book\n\nconst LibraryIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "1.5"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M3 19a9 9 0 0 1 9 0a9 9 0 0 1 9 0"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M3 6a9 9 0 0 1 9 0a9 9 0 0 1 9 0"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "3",\n    y1: "6",\n    x2: "3",\n    y2: "19"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "12",\n    y1: "6",\n    x2: "12",\n    y2: "19"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "21",\n    y1: "6",\n    x2: "21",\n    y2: "19"\n  })]\n})), tablerIconProps); // tabler-icons: plus\n\nconst PlusIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("svg", Object.assign({\n  strokeWidth: "1.5"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "12",\n    y1: "5",\n    x2: "12",\n    y2: "19"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "5",\n    y1: "12",\n    x2: "19",\n    y2: "12"\n  })]\n})), tablerIconProps); // tabler-icons: dots-vertical\n\nconst DotsIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "1.5"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("circle", {\n    cx: "12",\n    cy: "12",\n    r: "1"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("circle", {\n    cx: "12",\n    cy: "19",\n    r: "1"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("circle", {\n    cx: "12",\n    cy: "5",\n    r: "1"\n  })]\n})), tablerIconProps); // tabler-icons: pinned\n\nconst PinIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("svg", Object.assign({\n  strokeWidth: "1.5"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M9 4v6l-2 4v2h10v-2l-2 -4v-6"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "12",\n    y1: "16",\n    x2: "12",\n    y2: "21"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "8",\n    y1: "4",\n    x2: "16",\n    y2: "4"\n  })]\n})), tablerIconProps); // tabler-icons: lock-open (via Figma)\n\nconst UnlockedIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M13.542 8.542H6.458a2.5 2.5 0 0 0-2.5 2.5v3.75a2.5 2.5 0 0 0 2.5 2.5h7.084a2.5 2.5 0 0 0 2.5-2.5v-3.75a2.5 2.5 0 0 0-2.5-2.5Z",\n    stroke: "currentColor",\n    strokeWidth: "1.25"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M10 13.958a1.042 1.042 0 1 0 0-2.083 1.042 1.042 0 0 0 0 2.083Z",\n    stroke: "currentColor",\n    strokeWidth: "1.25"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("mask", Object.assign({\n    id: "UnlockedIcon",\n    style: {\n      maskType: "alpha"\n    },\n    maskUnits: "userSpaceOnUse",\n    x: 6,\n    y: 1,\n    width: 9,\n    height: 9\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      stroke: "none",\n      d: "M6.399 9.561V5.175c0-.93.401-1.823 1.116-2.48a3.981 3.981 0 0 1 2.693-1.028c1.01 0 1.98.37 2.694 1.027.715.658 1.116 1.55 1.116 2.481",\n      fill: "#fff"\n    })\n  })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("g", Object.assign({\n    mask: "url(#UnlockedIcon)"\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      stroke: "none",\n      d: "M5.149 9.561v1.25h2.5v-1.25h-2.5Zm5.06-7.894V.417v1.25Zm2.559 3.508v1.25h2.5v-1.25h-2.5ZM7.648 8.51V5.175h-2.5V8.51h2.5Zm0-3.334c0-.564.243-1.128.713-1.561L6.668 1.775c-.959.883-1.52 2.104-1.52 3.4h2.5Zm.713-1.561a2.732 2.732 0 0 1 1.847-.697v-2.5c-1.31 0-2.585.478-3.54 1.358L8.36 3.614Zm1.847-.697c.71 0 1.374.26 1.847.697l1.694-1.839a5.231 5.231 0 0 0-3.54-1.358v2.5Zm1.847.697c.47.433.713.997.713 1.561h2.5c0-1.296-.56-2.517-1.52-3.4l-1.693 1.839Z",\n      fill: "currentColor"\n    })\n  }))]\n}), modifiedTablerIconProps); // tabler-icons: lock (via Figma)\n\nconst LockedIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "1.25"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M13.542 8.542H6.458a2.5 2.5 0 0 0-2.5 2.5v3.75a2.5 2.5 0 0 0 2.5 2.5h7.084a2.5 2.5 0 0 0 2.5-2.5v-3.75a2.5 2.5 0 0 0-2.5-2.5Z"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M10 13.958a1.042 1.042 0 1 0 0-2.083 1.042 1.042 0 0 0 0 2.083Z"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M6.667 8.333V5.417C6.667 3.806 8.159 2.5 10 2.5c1.841 0 3.333 1.306 3.333 2.917v2.916"\n  })]\n})), modifiedTablerIconProps); // custom\n\nconst WelcomeScreenMenuArrow = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M38.5 83.5c-14-2-17.833-10.473-21-22.5C14.333 48.984 12 22 12 12.5",\n    stroke: "currentColor",\n    strokeWidth: 2,\n    strokeLinecap: "round"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    fillRule: "evenodd",\n    clipRule: "evenodd",\n    d: "m12.005 10.478 7.905 14.423L6 25.75l6.005-15.273Z",\n    fill: "currentColor"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M12.005 10.478c1.92 3.495 3.838 7 7.905 14.423m-7.905-14.423c3.11 5.683 6.23 11.368 7.905 14.423m0 0c-3.68.226-7.35.455-13.91.85m13.91-.85c-5.279.33-10.566.647-13.91.85m0 0c1.936-4.931 3.882-9.86 6.005-15.273M6 25.75c2.069-5.257 4.135-10.505 6.005-15.272",\n    stroke: "currentColor",\n    strokeWidth: 2,\n    strokeLinecap: "round"\n  })]\n}), {\n  width: 41,\n  height: 94,\n  fill: "none"\n}); // custom\n\nconst WelcomeScreenHelpArrow = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M18.026 1.232c-5.268 13.125-5.548 33.555 3.285 42.311 8.823 8.75 33.31 12.304 42.422 13.523",\n    stroke: "currentColor",\n    strokeWidth: 2,\n    strokeLinecap: "round"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    fillRule: "evenodd",\n    clipRule: "evenodd",\n    d: "m72.181 59.247-13.058-10-2.948 13.62 16.006-3.62Z",\n    fill: "currentColor"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M72.181 59.247c-3.163-2.429-6.337-4.856-13.058-10m13.058 10c-5.145-3.936-10.292-7.882-13.058-10m0 0c-.78 3.603-1.563 7.196-2.948 13.62m2.948-13.62c-1.126 5.168-2.24 10.346-2.948 13.62m0 0c5.168-1.166 10.334-2.343 16.006-3.62m-16.006 3.62c5.51-1.248 11.01-2.495 16.006-3.62",\n    stroke: "currentColor",\n    strokeWidth: 2,\n    strokeLinecap: "round"\n  })]\n}), {\n  width: 85,\n  height: 71,\n  fill: "none"\n}); // custom\n\nconst WelcomeScreenTopToolbarArrow = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M1 77c14-2 31.833-11.973 35-24 3.167-12.016-6-35-9.5-43.5",\n    stroke: "currentColor",\n    strokeWidth: 2,\n    strokeLinecap: "round"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    fillRule: "evenodd",\n    clipRule: "evenodd",\n    d: "m24.165 1.093-2.132 16.309 13.27-4.258-11.138-12.05Z",\n    fill: "currentColor"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M24.165 1.093c-.522 3.953-1.037 7.916-2.132 16.309m2.131-16.309c-.835 6.424-1.68 12.854-2.13 16.308m0 0c3.51-1.125 7.013-2.243 13.27-4.257m-13.27 4.257c5.038-1.608 10.08-3.232 13.27-4.257m0 0c-3.595-3.892-7.197-7.777-11.14-12.05m11.14 12.05c-3.837-4.148-7.667-8.287-11.14-12.05",\n    stroke: "currentColor",\n    strokeWidth: 2,\n    strokeLinecap: "round"\n  })]\n}), {\n  width: 38,\n  height: 78,\n  fill: "none"\n}); // custom\n\nconst ExcalLogo = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("g", Object.assign({\n  fill: "currentColor"\n}, {\n  children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M39.9 32.889a.326.326 0 0 0-.279-.056c-2.094-3.083-4.774-6-7.343-8.833l-.419-.472a.212.212 0 0 0-.056-.139.586.586 0 0 0-.167-.111l-.084-.083-.056-.056c-.084-.167-.28-.278-.475-.167-.782.39-1.507.973-2.206 1.528-.92.722-1.842 1.445-2.708 2.25a8.405 8.405 0 0 0-.977 1.028c-.14.194-.028.361.14.444-.615.611-1.23 1.223-1.843 1.861a.315.315 0 0 0-.084.223c0 .083.056.166.111.194l1.09.833v.028c1.535 1.528 4.244 3.611 7.12 5.861.418.334.865.667 1.284 1 .195.223.39.473.558.695.084.11.28.139.391.055.056.056.14.111.196.167a.398.398 0 0 0 .167.056.255.255 0 0 0 .224-.111.394.394 0 0 0 .055-.167c.029 0 .028.028.056.028a.318.318 0 0 0 .224-.084l5.082-5.528a.309.309 0 0 0 0-.444Zm-14.63-1.917a.485.485 0 0 0 .111.14c.586.5 1.2 1 1.843 1.555l-2.569-1.945-.251-.166c-.056-.028-.112-.084-.168-.111l-.195-.167.056-.056.055-.055.112-.111c.866-.861 2.346-2.306 3.1-3.028-.81.805-2.43 3.167-2.095 3.944Zm8.767 6.89-2.122-1.612a44.713 44.713 0 0 0-2.625-2.5c1.145.861 2.122 1.611 2.262 1.75 1.117.972 1.06.806 1.815 1.445l.921.666a1.06 1.06 0 0 1-.251.25Zm.558.416-.056-.028c.084-.055.168-.111.252-.194l-.196.222ZM1.089 5.75c.055.361.14.722.195 1.056.335 1.833.67 3.5 1.284 4.75l.252.944c.084.361.223.806.363.917 1.424 1.25 3.602 3.11 5.947 4.889a.295.295 0 0 0 .363 0s0 .027.028.027a.254.254 0 0 0 .196.084.318.318 0 0 0 .223-.084c2.988-3.305 5.221-6.027 6.813-8.305.112-.111.14-.278.14-.417.111-.111.195-.25.307-.333.111-.111.111-.306 0-.39l-.028-.027c0-.055-.028-.139-.084-.167-.698-.666-1.2-1.138-1.731-1.638-.922-.862-1.871-1.75-3.881-3.75l-.028-.028c-.028-.028-.056-.056-.112-.056-.558-.194-1.703-.389-3.127-.639C6.087 2.223 3.21 1.723.614.944c0 0-.168 0-.196.028l-.083.084c-.028.027-.056.055-.224.11h.056-.056c.028.167.028.278.084.473 0 .055.112.5.112.555l.782 3.556Zm15.496 3.278-.335-.334c.084.112.196.195.335.334Zm-3.546 4.666-.056.056c0-.028.028-.056.056-.056Zm-2.038-10c.168.167.866.834 1.033.973-.726-.334-2.54-1.167-3.379-1.445.838.167 1.983.334 2.346.472ZM1.424 2.306c.419.722.754 3.222 1.089 5.666-.196-.778-.335-1.555-.503-2.278-.251-1.277-.503-2.416-.838-3.416.056 0 .14 0 .252.028Zm-.168-.584c-.112 0-.223-.028-.307-.028 0-.027 0-.055-.028-.055.14 0 .223.028.335.083Zm-1.089.222c0-.027 0-.027 0 0ZM39.453 1.333c.028-.11-.558-.61-.363-.639.42-.027.42-.666 0-.666-.558.028-1.144.166-1.675.25-.977.194-1.982.389-2.96.61-2.205.473-4.383.973-6.561 1.557-.67.194-1.424.333-2.066.666-.224.111-.196.333-.084.472-.056.028-.084.028-.14.056-.195.028-.363.056-.558.083-.168.028-.252.167-.224.334 0 .027.028.083.028.11-1.173 1.556-2.485 3.195-3.909 4.945-1.396 1.611-2.876 3.306-4.356 5.056-4.719 5.5-10.052 11.75-15.943 17.25a.268.268 0 0 0 0 .389c.028.027.056.055.084.055-.084.084-.168.14-.252.222-.056.056-.084.111-.084.167a.605.605 0 0 0-.111.139c-.112.111-.112.305.028.389.111.11.307.11.39-.028.029-.028.029-.056.056-.056a.44.44 0 0 1 .615 0c.335.362.67.723.977 1.028l-.698-.583c-.112-.111-.307-.083-.39.028-.113.11-.085.305.027.389l7.427 6.194c.056.056.112.056.196.056s.14-.028.195-.084l.168-.166c.028.027.083.027.111.027.084 0 .14-.027.196-.083 10.052-10.055 18.15-17.639 27.42-24.417.083-.055.111-.166.111-.25.112 0 .196-.083.251-.194 1.704-5.194 2.039-9.806 2.15-12.083v-.028c0-.028.028-.056.028-.083.028-.056.028-.084.028-.084a1.626 1.626 0 0 0-.111-1.028ZM21.472 9.5c.446-.5.893-1.028 1.34-1.5-2.876 3.778-7.65 9.583-14.408 16.5 4.607-5.083 9.242-10.333 13.068-15ZM5.193 35.778h.084-.084Zm3.462 3.194c-.027-.028-.027-.028 0-.028v.028Zm4.16-3.583c.224-.25.448-.472.699-.722 0 0 0 .027.028.027-.252.223-.475.445-.726.695Zm1.146-1.111c.14-.14.279-.334.446-.5l.028-.028c1.648-1.694 3.351-3.389 5.082-5.111l.028-.028c.419-.333.921-.694 1.368-1.028a379.003 379.003 0 0 0-6.952 6.695ZM24.794 6.472c-.921 1.195-1.954 2.778-2.82 4.028-2.736 3.944-11.532 13.583-11.727 13.75a1976.983 1976.983 0 0 1-8.042 7.639l-.167.167c-.14-.167-.14-.417.028-.556C14.49 19.861 22.03 10.167 25.074 5.917c-.084.194-.14.36-.28.555Zm4.83 5.695c-1.116-.64-1.646-1.64-1.34-2.611l.084-.334c.028-.083.084-.194.14-.277.307-.5.754-.917 1.257-1.167.027 0 .055 0 .083-.028-.028-.056-.028-.139-.028-.222.028-.167.14-.278.335-.278.335 0 1.369.306 1.76.639.111.083.223.194.335.305.14.167.363.445.474.667.056.028.112.306.196.445.056.222.111.472.084.694-.028.028 0 .194-.028.194a2.668 2.668 0 0 1-.363 1.028c-.028.028-.028.056-.056.084l-.028.027c-.14.223-.335.417-.53.556-.643.444-1.369.583-2.095.389 0 0-.195-.084-.28-.111Zm8.154-.834a39.098 39.098 0 0 1-.893 3.167c0 .028-.028.083 0 .111-.056 0-.084.028-.14.056-2.206 1.61-4.356 3.305-6.506 5.028 1.843-1.64 3.686-3.306 5.613-4.945.558-.5.949-1.139 1.06-1.861l.28-1.667v-.055c.14-.334.67-.195.586.166Z",\n    fill: "currentColor"\n  })\n})), {\n  width: 40,\n  height: 40,\n  fill: "none"\n}); // custom\n\nconst SelectionIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  stroke: "currentColor",\n  strokeLinecap: "round",\n  strokeLinejoin: "round"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M6 6l4.153 11.793a0.365 .365 0 0 0 .331 .207a0.366 .366 0 0 0 .332 -.207l2.184 -4.793l4.787 -1.994a0.355 .355 0 0 0 .213 -.323a0.355 .355 0 0 0 -.213 -.323l-11.787 -4.36z"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M13.5 13.5l4.5 4.5"\n  })]\n})), {\n  fill: "none",\n  width: 22,\n  height: 22,\n  strokeWidth: 1.25\n}); // tabler-icons: square\n\nconst RectangleIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "1.5"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("rect", {\n    x: "4",\n    y: "4",\n    width: "16",\n    height: "16",\n    rx: "2"\n  })]\n})), tablerIconProps); // tabler-icons: square-rotated\n\nconst DiamondIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "1.5"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M10.5 20.4l-6.9 -6.9c-.781 -.781 -.781 -2.219 0 -3l6.9 -6.9c.781 -.781 2.219 -.781 3 0l6.9 6.9c.781 .781 .781 2.219 0 3l-6.9 6.9c-.781 .781 -2.219 .781 -3 0z"\n  })]\n})), tablerIconProps); // tabler-icons: circle\n\nconst EllipseIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "1.5"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("circle", {\n    cx: "12",\n    cy: "12",\n    r: "9"\n  })]\n})), tablerIconProps); // tabler-icons: arrow-narrow-right\n\nconst ArrowIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "1.5"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "5",\n    y1: "12",\n    x2: "19",\n    y2: "12"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "15",\n    y1: "16",\n    x2: "19",\n    y2: "12"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "15",\n    y1: "8",\n    x2: "19",\n    y2: "12"\n  })]\n})), tablerIconProps); // custom?\n\nconst LineIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n  d: "M4.167 10h11.666",\n  strokeWidth: "1.5"\n}), modifiedTablerIconProps);\nconst PenModeIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "1.25"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M20 17v-12c0 -1.121 -.879 -2 -2 -2s-2 .879 -2 2v12l2 2l2 -2z"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M16 7h4"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M18 19h-13a2 2 0 1 1 0 -4h4a2 2 0 1 0 0 -4h-3"\n  })]\n})), tablerIconProps); // modified tabler-icons: pencil\n\nconst FreedrawIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "1.25"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    clipRule: "evenodd",\n    d: "m7.643 15.69 7.774-7.773a2.357 2.357 0 1 0-3.334-3.334L4.31 12.357a3.333 3.333 0 0 0-.977 2.357v1.953h1.953c.884 0 1.732-.352 2.357-.977Z"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "m11.25 5.417 3.333 3.333"\n  })]\n})), modifiedTablerIconProps); // tabler-icons: typography\n\nconst TextIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "1.5"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "4",\n    y1: "20",\n    x2: "7",\n    y2: "20"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "14",\n    y1: "20",\n    x2: "21",\n    y2: "20"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "6.9",\n    y1: "15",\n    x2: "13.8",\n    y2: "15"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "10.2",\n    y1: "6.3",\n    x2: "16",\n    y2: "20"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("polyline", {\n    points: "5 20 11 4 13 4 20 20"\n  })]\n})), tablerIconProps); // modified tabler-icons: photo\n\nconst ImageIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "1.25"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M12.5 6.667h.01"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M4.91 2.625h10.18a2.284 2.284 0 0 1 2.285 2.284v10.182a2.284 2.284 0 0 1-2.284 2.284H4.909a2.284 2.284 0 0 1-2.284-2.284V4.909a2.284 2.284 0 0 1 2.284-2.284Z"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "m3.333 12.5 3.334-3.333c.773-.745 1.726-.745 2.5 0l4.166 4.166"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "m11.667 11.667.833-.834c.774-.744 1.726-.744 2.5 0l1.667 1.667"\n  })]\n})), modifiedTablerIconProps); // tabler-icons: eraser\n\nconst EraserIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "1.5"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M19 20h-10.5l-4.21 -4.3a1 1 0 0 1 0 -1.41l10 -10a1 1 0 0 1 1.41 0l5 5a1 1 0 0 1 0 1.41l-9.2 9.3"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M18 13.3l-6.3 -6.3"\n  })]\n})), tablerIconProps);\nconst ZoomInIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n  strokeWidth: "1.25",\n  d: "M10 4.167v11.666M4.167 10h11.666"\n}), modifiedTablerIconProps);\nconst ZoomOutIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n  d: "M5 10h10",\n  strokeWidth: "1.25"\n}), modifiedTablerIconProps);\nconst TrashIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n  strokeWidth: "1.25",\n  d: "M3.333 5.833h13.334M8.333 9.167v5M11.667 9.167v5M4.167 5.833l.833 10c0 .92.746 1.667 1.667 1.667h6.666c.92 0 1.667-.746 1.667-1.667l.833-10M7.5 5.833v-2.5c0-.46.373-.833.833-.833h3.334c.46 0 .833.373.833.833v2.5"\n}), modifiedTablerIconProps);\nconst EmbedIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "1.25"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("polyline", {\n    points: "12 16 18 10 12 4"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("polyline", {\n    points: "8 4 2 10 8 16"\n  })]\n})), modifiedTablerIconProps);\nconst DuplicateIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "1.25"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M14.375 6.458H8.958a2.5 2.5 0 0 0-2.5 2.5v5.417a2.5 2.5 0 0 0 2.5 2.5h5.417a2.5 2.5 0 0 0 2.5-2.5V8.958a2.5 2.5 0 0 0-2.5-2.5Z"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    clipRule: "evenodd",\n    d: "M11.667 3.125c.517 0 .986.21 1.325.55.34.338.55.807.55 1.325v1.458H8.333c-.485 0-.927.185-1.26.487-.343.312-.57.75-.609 1.24l-.005 5.357H5a1.87 1.87 0 0 1-1.326-.55 1.87 1.87 0 0 1-.549-1.325V5c0-.518.21-.987.55-1.326.338-.34.807-.549 1.325-.549h6.667Z"\n  })]\n})), modifiedTablerIconProps);\nconst MoonIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n  clipRule: "evenodd",\n  d: "M10 2.5h.328a6.25 6.25 0 0 0 6.6 10.372A7.5 7.5 0 1 1 10 2.493V2.5Z",\n  stroke: "currentColor"\n}), modifiedTablerIconProps);\nconst SunIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("g", Object.assign({\n  stroke: "currentColor",\n  strokeWidth: "1.25",\n  strokeLinecap: "round",\n  strokeLinejoin: "round"\n}, {\n  children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M10 12.5a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5ZM10 4.167V2.5M14.167 5.833l1.166-1.166M15.833 10H17.5M14.167 14.167l1.166 1.166M10 15.833V17.5M5.833 14.167l-1.166 1.166M5 10H3.333M5.833 5.833 4.667 4.667"\n  })\n})), modifiedTablerIconProps);\nconst HamburgerMenuIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "1.5"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "4",\n    y1: "6",\n    x2: "20",\n    y2: "6"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "4",\n    y1: "12",\n    x2: "20",\n    y2: "12"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "4",\n    y1: "18",\n    x2: "20",\n    y2: "18"\n  })]\n})), tablerIconProps);\nconst ExportIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n  strokeWidth: "1.25",\n  d: "M3.333 14.167v1.666c0 .92.747 1.667 1.667 1.667h10c.92 0 1.667-.746 1.667-1.667v-1.666M5.833 9.167 10 13.333l4.167-4.166M10 3.333v10"\n}), modifiedTablerIconProps);\nconst HelpIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "1.5"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("circle", {\n    cx: "12",\n    cy: "12",\n    r: "9"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "12",\n    y1: "17",\n    x2: "12",\n    y2: "17.01"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M12 13.5a1.5 1.5 0 0 1 1 -1.5a2.6 2.6 0 1 0 -3 -4"\n  })]\n})), tablerIconProps);\nconst ExternalLinkIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n  strokeWidth: "1.25",\n  d: "M9.167 5.833H5.833c-1.254 0-2.5 1.282-2.5 2.5v5.834c0 1.283 1.252 2.5 2.5 2.5h5.834c1.251 0 2.5-1.25 2.5-2.5v-3.334M8.333 11.667l8.334-8.334M12.5 3.333h4.167V7.5"\n}), modifiedTablerIconProps);\nconst GithubIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n  d: "M7.5 15.833c-3.583 1.167-3.583-2.083-5-2.5m10 4.167v-2.917c0-.833.083-1.166-.417-1.666 2.334-.25 4.584-1.167 4.584-5a3.833 3.833 0 0 0-1.084-2.667 3.5 3.5 0 0 0-.083-2.667s-.917-.25-2.917 1.084a10.25 10.25 0 0 0-5.166 0C5.417 2.333 4.5 2.583 4.5 2.583a3.5 3.5 0 0 0-.083 2.667 3.833 3.833 0 0 0-1.084 2.667c0 3.833 2.25 4.75 4.584 5-.5.5-.5 1-.417 1.666V17.5",\n  strokeWidth: "1.25"\n}), modifiedTablerIconProps);\nconst DiscordIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "1.25"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M7.5 10.833a.833.833 0 1 0 0-1.666.833.833 0 0 0 0 1.666ZM12.5 10.833a.833.833 0 1 0 0-1.666.833.833 0 0 0 0 1.666ZM6.25 6.25c2.917-.833 4.583-.833 7.5 0M5.833 13.75c2.917.833 5.417.833 8.334 0"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M12.917 14.167c0 .833 1.25 2.5 1.666 2.5 1.25 0 2.361-1.39 2.917-2.5.556-1.39.417-4.861-1.25-9.584-1.214-.846-2.5-1.116-3.75-1.25l-.833 2.084M7.083 14.167c0 .833-1.13 2.5-1.526 2.5-1.191 0-2.249-1.39-2.778-2.5-.529-1.39-.397-4.861 1.19-9.584 1.157-.846 2.318-1.116 3.531-1.25l.833 2.084"\n  })]\n})), modifiedTablerIconProps);\nconst TwitterIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "1.25"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M22 4.01c-1 .49 -1.98 .689 -3 .99c-1.121 -1.265 -2.783 -1.335 -4.38 -.737s-2.643 2.06 -2.62 3.737v1c-3.245 .083 -6.135 -1.395 -8 -4c0 0 -4.182 7.433 4 11c-1.872 1.247 -3.739 2.088 -6 2c3.308 1.803 6.913 2.423 10.034 1.517c3.58 -1.04 6.522 -3.723 7.651 -7.742a13.84 13.84 0 0 0 .497 -3.753c-.002 -.249 1.51 -2.772 1.818 -4.013z"\n  })]\n})), tablerIconProps);\nconst checkIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("polyline", {\n  fill: "none",\n  stroke: "currentColor",\n  points: "20 6 9 17 4 12"\n}), {\n  width: 24,\n  height: 24\n});\nconst LinkIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "1.25"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M8.333 11.667a2.917 2.917 0 0 0 4.167 0l3.333-3.334a2.946 2.946 0 1 0-4.166-4.166l-.417.416"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M11.667 8.333a2.917 2.917 0 0 0-4.167 0l-3.333 3.334a2.946 2.946 0 0 0 4.166 4.166l.417-.416"\n  })]\n})), modifiedTablerIconProps);\nconst save = createIcon("M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM224 416c-35.346 0-64-28.654-64-64 0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64zm96-304.52V212c0 6.627-5.373 12-12 12H76c-6.627 0-12-5.373-12-12V108c0-6.627 5.373-12 12-12h228.52c3.183 0 6.235 1.264 8.485 3.515l3.48 3.48A11.996 11.996 0 0 1 320 111.48z", {\n  width: 448,\n  height: 512\n});\nconst saveAs = createIcon("M252 54L203 8a28 27 0 00-20-8H28C12 0 0 12 0 27v195c0 15 12 26 28 26h204c15 0 28-11 28-26V73a28 27 0 00-8-19zM130 213c-21 0-37-16-37-36 0-19 16-35 37-35 20 0 37 16 37 35 0 20-17 36-37 36zm56-169v56c0 4-4 6-7 6H44c-4 0-7-2-7-6V42c0-4 3-7 7-7h133l4 2 3 2a7 7 0 012 5z M296 201l87 95-188 205-78 9c-10 1-19-8-18-20l9-84zm141-14l-41-44a31 31 0 00-46 0l-38 41 87 95 38-42c13-14 13-36 0-50z", {\n  width: 448,\n  height: 512\n}); // tabler-icon: folder\n\nconst LoadIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n  d: "m9.257 6.351.183.183H15.819c.34 0 .727.182 1.051.506.323.323.505.708.505 1.05v5.819c0 .316-.183.7-.52 1.035-.337.338-.723.522-1.037.522H4.182c-.352 0-.74-.181-1.058-.5-.318-.318-.499-.705-.499-1.057V5.182c0-.351.181-.736.5-1.054.32-.321.71-.503 1.057-.503H6.53l2.726 2.726Z",\n  strokeWidth: "1.25"\n}), modifiedTablerIconProps);\nconst clipboard = createIcon("M384 112v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h80c0-35.29 28.71-64 64-64s64 28.71 64 64h80c26.51 0 48 21.49 48 48zM192 40c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24m96 114v-20a6 6 0 0 0-6-6H102a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6h180a6 6 0 0 0 6-6z", {\n  width: 384,\n  height: 512\n});\nconst palette = createIcon("M204.3 5C104.9 24.4 24.8 104.3 5.2 203.4c-37 187 131.7 326.4 258.8 306.7 41.2-6.4 61.4-54.6 42.5-91.7-23.1-45.4 9.9-98.4 60.9-98.4h79.7c35.8 0 64.8-29.6 64.9-65.3C511.5 97.1 368.1-26.9 204.3 5zM96 320c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm32-128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128-64c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 64c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z");\nconst ExportImageIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "1.25"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M15 8h.01"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M12 20h-5a3 3 0 0 1 -3 -3v-10a3 3 0 0 1 3 -3h10a3 3 0 0 1 3 3v5"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M4 15l4 -4c.928 -.893 2.072 -.893 3 0l4 4"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M14 14l1 -1c.617 -.593 1.328 -.793 2.009 -.598"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M19 16v6"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M22 19l-3 3l-3 -3"\n  })]\n})), tablerIconProps);\nconst exportToFileIcon = createIcon("M216 0h80c13.3 0 24 10.7 24 24v168h87.7c17.8 0 26.7 21.5 14.1 34.1L269.7 378.3c-7.5 7.5-19.8 7.5-27.3 0L90.1 226.1c-12.6-12.6-3.7-34.1 14.1-34.1H192V24c0-13.3 10.7-24 24-24zm296 376v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h146.7l49 49c20.1 20.1 52.5 20.1 72.6 0l49-49H488c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z", {\n  width: 512,\n  height: 512\n});\nconst zoomIn = createIcon("M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z", {\n  width: 448,\n  height: 512\n});\nconst zoomOut = createIcon("M416 208H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z", {\n  width: 448,\n  height: 512\n});\nconst done = createIcon("M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z");\nconst menu = createIcon("M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z");\nconst UndoIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n  d: "M7.5 10.833 4.167 7.5 7.5 4.167M4.167 7.5h9.166a3.333 3.333 0 0 1 0 6.667H12.5",\n  strokeWidth: "1.25"\n}), modifiedTablerIconProps);\nconst RedoIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n  d: "M12.5 10.833 15.833 7.5 12.5 4.167M15.833 7.5H6.667a3.333 3.333 0 1 0 0 6.667H7.5",\n  strokeWidth: "1.25"\n}), modifiedTablerIconProps);\nconst questionCircle = createIcon("M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zM262.655 90c-54.497 0-89.255 22.957-116.549 63.758-3.536 5.286-2.353 12.415 2.715 16.258l34.699 26.31c5.205 3.947 12.621 3.008 16.665-2.122 17.864-22.658 30.113-35.797 57.303-35.797 20.429 0 45.698 13.148 45.698 32.958 0 14.976-12.363 22.667-32.534 33.976C247.128 238.528 216 254.941 216 296v4c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12v-1.333c0-28.462 83.186-29.647 83.186-106.667 0-58.002-60.165-102-116.531-102zM256 338c-25.365 0-46 20.635-46 46 0 25.364 20.635 46 46 46s46-20.636 46-46c0-25.365-20.635-46-46-46z", {\n  mirror: true\n});\nconst share = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n  d: "M5 12.5a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5ZM15 7.5a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5ZM15 17.5a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5ZM7.25 8.917l5.5-2.834M7.25 11.083l5.5 2.834",\n  strokeWidth: "1.5"\n}), modifiedTablerIconProps);\nconst shareIOS = createIcon("M16 5l-1.42 1.42-1.59-1.59V16h-1.98V4.83L9.42 6.42 8 5l4-4 4 4zm4 5v11c0 1.1-.9 2-2 2H6c-1.11 0-2-.9-2-2V10c0-1.11.89-2 2-2h3v2H6v11h12V10h-3V8h3c1.1 0 2 .89 2 2z", {\n  width: 24,\n  height: 24\n});\nconst shareWindows = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    fill: "currentColor",\n    d: "M40 5.6v6.1l-4.1.7c-8.9 1.4-16.5 6.9-20.6 15C13 32 10.9 43 12.4 43c.4 0 2.4-1.3 4.4-3 5-3.9 12.1-7 18.2-7.7l5-.6v12.8l11.2-11.3L62.5 22 51.2 10.8 40-.5v6.1zm10.2 22.6L44 34.5v-6.8l-6.9.6c-3.9.3-9.8 1.7-13.2 3.1-3.5 1.4-6.5 2.4-6.7 2.2-.9-1 3-7.5 6.4-10.8C28 18.6 34.4 16 40.1 16c3.7 0 3.9-.1 3.9-3.2V9.5l6.2 6.3 6.3 6.2-6.3 6.2z"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "currentColor",\n    fill: "currentColor",\n    d: "M0 36v20h48v-6.2c0-6 0-6.1-2-4.3-1.1 1-2 2.9-2 4.2V52H4V34c0-17.3-.1-18-2-18s-2 .7-2 20z"\n  })]\n}), {\n  width: 64,\n  height: 64\n}); // Icon imported form Storybook\n// Storybook is licensed under MIT https://github.com/storybookjs/storybook/blob/next/LICENSE\n\nconst resetZoom = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n  stroke: "currentColor",\n  strokeWidth: "40",\n  fill: "currentColor",\n  d: "M148 560a318 318 0 0 0 522 110 316 316 0 0 0 0-450 316 316 0 0 0-450 0c-11 11-21 22-30 34v4h47c25 0 46 21 46 46s-21 45-46 45H90c-13 0-25-6-33-14-9-9-14-20-14-33V156c0-25 20-45 45-45s45 20 45 45v32l1 1a401 401 0 0 1 623 509l212 212a42 42 0 0 1-59 59L698 757A401 401 0 0 1 65 570a42 42 0 0 1 83-10z"\n}), {\n  width: 1024\n});\nconst BringForwardIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n    clipPath: "url(#a)",\n    stroke: "currentColor",\n    strokeWidth: "1.25",\n    strokeLinecap: "round",\n    strokeLinejoin: "round"\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M13.889 4.167H8.333c-.767 0-1.389.622-1.389 1.389v5.555c0 .767.622 1.389 1.39 1.389h5.555c.767 0 1.389-.622 1.389-1.389V5.556c0-.767-.622-1.39-1.39-1.39Z",\n      fill: "currentColor"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M12.5 12.5v1.389a1.389 1.389 0 0 1-1.389 1.389H5.556a1.389 1.389 0 0 1-1.39-1.39V8.334a1.389 1.389 0 0 1 1.39-1.389h1.388"\n    })]\n  })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("defs", {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("clipPath", Object.assign({\n      id: "a"\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n        fill: "#fff",\n        d: "M0 0h20v20H0z"\n      })\n    }))\n  })]\n}), modifiedTablerIconProps);\nconst SendBackwardIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n    clipPath: "url(#a)",\n    stroke: "currentColor",\n    strokeWidth: "1.25",\n    strokeLinecap: "round",\n    strokeLinejoin: "round"\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      fillRule: "evenodd",\n      clipRule: "evenodd",\n      d: "M6.944 12.5H12.5v1.389a1.389 1.389 0 0 1-1.389 1.389H5.556a1.389 1.389 0 0 1-1.39-1.39V8.334a1.389 1.389 0 0 1 1.39-1.389h1.388",\n      fill: "currentColor"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M13.889 4.167H8.333c-.767 0-1.389.621-1.389 1.389v5.555c0 .767.622 1.389 1.39 1.389h5.555c.767 0 1.389-.622 1.389-1.389V5.556c0-.768-.622-1.39-1.39-1.39Z"\n    })]\n  })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("defs", {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("clipPath", Object.assign({\n      id: "a"\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n        fill: "#fff",\n        d: "M0 0h20v20H0z"\n      })\n    }))\n  })]\n}), modifiedTablerIconProps);\nconst BringToFrontIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n    clipPath: "url(#a)",\n    stroke: "currentColor",\n    strokeWidth: "1.25"\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M8.775 6.458h2.45a2.316 2.316 0 0 1 2.317 2.316v2.452a2.316 2.316 0 0 1-2.316 2.316H8.774a2.316 2.316 0 0 1-2.317-2.316V8.774a2.316 2.316 0 0 1 2.317-2.316Z",\n      fill: "currentColor"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M5.441 9.792h2.451a2.316 2.316 0 0 1 2.316 2.316v2.45a2.316 2.316 0 0 1-2.316 2.317h-2.45a2.316 2.316 0 0 1-2.317-2.316v-2.451a2.316 2.316 0 0 1 2.316-2.316ZM12.108 3.125h2.45a2.316 2.316 0 0 1 2.317 2.316v2.451a2.316 2.316 0 0 1-2.316 2.316h-2.451a2.316 2.316 0 0 1-2.316-2.316v-2.45a2.316 2.316 0 0 1 2.316-2.317Z"\n    })]\n  })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("defs", {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("clipPath", Object.assign({\n      id: "a"\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n        fill: "#fff",\n        d: "M0 0h20v20H0z"\n      })\n    }))\n  })]\n}), modifiedTablerIconProps);\nconst SendToBackIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n    clipPath: "url(#a)"\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M5.441 9.792h2.451a2.316 2.316 0 0 1 2.316 2.316v2.45a2.316 2.316 0 0 1-2.316 2.317h-2.45a2.316 2.316 0 0 1-2.317-2.316v-2.451a2.316 2.316 0 0 1 2.316-2.316Z",\n      stroke: "currentColor",\n      strokeWidth: "1.25"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M5.441 9.792h2.451a2.316 2.316 0 0 1 2.316 2.316v2.45a2.316 2.316 0 0 1-2.316 2.317h-2.45a2.316 2.316 0 0 1-2.317-2.316v-2.451a2.316 2.316 0 0 1 2.316-2.316Z",\n      stroke: "currentColor",\n      strokeWidth: "1.25"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("mask", Object.assign({\n      id: "SendToBackIcon",\n      fill: "#fff"\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n        fillRule: "evenodd",\n        clipRule: "evenodd",\n        d: "M9.167 5.833v2.06a2.941 2.941 0 0 0 2.94 2.94h2.06v.393a2.941 2.941 0 0 1-2.941 2.94h-.393v-2.058a2.941 2.941 0 0 0-2.94-2.941h-2.06v-.393a2.941 2.941 0 0 1 2.942-2.94h.392Z"\n      })\n    })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      fillRule: "evenodd",\n      clipRule: "evenodd",\n      d: "M9.167 5.833v2.06a2.941 2.941 0 0 0 2.94 2.94h2.06v.393a2.941 2.941 0 0 1-2.941 2.94h-.393v-2.058a2.941 2.941 0 0 0-2.94-2.941h-2.06v-.393a2.941 2.941 0 0 1 2.942-2.94h.392Z",\n      fill: "currentColor"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M9.167 5.833h1.25v-1.25h-1.25v1.25Zm5 5h1.25v-1.25h-1.25v1.25Zm-3.334 3.334h-1.25v1.25h1.25v-1.25Zm-5-5h-1.25v1.25h1.25v-1.25Zm2.084-3.334v2.06h2.5v-2.06h-2.5Zm0 2.06a4.191 4.191 0 0 0 4.19 4.19v-2.5a1.691 1.691 0 0 1-1.69-1.69h-2.5Zm4.19 4.19h2.06v-2.5h-2.06v2.5Zm.81-1.25v.393h2.5v-.393h-2.5Zm0 .393c0 .933-.758 1.69-1.691 1.69v2.5a4.191 4.191 0 0 0 4.19-4.19h-2.5Zm-1.691 1.69h-.393v2.5h.393v-2.5Zm.857 1.25v-2.058h-2.5v2.059h2.5Zm0-2.058a4.191 4.191 0 0 0-4.19-4.191v2.5c.933 0 1.69.757 1.69 1.69h2.5Zm-4.19-4.191h-2.06v2.5h2.06v-2.5Zm-.81 1.25v-.393h-2.5v.393h2.5Zm0-.393c0-.934.758-1.69 1.692-1.69v-2.5a4.191 4.191 0 0 0-4.192 4.19h2.5Zm1.692-1.69h.392v-2.5h-.392v2.5Z",\n      fill: "currentColor",\n      mask: "url(#SendToBackIcon)"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M12.108 3.125h2.45a2.316 2.316 0 0 1 2.317 2.316v2.451a2.316 2.316 0 0 1-2.316 2.316h-2.451a2.316 2.316 0 0 1-2.316-2.316v-2.45a2.316 2.316 0 0 1 2.316-2.317Z",\n      stroke: "currentColor",\n      strokeWidth: "1.25"\n    })]\n  })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("defs", {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("clipPath", Object.assign({\n      id: "a"\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n        fill: "#fff",\n        d: "M0 0h20v20H0z"\n      })\n    }))\n  })]\n}), modifiedTablerIconProps); //\n// Align action icons created from scratch to match those of z-index actions\n// Note: vertical align icons are flipped so the larger item is always the\n// first one the user sees. Horizontal align icons should not be flipped since\n// that would make them lie about their function.\n//\n\nconst AlignTopIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n    clipPath: "url(#a)",\n    stroke: "currentColor",\n    strokeWidth: "1.25"\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M3.333 3.333h13.334",\n      strokeLinecap: "round",\n      strokeLinejoin: "round"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M13.542 6.458h-.417c-.92 0-1.667.747-1.667 1.667v7.083c0 .92.746 1.667 1.667 1.667h.417c.92 0 1.666-.746 1.666-1.667V8.125c0-.92-.746-1.667-1.666-1.667ZM6.875 6.458h-.417c-.92 0-1.666.747-1.666 1.667v3.75c0 .92.746 1.667 1.666 1.667h.417c.92 0 1.667-.746 1.667-1.667v-3.75c0-.92-.747-1.667-1.667-1.667Z"\n    })]\n  })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("defs", {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("clipPath", Object.assign({\n      id: "a"\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n        fill: "#fff",\n        d: "M0 0h20v20H0z"\n      })\n    }))\n  })]\n}), modifiedTablerIconProps);\nconst AlignBottomIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n    clipPath: "url(#a)",\n    stroke: "currentColor",\n    strokeWidth: "1.25"\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M3.333 16.667h13.334",\n      strokeLinecap: "round",\n      strokeLinejoin: "round"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M6.875 3.125h-.417c-.92 0-1.666.746-1.666 1.667v7.083c0 .92.746 1.667 1.666 1.667h.417c.92 0 1.667-.746 1.667-1.667V4.792c0-.92-.747-1.667-1.667-1.667ZM13.542 5.817h-.417c-.92 0-1.667.747-1.667 1.667v4.391c0 .92.746 1.667 1.667 1.667h.417c.92 0 1.666-.746 1.666-1.667V7.484c0-.92-.746-1.667-1.666-1.667Z"\n    })]\n  })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("defs", {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("clipPath", Object.assign({\n      id: "a"\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n        fill: "#fff",\n        d: "M0 0h20v20H0z"\n      })\n    }))\n  })]\n}), modifiedTablerIconProps);\nconst AlignLeftIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n    clipPath: "url(#a)",\n    stroke: "currentColor",\n    strokeWidth: "1.25"\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M3.333 3.333v13.334",\n      strokeLinecap: "round",\n      strokeLinejoin: "round"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M15.208 4.792H8.125c-.92 0-1.667.746-1.667 1.666v.417c0 .92.747 1.667 1.667 1.667h7.083c.92 0 1.667-.747 1.667-1.667v-.417c0-.92-.746-1.666-1.667-1.666ZM12.516 11.458H8.125c-.92 0-1.667.746-1.667 1.667v.417c0 .92.747 1.666 1.667 1.666h4.391c.92 0 1.667-.746 1.667-1.666v-.417c0-.92-.746-1.667-1.667-1.667Z"\n    })]\n  })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("defs", {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("clipPath", Object.assign({\n      id: "a"\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n        fill: "#fff",\n        d: "M0 0h20v20H0z"\n      })\n    }))\n  })]\n}), modifiedTablerIconProps);\nconst AlignRightIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n    clipPath: "url(#a)",\n    stroke: "currentColor",\n    strokeWidth: "1.25"\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M16.667 3.333v13.334",\n      strokeLinecap: "round",\n      strokeLinejoin: "round"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M11.875 4.792H4.792c-.92 0-1.667.746-1.667 1.666v.417c0 .92.746 1.667 1.667 1.667h7.083c.92 0 1.667-.747 1.667-1.667v-.417c0-.92-.746-1.666-1.667-1.666ZM11.683 11.458H7.292c-.92 0-1.667.746-1.667 1.667v.417c0 .92.746 1.666 1.667 1.666h4.39c.921 0 1.667-.746 1.667-1.666v-.417c0-.92-.746-1.667-1.666-1.667Z"\n    })]\n  })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("defs", {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("clipPath", Object.assign({\n      id: "a"\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n        fill: "#fff",\n        d: "M0 0h20v20H0z"\n      })\n    }))\n  })]\n}), modifiedTablerIconProps);\nconst DistributeHorizontallyIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n    clipPath: "url(#a)",\n    stroke: "currentColor",\n    strokeWidth: "1.25"\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M16.667 3.333v13.334M3.333 3.333v13.334",\n      strokeLinecap: "round",\n      strokeLinejoin: "round"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M14.375 10.208v-.416c0-.92-.746-1.667-1.667-1.667H7.292c-.92 0-1.667.746-1.667 1.667v.416c0 .92.746 1.667 1.667 1.667h5.416c.92 0 1.667-.746 1.667-1.667Z"\n    })]\n  })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("defs", {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("clipPath", Object.assign({\n      id: "a"\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n        fill: "#fff",\n        d: "M0 0h20v20H0z"\n      })\n    }))\n  })]\n}), modifiedTablerIconProps);\nconst DistributeVerticallyIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n    clipPath: "url(#a)",\n    stroke: "currentColor",\n    strokeWidth: "1.25"\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M3.333 3.333h13.334M3.333 16.667h13.334",\n      strokeLinecap: "round",\n      strokeLinejoin: "round"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M10.208 5.625h-.416c-.92 0-1.667.746-1.667 1.667v5.416c0 .92.746 1.667 1.667 1.667h.416c.92 0 1.667-.746 1.667-1.667V7.292c0-.92-.746-1.667-1.667-1.667Z"\n    })]\n  })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("defs", {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("clipPath", Object.assign({\n      id: "a"\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n        fill: "#fff",\n        d: "M0 0h20v20H0z"\n      })\n    }))\n  })]\n}), modifiedTablerIconProps);\nconst CenterVerticallyIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  stroke: "currentColor",\n  strokeWidth: "1.25"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M1.667 10h2.916",\n    strokeLinecap: "round",\n    strokeLinejoin: "round"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M8.333 10h3.334",\n    strokeLinejoin: "round"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M15.417 10h2.916",\n    strokeLinecap: "round",\n    strokeLinejoin: "round"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M6.875 4.792h-.417c-.92 0-1.666.746-1.666 1.666v7.084c0 .92.746 1.666 1.666 1.666h.417c.92 0 1.667-.746 1.667-1.666V6.458c0-.92-.747-1.666-1.667-1.666ZM13.542 6.458h-.417c-.92 0-1.667.747-1.667 1.667v3.75c0 .92.746 1.667 1.667 1.667h.417c.92 0 1.666-.746 1.666-1.667v-3.75c0-.92-.746-1.667-1.666-1.667Z"\n  })]\n})), modifiedTablerIconProps);\nconst CenterHorizontallyIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  stroke: "currentColor",\n  strokeWidth: "1.25"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M10 18.333v-2.916",\n    strokeLinecap: "round",\n    strokeLinejoin: "round"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M10 11.667V8.333",\n    strokeLinejoin: "round"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M10 4.583V1.667",\n    strokeLinecap: "round",\n    strokeLinejoin: "round"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M4.792 13.125v.417c0 .92.746 1.666 1.666 1.666h7.084c.92 0 1.666-.746 1.666-1.666v-.417c0-.92-.746-1.667-1.666-1.667H6.458c-.92 0-1.666.746-1.666 1.667ZM6.458 6.458v.417c0 .92.747 1.667 1.667 1.667h3.75c.92 0 1.667-.747 1.667-1.667v-.417c0-.92-.746-1.666-1.667-1.666h-3.75c-.92 0-1.667.746-1.667 1.666Z"\n  })]\n})), modifiedTablerIconProps);\nconst usersIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "1.5"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("circle", {\n    cx: "9",\n    cy: "7",\n    r: "4"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M3 21v-2a4 4 0 0 1 4 -4h4a4 4 0 0 1 4 4v2"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M16 3.13a4 4 0 0 1 0 7.75"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M21 21v-2a4 4 0 0 0 -3 -3.85"\n  })]\n})), tablerIconProps); // not mirrored because it\'s inspired by a playback control, which is always RTL\n\nconst start = createIcon("M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm115.7 272l-176 101c-15.8 8.8-35.7-2.5-35.7-21V152c0-18.4 19.8-29.8 35.7-21l176 107c16.4 9.2 16.4 32.9 0 42z");\nconst stop = createIcon("M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm96 328c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h160c8.8 0 16 7.2 16 16v160z");\nconst CloseIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("g", Object.assign({\n    clipPath: "url(#a)",\n    stroke: "currentColor",\n    strokeWidth: "1.25",\n    strokeLinecap: "round",\n    strokeLinejoin: "round"\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M15 5 5 15M5 5l10 10"\n    })\n  })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("defs", {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("clipPath", Object.assign({\n      id: "a"\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n        fill: "#fff",\n        d: "M0 0h20v20H0z"\n      })\n    }))\n  })]\n}), modifiedTablerIconProps);\nconst back = createIcon("M34.52 239.03L228.87 44.69c9.37-9.37 24.57-9.37 33.94 0l22.67 22.67c9.36 9.36 9.37 24.52.04 33.9L131.49 256l154.02 154.75c9.34 9.38 9.32 24.54-.04 33.9l-22.67 22.67c-9.37 9.37-24.57 9.37-33.94 0L34.52 272.97c-9.37-9.37-9.37-24.57 0-33.94z", {\n  width: 320,\n  height: 512,\n  style: {\n    marginLeft: "-0.2rem"\n  },\n  mirror: true\n});\nconst clone = createIcon("M464 0c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48H176c-26.51 0-48-21.49-48-48V48c0-26.51 21.49-48 48-48h288M176 416c-44.112 0-80-35.888-80-80V128H48c-26.51 0-48 21.49-48 48v288c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48v-48H176z", {\n  mirror: true\n}); // modified https://feathericons.com/?query=shield\n\nconst shield = createIcon("M11.553 22.894a.998.998 0 00.894 0s3.037-1.516 5.465-4.097C19.616 16.987 21 14.663 21 12V5a1 1 0 00-.649-.936l-8-3a.998.998 0 00-.702 0l-8 3A1 1 0 003 5v7c0 2.663 1.384 4.987 3.088 6.797 2.428 2.581 5.465 4.097 5.465 4.097zm-1.303-8.481l6.644-6.644a.856.856 0 111.212 1.212l-7.25 7.25a.856.856 0 01-1.212 0l-3.75-3.75a.856.856 0 111.212-1.212l3.144 3.144z", {\n  width: 24\n});\nconst file = createIcon("M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm32-48h224V288l-23.5-23.5c-4.7-4.7-12.3-4.7-17 0L176 352l-39.5-39.5c-4.7-4.7-12.3-4.7-17 0L80 352v64zm48-240c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48z", {\n  width: 384,\n  height: 512\n}); // TODO barnabasmolnar/editor-redesign\n// couldn\'t find a new icon for this\n\nconst GroupIcon = react__WEBPACK_IMPORTED_MODULE_1___default().memo(({\n  theme\n}) => createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M25 26H111V111H25",\n    fill: iconFillColor(theme)\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M25 111C25 80.2068 25 49.4135 25 26M25 26C48.6174 26 72.2348 26 111 26H25ZM25 26C53.3671 26 81.7343 26 111 26H25ZM111 26C111 52.303 111 78.606 111 111V26ZM111 26C111 51.2947 111 76.5893 111 111V26ZM111 111C87.0792 111 63.1585 111 25 111H111ZM111 111C87.4646 111 63.9293 111 25 111H111ZM25 111C25 81.1514 25 51.3028 25 26V111Z",\n    stroke: iconFillColor(theme),\n    strokeWidth: "2"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M100 100H160V160H100",\n    fill: iconFillColor(theme)\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M100 160C100 144.106 100 128.211 100 100M100 100C117.706 100 135.412 100 160 100H100ZM100 100C114.214 100 128.428 100 160 100H100ZM160 100C160 120.184 160 140.369 160 160V100ZM160 100C160 113.219 160 126.437 160 160V100ZM160 160C145.534 160 131.068 160 100 160H160ZM160 160C143.467 160 126.934 160 100 160H160ZM100 160C100 143.661 100 127.321 100 100V160Z",\n    stroke: iconFillColor(theme),\n    strokeWidth: "2"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n    fill: handlerColor(theme),\n    stroke: iconFillColor(theme),\n    strokeWidth: "6"\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("rect", {\n      x: "2.5",\n      y: "2.5",\n      width: "30",\n      height: "30"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("rect", {\n      x: "2.5",\n      y: "149.5",\n      width: "30",\n      height: "30"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("rect", {\n      x: "147.5",\n      y: "149.5",\n      width: "30",\n      height: "30"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("rect", {\n      x: "147.5",\n      y: "2.5",\n      width: "30",\n      height: "30"\n    })]\n  }))]\n}), {\n  width: 182,\n  height: 182,\n  mirror: true\n}));\nconst UngroupIcon = react__WEBPACK_IMPORTED_MODULE_1___default().memo(({\n  theme\n}) => createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M25 26H111V111H25",\n    fill: iconFillColor(theme)\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M25 111C25 80.2068 25 49.4135 25 26M25 26C48.6174 26 72.2348 26 111 26H25ZM25 26C53.3671 26 81.7343 26 111 26H25ZM111 26C111 52.303 111 78.606 111 111V26ZM111 26C111 51.2947 111 76.5893 111 111V26ZM111 111C87.0792 111 63.1585 111 25 111H111ZM111 111C87.4646 111 63.9293 111 25 111H111ZM25 111C25 81.1514 25 51.3028 25 26V111Z",\n    stroke: iconFillColor(theme),\n    strokeWidth: "2"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M100 100H160V160H100",\n    fill: iconFillColor(theme)\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M100 160C100 144.106 100 128.211 100 100M100 100C117.706 100 135.412 100 160 100H100ZM100 100C114.214 100 128.428 100 160 100H100ZM160 100C160 120.184 160 140.369 160 160V100ZM160 100C160 113.219 160 126.437 160 160V100ZM160 160C145.534 160 131.068 160 100 160H160ZM160 160C143.467 160 126.934 160 100 160H160ZM100 160C100 143.661 100 127.321 100 100V160Z",\n    stroke: iconFillColor(theme),\n    strokeWidth: "2"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n    fill: handlerColor(theme),\n    stroke: iconFillColor(theme),\n    strokeWidth: "6"\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("rect", {\n      x: "2.5",\n      y: "2.5",\n      width: "30",\n      height: "30"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("rect", {\n      x: "78.5",\n      y: "149.5",\n      width: "30",\n      height: "30"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("rect", {\n      x: "147.5",\n      y: "149.5",\n      width: "30",\n      height: "30"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("rect", {\n      x: "147.5",\n      y: "78.5",\n      width: "30",\n      height: "30"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("rect", {\n      x: "105.5",\n      y: "2.5",\n      width: "30",\n      height: "30"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("rect", {\n      x: "2.5",\n      y: "102.5",\n      width: "30",\n      height: "30"\n    })]\n  }))]\n}), {\n  width: 182,\n  height: 182,\n  mirror: true\n}));\nconst FillZigZagIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("g", Object.assign({\n  strokeWidth: 1.25\n}, {\n  children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M5.879 2.625h8.242a3.27 3.27 0 0 1 3.254 3.254v8.242a3.27 3.27 0 0 1-3.254 3.254H5.88a3.27 3.27 0 0 1-3.254-3.254V5.88A3.27 3.27 0 0 1 5.88 2.626l-.001-.001ZM4.518 16.118l7.608-12.83m.198 13.934 5.051-9.897M2.778 9.675l9.348-6.387m-7.608 12.83 12.857-8.793"\n  })\n})), modifiedTablerIconProps);\nconst FillHachureIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M5.879 2.625h8.242a3.254 3.254 0 0 1 3.254 3.254v8.242a3.254 3.254 0 0 1-3.254 3.254H5.88a3.254 3.254 0 0 1-3.254-3.254V5.88a3.254 3.254 0 0 1 3.254-3.254Z",\n    stroke: "currentColor",\n    strokeWidth: "1.25"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("mask", Object.assign({\n    id: "FillHachureIcon",\n    style: {\n      maskType: "alpha"\n    },\n    maskUnits: "userSpaceOnUse",\n    x: 2,\n    y: 2,\n    width: 16,\n    height: 16\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M5.879 2.625h8.242a3.254 3.254 0 0 1 3.254 3.254v8.242a3.254 3.254 0 0 1-3.254 3.254H5.88a3.254 3.254 0 0 1-3.254-3.254V5.88a3.254 3.254 0 0 1 3.254-3.254Z",\n      fill: "currentColor",\n      stroke: "currentColor",\n      strokeWidth: "1.25"\n    })\n  })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("g", Object.assign({\n    mask: "url(#FillHachureIcon)"\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M2.258 15.156 15.156 2.258M7.324 20.222 20.222 7.325m-20.444 5.35L12.675-.222m-8.157 18.34L17.416 5.22",\n      stroke: "currentColor",\n      strokeWidth: "1.25",\n      strokeLinecap: "round",\n      strokeLinejoin: "round"\n    })\n  }))]\n}), modifiedTablerIconProps);\nconst FillCrossHatchIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n    clipPath: "url(#a)"\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M5.879 2.625h8.242a3.254 3.254 0 0 1 3.254 3.254v8.242a3.254 3.254 0 0 1-3.254 3.254H5.88a3.254 3.254 0 0 1-3.254-3.254V5.88a3.254 3.254 0 0 1 3.254-3.254Z",\n      stroke: "currentColor",\n      strokeWidth: "1.25"\n    }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("mask", Object.assign({\n      id: "FillCrossHatchIcon",\n      style: {\n        maskType: "alpha"\n      },\n      maskUnits: "userSpaceOnUse",\n      x: -1,\n      y: -1,\n      width: 22,\n      height: 22\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n        d: "M2.426 15.044 15.044 2.426M7.383 20 20 7.383M0 12.617 12.617 0m-7.98 17.941L17.256 5.324m-2.211 12.25L2.426 4.956M20 12.617 7.383 0m5.234 20L0 7.383m17.941 7.98L5.324 2.745",\n        stroke: "currentColor",\n        strokeWidth: "1.25",\n        strokeLinecap: "round",\n        strokeLinejoin: "round"\n      })\n    })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("g", Object.assign({\n      mask: "url(#FillCrossHatchIcon)"\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n        d: "M14.121 2H5.88A3.879 3.879 0 0 0 2 5.879v8.242A3.879 3.879 0 0 0 5.879 18h8.242A3.879 3.879 0 0 0 18 14.121V5.88A3.879 3.879 0 0 0 14.121 2Z",\n        fill: "currentColor"\n      })\n    }))]\n  })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("defs", {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("clipPath", Object.assign({\n      id: "a"\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n        fill: "#fff",\n        d: "M0 0h20v20H0z"\n      })\n    }))\n  })]\n}), modifiedTablerIconProps);\nconst FillSolidIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("g", Object.assign({\n    clipPath: "url(#a)"\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M4.91 2.625h10.18a2.284 2.284 0 0 1 2.285 2.284v10.182a2.284 2.284 0 0 1-2.284 2.284H4.909a2.284 2.284 0 0 1-2.284-2.284V4.909a2.284 2.284 0 0 1 2.284-2.284Z",\n      stroke: "currentColor",\n      strokeWidth: "1.25"\n    })\n  })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("defs", {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("clipPath", Object.assign({\n      id: "a"\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n        fill: "#fff",\n        d: "M0 0h20v20H0z"\n      })\n    }))\n  })]\n}), Object.assign(Object.assign({}, modifiedTablerIconProps), {\n  fill: "currentColor"\n}));\nconst StrokeWidthBaseIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M4.167 10h11.666",\n    stroke: "currentColor",\n    strokeWidth: "1.25",\n    strokeLinecap: "round",\n    strokeLinejoin: "round"\n  })\n}), modifiedTablerIconProps);\nconst StrokeWidthBoldIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n  d: "M5 10h10",\n  stroke: "currentColor",\n  strokeWidth: "2.5",\n  strokeLinecap: "round",\n  strokeLinejoin: "round"\n}), modifiedTablerIconProps);\nconst StrokeWidthExtraBoldIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n  d: "M5 10h10",\n  stroke: "currentColor",\n  strokeWidth: "3.75",\n  strokeLinecap: "round",\n  strokeLinejoin: "round"\n}), modifiedTablerIconProps);\nconst StrokeStyleSolidIcon = react__WEBPACK_IMPORTED_MODULE_1___default().memo(({\n  theme\n}) => createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n  d: "M6 10H34",\n  stroke: iconFillColor(theme),\n  strokeWidth: 2,\n  fill: "none",\n  strokeLinecap: "round"\n}), {\n  width: 40,\n  height: 20\n}));\nconst StrokeStyleDashedIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "2"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M5 12h2"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M17 12h2"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M11 12h2"\n  })]\n})), tablerIconProps); // tabler-icons: line-dotted\n\nconst StrokeStyleDottedIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "2"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M4 12v.01"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M8 12v.01"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M12 12v.01"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M16 12v.01"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M20 12v.01"\n  })]\n})), tablerIconProps);\nconst SloppinessArchitectIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n  d: "M2.5 12.038c1.655-.885 5.9-3.292 8.568-4.354 2.668-1.063.101 2.821 1.32 3.104 1.218.283 5.112-1.814 5.112-1.814",\n  strokeWidth: "1.25"\n}), modifiedTablerIconProps);\nconst SloppinessArtistIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n  d: "M2.5 12.563c1.655-.886 5.9-3.293 8.568-4.355 2.668-1.062.101 2.822 1.32 3.105 1.218.283 5.112-1.814 5.112-1.814m-13.469 2.23c2.963-1.586 6.13-5.62 7.468-4.998 1.338.623-1.153 4.11-.132 5.595 1.02 1.487 6.133-1.43 6.133-1.43",\n  strokeWidth: "1.25"\n}), modifiedTablerIconProps);\nconst SloppinessCartoonistIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n  d: "M2.5 11.936c1.737-.879 8.627-5.346 10.42-5.268 1.795.078-.418 5.138.345 5.736.763.598 3.53-1.789 4.235-2.147M2.929 9.788c1.164-.519 5.47-3.28 6.987-3.114 1.519.165 1 3.827 2.121 4.109 1.122.281 3.839-2.016 4.606-2.42",\n  strokeWidth: "1.25"\n}), modifiedTablerIconProps);\nconst EdgeSharpIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("svg", Object.assign({\n  strokeWidth: "1.5"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M3.33334 9.99998V6.66665C3.33334 6.04326 3.33403 4.9332 3.33539 3.33646C4.95233 3.33436 6.06276 3.33331 6.66668 3.33331H10"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M13.3333 3.33331V3.34331"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M16.6667 3.33331V3.34331"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M16.6667 6.66669V6.67669"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M16.6667 10V10.01"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M3.33334 13.3333V13.3433"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M16.6667 13.3333V13.3433"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M3.33334 16.6667V16.6767"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M6.66666 16.6667V16.6767"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M10 16.6667V16.6767"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M13.3333 16.6667V16.6767"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M16.6667 16.6667V16.6767"\n  })]\n})), modifiedTablerIconProps); // tabler-icons: border-radius\n\nconst EdgeRoundIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "1.5",\n  stroke: "currentColor",\n  strokeLinecap: "round",\n  strokeLinejoin: "round"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M4 12v-4a4 4 0 0 1 4 -4h4"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "16",\n    y1: "4",\n    x2: "16",\n    y2: "4.01"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "20",\n    y1: "4",\n    x2: "20",\n    y2: "4.01"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "20",\n    y1: "8",\n    x2: "20",\n    y2: "8.01"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "20",\n    y1: "12",\n    x2: "20",\n    y2: "12.01"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "4",\n    y1: "16",\n    x2: "4",\n    y2: "16.01"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "20",\n    y1: "16",\n    x2: "20",\n    y2: "16.01"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "4",\n    y1: "20",\n    x2: "4",\n    y2: "20.01"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "8",\n    y1: "20",\n    x2: "8",\n    y2: "20.01"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "12",\n    y1: "20",\n    x2: "12",\n    y2: "20.01"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "16",\n    y1: "20",\n    x2: "16",\n    y2: "20.01"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "20",\n    y1: "20",\n    x2: "20",\n    y2: "20.01"\n  })]\n})), tablerIconProps);\nconst ArrowheadNoneIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n  d: "M6 10H34",\n  stroke: "currentColor",\n  strokeWidth: 2,\n  fill: "none"\n}), {\n  width: 40,\n  height: 20\n});\nconst ArrowheadArrowIcon = react__WEBPACK_IMPORTED_MODULE_1___default().memo(({\n  flip = false\n}) => createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  transform: flip ? "translate(40, 0) scale(-1, 1)" : "",\n  stroke: "currentColor",\n  strokeWidth: 2,\n  fill: "none"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M34 10H6M34 10L27 5M34 10L27 15"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M27.5 5L34.5 10L27.5 15"\n  })]\n})), {\n  width: 40,\n  height: 20\n}));\nconst ArrowheadDotIcon = react__WEBPACK_IMPORTED_MODULE_1___default().memo(({\n  flip = false\n}) => createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  stroke: "currentColor",\n  fill: "currentColor",\n  transform: flip ? "translate(40, 0) scale(-1, 1)" : ""\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M32 10L6 10",\n    strokeWidth: 2\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("circle", {\n    r: "4",\n    transform: "matrix(-1 0 0 1 30 10)"\n  })]\n})), {\n  width: 40,\n  height: 20\n}));\nconst ArrowheadBarIcon = react__WEBPACK_IMPORTED_MODULE_1___default().memo(({\n  flip = false\n}) => createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("g", Object.assign({\n  transform: flip ? "translate(40, 0) scale(-1, 1)" : ""\n}, {\n  children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M34 10H5.99996M34 10L34 5M34 10L34 15",\n    stroke: "currentColor",\n    strokeWidth: 2,\n    fill: "none"\n  })\n})), {\n  width: 40,\n  height: 20\n}));\nconst ArrowheadTriangleIcon = react__WEBPACK_IMPORTED_MODULE_1___default().memo(({\n  flip = false\n}) => createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  stroke: "currentColor",\n  fill: "currentColor",\n  transform: flip ? "translate(40, 0) scale(-1, 1)" : ""\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M32 10L6 10",\n    strokeWidth: 2\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M27.5 5.5L34.5 10L27.5 14.5L27.5 5.5"\n  })]\n})), {\n  width: 40,\n  height: 20\n}));\nconst FontSizeSmallIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("g", Object.assign({\n    clipPath: "url(#a)"\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M14.167 6.667a3.333 3.333 0 0 0-3.334-3.334H9.167a3.333 3.333 0 0 0 0 6.667h1.666a3.333 3.333 0 0 1 0 6.667H9.167a3.333 3.333 0 0 1-3.334-3.334",\n      stroke: "currentColor",\n      strokeWidth: "1.25",\n      strokeLinecap: "round",\n      strokeLinejoin: "round"\n    })\n  })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("defs", {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("clipPath", Object.assign({\n      id: "a"\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n        fill: "#fff",\n        d: "M0 0h20v20H0z"\n      })\n    }))\n  })]\n}), modifiedTablerIconProps);\nconst FontSizeMediumIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("g", Object.assign({\n    clipPath: "url(#a)"\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M5 16.667V3.333L10 15l5-11.667v13.334",\n      stroke: "currentColor",\n      strokeWidth: "1.25",\n      strokeLinecap: "round",\n      strokeLinejoin: "round"\n    })\n  })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("defs", {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("clipPath", Object.assign({\n      id: "a"\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n        fill: "#fff",\n        d: "M0 0h20v20H0z"\n      })\n    }))\n  })]\n}), modifiedTablerIconProps);\nconst FontSizeLargeIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("g", Object.assign({\n    clipPath: "url(#a)"\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M5.833 3.333v13.334h8.334",\n      stroke: "currentColor",\n      strokeWidth: "1.25",\n      strokeLinecap: "round",\n      strokeLinejoin: "round"\n    })\n  })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("defs", {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("clipPath", Object.assign({\n      id: "a"\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n        fill: "#fff",\n        d: "M0 0h20v20H0z"\n      })\n    }))\n  })]\n}), modifiedTablerIconProps);\nconst FontSizeExtraLargeIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "m1.667 3.333 6.666 13.334M8.333 3.333 1.667 16.667M11.667 3.333v13.334h6.666",\n    stroke: "currentColor",\n    strokeWidth: "1.25",\n    strokeLinecap: "round",\n    strokeLinejoin: "round"\n  })\n}), modifiedTablerIconProps);\nconst FontFamilyNormalIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("g", Object.assign({\n    stroke: "currentColor",\n    strokeWidth: "1.25",\n    strokeLinecap: "round",\n    strokeLinejoin: "round"\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M5.833 16.667v-10a3.333 3.333 0 0 1 3.334-3.334h1.666a3.333 3.333 0 0 1 3.334 3.334v10M5.833 10.833h8.334"\n    })\n  }))\n}), modifiedTablerIconProps);\nconst FontFamilyCodeIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("g", Object.assign({\n    clipPath: "url(#a)",\n    stroke: "currentColor",\n    strokeWidth: "1.25",\n    strokeLinecap: "round",\n    strokeLinejoin: "round"\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n      d: "M5.833 6.667 2.5 10l3.333 3.333M14.167 6.667 17.5 10l-3.333 3.333M11.667 3.333 8.333 16.667"\n    })\n  })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("defs", {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("clipPath", Object.assign({\n      id: "a"\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n        fill: "#fff",\n        d: "M0 0h20v20H0z"\n      })\n    }))\n  })]\n}), modifiedTablerIconProps);\nconst TextAlignLeftIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  stroke: "currentColor",\n  fill: "none",\n  strokeLinecap: "round",\n  strokeLinejoin: "round",\n  strokeWidth: 2\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "4",\n    y1: "8",\n    x2: "20",\n    y2: "8"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "4",\n    y1: "12",\n    x2: "12",\n    y2: "12"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "4",\n    y1: "16",\n    x2: "16",\n    y2: "16"\n  })]\n})), tablerIconProps);\nconst TextAlignCenterIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  stroke: "currentColor",\n  fill: "none",\n  strokeLinecap: "round",\n  strokeLinejoin: "round"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "4",\n    y1: "8",\n    x2: "20",\n    y2: "8"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "8",\n    y1: "12",\n    x2: "16",\n    y2: "12"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "6",\n    y1: "16",\n    x2: "18",\n    y2: "16"\n  })]\n})), tablerIconProps);\nconst TextAlignRightIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  stroke: "currentColor",\n  fill: "none",\n  strokeLinecap: "round",\n  strokeLinejoin: "round"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "4",\n    y1: "8",\n    x2: "20",\n    y2: "8"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "10",\n    y1: "12",\n    x2: "20",\n    y2: "12"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "8",\n    y1: "16",\n    x2: "20",\n    y2: "16"\n  })]\n})), tablerIconProps); // tabler-icons: layout-align-top\n\nconst TextAlignTopIcon = react__WEBPACK_IMPORTED_MODULE_1___default().memo(({\n  theme\n}) => createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "1.5",\n  stroke: "currentColor",\n  fill: "none",\n  strokeLinecap: "round",\n  strokeLinejoin: "round"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "4",\n    y1: "4",\n    x2: "20",\n    y2: "4"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("rect", {\n    x: "9",\n    y: "8",\n    width: "6",\n    height: "12",\n    rx: "2"\n  })]\n})), tablerIconProps)); // tabler-icons: layout-align-bottom\n\nconst TextAlignBottomIcon = react__WEBPACK_IMPORTED_MODULE_1___default().memo(({\n  theme\n}) => createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "2",\n  stroke: "currentColor",\n  fill: "none",\n  strokeLinecap: "round",\n  strokeLinejoin: "round"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "4",\n    y1: "20",\n    x2: "20",\n    y2: "20"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("rect", {\n    x: "9",\n    y: "4",\n    width: "6",\n    height: "12",\n    rx: "2"\n  })]\n})), tablerIconProps)); // tabler-icons: layout-align-middle\n\nconst TextAlignMiddleIcon = react__WEBPACK_IMPORTED_MODULE_1___default().memo(({\n  theme\n}) => createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "1.5",\n  stroke: "currentColor",\n  fill: "none",\n  strokeLinecap: "round",\n  strokeLinejoin: "round"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "4",\n    y1: "12",\n    x2: "9",\n    y2: "12"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("line", {\n    x1: "15",\n    y1: "12",\n    x2: "20",\n    y2: "12"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("rect", {\n    x: "9",\n    y: "6",\n    width: "6",\n    height: "12",\n    rx: "2"\n  })]\n})), tablerIconProps));\nconst publishIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n  d: "M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zM393.4 288H328v112c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V288h-65.4c-14.3 0-21.4-17.2-11.3-27.3l105.4-105.4c6.2-6.2 16.4-6.2 22.6 0l105.4 105.4c10.1 10.1 2.9 27.3-11.3 27.3z",\n  fill: "currentColor"\n}), {\n  width: 640,\n  height: 512\n});\nconst eraser = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n  d: "M480 416C497.7 416 512 430.3 512 448C512 465.7 497.7 480 480 480H150.6C133.7 480 117.4 473.3 105.4 461.3L25.37 381.3C.3786 356.3 .3786 315.7 25.37 290.7L258.7 57.37C283.7 32.38 324.3 32.38 349.3 57.37L486.6 194.7C511.6 219.7 511.6 260.3 486.6 285.3L355.9 416H480zM265.4 416L332.7 348.7L195.3 211.3L70.63 336L150.6 416L265.4 416z"\n}));\nconst handIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: 1.25\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M8 13v-7.5a1.5 1.5 0 0 1 3 0v6.5"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M11 5.5v-2a1.5 1.5 0 1 1 3 0v8.5"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M14 5.5a1.5 1.5 0 0 1 3 0v6.5"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M17 7.5a1.5 1.5 0 0 1 3 0v8.5a6 6 0 0 1 -6 6h-2h.208a6 6 0 0 1 -5.012 -2.7a69.74 69.74 0 0 1 -.196 -.3c-.312 -.479 -1.407 -2.388 -3.286 -5.728a1.5 1.5 0 0 1 .536 -2.022a1.867 1.867 0 0 1 2.28 .28l1.47 1.47"\n  })]\n})), tablerIconProps);\nconst downloadIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M4 17v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2 -2v-2"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M7 11l5 5l5 -5"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M12 4l0 12"\n  })]\n}), tablerIconProps);\nconst copyIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M8 8m0 2a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2z"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M16 8v-2a2 2 0 0 0 -2 -2h-8a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h2"\n  })]\n}), tablerIconProps);\nconst helpIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M12 17l0 .01"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M12 13.5a1.5 1.5 0 0 1 1 -1.5a2.6 2.6 0 1 0 -3 -4"\n  })]\n}), tablerIconProps);\nconst playerPlayIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M7 4v16l13 -8z"\n  })]\n}), tablerIconProps);\nconst playerStopFilledIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M17 4h-10a3 3 0 0 0 -3 3v10a3 3 0 0 0 3 3h10a3 3 0 0 0 3 -3v-10a3 3 0 0 0 -3 -3z",\n    strokeWidth: "0",\n    fill: "currentColor"\n  })]\n}), tablerIconProps);\nconst tablerCheckIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M5 12l5 5l10 -10"\n  })]\n}), tablerIconProps);\nconst alertTriangleIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M10.24 3.957l-8.422 14.06a1.989 1.989 0 0 0 1.7 2.983h16.845a1.989 1.989 0 0 0 1.7 -2.983l-8.423 -14.06a1.989 1.989 0 0 0 -3.4 0z"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M12 9v4"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M12 17h.01"\n  })]\n}), tablerIconProps);\nconst eyeDropperIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: 1.25\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M11 7l6 6"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M4 16l11.7 -11.7a1 1 0 0 1 1.4 0l2.6 2.6a1 1 0 0 1 0 1.4l-11.7 11.7h-4v-4z"\n  })]\n})), tablerIconProps);\nconst extraToolsIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: 1.5\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M12 3l-4 7h8z"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M17 17m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M4 14m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z"\n  })]\n})), tablerIconProps);\nconst frameToolIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: 1.5\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    stroke: "none",\n    d: "M0 0h24v24H0z",\n    fill: "none"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M4 7l16 0"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M4 17l16 0"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M7 4l0 16"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M17 4l0 16"\n  })]\n})), tablerIconProps);\nconst mermaidLogoIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n  fill: "currentColor",\n  d: "M407.48,111.18C335.587,108.103 269.573,152.338 245.08,220C220.587,152.338 154.573,108.103 82.68,111.18C80.285,168.229 107.577,222.632 154.74,254.82C178.908,271.419 193.35,298.951 193.27,328.27L193.27,379.13L296.9,379.13L296.9,328.27C296.816,298.953 311.255,271.42 335.42,254.82C382.596,222.644 409.892,168.233 407.48,111.18Z"\n}));\nconst ArrowRightIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  strokeWidth: "1.25"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M4.16602 10H15.8327"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M12.5 13.3333L15.8333 10"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "M12.5 6.66666L15.8333 9.99999"\n  })]\n})), modifiedTablerIconProps);\nconst laserPointerToolIcon = createIcon((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("g", Object.assign({\n  fill: "none",\n  stroke: "currentColor",\n  strokeWidth: "1.25",\n  strokeLinecap: "round",\n  strokeLinejoin: "round",\n  transform: "rotate(90 10 10)"\n}, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    clipRule: "evenodd",\n    d: "m9.644 13.69 7.774-7.773a2.357 2.357 0 0 0-3.334-3.334l-7.773 7.774L8 12l1.643 1.69Z"\n  }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("path", {\n    d: "m13.25 3.417 3.333 3.333M10 10l2-2M5 15l3-3M2.156 17.894l1-1M5.453 19.029l-.144-1.407M2.377 11.887l.866 1.118M8.354 17.273l-1.194-.758M.953 14.652l1.408.13"\n  })]\n})), 20);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 131220 characters]\n//# sourceURL=webpack-internal:///../../components/icons.tsx\n');
              }
            ),
            /***/
            "../../components/live-collaboration/LiveCollaborationTrigger.tsx": (
              /*!************************************************************************!*\
                !*** ../../components/live-collaboration/LiveCollaborationTrigger.tsx ***!
                \************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../i18n */ "../../i18n.ts");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../icons */ "../../components/icons.tsx");\n/* harmony import */ var _Button__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Button */ "../../components/Button.tsx");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _LiveCollaborationTrigger_scss__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./LiveCollaborationTrigger.scss */ "../../components/live-collaboration/LiveCollaborationTrigger.scss");\n/* harmony import */ var _context_ui_appState__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../context/ui-appState */ "../../context/ui-appState.ts");\nvar __rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n\n  if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\n\n\n\n\nconst LiveCollaborationTrigger = _a => {\n  var {\n    isCollaborating,\n    onSelect\n  } = _a,\n      rest = __rest(_a, ["isCollaborating", "onSelect"]);\n\n  const appState = (0,_context_ui_appState__WEBPACK_IMPORTED_MODULE_6__.useUIAppState)();\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Button__WEBPACK_IMPORTED_MODULE_3__.Button, Object.assign({}, rest, {\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_4__["default"])("collab-button", {\n      active: isCollaborating\n    }),\n    type: "button",\n    onSelect: onSelect,\n    style: {\n      position: "relative"\n    },\n    title: (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("labels.liveCollaboration")\n  }, {\n    children: [_icons__WEBPACK_IMPORTED_MODULE_2__.usersIcon, appState.collaborators.size > 0 && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: "CollabButton-collaborators"\n    }, {\n      children: appState.collaborators.size\n    }))]\n  }));\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (LiveCollaborationTrigger);\nLiveCollaborationTrigger.displayName = "LiveCollaborationTrigger";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9saXZlLWNvbGxhYm9yYXRpb24vTGl2ZUNvbGxhYm9yYXRpb25UcmlnZ2VyLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBLGFBQWEsU0FBSSxJQUFJLFNBQUk7QUFDekI7O0FBRUE7O0FBRUEsNEhBQTRILGNBQWM7QUFDMUk7QUFDQTtBQUNBO0FBQ0E7O0FBRStEO0FBQ2hDO0FBQ007QUFDRjtBQUNYO0FBQ2lCO0FBQ2lCOztBQUUxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjs7QUFFQSxtQkFBbUIsbUVBQWE7QUFDaEMsU0FBUyx1REFBSyxDQUFDLDJDQUFNLGtCQUFrQjtBQUN2QyxlQUFlLGdEQUFJO0FBQ25CO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLFdBQVcsd0NBQUM7QUFDWixHQUFHO0FBQ0gsZUFBZSw2Q0FBUyxxQ0FBcUMsc0RBQUk7QUFDakU7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIOztBQUVBLGlFQUFlLHdCQUF3QixFQUFDO0FBQ3hDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvbGl2ZS1jb2xsYWJvcmF0aW9uL0xpdmVDb2xsYWJvcmF0aW9uVHJpZ2dlci50c3g/M2VhNSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19yZXN0ID0gdGhpcyAmJiB0aGlzLl9fcmVzdCB8fCBmdW5jdGlvbiAocywgZSkge1xuICB2YXIgdCA9IHt9O1xuXG4gIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKSB0W3BdID0gc1twXTtcblxuICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpIHRbcFtpXV0gPSBzW3BbaV1dO1xuICB9XG4gIHJldHVybiB0O1xufTtcblxuaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IHQgfSBmcm9tIFwiLi4vLi4vaTE4blwiO1xuaW1wb3J0IHsgdXNlcnNJY29uIH0gZnJvbSBcIi4uL2ljb25zXCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiLi4vQnV0dG9uXCI7XG5pbXBvcnQgY2xzeCBmcm9tIFwiY2xzeFwiO1xuaW1wb3J0IFwiLi9MaXZlQ29sbGFib3JhdGlvblRyaWdnZXIuc2Nzc1wiO1xuaW1wb3J0IHsgdXNlVUlBcHBTdGF0ZSB9IGZyb20gXCIuLi8uLi9jb250ZXh0L3VpLWFwcFN0YXRlXCI7XG5cbmNvbnN0IExpdmVDb2xsYWJvcmF0aW9uVHJpZ2dlciA9IF9hID0+IHtcbiAgdmFyIHtcbiAgICBpc0NvbGxhYm9yYXRpbmcsXG4gICAgb25TZWxlY3RcbiAgfSA9IF9hLFxuICAgICAgcmVzdCA9IF9fcmVzdChfYSwgW1wiaXNDb2xsYWJvcmF0aW5nXCIsIFwib25TZWxlY3RcIl0pO1xuXG4gIGNvbnN0IGFwcFN0YXRlID0gdXNlVUlBcHBTdGF0ZSgpO1xuICByZXR1cm4gX2pzeHMoQnV0dG9uLCBPYmplY3QuYXNzaWduKHt9LCByZXN0LCB7XG4gICAgY2xhc3NOYW1lOiBjbHN4KFwiY29sbGFiLWJ1dHRvblwiLCB7XG4gICAgICBhY3RpdmU6IGlzQ29sbGFib3JhdGluZ1xuICAgIH0pLFxuICAgIHR5cGU6IFwiYnV0dG9uXCIsXG4gICAgb25TZWxlY3Q6IG9uU2VsZWN0LFxuICAgIHN0eWxlOiB7XG4gICAgICBwb3NpdGlvbjogXCJyZWxhdGl2ZVwiXG4gICAgfSxcbiAgICB0aXRsZTogdChcImxhYmVscy5saXZlQ29sbGFib3JhdGlvblwiKVxuICB9LCB7XG4gICAgY2hpbGRyZW46IFt1c2Vyc0ljb24sIGFwcFN0YXRlLmNvbGxhYm9yYXRvcnMuc2l6ZSA+IDAgJiYgX2pzeChcImRpdlwiLCBPYmplY3QuYXNzaWduKHtcbiAgICAgIGNsYXNzTmFtZTogXCJDb2xsYWJCdXR0b24tY29sbGFib3JhdG9yc1wiXG4gICAgfSwge1xuICAgICAgY2hpbGRyZW46IGFwcFN0YXRlLmNvbGxhYm9yYXRvcnMuc2l6ZVxuICAgIH0pKV1cbiAgfSkpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgTGl2ZUNvbGxhYm9yYXRpb25UcmlnZ2VyO1xuTGl2ZUNvbGxhYm9yYXRpb25UcmlnZ2VyLmRpc3BsYXlOYW1lID0gXCJMaXZlQ29sbGFib3JhdGlvblRyaWdnZXJcIjsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/live-collaboration/LiveCollaborationTrigger.tsx\n');
              }
            ),
            /***/
            "../../components/main-menu/DefaultItems.tsx": (
              /*!***************************************************!*\
                !*** ../../components/main-menu/DefaultItems.tsx ***!
                \***************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "ChangeCanvasBackground": () => (/* binding */ ChangeCanvasBackground),\n/* harmony export */   "ClearCanvas": () => (/* binding */ ClearCanvas),\n/* harmony export */   "Export": () => (/* binding */ Export),\n/* harmony export */   "Help": () => (/* binding */ Help),\n/* harmony export */   "LiveCollaborationTrigger": () => (/* binding */ LiveCollaborationTrigger),\n/* harmony export */   "LoadScene": () => (/* binding */ LoadScene),\n/* harmony export */   "SaveAsImage": () => (/* binding */ SaveAsImage),\n/* harmony export */   "SaveToActiveFile": () => (/* binding */ SaveToActiveFile),\n/* harmony export */   "Socials": () => (/* binding */ Socials),\n/* harmony export */   "ToggleTheme": () => (/* binding */ ToggleTheme)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var _actions_shortcuts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../actions/shortcuts */ "../../actions/shortcuts.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../i18n */ "../../i18n.ts");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../App */ "../../components/App.tsx");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../icons */ "../../components/icons.tsx");\n/* harmony import */ var _dropdownMenu_DropdownMenuItem__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../dropdownMenu/DropdownMenuItem */ "../../components/dropdownMenu/DropdownMenuItem.tsx");\n/* harmony import */ var _dropdownMenu_DropdownMenuItemLink__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../dropdownMenu/DropdownMenuItemLink */ "../../components/dropdownMenu/DropdownMenuItemLink.tsx");\n/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../actions */ "../../actions/index.ts");\n/* harmony import */ var _DefaultItems_scss__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./DefaultItems.scss */ "../../components/main-menu/DefaultItems.scss");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var jotai__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! jotai */ "../../../node_modules/jotai/esm/index.mjs");\n/* harmony import */ var _ActiveConfirmDialog__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../ActiveConfirmDialog */ "../../components/ActiveConfirmDialog.tsx");\n/* harmony import */ var _jotai__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../jotai */ "../../jotai.ts");\n/* harmony import */ var _context_ui_appState__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../context/ui-appState */ "../../context/ui-appState.ts");\n/* harmony import */ var _OverwriteConfirm_OverwriteConfirmState__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../OverwriteConfirm/OverwriteConfirmState */ "../../components/OverwriteConfirm/OverwriteConfirmState.ts");\n/* harmony import */ var _Trans__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../Trans */ "../../components/Trans.tsx");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator["throw"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst LoadScene = () => {\n  const {\n    t\n  } = (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.useI18n)();\n  const actionManager = (0,_App__WEBPACK_IMPORTED_MODULE_3__.useExcalidrawActionManager)();\n  const elements = (0,_App__WEBPACK_IMPORTED_MODULE_3__.useExcalidrawElements)();\n\n  if (!actionManager.isActionEnabled(_actions__WEBPACK_IMPORTED_MODULE_7__.actionLoadScene)) {\n    return null;\n  }\n\n  const handleSelect = () => __awaiter(void 0, void 0, void 0, function* () {\n    if (!elements.length || (yield (0,_OverwriteConfirm_OverwriteConfirmState__WEBPACK_IMPORTED_MODULE_13__.openConfirmModal)({\n      title: t("overwriteConfirm.modal.loadFromFile.title"),\n      actionLabel: t("overwriteConfirm.modal.loadFromFile.button"),\n      color: "warning",\n      description: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Trans__WEBPACK_IMPORTED_MODULE_14__["default"], {\n        i18nKey: "overwriteConfirm.modal.loadFromFile.description",\n        bold: text => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("strong", {\n          children: text\n        }),\n        br: () => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("br", {})\n      })\n    }))) {\n      actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_7__.actionLoadScene);\n    }\n  });\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_dropdownMenu_DropdownMenuItem__WEBPACK_IMPORTED_MODULE_5__["default"], Object.assign({\n    icon: _icons__WEBPACK_IMPORTED_MODULE_4__.LoadIcon,\n    onSelect: handleSelect,\n    "data-testid": "load-button",\n    shortcut: (0,_actions_shortcuts__WEBPACK_IMPORTED_MODULE_1__.getShortcutFromShortcutName)("loadScene"),\n    "aria-label": t("buttons.load")\n  }, {\n    children: t("buttons.load")\n  }));\n};\nLoadScene.displayName = "LoadScene";\nconst SaveToActiveFile = () => {\n  const {\n    t\n  } = (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.useI18n)();\n  const actionManager = (0,_App__WEBPACK_IMPORTED_MODULE_3__.useExcalidrawActionManager)();\n\n  if (!actionManager.isActionEnabled(_actions__WEBPACK_IMPORTED_MODULE_7__.actionSaveToActiveFile)) {\n    return null;\n  }\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_dropdownMenu_DropdownMenuItem__WEBPACK_IMPORTED_MODULE_5__["default"], Object.assign({\n    shortcut: (0,_actions_shortcuts__WEBPACK_IMPORTED_MODULE_1__.getShortcutFromShortcutName)("saveScene"),\n    "data-testid": "save-button",\n    onSelect: () => actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_7__.actionSaveToActiveFile),\n    icon: _icons__WEBPACK_IMPORTED_MODULE_4__.save,\n    "aria-label": `${t("buttons.save")}`\n  }, {\n    children: `${t("buttons.save")}`\n  }));\n};\nSaveToActiveFile.displayName = "SaveToActiveFile";\nconst SaveAsImage = () => {\n  const setAppState = (0,_App__WEBPACK_IMPORTED_MODULE_3__.useExcalidrawSetAppState)();\n  const {\n    t\n  } = (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.useI18n)();\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_dropdownMenu_DropdownMenuItem__WEBPACK_IMPORTED_MODULE_5__["default"], Object.assign({\n    icon: _icons__WEBPACK_IMPORTED_MODULE_4__.ExportImageIcon,\n    "data-testid": "image-export-button",\n    onSelect: () => setAppState({\n      openDialog: "imageExport"\n    }),\n    shortcut: (0,_actions_shortcuts__WEBPACK_IMPORTED_MODULE_1__.getShortcutFromShortcutName)("imageExport"),\n    "aria-label": t("buttons.exportImage")\n  }, {\n    children: t("buttons.exportImage")\n  }));\n};\nSaveAsImage.displayName = "SaveAsImage";\nconst Help = () => {\n  const {\n    t\n  } = (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.useI18n)();\n  const actionManager = (0,_App__WEBPACK_IMPORTED_MODULE_3__.useExcalidrawActionManager)();\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_dropdownMenu_DropdownMenuItem__WEBPACK_IMPORTED_MODULE_5__["default"], Object.assign({\n    "data-testid": "help-menu-item",\n    icon: _icons__WEBPACK_IMPORTED_MODULE_4__.HelpIcon,\n    onSelect: () => actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_7__.actionShortcuts),\n    shortcut: "?",\n    "aria-label": t("helpDialog.title")\n  }, {\n    children: t("helpDialog.title")\n  }));\n};\nHelp.displayName = "Help";\nconst ClearCanvas = () => {\n  const {\n    t\n  } = (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.useI18n)();\n  const setActiveConfirmDialog = (0,jotai__WEBPACK_IMPORTED_MODULE_15__.useSetAtom)(_ActiveConfirmDialog__WEBPACK_IMPORTED_MODULE_10__.activeConfirmDialogAtom, _jotai__WEBPACK_IMPORTED_MODULE_11__.jotaiScope);\n  const actionManager = (0,_App__WEBPACK_IMPORTED_MODULE_3__.useExcalidrawActionManager)();\n\n  if (!actionManager.isActionEnabled(_actions__WEBPACK_IMPORTED_MODULE_7__.actionClearCanvas)) {\n    return null;\n  }\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_dropdownMenu_DropdownMenuItem__WEBPACK_IMPORTED_MODULE_5__["default"], Object.assign({\n    icon: _icons__WEBPACK_IMPORTED_MODULE_4__.TrashIcon,\n    onSelect: () => setActiveConfirmDialog("clearCanvas"),\n    "data-testid": "clear-canvas-button",\n    "aria-label": t("buttons.clearReset")\n  }, {\n    children: t("buttons.clearReset")\n  }));\n};\nClearCanvas.displayName = "ClearCanvas";\nconst ToggleTheme = () => {\n  const {\n    t\n  } = (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.useI18n)();\n  const appState = (0,_context_ui_appState__WEBPACK_IMPORTED_MODULE_12__.useUIAppState)();\n  const actionManager = (0,_App__WEBPACK_IMPORTED_MODULE_3__.useExcalidrawActionManager)();\n\n  if (!actionManager.isActionEnabled(_actions__WEBPACK_IMPORTED_MODULE_7__.actionToggleTheme)) {\n    return null;\n  }\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_dropdownMenu_DropdownMenuItem__WEBPACK_IMPORTED_MODULE_5__["default"], Object.assign({\n    onSelect: event => {\n      // do not close the menu when changing theme\n      event.preventDefault();\n      return actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_7__.actionToggleTheme);\n    },\n    icon: appState.theme === "dark" ? _icons__WEBPACK_IMPORTED_MODULE_4__.SunIcon : _icons__WEBPACK_IMPORTED_MODULE_4__.MoonIcon,\n    "data-testid": "toggle-dark-mode",\n    shortcut: (0,_actions_shortcuts__WEBPACK_IMPORTED_MODULE_1__.getShortcutFromShortcutName)("toggleTheme"),\n    "aria-label": appState.theme === "dark" ? t("buttons.lightMode") : t("buttons.darkMode")\n  }, {\n    children: appState.theme === "dark" ? t("buttons.lightMode") : t("buttons.darkMode")\n  }));\n};\nToggleTheme.displayName = "ToggleTheme";\nconst ChangeCanvasBackground = () => {\n  const {\n    t\n  } = (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.useI18n)();\n  const appState = (0,_context_ui_appState__WEBPACK_IMPORTED_MODULE_12__.useUIAppState)();\n  const actionManager = (0,_App__WEBPACK_IMPORTED_MODULE_3__.useExcalidrawActionManager)();\n  const appProps = (0,_App__WEBPACK_IMPORTED_MODULE_3__.useAppProps)();\n\n  if (appState.viewModeEnabled || !appProps.UIOptions.canvasActions.changeViewBackgroundColor) {\n    return null;\n  }\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n    style: {\n      marginTop: "0.5rem"\n    }\n  }, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      "data-testid": "canvas-background-label",\n      style: {\n        fontSize: ".75rem",\n        marginBottom: ".5rem"\n      }\n    }, {\n      children: t("labels.canvasBackground")\n    })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      style: {\n        padding: "0 0.625rem"\n      }\n    }, {\n      children: actionManager.renderAction("changeViewBackgroundColor")\n    }))]\n  }));\n};\nChangeCanvasBackground.displayName = "ChangeCanvasBackground";\nconst Export = () => {\n  const {\n    t\n  } = (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.useI18n)();\n  const setAppState = (0,_App__WEBPACK_IMPORTED_MODULE_3__.useExcalidrawSetAppState)();\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_dropdownMenu_DropdownMenuItem__WEBPACK_IMPORTED_MODULE_5__["default"], Object.assign({\n    icon: _icons__WEBPACK_IMPORTED_MODULE_4__.ExportIcon,\n    onSelect: () => {\n      setAppState({\n        openDialog: "jsonExport"\n      });\n    },\n    "data-testid": "json-export-button",\n    "aria-label": t("buttons.export")\n  }, {\n    children: t("buttons.export")\n  }));\n};\nExport.displayName = "Export";\nconst Socials = () => (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n  children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_dropdownMenu_DropdownMenuItemLink__WEBPACK_IMPORTED_MODULE_6__["default"], Object.assign({\n    icon: _icons__WEBPACK_IMPORTED_MODULE_4__.GithubIcon,\n    href: "https://github.com/excalidraw/excalidraw",\n    "aria-label": "GitHub"\n  }, {\n    children: "GitHub"\n  })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_dropdownMenu_DropdownMenuItemLink__WEBPACK_IMPORTED_MODULE_6__["default"], Object.assign({\n    icon: _icons__WEBPACK_IMPORTED_MODULE_4__.DiscordIcon,\n    href: "https://discord.gg/UexuTaE",\n    "aria-label": "Discord"\n  }, {\n    children: "Discord"\n  })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_dropdownMenu_DropdownMenuItemLink__WEBPACK_IMPORTED_MODULE_6__["default"], Object.assign({\n    icon: _icons__WEBPACK_IMPORTED_MODULE_4__.TwitterIcon,\n    href: "https://twitter.com/excalidraw",\n    "aria-label": "Twitter"\n  }, {\n    children: "Twitter"\n  }))]\n});\nSocials.displayName = "Socials";\nconst LiveCollaborationTrigger = ({\n  onSelect,\n  isCollaborating\n}) => {\n  const {\n    t\n  } = (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.useI18n)();\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_dropdownMenu_DropdownMenuItem__WEBPACK_IMPORTED_MODULE_5__["default"], Object.assign({\n    "data-testid": "collab-button",\n    icon: _icons__WEBPACK_IMPORTED_MODULE_4__.usersIcon,\n    className: (0,clsx__WEBPACK_IMPORTED_MODULE_9__["default"])({\n      "active-collab": isCollaborating\n    }),\n    onSelect: onSelect\n  }, {\n    children: t("labels.liveCollaboration")\n  }));\n};\nLiveCollaborationTrigger.displayName = "LiveCollaborationTrigger";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 15800 characters]\n//# sourceURL=webpack-internal:///../../components/main-menu/DefaultItems.tsx\n');
              }
            ),
            /***/
            "../../components/main-menu/MainMenu.tsx": (
              /*!***********************************************!*\
                !*** ../../components/main-menu/MainMenu.tsx ***!
                \***********************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../App */ "../../components/App.tsx");\n/* harmony import */ var _dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../dropdownMenu/DropdownMenu */ "../../components/dropdownMenu/DropdownMenu.tsx");\n/* harmony import */ var _DefaultItems__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./DefaultItems */ "../../components/main-menu/DefaultItems.tsx");\n/* harmony import */ var _UserList__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../UserList */ "../../components/UserList.tsx");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../i18n */ "../../i18n.ts");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../icons */ "../../components/icons.tsx");\n/* harmony import */ var _hoc_withInternalFallback__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../hoc/withInternalFallback */ "../../components/hoc/withInternalFallback.tsx");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../utils */ "../../utils.ts");\n/* harmony import */ var _context_tunnels__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../context/tunnels */ "../../context/tunnels.ts");\n/* harmony import */ var _context_ui_appState__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../context/ui-appState */ "../../context/ui-appState.ts");\n\n\n\n\n\n\n\n\n\n\n\n\nconst MainMenu = Object.assign((0,_hoc_withInternalFallback__WEBPACK_IMPORTED_MODULE_8__.withInternalFallback)("MainMenu", ({\n  children,\n  onSelect\n}) => {\n  const {\n    MainMenuTunnel\n  } = (0,_context_tunnels__WEBPACK_IMPORTED_MODULE_10__.useTunnels)();\n  const device = (0,_App__WEBPACK_IMPORTED_MODULE_2__.useDevice)();\n  const appState = (0,_context_ui_appState__WEBPACK_IMPORTED_MODULE_11__.useUIAppState)();\n  const setAppState = (0,_App__WEBPACK_IMPORTED_MODULE_2__.useExcalidrawSetAppState)();\n  const onClickOutside = device.editor.isMobile ? undefined : () => setAppState({\n    openMenu: null\n  });\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(MainMenuTunnel.In, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_3__["default"], Object.assign({\n      open: appState.openMenu === "canvas"\n    }, {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_3__["default"].Trigger, Object.assign({\n        onToggle: () => {\n          setAppState({\n            openMenu: appState.openMenu === "canvas" ? null : "canvas"\n          });\n        },\n        "data-testid": "main-menu-trigger",\n        className: "main-menu-trigger"\n      }, {\n        children: _icons__WEBPACK_IMPORTED_MODULE_7__.HamburgerMenuIcon\n      })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_3__["default"].Content, Object.assign({\n        onClickOutside: onClickOutside,\n        onSelect: (0,_utils__WEBPACK_IMPORTED_MODULE_9__.composeEventHandlers)(onSelect, () => {\n          setAppState({\n            openMenu: null\n          });\n        })\n      }, {\n        children: [children, device.editor.isMobile && appState.collaborators.size > 0 && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("fieldset", Object.assign({\n          className: "UserList-Wrapper"\n        }, {\n          children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("legend", {\n            children: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)("labels.collaborators")\n          }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_UserList__WEBPACK_IMPORTED_MODULE_5__.UserList, {\n            mobile: true,\n            collaborators: appState.collaborators\n          })]\n        }))]\n      }))]\n    }))\n  });\n}), {\n  Trigger: _dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_3__["default"].Trigger,\n  Item: _dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_3__["default"].Item,\n  ItemLink: _dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_3__["default"].ItemLink,\n  ItemCustom: _dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_3__["default"].ItemCustom,\n  Group: _dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_3__["default"].Group,\n  Separator: _dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_3__["default"].Separator,\n  DefaultItems: _DefaultItems__WEBPACK_IMPORTED_MODULE_4__\n});\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (MainMenu);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4652 characters]\n//# sourceURL=webpack-internal:///../../components/main-menu/MainMenu.tsx\n');
              }
            ),
            /***/
            "../../components/welcome-screen/WelcomeScreen.Center.tsx": (
              /*!****************************************************************!*\
                !*** ../../components/welcome-screen/WelcomeScreen.Center.tsx ***!
                \****************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "Center": () => (/* binding */ Center)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../actions */ "../../actions/index.ts");\n/* harmony import */ var _actions_shortcuts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../actions/shortcuts */ "../../actions/shortcuts.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../i18n */ "../../i18n.ts");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../App */ "../../components/App.tsx");\n/* harmony import */ var _context_tunnels__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../context/tunnels */ "../../context/tunnels.ts");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../icons */ "../../components/icons.tsx");\n/* harmony import */ var _context_ui_appState__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../context/ui-appState */ "../../context/ui-appState.ts");\n/* harmony import */ var _ExcalidrawLogo__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../ExcalidrawLogo */ "../../components/ExcalidrawLogo.tsx");\nvar __rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n\n  if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\n\n\n\n\n\n\nconst WelcomeScreenMenuItemContent = ({\n  icon,\n  shortcut,\n  children\n}) => {\n  const device = (0,_App__WEBPACK_IMPORTED_MODULE_4__.useDevice)();\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n    children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: "welcome-screen-menu-item__icon"\n    }, {\n      children: icon\n    })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: "welcome-screen-menu-item__text"\n    }, {\n      children: children\n    })), shortcut && !device.editor.isMobile && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: "welcome-screen-menu-item__shortcut"\n    }, {\n      children: shortcut\n    }))]\n  });\n};\n\nWelcomeScreenMenuItemContent.displayName = "WelcomeScreenMenuItemContent";\n\nconst WelcomeScreenMenuItem = _a => {\n  var {\n    onSelect,\n    children,\n    icon,\n    shortcut,\n    className = ""\n  } = _a,\n      props = __rest(_a, ["onSelect", "children", "icon", "shortcut", "className"]);\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("button", Object.assign({}, props, {\n    type: "button",\n    className: `welcome-screen-menu-item ${className}`,\n    onClick: onSelect\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(WelcomeScreenMenuItemContent, Object.assign({\n      icon: icon,\n      shortcut: shortcut\n    }, {\n      children: children\n    }))\n  }));\n};\n\nWelcomeScreenMenuItem.displayName = "WelcomeScreenMenuItem";\n\nconst WelcomeScreenMenuItemLink = _a => {\n  var {\n    children,\n    href,\n    icon,\n    shortcut,\n    className = ""\n  } = _a,\n      props = __rest(_a, ["children", "href", "icon", "shortcut", "className"]);\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("a", Object.assign({}, props, {\n    className: `welcome-screen-menu-item ${className}`,\n    href: href,\n    target: "_blank",\n    rel: "noreferrer"\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(WelcomeScreenMenuItemContent, Object.assign({\n      icon: icon,\n      shortcut: shortcut\n    }, {\n      children: children\n    }))\n  }));\n};\n\nWelcomeScreenMenuItemLink.displayName = "WelcomeScreenMenuItemLink";\n\nconst Center = ({\n  children\n}) => {\n  const {\n    WelcomeScreenCenterTunnel\n  } = (0,_context_tunnels__WEBPACK_IMPORTED_MODULE_5__.useTunnels)();\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(WelcomeScreenCenterTunnel.In, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: "welcome-screen-center"\n    }, {\n      children: children || (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n        children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Logo, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Heading, {\n          children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("welcomeScreen.defaults.center_heading")\n        }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(Menu, {\n          children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(MenuItemLoadScene, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(MenuItemHelp, {})]\n        })]\n      })\n    }))\n  });\n};\n\nCenter.displayName = "Center";\n\nconst Logo = ({\n  children\n}) => {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: "welcome-screen-center__logo virgil welcome-screen-decor"\n  }, {\n    children: children || (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ExcalidrawLogo__WEBPACK_IMPORTED_MODULE_8__.ExcalidrawLogo, {\n      withText: true\n    })\n  }));\n};\n\nLogo.displayName = "Logo";\n\nconst Heading = ({\n  children\n}) => {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: "welcome-screen-center__heading welcome-screen-decor virgil"\n  }, {\n    children: children\n  }));\n};\n\nHeading.displayName = "Heading";\n\nconst Menu = ({\n  children\n}) => {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n    className: "welcome-screen-menu"\n  }, {\n    children: children\n  }));\n};\n\nMenu.displayName = "Menu";\n\nconst MenuItemHelp = () => {\n  const actionManager = (0,_App__WEBPACK_IMPORTED_MODULE_4__.useExcalidrawActionManager)();\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(WelcomeScreenMenuItem, Object.assign({\n    onSelect: () => actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_1__.actionShortcuts),\n    shortcut: "?",\n    icon: _icons__WEBPACK_IMPORTED_MODULE_6__.HelpIcon\n  }, {\n    children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("helpDialog.title")\n  }));\n};\n\nMenuItemHelp.displayName = "MenuItemHelp";\n\nconst MenuItemLoadScene = () => {\n  const appState = (0,_context_ui_appState__WEBPACK_IMPORTED_MODULE_7__.useUIAppState)();\n  const actionManager = (0,_App__WEBPACK_IMPORTED_MODULE_4__.useExcalidrawActionManager)();\n\n  if (appState.viewModeEnabled) {\n    return null;\n  }\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(WelcomeScreenMenuItem, Object.assign({\n    onSelect: () => actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_1__.actionLoadScene),\n    shortcut: (0,_actions_shortcuts__WEBPACK_IMPORTED_MODULE_2__.getShortcutFromShortcutName)("loadScene"),\n    icon: _icons__WEBPACK_IMPORTED_MODULE_6__.LoadIcon\n  }, {\n    children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("buttons.load")\n  }));\n};\n\nMenuItemLoadScene.displayName = "MenuItemLoadScene";\n\nconst MenuItemLiveCollaborationTrigger = ({\n  onSelect\n}) => {\n  const {\n    t\n  } = (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.useI18n)();\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(WelcomeScreenMenuItem, Object.assign({\n    shortcut: null,\n    onSelect: onSelect,\n    icon: _icons__WEBPACK_IMPORTED_MODULE_6__.usersIcon\n  }, {\n    children: t("labels.liveCollaboration")\n  }));\n};\n\nMenuItemLiveCollaborationTrigger.displayName = "MenuItemLiveCollaborationTrigger"; // -----------------------------------------------------------------------------\n\nCenter.Logo = Logo;\nCenter.Heading = Heading;\nCenter.Menu = Menu;\nCenter.MenuItem = WelcomeScreenMenuItem;\nCenter.MenuItemLink = WelcomeScreenMenuItemLink;\nCenter.MenuItemHelp = MenuItemHelp;\nCenter.MenuItemLoadScene = MenuItemLoadScene;\nCenter.MenuItemLiveCollaborationTrigger = MenuItemLiveCollaborationTrigger;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 10716 characters]\n//# sourceURL=webpack-internal:///../../components/welcome-screen/WelcomeScreen.Center.tsx\n');
              }
            ),
            /***/
            "../../components/welcome-screen/WelcomeScreen.Hints.tsx": (
              /*!***************************************************************!*\
                !*** ../../components/welcome-screen/WelcomeScreen.Hints.tsx ***!
                \***************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "HelpHint": () => (/* binding */ HelpHint),\n/* harmony export */   "MenuHint": () => (/* binding */ MenuHint),\n/* harmony export */   "ToolbarHint": () => (/* binding */ ToolbarHint)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../i18n */ "../../i18n.ts");\n/* harmony import */ var _context_tunnels__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../context/tunnels */ "../../context/tunnels.ts");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../icons */ "../../components/icons.tsx");\n\n\n\n\n\nconst MenuHint = ({\n  children\n}) => {\n  const {\n    WelcomeScreenMenuHintTunnel\n  } = (0,_context_tunnels__WEBPACK_IMPORTED_MODULE_2__.useTunnels)();\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(WelcomeScreenMenuHintTunnel.In, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n      className: "virgil welcome-screen-decor welcome-screen-decor-hint welcome-screen-decor-hint--menu"\n    }, {\n      children: [_icons__WEBPACK_IMPORTED_MODULE_3__.WelcomeScreenMenuArrow, (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n        className: "welcome-screen-decor-hint__label"\n      }, {\n        children: children || (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("welcomeScreen.defaults.menuHint")\n      }))]\n    }))\n  });\n};\n\nMenuHint.displayName = "MenuHint";\n\nconst ToolbarHint = ({\n  children\n}) => {\n  const {\n    WelcomeScreenToolbarHintTunnel\n  } = (0,_context_tunnels__WEBPACK_IMPORTED_MODULE_2__.useTunnels)();\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(WelcomeScreenToolbarHintTunnel.In, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n      className: "virgil welcome-screen-decor welcome-screen-decor-hint welcome-screen-decor-hint--toolbar"\n    }, {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n        className: "welcome-screen-decor-hint__label"\n      }, {\n        children: children || (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("welcomeScreen.defaults.toolbarHint")\n      })), _icons__WEBPACK_IMPORTED_MODULE_3__.WelcomeScreenTopToolbarArrow]\n    }))\n  });\n};\n\nToolbarHint.displayName = "ToolbarHint";\n\nconst HelpHint = ({\n  children\n}) => {\n  const {\n    WelcomeScreenHelpHintTunnel\n  } = (0,_context_tunnels__WEBPACK_IMPORTED_MODULE_2__.useTunnels)();\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(WelcomeScreenHelpHintTunnel.In, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n      className: "virgil welcome-screen-decor welcome-screen-decor-hint welcome-screen-decor-hint--help"\n    }, {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", {\n        children: children || (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("welcomeScreen.defaults.helpHint")\n      }), _icons__WEBPACK_IMPORTED_MODULE_3__.WelcomeScreenHelpArrow]\n    }))\n  });\n};\n\nHelpHint.displayName = "HelpHint";\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy93ZWxjb21lLXNjcmVlbi9XZWxjb21lU2NyZWVuLkhpbnRzLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQStEO0FBQ2hDO0FBQ29CO0FBQ3FEOztBQUV4RztBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQSxJQUFJLEVBQUUsNERBQVU7QUFDaEIsU0FBUyxzREFBSTtBQUNiLGNBQWMsdURBQUs7QUFDbkI7QUFDQSxLQUFLO0FBQ0wsaUJBQWlCLDBEQUFzQixFQUFFLHNEQUFJO0FBQzdDO0FBQ0EsT0FBTztBQUNQLDhCQUE4Qix3Q0FBQztBQUMvQixPQUFPO0FBQ1AsS0FBSztBQUNMLEdBQUc7QUFDSDs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQSxJQUFJLEVBQUUsNERBQVU7QUFDaEIsU0FBUyxzREFBSTtBQUNiLGNBQWMsdURBQUs7QUFDbkI7QUFDQSxLQUFLO0FBQ0wsaUJBQWlCLHNEQUFJO0FBQ3JCO0FBQ0EsT0FBTztBQUNQLDhCQUE4Qix3Q0FBQztBQUMvQixPQUFPLElBQUksZ0VBQTRCO0FBQ3ZDLEtBQUs7QUFDTCxHQUFHO0FBQ0g7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0EsSUFBSSxFQUFFLDREQUFVO0FBQ2hCLFNBQVMsc0RBQUk7QUFDYixjQUFjLHVEQUFLO0FBQ25CO0FBQ0EsS0FBSztBQUNMLGlCQUFpQixzREFBSTtBQUNyQiw4QkFBOEIsd0NBQUM7QUFDL0IsT0FBTyxHQUFHLDBEQUFzQjtBQUNoQyxLQUFLO0FBQ0wsR0FBRztBQUNIOztBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvd2VsY29tZS1zY3JlZW4vV2VsY29tZVNjcmVlbi5IaW50cy50c3g/MWY0ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgdCB9IGZyb20gXCIuLi8uLi9pMThuXCI7XG5pbXBvcnQgeyB1c2VUdW5uZWxzIH0gZnJvbSBcIi4uLy4uL2NvbnRleHQvdHVubmVsc1wiO1xuaW1wb3J0IHsgV2VsY29tZVNjcmVlbkhlbHBBcnJvdywgV2VsY29tZVNjcmVlbk1lbnVBcnJvdywgV2VsY29tZVNjcmVlblRvcFRvb2xiYXJBcnJvdyB9IGZyb20gXCIuLi9pY29uc1wiO1xuXG5jb25zdCBNZW51SGludCA9ICh7XG4gIGNoaWxkcmVuXG59KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBXZWxjb21lU2NyZWVuTWVudUhpbnRUdW5uZWxcbiAgfSA9IHVzZVR1bm5lbHMoKTtcbiAgcmV0dXJuIF9qc3goV2VsY29tZVNjcmVlbk1lbnVIaW50VHVubmVsLkluLCB7XG4gICAgY2hpbGRyZW46IF9qc3hzKFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oe1xuICAgICAgY2xhc3NOYW1lOiBcInZpcmdpbCB3ZWxjb21lLXNjcmVlbi1kZWNvciB3ZWxjb21lLXNjcmVlbi1kZWNvci1oaW50IHdlbGNvbWUtc2NyZWVuLWRlY29yLWhpbnQtLW1lbnVcIlxuICAgIH0sIHtcbiAgICAgIGNoaWxkcmVuOiBbV2VsY29tZVNjcmVlbk1lbnVBcnJvdywgX2pzeChcImRpdlwiLCBPYmplY3QuYXNzaWduKHtcbiAgICAgICAgY2xhc3NOYW1lOiBcIndlbGNvbWUtc2NyZWVuLWRlY29yLWhpbnRfX2xhYmVsXCJcbiAgICAgIH0sIHtcbiAgICAgICAgY2hpbGRyZW46IGNoaWxkcmVuIHx8IHQoXCJ3ZWxjb21lU2NyZWVuLmRlZmF1bHRzLm1lbnVIaW50XCIpXG4gICAgICB9KSldXG4gICAgfSkpXG4gIH0pO1xufTtcblxuTWVudUhpbnQuZGlzcGxheU5hbWUgPSBcIk1lbnVIaW50XCI7XG5cbmNvbnN0IFRvb2xiYXJIaW50ID0gKHtcbiAgY2hpbGRyZW5cbn0pID0+IHtcbiAgY29uc3Qge1xuICAgIFdlbGNvbWVTY3JlZW5Ub29sYmFySGludFR1bm5lbFxuICB9ID0gdXNlVHVubmVscygpO1xuICByZXR1cm4gX2pzeChXZWxjb21lU2NyZWVuVG9vbGJhckhpbnRUdW5uZWwuSW4sIHtcbiAgICBjaGlsZHJlbjogX2pzeHMoXCJkaXZcIiwgT2JqZWN0LmFzc2lnbih7XG4gICAgICBjbGFzc05hbWU6IFwidmlyZ2lsIHdlbGNvbWUtc2NyZWVuLWRlY29yIHdlbGNvbWUtc2NyZWVuLWRlY29yLWhpbnQgd2VsY29tZS1zY3JlZW4tZGVjb3ItaGludC0tdG9vbGJhclwiXG4gICAgfSwge1xuICAgICAgY2hpbGRyZW46IFtfanN4KFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oe1xuICAgICAgICBjbGFzc05hbWU6IFwid2VsY29tZS1zY3JlZW4tZGVjb3ItaGludF9fbGFiZWxcIlxuICAgICAgfSwge1xuICAgICAgICBjaGlsZHJlbjogY2hpbGRyZW4gfHwgdChcIndlbGNvbWVTY3JlZW4uZGVmYXVsdHMudG9vbGJhckhpbnRcIilcbiAgICAgIH0pKSwgV2VsY29tZVNjcmVlblRvcFRvb2xiYXJBcnJvd11cbiAgICB9KSlcbiAgfSk7XG59O1xuXG5Ub29sYmFySGludC5kaXNwbGF5TmFtZSA9IFwiVG9vbGJhckhpbnRcIjtcblxuY29uc3QgSGVscEhpbnQgPSAoe1xuICBjaGlsZHJlblxufSkgPT4ge1xuICBjb25zdCB7XG4gICAgV2VsY29tZVNjcmVlbkhlbHBIaW50VHVubmVsXG4gIH0gPSB1c2VUdW5uZWxzKCk7XG4gIHJldHVybiBfanN4KFdlbGNvbWVTY3JlZW5IZWxwSGludFR1bm5lbC5Jbiwge1xuICAgIGNoaWxkcmVuOiBfanN4cyhcImRpdlwiLCBPYmplY3QuYXNzaWduKHtcbiAgICAgIGNsYXNzTmFtZTogXCJ2aXJnaWwgd2VsY29tZS1zY3JlZW4tZGVjb3Igd2VsY29tZS1zY3JlZW4tZGVjb3ItaGludCB3ZWxjb21lLXNjcmVlbi1kZWNvci1oaW50LS1oZWxwXCJcbiAgICB9LCB7XG4gICAgICBjaGlsZHJlbjogW19qc3goXCJkaXZcIiwge1xuICAgICAgICBjaGlsZHJlbjogY2hpbGRyZW4gfHwgdChcIndlbGNvbWVTY3JlZW4uZGVmYXVsdHMuaGVscEhpbnRcIilcbiAgICAgIH0pLCBXZWxjb21lU2NyZWVuSGVscEFycm93XVxuICAgIH0pKVxuICB9KTtcbn07XG5cbkhlbHBIaW50LmRpc3BsYXlOYW1lID0gXCJIZWxwSGludFwiO1xuZXhwb3J0IHsgSGVscEhpbnQsIE1lbnVIaW50LCBUb29sYmFySGludCB9OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/welcome-screen/WelcomeScreen.Hints.tsx\n');
              }
            ),
            /***/
            "../../components/welcome-screen/WelcomeScreen.tsx": (
              /*!*********************************************************!*\
                !*** ../../components/welcome-screen/WelcomeScreen.tsx ***!
                \*********************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var _WelcomeScreen_Center__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./WelcomeScreen.Center */ "../../components/welcome-screen/WelcomeScreen.Center.tsx");\n/* harmony import */ var _WelcomeScreen_Hints__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./WelcomeScreen.Hints */ "../../components/welcome-screen/WelcomeScreen.Hints.tsx");\n/* harmony import */ var _WelcomeScreen_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./WelcomeScreen.scss */ "../../components/welcome-screen/WelcomeScreen.scss");\n\n\n\n\n\nconst WelcomeScreen = props => {\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n    children: props.children || (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n      children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_WelcomeScreen_Center__WEBPACK_IMPORTED_MODULE_1__.Center, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_WelcomeScreen_Hints__WEBPACK_IMPORTED_MODULE_2__.MenuHint, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_WelcomeScreen_Hints__WEBPACK_IMPORTED_MODULE_2__.ToolbarHint, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_WelcomeScreen_Hints__WEBPACK_IMPORTED_MODULE_2__.HelpHint, {})]\n    })\n  });\n};\n\nWelcomeScreen.displayName = "WelcomeScreen";\nWelcomeScreen.Center = _WelcomeScreen_Center__WEBPACK_IMPORTED_MODULE_1__.Center;\nWelcomeScreen.Hints = {\n  MenuHint: _WelcomeScreen_Hints__WEBPACK_IMPORTED_MODULE_2__.MenuHint,\n  ToolbarHint: _WelcomeScreen_Hints__WEBPACK_IMPORTED_MODULE_2__.ToolbarHint,\n  HelpHint: _WelcomeScreen_Hints__WEBPACK_IMPORTED_MODULE_2__.HelpHint\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (WelcomeScreen);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy93ZWxjb21lLXNjcmVlbi9XZWxjb21lU2NyZWVuLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFzRjtBQUN0QztBQUN3QjtBQUMxQzs7QUFFOUI7QUFDQSxTQUFTLHNEQUFJLENBQUMsdURBQVM7QUFDdkIsZ0NBQWdDLHVEQUFLLENBQUMsdURBQVM7QUFDL0MsaUJBQWlCLHNEQUFJLENBQUMseURBQU0sSUFBSSxHQUFHLHNEQUFJLENBQUMsMERBQVEsSUFBSSxHQUFHLHNEQUFJLENBQUMsNkRBQVcsSUFBSSxHQUFHLHNEQUFJLENBQUMsMERBQVEsSUFBSTtBQUMvRixLQUFLO0FBQ0wsR0FBRztBQUNIOztBQUVBO0FBQ0EsdUJBQXVCLHlEQUFNO0FBQzdCO0FBQ0EsVUFBVTtBQUNWLGFBQWE7QUFDYixVQUFVO0FBQ1Y7QUFDQSxpRUFBZSxhQUFhIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvd2VsY29tZS1zY3JlZW4vV2VsY29tZVNjcmVlbi50c3g/MTYyMSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCwgRnJhZ21lbnQgYXMgX0ZyYWdtZW50LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBDZW50ZXIgfSBmcm9tIFwiLi9XZWxjb21lU2NyZWVuLkNlbnRlclwiO1xuaW1wb3J0IHsgTWVudUhpbnQsIFRvb2xiYXJIaW50LCBIZWxwSGludCB9IGZyb20gXCIuL1dlbGNvbWVTY3JlZW4uSGludHNcIjtcbmltcG9ydCBcIi4vV2VsY29tZVNjcmVlbi5zY3NzXCI7XG5cbmNvbnN0IFdlbGNvbWVTY3JlZW4gPSBwcm9wcyA9PiB7XG4gIHJldHVybiBfanN4KF9GcmFnbWVudCwge1xuICAgIGNoaWxkcmVuOiBwcm9wcy5jaGlsZHJlbiB8fCBfanN4cyhfRnJhZ21lbnQsIHtcbiAgICAgIGNoaWxkcmVuOiBbX2pzeChDZW50ZXIsIHt9KSwgX2pzeChNZW51SGludCwge30pLCBfanN4KFRvb2xiYXJIaW50LCB7fSksIF9qc3goSGVscEhpbnQsIHt9KV1cbiAgICB9KVxuICB9KTtcbn07XG5cbldlbGNvbWVTY3JlZW4uZGlzcGxheU5hbWUgPSBcIldlbGNvbWVTY3JlZW5cIjtcbldlbGNvbWVTY3JlZW4uQ2VudGVyID0gQ2VudGVyO1xuV2VsY29tZVNjcmVlbi5IaW50cyA9IHtcbiAgTWVudUhpbnQsXG4gIFRvb2xiYXJIaW50LFxuICBIZWxwSGludFxufTtcbmV4cG9ydCBkZWZhdWx0IFdlbGNvbWVTY3JlZW47Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/welcome-screen/WelcomeScreen.tsx\n');
              }
            ),
            /***/
            "../../constants.ts": (
              /*!**************************!*\
                !*** ../../constants.ts ***!
                \**************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "ACTIVE_THRESHOLD": () => (/* binding */ ACTIVE_THRESHOLD),
/* harmony export */   "ALLOWED_PASTE_MIME_TYPES": () => (/* binding */ ALLOWED_PASTE_MIME_TYPES),
/* harmony export */   "APP_NAME": () => (/* binding */ APP_NAME),
/* harmony export */   "ARROW_LABEL_FONT_SIZE_TO_MIN_WIDTH_RATIO": () => (/* binding */ ARROW_LABEL_FONT_SIZE_TO_MIN_WIDTH_RATIO),
/* harmony export */   "ARROW_LABEL_WIDTH_FRACTION": () => (/* binding */ ARROW_LABEL_WIDTH_FRACTION),
/* harmony export */   "BOUND_TEXT_PADDING": () => (/* binding */ BOUND_TEXT_PADDING),
/* harmony export */   "CANVAS_ONLY_ACTIONS": () => (/* binding */ CANVAS_ONLY_ACTIONS),
/* harmony export */   "CLASSES": () => (/* binding */ CLASSES),
/* harmony export */   "CURSOR_TYPE": () => (/* binding */ CURSOR_TYPE),
/* harmony export */   "DEFAULT_ADAPTIVE_RADIUS": () => (/* binding */ DEFAULT_ADAPTIVE_RADIUS),
/* harmony export */   "DEFAULT_ELEMENT_PROPS": () => (/* binding */ DEFAULT_ELEMENT_PROPS),
/* harmony export */   "DEFAULT_EXPORT_PADDING": () => (/* binding */ DEFAULT_EXPORT_PADDING),
/* harmony export */   "DEFAULT_FONT_FAMILY": () => (/* binding */ DEFAULT_FONT_FAMILY),
/* harmony export */   "DEFAULT_FONT_SIZE": () => (/* binding */ DEFAULT_FONT_SIZE),
/* harmony export */   "DEFAULT_MAX_IMAGE_WIDTH_OR_HEIGHT": () => (/* binding */ DEFAULT_MAX_IMAGE_WIDTH_OR_HEIGHT),
/* harmony export */   "DEFAULT_PROPORTIONAL_RADIUS": () => (/* binding */ DEFAULT_PROPORTIONAL_RADIUS),
/* harmony export */   "DEFAULT_SIDEBAR": () => (/* binding */ DEFAULT_SIDEBAR),
/* harmony export */   "DEFAULT_TEXT_ALIGN": () => (/* binding */ DEFAULT_TEXT_ALIGN),
/* harmony export */   "DEFAULT_UI_OPTIONS": () => (/* binding */ DEFAULT_UI_OPTIONS),
/* harmony export */   "DEFAULT_VERSION": () => (/* binding */ DEFAULT_VERSION),
/* harmony export */   "DEFAULT_VERTICAL_ALIGN": () => (/* binding */ DEFAULT_VERTICAL_ALIGN),
/* harmony export */   "DRAGGING_THRESHOLD": () => (/* binding */ DRAGGING_THRESHOLD),
/* harmony export */   "ELEMENT_READY_TO_ERASE_OPACITY": () => (/* binding */ ELEMENT_READY_TO_ERASE_OPACITY),
/* harmony export */   "ELEMENT_SHIFT_TRANSLATE_AMOUNT": () => (/* binding */ ELEMENT_SHIFT_TRANSLATE_AMOUNT),
/* harmony export */   "ELEMENT_TRANSLATE_AMOUNT": () => (/* binding */ ELEMENT_TRANSLATE_AMOUNT),
/* harmony export */   "ENCRYPTION_KEY_BITS": () => (/* binding */ ENCRYPTION_KEY_BITS),
/* harmony export */   "ENV": () => (/* binding */ ENV),
/* harmony export */   "EVENT": () => (/* binding */ EVENT),
/* harmony export */   "EXPORT_DATA_TYPES": () => (/* binding */ EXPORT_DATA_TYPES),
/* harmony export */   "EXPORT_IMAGE_TYPES": () => (/* binding */ EXPORT_IMAGE_TYPES),
/* harmony export */   "EXPORT_SCALES": () => (/* binding */ EXPORT_SCALES),
/* harmony export */   "EXPORT_SOURCE": () => (/* binding */ EXPORT_SOURCE),
/* harmony export */   "FONT_FAMILY": () => (/* binding */ FONT_FAMILY),
/* harmony export */   "FRAME_STYLE": () => (/* binding */ FRAME_STYLE),
/* harmony export */   "GRID_SIZE": () => (/* binding */ GRID_SIZE),
/* harmony export */   "HYPERLINK_TOOLTIP_DELAY": () => (/* binding */ HYPERLINK_TOOLTIP_DELAY),
/* harmony export */   "IDLE_THRESHOLD": () => (/* binding */ IDLE_THRESHOLD),
/* harmony export */   "IMAGE_MIME_TYPES": () => (/* binding */ IMAGE_MIME_TYPES),
/* harmony export */   "IMAGE_RENDER_TIMEOUT": () => (/* binding */ IMAGE_RENDER_TIMEOUT),
/* harmony export */   "LIBRARY_DISABLED_TYPES": () => (/* binding */ LIBRARY_DISABLED_TYPES),
/* harmony export */   "LIBRARY_SIDEBAR_TAB": () => (/* binding */ LIBRARY_SIDEBAR_TAB),
/* harmony export */   "LIBRARY_SIDEBAR_WIDTH": () => (/* binding */ LIBRARY_SIDEBAR_WIDTH),
/* harmony export */   "LINE_CONFIRM_THRESHOLD": () => (/* binding */ LINE_CONFIRM_THRESHOLD),
/* harmony export */   "MAX_ALLOWED_FILE_BYTES": () => (/* binding */ MAX_ALLOWED_FILE_BYTES),
/* harmony export */   "MAX_DECIMALS_FOR_SVG_EXPORT": () => (/* binding */ MAX_DECIMALS_FOR_SVG_EXPORT),
/* harmony export */   "MIME_TYPES": () => (/* binding */ MIME_TYPES),
/* harmony export */   "MIN_FONT_SIZE": () => (/* binding */ MIN_FONT_SIZE),
/* harmony export */   "MIN_ZOOM": () => (/* binding */ MIN_ZOOM),
/* harmony export */   "MQ_MAX_HEIGHT_LANDSCAPE": () => (/* binding */ MQ_MAX_HEIGHT_LANDSCAPE),
/* harmony export */   "MQ_MAX_WIDTH_LANDSCAPE": () => (/* binding */ MQ_MAX_WIDTH_LANDSCAPE),
/* harmony export */   "MQ_MAX_WIDTH_PORTRAIT": () => (/* binding */ MQ_MAX_WIDTH_PORTRAIT),
/* harmony export */   "MQ_RIGHT_SIDEBAR_MIN_WIDTH": () => (/* binding */ MQ_RIGHT_SIDEBAR_MIN_WIDTH),
/* harmony export */   "POINTER_BUTTON": () => (/* binding */ POINTER_BUTTON),
/* harmony export */   "POINTER_EVENTS": () => (/* binding */ POINTER_EVENTS),
/* harmony export */   "PRECEDING_ELEMENT_KEY": () => (/* binding */ PRECEDING_ELEMENT_KEY),
/* harmony export */   "ROUGHNESS": () => (/* binding */ ROUGHNESS),
/* harmony export */   "ROUNDNESS": () => (/* binding */ ROUNDNESS),
/* harmony export */   "SCROLL_TIMEOUT": () => (/* binding */ SCROLL_TIMEOUT),
/* harmony export */   "SHIFT_LOCKING_ANGLE": () => (/* binding */ SHIFT_LOCKING_ANGLE),
/* harmony export */   "STROKE_WIDTH": () => (/* binding */ STROKE_WIDTH),
/* harmony export */   "SVG_NS": () => (/* binding */ SVG_NS),
/* harmony export */   "TAP_TWICE_TIMEOUT": () => (/* binding */ TAP_TWICE_TIMEOUT),
/* harmony export */   "TEXT_ALIGN": () => (/* binding */ TEXT_ALIGN),
/* harmony export */   "TEXT_TO_CENTER_SNAP_THRESHOLD": () => (/* binding */ TEXT_TO_CENTER_SNAP_THRESHOLD),
/* harmony export */   "THEME": () => (/* binding */ THEME),
/* harmony export */   "THEME_FILTER": () => (/* binding */ THEME_FILTER),
/* harmony export */   "TITLE_TIMEOUT": () => (/* binding */ TITLE_TIMEOUT),
/* harmony export */   "TOUCH_CTX_MENU_TIMEOUT": () => (/* binding */ TOUCH_CTX_MENU_TIMEOUT),
/* harmony export */   "URL_HASH_KEYS": () => (/* binding */ URL_HASH_KEYS),
/* harmony export */   "URL_QUERY_KEYS": () => (/* binding */ URL_QUERY_KEYS),
/* harmony export */   "VERSIONS": () => (/* binding */ VERSIONS),
/* harmony export */   "VERSION_TIMEOUT": () => (/* binding */ VERSION_TIMEOUT),
/* harmony export */   "VERTICAL_ALIGN": () => (/* binding */ VERTICAL_ALIGN),
/* harmony export */   "WINDOWS_EMOJI_FALLBACK_FONT": () => (/* binding */ WINDOWS_EMOJI_FALLBACK_FONT),
/* harmony export */   "YOUTUBE_STATES": () => (/* binding */ YOUTUBE_STATES),
/* harmony export */   "ZOOM_STEP": () => (/* binding */ ZOOM_STEP),
/* harmony export */   "isAndroid": () => (/* binding */ isAndroid),
/* harmony export */   "isBrave": () => (/* binding */ isBrave),
/* harmony export */   "isChrome": () => (/* binding */ isChrome),
/* harmony export */   "isDarwin": () => (/* binding */ isDarwin),
/* harmony export */   "isFirefox": () => (/* binding */ isFirefox),
/* harmony export */   "isSafari": () => (/* binding */ isSafari),
/* harmony export */   "isWindows": () => (/* binding */ isWindows)
/* harmony export */ });
/* harmony import */ var _css_variables_module_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./css/variables.module.scss */ "../../css/variables.module.scss");
/* harmony import */ var _colors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./colors */ "../../colors.ts");


const isDarwin = /Mac|iPod|iPhone|iPad/.test(navigator.platform);
const isWindows = /^Win/.test(navigator.platform);
const isAndroid = /\\b(android)\\b/i.test(navigator.userAgent);
const isFirefox = "netscape" in window && navigator.userAgent.indexOf("rv:") > 1 && navigator.userAgent.indexOf("Gecko") > 1;
const isChrome = navigator.userAgent.indexOf("Chrome") !== -1;
const isSafari = !isChrome && navigator.userAgent.indexOf("Safari") !== -1; // keeping function so it can be mocked in test

const isBrave = () => {
  var _a, _b;

  return ((_b = (_a = navigator.brave) === null || _a === void 0 ? void 0 : _a.isBrave) === null || _b === void 0 ? void 0 : _b.name) === "isBrave";
};
const APP_NAME = "Excalidraw";
const DRAGGING_THRESHOLD = 10; // px

const LINE_CONFIRM_THRESHOLD = 8; // px

const ELEMENT_SHIFT_TRANSLATE_AMOUNT = 5;
const ELEMENT_TRANSLATE_AMOUNT = 1;
const TEXT_TO_CENTER_SNAP_THRESHOLD = 30;
const SHIFT_LOCKING_ANGLE = Math.PI / 12;
const CURSOR_TYPE = {
  TEXT: "text",
  CROSSHAIR: "crosshair",
  GRABBING: "grabbing",
  GRAB: "grab",
  POINTER: "pointer",
  MOVE: "move",
  AUTO: ""
};
const POINTER_BUTTON = {
  MAIN: 0,
  WHEEL: 1,
  SECONDARY: 2,
  TOUCH: -1
};
const POINTER_EVENTS = {
  enabled: "all",
  disabled: "none",
  // asserted as any so it can be freely assigned to React Element
  // "pointerEnvets" CSS prop
  inheritFromUI: "var(--ui-pointerEvents)"
};
var EVENT;

(function (EVENT) {
  EVENT["COPY"] = "copy";
  EVENT["PASTE"] = "paste";
  EVENT["CUT"] = "cut";
  EVENT["KEYDOWN"] = "keydown";
  EVENT["KEYUP"] = "keyup";
  EVENT["MOUSE_MOVE"] = "mousemove";
  EVENT["RESIZE"] = "resize";
  EVENT["UNLOAD"] = "unload";
  EVENT["FOCUS"] = "focus";
  EVENT["BLUR"] = "blur";
  EVENT["DRAG_OVER"] = "dragover";
  EVENT["DROP"] = "drop";
  EVENT["GESTURE_END"] = "gestureend";
  EVENT["BEFORE_UNLOAD"] = "beforeunload";
  EVENT["GESTURE_START"] = "gesturestart";
  EVENT["GESTURE_CHANGE"] = "gesturechange";
  EVENT["POINTER_MOVE"] = "pointermove";
  EVENT["POINTER_DOWN"] = "pointerdown";
  EVENT["POINTER_UP"] = "pointerup";
  EVENT["STATE_CHANGE"] = "statechange";
  EVENT["WHEEL"] = "wheel";
  EVENT["TOUCH_START"] = "touchstart";
  EVENT["TOUCH_END"] = "touchend";
  EVENT["HASHCHANGE"] = "hashchange";
  EVENT["VISIBILITY_CHANGE"] = "visibilitychange";
  EVENT["SCROLL"] = "scroll"; // custom events

  EVENT["EXCALIDRAW_LINK"] = "excalidraw-link";
  EVENT["MENU_ITEM_SELECT"] = "menu.itemSelect";
  EVENT["MESSAGE"] = "message";
})(EVENT || (EVENT = {}));

const YOUTUBE_STATES = {
  UNSTARTED: -1,
  ENDED: 0,
  PLAYING: 1,
  PAUSED: 2,
  BUFFERING: 3,
  CUED: 5
};
const ENV = {
  TEST: "test",
  DEVELOPMENT: "development"
};
const CLASSES = {
  SHAPE_ACTIONS_MENU: "App-menu__left"
}; // 1-based in case we ever do \`if(element.fontFamily)\`

const FONT_FAMILY = {
  Virgil: 1,
  Helvetica: 2,
  Cascadia: 3,
  Assistant: 4
};
const THEME = {
  LIGHT: "light",
  DARK: "dark"
};
const FRAME_STYLE = {
  strokeColor: "#bbb",
  strokeWidth: 2,
  strokeStyle: "solid",
  fillStyle: "solid",
  roughness: 0,
  roundness: null,
  backgroundColor: "transparent",
  radius: 8,
  nameOffsetY: 3,
  nameColorLightTheme: "#999999",
  nameColorDarkTheme: "#7a7a7a",
  nameFontSize: 14,
  nameLineHeight: 1.25
};
const WINDOWS_EMOJI_FALLBACK_FONT = "Segoe UI Emoji";
const MIN_FONT_SIZE = 1;
const DEFAULT_FONT_SIZE = 20;
const DEFAULT_FONT_FAMILY = FONT_FAMILY.Virgil;
const DEFAULT_TEXT_ALIGN = "left";
const DEFAULT_VERTICAL_ALIGN = "top";
const DEFAULT_VERSION = "{version}";
const CANVAS_ONLY_ACTIONS = ["selectAll"];
const GRID_SIZE = 20; // TODO make it configurable?

const IMAGE_MIME_TYPES = {
  svg: "image/svg+xml",
  png: "image/png",
  jpg: "image/jpeg",
  gif: "image/gif",
  webp: "image/webp",
  bmp: "image/bmp",
  ico: "image/x-icon",
  avif: "image/avif",
  jfif: "image/jfif"
};
const ALLOWED_PASTE_MIME_TYPES = ["text/plain", "text/html"];
const MIME_TYPES = Object.assign({
  json: "application/json",
  // excalidraw data
  excalidraw: "application/vnd.excalidraw+json",
  excalidrawlib: "application/vnd.excalidrawlib+json",
  // image-encoded excalidraw data
  "excalidraw.svg": "image/svg+xml",
  "excalidraw.png": "image/png",
  // binary
  binary: "application/octet-stream"
}, IMAGE_MIME_TYPES);
const EXPORT_IMAGE_TYPES = {
  png: "png",
  svg: "svg",
  clipboard: "clipboard"
};
const EXPORT_DATA_TYPES = {
  excalidraw: "excalidraw",
  excalidrawClipboard: "excalidraw/clipboard",
  excalidrawLibrary: "excalidrawlib",
  excalidrawClipboardWithAPI: "excalidraw-api/clipboard"
};
const EXPORT_SOURCE = window.EXCALIDRAW_EXPORT_SOURCE || window.location.origin; // time in milliseconds

const IMAGE_RENDER_TIMEOUT = 500;
const TAP_TWICE_TIMEOUT = 300;
const TOUCH_CTX_MENU_TIMEOUT = 500;
const TITLE_TIMEOUT = 10000;
const VERSION_TIMEOUT = 30000;
const SCROLL_TIMEOUT = 100;
const ZOOM_STEP = 0.1;
const MIN_ZOOM = 0.1;
const HYPERLINK_TOOLTIP_DELAY = 300; // Report a user inactive after IDLE_THRESHOLD milliseconds

const IDLE_THRESHOLD = 60000; // Report a user active each ACTIVE_THRESHOLD milliseconds

const ACTIVE_THRESHOLD = 3000;
const THEME_FILTER = _css_variables_module_scss__WEBPACK_IMPORTED_MODULE_0__["default"].themeFilter;
const URL_QUERY_KEYS = {
  addLibrary: "addLibrary"
};
const URL_HASH_KEYS = {
  addLibrary: "addLibrary"
};
const DEFAULT_UI_OPTIONS = {
  canvasActions: {
    changeViewBackgroundColor: true,
    clearCanvas: true,
    export: {
      saveFileToDisk: true
    },
    loadScene: true,
    saveToActiveFile: true,
    toggleTheme: null,
    saveAsImage: true
  },
  tools: {
    image: true
  }
}; // breakpoints
// -----------------------------------------------------------------------------
// md screen

const MQ_MAX_WIDTH_PORTRAIT = 730;
const MQ_MAX_WIDTH_LANDSCAPE = 1000;
const MQ_MAX_HEIGHT_LANDSCAPE = 500; // sidebar

const MQ_RIGHT_SIDEBAR_MIN_WIDTH = 1229; // -----------------------------------------------------------------------------

const LIBRARY_SIDEBAR_WIDTH = parseInt(_css_variables_module_scss__WEBPACK_IMPORTED_MODULE_0__["default"].rightSidebarWidth);
const MAX_DECIMALS_FOR_SVG_EXPORT = 2;
const EXPORT_SCALES = [1, 2, 3];
const DEFAULT_EXPORT_PADDING = 10; // px

const DEFAULT_MAX_IMAGE_WIDTH_OR_HEIGHT = 1440;
const MAX_ALLOWED_FILE_BYTES = 2 * 1024 * 1024;
const SVG_NS = "http://www.w3.org/2000/svg";
const ENCRYPTION_KEY_BITS = 128;
const VERSIONS = {
  excalidraw: 2,
  excalidrawLibrary: 2
};
const BOUND_TEXT_PADDING = 5;
const ARROW_LABEL_WIDTH_FRACTION = 0.7;
const ARROW_LABEL_FONT_SIZE_TO_MIN_WIDTH_RATIO = 11;
const VERTICAL_ALIGN = {
  TOP: "top",
  MIDDLE: "middle",
  BOTTOM: "bottom"
};
const TEXT_ALIGN = {
  LEFT: "left",
  CENTER: "center",
  RIGHT: "right"
};
const ELEMENT_READY_TO_ERASE_OPACITY = 20; // Radius represented as 25% of element's largest side (width/height).
// Used for LEGACY and PROPORTIONAL_RADIUS algorithms, or when the element is
// below the cutoff size.

const DEFAULT_PROPORTIONAL_RADIUS = 0.25; // Fixed radius for the ADAPTIVE_RADIUS algorithm. In pixels.

const DEFAULT_ADAPTIVE_RADIUS = 32; // roundness type (algorithm)

const ROUNDNESS = {
  // Used for legacy rounding (rectangles), which currently works the same
  // as PROPORTIONAL_RADIUS, but we need to differentiate for UI purposes and
  // forwards-compat.
  LEGACY: 1,
  // Used for linear elements & diamonds
  PROPORTIONAL_RADIUS: 2,
  // Current default algorithm for rectangles, using fixed pixel radius.
  // It's working similarly to a regular border-radius, but attemps to make
  // radius visually similar across differnt element sizes, especially
  // very large and very small elements.
  //
  // NOTE right now we don't allow configuration and use a constant radius
  // (see DEFAULT_ADAPTIVE_RADIUS constant)
  ADAPTIVE_RADIUS: 3
};
/** key containt id of precedeing elemnt id we use in reconciliation during
 * collaboration */

const PRECEDING_ELEMENT_KEY = "__precedingElement__";
const ROUGHNESS = {
  architect: 0,
  artist: 1,
  cartoonist: 2
};
const STROKE_WIDTH = {
  thin: 1,
  bold: 2,
  extraBold: 4
};
const DEFAULT_ELEMENT_PROPS = {
  strokeColor: _colors__WEBPACK_IMPORTED_MODULE_1__.COLOR_PALETTE.black,
  backgroundColor: _colors__WEBPACK_IMPORTED_MODULE_1__.COLOR_PALETTE.transparent,
  fillStyle: "solid",
  strokeWidth: 2,
  strokeStyle: "solid",
  roughness: ROUGHNESS.artist,
  opacity: 100,
  locked: false
};
const LIBRARY_SIDEBAR_TAB = "library";
const DEFAULT_SIDEBAR = {
  name: "default",
  defaultTab: LIBRARY_SIDEBAR_TAB
};
const LIBRARY_DISABLED_TYPES = new Set(["embeddable", "image"]);//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 15316 characters]
//# sourceURL=webpack-internal:///../../constants.ts
`);
              }
            ),
            /***/
            "../../context/tunnels.ts": (
              /*!********************************!*\
                !*** ../../context/tunnels.ts ***!
                \********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "TunnelsContext": () => (/* binding */ TunnelsContext),\n/* harmony export */   "useInitializeTunnels": () => (/* binding */ useInitializeTunnels),\n/* harmony export */   "useTunnels": () => (/* binding */ useTunnels)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var tunnel_rat__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! tunnel-rat */ "../../../node_modules/tunnel-rat/dist/index.js");\n\n\nconst TunnelsContext = react__WEBPACK_IMPORTED_MODULE_0___default().createContext(null);\nconst useTunnels = () => react__WEBPACK_IMPORTED_MODULE_0___default().useContext(TunnelsContext);\nconst useInitializeTunnels = () => {\n  return react__WEBPACK_IMPORTED_MODULE_0___default().useMemo(() => {\n    return {\n      MainMenuTunnel: (0,tunnel_rat__WEBPACK_IMPORTED_MODULE_1__["default"])(),\n      WelcomeScreenMenuHintTunnel: (0,tunnel_rat__WEBPACK_IMPORTED_MODULE_1__["default"])(),\n      WelcomeScreenToolbarHintTunnel: (0,tunnel_rat__WEBPACK_IMPORTED_MODULE_1__["default"])(),\n      WelcomeScreenHelpHintTunnel: (0,tunnel_rat__WEBPACK_IMPORTED_MODULE_1__["default"])(),\n      WelcomeScreenCenterTunnel: (0,tunnel_rat__WEBPACK_IMPORTED_MODULE_1__["default"])(),\n      FooterCenterTunnel: (0,tunnel_rat__WEBPACK_IMPORTED_MODULE_1__["default"])(),\n      DefaultSidebarTriggerTunnel: (0,tunnel_rat__WEBPACK_IMPORTED_MODULE_1__["default"])(),\n      DefaultSidebarTabTriggersTunnel: (0,tunnel_rat__WEBPACK_IMPORTED_MODULE_1__["default"])(),\n      OverwriteConfirmDialogTunnel: (0,tunnel_rat__WEBPACK_IMPORTED_MODULE_1__["default"])(),\n      jotaiScope: Symbol()\n    };\n  }, []);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29udGV4dC90dW5uZWxzLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUEwQjtBQUNNO0FBQ3pCLHVCQUF1QiwwREFBbUI7QUFDMUMseUJBQXlCLHVEQUFnQjtBQUN6QztBQUNQLFNBQVMsb0RBQWE7QUFDdEI7QUFDQSxzQkFBc0Isc0RBQU07QUFDNUIsbUNBQW1DLHNEQUFNO0FBQ3pDLHNDQUFzQyxzREFBTTtBQUM1QyxtQ0FBbUMsc0RBQU07QUFDekMsaUNBQWlDLHNEQUFNO0FBQ3ZDLDBCQUEwQixzREFBTTtBQUNoQyxtQ0FBbUMsc0RBQU07QUFDekMsdUNBQXVDLHNEQUFNO0FBQzdDLG9DQUFvQyxzREFBTTtBQUMxQztBQUNBO0FBQ0EsR0FBRztBQUNIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbnRleHQvdHVubmVscy50cz82ZmFkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB0dW5uZWwgZnJvbSBcInR1bm5lbC1yYXRcIjtcbmV4cG9ydCBjb25zdCBUdW5uZWxzQ29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQobnVsbCk7XG5leHBvcnQgY29uc3QgdXNlVHVubmVscyA9ICgpID0+IFJlYWN0LnVzZUNvbnRleHQoVHVubmVsc0NvbnRleHQpO1xuZXhwb3J0IGNvbnN0IHVzZUluaXRpYWxpemVUdW5uZWxzID0gKCkgPT4ge1xuICByZXR1cm4gUmVhY3QudXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIE1haW5NZW51VHVubmVsOiB0dW5uZWwoKSxcbiAgICAgIFdlbGNvbWVTY3JlZW5NZW51SGludFR1bm5lbDogdHVubmVsKCksXG4gICAgICBXZWxjb21lU2NyZWVuVG9vbGJhckhpbnRUdW5uZWw6IHR1bm5lbCgpLFxuICAgICAgV2VsY29tZVNjcmVlbkhlbHBIaW50VHVubmVsOiB0dW5uZWwoKSxcbiAgICAgIFdlbGNvbWVTY3JlZW5DZW50ZXJUdW5uZWw6IHR1bm5lbCgpLFxuICAgICAgRm9vdGVyQ2VudGVyVHVubmVsOiB0dW5uZWwoKSxcbiAgICAgIERlZmF1bHRTaWRlYmFyVHJpZ2dlclR1bm5lbDogdHVubmVsKCksXG4gICAgICBEZWZhdWx0U2lkZWJhclRhYlRyaWdnZXJzVHVubmVsOiB0dW5uZWwoKSxcbiAgICAgIE92ZXJ3cml0ZUNvbmZpcm1EaWFsb2dUdW5uZWw6IHR1bm5lbCgpLFxuICAgICAgam90YWlTY29wZTogU3ltYm9sKClcbiAgICB9O1xuICB9LCBbXSk7XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../context/tunnels.ts\n');
              }
            ),
            /***/
            "../../context/ui-appState.ts": (
              /*!************************************!*\
                !*** ../../context/ui-appState.ts ***!
                \************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "UIAppStateContext": () => (/* binding */ UIAppStateContext),\n/* harmony export */   "useUIAppState": () => (/* binding */ useUIAppState)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n\nconst UIAppStateContext = react__WEBPACK_IMPORTED_MODULE_0___default().createContext(null);\nconst useUIAppState = () => react__WEBPACK_IMPORTED_MODULE_0___default().useContext(UIAppStateContext);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29udGV4dC91aS1hcHBTdGF0ZS50cy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQTBCO0FBQ25CLDBCQUEwQiwwREFBbUI7QUFDN0MsNEJBQTRCLHVEQUFnQiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb250ZXh0L3VpLWFwcFN0YXRlLnRzPzBiODEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuZXhwb3J0IGNvbnN0IFVJQXBwU3RhdGVDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dChudWxsKTtcbmV4cG9ydCBjb25zdCB1c2VVSUFwcFN0YXRlID0gKCkgPT4gUmVhY3QudXNlQ29udGV4dChVSUFwcFN0YXRlQ29udGV4dCk7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../context/ui-appState.ts\n');
              }
            ),
            /***/
            "../../cursor.ts": (
              /*!***********************!*\
                !*** ../../cursor.ts ***!
                \***********************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "resetCursor": () => (/* binding */ resetCursor),\n/* harmony export */   "setCursor": () => (/* binding */ setCursor),\n/* harmony export */   "setCursorForShape": () => (/* binding */ setCursorForShape),\n/* harmony export */   "setEraserCursor": () => (/* binding */ setEraserCursor)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constants */ "../../constants.ts");\n/* harmony import */ var open_color__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! open-color */ "../../../node_modules/open-color/open-color.json");\n/* harmony import */ var _appState__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./appState */ "../../appState.ts");\n\n\n\nconst laserPointerCursorSVG_tag = `<svg viewBox="0 0 24 24" stroke-width="1" width="28" height="28" xmlns="http://www.w3.org/2000/svg">`;\nconst laserPointerCursorBackgroundSVG = `<path d="M6.164 11.755a5.314 5.314 0 0 1-4.932-5.298 5.314 5.314 0 0 1 5.311-5.311 5.314 5.314 0 0 1 5.307 5.113l8.773 8.773a3.322 3.322 0 0 1 0 4.696l-.895.895a3.322 3.322 0 0 1-4.696 0l-8.868-8.868Z" style="fill:#fff"/>`;\nconst laserPointerCursorIconSVG = `<path stroke="#1b1b1f" fill="#fff" d="m7.868 11.113 7.773 7.774a2.359 2.359 0 0 0 1.667.691 2.368 2.368 0 0 0 2.357-2.358c0-.625-.248-1.225-.69-1.667L11.201 7.78 9.558 9.469l-1.69 1.643v.001Zm10.273 3.606-3.333 3.333m-3.25-6.583 2 2m-7-7 3 3M3.664 3.625l1 1M2.529 6.922l1.407-.144m5.735-2.932-1.118.866M4.285 9.823l.758-1.194m1.863-6.207-.13 1.408"/>`;\nconst laserPointerCursorDataURL_lightMode = `data:${_constants__WEBPACK_IMPORTED_MODULE_0__.MIME_TYPES.svg},${encodeURIComponent(`${laserPointerCursorSVG_tag}${laserPointerCursorIconSVG}</svg>`)}`;\nconst laserPointerCursorDataURL_darkMode = `data:${_constants__WEBPACK_IMPORTED_MODULE_0__.MIME_TYPES.svg},${encodeURIComponent(`${laserPointerCursorSVG_tag}${laserPointerCursorBackgroundSVG}${laserPointerCursorIconSVG}</svg>`)}`;\nconst resetCursor = interactiveCanvas => {\n  if (interactiveCanvas) {\n    interactiveCanvas.style.cursor = "";\n  }\n};\nconst setCursor = (interactiveCanvas, cursor) => {\n  if (interactiveCanvas) {\n    interactiveCanvas.style.cursor = cursor;\n  }\n};\nlet eraserCanvasCache;\nlet previewDataURL;\nconst setEraserCursor = (interactiveCanvas, theme) => {\n  const cursorImageSizePx = 20;\n\n  const drawCanvas = () => {\n    const isDarkTheme = theme === _constants__WEBPACK_IMPORTED_MODULE_0__.THEME.DARK;\n    eraserCanvasCache = document.createElement("canvas");\n    eraserCanvasCache.theme = theme;\n    eraserCanvasCache.height = cursorImageSizePx;\n    eraserCanvasCache.width = cursorImageSizePx;\n    const context = eraserCanvasCache.getContext("2d");\n    context.lineWidth = 1;\n    context.beginPath();\n    context.arc(eraserCanvasCache.width / 2, eraserCanvasCache.height / 2, 5, 0, 2 * Math.PI);\n    context.fillStyle = isDarkTheme ? open_color__WEBPACK_IMPORTED_MODULE_1__.black : open_color__WEBPACK_IMPORTED_MODULE_1__.white;\n    context.fill();\n    context.strokeStyle = isDarkTheme ? open_color__WEBPACK_IMPORTED_MODULE_1__.white : open_color__WEBPACK_IMPORTED_MODULE_1__.black;\n    context.stroke();\n    previewDataURL = eraserCanvasCache.toDataURL(_constants__WEBPACK_IMPORTED_MODULE_0__.MIME_TYPES.svg);\n  };\n\n  if (!eraserCanvasCache || eraserCanvasCache.theme !== theme) {\n    drawCanvas();\n  }\n\n  setCursor(interactiveCanvas, `url(${previewDataURL}) ${cursorImageSizePx / 2} ${cursorImageSizePx / 2}, auto`);\n};\nconst setCursorForShape = (interactiveCanvas, appState) => {\n  if (!interactiveCanvas) {\n    return;\n  }\n\n  if (appState.activeTool.type === "selection") {\n    resetCursor(interactiveCanvas);\n  } else if ((0,_appState__WEBPACK_IMPORTED_MODULE_2__.isHandToolActive)(appState)) {\n    interactiveCanvas.style.cursor = _constants__WEBPACK_IMPORTED_MODULE_0__.CURSOR_TYPE.GRAB;\n  } else if ((0,_appState__WEBPACK_IMPORTED_MODULE_2__.isEraserActive)(appState)) {\n    setEraserCursor(interactiveCanvas, appState.theme); // do nothing if image tool is selected which suggests there\'s\n    // a image-preview set as the cursor\n    // Ignore custom type as well and let host decide\n  } else if (appState.activeTool.type === "laser") {\n    const url = appState.theme === _constants__WEBPACK_IMPORTED_MODULE_0__.THEME.LIGHT ? laserPointerCursorDataURL_lightMode : laserPointerCursorDataURL_darkMode;\n    interactiveCanvas.style.cursor = `url(${url}), auto`;\n  } else if (!["image", "custom"].includes(appState.activeTool.type)) {\n    interactiveCanvas.style.cursor = _constants__WEBPACK_IMPORTED_MODULE_0__.CURSOR_TYPE.CROSSHAIR;\n  } else if (appState.activeTool.type !== "image") {\n    interactiveCanvas.style.cursor = _constants__WEBPACK_IMPORTED_MODULE_0__.CURSOR_TYPE.AUTO;\n  }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6184 characters]\n//# sourceURL=webpack-internal:///../../cursor.ts\n');
              }
            ),
            /***/
            "../../data/blob.ts": (
              /*!**************************!*\
                !*** ../../data/blob.ts ***!
                \**************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "ImageURLToFile": () => (/* binding */ ImageURLToFile),\n/* harmony export */   "SVGStringToFile": () => (/* binding */ SVGStringToFile),\n/* harmony export */   "blobToArrayBuffer": () => (/* binding */ blobToArrayBuffer),\n/* harmony export */   "canvasToBlob": () => (/* binding */ canvasToBlob),\n/* harmony export */   "createFile": () => (/* binding */ createFile),\n/* harmony export */   "dataURLToFile": () => (/* binding */ dataURLToFile),\n/* harmony export */   "generateIdFromFile": () => (/* binding */ generateIdFromFile),\n/* harmony export */   "getDataURL": () => (/* binding */ getDataURL),\n/* harmony export */   "getFileFromEvent": () => (/* binding */ getFileFromEvent),\n/* harmony export */   "getFileHandle": () => (/* binding */ getFileHandle),\n/* harmony export */   "getFileHandleType": () => (/* binding */ getFileHandleType),\n/* harmony export */   "getMimeType": () => (/* binding */ getMimeType),\n/* harmony export */   "isImageFileHandle": () => (/* binding */ isImageFileHandle),\n/* harmony export */   "isImageFileHandleType": () => (/* binding */ isImageFileHandleType),\n/* harmony export */   "isSupportedImageFile": () => (/* binding */ isSupportedImageFile),\n/* harmony export */   "loadFromBlob": () => (/* binding */ loadFromBlob),\n/* harmony export */   "loadLibraryFromBlob": () => (/* binding */ loadLibraryFromBlob),\n/* harmony export */   "loadSceneOrLibraryFromBlob": () => (/* binding */ loadSceneOrLibraryFromBlob),\n/* harmony export */   "normalizeFile": () => (/* binding */ normalizeFile),\n/* harmony export */   "parseLibraryJSON": () => (/* binding */ parseLibraryJSON),\n/* harmony export */   "resizeImageFile": () => (/* binding */ resizeImageFile)\n/* harmony export */ });\n/* harmony import */ var nanoid__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! nanoid */ "../../../node_modules/nanoid/index.browser.js");\n/* harmony import */ var _appState__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../appState */ "../../appState.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../errors */ "../../errors.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../scene */ "../../scene/index.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _filesystem__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./filesystem */ "../../data/filesystem.ts");\n/* harmony import */ var _json__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./json */ "../../data/json.ts");\n/* harmony import */ var _restore__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./restore */ "../../data/restore.ts");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator["throw"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst parseFileContents = blob => __awaiter(void 0, void 0, void 0, function* () {\n  let contents;\n\n  if (blob.type === _constants__WEBPACK_IMPORTED_MODULE_1__.MIME_TYPES.png) {\n    try {\n      return yield (yield Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ./image */ "../../data/image.ts"))).decodePngMetadata(blob);\n    } catch (error) {\n      if (error.message === "INVALID") {\n        throw new _errors__WEBPACK_IMPORTED_MODULE_3__.ImageSceneDataError((0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("alerts.imageDoesNotContainScene"), "IMAGE_NOT_CONTAINS_SCENE_DATA");\n      } else {\n        throw new _errors__WEBPACK_IMPORTED_MODULE_3__.ImageSceneDataError((0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("alerts.cannotRestoreFromImage"));\n      }\n    }\n  } else {\n    if ("text" in Blob) {\n      contents = yield blob.text();\n    } else {\n      contents = yield new Promise(resolve => {\n        const reader = new FileReader();\n        reader.readAsText(blob, "utf8");\n\n        reader.onloadend = () => {\n          if (reader.readyState === FileReader.DONE) {\n            resolve(reader.result);\n          }\n        };\n      });\n    }\n\n    if (blob.type === _constants__WEBPACK_IMPORTED_MODULE_1__.MIME_TYPES.svg) {\n      try {\n        return yield (yield Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ./image */ "../../data/image.ts"))).decodeSvgMetadata({\n          svg: contents\n        });\n      } catch (error) {\n        if (error.message === "INVALID") {\n          throw new _errors__WEBPACK_IMPORTED_MODULE_3__.ImageSceneDataError((0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("alerts.imageDoesNotContainScene"), "IMAGE_NOT_CONTAINS_SCENE_DATA");\n        } else {\n          throw new _errors__WEBPACK_IMPORTED_MODULE_3__.ImageSceneDataError((0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("alerts.cannotRestoreFromImage"));\n        }\n      }\n    }\n  }\n\n  return contents;\n});\n\nconst getMimeType = blob => {\n  let name;\n\n  if (typeof blob === "string") {\n    name = blob;\n  } else {\n    if (blob.type) {\n      return blob.type;\n    }\n\n    name = blob.name || "";\n  }\n\n  if (/\\.(excalidraw|json)$/.test(name)) {\n    return _constants__WEBPACK_IMPORTED_MODULE_1__.MIME_TYPES.json;\n  } else if (/\\.png$/.test(name)) {\n    return _constants__WEBPACK_IMPORTED_MODULE_1__.MIME_TYPES.png;\n  } else if (/\\.jpe?g$/.test(name)) {\n    return _constants__WEBPACK_IMPORTED_MODULE_1__.MIME_TYPES.jpg;\n  } else if (/\\.svg$/.test(name)) {\n    return _constants__WEBPACK_IMPORTED_MODULE_1__.MIME_TYPES.svg;\n  }\n\n  return "";\n};\nconst getFileHandleType = handle => {\n  var _a;\n\n  if (!handle) {\n    return null;\n  }\n\n  return ((_a = handle.name.match(/\\.(json|excalidraw|png|svg)$/)) === null || _a === void 0 ? void 0 : _a[1]) || null;\n};\nconst isImageFileHandleType = type => {\n  return type === "png" || type === "svg";\n};\nconst isImageFileHandle = handle => {\n  const type = getFileHandleType(handle);\n  return type === "png" || type === "svg";\n};\nconst isSupportedImageFile = blob => {\n  const {\n    type\n  } = blob || {};\n  return !!type && Object.values(_constants__WEBPACK_IMPORTED_MODULE_1__.IMAGE_MIME_TYPES).includes(type);\n};\nconst loadSceneOrLibraryFromBlob = (blob,\n/** @see restore.localAppState */\nlocalAppState, localElements,\n/** FileSystemHandle. Defaults to `blob.handle` if defined, otherwise null. */\nfileHandle) => __awaiter(void 0, void 0, void 0, function* () {\n  const contents = yield parseFileContents(blob);\n  let data;\n\n  try {\n    try {\n      data = JSON.parse(contents);\n    } catch (error) {\n      if (isSupportedImageFile(blob)) {\n        throw new _errors__WEBPACK_IMPORTED_MODULE_3__.ImageSceneDataError((0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("alerts.imageDoesNotContainScene"), "IMAGE_NOT_CONTAINS_SCENE_DATA");\n      }\n\n      throw error;\n    }\n\n    if ((0,_json__WEBPACK_IMPORTED_MODULE_8__.isValidExcalidrawData)(data)) {\n      return {\n        type: _constants__WEBPACK_IMPORTED_MODULE_1__.MIME_TYPES.excalidraw,\n        data: (0,_restore__WEBPACK_IMPORTED_MODULE_9__.restore)({\n          elements: (0,_element__WEBPACK_IMPORTED_MODULE_2__.clearElementsForExport)(data.elements || []),\n          appState: Object.assign(Object.assign({\n            theme: localAppState === null || localAppState === void 0 ? void 0 : localAppState.theme,\n            fileHandle: fileHandle || blob.handle || null\n          }, (0,_appState__WEBPACK_IMPORTED_MODULE_0__.cleanAppStateForExport)(data.appState || {})), localAppState ? (0,_scene__WEBPACK_IMPORTED_MODULE_5__.calculateScrollCenter)(data.elements || [], localAppState) : {}),\n          files: data.files\n        }, localAppState, localElements, {\n          repairBindings: true,\n          refreshDimensions: false\n        })\n      };\n    } else if ((0,_json__WEBPACK_IMPORTED_MODULE_8__.isValidLibrary)(data)) {\n      return {\n        type: _constants__WEBPACK_IMPORTED_MODULE_1__.MIME_TYPES.excalidrawlib,\n        data\n      };\n    }\n\n    throw new Error((0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("alerts.couldNotLoadInvalidFile"));\n  } catch (error) {\n    if (error instanceof _errors__WEBPACK_IMPORTED_MODULE_3__.ImageSceneDataError) {\n      throw error;\n    }\n\n    throw new Error((0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("alerts.couldNotLoadInvalidFile"));\n  }\n});\nconst loadFromBlob = (blob,\n/** @see restore.localAppState */\nlocalAppState, localElements,\n/** FileSystemHandle. Defaults to `blob.handle` if defined, otherwise null. */\nfileHandle) => __awaiter(void 0, void 0, void 0, function* () {\n  const ret = yield loadSceneOrLibraryFromBlob(blob, localAppState, localElements, fileHandle);\n\n  if (ret.type !== _constants__WEBPACK_IMPORTED_MODULE_1__.MIME_TYPES.excalidraw) {\n    throw new Error((0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("alerts.couldNotLoadInvalidFile"));\n  }\n\n  return ret.data;\n});\nconst parseLibraryJSON = (json, defaultStatus = "unpublished") => {\n  const data = JSON.parse(json);\n\n  if (!(0,_json__WEBPACK_IMPORTED_MODULE_8__.isValidLibrary)(data)) {\n    throw new Error("Invalid library");\n  }\n\n  const libraryItems = data.libraryItems || data.library;\n  return (0,_restore__WEBPACK_IMPORTED_MODULE_9__.restoreLibraryItems)(libraryItems, defaultStatus);\n};\nconst loadLibraryFromBlob = (blob, defaultStatus = "unpublished") => __awaiter(void 0, void 0, void 0, function* () {\n  return parseLibraryJSON(yield parseFileContents(blob), defaultStatus);\n});\nconst canvasToBlob = canvas => __awaiter(void 0, void 0, void 0, function* () {\n  return new Promise((resolve, reject) => __awaiter(void 0, void 0, void 0, function* () {\n    try {\n      if ((0,_utils__WEBPACK_IMPORTED_MODULE_6__.isPromiseLike)(canvas)) {\n        canvas = yield canvas;\n      }\n\n      canvas.toBlob(blob => {\n        if (!blob) {\n          return reject(new _errors__WEBPACK_IMPORTED_MODULE_3__.CanvasError((0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("canvasError.canvasTooBig"), "CANVAS_POSSIBLY_TOO_BIG"));\n        }\n\n        resolve(blob);\n      });\n    } catch (error) {\n      reject(error);\n    }\n  }));\n});\n/** generates SHA-1 digest from supplied file (if not supported, falls back\n    to a 40-char base64 random id) */\n\nconst generateIdFromFile = file => __awaiter(void 0, void 0, void 0, function* () {\n  try {\n    const hashBuffer = yield window.crypto.subtle.digest("SHA-1", yield blobToArrayBuffer(file));\n    return (0,_utils__WEBPACK_IMPORTED_MODULE_6__.bytesToHexString)(new Uint8Array(hashBuffer));\n  } catch (error) {\n    console.error(error); // length 40 to align with the HEX length of SHA-1 (which is 160 bit)\n\n    return (0,nanoid__WEBPACK_IMPORTED_MODULE_10__.nanoid)(40);\n  }\n});\nconst getDataURL = file => __awaiter(void 0, void 0, void 0, function* () {\n  return new Promise((resolve, reject) => {\n    const reader = new FileReader();\n\n    reader.onload = () => {\n      const dataURL = reader.result;\n      resolve(dataURL);\n    };\n\n    reader.onerror = error => reject(error);\n\n    reader.readAsDataURL(file);\n  });\n});\nconst dataURLToFile = (dataURL, filename = "") => {\n  const dataIndexStart = dataURL.indexOf(",");\n  const byteString = atob(dataURL.slice(dataIndexStart + 1));\n  const mimeType = dataURL.slice(0, dataIndexStart).split(":")[1].split(";")[0];\n  const ab = new ArrayBuffer(byteString.length);\n  const ia = new Uint8Array(ab);\n\n  for (let i = 0; i < byteString.length; i++) {\n    ia[i] = byteString.charCodeAt(i);\n  }\n\n  return new File([ab], filename, {\n    type: mimeType\n  });\n};\nconst resizeImageFile = (file, opts) => __awaiter(void 0, void 0, void 0, function* () {\n  // SVG files shouldn\'t a can\'t be resized\n  if (file.type === _constants__WEBPACK_IMPORTED_MODULE_1__.MIME_TYPES.svg) {\n    return file;\n  }\n\n  const [pica, imageBlobReduce] = yield Promise.all([__webpack_require__.e(/*! import() */ "vendor").then(__webpack_require__.t.bind(__webpack_require__, /*! pica */ "../../../node_modules/pica/dist/pica.js", 23)).then(res => res.default), // a wrapper for pica for better API\n  __webpack_require__.e(/*! import() */ "vendor").then(__webpack_require__.bind(__webpack_require__, /*! image-blob-reduce */ "../../../node_modules/image-blob-reduce/dist/image-blob-reduce.esm.mjs")).then(res => res.default)]); // CRA\'s minification settings break pica in WebWorkers, so let\'s disable\n  // them for now\n  // https://github.com/nodeca/image-blob-reduce/issues/21#issuecomment-757365513\n\n  const reduce = imageBlobReduce({\n    pica: pica({\n      features: ["js", "wasm"]\n    })\n  });\n\n  if (opts.outputType) {\n    const {\n      outputType\n    } = opts;\n\n    reduce._create_blob = function (env) {\n      return this.pica.toBlob(env.out_canvas, outputType, 0.8).then(blob => {\n        env.out_blob = blob;\n        return env;\n      });\n    };\n  }\n\n  if (!isSupportedImageFile(file)) {\n    throw new Error((0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("errors.unsupportedFileType"));\n  }\n\n  return new File([yield reduce.toBlob(file, {\n    max: opts.maxWidthOrHeight\n  })], file.name, {\n    type: opts.outputType || file.type\n  });\n});\nconst SVGStringToFile = (SVGString, filename = "") => {\n  return new File([new TextEncoder().encode(SVGString)], filename, {\n    type: _constants__WEBPACK_IMPORTED_MODULE_1__.MIME_TYPES.svg\n  });\n};\nconst ImageURLToFile = (imageUrl, filename = "") => __awaiter(void 0, void 0, void 0, function* () {\n  let response;\n\n  try {\n    response = yield fetch(imageUrl);\n  } catch (error) {\n    throw new Error((0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("errors.failedToFetchImage"));\n  }\n\n  if (!response.ok) {\n    throw new Error((0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("errors.failedToFetchImage"));\n  }\n\n  const blob = yield response.blob();\n\n  if (blob.type && isSupportedImageFile(blob)) {\n    const name = filename || blob.name || "";\n    return new File([blob], name, {\n      type: blob.type\n    });\n  }\n\n  throw new Error((0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)("errors.unsupportedFileType"));\n});\nconst getFileFromEvent = event => __awaiter(void 0, void 0, void 0, function* () {\n  const file = event.dataTransfer.files.item(0);\n  const fileHandle = yield getFileHandle(event);\n  return {\n    file: file ? yield normalizeFile(file) : null,\n    fileHandle\n  };\n});\nconst getFileHandle = event => __awaiter(void 0, void 0, void 0, function* () {\n  if (_filesystem__WEBPACK_IMPORTED_MODULE_7__.nativeFileSystemSupported) {\n    try {\n      const item = event.dataTransfer.items[0];\n      const handle = (yield item.getAsFileSystemHandle()) || null;\n      return handle;\n    } catch (error) {\n      console.warn(error.name, error.message);\n      return null;\n    }\n  }\n\n  return null;\n});\n/**\n * attempts to detect if a buffer is a valid image by checking its leading bytes\n */\n\nconst getActualMimeTypeFromImage = buffer => {\n  let mimeType = null;\n  const first8Bytes = `${[...new Uint8Array(buffer).slice(0, 8)].join(" ")} `; // uint8 leading bytes\n\n  const headerBytes = {\n    // https://en.wikipedia.org/wiki/Portable_Network_Graphics#File_header\n    png: "137 80 78 71 13 10 26 10 ",\n    // https://en.wikipedia.org/wiki/JPEG#Syntax_and_structure\n    // jpg is a bit wonky. Checking the first three bytes should be enough,\n    // but may yield false positives. (https://stackoverflow.com/a/23360709/927631)\n    jpg: "255 216 255 ",\n    // https://en.wikipedia.org/wiki/GIF#Example_GIF_file\n    gif: "71 73 70 56 57 97 "\n  };\n\n  if (first8Bytes === headerBytes.png) {\n    mimeType = _constants__WEBPACK_IMPORTED_MODULE_1__.MIME_TYPES.png;\n  } else if (first8Bytes.startsWith(headerBytes.jpg)) {\n    mimeType = _constants__WEBPACK_IMPORTED_MODULE_1__.MIME_TYPES.jpg;\n  } else if (first8Bytes.startsWith(headerBytes.gif)) {\n    mimeType = _constants__WEBPACK_IMPORTED_MODULE_1__.MIME_TYPES.gif;\n  }\n\n  return mimeType;\n};\n\nconst createFile = (blob, mimeType, name) => {\n  return new File([blob], name || "", {\n    type: mimeType\n  });\n};\n/** attempts to detect correct mimeType if none is set, or if an image\n * has an incorrect extension.\n * Note: doesn\'t handle missing .excalidraw/.excalidrawlib extension  */\n\nconst normalizeFile = file => __awaiter(void 0, void 0, void 0, function* () {\n  var _a, _b;\n\n  if (!file.type) {\n    if ((_a = file === null || file === void 0 ? void 0 : file.name) === null || _a === void 0 ? void 0 : _a.endsWith(".excalidrawlib")) {\n      file = createFile(yield blobToArrayBuffer(file), _constants__WEBPACK_IMPORTED_MODULE_1__.MIME_TYPES.excalidrawlib, file.name);\n    } else if ((_b = file === null || file === void 0 ? void 0 : file.name) === null || _b === void 0 ? void 0 : _b.endsWith(".excalidraw")) {\n      file = createFile(yield blobToArrayBuffer(file), _constants__WEBPACK_IMPORTED_MODULE_1__.MIME_TYPES.excalidraw, file.name);\n    } else {\n      const buffer = yield blobToArrayBuffer(file);\n      const mimeType = getActualMimeTypeFromImage(buffer);\n\n      if (mimeType) {\n        file = createFile(buffer, mimeType, file.name);\n      }\n    } // when the file is an image, make sure the extension corresponds to the\n    // actual mimeType (this is an edge case, but happens sometime)\n\n  } else if (isSupportedImageFile(file)) {\n    const buffer = yield blobToArrayBuffer(file);\n    const mimeType = getActualMimeTypeFromImage(buffer);\n\n    if (mimeType && mimeType !== file.type) {\n      file = createFile(buffer, mimeType, file.name);\n    }\n  }\n\n  return file;\n});\nconst blobToArrayBuffer = blob => {\n  if ("arrayBuffer" in blob) {\n    return blob.arrayBuffer();\n  } // Safari\n\n\n  return new Promise((resolve, reject) => {\n    const reader = new FileReader();\n\n    reader.onload = event => {\n      var _a;\n\n      if (!((_a = event.target) === null || _a === void 0 ? void 0 : _a.result)) {\n        return reject(new Error("Couldn\'t convert blob to ArrayBuffer"));\n      }\n\n      resolve(event.target.result);\n    };\n\n    reader.readAsArrayBuffer(blob);\n  });\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 23832 characters]\n//# sourceURL=webpack-internal:///../../data/blob.ts\n');
              }
            ),
            /***/
            "../../data/encode.ts": (
              /*!****************************!*\
                !*** ../../data/encode.ts ***!
                \****************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "base64ToString": () => (/* binding */ base64ToString),\n/* harmony export */   "compressData": () => (/* binding */ compressData),\n/* harmony export */   "decode": () => (/* binding */ decode),\n/* harmony export */   "decompressData": () => (/* binding */ decompressData),\n/* harmony export */   "encode": () => (/* binding */ encode),\n/* harmony export */   "stringToBase64": () => (/* binding */ stringToBase64),\n/* harmony export */   "toByteString": () => (/* binding */ toByteString)\n/* harmony export */ });\n/* harmony import */ var pako__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! pako */ "../../../node_modules/pako/index.js");\n/* harmony import */ var pako__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(pako__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _encryption__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./encryption */ "../../data/encryption.ts");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator["throw"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n // -----------------------------------------------------------------------------\n// byte (binary) strings\n// -----------------------------------------------------------------------------\n// fast, Buffer-compatible implem\n\nconst toByteString = data => {\n  return new Promise((resolve, reject) => {\n    const blob = typeof data === "string" ? new Blob([new TextEncoder().encode(data)]) : new Blob([data instanceof Uint8Array ? data : new Uint8Array(data)]);\n    const reader = new FileReader();\n\n    reader.onload = event => {\n      if (!event.target || typeof event.target.result !== "string") {\n        return reject(new Error("couldn\'t convert to byte string"));\n      }\n\n      resolve(event.target.result);\n    };\n\n    reader.readAsBinaryString(blob);\n  });\n};\n\nconst byteStringToArrayBuffer = byteString => {\n  const buffer = new ArrayBuffer(byteString.length);\n  const bufferView = new Uint8Array(buffer);\n\n  for (let i = 0, len = byteString.length; i < len; i++) {\n    bufferView[i] = byteString.charCodeAt(i);\n  }\n\n  return buffer;\n};\n\nconst byteStringToString = byteString => {\n  return new TextDecoder("utf-8").decode(byteStringToArrayBuffer(byteString));\n}; // -----------------------------------------------------------------------------\n// base64\n// -----------------------------------------------------------------------------\n\n/**\n * @param isByteString set to true if already byte string to prevent bloat\n *  due to reencoding\n */\n\n\nconst stringToBase64 = (str, isByteString = false) => __awaiter(void 0, void 0, void 0, function* () {\n  return isByteString ? window.btoa(str) : window.btoa(yield toByteString(str));\n}); // async to align with stringToBase64\n\nconst base64ToString = (base64, isByteString = false) => __awaiter(void 0, void 0, void 0, function* () {\n  return isByteString ? window.atob(base64) : byteStringToString(window.atob(base64));\n});\n/**\n * Encodes (and potentially compresses via zlib) text to byte string\n */\n\nconst encode = ({\n  text,\n  compress\n}) => __awaiter(void 0, void 0, void 0, function* () {\n  let deflated;\n\n  if (compress !== false) {\n    try {\n      deflated = yield toByteString((0,pako__WEBPACK_IMPORTED_MODULE_0__.deflate)(text));\n    } catch (error) {\n      console.error("encode: cannot deflate", error);\n    }\n  }\n\n  return {\n    version: "1",\n    encoding: "bstring",\n    compressed: !!deflated,\n    encoded: deflated || (yield toByteString(text))\n  };\n});\nconst decode = data => __awaiter(void 0, void 0, void 0, function* () {\n  let decoded;\n\n  switch (data.encoding) {\n    case "bstring":\n      // if compressed, do not double decode the bstring\n      decoded = data.compressed ? data.encoded : yield byteStringToString(data.encoded);\n      break;\n\n    default:\n      throw new Error(`decode: unknown encoding "${data.encoding}"`);\n  }\n\n  if (data.compressed) {\n    return (0,pako__WEBPACK_IMPORTED_MODULE_0__.inflate)(new Uint8Array(byteStringToArrayBuffer(decoded)), {\n      to: "string"\n    });\n  }\n\n  return decoded;\n}); // -----------------------------------------------------------------------------\n\nconst CONCAT_BUFFERS_VERSION = 1;\n/** how many bytes we use to encode how many bytes the next chunk has.\n * Corresponds to DataView setter methods (setUint32, setUint16, etc).\n *\n * NOTE ! values must not be changed, which would be backwards incompatible !\n */\n\nconst VERSION_DATAVIEW_BYTES = 4;\nconst NEXT_CHUNK_SIZE_DATAVIEW_BYTES = 4; // -----------------------------------------------------------------------------\n\nconst DATA_VIEW_BITS_MAP = {\n  1: 8,\n  2: 16,\n  4: 32\n};\n/**\n * abstraction over DataView that serves as a typed getter/setter in case\n * you\'re using constants for the byte size and want to ensure there\'s no\n * discrepenancy in the encoding across refactors.\n *\n * DataView serves for an endian-agnostic handling of numbers in ArrayBuffers.\n */\n\nfunction dataView(buffer, bytes, offset, value) {\n  if (value != null) {\n    if (value > Math.pow(2, DATA_VIEW_BITS_MAP[bytes]) - 1) {\n      throw new Error(`attempting to set value higher than the allocated bytes (value: ${value}, bytes: ${bytes})`);\n    }\n\n    const method = `setUint${DATA_VIEW_BITS_MAP[bytes]}`;\n    new DataView(buffer.buffer)[method](offset, value);\n    return buffer;\n  }\n\n  const method = `getUint${DATA_VIEW_BITS_MAP[bytes]}`;\n  return new DataView(buffer.buffer)[method](offset);\n} // -----------------------------------------------------------------------------\n\n/**\n * Resulting concatenated buffer has this format:\n *\n * [\n *   VERSION chunk (4 bytes)\n *   LENGTH chunk 1 (4 bytes)\n *   DATA chunk 1 (up to 2^32 bits)\n *   LENGTH chunk 2 (4 bytes)\n *   DATA chunk 2 (up to 2^32 bits)\n *   ...\n * ]\n *\n * @param buffers each buffer (chunk) must be at most 2^32 bits large (~4GB)\n */\n\n\nconst concatBuffers = (...buffers) => {\n  const bufferView = new Uint8Array(VERSION_DATAVIEW_BYTES + NEXT_CHUNK_SIZE_DATAVIEW_BYTES * buffers.length + buffers.reduce((acc, buffer) => acc + buffer.byteLength, 0));\n  let cursor = 0; // as the first chunk we\'ll encode the version for backwards compatibility\n\n  dataView(bufferView, VERSION_DATAVIEW_BYTES, cursor, CONCAT_BUFFERS_VERSION);\n  cursor += VERSION_DATAVIEW_BYTES;\n\n  for (const buffer of buffers) {\n    dataView(bufferView, NEXT_CHUNK_SIZE_DATAVIEW_BYTES, cursor, buffer.byteLength);\n    cursor += NEXT_CHUNK_SIZE_DATAVIEW_BYTES;\n    bufferView.set(buffer, cursor);\n    cursor += buffer.byteLength;\n  }\n\n  return bufferView;\n};\n/** can only be used on buffers created via `concatBuffers()` */\n\n\nconst splitBuffers = concatenatedBuffer => {\n  const buffers = [];\n  let cursor = 0; // first chunk is the version\n\n  const version = dataView(concatenatedBuffer, NEXT_CHUNK_SIZE_DATAVIEW_BYTES, cursor); // If version is outside of the supported versions, throw an error.\n  // This usually means the buffer wasn\'t encoded using this API, so we\'d only\n  // waste compute.\n\n  if (version > CONCAT_BUFFERS_VERSION) {\n    throw new Error(`invalid version ${version}`);\n  }\n\n  cursor += VERSION_DATAVIEW_BYTES;\n\n  while (true) {\n    const chunkSize = dataView(concatenatedBuffer, NEXT_CHUNK_SIZE_DATAVIEW_BYTES, cursor);\n    cursor += NEXT_CHUNK_SIZE_DATAVIEW_BYTES;\n    buffers.push(concatenatedBuffer.slice(cursor, cursor + chunkSize));\n    cursor += chunkSize;\n\n    if (cursor >= concatenatedBuffer.byteLength) {\n      break;\n    }\n  }\n\n  return buffers;\n}; // helpers for (de)compressing data with JSON metadata including encryption\n// -----------------------------------------------------------------------------\n\n/** @private */\n\n\nconst _encryptAndCompress = (data, encryptionKey) => __awaiter(void 0, void 0, void 0, function* () {\n  const {\n    encryptedBuffer,\n    iv\n  } = yield (0,_encryption__WEBPACK_IMPORTED_MODULE_1__.encryptData)(encryptionKey, (0,pako__WEBPACK_IMPORTED_MODULE_0__.deflate)(data));\n  return {\n    iv,\n    buffer: new Uint8Array(encryptedBuffer)\n  };\n});\n/**\n * The returned buffer has following format:\n * `[]` refers to a buffers wrapper (see `concatBuffers`)\n *\n * [\n *   encodingMetadataBuffer,\n *   iv,\n *   [\n *      contentsMetadataBuffer\n *      contentsBuffer\n *   ]\n * ]\n */\n\n\nconst compressData = (dataBuffer, options) => __awaiter(void 0, void 0, void 0, function* () {\n  const fileInfo = {\n    version: 2,\n    compression: "pako@1",\n    encryption: "AES-GCM"\n  };\n  const encodingMetadataBuffer = new TextEncoder().encode(JSON.stringify(fileInfo));\n  const contentsMetadataBuffer = new TextEncoder().encode(JSON.stringify(options.metadata || null));\n  const {\n    iv,\n    buffer\n  } = yield _encryptAndCompress(concatBuffers(contentsMetadataBuffer, dataBuffer), options.encryptionKey);\n  return concatBuffers(encodingMetadataBuffer, iv, buffer);\n});\n/** @private */\n\nconst _decryptAndDecompress = (iv, decryptedBuffer, decryptionKey, isCompressed) => __awaiter(void 0, void 0, void 0, function* () {\n  decryptedBuffer = new Uint8Array(yield (0,_encryption__WEBPACK_IMPORTED_MODULE_1__.decryptData)(iv, decryptedBuffer, decryptionKey));\n\n  if (isCompressed) {\n    return (0,pako__WEBPACK_IMPORTED_MODULE_0__.inflate)(decryptedBuffer);\n  }\n\n  return decryptedBuffer;\n});\n\nconst decompressData = (bufferView, options) => __awaiter(void 0, void 0, void 0, function* () {\n  // first chunk is encoding metadata (ignored for now)\n  const [encodingMetadataBuffer, iv, buffer] = splitBuffers(bufferView);\n  const encodingMetadata = JSON.parse(new TextDecoder().decode(encodingMetadataBuffer));\n\n  try {\n    const [contentsMetadataBuffer, contentsBuffer] = splitBuffers(yield _decryptAndDecompress(iv, buffer, options.decryptionKey, !!encodingMetadata.compression));\n    const metadata = JSON.parse(new TextDecoder().decode(contentsMetadataBuffer));\n    return {\n      /** metadata source is always JSON so we can decode it here */\n      metadata,\n\n      /** data can be anything so the caller must decode it */\n      data: contentsBuffer\n    };\n  } catch (error) {\n    console.error(`Error during decompressing and decrypting the file.`, encodingMetadata);\n    throw error;\n  }\n}); // -----------------------------------------------------------------------------//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 15936 characters]\n//# sourceURL=webpack-internal:///../../data/encode.ts\n');
              }
            ),
            /***/
            "../../data/encryption.ts": (
              /*!********************************!*\
                !*** ../../data/encryption.ts ***!
                \********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "IV_LENGTH_BYTES": () => (/* binding */ IV_LENGTH_BYTES),\n/* harmony export */   "createIV": () => (/* binding */ createIV),\n/* harmony export */   "decryptData": () => (/* binding */ decryptData),\n/* harmony export */   "encryptData": () => (/* binding */ encryptData),\n/* harmony export */   "generateEncryptionKey": () => (/* binding */ generateEncryptionKey),\n/* harmony export */   "getCryptoKey": () => (/* binding */ getCryptoKey)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _blob__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./blob */ "../../data/blob.ts");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator["throw"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\nconst IV_LENGTH_BYTES = 12;\nconst createIV = () => {\n  const arr = new Uint8Array(IV_LENGTH_BYTES);\n  return window.crypto.getRandomValues(arr);\n};\nconst generateEncryptionKey = returnAs => __awaiter(void 0, void 0, void 0, function* () {\n  const key = yield window.crypto.subtle.generateKey({\n    name: "AES-GCM",\n    length: _constants__WEBPACK_IMPORTED_MODULE_0__.ENCRYPTION_KEY_BITS\n  }, true, // extractable\n  ["encrypt", "decrypt"]);\n  return returnAs === "cryptoKey" ? key : (yield window.crypto.subtle.exportKey("jwk", key)).k;\n});\nconst getCryptoKey = (key, usage) => window.crypto.subtle.importKey("jwk", {\n  alg: "A128GCM",\n  ext: true,\n  k: key,\n  key_ops: ["encrypt", "decrypt"],\n  kty: "oct"\n}, {\n  name: "AES-GCM",\n  length: _constants__WEBPACK_IMPORTED_MODULE_0__.ENCRYPTION_KEY_BITS\n}, false, // extractable\n[usage]);\nconst encryptData = (key, data) => __awaiter(void 0, void 0, void 0, function* () {\n  const importedKey = typeof key === "string" ? yield getCryptoKey(key, "encrypt") : key;\n  const iv = createIV();\n  const buffer = typeof data === "string" ? new TextEncoder().encode(data) : data instanceof Uint8Array ? data : data instanceof Blob ? yield (0,_blob__WEBPACK_IMPORTED_MODULE_1__.blobToArrayBuffer)(data) : data; // We use symmetric encryption. AES-GCM is the recommended algorithm and\n  // includes checks that the ciphertext has not been modified by an attacker.\n\n  const encryptedBuffer = yield window.crypto.subtle.encrypt({\n    name: "AES-GCM",\n    iv\n  }, importedKey, buffer);\n  return {\n    encryptedBuffer,\n    iv\n  };\n});\nconst decryptData = (iv, encrypted, privateKey) => __awaiter(void 0, void 0, void 0, function* () {\n  const key = yield getCryptoKey(privateKey, "decrypt");\n  return window.crypto.subtle.decrypt({\n    name: "AES-GCM",\n    iv\n  }, key, encrypted);\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4540 characters]\n//# sourceURL=webpack-internal:///../../data/encryption.ts\n');
              }
            ),
            /***/
            "../../data/filesystem.ts": (
              /*!********************************!*\
                !*** ../../data/filesystem.ts ***!
                \********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "fileOpen": () => (/* binding */ fileOpen),\n/* harmony export */   "fileSave": () => (/* binding */ fileSave),\n/* harmony export */   "nativeFileSystemSupported": () => (/* reexport safe */ browser_fs_access__WEBPACK_IMPORTED_MODULE_0__.supported)\n/* harmony export */ });\n/* harmony import */ var browser_fs_access__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! browser-fs-access */ "../../../node_modules/browser-fs-access/dist/index.mjs");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../errors */ "../../errors.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n\n\n\n\nconst INPUT_CHANGE_INTERVAL_MS = 500;\nconst fileOpen = opts => {\n  var _a, _b, _c;\n\n  const mimeTypes = (_a = opts.extensions) === null || _a === void 0 ? void 0 : _a.reduce((mimeTypes, type) => {\n    mimeTypes.push(_constants__WEBPACK_IMPORTED_MODULE_1__.MIME_TYPES[type]);\n    return mimeTypes;\n  }, []);\n  const extensions = (_b = opts.extensions) === null || _b === void 0 ? void 0 : _b.reduce((acc, ext) => {\n    if (ext === "jpg") {\n      return acc.concat(".jpg", ".jpeg");\n    }\n\n    return acc.concat(`.${ext}`);\n  }, []);\n  return (0,browser_fs_access__WEBPACK_IMPORTED_MODULE_0__.fileOpen)({\n    description: opts.description,\n    extensions,\n    mimeTypes,\n    multiple: (_c = opts.multiple) !== null && _c !== void 0 ? _c : false,\n    legacySetup: (resolve, reject, input) => {\n      const scheduleRejection = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.debounce)(reject, INPUT_CHANGE_INTERVAL_MS);\n\n      const focusHandler = () => {\n        checkForFile();\n        document.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_1__.EVENT.KEYUP, scheduleRejection);\n        document.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_1__.EVENT.POINTER_UP, scheduleRejection);\n        scheduleRejection();\n      };\n\n      const checkForFile = () => {\n        var _a; // this hack might not work when expecting multiple files\n\n\n        if ((_a = input.files) === null || _a === void 0 ? void 0 : _a.length) {\n          const ret = opts.multiple ? [...input.files] : input.files[0];\n          resolve(ret);\n        }\n      };\n\n      requestAnimationFrame(() => {\n        window.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_1__.EVENT.FOCUS, focusHandler);\n      });\n      const interval = window.setInterval(() => {\n        checkForFile();\n      }, INPUT_CHANGE_INTERVAL_MS);\n      return rejectPromise => {\n        clearInterval(interval);\n        scheduleRejection.cancel();\n        window.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_1__.EVENT.FOCUS, focusHandler);\n        document.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_1__.EVENT.KEYUP, scheduleRejection);\n        document.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_1__.EVENT.POINTER_UP, scheduleRejection);\n\n        if (rejectPromise) {\n          // so that something is shown in console if we need to debug this\n          console.warn("Opening the file was canceled (legacy-fs).");\n          rejectPromise(new _errors__WEBPACK_IMPORTED_MODULE_2__.AbortError());\n        }\n      };\n    }\n  });\n};\nconst fileSave = (blob, opts) => {\n  return (0,browser_fs_access__WEBPACK_IMPORTED_MODULE_0__.fileSave)(blob, {\n    fileName: `${opts.name}.${opts.extension}`,\n    description: opts.description,\n    extensions: [`.${opts.extension}`]\n  }, opts.fileHandle);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4604 characters]\n//# sourceURL=webpack-internal:///../../data/filesystem.ts\n');
              }
            ),
            /***/
            "../../data/image.ts": (
              /*!***************************!*\
                !*** ../../data/image.ts ***!
                \***************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "decodePngMetadata": () => (/* binding */ decodePngMetadata),\n/* harmony export */   "decodeSvgMetadata": () => (/* binding */ decodeSvgMetadata),\n/* harmony export */   "encodePngMetadata": () => (/* binding */ encodePngMetadata),\n/* harmony export */   "encodeSvgMetadata": () => (/* binding */ encodeSvgMetadata),\n/* harmony export */   "getTEXtChunk": () => (/* binding */ getTEXtChunk)\n/* harmony export */ });\n/* harmony import */ var png_chunks_extract__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! png-chunks-extract */ "../../../node_modules/png-chunks-extract/index.js");\n/* harmony import */ var png_chunks_extract__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(png_chunks_extract__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var png_chunk_text__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! png-chunk-text */ "../../../node_modules/png-chunk-text/index.js");\n/* harmony import */ var png_chunks_encode__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! png-chunks-encode */ "../../../node_modules/png-chunks-encode/index.js");\n/* harmony import */ var png_chunks_encode__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(png_chunks_encode__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _encode__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./encode */ "../../data/encode.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _blob__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./blob */ "../../data/blob.ts");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator["throw"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n\n\n\n // -----------------------------------------------------------------------------\n// PNG\n// -----------------------------------------------------------------------------\n\nconst getTEXtChunk = blob => __awaiter(void 0, void 0, void 0, function* () {\n  const chunks = png_chunks_extract__WEBPACK_IMPORTED_MODULE_0___default()(new Uint8Array(yield (0,_blob__WEBPACK_IMPORTED_MODULE_5__.blobToArrayBuffer)(blob)));\n  const metadataChunk = chunks.find(chunk => chunk.name === "tEXt");\n\n  if (metadataChunk) {\n    return png_chunk_text__WEBPACK_IMPORTED_MODULE_1__.decode(metadataChunk.data);\n  }\n\n  return null;\n});\nconst encodePngMetadata = ({\n  blob,\n  metadata\n}) => __awaiter(void 0, void 0, void 0, function* () {\n  const chunks = png_chunks_extract__WEBPACK_IMPORTED_MODULE_0___default()(new Uint8Array(yield (0,_blob__WEBPACK_IMPORTED_MODULE_5__.blobToArrayBuffer)(blob)));\n  const metadataChunk = png_chunk_text__WEBPACK_IMPORTED_MODULE_1__.encode(_constants__WEBPACK_IMPORTED_MODULE_4__.MIME_TYPES.excalidraw, JSON.stringify(yield (0,_encode__WEBPACK_IMPORTED_MODULE_3__.encode)({\n    text: metadata,\n    compress: true\n  }))); // insert metadata before last chunk (iEND)\n\n  chunks.splice(-1, 0, metadataChunk);\n  return new Blob([png_chunks_encode__WEBPACK_IMPORTED_MODULE_2___default()(chunks)], {\n    type: _constants__WEBPACK_IMPORTED_MODULE_4__.MIME_TYPES.png\n  });\n});\nconst decodePngMetadata = blob => __awaiter(void 0, void 0, void 0, function* () {\n  const metadata = yield getTEXtChunk(blob);\n\n  if ((metadata === null || metadata === void 0 ? void 0 : metadata.keyword) === _constants__WEBPACK_IMPORTED_MODULE_4__.MIME_TYPES.excalidraw) {\n    try {\n      const encodedData = JSON.parse(metadata.text);\n\n      if (!("encoded" in encodedData)) {\n        // legacy, un-encoded scene JSON\n        if ("type" in encodedData && encodedData.type === _constants__WEBPACK_IMPORTED_MODULE_4__.EXPORT_DATA_TYPES.excalidraw) {\n          return metadata.text;\n        }\n\n        throw new Error("FAILED");\n      }\n\n      return yield (0,_encode__WEBPACK_IMPORTED_MODULE_3__.decode)(encodedData);\n    } catch (error) {\n      console.error(error);\n      throw new Error("FAILED");\n    }\n  }\n\n  throw new Error("INVALID");\n}); // -----------------------------------------------------------------------------\n// SVG\n// -----------------------------------------------------------------------------\n\nconst encodeSvgMetadata = ({\n  text\n}) => __awaiter(void 0, void 0, void 0, function* () {\n  const base64 = yield (0,_encode__WEBPACK_IMPORTED_MODULE_3__.stringToBase64)(JSON.stringify(yield (0,_encode__WEBPACK_IMPORTED_MODULE_3__.encode)({\n    text\n  })), true\n  /* is already byte string */\n  );\n  let metadata = "";\n  metadata += `<!-- payload-type:${_constants__WEBPACK_IMPORTED_MODULE_4__.MIME_TYPES.excalidraw} -->`;\n  metadata += `<!-- payload-version:2 -->`;\n  metadata += "<!-- payload-start -->";\n  metadata += base64;\n  metadata += "<!-- payload-end -->";\n  return metadata;\n});\nconst decodeSvgMetadata = ({\n  svg\n}) => __awaiter(void 0, void 0, void 0, function* () {\n  if (svg.includes(`payload-type:${_constants__WEBPACK_IMPORTED_MODULE_4__.MIME_TYPES.excalidraw}`)) {\n    const match = svg.match(/<!-- payload-start -->\\s*(.+?)\\s*<!-- payload-end -->/);\n\n    if (!match) {\n      throw new Error("INVALID");\n    }\n\n    const versionMatch = svg.match(/<!-- payload-version:(\\d+) -->/);\n    const version = (versionMatch === null || versionMatch === void 0 ? void 0 : versionMatch[1]) || "1";\n    const isByteString = version !== "1";\n\n    try {\n      const json = yield (0,_encode__WEBPACK_IMPORTED_MODULE_3__.base64ToString)(match[1], isByteString);\n      const encodedData = JSON.parse(json);\n\n      if (!("encoded" in encodedData)) {\n        // legacy, un-encoded scene JSON\n        if ("type" in encodedData && encodedData.type === _constants__WEBPACK_IMPORTED_MODULE_4__.EXPORT_DATA_TYPES.excalidraw) {\n          return json;\n        }\n\n        throw new Error("FAILED");\n      }\n\n      return yield (0,_encode__WEBPACK_IMPORTED_MODULE_3__.decode)(encodedData);\n    } catch (error) {\n      console.error(error);\n      throw new Error("FAILED");\n    }\n  }\n\n  throw new Error("INVALID");\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 7872 characters]\n//# sourceURL=webpack-internal:///../../data/image.ts\n');
              }
            ),
            /***/
            "../../data/index.ts": (
              /*!***************************!*\
                !*** ../../data/index.ts ***!
                \***************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "exportCanvas": () => (/* binding */ exportCanvas),\n/* harmony export */   "loadFromBlob": () => (/* reexport safe */ _blob__WEBPACK_IMPORTED_MODULE_8__.loadFromBlob),\n/* harmony export */   "loadFromJSON": () => (/* reexport safe */ _json__WEBPACK_IMPORTED_MODULE_10__.loadFromJSON),\n/* harmony export */   "prepareElementsForExport": () => (/* binding */ prepareElementsForExport),\n/* harmony export */   "saveAsJSON": () => (/* reexport safe */ _json__WEBPACK_IMPORTED_MODULE_10__.saveAsJSON)\n/* harmony export */ });\n/* harmony import */ var _clipboard__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../clipboard */ "../../clipboard.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _packages_withinBounds__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../packages/withinBounds */ "../withinBounds.ts");\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../scene */ "../../scene/index.ts");\n/* harmony import */ var _scene_export__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../scene/export */ "../../scene/export.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _blob__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./blob */ "../../data/blob.ts");\n/* harmony import */ var _filesystem__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./filesystem */ "../../data/filesystem.ts");\n/* harmony import */ var _json__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./json */ "../../data/json.ts");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator["throw"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst prepareElementsForExport = (elements, {\n  selectedElementIds\n}, exportSelectionOnly) => {\n  elements = (0,_element__WEBPACK_IMPORTED_MODULE_2__.getNonDeletedElements)(elements);\n  const isExportingSelection = exportSelectionOnly && (0,_scene__WEBPACK_IMPORTED_MODULE_5__.isSomeElementSelected)(elements, {\n    selectedElementIds\n  });\n  let exportingFrame = null;\n  let exportedElements = isExportingSelection ? (0,_scene__WEBPACK_IMPORTED_MODULE_5__.getSelectedElements)(elements, {\n    selectedElementIds\n  }, {\n    includeBoundTextElement: true\n  }) : elements;\n\n  if (isExportingSelection) {\n    if (exportedElements.length === 1 && (0,_element__WEBPACK_IMPORTED_MODULE_2__.isFrameElement)(exportedElements[0])) {\n      exportingFrame = exportedElements[0];\n      exportedElements = (0,_packages_withinBounds__WEBPACK_IMPORTED_MODULE_4__.elementsOverlappingBBox)({\n        elements,\n        bounds: exportingFrame,\n        type: "overlap"\n      });\n    } else if (exportedElements.length > 1) {\n      exportedElements = (0,_scene__WEBPACK_IMPORTED_MODULE_5__.getSelectedElements)(elements, {\n        selectedElementIds\n      }, {\n        includeBoundTextElement: true,\n        includeElementsInFrames: true\n      });\n    }\n  }\n\n  return {\n    exportingFrame,\n    exportedElements: (0,_utils__WEBPACK_IMPORTED_MODULE_7__.cloneJSON)(exportedElements)\n  };\n};\nconst exportCanvas = (type, elements, appState, files, {\n  exportBackground,\n  exportPadding = _constants__WEBPACK_IMPORTED_MODULE_1__.DEFAULT_EXPORT_PADDING,\n  viewBackgroundColor,\n  name,\n  fileHandle = null,\n  exportingFrame = null\n}) => __awaiter(void 0, void 0, void 0, function* () {\n  if (elements.length === 0) {\n    throw new Error((0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("alerts.cannotExportEmptyCanvas"));\n  }\n\n  if (type === "svg" || type === "clipboard-svg") {\n    const tempSvg = yield (0,_scene_export__WEBPACK_IMPORTED_MODULE_6__.exportToSvg)(elements, {\n      exportBackground,\n      exportWithDarkMode: appState.exportWithDarkMode,\n      viewBackgroundColor,\n      exportPadding,\n      exportScale: appState.exportScale,\n      exportEmbedScene: appState.exportEmbedScene && type === "svg"\n    }, files, {\n      exportingFrame\n    });\n\n    if (type === "svg") {\n      return yield (0,_filesystem__WEBPACK_IMPORTED_MODULE_9__.fileSave)(new Blob([tempSvg.outerHTML], {\n        type: _constants__WEBPACK_IMPORTED_MODULE_1__.MIME_TYPES.svg\n      }), {\n        description: "Export to SVG",\n        name,\n        extension: appState.exportEmbedScene ? "excalidraw.svg" : "svg",\n        fileHandle\n      });\n    } else if (type === "clipboard-svg") {\n      yield (0,_clipboard__WEBPACK_IMPORTED_MODULE_0__.copyTextToSystemClipboard)(tempSvg.outerHTML);\n      return;\n    }\n  }\n\n  const tempCanvas = (0,_scene_export__WEBPACK_IMPORTED_MODULE_6__.exportToCanvas)(elements, appState, files, {\n    exportBackground,\n    viewBackgroundColor,\n    exportPadding,\n    exportingFrame\n  });\n\n  if (type === "png") {\n    let blob = yield (0,_blob__WEBPACK_IMPORTED_MODULE_8__.canvasToBlob)(tempCanvas);\n\n    if (appState.exportEmbedScene) {\n      blob = yield (yield Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ./image */ "../../data/image.ts"))).encodePngMetadata({\n        blob,\n        metadata: (0,_json__WEBPACK_IMPORTED_MODULE_10__.serializeAsJSON)(elements, appState, files, "local")\n      });\n    }\n\n    return yield (0,_filesystem__WEBPACK_IMPORTED_MODULE_9__.fileSave)(blob, {\n      description: "Export to PNG",\n      name,\n      // FIXME reintroduce `excalidraw.png` when most people upgrade away\n      // from 111.0.5563.64 (arm64), see #6349\n      extension:\n      /* appState.exportEmbedScene ? "excalidraw.png" : */\n      "png",\n      fileHandle\n    });\n  } else if (type === "clipboard") {\n    try {\n      const blob = (0,_blob__WEBPACK_IMPORTED_MODULE_8__.canvasToBlob)(tempCanvas);\n      yield (0,_clipboard__WEBPACK_IMPORTED_MODULE_0__.copyBlobToClipboardAsPng)(blob);\n    } catch (error) {\n      console.warn(error);\n\n      if (error.name === "CANVAS_POSSIBLY_TOO_BIG") {\n        throw error;\n      } // TypeError *probably* suggests ClipboardItem not defined, which\n      // people on Firefox can enable through a flag, so let\'s tell them.\n\n\n      if (_constants__WEBPACK_IMPORTED_MODULE_1__.isFirefox && error.name === "TypeError") {\n        throw new Error(`${(0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("alerts.couldNotCopyToClipboard")}\\n\\n${(0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("hints.firefox_clipboard_write")}`);\n      } else {\n        throw new Error((0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)("alerts.couldNotCopyToClipboard"));\n      }\n    }\n  } else {\n    // shouldn\'t happen\n    throw new Error("Unsupported export type");\n  }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 9292 characters]\n//# sourceURL=webpack-internal:///../../data/index.ts\n');
              }
            ),
            /***/
            "../../data/json.ts": (
              /*!**************************!*\
                !*** ../../data/json.ts ***!
                \**************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "isValidExcalidrawData": () => (/* binding */ isValidExcalidrawData),\n/* harmony export */   "isValidLibrary": () => (/* binding */ isValidLibrary),\n/* harmony export */   "loadFromJSON": () => (/* binding */ loadFromJSON),\n/* harmony export */   "saveAsJSON": () => (/* binding */ saveAsJSON),\n/* harmony export */   "saveLibraryAsJSON": () => (/* binding */ saveLibraryAsJSON),\n/* harmony export */   "serializeAsJSON": () => (/* binding */ serializeAsJSON),\n/* harmony export */   "serializeLibraryAsJSON": () => (/* binding */ serializeLibraryAsJSON)\n/* harmony export */ });\n/* harmony import */ var _filesystem__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./filesystem */ "../../data/filesystem.ts");\n/* harmony import */ var _appState__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../appState */ "../../appState.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _blob__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./blob */ "../../data/blob.ts");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator["throw"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n\n\n\n/**\n * Strips out files which are only referenced by deleted elements\n */\n\nconst filterOutDeletedFiles = (elements, files) => {\n  const nextFiles = {};\n\n  for (const element of elements) {\n    if (!element.isDeleted && "fileId" in element && element.fileId && files[element.fileId]) {\n      nextFiles[element.fileId] = files[element.fileId];\n    }\n  }\n\n  return nextFiles;\n};\n\nconst serializeAsJSON = (elements, appState, files, type) => {\n  const data = {\n    type: _constants__WEBPACK_IMPORTED_MODULE_2__.EXPORT_DATA_TYPES.excalidraw,\n    version: _constants__WEBPACK_IMPORTED_MODULE_2__.VERSIONS.excalidraw,\n    source: _constants__WEBPACK_IMPORTED_MODULE_2__.EXPORT_SOURCE,\n    elements: type === "local" ? (0,_element__WEBPACK_IMPORTED_MODULE_3__.clearElementsForExport)(elements) : (0,_element__WEBPACK_IMPORTED_MODULE_3__.clearElementsForDatabase)(elements),\n    appState: type === "local" ? (0,_appState__WEBPACK_IMPORTED_MODULE_1__.cleanAppStateForExport)(appState) : (0,_appState__WEBPACK_IMPORTED_MODULE_1__.clearAppStateForDatabase)(appState),\n    files: type === "local" ? filterOutDeletedFiles(elements, files) : // will be stripped from JSON\n    undefined\n  };\n  return JSON.stringify(data, null, 2);\n};\nconst saveAsJSON = (elements, appState, files) => __awaiter(void 0, void 0, void 0, function* () {\n  const serialized = serializeAsJSON(elements, appState, files, "local");\n  const blob = new Blob([serialized], {\n    type: _constants__WEBPACK_IMPORTED_MODULE_2__.MIME_TYPES.excalidraw\n  });\n  const fileHandle = yield (0,_filesystem__WEBPACK_IMPORTED_MODULE_0__.fileSave)(blob, {\n    name: appState.name,\n    extension: "excalidraw",\n    description: "Excalidraw file",\n    fileHandle: (0,_blob__WEBPACK_IMPORTED_MODULE_4__.isImageFileHandle)(appState.fileHandle) ? null : appState.fileHandle\n  });\n  return {\n    fileHandle\n  };\n});\nconst loadFromJSON = (localAppState, localElements) => __awaiter(void 0, void 0, void 0, function* () {\n  const file = yield (0,_filesystem__WEBPACK_IMPORTED_MODULE_0__.fileOpen)({\n    description: "Excalidraw files" // ToDo: Be over-permissive until https://bugs.webkit.org/show_bug.cgi?id=34442\n    // gets resolved. Else, iOS users cannot open `.excalidraw` files.\n    // extensions: ["json", "excalidraw", "png", "svg"],\n\n  });\n  return (0,_blob__WEBPACK_IMPORTED_MODULE_4__.loadFromBlob)(yield (0,_blob__WEBPACK_IMPORTED_MODULE_4__.normalizeFile)(file), localAppState, localElements, file.handle);\n});\nconst isValidExcalidrawData = data => {\n  return (data === null || data === void 0 ? void 0 : data.type) === _constants__WEBPACK_IMPORTED_MODULE_2__.EXPORT_DATA_TYPES.excalidraw && (!data.elements || Array.isArray(data.elements) && (!data.appState || typeof data.appState === "object"));\n};\nconst isValidLibrary = json => {\n  return typeof json === "object" && json && json.type === _constants__WEBPACK_IMPORTED_MODULE_2__.EXPORT_DATA_TYPES.excalidrawLibrary && (json.version === 1 || json.version === 2);\n};\nconst serializeLibraryAsJSON = libraryItems => {\n  const data = {\n    type: _constants__WEBPACK_IMPORTED_MODULE_2__.EXPORT_DATA_TYPES.excalidrawLibrary,\n    version: _constants__WEBPACK_IMPORTED_MODULE_2__.VERSIONS.excalidrawLibrary,\n    source: _constants__WEBPACK_IMPORTED_MODULE_2__.EXPORT_SOURCE,\n    libraryItems\n  };\n  return JSON.stringify(data, null, 2);\n};\nconst saveLibraryAsJSON = libraryItems => __awaiter(void 0, void 0, void 0, function* () {\n  const serialized = serializeLibraryAsJSON(libraryItems);\n  yield (0,_filesystem__WEBPACK_IMPORTED_MODULE_0__.fileSave)(new Blob([serialized], {\n    type: _constants__WEBPACK_IMPORTED_MODULE_2__.MIME_TYPES.excalidrawlib\n  }), {\n    name: "library",\n    extension: "excalidrawlib",\n    description: "Excalidraw library file"\n  });\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 7108 characters]\n//# sourceURL=webpack-internal:///../../data/json.ts\n');
              }
            ),
            /***/
            "../../data/library.ts": (
              /*!*****************************!*\
                !*** ../../data/library.ts ***!
                \*****************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */   "distributeLibraryItemsOnSquareGrid": () => (/* binding */ distributeLibraryItemsOnSquareGrid),\n/* harmony export */   "libraryItemsAtom": () => (/* binding */ libraryItemsAtom),\n/* harmony export */   "mergeLibraryItems": () => (/* binding */ mergeLibraryItems),\n/* harmony export */   "parseLibraryTokensFromUrl": () => (/* binding */ parseLibraryTokensFromUrl),\n/* harmony export */   "useHandleLibrary": () => (/* binding */ useHandleLibrary)\n/* harmony export */ });\n/* harmony import */ var _blob__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./blob */ "../../data/blob.ts");\n/* harmony import */ var _restore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./restore */ "../../data/restore.ts");\n/* harmony import */ var jotai__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! jotai */ "../../../node_modules/jotai/esm/index.mjs");\n/* harmony import */ var _jotai__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../jotai */ "../../jotai.ts");\n/* harmony import */ var _element_bounds__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../element/bounds */ "../../element/bounds.ts");\n/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../errors */ "../../errors.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _hooks_useLibraryItemSvg__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../hooks/useLibraryItemSvg */ "../../hooks/useLibraryItemSvg.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator["throw"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n\n\n\n\n\n\n\n\n\nconst libraryItemsAtom = (0,jotai__WEBPACK_IMPORTED_MODULE_10__.atom)({\n  status: "loaded",\n  isInitialized: true,\n  libraryItems: []\n});\n\nconst cloneLibraryItems = libraryItems => (0,_utils__WEBPACK_IMPORTED_MODULE_9__.cloneJSON)(libraryItems);\n/**\n * checks if library item does not exist already in current library\n */\n\n\nconst isUniqueItem = (existingLibraryItems, targetLibraryItem) => {\n  return !existingLibraryItems.find(libraryItem => {\n    if (libraryItem.elements.length !== targetLibraryItem.elements.length) {\n      return false;\n    } // detect z-index difference by checking the excalidraw elements\n    // are in order\n\n\n    return libraryItem.elements.every((libItemExcalidrawItem, idx) => {\n      return libItemExcalidrawItem.id === targetLibraryItem.elements[idx].id && libItemExcalidrawItem.versionNonce === targetLibraryItem.elements[idx].versionNonce;\n    });\n  });\n};\n/** Merges otherItems into localItems. Unique items in otherItems array are\n    sorted first. */\n\n\nconst mergeLibraryItems = (localItems, otherItems) => {\n  const newItems = [];\n\n  for (const item of otherItems) {\n    if (isUniqueItem(localItems, item)) {\n      newItems.push(item);\n    }\n  }\n\n  return [...newItems, ...localItems];\n};\n\nclass Library {\n  constructor(app) {\n    /** latest libraryItems */\n    this.lastLibraryItems = [];\n    /** indicates whether library is initialized with library items (has gone\n     * though at least one update) */\n\n    this.isInitialized = false;\n    this.updateQueue = [];\n\n    this.getLastUpdateTask = () => {\n      return this.updateQueue[this.updateQueue.length - 1];\n    };\n\n    this.notifyListeners = () => {\n      var _a, _b;\n\n      if (this.updateQueue.length > 0) {\n        _jotai__WEBPACK_IMPORTED_MODULE_2__.jotaiStore.set(libraryItemsAtom, {\n          status: "loading",\n          libraryItems: this.lastLibraryItems,\n          isInitialized: this.isInitialized\n        });\n      } else {\n        this.isInitialized = true;\n        _jotai__WEBPACK_IMPORTED_MODULE_2__.jotaiStore.set(libraryItemsAtom, {\n          status: "loaded",\n          libraryItems: this.lastLibraryItems,\n          isInitialized: this.isInitialized\n        });\n\n        try {\n          (_b = (_a = this.app.props).onLibraryChange) === null || _b === void 0 ? void 0 : _b.call(_a, cloneLibraryItems(this.lastLibraryItems));\n        } catch (error) {\n          console.error(error);\n        }\n      }\n    };\n    /** call on excalidraw instance unmount */\n\n\n    this.destroy = () => {\n      this.isInitialized = false;\n      this.updateQueue = [];\n      this.lastLibraryItems = [];\n      _jotai__WEBPACK_IMPORTED_MODULE_2__.jotaiStore.set(_hooks_useLibraryItemSvg__WEBPACK_IMPORTED_MODULE_8__.libraryItemSvgsCache, new Map()); // TODO uncomment after/if we make jotai store scoped to each excal instance\n      // jotaiStore.set(libraryItemsAtom, {\n      //   status: "loading",\n      //   isInitialized: false,\n      //   libraryItems: [],\n      // });\n    };\n\n    this.resetLibrary = () => {\n      return this.setLibrary([]);\n    };\n    /**\n     * @returns latest cloned libraryItems. Awaits all in-progress updates first.\n     */\n\n\n    this.getLatestLibrary = () => {\n      return new Promise(resolve => __awaiter(this, void 0, void 0, function* () {\n        try {\n          const libraryItems = yield this.getLastUpdateTask() || this.lastLibraryItems;\n\n          if (this.updateQueue.length > 0) {\n            resolve(this.getLatestLibrary());\n          } else {\n            resolve(cloneLibraryItems(libraryItems));\n          }\n        } catch (error) {\n          return resolve(this.lastLibraryItems);\n        }\n      }));\n    }; // NOTE this is a high-level public API (exposed on ExcalidrawAPI) with\n    // a slight overhead (always restoring library items). For internal use\n    // where merging isn\'t needed, use `library.setLibrary()` directly.\n\n\n    this.updateLibrary = ({\n      libraryItems,\n      prompt = false,\n      merge = false,\n      openLibraryMenu = false,\n      defaultStatus = "unpublished"\n    }) => __awaiter(this, void 0, void 0, function* () {\n      if (openLibraryMenu) {\n        this.app.setState({\n          openSidebar: {\n            name: _constants__WEBPACK_IMPORTED_MODULE_7__.DEFAULT_SIDEBAR.name,\n            tab: _constants__WEBPACK_IMPORTED_MODULE_7__.LIBRARY_SIDEBAR_TAB\n          }\n        });\n      }\n\n      return this.setLibrary(() => {\n        return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {\n          try {\n            const source = yield typeof libraryItems === "function" && !(libraryItems instanceof Blob) ? libraryItems(this.lastLibraryItems) : libraryItems;\n            let nextItems;\n\n            if (source instanceof Blob) {\n              nextItems = yield (0,_blob__WEBPACK_IMPORTED_MODULE_0__.loadLibraryFromBlob)(source, defaultStatus);\n            } else {\n              nextItems = (0,_restore__WEBPACK_IMPORTED_MODULE_1__.restoreLibraryItems)(source, defaultStatus);\n            }\n\n            if (!prompt || window.confirm((0,_i18n__WEBPACK_IMPORTED_MODULE_5__.t)("alerts.confirmAddLibrary", {\n              numShapes: nextItems.length\n            }))) {\n              if (prompt) {\n                // focus container if we\'ve prompted. We focus conditionally\n                // lest `props.autoFocus` is disabled (in which case we should\n                // focus only on user action such as prompt confirm)\n                this.app.focusContainer();\n              }\n\n              if (merge) {\n                resolve(mergeLibraryItems(this.lastLibraryItems, nextItems));\n              } else {\n                resolve(nextItems);\n              }\n            } else {\n              reject(new _errors__WEBPACK_IMPORTED_MODULE_4__.AbortError());\n            }\n          } catch (error) {\n            reject(error);\n          }\n        }));\n      });\n    });\n\n    this.setLibrary = (\n    /**\n     * LibraryItems that will replace current items. Can be a function which\n     * will be invoked after all previous tasks are resolved\n     * (this is the prefered way to update the library to avoid race conditions,\n     * but you\'ll want to manually merge the library items in the callback\n     *  - which is what we\'re doing in Library.importLibrary()).\n     *\n     * If supplied promise is rejected with AbortError, we swallow it and\n     * do not update the library.\n     */\n    libraryItems) => {\n      const task = new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {\n        try {\n          yield this.getLastUpdateTask();\n\n          if (typeof libraryItems === "function") {\n            libraryItems = libraryItems(this.lastLibraryItems);\n          }\n\n          this.lastLibraryItems = cloneLibraryItems(yield libraryItems);\n          resolve(this.lastLibraryItems);\n        } catch (error) {\n          reject(error);\n        }\n      })).catch(error => {\n        if (error.name === "AbortError") {\n          console.warn("Library update aborted by user");\n          return this.lastLibraryItems;\n        }\n\n        throw error;\n      }).finally(() => {\n        this.updateQueue = this.updateQueue.filter(_task => _task !== task);\n        this.notifyListeners();\n      });\n      this.updateQueue.push(task);\n      this.notifyListeners();\n      return task;\n    };\n\n    this.app = app;\n  }\n\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Library);\nconst distributeLibraryItemsOnSquareGrid = libraryItems => {\n  const PADDING = 50;\n  const ITEMS_PER_ROW = Math.ceil(Math.sqrt(libraryItems.length));\n  const resElements = [];\n\n  const getMaxHeightPerRow = row => {\n    const maxHeight = libraryItems.slice(row * ITEMS_PER_ROW, row * ITEMS_PER_ROW + ITEMS_PER_ROW).reduce((acc, item) => {\n      const {\n        height\n      } = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_3__.getCommonBoundingBox)(item.elements);\n      return Math.max(acc, height);\n    }, 0);\n    return maxHeight;\n  };\n\n  const getMaxWidthPerCol = targetCol => {\n    let index = 0;\n    let currCol = 0;\n    let maxWidth = 0;\n\n    for (const item of libraryItems) {\n      if (index % ITEMS_PER_ROW === 0) {\n        currCol = 0;\n      }\n\n      if (currCol === targetCol) {\n        const {\n          width\n        } = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_3__.getCommonBoundingBox)(item.elements);\n        maxWidth = Math.max(maxWidth, width);\n      }\n\n      index++;\n      currCol++;\n    }\n\n    return maxWidth;\n  };\n\n  let colOffsetX = 0;\n  let rowOffsetY = 0;\n  let maxHeightCurrRow = 0;\n  let maxWidthCurrCol = 0;\n  let index = 0;\n  let col = 0;\n  let row = 0;\n\n  for (const item of libraryItems) {\n    if (index && index % ITEMS_PER_ROW === 0) {\n      rowOffsetY += maxHeightCurrRow + PADDING;\n      colOffsetX = 0;\n      col = 0;\n      row++;\n    }\n\n    if (col === 0) {\n      maxHeightCurrRow = getMaxHeightPerRow(row);\n    }\n\n    maxWidthCurrCol = getMaxWidthPerCol(col);\n    const {\n      minX,\n      minY,\n      width,\n      height\n    } = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_3__.getCommonBoundingBox)(item.elements);\n    const offsetCenterX = (maxWidthCurrCol - width) / 2;\n    const offsetCenterY = (maxHeightCurrRow - height) / 2;\n    resElements.push( // eslint-disable-next-line no-loop-func\n    ...item.elements.map(element => Object.assign(Object.assign({}, element), {\n      x: element.x + // offset for column\n      colOffsetX + // offset to center in given square grid\n      offsetCenterX - // subtract minX so that given item starts at 0 coord\n      minX,\n      y: element.y + // offset for row\n      rowOffsetY + // offset to center in given square grid\n      offsetCenterY - // subtract minY so that given item starts at 0 coord\n      minY\n    })));\n    colOffsetX += maxWidthCurrCol + PADDING;\n    index++;\n    col++;\n  }\n\n  return resElements;\n};\nconst parseLibraryTokensFromUrl = () => {\n  const libraryUrl = // current\n  new URLSearchParams(window.location.hash.slice(1)).get(_constants__WEBPACK_IMPORTED_MODULE_7__.URL_HASH_KEYS.addLibrary) || // legacy, kept for compat reasons\n  new URLSearchParams(window.location.search).get(_constants__WEBPACK_IMPORTED_MODULE_7__.URL_QUERY_KEYS.addLibrary);\n  const idToken = libraryUrl ? new URLSearchParams(window.location.hash.slice(1)).get("token") : null;\n  return libraryUrl ? {\n    libraryUrl,\n    idToken\n  } : null;\n};\nconst useHandleLibrary = ({\n  excalidrawAPI,\n  getInitialLibraryItems\n}) => {\n  const getInitialLibraryRef = (0,react__WEBPACK_IMPORTED_MODULE_6__.useRef)(getInitialLibraryItems);\n  (0,react__WEBPACK_IMPORTED_MODULE_6__.useEffect)(() => {\n    if (!excalidrawAPI) {\n      return;\n    }\n\n    const importLibraryFromURL = ({\n      libraryUrl,\n      idToken\n    }) => __awaiter(void 0, void 0, void 0, function* () {\n      const libraryPromise = new Promise((resolve, reject) => __awaiter(void 0, void 0, void 0, function* () {\n        try {\n          const request = yield fetch(decodeURIComponent(libraryUrl));\n          const blob = yield request.blob();\n          resolve(blob);\n        } catch (error) {\n          reject(error);\n        }\n      }));\n      const shouldPrompt = idToken !== excalidrawAPI.id; // wait for the tab to be focused before continuing in case we\'ll prompt\n      // for confirmation\n\n      yield shouldPrompt && document.hidden ? new Promise(resolve => {\n        window.addEventListener("focus", () => resolve(), {\n          once: true\n        });\n      }) : null;\n\n      try {\n        yield excalidrawAPI.updateLibrary({\n          libraryItems: libraryPromise,\n          prompt: shouldPrompt,\n          merge: true,\n          defaultStatus: "published",\n          openLibraryMenu: true\n        });\n      } catch (error) {\n        throw error;\n      } finally {\n        if (window.location.hash.includes(_constants__WEBPACK_IMPORTED_MODULE_7__.URL_HASH_KEYS.addLibrary)) {\n          const hash = new URLSearchParams(window.location.hash.slice(1));\n          hash.delete(_constants__WEBPACK_IMPORTED_MODULE_7__.URL_HASH_KEYS.addLibrary);\n          window.history.replaceState({}, _constants__WEBPACK_IMPORTED_MODULE_7__.APP_NAME, `#${hash.toString()}`);\n        } else if (window.location.search.includes(_constants__WEBPACK_IMPORTED_MODULE_7__.URL_QUERY_KEYS.addLibrary)) {\n          const query = new URLSearchParams(window.location.search);\n          query.delete(_constants__WEBPACK_IMPORTED_MODULE_7__.URL_QUERY_KEYS.addLibrary);\n          window.history.replaceState({}, _constants__WEBPACK_IMPORTED_MODULE_7__.APP_NAME, `?${query.toString()}`);\n        }\n      }\n    });\n\n    const onHashChange = event => {\n      event.preventDefault();\n      const libraryUrlTokens = parseLibraryTokensFromUrl();\n\n      if (libraryUrlTokens) {\n        event.stopImmediatePropagation(); // If hash changed and it contains library url, import it and replace\n        // the url to its previous state (important in case of collaboration\n        // and similar).\n        // Using history API won\'t trigger another hashchange.\n\n        window.history.replaceState({}, "", event.oldURL);\n        importLibraryFromURL(libraryUrlTokens);\n      }\n    }; // -------------------------------------------------------------------------\n    // ------ init load --------------------------------------------------------\n\n\n    if (getInitialLibraryRef.current) {\n      excalidrawAPI.updateLibrary({\n        libraryItems: getInitialLibraryRef.current()\n      });\n    }\n\n    const libraryUrlTokens = parseLibraryTokensFromUrl();\n\n    if (libraryUrlTokens) {\n      importLibraryFromURL(libraryUrlTokens);\n    } // --------------------------------------------------------- init load -----\n\n\n    window.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_7__.EVENT.HASHCHANGE, onHashChange);\n    return () => {\n      window.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_7__.EVENT.HASHCHANGE, onHashChange);\n    };\n  }, [excalidrawAPI]);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 23364 characters]\n//# sourceURL=webpack-internal:///../../data/library.ts\n');
              }
            ),
            /***/
            "../../data/resave.ts": (
              /*!****************************!*\
                !*** ../../data/resave.ts ***!
                \****************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "resaveAsImageWithScene": () => (/* binding */ resaveAsImageWithScene)\n/* harmony export */ });\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! . */ "../../data/index.ts");\n/* harmony import */ var _blob__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./blob */ "../../data/blob.ts");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator["throw"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\nconst resaveAsImageWithScene = (elements, appState, files) => __awaiter(void 0, void 0, void 0, function* () {\n  const {\n    exportBackground,\n    viewBackgroundColor,\n    name,\n    fileHandle\n  } = appState;\n  const fileHandleType = (0,_blob__WEBPACK_IMPORTED_MODULE_1__.getFileHandleType)(fileHandle);\n\n  if (!fileHandle || !(0,_blob__WEBPACK_IMPORTED_MODULE_1__.isImageFileHandleType)(fileHandleType)) {\n    throw new Error("fileHandle should exist and should be of type svg or png when resaving");\n  }\n\n  appState = Object.assign(Object.assign({}, appState), {\n    exportEmbedScene: true\n  });\n  const {\n    exportedElements,\n    exportingFrame\n  } = (0,___WEBPACK_IMPORTED_MODULE_0__.prepareElementsForExport)(elements, appState, false);\n  yield (0,___WEBPACK_IMPORTED_MODULE_0__.exportCanvas)(fileHandleType, exportedElements, appState, files, {\n    exportBackground,\n    viewBackgroundColor,\n    name,\n    fileHandle,\n    exportingFrame\n  });\n  return {\n    fileHandle\n  };\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZGF0YS9yZXNhdmUudHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsZ0JBQWdCLFNBQUksSUFBSSxTQUFJO0FBQzVCO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7O0FBRTJEO0FBQ087QUFDM0Q7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLHlCQUF5Qix3REFBaUI7O0FBRTFDLHNCQUFzQiw0REFBcUI7QUFDM0M7QUFDQTs7QUFFQSwyQ0FBMkM7QUFDM0M7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsSUFBSSxFQUFFLDJEQUF3QjtBQUM5QixRQUFRLCtDQUFZO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9kYXRhL3Jlc2F2ZS50cz82OTRiIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBfX2F3YWl0ZXIgPSB0aGlzICYmIHRoaXMuX19hd2FpdGVyIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkge1xuICAgICAgcmVzb2x2ZSh2YWx1ZSk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7XG4gICAgICB0cnkge1xuICAgICAgICBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJlamVjdChlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkge1xuICAgICAgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7XG4gICAgfVxuXG4gICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICB9KTtcbn07XG5cbmltcG9ydCB7IGV4cG9ydENhbnZhcywgcHJlcGFyZUVsZW1lbnRzRm9yRXhwb3J0IH0gZnJvbSBcIi5cIjtcbmltcG9ydCB7IGdldEZpbGVIYW5kbGVUeXBlLCBpc0ltYWdlRmlsZUhhbmRsZVR5cGUgfSBmcm9tIFwiLi9ibG9iXCI7XG5leHBvcnQgY29uc3QgcmVzYXZlQXNJbWFnZVdpdGhTY2VuZSA9IChlbGVtZW50cywgYXBwU3RhdGUsIGZpbGVzKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgY29uc3Qge1xuICAgIGV4cG9ydEJhY2tncm91bmQsXG4gICAgdmlld0JhY2tncm91bmRDb2xvcixcbiAgICBuYW1lLFxuICAgIGZpbGVIYW5kbGVcbiAgfSA9IGFwcFN0YXRlO1xuICBjb25zdCBmaWxlSGFuZGxlVHlwZSA9IGdldEZpbGVIYW5kbGVUeXBlKGZpbGVIYW5kbGUpO1xuXG4gIGlmICghZmlsZUhhbmRsZSB8fCAhaXNJbWFnZUZpbGVIYW5kbGVUeXBlKGZpbGVIYW5kbGVUeXBlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcImZpbGVIYW5kbGUgc2hvdWxkIGV4aXN0IGFuZCBzaG91bGQgYmUgb2YgdHlwZSBzdmcgb3IgcG5nIHdoZW4gcmVzYXZpbmdcIik7XG4gIH1cblxuICBhcHBTdGF0ZSA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgYXBwU3RhdGUpLCB7XG4gICAgZXhwb3J0RW1iZWRTY2VuZTogdHJ1ZVxuICB9KTtcbiAgY29uc3Qge1xuICAgIGV4cG9ydGVkRWxlbWVudHMsXG4gICAgZXhwb3J0aW5nRnJhbWVcbiAgfSA9IHByZXBhcmVFbGVtZW50c0ZvckV4cG9ydChlbGVtZW50cywgYXBwU3RhdGUsIGZhbHNlKTtcbiAgeWllbGQgZXhwb3J0Q2FudmFzKGZpbGVIYW5kbGVUeXBlLCBleHBvcnRlZEVsZW1lbnRzLCBhcHBTdGF0ZSwgZmlsZXMsIHtcbiAgICBleHBvcnRCYWNrZ3JvdW5kLFxuICAgIHZpZXdCYWNrZ3JvdW5kQ29sb3IsXG4gICAgbmFtZSxcbiAgICBmaWxlSGFuZGxlLFxuICAgIGV4cG9ydGluZ0ZyYW1lXG4gIH0pO1xuICByZXR1cm4ge1xuICAgIGZpbGVIYW5kbGVcbiAgfTtcbn0pOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../data/resave.ts\n');
              }
            ),
            /***/
            "../../data/restore.ts": (
              /*!*****************************!*\
                !*** ../../data/restore.ts ***!
                \*****************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "AllowedExcalidrawActiveTools": () => (/* binding */ AllowedExcalidrawActiveTools),
/* harmony export */   "restore": () => (/* binding */ restore),
/* harmony export */   "restoreAppState": () => (/* binding */ restoreAppState),
/* harmony export */   "restoreElements": () => (/* binding */ restoreElements),
/* harmony export */   "restoreLibraryItems": () => (/* binding */ restoreLibraryItems)
/* harmony export */ });
/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../element */ "../../element/index.ts");
/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../element/typeChecks */ "../../element/typeChecks.ts");
/* harmony import */ var _random__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../random */ "../../random.ts");
/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../constants */ "../../constants.ts");
/* harmony import */ var _appState__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../appState */ "../../appState.ts");
/* harmony import */ var _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../element/linearElementEditor */ "../../element/linearElementEditor.ts");
/* harmony import */ var _element_mutateElement__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../element/mutateElement */ "../../element/mutateElement.ts");
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils */ "../../utils.ts");
/* harmony import */ var _element_textElement__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../element/textElement */ "../../element/textElement.ts");
/* harmony import */ var _url__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./url */ "../../data/url.ts");











const AllowedExcalidrawActiveTools = {
  selection: true,
  text: true,
  rectangle: true,
  diamond: true,
  ellipse: true,
  line: true,
  image: true,
  arrow: true,
  freedraw: true,
  eraser: false,
  custom: true,
  frame: true,
  embeddable: true,
  hand: true,
  laser: false
};

const getFontFamilyByName = fontFamilyName => {
  if (Object.keys(_constants__WEBPACK_IMPORTED_MODULE_3__.FONT_FAMILY).includes(fontFamilyName)) {
    return _constants__WEBPACK_IMPORTED_MODULE_3__.FONT_FAMILY[fontFamilyName];
  }

  return _constants__WEBPACK_IMPORTED_MODULE_3__.DEFAULT_FONT_FAMILY;
};

const repairBinding = binding => {
  if (!binding) {
    return null;
  }

  return Object.assign(Object.assign({}, binding), {
    focus: binding.focus || 0
  });
};

const restoreElementWithProperties = (element, extra) => {
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;

  const base = {
    type: extra.type || element.type,
    // all elements must have version > 0 so getSceneVersion() will pick up
    // newly added elements
    version: element.version || 1,
    versionNonce: (_a = element.versionNonce) !== null && _a !== void 0 ? _a : 0,
    isDeleted: (_b = element.isDeleted) !== null && _b !== void 0 ? _b : false,
    id: element.id || (0,_random__WEBPACK_IMPORTED_MODULE_2__.randomId)(),
    fillStyle: element.fillStyle || _constants__WEBPACK_IMPORTED_MODULE_3__.DEFAULT_ELEMENT_PROPS.fillStyle,
    strokeWidth: element.strokeWidth || _constants__WEBPACK_IMPORTED_MODULE_3__.DEFAULT_ELEMENT_PROPS.strokeWidth,
    strokeStyle: (_c = element.strokeStyle) !== null && _c !== void 0 ? _c : _constants__WEBPACK_IMPORTED_MODULE_3__.DEFAULT_ELEMENT_PROPS.strokeStyle,
    roughness: (_d = element.roughness) !== null && _d !== void 0 ? _d : _constants__WEBPACK_IMPORTED_MODULE_3__.DEFAULT_ELEMENT_PROPS.roughness,
    opacity: element.opacity == null ? _constants__WEBPACK_IMPORTED_MODULE_3__.DEFAULT_ELEMENT_PROPS.opacity : element.opacity,
    angle: element.angle || 0,
    x: (_f = (_e = extra.x) !== null && _e !== void 0 ? _e : element.x) !== null && _f !== void 0 ? _f : 0,
    y: (_h = (_g = extra.y) !== null && _g !== void 0 ? _g : element.y) !== null && _h !== void 0 ? _h : 0,
    strokeColor: element.strokeColor || _constants__WEBPACK_IMPORTED_MODULE_3__.DEFAULT_ELEMENT_PROPS.strokeColor,
    backgroundColor: element.backgroundColor || _constants__WEBPACK_IMPORTED_MODULE_3__.DEFAULT_ELEMENT_PROPS.backgroundColor,
    width: element.width || 0,
    height: element.height || 0,
    seed: (_j = element.seed) !== null && _j !== void 0 ? _j : 1,
    groupIds: (_k = element.groupIds) !== null && _k !== void 0 ? _k : [],
    frameId: (_l = element.frameId) !== null && _l !== void 0 ? _l : null,
    roundness: element.roundness ? element.roundness : element.strokeSharpness === "round" ? {
      // for old elements that would now use adaptive radius algo,
      // use legacy algo instead
      type: (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isUsingAdaptiveRadius)(element.type) ? _constants__WEBPACK_IMPORTED_MODULE_3__.ROUNDNESS.LEGACY : _constants__WEBPACK_IMPORTED_MODULE_3__.ROUNDNESS.PROPORTIONAL_RADIUS
    } : null,
    boundElements: element.boundElementIds ? element.boundElementIds.map(id => ({
      type: "arrow",
      id
    })) : (_m = element.boundElements) !== null && _m !== void 0 ? _m : [],
    updated: (_o = element.updated) !== null && _o !== void 0 ? _o : (0,_utils__WEBPACK_IMPORTED_MODULE_7__.getUpdatedTimestamp)(),
    link: element.link ? (0,_url__WEBPACK_IMPORTED_MODULE_9__.normalizeLink)(element.link) : null,
    locked: (_p = element.locked) !== null && _p !== void 0 ? _p : false
  };

  if ("customData" in element) {
    base.customData = element.customData;
  }

  if (_constants__WEBPACK_IMPORTED_MODULE_3__.PRECEDING_ELEMENT_KEY in element) {
    base[_constants__WEBPACK_IMPORTED_MODULE_3__.PRECEDING_ELEMENT_KEY] = element[_constants__WEBPACK_IMPORTED_MODULE_3__.PRECEDING_ELEMENT_KEY];
  }

  return Object.assign(Object.assign(Object.assign({}, base), (0,_element__WEBPACK_IMPORTED_MODULE_0__.getNormalizedDimensions)(base)), extra);
};

const restoreElement = (element, refreshDimensions = false) => {
  var _a, _b;

  switch (element.type) {
    case "text":
      let fontSize = element.fontSize;
      let fontFamily = element.fontFamily;

      if ("font" in element) {
        const [fontPx, _fontFamily] = element.font.split(" ");
        fontSize = parseFloat(fontPx);
        fontFamily = getFontFamilyByName(_fontFamily);
      }

      const text = typeof element.text === "string" && element.text || ""; // line-height might not be specified either when creating elements
      // programmatically, or when importing old diagrams.
      // For the latter we want to detect the original line height which
      // will likely differ from our per-font fixed line height we now use,
      // to maintain backward compatibility.

      const lineHeight = element.lineHeight || (element.height ? // detect line-height from current element height and font-size
      (0,_element_textElement__WEBPACK_IMPORTED_MODULE_8__.detectLineHeight)(element) : // no element height likely means programmatic use, so default
      // to a fixed line height
      (0,_element_textElement__WEBPACK_IMPORTED_MODULE_8__.getDefaultLineHeight)(element.fontFamily));
      const baseline = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_8__.measureBaseline)(element.text, (0,_utils__WEBPACK_IMPORTED_MODULE_7__.getFontString)(element), lineHeight);
      element = restoreElementWithProperties(element, {
        fontSize,
        fontFamily,
        text,
        textAlign: element.textAlign || _constants__WEBPACK_IMPORTED_MODULE_3__.DEFAULT_TEXT_ALIGN,
        verticalAlign: element.verticalAlign || _constants__WEBPACK_IMPORTED_MODULE_3__.DEFAULT_VERTICAL_ALIGN,
        containerId: (_a = element.containerId) !== null && _a !== void 0 ? _a : null,
        originalText: element.originalText || text,
        lineHeight,
        baseline
      }); // if empty text, mark as deleted. We keep in array
      // for data integrity purposes (collab etc.)

      if (!text && !element.isDeleted) {
        element = Object.assign(Object.assign({}, element), {
          originalText: text,
          isDeleted: true
        });
        element = (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_6__.bumpVersion)(element);
      }

      if (refreshDimensions) {
        element = Object.assign(Object.assign({}, element), (0,_element__WEBPACK_IMPORTED_MODULE_0__.refreshTextDimensions)(element));
      }

      return element;

    case "freedraw":
      {
        return restoreElementWithProperties(element, {
          points: element.points,
          lastCommittedPoint: null,
          simulatePressure: element.simulatePressure,
          pressures: element.pressures
        });
      }

    case "image":
      return restoreElementWithProperties(element, {
        status: element.status || "pending",
        fileId: element.fileId,
        scale: element.scale || [1, 1]
      });

    case "line": // @ts-ignore LEGACY type
    // eslint-disable-next-line no-fallthrough

    case "draw":
    case "arrow":
      {
        const {
          startArrowhead = null,
          endArrowhead = element.type === "arrow" ? "arrow" : null
        } = element;
        let x = element.x;
        let y = element.y;
        let points = // migrate old arrow model to new one
        !Array.isArray(element.points) || element.points.length < 2 ? [[0, 0], [element.width, element.height]] : element.points;

        if (points[0][0] !== 0 || points[0][1] !== 0) {
          ({
            points,
            x,
            y
          } = _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_5__.LinearElementEditor.getNormalizedPoints(element));
        }

        return restoreElementWithProperties(element, {
          type: element.type === "draw" ? "line" : element.type,
          startBinding: repairBinding(element.startBinding),
          endBinding: repairBinding(element.endBinding),
          lastCommittedPoint: null,
          startArrowhead,
          endArrowhead,
          points,
          x,
          y
        });
      }
    // generic elements

    case "ellipse":
      return restoreElementWithProperties(element, {});

    case "rectangle":
      return restoreElementWithProperties(element, {});

    case "diamond":
      return restoreElementWithProperties(element, {});

    case "embeddable":
      return restoreElementWithProperties(element, {
        validated: null
      });

    case "frame":
      return restoreElementWithProperties(element, {
        name: (_b = element.name) !== null && _b !== void 0 ? _b : null
      });
    // Don't use default case so as to catch a missing an element type case.
    // We also don't want to throw, but instead return void so we filter
    // out these unsupported elements from the restored array.
  }

  return null;
};
/**
 * Repairs contaienr element's boundElements array by removing duplicates and
 * fixing containerId of bound elements if not present. Also removes any
 * bound elements that do not exist in the elements array.
 *
 * NOTE mutates elements.
 */


const repairContainerElement = (container, elementsMap) => {
  if (container.boundElements) {
    // copy because we're not cloning on restore, and we don't want to mutate upstream
    const boundElements = container.boundElements.slice(); // dedupe bindings & fix boundElement.containerId if not set already

    const boundIds = new Set();
    container.boundElements = boundElements.reduce((acc, binding) => {
      const boundElement = elementsMap.get(binding.id);

      if (boundElement && !boundIds.has(binding.id)) {
        boundIds.add(binding.id);

        if (boundElement.isDeleted) {
          return acc;
        }

        acc.push(binding);

        if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isTextElement)(boundElement) && // being slightly conservative here, preserving existing containerId
        // if defined, lest boundElements is stale
        !boundElement.containerId) {
          boundElement.containerId = container.id;
        }
      }

      return acc;
    }, []);
  }
};
/**
 * Repairs target bound element's container's boundElements array,
 * or removes contaienrId if container does not exist.
 *
 * NOTE mutates elements.
 */


const repairBoundElement = (boundElement, elementsMap) => {
  const container = boundElement.containerId ? elementsMap.get(boundElement.containerId) : null;

  if (!container) {
    boundElement.containerId = null;
    return;
  }

  if (boundElement.isDeleted) {
    return;
  }

  if (container.boundElements && !container.boundElements.find(binding => binding.id === boundElement.id)) {
    // copy because we're not cloning on restore, and we don't want to mutate upstream
    const boundElements = (container.boundElements || (container.boundElements = [])).slice();
    boundElements.push({
      type: "text",
      id: boundElement.id
    });
    container.boundElements = boundElements;
  }
};
/**
 * Remove an element's frameId if its containing frame is non-existent
 *
 * NOTE mutates elements.
 */


const repairFrameMembership = (element, elementsMap) => {
  if (element.frameId) {
    const containingFrame = elementsMap.get(element.frameId);

    if (!containingFrame) {
      element.frameId = null;
    }
  }
};

const restoreElements = (elements,
/** NOTE doesn't serve for reconciliation */
localElements, opts) => {
  // used to detect duplicate top-level element ids
  const existingIds = new Set();
  const localElementsMap = localElements ? (0,_utils__WEBPACK_IMPORTED_MODULE_7__.arrayToMap)(localElements) : null;
  const restoredElements = (elements || []).reduce((elements, element) => {
    // filtering out selection, which is legacy, no longer kept in elements,
    // and causing issues if retained
    if (element.type !== "selection" && !(0,_element__WEBPACK_IMPORTED_MODULE_0__.isInvisiblySmallElement)(element)) {
      let migratedElement = restoreElement(element, opts === null || opts === void 0 ? void 0 : opts.refreshDimensions);

      if (migratedElement) {
        const localElement = localElementsMap === null || localElementsMap === void 0 ? void 0 : localElementsMap.get(element.id);

        if (localElement && localElement.version > migratedElement.version) {
          migratedElement = (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_6__.bumpVersion)(migratedElement, localElement.version);
        }

        if (existingIds.has(migratedElement.id)) {
          migratedElement = Object.assign(Object.assign({}, migratedElement), {
            id: (0,_random__WEBPACK_IMPORTED_MODULE_2__.randomId)()
          });
        }

        existingIds.add(migratedElement.id);
        elements.push(migratedElement);
      }
    }

    return elements;
  }, []);

  if (!(opts === null || opts === void 0 ? void 0 : opts.repairBindings)) {
    return restoredElements;
  } // repair binding. Mutates elements.


  const restoredElementsMap = (0,_utils__WEBPACK_IMPORTED_MODULE_7__.arrayToMap)(restoredElements);

  for (const element of restoredElements) {
    if (element.frameId) {
      repairFrameMembership(element, restoredElementsMap);
    }

    if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isTextElement)(element) && element.containerId) {
      repairBoundElement(element, restoredElementsMap);
    } else if (element.boundElements) {
      repairContainerElement(element, restoredElementsMap);
    }
  }

  return restoredElements;
};

const coalesceAppStateValue = (key, appState, defaultAppState) => {
  const value = appState[key]; // NOTE the value! assertion is needed in TS 4.5.5 (fixed in newer versions)

  return value !== undefined ? value : defaultAppState[key];
};

const LegacyAppStateMigrations = {
  isSidebarDocked: (appState, defaultAppState) => {
    var _a;

    return ["defaultSidebarDockedPreference", (_a = appState.isSidebarDocked) !== null && _a !== void 0 ? _a : coalesceAppStateValue("defaultSidebarDockedPreference", appState, defaultAppState)];
  }
};
const restoreAppState = (appState, localAppState) => {
  var _a, _b, _c, _d;

  appState = appState || {};
  const defaultAppState = (0,_appState__WEBPACK_IMPORTED_MODULE_4__.getDefaultAppState)();
  const nextAppState = {}; // first, migrate all legacy AppState properties to new ones. We do it
  // in one go before migrate the rest of the properties in case the new ones
  // depend on checking any other key (i.e. they are coupled)

  for (const legacyKey of Object.keys(LegacyAppStateMigrations)) {
    if (legacyKey in appState) {
      const [nextKey, nextValue] = LegacyAppStateMigrations[legacyKey](appState, defaultAppState);
      nextAppState[nextKey] = nextValue;
    }
  }

  for (const [key, defaultValue] of Object.entries(defaultAppState)) {
    // if AppState contains a legacy key, prefer that one and migrate its
    // value to the new one
    const suppliedValue = appState[key];
    const localValue = localAppState ? localAppState[key] : undefined;
    nextAppState[key] = suppliedValue !== undefined ? suppliedValue : localValue !== undefined ? localValue : defaultValue;
  }

  return Object.assign(Object.assign({}, nextAppState), {
    cursorButton: (localAppState === null || localAppState === void 0 ? void 0 : localAppState.cursorButton) || "up",
    // reset on fresh restore so as to hide the UI button if penMode not active
    penDetected: (_a = localAppState === null || localAppState === void 0 ? void 0 : localAppState.penDetected) !== null && _a !== void 0 ? _a : appState.penMode ? (_b = appState.penDetected) !== null && _b !== void 0 ? _b : false : false,
    activeTool: Object.assign(Object.assign({}, (0,_utils__WEBPACK_IMPORTED_MODULE_7__.updateActiveTool)(defaultAppState, nextAppState.activeTool.type && AllowedExcalidrawActiveTools[nextAppState.activeTool.type] ? nextAppState.activeTool : {
      type: "selection"
    })), {
      lastActiveTool: null,
      locked: (_c = nextAppState.activeTool.locked) !== null && _c !== void 0 ? _c : false
    }),
    // Migrates from previous version where appState.zoom was a number
    zoom: typeof appState.zoom === "number" ? {
      value: appState.zoom
    } : ((_d = appState.zoom) === null || _d === void 0 ? void 0 : _d.value) ? appState.zoom : defaultAppState.zoom,
    openSidebar: // string (legacy)
    typeof appState.openSidebar === "string" ? {
      name: _constants__WEBPACK_IMPORTED_MODULE_3__.DEFAULT_SIDEBAR.name
    } : nextAppState.openSidebar
  });
};
const restore = (data,
/**
 * Local AppState (\`this.state\` or initial state from localStorage) so that we
 * don't overwrite local state with default values (when values not
 * explicitly specified).
 * Supply \`null\` if you can't get access to it.
 */
localAppState, localElements, elementsConfig) => {
  return {
    elements: restoreElements(data === null || data === void 0 ? void 0 : data.elements, localElements, elementsConfig),
    appState: restoreAppState(data === null || data === void 0 ? void 0 : data.appState, localAppState || null),
    files: (data === null || data === void 0 ? void 0 : data.files) || {}
  };
};

const restoreLibraryItem = libraryItem => {
  const elements = restoreElements((0,_element__WEBPACK_IMPORTED_MODULE_0__.getNonDeletedElements)(libraryItem.elements), null);
  return elements.length ? Object.assign(Object.assign({}, libraryItem), {
    elements
  }) : null;
};

const restoreLibraryItems = (libraryItems = [], defaultStatus) => {
  const restoredItems = [];

  for (const item of libraryItems) {
    // migrate older libraries
    if (Array.isArray(item)) {
      const restoredItem = restoreLibraryItem({
        status: defaultStatus,
        elements: item,
        id: (0,_random__WEBPACK_IMPORTED_MODULE_2__.randomId)(),
        created: Date.now()
      });

      if (restoredItem) {
        restoredItems.push(restoredItem);
      }
    } else {
      const _item = item;
      const restoredItem = restoreLibraryItem(Object.assign(Object.assign({}, _item), {
        id: _item.id || (0,_random__WEBPACK_IMPORTED_MODULE_2__.randomId)(),
        status: _item.status || defaultStatus,
        created: _item.created || Date.now()
      }));

      if (restoredItem) {
        restoredItems.push(restoredItem);
      }
    }
  }

  return restoredItems;
};//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 28304 characters]
//# sourceURL=webpack-internal:///../../data/restore.ts
`);
              }
            ),
            /***/
            "../../data/transform.ts": (
              /*!*******************************!*\
                !*** ../../data/transform.ts ***!
                \*******************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "convertToExcalidrawElements": () => (/* binding */ convertToExcalidrawElements)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _element_binding__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../element/binding */ "../../element/binding.ts");\n/* harmony import */ var _element_newElement__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../element/newElement */ "../../element/newElement.ts");\n/* harmony import */ var _element_textElement__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../element/textElement */ "../../element/textElement.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _points__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../points */ "../../points.ts");\n/* harmony import */ var _random__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../random */ "../../random.ts");\n\n\n\n\n\n\n\n\nconst DEFAULT_LINEAR_ELEMENT_PROPS = {\n  width: 100,\n  height: 0\n};\nconst DEFAULT_DIMENSION = 100;\n\nconst bindTextToContainer = (container, textProps) => {\n  const textElement = (0,_element_newElement__WEBPACK_IMPORTED_MODULE_3__.newTextElement)(Object.assign(Object.assign({\n    x: 0,\n    y: 0,\n    textAlign: _constants__WEBPACK_IMPORTED_MODULE_0__.TEXT_ALIGN.CENTER,\n    verticalAlign: _constants__WEBPACK_IMPORTED_MODULE_0__.VERTICAL_ALIGN.MIDDLE\n  }, textProps), {\n    containerId: container.id,\n    strokeColor: textProps.strokeColor || container.strokeColor\n  }));\n  Object.assign(container, {\n    boundElements: (container.boundElements || []).concat({\n      type: "text",\n      id: textElement.id\n    })\n  });\n  (0,_element__WEBPACK_IMPORTED_MODULE_1__.redrawTextBoundingBox)(textElement, container);\n  return [container, textElement];\n};\n\nconst bindLinearElementToElement = (linearElement, start, end, elementStore) => {\n  var _a, _b, _c, _d;\n\n  let startBoundElement;\n  let endBoundElement;\n  Object.assign(linearElement, {\n    startBinding: (linearElement === null || linearElement === void 0 ? void 0 : linearElement.startBinding) || null,\n    endBinding: linearElement.endBinding || null\n  });\n\n  if (start) {\n    const width = (_a = start === null || start === void 0 ? void 0 : start.width) !== null && _a !== void 0 ? _a : DEFAULT_DIMENSION;\n    const height = (_b = start === null || start === void 0 ? void 0 : start.height) !== null && _b !== void 0 ? _b : DEFAULT_DIMENSION;\n    let existingElement;\n\n    if (start.id) {\n      existingElement = elementStore.getElement(start.id);\n\n      if (!existingElement) {\n        console.error(`No element for start binding with id ${start.id} found`);\n      }\n    }\n\n    const startX = start.x || linearElement.x - width;\n    const startY = start.y || linearElement.y - height / 2;\n    const startType = existingElement ? existingElement.type : start.type;\n\n    if (startType) {\n      if (startType === "text") {\n        let text = "";\n\n        if (existingElement && existingElement.type === "text") {\n          text = existingElement.text;\n        } else if (start.type === "text") {\n          text = start.text;\n        }\n\n        if (!text) {\n          console.error(`No text found for start binding text element for ${linearElement.id}`);\n        }\n\n        startBoundElement = (0,_element_newElement__WEBPACK_IMPORTED_MODULE_3__.newTextElement)(Object.assign(Object.assign(Object.assign({\n          x: startX,\n          y: startY,\n          type: "text"\n        }, existingElement), start), {\n          text\n        })); // to position the text correctly when coordinates not provided\n\n        Object.assign(startBoundElement, {\n          x: start.x || linearElement.x - startBoundElement.width,\n          y: start.y || linearElement.y - startBoundElement.height / 2\n        });\n      } else {\n        switch (startType) {\n          case "rectangle":\n          case "ellipse":\n          case "diamond":\n            {\n              startBoundElement = (0,_element__WEBPACK_IMPORTED_MODULE_1__.newElement)(Object.assign(Object.assign(Object.assign({\n                x: startX,\n                y: startY,\n                width,\n                height\n              }, existingElement), start), {\n                type: startType\n              }));\n              break;\n            }\n\n          default:\n            {\n              (0,_utils__WEBPACK_IMPORTED_MODULE_5__.assertNever)(linearElement, `Unhandled element start type "${start.type}"`, true);\n            }\n        }\n      }\n\n      (0,_element_binding__WEBPACK_IMPORTED_MODULE_2__.bindLinearElement)(linearElement, startBoundElement, "start");\n    }\n  }\n\n  if (end) {\n    const height = (_c = end === null || end === void 0 ? void 0 : end.height) !== null && _c !== void 0 ? _c : DEFAULT_DIMENSION;\n    const width = (_d = end === null || end === void 0 ? void 0 : end.width) !== null && _d !== void 0 ? _d : DEFAULT_DIMENSION;\n    let existingElement;\n\n    if (end.id) {\n      existingElement = elementStore.getElement(end.id);\n\n      if (!existingElement) {\n        console.error(`No element for end binding with id ${end.id} found`);\n      }\n    }\n\n    const endX = end.x || linearElement.x + linearElement.width;\n    const endY = end.y || linearElement.y - height / 2;\n    const endType = existingElement ? existingElement.type : end.type;\n\n    if (endType) {\n      if (endType === "text") {\n        let text = "";\n\n        if (existingElement && existingElement.type === "text") {\n          text = existingElement.text;\n        } else if (end.type === "text") {\n          text = end.text;\n        }\n\n        if (!text) {\n          console.error(`No text found for end binding text element for ${linearElement.id}`);\n        }\n\n        endBoundElement = (0,_element_newElement__WEBPACK_IMPORTED_MODULE_3__.newTextElement)(Object.assign(Object.assign(Object.assign({\n          x: endX,\n          y: endY,\n          type: "text"\n        }, existingElement), end), {\n          text\n        })); // to position the text correctly when coordinates not provided\n\n        Object.assign(endBoundElement, {\n          y: end.y || linearElement.y - endBoundElement.height / 2\n        });\n      } else {\n        switch (endType) {\n          case "rectangle":\n          case "ellipse":\n          case "diamond":\n            {\n              endBoundElement = (0,_element__WEBPACK_IMPORTED_MODULE_1__.newElement)(Object.assign(Object.assign(Object.assign({\n                x: endX,\n                y: endY,\n                width,\n                height\n              }, existingElement), end), {\n                type: endType\n              }));\n              break;\n            }\n\n          default:\n            {\n              (0,_utils__WEBPACK_IMPORTED_MODULE_5__.assertNever)(linearElement, `Unhandled element end type "${endType}"`, true);\n            }\n        }\n      }\n\n      (0,_element_binding__WEBPACK_IMPORTED_MODULE_2__.bindLinearElement)(linearElement, endBoundElement, "end");\n    }\n  } // Update start/end points by 0.5 so bindings don\'t overlap with start/end bound element coordinates.\n\n\n  const endPointIndex = linearElement.points.length - 1;\n  const delta = 0.5;\n  const newPoints = (0,_utils__WEBPACK_IMPORTED_MODULE_5__.cloneJSON)(linearElement.points); // left to right so shift the arrow towards right\n\n  if (linearElement.points[endPointIndex][0] > linearElement.points[endPointIndex - 1][0]) {\n    newPoints[0][0] = delta;\n    newPoints[endPointIndex][0] -= delta;\n  } // right to left so shift the arrow towards left\n\n\n  if (linearElement.points[endPointIndex][0] < linearElement.points[endPointIndex - 1][0]) {\n    newPoints[0][0] = -delta;\n    newPoints[endPointIndex][0] += delta;\n  } // top to bottom so shift the arrow towards top\n\n\n  if (linearElement.points[endPointIndex][1] > linearElement.points[endPointIndex - 1][1]) {\n    newPoints[0][1] = delta;\n    newPoints[endPointIndex][1] -= delta;\n  } // bottom to top so shift the arrow towards bottom\n\n\n  if (linearElement.points[endPointIndex][1] < linearElement.points[endPointIndex - 1][1]) {\n    newPoints[0][1] = -delta;\n    newPoints[endPointIndex][1] += delta;\n  }\n\n  Object.assign(linearElement, {\n    points: newPoints\n  });\n  return {\n    linearElement,\n    startBoundElement,\n    endBoundElement\n  };\n};\n\nclass ElementStore {\n  constructor() {\n    this.excalidrawElements = new Map();\n\n    this.add = ele => {\n      if (!ele) {\n        return;\n      }\n\n      this.excalidrawElements.set(ele.id, ele);\n    };\n\n    this.getElements = () => {\n      return Array.from(this.excalidrawElements.values());\n    };\n\n    this.getElement = id => {\n      return this.excalidrawElements.get(id);\n    };\n  }\n\n}\n\nconst convertToExcalidrawElements = (elementsSkeleton, opts) => {\n  var _a, _b, _c, _d;\n\n  if (!elementsSkeleton) {\n    return [];\n  }\n\n  const elements = (0,_utils__WEBPACK_IMPORTED_MODULE_5__.cloneJSON)(elementsSkeleton);\n  const elementStore = new ElementStore();\n  const elementsWithIds = new Map();\n  const oldToNewElementIdMap = new Map(); // Create individual elements\n\n  for (const element of elements) {\n    let excalidrawElement;\n    const originalId = element.id;\n\n    if ((opts === null || opts === void 0 ? void 0 : opts.regenerateIds) !== false) {\n      Object.assign(element, {\n        id: (0,_random__WEBPACK_IMPORTED_MODULE_7__.randomId)()\n      });\n    }\n\n    switch (element.type) {\n      case "rectangle":\n      case "ellipse":\n      case "diamond":\n        {\n          const width = ((_a = element === null || element === void 0 ? void 0 : element.label) === null || _a === void 0 ? void 0 : _a.text) && element.width === undefined ? 0 : (element === null || element === void 0 ? void 0 : element.width) || DEFAULT_DIMENSION;\n          const height = ((_b = element === null || element === void 0 ? void 0 : element.label) === null || _b === void 0 ? void 0 : _b.text) && element.height === undefined ? 0 : (element === null || element === void 0 ? void 0 : element.height) || DEFAULT_DIMENSION;\n          excalidrawElement = (0,_element__WEBPACK_IMPORTED_MODULE_1__.newElement)(Object.assign(Object.assign({}, element), {\n            width,\n            height\n          }));\n          break;\n        }\n\n      case "line":\n        {\n          const width = element.width || DEFAULT_LINEAR_ELEMENT_PROPS.width;\n          const height = element.height || DEFAULT_LINEAR_ELEMENT_PROPS.height;\n          excalidrawElement = (0,_element__WEBPACK_IMPORTED_MODULE_1__.newLinearElement)(Object.assign({\n            width,\n            height,\n            points: [[0, 0], [width, height]]\n          }, element));\n          break;\n        }\n\n      case "arrow":\n        {\n          const width = element.width || DEFAULT_LINEAR_ELEMENT_PROPS.width;\n          const height = element.height || DEFAULT_LINEAR_ELEMENT_PROPS.height;\n          excalidrawElement = (0,_element__WEBPACK_IMPORTED_MODULE_1__.newLinearElement)(Object.assign({\n            width,\n            height,\n            endArrowhead: "arrow",\n            points: [[0, 0], [width, height]]\n          }, element));\n          Object.assign(excalidrawElement, (0,_points__WEBPACK_IMPORTED_MODULE_6__.getSizeFromPoints)(excalidrawElement.points));\n          break;\n        }\n\n      case "text":\n        {\n          const fontFamily = (element === null || element === void 0 ? void 0 : element.fontFamily) || _constants__WEBPACK_IMPORTED_MODULE_0__.DEFAULT_FONT_FAMILY;\n          const fontSize = (element === null || element === void 0 ? void 0 : element.fontSize) || _constants__WEBPACK_IMPORTED_MODULE_0__.DEFAULT_FONT_SIZE;\n          const lineHeight = (element === null || element === void 0 ? void 0 : element.lineHeight) || (0,_element_textElement__WEBPACK_IMPORTED_MODULE_4__.getDefaultLineHeight)(fontFamily);\n          const text = (_c = element.text) !== null && _c !== void 0 ? _c : "";\n          const normalizedText = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_4__.normalizeText)(text);\n          const metrics = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_4__.measureText)(normalizedText, (0,_utils__WEBPACK_IMPORTED_MODULE_5__.getFontString)({\n            fontFamily,\n            fontSize\n          }), lineHeight);\n          excalidrawElement = (0,_element_newElement__WEBPACK_IMPORTED_MODULE_3__.newTextElement)(Object.assign({\n            width: metrics.width,\n            height: metrics.height,\n            fontFamily,\n            fontSize\n          }, element));\n          break;\n        }\n\n      case "image":\n        {\n          excalidrawElement = (0,_element_newElement__WEBPACK_IMPORTED_MODULE_3__.newImageElement)(Object.assign({\n            width: (element === null || element === void 0 ? void 0 : element.width) || DEFAULT_DIMENSION,\n            height: (element === null || element === void 0 ? void 0 : element.height) || DEFAULT_DIMENSION\n          }, element));\n          break;\n        }\n\n      case "frame":\n        {\n          excalidrawElement = (0,_element_newElement__WEBPACK_IMPORTED_MODULE_3__.newFrameElement)(Object.assign({\n            x: 0,\n            y: 0\n          }, element));\n          break;\n        }\n\n      case "freedraw":\n      case "embeddable":\n        {\n          excalidrawElement = element;\n          break;\n        }\n\n      default:\n        {\n          excalidrawElement = element;\n          (0,_utils__WEBPACK_IMPORTED_MODULE_5__.assertNever)(element, `Unhandled element type "${element.type}"`, true);\n        }\n    }\n\n    const existingElement = elementStore.getElement(excalidrawElement.id);\n\n    if (existingElement) {\n      console.error(`Duplicate id found for ${excalidrawElement.id}`);\n    } else {\n      elementStore.add(excalidrawElement);\n      elementsWithIds.set(excalidrawElement.id, element);\n\n      if (originalId) {\n        oldToNewElementIdMap.set(originalId, excalidrawElement.id);\n      }\n    }\n  } // Add labels and arrow bindings\n\n\n  for (const [id, element] of elementsWithIds) {\n    const excalidrawElement = elementStore.getElement(id);\n\n    switch (element.type) {\n      case "rectangle":\n      case "ellipse":\n      case "diamond":\n      case "arrow":\n        {\n          if ((_d = element.label) === null || _d === void 0 ? void 0 : _d.text) {\n            let [container, text] = bindTextToContainer(excalidrawElement, element === null || element === void 0 ? void 0 : element.label);\n            elementStore.add(container);\n            elementStore.add(text);\n\n            if (container.type === "arrow") {\n              const originalStart = element.type === "arrow" ? element === null || element === void 0 ? void 0 : element.start : undefined;\n              const originalEnd = element.type === "arrow" ? element === null || element === void 0 ? void 0 : element.end : undefined;\n\n              if (originalStart && originalStart.id) {\n                const newStartId = oldToNewElementIdMap.get(originalStart.id);\n\n                if (newStartId) {\n                  Object.assign(originalStart, {\n                    id: newStartId\n                  });\n                }\n              }\n\n              if (originalEnd && originalEnd.id) {\n                const newEndId = oldToNewElementIdMap.get(originalEnd.id);\n\n                if (newEndId) {\n                  Object.assign(originalEnd, {\n                    id: newEndId\n                  });\n                }\n              }\n\n              const {\n                linearElement,\n                startBoundElement,\n                endBoundElement\n              } = bindLinearElementToElement(container, originalStart, originalEnd, elementStore);\n              container = linearElement;\n              elementStore.add(linearElement);\n              elementStore.add(startBoundElement);\n              elementStore.add(endBoundElement);\n            }\n          } else {\n            switch (element.type) {\n              case "arrow":\n                {\n                  const {\n                    start,\n                    end\n                  } = element;\n\n                  if (start && start.id) {\n                    const newStartId = oldToNewElementIdMap.get(start.id);\n                    Object.assign(start, {\n                      id: newStartId\n                    });\n                  }\n\n                  if (end && end.id) {\n                    const newEndId = oldToNewElementIdMap.get(end.id);\n                    Object.assign(end, {\n                      id: newEndId\n                    });\n                  }\n\n                  const {\n                    linearElement,\n                    startBoundElement,\n                    endBoundElement\n                  } = bindLinearElementToElement(excalidrawElement, start, end, elementStore);\n                  elementStore.add(linearElement);\n                  elementStore.add(startBoundElement);\n                  elementStore.add(endBoundElement);\n                  break;\n                }\n            }\n          }\n\n          break;\n        }\n    }\n  } // Once all the excalidraw elements are created, we can add frames since we\n  // need to calculate coordinates and dimensions of frame which is possibe after all\n  // frame children are processed.\n\n\n  for (const [id, element] of elementsWithIds) {\n    if (element.type !== "frame") {\n      continue;\n    }\n\n    const frame = elementStore.getElement(id);\n\n    if (!frame) {\n      throw new Error(`Excalidraw element with id ${id} doesn\'t exist`);\n    }\n\n    const childrenElements = [];\n    element.children.forEach(id => {\n      var _a;\n\n      const newElementId = oldToNewElementIdMap.get(id);\n\n      if (!newElementId) {\n        throw new Error(`Element with ${id} wasn\'t mapped correctly`);\n      }\n\n      const elementInFrame = elementStore.getElement(newElementId);\n\n      if (!elementInFrame) {\n        throw new Error(`Frame element with id ${newElementId} doesn\'t exist`);\n      }\n\n      Object.assign(elementInFrame, {\n        frameId: frame.id\n      });\n      (_a = elementInFrame === null || elementInFrame === void 0 ? void 0 : elementInFrame.boundElements) === null || _a === void 0 ? void 0 : _a.forEach(boundElement => {\n        const ele = elementStore.getElement(boundElement.id);\n\n        if (!ele) {\n          throw new Error(`Bound element with id ${boundElement.id} doesn\'t exist`);\n        }\n\n        Object.assign(ele, {\n          frameId: frame.id\n        });\n        childrenElements.push(ele);\n      });\n      childrenElements.push(elementInFrame);\n    });\n    let [minX, minY, maxX, maxY] = (0,_element__WEBPACK_IMPORTED_MODULE_1__.getCommonBounds)(childrenElements);\n    const PADDING = 10;\n    minX = minX - PADDING;\n    minY = minY - PADDING;\n    maxX = maxX + PADDING;\n    maxY = maxY + PADDING; // Take the max of calculated and provided frame dimensions, whichever is higher\n\n    const width = Math.max(frame === null || frame === void 0 ? void 0 : frame.width, maxX - minX);\n    const height = Math.max(frame === null || frame === void 0 ? void 0 : frame.height, maxY - minY);\n    Object.assign(frame, {\n      x: minX,\n      y: minY,\n      width,\n      height\n    });\n  }\n\n  return elementStore.getElements();\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 28480 characters]\n//# sourceURL=webpack-internal:///../../data/transform.ts\n');
              }
            ),
            /***/
            "../../data/url.ts": (
              /*!*************************!*\
                !*** ../../data/url.ts ***!
                \*************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "isLocalLink": () => (/* binding */ isLocalLink),\n/* harmony export */   "normalizeLink": () => (/* binding */ normalizeLink),\n/* harmony export */   "sanitizeHTMLAttribute": () => (/* binding */ sanitizeHTMLAttribute),\n/* harmony export */   "toValidURL": () => (/* binding */ toValidURL)\n/* harmony export */ });\n/* harmony import */ var _braintree_sanitize_url__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @braintree/sanitize-url */ "../../../node_modules/@braintree/sanitize-url/dist/index.js");\n\nconst sanitizeHTMLAttribute = html => {\n  return html.replace(/"/g, "&quot;");\n};\nconst normalizeLink = link => {\n  link = link.trim();\n\n  if (!link) {\n    return link;\n  }\n\n  return (0,_braintree_sanitize_url__WEBPACK_IMPORTED_MODULE_0__.sanitizeUrl)(sanitizeHTMLAttribute(link));\n};\nconst isLocalLink = link => {\n  return !!((link === null || link === void 0 ? void 0 : link.includes(location.origin)) || (link === null || link === void 0 ? void 0 : link.startsWith("/")));\n};\n/**\n * Returns URL sanitized and safe for usage in places such as\n * iframe\'s src attribute or <a> href attributes.\n */\n\nconst toValidURL = link => {\n  link = normalizeLink(link); // make relative links into fully-qualified urls\n\n  if (link.startsWith("/")) {\n    return `${location.origin}${link}`;\n  }\n\n  try {\n    new URL(link);\n  } catch (_a) {\n    // if link does not parse as URL, assume invalid and return blank page\n    return "about:blank";\n  }\n\n  return link;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZGF0YS91cmwudHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBc0Q7QUFDL0M7QUFDUCxtQ0FBbUM7QUFDbkM7QUFDTztBQUNQOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxTQUFTLG9FQUFXO0FBQ3BCO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUCw4QkFBOEI7O0FBRTlCO0FBQ0EsY0FBYyxnQkFBZ0IsRUFBRSxLQUFLO0FBQ3JDOztBQUVBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vZGF0YS91cmwudHM/ZDEzNyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzYW5pdGl6ZVVybCB9IGZyb20gXCJAYnJhaW50cmVlL3Nhbml0aXplLXVybFwiO1xuZXhwb3J0IGNvbnN0IHNhbml0aXplSFRNTEF0dHJpYnV0ZSA9IGh0bWwgPT4ge1xuICByZXR1cm4gaHRtbC5yZXBsYWNlKC9cIi9nLCBcIiZxdW90O1wiKTtcbn07XG5leHBvcnQgY29uc3Qgbm9ybWFsaXplTGluayA9IGxpbmsgPT4ge1xuICBsaW5rID0gbGluay50cmltKCk7XG5cbiAgaWYgKCFsaW5rKSB7XG4gICAgcmV0dXJuIGxpbms7XG4gIH1cblxuICByZXR1cm4gc2FuaXRpemVVcmwoc2FuaXRpemVIVE1MQXR0cmlidXRlKGxpbmspKTtcbn07XG5leHBvcnQgY29uc3QgaXNMb2NhbExpbmsgPSBsaW5rID0+IHtcbiAgcmV0dXJuICEhKChsaW5rID09PSBudWxsIHx8IGxpbmsgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGxpbmsuaW5jbHVkZXMobG9jYXRpb24ub3JpZ2luKSkgfHwgKGxpbmsgPT09IG51bGwgfHwgbGluayA9PT0gdm9pZCAwID8gdm9pZCAwIDogbGluay5zdGFydHNXaXRoKFwiL1wiKSkpO1xufTtcbi8qKlxuICogUmV0dXJucyBVUkwgc2FuaXRpemVkIGFuZCBzYWZlIGZvciB1c2FnZSBpbiBwbGFjZXMgc3VjaCBhc1xuICogaWZyYW1lJ3Mgc3JjIGF0dHJpYnV0ZSBvciA8YT4gaHJlZiBhdHRyaWJ1dGVzLlxuICovXG5cbmV4cG9ydCBjb25zdCB0b1ZhbGlkVVJMID0gbGluayA9PiB7XG4gIGxpbmsgPSBub3JtYWxpemVMaW5rKGxpbmspOyAvLyBtYWtlIHJlbGF0aXZlIGxpbmtzIGludG8gZnVsbHktcXVhbGlmaWVkIHVybHNcblxuICBpZiAobGluay5zdGFydHNXaXRoKFwiL1wiKSkge1xuICAgIHJldHVybiBgJHtsb2NhdGlvbi5vcmlnaW59JHtsaW5rfWA7XG4gIH1cblxuICB0cnkge1xuICAgIG5ldyBVUkwobGluayk7XG4gIH0gY2F0Y2ggKF9hKSB7XG4gICAgLy8gaWYgbGluayBkb2VzIG5vdCBwYXJzZSBhcyBVUkwsIGFzc3VtZSBpbnZhbGlkIGFuZCByZXR1cm4gYmxhbmsgcGFnZVxuICAgIHJldHVybiBcImFib3V0OmJsYW5rXCI7XG4gIH1cblxuICByZXR1cm4gbGluaztcbn07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../data/url.ts\n');
              }
            ),
            /***/
            "../../distribute.ts": (
              /*!***************************!*\
                !*** ../../distribute.ts ***!
                \***************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "distributeElements": () => (/* binding */ distributeElements)
/* harmony export */ });
/* harmony import */ var _element_mutateElement__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./element/mutateElement */ "../../element/mutateElement.ts");
/* harmony import */ var _groups__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./groups */ "../../groups.ts");
/* harmony import */ var _element_bounds__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./element/bounds */ "../../element/bounds.ts");



const distributeElements = (selectedElements, distribution) => {
  const [start, mid, end, extent] = distribution.axis === "x" ? ["minX", "midX", "maxX", "width"] : ["minY", "midY", "maxY", "height"];
  const bounds = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_2__.getCommonBoundingBox)(selectedElements);
  const groups = (0,_groups__WEBPACK_IMPORTED_MODULE_1__.getMaximumGroups)(selectedElements).map(group => [group, (0,_element_bounds__WEBPACK_IMPORTED_MODULE_2__.getCommonBoundingBox)(group)]).sort((a, b) => a[1][mid] - b[1][mid]);
  let span = 0;

  for (const group of groups) {
    span += group[1][extent];
  }

  const step = (bounds[extent] - span) / (groups.length - 1);

  if (step < 0) {
    // If we have a negative step, we'll need to distribute from centers
    // rather than from gaps. Buckle up, this is a weird one.
    // Get indices of boxes that define start and end of our bounding box
    const index0 = groups.findIndex(g => g[1][start] === bounds[start]);
    const index1 = groups.findIndex(g => g[1][end] === bounds[end]); // Get our step, based on the distance between the center points of our
    // start and end boxes

    const step = (groups[index1][1][mid] - groups[index0][1][mid]) / (groups.length - 1);
    let pos = groups[index0][1][mid];
    return groups.flatMap(([group, box], index) => {
      const translation = {
        x: 0,
        y: 0
      }; // Don't move our start and end boxes

      if (index !== index0 && index !== index1) {
        pos += step;
        translation[distribution.axis] = pos - box[mid];
      }

      return group.map(element => (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_0__.newElementWith)(element, {
        x: element.x + translation.x,
        y: element.y + translation.y
      }));
    });
  } // Distribute from gaps


  let pos = bounds[start];
  return groups.flatMap(([group, box]) => {
    const translation = {
      x: 0,
      y: 0
    };
    translation[distribution.axis] = pos - box[start];
    pos += step;
    pos += box[extent];
    return group.map(element => (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_0__.newElementWith)(element, {
      x: element.x + translation.x,
      y: element.y + translation.y
    }));
  });
};//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZGlzdHJpYnV0ZS50cy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQXlEO0FBQ2I7QUFDWTtBQUNqRDtBQUNQO0FBQ0EsaUJBQWlCLHFFQUFvQjtBQUNyQyxpQkFBaUIseURBQWdCLHdDQUF3QyxxRUFBb0I7QUFDN0Y7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxRUFBcUU7QUFDckU7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUzs7QUFFVDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxrQ0FBa0Msc0VBQWM7QUFDaEQ7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0wsSUFBSTs7O0FBR0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDLHNFQUFjO0FBQzlDO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2Rpc3RyaWJ1dGUudHM/NzZiOCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBuZXdFbGVtZW50V2l0aCB9IGZyb20gXCIuL2VsZW1lbnQvbXV0YXRlRWxlbWVudFwiO1xuaW1wb3J0IHsgZ2V0TWF4aW11bUdyb3VwcyB9IGZyb20gXCIuL2dyb3Vwc1wiO1xuaW1wb3J0IHsgZ2V0Q29tbW9uQm91bmRpbmdCb3ggfSBmcm9tIFwiLi9lbGVtZW50L2JvdW5kc1wiO1xuZXhwb3J0IGNvbnN0IGRpc3RyaWJ1dGVFbGVtZW50cyA9IChzZWxlY3RlZEVsZW1lbnRzLCBkaXN0cmlidXRpb24pID0+IHtcbiAgY29uc3QgW3N0YXJ0LCBtaWQsIGVuZCwgZXh0ZW50XSA9IGRpc3RyaWJ1dGlvbi5heGlzID09PSBcInhcIiA/IFtcIm1pblhcIiwgXCJtaWRYXCIsIFwibWF4WFwiLCBcIndpZHRoXCJdIDogW1wibWluWVwiLCBcIm1pZFlcIiwgXCJtYXhZXCIsIFwiaGVpZ2h0XCJdO1xuICBjb25zdCBib3VuZHMgPSBnZXRDb21tb25Cb3VuZGluZ0JveChzZWxlY3RlZEVsZW1lbnRzKTtcbiAgY29uc3QgZ3JvdXBzID0gZ2V0TWF4aW11bUdyb3VwcyhzZWxlY3RlZEVsZW1lbnRzKS5tYXAoZ3JvdXAgPT4gW2dyb3VwLCBnZXRDb21tb25Cb3VuZGluZ0JveChncm91cCldKS5zb3J0KChhLCBiKSA9PiBhWzFdW21pZF0gLSBiWzFdW21pZF0pO1xuICBsZXQgc3BhbiA9IDA7XG5cbiAgZm9yIChjb25zdCBncm91cCBvZiBncm91cHMpIHtcbiAgICBzcGFuICs9IGdyb3VwWzFdW2V4dGVudF07XG4gIH1cblxuICBjb25zdCBzdGVwID0gKGJvdW5kc1tleHRlbnRdIC0gc3BhbikgLyAoZ3JvdXBzLmxlbmd0aCAtIDEpO1xuXG4gIGlmIChzdGVwIDwgMCkge1xuICAgIC8vIElmIHdlIGhhdmUgYSBuZWdhdGl2ZSBzdGVwLCB3ZSdsbCBuZWVkIHRvIGRpc3RyaWJ1dGUgZnJvbSBjZW50ZXJzXG4gICAgLy8gcmF0aGVyIHRoYW4gZnJvbSBnYXBzLiBCdWNrbGUgdXAsIHRoaXMgaXMgYSB3ZWlyZCBvbmUuXG4gICAgLy8gR2V0IGluZGljZXMgb2YgYm94ZXMgdGhhdCBkZWZpbmUgc3RhcnQgYW5kIGVuZCBvZiBvdXIgYm91bmRpbmcgYm94XG4gICAgY29uc3QgaW5kZXgwID0gZ3JvdXBzLmZpbmRJbmRleChnID0+IGdbMV1bc3RhcnRdID09PSBib3VuZHNbc3RhcnRdKTtcbiAgICBjb25zdCBpbmRleDEgPSBncm91cHMuZmluZEluZGV4KGcgPT4gZ1sxXVtlbmRdID09PSBib3VuZHNbZW5kXSk7IC8vIEdldCBvdXIgc3RlcCwgYmFzZWQgb24gdGhlIGRpc3RhbmNlIGJldHdlZW4gdGhlIGNlbnRlciBwb2ludHMgb2Ygb3VyXG4gICAgLy8gc3RhcnQgYW5kIGVuZCBib3hlc1xuXG4gICAgY29uc3Qgc3RlcCA9IChncm91cHNbaW5kZXgxXVsxXVttaWRdIC0gZ3JvdXBzW2luZGV4MF1bMV1bbWlkXSkgLyAoZ3JvdXBzLmxlbmd0aCAtIDEpO1xuICAgIGxldCBwb3MgPSBncm91cHNbaW5kZXgwXVsxXVttaWRdO1xuICAgIHJldHVybiBncm91cHMuZmxhdE1hcCgoW2dyb3VwLCBib3hdLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgdHJhbnNsYXRpb24gPSB7XG4gICAgICAgIHg6IDAsXG4gICAgICAgIHk6IDBcbiAgICAgIH07IC8vIERvbid0IG1vdmUgb3VyIHN0YXJ0IGFuZCBlbmQgYm94ZXNcblxuICAgICAgaWYgKGluZGV4ICE9PSBpbmRleDAgJiYgaW5kZXggIT09IGluZGV4MSkge1xuICAgICAgICBwb3MgKz0gc3RlcDtcbiAgICAgICAgdHJhbnNsYXRpb25bZGlzdHJpYnV0aW9uLmF4aXNdID0gcG9zIC0gYm94W21pZF07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBncm91cC5tYXAoZWxlbWVudCA9PiBuZXdFbGVtZW50V2l0aChlbGVtZW50LCB7XG4gICAgICAgIHg6IGVsZW1lbnQueCArIHRyYW5zbGF0aW9uLngsXG4gICAgICAgIHk6IGVsZW1lbnQueSArIHRyYW5zbGF0aW9uLnlcbiAgICAgIH0pKTtcbiAgICB9KTtcbiAgfSAvLyBEaXN0cmlidXRlIGZyb20gZ2Fwc1xuXG5cbiAgbGV0IHBvcyA9IGJvdW5kc1tzdGFydF07XG4gIHJldHVybiBncm91cHMuZmxhdE1hcCgoW2dyb3VwLCBib3hdKSA9PiB7XG4gICAgY29uc3QgdHJhbnNsYXRpb24gPSB7XG4gICAgICB4OiAwLFxuICAgICAgeTogMFxuICAgIH07XG4gICAgdHJhbnNsYXRpb25bZGlzdHJpYnV0aW9uLmF4aXNdID0gcG9zIC0gYm94W3N0YXJ0XTtcbiAgICBwb3MgKz0gc3RlcDtcbiAgICBwb3MgKz0gYm94W2V4dGVudF07XG4gICAgcmV0dXJuIGdyb3VwLm1hcChlbGVtZW50ID0+IG5ld0VsZW1lbnRXaXRoKGVsZW1lbnQsIHtcbiAgICAgIHg6IGVsZW1lbnQueCArIHRyYW5zbGF0aW9uLngsXG4gICAgICB5OiBlbGVtZW50LnkgKyB0cmFuc2xhdGlvbi55XG4gICAgfSkpO1xuICB9KTtcbn07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9
//# sourceURL=webpack-internal:///../../distribute.ts
`);
              }
            ),
            /***/
            "../../element/Hyperlink.tsx": (
              /*!***********************************!*\
                !*** ../../element/Hyperlink.tsx ***!
                \***********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "EXTERNAL_LINK_IMG": () => (/* binding */ EXTERNAL_LINK_IMG),\n/* harmony export */   "Hyperlink": () => (/* binding */ Hyperlink),\n/* harmony export */   "actionLink": () => (/* binding */ actionLink),\n/* harmony export */   "getContextMenuLabel": () => (/* binding */ getContextMenuLabel),\n/* harmony export */   "getLinkHandleFromCoords": () => (/* binding */ getLinkHandleFromCoords),\n/* harmony export */   "hideHyperlinkToolip": () => (/* binding */ hideHyperlinkToolip),\n/* harmony export */   "isPointHittingLink": () => (/* binding */ isPointHittingLink),\n/* harmony export */   "isPointHittingLinkIcon": () => (/* binding */ isPointHittingLinkIcon),\n/* harmony export */   "shouldHideLinkPopup": () => (/* binding */ shouldHideLinkPopup),\n/* harmony export */   "showHyperlinkTooltip": () => (/* binding */ showHyperlinkTooltip)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _embeddable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./embeddable */ "../../element/embeddable.ts");\n/* harmony import */ var _mutateElement__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./mutateElement */ "../../element/mutateElement.ts");\n/* harmony import */ var _actions_register__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../actions/register */ "../../actions/register.ts");\n/* harmony import */ var _components_ToolButton__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../components/ToolButton */ "../../components/ToolButton.tsx");\n/* harmony import */ var _components_icons__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../components/icons */ "../../components/icons.tsx");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! clsx */ "../../../node_modules/clsx/dist/clsx.m.js");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _renderer_renderElement__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../renderer/renderElement */ "../../renderer/renderElement.ts");\n/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../math */ "../../math.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _components_Tooltip__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../components/Tooltip */ "../../components/Tooltip.tsx");\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../scene */ "../../scene/index.ts");\n/* harmony import */ var _collision__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./collision */ "../../element/collision.ts");\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./ */ "../../element/index.ts");\n/* harmony import */ var _data_url__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../data/url */ "../../data/url.ts");\n/* harmony import */ var _Hyperlink_scss__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./Hyperlink.scss */ "../../element/Hyperlink.scss");\n/* harmony import */ var _analytics__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../analytics */ "../../analytics.ts");\n/* harmony import */ var _components_App__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../components/App */ "../../components/App.tsx");\n/* harmony import */ var _typeChecks__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../scene/ShapeCache */ "../../scene/ShapeCache.ts");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst CONTAINER_WIDTH = 320;\nconst SPACE_BOTTOM = 85;\nconst CONTAINER_PADDING = 5;\nconst CONTAINER_HEIGHT = 42;\nconst AUTO_HIDE_TIMEOUT = 500;\nconst EXTERNAL_LINK_IMG = document.createElement("img");\nEXTERNAL_LINK_IMG.src = `data:${_constants__WEBPACK_IMPORTED_MODULE_13__.MIME_TYPES.svg}, ${encodeURIComponent(`<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="#1971c2" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-external-link"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1="10" y1="14" x2="21" y2="3"></line></svg>`)}`;\nlet IS_HYPERLINK_TOOLTIP_VISIBLE = false;\nconst embeddableLinkCache = new Map();\nconst Hyperlink = ({\n  element,\n  setAppState,\n  onLinkOpen,\n  setToast\n}) => {\n  const appState = (0,_components_App__WEBPACK_IMPORTED_MODULE_21__.useExcalidrawAppState)();\n  const appProps = (0,_components_App__WEBPACK_IMPORTED_MODULE_21__.useAppProps)();\n  const linkVal = element.link || "";\n  const [inputVal, setInputVal] = (0,react__WEBPACK_IMPORTED_MODULE_8__.useState)(linkVal);\n  const inputRef = (0,react__WEBPACK_IMPORTED_MODULE_8__.useRef)(null);\n  const isEditing = appState.showHyperlinkPopup === "editor";\n  const handleSubmit = (0,react__WEBPACK_IMPORTED_MODULE_8__.useCallback)(() => {\n    var _a;\n\n    if (!inputRef.current) {\n      return;\n    }\n\n    const link = (0,_data_url__WEBPACK_IMPORTED_MODULE_18__.normalizeLink)(inputRef.current.value) || null;\n\n    if (!element.link && link) {\n      (0,_analytics__WEBPACK_IMPORTED_MODULE_20__.trackEvent)("hyperlink", "create");\n    }\n\n    if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_22__.isEmbeddableElement)(element)) {\n      if (((_a = appState.activeEmbeddable) === null || _a === void 0 ? void 0 : _a.element) === element) {\n        setAppState({\n          activeEmbeddable: null\n        });\n      }\n\n      if (!link) {\n        (0,_mutateElement__WEBPACK_IMPORTED_MODULE_3__.mutateElement)(element, {\n          validated: false,\n          link: null\n        });\n        return;\n      }\n\n      if (!(0,_embeddable__WEBPACK_IMPORTED_MODULE_2__.embeddableURLValidator)(link, appProps.validateEmbeddable)) {\n        if (link) {\n          setToast({\n            message: (0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)("toast.unableToEmbed"),\n            closable: true\n          });\n        }\n\n        element.link && embeddableLinkCache.set(element.id, element.link);\n        (0,_mutateElement__WEBPACK_IMPORTED_MODULE_3__.mutateElement)(element, {\n          validated: false,\n          link\n        });\n        _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_23__.ShapeCache["delete"](element);\n      } else {\n        const {\n          width,\n          height\n        } = element;\n        const embedLink = (0,_embeddable__WEBPACK_IMPORTED_MODULE_2__.getEmbedLink)(link);\n\n        if (embedLink === null || embedLink === void 0 ? void 0 : embedLink.warning) {\n          setToast({\n            message: embedLink.warning,\n            closable: true\n          });\n        }\n\n        const ar = embedLink ? embedLink.aspectRatio.w / embedLink.aspectRatio.h : 1;\n        const hasLinkChanged = embeddableLinkCache.get(element.id) !== element.link;\n        (0,_mutateElement__WEBPACK_IMPORTED_MODULE_3__.mutateElement)(element, Object.assign(Object.assign({}, hasLinkChanged ? {\n          width: (embedLink === null || embedLink === void 0 ? void 0 : embedLink.type) === "video" ? width > height ? width : height * ar : width,\n          height: (embedLink === null || embedLink === void 0 ? void 0 : embedLink.type) === "video" ? width > height ? width / ar : height : height\n        } : {}), {\n          validated: true,\n          link\n        }));\n        _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_23__.ShapeCache["delete"](element);\n\n        if (embeddableLinkCache.has(element.id)) {\n          embeddableLinkCache.delete(element.id);\n        }\n      }\n    } else {\n      (0,_mutateElement__WEBPACK_IMPORTED_MODULE_3__.mutateElement)(element, {\n        link\n      });\n    }\n  }, [element, setToast, appProps.validateEmbeddable, appState.activeEmbeddable, setAppState]);\n  (0,react__WEBPACK_IMPORTED_MODULE_8__.useLayoutEffect)(() => {\n    return () => {\n      handleSubmit();\n    };\n  }, [handleSubmit]);\n  (0,react__WEBPACK_IMPORTED_MODULE_8__.useEffect)(() => {\n    let timeoutId = null;\n\n    const handlePointerMove = event => {\n      if (isEditing) {\n        return;\n      }\n\n      if (timeoutId) {\n        clearTimeout(timeoutId);\n      }\n\n      const shouldHide = shouldHideLinkPopup(element, appState, [event.clientX, event.clientY]);\n\n      if (shouldHide) {\n        timeoutId = window.setTimeout(() => {\n          setAppState({\n            showHyperlinkPopup: false\n          });\n        }, AUTO_HIDE_TIMEOUT);\n      }\n    };\n\n    window.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_13__.EVENT.POINTER_MOVE, handlePointerMove, false);\n    return () => {\n      window.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_13__.EVENT.POINTER_MOVE, handlePointerMove, false);\n\n      if (timeoutId) {\n        clearTimeout(timeoutId);\n      }\n    };\n  }, [appState, element, isEditing, setAppState]);\n  const handleRemove = (0,react__WEBPACK_IMPORTED_MODULE_8__.useCallback)(() => {\n    (0,_analytics__WEBPACK_IMPORTED_MODULE_20__.trackEvent)("hyperlink", "delete");\n    (0,_mutateElement__WEBPACK_IMPORTED_MODULE_3__.mutateElement)(element, {\n      link: null\n    });\n\n    if (isEditing) {\n      inputRef.current.value = "";\n    }\n\n    setAppState({\n      showHyperlinkPopup: false\n    });\n  }, [setAppState, element, isEditing]);\n\n  const onEdit = () => {\n    (0,_analytics__WEBPACK_IMPORTED_MODULE_20__.trackEvent)("hyperlink", "edit", "popup-ui");\n    setAppState({\n      showHyperlinkPopup: "editor"\n    });\n  };\n\n  const {\n    x,\n    y\n  } = getCoordsForPopover(element, appState);\n\n  if (appState.draggingElement || appState.resizingElement || appState.isRotating || appState.openMenu || appState.viewModeEnabled) {\n    return null;\n  }\n\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n    className: "excalidraw-hyperlinkContainer",\n    style: {\n      top: `${y}px`,\n      left: `${x}px`,\n      width: CONTAINER_WIDTH,\n      padding: CONTAINER_PADDING\n    },\n    onClick: () => {\n      if (!element.link && !isEditing) {\n        setAppState({\n          showHyperlinkPopup: "editor"\n        });\n      }\n    }\n  }, {\n    children: [isEditing ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input", {\n      className: (0,clsx__WEBPACK_IMPORTED_MODULE_9__["default"])("excalidraw-hyperlinkContainer-input"),\n      placeholder: "Type or paste your link here",\n      ref: inputRef,\n      value: inputVal,\n      onChange: event => setInputVal(event.target.value),\n      autoFocus: true,\n      onKeyDown: event => {\n        event.stopPropagation(); // prevent cmd/ctrl+k shortcut when editing link\n\n        if (event[_keys__WEBPACK_IMPORTED_MODULE_10__.KEYS.CTRL_OR_CMD] && event.key === _keys__WEBPACK_IMPORTED_MODULE_10__.KEYS.K) {\n          event.preventDefault();\n        }\n\n        if (event.key === _keys__WEBPACK_IMPORTED_MODULE_10__.KEYS.ENTER || event.key === _keys__WEBPACK_IMPORTED_MODULE_10__.KEYS.ESCAPE) {\n          handleSubmit();\n          setAppState({\n            showHyperlinkPopup: "info"\n          });\n        }\n      }\n    }) : element.link ? (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("a", Object.assign({\n      href: (0,_data_url__WEBPACK_IMPORTED_MODULE_18__.normalizeLink)(element.link || ""),\n      className: "excalidraw-hyperlinkContainer-link",\n      target: (0,_data_url__WEBPACK_IMPORTED_MODULE_18__.isLocalLink)(element.link) ? "_self" : "_blank",\n      onClick: event => {\n        if (element.link && onLinkOpen) {\n          const customEvent = (0,_utils__WEBPACK_IMPORTED_MODULE_1__.wrapEvent)(_constants__WEBPACK_IMPORTED_MODULE_13__.EVENT.EXCALIDRAW_LINK, event.nativeEvent);\n          onLinkOpen(Object.assign(Object.assign({}, element), {\n            link: (0,_data_url__WEBPACK_IMPORTED_MODULE_18__.normalizeLink)(element.link)\n          }), customEvent);\n\n          if (customEvent.defaultPrevented) {\n            event.preventDefault();\n          }\n        }\n      },\n      rel: "noopener noreferrer"\n    }, {\n      children: element.link\n    })) : (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", Object.assign({\n      className: "excalidraw-hyperlinkContainer-link"\n    }, {\n      children: (0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)("labels.link.empty")\n    })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", Object.assign({\n      className: "excalidraw-hyperlinkContainer__buttons"\n    }, {\n      children: [!isEditing && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ToolButton__WEBPACK_IMPORTED_MODULE_5__.ToolButton, {\n        type: "button",\n        title: (0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)("buttons.edit"),\n        "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)("buttons.edit"),\n        label: (0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)("buttons.edit"),\n        onClick: onEdit,\n        className: "excalidraw-hyperlinkContainer--edit",\n        icon: _components_icons__WEBPACK_IMPORTED_MODULE_6__.FreedrawIcon\n      }), linkVal && !(0,_typeChecks__WEBPACK_IMPORTED_MODULE_22__.isEmbeddableElement)(element) && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ToolButton__WEBPACK_IMPORTED_MODULE_5__.ToolButton, {\n        type: "button",\n        title: (0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)("buttons.remove"),\n        "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)("buttons.remove"),\n        label: (0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)("buttons.remove"),\n        onClick: handleRemove,\n        className: "excalidraw-hyperlinkContainer--remove",\n        icon: _components_icons__WEBPACK_IMPORTED_MODULE_6__.TrashIcon\n      })]\n    }))]\n  }));\n};\n\nconst getCoordsForPopover = (element, appState) => {\n  const [x1, y1] = (0,___WEBPACK_IMPORTED_MODULE_17__.getElementAbsoluteCoords)(element);\n  const {\n    x: viewportX,\n    y: viewportY\n  } = (0,_utils__WEBPACK_IMPORTED_MODULE_1__.sceneCoordsToViewportCoords)({\n    sceneX: x1 + element.width / 2,\n    sceneY: y1\n  }, appState);\n  const x = viewportX - appState.offsetLeft - CONTAINER_WIDTH / 2;\n  const y = viewportY - appState.offsetTop - SPACE_BOTTOM;\n  return {\n    x,\n    y\n  };\n};\n\nconst actionLink = (0,_actions_register__WEBPACK_IMPORTED_MODULE_4__.register)({\n  name: "hyperlink",\n  perform: (elements, appState) => {\n    if (appState.showHyperlinkPopup === "editor") {\n      return false;\n    }\n\n    return {\n      elements,\n      appState: Object.assign(Object.assign({}, appState), {\n        showHyperlinkPopup: "editor",\n        openMenu: null\n      }),\n      commitToHistory: true\n    };\n  },\n  trackEvent: {\n    category: "hyperlink",\n    action: "click"\n  },\n  keyTest: event => event[_keys__WEBPACK_IMPORTED_MODULE_10__.KEYS.CTRL_OR_CMD] && event.key === _keys__WEBPACK_IMPORTED_MODULE_10__.KEYS.K,\n  contextItemLabel: (elements, appState) => getContextMenuLabel(elements, appState),\n  predicate: (elements, appState) => {\n    const selectedElements = (0,_scene__WEBPACK_IMPORTED_MODULE_15__.getSelectedElements)(elements, appState);\n    return selectedElements.length === 1;\n  },\n  PanelComponent: ({\n    elements,\n    appState,\n    updateData\n  }) => {\n    const selectedElements = (0,_scene__WEBPACK_IMPORTED_MODULE_15__.getSelectedElements)(elements, appState);\n    return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ToolButton__WEBPACK_IMPORTED_MODULE_5__.ToolButton, {\n      type: "button",\n      icon: _components_icons__WEBPACK_IMPORTED_MODULE_6__.LinkIcon,\n      "aria-label": (0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)(getContextMenuLabel(elements, appState)),\n      title: `${(0,_typeChecks__WEBPACK_IMPORTED_MODULE_22__.isEmbeddableElement)(elements[0]) ? (0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)("labels.link.labelEmbed") : (0,_i18n__WEBPACK_IMPORTED_MODULE_7__.t)("labels.link.label")} - ${(0,_utils__WEBPACK_IMPORTED_MODULE_1__.getShortcutKey)("CtrlOrCmd+K")}`,\n      onClick: () => updateData(null),\n      selected: selectedElements.length === 1 && !!selectedElements[0].link\n    });\n  }\n});\nconst getContextMenuLabel = (elements, appState) => {\n  const selectedElements = (0,_scene__WEBPACK_IMPORTED_MODULE_15__.getSelectedElements)(elements, appState);\n  const label = selectedElements[0].link ? (0,_typeChecks__WEBPACK_IMPORTED_MODULE_22__.isEmbeddableElement)(selectedElements[0]) ? "labels.link.editEmbed" : "labels.link.edit" : (0,_typeChecks__WEBPACK_IMPORTED_MODULE_22__.isEmbeddableElement)(selectedElements[0]) ? "labels.link.createEmbed" : "labels.link.create";\n  return label;\n};\nconst getLinkHandleFromCoords = ([x1, y1, x2, y2], angle, appState) => {\n  const size = _renderer_renderElement__WEBPACK_IMPORTED_MODULE_11__.DEFAULT_LINK_SIZE;\n  const linkWidth = size / appState.zoom.value;\n  const linkHeight = size / appState.zoom.value;\n  const linkMarginY = size / appState.zoom.value;\n  const centerX = (x1 + x2) / 2;\n  const centerY = (y1 + y2) / 2;\n  const centeringOffset = (size - 8) / (2 * appState.zoom.value);\n  const dashedLineMargin = 4 / appState.zoom.value; // Same as `ne` resize handle\n\n  const x = x2 + dashedLineMargin - centeringOffset;\n  const y = y1 - dashedLineMargin - linkMarginY + centeringOffset;\n  const [rotatedX, rotatedY] = (0,_math__WEBPACK_IMPORTED_MODULE_12__.rotate)(x + linkWidth / 2, y + linkHeight / 2, centerX, centerY, angle);\n  return [rotatedX - linkWidth / 2, rotatedY - linkHeight / 2, linkWidth, linkHeight];\n};\nconst isPointHittingLinkIcon = (element, appState, [x, y]) => {\n  const threshold = 4 / appState.zoom.value;\n  const [x1, y1, x2, y2] = (0,___WEBPACK_IMPORTED_MODULE_17__.getElementAbsoluteCoords)(element);\n  const [linkX, linkY, linkWidth, linkHeight] = getLinkHandleFromCoords([x1, y1, x2, y2], element.angle, appState);\n  const hitLink = x > linkX - threshold && x < linkX + threshold + linkWidth && y > linkY - threshold && y < linkY + linkHeight + threshold;\n  return hitLink;\n};\nconst isPointHittingLink = (element, appState, [x, y], isMobile) => {\n  if (!element.link || appState.selectedElementIds[element.id]) {\n    return false;\n  }\n\n  const threshold = 4 / appState.zoom.value;\n\n  if (!isMobile && appState.viewModeEnabled && (0,_collision__WEBPACK_IMPORTED_MODULE_16__.isPointHittingElementBoundingBox)(element, [x, y], threshold, null)) {\n    return true;\n  }\n\n  return isPointHittingLinkIcon(element, appState, [x, y]);\n};\nlet HYPERLINK_TOOLTIP_TIMEOUT_ID = null;\nconst showHyperlinkTooltip = (element, appState) => {\n  if (HYPERLINK_TOOLTIP_TIMEOUT_ID) {\n    clearTimeout(HYPERLINK_TOOLTIP_TIMEOUT_ID);\n  }\n\n  HYPERLINK_TOOLTIP_TIMEOUT_ID = window.setTimeout(() => renderTooltip(element, appState), _constants__WEBPACK_IMPORTED_MODULE_13__.HYPERLINK_TOOLTIP_DELAY);\n};\n\nconst renderTooltip = (element, appState) => {\n  if (!element.link) {\n    return;\n  }\n\n  const tooltipDiv = (0,_components_Tooltip__WEBPACK_IMPORTED_MODULE_14__.getTooltipDiv)();\n  tooltipDiv.classList.add("excalidraw-tooltip--visible");\n  tooltipDiv.style.maxWidth = "20rem";\n  tooltipDiv.textContent = element.link;\n  const [x1, y1, x2, y2] = (0,___WEBPACK_IMPORTED_MODULE_17__.getElementAbsoluteCoords)(element);\n  const [linkX, linkY, linkWidth, linkHeight] = getLinkHandleFromCoords([x1, y1, x2, y2], element.angle, appState);\n  const linkViewportCoords = (0,_utils__WEBPACK_IMPORTED_MODULE_1__.sceneCoordsToViewportCoords)({\n    sceneX: linkX,\n    sceneY: linkY\n  }, appState);\n  (0,_components_Tooltip__WEBPACK_IMPORTED_MODULE_14__.updateTooltipPosition)(tooltipDiv, {\n    left: linkViewportCoords.x,\n    top: linkViewportCoords.y,\n    width: linkWidth,\n    height: linkHeight\n  }, "top");\n  (0,_analytics__WEBPACK_IMPORTED_MODULE_20__.trackEvent)("hyperlink", "tooltip", "link-icon");\n  IS_HYPERLINK_TOOLTIP_VISIBLE = true;\n};\n\nconst hideHyperlinkToolip = () => {\n  if (HYPERLINK_TOOLTIP_TIMEOUT_ID) {\n    clearTimeout(HYPERLINK_TOOLTIP_TIMEOUT_ID);\n  }\n\n  if (IS_HYPERLINK_TOOLTIP_VISIBLE) {\n    IS_HYPERLINK_TOOLTIP_VISIBLE = false;\n    (0,_components_Tooltip__WEBPACK_IMPORTED_MODULE_14__.getTooltipDiv)().classList.remove("excalidraw-tooltip--visible");\n  }\n};\nconst shouldHideLinkPopup = (element, appState, [clientX, clientY]) => {\n  const {\n    x: sceneX,\n    y: sceneY\n  } = (0,_utils__WEBPACK_IMPORTED_MODULE_1__.viewportCoordsToSceneCoords)({\n    clientX,\n    clientY\n  }, appState);\n  const threshold = 15 / appState.zoom.value; // hitbox to prevent hiding when hovered in element bounding box\n\n  if ((0,_collision__WEBPACK_IMPORTED_MODULE_16__.isPointHittingElementBoundingBox)(element, [sceneX, sceneY], threshold, null)) {\n    return false;\n  }\n\n  const [x1, y1, x2] = (0,___WEBPACK_IMPORTED_MODULE_17__.getElementAbsoluteCoords)(element); // hit box to prevent hiding when hovered in the vertical area between element and popover\n\n  if (sceneX >= x1 && sceneX <= x2 && sceneY >= y1 - SPACE_BOTTOM && sceneY <= y1) {\n    return false;\n  } // hit box to prevent hiding when hovered around popover within threshold\n\n\n  const {\n    x: popoverX,\n    y: popoverY\n  } = getCoordsForPopover(element, appState);\n\n  if (clientX >= popoverX - threshold && clientX <= popoverX + CONTAINER_WIDTH + CONTAINER_PADDING * 2 + threshold && clientY >= popoverY - threshold && clientY <= popoverY + threshold + CONTAINER_PADDING * 2 + CONTAINER_HEIGHT) {\n    return false;\n  }\n\n  return true;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 26276 characters]\n//# sourceURL=webpack-internal:///../../element/Hyperlink.tsx\n');
              }
            ),
            /***/
            "../../element/binding.ts": (
              /*!********************************!*\
                !*** ../../element/binding.ts ***!
                \********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "bindLinearElement": () => (/* binding */ bindLinearElement),\n/* harmony export */   "bindOrUnbindLinearElement": () => (/* binding */ bindOrUnbindLinearElement),\n/* harmony export */   "bindOrUnbindSelectedElements": () => (/* binding */ bindOrUnbindSelectedElements),\n/* harmony export */   "fixBindingsAfterDeletion": () => (/* binding */ fixBindingsAfterDeletion),\n/* harmony export */   "fixBindingsAfterDuplication": () => (/* binding */ fixBindingsAfterDuplication),\n/* harmony export */   "getEligibleElementsForBinding": () => (/* binding */ getEligibleElementsForBinding),\n/* harmony export */   "getHoveredElementForBinding": () => (/* binding */ getHoveredElementForBinding),\n/* harmony export */   "isBindingEnabled": () => (/* binding */ isBindingEnabled),\n/* harmony export */   "isLinearElementSimpleAndAlreadyBound": () => (/* binding */ isLinearElementSimpleAndAlreadyBound),\n/* harmony export */   "maybeBindLinearElement": () => (/* binding */ maybeBindLinearElement),\n/* harmony export */   "shouldEnableBindingForPointerEvent": () => (/* binding */ shouldEnableBindingForPointerEvent),\n/* harmony export */   "unbindLinearElements": () => (/* binding */ unbindLinearElements),\n/* harmony export */   "updateBoundElements": () => (/* binding */ updateBoundElements)\n/* harmony export */ });\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../scene */ "../../scene/index.ts");\n/* harmony import */ var _typeChecks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var _collision__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./collision */ "../../element/collision.ts");\n/* harmony import */ var _mutateElement__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./mutateElement */ "../../element/mutateElement.ts");\n/* harmony import */ var _scene_Scene__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../scene/Scene */ "../../scene/Scene.ts");\n/* harmony import */ var _linearElementEditor__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./linearElementEditor */ "../../element/linearElementEditor.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _textElement__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./textElement */ "../../element/textElement.ts");\n\n\n\n\n\n\n\n\n\nconst shouldEnableBindingForPointerEvent = event => {\n  return !event[_keys__WEBPACK_IMPORTED_MODULE_7__.KEYS.CTRL_OR_CMD];\n};\nconst isBindingEnabled = appState => {\n  return appState.isBindingEnabled;\n};\n\nconst getNonDeletedElements = (scene, ids) => {\n  const result = [];\n  ids.forEach(id => {\n    const element = scene.getNonDeletedElement(id);\n\n    if (element != null) {\n      result.push(element);\n    }\n  });\n  return result;\n};\n\nconst bindOrUnbindLinearElement = (linearElement, startBindingElement, endBindingElement) => {\n  const boundToElementIds = new Set();\n  const unboundFromElementIds = new Set();\n  bindOrUnbindLinearElementEdge(linearElement, startBindingElement, endBindingElement, "start", boundToElementIds, unboundFromElementIds);\n  bindOrUnbindLinearElementEdge(linearElement, endBindingElement, startBindingElement, "end", boundToElementIds, unboundFromElementIds);\n  const onlyUnbound = Array.from(unboundFromElementIds).filter(id => !boundToElementIds.has(id));\n  getNonDeletedElements(_scene_Scene__WEBPACK_IMPORTED_MODULE_4__["default"].getScene(linearElement), onlyUnbound).forEach(element => {\n    var _a;\n\n    (0,_mutateElement__WEBPACK_IMPORTED_MODULE_3__.mutateElement)(element, {\n      boundElements: (_a = element.boundElements) === null || _a === void 0 ? void 0 : _a.filter(element => element.type !== "arrow" || element.id !== linearElement.id)\n    });\n  });\n};\n\nconst bindOrUnbindLinearElementEdge = (linearElement, bindableElement, otherEdgeBindableElement, startOrEnd, // Is mutated\nboundToElementIds, // Is mutated\nunboundFromElementIds) => {\n  if (bindableElement !== "keep") {\n    if (bindableElement != null) {\n      // Don\'t bind if we\'re trying to bind or are already bound to the same\n      // element on the other edge already ("start" edge takes precedence).\n      if (otherEdgeBindableElement == null || (otherEdgeBindableElement === "keep" ? !isLinearElementSimpleAndAlreadyBoundOnOppositeEdge(linearElement, bindableElement, startOrEnd) : startOrEnd === "start" || otherEdgeBindableElement.id !== bindableElement.id)) {\n        bindLinearElement(linearElement, bindableElement, startOrEnd);\n        boundToElementIds.add(bindableElement.id);\n      }\n    } else {\n      const unbound = unbindLinearElement(linearElement, startOrEnd);\n\n      if (unbound != null) {\n        unboundFromElementIds.add(unbound);\n      }\n    }\n  }\n};\n\nconst bindOrUnbindSelectedElements = elements => {\n  elements.forEach(element => {\n    if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isBindingElement)(element)) {\n      bindOrUnbindLinearElement(element, getElligibleElementForBindingElement(element, "start"), getElligibleElementForBindingElement(element, "end"));\n    } else if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isBindableElement)(element)) {\n      maybeBindBindableElement(element);\n    }\n  });\n};\n\nconst maybeBindBindableElement = bindableElement => {\n  getElligibleElementsForBindableElementAndWhere(bindableElement).forEach(([linearElement, where]) => bindOrUnbindLinearElement(linearElement, where === "end" ? "keep" : bindableElement, where === "start" ? "keep" : bindableElement));\n};\n\nconst maybeBindLinearElement = (linearElement, appState, scene, pointerCoords) => {\n  if (appState.startBoundElement != null) {\n    bindLinearElement(linearElement, appState.startBoundElement, "start");\n  }\n\n  const hoveredElement = getHoveredElementForBinding(pointerCoords, scene);\n\n  if (hoveredElement != null && !isLinearElementSimpleAndAlreadyBoundOnOppositeEdge(linearElement, hoveredElement, "end")) {\n    bindLinearElement(linearElement, hoveredElement, "end");\n  }\n};\nconst bindLinearElement = (linearElement, hoveredElement, startOrEnd) => {\n  (0,_mutateElement__WEBPACK_IMPORTED_MODULE_3__.mutateElement)(linearElement, {\n    [startOrEnd === "start" ? "startBinding" : "endBinding"]: Object.assign({\n      elementId: hoveredElement.id\n    }, calculateFocusAndGap(linearElement, hoveredElement, startOrEnd))\n  });\n  const boundElementsMap = (0,_utils__WEBPACK_IMPORTED_MODULE_6__.arrayToMap)(hoveredElement.boundElements || []);\n\n  if (!boundElementsMap.has(linearElement.id)) {\n    (0,_mutateElement__WEBPACK_IMPORTED_MODULE_3__.mutateElement)(hoveredElement, {\n      boundElements: (hoveredElement.boundElements || []).concat({\n        id: linearElement.id,\n        type: "arrow"\n      })\n    });\n  }\n}; // Don\'t bind both ends of a simple segment\n\nconst isLinearElementSimpleAndAlreadyBoundOnOppositeEdge = (linearElement, bindableElement, startOrEnd) => {\n  const otherBinding = linearElement[startOrEnd === "start" ? "endBinding" : "startBinding"];\n  return isLinearElementSimpleAndAlreadyBound(linearElement, otherBinding === null || otherBinding === void 0 ? void 0 : otherBinding.elementId, bindableElement);\n};\n\nconst isLinearElementSimpleAndAlreadyBound = (linearElement, alreadyBoundToId, bindableElement) => {\n  return alreadyBoundToId === bindableElement.id && linearElement.points.length < 3;\n};\nconst unbindLinearElements = elements => {\n  elements.forEach(element => {\n    if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isBindingElement)(element)) {\n      bindOrUnbindLinearElement(element, null, null);\n    }\n  });\n};\n\nconst unbindLinearElement = (linearElement, startOrEnd) => {\n  const field = startOrEnd === "start" ? "startBinding" : "endBinding";\n  const binding = linearElement[field];\n\n  if (binding == null) {\n    return null;\n  }\n\n  (0,_mutateElement__WEBPACK_IMPORTED_MODULE_3__.mutateElement)(linearElement, {\n    [field]: null\n  });\n  return binding.elementId;\n};\n\nconst getHoveredElementForBinding = (pointerCoords, scene) => {\n  const hoveredElement = (0,_scene__WEBPACK_IMPORTED_MODULE_0__.getElementAtPosition)(scene.getNonDeletedElements(), element => (0,_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isBindableElement)(element, false) && (0,_collision__WEBPACK_IMPORTED_MODULE_2__.bindingBorderTest)(element, pointerCoords));\n  return hoveredElement;\n};\n\nconst calculateFocusAndGap = (linearElement, hoveredElement, startOrEnd) => {\n  const direction = startOrEnd === "start" ? -1 : 1;\n  const edgePointIndex = direction === -1 ? 0 : linearElement.points.length - 1;\n  const adjacentPointIndex = edgePointIndex - direction;\n  const edgePoint = _linearElementEditor__WEBPACK_IMPORTED_MODULE_5__.LinearElementEditor.getPointAtIndexGlobalCoordinates(linearElement, edgePointIndex);\n  const adjacentPoint = _linearElementEditor__WEBPACK_IMPORTED_MODULE_5__.LinearElementEditor.getPointAtIndexGlobalCoordinates(linearElement, adjacentPointIndex);\n  return {\n    focus: (0,_collision__WEBPACK_IMPORTED_MODULE_2__.determineFocusDistance)(hoveredElement, adjacentPoint, edgePoint),\n    gap: Math.max(1, (0,_collision__WEBPACK_IMPORTED_MODULE_2__.distanceToBindableElement)(hoveredElement, edgePoint))\n  };\n}; // Supports translating, rotating and scaling `changedElement` with bound\n// linear elements.\n// Because scaling involves moving the focus points as well, it is\n// done before the `changedElement` is updated, and the `newSize` is passed\n// in explicitly.\n\n\nconst updateBoundElements = (changedElement, options) => {\n  var _a;\n\n  const boundLinearElements = ((_a = changedElement.boundElements) !== null && _a !== void 0 ? _a : []).filter(el => el.type === "arrow");\n\n  if (boundLinearElements.length === 0) {\n    return;\n  }\n\n  const {\n    newSize,\n    simultaneouslyUpdated\n  } = options !== null && options !== void 0 ? options : {};\n  const simultaneouslyUpdatedElementIds = getSimultaneouslyUpdatedElementIds(simultaneouslyUpdated);\n  getNonDeletedElements(_scene_Scene__WEBPACK_IMPORTED_MODULE_4__["default"].getScene(changedElement), boundLinearElements.map(el => el.id)).forEach(element => {\n    if (!(0,_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isLinearElement)(element)) {\n      return;\n    }\n\n    const bindableElement = changedElement; // In case the boundElements are stale\n\n    if (!doesNeedUpdate(element, bindableElement)) {\n      return;\n    }\n\n    const startBinding = maybeCalculateNewGapWhenScaling(bindableElement, element.startBinding, newSize);\n    const endBinding = maybeCalculateNewGapWhenScaling(bindableElement, element.endBinding, newSize); // `linearElement` is being moved/scaled already, just update the binding\n\n    if (simultaneouslyUpdatedElementIds.has(element.id)) {\n      (0,_mutateElement__WEBPACK_IMPORTED_MODULE_3__.mutateElement)(element, {\n        startBinding,\n        endBinding\n      });\n      return;\n    }\n\n    updateBoundPoint(element, "start", startBinding, changedElement);\n    updateBoundPoint(element, "end", endBinding, changedElement);\n    const boundText = (0,_textElement__WEBPACK_IMPORTED_MODULE_8__.getBoundTextElement)(element);\n\n    if (boundText) {\n      (0,_textElement__WEBPACK_IMPORTED_MODULE_8__.handleBindTextResize)(element, false);\n    }\n  });\n};\n\nconst doesNeedUpdate = (boundElement, changedElement) => {\n  var _a, _b;\n\n  return ((_a = boundElement.startBinding) === null || _a === void 0 ? void 0 : _a.elementId) === changedElement.id || ((_b = boundElement.endBinding) === null || _b === void 0 ? void 0 : _b.elementId) === changedElement.id;\n};\n\nconst getSimultaneouslyUpdatedElementIds = simultaneouslyUpdated => {\n  return new Set((simultaneouslyUpdated || []).map(element => element.id));\n};\n\nconst updateBoundPoint = (linearElement, startOrEnd, binding, changedElement) => {\n  if (binding == null || // We only need to update the other end if this is a 2 point line element\n  binding.elementId !== changedElement.id && linearElement.points.length > 2) {\n    return;\n  }\n\n  const bindingElement = _scene_Scene__WEBPACK_IMPORTED_MODULE_4__["default"].getScene(linearElement).getElement(binding.elementId);\n\n  if (bindingElement == null) {\n    // We\'re not cleaning up after deleted elements atm., so handle this case\n    return;\n  }\n\n  const direction = startOrEnd === "start" ? -1 : 1;\n  const edgePointIndex = direction === -1 ? 0 : linearElement.points.length - 1;\n  const adjacentPointIndex = edgePointIndex - direction;\n  const adjacentPoint = _linearElementEditor__WEBPACK_IMPORTED_MODULE_5__.LinearElementEditor.getPointAtIndexGlobalCoordinates(linearElement, adjacentPointIndex);\n  const focusPointAbsolute = (0,_collision__WEBPACK_IMPORTED_MODULE_2__.determineFocusPoint)(bindingElement, binding.focus, adjacentPoint);\n  let newEdgePoint; // The linear element was not originally pointing inside the bound shape,\n  // we can point directly at the focus point\n\n  if (binding.gap === 0) {\n    newEdgePoint = focusPointAbsolute;\n  } else {\n    const intersections = (0,_collision__WEBPACK_IMPORTED_MODULE_2__.intersectElementWithLine)(bindingElement, adjacentPoint, focusPointAbsolute, binding.gap);\n\n    if (intersections.length === 0) {\n      // This should never happen, since focusPoint should always be\n      // inside the element, but just in case, bail out\n      newEdgePoint = focusPointAbsolute;\n    } else {\n      // Guaranteed to intersect because focusPoint is always inside the shape\n      newEdgePoint = intersections[0];\n    }\n  }\n\n  _linearElementEditor__WEBPACK_IMPORTED_MODULE_5__.LinearElementEditor.movePoints(linearElement, [{\n    index: edgePointIndex,\n    point: _linearElementEditor__WEBPACK_IMPORTED_MODULE_5__.LinearElementEditor.pointFromAbsoluteCoords(linearElement, newEdgePoint)\n  }], {\n    [startOrEnd === "start" ? "startBinding" : "endBinding"]: binding\n  });\n};\n\nconst maybeCalculateNewGapWhenScaling = (changedElement, currentBinding, newSize) => {\n  if (currentBinding == null || newSize == null) {\n    return currentBinding;\n  }\n\n  const {\n    gap,\n    focus,\n    elementId\n  } = currentBinding;\n  const {\n    width: newWidth,\n    height: newHeight\n  } = newSize;\n  const {\n    width,\n    height\n  } = changedElement;\n  const newGap = Math.max(1, Math.min((0,_collision__WEBPACK_IMPORTED_MODULE_2__.maxBindingGap)(changedElement, newWidth, newHeight), gap * (newWidth < newHeight ? newWidth / width : newHeight / height)));\n  return {\n    elementId,\n    gap: newGap,\n    focus\n  };\n}; // TODO: this is a bottleneck, optimise\n\n\nconst getEligibleElementsForBinding = elements => {\n  const includedElementIds = new Set(elements.map(({\n    id\n  }) => id));\n  return elements.flatMap(element => (0,_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isBindingElement)(element, false) ? getElligibleElementsForBindingElement(element).filter(element => !includedElementIds.has(element.id)) : (0,_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isBindableElement)(element, false) ? getElligibleElementsForBindableElementAndWhere(element).filter(binding => !includedElementIds.has(binding[0].id)) : []);\n};\n\nconst getElligibleElementsForBindingElement = linearElement => {\n  return [getElligibleElementForBindingElement(linearElement, "start"), getElligibleElementForBindingElement(linearElement, "end")].filter(element => element != null);\n};\n\nconst getElligibleElementForBindingElement = (linearElement, startOrEnd) => {\n  return getHoveredElementForBinding(getLinearElementEdgeCoors(linearElement, startOrEnd), _scene_Scene__WEBPACK_IMPORTED_MODULE_4__["default"].getScene(linearElement));\n};\n\nconst getLinearElementEdgeCoors = (linearElement, startOrEnd) => {\n  const index = startOrEnd === "start" ? 0 : -1;\n  return (0,_utils__WEBPACK_IMPORTED_MODULE_6__.tupleToCoors)(_linearElementEditor__WEBPACK_IMPORTED_MODULE_5__.LinearElementEditor.getPointAtIndexGlobalCoordinates(linearElement, index));\n};\n\nconst getElligibleElementsForBindableElementAndWhere = bindableElement => {\n  return _scene_Scene__WEBPACK_IMPORTED_MODULE_4__["default"].getScene(bindableElement).getNonDeletedElements().map(element => {\n    if (!(0,_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isBindingElement)(element, false)) {\n      return null;\n    }\n\n    const canBindStart = isLinearElementEligibleForNewBindingByBindable(element, "start", bindableElement);\n    const canBindEnd = isLinearElementEligibleForNewBindingByBindable(element, "end", bindableElement);\n\n    if (!canBindStart && !canBindEnd) {\n      return null;\n    }\n\n    return [element, canBindStart && canBindEnd ? "both" : canBindStart ? "start" : "end", bindableElement];\n  }).filter(maybeElement => maybeElement != null);\n};\n\nconst isLinearElementEligibleForNewBindingByBindable = (linearElement, startOrEnd, bindableElement) => {\n  const existingBinding = linearElement[startOrEnd === "start" ? "startBinding" : "endBinding"];\n  return existingBinding == null && !isLinearElementSimpleAndAlreadyBoundOnOppositeEdge(linearElement, bindableElement, startOrEnd) && (0,_collision__WEBPACK_IMPORTED_MODULE_2__.bindingBorderTest)(bindableElement, getLinearElementEdgeCoors(linearElement, startOrEnd));\n}; // We need to:\n// 1: Update elements not selected to point to duplicated elements\n// 2: Update duplicated elements to point to other duplicated elements\n\n\nconst fixBindingsAfterDuplication = (sceneElements, oldElements, oldIdToDuplicatedId, // There are three copying mechanisms: Copy-paste, duplication and alt-drag.\n// Only when alt-dragging the new "duplicates" act as the "old", while\n// the "old" elements act as the "new copy" - essentially working reverse\n// to the other two.\nduplicatesServeAsOld) => {\n  // First collect all the binding/bindable elements, so we only update\n  // each once, regardless of whether they were duplicated or not.\n  const allBoundElementIds = new Set();\n  const allBindableElementIds = new Set();\n  const shouldReverseRoles = duplicatesServeAsOld === "duplicatesServeAsOld";\n  oldElements.forEach(oldElement => {\n    const {\n      boundElements\n    } = oldElement;\n\n    if (boundElements != null && boundElements.length > 0) {\n      boundElements.forEach(boundElement => {\n        if (shouldReverseRoles && !oldIdToDuplicatedId.has(boundElement.id)) {\n          allBoundElementIds.add(boundElement.id);\n        }\n      });\n      allBindableElementIds.add(oldIdToDuplicatedId.get(oldElement.id));\n    }\n\n    if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isBindingElement)(oldElement)) {\n      if (oldElement.startBinding != null) {\n        const {\n          elementId\n        } = oldElement.startBinding;\n\n        if (shouldReverseRoles && !oldIdToDuplicatedId.has(elementId)) {\n          allBindableElementIds.add(elementId);\n        }\n      }\n\n      if (oldElement.endBinding != null) {\n        const {\n          elementId\n        } = oldElement.endBinding;\n\n        if (shouldReverseRoles && !oldIdToDuplicatedId.has(elementId)) {\n          allBindableElementIds.add(elementId);\n        }\n      }\n\n      if (oldElement.startBinding != null || oldElement.endBinding != null) {\n        allBoundElementIds.add(oldIdToDuplicatedId.get(oldElement.id));\n      }\n    }\n  }); // Update the linear elements\n\n  sceneElements.filter(({\n    id\n  }) => allBoundElementIds.has(id)).forEach(element => {\n    const {\n      startBinding,\n      endBinding\n    } = element;\n    (0,_mutateElement__WEBPACK_IMPORTED_MODULE_3__.mutateElement)(element, {\n      startBinding: newBindingAfterDuplication(startBinding, oldIdToDuplicatedId),\n      endBinding: newBindingAfterDuplication(endBinding, oldIdToDuplicatedId)\n    });\n  }); // Update the bindable shapes\n\n  sceneElements.filter(({\n    id\n  }) => allBindableElementIds.has(id)).forEach(bindableElement => {\n    const {\n      boundElements\n    } = bindableElement;\n\n    if (boundElements != null && boundElements.length > 0) {\n      (0,_mutateElement__WEBPACK_IMPORTED_MODULE_3__.mutateElement)(bindableElement, {\n        boundElements: boundElements.map(boundElement => oldIdToDuplicatedId.has(boundElement.id) ? {\n          id: oldIdToDuplicatedId.get(boundElement.id),\n          type: boundElement.type\n        } : boundElement)\n      });\n    }\n  });\n};\n\nconst newBindingAfterDuplication = (binding, oldIdToDuplicatedId) => {\n  var _a;\n\n  if (binding == null) {\n    return null;\n  }\n\n  const {\n    elementId,\n    focus,\n    gap\n  } = binding;\n  return {\n    focus,\n    gap,\n    elementId: (_a = oldIdToDuplicatedId.get(elementId)) !== null && _a !== void 0 ? _a : elementId\n  };\n};\n\nconst fixBindingsAfterDeletion = (sceneElements, deletedElements) => {\n  const deletedElementIds = new Set(deletedElements.map(element => element.id)); // non-deleted which bindings need to be updated\n\n  const affectedElements = new Set();\n  deletedElements.forEach(deletedElement => {\n    var _a;\n\n    if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isBindableElement)(deletedElement)) {\n      (_a = deletedElement.boundElements) === null || _a === void 0 ? void 0 : _a.forEach(element => {\n        if (!deletedElementIds.has(element.id)) {\n          affectedElements.add(element.id);\n        }\n      });\n    } else if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isBindingElement)(deletedElement)) {\n      if (deletedElement.startBinding) {\n        affectedElements.add(deletedElement.startBinding.elementId);\n      }\n\n      if (deletedElement.endBinding) {\n        affectedElements.add(deletedElement.endBinding.elementId);\n      }\n    }\n  });\n  sceneElements.filter(({\n    id\n  }) => affectedElements.has(id)).forEach(element => {\n    if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isBindableElement)(element)) {\n      (0,_mutateElement__WEBPACK_IMPORTED_MODULE_3__.mutateElement)(element, {\n        boundElements: newBoundElementsAfterDeletion(element.boundElements, deletedElementIds)\n      });\n    } else if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isBindingElement)(element)) {\n      (0,_mutateElement__WEBPACK_IMPORTED_MODULE_3__.mutateElement)(element, {\n        startBinding: newBindingAfterDeletion(element.startBinding, deletedElementIds),\n        endBinding: newBindingAfterDeletion(element.endBinding, deletedElementIds)\n      });\n    }\n  });\n};\n\nconst newBindingAfterDeletion = (binding, deletedElementIds) => {\n  if (binding == null || deletedElementIds.has(binding.elementId)) {\n    return null;\n  }\n\n  return binding;\n};\n\nconst newBoundElementsAfterDeletion = (boundElements, deletedElementIds) => {\n  if (!boundElements) {\n    return null;\n  }\n\n  return boundElements.filter(ele => !deletedElementIds.has(ele.id));\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 29932 characters]\n//# sourceURL=webpack-internal:///../../element/binding.ts\n');
              }
            ),
            /***/
            "../../element/bounds.ts": (
              /*!*******************************!*\
                !*** ../../element/bounds.ts ***!
                \*******************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "ElementBounds": () => (/* binding */ ElementBounds),\n/* harmony export */   "getArrowheadPoints": () => (/* binding */ getArrowheadPoints),\n/* harmony export */   "getBoundsFromPoints": () => (/* binding */ getBoundsFromPoints),\n/* harmony export */   "getClosestElementBounds": () => (/* binding */ getClosestElementBounds),\n/* harmony export */   "getCommonBoundingBox": () => (/* binding */ getCommonBoundingBox),\n/* harmony export */   "getCommonBounds": () => (/* binding */ getCommonBounds),\n/* harmony export */   "getCurvePathOps": () => (/* binding */ getCurvePathOps),\n/* harmony export */   "getDiamondPoints": () => (/* binding */ getDiamondPoints),\n/* harmony export */   "getDraggedElementsBounds": () => (/* binding */ getDraggedElementsBounds),\n/* harmony export */   "getElementAbsoluteCoords": () => (/* binding */ getElementAbsoluteCoords),\n/* harmony export */   "getElementBounds": () => (/* binding */ getElementBounds),\n/* harmony export */   "getElementLineSegments": () => (/* binding */ getElementLineSegments),\n/* harmony export */   "getElementPointsCoords": () => (/* binding */ getElementPointsCoords),\n/* harmony export */   "getMinMaxXYFromCurvePathOps": () => (/* binding */ getMinMaxXYFromCurvePathOps),\n/* harmony export */   "getRectangleBoxAbsoluteCoords": () => (/* binding */ getRectangleBoxAbsoluteCoords),\n/* harmony export */   "getResizedElementAbsoluteCoords": () => (/* binding */ getResizedElementAbsoluteCoords),\n/* harmony export */   "pointRelativeTo": () => (/* binding */ pointRelativeTo)\n/* harmony export */ });\n/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math */ "../../math.ts");\n/* harmony import */ var roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! roughjs/bin/rough */ "../../../node_modules/roughjs/bin/rough.js");\n/* harmony import */ var _scene_Shape__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../scene/Shape */ "../../scene/Shape.ts");\n/* harmony import */ var _typeChecks__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var _points__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../points */ "../../points.ts");\n/* harmony import */ var _textElement__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./textElement */ "../../element/textElement.ts");\n/* harmony import */ var _linearElementEditor__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./linearElementEditor */ "../../element/linearElementEditor.ts");\n/* harmony import */ var _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../scene/ShapeCache */ "../../scene/ShapeCache.ts");\n/* harmony import */ var _scene_Scene__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../scene/Scene */ "../../scene/Scene.ts");\n\n\n\n\n\n\n\n\n\nclass ElementBounds {\n  static getBounds(element) {\n    const cachedBounds = ElementBounds.boundsCache.get(element);\n\n    if ((cachedBounds === null || cachedBounds === void 0 ? void 0 : cachedBounds.version) && cachedBounds.version === element.version && // we don\'t invalidate cache when we update containers and not labels,\n    // which is causing problems down the line. Fix TBA.\n    !(0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isBoundToContainer)(element)) {\n      return cachedBounds.bounds;\n    }\n\n    const bounds = ElementBounds.calculateBounds(element); // hack to ensure that downstream checks could retrieve element Scene\n    // so as to have correctly calculated bounds\n    // FIXME remove when we get rid of all the id:Scene / element:Scene mapping\n\n    const shouldCache = _scene_Scene__WEBPACK_IMPORTED_MODULE_8__["default"].getScene(element);\n\n    if (shouldCache) {\n      ElementBounds.boundsCache.set(element, {\n        version: element.version,\n        bounds\n      });\n    }\n\n    return bounds;\n  }\n\n  static calculateBounds(element) {\n    let bounds;\n    const [x1, y1, x2, y2, cx, cy] = getElementAbsoluteCoords(element);\n\n    if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isFreeDrawElement)(element)) {\n      const [minX, minY, maxX, maxY] = getBoundsFromPoints(element.points.map(([x, y]) => (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(x, y, cx - element.x, cy - element.y, element.angle)));\n      return [minX + element.x, minY + element.y, maxX + element.x, maxY + element.y];\n    } else if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isLinearElement)(element)) {\n      bounds = getLinearElementRotatedBounds(element, cx, cy);\n    } else if (element.type === "diamond") {\n      const [x11, y11] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(cx, y1, cx, cy, element.angle);\n      const [x12, y12] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(cx, y2, cx, cy, element.angle);\n      const [x22, y22] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(x1, cy, cx, cy, element.angle);\n      const [x21, y21] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(x2, cy, cx, cy, element.angle);\n      const minX = Math.min(x11, x12, x22, x21);\n      const minY = Math.min(y11, y12, y22, y21);\n      const maxX = Math.max(x11, x12, x22, x21);\n      const maxY = Math.max(y11, y12, y22, y21);\n      bounds = [minX, minY, maxX, maxY];\n    } else if (element.type === "ellipse") {\n      const w = (x2 - x1) / 2;\n      const h = (y2 - y1) / 2;\n      const cos = Math.cos(element.angle);\n      const sin = Math.sin(element.angle);\n      const ww = Math.hypot(w * cos, h * sin);\n      const hh = Math.hypot(h * cos, w * sin);\n      bounds = [cx - ww, cy - hh, cx + ww, cy + hh];\n    } else {\n      const [x11, y11] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(x1, y1, cx, cy, element.angle);\n      const [x12, y12] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(x1, y2, cx, cy, element.angle);\n      const [x22, y22] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(x2, y2, cx, cy, element.angle);\n      const [x21, y21] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(x2, y1, cx, cy, element.angle);\n      const minX = Math.min(x11, x12, x22, x21);\n      const minY = Math.min(y11, y12, y22, y21);\n      const maxX = Math.max(x11, x12, x22, x21);\n      const maxY = Math.max(y11, y12, y22, y21);\n      bounds = [minX, minY, maxX, maxY];\n    }\n\n    return bounds;\n  }\n\n}\nElementBounds.boundsCache = new WeakMap(); // Scene -> Scene coords, but in x1,x2,y1,y2 format.\n//\n// If the element is created from right to left, the width is going to be negative\n// This set of functions retrieves the absolute position of the 4 points.\n\nconst getElementAbsoluteCoords = (element, includeBoundText = false) => {\n  if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isFreeDrawElement)(element)) {\n    return getFreeDrawElementAbsoluteCoords(element);\n  } else if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isLinearElement)(element)) {\n    return _linearElementEditor__WEBPACK_IMPORTED_MODULE_6__.LinearElementEditor.getElementAbsoluteCoords(element, includeBoundText);\n  } else if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isTextElement)(element)) {\n    const container = (0,_textElement__WEBPACK_IMPORTED_MODULE_5__.getContainerElement)(element);\n\n    if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isArrowElement)(container)) {\n      const coords = _linearElementEditor__WEBPACK_IMPORTED_MODULE_6__.LinearElementEditor.getBoundTextElementPosition(container, element);\n      return [coords.x, coords.y, coords.x + element.width, coords.y + element.height, coords.x + element.width / 2, coords.y + element.height / 2];\n    }\n  }\n\n  return [element.x, element.y, element.x + element.width, element.y + element.height, element.x + element.width / 2, element.y + element.height / 2];\n};\n/*\n * for a given element, `getElementLineSegments` returns line segments\n * that can be used for visual collision detection (useful for frames)\n * as opposed to bounding box collision detection\n */\n\nconst getElementLineSegments = element => {\n  const [x1, y1, x2, y2, cx, cy] = getElementAbsoluteCoords(element);\n  const center = [cx, cy];\n\n  if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isLinearElement)(element) || (0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isFreeDrawElement)(element)) {\n    const segments = [];\n    let i = 0;\n\n    while (i < element.points.length - 1) {\n      segments.push([(0,_math__WEBPACK_IMPORTED_MODULE_0__.rotatePoint)([element.points[i][0] + element.x, element.points[i][1] + element.y], center, element.angle), (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotatePoint)([element.points[i + 1][0] + element.x, element.points[i + 1][1] + element.y], center, element.angle)]);\n      i++;\n    }\n\n    return segments;\n  }\n\n  const [nw, ne, sw, se, n, s, w, e] = [[x1, y1], [x2, y1], [x1, y2], [x2, y2], [cx, y1], [cx, y2], [x1, cy], [x2, cy]].map(point => (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotatePoint)(point, center, element.angle));\n\n  if (element.type === "diamond") {\n    return [[n, w], [n, e], [s, w], [s, e]];\n  }\n\n  if (element.type === "ellipse") {\n    return [[n, w], [n, e], [s, w], [s, e], [n, w], [n, e], [s, w], [s, e]];\n  }\n\n  return [[nw, ne], [sw, se], [nw, sw], [ne, se], [nw, e], [sw, e], [ne, w], [se, w]];\n};\n/**\n * Scene -> Scene coords, but in x1,x2,y1,y2 format.\n *\n * Rectangle here means any rectangular frame, not an excalidraw element.\n */\n\nconst getRectangleBoxAbsoluteCoords = boxSceneCoords => {\n  return [boxSceneCoords.x, boxSceneCoords.y, boxSceneCoords.x + boxSceneCoords.width, boxSceneCoords.y + boxSceneCoords.height, boxSceneCoords.x + boxSceneCoords.width / 2, boxSceneCoords.y + boxSceneCoords.height / 2];\n};\nconst pointRelativeTo = (element, absoluteCoords) => {\n  return [absoluteCoords[0] - element.x, absoluteCoords[1] - element.y];\n};\nconst getDiamondPoints = element => {\n  // Here we add +1 to avoid these numbers to be 0\n  // otherwise rough.js will throw an error complaining about it\n  const topX = Math.floor(element.width / 2) + 1;\n  const topY = 0;\n  const rightX = element.width;\n  const rightY = Math.floor(element.height / 2) + 1;\n  const bottomX = topX;\n  const bottomY = element.height;\n  const leftX = 0;\n  const leftY = rightY;\n  return [topX, topY, rightX, rightY, bottomX, bottomY, leftX, leftY];\n};\nconst getCurvePathOps = shape => {\n  for (const set of shape.sets) {\n    if (set.type === "path") {\n      return set.ops;\n    }\n  }\n\n  return shape.sets[0].ops;\n}; // reference: https://eliot-jones.com/2019/12/cubic-bezier-curve-bounding-boxes\n\nconst getBezierValueForT = (t, p0, p1, p2, p3) => {\n  const oneMinusT = 1 - t;\n  return Math.pow(oneMinusT, 3) * p0 + 3 * Math.pow(oneMinusT, 2) * t * p1 + 3 * oneMinusT * Math.pow(t, 2) * p2 + Math.pow(t, 3) * p3;\n};\n\nconst solveQuadratic = (p0, p1, p2, p3) => {\n  const i = p1 - p0;\n  const j = p2 - p1;\n  const k = p3 - p2;\n  const a = 3 * i - 6 * j + 3 * k;\n  const b = 6 * j - 6 * i;\n  const c = 3 * i;\n  const sqrtPart = b * b - 4 * a * c;\n  const hasSolution = sqrtPart >= 0;\n\n  if (!hasSolution) {\n    return false;\n  }\n\n  let s1 = null;\n  let s2 = null;\n  let t1 = Infinity;\n  let t2 = Infinity;\n\n  if (a === 0) {\n    t1 = t2 = -c / b;\n  } else {\n    t1 = (-b + Math.sqrt(sqrtPart)) / (2 * a);\n    t2 = (-b - Math.sqrt(sqrtPart)) / (2 * a);\n  }\n\n  if (t1 >= 0 && t1 <= 1) {\n    s1 = getBezierValueForT(t1, p0, p1, p2, p3);\n  }\n\n  if (t2 >= 0 && t2 <= 1) {\n    s2 = getBezierValueForT(t2, p0, p1, p2, p3);\n  }\n\n  return [s1, s2];\n};\n\nconst getCubicBezierCurveBound = (p0, p1, p2, p3) => {\n  const solX = solveQuadratic(p0[0], p1[0], p2[0], p3[0]);\n  const solY = solveQuadratic(p0[1], p1[1], p2[1], p3[1]);\n  let minX = Math.min(p0[0], p3[0]);\n  let maxX = Math.max(p0[0], p3[0]);\n\n  if (solX) {\n    const xs = solX.filter(x => x !== null);\n    minX = Math.min(minX, ...xs);\n    maxX = Math.max(maxX, ...xs);\n  }\n\n  let minY = Math.min(p0[1], p3[1]);\n  let maxY = Math.max(p0[1], p3[1]);\n\n  if (solY) {\n    const ys = solY.filter(y => y !== null);\n    minY = Math.min(minY, ...ys);\n    maxY = Math.max(maxY, ...ys);\n  }\n\n  return [minX, minY, maxX, maxY];\n};\n\nconst getMinMaxXYFromCurvePathOps = (ops, transformXY) => {\n  let currentP = [0, 0];\n  const {\n    minX,\n    minY,\n    maxX,\n    maxY\n  } = ops.reduce((limits, {\n    op,\n    data\n  }) => {\n    // There are only four operation types:\n    // move, bcurveTo, lineTo, and curveTo\n    if (op === "move") {\n      // change starting point\n      currentP = data; // move operation does not draw anything; so, it always\n      // returns false\n    } else if (op === "bcurveTo") {\n      const _p1 = [data[0], data[1]];\n      const _p2 = [data[2], data[3]];\n      const _p3 = [data[4], data[5]];\n      const p1 = transformXY ? transformXY(..._p1) : _p1;\n      const p2 = transformXY ? transformXY(..._p2) : _p2;\n      const p3 = transformXY ? transformXY(..._p3) : _p3;\n      const p0 = transformXY ? transformXY(...currentP) : currentP;\n      currentP = _p3;\n      const [minX, minY, maxX, maxY] = getCubicBezierCurveBound(p0, p1, p2, p3);\n      limits.minX = Math.min(limits.minX, minX);\n      limits.minY = Math.min(limits.minY, minY);\n      limits.maxX = Math.max(limits.maxX, maxX);\n      limits.maxY = Math.max(limits.maxY, maxY);\n    } else if (op === "lineTo") {// TODO: Implement this\n    } else if (op === "qcurveTo") {// TODO: Implement this\n    }\n\n    return limits;\n  }, {\n    minX: Infinity,\n    minY: Infinity,\n    maxX: -Infinity,\n    maxY: -Infinity\n  });\n  return [minX, minY, maxX, maxY];\n};\nconst getBoundsFromPoints = points => {\n  let minX = Infinity;\n  let minY = Infinity;\n  let maxX = -Infinity;\n  let maxY = -Infinity;\n\n  for (const [x, y] of points) {\n    minX = Math.min(minX, x);\n    minY = Math.min(minY, y);\n    maxX = Math.max(maxX, x);\n    maxY = Math.max(maxY, y);\n  }\n\n  return [minX, minY, maxX, maxY];\n};\n\nconst getFreeDrawElementAbsoluteCoords = element => {\n  const [minX, minY, maxX, maxY] = getBoundsFromPoints(element.points);\n  const x1 = minX + element.x;\n  const y1 = minY + element.y;\n  const x2 = maxX + element.x;\n  const y2 = maxY + element.y;\n  return [x1, y1, x2, y2, (x1 + x2) / 2, (y1 + y2) / 2];\n};\n\nconst getArrowheadPoints = (element, shape, position, arrowhead) => {\n  const ops = getCurvePathOps(shape[0]);\n\n  if (ops.length < 1) {\n    return null;\n  } // The index of the bCurve operation to examine.\n\n\n  const index = position === "start" ? 1 : ops.length - 1;\n  const data = ops[index].data;\n  const p3 = [data[4], data[5]];\n  const p2 = [data[2], data[3]];\n  const p1 = [data[0], data[1]]; // We need to find p0 of the bezier curve.\n  // It is typically the last point of the previous\n  // curve; it can also be the position of moveTo operation.\n\n  const prevOp = ops[index - 1];\n  let p0 = [0, 0];\n\n  if (prevOp.op === "move") {\n    p0 = prevOp.data;\n  } else if (prevOp.op === "bcurveTo") {\n    p0 = [prevOp.data[4], prevOp.data[5]];\n  } // B(t) = p0 * (1-t)^3 + 3p1 * t * (1-t)^2 + 3p2 * t^2 * (1-t) + p3 * t^3\n\n\n  const equation = (t, idx) => Math.pow(1 - t, 3) * p3[idx] + 3 * t * Math.pow(1 - t, 2) * p2[idx] + 3 * Math.pow(t, 2) * (1 - t) * p1[idx] + p0[idx] * Math.pow(t, 3); // Ee know the last point of the arrow (or the first, if start arrowhead).\n\n\n  const [x2, y2] = position === "start" ? p0 : p3; // By using cubic bezier equation (B(t)) and the given parameters,\n  // we calculate a point that is closer to the last point.\n  // The value 0.3 is chosen arbitrarily and it works best for all\n  // the tested cases.\n\n  const [x1, y1] = [equation(0.3, 0), equation(0.3, 1)]; // Find the normalized direction vector based on the\n  // previously calculated points.\n\n  const distance = Math.hypot(x2 - x1, y2 - y1);\n  const nx = (x2 - x1) / distance;\n  const ny = (y2 - y1) / distance;\n  const size = {\n    arrow: 30,\n    bar: 15,\n    dot: 15,\n    triangle: 15\n  }[arrowhead]; // pixels (will differ for each arrowhead)\n\n  let length = 0;\n\n  if (arrowhead === "arrow") {\n    // Length for -> arrows is based on the length of the last section\n    const [cx, cy] = element.points[element.points.length - 1];\n    const [px, py] = element.points.length > 1 ? element.points[element.points.length - 2] : [0, 0];\n    length = Math.hypot(cx - px, cy - py);\n  } else {\n    // Length for other arrowhead types is based on the total length of the line\n    for (let i = 0; i < element.points.length; i++) {\n      const [px, py] = element.points[i - 1] || [0, 0];\n      const [cx, cy] = element.points[i];\n      length += Math.hypot(cx - px, cy - py);\n    }\n  } // Scale down the arrowhead until we hit a certain size so that it doesn\'t look weird.\n  // This value is selected by minimizing a minimum size with the last segment of the arrowhead\n\n\n  const minSize = Math.min(size, length / 2);\n  const xs = x2 - nx * minSize;\n  const ys = y2 - ny * minSize;\n\n  if (arrowhead === "dot") {\n    const r = Math.hypot(ys - y2, xs - x2) + element.strokeWidth;\n    return [x2, y2, r];\n  }\n\n  const angle = {\n    arrow: 20,\n    bar: 90,\n    triangle: 25\n  }[arrowhead]; // degrees\n  // Return points\n\n  const [x3, y3] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(xs, ys, x2, y2, -angle * Math.PI / 180);\n  const [x4, y4] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(xs, ys, x2, y2, angle * Math.PI / 180);\n  return [x2, y2, x3, y3, x4, y4];\n};\n\nconst generateLinearElementShape = element => {\n  const generator = roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_1__["default"].generator();\n  const options = (0,_scene_Shape__WEBPACK_IMPORTED_MODULE_2__.generateRoughOptions)(element);\n\n  const method = (() => {\n    if (element.roundness) {\n      return "curve";\n    }\n\n    if (options.fill) {\n      return "polygon";\n    }\n\n    return "linearPath";\n  })();\n\n  return generator[method](element.points, options);\n};\n\nconst getLinearElementRotatedBounds = (element, cx, cy) => {\n  var _a;\n\n  if (element.points.length < 2) {\n    const [pointX, pointY] = element.points[0];\n    const [x, y] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(element.x + pointX, element.y + pointY, cx, cy, element.angle);\n    let coords = [x, y, x, y];\n    const boundTextElement = (0,_textElement__WEBPACK_IMPORTED_MODULE_5__.getBoundTextElement)(element);\n\n    if (boundTextElement) {\n      const coordsWithBoundText = _linearElementEditor__WEBPACK_IMPORTED_MODULE_6__.LinearElementEditor.getMinMaxXYWithBoundText(element, [x, y, x, y], boundTextElement);\n      coords = [coordsWithBoundText[0], coordsWithBoundText[1], coordsWithBoundText[2], coordsWithBoundText[3]];\n    }\n\n    return coords;\n  } // first element is always the curve\n\n\n  const cachedShape = (_a = _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_7__.ShapeCache.get(element)) === null || _a === void 0 ? void 0 : _a[0];\n  const shape = cachedShape !== null && cachedShape !== void 0 ? cachedShape : generateLinearElementShape(element);\n  const ops = getCurvePathOps(shape);\n\n  const transformXY = (x, y) => (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(element.x + x, element.y + y, cx, cy, element.angle);\n\n  const res = getMinMaxXYFromCurvePathOps(ops, transformXY);\n  let coords = [res[0], res[1], res[2], res[3]];\n  const boundTextElement = (0,_textElement__WEBPACK_IMPORTED_MODULE_5__.getBoundTextElement)(element);\n\n  if (boundTextElement) {\n    const coordsWithBoundText = _linearElementEditor__WEBPACK_IMPORTED_MODULE_6__.LinearElementEditor.getMinMaxXYWithBoundText(element, coords, boundTextElement);\n    coords = [coordsWithBoundText[0], coordsWithBoundText[1], coordsWithBoundText[2], coordsWithBoundText[3]];\n  }\n\n  return coords;\n};\n\nconst getElementBounds = element => {\n  return ElementBounds.getBounds(element);\n};\nconst getCommonBounds = elements => {\n  if (!elements.length) {\n    return [0, 0, 0, 0];\n  }\n\n  let minX = Infinity;\n  let maxX = -Infinity;\n  let minY = Infinity;\n  let maxY = -Infinity;\n  elements.forEach(element => {\n    const [x1, y1, x2, y2] = getElementBounds(element);\n    minX = Math.min(minX, x1);\n    minY = Math.min(minY, y1);\n    maxX = Math.max(maxX, x2);\n    maxY = Math.max(maxY, y2);\n  });\n  return [minX, minY, maxX, maxY];\n};\nconst getDraggedElementsBounds = (elements, dragOffset) => {\n  const [minX, minY, maxX, maxY] = getCommonBounds(elements);\n  return [minX + dragOffset.x, minY + dragOffset.y, maxX + dragOffset.x, maxY + dragOffset.y];\n};\nconst getResizedElementAbsoluteCoords = (element, nextWidth, nextHeight, normalizePoints) => {\n  if (!((0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isLinearElement)(element) || (0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isFreeDrawElement)(element))) {\n    return [element.x, element.y, element.x + nextWidth, element.y + nextHeight];\n  }\n\n  const points = (0,_points__WEBPACK_IMPORTED_MODULE_4__.rescalePoints)(0, nextWidth, (0,_points__WEBPACK_IMPORTED_MODULE_4__.rescalePoints)(1, nextHeight, element.points, normalizePoints), normalizePoints);\n  let bounds;\n\n  if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isFreeDrawElement)(element)) {\n    // Free Draw\n    bounds = getBoundsFromPoints(points);\n  } else {\n    // Line\n    const gen = roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_1__["default"].generator();\n    const curve = !element.roundness ? gen.linearPath(points, (0,_scene_Shape__WEBPACK_IMPORTED_MODULE_2__.generateRoughOptions)(element)) : gen.curve(points, (0,_scene_Shape__WEBPACK_IMPORTED_MODULE_2__.generateRoughOptions)(element));\n    const ops = getCurvePathOps(curve);\n    bounds = getMinMaxXYFromCurvePathOps(ops);\n  }\n\n  const [minX, minY, maxX, maxY] = bounds;\n  return [minX + element.x, minY + element.y, maxX + element.x, maxY + element.y];\n};\nconst getElementPointsCoords = (element, points) => {\n  // This might be computationally heavey\n  const gen = roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_1__["default"].generator();\n  const curve = element.roundness == null ? gen.linearPath(points, (0,_scene_Shape__WEBPACK_IMPORTED_MODULE_2__.generateRoughOptions)(element)) : gen.curve(points, (0,_scene_Shape__WEBPACK_IMPORTED_MODULE_2__.generateRoughOptions)(element));\n  const ops = getCurvePathOps(curve);\n  const [minX, minY, maxX, maxY] = getMinMaxXYFromCurvePathOps(ops);\n  return [minX + element.x, minY + element.y, maxX + element.x, maxY + element.y];\n};\nconst getClosestElementBounds = (elements, from) => {\n  if (!elements.length) {\n    return [0, 0, 0, 0];\n  }\n\n  let minDistance = Infinity;\n  let closestElement = elements[0];\n  elements.forEach(element => {\n    const [x1, y1, x2, y2] = getElementBounds(element);\n    const distance = (0,_math__WEBPACK_IMPORTED_MODULE_0__.distance2d)((x1 + x2) / 2, (y1 + y2) / 2, from.x, from.y);\n\n    if (distance < minDistance) {\n      minDistance = distance;\n      closestElement = element;\n    }\n  });\n  return getElementBounds(closestElement);\n};\nconst getCommonBoundingBox = elements => {\n  const [minX, minY, maxX, maxY] = getCommonBounds(elements);\n  return {\n    minX,\n    minY,\n    maxX,\n    maxY,\n    width: maxX - minX,\n    height: maxY - minY,\n    midX: (minX + maxX) / 2,\n    midY: (minY + maxY) / 2\n  };\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 30044 characters]\n//# sourceURL=webpack-internal:///../../element/bounds.ts\n');
              }
            ),
            /***/
            "../../element/collision.ts": (
              /*!**********************************!*\
                !*** ../../element/collision.ts ***!
                \**********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "bindingBorderTest": () => (/* binding */ bindingBorderTest),\n/* harmony export */   "determineFocusDistance": () => (/* binding */ determineFocusDistance),\n/* harmony export */   "determineFocusPoint": () => (/* binding */ determineFocusPoint),\n/* harmony export */   "distanceToBindableElement": () => (/* binding */ distanceToBindableElement),\n/* harmony export */   "findFocusPointForEllipse": () => (/* binding */ findFocusPointForEllipse),\n/* harmony export */   "findFocusPointForRectangulars": () => (/* binding */ findFocusPointForRectangulars),\n/* harmony export */   "getCircleIntersections": () => (/* binding */ getCircleIntersections),\n/* harmony export */   "hitTest": () => (/* binding */ hitTest),\n/* harmony export */   "intersectElementWithLine": () => (/* binding */ intersectElementWithLine),\n/* harmony export */   "isHittingElementBoundingBoxWithoutHittingElement": () => (/* binding */ isHittingElementBoundingBoxWithoutHittingElement),\n/* harmony export */   "isHittingElementNotConsideringBoundingBox": () => (/* binding */ isHittingElementNotConsideringBoundingBox),\n/* harmony export */   "isPointHittingElementBoundingBox": () => (/* binding */ isPointHittingElementBoundingBox),\n/* harmony export */   "maxBindingGap": () => (/* binding */ maxBindingGap),\n/* harmony export */   "pointInAbsoluteCoords": () => (/* binding */ pointInAbsoluteCoords)\n/* harmony export */ });\n/* harmony import */ var _ga__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../ga */ "../../ga.ts");\n/* harmony import */ var _gapoints__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../gapoints */ "../../gapoints.ts");\n/* harmony import */ var _gadirections__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../gadirections */ "../../gadirections.ts");\n/* harmony import */ var _galines__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../galines */ "../../galines.ts");\n/* harmony import */ var _gatransforms__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../gatransforms */ "../../gatransforms.ts");\n/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../math */ "../../math.ts");\n/* harmony import */ var points_on_curve__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! points-on-curve */ "../../../node_modules/points-on-curve/lib/index.js");\n/* harmony import */ var _bounds__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./bounds */ "../../element/bounds.ts");\n/* harmony import */ var _typeChecks__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! . */ "../../element/index.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _transformHandles__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./transformHandles */ "../../element/transformHandles.ts");\n/* harmony import */ var _textElement__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./textElement */ "../../element/textElement.ts");\n/* harmony import */ var _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../scene/ShapeCache */ "../../scene/ShapeCache.ts");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst isElementDraggableFromInside = element => {\n  if (element.type === "arrow") {\n    return false;\n  }\n\n  if (element.type === "freedraw") {\n    return true;\n  }\n\n  const isDraggableFromInside = !(0,_utils__WEBPACK_IMPORTED_MODULE_10__.isTransparent)(element.backgroundColor) || (0,_typeChecks__WEBPACK_IMPORTED_MODULE_8__.hasBoundTextElement)(element) || (0,_typeChecks__WEBPACK_IMPORTED_MODULE_8__.isEmbeddableElement)(element);\n\n  if (element.type === "line") {\n    return isDraggableFromInside && (0,_math__WEBPACK_IMPORTED_MODULE_5__.isPathALoop)(element.points);\n  }\n\n  return isDraggableFromInside || (0,_typeChecks__WEBPACK_IMPORTED_MODULE_8__.isImageElement)(element);\n};\n\nconst hitTest = (element, appState, frameNameBoundsCache, x, y) => {\n  // How many pixels off the shape boundary we still consider a hit\n  const threshold = 10 / appState.zoom.value;\n  const point = [x, y];\n\n  if (isElementSelected(appState, element) && (0,_transformHandles__WEBPACK_IMPORTED_MODULE_11__.shouldShowBoundingBox)([element], appState)) {\n    return isPointHittingElementBoundingBox(element, point, threshold, frameNameBoundsCache);\n  }\n\n  const boundTextElement = (0,_textElement__WEBPACK_IMPORTED_MODULE_12__.getBoundTextElement)(element);\n\n  if (boundTextElement) {\n    const isHittingBoundTextElement = hitTest(boundTextElement, appState, frameNameBoundsCache, x, y);\n\n    if (isHittingBoundTextElement) {\n      return true;\n    }\n  }\n\n  return isHittingElementNotConsideringBoundingBox(element, appState, frameNameBoundsCache, point);\n};\nconst isHittingElementBoundingBoxWithoutHittingElement = (element, appState, frameNameBoundsCache, x, y) => {\n  const threshold = 10 / appState.zoom.value; // So that bound text element hit is considered within bounding box of container even if its outside actual bounding box of element\n  // eg for linear elements text can be outside the element bounding box\n\n  const boundTextElement = (0,_textElement__WEBPACK_IMPORTED_MODULE_12__.getBoundTextElement)(element);\n\n  if (boundTextElement && hitTest(boundTextElement, appState, frameNameBoundsCache, x, y)) {\n    return false;\n  }\n\n  return !isHittingElementNotConsideringBoundingBox(element, appState, frameNameBoundsCache, [x, y]) && isPointHittingElementBoundingBox(element, [x, y], threshold, frameNameBoundsCache);\n};\nconst isHittingElementNotConsideringBoundingBox = (element, appState, frameNameBoundsCache, point) => {\n  const threshold = 10 / appState.zoom.value;\n  const check = (0,___WEBPACK_IMPORTED_MODULE_9__.isTextElement)(element) ? isStrictlyInside : isElementDraggableFromInside(element) ? isInsideCheck : isNearCheck;\n  return hitTestPointAgainstElement({\n    element,\n    point,\n    threshold,\n    check,\n    frameNameBoundsCache\n  });\n};\n\nconst isElementSelected = (appState, element) => appState.selectedElementIds[element.id];\n\nconst isPointHittingElementBoundingBox = (element, [x, y], threshold, frameNameBoundsCache) => {\n  // frames needs be checked differently so as to be able to drag it\n  // by its frame, whether it has been selected or not\n  // this logic here is not ideal\n  // TODO: refactor it later...\n  if (element.type === "frame") {\n    return hitTestPointAgainstElement({\n      element,\n      point: [x, y],\n      threshold,\n      check: isInsideCheck,\n      frameNameBoundsCache\n    });\n  }\n\n  const [x1, y1, x2, y2] = (0,_bounds__WEBPACK_IMPORTED_MODULE_7__.getElementAbsoluteCoords)(element);\n  const elementCenterX = (x1 + x2) / 2;\n  const elementCenterY = (y1 + y2) / 2; // reverse rotate to take element\'s angle into account.\n\n  const [rotatedX, rotatedY] = (0,_math__WEBPACK_IMPORTED_MODULE_5__.rotate)(x, y, elementCenterX, elementCenterY, -element.angle);\n  return rotatedX > x1 - threshold && rotatedX < x2 + threshold && rotatedY > y1 - threshold && rotatedY < y2 + threshold;\n};\nconst bindingBorderTest = (element, {\n  x,\n  y\n}) => {\n  const threshold = maxBindingGap(element, element.width, element.height);\n  const check = isOutsideCheck;\n  const point = [x, y];\n  return hitTestPointAgainstElement({\n    element,\n    point,\n    threshold,\n    check,\n    frameNameBoundsCache: null\n  });\n};\nconst maxBindingGap = (element, elementWidth, elementHeight) => {\n  // Aligns diamonds with rectangles\n  const shapeRatio = element.type === "diamond" ? 1 / Math.sqrt(2) : 1;\n  const smallerDimension = shapeRatio * Math.min(elementWidth, elementHeight); // We make the bindable boundary bigger for bigger elements\n\n  return Math.max(16, Math.min(0.25 * smallerDimension, 32));\n};\n\nconst hitTestPointAgainstElement = args => {\n  var _a;\n\n  switch (args.element.type) {\n    case "rectangle":\n    case "embeddable":\n    case "image":\n    case "text":\n    case "diamond":\n    case "ellipse":\n      const distance = distanceToBindableElement(args.element, args.point);\n      return args.check(distance, args.threshold);\n\n    case "freedraw":\n      {\n        if (!args.check(distanceToRectangle(args.element, args.point), args.threshold)) {\n          return false;\n        }\n\n        return hitTestFreeDrawElement(args.element, args.point, args.threshold);\n      }\n\n    case "arrow":\n    case "line":\n      return hitTestLinear(args);\n\n    case "selection":\n      console.warn("This should not happen, we need to investigate why it does.");\n      return false;\n\n    case "frame":\n      {\n        // check distance to frame element first\n        if (args.check(distanceToBindableElement(args.element, args.point), args.threshold)) {\n          return true;\n        }\n\n        const frameNameBounds = (_a = args.frameNameBoundsCache) === null || _a === void 0 ? void 0 : _a.get(args.element);\n\n        if (frameNameBounds) {\n          return args.check(distanceToRectangleBox(frameNameBounds, args.point), args.threshold);\n        }\n\n        return false;\n      }\n  }\n};\n\nconst distanceToBindableElement = (element, point) => {\n  switch (element.type) {\n    case "rectangle":\n    case "image":\n    case "text":\n    case "embeddable":\n    case "frame":\n      return distanceToRectangle(element, point);\n\n    case "diamond":\n      return distanceToDiamond(element, point);\n\n    case "ellipse":\n      return distanceToEllipse(element, point);\n  }\n};\n\nconst isStrictlyInside = (distance, threshold) => {\n  return distance < 0;\n};\n\nconst isInsideCheck = (distance, threshold) => {\n  return distance < threshold;\n};\n\nconst isNearCheck = (distance, threshold) => {\n  return Math.abs(distance) < threshold;\n};\n\nconst isOutsideCheck = (distance, threshold) => {\n  return 0 <= distance && distance < threshold;\n};\n\nconst distanceToRectangle = (element, point) => {\n  const [, pointRel, hwidth, hheight] = pointRelativeToElement(element, point);\n  return Math.max(_gapoints__WEBPACK_IMPORTED_MODULE_1__.distanceToLine(pointRel, _galines__WEBPACK_IMPORTED_MODULE_3__.equation(0, 1, -hheight)), _gapoints__WEBPACK_IMPORTED_MODULE_1__.distanceToLine(pointRel, _galines__WEBPACK_IMPORTED_MODULE_3__.equation(1, 0, -hwidth)));\n};\n\nconst distanceToRectangleBox = (box, point) => {\n  const [, pointRel, hwidth, hheight] = pointRelativeToDivElement(point, box);\n  return Math.max(_gapoints__WEBPACK_IMPORTED_MODULE_1__.distanceToLine(pointRel, _galines__WEBPACK_IMPORTED_MODULE_3__.equation(0, 1, -hheight)), _gapoints__WEBPACK_IMPORTED_MODULE_1__.distanceToLine(pointRel, _galines__WEBPACK_IMPORTED_MODULE_3__.equation(1, 0, -hwidth)));\n};\n\nconst distanceToDiamond = (element, point) => {\n  const [, pointRel, hwidth, hheight] = pointRelativeToElement(element, point);\n  const side = _galines__WEBPACK_IMPORTED_MODULE_3__.equation(hheight, hwidth, -hheight * hwidth);\n  return _gapoints__WEBPACK_IMPORTED_MODULE_1__.distanceToLine(pointRel, side);\n};\n\nconst distanceToEllipse = (element, point) => {\n  const [pointRel, tangent] = ellipseParamsForTest(element, point);\n  return -_galines__WEBPACK_IMPORTED_MODULE_3__.sign(tangent) * _gapoints__WEBPACK_IMPORTED_MODULE_1__.distanceToLine(pointRel, tangent);\n};\n\nconst ellipseParamsForTest = (element, point) => {\n  const [, pointRel, hwidth, hheight] = pointRelativeToElement(element, point);\n  const [px, py] = _gapoints__WEBPACK_IMPORTED_MODULE_1__.toTuple(pointRel); // We\'re working in positive quadrant, so start with `t = 45deg`, `tx=cos(t)`\n\n  let tx = 0.707;\n  let ty = 0.707;\n  const a = hwidth;\n  const b = hheight; // This is a numerical method to find the params tx, ty at which\n  // the ellipse has the closest point to the given point\n\n  [0, 1, 2, 3].forEach(_ => {\n    const xx = a * tx;\n    const yy = b * ty;\n    const ex = (a * a - b * b) * Math.pow(tx, 3) / a;\n    const ey = (b * b - a * a) * Math.pow(ty, 3) / b;\n    const rx = xx - ex;\n    const ry = yy - ey;\n    const qx = px - ex;\n    const qy = py - ey;\n    const r = Math.hypot(ry, rx);\n    const q = Math.hypot(qy, qx);\n    tx = Math.min(1, Math.max(0, (qx * r / q + ex) / a));\n    ty = Math.min(1, Math.max(0, (qy * r / q + ey) / b));\n    const t = Math.hypot(ty, tx);\n    tx /= t;\n    ty /= t;\n  });\n  const closestPoint = _ga__WEBPACK_IMPORTED_MODULE_0__.point(a * tx, b * ty);\n  const tangent = _galines__WEBPACK_IMPORTED_MODULE_3__.orthogonalThrough(pointRel, closestPoint);\n  return [pointRel, tangent];\n};\n\nconst hitTestFreeDrawElement = (element, point, threshold) => {\n  // Check point-distance-to-line-segment for every segment in the\n  // element\'s points (its input points, not its outline points).\n  // This is... okay? It\'s plenty fast, but the GA library may\n  // have a faster option.\n  let x;\n  let y;\n\n  if (element.angle === 0) {\n    x = point[0] - element.x;\n    y = point[1] - element.y;\n  } else {\n    // Counter-rotate the point around center before testing\n    const [minX, minY, maxX, maxY] = (0,_bounds__WEBPACK_IMPORTED_MODULE_7__.getElementAbsoluteCoords)(element);\n    const rotatedPoint = (0,_math__WEBPACK_IMPORTED_MODULE_5__.rotatePoint)(point, [minX + (maxX - minX) / 2, minY + (maxY - minY) / 2], -element.angle);\n    x = rotatedPoint[0] - element.x;\n    y = rotatedPoint[1] - element.y;\n  }\n\n  let [A, B] = element.points;\n  let P; // For freedraw dots\n\n  if ((0,_math__WEBPACK_IMPORTED_MODULE_5__.distance2d)(A[0], A[1], x, y) < threshold || (0,_math__WEBPACK_IMPORTED_MODULE_5__.distance2d)(B[0], B[1], x, y) < threshold) {\n    return true;\n  } // For freedraw lines\n\n\n  for (let i = 0; i < element.points.length; i++) {\n    const delta = [B[0] - A[0], B[1] - A[1]];\n    const length = Math.hypot(delta[1], delta[0]);\n    const U = [delta[0] / length, delta[1] / length];\n    const C = [x - A[0], y - A[1]];\n    const d = (C[0] * U[0] + C[1] * U[1]) / Math.hypot(U[1], U[0]);\n    P = [A[0] + U[0] * d, A[1] + U[1] * d];\n    const da = (0,_math__WEBPACK_IMPORTED_MODULE_5__.distance2d)(P[0], P[1], A[0], A[1]);\n    const db = (0,_math__WEBPACK_IMPORTED_MODULE_5__.distance2d)(P[0], P[1], B[0], B[1]);\n    P = db < da && da > length ? B : da < db && db > length ? A : P;\n\n    if (Math.hypot(y - P[1], x - P[0]) < threshold) {\n      return true;\n    }\n\n    A = B;\n    B = element.points[i + 1];\n  }\n\n  const shape = _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_13__.ShapeCache.get(element); // for filled freedraw shapes, support\n  // selecting from inside\n\n  if (shape && shape.sets.length) {\n    return element.fillStyle === "solid" ? hitTestCurveInside(shape, x, y, "round") : hitTestRoughShape(shape, x, y, threshold);\n  }\n\n  return false;\n};\n\nconst hitTestLinear = args => {\n  const {\n    element,\n    threshold\n  } = args;\n\n  if (!_scene_ShapeCache__WEBPACK_IMPORTED_MODULE_13__.ShapeCache.get(element)) {\n    return false;\n  }\n\n  const [point, pointAbs, hwidth, hheight] = pointRelativeToElement(args.element, args.point);\n  const side1 = _galines__WEBPACK_IMPORTED_MODULE_3__.equation(0, 1, -hheight);\n  const side2 = _galines__WEBPACK_IMPORTED_MODULE_3__.equation(1, 0, -hwidth);\n\n  if (!isInsideCheck(_gapoints__WEBPACK_IMPORTED_MODULE_1__.distanceToLine(pointAbs, side1), threshold) || !isInsideCheck(_gapoints__WEBPACK_IMPORTED_MODULE_1__.distanceToLine(pointAbs, side2), threshold)) {\n    return false;\n  }\n\n  const [relX, relY] = _gapoints__WEBPACK_IMPORTED_MODULE_1__.toTuple(point);\n  const shape = _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_13__.ShapeCache.get(element);\n\n  if (!shape) {\n    return false;\n  }\n\n  if (args.check === isInsideCheck) {\n    const hit = shape.some(subshape => hitTestCurveInside(subshape, relX, relY, element.roundness ? "round" : "sharp"));\n\n    if (hit) {\n      return true;\n    }\n  } // hit test all "subshapes" of the linear element\n\n\n  return shape.some(subshape => hitTestRoughShape(subshape, relX, relY, threshold));\n}; // Returns:\n//   1. the point relative to the elements (x, y) position\n//   2. the point relative to the element\'s center with positive (x, y)\n//   3. half element width\n//   4. half element height\n//\n// Note that for linear elements the (x, y) position is not at the\n// top right corner of their boundary.\n//\n// Rectangles, diamonds and ellipses are symmetrical over axes,\n// and other elements have a rectangular boundary,\n// so we only need to perform hit tests for the positive quadrant.\n\n\nconst pointRelativeToElement = (element, pointTuple) => {\n  const point = _gapoints__WEBPACK_IMPORTED_MODULE_1__.from(pointTuple);\n  const [x1, y1, x2, y2] = (0,_bounds__WEBPACK_IMPORTED_MODULE_7__.getElementAbsoluteCoords)(element);\n  const center = coordsCenter(x1, y1, x2, y2); // GA has angle orientation opposite to `rotate`\n\n  const rotate = _gatransforms__WEBPACK_IMPORTED_MODULE_4__.rotation(center, element.angle);\n  const pointRotated = _gatransforms__WEBPACK_IMPORTED_MODULE_4__.apply(rotate, point);\n  const pointRelToCenter = _ga__WEBPACK_IMPORTED_MODULE_0__.sub(pointRotated, _gadirections__WEBPACK_IMPORTED_MODULE_2__.from(center));\n  const pointRelToCenterAbs = _gapoints__WEBPACK_IMPORTED_MODULE_1__.abs(pointRelToCenter);\n  const elementPos = _ga__WEBPACK_IMPORTED_MODULE_0__.offset(element.x, element.y);\n  const pointRelToPos = _ga__WEBPACK_IMPORTED_MODULE_0__.sub(pointRotated, elementPos);\n  const halfWidth = (x2 - x1) / 2;\n  const halfHeight = (y2 - y1) / 2;\n  return [pointRelToPos, pointRelToCenterAbs, halfWidth, halfHeight];\n};\n\nconst pointRelativeToDivElement = (pointTuple, rectangle) => {\n  const point = _gapoints__WEBPACK_IMPORTED_MODULE_1__.from(pointTuple);\n  const [x1, y1, x2, y2] = (0,_bounds__WEBPACK_IMPORTED_MODULE_7__.getRectangleBoxAbsoluteCoords)(rectangle);\n  const center = coordsCenter(x1, y1, x2, y2);\n  const rotate = _gatransforms__WEBPACK_IMPORTED_MODULE_4__.rotation(center, rectangle.angle);\n  const pointRotated = _gatransforms__WEBPACK_IMPORTED_MODULE_4__.apply(rotate, point);\n  const pointRelToCenter = _ga__WEBPACK_IMPORTED_MODULE_0__.sub(pointRotated, _gadirections__WEBPACK_IMPORTED_MODULE_2__.from(center));\n  const pointRelToCenterAbs = _gapoints__WEBPACK_IMPORTED_MODULE_1__.abs(pointRelToCenter);\n  const elementPos = _ga__WEBPACK_IMPORTED_MODULE_0__.offset(rectangle.x, rectangle.y);\n  const pointRelToPos = _ga__WEBPACK_IMPORTED_MODULE_0__.sub(pointRotated, elementPos);\n  const halfWidth = (x2 - x1) / 2;\n  const halfHeight = (y2 - y1) / 2;\n  return [pointRelToPos, pointRelToCenterAbs, halfWidth, halfHeight];\n}; // Returns point in absolute coordinates\n\n\nconst pointInAbsoluteCoords = (element, // Point relative to the element position\npoint) => {\n  const [x, y] = point;\n  const [x1, y1, x2, y2] = (0,_bounds__WEBPACK_IMPORTED_MODULE_7__.getElementAbsoluteCoords)(element);\n  const cx = (x2 - x1) / 2;\n  const cy = (y2 - y1) / 2;\n  const [rotatedX, rotatedY] = (0,_math__WEBPACK_IMPORTED_MODULE_5__.rotate)(x, y, cx, cy, element.angle);\n  return [element.x + rotatedX, element.y + rotatedY];\n};\n\nconst relativizationToElementCenter = element => {\n  const [x1, y1, x2, y2] = (0,_bounds__WEBPACK_IMPORTED_MODULE_7__.getElementAbsoluteCoords)(element);\n  const center = coordsCenter(x1, y1, x2, y2); // GA has angle orientation opposite to `rotate`\n\n  const rotate = _gatransforms__WEBPACK_IMPORTED_MODULE_4__.rotation(center, element.angle);\n  const translate = _ga__WEBPACK_IMPORTED_MODULE_0__.reverse(_gatransforms__WEBPACK_IMPORTED_MODULE_4__.translation(_gadirections__WEBPACK_IMPORTED_MODULE_2__.from(center)));\n  return _gatransforms__WEBPACK_IMPORTED_MODULE_4__.compose(rotate, translate);\n};\n\nconst coordsCenter = (x1, y1, x2, y2) => {\n  return _ga__WEBPACK_IMPORTED_MODULE_0__.point((x1 + x2) / 2, (y1 + y2) / 2);\n}; // The focus distance is the oriented ratio between the size of\n// the `element` and the "focus image" of the element on which\n// all focus points lie, so it\'s a number between -1 and 1.\n// The line going through `a` and `b` is a tangent to the "focus image"\n// of the element.\n\n\nconst determineFocusDistance = (element, // Point on the line, in absolute coordinates\na, // Another point on the line, in absolute coordinates (closer to element)\nb) => {\n  const relateToCenter = relativizationToElementCenter(element);\n  const aRel = _gatransforms__WEBPACK_IMPORTED_MODULE_4__.apply(relateToCenter, _gapoints__WEBPACK_IMPORTED_MODULE_1__.from(a));\n  const bRel = _gatransforms__WEBPACK_IMPORTED_MODULE_4__.apply(relateToCenter, _gapoints__WEBPACK_IMPORTED_MODULE_1__.from(b));\n  const line = _galines__WEBPACK_IMPORTED_MODULE_3__.through(aRel, bRel);\n  const q = element.height / element.width;\n  const hwidth = element.width / 2;\n  const hheight = element.height / 2;\n  const n = line[2];\n  const m = line[3];\n  const c = line[1];\n  const mabs = Math.abs(m);\n  const nabs = Math.abs(n);\n  let ret;\n\n  switch (element.type) {\n    case "rectangle":\n    case "image":\n    case "text":\n    case "embeddable":\n    case "frame":\n      ret = c / (hwidth * (nabs + q * mabs));\n      break;\n\n    case "diamond":\n      ret = mabs < nabs ? c / (nabs * hwidth) : c / (mabs * hheight);\n      break;\n\n    case "ellipse":\n      ret = c / (hwidth * Math.sqrt(Math.pow(n, 2) + Math.pow(q, 2) * Math.pow(m, 2)));\n      break;\n  }\n\n  return ret || 0;\n};\nconst determineFocusPoint = (element, // The oriented, relative distance from the center of `element` of the\n// returned focusPoint\nfocus, adjecentPoint) => {\n  if (focus === 0) {\n    const [x1, y1, x2, y2] = (0,_bounds__WEBPACK_IMPORTED_MODULE_7__.getElementAbsoluteCoords)(element);\n    const center = coordsCenter(x1, y1, x2, y2);\n    return _gapoints__WEBPACK_IMPORTED_MODULE_1__.toTuple(center);\n  }\n\n  const relateToCenter = relativizationToElementCenter(element);\n  const adjecentPointRel = _gatransforms__WEBPACK_IMPORTED_MODULE_4__.apply(relateToCenter, _gapoints__WEBPACK_IMPORTED_MODULE_1__.from(adjecentPoint));\n  const reverseRelateToCenter = _ga__WEBPACK_IMPORTED_MODULE_0__.reverse(relateToCenter);\n  let point;\n\n  switch (element.type) {\n    case "rectangle":\n    case "image":\n    case "text":\n    case "diamond":\n    case "embeddable":\n    case "frame":\n      point = findFocusPointForRectangulars(element, focus, adjecentPointRel);\n      break;\n\n    case "ellipse":\n      point = findFocusPointForEllipse(element, focus, adjecentPointRel);\n      break;\n  }\n\n  return _gapoints__WEBPACK_IMPORTED_MODULE_1__.toTuple(_gatransforms__WEBPACK_IMPORTED_MODULE_4__.apply(reverseRelateToCenter, point));\n}; // Returns 2 or 0 intersection points between line going through `a` and `b`\n// and the `element`, in ascending order of distance from `a`.\n\nconst intersectElementWithLine = (element, // Point on the line, in absolute coordinates\na, // Another point on the line, in absolute coordinates\nb, // If given, the element is inflated by this value\ngap = 0) => {\n  const relateToCenter = relativizationToElementCenter(element);\n  const aRel = _gatransforms__WEBPACK_IMPORTED_MODULE_4__.apply(relateToCenter, _gapoints__WEBPACK_IMPORTED_MODULE_1__.from(a));\n  const bRel = _gatransforms__WEBPACK_IMPORTED_MODULE_4__.apply(relateToCenter, _gapoints__WEBPACK_IMPORTED_MODULE_1__.from(b));\n  const line = _galines__WEBPACK_IMPORTED_MODULE_3__.through(aRel, bRel);\n  const reverseRelateToCenter = _ga__WEBPACK_IMPORTED_MODULE_0__.reverse(relateToCenter);\n  const intersections = getSortedElementLineIntersections(element, line, aRel, gap);\n  return intersections.map(point => _gapoints__WEBPACK_IMPORTED_MODULE_1__.toTuple(_gatransforms__WEBPACK_IMPORTED_MODULE_4__.apply(reverseRelateToCenter, point)));\n};\n\nconst getSortedElementLineIntersections = (element, // Relative to element center\nline, // Relative to element center\nnearPoint, gap = 0) => {\n  let intersections;\n\n  switch (element.type) {\n    case "rectangle":\n    case "image":\n    case "text":\n    case "diamond":\n    case "embeddable":\n    case "frame":\n      const corners = getCorners(element);\n      intersections = corners.flatMap((point, i) => {\n        const edge = [point, corners[(i + 1) % 4]];\n        return intersectSegment(line, offsetSegment(edge, gap));\n      }).concat(corners.flatMap(point => getCircleIntersections(point, gap, line)));\n      break;\n\n    case "ellipse":\n      intersections = getEllipseIntersections(element, gap, line);\n      break;\n  }\n\n  if (intersections.length < 2) {\n    // Ignore the "edge" case of only intersecting with a single corner\n    return [];\n  }\n\n  const sortedIntersections = intersections.sort((i1, i2) => _gapoints__WEBPACK_IMPORTED_MODULE_1__.distance(i1, nearPoint) - _gapoints__WEBPACK_IMPORTED_MODULE_1__.distance(i2, nearPoint));\n  return [sortedIntersections[0], sortedIntersections[sortedIntersections.length - 1]];\n};\n\nconst getCorners = (element, scale = 1) => {\n  const hx = scale * element.width / 2;\n  const hy = scale * element.height / 2;\n\n  switch (element.type) {\n    case "rectangle":\n    case "image":\n    case "text":\n    case "embeddable":\n    case "frame":\n      return [_ga__WEBPACK_IMPORTED_MODULE_0__.point(hx, hy), _ga__WEBPACK_IMPORTED_MODULE_0__.point(hx, -hy), _ga__WEBPACK_IMPORTED_MODULE_0__.point(-hx, -hy), _ga__WEBPACK_IMPORTED_MODULE_0__.point(-hx, hy)];\n\n    case "diamond":\n      return [_ga__WEBPACK_IMPORTED_MODULE_0__.point(0, hy), _ga__WEBPACK_IMPORTED_MODULE_0__.point(hx, 0), _ga__WEBPACK_IMPORTED_MODULE_0__.point(0, -hy), _ga__WEBPACK_IMPORTED_MODULE_0__.point(-hx, 0)];\n  }\n}; // Returns intersection of `line` with `segment`, with `segment` moved by\n// `gap` in its polar direction.\n// If intersection coincides with second segment point returns empty array.\n\n\nconst intersectSegment = (line, segment) => {\n  const [a, b] = segment;\n  const aDist = _gapoints__WEBPACK_IMPORTED_MODULE_1__.distanceToLine(a, line);\n  const bDist = _gapoints__WEBPACK_IMPORTED_MODULE_1__.distanceToLine(b, line);\n\n  if (aDist * bDist >= 0) {\n    // The intersection is outside segment `(a, b)`\n    return [];\n  }\n\n  return [_gapoints__WEBPACK_IMPORTED_MODULE_1__.intersect(line, _galines__WEBPACK_IMPORTED_MODULE_3__.through(a, b))];\n};\n\nconst offsetSegment = (segment, distance) => {\n  const [a, b] = segment;\n  const offset = _gatransforms__WEBPACK_IMPORTED_MODULE_4__.translationOrthogonal(_gadirections__WEBPACK_IMPORTED_MODULE_2__.fromTo(a, b), distance);\n  return [_gatransforms__WEBPACK_IMPORTED_MODULE_4__.apply(offset, a), _gatransforms__WEBPACK_IMPORTED_MODULE_4__.apply(offset, b)];\n};\n\nconst getEllipseIntersections = (element, gap, line) => {\n  const a = element.width / 2 + gap;\n  const b = element.height / 2 + gap;\n  const m = line[2];\n  const n = line[3];\n  const c = line[1];\n  const squares = a * a * m * m + b * b * n * n;\n  const discr = squares - c * c;\n\n  if (squares === 0 || discr <= 0) {\n    return [];\n  }\n\n  const discrRoot = Math.sqrt(discr);\n  const xn = -a * a * m * c;\n  const yn = -b * b * n * c;\n  return [_ga__WEBPACK_IMPORTED_MODULE_0__.point((xn + a * b * n * discrRoot) / squares, (yn - a * b * m * discrRoot) / squares), _ga__WEBPACK_IMPORTED_MODULE_0__.point((xn - a * b * n * discrRoot) / squares, (yn + a * b * m * discrRoot) / squares)];\n};\n\nconst getCircleIntersections = (center, radius, line) => {\n  if (radius === 0) {\n    return _gapoints__WEBPACK_IMPORTED_MODULE_1__.distanceToLine(line, center) === 0 ? [center] : [];\n  }\n\n  const m = line[2];\n  const n = line[3];\n  const c = line[1];\n  const [a, b] = _gapoints__WEBPACK_IMPORTED_MODULE_1__.toTuple(center);\n  const r = radius;\n  const squares = m * m + n * n;\n  const discr = r * r * squares - Math.pow(m * a + n * b + c, 2);\n\n  if (squares === 0 || discr <= 0) {\n    return [];\n  }\n\n  const discrRoot = Math.sqrt(discr);\n  const xn = a * n * n - b * m * n - m * c;\n  const yn = b * m * m - a * m * n - n * c;\n  return [_ga__WEBPACK_IMPORTED_MODULE_0__.point((xn + n * discrRoot) / squares, (yn - m * discrRoot) / squares), _ga__WEBPACK_IMPORTED_MODULE_0__.point((xn - n * discrRoot) / squares, (yn + m * discrRoot) / squares)];\n}; // The focus point is the tangent point of the "focus image" of the\n// `element`, where the tangent goes through `point`.\n\nconst findFocusPointForEllipse = (ellipse, // Between -1 and 1 (not 0) the relative size of the "focus image" of\n// the element on which the focus point lies\nrelativeDistance, // The point for which we\'re trying to find the focus point, relative\n// to the ellipse center.\npoint) => {\n  const relativeDistanceAbs = Math.abs(relativeDistance);\n  const a = ellipse.width * relativeDistanceAbs / 2;\n  const b = ellipse.height * relativeDistanceAbs / 2;\n  const orientation = Math.sign(relativeDistance);\n  const [px, pyo] = _gapoints__WEBPACK_IMPORTED_MODULE_1__.toTuple(point); // The calculation below can\'t handle py = 0\n\n  const py = pyo === 0 ? 0.0001 : pyo;\n  const squares = Math.pow(px, 2) * Math.pow(b, 2) + Math.pow(py, 2) * Math.pow(a, 2); // Tangent mx + ny + 1 = 0\n\n  const m = (-px * Math.pow(b, 2) + orientation * py * Math.sqrt(Math.max(0, squares - Math.pow(a, 2) * Math.pow(b, 2)))) / squares;\n  let n = (-m * px - 1) / py;\n\n  if (n === 0) {\n    // if zero {-0, 0}, fall back to a same-sign value in the similar range\n    n = (Object.is(n, -0) ? -1 : 1) * 0.01;\n  }\n\n  const x = -(Math.pow(a, 2) * m) / (Math.pow(n, 2) * Math.pow(b, 2) + Math.pow(m, 2) * Math.pow(a, 2));\n  return _ga__WEBPACK_IMPORTED_MODULE_0__.point(x, (-m * x - 1) / n);\n};\nconst findFocusPointForRectangulars = (element, // Between -1 and 1 for how far away should the focus point be relative\n// to the size of the element. Sign determines orientation.\nrelativeDistance, // The point for which we\'re trying to find the focus point, relative\n// to the element center.\npoint) => {\n  const relativeDistanceAbs = Math.abs(relativeDistance);\n  const orientation = Math.sign(relativeDistance);\n  const corners = getCorners(element, relativeDistanceAbs);\n  let maxDistance = 0;\n  let tangentPoint = null;\n  corners.forEach(corner => {\n    const distance = orientation * _galines__WEBPACK_IMPORTED_MODULE_3__.through(point, corner)[1];\n\n    if (distance > maxDistance) {\n      maxDistance = distance;\n      tangentPoint = corner;\n    }\n  });\n  return tangentPoint;\n};\n\nconst pointInBezierEquation = (p0, p1, p2, p3, [mx, my], lineThreshold) => {\n  // B(t) = p0 * (1-t)^3 + 3p1 * t * (1-t)^2 + 3p2 * t^2 * (1-t) + p3 * t^3\n  const equation = (t, idx) => Math.pow(1 - t, 3) * p3[idx] + 3 * t * Math.pow(1 - t, 2) * p2[idx] + 3 * Math.pow(t, 2) * (1 - t) * p1[idx] + p0[idx] * Math.pow(t, 3); // go through t in increments of 0.01\n\n\n  let t = 0;\n\n  while (t <= 1.0) {\n    const tx = equation(t, 0);\n    const ty = equation(t, 1);\n    const diff = Math.sqrt(Math.pow(tx - mx, 2) + Math.pow(ty - my, 2));\n\n    if (diff < lineThreshold) {\n      return true;\n    }\n\n    t += 0.01;\n  }\n\n  return false;\n};\n\nconst hitTestCurveInside = (drawable, x, y, roundness) => {\n  const ops = (0,_bounds__WEBPACK_IMPORTED_MODULE_7__.getCurvePathOps)(drawable);\n  const points = [];\n  let odd = false; // select one line out of double lines\n\n  for (const operation of ops) {\n    if (operation.op === "move") {\n      odd = !odd;\n\n      if (odd) {\n        points.push([operation.data[0], operation.data[1]]);\n      }\n    } else if (operation.op === "bcurveTo") {\n      if (odd) {\n        points.push([operation.data[0], operation.data[1]]);\n        points.push([operation.data[2], operation.data[3]]);\n        points.push([operation.data[4], operation.data[5]]);\n      }\n    } else if (operation.op === "lineTo") {\n      if (odd) {\n        points.push([operation.data[0], operation.data[1]]);\n      }\n    }\n  }\n\n  if (points.length >= 4) {\n    if (roundness === "sharp") {\n      return (0,_math__WEBPACK_IMPORTED_MODULE_5__.isPointInPolygon)(points, x, y);\n    }\n\n    const polygonPoints = (0,points_on_curve__WEBPACK_IMPORTED_MODULE_6__.pointsOnBezierCurves)(points, 10, 5);\n    return (0,_math__WEBPACK_IMPORTED_MODULE_5__.isPointInPolygon)(polygonPoints, x, y);\n  }\n\n  return false;\n};\n\nconst hitTestRoughShape = (drawable, x, y, lineThreshold) => {\n  // read operations from first opSet\n  const ops = (0,_bounds__WEBPACK_IMPORTED_MODULE_7__.getCurvePathOps)(drawable); // set start position as (0,0) just in case\n  // move operation does not exist (unlikely but it is worth safekeeping it)\n\n  let currentP = [0, 0];\n  return ops.some(({\n    op,\n    data\n  }, idx) => {\n    // There are only four operation types:\n    // move, bcurveTo, lineTo, and curveTo\n    if (op === "move") {\n      // change starting point\n      currentP = data; // move operation does not draw anything; so, it always\n      // returns false\n    } else if (op === "bcurveTo") {\n      // create points from bezier curve\n      // bezier curve stores data as a flattened array of three positions\n      // [x1, y1, x2, y2, x3, y3]\n      const p1 = [data[0], data[1]];\n      const p2 = [data[2], data[3]];\n      const p3 = [data[4], data[5]];\n      const p0 = currentP;\n      currentP = p3; // check if points are on the curve\n      // cubic bezier curves require four parameters\n      // the first parameter is the last stored position (p0)\n\n      const retVal = pointInBezierEquation(p0, p1, p2, p3, [x, y], lineThreshold); // set end point of bezier curve as the new starting point for\n      // upcoming operations as each operation is based on the last drawn\n      // position of the previous operation\n\n      return retVal;\n    } else if (op === "lineTo") {\n      return hitTestCurveInside(drawable, x, y, "sharp");\n    } else if (op === "qcurveTo") {\n      // TODO: Implement this\n      console.warn("qcurveTo is not implemented yet");\n    }\n\n    return false;\n  });\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 44508 characters]\n//# sourceURL=webpack-internal:///../../element/collision.ts\n');
              }
            ),
            /***/
            "../../element/dragElements.ts": (
              /*!*************************************!*\
                !*** ../../element/dragElements.ts ***!
                \*************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "dragNewElement": () => (/* binding */ dragNewElement),
/* harmony export */   "dragSelectedElements": () => (/* binding */ dragSelectedElements),
/* harmony export */   "getDragOffsetXY": () => (/* binding */ getDragOffsetXY)
/* harmony export */ });
/* harmony import */ var _binding__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./binding */ "../../element/binding.ts");
/* harmony import */ var _bounds__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./bounds */ "../../element/bounds.ts");
/* harmony import */ var _mutateElement__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./mutateElement */ "../../element/mutateElement.ts");
/* harmony import */ var _sizeHelpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./sizeHelpers */ "../../element/sizeHelpers.ts");
/* harmony import */ var _textElement__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./textElement */ "../../element/textElement.ts");
/* harmony import */ var _groups__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../groups */ "../../groups.ts");
/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../math */ "../../math.ts");
/* harmony import */ var _typeChecks__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./typeChecks */ "../../element/typeChecks.ts");








const dragSelectedElements = (pointerDownState, selectedElements, offset, appState, scene, snapOffset, gridSize) => {
  // we do not want a frame and its elements to be selected at the same time
  // but when it happens (due to some bug), we want to avoid updating element
  // in the frame twice, hence the use of set
  const elementsToUpdate = new Set(selectedElements);
  const frames = selectedElements.filter(e => (0,_typeChecks__WEBPACK_IMPORTED_MODULE_7__.isFrameElement)(e)).map(f => f.id);

  if (frames.length > 0) {
    const elementsInFrames = scene.getNonDeletedElements().filter(e => !(0,_typeChecks__WEBPACK_IMPORTED_MODULE_7__.isBoundToContainer)(e)).filter(e => e.frameId !== null).filter(e => frames.includes(e.frameId));
    elementsInFrames.forEach(element => elementsToUpdate.add(element));
  }

  const commonBounds = (0,_bounds__WEBPACK_IMPORTED_MODULE_1__.getCommonBounds)(Array.from(elementsToUpdate).map(el => {
    var _a;

    return (_a = pointerDownState.originalElements.get(el.id)) !== null && _a !== void 0 ? _a : el;
  }));
  const adjustedOffset = calculateOffset(commonBounds, offset, snapOffset, gridSize);
  elementsToUpdate.forEach(element => {
    updateElementCoords(pointerDownState, element, adjustedOffset); // update coords of bound text only if we're dragging the container directly
    // (we don't drag the group that it's part of)

    if ( // Don't update coords of arrow label since we calculate its position during render
    !(0,_typeChecks__WEBPACK_IMPORTED_MODULE_7__.isArrowElement)(element) && ( // container isn't part of any group
    // (perf optim so we don't check \`isSelectedViaGroup()\` in every case)
    !element.groupIds.length || // container is part of a group, but we're dragging the container directly
    appState.editingGroupId && !(0,_groups__WEBPACK_IMPORTED_MODULE_5__.isSelectedViaGroup)(appState, element))) {
      const textElement = (0,_textElement__WEBPACK_IMPORTED_MODULE_4__.getBoundTextElement)(element);

      if (textElement) {
        updateElementCoords(pointerDownState, textElement, adjustedOffset);
      }
    }

    (0,_binding__WEBPACK_IMPORTED_MODULE_0__.updateBoundElements)(element, {
      simultaneouslyUpdated: Array.from(elementsToUpdate)
    });
  });
};

const calculateOffset = (commonBounds, dragOffset, snapOffset, gridSize) => {
  const [x, y] = commonBounds;
  let nextX = x + dragOffset.x + snapOffset.x;
  let nextY = y + dragOffset.y + snapOffset.y;

  if (snapOffset.x === 0 || snapOffset.y === 0) {
    const [nextGridX, nextGridY] = (0,_math__WEBPACK_IMPORTED_MODULE_6__.getGridPoint)(x + dragOffset.x, y + dragOffset.y, gridSize);

    if (snapOffset.x === 0) {
      nextX = nextGridX;
    }

    if (snapOffset.y === 0) {
      nextY = nextGridY;
    }
  }

  return {
    x: nextX - x,
    y: nextY - y
  };
};

const updateElementCoords = (pointerDownState, element, dragOffset) => {
  var _a;

  const originalElement = (_a = pointerDownState.originalElements.get(element.id)) !== null && _a !== void 0 ? _a : element;
  const nextX = originalElement.x + dragOffset.x;
  const nextY = originalElement.y + dragOffset.y;
  (0,_mutateElement__WEBPACK_IMPORTED_MODULE_2__.mutateElement)(element, {
    x: nextX,
    y: nextY
  });
};

const getDragOffsetXY = (selectedElements, x, y) => {
  const [x1, y1] = (0,_bounds__WEBPACK_IMPORTED_MODULE_1__.getCommonBounds)(selectedElements);
  return [x - x1, y - y1];
};
const dragNewElement = (draggingElement, elementType, originX, originY, x, y, width, height, shouldMaintainAspectRatio, shouldResizeFromCenter,
/** whether to keep given aspect ratio when \`isResizeWithSidesSameLength\` is
    true */
widthAspectRatio, originOffset = null) => {
  var _a, _b;

  if (shouldMaintainAspectRatio && draggingElement.type !== "selection") {
    if (widthAspectRatio) {
      height = width / widthAspectRatio;
    } else {
      // Depending on where the cursor is at (x, y) relative to where the starting point is
      // (originX, originY), we use ONLY width or height to control size increase.
      // This allows the cursor to always "stick" to one of the sides of the bounding box.
      if (Math.abs(y - originY) > Math.abs(x - originX)) {
        ({
          width,
          height
        } = (0,_sizeHelpers__WEBPACK_IMPORTED_MODULE_3__.getPerfectElementSize)(elementType, height, x < originX ? -width : width));
      } else {
        ({
          width,
          height
        } = (0,_sizeHelpers__WEBPACK_IMPORTED_MODULE_3__.getPerfectElementSize)(elementType, width, y < originY ? -height : height));
      }

      if (height < 0) {
        height = -height;
      }
    }
  }

  let newX = x < originX ? originX - width : originX;
  let newY = y < originY ? originY - height : originY;

  if (shouldResizeFromCenter) {
    width += width;
    height += height;
    newX = originX - width / 2;
    newY = originY - height / 2;
  }

  if (width !== 0 && height !== 0) {
    (0,_mutateElement__WEBPACK_IMPORTED_MODULE_2__.mutateElement)(draggingElement, {
      x: newX + ((_a = originOffset === null || originOffset === void 0 ? void 0 : originOffset.x) !== null && _a !== void 0 ? _a : 0),
      y: newY + ((_b = originOffset === null || originOffset === void 0 ? void 0 : originOffset.y) !== null && _b !== void 0 ? _b : 0),
      width,
      height
    });
  }
};//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 8532 characters]
//# sourceURL=webpack-internal:///../../element/dragElements.ts
`);
              }
            ),
            /***/
            "../../element/embeddable.ts": (
              /*!***********************************!*\
                !*** ../../element/embeddable.ts ***!
                \***********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "actionSetEmbeddableAsActiveTool": () => (/* binding */ actionSetEmbeddableAsActiveTool),\n/* harmony export */   "createPlaceholderEmbeddableLabel": () => (/* binding */ createPlaceholderEmbeddableLabel),\n/* harmony export */   "embeddableURLValidator": () => (/* binding */ embeddableURLValidator),\n/* harmony export */   "extractSrc": () => (/* binding */ extractSrc),\n/* harmony export */   "getEmbedLink": () => (/* binding */ getEmbedLink),\n/* harmony export */   "isEmbeddableOrLabel": () => (/* binding */ isEmbeddableOrLabel)\n/* harmony export */ });\n/* harmony import */ var _actions_register__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../actions/register */ "../../actions/register.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _cursor__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../cursor */ "../../cursor.ts");\n/* harmony import */ var _newElement__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./newElement */ "../../element/newElement.ts");\n/* harmony import */ var _textElement__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./textElement */ "../../element/textElement.ts");\n/* harmony import */ var _typeChecks__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var _data_url__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../data/url */ "../../data/url.ts");\n\n\n\n\n\n\n\n\n\nconst embeddedLinkCache = new Map();\nconst RE_YOUTUBE = /^(?:http(?:s)?:\\/\\/)?(?:www\\.)?youtu(?:be\\.com|\\.be)\\/(embed\\/|watch\\?v=|shorts\\/|playlist\\?list=|embed\\/videoseries\\?list=)?([a-zA-Z0-9_-]+)(?:\\?t=|&t=|\\?start=|&start=)?([a-zA-Z0-9_-]+)?[^\\s]*$/;\nconst RE_VIMEO = /^(?:http(?:s)?:\\/\\/)?(?:(?:w){3}\\.)?(?:player\\.)?vimeo\\.com\\/(?:video\\/)?([^?\\s]+)(?:\\?.*)?$/;\nconst RE_FIGMA = /^https:\\/\\/(?:www\\.)?figma\\.com/;\nconst RE_GH_GIST = /^https:\\/\\/gist\\.github\\.com\\/([\\w_-]+)\\/([\\w_-]+)/;\nconst RE_GH_GIST_EMBED = /^<script[\\s\\S]*?\\ssrc=["\'](https:\\/\\/gist\\.github\\.com\\/.*?)\\.js["\']/i; // not anchored to start to allow <blockquote> twitter embeds\n\nconst RE_TWITTER = /(?:https?:\\/\\/)?(?:(?:w){3}\\.)?(?:twitter|x)\\.com\\/[^/]+\\/status\\/(\\d+)/;\nconst RE_TWITTER_EMBED = /^<blockquote[\\s\\S]*?\\shref=["\'](https?:\\/\\/(?:twitter|x)\\.com\\/[^"\']*)/i;\nconst RE_VALTOWN = /^https:\\/\\/(?:www\\.)?val\\.town\\/(v|embed)\\/[a-zA-Z_$][0-9a-zA-Z_$]+\\.[a-zA-Z_$][0-9a-zA-Z_$]+/;\nconst RE_GENERIC_EMBED = /^<(?:iframe|blockquote)[\\s\\S]*?\\s(?:src|href)=["\']([^"\']*)["\'][\\s\\S]*?>$/i;\nconst RE_GIPHY = /giphy.com\\/(?:clips|embed|gifs)\\/[a-zA-Z0-9]*?-?([a-zA-Z0-9]+)(?:[^a-zA-Z0-9]|$)/;\nconst ALLOWED_DOMAINS = new Set(["youtube.com", "youtu.be", "vimeo.com", "player.vimeo.com", "figma.com", "link.excalidraw.com", "gist.github.com", "twitter.com", "*.simplepdf.eu", "stackblitz.com", "val.town", "giphy.com"]);\nconst ALLOW_SAME_ORIGIN = new Set(["youtube.com", "youtu.be", "vimeo.com", "player.vimeo.com", "figma.com", "twitter.com", "x.com", "*.simplepdf.eu", "stackblitz.com"]);\n\nconst createSrcDoc = body => {\n  return `<html><body>${body}</body></html>`;\n};\n\nconst getEmbedLink = link => {\n  if (!link) {\n    return null;\n  }\n\n  if (embeddedLinkCache.has(link)) {\n    return embeddedLinkCache.get(link);\n  }\n\n  const originalLink = link;\n  const allowSameOrigin = ALLOW_SAME_ORIGIN.has(matchHostname(link, ALLOW_SAME_ORIGIN) || "");\n  let type = "generic";\n  let aspectRatio = {\n    w: 560,\n    h: 840\n  };\n  const ytLink = link.match(RE_YOUTUBE);\n\n  if (ytLink === null || ytLink === void 0 ? void 0 : ytLink[2]) {\n    const time = ytLink[3] ? `&start=${ytLink[3]}` : ``;\n    const isPortrait = link.includes("shorts");\n    type = "video";\n\n    switch (ytLink[1]) {\n      case "embed/":\n      case "watch?v=":\n      case "shorts/":\n        link = `https://www.youtube.com/embed/${ytLink[2]}?enablejsapi=1${time}`;\n        break;\n\n      case "playlist?list=":\n      case "embed/videoseries?list=":\n        link = `https://www.youtube.com/embed/videoseries?list=${ytLink[2]}&enablejsapi=1${time}`;\n        break;\n\n      default:\n        link = `https://www.youtube.com/embed/${ytLink[2]}?enablejsapi=1${time}`;\n        break;\n    }\n\n    aspectRatio = isPortrait ? {\n      w: 315,\n      h: 560\n    } : {\n      w: 560,\n      h: 315\n    };\n    embeddedLinkCache.set(originalLink, {\n      link,\n      aspectRatio,\n      type,\n      sandbox: {\n        allowSameOrigin\n      }\n    });\n    return {\n      link,\n      aspectRatio,\n      type,\n      sandbox: {\n        allowSameOrigin\n      }\n    };\n  }\n\n  const vimeoLink = link.match(RE_VIMEO);\n\n  if (vimeoLink === null || vimeoLink === void 0 ? void 0 : vimeoLink[1]) {\n    const target = vimeoLink === null || vimeoLink === void 0 ? void 0 : vimeoLink[1];\n    const warning = !/^\\d+$/.test(target) ? (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)("toast.unrecognizedLinkFormat") : undefined;\n    type = "video";\n    link = `https://player.vimeo.com/video/${target}?api=1`;\n    aspectRatio = {\n      w: 560,\n      h: 315\n    }; //warning deliberately ommited so it is displayed only once per link\n    //same link next time will be served from cache\n\n    embeddedLinkCache.set(originalLink, {\n      link,\n      aspectRatio,\n      type,\n      sandbox: {\n        allowSameOrigin\n      }\n    });\n    return {\n      link,\n      aspectRatio,\n      type,\n      warning,\n      sandbox: {\n        allowSameOrigin\n      }\n    };\n  }\n\n  const figmaLink = link.match(RE_FIGMA);\n\n  if (figmaLink) {\n    type = "generic";\n    link = `https://www.figma.com/embed?embed_host=share&url=${encodeURIComponent(link)}`;\n    aspectRatio = {\n      w: 550,\n      h: 550\n    };\n    embeddedLinkCache.set(originalLink, {\n      link,\n      aspectRatio,\n      type,\n      sandbox: {\n        allowSameOrigin\n      }\n    });\n    return {\n      link,\n      aspectRatio,\n      type,\n      sandbox: {\n        allowSameOrigin\n      }\n    };\n  }\n\n  const valLink = link.match(RE_VALTOWN);\n\n  if (valLink) {\n    link = valLink[1] === "embed" ? valLink[0] : valLink[0].replace("/v", "/embed");\n    embeddedLinkCache.set(originalLink, {\n      link,\n      aspectRatio,\n      type,\n      sandbox: {\n        allowSameOrigin\n      }\n    });\n    return {\n      link,\n      aspectRatio,\n      type,\n      sandbox: {\n        allowSameOrigin\n      }\n    };\n  }\n\n  if (RE_TWITTER.test(link)) {\n    const postId = link.match(RE_TWITTER)[1]; // the embed srcdoc still supports twitter.com domain only.\n    // Note that we don\'t attempt to parse the username as it can consist of\n    // non-latin1 characters, and the username in the url can be set to anything\n    // without affecting the embed.\n\n    const safeURL = (0,_data_url__WEBPACK_IMPORTED_MODULE_8__.sanitizeHTMLAttribute)(`https://twitter.com/x/status/${postId}`);\n    const ret = {\n      type: "document",\n      srcdoc: theme => createSrcDoc(`<blockquote class="twitter-tweet" data-dnt="true" data-theme="${theme}"><a href="${safeURL}"></a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"><\/script>`),\n      aspectRatio: {\n        w: 480,\n        h: 480\n      },\n      sandbox: {\n        allowSameOrigin\n      }\n    };\n    embeddedLinkCache.set(originalLink, ret);\n    return ret;\n  }\n\n  if (RE_GH_GIST.test(link)) {\n    const [, user, gistId] = link.match(RE_GH_GIST);\n    const safeURL = (0,_data_url__WEBPACK_IMPORTED_MODULE_8__.sanitizeHTMLAttribute)(`https://gist.github.com/${user}/${gistId}`);\n    const ret = {\n      type: "document",\n      srcdoc: () => createSrcDoc(`\n          <script src="${safeURL}.js"><\/script>\n          <style type="text/css">\n            * { margin: 0px; }\n            table, .gist { height: 100%; }\n            .gist .gist-file { height: calc(100vh - 2px); padding: 0px; display: grid; grid-template-rows: 1fr auto; }\n          </style>\n        `),\n      aspectRatio: {\n        w: 550,\n        h: 720\n      },\n      sandbox: {\n        allowSameOrigin\n      }\n    };\n    embeddedLinkCache.set(link, ret);\n    return ret;\n  }\n\n  embeddedLinkCache.set(link, {\n    link,\n    aspectRatio,\n    type,\n    sandbox: {\n      allowSameOrigin\n    }\n  });\n  return {\n    link,\n    aspectRatio,\n    type,\n    sandbox: {\n      allowSameOrigin\n    }\n  };\n};\nconst isEmbeddableOrLabel = element => {\n  if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_7__.isEmbeddableElement)(element)) {\n    return true;\n  }\n\n  if (element.type === "text") {\n    const container = (0,_textElement__WEBPACK_IMPORTED_MODULE_6__.getContainerElement)(element);\n\n    if (container && (0,_typeChecks__WEBPACK_IMPORTED_MODULE_7__.isEmbeddableElement)(container)) {\n      return true;\n    }\n  }\n\n  return false;\n};\nconst createPlaceholderEmbeddableLabel = element => {\n  var _a;\n\n  const text = !element.link || (element === null || element === void 0 ? void 0 : element.link) === "" ? "Empty Web-Embed" : element.link;\n  const fontSize = Math.max(Math.min(element.width / 2, element.width / text.length), element.width / 30);\n  const fontFamily = _constants__WEBPACK_IMPORTED_MODULE_1__.FONT_FAMILY.Helvetica;\n  const fontString = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.getFontString)({\n    fontSize,\n    fontFamily\n  });\n  return (0,_newElement__WEBPACK_IMPORTED_MODULE_5__.newTextElement)({\n    x: element.x + element.width / 2,\n    y: element.y + element.height / 2,\n    strokeColor: element.strokeColor !== "transparent" ? element.strokeColor : "black",\n    backgroundColor: "transparent",\n    fontFamily,\n    fontSize,\n    text: (0,_textElement__WEBPACK_IMPORTED_MODULE_6__.wrapText)(text, fontString, element.width - 20),\n    textAlign: "center",\n    verticalAlign: _constants__WEBPACK_IMPORTED_MODULE_1__.VERTICAL_ALIGN.MIDDLE,\n    angle: (_a = element.angle) !== null && _a !== void 0 ? _a : 0\n  });\n};\nconst actionSetEmbeddableAsActiveTool = (0,_actions_register__WEBPACK_IMPORTED_MODULE_0__.register)({\n  name: "setEmbeddableAsActiveTool",\n  trackEvent: {\n    category: "toolbar"\n  },\n  perform: (elements, appState, _, app) => {\n    const nextActiveTool = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.updateActiveTool)(appState, {\n      type: "embeddable"\n    });\n    (0,_cursor__WEBPACK_IMPORTED_MODULE_4__.setCursorForShape)(app.canvas, Object.assign(Object.assign({}, appState), {\n      activeTool: nextActiveTool\n    }));\n    return {\n      elements,\n      appState: Object.assign(Object.assign({}, appState), {\n        activeTool: (0,_utils__WEBPACK_IMPORTED_MODULE_3__.updateActiveTool)(appState, {\n          type: "embeddable"\n        })\n      }),\n      commitToHistory: false\n    };\n  }\n});\n\nconst matchHostname = (url,\n/** using a Set assumes it already contains normalized bare domains */\nallowedHostnames) => {\n  try {\n    const {\n      hostname\n    } = new URL(url);\n    const bareDomain = hostname.replace(/^www\\./, "");\n\n    if (allowedHostnames instanceof Set) {\n      if (ALLOWED_DOMAINS.has(bareDomain)) {\n        return bareDomain;\n      }\n\n      const bareDomainWithFirstSubdomainWildcarded = bareDomain.replace(/^([^.]+)/, "*");\n\n      if (ALLOWED_DOMAINS.has(bareDomainWithFirstSubdomainWildcarded)) {\n        return bareDomainWithFirstSubdomainWildcarded;\n      }\n\n      return null;\n    }\n\n    const bareAllowedHostname = allowedHostnames.replace(/^www\\./, "");\n\n    if (bareDomain === bareAllowedHostname) {\n      return bareAllowedHostname;\n    }\n  } catch (error) {// ignore\n  }\n\n  return null;\n};\n\nconst extractSrc = htmlString => {\n  const twitterMatch = htmlString.match(RE_TWITTER_EMBED);\n\n  if (twitterMatch && twitterMatch.length === 2) {\n    return twitterMatch[1];\n  }\n\n  const gistMatch = htmlString.match(RE_GH_GIST_EMBED);\n\n  if (gistMatch && gistMatch.length === 2) {\n    return gistMatch[1];\n  }\n\n  if (RE_GIPHY.test(htmlString)) {\n    return `https://giphy.com/embed/${RE_GIPHY.exec(htmlString)[1]}`;\n  }\n\n  const match = htmlString.match(RE_GENERIC_EMBED);\n\n  if (match && match.length === 2) {\n    return match[1];\n  }\n\n  return htmlString;\n};\nconst embeddableURLValidator = (url, validateEmbeddable) => {\n  if (!url) {\n    return false;\n  }\n\n  if (validateEmbeddable != null) {\n    if (typeof validateEmbeddable === "function") {\n      const ret = validateEmbeddable(url); // if return value is undefined, leave validation to default\n\n      if (typeof ret === "boolean") {\n        return ret;\n      }\n    } else if (typeof validateEmbeddable === "boolean") {\n      return validateEmbeddable;\n    } else if (validateEmbeddable instanceof RegExp) {\n      return validateEmbeddable.test(url);\n    } else if (Array.isArray(validateEmbeddable)) {\n      for (const domain of validateEmbeddable) {\n        if (domain instanceof RegExp) {\n          if (url.match(domain)) {\n            return true;\n          }\n        } else if (matchHostname(url, domain)) {\n          return true;\n        }\n      }\n\n      return false;\n    }\n  }\n\n  return !!matchHostname(url, ALLOWED_DOMAINS);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 19328 characters]\n//# sourceURL=webpack-internal:///../../element/embeddable.ts\n');
              }
            ),
            /***/
            "../../element/image.ts": (
              /*!******************************!*\
                !*** ../../element/image.ts ***!
                \******************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "getInitializedImageElements": () => (/* binding */ getInitializedImageElements),
/* harmony export */   "isHTMLSVGElement": () => (/* binding */ isHTMLSVGElement),
/* harmony export */   "loadHTMLImageElement": () => (/* binding */ loadHTMLImageElement),
/* harmony export */   "normalizeSVG": () => (/* binding */ normalizeSVG),
/* harmony export */   "updateImageCache": () => (/* binding */ updateImageCache)
/* harmony export */ });
/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../constants */ "../../constants.ts");
/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");
/* harmony import */ var _typeChecks__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./typeChecks */ "../../element/typeChecks.ts");
// -----------------------------------------------------------------------------
// ExcalidrawImageElement & related helpers
// -----------------------------------------------------------------------------
var __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {
  function adopt(value) {
    return value instanceof P ? value : new P(function (resolve) {
      resolve(value);
    });
  }

  return new (P || (P = Promise))(function (resolve, reject) {
    function fulfilled(value) {
      try {
        step(generator.next(value));
      } catch (e) {
        reject(e);
      }
    }

    function rejected(value) {
      try {
        step(generator["throw"](value));
      } catch (e) {
        reject(e);
      }
    }

    function step(result) {
      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
    }

    step((generator = generator.apply(thisArg, _arguments || [])).next());
  });
};




const loadHTMLImageElement = dataURL => {
  return new Promise((resolve, reject) => {
    const image = new Image();

    image.onload = () => {
      resolve(image);
    };

    image.onerror = error => {
      reject(error);
    };

    image.src = dataURL;
  });
};
/** NOTE: updates cache even if already populated with given image. Thus,
 * you should filter out the images upstream if you want to optimize this. */

const updateImageCache = ({
  fileIds,
  files,
  imageCache
}) => __awaiter(void 0, void 0, void 0, function* () {
  const updatedFiles = new Map();
  const erroredFiles = new Map();
  yield Promise.all(fileIds.reduce((promises, fileId) => {
    const fileData = files[fileId];

    if (fileData && !updatedFiles.has(fileId)) {
      updatedFiles.set(fileId, true);
      return promises.concat((() => __awaiter(void 0, void 0, void 0, function* () {
        try {
          if (fileData.mimeType === _constants__WEBPACK_IMPORTED_MODULE_0__.MIME_TYPES.binary) {
            throw new Error("Only images can be added to ImageCache");
          }

          const imagePromise = loadHTMLImageElement(fileData.dataURL);
          const data = {
            image: imagePromise,
            mimeType: fileData.mimeType
          }; // store the promise immediately to indicate there's an in-progress
          // initialization

          imageCache.set(fileId, data);
          const image = yield imagePromise;
          imageCache.set(fileId, Object.assign(Object.assign({}, data), {
            image
          }));
        } catch (error) {
          erroredFiles.set(fileId, true);
        }
      }))());
    }

    return promises;
  }, []));
  return {
    imageCache,

    /** includes errored files because they cache was updated nonetheless */
    updatedFiles,

    /** files that failed when creating HTMLImageElement */
    erroredFiles
  };
});
const getInitializedImageElements = elements => elements.filter(element => (0,_typeChecks__WEBPACK_IMPORTED_MODULE_2__.isInitializedImageElement)(element));
const isHTMLSVGElement = node => {
  // lower-casing due to XML/HTML convention differences
  // https://johnresig.com/blog/nodename-case-sensitivity
  return (node === null || node === void 0 ? void 0 : node.nodeName.toLowerCase()) === "svg";
};
const normalizeSVG = SVGString => __awaiter(void 0, void 0, void 0, function* () {
  const doc = new DOMParser().parseFromString(SVGString, _constants__WEBPACK_IMPORTED_MODULE_0__.MIME_TYPES.svg);
  const svg = doc.querySelector("svg");
  const errorNode = doc.querySelector("parsererror");

  if (errorNode || !isHTMLSVGElement(svg)) {
    throw new Error((0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)("errors.invalidSVGString"));
  } else {
    if (!svg.hasAttribute("xmlns")) {
      svg.setAttribute("xmlns", _constants__WEBPACK_IMPORTED_MODULE_0__.SVG_NS);
    }

    if (!svg.hasAttribute("width") || !svg.hasAttribute("height")) {
      const viewBox = svg.getAttribute("viewBox");
      let width = svg.getAttribute("width") || "50";
      let height = svg.getAttribute("height") || "50";

      if (viewBox) {
        const match = viewBox.match(/\\d+ +\\d+ +(\\d+) +(\\d+)/);

        if (match) {
          [, width, height] = match;
        }
      }

      svg.setAttribute("width", width);
      svg.setAttribute("height", height);
    }

    return svg.outerHTML;
  }
});//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 7284 characters]
//# sourceURL=webpack-internal:///../../element/image.ts
`);
              }
            ),
            /***/
            "../../element/index.ts": (
              /*!******************************!*\
                !*** ../../element/index.ts ***!
                \******************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "OMIT_SIDES_FOR_MULTIPLE_ELEMENTS": () => (/* reexport safe */ _transformHandles__WEBPACK_IMPORTED_MODULE_4__.OMIT_SIDES_FOR_MULTIPLE_ELEMENTS),\n/* harmony export */   "clearElementsForDatabase": () => (/* binding */ clearElementsForDatabase),\n/* harmony export */   "clearElementsForExport": () => (/* binding */ clearElementsForExport),\n/* harmony export */   "clearElementsForLocalStorage": () => (/* binding */ clearElementsForLocalStorage),\n/* harmony export */   "dragNewElement": () => (/* reexport safe */ _dragElements__WEBPACK_IMPORTED_MODULE_8__.dragNewElement),\n/* harmony export */   "dragSelectedElements": () => (/* reexport safe */ _dragElements__WEBPACK_IMPORTED_MODULE_8__.dragSelectedElements),\n/* harmony export */   "duplicateElement": () => (/* reexport safe */ _newElement__WEBPACK_IMPORTED_MODULE_2__.duplicateElement),\n/* harmony export */   "getArrowheadPoints": () => (/* reexport safe */ _bounds__WEBPACK_IMPORTED_MODULE_3__.getArrowheadPoints),\n/* harmony export */   "getClosestElementBounds": () => (/* reexport safe */ _bounds__WEBPACK_IMPORTED_MODULE_3__.getClosestElementBounds),\n/* harmony export */   "getCommonBounds": () => (/* reexport safe */ _bounds__WEBPACK_IMPORTED_MODULE_3__.getCommonBounds),\n/* harmony export */   "getCursorForResizingElement": () => (/* reexport safe */ _resizeTest__WEBPACK_IMPORTED_MODULE_6__.getCursorForResizingElement),\n/* harmony export */   "getDiamondPoints": () => (/* reexport safe */ _bounds__WEBPACK_IMPORTED_MODULE_3__.getDiamondPoints),\n/* harmony export */   "getDragOffsetXY": () => (/* reexport safe */ _dragElements__WEBPACK_IMPORTED_MODULE_8__.getDragOffsetXY),\n/* harmony export */   "getElementAbsoluteCoords": () => (/* reexport safe */ _bounds__WEBPACK_IMPORTED_MODULE_3__.getElementAbsoluteCoords),\n/* harmony export */   "getElementBounds": () => (/* reexport safe */ _bounds__WEBPACK_IMPORTED_MODULE_3__.getElementBounds),\n/* harmony export */   "getElementWithTransformHandleType": () => (/* reexport safe */ _resizeTest__WEBPACK_IMPORTED_MODULE_6__.getElementWithTransformHandleType),\n/* harmony export */   "getLockedLinearCursorAlignSize": () => (/* reexport safe */ _sizeHelpers__WEBPACK_IMPORTED_MODULE_0__.getLockedLinearCursorAlignSize),\n/* harmony export */   "getNonDeletedElements": () => (/* binding */ getNonDeletedElements),\n/* harmony export */   "getNonDeletedFrames": () => (/* binding */ getNonDeletedFrames),\n/* harmony export */   "getNormalizedDimensions": () => (/* reexport safe */ _sizeHelpers__WEBPACK_IMPORTED_MODULE_0__.getNormalizedDimensions),\n/* harmony export */   "getPerfectElementSize": () => (/* reexport safe */ _sizeHelpers__WEBPACK_IMPORTED_MODULE_0__.getPerfectElementSize),\n/* harmony export */   "getResizeArrowDirection": () => (/* reexport safe */ _resizeElements__WEBPACK_IMPORTED_MODULE_7__.getResizeArrowDirection),\n/* harmony export */   "getResizeOffsetXY": () => (/* reexport safe */ _resizeElements__WEBPACK_IMPORTED_MODULE_7__.getResizeOffsetXY),\n/* harmony export */   "getSceneVersion": () => (/* binding */ getSceneVersion),\n/* harmony export */   "getTransformHandleTypeFromCoords": () => (/* reexport safe */ _resizeTest__WEBPACK_IMPORTED_MODULE_6__.getTransformHandleTypeFromCoords),\n/* harmony export */   "getTransformHandles": () => (/* reexport safe */ _transformHandles__WEBPACK_IMPORTED_MODULE_4__.getTransformHandles),\n/* harmony export */   "getTransformHandlesFromCoords": () => (/* reexport safe */ _transformHandles__WEBPACK_IMPORTED_MODULE_4__.getTransformHandlesFromCoords),\n/* harmony export */   "getVisibleElements": () => (/* binding */ getVisibleElements),\n/* harmony export */   "hitTest": () => (/* reexport safe */ _collision__WEBPACK_IMPORTED_MODULE_5__.hitTest),\n/* harmony export */   "isExcalidrawElement": () => (/* reexport safe */ _typeChecks__WEBPACK_IMPORTED_MODULE_1__.isExcalidrawElement),\n/* harmony export */   "isFrameElement": () => (/* reexport safe */ _typeChecks__WEBPACK_IMPORTED_MODULE_1__.isFrameElement),\n/* harmony export */   "isHittingElementBoundingBoxWithoutHittingElement": () => (/* reexport safe */ _collision__WEBPACK_IMPORTED_MODULE_5__.isHittingElementBoundingBoxWithoutHittingElement),\n/* harmony export */   "isInvisiblySmallElement": () => (/* reexport safe */ _sizeHelpers__WEBPACK_IMPORTED_MODULE_0__.isInvisiblySmallElement),\n/* harmony export */   "isNonDeletedElement": () => (/* binding */ isNonDeletedElement),\n/* harmony export */   "isTextElement": () => (/* reexport safe */ _typeChecks__WEBPACK_IMPORTED_MODULE_1__.isTextElement),\n/* harmony export */   "newElement": () => (/* reexport safe */ _newElement__WEBPACK_IMPORTED_MODULE_2__.newElement),\n/* harmony export */   "newImageElement": () => (/* reexport safe */ _newElement__WEBPACK_IMPORTED_MODULE_2__.newImageElement),\n/* harmony export */   "newLinearElement": () => (/* reexport safe */ _newElement__WEBPACK_IMPORTED_MODULE_2__.newLinearElement),\n/* harmony export */   "newTextElement": () => (/* reexport safe */ _newElement__WEBPACK_IMPORTED_MODULE_2__.newTextElement),\n/* harmony export */   "redrawTextBoundingBox": () => (/* reexport safe */ _textElement__WEBPACK_IMPORTED_MODULE_10__.redrawTextBoundingBox),\n/* harmony export */   "refreshTextDimensions": () => (/* reexport safe */ _newElement__WEBPACK_IMPORTED_MODULE_2__.refreshTextDimensions),\n/* harmony export */   "resizePerfectLineForNWHandler": () => (/* reexport safe */ _sizeHelpers__WEBPACK_IMPORTED_MODULE_0__.resizePerfectLineForNWHandler),\n/* harmony export */   "resizeTest": () => (/* reexport safe */ _resizeTest__WEBPACK_IMPORTED_MODULE_6__.resizeTest),\n/* harmony export */   "showSelectedShapeActions": () => (/* reexport safe */ _showSelectedShapeActions__WEBPACK_IMPORTED_MODULE_11__.showSelectedShapeActions),\n/* harmony export */   "textWysiwyg": () => (/* reexport safe */ _textWysiwyg__WEBPACK_IMPORTED_MODULE_9__.textWysiwyg),\n/* harmony export */   "transformElements": () => (/* reexport safe */ _resizeElements__WEBPACK_IMPORTED_MODULE_7__.transformElements),\n/* harmony export */   "updateTextElement": () => (/* reexport safe */ _newElement__WEBPACK_IMPORTED_MODULE_2__.updateTextElement)\n/* harmony export */ });\n/* harmony import */ var _sizeHelpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./sizeHelpers */ "../../element/sizeHelpers.ts");\n/* harmony import */ var _typeChecks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var _newElement__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./newElement */ "../../element/newElement.ts");\n/* harmony import */ var _bounds__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./bounds */ "../../element/bounds.ts");\n/* harmony import */ var _transformHandles__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./transformHandles */ "../../element/transformHandles.ts");\n/* harmony import */ var _collision__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./collision */ "../../element/collision.ts");\n/* harmony import */ var _resizeTest__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./resizeTest */ "../../element/resizeTest.ts");\n/* harmony import */ var _resizeElements__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./resizeElements */ "../../element/resizeElements.ts");\n/* harmony import */ var _dragElements__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./dragElements */ "../../element/dragElements.ts");\n/* harmony import */ var _textWysiwyg__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./textWysiwyg */ "../../element/textWysiwyg.tsx");\n/* harmony import */ var _textElement__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./textElement */ "../../element/textElement.ts");\n/* harmony import */ var _showSelectedShapeActions__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./showSelectedShapeActions */ "../../element/showSelectedShapeActions.ts");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst getSceneVersion = elements => elements.reduce((acc, el) => acc + el.version, 0);\nconst getVisibleElements = elements => elements.filter(el => !el.isDeleted && !(0,_sizeHelpers__WEBPACK_IMPORTED_MODULE_0__.isInvisiblySmallElement)(el));\nconst getNonDeletedElements = elements => elements.filter(element => !element.isDeleted);\nconst getNonDeletedFrames = frames => frames.filter(frame => !frame.isDeleted);\nconst isNonDeletedElement = element => !element.isDeleted;\n\nconst _clearElements = elements => getNonDeletedElements(elements).map(element => (0,_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isLinearElementType)(element.type) ? Object.assign(Object.assign({}, element), {\n  lastCommittedPoint: null\n}) : element);\n\nconst clearElementsForDatabase = elements => _clearElements(elements);\nconst clearElementsForExport = elements => _clearElements(elements);\nconst clearElementsForLocalStorage = elements => _clearElements(elements);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZWxlbWVudC9pbmRleC50cy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUF3RDtBQUNMO0FBQ3NHO0FBQ0g7QUFDNUI7QUFDbEM7QUFDb0Q7QUFDM0M7QUFDVjtBQUNMO0FBQ3RDO0FBQ1U7QUFDaUg7QUFDakc7QUFDL0Q7QUFDQSwrRUFBK0UscUVBQXVCO0FBQ3RHO0FBQ0E7QUFDQTs7QUFFUCxrRkFBa0YsZ0VBQW1CLCtDQUErQztBQUNwSjtBQUNBLENBQUM7O0FBRU07QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2VsZW1lbnQvaW5kZXgudHM/MmQyNCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0ludmlzaWJseVNtYWxsRWxlbWVudCB9IGZyb20gXCIuL3NpemVIZWxwZXJzXCI7XG5pbXBvcnQgeyBpc0xpbmVhckVsZW1lbnRUeXBlIH0gZnJvbSBcIi4vdHlwZUNoZWNrc1wiO1xuZXhwb3J0IHsgbmV3RWxlbWVudCwgbmV3VGV4dEVsZW1lbnQsIHVwZGF0ZVRleHRFbGVtZW50LCByZWZyZXNoVGV4dERpbWVuc2lvbnMsIG5ld0xpbmVhckVsZW1lbnQsIG5ld0ltYWdlRWxlbWVudCwgZHVwbGljYXRlRWxlbWVudCB9IGZyb20gXCIuL25ld0VsZW1lbnRcIjtcbmV4cG9ydCB7IGdldEVsZW1lbnRBYnNvbHV0ZUNvb3JkcywgZ2V0RWxlbWVudEJvdW5kcywgZ2V0Q29tbW9uQm91bmRzLCBnZXREaWFtb25kUG9pbnRzLCBnZXRBcnJvd2hlYWRQb2ludHMsIGdldENsb3Nlc3RFbGVtZW50Qm91bmRzIH0gZnJvbSBcIi4vYm91bmRzXCI7XG5leHBvcnQgeyBPTUlUX1NJREVTX0ZPUl9NVUxUSVBMRV9FTEVNRU5UUywgZ2V0VHJhbnNmb3JtSGFuZGxlc0Zyb21Db29yZHMsIGdldFRyYW5zZm9ybUhhbmRsZXMgfSBmcm9tIFwiLi90cmFuc2Zvcm1IYW5kbGVzXCI7XG5leHBvcnQgeyBoaXRUZXN0LCBpc0hpdHRpbmdFbGVtZW50Qm91bmRpbmdCb3hXaXRob3V0SGl0dGluZ0VsZW1lbnQgfSBmcm9tIFwiLi9jb2xsaXNpb25cIjtcbmV4cG9ydCB7IHJlc2l6ZVRlc3QsIGdldEN1cnNvckZvclJlc2l6aW5nRWxlbWVudCwgZ2V0RWxlbWVudFdpdGhUcmFuc2Zvcm1IYW5kbGVUeXBlLCBnZXRUcmFuc2Zvcm1IYW5kbGVUeXBlRnJvbUNvb3JkcyB9IGZyb20gXCIuL3Jlc2l6ZVRlc3RcIjtcbmV4cG9ydCB7IHRyYW5zZm9ybUVsZW1lbnRzLCBnZXRSZXNpemVPZmZzZXRYWSwgZ2V0UmVzaXplQXJyb3dEaXJlY3Rpb24gfSBmcm9tIFwiLi9yZXNpemVFbGVtZW50c1wiO1xuZXhwb3J0IHsgZHJhZ1NlbGVjdGVkRWxlbWVudHMsIGdldERyYWdPZmZzZXRYWSwgZHJhZ05ld0VsZW1lbnQgfSBmcm9tIFwiLi9kcmFnRWxlbWVudHNcIjtcbmV4cG9ydCB7IGlzVGV4dEVsZW1lbnQsIGlzRXhjYWxpZHJhd0VsZW1lbnQsIGlzRnJhbWVFbGVtZW50IH0gZnJvbSBcIi4vdHlwZUNoZWNrc1wiO1xuZXhwb3J0IHsgdGV4dFd5c2l3eWcgfSBmcm9tIFwiLi90ZXh0V3lzaXd5Z1wiO1xuZXhwb3J0IHsgcmVkcmF3VGV4dEJvdW5kaW5nQm94IH0gZnJvbSBcIi4vdGV4dEVsZW1lbnRcIjtcbmV4cG9ydCB7IGdldFBlcmZlY3RFbGVtZW50U2l6ZSwgZ2V0TG9ja2VkTGluZWFyQ3Vyc29yQWxpZ25TaXplLCBpc0ludmlzaWJseVNtYWxsRWxlbWVudCwgcmVzaXplUGVyZmVjdExpbmVGb3JOV0hhbmRsZXIsIGdldE5vcm1hbGl6ZWREaW1lbnNpb25zIH0gZnJvbSBcIi4vc2l6ZUhlbHBlcnNcIjtcbmV4cG9ydCB7IHNob3dTZWxlY3RlZFNoYXBlQWN0aW9ucyB9IGZyb20gXCIuL3Nob3dTZWxlY3RlZFNoYXBlQWN0aW9uc1wiO1xuZXhwb3J0IGNvbnN0IGdldFNjZW5lVmVyc2lvbiA9IGVsZW1lbnRzID0+IGVsZW1lbnRzLnJlZHVjZSgoYWNjLCBlbCkgPT4gYWNjICsgZWwudmVyc2lvbiwgMCk7XG5leHBvcnQgY29uc3QgZ2V0VmlzaWJsZUVsZW1lbnRzID0gZWxlbWVudHMgPT4gZWxlbWVudHMuZmlsdGVyKGVsID0+ICFlbC5pc0RlbGV0ZWQgJiYgIWlzSW52aXNpYmx5U21hbGxFbGVtZW50KGVsKSk7XG5leHBvcnQgY29uc3QgZ2V0Tm9uRGVsZXRlZEVsZW1lbnRzID0gZWxlbWVudHMgPT4gZWxlbWVudHMuZmlsdGVyKGVsZW1lbnQgPT4gIWVsZW1lbnQuaXNEZWxldGVkKTtcbmV4cG9ydCBjb25zdCBnZXROb25EZWxldGVkRnJhbWVzID0gZnJhbWVzID0+IGZyYW1lcy5maWx0ZXIoZnJhbWUgPT4gIWZyYW1lLmlzRGVsZXRlZCk7XG5leHBvcnQgY29uc3QgaXNOb25EZWxldGVkRWxlbWVudCA9IGVsZW1lbnQgPT4gIWVsZW1lbnQuaXNEZWxldGVkO1xuXG5jb25zdCBfY2xlYXJFbGVtZW50cyA9IGVsZW1lbnRzID0+IGdldE5vbkRlbGV0ZWRFbGVtZW50cyhlbGVtZW50cykubWFwKGVsZW1lbnQgPT4gaXNMaW5lYXJFbGVtZW50VHlwZShlbGVtZW50LnR5cGUpID8gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBlbGVtZW50KSwge1xuICBsYXN0Q29tbWl0dGVkUG9pbnQ6IG51bGxcbn0pIDogZWxlbWVudCk7XG5cbmV4cG9ydCBjb25zdCBjbGVhckVsZW1lbnRzRm9yRGF0YWJhc2UgPSBlbGVtZW50cyA9PiBfY2xlYXJFbGVtZW50cyhlbGVtZW50cyk7XG5leHBvcnQgY29uc3QgY2xlYXJFbGVtZW50c0ZvckV4cG9ydCA9IGVsZW1lbnRzID0+IF9jbGVhckVsZW1lbnRzKGVsZW1lbnRzKTtcbmV4cG9ydCBjb25zdCBjbGVhckVsZW1lbnRzRm9yTG9jYWxTdG9yYWdlID0gZWxlbWVudHMgPT4gX2NsZWFyRWxlbWVudHMoZWxlbWVudHMpOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../element/index.ts\n');
              }
            ),
            /***/
            "../../element/linearElementEditor.ts": (
              /*!********************************************!*\
                !*** ../../element/linearElementEditor.ts ***!
                \********************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "LinearElementEditor": () => (/* binding */ LinearElementEditor)\n/* harmony export */ });\n/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../math */ "../../math.ts");\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! . */ "../../element/index.ts");\n/* harmony import */ var _bounds__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./bounds */ "../../element/bounds.ts");\n/* harmony import */ var _mutateElement__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./mutateElement */ "../../element/mutateElement.ts");\n/* harmony import */ var _scene_Scene__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../scene/Scene */ "../../scene/Scene.ts");\n/* harmony import */ var _binding__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./binding */ "../../element/binding.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _typeChecks__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _textElement__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./textElement */ "../../element/textElement.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../scene/ShapeCache */ "../../scene/ShapeCache.ts");\n\n\n\n\n\n\n\n\n\n\n\n\nconst editorMidPointsCache = {\n  version: null,\n  points: [],\n  zoom: null\n};\nclass LinearElementEditor {\n  constructor(element, scene) {\n    this.elementId = element.id;\n    _scene_Scene__WEBPACK_IMPORTED_MODULE_4__["default"].mapElementToScene(this.elementId, scene);\n    LinearElementEditor.normalizePoints(element);\n    this.selectedPointsIndices = null;\n    this.lastUncommittedPoint = null;\n    this.isDragging = false;\n    this.pointerOffset = {\n      x: 0,\n      y: 0\n    };\n    this.startBindingElement = "keep";\n    this.endBindingElement = "keep";\n    this.pointerDownState = {\n      prevSelectedPointsIndices: null,\n      lastClickedPoint: -1,\n      origin: null,\n      segmentMidpoint: {\n        value: null,\n        index: null,\n        added: false\n      }\n    };\n    this.hoverPointIndex = -1;\n    this.segmentMidPointHoveredCoords = null;\n  }\n  /**\n   * @param id the `elementId` from the instance of this class (so that we can\n   *  statically guarantee this method returns an ExcalidrawLinearElement)\n   */\n\n\n  static getElement(id) {\n    var _a;\n\n    const element = (_a = _scene_Scene__WEBPACK_IMPORTED_MODULE_4__["default"].getScene(id)) === null || _a === void 0 ? void 0 : _a.getNonDeletedElement(id);\n\n    if (element) {\n      return element;\n    }\n\n    return null;\n  }\n\n  static handleBoxSelection(event, appState, setState) {\n    var _a;\n\n    if (!appState.editingLinearElement || ((_a = appState.draggingElement) === null || _a === void 0 ? void 0 : _a.type) !== "selection") {\n      return false;\n    }\n\n    const {\n      editingLinearElement\n    } = appState;\n    const {\n      selectedPointsIndices,\n      elementId\n    } = editingLinearElement;\n    const element = LinearElementEditor.getElement(elementId);\n\n    if (!element) {\n      return false;\n    }\n\n    const [selectionX1, selectionY1, selectionX2, selectionY2] = (0,___WEBPACK_IMPORTED_MODULE_1__.getElementAbsoluteCoords)(appState.draggingElement);\n    const pointsSceneCoords = LinearElementEditor.getPointsGlobalCoordinates(element);\n    const nextSelectedPoints = pointsSceneCoords.reduce((acc, point, index) => {\n      if (point[0] >= selectionX1 && point[0] <= selectionX2 && point[1] >= selectionY1 && point[1] <= selectionY2 || event.shiftKey && (selectedPointsIndices === null || selectedPointsIndices === void 0 ? void 0 : selectedPointsIndices.includes(index))) {\n        acc.push(index);\n      }\n\n      return acc;\n    }, []);\n    setState({\n      editingLinearElement: Object.assign(Object.assign({}, editingLinearElement), {\n        selectedPointsIndices: nextSelectedPoints.length ? nextSelectedPoints : null\n      })\n    });\n  }\n  /** @returns whether point was dragged */\n\n\n  static handlePointDragging(event, appState, scenePointerX, scenePointerY, maybeSuggestBinding, linearElementEditor) {\n    if (!linearElementEditor) {\n      return false;\n    }\n\n    const {\n      selectedPointsIndices,\n      elementId\n    } = linearElementEditor;\n    const element = LinearElementEditor.getElement(elementId);\n\n    if (!element) {\n      return false;\n    } // point that\'s being dragged (out of all selected points)\n\n\n    const draggingPoint = element.points[linearElementEditor.pointerDownState.lastClickedPoint];\n\n    if (selectedPointsIndices && draggingPoint) {\n      if ((0,_keys__WEBPACK_IMPORTED_MODULE_8__.shouldRotateWithDiscreteAngle)(event) && selectedPointsIndices.length === 1 && element.points.length > 1) {\n        const selectedIndex = selectedPointsIndices[0];\n        const referencePoint = element.points[selectedIndex === 0 ? 1 : selectedIndex - 1];\n\n        const [width, height] = LinearElementEditor._getShiftLockedDelta(element, referencePoint, [scenePointerX, scenePointerY], event[_keys__WEBPACK_IMPORTED_MODULE_8__.KEYS.CTRL_OR_CMD] ? null : appState.gridSize);\n\n        LinearElementEditor.movePoints(element, [{\n          index: selectedIndex,\n          point: [width + referencePoint[0], height + referencePoint[1]],\n          isDragging: selectedIndex === linearElementEditor.pointerDownState.lastClickedPoint\n        }]);\n      } else {\n        const newDraggingPointPosition = LinearElementEditor.createPointAt(element, scenePointerX - linearElementEditor.pointerOffset.x, scenePointerY - linearElementEditor.pointerOffset.y, event[_keys__WEBPACK_IMPORTED_MODULE_8__.KEYS.CTRL_OR_CMD] ? null : appState.gridSize);\n        const deltaX = newDraggingPointPosition[0] - draggingPoint[0];\n        const deltaY = newDraggingPointPosition[1] - draggingPoint[1];\n        LinearElementEditor.movePoints(element, selectedPointsIndices.map(pointIndex => {\n          const newPointPosition = pointIndex === linearElementEditor.pointerDownState.lastClickedPoint ? LinearElementEditor.createPointAt(element, scenePointerX - linearElementEditor.pointerOffset.x, scenePointerY - linearElementEditor.pointerOffset.y, event[_keys__WEBPACK_IMPORTED_MODULE_8__.KEYS.CTRL_OR_CMD] ? null : appState.gridSize) : [element.points[pointIndex][0] + deltaX, element.points[pointIndex][1] + deltaY];\n          return {\n            index: pointIndex,\n            point: newPointPosition,\n            isDragging: pointIndex === linearElementEditor.pointerDownState.lastClickedPoint\n          };\n        }));\n      }\n\n      const boundTextElement = (0,_textElement__WEBPACK_IMPORTED_MODULE_9__.getBoundTextElement)(element);\n\n      if (boundTextElement) {\n        (0,_textElement__WEBPACK_IMPORTED_MODULE_9__.handleBindTextResize)(element, false);\n      } // suggest bindings for first and last point if selected\n\n\n      if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_7__.isBindingElement)(element, false)) {\n        const coords = [];\n        const firstSelectedIndex = selectedPointsIndices[0];\n\n        if (firstSelectedIndex === 0) {\n          coords.push((0,_utils__WEBPACK_IMPORTED_MODULE_6__.tupleToCoors)(LinearElementEditor.getPointGlobalCoordinates(element, element.points[0])));\n        }\n\n        const lastSelectedIndex = selectedPointsIndices[selectedPointsIndices.length - 1];\n\n        if (lastSelectedIndex === element.points.length - 1) {\n          coords.push((0,_utils__WEBPACK_IMPORTED_MODULE_6__.tupleToCoors)(LinearElementEditor.getPointGlobalCoordinates(element, element.points[lastSelectedIndex])));\n        }\n\n        if (coords.length) {\n          maybeSuggestBinding(element, coords);\n        }\n      }\n\n      return true;\n    }\n\n    return false;\n  }\n\n  static handlePointerUp(event, editingLinearElement, appState) {\n    var _a;\n\n    const {\n      elementId,\n      selectedPointsIndices,\n      isDragging,\n      pointerDownState\n    } = editingLinearElement;\n    const element = LinearElementEditor.getElement(elementId);\n\n    if (!element) {\n      return editingLinearElement;\n    }\n\n    const bindings = {};\n\n    if (isDragging && selectedPointsIndices) {\n      for (const selectedPoint of selectedPointsIndices) {\n        if (selectedPoint === 0 || selectedPoint === element.points.length - 1) {\n          if ((0,_math__WEBPACK_IMPORTED_MODULE_0__.isPathALoop)(element.points, appState.zoom.value)) {\n            LinearElementEditor.movePoints(element, [{\n              index: selectedPoint,\n              point: selectedPoint === 0 ? element.points[element.points.length - 1] : element.points[0]\n            }]);\n          }\n\n          const bindingElement = (0,_binding__WEBPACK_IMPORTED_MODULE_5__.isBindingEnabled)(appState) ? (0,_binding__WEBPACK_IMPORTED_MODULE_5__.getHoveredElementForBinding)((0,_utils__WEBPACK_IMPORTED_MODULE_6__.tupleToCoors)(LinearElementEditor.getPointAtIndexGlobalCoordinates(element, selectedPoint)), _scene_Scene__WEBPACK_IMPORTED_MODULE_4__["default"].getScene(element)) : null;\n          bindings[selectedPoint === 0 ? "startBindingElement" : "endBindingElement"] = bindingElement;\n        }\n      }\n    }\n\n    return Object.assign(Object.assign(Object.assign({}, editingLinearElement), bindings), {\n      // if clicking without previously dragging a point(s), and not holding\n      // shift, deselect all points except the one clicked. If holding shift,\n      // toggle the point.\n      selectedPointsIndices: isDragging || event.shiftKey ? !isDragging && event.shiftKey && ((_a = pointerDownState.prevSelectedPointsIndices) === null || _a === void 0 ? void 0 : _a.includes(pointerDownState.lastClickedPoint)) ? selectedPointsIndices && selectedPointsIndices.filter(pointIndex => pointIndex !== pointerDownState.lastClickedPoint) : selectedPointsIndices : (selectedPointsIndices === null || selectedPointsIndices === void 0 ? void 0 : selectedPointsIndices.includes(pointerDownState.lastClickedPoint)) ? [pointerDownState.lastClickedPoint] : selectedPointsIndices,\n      isDragging: false,\n      pointerOffset: {\n        x: 0,\n        y: 0\n      }\n    });\n  }\n\n  static isSegmentTooShort(element, startPoint, endPoint, zoom) {\n    let distance = (0,_math__WEBPACK_IMPORTED_MODULE_0__.distance2d)(startPoint[0], startPoint[1], endPoint[0], endPoint[1]);\n\n    if (element.points.length > 2 && element.roundness) {\n      distance = (0,_math__WEBPACK_IMPORTED_MODULE_0__.getBezierCurveLength)(element, endPoint);\n    }\n\n    return distance * zoom.value < LinearElementEditor.POINT_HANDLE_SIZE * 4;\n  }\n\n  static getSegmentMidPoint(element, startPoint, endPoint, endPointIndex) {\n    let segmentMidPoint = (0,_math__WEBPACK_IMPORTED_MODULE_0__.centerPoint)(startPoint, endPoint);\n\n    if (element.points.length > 2 && element.roundness) {\n      const controlPoints = (0,_math__WEBPACK_IMPORTED_MODULE_0__.getControlPointsForBezierCurve)(element, element.points[endPointIndex]);\n\n      if (controlPoints) {\n        const t = (0,_math__WEBPACK_IMPORTED_MODULE_0__.mapIntervalToBezierT)(element, element.points[endPointIndex], 0.5);\n        const [tx, ty] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.getBezierXY)(controlPoints[0], controlPoints[1], controlPoints[2], controlPoints[3], t);\n        segmentMidPoint = LinearElementEditor.getPointGlobalCoordinates(element, [tx, ty]);\n      }\n    }\n\n    return segmentMidPoint;\n  }\n\n  static getSegmentMidPointIndex(linearElementEditor, appState, midPoint) {\n    const element = LinearElementEditor.getElement(linearElementEditor.elementId);\n\n    if (!element) {\n      return -1;\n    }\n\n    const midPoints = LinearElementEditor.getEditorMidPoints(element, appState);\n    let index = 0;\n\n    while (index < midPoints.length) {\n      if (LinearElementEditor.arePointsEqual(midPoint, midPoints[index])) {\n        return index + 1;\n      }\n\n      index++;\n    }\n\n    return -1;\n  }\n\n  static handlePointerDown(event, appState, history, scenePointer, linearElementEditor) {\n    var _a;\n\n    const ret = {\n      didAddPoint: false,\n      hitElement: null,\n      linearElementEditor: null\n    };\n\n    if (!linearElementEditor) {\n      return ret;\n    }\n\n    const {\n      elementId\n    } = linearElementEditor;\n    const element = LinearElementEditor.getElement(elementId);\n\n    if (!element) {\n      return ret;\n    }\n\n    const segmentMidpoint = LinearElementEditor.getSegmentMidpointHitCoords(linearElementEditor, scenePointer, appState);\n    let segmentMidpointIndex = null;\n\n    if (segmentMidpoint) {\n      segmentMidpointIndex = LinearElementEditor.getSegmentMidPointIndex(linearElementEditor, appState, segmentMidpoint);\n    }\n\n    if (event.altKey && appState.editingLinearElement) {\n      if (linearElementEditor.lastUncommittedPoint == null) {\n        (0,_mutateElement__WEBPACK_IMPORTED_MODULE_3__.mutateElement)(element, {\n          points: [...element.points, LinearElementEditor.createPointAt(element, scenePointer.x, scenePointer.y, event[_keys__WEBPACK_IMPORTED_MODULE_8__.KEYS.CTRL_OR_CMD] ? null : appState.gridSize)]\n        });\n        ret.didAddPoint = true;\n      }\n\n      history.resumeRecording();\n      ret.linearElementEditor = Object.assign(Object.assign({}, linearElementEditor), {\n        pointerDownState: {\n          prevSelectedPointsIndices: linearElementEditor.selectedPointsIndices,\n          lastClickedPoint: -1,\n          origin: {\n            x: scenePointer.x,\n            y: scenePointer.y\n          },\n          segmentMidpoint: {\n            value: segmentMidpoint,\n            index: segmentMidpointIndex,\n            added: false\n          }\n        },\n        selectedPointsIndices: [element.points.length - 1],\n        lastUncommittedPoint: null,\n        endBindingElement: (0,_binding__WEBPACK_IMPORTED_MODULE_5__.getHoveredElementForBinding)(scenePointer, _scene_Scene__WEBPACK_IMPORTED_MODULE_4__["default"].getScene(element))\n      });\n      ret.didAddPoint = true;\n      return ret;\n    }\n\n    const clickedPointIndex = LinearElementEditor.getPointIndexUnderCursor(element, appState.zoom, scenePointer.x, scenePointer.y); // if we clicked on a point, set the element as hitElement otherwise\n    // it would get deselected if the point is outside the hitbox area\n\n    if (clickedPointIndex >= 0 || segmentMidpoint) {\n      ret.hitElement = element;\n    } else {\n      // You might be wandering why we are storing the binding elements on\n      // LinearElementEditor and passing them in, instead of calculating them\n      // from the end points of the `linearElement` - this is to allow disabling\n      // binding (which needs to happen at the point the user finishes moving\n      // the point).\n      const {\n        startBindingElement,\n        endBindingElement\n      } = linearElementEditor;\n\n      if ((0,_binding__WEBPACK_IMPORTED_MODULE_5__.isBindingEnabled)(appState) && (0,_typeChecks__WEBPACK_IMPORTED_MODULE_7__.isBindingElement)(element)) {\n        (0,_binding__WEBPACK_IMPORTED_MODULE_5__.bindOrUnbindLinearElement)(element, startBindingElement, endBindingElement);\n      }\n    }\n\n    const [x1, y1, x2, y2] = (0,___WEBPACK_IMPORTED_MODULE_1__.getElementAbsoluteCoords)(element);\n    const cx = (x1 + x2) / 2;\n    const cy = (y1 + y2) / 2;\n    const targetPoint = clickedPointIndex > -1 && (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(element.x + element.points[clickedPointIndex][0], element.y + element.points[clickedPointIndex][1], cx, cy, element.angle);\n    const nextSelectedPointsIndices = clickedPointIndex > -1 || event.shiftKey ? event.shiftKey || ((_a = linearElementEditor.selectedPointsIndices) === null || _a === void 0 ? void 0 : _a.includes(clickedPointIndex)) ? normalizeSelectedPoints([...(linearElementEditor.selectedPointsIndices || []), clickedPointIndex]) : [clickedPointIndex] : null;\n    ret.linearElementEditor = Object.assign(Object.assign({}, linearElementEditor), {\n      pointerDownState: {\n        prevSelectedPointsIndices: linearElementEditor.selectedPointsIndices,\n        lastClickedPoint: clickedPointIndex,\n        origin: {\n          x: scenePointer.x,\n          y: scenePointer.y\n        },\n        segmentMidpoint: {\n          value: segmentMidpoint,\n          index: segmentMidpointIndex,\n          added: false\n        }\n      },\n      selectedPointsIndices: nextSelectedPointsIndices,\n      pointerOffset: targetPoint ? {\n        x: scenePointer.x - targetPoint[0],\n        y: scenePointer.y - targetPoint[1]\n      } : {\n        x: 0,\n        y: 0\n      }\n    });\n    return ret;\n  }\n\n  static arePointsEqual(point1, point2) {\n    if (!point1 && !point2) {\n      return true;\n    }\n\n    if (!point1 || !point2) {\n      return false;\n    }\n\n    return (0,_math__WEBPACK_IMPORTED_MODULE_0__.arePointsEqual)(point1, point2);\n  }\n\n  static handlePointerMove(event, scenePointerX, scenePointerY, appState) {\n    if (!appState.editingLinearElement) {\n      return null;\n    }\n\n    const {\n      elementId,\n      lastUncommittedPoint\n    } = appState.editingLinearElement;\n    const element = LinearElementEditor.getElement(elementId);\n\n    if (!element) {\n      return appState.editingLinearElement;\n    }\n\n    const {\n      points\n    } = element;\n    const lastPoint = points[points.length - 1];\n\n    if (!event.altKey) {\n      if (lastPoint === lastUncommittedPoint) {\n        LinearElementEditor.deletePoints(element, [points.length - 1]);\n      }\n\n      return Object.assign(Object.assign({}, appState.editingLinearElement), {\n        lastUncommittedPoint: null\n      });\n    }\n\n    let newPoint;\n\n    if ((0,_keys__WEBPACK_IMPORTED_MODULE_8__.shouldRotateWithDiscreteAngle)(event) && points.length >= 2) {\n      const lastCommittedPoint = points[points.length - 2];\n\n      const [width, height] = LinearElementEditor._getShiftLockedDelta(element, lastCommittedPoint, [scenePointerX, scenePointerY], event[_keys__WEBPACK_IMPORTED_MODULE_8__.KEYS.CTRL_OR_CMD] ? null : appState.gridSize);\n\n      newPoint = [width + lastCommittedPoint[0], height + lastCommittedPoint[1]];\n    } else {\n      newPoint = LinearElementEditor.createPointAt(element, scenePointerX - appState.editingLinearElement.pointerOffset.x, scenePointerY - appState.editingLinearElement.pointerOffset.y, event[_keys__WEBPACK_IMPORTED_MODULE_8__.KEYS.CTRL_OR_CMD] ? null : appState.gridSize);\n    }\n\n    if (lastPoint === lastUncommittedPoint) {\n      LinearElementEditor.movePoints(element, [{\n        index: element.points.length - 1,\n        point: newPoint\n      }]);\n    } else {\n      LinearElementEditor.addPoints(element, appState, [{\n        point: newPoint\n      }]);\n    }\n\n    return Object.assign(Object.assign({}, appState.editingLinearElement), {\n      lastUncommittedPoint: element.points[element.points.length - 1]\n    });\n  }\n  /** scene coords */\n\n\n  static getPointGlobalCoordinates(element, point) {\n    const [x1, y1, x2, y2] = (0,___WEBPACK_IMPORTED_MODULE_1__.getElementAbsoluteCoords)(element);\n    const cx = (x1 + x2) / 2;\n    const cy = (y1 + y2) / 2;\n    let {\n      x,\n      y\n    } = element;\n    [x, y] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(x + point[0], y + point[1], cx, cy, element.angle);\n    return [x, y];\n  }\n  /** scene coords */\n\n\n  static getPointsGlobalCoordinates(element) {\n    const [x1, y1, x2, y2] = (0,___WEBPACK_IMPORTED_MODULE_1__.getElementAbsoluteCoords)(element);\n    const cx = (x1 + x2) / 2;\n    const cy = (y1 + y2) / 2;\n    return element.points.map(point => {\n      let {\n        x,\n        y\n      } = element;\n      [x, y] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(x + point[0], y + point[1], cx, cy, element.angle);\n      return [x, y];\n    });\n  }\n\n  static getPointAtIndexGlobalCoordinates(element, indexMaybeFromEnd) {\n    const index = indexMaybeFromEnd < 0 ? element.points.length + indexMaybeFromEnd : indexMaybeFromEnd;\n    const [x1, y1, x2, y2] = (0,___WEBPACK_IMPORTED_MODULE_1__.getElementAbsoluteCoords)(element);\n    const cx = (x1 + x2) / 2;\n    const cy = (y1 + y2) / 2;\n    const point = element.points[index];\n    const {\n      x,\n      y\n    } = element;\n    return point ? (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(x + point[0], y + point[1], cx, cy, element.angle) : (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(x, y, cx, cy, element.angle);\n  }\n\n  static pointFromAbsoluteCoords(element, absoluteCoords) {\n    const [x1, y1, x2, y2] = (0,___WEBPACK_IMPORTED_MODULE_1__.getElementAbsoluteCoords)(element);\n    const cx = (x1 + x2) / 2;\n    const cy = (y1 + y2) / 2;\n    const [x, y] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(absoluteCoords[0], absoluteCoords[1], cx, cy, -element.angle);\n    return [x - element.x, y - element.y];\n  }\n\n  static getPointIndexUnderCursor(element, zoom, x, y) {\n    const pointHandles = LinearElementEditor.getPointsGlobalCoordinates(element);\n    let idx = pointHandles.length; // loop from right to left because points on the right are rendered over\n    // points on the left, thus should take precedence when clicking, if they\n    // overlap\n\n    while (--idx > -1) {\n      const point = pointHandles[idx];\n\n      if ((0,_math__WEBPACK_IMPORTED_MODULE_0__.distance2d)(x, y, point[0], point[1]) * zoom.value < // +1px to account for outline stroke\n      LinearElementEditor.POINT_HANDLE_SIZE + 1) {\n        return idx;\n      }\n    }\n\n    return -1;\n  }\n\n  static createPointAt(element, scenePointerX, scenePointerY, gridSize) {\n    const pointerOnGrid = (0,_math__WEBPACK_IMPORTED_MODULE_0__.getGridPoint)(scenePointerX, scenePointerY, gridSize);\n    const [x1, y1, x2, y2] = (0,___WEBPACK_IMPORTED_MODULE_1__.getElementAbsoluteCoords)(element);\n    const cx = (x1 + x2) / 2;\n    const cy = (y1 + y2) / 2;\n    const [rotatedX, rotatedY] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(pointerOnGrid[0], pointerOnGrid[1], cx, cy, -element.angle);\n    return [rotatedX - element.x, rotatedY - element.y];\n  }\n  /**\n   * Normalizes line points so that the start point is at [0,0]. This is\n   * expected in various parts of the codebase. Also returns new x/y to account\n   * for the potential normalization.\n   */\n\n\n  static getNormalizedPoints(element) {\n    const {\n      points\n    } = element;\n    const offsetX = points[0][0];\n    const offsetY = points[0][1];\n    return {\n      points: points.map((point, _idx) => {\n        return [point[0] - offsetX, point[1] - offsetY];\n      }),\n      x: element.x + offsetX,\n      y: element.y + offsetY\n    };\n  } // element-mutating methods\n  // ---------------------------------------------------------------------------\n\n\n  static normalizePoints(element) {\n    (0,_mutateElement__WEBPACK_IMPORTED_MODULE_3__.mutateElement)(element, LinearElementEditor.getNormalizedPoints(element));\n  }\n\n  static duplicateSelectedPoints(appState) {\n    if (!appState.editingLinearElement) {\n      return false;\n    }\n\n    const {\n      selectedPointsIndices,\n      elementId\n    } = appState.editingLinearElement;\n    const element = LinearElementEditor.getElement(elementId);\n\n    if (!element || selectedPointsIndices === null) {\n      return false;\n    }\n\n    const {\n      points\n    } = element;\n    const nextSelectedIndices = [];\n    let pointAddedToEnd = false;\n    let indexCursor = -1;\n    const nextPoints = points.reduce((acc, point, index) => {\n      ++indexCursor;\n      acc.push(point);\n      const isSelected = selectedPointsIndices.includes(index);\n\n      if (isSelected) {\n        const nextPoint = points[index + 1];\n\n        if (!nextPoint) {\n          pointAddedToEnd = true;\n        }\n\n        acc.push(nextPoint ? [(point[0] + nextPoint[0]) / 2, (point[1] + nextPoint[1]) / 2] : [point[0], point[1]]);\n        nextSelectedIndices.push(indexCursor + 1);\n        ++indexCursor;\n      }\n\n      return acc;\n    }, []);\n    (0,_mutateElement__WEBPACK_IMPORTED_MODULE_3__.mutateElement)(element, {\n      points: nextPoints\n    }); // temp hack to ensure the line doesn\'t move when adding point to the end,\n    // potentially expanding the bounding box\n\n    if (pointAddedToEnd) {\n      const lastPoint = element.points[element.points.length - 1];\n      LinearElementEditor.movePoints(element, [{\n        index: element.points.length - 1,\n        point: [lastPoint[0] + 30, lastPoint[1] + 30]\n      }]);\n    }\n\n    return {\n      appState: Object.assign(Object.assign({}, appState), {\n        editingLinearElement: Object.assign(Object.assign({}, appState.editingLinearElement), {\n          selectedPointsIndices: nextSelectedIndices\n        })\n      })\n    };\n  }\n\n  static deletePoints(element, pointIndices) {\n    let offsetX = 0;\n    let offsetY = 0;\n    const isDeletingOriginPoint = pointIndices.includes(0); // if deleting first point, make the next to be [0,0] and recalculate\n    // positions of the rest with respect to it\n\n    if (isDeletingOriginPoint) {\n      const firstNonDeletedPoint = element.points.find((point, idx) => {\n        return !pointIndices.includes(idx);\n      });\n\n      if (firstNonDeletedPoint) {\n        offsetX = firstNonDeletedPoint[0];\n        offsetY = firstNonDeletedPoint[1];\n      }\n    }\n\n    const nextPoints = element.points.reduce((acc, point, idx) => {\n      if (!pointIndices.includes(idx)) {\n        acc.push(!acc.length ? [0, 0] : [point[0] - offsetX, point[1] - offsetY]);\n      }\n\n      return acc;\n    }, []);\n\n    LinearElementEditor._updatePoints(element, nextPoints, offsetX, offsetY);\n  }\n\n  static addPoints(element, appState, targetPoints) {\n    const offsetX = 0;\n    const offsetY = 0;\n    const nextPoints = [...element.points, ...targetPoints.map(x => x.point)];\n\n    LinearElementEditor._updatePoints(element, nextPoints, offsetX, offsetY);\n  }\n\n  static movePoints(element, targetPoints, otherUpdates) {\n    const {\n      points\n    } = element; // in case we\'re moving start point, instead of modifying its position\n    // which would break the invariant of it being at [0,0], we move\n    // all the other points in the opposite direction by delta to\n    // offset it. We do the same with actual element.x/y position, so\n    // this hacks are completely transparent to the user.\n\n    let offsetX = 0;\n    let offsetY = 0;\n    const selectedOriginPoint = targetPoints.find(({\n      index\n    }) => index === 0);\n\n    if (selectedOriginPoint) {\n      offsetX = selectedOriginPoint.point[0] + points[selectedOriginPoint.index][0];\n      offsetY = selectedOriginPoint.point[1] + points[selectedOriginPoint.index][1];\n    }\n\n    const nextPoints = points.map((point, idx) => {\n      const selectedPointData = targetPoints.find(p => p.index === idx);\n\n      if (selectedPointData) {\n        if (selectedOriginPoint) {\n          return point;\n        }\n\n        const deltaX = selectedPointData.point[0] - points[selectedPointData.index][0];\n        const deltaY = selectedPointData.point[1] - points[selectedPointData.index][1];\n        return [point[0] + deltaX, point[1] + deltaY];\n      }\n\n      return offsetX || offsetY ? [point[0] - offsetX, point[1] - offsetY] : point;\n    });\n\n    LinearElementEditor._updatePoints(element, nextPoints, offsetX, offsetY, otherUpdates);\n  }\n\n  static shouldAddMidpoint(linearElementEditor, pointerCoords, appState) {\n    const element = LinearElementEditor.getElement(linearElementEditor.elementId);\n\n    if (!element) {\n      return false;\n    }\n\n    const {\n      segmentMidpoint\n    } = linearElementEditor.pointerDownState;\n\n    if (segmentMidpoint.added || segmentMidpoint.value === null || segmentMidpoint.index === null || linearElementEditor.pointerDownState.origin === null) {\n      return false;\n    }\n\n    const origin = linearElementEditor.pointerDownState.origin;\n    const dist = (0,_math__WEBPACK_IMPORTED_MODULE_0__.distance2d)(origin.x, origin.y, pointerCoords.x, pointerCoords.y);\n\n    if (!appState.editingLinearElement && dist < _constants__WEBPACK_IMPORTED_MODULE_10__.DRAGGING_THRESHOLD / appState.zoom.value) {\n      return false;\n    }\n\n    return true;\n  }\n\n  static addMidpoint(linearElementEditor, pointerCoords, appState, snapToGrid) {\n    const element = LinearElementEditor.getElement(linearElementEditor.elementId);\n\n    if (!element) {\n      return;\n    }\n\n    const {\n      segmentMidpoint\n    } = linearElementEditor.pointerDownState;\n    const ret = {\n      pointerDownState: linearElementEditor.pointerDownState,\n      selectedPointsIndices: linearElementEditor.selectedPointsIndices\n    };\n    const midpoint = LinearElementEditor.createPointAt(element, pointerCoords.x, pointerCoords.y, snapToGrid ? appState.gridSize : null);\n    const points = [...element.points.slice(0, segmentMidpoint.index), midpoint, ...element.points.slice(segmentMidpoint.index)];\n    (0,_mutateElement__WEBPACK_IMPORTED_MODULE_3__.mutateElement)(element, {\n      points\n    });\n    ret.pointerDownState = Object.assign(Object.assign({}, linearElementEditor.pointerDownState), {\n      segmentMidpoint: Object.assign(Object.assign({}, linearElementEditor.pointerDownState.segmentMidpoint), {\n        added: true\n      }),\n      lastClickedPoint: segmentMidpoint.index\n    });\n    ret.selectedPointsIndices = [segmentMidpoint.index];\n    return ret;\n  }\n\n  static _updatePoints(element, nextPoints, offsetX, offsetY, otherUpdates) {\n    const nextCoords = (0,_bounds__WEBPACK_IMPORTED_MODULE_2__.getElementPointsCoords)(element, nextPoints);\n    const prevCoords = (0,_bounds__WEBPACK_IMPORTED_MODULE_2__.getElementPointsCoords)(element, element.points);\n    const nextCenterX = (nextCoords[0] + nextCoords[2]) / 2;\n    const nextCenterY = (nextCoords[1] + nextCoords[3]) / 2;\n    const prevCenterX = (prevCoords[0] + prevCoords[2]) / 2;\n    const prevCenterY = (prevCoords[1] + prevCoords[3]) / 2;\n    const dX = prevCenterX - nextCenterX;\n    const dY = prevCenterY - nextCenterY;\n    const rotated = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotate)(offsetX, offsetY, dX, dY, element.angle);\n    (0,_mutateElement__WEBPACK_IMPORTED_MODULE_3__.mutateElement)(element, Object.assign(Object.assign({}, otherUpdates), {\n      points: nextPoints,\n      x: element.x + rotated[0],\n      y: element.y + rotated[1]\n    }));\n  }\n\n  static _getShiftLockedDelta(element, referencePoint, scenePointer, gridSize) {\n    const referencePointCoords = LinearElementEditor.getPointGlobalCoordinates(element, referencePoint);\n    const [gridX, gridY] = (0,_math__WEBPACK_IMPORTED_MODULE_0__.getGridPoint)(scenePointer[0], scenePointer[1], gridSize);\n    const {\n      width,\n      height\n    } = (0,___WEBPACK_IMPORTED_MODULE_1__.getLockedLinearCursorAlignSize)(referencePointCoords[0], referencePointCoords[1], gridX, gridY);\n    return (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotatePoint)([width, height], [0, 0], -element.angle);\n  }\n\n} // ---------------------------------------------------------------------------\n// static methods\n// ---------------------------------------------------------------------------\n\nLinearElementEditor.POINT_HANDLE_SIZE = 10;\n\nLinearElementEditor.getEditorMidPoints = (element, appState) => {\n  const boundText = (0,_textElement__WEBPACK_IMPORTED_MODULE_9__.getBoundTextElement)(element); // Since its not needed outside editor unless 2 pointer lines or bound text\n\n  if (!appState.editingLinearElement && element.points.length > 2 && !boundText) {\n    return [];\n  }\n\n  if (editorMidPointsCache.version === element.version && editorMidPointsCache.zoom === appState.zoom.value) {\n    return editorMidPointsCache.points;\n  }\n\n  LinearElementEditor.updateEditorMidPointsCache(element, appState);\n  return editorMidPointsCache.points;\n};\n\nLinearElementEditor.updateEditorMidPointsCache = (element, appState) => {\n  const points = LinearElementEditor.getPointsGlobalCoordinates(element);\n  let index = 0;\n  const midpoints = [];\n\n  while (index < points.length - 1) {\n    if (LinearElementEditor.isSegmentTooShort(element, element.points[index], element.points[index + 1], appState.zoom)) {\n      midpoints.push(null);\n      index++;\n      continue;\n    }\n\n    const segmentMidPoint = LinearElementEditor.getSegmentMidPoint(element, points[index], points[index + 1], index + 1);\n    midpoints.push(segmentMidPoint);\n    index++;\n  }\n\n  editorMidPointsCache.points = midpoints;\n  editorMidPointsCache.version = element.version;\n  editorMidPointsCache.zoom = appState.zoom.value;\n};\n\nLinearElementEditor.getSegmentMidpointHitCoords = (linearElementEditor, scenePointer, appState) => {\n  const {\n    elementId\n  } = linearElementEditor;\n  const element = LinearElementEditor.getElement(elementId);\n\n  if (!element) {\n    return null;\n  }\n\n  const clickedPointIndex = LinearElementEditor.getPointIndexUnderCursor(element, appState.zoom, scenePointer.x, scenePointer.y);\n\n  if (clickedPointIndex >= 0) {\n    return null;\n  }\n\n  const points = LinearElementEditor.getPointsGlobalCoordinates(element);\n\n  if (points.length >= 3 && !appState.editingLinearElement) {\n    return null;\n  }\n\n  const threshold = LinearElementEditor.POINT_HANDLE_SIZE / appState.zoom.value;\n  const existingSegmentMidpointHitCoords = linearElementEditor.segmentMidPointHoveredCoords;\n\n  if (existingSegmentMidpointHitCoords) {\n    const distance = (0,_math__WEBPACK_IMPORTED_MODULE_0__.distance2d)(existingSegmentMidpointHitCoords[0], existingSegmentMidpointHitCoords[1], scenePointer.x, scenePointer.y);\n\n    if (distance <= threshold) {\n      return existingSegmentMidpointHitCoords;\n    }\n  }\n\n  let index = 0;\n  const midPoints = LinearElementEditor.getEditorMidPoints(element, appState);\n\n  while (index < midPoints.length) {\n    if (midPoints[index] !== null) {\n      const distance = (0,_math__WEBPACK_IMPORTED_MODULE_0__.distance2d)(midPoints[index][0], midPoints[index][1], scenePointer.x, scenePointer.y);\n\n      if (distance <= threshold) {\n        return midPoints[index];\n      }\n    }\n\n    index++;\n  }\n\n  return null;\n};\n\nLinearElementEditor.getBoundTextElementPosition = (element, boundTextElement) => {\n  const points = LinearElementEditor.getPointsGlobalCoordinates(element);\n\n  if (points.length < 2) {\n    (0,_mutateElement__WEBPACK_IMPORTED_MODULE_3__.mutateElement)(boundTextElement, {\n      isDeleted: true\n    });\n  }\n\n  let x = 0;\n  let y = 0;\n\n  if (element.points.length % 2 === 1) {\n    const index = Math.floor(element.points.length / 2);\n    const midPoint = LinearElementEditor.getPointGlobalCoordinates(element, element.points[index]);\n    x = midPoint[0] - boundTextElement.width / 2;\n    y = midPoint[1] - boundTextElement.height / 2;\n  } else {\n    const index = element.points.length / 2 - 1;\n    let midSegmentMidpoint = editorMidPointsCache.points[index];\n\n    if (element.points.length === 2) {\n      midSegmentMidpoint = (0,_math__WEBPACK_IMPORTED_MODULE_0__.centerPoint)(points[0], points[1]);\n    }\n\n    if (!midSegmentMidpoint || editorMidPointsCache.version !== element.version) {\n      midSegmentMidpoint = LinearElementEditor.getSegmentMidPoint(element, points[index], points[index + 1], index + 1);\n    }\n\n    x = midSegmentMidpoint[0] - boundTextElement.width / 2;\n    y = midSegmentMidpoint[1] - boundTextElement.height / 2;\n  }\n\n  return {\n    x,\n    y\n  };\n};\n\nLinearElementEditor.getMinMaxXYWithBoundText = (element, elementBounds, boundTextElement) => {\n  let [x1, y1, x2, y2] = elementBounds;\n  const cx = (x1 + x2) / 2;\n  const cy = (y1 + y2) / 2;\n  const {\n    x: boundTextX1,\n    y: boundTextY1\n  } = LinearElementEditor.getBoundTextElementPosition(element, boundTextElement);\n  const boundTextX2 = boundTextX1 + boundTextElement.width;\n  const boundTextY2 = boundTextY1 + boundTextElement.height;\n  const topLeftRotatedPoint = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotatePoint)([x1, y1], [cx, cy], element.angle);\n  const topRightRotatedPoint = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotatePoint)([x2, y1], [cx, cy], element.angle);\n  const counterRotateBoundTextTopLeft = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotatePoint)([boundTextX1, boundTextY1], [cx, cy], -element.angle);\n  const counterRotateBoundTextTopRight = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotatePoint)([boundTextX2, boundTextY1], [cx, cy], -element.angle);\n  const counterRotateBoundTextBottomLeft = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotatePoint)([boundTextX1, boundTextY2], [cx, cy], -element.angle);\n  const counterRotateBoundTextBottomRight = (0,_math__WEBPACK_IMPORTED_MODULE_0__.rotatePoint)([boundTextX2, boundTextY2], [cx, cy], -element.angle);\n\n  if (topLeftRotatedPoint[0] < topRightRotatedPoint[0] && topLeftRotatedPoint[1] >= topRightRotatedPoint[1]) {\n    x1 = Math.min(x1, counterRotateBoundTextBottomLeft[0]);\n    x2 = Math.max(x2, Math.max(counterRotateBoundTextTopRight[0], counterRotateBoundTextBottomRight[0]));\n    y1 = Math.min(y1, counterRotateBoundTextTopLeft[1]);\n    y2 = Math.max(y2, counterRotateBoundTextBottomRight[1]);\n  } else if (topLeftRotatedPoint[0] >= topRightRotatedPoint[0] && topLeftRotatedPoint[1] > topRightRotatedPoint[1]) {\n    x1 = Math.min(x1, counterRotateBoundTextBottomRight[0]);\n    x2 = Math.max(x2, Math.max(counterRotateBoundTextTopLeft[0], counterRotateBoundTextTopRight[0]));\n    y1 = Math.min(y1, counterRotateBoundTextBottomLeft[1]);\n    y2 = Math.max(y2, counterRotateBoundTextTopRight[1]);\n  } else if (topLeftRotatedPoint[0] >= topRightRotatedPoint[0]) {\n    x1 = Math.min(x1, counterRotateBoundTextTopRight[0]);\n    x2 = Math.max(x2, counterRotateBoundTextBottomLeft[0]);\n    y1 = Math.min(y1, counterRotateBoundTextBottomRight[1]);\n    y2 = Math.max(y2, counterRotateBoundTextTopLeft[1]);\n  } else if (topLeftRotatedPoint[1] <= topRightRotatedPoint[1]) {\n    x1 = Math.min(x1, Math.min(counterRotateBoundTextTopRight[0], counterRotateBoundTextTopLeft[0]));\n    x2 = Math.max(x2, counterRotateBoundTextBottomRight[0]);\n    y1 = Math.min(y1, counterRotateBoundTextTopRight[1]);\n    y2 = Math.max(y2, counterRotateBoundTextBottomLeft[1]);\n  }\n\n  return [x1, y1, x2, y2, cx, cy];\n};\n\nLinearElementEditor.getElementAbsoluteCoords = (element, includeBoundText = false) => {\n  let coords;\n  let x1;\n  let y1;\n  let x2;\n  let y2;\n\n  if (element.points.length < 2 || !_scene_ShapeCache__WEBPACK_IMPORTED_MODULE_11__.ShapeCache.get(element)) {\n    // XXX this is just a poor estimate and not very useful\n    const {\n      minX,\n      minY,\n      maxX,\n      maxY\n    } = element.points.reduce((limits, [x, y]) => {\n      limits.minY = Math.min(limits.minY, y);\n      limits.minX = Math.min(limits.minX, x);\n      limits.maxX = Math.max(limits.maxX, x);\n      limits.maxY = Math.max(limits.maxY, y);\n      return limits;\n    }, {\n      minX: Infinity,\n      minY: Infinity,\n      maxX: -Infinity,\n      maxY: -Infinity\n    });\n    x1 = minX + element.x;\n    y1 = minY + element.y;\n    x2 = maxX + element.x;\n    y2 = maxY + element.y;\n  } else {\n    const shape = _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_11__.ShapeCache.generateElementShape(element); // first element is always the curve\n\n    const ops = (0,_bounds__WEBPACK_IMPORTED_MODULE_2__.getCurvePathOps)(shape[0]);\n    const [minX, minY, maxX, maxY] = (0,_bounds__WEBPACK_IMPORTED_MODULE_2__.getMinMaxXYFromCurvePathOps)(ops);\n    x1 = minX + element.x;\n    y1 = minY + element.y;\n    x2 = maxX + element.x;\n    y2 = maxY + element.y;\n  }\n\n  const cx = (x1 + x2) / 2;\n  const cy = (y1 + y2) / 2;\n  coords = [x1, y1, x2, y2, cx, cy];\n\n  if (!includeBoundText) {\n    return coords;\n  }\n\n  const boundTextElement = (0,_textElement__WEBPACK_IMPORTED_MODULE_9__.getBoundTextElement)(element);\n\n  if (boundTextElement) {\n    coords = LinearElementEditor.getMinMaxXYWithBoundText(element, [x1, y1, x2, y2], boundTextElement);\n  }\n\n  return coords;\n};\n\nconst normalizeSelectedPoints = points => {\n  let nextPoints = [...new Set(points.filter(p => p !== null && p !== -1))];\n  nextPoints = nextPoints.sort((a, b) => a - b);\n  return nextPoints.length ? nextPoints : null;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 57600 characters]\n//# sourceURL=webpack-internal:///../../element/linearElementEditor.ts\n');
              }
            ),
            /***/
            "../../element/mutateElement.ts": (
              /*!**************************************!*\
                !*** ../../element/mutateElement.ts ***!
                \**************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "bumpVersion": () => (/* binding */ bumpVersion),\n/* harmony export */   "mutateElement": () => (/* binding */ mutateElement),\n/* harmony export */   "newElementWith": () => (/* binding */ newElementWith)\n/* harmony export */ });\n/* harmony import */ var _scene_Scene__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../scene/Scene */ "../../scene/Scene.ts");\n/* harmony import */ var _points__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../points */ "../../points.ts");\n/* harmony import */ var _random__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../random */ "../../random.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../scene/ShapeCache */ "../../scene/ShapeCache.ts");\n\n\n\n\n // This function tracks updates of text elements for the purposes for collaboration.\n// The version is used to compare updates when more than one user is working in\n// the same drawing. Note: this will trigger the component to update. Make sure you\n// are calling it either from a React event handler or within unstable_batchedUpdates().\n\nconst mutateElement = (element, updates, informMutation = true) => {\n  var _a;\n\n  let didChange = false; // casting to any because can\'t use `in` operator\n  // (see https://github.com/microsoft/TypeScript/issues/21732)\n\n  const {\n    points,\n    fileId\n  } = updates;\n\n  if (typeof points !== "undefined") {\n    updates = Object.assign(Object.assign({}, (0,_points__WEBPACK_IMPORTED_MODULE_1__.getSizeFromPoints)(points)), updates);\n  }\n\n  for (const key in updates) {\n    const value = updates[key];\n\n    if (typeof value !== "undefined") {\n      if (element[key] === value && ( // if object, always update because its attrs could have changed\n      // (except for specific keys we handle below)\n      typeof value !== "object" || value === null || key === "groupIds" || key === "scale")) {\n        continue;\n      }\n\n      if (key === "scale") {\n        const prevScale = element[key];\n        const nextScale = value;\n\n        if (prevScale[0] === nextScale[0] && prevScale[1] === nextScale[1]) {\n          continue;\n        }\n      } else if (key === "points") {\n        const prevPoints = element[key];\n        const nextPoints = value;\n\n        if (prevPoints.length === nextPoints.length) {\n          let didChangePoints = false;\n          let index = prevPoints.length;\n\n          while (--index) {\n            const prevPoint = prevPoints[index];\n            const nextPoint = nextPoints[index];\n\n            if (prevPoint[0] !== nextPoint[0] || prevPoint[1] !== nextPoint[1]) {\n              didChangePoints = true;\n              break;\n            }\n          }\n\n          if (!didChangePoints) {\n            continue;\n          }\n        }\n      }\n\n      element[key] = value;\n      didChange = true;\n    }\n  }\n\n  if (!didChange) {\n    return element;\n  }\n\n  if (typeof updates.height !== "undefined" || typeof updates.width !== "undefined" || typeof fileId != "undefined" || typeof points !== "undefined") {\n    _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_4__.ShapeCache["delete"](element);\n  }\n\n  element.version++;\n  element.versionNonce = (0,_random__WEBPACK_IMPORTED_MODULE_2__.randomInteger)();\n  element.updated = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.getUpdatedTimestamp)();\n\n  if (informMutation) {\n    (_a = _scene_Scene__WEBPACK_IMPORTED_MODULE_0__["default"].getScene(element)) === null || _a === void 0 ? void 0 : _a.informMutation();\n  }\n\n  return element;\n};\nconst newElementWith = (element, updates) => {\n  let didChange = false;\n\n  for (const key in updates) {\n    const value = updates[key];\n\n    if (typeof value !== "undefined") {\n      if (element[key] === value && ( // if object, always update because its attrs could have changed\n      typeof value !== "object" || value === null)) {\n        continue;\n      }\n\n      didChange = true;\n    }\n  }\n\n  if (!didChange) {\n    return element;\n  }\n\n  return Object.assign(Object.assign(Object.assign({}, element), updates), {\n    updated: (0,_utils__WEBPACK_IMPORTED_MODULE_3__.getUpdatedTimestamp)(),\n    version: element.version + 1,\n    versionNonce: (0,_random__WEBPACK_IMPORTED_MODULE_2__.randomInteger)()\n  });\n};\n/**\n * Mutates element, bumping `version`, `versionNonce`, and `updated`.\n *\n * NOTE: does not trigger re-render.\n */\n\nconst bumpVersion = (element, version) => {\n  element.version = (version !== null && version !== void 0 ? version : element.version) + 1;\n  element.versionNonce = (0,_random__WEBPACK_IMPORTED_MODULE_2__.randomInteger)();\n  element.updated = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.getUpdatedTimestamp)();\n  return element;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6396 characters]\n//# sourceURL=webpack-internal:///../../element/mutateElement.ts\n');
              }
            ),
            /***/
            "../../element/newElement.ts": (
              /*!***********************************!*\
                !*** ../../element/newElement.ts ***!
                \***********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "deepCopyElement": () => (/* binding */ deepCopyElement),
/* harmony export */   "duplicateElement": () => (/* binding */ duplicateElement),
/* harmony export */   "duplicateElements": () => (/* binding */ duplicateElements),
/* harmony export */   "newElement": () => (/* binding */ newElement),
/* harmony export */   "newEmbeddableElement": () => (/* binding */ newEmbeddableElement),
/* harmony export */   "newFrameElement": () => (/* binding */ newFrameElement),
/* harmony export */   "newFreeDrawElement": () => (/* binding */ newFreeDrawElement),
/* harmony export */   "newImageElement": () => (/* binding */ newImageElement),
/* harmony export */   "newLinearElement": () => (/* binding */ newLinearElement),
/* harmony export */   "newTextElement": () => (/* binding */ newTextElement),
/* harmony export */   "refreshTextDimensions": () => (/* binding */ refreshTextDimensions),
/* harmony export */   "regenerateId": () => (/* binding */ regenerateId),
/* harmony export */   "updateTextElement": () => (/* binding */ updateTextElement)
/* harmony export */ });
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils */ "../../utils.ts");
/* harmony import */ var _random__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../random */ "../../random.ts");
/* harmony import */ var _mutateElement__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./mutateElement */ "../../element/mutateElement.ts");
/* harmony import */ var _groups__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../groups */ "../../groups.ts");
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! . */ "../../element/index.ts");
/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../math */ "../../math.ts");
/* harmony import */ var _bounds__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./bounds */ "../../element/bounds.ts");
/* harmony import */ var _textElement__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./textElement */ "../../element/textElement.ts");
/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../constants */ "../../constants.ts");
var __rest = undefined && undefined.__rest || function (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;
};











const _newElementBase = (type, _a) => {
  var _b, _c;

  var {
    x,
    y,
    strokeColor = _constants__WEBPACK_IMPORTED_MODULE_8__.DEFAULT_ELEMENT_PROPS.strokeColor,
    backgroundColor = _constants__WEBPACK_IMPORTED_MODULE_8__.DEFAULT_ELEMENT_PROPS.backgroundColor,
    fillStyle = _constants__WEBPACK_IMPORTED_MODULE_8__.DEFAULT_ELEMENT_PROPS.fillStyle,
    strokeWidth = _constants__WEBPACK_IMPORTED_MODULE_8__.DEFAULT_ELEMENT_PROPS.strokeWidth,
    strokeStyle = _constants__WEBPACK_IMPORTED_MODULE_8__.DEFAULT_ELEMENT_PROPS.strokeStyle,
    roughness = _constants__WEBPACK_IMPORTED_MODULE_8__.DEFAULT_ELEMENT_PROPS.roughness,
    opacity = _constants__WEBPACK_IMPORTED_MODULE_8__.DEFAULT_ELEMENT_PROPS.opacity,
    width = 0,
    height = 0,
    angle = 0,
    groupIds = [],
    frameId = null,
    roundness = null,
    boundElements = null,
    link = null,
    locked = _constants__WEBPACK_IMPORTED_MODULE_8__.DEFAULT_ELEMENT_PROPS.locked
  } = _a,
      rest = __rest(_a, ["x", "y", "strokeColor", "backgroundColor", "fillStyle", "strokeWidth", "strokeStyle", "roughness", "opacity", "width", "height", "angle", "groupIds", "frameId", "roundness", "boundElements", "link", "locked"]); // assign type to guard against excess properties


  const element = {
    id: rest.id || (0,_random__WEBPACK_IMPORTED_MODULE_1__.randomId)(),
    type,
    x,
    y,
    width,
    height,
    angle,
    strokeColor,
    backgroundColor,
    fillStyle,
    strokeWidth,
    strokeStyle,
    roughness,
    opacity,
    groupIds,
    frameId,
    roundness,
    seed: (_b = rest.seed) !== null && _b !== void 0 ? _b : (0,_random__WEBPACK_IMPORTED_MODULE_1__.randomInteger)(),
    version: rest.version || 1,
    versionNonce: (_c = rest.versionNonce) !== null && _c !== void 0 ? _c : 0,
    isDeleted: false,
    boundElements,
    updated: (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getUpdatedTimestamp)(),
    link,
    locked,
    customData: rest.customData
  };
  return element;
};

const newElement = opts => _newElementBase(opts.type, opts);
const newEmbeddableElement = opts => {
  return Object.assign(Object.assign({}, _newElementBase("embeddable", opts)), {
    validated: opts.validated
  });
};
const newFrameElement = opts => {
  const frameElement = (0,_mutateElement__WEBPACK_IMPORTED_MODULE_2__.newElementWith)(Object.assign(Object.assign({}, _newElementBase("frame", opts)), {
    type: "frame",
    name: (opts === null || opts === void 0 ? void 0 : opts.name) || null
  }), {});
  return frameElement;
};
/** computes element x/y offset based on textAlign/verticalAlign */

const getTextElementPositionOffsets = (opts, metrics) => {
  return {
    x: opts.textAlign === "center" ? metrics.width / 2 : opts.textAlign === "right" ? metrics.width : 0,
    y: opts.verticalAlign === "middle" ? metrics.height / 2 : 0
  };
};

const newTextElement = opts => {
  const fontFamily = opts.fontFamily || _constants__WEBPACK_IMPORTED_MODULE_8__.DEFAULT_FONT_FAMILY;
  const fontSize = opts.fontSize || _constants__WEBPACK_IMPORTED_MODULE_8__.DEFAULT_FONT_SIZE;
  const lineHeight = opts.lineHeight || (0,_textElement__WEBPACK_IMPORTED_MODULE_7__.getDefaultLineHeight)(fontFamily);
  const text = (0,_textElement__WEBPACK_IMPORTED_MODULE_7__.normalizeText)(opts.text);
  const metrics = (0,_textElement__WEBPACK_IMPORTED_MODULE_7__.measureText)(text, (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getFontString)({
    fontFamily,
    fontSize
  }), lineHeight);
  const textAlign = opts.textAlign || _constants__WEBPACK_IMPORTED_MODULE_8__.DEFAULT_TEXT_ALIGN;
  const verticalAlign = opts.verticalAlign || _constants__WEBPACK_IMPORTED_MODULE_8__.DEFAULT_VERTICAL_ALIGN;
  const offsets = getTextElementPositionOffsets({
    textAlign,
    verticalAlign
  }, metrics);
  const textElement = (0,_mutateElement__WEBPACK_IMPORTED_MODULE_2__.newElementWith)(Object.assign(Object.assign({}, _newElementBase("text", opts)), {
    text,
    fontSize,
    fontFamily,
    textAlign,
    verticalAlign,
    x: opts.x - offsets.x,
    y: opts.y - offsets.y,
    width: metrics.width,
    height: metrics.height,
    baseline: metrics.baseline,
    containerId: opts.containerId || null,
    originalText: text,
    lineHeight
  }), {});
  return textElement;
};

const getAdjustedDimensions = (element, nextText) => {
  const {
    width: nextWidth,
    height: nextHeight,
    baseline: nextBaseline
  } = (0,_textElement__WEBPACK_IMPORTED_MODULE_7__.measureText)(nextText, (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getFontString)(element), element.lineHeight);
  const {
    textAlign,
    verticalAlign
  } = element;
  let x;
  let y;

  if (textAlign === "center" && verticalAlign === _constants__WEBPACK_IMPORTED_MODULE_8__.VERTICAL_ALIGN.MIDDLE && !element.containerId) {
    const prevMetrics = (0,_textElement__WEBPACK_IMPORTED_MODULE_7__.measureText)(element.text, (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getFontString)(element), element.lineHeight);
    const offsets = getTextElementPositionOffsets(element, {
      width: nextWidth - prevMetrics.width,
      height: nextHeight - prevMetrics.height
    });
    x = element.x - offsets.x;
    y = element.y - offsets.y;
  } else {
    const [x1, y1, x2, y2] = (0,___WEBPACK_IMPORTED_MODULE_4__.getElementAbsoluteCoords)(element);
    const [nextX1, nextY1, nextX2, nextY2] = (0,_bounds__WEBPACK_IMPORTED_MODULE_6__.getResizedElementAbsoluteCoords)(element, nextWidth, nextHeight, false);
    const deltaX1 = (x1 - nextX1) / 2;
    const deltaY1 = (y1 - nextY1) / 2;
    const deltaX2 = (x2 - nextX2) / 2;
    const deltaY2 = (y2 - nextY2) / 2;
    [x, y] = (0,_math__WEBPACK_IMPORTED_MODULE_5__.adjustXYWithRotation)({
      s: true,
      e: textAlign === "center" || textAlign === "left",
      w: textAlign === "center" || textAlign === "right"
    }, element.x, element.y, element.angle, deltaX1, deltaY1, deltaX2, deltaY2);
  }

  return {
    width: nextWidth,
    height: nextHeight,
    baseline: nextBaseline,
    x: Number.isFinite(x) ? x : element.x,
    y: Number.isFinite(y) ? y : element.y
  };
};

const refreshTextDimensions = (textElement, text = textElement.text) => {
  if (textElement.isDeleted) {
    return;
  }

  const container = (0,_textElement__WEBPACK_IMPORTED_MODULE_7__.getContainerElement)(textElement);

  if (container) {
    text = (0,_textElement__WEBPACK_IMPORTED_MODULE_7__.wrapText)(text, (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getFontString)(textElement), (0,_textElement__WEBPACK_IMPORTED_MODULE_7__.getBoundTextMaxWidth)(container));
  }

  const dimensions = getAdjustedDimensions(textElement, text);
  return Object.assign({
    text
  }, dimensions);
};
const updateTextElement = (textElement, {
  text,
  isDeleted,
  originalText
}) => {
  return (0,_mutateElement__WEBPACK_IMPORTED_MODULE_2__.newElementWith)(textElement, Object.assign({
    originalText,
    isDeleted: isDeleted !== null && isDeleted !== void 0 ? isDeleted : textElement.isDeleted
  }, refreshTextDimensions(textElement, originalText)));
};
const newFreeDrawElement = opts => {
  return Object.assign(Object.assign({}, _newElementBase(opts.type, opts)), {
    points: opts.points || [],
    pressures: [],
    simulatePressure: opts.simulatePressure,
    lastCommittedPoint: null
  });
};
const newLinearElement = opts => {
  return Object.assign(Object.assign({}, _newElementBase(opts.type, opts)), {
    points: opts.points || [],
    lastCommittedPoint: null,
    startBinding: null,
    endBinding: null,
    startArrowhead: opts.startArrowhead || null,
    endArrowhead: opts.endArrowhead || null
  });
};
const newImageElement = opts => {
  var _a, _b, _c;

  return Object.assign(Object.assign({}, _newElementBase("image", opts)), {
    // in the future we'll support changing stroke color for some SVG elements,
    // and \`transparent\` will likely mean "use original colors of the image"
    strokeColor: "transparent",
    status: (_a = opts.status) !== null && _a !== void 0 ? _a : "pending",
    fileId: (_b = opts.fileId) !== null && _b !== void 0 ? _b : null,
    scale: (_c = opts.scale) !== null && _c !== void 0 ? _c : [1, 1]
  });
}; // Simplified deep clone for the purpose of cloning ExcalidrawElement.
//
// Only clones plain objects and arrays. Doesn't clone Date, RegExp, Map, Set,
// Typed arrays and other non-null objects.
//
// Adapted from https://github.com/lukeed/klona
//
// The reason for \`deepCopyElement()\` wrapper is type safety (only allow
// passing ExcalidrawElement as the top-level argument).

const _deepCopyElement = (val, depth = 0) => {
  // only clone non-primitives
  if (val == null || typeof val !== "object") {
    return val;
  }

  const objectType = Object.prototype.toString.call(val);

  if (objectType === "[object Object]") {
    const tmp = typeof val.constructor === "function" ? Object.create(Object.getPrototypeOf(val)) : {};

    for (const key in val) {
      if (val.hasOwnProperty(key)) {
        // don't copy non-serializable objects like these caches. They'll be
        // populated when the element is rendered.
        if (depth === 0 && (key === "shape" || key === "canvas")) {
          continue;
        }

        tmp[key] = _deepCopyElement(val[key], depth + 1);
      }
    }

    return tmp;
  }

  if (Array.isArray(val)) {
    let k = val.length;
    const arr = new Array(k);

    while (k--) {
      arr[k] = _deepCopyElement(val[k], depth + 1);
    }

    return arr;
  } // we're not cloning non-array & non-plain-object objects because we
  // don't support them on excalidraw elements yet. If we do, we need to make
  // sure we start cloning them, so let's warn about it.


  if (true) {
    if (objectType !== "[object Object]" && objectType !== "[object Array]" && objectType.startsWith("[object ")) {
      console.warn(\`_deepCloneElement: unexpected object type \${objectType}. This value will not be cloned!\`);
    }
  }

  return val;
};
/**
 * Clones ExcalidrawElement data structure. Does not regenerate id, nonce, or
 * any value. The purpose is to to break object references for immutability
 * reasons, whenever we want to keep the original element, but ensure it's not
 * mutated.
 *
 * Only clones plain objects and arrays. Doesn't clone Date, RegExp, Map, Set,
 * Typed arrays and other non-null objects.
 */


const deepCopyElement = val => {
  return _deepCopyElement(val);
};
/**
 * utility wrapper to generate new id. In test env it reuses the old + postfix
 * for test assertions.
 */

const regenerateId = (
/** supply null if no previous id exists */
previousId) => {
  var _a, _b;

  if ((0,_utils__WEBPACK_IMPORTED_MODULE_0__.isTestEnv)() && previousId) {
    let nextId = \`\${previousId}_copy\`; // \`window.h\` may not be defined in some unit tests

    if ((_b = (_a = window.h) === null || _a === void 0 ? void 0 : _a.app) === null || _b === void 0 ? void 0 : _b.getSceneElementsIncludingDeleted().find(el => el.id === nextId)) {
      nextId += "_copy";
    }

    return nextId;
  }

  return (0,_random__WEBPACK_IMPORTED_MODULE_1__.randomId)();
};
/**
 * Duplicate an element, often used in the alt-drag operation.
 * Note that this method has gotten a bit complicated since the
 * introduction of gruoping/ungrouping elements.
 * @param editingGroupId The current group being edited. The new
 *                       element will inherit this group and its
 *                       parents.
 * @param groupIdMapForOperation A Map that maps old group IDs to
 *                               duplicated ones. If you are duplicating
 *                               multiple elements at once, share this map
 *                               amongst all of them
 * @param element Element to duplicate
 * @param overrides Any element properties to override
 */

const duplicateElement = (editingGroupId, groupIdMapForOperation, element, overrides) => {
  let copy = deepCopyElement(element);
  copy.id = regenerateId(copy.id);
  copy.boundElements = null;
  copy.updated = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getUpdatedTimestamp)();
  copy.seed = (0,_random__WEBPACK_IMPORTED_MODULE_1__.randomInteger)();
  copy.groupIds = (0,_groups__WEBPACK_IMPORTED_MODULE_3__.getNewGroupIdsForDuplication)(copy.groupIds, editingGroupId, groupId => {
    if (!groupIdMapForOperation.has(groupId)) {
      groupIdMapForOperation.set(groupId, regenerateId(groupId));
    }

    return groupIdMapForOperation.get(groupId);
  });

  if (overrides) {
    copy = Object.assign(copy, overrides);
  }

  return copy;
};
/**
 * Clones elements, regenerating their ids (including bindings) and group ids.
 *
 * If bindings don't exist in the elements array, they are removed. Therefore,
 * it's advised to supply the whole elements array, or sets of elements that
 * are encapsulated (such as library items), if the purpose is to retain
 * bindings to the cloned elements intact.
 *
 * NOTE by default does not randomize or regenerate anything except the id.
 */

const duplicateElements = (elements, opts) => {
  const clonedElements = [];
  const origElementsMap = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.arrayToMap)(elements); // used for for migrating old ids to new ids

  const elementNewIdsMap = new Map();

  const maybeGetNewId = id => {
    // if we've already migrated the element id, return the new one directly
    if (elementNewIdsMap.has(id)) {
      return elementNewIdsMap.get(id);
    } // if we haven't migrated the element id, but an old element with the same
    // id exists, generate a new id for it and return it


    if (origElementsMap.has(id)) {
      const newId = regenerateId(id);
      elementNewIdsMap.set(id, newId);
      return newId;
    } // if old element doesn't exist, return null to mark it for removal


    return null;
  };

  const groupNewIdsMap = new Map();

  for (const element of elements) {
    const clonedElement = _deepCopyElement(element);

    clonedElement.id = maybeGetNewId(element.id);

    if (opts === null || opts === void 0 ? void 0 : opts.randomizeSeed) {
      clonedElement.seed = (0,_random__WEBPACK_IMPORTED_MODULE_1__.randomInteger)();
      (0,_mutateElement__WEBPACK_IMPORTED_MODULE_2__.bumpVersion)(clonedElement);
    }

    if (clonedElement.groupIds) {
      clonedElement.groupIds = clonedElement.groupIds.map(groupId => {
        if (!groupNewIdsMap.has(groupId)) {
          groupNewIdsMap.set(groupId, regenerateId(groupId));
        }

        return groupNewIdsMap.get(groupId);
      });
    }

    if ("containerId" in clonedElement && clonedElement.containerId) {
      const newContainerId = maybeGetNewId(clonedElement.containerId);
      clonedElement.containerId = newContainerId;
    }

    if ("boundElements" in clonedElement && clonedElement.boundElements) {
      clonedElement.boundElements = clonedElement.boundElements.reduce((acc, binding) => {
        const newBindingId = maybeGetNewId(binding.id);

        if (newBindingId) {
          acc.push(Object.assign(Object.assign({}, binding), {
            id: newBindingId
          }));
        }

        return acc;
      }, []);
    }

    if ("endBinding" in clonedElement && clonedElement.endBinding) {
      const newEndBindingId = maybeGetNewId(clonedElement.endBinding.elementId);
      clonedElement.endBinding = newEndBindingId ? Object.assign(Object.assign({}, clonedElement.endBinding), {
        elementId: newEndBindingId
      }) : null;
    }

    if ("startBinding" in clonedElement && clonedElement.startBinding) {
      const newEndBindingId = maybeGetNewId(clonedElement.startBinding.elementId);
      clonedElement.startBinding = newEndBindingId ? Object.assign(Object.assign({}, clonedElement.startBinding), {
        elementId: newEndBindingId
      }) : null;
    }

    if (clonedElement.frameId) {
      clonedElement.frameId = maybeGetNewId(clonedElement.frameId);
    }

    clonedElements.push(clonedElement);
  }

  return clonedElements;
};//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 25432 characters]
//# sourceURL=webpack-internal:///../../element/newElement.ts
`);
              }
            ),
            /***/
            "../../element/resizeElements.ts": (
              /*!***************************************!*\
                !*** ../../element/resizeElements.ts ***!
                \***************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "getResizeArrowDirection": () => (/* binding */ getResizeArrowDirection),
/* harmony export */   "getResizeOffsetXY": () => (/* binding */ getResizeOffsetXY),
/* harmony export */   "normalizeAngle": () => (/* binding */ normalizeAngle),
/* harmony export */   "resizeMultipleElements": () => (/* binding */ resizeMultipleElements),
/* harmony export */   "resizeSingleElement": () => (/* binding */ resizeSingleElement),
/* harmony export */   "transformElements": () => (/* binding */ transformElements)
/* harmony export */ });
/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../constants */ "../../constants.ts");
/* harmony import */ var _points__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../points */ "../../points.ts");
/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../math */ "../../math.ts");
/* harmony import */ var _bounds__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./bounds */ "../../element/bounds.ts");
/* harmony import */ var _typeChecks__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./typeChecks */ "../../element/typeChecks.ts");
/* harmony import */ var _mutateElement__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./mutateElement */ "../../element/mutateElement.ts");
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils */ "../../utils.ts");
/* harmony import */ var _binding__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./binding */ "../../element/binding.ts");
/* harmony import */ var _scene_Scene__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../scene/Scene */ "../../scene/Scene.ts");
/* harmony import */ var _textElement__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./textElement */ "../../element/textElement.ts");
/* harmony import */ var _linearElementEditor__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./linearElementEditor */ "../../element/linearElementEditor.ts");
var __rest = undefined && undefined.__rest || function (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;
};












const normalizeAngle = angle => {
  if (angle < 0) {
    return angle + 2 * Math.PI;
  }

  if (angle >= 2 * Math.PI) {
    return angle - 2 * Math.PI;
  }

  return angle;
}; // Returns true when transform (resizing/rotation) happened

const transformElements = (pointerDownState, transformHandleType, selectedElements, resizeArrowDirection, shouldRotateWithDiscreteAngle, shouldResizeFromCenter, shouldMaintainAspectRatio, pointerX, pointerY, centerX, centerY, appState) => {
  if (selectedElements.length === 1) {
    const [element] = selectedElements;

    if (transformHandleType === "rotation") {
      rotateSingleElement(element, pointerX, pointerY, shouldRotateWithDiscreteAngle, pointerDownState.originalElements);
      (0,_binding__WEBPACK_IMPORTED_MODULE_7__.updateBoundElements)(element);
    } else if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_4__.isTextElement)(element) && (transformHandleType === "nw" || transformHandleType === "ne" || transformHandleType === "sw" || transformHandleType === "se")) {
      resizeSingleTextElement(element, transformHandleType, shouldResizeFromCenter, pointerX, pointerY);
      (0,_binding__WEBPACK_IMPORTED_MODULE_7__.updateBoundElements)(element);
    } else if (transformHandleType) {
      resizeSingleElement(pointerDownState.originalElements, shouldMaintainAspectRatio, element, transformHandleType, shouldResizeFromCenter, pointerX, pointerY);
    }

    return true;
  } else if (selectedElements.length > 1) {
    if (transformHandleType === "rotation") {
      rotateMultipleElements(pointerDownState, selectedElements, pointerX, pointerY, shouldRotateWithDiscreteAngle, centerX, centerY);
      return true;
    } else if (transformHandleType === "nw" || transformHandleType === "ne" || transformHandleType === "sw" || transformHandleType === "se") {
      resizeMultipleElements(pointerDownState, selectedElements, transformHandleType, shouldResizeFromCenter, pointerX, pointerY);
      return true;
    }
  }

  return false;
};

const rotateSingleElement = (element, pointerX, pointerY, shouldRotateWithDiscreteAngle, originalElements) => {
  var _a;

  const [x1, y1, x2, y2] = (0,_bounds__WEBPACK_IMPORTED_MODULE_3__.getElementAbsoluteCoords)(element);
  const cx = (x1 + x2) / 2;
  const cy = (y1 + y2) / 2;
  let angle;

  if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_4__.isFrameElement)(element)) {
    angle = 0;
  } else {
    angle = 5 * Math.PI / 2 + Math.atan2(pointerY - cy, pointerX - cx);

    if (shouldRotateWithDiscreteAngle) {
      angle += _constants__WEBPACK_IMPORTED_MODULE_0__.SHIFT_LOCKING_ANGLE / 2;
      angle -= angle % _constants__WEBPACK_IMPORTED_MODULE_0__.SHIFT_LOCKING_ANGLE;
    }

    angle = normalizeAngle(angle);
  }

  const boundTextElementId = (0,_textElement__WEBPACK_IMPORTED_MODULE_9__.getBoundTextElementId)(element);
  (0,_mutateElement__WEBPACK_IMPORTED_MODULE_5__.mutateElement)(element, {
    angle
  });

  if (boundTextElementId) {
    const textElement = (_a = _scene_Scene__WEBPACK_IMPORTED_MODULE_8__["default"].getScene(element)) === null || _a === void 0 ? void 0 : _a.getElement(boundTextElementId);

    if (textElement && !(0,_typeChecks__WEBPACK_IMPORTED_MODULE_4__.isArrowElement)(element)) {
      (0,_mutateElement__WEBPACK_IMPORTED_MODULE_5__.mutateElement)(textElement, {
        angle
      });
    }
  }
};

const rescalePointsInElement = (element, width, height, normalizePoints) => (0,_typeChecks__WEBPACK_IMPORTED_MODULE_4__.isLinearElement)(element) || (0,_typeChecks__WEBPACK_IMPORTED_MODULE_4__.isFreeDrawElement)(element) ? {
  points: (0,_points__WEBPACK_IMPORTED_MODULE_1__.rescalePoints)(0, width, (0,_points__WEBPACK_IMPORTED_MODULE_1__.rescalePoints)(1, height, element.points, normalizePoints), normalizePoints)
} : {};

const measureFontSizeFromWidth = (element, nextWidth, nextHeight) => {
  // We only use width to scale font on resize
  let width = element.width;
  const hasContainer = (0,_typeChecks__WEBPACK_IMPORTED_MODULE_4__.isBoundToContainer)(element);

  if (hasContainer) {
    const container = (0,_textElement__WEBPACK_IMPORTED_MODULE_9__.getContainerElement)(element);

    if (container) {
      width = (0,_textElement__WEBPACK_IMPORTED_MODULE_9__.getBoundTextMaxWidth)(container);
    }
  }

  const nextFontSize = element.fontSize * (nextWidth / width);

  if (nextFontSize < _constants__WEBPACK_IMPORTED_MODULE_0__.MIN_FONT_SIZE) {
    return null;
  }

  const metrics = (0,_textElement__WEBPACK_IMPORTED_MODULE_9__.measureText)(element.text, (0,_utils__WEBPACK_IMPORTED_MODULE_6__.getFontString)({
    fontSize: nextFontSize,
    fontFamily: element.fontFamily
  }), element.lineHeight);
  return {
    size: nextFontSize,
    baseline: metrics.baseline + (nextHeight - metrics.height)
  };
};

const getSidesForTransformHandle = (transformHandleType, shouldResizeFromCenter) => {
  return {
    n: /^(n|ne|nw)$/.test(transformHandleType) || shouldResizeFromCenter && /^(s|se|sw)$/.test(transformHandleType),
    s: /^(s|se|sw)$/.test(transformHandleType) || shouldResizeFromCenter && /^(n|ne|nw)$/.test(transformHandleType),
    w: /^(w|nw|sw)$/.test(transformHandleType) || shouldResizeFromCenter && /^(e|ne|se)$/.test(transformHandleType),
    e: /^(e|ne|se)$/.test(transformHandleType) || shouldResizeFromCenter && /^(w|nw|sw)$/.test(transformHandleType)
  };
};

const resizeSingleTextElement = (element, transformHandleType, shouldResizeFromCenter, pointerX, pointerY) => {
  const [x1, y1, x2, y2] = (0,_bounds__WEBPACK_IMPORTED_MODULE_3__.getElementAbsoluteCoords)(element);
  const cx = (x1 + x2) / 2;
  const cy = (y1 + y2) / 2; // rotation pointer with reverse angle

  const [rotatedX, rotatedY] = (0,_math__WEBPACK_IMPORTED_MODULE_2__.rotate)(pointerX, pointerY, cx, cy, -element.angle);
  let scale;

  switch (transformHandleType) {
    case "se":
      scale = Math.max((rotatedX - x1) / (x2 - x1), (rotatedY - y1) / (y2 - y1));
      break;

    case "nw":
      scale = Math.max((x2 - rotatedX) / (x2 - x1), (y2 - rotatedY) / (y2 - y1));
      break;

    case "ne":
      scale = Math.max((rotatedX - x1) / (x2 - x1), (y2 - rotatedY) / (y2 - y1));
      break;

    case "sw":
      scale = Math.max((x2 - rotatedX) / (x2 - x1), (rotatedY - y1) / (y2 - y1));
      break;
  }

  if (scale > 0) {
    const nextWidth = element.width * scale;
    const nextHeight = element.height * scale;
    const metrics = measureFontSizeFromWidth(element, nextWidth, nextHeight);

    if (metrics === null) {
      return;
    }

    const [nextX1, nextY1, nextX2, nextY2] = (0,_bounds__WEBPACK_IMPORTED_MODULE_3__.getResizedElementAbsoluteCoords)(element, nextWidth, nextHeight, false);
    const deltaX1 = (x1 - nextX1) / 2;
    const deltaY1 = (y1 - nextY1) / 2;
    const deltaX2 = (x2 - nextX2) / 2;
    const deltaY2 = (y2 - nextY2) / 2;
    const [nextElementX, nextElementY] = (0,_math__WEBPACK_IMPORTED_MODULE_2__.adjustXYWithRotation)(getSidesForTransformHandle(transformHandleType, shouldResizeFromCenter), element.x, element.y, element.angle, deltaX1, deltaY1, deltaX2, deltaY2);
    (0,_mutateElement__WEBPACK_IMPORTED_MODULE_5__.mutateElement)(element, {
      fontSize: metrics.size,
      width: nextWidth,
      height: nextHeight,
      baseline: metrics.baseline,
      x: nextElementX,
      y: nextElementY
    });
  }
};

const resizeSingleElement = (originalElements, shouldMaintainAspectRatio, element, transformHandleDirection, shouldResizeFromCenter, pointerX, pointerY) => {
  const stateAtResizeStart = originalElements.get(element.id); // Gets bounds corners

  const [x1, y1, x2, y2] = (0,_bounds__WEBPACK_IMPORTED_MODULE_3__.getResizedElementAbsoluteCoords)(stateAtResizeStart, stateAtResizeStart.width, stateAtResizeStart.height, true);
  const startTopLeft = [x1, y1];
  const startBottomRight = [x2, y2];
  const startCenter = (0,_math__WEBPACK_IMPORTED_MODULE_2__.centerPoint)(startTopLeft, startBottomRight); // Calculate new dimensions based on cursor position

  const rotatedPointer = (0,_math__WEBPACK_IMPORTED_MODULE_2__.rotatePoint)([pointerX, pointerY], startCenter, -stateAtResizeStart.angle); // Get bounds corners rendered on screen

  const [esx1, esy1, esx2, esy2] = (0,_bounds__WEBPACK_IMPORTED_MODULE_3__.getResizedElementAbsoluteCoords)(element, element.width, element.height, true);
  const boundsCurrentWidth = esx2 - esx1;
  const boundsCurrentHeight = esy2 - esy1; // It's important we set the initial scale value based on the width and height at resize start,
  // otherwise previous dimensions affected by modifiers will be taken into account.

  const atStartBoundsWidth = startBottomRight[0] - startTopLeft[0];
  const atStartBoundsHeight = startBottomRight[1] - startTopLeft[1];
  let scaleX = atStartBoundsWidth / boundsCurrentWidth;
  let scaleY = atStartBoundsHeight / boundsCurrentHeight;
  let boundTextFont = {};
  const boundTextElement = (0,_textElement__WEBPACK_IMPORTED_MODULE_9__.getBoundTextElement)(element);

  if (transformHandleDirection.includes("e")) {
    scaleX = (rotatedPointer[0] - startTopLeft[0]) / boundsCurrentWidth;
  }

  if (transformHandleDirection.includes("s")) {
    scaleY = (rotatedPointer[1] - startTopLeft[1]) / boundsCurrentHeight;
  }

  if (transformHandleDirection.includes("w")) {
    scaleX = (startBottomRight[0] - rotatedPointer[0]) / boundsCurrentWidth;
  }

  if (transformHandleDirection.includes("n")) {
    scaleY = (startBottomRight[1] - rotatedPointer[1]) / boundsCurrentHeight;
  } // Linear elements dimensions differ from bounds dimensions


  const eleInitialWidth = stateAtResizeStart.width;
  const eleInitialHeight = stateAtResizeStart.height; // We have to use dimensions of element on screen, otherwise the scaling of the
  // dimensions won't match the cursor for linear elements.

  let eleNewWidth = element.width * scaleX;
  let eleNewHeight = element.height * scaleY; // adjust dimensions for resizing from center

  if (shouldResizeFromCenter) {
    eleNewWidth = 2 * eleNewWidth - eleInitialWidth;
    eleNewHeight = 2 * eleNewHeight - eleInitialHeight;
  } // adjust dimensions to keep sides ratio


  if (shouldMaintainAspectRatio) {
    const widthRatio = Math.abs(eleNewWidth) / eleInitialWidth;
    const heightRatio = Math.abs(eleNewHeight) / eleInitialHeight;

    if (transformHandleDirection.length === 1) {
      eleNewHeight *= widthRatio;
      eleNewWidth *= heightRatio;
    }

    if (transformHandleDirection.length === 2) {
      const ratio = Math.max(widthRatio, heightRatio);
      eleNewWidth = eleInitialWidth * ratio * Math.sign(eleNewWidth);
      eleNewHeight = eleInitialHeight * ratio * Math.sign(eleNewHeight);
    }
  }

  if (boundTextElement) {
    const stateOfBoundTextElementAtResize = originalElements.get(boundTextElement.id);

    if (stateOfBoundTextElementAtResize) {
      boundTextFont = {
        fontSize: stateOfBoundTextElementAtResize.fontSize,
        baseline: stateOfBoundTextElementAtResize.baseline
      };
    }

    if (shouldMaintainAspectRatio) {
      const updatedElement = Object.assign(Object.assign({}, element), {
        width: eleNewWidth,
        height: eleNewHeight
      });
      const nextFont = measureFontSizeFromWidth(boundTextElement, (0,_textElement__WEBPACK_IMPORTED_MODULE_9__.getBoundTextMaxWidth)(updatedElement), (0,_textElement__WEBPACK_IMPORTED_MODULE_9__.getBoundTextMaxHeight)(updatedElement, boundTextElement));

      if (nextFont === null) {
        return;
      }

      boundTextFont = {
        fontSize: nextFont.size,
        baseline: nextFont.baseline
      };
    } else {
      const minWidth = (0,_textElement__WEBPACK_IMPORTED_MODULE_9__.getApproxMinLineWidth)((0,_utils__WEBPACK_IMPORTED_MODULE_6__.getFontString)(boundTextElement), boundTextElement.lineHeight);
      const minHeight = (0,_textElement__WEBPACK_IMPORTED_MODULE_9__.getApproxMinLineHeight)(boundTextElement.fontSize, boundTextElement.lineHeight);
      eleNewWidth = Math.max(eleNewWidth, minWidth);
      eleNewHeight = Math.max(eleNewHeight, minHeight);
    }
  }

  const [newBoundsX1, newBoundsY1, newBoundsX2, newBoundsY2] = (0,_bounds__WEBPACK_IMPORTED_MODULE_3__.getResizedElementAbsoluteCoords)(stateAtResizeStart, eleNewWidth, eleNewHeight, true);
  const newBoundsWidth = newBoundsX2 - newBoundsX1;
  const newBoundsHeight = newBoundsY2 - newBoundsY1; // Calculate new topLeft based on fixed corner during resize

  let newTopLeft = [...startTopLeft];

  if (["n", "w", "nw"].includes(transformHandleDirection)) {
    newTopLeft = [startBottomRight[0] - Math.abs(newBoundsWidth), startBottomRight[1] - Math.abs(newBoundsHeight)];
  }

  if (transformHandleDirection === "ne") {
    const bottomLeft = [startTopLeft[0], startBottomRight[1]];
    newTopLeft = [bottomLeft[0], bottomLeft[1] - Math.abs(newBoundsHeight)];
  }

  if (transformHandleDirection === "sw") {
    const topRight = [startBottomRight[0], startTopLeft[1]];
    newTopLeft = [topRight[0] - Math.abs(newBoundsWidth), topRight[1]];
  } // Keeps opposite handle fixed during resize


  if (shouldMaintainAspectRatio) {
    if (["s", "n"].includes(transformHandleDirection)) {
      newTopLeft[0] = startCenter[0] - newBoundsWidth / 2;
    }

    if (["e", "w"].includes(transformHandleDirection)) {
      newTopLeft[1] = startCenter[1] - newBoundsHeight / 2;
    }
  }

  const flipX = eleNewWidth < 0;
  const flipY = eleNewHeight < 0; // Flip horizontally

  if (flipX) {
    if (transformHandleDirection.includes("e")) {
      newTopLeft[0] -= Math.abs(newBoundsWidth);
    }

    if (transformHandleDirection.includes("w")) {
      newTopLeft[0] += Math.abs(newBoundsWidth);
    }
  } // Flip vertically


  if (flipY) {
    if (transformHandleDirection.includes("s")) {
      newTopLeft[1] -= Math.abs(newBoundsHeight);
    }

    if (transformHandleDirection.includes("n")) {
      newTopLeft[1] += Math.abs(newBoundsHeight);
    }
  }

  if (shouldResizeFromCenter) {
    newTopLeft[0] = startCenter[0] - Math.abs(newBoundsWidth) / 2;
    newTopLeft[1] = startCenter[1] - Math.abs(newBoundsHeight) / 2;
  } // adjust topLeft to new rotation point


  const angle = stateAtResizeStart.angle;
  const rotatedTopLeft = (0,_math__WEBPACK_IMPORTED_MODULE_2__.rotatePoint)(newTopLeft, startCenter, angle);
  const newCenter = [newTopLeft[0] + Math.abs(newBoundsWidth) / 2, newTopLeft[1] + Math.abs(newBoundsHeight) / 2];
  const rotatedNewCenter = (0,_math__WEBPACK_IMPORTED_MODULE_2__.rotatePoint)(newCenter, startCenter, angle);
  newTopLeft = (0,_math__WEBPACK_IMPORTED_MODULE_2__.rotatePoint)(rotatedTopLeft, rotatedNewCenter, -angle); // For linear elements (x,y) are the coordinates of the first drawn point not the top-left corner
  // So we need to readjust (x,y) to be where the first point should be

  const newOrigin = [...newTopLeft];
  const linearElementXOffset = stateAtResizeStart.x - newBoundsX1;
  const linearElementYOffset = stateAtResizeStart.y - newBoundsY1;
  newOrigin[0] += linearElementXOffset;
  newOrigin[1] += linearElementYOffset;
  const nextX = newOrigin[0];
  const nextY = newOrigin[1]; // Readjust points for linear elements

  let rescaledElementPointsY;
  let rescaledPoints;

  if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_4__.isLinearElement)(element) || (0,_typeChecks__WEBPACK_IMPORTED_MODULE_4__.isFreeDrawElement)(element)) {
    rescaledElementPointsY = (0,_points__WEBPACK_IMPORTED_MODULE_1__.rescalePoints)(1, eleNewHeight, stateAtResizeStart.points, true);
    rescaledPoints = (0,_points__WEBPACK_IMPORTED_MODULE_1__.rescalePoints)(0, eleNewWidth, rescaledElementPointsY, true);
  }

  const resizedElement = {
    width: Math.abs(eleNewWidth),
    height: Math.abs(eleNewHeight),
    x: nextX,
    y: nextY,
    points: rescaledPoints
  };

  if ("scale" in element && "scale" in stateAtResizeStart) {
    (0,_mutateElement__WEBPACK_IMPORTED_MODULE_5__.mutateElement)(element, {
      scale: [// defaulting because scaleX/Y can be 0/-0
      (Math.sign(newBoundsX2 - stateAtResizeStart.x) || stateAtResizeStart.scale[0]) * stateAtResizeStart.scale[0], (Math.sign(newBoundsY2 - stateAtResizeStart.y) || stateAtResizeStart.scale[1]) * stateAtResizeStart.scale[1]]
    });
  }

  if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_4__.isArrowElement)(element) && boundTextElement && shouldMaintainAspectRatio) {
    const fontSize = resizedElement.width / element.width * boundTextElement.fontSize;

    if (fontSize < _constants__WEBPACK_IMPORTED_MODULE_0__.MIN_FONT_SIZE) {
      return;
    }

    boundTextFont.fontSize = fontSize;
  }

  if (resizedElement.width !== 0 && resizedElement.height !== 0 && Number.isFinite(resizedElement.x) && Number.isFinite(resizedElement.y)) {
    (0,_mutateElement__WEBPACK_IMPORTED_MODULE_5__.mutateElement)(element, resizedElement);
    (0,_binding__WEBPACK_IMPORTED_MODULE_7__.updateBoundElements)(element, {
      newSize: {
        width: resizedElement.width,
        height: resizedElement.height
      }
    });

    if (boundTextElement && boundTextFont != null) {
      (0,_mutateElement__WEBPACK_IMPORTED_MODULE_5__.mutateElement)(boundTextElement, {
        fontSize: boundTextFont.fontSize,
        baseline: boundTextFont.baseline
      });
    }

    (0,_textElement__WEBPACK_IMPORTED_MODULE_9__.handleBindTextResize)(element, transformHandleDirection, shouldMaintainAspectRatio);
  }
};
const resizeMultipleElements = (pointerDownState, selectedElements, transformHandleType, shouldResizeFromCenter, pointerX, pointerY) => {
  var _a, _b; // map selected elements to the original elements. While it never should
  // happen that pointerDownState.originalElements won't contain the selected
  // elements during resize, this coupling isn't guaranteed, so to ensure
  // type safety we need to transform only those elements we filter.


  const targetElements = selectedElements.reduce((acc, element) => {
    const origElement = pointerDownState.originalElements.get(element.id);

    if (origElement) {
      acc.push({
        orig: origElement,
        latest: element
      });
    }

    return acc;
  }, []); // getCommonBoundingBox() uses getBoundTextElement() which returns null for
  // original elements from pointerDownState, so we have to find and add these
  // bound text elements manually. Additionally, the coordinates of bound text
  // elements aren't always up to date.

  const boundTextElements = targetElements.reduce((acc, {
    orig
  }) => {
    var _a;

    if (!(0,_typeChecks__WEBPACK_IMPORTED_MODULE_4__.isLinearElement)(orig)) {
      return acc;
    }

    const textId = (0,_textElement__WEBPACK_IMPORTED_MODULE_9__.getBoundTextElementId)(orig);

    if (!textId) {
      return acc;
    }

    const text = (_a = pointerDownState.originalElements.get(textId)) !== null && _a !== void 0 ? _a : null;

    if (!(0,_typeChecks__WEBPACK_IMPORTED_MODULE_4__.isBoundToContainer)(text)) {
      return acc;
    }

    const xy = _linearElementEditor__WEBPACK_IMPORTED_MODULE_10__.LinearElementEditor.getBoundTextElementPosition(orig, text);
    return [...acc, Object.assign(Object.assign({}, text), xy)];
  }, []);
  const {
    minX,
    minY,
    maxX,
    maxY,
    midX,
    midY
  } = (0,_bounds__WEBPACK_IMPORTED_MODULE_3__.getCommonBoundingBox)(targetElements.map(({
    orig
  }) => orig).concat(boundTextElements)); // const originalHeight = maxY - minY;
  // const originalWidth = maxX - minX;

  const direction = transformHandleType;
  const mapDirectionsToAnchors = {
    ne: [minX, maxY],
    se: [minX, minY],
    sw: [maxX, minY],
    nw: [maxX, maxY]
  }; // anchor point must be on the opposite side of the dragged selection handle
  // or be the center of the selection if shouldResizeFromCenter

  const [anchorX, anchorY] = shouldResizeFromCenter ? [midX, midY] : mapDirectionsToAnchors[direction];
  const scale = Math.max(Math.abs(pointerX - anchorX) / (maxX - minX) || 0, Math.abs(pointerY - anchorY) / (maxY - minY) || 0) * (shouldResizeFromCenter ? 2 : 1);

  if (scale === 0) {
    return;
  }

  const mapDirectionsToPointerPositions = {
    ne: [pointerX >= anchorX, pointerY <= anchorY],
    se: [pointerX >= anchorX, pointerY >= anchorY],
    sw: [pointerX <= anchorX, pointerY >= anchorY],
    nw: [pointerX <= anchorX, pointerY <= anchorY]
  };
  /**
   * to flip an element:
   * 1. determine over which axis is the element being flipped
   *    (could be x, y, or both) indicated by \`flipFactorX\` & \`flipFactorY\`
   * 2. shift element's position by the amount of width or height (or both) or
   *    mirror points in the case of linear & freedraw elemenets
   * 3. adjust element angle
   */

  const [flipFactorX, flipFactorY] = mapDirectionsToPointerPositions[direction].map(condition => condition ? 1 : -1);
  const isFlippedByX = flipFactorX < 0;
  const isFlippedByY = flipFactorY < 0;
  const elementsAndUpdates = [];

  for (const {
    orig,
    latest
  } of targetElements) {
    // bounded text elements are updated along with their container elements
    if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_4__.isTextElement)(orig) && (0,_typeChecks__WEBPACK_IMPORTED_MODULE_4__.isBoundToContainer)(orig)) {
      continue;
    }

    const width = orig.width * scale;
    const height = orig.height * scale;
    const angle = normalizeAngle(orig.angle * flipFactorX * flipFactorY);
    const isLinearOrFreeDraw = (0,_typeChecks__WEBPACK_IMPORTED_MODULE_4__.isLinearElement)(orig) || (0,_typeChecks__WEBPACK_IMPORTED_MODULE_4__.isFreeDrawElement)(orig);
    const offsetX = orig.x - anchorX;
    const offsetY = orig.y - anchorY;
    const shiftX = isFlippedByX && !isLinearOrFreeDraw ? width : 0;
    const shiftY = isFlippedByY && !isLinearOrFreeDraw ? height : 0;
    const x = anchorX + flipFactorX * (offsetX * scale + shiftX);
    const y = anchorY + flipFactorY * (offsetY * scale + shiftY);
    const rescaledPoints = rescalePointsInElement(orig, width * flipFactorX, height * flipFactorY, false);
    const update = Object.assign({
      x,
      y,
      width,
      height,
      angle
    }, rescaledPoints);

    if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_4__.isImageElement)(orig) && targetElements.length === 1) {
      update.scale = [orig.scale[0] * flipFactorX, orig.scale[1] * flipFactorY];
    }

    if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_4__.isLinearElement)(orig) && (isFlippedByX || isFlippedByY)) {
      const origBounds = (0,_bounds__WEBPACK_IMPORTED_MODULE_3__.getElementPointsCoords)(orig, orig.points);
      const newBounds = (0,_bounds__WEBPACK_IMPORTED_MODULE_3__.getElementPointsCoords)(Object.assign(Object.assign({}, orig), {
        x,
        y
      }), rescaledPoints.points);
      const origXY = [orig.x, orig.y];
      const newXY = [x, y];

      const linearShift = axis => {
        const i = axis === "x" ? 0 : 1;
        return (newBounds[i + 2] - newXY[i] - (origXY[i] - origBounds[i]) * scale + (origBounds[i + 2] - origXY[i]) * scale - (newXY[i] - newBounds[i])) / 2;
      };

      if (isFlippedByX) {
        update.x -= linearShift("x");
      }

      if (isFlippedByY) {
        update.y -= linearShift("y");
      }
    }

    if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_4__.isTextElement)(orig)) {
      const metrics = measureFontSizeFromWidth(orig, width, height);

      if (!metrics) {
        return;
      }

      update.fontSize = metrics.size;
      update.baseline = metrics.baseline;
    }

    const boundTextElement = pointerDownState.originalElements.get((_a = (0,_textElement__WEBPACK_IMPORTED_MODULE_9__.getBoundTextElementId)(orig)) !== null && _a !== void 0 ? _a : "");

    if (boundTextElement) {
      const newFontSize = boundTextElement.fontSize * scale;

      if (newFontSize < _constants__WEBPACK_IMPORTED_MODULE_0__.MIN_FONT_SIZE) {
        return;
      }

      update.boundTextFontSize = newFontSize;
    }

    elementsAndUpdates.push({
      element: latest,
      update
    });
  }

  const elementsToUpdate = elementsAndUpdates.map(({
    element
  }) => element);

  for (let _c of elementsAndUpdates) {
    const {
      element
    } = _c,
          _d = _c.update,
          {
      boundTextFontSize
    } = _d,
          update = __rest(_d, ["boundTextFontSize"]);

    const {
      width,
      height,
      angle
    } = update;
    (0,_mutateElement__WEBPACK_IMPORTED_MODULE_5__.mutateElement)(element, update, false);
    (0,_binding__WEBPACK_IMPORTED_MODULE_7__.updateBoundElements)(element, {
      simultaneouslyUpdated: elementsToUpdate,
      newSize: {
        width,
        height
      }
    });
    const boundTextElement = (0,_textElement__WEBPACK_IMPORTED_MODULE_9__.getBoundTextElement)(element);

    if (boundTextElement && boundTextFontSize) {
      (0,_mutateElement__WEBPACK_IMPORTED_MODULE_5__.mutateElement)(boundTextElement, {
        fontSize: boundTextFontSize,
        angle: (0,_typeChecks__WEBPACK_IMPORTED_MODULE_4__.isLinearElement)(element) ? undefined : angle
      }, false);
      (0,_textElement__WEBPACK_IMPORTED_MODULE_9__.handleBindTextResize)(element, transformHandleType, true);
    }
  }

  (_b = _scene_Scene__WEBPACK_IMPORTED_MODULE_8__["default"].getScene(elementsAndUpdates[0].element)) === null || _b === void 0 ? void 0 : _b.informMutation();
};

const rotateMultipleElements = (pointerDownState, elements, pointerX, pointerY, shouldRotateWithDiscreteAngle, centerX, centerY) => {
  var _a;

  let centerAngle = 5 * Math.PI / 2 + Math.atan2(pointerY - centerY, pointerX - centerX);

  if (shouldRotateWithDiscreteAngle) {
    centerAngle += _constants__WEBPACK_IMPORTED_MODULE_0__.SHIFT_LOCKING_ANGLE / 2;
    centerAngle -= centerAngle % _constants__WEBPACK_IMPORTED_MODULE_0__.SHIFT_LOCKING_ANGLE;
  }

  elements.filter(element => element.type !== "frame").forEach(element => {
    var _a, _b;

    const [x1, y1, x2, y2] = (0,_bounds__WEBPACK_IMPORTED_MODULE_3__.getElementAbsoluteCoords)(element);
    const cx = (x1 + x2) / 2;
    const cy = (y1 + y2) / 2;
    const origAngle = (_b = (_a = pointerDownState.originalElements.get(element.id)) === null || _a === void 0 ? void 0 : _a.angle) !== null && _b !== void 0 ? _b : element.angle;
    const [rotatedCX, rotatedCY] = (0,_math__WEBPACK_IMPORTED_MODULE_2__.rotate)(cx, cy, centerX, centerY, centerAngle + origAngle - element.angle);
    (0,_mutateElement__WEBPACK_IMPORTED_MODULE_5__.mutateElement)(element, {
      x: element.x + (rotatedCX - cx),
      y: element.y + (rotatedCY - cy),
      angle: normalizeAngle(centerAngle + origAngle)
    }, false);
    (0,_binding__WEBPACK_IMPORTED_MODULE_7__.updateBoundElements)(element, {
      simultaneouslyUpdated: elements
    });
    const boundText = (0,_textElement__WEBPACK_IMPORTED_MODULE_9__.getBoundTextElement)(element);

    if (boundText && !(0,_typeChecks__WEBPACK_IMPORTED_MODULE_4__.isArrowElement)(element)) {
      (0,_mutateElement__WEBPACK_IMPORTED_MODULE_5__.mutateElement)(boundText, {
        x: boundText.x + (rotatedCX - cx),
        y: boundText.y + (rotatedCY - cy),
        angle: normalizeAngle(centerAngle + origAngle)
      }, false);
    }
  });
  (_a = _scene_Scene__WEBPACK_IMPORTED_MODULE_8__["default"].getScene(elements[0])) === null || _a === void 0 ? void 0 : _a.informMutation();
};

const getResizeOffsetXY = (transformHandleType, selectedElements, x, y) => {
  const [x1, y1, x2, y2] = selectedElements.length === 1 ? (0,_bounds__WEBPACK_IMPORTED_MODULE_3__.getElementAbsoluteCoords)(selectedElements[0]) : (0,_bounds__WEBPACK_IMPORTED_MODULE_3__.getCommonBounds)(selectedElements);
  const cx = (x1 + x2) / 2;
  const cy = (y1 + y2) / 2;
  const angle = selectedElements.length === 1 ? selectedElements[0].angle : 0;
  [x, y] = (0,_math__WEBPACK_IMPORTED_MODULE_2__.rotate)(x, y, cx, cy, -angle);

  switch (transformHandleType) {
    case "n":
      return (0,_math__WEBPACK_IMPORTED_MODULE_2__.rotate)(x - (x1 + x2) / 2, y - y1, 0, 0, angle);

    case "s":
      return (0,_math__WEBPACK_IMPORTED_MODULE_2__.rotate)(x - (x1 + x2) / 2, y - y2, 0, 0, angle);

    case "w":
      return (0,_math__WEBPACK_IMPORTED_MODULE_2__.rotate)(x - x1, y - (y1 + y2) / 2, 0, 0, angle);

    case "e":
      return (0,_math__WEBPACK_IMPORTED_MODULE_2__.rotate)(x - x2, y - (y1 + y2) / 2, 0, 0, angle);

    case "nw":
      return (0,_math__WEBPACK_IMPORTED_MODULE_2__.rotate)(x - x1, y - y1, 0, 0, angle);

    case "ne":
      return (0,_math__WEBPACK_IMPORTED_MODULE_2__.rotate)(x - x2, y - y1, 0, 0, angle);

    case "sw":
      return (0,_math__WEBPACK_IMPORTED_MODULE_2__.rotate)(x - x1, y - y2, 0, 0, angle);

    case "se":
      return (0,_math__WEBPACK_IMPORTED_MODULE_2__.rotate)(x - x2, y - y2, 0, 0, angle);

    default:
      return [0, 0];
  }
};
const getResizeArrowDirection = (transformHandleType, element) => {
  const [, [px, py]] = element.points;
  const isResizeEnd = transformHandleType === "nw" && (px < 0 || py < 0) || transformHandleType === "ne" && px >= 0 || transformHandleType === "sw" && px <= 0 || transformHandleType === "se" && (px > 0 || py > 0);
  return isResizeEnd ? "end" : "origin";
};//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 42768 characters]
//# sourceURL=webpack-internal:///../../element/resizeElements.ts
`);
              }
            ),
            /***/
            "../../element/resizeTest.ts": (
              /*!***********************************!*\
                !*** ../../element/resizeTest.ts ***!
                \***********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "getCursorForResizingElement": () => (/* binding */ getCursorForResizingElement),\n/* harmony export */   "getElementWithTransformHandleType": () => (/* binding */ getElementWithTransformHandleType),\n/* harmony export */   "getTransformHandleTypeFromCoords": () => (/* binding */ getTransformHandleTypeFromCoords),\n/* harmony export */   "resizeTest": () => (/* binding */ resizeTest)\n/* harmony export */ });\n/* harmony import */ var _transformHandles__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./transformHandles */ "../../element/transformHandles.ts");\nvar __rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n\n  if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\nconst isInsideTransformHandle = (transformHandle, x, y) => x >= transformHandle[0] && x <= transformHandle[0] + transformHandle[2] && y >= transformHandle[1] && y <= transformHandle[1] + transformHandle[3];\n\nconst resizeTest = (element, appState, x, y, zoom, pointerType) => {\n  if (!appState.selectedElementIds[element.id]) {\n    return false;\n  }\n\n  const _a = (0,_transformHandles__WEBPACK_IMPORTED_MODULE_0__.getTransformHandles)(element, zoom, pointerType),\n        {\n    rotation: rotationTransformHandle\n  } = _a,\n        transformHandles = __rest(_a, ["rotation"]);\n\n  if (rotationTransformHandle && isInsideTransformHandle(rotationTransformHandle, x, y)) {\n    return "rotation";\n  }\n\n  const filter = Object.keys(transformHandles).filter(key => {\n    const transformHandle = transformHandles[key];\n\n    if (!transformHandle) {\n      return false;\n    }\n\n    return isInsideTransformHandle(transformHandle, x, y);\n  });\n\n  if (filter.length > 0) {\n    return filter[0];\n  }\n\n  return false;\n};\nconst getElementWithTransformHandleType = (elements, appState, scenePointerX, scenePointerY, zoom, pointerType) => {\n  return elements.reduce((result, element) => {\n    if (result) {\n      return result;\n    }\n\n    const transformHandleType = resizeTest(element, appState, scenePointerX, scenePointerY, zoom, pointerType);\n    return transformHandleType ? {\n      element,\n      transformHandleType\n    } : null;\n  }, null);\n};\nconst getTransformHandleTypeFromCoords = ([x1, y1, x2, y2], scenePointerX, scenePointerY, zoom, pointerType) => {\n  const transformHandles = (0,_transformHandles__WEBPACK_IMPORTED_MODULE_0__.getTransformHandlesFromCoords)([x1, y1, x2, y2, (x1 + x2) / 2, (y1 + y2) / 2], 0, zoom, pointerType, _transformHandles__WEBPACK_IMPORTED_MODULE_0__.OMIT_SIDES_FOR_MULTIPLE_ELEMENTS);\n  const found = Object.keys(transformHandles).find(key => {\n    const transformHandle = transformHandles[key];\n    return transformHandle && isInsideTransformHandle(transformHandle, scenePointerX, scenePointerY);\n  });\n  return found || false;\n};\nconst RESIZE_CURSORS = ["ns", "nesw", "ew", "nwse"];\n\nconst rotateResizeCursor = (cursor, angle) => {\n  const index = RESIZE_CURSORS.indexOf(cursor);\n\n  if (index >= 0) {\n    const a = Math.round(angle / (Math.PI / 4));\n    cursor = RESIZE_CURSORS[(index + a) % RESIZE_CURSORS.length];\n  }\n\n  return cursor;\n};\n/*\n * Returns bi-directional cursor for the element being resized\n */\n\n\nconst getCursorForResizingElement = resizingElement => {\n  const {\n    element,\n    transformHandleType\n  } = resizingElement;\n  const shouldSwapCursors = element && Math.sign(element.height) * Math.sign(element.width) === -1;\n  let cursor = null;\n\n  switch (transformHandleType) {\n    case "n":\n    case "s":\n      cursor = "ns";\n      break;\n\n    case "w":\n    case "e":\n      cursor = "ew";\n      break;\n\n    case "nw":\n    case "se":\n      if (shouldSwapCursors) {\n        cursor = "nesw";\n      } else {\n        cursor = "nwse";\n      }\n\n      break;\n\n    case "ne":\n    case "sw":\n      if (shouldSwapCursors) {\n        cursor = "nwse";\n      } else {\n        cursor = "nesw";\n      }\n\n      break;\n\n    case "rotation":\n      return "grab";\n  }\n\n  if (cursor && element) {\n    cursor = rotateResizeCursor(cursor, element.angle);\n  }\n\n  return cursor ? `${cursor}-resize` : "";\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6420 characters]\n//# sourceURL=webpack-internal:///../../element/resizeTest.ts\n');
              }
            ),
            /***/
            "../../element/showSelectedShapeActions.ts": (
              /*!*************************************************!*\
                !*** ../../element/showSelectedShapeActions.ts ***!
                \*************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "showSelectedShapeActions": () => (/* binding */ showSelectedShapeActions)\n/* harmony export */ });\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../scene */ "../../scene/index.ts");\n\nconst showSelectedShapeActions = (appState, elements) => Boolean(!appState.viewModeEnabled && (appState.activeTool.type !== "custom" && (appState.editingElement || appState.activeTool.type !== "selection" && appState.activeTool.type !== "eraser" && appState.activeTool.type !== "hand" && appState.activeTool.type !== "laser") || (0,_scene__WEBPACK_IMPORTED_MODULE_0__.getSelectedElements)(elements, appState).length));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZWxlbWVudC9zaG93U2VsZWN0ZWRTaGFwZUFjdGlvbnMudHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBK0M7QUFDeEMseVVBQXlVLDJEQUFtQiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9lbGVtZW50L3Nob3dTZWxlY3RlZFNoYXBlQWN0aW9ucy50cz9iMDk1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldFNlbGVjdGVkRWxlbWVudHMgfSBmcm9tIFwiLi4vc2NlbmVcIjtcbmV4cG9ydCBjb25zdCBzaG93U2VsZWN0ZWRTaGFwZUFjdGlvbnMgPSAoYXBwU3RhdGUsIGVsZW1lbnRzKSA9PiBCb29sZWFuKCFhcHBTdGF0ZS52aWV3TW9kZUVuYWJsZWQgJiYgKGFwcFN0YXRlLmFjdGl2ZVRvb2wudHlwZSAhPT0gXCJjdXN0b21cIiAmJiAoYXBwU3RhdGUuZWRpdGluZ0VsZW1lbnQgfHwgYXBwU3RhdGUuYWN0aXZlVG9vbC50eXBlICE9PSBcInNlbGVjdGlvblwiICYmIGFwcFN0YXRlLmFjdGl2ZVRvb2wudHlwZSAhPT0gXCJlcmFzZXJcIiAmJiBhcHBTdGF0ZS5hY3RpdmVUb29sLnR5cGUgIT09IFwiaGFuZFwiICYmIGFwcFN0YXRlLmFjdGl2ZVRvb2wudHlwZSAhPT0gXCJsYXNlclwiKSB8fCBnZXRTZWxlY3RlZEVsZW1lbnRzKGVsZW1lbnRzLCBhcHBTdGF0ZSkubGVuZ3RoKSk7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../element/showSelectedShapeActions.ts\n');
              }
            ),
            /***/
            "../../element/sizeHelpers.ts": (
              /*!************************************!*\
                !*** ../../element/sizeHelpers.ts ***!
                \************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "getLockedLinearCursorAlignSize": () => (/* binding */ getLockedLinearCursorAlignSize),\n/* harmony export */   "getNormalizedDimensions": () => (/* binding */ getNormalizedDimensions),\n/* harmony export */   "getPerfectElementSize": () => (/* binding */ getPerfectElementSize),\n/* harmony export */   "isElementInViewport": () => (/* binding */ isElementInViewport),\n/* harmony export */   "isInvisiblySmallElement": () => (/* binding */ isInvisiblySmallElement),\n/* harmony export */   "resizePerfectLineForNWHandler": () => (/* binding */ resizePerfectLineForNWHandler)\n/* harmony export */ });\n/* harmony import */ var _mutateElement__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./mutateElement */ "../../element/mutateElement.ts");\n/* harmony import */ var _typeChecks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _bounds__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./bounds */ "../../element/bounds.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n\n\n\n\n\nconst isInvisiblySmallElement = element => {\n  if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isLinearElement)(element) || (0,_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isFreeDrawElement)(element)) {\n    return element.points.length < 2;\n  }\n\n  return element.width === 0 && element.height === 0;\n};\nconst isElementInViewport = (element, width, height, viewTransformations) => {\n  const [x1, y1, x2, y2] = (0,_bounds__WEBPACK_IMPORTED_MODULE_3__.getElementBounds)(element); // scene coordinates\n\n  const topLeftSceneCoords = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.viewportCoordsToSceneCoords)({\n    clientX: viewTransformations.offsetLeft,\n    clientY: viewTransformations.offsetTop\n  }, viewTransformations);\n  const bottomRightSceneCoords = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.viewportCoordsToSceneCoords)({\n    clientX: viewTransformations.offsetLeft + width,\n    clientY: viewTransformations.offsetTop + height\n  }, viewTransformations);\n  return topLeftSceneCoords.x <= x2 && topLeftSceneCoords.y <= y2 && bottomRightSceneCoords.x >= x1 && bottomRightSceneCoords.y >= y1;\n};\n/**\n * Makes a perfect shape or diagonal/horizontal/vertical line\n */\n\nconst getPerfectElementSize = (elementType, width, height) => {\n  const absWidth = Math.abs(width);\n  const absHeight = Math.abs(height);\n\n  if (elementType === "line" || elementType === "arrow" || elementType === "freedraw") {\n    const lockedAngle = Math.round(Math.atan(absHeight / absWidth) / _constants__WEBPACK_IMPORTED_MODULE_2__.SHIFT_LOCKING_ANGLE) * _constants__WEBPACK_IMPORTED_MODULE_2__.SHIFT_LOCKING_ANGLE;\n\n    if (lockedAngle === 0) {\n      height = 0;\n    } else if (lockedAngle === Math.PI / 2) {\n      width = 0;\n    } else {\n      height = absWidth * Math.tan(lockedAngle) * Math.sign(height) || height;\n    }\n  } else if (elementType !== "selection") {\n    height = absWidth * Math.sign(height);\n  }\n\n  return {\n    width,\n    height\n  };\n};\nconst getLockedLinearCursorAlignSize = (originX, originY, x, y) => {\n  let width = x - originX;\n  let height = y - originY;\n  const lockedAngle = Math.round(Math.atan(height / width) / _constants__WEBPACK_IMPORTED_MODULE_2__.SHIFT_LOCKING_ANGLE) * _constants__WEBPACK_IMPORTED_MODULE_2__.SHIFT_LOCKING_ANGLE;\n\n  if (lockedAngle === 0) {\n    height = 0;\n  } else if (lockedAngle === Math.PI / 2) {\n    width = 0;\n  } else {\n    // locked angle line, y = mx + b => mx - y + b = 0\n    const a1 = Math.tan(lockedAngle);\n    const b1 = -1;\n    const c1 = originY - a1 * originX; // line through cursor, perpendicular to locked angle line\n\n    const a2 = -1 / a1;\n    const b2 = -1;\n    const c2 = y - a2 * x; // intersection of the two lines above\n\n    const intersectX = (b1 * c2 - b2 * c1) / (a1 * b2 - a2 * b1);\n    const intersectY = (c1 * a2 - c2 * a1) / (a1 * b2 - a2 * b1); // delta\n\n    width = intersectX - originX;\n    height = intersectY - originY;\n  }\n\n  return {\n    width,\n    height\n  };\n};\nconst resizePerfectLineForNWHandler = (element, x, y) => {\n  const anchorX = element.x + element.width;\n  const anchorY = element.y + element.height;\n  const distanceToAnchorX = x - anchorX;\n  const distanceToAnchorY = y - anchorY;\n\n  if (Math.abs(distanceToAnchorX) < Math.abs(distanceToAnchorY) / 2) {\n    (0,_mutateElement__WEBPACK_IMPORTED_MODULE_0__.mutateElement)(element, {\n      x: anchorX,\n      width: 0,\n      y,\n      height: -distanceToAnchorY\n    });\n  } else if (Math.abs(distanceToAnchorY) < Math.abs(element.width) / 2) {\n    (0,_mutateElement__WEBPACK_IMPORTED_MODULE_0__.mutateElement)(element, {\n      y: anchorY,\n      height: 0\n    });\n  } else {\n    const nextHeight = Math.sign(distanceToAnchorY) * Math.sign(distanceToAnchorX) * element.width;\n    (0,_mutateElement__WEBPACK_IMPORTED_MODULE_0__.mutateElement)(element, {\n      x,\n      y: anchorY - nextHeight,\n      width: -distanceToAnchorX,\n      height: nextHeight\n    });\n  }\n};\nconst getNormalizedDimensions = element => {\n  const ret = {\n    width: element.width,\n    height: element.height,\n    x: element.x,\n    y: element.y\n  };\n\n  if (element.width < 0) {\n    const nextWidth = Math.abs(element.width);\n    ret.width = nextWidth;\n    ret.x = element.x - nextWidth;\n  }\n\n  if (element.height < 0) {\n    const nextHeight = Math.abs(element.height);\n    ret.height = nextHeight;\n    ret.y = element.y - nextHeight;\n  }\n\n  return ret;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 7104 characters]\n//# sourceURL=webpack-internal:///../../element/sizeHelpers.ts\n');
              }
            ),
            /***/
            "../../element/sortElements.ts": (
              /*!*************************************!*\
                !*** ../../element/sortElements.ts ***!
                \*************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "normalizeElementOrder": () => (/* binding */ normalizeElementOrder)
/* harmony export */ });
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils */ "../../utils.ts");


const normalizeGroupElementOrder = elements => {
  const origElements = elements.slice();
  const sortedElements = new Set();

  const orderInnerGroups = elements => {
    var _a, _b, _c;

    const firstGroupSig = (_b = (_a = elements[0]) === null || _a === void 0 ? void 0 : _a.groupIds) === null || _b === void 0 ? void 0 : _b.join("");
    const aGroup = [elements[0]];
    const bGroup = [];

    for (const element of elements.slice(1)) {
      if (((_c = element.groupIds) === null || _c === void 0 ? void 0 : _c.join("")) === firstGroupSig) {
        aGroup.push(element);
      } else {
        bGroup.push(element);
      }
    }

    return bGroup.length ? [...aGroup, ...orderInnerGroups(bGroup)] : aGroup;
  };

  const groupHandledElements = new Map();
  origElements.forEach((element, idx) => {
    var _a;

    if (groupHandledElements.has(element.id)) {
      return;
    }

    if ((_a = element.groupIds) === null || _a === void 0 ? void 0 : _a.length) {
      const topGroup = element.groupIds[element.groupIds.length - 1];
      const groupElements = origElements.slice(idx).filter(element => {
        var _a;

        const ret = (_a = element === null || element === void 0 ? void 0 : element.groupIds) === null || _a === void 0 ? void 0 : _a.some(id => id === topGroup);

        if (ret) {
          groupHandledElements.set(element.id, true);
        }

        return ret;
      });

      for (const elem of orderInnerGroups(groupElements)) {
        sortedElements.add(elem);
      }
    } else {
      sortedElements.add(element);
    }
  }); // if there's a bug which resulted in losing some of the elements, return
  // original instead as that's better than losing data

  if (sortedElements.size !== elements.length) {
    console.error("normalizeGroupElementOrder: lost some elements... bailing!");
    return elements;
  }

  return [...sortedElements];
};
/**
 * In theory, when we have text elements bound to a container, they
 * should be right after the container element in the elements array.
 * However, this is not guaranteed due to old and potential future bugs.
 *
 * This function sorts containers and their bound texts together. It prefers
 * original z-index of container (i.e. it moves bound text elements after
 * containers).
 */


const normalizeBoundElementsOrder = elements => {
  const elementsMap = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.arrayToMapWithIndex)(elements);
  const origElements = elements.slice();
  const sortedElements = new Set();
  origElements.forEach((element, idx) => {
    var _a, _b;

    if (!element) {
      return;
    }

    if ((_a = element.boundElements) === null || _a === void 0 ? void 0 : _a.length) {
      sortedElements.add(element);
      origElements[idx] = null;
      element.boundElements.forEach(boundElement => {
        const child = elementsMap.get(boundElement.id);

        if (child && boundElement.type === "text") {
          sortedElements.add(child[0]);
          origElements[child[1]] = null;
        }
      });
    } else if (element.type === "text" && element.containerId) {
      const parent = elementsMap.get(element.containerId);

      if (!((_b = parent === null || parent === void 0 ? void 0 : parent[0].boundElements) === null || _b === void 0 ? void 0 : _b.find(x => x.id === element.id))) {
        sortedElements.add(element);
        origElements[idx] = null; // if element has a container and container lists it, skip this element
        // as it'll be taken care of by the container
      }
    } else {
      sortedElements.add(element);
      origElements[idx] = null;
    }
  }); // if there's a bug which resulted in losing some of the elements, return
  // original instead as that's better than losing data

  if (sortedElements.size !== elements.length) {
    console.error("normalizeBoundElementsOrder: lost some elements... bailing!");
    return elements;
  }

  return [...sortedElements];
};

const normalizeElementOrder = elements => {
  // console.time();
  const ret = normalizeBoundElementsOrder(normalizeGroupElementOrder(elements)); // console.timeEnd();

  return ret;
};//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6752 characters]
//# sourceURL=webpack-internal:///../../element/sortElements.ts
`);
              }
            ),
            /***/
            "../../element/textElement.ts": (
              /*!************************************!*\
                !*** ../../element/textElement.ts ***!
                \************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "bindTextToShapeAfterDuplication": () => (/* binding */ bindTextToShapeAfterDuplication),
/* harmony export */   "charWidth": () => (/* binding */ charWidth),
/* harmony export */   "computeBoundTextPosition": () => (/* binding */ computeBoundTextPosition),
/* harmony export */   "computeContainerDimensionForBoundText": () => (/* binding */ computeContainerDimensionForBoundText),
/* harmony export */   "detectLineHeight": () => (/* binding */ detectLineHeight),
/* harmony export */   "getApproxCharsToFitInWidth": () => (/* binding */ getApproxCharsToFitInWidth),
/* harmony export */   "getApproxMinLineHeight": () => (/* binding */ getApproxMinLineHeight),
/* harmony export */   "getApproxMinLineWidth": () => (/* binding */ getApproxMinLineWidth),
/* harmony export */   "getBoundTextElement": () => (/* binding */ getBoundTextElement),
/* harmony export */   "getBoundTextElementId": () => (/* binding */ getBoundTextElementId),
/* harmony export */   "getBoundTextElementOffset": () => (/* binding */ getBoundTextElementOffset),
/* harmony export */   "getBoundTextElementPosition": () => (/* binding */ getBoundTextElementPosition),
/* harmony export */   "getBoundTextMaxHeight": () => (/* binding */ getBoundTextMaxHeight),
/* harmony export */   "getBoundTextMaxWidth": () => (/* binding */ getBoundTextMaxWidth),
/* harmony export */   "getContainerCenter": () => (/* binding */ getContainerCenter),
/* harmony export */   "getContainerCoords": () => (/* binding */ getContainerCoords),
/* harmony export */   "getContainerElement": () => (/* binding */ getContainerElement),
/* harmony export */   "getDefaultLineHeight": () => (/* binding */ getDefaultLineHeight),
/* harmony export */   "getLineHeightInPx": () => (/* binding */ getLineHeightInPx),
/* harmony export */   "getMaxCharWidth": () => (/* binding */ getMaxCharWidth),
/* harmony export */   "getMinCharWidth": () => (/* binding */ getMinCharWidth),
/* harmony export */   "getTextBindableContainerAtPosition": () => (/* binding */ getTextBindableContainerAtPosition),
/* harmony export */   "getTextElementAngle": () => (/* binding */ getTextElementAngle),
/* harmony export */   "getTextHeight": () => (/* binding */ getTextHeight),
/* harmony export */   "getTextWidth": () => (/* binding */ getTextWidth),
/* harmony export */   "handleBindTextResize": () => (/* binding */ handleBindTextResize),
/* harmony export */   "isMeasureTextSupported": () => (/* binding */ isMeasureTextSupported),
/* harmony export */   "isValidTextContainer": () => (/* binding */ isValidTextContainer),
/* harmony export */   "measureBaseline": () => (/* binding */ measureBaseline),
/* harmony export */   "measureText": () => (/* binding */ measureText),
/* harmony export */   "normalizeText": () => (/* binding */ normalizeText),
/* harmony export */   "parseTokens": () => (/* binding */ parseTokens),
/* harmony export */   "redrawTextBoundingBox": () => (/* binding */ redrawTextBoundingBox),
/* harmony export */   "shouldAllowVerticalAlign": () => (/* binding */ shouldAllowVerticalAlign),
/* harmony export */   "splitIntoLines": () => (/* binding */ splitIntoLines),
/* harmony export */   "suppportsHorizontalAlign": () => (/* binding */ suppportsHorizontalAlign),
/* harmony export */   "wrapText": () => (/* binding */ wrapText)
/* harmony export */ });
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils */ "../../utils.ts");
/* harmony import */ var _mutateElement__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mutateElement */ "../../element/mutateElement.ts");
/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constants */ "../../constants.ts");
/* harmony import */ var _scene_Scene__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../scene/Scene */ "../../scene/Scene.ts");
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../element */ "../../element/index.ts");
/* harmony import */ var _typeChecks__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./typeChecks */ "../../element/typeChecks.ts");
/* harmony import */ var _linearElementEditor__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./linearElementEditor */ "../../element/linearElementEditor.ts");
/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../scene */ "../../scene/index.ts");
/* harmony import */ var _collision__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./collision */ "../../element/collision.ts");
/* harmony import */ var _textWysiwyg__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./textWysiwyg */ "../../element/textWysiwyg.tsx");












const normalizeText = text => {
  return text // replace tabs with spaces so they render and measure correctly
  .replace(/\\t/g, "        ") // normalize newlines
  .replace(/\\r?\\n|\\r/g, "\\n");
};
const splitIntoLines = text => {
  return normalizeText(text).split("\\n");
};
const redrawTextBoundingBox = (textElement, container) => {
  let maxWidth = undefined;
  const boundTextUpdates = {
    x: textElement.x,
    y: textElement.y,
    text: textElement.text,
    width: textElement.width,
    height: textElement.height,
    baseline: textElement.baseline
  };
  boundTextUpdates.text = textElement.text;

  if (container) {
    maxWidth = getBoundTextMaxWidth(container, textElement);
    boundTextUpdates.text = wrapText(textElement.originalText, (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getFontString)(textElement), maxWidth);
  }

  const metrics = measureText(boundTextUpdates.text, (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getFontString)(textElement), textElement.lineHeight);
  boundTextUpdates.width = metrics.width;
  boundTextUpdates.height = metrics.height;
  boundTextUpdates.baseline = metrics.baseline;

  if (container) {
    const maxContainerHeight = getBoundTextMaxHeight(container, textElement);
    const maxContainerWidth = getBoundTextMaxWidth(container);

    if (!(0,_typeChecks__WEBPACK_IMPORTED_MODULE_5__.isArrowElement)(container) && metrics.height > maxContainerHeight) {
      const nextHeight = computeContainerDimensionForBoundText(metrics.height, container.type);
      (0,_mutateElement__WEBPACK_IMPORTED_MODULE_1__.mutateElement)(container, {
        height: nextHeight
      });
      (0,_textWysiwyg__WEBPACK_IMPORTED_MODULE_9__.updateOriginalContainerCache)(container.id, nextHeight);
    }

    if (metrics.width > maxContainerWidth) {
      const nextWidth = computeContainerDimensionForBoundText(metrics.width, container.type);
      (0,_mutateElement__WEBPACK_IMPORTED_MODULE_1__.mutateElement)(container, {
        width: nextWidth
      });
    }

    const updatedTextElement = Object.assign(Object.assign({}, textElement), boundTextUpdates);
    const {
      x,
      y
    } = computeBoundTextPosition(container, updatedTextElement);
    boundTextUpdates.x = x;
    boundTextUpdates.y = y;
  }

  (0,_mutateElement__WEBPACK_IMPORTED_MODULE_1__.mutateElement)(textElement, boundTextUpdates);
};
const bindTextToShapeAfterDuplication = (sceneElements, oldElements, oldIdToDuplicatedId) => {
  const sceneElementMap = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.arrayToMap)(sceneElements);
  oldElements.forEach(element => {
    const newElementId = oldIdToDuplicatedId.get(element.id);
    const boundTextElementId = getBoundTextElementId(element);

    if (boundTextElementId) {
      const newTextElementId = oldIdToDuplicatedId.get(boundTextElementId);

      if (newTextElementId) {
        const newContainer = sceneElementMap.get(newElementId);

        if (newContainer) {
          (0,_mutateElement__WEBPACK_IMPORTED_MODULE_1__.mutateElement)(newContainer, {
            boundElements: (element.boundElements || []).filter(boundElement => boundElement.id !== newTextElementId && boundElement.id !== boundTextElementId).concat({
              type: "text",
              id: newTextElementId
            })
          });
        }

        const newTextElement = sceneElementMap.get(newTextElementId);

        if (newTextElement && (0,___WEBPACK_IMPORTED_MODULE_4__.isTextElement)(newTextElement)) {
          (0,_mutateElement__WEBPACK_IMPORTED_MODULE_1__.mutateElement)(newTextElement, {
            containerId: newContainer ? newElementId : null
          });
        }
      }
    }
  });
};
const handleBindTextResize = (container, transformHandleType, shouldMaintainAspectRatio = false) => {
  const boundTextElementId = getBoundTextElementId(container);

  if (!boundTextElementId) {
    return;
  }

  (0,_textWysiwyg__WEBPACK_IMPORTED_MODULE_9__.resetOriginalContainerCache)(container.id);
  let textElement = _scene_Scene__WEBPACK_IMPORTED_MODULE_3__["default"].getScene(container).getElement(boundTextElementId);

  if (textElement && textElement.text) {
    if (!container) {
      return;
    }

    textElement = _scene_Scene__WEBPACK_IMPORTED_MODULE_3__["default"].getScene(container).getElement(boundTextElementId);
    let text = textElement.text;
    let nextHeight = textElement.height;
    let nextWidth = textElement.width;
    const maxWidth = getBoundTextMaxWidth(container);
    const maxHeight = getBoundTextMaxHeight(container, textElement);
    let containerHeight = container.height;
    let nextBaseLine = textElement.baseline;

    if (shouldMaintainAspectRatio || transformHandleType !== "n" && transformHandleType !== "s") {
      if (text) {
        text = wrapText(textElement.originalText, (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getFontString)(textElement), maxWidth);
      }

      const metrics = measureText(text, (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getFontString)(textElement), textElement.lineHeight);
      nextHeight = metrics.height;
      nextWidth = metrics.width;
      nextBaseLine = metrics.baseline;
    } // increase height in case text element height exceeds


    if (nextHeight > maxHeight) {
      containerHeight = computeContainerDimensionForBoundText(nextHeight, container.type);
      const diff = containerHeight - container.height; // fix the y coord when resizing from ne/nw/n

      const updatedY = !(0,_typeChecks__WEBPACK_IMPORTED_MODULE_5__.isArrowElement)(container) && (transformHandleType === "ne" || transformHandleType === "nw" || transformHandleType === "n") ? container.y - diff : container.y;
      (0,_mutateElement__WEBPACK_IMPORTED_MODULE_1__.mutateElement)(container, {
        height: containerHeight,
        y: updatedY
      });
    }

    (0,_mutateElement__WEBPACK_IMPORTED_MODULE_1__.mutateElement)(textElement, {
      text,
      width: nextWidth,
      height: nextHeight,
      baseline: nextBaseLine
    });

    if (!(0,_typeChecks__WEBPACK_IMPORTED_MODULE_5__.isArrowElement)(container)) {
      (0,_mutateElement__WEBPACK_IMPORTED_MODULE_1__.mutateElement)(textElement, computeBoundTextPosition(container, textElement));
    }
  }
};
const computeBoundTextPosition = (container, boundTextElement) => {
  if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_5__.isArrowElement)(container)) {
    return _linearElementEditor__WEBPACK_IMPORTED_MODULE_6__.LinearElementEditor.getBoundTextElementPosition(container, boundTextElement);
  }

  const containerCoords = getContainerCoords(container);
  const maxContainerHeight = getBoundTextMaxHeight(container, boundTextElement);
  const maxContainerWidth = getBoundTextMaxWidth(container);
  let x;
  let y;

  if (boundTextElement.verticalAlign === _constants__WEBPACK_IMPORTED_MODULE_2__.VERTICAL_ALIGN.TOP) {
    y = containerCoords.y;
  } else if (boundTextElement.verticalAlign === _constants__WEBPACK_IMPORTED_MODULE_2__.VERTICAL_ALIGN.BOTTOM) {
    y = containerCoords.y + (maxContainerHeight - boundTextElement.height);
  } else {
    y = containerCoords.y + (maxContainerHeight / 2 - boundTextElement.height / 2);
  }

  if (boundTextElement.textAlign === _constants__WEBPACK_IMPORTED_MODULE_2__.TEXT_ALIGN.LEFT) {
    x = containerCoords.x;
  } else if (boundTextElement.textAlign === _constants__WEBPACK_IMPORTED_MODULE_2__.TEXT_ALIGN.RIGHT) {
    x = containerCoords.x + (maxContainerWidth - boundTextElement.width);
  } else {
    x = containerCoords.x + (maxContainerWidth / 2 - boundTextElement.width / 2);
  }

  return {
    x,
    y
  };
}; // https://github.com/grassator/canvas-text-editor/blob/master/lib/FontMetrics.js

const measureText = (text, font, lineHeight) => {
  text = text.split("\\n") // replace empty lines with single space because leading/trailing empty
  // lines would be stripped from computation
  .map(x => x || " ").join("\\n");
  const fontSize = parseFloat(font);
  const height = getTextHeight(text, fontSize, lineHeight);
  const width = getTextWidth(text, font);
  const baseline = measureBaseline(text, font, lineHeight);
  return {
    width,
    height,
    baseline
  };
};
const measureBaseline = (text, font, lineHeight, wrapInContainer) => {
  const container = document.createElement("div");
  container.style.position = "absolute";
  container.style.whiteSpace = "pre";
  container.style.font = font;
  container.style.minHeight = "1em";

  if (wrapInContainer) {
    container.style.overflow = "hidden";
    container.style.wordBreak = "break-word";
    container.style.whiteSpace = "pre-wrap";
  }

  container.style.lineHeight = String(lineHeight);
  container.innerText = text; // Baseline is important for positioning text on canvas

  document.body.appendChild(container);
  const span = document.createElement("span");
  span.style.display = "inline-block";
  span.style.overflow = "hidden";
  span.style.width = "1px";
  span.style.height = "1px";
  container.appendChild(span);
  let baseline = span.offsetTop + span.offsetHeight;
  const height = container.offsetHeight;

  if (_constants__WEBPACK_IMPORTED_MODULE_2__.isSafari) {
    const canvasHeight = getTextHeight(text, parseFloat(font), lineHeight);
    const fontSize = parseFloat(font); // In Safari the font size gets rounded off when rendering hence calculating the safari height and shifting the baseline if it differs
    // from the actual canvas height

    const domHeight = getTextHeight(text, Math.round(fontSize), lineHeight);

    if (canvasHeight > height) {
      baseline += canvasHeight - domHeight;
    }

    if (height > canvasHeight) {
      baseline -= domHeight - canvasHeight;
    }
  }

  document.body.removeChild(container);
  return baseline;
};
/**
 * To get unitless line-height (if unknown) we can calculate it by dividing
 * height-per-line by fontSize.
 */

const detectLineHeight = textElement => {
  const lineCount = splitIntoLines(textElement.text).length;
  return textElement.height / lineCount / textElement.fontSize;
};
/**
 * We calculate the line height from the font size and the unitless line height,
 * aligning with the W3C spec.
 */

const getLineHeightInPx = (fontSize, lineHeight) => {
  return fontSize * lineHeight;
}; // FIXME rename to getApproxMinContainerHeight

const getApproxMinLineHeight = (fontSize, lineHeight) => {
  return getLineHeightInPx(fontSize, lineHeight) + _constants__WEBPACK_IMPORTED_MODULE_2__.BOUND_TEXT_PADDING * 2;
};
let canvas;

const getLineWidth = (text, font) => {
  if (!canvas) {
    canvas = document.createElement("canvas");
  }

  const canvas2dContext = canvas.getContext("2d");
  canvas2dContext.font = font;
  const width = canvas2dContext.measureText(text).width; // since in test env the canvas measureText algo
  // doesn't measure text and instead just returns number of
  // characters hence we assume that each letteris 10px

  if ((0,_utils__WEBPACK_IMPORTED_MODULE_0__.isTestEnv)()) {
    return width * 10;
  }

  return width;
};

const getTextWidth = (text, font) => {
  const lines = splitIntoLines(text);
  let width = 0;
  lines.forEach(line => {
    width = Math.max(width, getLineWidth(line, font));
  });
  return width;
};
const getTextHeight = (text, fontSize, lineHeight) => {
  const lineCount = splitIntoLines(text).length;
  return getLineHeightInPx(fontSize, lineHeight) * lineCount;
};
const parseTokens = text => {
  // Splitting words containing "-" as those are treated as separate words
  // by css wrapping algorithm eg non-profit => non-, profit
  const words = text.split("-");

  if (words.length > 1) {
    // non-proft org => ['non-', 'profit org']
    words.forEach((word, index) => {
      if (index !== words.length - 1) {
        words[index] = word += "-";
      }
    });
  } // Joining the words with space and splitting them again with space to get the
  // final list of tokens
  // ['non-', 'profit org'] =>,'non- proft org' => ['non-','profit','org']


  return words.join(" ").split(" ");
};
const wrapText = (text, font, maxWidth) => {
  // if maxWidth is not finite or NaN which can happen in case of bugs in
  // computation, we need to make sure we don't continue as we'll end up
  // in an infinite loop
  if (!Number.isFinite(maxWidth) || maxWidth < 0) {
    return text;
  }

  const lines = [];
  const originalLines = text.split("\\n");
  const spaceWidth = getLineWidth(" ", font);
  let currentLine = "";
  let currentLineWidthTillNow = 0;

  const push = str => {
    if (str.trim()) {
      lines.push(str);
    }
  };

  const resetParams = () => {
    currentLine = "";
    currentLineWidthTillNow = 0;
  };

  originalLines.forEach(originalLine => {
    const currentLineWidth = getTextWidth(originalLine, font); // Push the line if its <= maxWidth

    if (currentLineWidth <= maxWidth) {
      lines.push(originalLine);
      return; // continue
    }

    const words = parseTokens(originalLine);
    resetParams();
    let index = 0;

    while (index < words.length) {
      const currentWordWidth = getLineWidth(words[index], font); // This will only happen when single word takes entire width

      if (currentWordWidth === maxWidth) {
        push(words[index]);
        index++;
      } // Start breaking longer words exceeding max width
      else if (currentWordWidth > maxWidth) {
        // push current line since the current word exceeds the max width
        // so will be appended in next line
        push(currentLine);
        resetParams();

        while (words[index].length > 0) {
          const currentChar = String.fromCodePoint(words[index].codePointAt(0));
          const width = charWidth.calculate(currentChar, font);
          currentLineWidthTillNow += width;
          words[index] = words[index].slice(currentChar.length);

          if (currentLineWidthTillNow >= maxWidth) {
            push(currentLine);
            currentLine = currentChar;
            currentLineWidthTillNow = width;
          } else {
            currentLine += currentChar;
          }
        } // push current line if appending space exceeds max width


        if (currentLineWidthTillNow + spaceWidth >= maxWidth) {
          push(currentLine);
          resetParams(); // space needs to be appended before next word
          // as currentLine contains chars which couldn't be appended
          // to previous line unless the line ends with hyphen to sync
          // with css word-wrap
        } else if (!currentLine.endsWith("-")) {
          currentLine += " ";
          currentLineWidthTillNow += spaceWidth;
        }

        index++;
      } else {
        // Start appending words in a line till max width reached
        while (currentLineWidthTillNow < maxWidth && index < words.length) {
          const word = words[index];
          currentLineWidthTillNow = getLineWidth(currentLine + word, font);

          if (currentLineWidthTillNow > maxWidth) {
            push(currentLine);
            resetParams();
            break;
          }

          index++; // if word ends with "-" then we don't need to add space
          // to sync with css word-wrap

          const shouldAppendSpace = !word.endsWith("-");
          currentLine += word;

          if (shouldAppendSpace) {
            currentLine += " ";
          } // Push the word if appending space exceeds max width


          if (currentLineWidthTillNow + spaceWidth >= maxWidth) {
            if (shouldAppendSpace) {
              lines.push(currentLine.slice(0, -1));
            } else {
              lines.push(currentLine);
            }

            resetParams();
            break;
          }
        }
      }
    }

    if (currentLine.slice(-1) === " ") {
      // only remove last trailing space which we have added when joining words
      currentLine = currentLine.slice(0, -1);
      push(currentLine);
    }
  });
  return lines.join("\\n");
};
const charWidth = (() => {
  const cachedCharWidth = {};

  const calculate = (char, font) => {
    const ascii = char.charCodeAt(0);

    if (!cachedCharWidth[font]) {
      cachedCharWidth[font] = [];
    }

    if (!cachedCharWidth[font][ascii]) {
      const width = getLineWidth(char, font);
      cachedCharWidth[font][ascii] = width;
    }

    return cachedCharWidth[font][ascii];
  };

  const getCache = font => {
    return cachedCharWidth[font];
  };

  return {
    calculate,
    getCache
  };
})();
const DUMMY_TEXT = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".toLocaleUpperCase(); // FIXME rename to getApproxMinContainerWidth

const getApproxMinLineWidth = (font, lineHeight) => {
  const maxCharWidth = getMaxCharWidth(font);

  if (maxCharWidth === 0) {
    return measureText(DUMMY_TEXT.split("").join("\\n"), font, lineHeight).width + _constants__WEBPACK_IMPORTED_MODULE_2__.BOUND_TEXT_PADDING * 2;
  }

  return maxCharWidth + _constants__WEBPACK_IMPORTED_MODULE_2__.BOUND_TEXT_PADDING * 2;
};
const getMinCharWidth = font => {
  const cache = charWidth.getCache(font);

  if (!cache) {
    return 0;
  }

  const cacheWithOutEmpty = cache.filter(val => val !== undefined);
  return Math.min(...cacheWithOutEmpty);
};
const getMaxCharWidth = font => {
  const cache = charWidth.getCache(font);

  if (!cache) {
    return 0;
  }

  const cacheWithOutEmpty = cache.filter(val => val !== undefined);
  return Math.max(...cacheWithOutEmpty);
};
const getApproxCharsToFitInWidth = (font, width) => {
  // Generally lower case is used so converting to lower case
  const dummyText = DUMMY_TEXT.toLocaleLowerCase();
  const batchLength = 6;
  let index = 0;
  let widthTillNow = 0;
  let str = "";

  while (widthTillNow <= width) {
    const batch = dummyText.substr(index, index + batchLength);
    str += batch;
    widthTillNow += getLineWidth(str, font);

    if (index === dummyText.length - 1) {
      index = 0;
    }

    index = index + batchLength;
  }

  while (widthTillNow > width) {
    str = str.substr(0, str.length - 1);
    widthTillNow = getLineWidth(str, font);
  }

  return str.length;
};
const getBoundTextElementId = container => {
  var _a, _b, _c;

  return ((_a = container === null || container === void 0 ? void 0 : container.boundElements) === null || _a === void 0 ? void 0 : _a.length) ? ((_c = (_b = container === null || container === void 0 ? void 0 : container.boundElements) === null || _b === void 0 ? void 0 : _b.filter(ele => ele.type === "text")[0]) === null || _c === void 0 ? void 0 : _c.id) || null : null;
};
const getBoundTextElement = element => {
  var _a;

  if (!element) {
    return null;
  }

  const boundTextElementId = getBoundTextElementId(element);

  if (boundTextElementId) {
    return ((_a = _scene_Scene__WEBPACK_IMPORTED_MODULE_3__["default"].getScene(element)) === null || _a === void 0 ? void 0 : _a.getElement(boundTextElementId)) || null;
  }

  return null;
};
const getContainerElement = element => {
  var _a;

  if (!element) {
    return null;
  }

  if (element.containerId) {
    return ((_a = _scene_Scene__WEBPACK_IMPORTED_MODULE_3__["default"].getScene(element)) === null || _a === void 0 ? void 0 : _a.getElement(element.containerId)) || null;
  }

  return null;
};
const getContainerCenter = (container, appState) => {
  if (!(0,_typeChecks__WEBPACK_IMPORTED_MODULE_5__.isArrowElement)(container)) {
    return {
      x: container.x + container.width / 2,
      y: container.y + container.height / 2
    };
  }

  const points = _linearElementEditor__WEBPACK_IMPORTED_MODULE_6__.LinearElementEditor.getPointsGlobalCoordinates(container);

  if (points.length % 2 === 1) {
    const index = Math.floor(container.points.length / 2);
    const midPoint = _linearElementEditor__WEBPACK_IMPORTED_MODULE_6__.LinearElementEditor.getPointGlobalCoordinates(container, container.points[index]);
    return {
      x: midPoint[0],
      y: midPoint[1]
    };
  }

  const index = container.points.length / 2 - 1;
  let midSegmentMidpoint = _linearElementEditor__WEBPACK_IMPORTED_MODULE_6__.LinearElementEditor.getEditorMidPoints(container, appState)[index];

  if (!midSegmentMidpoint) {
    midSegmentMidpoint = _linearElementEditor__WEBPACK_IMPORTED_MODULE_6__.LinearElementEditor.getSegmentMidPoint(container, points[index], points[index + 1], index + 1);
  }

  return {
    x: midSegmentMidpoint[0],
    y: midSegmentMidpoint[1]
  };
};
const getContainerCoords = container => {
  let offsetX = _constants__WEBPACK_IMPORTED_MODULE_2__.BOUND_TEXT_PADDING;
  let offsetY = _constants__WEBPACK_IMPORTED_MODULE_2__.BOUND_TEXT_PADDING;

  if (container.type === "ellipse") {
    // The derivation of coordinates is explained in https://github.com/excalidraw/excalidraw/pull/6172
    offsetX += container.width / 2 * (1 - Math.sqrt(2) / 2);
    offsetY += container.height / 2 * (1 - Math.sqrt(2) / 2);
  } // The derivation of coordinates is explained in https://github.com/excalidraw/excalidraw/pull/6265


  if (container.type === "diamond") {
    offsetX += container.width / 4;
    offsetY += container.height / 4;
  }

  return {
    x: container.x + offsetX,
    y: container.y + offsetY
  };
};
const getTextElementAngle = textElement => {
  const container = getContainerElement(textElement);

  if (!container || (0,_typeChecks__WEBPACK_IMPORTED_MODULE_5__.isArrowElement)(container)) {
    return textElement.angle;
  }

  return container.angle;
};
const getBoundTextElementOffset = boundTextElement => {
  const container = getContainerElement(boundTextElement);

  if (!container || !boundTextElement) {
    return 0;
  }

  if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_5__.isArrowElement)(container)) {
    return _constants__WEBPACK_IMPORTED_MODULE_2__.BOUND_TEXT_PADDING * 8;
  }

  return _constants__WEBPACK_IMPORTED_MODULE_2__.BOUND_TEXT_PADDING;
};
const getBoundTextElementPosition = (container, boundTextElement) => {
  if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_5__.isArrowElement)(container)) {
    return _linearElementEditor__WEBPACK_IMPORTED_MODULE_6__.LinearElementEditor.getBoundTextElementPosition(container, boundTextElement);
  }
};
const shouldAllowVerticalAlign = selectedElements => {
  return selectedElements.some(element => {
    const hasBoundContainer = (0,_typeChecks__WEBPACK_IMPORTED_MODULE_5__.isBoundToContainer)(element);

    if (hasBoundContainer) {
      const container = getContainerElement(element);

      if ((0,___WEBPACK_IMPORTED_MODULE_4__.isTextElement)(element) && (0,_typeChecks__WEBPACK_IMPORTED_MODULE_5__.isArrowElement)(container)) {
        return false;
      }

      return true;
    }

    return false;
  });
};
const suppportsHorizontalAlign = selectedElements => {
  return selectedElements.some(element => {
    const hasBoundContainer = (0,_typeChecks__WEBPACK_IMPORTED_MODULE_5__.isBoundToContainer)(element);

    if (hasBoundContainer) {
      const container = getContainerElement(element);

      if ((0,___WEBPACK_IMPORTED_MODULE_4__.isTextElement)(element) && (0,_typeChecks__WEBPACK_IMPORTED_MODULE_5__.isArrowElement)(container)) {
        return false;
      }

      return true;
    }

    return (0,___WEBPACK_IMPORTED_MODULE_4__.isTextElement)(element);
  });
};
const getTextBindableContainerAtPosition = (elements, appState, x, y) => {
  const selectedElements = (0,_scene__WEBPACK_IMPORTED_MODULE_7__.getSelectedElements)(elements, appState);

  if (selectedElements.length === 1) {
    return (0,_typeChecks__WEBPACK_IMPORTED_MODULE_5__.isTextBindableContainer)(selectedElements[0], false) ? selectedElements[0] : null;
  }

  let hitElement = null; // We need to to hit testing from front (end of the array) to back (beginning of the array)

  for (let index = elements.length - 1; index >= 0; --index) {
    if (elements[index].isDeleted) {
      continue;
    }

    const [x1, y1, x2, y2] = (0,___WEBPACK_IMPORTED_MODULE_4__.getElementAbsoluteCoords)(elements[index]);

    if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_5__.isArrowElement)(elements[index]) && (0,_collision__WEBPACK_IMPORTED_MODULE_8__.isHittingElementNotConsideringBoundingBox)(elements[index], appState, null, [x, y])) {
      hitElement = elements[index];
      break;
    } else if (x1 < x && x < x2 && y1 < y && y < y2) {
      hitElement = elements[index];
      break;
    }
  }

  return (0,_typeChecks__WEBPACK_IMPORTED_MODULE_5__.isTextBindableContainer)(hitElement, false) ? hitElement : null;
};
const VALID_CONTAINER_TYPES = new Set(["rectangle", "ellipse", "diamond", "arrow"]);
const isValidTextContainer = element => VALID_CONTAINER_TYPES.has(element.type);
const computeContainerDimensionForBoundText = (dimension, containerType) => {
  dimension = Math.ceil(dimension);
  const padding = _constants__WEBPACK_IMPORTED_MODULE_2__.BOUND_TEXT_PADDING * 2;

  if (containerType === "ellipse") {
    return Math.round((dimension + padding) / Math.sqrt(2) * 2);
  }

  if (containerType === "arrow") {
    return dimension + padding * 8;
  }

  if (containerType === "diamond") {
    return 2 * (dimension + padding);
  }

  return dimension + padding;
};
const getBoundTextMaxWidth = (container, boundTextElement = getBoundTextElement(container)) => {
  var _a;

  const {
    width
  } = container;

  if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_5__.isArrowElement)(container)) {
    const minWidth = ((_a = boundTextElement === null || boundTextElement === void 0 ? void 0 : boundTextElement.fontSize) !== null && _a !== void 0 ? _a : _constants__WEBPACK_IMPORTED_MODULE_2__.DEFAULT_FONT_SIZE) * _constants__WEBPACK_IMPORTED_MODULE_2__.ARROW_LABEL_FONT_SIZE_TO_MIN_WIDTH_RATIO;
    return Math.max(_constants__WEBPACK_IMPORTED_MODULE_2__.ARROW_LABEL_WIDTH_FRACTION * width, minWidth);
  }

  if (container.type === "ellipse") {
    // The width of the largest rectangle inscribed inside an ellipse is
    // Math.round((ellipse.width / 2) * Math.sqrt(2)) which is derived from
    // equation of an ellipse -https://github.com/excalidraw/excalidraw/pull/6172
    return Math.round(width / 2 * Math.sqrt(2)) - _constants__WEBPACK_IMPORTED_MODULE_2__.BOUND_TEXT_PADDING * 2;
  }

  if (container.type === "diamond") {
    // The width of the largest rectangle inscribed inside a rhombus is
    // Math.round(width / 2) - https://github.com/excalidraw/excalidraw/pull/6265
    return Math.round(width / 2) - _constants__WEBPACK_IMPORTED_MODULE_2__.BOUND_TEXT_PADDING * 2;
  }

  return width - _constants__WEBPACK_IMPORTED_MODULE_2__.BOUND_TEXT_PADDING * 2;
};
const getBoundTextMaxHeight = (container, boundTextElement) => {
  const {
    height
  } = container;

  if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_5__.isArrowElement)(container)) {
    const containerHeight = height - _constants__WEBPACK_IMPORTED_MODULE_2__.BOUND_TEXT_PADDING * 8 * 2;

    if (containerHeight <= 0) {
      return boundTextElement.height;
    }

    return height;
  }

  if (container.type === "ellipse") {
    // The height of the largest rectangle inscribed inside an ellipse is
    // Math.round((ellipse.height / 2) * Math.sqrt(2)) which is derived from
    // equation of an ellipse - https://github.com/excalidraw/excalidraw/pull/6172
    return Math.round(height / 2 * Math.sqrt(2)) - _constants__WEBPACK_IMPORTED_MODULE_2__.BOUND_TEXT_PADDING * 2;
  }

  if (container.type === "diamond") {
    // The height of the largest rectangle inscribed inside a rhombus is
    // Math.round(height / 2) - https://github.com/excalidraw/excalidraw/pull/6265
    return Math.round(height / 2) - _constants__WEBPACK_IMPORTED_MODULE_2__.BOUND_TEXT_PADDING * 2;
  }

  return height - _constants__WEBPACK_IMPORTED_MODULE_2__.BOUND_TEXT_PADDING * 2;
};
const isMeasureTextSupported = () => {
  const width = getTextWidth(DUMMY_TEXT, (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getFontString)({
    fontSize: _constants__WEBPACK_IMPORTED_MODULE_2__.DEFAULT_FONT_SIZE,
    fontFamily: _constants__WEBPACK_IMPORTED_MODULE_2__.DEFAULT_FONT_FAMILY
  }));
  return width > 0;
};
/**
 * Unitless line height
 *
 * In previous versions we used \`normal\` line height, which browsers interpret
 * differently, and based on font-family and font-size.
 *
 * To make line heights consistent across browsers we hardcode the values for
 * each of our fonts based on most common average line-heights.
 * See https://github.com/excalidraw/excalidraw/pull/6360#issuecomment-1477635971
 * where the values come from.
 */

const DEFAULT_LINE_HEIGHT = {
  // ~1.25 is the average for Virgil in WebKit and Blink.
  // Gecko (FF) uses ~1.28.
  [_constants__WEBPACK_IMPORTED_MODULE_2__.FONT_FAMILY.Virgil]: 1.25,
  // ~1.15 is the average for Virgil in WebKit and Blink.
  // Gecko if all over the place.
  [_constants__WEBPACK_IMPORTED_MODULE_2__.FONT_FAMILY.Helvetica]: 1.15,
  // ~1.2 is the average for Virgil in WebKit and Blink, and kinda Gecko too
  [_constants__WEBPACK_IMPORTED_MODULE_2__.FONT_FAMILY.Cascadia]: 1.2
};
const getDefaultLineHeight = fontFamily => {
  if (fontFamily in DEFAULT_LINE_HEIGHT) {
    return DEFAULT_LINE_HEIGHT[fontFamily];
  }

  return DEFAULT_LINE_HEIGHT[_constants__WEBPACK_IMPORTED_MODULE_2__.DEFAULT_FONT_FAMILY];
};//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 43708 characters]
//# sourceURL=webpack-internal:///../../element/textElement.ts
`);
              }
            ),
            /***/
            "../../element/textWysiwyg.tsx": (
              /*!*************************************!*\
                !*** ../../element/textWysiwyg.tsx ***!
                \*************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "getOriginalContainerHeightFromCache": () => (/* binding */ getOriginalContainerHeightFromCache),\n/* harmony export */   "resetOriginalContainerCache": () => (/* binding */ resetOriginalContainerCache),\n/* harmony export */   "textWysiwyg": () => (/* binding */ textWysiwyg),\n/* harmony export */   "updateOriginalContainerCache": () => (/* binding */ updateOriginalContainerCache)\n/* harmony export */ });\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../keys */ "../../keys.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _scene_Scene__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../scene/Scene */ "../../scene/Scene.ts");\n/* harmony import */ var _typeChecks__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _mutateElement__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./mutateElement */ "../../element/mutateElement.ts");\n/* harmony import */ var _textElement__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./textElement */ "../../element/textElement.ts");\n/* harmony import */ var _actions_actionProperties__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../actions/actionProperties */ "../../actions/actionProperties.tsx");\n/* harmony import */ var _actions_actionCanvas__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../actions/actionCanvas */ "../../actions/actionCanvas.tsx");\n/* harmony import */ var _linearElementEditor__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./linearElementEditor */ "../../element/linearElementEditor.ts");\n/* harmony import */ var _clipboard__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../clipboard */ "../../clipboard.ts");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator["throw"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst getTransform = (width, height, angle, appState, maxWidth, maxHeight) => {\n  const {\n    zoom\n  } = appState;\n  const degree = 180 * angle / Math.PI;\n  let translateX = width * (zoom.value - 1) / 2;\n  let translateY = height * (zoom.value - 1) / 2;\n\n  if (width > maxWidth && zoom.value !== 1) {\n    translateX = maxWidth * (zoom.value - 1) / 2;\n  }\n\n  if (height > maxHeight && zoom.value !== 1) {\n    translateY = maxHeight * (zoom.value - 1) / 2;\n  }\n\n  return `translate(${translateX}px, ${translateY}px) scale(${zoom.value}) rotate(${degree}deg)`;\n};\n\nconst originalContainerCache = {};\nconst updateOriginalContainerCache = (id, height) => {\n  const data = originalContainerCache[id] || (originalContainerCache[id] = {\n    height\n  });\n  data.height = height;\n  return data;\n};\nconst resetOriginalContainerCache = id => {\n  if (originalContainerCache[id]) {\n    delete originalContainerCache[id];\n  }\n};\nconst getOriginalContainerHeightFromCache = id => {\n  var _a, _b;\n\n  return (_b = (_a = originalContainerCache[id]) === null || _a === void 0 ? void 0 : _a.height) !== null && _b !== void 0 ? _b : null;\n};\nconst textWysiwyg = ({\n  id,\n  onChange,\n  onSubmit,\n  getViewportCoords,\n  element,\n  canvas,\n  excalidrawContainer,\n  app\n}) => {\n  const textPropertiesUpdated = (updatedTextElement, editable) => {\n    if (!editable.style.fontFamily || !editable.style.fontSize) {\n      return false;\n    }\n\n    const currentFont = editable.style.fontFamily.replace(/"/g, "");\n\n    if ((0,_utils__WEBPACK_IMPORTED_MODULE_1__.getFontFamilyString)({\n      fontFamily: updatedTextElement.fontFamily\n    }) !== currentFont) {\n      return true;\n    }\n\n    if (`${updatedTextElement.fontSize}px` !== editable.style.fontSize) {\n      return true;\n    }\n\n    return false;\n  };\n\n  const updateWysiwygStyle = () => {\n    var _a;\n\n    const appState = app.state;\n    const updatedTextElement = (_a = _scene_Scene__WEBPACK_IMPORTED_MODULE_2__["default"].getScene(element)) === null || _a === void 0 ? void 0 : _a.getElement(id);\n\n    if (!updatedTextElement) {\n      return;\n    }\n\n    const {\n      textAlign,\n      verticalAlign\n    } = updatedTextElement;\n\n    if (updatedTextElement && (0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isTextElement)(updatedTextElement)) {\n      let coordX = updatedTextElement.x;\n      let coordY = updatedTextElement.y;\n      const container = (0,_textElement__WEBPACK_IMPORTED_MODULE_6__.getContainerElement)(updatedTextElement);\n      let maxWidth = updatedTextElement.width;\n      let maxHeight = updatedTextElement.height;\n      let textElementWidth = updatedTextElement.width; // Set to element height by default since that\'s\n      // what is going to be used for unbounded text\n\n      const textElementHeight = updatedTextElement.height;\n\n      if (container && updatedTextElement.containerId) {\n        if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isArrowElement)(container)) {\n          const boundTextCoords = _linearElementEditor__WEBPACK_IMPORTED_MODULE_9__.LinearElementEditor.getBoundTextElementPosition(container, updatedTextElement);\n          coordX = boundTextCoords.x;\n          coordY = boundTextCoords.y;\n        }\n\n        const propertiesUpdated = textPropertiesUpdated(updatedTextElement, editable);\n        let originalContainerData;\n\n        if (propertiesUpdated) {\n          originalContainerData = updateOriginalContainerCache(container.id, container.height);\n        } else {\n          originalContainerData = originalContainerCache[container.id];\n\n          if (!originalContainerData) {\n            originalContainerData = updateOriginalContainerCache(container.id, container.height);\n          }\n        }\n\n        maxWidth = (0,_textElement__WEBPACK_IMPORTED_MODULE_6__.getBoundTextMaxWidth)(container);\n        maxHeight = (0,_textElement__WEBPACK_IMPORTED_MODULE_6__.getBoundTextMaxHeight)(container, updatedTextElement); // autogrow container height if text exceeds\n\n        if (!(0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isArrowElement)(container) && textElementHeight > maxHeight) {\n          const targetContainerHeight = (0,_textElement__WEBPACK_IMPORTED_MODULE_6__.computeContainerDimensionForBoundText)(textElementHeight, container.type);\n          (0,_mutateElement__WEBPACK_IMPORTED_MODULE_5__.mutateElement)(container, {\n            height: targetContainerHeight\n          });\n          return;\n        } else if ( // autoshrink container height until original container height\n        // is reached when text is removed\n        !(0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isArrowElement)(container) && container.height > originalContainerData.height && textElementHeight < maxHeight) {\n          const targetContainerHeight = (0,_textElement__WEBPACK_IMPORTED_MODULE_6__.computeContainerDimensionForBoundText)(textElementHeight, container.type);\n          (0,_mutateElement__WEBPACK_IMPORTED_MODULE_5__.mutateElement)(container, {\n            height: targetContainerHeight\n          });\n        } else {\n          const {\n            y\n          } = (0,_textElement__WEBPACK_IMPORTED_MODULE_6__.computeBoundTextPosition)(container, updatedTextElement);\n          coordY = y;\n        }\n      }\n\n      const [viewportX, viewportY] = getViewportCoords(coordX, coordY);\n      const initialSelectionStart = editable.selectionStart;\n      const initialSelectionEnd = editable.selectionEnd;\n      const initialLength = editable.value.length; // restore cursor position after value updated so it doesn\'t\n      // go to the end of text when container auto expanded\n\n      if (initialSelectionStart === initialSelectionEnd && initialSelectionEnd !== initialLength) {\n        // get diff between length and selection end and shift\n        // the cursor by "diff" times to position correctly\n        const diff = initialLength - initialSelectionEnd;\n        editable.selectionStart = editable.value.length - diff;\n        editable.selectionEnd = editable.value.length - diff;\n      }\n\n      if (!container) {\n        maxWidth = (appState.width - 8 - viewportX) / appState.zoom.value;\n        textElementWidth = Math.min(textElementWidth, maxWidth);\n      } else {\n        textElementWidth += 0.5;\n      }\n\n      let lineHeight = updatedTextElement.lineHeight; // In Safari the font size gets rounded off when rendering hence calculating the line height by rounding off font size\n\n      if (_constants__WEBPACK_IMPORTED_MODULE_4__.isSafari) {\n        lineHeight = (0,_textElement__WEBPACK_IMPORTED_MODULE_6__.detectLineHeight)(Object.assign(Object.assign({}, updatedTextElement), {\n          fontSize: Math.round(updatedTextElement.fontSize)\n        }));\n      } // Make sure text editor height doesn\'t go beyond viewport\n\n\n      const editorMaxHeight = (appState.height - viewportY) / appState.zoom.value;\n      Object.assign(editable.style, {\n        font: (0,_utils__WEBPACK_IMPORTED_MODULE_1__.getFontString)(updatedTextElement),\n        // must be defined *after* font \xAF\\_(\u30C4)_/\xAF\n        lineHeight,\n        width: `${textElementWidth}px`,\n        height: `${textElementHeight}px`,\n        left: `${viewportX}px`,\n        top: `${viewportY}px`,\n        transform: getTransform(textElementWidth, textElementHeight, (0,_textElement__WEBPACK_IMPORTED_MODULE_6__.getTextElementAngle)(updatedTextElement), appState, maxWidth, editorMaxHeight),\n        textAlign,\n        verticalAlign,\n        color: updatedTextElement.strokeColor,\n        opacity: updatedTextElement.opacity / 100,\n        filter: "var(--theme-filter)",\n        maxHeight: `${editorMaxHeight}px`\n      });\n      editable.scrollTop = 0; // For some reason updating font attribute doesn\'t set font family\n      // hence updating font family explicitly for test environment\n\n      if ((0,_utils__WEBPACK_IMPORTED_MODULE_1__.isTestEnv)()) {\n        editable.style.fontFamily = (0,_utils__WEBPACK_IMPORTED_MODULE_1__.getFontFamilyString)(updatedTextElement);\n      }\n\n      (0,_mutateElement__WEBPACK_IMPORTED_MODULE_5__.mutateElement)(updatedTextElement, {\n        x: coordX,\n        y: coordY\n      });\n    }\n  };\n\n  const editable = document.createElement("textarea");\n  editable.dir = "auto";\n  editable.tabIndex = 0;\n  editable.dataset.type = "wysiwyg"; // prevent line wrapping on Safari\n\n  editable.wrap = "off";\n  editable.classList.add("excalidraw-wysiwyg");\n  let whiteSpace = "pre";\n  let wordBreak = "normal";\n\n  if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isBoundToContainer)(element)) {\n    whiteSpace = "pre-wrap";\n    wordBreak = "break-word";\n  }\n\n  Object.assign(editable.style, {\n    position: "absolute",\n    display: "inline-block",\n    minHeight: "1em",\n    backfaceVisibility: "hidden",\n    margin: 0,\n    padding: 0,\n    border: 0,\n    outline: 0,\n    resize: "none",\n    background: "transparent",\n    overflow: "hidden",\n    // must be specified because in dark mode canvas creates a stacking context\n    zIndex: "var(--zIndex-wysiwyg)",\n    wordBreak,\n    // prevent line wrapping (`whitespace: nowrap` doesn\'t work on FF)\n    whiteSpace,\n    overflowWrap: "break-word",\n    boxSizing: "content-box"\n  });\n  editable.value = element.originalText;\n  updateWysiwygStyle();\n\n  if (onChange) {\n    editable.onpaste = event => __awaiter(void 0, void 0, void 0, function* () {\n      const clipboardData = yield (0,_clipboard__WEBPACK_IMPORTED_MODULE_10__.parseClipboard)(event, true);\n\n      if (!clipboardData.text) {\n        return;\n      }\n\n      const data = (0,_textElement__WEBPACK_IMPORTED_MODULE_6__.normalizeText)(clipboardData.text);\n\n      if (!data) {\n        return;\n      }\n\n      const container = (0,_textElement__WEBPACK_IMPORTED_MODULE_6__.getContainerElement)(element);\n      const font = (0,_utils__WEBPACK_IMPORTED_MODULE_1__.getFontString)({\n        fontSize: app.state.currentItemFontSize,\n        fontFamily: app.state.currentItemFontFamily\n      });\n\n      if (container) {\n        const wrappedText = (0,_textElement__WEBPACK_IMPORTED_MODULE_6__.wrapText)(`${editable.value}${data}`, font, (0,_textElement__WEBPACK_IMPORTED_MODULE_6__.getBoundTextMaxWidth)(container));\n        const width = (0,_textElement__WEBPACK_IMPORTED_MODULE_6__.getTextWidth)(wrappedText, font);\n        editable.style.width = `${width}px`;\n      }\n    });\n\n    editable.oninput = () => {\n      onChange((0,_textElement__WEBPACK_IMPORTED_MODULE_6__.normalizeText)(editable.value));\n    };\n  }\n\n  editable.onkeydown = event => {\n    if (!event.shiftKey && _actions_actionCanvas__WEBPACK_IMPORTED_MODULE_8__.actionZoomIn.keyTest(event)) {\n      event.preventDefault();\n      app.actionManager.executeAction(_actions_actionCanvas__WEBPACK_IMPORTED_MODULE_8__.actionZoomIn);\n      updateWysiwygStyle();\n    } else if (!event.shiftKey && _actions_actionCanvas__WEBPACK_IMPORTED_MODULE_8__.actionZoomOut.keyTest(event)) {\n      event.preventDefault();\n      app.actionManager.executeAction(_actions_actionCanvas__WEBPACK_IMPORTED_MODULE_8__.actionZoomOut);\n      updateWysiwygStyle();\n    } else if (_actions_actionProperties__WEBPACK_IMPORTED_MODULE_7__.actionDecreaseFontSize.keyTest(event)) {\n      app.actionManager.executeAction(_actions_actionProperties__WEBPACK_IMPORTED_MODULE_7__.actionDecreaseFontSize);\n    } else if (_actions_actionProperties__WEBPACK_IMPORTED_MODULE_7__.actionIncreaseFontSize.keyTest(event)) {\n      app.actionManager.executeAction(_actions_actionProperties__WEBPACK_IMPORTED_MODULE_7__.actionIncreaseFontSize);\n    } else if (event.key === _keys__WEBPACK_IMPORTED_MODULE_0__.KEYS.ESCAPE) {\n      event.preventDefault();\n      submittedViaKeyboard = true;\n      handleSubmit();\n    } else if (event.key === _keys__WEBPACK_IMPORTED_MODULE_0__.KEYS.ENTER && event[_keys__WEBPACK_IMPORTED_MODULE_0__.KEYS.CTRL_OR_CMD]) {\n      event.preventDefault();\n\n      if (event.isComposing || event.keyCode === 229) {\n        return;\n      }\n\n      submittedViaKeyboard = true;\n      handleSubmit();\n    } else if (event.key === _keys__WEBPACK_IMPORTED_MODULE_0__.KEYS.TAB || event[_keys__WEBPACK_IMPORTED_MODULE_0__.KEYS.CTRL_OR_CMD] && (event.code === _keys__WEBPACK_IMPORTED_MODULE_0__.CODES.BRACKET_LEFT || event.code === _keys__WEBPACK_IMPORTED_MODULE_0__.CODES.BRACKET_RIGHT)) {\n      event.preventDefault();\n\n      if (event.isComposing) {\n        return;\n      } else if (event.shiftKey || event.code === _keys__WEBPACK_IMPORTED_MODULE_0__.CODES.BRACKET_LEFT) {\n        outdent();\n      } else {\n        indent();\n      } // We must send an input event to resize the element\n\n\n      editable.dispatchEvent(new Event("input"));\n    }\n  };\n\n  const TAB_SIZE = 4;\n  const TAB = " ".repeat(TAB_SIZE);\n  const RE_LEADING_TAB = new RegExp(`^ {1,${TAB_SIZE}}`);\n\n  const indent = () => {\n    const {\n      selectionStart,\n      selectionEnd\n    } = editable;\n    const linesStartIndices = getSelectedLinesStartIndices();\n    let value = editable.value;\n    linesStartIndices.forEach(startIndex => {\n      const startValue = value.slice(0, startIndex);\n      const endValue = value.slice(startIndex);\n      value = `${startValue}${TAB}${endValue}`;\n    });\n    editable.value = value;\n    editable.selectionStart = selectionStart + TAB_SIZE;\n    editable.selectionEnd = selectionEnd + TAB_SIZE * linesStartIndices.length;\n  };\n\n  const outdent = () => {\n    const {\n      selectionStart,\n      selectionEnd\n    } = editable;\n    const linesStartIndices = getSelectedLinesStartIndices();\n    const removedTabs = [];\n    let value = editable.value;\n    linesStartIndices.forEach(startIndex => {\n      const tabMatch = value.slice(startIndex, startIndex + TAB_SIZE).match(RE_LEADING_TAB);\n\n      if (tabMatch) {\n        const startValue = value.slice(0, startIndex);\n        const endValue = value.slice(startIndex + tabMatch[0].length); // Delete a tab from the line\n\n        value = `${startValue}${endValue}`;\n        removedTabs.push(startIndex);\n      }\n    });\n    editable.value = value;\n\n    if (removedTabs.length) {\n      if (selectionStart > removedTabs[removedTabs.length - 1]) {\n        editable.selectionStart = Math.max(selectionStart - TAB_SIZE, removedTabs[removedTabs.length - 1]);\n      } else {\n        // If the cursor is before the first tab removed, ex:\n        // Line| #1\n        //     Line #2\n        // Lin|e #3\n        // we should reset the selectionStart to his initial value.\n        editable.selectionStart = selectionStart;\n      }\n\n      editable.selectionEnd = Math.max(editable.selectionStart, selectionEnd - TAB_SIZE * removedTabs.length);\n    }\n  };\n  /**\n   * @returns indices of start positions of selected lines, in reverse order\n   */\n\n\n  const getSelectedLinesStartIndices = () => {\n    let {\n      selectionStart,\n      selectionEnd,\n      value\n    } = editable; // chars before selectionStart on the same line\n\n    const startOffset = value.slice(0, selectionStart).match(/[^\\n]*$/)[0].length; // put caret at the start of the line\n\n    selectionStart = selectionStart - startOffset;\n    const selected = value.slice(selectionStart, selectionEnd);\n    return selected.split("\\n").reduce((startIndices, line, idx, lines) => startIndices.concat(idx ? // curr line index is prev line\'s start + prev line\'s length + \\n\n    startIndices[idx - 1] + lines[idx - 1].length + 1 : // first selected line\n    selectionStart), []).reverse();\n  };\n\n  const stopEvent = event => {\n    event.preventDefault();\n    event.stopPropagation();\n  }; // using a state variable instead of passing it to the handleSubmit callback\n  // so that we don\'t need to create separate a callback for event handlers\n\n\n  let submittedViaKeyboard = false;\n\n  const handleSubmit = () => {\n    var _a, _b; // cleanup must be run before onSubmit otherwise when app blurs the wysiwyg\n    // it\'d get stuck in an infinite loop of blur\u2192onSubmit after we re-focus the\n    // wysiwyg on update\n\n\n    cleanup();\n    const updateElement = (_a = _scene_Scene__WEBPACK_IMPORTED_MODULE_2__["default"].getScene(element)) === null || _a === void 0 ? void 0 : _a.getElement(element.id);\n\n    if (!updateElement) {\n      return;\n    }\n\n    let text = editable.value;\n    const container = (0,_textElement__WEBPACK_IMPORTED_MODULE_6__.getContainerElement)(updateElement);\n\n    if (container) {\n      text = updateElement.text;\n\n      if (editable.value.trim()) {\n        const boundTextElementId = (0,_textElement__WEBPACK_IMPORTED_MODULE_6__.getBoundTextElementId)(container);\n\n        if (!boundTextElementId || boundTextElementId !== element.id) {\n          (0,_mutateElement__WEBPACK_IMPORTED_MODULE_5__.mutateElement)(container, {\n            boundElements: (container.boundElements || []).concat({\n              type: "text",\n              id: element.id\n            })\n          });\n        } else if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isArrowElement)(container)) {\n          // updating an arrow label may change bounds, prevent stale cache:\n          (0,_mutateElement__WEBPACK_IMPORTED_MODULE_5__.bumpVersion)(container);\n        }\n      } else {\n        (0,_mutateElement__WEBPACK_IMPORTED_MODULE_5__.mutateElement)(container, {\n          boundElements: (_b = container.boundElements) === null || _b === void 0 ? void 0 : _b.filter(ele => !(0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isTextElement)(ele))\n        });\n      }\n\n      (0,_textElement__WEBPACK_IMPORTED_MODULE_6__.redrawTextBoundingBox)(updateElement, container);\n    }\n\n    onSubmit({\n      text,\n      viaKeyboard: submittedViaKeyboard,\n      originalText: editable.value\n    });\n  };\n\n  const cleanup = () => {\n    if (isDestroyed) {\n      return;\n    }\n\n    isDestroyed = true; // remove events to ensure they don\'t late-fire\n\n    editable.onblur = null;\n    editable.oninput = null;\n    editable.onkeydown = null;\n\n    if (observer) {\n      observer.disconnect();\n    }\n\n    window.removeEventListener("resize", updateWysiwygStyle);\n    window.removeEventListener("wheel", stopEvent, true);\n    window.removeEventListener("pointerdown", onPointerDown);\n    window.removeEventListener("pointerup", bindBlurEvent);\n    window.removeEventListener("blur", handleSubmit);\n    window.removeEventListener("beforeunload", handleSubmit);\n    unbindUpdate();\n    editable.remove();\n  };\n\n  const bindBlurEvent = event => {\n    window.removeEventListener("pointerup", bindBlurEvent); // Deferred so that the pointerdown that initiates the wysiwyg doesn\'t\n    // trigger the blur on ensuing pointerup.\n    // Also to handle cases such as picking a color which would trigger a blur\n    // in that same tick.\n\n    const target = event === null || event === void 0 ? void 0 : event.target;\n    const isTargetPickerTrigger = target instanceof HTMLElement && target.classList.contains("active-color");\n    setTimeout(() => {\n      editable.onblur = handleSubmit;\n\n      if (isTargetPickerTrigger) {\n        const callback = (mutationList, observer) => {\n          const radixIsRemoved = mutationList.find(mutation => {\n            var _a;\n\n            return mutation.removedNodes.length > 0 && ((_a = mutation.removedNodes[0].dataset) === null || _a === void 0 ? void 0 : _a.radixPopperContentWrapper) !== undefined;\n          });\n\n          if (radixIsRemoved) {\n            // should work without this in theory\n            // and i think it does actually but radix probably somewhere,\n            // somehow sets the focus elsewhere\n            setTimeout(() => {\n              editable.focus();\n            });\n            observer.disconnect();\n          }\n        };\n\n        const observer = new MutationObserver(callback);\n        observer.observe(document.querySelector(".excalidraw-container"), {\n          childList: true\n        });\n      } // case: clicking on the same property \u2192 no change \u2192 no update \u2192 no focus\n\n\n      if (!isTargetPickerTrigger) {\n        editable.focus();\n      }\n    });\n  }; // prevent blur when changing properties from the menu\n\n\n  const onPointerDown = event => {\n    const isTargetPickerTrigger = event.target instanceof HTMLElement && event.target.classList.contains("active-color");\n\n    if ((event.target instanceof HTMLElement || event.target instanceof SVGElement) && event.target.closest(`.${_constants__WEBPACK_IMPORTED_MODULE_4__.CLASSES.SHAPE_ACTIONS_MENU}`) && !(0,_utils__WEBPACK_IMPORTED_MODULE_1__.isWritableElement)(event.target) || isTargetPickerTrigger) {\n      editable.onblur = null;\n      window.addEventListener("pointerup", bindBlurEvent); // handle edge-case where pointerup doesn\'t fire e.g. due to user\n      // alt-tabbing away\n\n      window.addEventListener("blur", handleSubmit);\n    }\n  }; // handle updates of textElement properties of editing element\n\n\n  const unbindUpdate = _scene_Scene__WEBPACK_IMPORTED_MODULE_2__["default"].getScene(element).addCallback(() => {\n    var _a;\n\n    updateWysiwygStyle();\n    const isColorPickerActive = !!((_a = document.activeElement) === null || _a === void 0 ? void 0 : _a.closest(".color-picker-content"));\n\n    if (!isColorPickerActive) {\n      editable.focus();\n    }\n  }); // ---------------------------------------------------------------------------\n\n  let isDestroyed = false; // select on init (focusing is done separately inside the bindBlurEvent()\n  // because we need it to happen *after* the blur event from `pointerdown`)\n\n  editable.select();\n  bindBlurEvent(); // reposition wysiwyg in case of canvas is resized. Using ResizeObserver\n  // is preferred so we catch changes from host, where window may not resize.\n\n  let observer = null;\n\n  if (canvas && "ResizeObserver" in window) {\n    observer = new window.ResizeObserver(() => {\n      updateWysiwygStyle();\n    });\n    observer.observe(canvas);\n  } else {\n    window.addEventListener("resize", updateWysiwygStyle);\n  }\n\n  window.addEventListener("pointerdown", onPointerDown);\n  window.addEventListener("wheel", stopEvent, {\n    passive: false,\n    capture: true\n  });\n  window.addEventListener("beforeunload", handleSubmit);\n  excalidrawContainer === null || excalidrawContainer === void 0 ? void 0 : excalidrawContainer.querySelector(".excalidraw-textEditorContainer").appendChild(editable);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 34832 characters]\n//# sourceURL=webpack-internal:///../../element/textWysiwyg.tsx\n');
              }
            ),
            /***/
            "../../element/transformHandles.ts": (
              /*!*****************************************!*\
                !*** ../../element/transformHandles.ts ***!
                \*****************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "OMIT_SIDES_FOR_FRAME": () => (/* binding */ OMIT_SIDES_FOR_FRAME),
/* harmony export */   "OMIT_SIDES_FOR_MULTIPLE_ELEMENTS": () => (/* binding */ OMIT_SIDES_FOR_MULTIPLE_ELEMENTS),
/* harmony export */   "getTransformHandles": () => (/* binding */ getTransformHandles),
/* harmony export */   "getTransformHandlesFromCoords": () => (/* binding */ getTransformHandlesFromCoords),
/* harmony export */   "shouldShowBoundingBox": () => (/* binding */ shouldShowBoundingBox)
/* harmony export */ });
/* harmony import */ var _bounds__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./bounds */ "../../element/bounds.ts");
/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../math */ "../../math.ts");
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! . */ "../../element/index.ts");
/* harmony import */ var _typeChecks__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./typeChecks */ "../../element/typeChecks.ts");
/* harmony import */ var _renderer_renderScene__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../renderer/renderScene */ "../../renderer/renderScene.ts");





const transformHandleSizes = {
  mouse: 8,
  pen: 16,
  touch: 28
};
const ROTATION_RESIZE_HANDLE_GAP = 16;
const OMIT_SIDES_FOR_MULTIPLE_ELEMENTS = {
  e: true,
  s: true,
  n: true,
  w: true
};
const OMIT_SIDES_FOR_FRAME = {
  e: true,
  s: true,
  n: true,
  w: true,
  rotation: true
};
const OMIT_SIDES_FOR_TEXT_ELEMENT = {
  e: true,
  s: true,
  n: true,
  w: true
};
const OMIT_SIDES_FOR_LINE_SLASH = {
  e: true,
  s: true,
  n: true,
  w: true,
  nw: true,
  se: true
};
const OMIT_SIDES_FOR_LINE_BACKSLASH = {
  e: true,
  s: true,
  n: true,
  w: true
};

const generateTransformHandle = (x, y, width, height, cx, cy, angle) => {
  const [xx, yy] = (0,_math__WEBPACK_IMPORTED_MODULE_1__.rotate)(x + width / 2, y + height / 2, cx, cy, angle);
  return [xx - width / 2, yy - height / 2, width, height];
};

const getTransformHandlesFromCoords = ([x1, y1, x2, y2, cx, cy], angle, zoom, pointerType, omitSides = {}, margin = 4) => {
  const size = transformHandleSizes[pointerType];
  const handleWidth = size / zoom.value;
  const handleHeight = size / zoom.value;
  const handleMarginX = size / zoom.value;
  const handleMarginY = size / zoom.value;
  const width = x2 - x1;
  const height = y2 - y1;
  const dashedLineMargin = margin / zoom.value;
  const centeringOffset = (size - _renderer_renderScene__WEBPACK_IMPORTED_MODULE_4__.DEFAULT_SPACING * 2) / (2 * zoom.value);
  const transformHandles = {
    nw: omitSides.nw ? undefined : generateTransformHandle(x1 - dashedLineMargin - handleMarginX + centeringOffset, y1 - dashedLineMargin - handleMarginY + centeringOffset, handleWidth, handleHeight, cx, cy, angle),
    ne: omitSides.ne ? undefined : generateTransformHandle(x2 + dashedLineMargin - centeringOffset, y1 - dashedLineMargin - handleMarginY + centeringOffset, handleWidth, handleHeight, cx, cy, angle),
    sw: omitSides.sw ? undefined : generateTransformHandle(x1 - dashedLineMargin - handleMarginX + centeringOffset, y2 + dashedLineMargin - centeringOffset, handleWidth, handleHeight, cx, cy, angle),
    se: omitSides.se ? undefined : generateTransformHandle(x2 + dashedLineMargin - centeringOffset, y2 + dashedLineMargin - centeringOffset, handleWidth, handleHeight, cx, cy, angle),
    rotation: omitSides.rotation ? undefined : generateTransformHandle(x1 + width / 2 - handleWidth / 2, y1 - dashedLineMargin - handleMarginY + centeringOffset - ROTATION_RESIZE_HANDLE_GAP / zoom.value, handleWidth, handleHeight, cx, cy, angle)
  }; // We only want to show height handles (all cardinal directions)  above a certain size
  // Note: we render using "mouse" size so we should also use "mouse" size for this check

  const minimumSizeForEightHandles = 5 * transformHandleSizes.mouse / zoom.value;

  if (Math.abs(width) > minimumSizeForEightHandles) {
    if (!omitSides.n) {
      transformHandles.n = generateTransformHandle(x1 + width / 2 - handleWidth / 2, y1 - dashedLineMargin - handleMarginY + centeringOffset, handleWidth, handleHeight, cx, cy, angle);
    }

    if (!omitSides.s) {
      transformHandles.s = generateTransformHandle(x1 + width / 2 - handleWidth / 2, y2 + dashedLineMargin - centeringOffset, handleWidth, handleHeight, cx, cy, angle);
    }
  }

  if (Math.abs(height) > minimumSizeForEightHandles) {
    if (!omitSides.w) {
      transformHandles.w = generateTransformHandle(x1 - dashedLineMargin - handleMarginX + centeringOffset, y1 + height / 2 - handleHeight / 2, handleWidth, handleHeight, cx, cy, angle);
    }

    if (!omitSides.e) {
      transformHandles.e = generateTransformHandle(x2 + dashedLineMargin - centeringOffset, y1 + height / 2 - handleHeight / 2, handleWidth, handleHeight, cx, cy, angle);
    }
  }

  return transformHandles;
};
const getTransformHandles = (element, zoom, pointerType = "mouse") => {
  // so that when locked element is selected (especially when you toggle lock
  // via keyboard) the locked element is visually distinct, indicating
  // you can't move/resize
  if (element.locked) {
    return {};
  }

  let omitSides = {};

  if (element.type === "freedraw" || (0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isLinearElement)(element)) {
    if (element.points.length === 2) {
      // only check the last point because starting point is always (0,0)
      const [, p1] = element.points;

      if (p1[0] === 0 || p1[1] === 0) {
        omitSides = OMIT_SIDES_FOR_LINE_BACKSLASH;
      } else if (p1[0] > 0 && p1[1] < 0) {
        omitSides = OMIT_SIDES_FOR_LINE_SLASH;
      } else if (p1[0] > 0 && p1[1] > 0) {
        omitSides = OMIT_SIDES_FOR_LINE_BACKSLASH;
      } else if (p1[0] < 0 && p1[1] > 0) {
        omitSides = OMIT_SIDES_FOR_LINE_SLASH;
      } else if (p1[0] < 0 && p1[1] < 0) {
        omitSides = OMIT_SIDES_FOR_LINE_BACKSLASH;
      }
    }
  } else if ((0,___WEBPACK_IMPORTED_MODULE_2__.isTextElement)(element)) {
    omitSides = OMIT_SIDES_FOR_TEXT_ELEMENT;
  } else if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isFrameElement)(element)) {
    omitSides = {
      rotation: true
    };
  }

  const dashedLineMargin = (0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isLinearElement)(element) ? _renderer_renderScene__WEBPACK_IMPORTED_MODULE_4__.DEFAULT_SPACING + 8 : _renderer_renderScene__WEBPACK_IMPORTED_MODULE_4__.DEFAULT_SPACING;
  return getTransformHandlesFromCoords((0,_bounds__WEBPACK_IMPORTED_MODULE_0__.getElementAbsoluteCoords)(element, true), element.angle, zoom, pointerType, omitSides, dashedLineMargin);
};
const shouldShowBoundingBox = (elements, appState) => {
  if (appState.editingLinearElement) {
    return false;
  }

  if (elements.length > 1) {
    return true;
  }

  const element = elements[0];

  if (!(0,_typeChecks__WEBPACK_IMPORTED_MODULE_3__.isLinearElement)(element)) {
    return true;
  }

  return element.points.length > 2;
};//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 9108 characters]
//# sourceURL=webpack-internal:///../../element/transformHandles.ts
`);
              }
            ),
            /***/
            "../../element/typeChecks.ts": (
              /*!***********************************!*\
                !*** ../../element/typeChecks.ts ***!
                \***********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "canApplyRoundnessTypeToElement": () => (/* binding */ canApplyRoundnessTypeToElement),\n/* harmony export */   "getDefaultRoundnessTypeForElement": () => (/* binding */ getDefaultRoundnessTypeForElement),\n/* harmony export */   "hasBoundTextElement": () => (/* binding */ hasBoundTextElement),\n/* harmony export */   "isArrowElement": () => (/* binding */ isArrowElement),\n/* harmony export */   "isBindableElement": () => (/* binding */ isBindableElement),\n/* harmony export */   "isBindingElement": () => (/* binding */ isBindingElement),\n/* harmony export */   "isBindingElementType": () => (/* binding */ isBindingElementType),\n/* harmony export */   "isBoundToContainer": () => (/* binding */ isBoundToContainer),\n/* harmony export */   "isEmbeddableElement": () => (/* binding */ isEmbeddableElement),\n/* harmony export */   "isExcalidrawElement": () => (/* binding */ isExcalidrawElement),\n/* harmony export */   "isFrameElement": () => (/* binding */ isFrameElement),\n/* harmony export */   "isFreeDrawElement": () => (/* binding */ isFreeDrawElement),\n/* harmony export */   "isFreeDrawElementType": () => (/* binding */ isFreeDrawElementType),\n/* harmony export */   "isGenericElement": () => (/* binding */ isGenericElement),\n/* harmony export */   "isImageElement": () => (/* binding */ isImageElement),\n/* harmony export */   "isInitializedImageElement": () => (/* binding */ isInitializedImageElement),\n/* harmony export */   "isLinearElement": () => (/* binding */ isLinearElement),\n/* harmony export */   "isLinearElementType": () => (/* binding */ isLinearElementType),\n/* harmony export */   "isTextBindableContainer": () => (/* binding */ isTextBindableContainer),\n/* harmony export */   "isTextElement": () => (/* binding */ isTextElement),\n/* harmony export */   "isUsingAdaptiveRadius": () => (/* binding */ isUsingAdaptiveRadius),\n/* harmony export */   "isUsingProportionalRadius": () => (/* binding */ isUsingProportionalRadius)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n\n\nconst isGenericElement = element => {\n  return element != null && (element.type === "selection" || element.type === "rectangle" || element.type === "diamond" || element.type === "ellipse" || element.type === "embeddable");\n};\nconst isInitializedImageElement = element => {\n  return !!element && element.type === "image" && !!element.fileId;\n};\nconst isImageElement = element => {\n  return !!element && element.type === "image";\n};\nconst isEmbeddableElement = element => {\n  return !!element && element.type === "embeddable";\n};\nconst isTextElement = element => {\n  return element != null && element.type === "text";\n};\nconst isFrameElement = element => {\n  return element != null && element.type === "frame";\n};\nconst isFreeDrawElement = element => {\n  return element != null && isFreeDrawElementType(element.type);\n};\nconst isFreeDrawElementType = elementType => {\n  return elementType === "freedraw";\n};\nconst isLinearElement = element => {\n  return element != null && isLinearElementType(element.type);\n};\nconst isArrowElement = element => {\n  return element != null && element.type === "arrow";\n};\nconst isLinearElementType = elementType => {\n  return elementType === "arrow" || elementType === "line" // || elementType === "freedraw"\n  ;\n};\nconst isBindingElement = (element, includeLocked = true) => {\n  return element != null && (!element.locked || includeLocked === true) && isBindingElementType(element.type);\n};\nconst isBindingElementType = elementType => {\n  return elementType === "arrow";\n};\nconst isBindableElement = (element, includeLocked = true) => {\n  return element != null && (!element.locked || includeLocked === true) && (element.type === "rectangle" || element.type === "diamond" || element.type === "ellipse" || element.type === "image" || element.type === "embeddable" || element.type === "frame" || element.type === "text" && !element.containerId);\n};\nconst isTextBindableContainer = (element, includeLocked = true) => {\n  return element != null && (!element.locked || includeLocked === true) && (element.type === "rectangle" || element.type === "diamond" || element.type === "ellipse" || isArrowElement(element));\n};\nconst isExcalidrawElement = element => {\n  const type = element === null || element === void 0 ? void 0 : element.type;\n\n  if (!type) {\n    return false;\n  }\n\n  switch (type) {\n    case "text":\n    case "diamond":\n    case "rectangle":\n    case "embeddable":\n    case "ellipse":\n    case "arrow":\n    case "freedraw":\n    case "line":\n    case "frame":\n    case "image":\n    case "selection":\n      {\n        return true;\n      }\n\n    default:\n      {\n        (0,_utils__WEBPACK_IMPORTED_MODULE_1__.assertNever)(type, null);\n        return false;\n      }\n  }\n};\nconst hasBoundTextElement = element => {\n  var _a;\n\n  return isTextBindableContainer(element) && !!((_a = element.boundElements) === null || _a === void 0 ? void 0 : _a.some(({\n    type\n  }) => type === "text"));\n};\nconst isBoundToContainer = element => {\n  return element !== null && "containerId" in element && element.containerId !== null && isTextElement(element);\n};\nconst isUsingAdaptiveRadius = type => type === "rectangle" || type === "embeddable";\nconst isUsingProportionalRadius = type => type === "line" || type === "arrow" || type === "diamond";\nconst canApplyRoundnessTypeToElement = (roundnessType, element) => {\n  if ((roundnessType === _constants__WEBPACK_IMPORTED_MODULE_0__.ROUNDNESS.ADAPTIVE_RADIUS || // if legacy roundness, it can be applied to elements that currently\n  // use adaptive radius\n  roundnessType === _constants__WEBPACK_IMPORTED_MODULE_0__.ROUNDNESS.LEGACY) && isUsingAdaptiveRadius(element.type)) {\n    return true;\n  }\n\n  if (roundnessType === _constants__WEBPACK_IMPORTED_MODULE_0__.ROUNDNESS.PROPORTIONAL_RADIUS && isUsingProportionalRadius(element.type)) {\n    return true;\n  }\n\n  return false;\n};\nconst getDefaultRoundnessTypeForElement = element => {\n  if (isUsingProportionalRadius(element.type)) {\n    return {\n      type: _constants__WEBPACK_IMPORTED_MODULE_0__.ROUNDNESS.PROPORTIONAL_RADIUS\n    };\n  }\n\n  if (isUsingAdaptiveRadius(element.type)) {\n    return {\n      type: _constants__WEBPACK_IMPORTED_MODULE_0__.ROUNDNESS.ADAPTIVE_RADIUS\n    };\n  }\n\n  return null;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 7032 characters]\n//# sourceURL=webpack-internal:///../../element/typeChecks.ts\n');
              }
            ),
            /***/
            "../../emitter.ts": (
              /*!************************!*\
                !*** ../../emitter.ts ***!
                \************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "Emitter": () => (/* binding */ Emitter)\n/* harmony export */ });\nclass Emitter {\n  constructor(opts) {\n    var _a;\n\n    this.subscribers = [];\n    this.updateOnChangeOnly = (_a = opts === null || opts === void 0 ? void 0 : opts.updateOnChangeOnly) !== null && _a !== void 0 ? _a : false;\n    this.value = opts === null || opts === void 0 ? void 0 : opts.initialState;\n  }\n  /**\n   * Attaches subscriber\n   *\n   * @returns unsubscribe function\n   */\n\n\n  on(...handlers) {\n    const _handlers = handlers.flat().filter(item => typeof item === "function");\n\n    this.subscribers.push(..._handlers);\n    return () => this.off(_handlers);\n  }\n\n  off(...handlers) {\n    const _handlers = handlers.flat();\n\n    this.subscribers = this.subscribers.filter(handler => !_handlers.includes(handler));\n  }\n\n  trigger(...payload) {\n    if (this.updateOnChangeOnly && this.value === payload) {\n      return [];\n    }\n\n    this.value = payload;\n    return this.subscribers.map(handler => handler(...payload));\n  }\n\n  destroy() {\n    this.subscribers = [];\n    this.value = undefined;\n  }\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZW1pdHRlci50cy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9lbWl0dGVyLnRzPzE2YzEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvcihvcHRzKSB7XG4gICAgdmFyIF9hO1xuXG4gICAgdGhpcy5zdWJzY3JpYmVycyA9IFtdO1xuICAgIHRoaXMudXBkYXRlT25DaGFuZ2VPbmx5ID0gKF9hID0gb3B0cyA9PT0gbnVsbCB8fCBvcHRzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRzLnVwZGF0ZU9uQ2hhbmdlT25seSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogZmFsc2U7XG4gICAgdGhpcy52YWx1ZSA9IG9wdHMgPT09IG51bGwgfHwgb3B0cyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0cy5pbml0aWFsU3RhdGU7XG4gIH1cbiAgLyoqXG4gICAqIEF0dGFjaGVzIHN1YnNjcmliZXJcbiAgICpcbiAgICogQHJldHVybnMgdW5zdWJzY3JpYmUgZnVuY3Rpb25cbiAgICovXG5cblxuICBvbiguLi5oYW5kbGVycykge1xuICAgIGNvbnN0IF9oYW5kbGVycyA9IGhhbmRsZXJzLmZsYXQoKS5maWx0ZXIoaXRlbSA9PiB0eXBlb2YgaXRlbSA9PT0gXCJmdW5jdGlvblwiKTtcblxuICAgIHRoaXMuc3Vic2NyaWJlcnMucHVzaCguLi5faGFuZGxlcnMpO1xuICAgIHJldHVybiAoKSA9PiB0aGlzLm9mZihfaGFuZGxlcnMpO1xuICB9XG5cbiAgb2ZmKC4uLmhhbmRsZXJzKSB7XG4gICAgY29uc3QgX2hhbmRsZXJzID0gaGFuZGxlcnMuZmxhdCgpO1xuXG4gICAgdGhpcy5zdWJzY3JpYmVycyA9IHRoaXMuc3Vic2NyaWJlcnMuZmlsdGVyKGhhbmRsZXIgPT4gIV9oYW5kbGVycy5pbmNsdWRlcyhoYW5kbGVyKSk7XG4gIH1cblxuICB0cmlnZ2VyKC4uLnBheWxvYWQpIHtcbiAgICBpZiAodGhpcy51cGRhdGVPbkNoYW5nZU9ubHkgJiYgdGhpcy52YWx1ZSA9PT0gcGF5bG9hZCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIHRoaXMudmFsdWUgPSBwYXlsb2FkO1xuICAgIHJldHVybiB0aGlzLnN1YnNjcmliZXJzLm1hcChoYW5kbGVyID0+IGhhbmRsZXIoLi4ucGF5bG9hZCkpO1xuICB9XG5cbiAgZGVzdHJveSgpIHtcbiAgICB0aGlzLnN1YnNjcmliZXJzID0gW107XG4gICAgdGhpcy52YWx1ZSA9IHVuZGVmaW5lZDtcbiAgfVxuXG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../emitter.ts\n');
              }
            ),
            /***/
            "../../errors.ts": (
              /*!***********************!*\
                !*** ../../errors.ts ***!
                \***********************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "AbortError": () => (/* binding */ AbortError),
/* harmony export */   "CanvasError": () => (/* binding */ CanvasError),
/* harmony export */   "ImageSceneDataError": () => (/* binding */ ImageSceneDataError)
/* harmony export */ });
class CanvasError extends Error {
  constructor(message = "Couldn't export canvas.", name = "CANVAS_ERROR") {
    super();
    this.name = name;
    this.message = message;
  }

}
class AbortError extends DOMException {
  constructor(message = "Request Aborted") {
    super(message, "AbortError");
  }

}
class ImageSceneDataError extends Error {
  constructor(message = "Image Scene Data Error", code = "IMAGE_SCENE_DATA_ERROR") {
    super(message);
    this.name = "EncodingError";
    this.code = code;
  }

}//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZXJyb3JzLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2Vycm9ycy50cz80OTg2Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBDYW52YXNFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZSA9IFwiQ291bGRuJ3QgZXhwb3J0IGNhbnZhcy5cIiwgbmFtZSA9IFwiQ0FOVkFTX0VSUk9SXCIpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZTtcbiAgfVxuXG59XG5leHBvcnQgY2xhc3MgQWJvcnRFcnJvciBleHRlbmRzIERPTUV4Y2VwdGlvbiB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2UgPSBcIlJlcXVlc3QgQWJvcnRlZFwiKSB7XG4gICAgc3VwZXIobWVzc2FnZSwgXCJBYm9ydEVycm9yXCIpO1xuICB9XG5cbn1cbmV4cG9ydCBjbGFzcyBJbWFnZVNjZW5lRGF0YUVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlID0gXCJJbWFnZSBTY2VuZSBEYXRhIEVycm9yXCIsIGNvZGUgPSBcIklNQUdFX1NDRU5FX0RBVEFfRVJST1JcIikge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubmFtZSA9IFwiRW5jb2RpbmdFcnJvclwiO1xuICAgIHRoaXMuY29kZSA9IGNvZGU7XG4gIH1cblxufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==
//# sourceURL=webpack-internal:///../../errors.ts
`);
              }
            ),
            /***/
            "../../frame.ts": (
              /*!**********************!*\
                !*** ../../frame.ts ***!
                \**********************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "addElementsToFrame": () => (/* binding */ addElementsToFrame),
/* harmony export */   "bindElementsToFramesAfterDuplication": () => (/* binding */ bindElementsToFramesAfterDuplication),
/* harmony export */   "elementOverlapsWithFrame": () => (/* binding */ elementOverlapsWithFrame),
/* harmony export */   "elementsAreInFrameBounds": () => (/* binding */ elementsAreInFrameBounds),
/* harmony export */   "getContainingFrame": () => (/* binding */ getContainingFrame),
/* harmony export */   "getElementsCompletelyInFrame": () => (/* binding */ getElementsCompletelyInFrame),
/* harmony export */   "getElementsInNewFrame": () => (/* binding */ getElementsInNewFrame),
/* harmony export */   "getElementsInResizingFrame": () => (/* binding */ getElementsInResizingFrame),
/* harmony export */   "getElementsIntersectingFrame": () => (/* binding */ getElementsIntersectingFrame),
/* harmony export */   "getFrameChildren": () => (/* binding */ getFrameChildren),
/* harmony export */   "getFrameElements": () => (/* binding */ getFrameElements),
/* harmony export */   "getRootElements": () => (/* binding */ getRootElements),
/* harmony export */   "getTargetFrame": () => (/* binding */ getTargetFrame),
/* harmony export */   "groupByFrames": () => (/* binding */ groupByFrames),
/* harmony export */   "groupsAreAtLeastIntersectingTheFrame": () => (/* binding */ groupsAreAtLeastIntersectingTheFrame),
/* harmony export */   "groupsAreCompletelyOutOfFrame": () => (/* binding */ groupsAreCompletelyOutOfFrame),
/* harmony export */   "isCursorInFrame": () => (/* binding */ isCursorInFrame),
/* harmony export */   "isElementContainingFrame": () => (/* binding */ isElementContainingFrame),
/* harmony export */   "isElementInFrame": () => (/* binding */ isElementInFrame),
/* harmony export */   "isElementIntersectingFrame": () => (/* binding */ isElementIntersectingFrame),
/* harmony export */   "omitGroupsContainingFrames": () => (/* binding */ omitGroupsContainingFrames),
/* harmony export */   "removeAllElementsFromFrame": () => (/* binding */ removeAllElementsFromFrame),
/* harmony export */   "removeElementsFromFrame": () => (/* binding */ removeElementsFromFrame),
/* harmony export */   "replaceAllElementsInFrame": () => (/* binding */ replaceAllElementsInFrame),
/* harmony export */   "updateFrameMembershipOfSelectedElements": () => (/* binding */ updateFrameMembershipOfSelectedElements)
/* harmony export */ });
/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./element */ "../../element/index.ts");
/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./math */ "../../math.ts");
/* harmony import */ var _element_textElement__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./element/textElement */ "../../element/textElement.ts");
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils */ "../../utils.ts");
/* harmony import */ var _element_mutateElement__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./element/mutateElement */ "../../element/mutateElement.ts");
/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./scene */ "../../scene/index.ts");
/* harmony import */ var _groups__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./groups */ "../../groups.ts");
/* harmony import */ var _scene_Scene__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./scene/Scene */ "../../scene/Scene.ts");
/* harmony import */ var _element_bounds__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./element/bounds */ "../../element/bounds.ts");
/* harmony import */ var _packages_utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./packages/utils */ "../utils.ts");










 // --------------------------- Frame State ------------------------------------

const bindElementsToFramesAfterDuplication = (nextElements, oldElements, oldIdToDuplicatedId) => {
  const nextElementMap = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.arrayToMap)(nextElements);

  for (const element of oldElements) {
    if (element.frameId) {
      // use its frameId to get the new frameId
      const nextElementId = oldIdToDuplicatedId.get(element.id);
      const nextFrameId = oldIdToDuplicatedId.get(element.frameId);

      if (nextElementId) {
        const nextElement = nextElementMap.get(nextElementId);

        if (nextElement) {
          (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_4__.mutateElement)(nextElement, {
            frameId: nextFrameId !== null && nextFrameId !== void 0 ? nextFrameId : element.frameId
          }, false);
        }
      }
    }
  }
};
function isElementIntersectingFrame(element, frame) {
  const frameLineSegments = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_8__.getElementLineSegments)(frame);
  const elementLineSegments = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_8__.getElementLineSegments)(element);
  const intersecting = frameLineSegments.some(frameLineSegment => elementLineSegments.some(elementLineSegment => (0,_packages_utils__WEBPACK_IMPORTED_MODULE_9__.doLineSegmentsIntersect)(frameLineSegment, elementLineSegment)));
  return intersecting;
}
const getElementsCompletelyInFrame = (elements, frame) => omitGroupsContainingFrames((0,_scene__WEBPACK_IMPORTED_MODULE_5__.getElementsWithinSelection)(elements, frame, false)).filter(element => element.type !== "frame" && !element.frameId || element.frameId === frame.id);
const isElementContainingFrame = (elements, element, frame) => {
  return (0,_scene__WEBPACK_IMPORTED_MODULE_5__.getElementsWithinSelection)(elements, element).some(e => e.id === frame.id);
};
const getElementsIntersectingFrame = (elements, frame) => elements.filter(element => isElementIntersectingFrame(element, frame));
const elementsAreInFrameBounds = (elements, frame) => {
  const [selectionX1, selectionY1, selectionX2, selectionY2] = (0,_element__WEBPACK_IMPORTED_MODULE_0__.getElementAbsoluteCoords)(frame);
  const [elementX1, elementY1, elementX2, elementY2] = (0,_element__WEBPACK_IMPORTED_MODULE_0__.getCommonBounds)(elements);
  return selectionX1 <= elementX1 && selectionY1 <= elementY1 && selectionX2 >= elementX2 && selectionY2 >= elementY2;
};
const elementOverlapsWithFrame = (element, frame) => {
  return elementsAreInFrameBounds([element], frame) || isElementIntersectingFrame(element, frame) || isElementContainingFrame([frame], element, frame);
};
const isCursorInFrame = (cursorCoords, frame) => {
  const [fx1, fy1, fx2, fy2] = (0,_element__WEBPACK_IMPORTED_MODULE_0__.getElementAbsoluteCoords)(frame);
  return (0,_math__WEBPACK_IMPORTED_MODULE_1__.isPointWithinBounds)([fx1, fy1], [cursorCoords.x, cursorCoords.y], [fx2, fy2]);
};
const groupsAreAtLeastIntersectingTheFrame = (elements, groupIds, frame) => {
  const elementsInGroup = groupIds.flatMap(groupId => (0,_groups__WEBPACK_IMPORTED_MODULE_6__.getElementsInGroup)(elements, groupId));

  if (elementsInGroup.length === 0) {
    return true;
  }

  return !!elementsInGroup.find(element => elementsAreInFrameBounds([element], frame) || isElementIntersectingFrame(element, frame));
};
const groupsAreCompletelyOutOfFrame = (elements, groupIds, frame) => {
  const elementsInGroup = groupIds.flatMap(groupId => (0,_groups__WEBPACK_IMPORTED_MODULE_6__.getElementsInGroup)(elements, groupId));

  if (elementsInGroup.length === 0) {
    return true;
  }

  return elementsInGroup.find(element => elementsAreInFrameBounds([element], frame) || isElementIntersectingFrame(element, frame)) === undefined;
}; // --------------------------- Frame Utils ------------------------------------

/**
 * Returns a map of frameId to frame elements. Includes empty frames.
 */

const groupByFrames = elements => {
  const frameElementsMap = new Map();

  for (const element of elements) {
    const frameId = (0,_element__WEBPACK_IMPORTED_MODULE_0__.isFrameElement)(element) ? element.id : element.frameId;

    if (frameId && !frameElementsMap.has(frameId)) {
      frameElementsMap.set(frameId, getFrameChildren(elements, frameId));
    }
  }

  return frameElementsMap;
};
const getFrameChildren = (allElements, frameId) => allElements.filter(element => element.frameId === frameId);
const getFrameElements = allElements => {
  return allElements.filter(element => (0,_element__WEBPACK_IMPORTED_MODULE_0__.isFrameElement)(element));
};
/**
 * Returns ExcalidrawFrameElements and non-frame-children elements.
 *
 * Considers children as root elements if they point to a frame parent
 * non-existing in the elements set.
 *
 * Considers non-frame bound elements (container or arrow labels) as root.
 */

const getRootElements = allElements => {
  const frameElements = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.arrayToMap)(getFrameElements(allElements));
  return allElements.filter(element => frameElements.has(element.id) || !element.frameId || !frameElements.has(element.frameId));
};
const getElementsInResizingFrame = (allElements, frame, appState) => {
  const prevElementsInFrame = getFrameChildren(allElements, frame.id);
  const nextElementsInFrame = new Set(prevElementsInFrame);
  const elementsCompletelyInFrame = new Set([...getElementsCompletelyInFrame(allElements, frame), ...prevElementsInFrame.filter(element => isElementContainingFrame(allElements, element, frame))]);
  const elementsNotCompletelyInFrame = prevElementsInFrame.filter(element => !elementsCompletelyInFrame.has(element)); // for elements that are completely in the frame
  // if they are part of some groups, then those groups are still
  // considered to belong to the frame

  const groupsToKeep = new Set(Array.from(elementsCompletelyInFrame).flatMap(element => element.groupIds));

  for (const element of elementsNotCompletelyInFrame) {
    if (!isElementIntersectingFrame(element, frame)) {
      if (element.groupIds.length === 0) {
        nextElementsInFrame.delete(element);
      }
    } else if (element.groupIds.length > 0) {
      // group element intersects with the frame, we should keep the groups
      // that this element is part of
      for (const id of element.groupIds) {
        groupsToKeep.add(id);
      }
    }
  }

  for (const element of elementsNotCompletelyInFrame) {
    if (element.groupIds.length > 0) {
      let shouldRemoveElement = true;

      for (const id of element.groupIds) {
        if (groupsToKeep.has(id)) {
          shouldRemoveElement = false;
        }
      }

      if (shouldRemoveElement) {
        nextElementsInFrame.delete(element);
      }
    }
  }

  const individualElementsCompletelyInFrame = Array.from(elementsCompletelyInFrame).filter(element => element.groupIds.length === 0);

  for (const element of individualElementsCompletelyInFrame) {
    nextElementsInFrame.add(element);
  }

  const newGroupElementsCompletelyInFrame = Array.from(elementsCompletelyInFrame).filter(element => element.groupIds.length > 0);
  const groupIds = (0,_groups__WEBPACK_IMPORTED_MODULE_6__.selectGroupsFromGivenElements)(newGroupElementsCompletelyInFrame, appState); // new group elements

  for (const [id, isSelected] of Object.entries(groupIds)) {
    if (isSelected) {
      const elementsInGroup = (0,_groups__WEBPACK_IMPORTED_MODULE_6__.getElementsInGroup)(allElements, id);

      if (elementsAreInFrameBounds(elementsInGroup, frame)) {
        for (const element of elementsInGroup) {
          nextElementsInFrame.add(element);
        }
      }
    }
  }

  return [...nextElementsInFrame].filter(element => {
    return !((0,_element__WEBPACK_IMPORTED_MODULE_0__.isTextElement)(element) && element.containerId);
  });
};
const getElementsInNewFrame = (allElements, frame) => {
  return omitGroupsContainingFrames(allElements, getElementsCompletelyInFrame(allElements, frame));
};
const getContainingFrame = (element,
/**
 * Optionally an elements map, in case the elements aren't in the Scene yet.
 * Takes precedence over Scene elements, even if the element exists
 * in Scene elements and not the supplied elements map.
 */
elementsMap) => {
  var _a;

  if (element.frameId) {
    if (elementsMap) {
      return elementsMap.get(element.frameId) || null;
    }

    return ((_a = _scene_Scene__WEBPACK_IMPORTED_MODULE_7__["default"].getScene(element)) === null || _a === void 0 ? void 0 : _a.getElement(element.frameId)) || null;
  }

  return null;
}; // --------------------------- Frame Operations -------------------------------

/**
 * Retains (or repairs for target frame) the ordering invriant where children
 * elements come right before the parent frame:
 * [el, el, child, child, frame, el]
 */

const addElementsToFrame = (allElements, elementsToAdd, frame) => {
  const {
    currTargetFrameChildrenMap
  } = allElements.reduce((acc, element, index) => {
    if (element.frameId === frame.id) {
      acc.currTargetFrameChildrenMap.set(element.id, true);
    }

    return acc;
  }, {
    currTargetFrameChildrenMap: new Map()
  });
  const suppliedElementsToAddSet = new Set(elementsToAdd.map(el => el.id));
  const finalElementsToAdd = []; // - add bound text elements if not already in the array
  // - filter out elements that are already in the frame

  for (const element of omitGroupsContainingFrames(allElements, elementsToAdd)) {
    if (!currTargetFrameChildrenMap.has(element.id)) {
      finalElementsToAdd.push(element);
    }

    const boundTextElement = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_2__.getBoundTextElement)(element);

    if (boundTextElement && !suppliedElementsToAddSet.has(boundTextElement.id) && !currTargetFrameChildrenMap.has(boundTextElement.id)) {
      finalElementsToAdd.push(boundTextElement);
    }
  }

  for (const element of finalElementsToAdd) {
    (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_4__.mutateElement)(element, {
      frameId: frame.id
    }, false);
  }

  return allElements.slice();
};
const removeElementsFromFrame = (allElements, elementsToRemove, appState) => {
  const _elementsToRemove = new Map();

  const toRemoveElementsByFrame = new Map();

  for (const element of elementsToRemove) {
    if (element.frameId) {
      _elementsToRemove.set(element.id, element);

      const arr = toRemoveElementsByFrame.get(element.frameId) || [];
      arr.push(element);
      const boundTextElement = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_2__.getBoundTextElement)(element);

      if (boundTextElement) {
        _elementsToRemove.set(boundTextElement.id, boundTextElement);

        arr.push(boundTextElement);
      }

      toRemoveElementsByFrame.set(element.frameId, arr);
    }
  }

  for (const [, element] of _elementsToRemove) {
    (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_4__.mutateElement)(element, {
      frameId: null
    }, false);
  }

  return allElements.slice();
};
const removeAllElementsFromFrame = (allElements, frame, appState) => {
  const elementsInFrame = getFrameChildren(allElements, frame.id);
  return removeElementsFromFrame(allElements, elementsInFrame, appState);
};
const replaceAllElementsInFrame = (allElements, nextElementsInFrame, frame, appState) => {
  return addElementsToFrame(removeAllElementsFromFrame(allElements, frame, appState), nextElementsInFrame, frame);
};
/** does not mutate elements, but returns new ones */

const updateFrameMembershipOfSelectedElements = (allElements, appState, app) => {
  const selectedElements = app.scene.getSelectedElements({
    selectedElementIds: appState.selectedElementIds,
    // supplying elements explicitly in case we're passed non-state elements
    elements: allElements
  });
  const elementsToFilter = new Set(selectedElements);

  if (appState.editingGroupId) {
    for (const element of selectedElements) {
      if (element.groupIds.length === 0) {
        elementsToFilter.add(element);
      } else {
        element.groupIds.flatMap(gid => (0,_groups__WEBPACK_IMPORTED_MODULE_6__.getElementsInGroup)(allElements, gid)).forEach(element => elementsToFilter.add(element));
      }
    }
  }

  const elementsToRemove = new Set();
  elementsToFilter.forEach(element => {
    if (element.frameId && !(0,_element__WEBPACK_IMPORTED_MODULE_0__.isFrameElement)(element) && !isElementInFrame(element, allElements, appState)) {
      elementsToRemove.add(element);
    }
  });
  return elementsToRemove.size > 0 ? removeElementsFromFrame(allElements, [...elementsToRemove], appState) : allElements;
};
/**
 * filters out elements that are inside groups that contain a frame element
 * anywhere in the group tree
 */

const omitGroupsContainingFrames = (allElements,
/** subset of elements you want to filter. Optional perf optimization so we
 * don't have to filter all elements unnecessarily
 */
selectedElements) => {
  const uniqueGroupIds = new Set();

  for (const el of selectedElements || allElements) {
    const topMostGroupId = el.groupIds[el.groupIds.length - 1];

    if (topMostGroupId) {
      uniqueGroupIds.add(topMostGroupId);
    }
  }

  const rejectedGroupIds = new Set();

  for (const groupId of uniqueGroupIds) {
    if ((0,_groups__WEBPACK_IMPORTED_MODULE_6__.getElementsInGroup)(allElements, groupId).some(el => (0,_element__WEBPACK_IMPORTED_MODULE_0__.isFrameElement)(el))) {
      rejectedGroupIds.add(groupId);
    }
  }

  return (selectedElements || allElements).filter(el => !rejectedGroupIds.has(el.groupIds[el.groupIds.length - 1]));
};
/**
 * depending on the appState, return target frame, which is the frame the given element
 * is going to be added to or remove from
 */

const getTargetFrame = (element, appState) => {
  const _element = (0,_element__WEBPACK_IMPORTED_MODULE_0__.isTextElement)(element) ? (0,_element_textElement__WEBPACK_IMPORTED_MODULE_2__.getContainerElement)(element) || element : element;

  return appState.selectedElementIds[_element.id] && appState.selectedElementsAreBeingDragged ? appState.frameToHighlight : getContainingFrame(_element);
}; // TODO: this a huge bottleneck for large scenes, optimise
// given an element, return if the element is in some frame

const isElementInFrame = (element, allElements, appState) => {
  const frame = getTargetFrame(element, appState);

  const _element = (0,_element__WEBPACK_IMPORTED_MODULE_0__.isTextElement)(element) ? (0,_element_textElement__WEBPACK_IMPORTED_MODULE_2__.getContainerElement)(element) || element : element;

  if (frame) {
    // Perf improvement:
    // For an element that's already in a frame, if it's not being dragged
    // then there is no need to refer to geometry (which, yes, is slow) to check if it's in a frame.
    // It has to be in its containing frame.
    if (!appState.selectedElementIds[element.id] || !appState.selectedElementsAreBeingDragged) {
      return true;
    }

    if (_element.groupIds.length === 0) {
      return elementOverlapsWithFrame(_element, frame);
    }

    const allElementsInGroup = new Set(_element.groupIds.flatMap(gid => (0,_groups__WEBPACK_IMPORTED_MODULE_6__.getElementsInGroup)(allElements, gid)));

    if (appState.editingGroupId && appState.selectedElementsAreBeingDragged) {
      const selectedElements = new Set((0,_scene__WEBPACK_IMPORTED_MODULE_5__.getSelectedElements)(allElements, appState));
      const editingGroupOverlapsFrame = appState.frameToHighlight !== null;

      if (editingGroupOverlapsFrame) {
        return true;
      }

      selectedElements.forEach(selectedElement => {
        allElementsInGroup.delete(selectedElement);
      });
    }

    for (const elementInGroup of allElementsInGroup) {
      if ((0,_element__WEBPACK_IMPORTED_MODULE_0__.isFrameElement)(elementInGroup)) {
        return false;
      }
    }

    for (const elementInGroup of allElementsInGroup) {
      if (elementOverlapsWithFrame(elementInGroup, frame)) {
        return true;
      }
    }
  }

  return false;
};//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 24240 characters]
//# sourceURL=webpack-internal:///../../frame.ts
`);
              }
            ),
            /***/
            "../../ga.ts": (
              /*!*******************!*\
                !*** ../../ga.ts ***!
                \*******************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "E0": () => (/* binding */ E0),\n/* harmony export */   "E01": () => (/* binding */ E01),\n/* harmony export */   "E012": () => (/* binding */ E012),\n/* harmony export */   "E1": () => (/* binding */ E1),\n/* harmony export */   "E12": () => (/* binding */ E12),\n/* harmony export */   "E2": () => (/* binding */ E2),\n/* harmony export */   "E20": () => (/* binding */ E20),\n/* harmony export */   "I": () => (/* binding */ I),\n/* harmony export */   "add": () => (/* binding */ add),\n/* harmony export */   "conjugate": () => (/* binding */ conjugate),\n/* harmony export */   "direction": () => (/* binding */ direction),\n/* harmony export */   "dot": () => (/* binding */ dot),\n/* harmony export */   "dual": () => (/* binding */ dual),\n/* harmony export */   "inorm": () => (/* binding */ inorm),\n/* harmony export */   "inormalized": () => (/* binding */ inormalized),\n/* harmony export */   "involute": () => (/* binding */ involute),\n/* harmony export */   "join": () => (/* binding */ join),\n/* harmony export */   "joinScalar": () => (/* binding */ joinScalar),\n/* harmony export */   "meet": () => (/* binding */ meet),\n/* harmony export */   "mul": () => (/* binding */ mul),\n/* harmony export */   "mulScalar": () => (/* binding */ mulScalar),\n/* harmony export */   "norm": () => (/* binding */ norm),\n/* harmony export */   "normalized": () => (/* binding */ normalized),\n/* harmony export */   "nvector": () => (/* binding */ nvector),\n/* harmony export */   "offset": () => (/* binding */ offset),\n/* harmony export */   "origin": () => (/* binding */ origin),\n/* harmony export */   "point": () => (/* binding */ point),\n/* harmony export */   "reverse": () => (/* binding */ reverse),\n/* harmony export */   "sub": () => (/* binding */ sub),\n/* harmony export */   "toString": () => (/* binding */ toString)\n/* harmony export */ });\n/**\n * This is a 2D Projective Geometric Algebra implementation.\n *\n * For wider context on geometric algebra visit see https://bivector.net.\n *\n * For this specific algebra see cheatsheet https://bivector.net/2DPGA.pdf.\n *\n * Converted from generator written by enki, with a ton of added on top.\n *\n * This library uses 8-vectors to represent points, directions and lines\n * in 2D space.\n *\n * An array `[a, b, c, d, e, f, g, h]` represents a n(8)vector:\n *   a + b*e0 + c*e1 + d*e2 + e*e01 + f*e20 + g*e12 + h*e012\n *\n * See GAPoint, GALine, GADirection and GATransform modules for common\n * operations.\n */\nconst point = (x, y) => [0, 0, 0, 0, y, x, 1, 0];\nconst origin = () => [0, 0, 0, 0, 0, 0, 1, 0];\nconst direction = (x, y) => {\n  const norm = Math.hypot(x, y); // same as `inorm(direction(x, y))`\n\n  return [0, 0, 0, 0, y / norm, x / norm, 0, 0];\n};\nconst offset = (x, y) => [0, 0, 0, 0, y, x, 0, 0]; // These are labels for what each number in an nvector represents\n\nconst NVECTOR_BASE = ["1", "e0", "e1", "e2", "e01", "e20", "e12", "e012"]; // Used to represent points, lines and transformations\n\nconst nvector = (value = 0, index = 0) => {\n  const result = [0, 0, 0, 0, 0, 0, 0, 0];\n\n  if (index < 0 || index > 7) {\n    throw new Error(`Expected \\`index\\` between 0 and 7, got \\`${index}\\``);\n  }\n\n  if (value !== 0) {\n    result[index] = value;\n  }\n\n  return result;\n};\nconst STRING_EPSILON = 0.000001;\nconst toString = nvector => {\n  const result = nvector.map((value, index) => Math.abs(value) > STRING_EPSILON ? value.toFixed(7).replace(/(\\.|0+)$/, "") + (index > 0 ? NVECTOR_BASE[index] : "") : null).filter(representation => representation != null).join(" + ");\n  return result === "" ? "0" : result;\n}; // Reverse the order of the basis blades.\n\nconst reverse = nvector => [nvector[0], nvector[1], nvector[2], nvector[3], -nvector[4], -nvector[5], -nvector[6], -nvector[7]]; // Poincare duality operator.\n\nconst dual = nvector => [nvector[7], nvector[6], nvector[5], nvector[4], nvector[3], nvector[2], nvector[1], nvector[0]]; // Clifford Conjugation\n\nconst conjugate = nvector => [nvector[0], -nvector[1], -nvector[2], -nvector[3], -nvector[4], -nvector[5], -nvector[6], nvector[7]]; // Main involution\n\nconst involute = nvector => [nvector[0], -nvector[1], -nvector[2], -nvector[3], nvector[4], nvector[5], nvector[6], -nvector[7]]; // Multivector addition\n\nconst add = (a, b) => {\n  if (isNumber(b)) {\n    return [a[0] + b, a[1], a[2], a[3], a[4], a[5], a[6], a[7]];\n  }\n\n  return [a[0] + b[0], a[1] + b[1], a[2] + b[2], a[3] + b[3], a[4] + b[4], a[5] + b[5], a[6] + b[6], a[7] + b[7]];\n}; // Multivector subtraction\n\nconst sub = (a, b) => {\n  if (isNumber(b)) {\n    return [a[0] - b, a[1], a[2], a[3], a[4], a[5], a[6], a[7]];\n  }\n\n  return [a[0] - b[0], a[1] - b[1], a[2] - b[2], a[3] - b[3], a[4] - b[4], a[5] - b[5], a[6] - b[6], a[7] - b[7]];\n}; // The geometric product.\n\nconst mul = (a, b) => {\n  if (isNumber(b)) {\n    return [a[0] * b, a[1] * b, a[2] * b, a[3] * b, a[4] * b, a[5] * b, a[6] * b, a[7] * b];\n  }\n\n  return [mulScalar(a, b), b[1] * a[0] + b[0] * a[1] - b[4] * a[2] + b[5] * a[3] + b[2] * a[4] - b[3] * a[5] - b[7] * a[6] - b[6] * a[7], b[2] * a[0] + b[0] * a[2] - b[6] * a[3] + b[3] * a[6], b[3] * a[0] + b[6] * a[2] + b[0] * a[3] - b[2] * a[6], b[4] * a[0] + b[2] * a[1] - b[1] * a[2] + b[7] * a[3] + b[0] * a[4] + b[6] * a[5] - b[5] * a[6] + b[3] * a[7], b[5] * a[0] - b[3] * a[1] + b[7] * a[2] + b[1] * a[3] - b[6] * a[4] + b[0] * a[5] + b[4] * a[6] + b[2] * a[7], b[6] * a[0] + b[3] * a[2] - b[2] * a[3] + b[0] * a[6], b[7] * a[0] + b[6] * a[1] + b[5] * a[2] + b[4] * a[3] + b[3] * a[4] + b[2] * a[5] + b[1] * a[6] + b[0] * a[7]];\n};\nconst mulScalar = (a, b) => b[0] * a[0] + b[2] * a[2] + b[3] * a[3] - b[6] * a[6]; // The outer/exterior/wedge product.\n\nconst meet = (a, b) => [b[0] * a[0], b[1] * a[0] + b[0] * a[1], b[2] * a[0] + b[0] * a[2], b[3] * a[0] + b[0] * a[3], b[4] * a[0] + b[2] * a[1] - b[1] * a[2] + b[0] * a[4], b[5] * a[0] - b[3] * a[1] + b[1] * a[3] + b[0] * a[5], b[6] * a[0] + b[3] * a[2] - b[2] * a[3] + b[0] * a[6], b[7] * a[0] + b[6] * a[1] + b[5] * a[2] + b[4] * a[3] + b[3] * a[4] + b[2] * a[5] + b[1] * a[6]]; // The regressive product.\n\nconst join = (a, b) => [joinScalar(a, b), a[1] * b[7] + a[4] * b[5] - a[5] * b[4] + a[7] * b[1], a[2] * b[7] - a[4] * b[6] + a[6] * b[4] + a[7] * b[2], a[3] * b[7] + a[5] * b[6] - a[6] * b[5] + a[7] * b[3], a[4] * b[7] + a[7] * b[4], a[5] * b[7] + a[7] * b[5], a[6] * b[7] + a[7] * b[6], a[7] * b[7]];\nconst joinScalar = (a, b) => a[0] * b[7] + a[1] * b[6] + a[2] * b[5] + a[3] * b[4] + a[4] * b[3] + a[5] * b[2] + a[6] * b[1] + a[7] * b[0]; // The inner product.\n\nconst dot = (a, b) => [b[0] * a[0] + b[2] * a[2] + b[3] * a[3] - b[6] * a[6], b[1] * a[0] + b[0] * a[1] - b[4] * a[2] + b[5] * a[3] + b[2] * a[4] - b[3] * a[5] - b[7] * a[6] - b[6] * a[7], b[2] * a[0] + b[0] * a[2] - b[6] * a[3] + b[3] * a[6], b[3] * a[0] + b[6] * a[2] + b[0] * a[3] - b[2] * a[6], b[4] * a[0] + b[7] * a[3] + b[0] * a[4] + b[3] * a[7], b[5] * a[0] + b[7] * a[2] + b[0] * a[5] + b[2] * a[7], b[6] * a[0] + b[0] * a[6], b[7] * a[0] + b[0] * a[7]];\nconst norm = a => Math.sqrt(Math.abs(a[0] * a[0] - a[2] * a[2] - a[3] * a[3] + a[6] * a[6]));\nconst inorm = a => Math.sqrt(Math.abs(a[7] * a[7] - a[5] * a[5] - a[4] * a[4] + a[1] * a[1]));\nconst normalized = a => {\n  const n = norm(a);\n\n  if (n === 0 || n === 1) {\n    return a;\n  }\n\n  const sign = a[6] < 0 ? -1 : 1;\n  return mul(a, sign / n);\n};\nconst inormalized = a => {\n  const n = inorm(a);\n\n  if (n === 0 || n === 1) {\n    return a;\n  }\n\n  return mul(a, 1 / n);\n};\n\nconst isNumber = a => typeof a === "number";\n\nconst E0 = nvector(1, 1);\nconst E1 = nvector(1, 2);\nconst E2 = nvector(1, 3);\nconst E01 = nvector(1, 4);\nconst E20 = nvector(1, 5);\nconst E12 = nvector(1, 6);\nconst E012 = nvector(1, 7);\nconst I = E012;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 9336 characters]\n//# sourceURL=webpack-internal:///../../ga.ts\n');
              }
            ),
            /***/
            "../../gadirections.ts": (
              /*!*****************************!*\
                !*** ../../gadirections.ts ***!
                \*****************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "from": () => (/* binding */ from),\n/* harmony export */   "fromTo": () => (/* binding */ fromTo),\n/* harmony export */   "orthogonal": () => (/* binding */ orthogonal),\n/* harmony export */   "orthogonalToLine": () => (/* binding */ orthogonalToLine)\n/* harmony export */ });\n/* harmony import */ var _ga__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ga */ "../../ga.ts");\n\n/**\n * A direction is stored as an array `[0, 0, 0, 0, y, x, 0, 0]` representing\n * vector `(x, y)`.\n */\n\nconst from = point => [0, 0, 0, 0, point[4], point[5], 0, 0];\nconst fromTo = (from, to) => _ga__WEBPACK_IMPORTED_MODULE_0__.inormalized([0, 0, 0, 0, to[4] - from[4], to[5] - from[5], 0, 0]);\nconst orthogonal = direction => _ga__WEBPACK_IMPORTED_MODULE_0__.inormalized([0, 0, 0, 0, -direction[5], direction[4], 0, 0]);\nconst orthogonalToLine = line => _ga__WEBPACK_IMPORTED_MODULE_0__.mul(line, _ga__WEBPACK_IMPORTED_MODULE_0__.I);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ2FkaXJlY3Rpb25zLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQTJCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ0EsNkJBQTZCLDRDQUFjO0FBQzNDLGdDQUFnQyw0Q0FBYztBQUM5QyxpQ0FBaUMsb0NBQU0sT0FBTyxrQ0FBSSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9nYWRpcmVjdGlvbnMudHM/NTY5NiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBHQSBmcm9tIFwiLi9nYVwiO1xuLyoqXG4gKiBBIGRpcmVjdGlvbiBpcyBzdG9yZWQgYXMgYW4gYXJyYXkgYFswLCAwLCAwLCAwLCB5LCB4LCAwLCAwXWAgcmVwcmVzZW50aW5nXG4gKiB2ZWN0b3IgYCh4LCB5KWAuXG4gKi9cblxuZXhwb3J0IGNvbnN0IGZyb20gPSBwb2ludCA9PiBbMCwgMCwgMCwgMCwgcG9pbnRbNF0sIHBvaW50WzVdLCAwLCAwXTtcbmV4cG9ydCBjb25zdCBmcm9tVG8gPSAoZnJvbSwgdG8pID0+IEdBLmlub3JtYWxpemVkKFswLCAwLCAwLCAwLCB0b1s0XSAtIGZyb21bNF0sIHRvWzVdIC0gZnJvbVs1XSwgMCwgMF0pO1xuZXhwb3J0IGNvbnN0IG9ydGhvZ29uYWwgPSBkaXJlY3Rpb24gPT4gR0EuaW5vcm1hbGl6ZWQoWzAsIDAsIDAsIDAsIC1kaXJlY3Rpb25bNV0sIGRpcmVjdGlvbls0XSwgMCwgMF0pO1xuZXhwb3J0IGNvbnN0IG9ydGhvZ29uYWxUb0xpbmUgPSBsaW5lID0+IEdBLm11bChsaW5lLCBHQS5JKTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../gadirections.ts\n');
              }
            ),
            /***/
            "../../galines.ts": (
              /*!************************!*\
                !*** ../../galines.ts ***!
                \************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "angle": () => (/* binding */ angle),\n/* harmony export */   "distance": () => (/* binding */ distance),\n/* harmony export */   "equation": () => (/* binding */ equation),\n/* harmony export */   "orthogonal": () => (/* binding */ orthogonal),\n/* harmony export */   "orthogonalThrough": () => (/* binding */ orthogonalThrough),\n/* harmony export */   "parallel": () => (/* binding */ parallel),\n/* harmony export */   "parallelThrough": () => (/* binding */ parallelThrough),\n/* harmony export */   "sign": () => (/* binding */ sign),\n/* harmony export */   "through": () => (/* binding */ through),\n/* harmony export */   "vector": () => (/* binding */ vector)\n/* harmony export */ });\n/* harmony import */ var _ga__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ga */ "../../ga.ts");\n\n/**\n * A line is stored as an array `[0, c, a, b, 0, 0, 0, 0]` representing:\n *   c * e0 + a * e1 + b*e2\n *\n * This maps to a standard formula `a * x + b * y + c`.\n *\n * `(-b, a)` corresponds to a 2D vector parallel to the line. The lines\n * have a natural orientation, corresponding to that vector.\n *\n * The magnitude ("norm") of the line is `sqrt(a ^ 2 + b ^ 2)`.\n * `c / norm(line)` is the oriented distance from line to origin.\n */\n// Returns line with direction (x, y) through origin\n\nconst vector = (x, y) => _ga__WEBPACK_IMPORTED_MODULE_0__.normalized([0, 0, -y, x, 0, 0, 0, 0]); // For equation ax + by + c = 0.\n\nconst equation = (a, b, c) => _ga__WEBPACK_IMPORTED_MODULE_0__.normalized([0, c, a, b, 0, 0, 0, 0]);\nconst through = (from, to) => _ga__WEBPACK_IMPORTED_MODULE_0__.normalized(_ga__WEBPACK_IMPORTED_MODULE_0__.join(to, from));\nconst orthogonal = (line, point) => _ga__WEBPACK_IMPORTED_MODULE_0__.dot(line, point); // Returns a line perpendicular to the line through `against` and `intersection`\n// going through `intersection`.\n\nconst orthogonalThrough = (against, intersection) => orthogonal(through(against, intersection), intersection);\nconst parallel = (line, distance) => {\n  const result = line.slice();\n  result[1] -= distance;\n  return result;\n};\nconst parallelThrough = (line, point) => orthogonal(orthogonal(point, line), point);\nconst distance = (line1, line2) => _ga__WEBPACK_IMPORTED_MODULE_0__.inorm(_ga__WEBPACK_IMPORTED_MODULE_0__.meet(line1, line2));\nconst angle = (line1, line2) => Math.acos(_ga__WEBPACK_IMPORTED_MODULE_0__.dot(line1, line2)[0]); // The orientation of the line\n\nconst sign = line => Math.sign(line[1]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ2FsaW5lcy50cy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTyx5QkFBeUIsMkNBQWEsNkJBQTZCOztBQUVuRSw4QkFBOEIsMkNBQWE7QUFDM0MsOEJBQThCLDJDQUFhLENBQUMscUNBQU87QUFDbkQsb0NBQW9DLG9DQUFNLGVBQWU7QUFDaEU7O0FBRU87QUFDQTtBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDQSxtQ0FBbUMsc0NBQVEsQ0FBQyxxQ0FBTztBQUNuRCwwQ0FBMEMsb0NBQU0sb0JBQW9COztBQUVwRSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9nYWxpbmVzLnRzPzExOGYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgR0EgZnJvbSBcIi4vZ2FcIjtcbi8qKlxuICogQSBsaW5lIGlzIHN0b3JlZCBhcyBhbiBhcnJheSBgWzAsIGMsIGEsIGIsIDAsIDAsIDAsIDBdYCByZXByZXNlbnRpbmc6XG4gKiAgIGMgKiBlMCArIGEgKiBlMSArIGIqZTJcbiAqXG4gKiBUaGlzIG1hcHMgdG8gYSBzdGFuZGFyZCBmb3JtdWxhIGBhICogeCArIGIgKiB5ICsgY2AuXG4gKlxuICogYCgtYiwgYSlgIGNvcnJlc3BvbmRzIHRvIGEgMkQgdmVjdG9yIHBhcmFsbGVsIHRvIHRoZSBsaW5lLiBUaGUgbGluZXNcbiAqIGhhdmUgYSBuYXR1cmFsIG9yaWVudGF0aW9uLCBjb3JyZXNwb25kaW5nIHRvIHRoYXQgdmVjdG9yLlxuICpcbiAqIFRoZSBtYWduaXR1ZGUgKFwibm9ybVwiKSBvZiB0aGUgbGluZSBpcyBgc3FydChhIF4gMiArIGIgXiAyKWAuXG4gKiBgYyAvIG5vcm0obGluZSlgIGlzIHRoZSBvcmllbnRlZCBkaXN0YW5jZSBmcm9tIGxpbmUgdG8gb3JpZ2luLlxuICovXG4vLyBSZXR1cm5zIGxpbmUgd2l0aCBkaXJlY3Rpb24gKHgsIHkpIHRocm91Z2ggb3JpZ2luXG5cbmV4cG9ydCBjb25zdCB2ZWN0b3IgPSAoeCwgeSkgPT4gR0Eubm9ybWFsaXplZChbMCwgMCwgLXksIHgsIDAsIDAsIDAsIDBdKTsgLy8gRm9yIGVxdWF0aW9uIGF4ICsgYnkgKyBjID0gMC5cblxuZXhwb3J0IGNvbnN0IGVxdWF0aW9uID0gKGEsIGIsIGMpID0+IEdBLm5vcm1hbGl6ZWQoWzAsIGMsIGEsIGIsIDAsIDAsIDAsIDBdKTtcbmV4cG9ydCBjb25zdCB0aHJvdWdoID0gKGZyb20sIHRvKSA9PiBHQS5ub3JtYWxpemVkKEdBLmpvaW4odG8sIGZyb20pKTtcbmV4cG9ydCBjb25zdCBvcnRob2dvbmFsID0gKGxpbmUsIHBvaW50KSA9PiBHQS5kb3QobGluZSwgcG9pbnQpOyAvLyBSZXR1cm5zIGEgbGluZSBwZXJwZW5kaWN1bGFyIHRvIHRoZSBsaW5lIHRocm91Z2ggYGFnYWluc3RgIGFuZCBgaW50ZXJzZWN0aW9uYFxuLy8gZ29pbmcgdGhyb3VnaCBgaW50ZXJzZWN0aW9uYC5cblxuZXhwb3J0IGNvbnN0IG9ydGhvZ29uYWxUaHJvdWdoID0gKGFnYWluc3QsIGludGVyc2VjdGlvbikgPT4gb3J0aG9nb25hbCh0aHJvdWdoKGFnYWluc3QsIGludGVyc2VjdGlvbiksIGludGVyc2VjdGlvbik7XG5leHBvcnQgY29uc3QgcGFyYWxsZWwgPSAobGluZSwgZGlzdGFuY2UpID0+IHtcbiAgY29uc3QgcmVzdWx0ID0gbGluZS5zbGljZSgpO1xuICByZXN1bHRbMV0gLT0gZGlzdGFuY2U7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuZXhwb3J0IGNvbnN0IHBhcmFsbGVsVGhyb3VnaCA9IChsaW5lLCBwb2ludCkgPT4gb3J0aG9nb25hbChvcnRob2dvbmFsKHBvaW50LCBsaW5lKSwgcG9pbnQpO1xuZXhwb3J0IGNvbnN0IGRpc3RhbmNlID0gKGxpbmUxLCBsaW5lMikgPT4gR0EuaW5vcm0oR0EubWVldChsaW5lMSwgbGluZTIpKTtcbmV4cG9ydCBjb25zdCBhbmdsZSA9IChsaW5lMSwgbGluZTIpID0+IE1hdGguYWNvcyhHQS5kb3QobGluZTEsIGxpbmUyKVswXSk7IC8vIFRoZSBvcmllbnRhdGlvbiBvZiB0aGUgbGluZVxuXG5leHBvcnQgY29uc3Qgc2lnbiA9IGxpbmUgPT4gTWF0aC5zaWduKGxpbmVbMV0pOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../galines.ts\n');
              }
            ),
            /***/
            "../../gapoints.ts": (
              /*!*************************!*\
                !*** ../../gapoints.ts ***!
                \*************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "abs": () => (/* binding */ abs),\n/* harmony export */   "distance": () => (/* binding */ distance),\n/* harmony export */   "distanceToLine": () => (/* binding */ distanceToLine),\n/* harmony export */   "from": () => (/* binding */ from),\n/* harmony export */   "intersect": () => (/* binding */ intersect),\n/* harmony export */   "project": () => (/* binding */ project),\n/* harmony export */   "toTuple": () => (/* binding */ toTuple)\n/* harmony export */ });\n/* harmony import */ var _ga__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ga */ "../../ga.ts");\n/* harmony import */ var _galines__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./galines */ "../../galines.ts");\n\n\n\nconst from = ([x, y]) => [0, 0, 0, 0, y, x, 1, 0];\nconst toTuple = point => [point[5], point[4]];\nconst abs = point => [0, 0, 0, 0, Math.abs(point[4]), Math.abs(point[5]), 1, 0];\nconst intersect = (line1, line2) => _ga__WEBPACK_IMPORTED_MODULE_0__.normalized(_ga__WEBPACK_IMPORTED_MODULE_0__.meet(line1, line2)); // Projects `point` onto the `line`.\n// The returned point is the closest point on the `line` to the `point`.\n\nconst project = (point, line) => intersect(_galines__WEBPACK_IMPORTED_MODULE_1__.orthogonal(line, point), line);\nconst distance = (point1, point2) => _ga__WEBPACK_IMPORTED_MODULE_0__.norm((0,_ga__WEBPACK_IMPORTED_MODULE_0__.join)(point1, point2));\nconst distanceToLine = (point, line) => _ga__WEBPACK_IMPORTED_MODULE_0__.joinScalar(point, line);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ2Fwb2ludHMudHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQTJCO0FBQ1M7QUFDUjtBQUNyQjtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0MsMkNBQWEsQ0FBQyxxQ0FBTyxpQkFBaUI7QUFDakY7O0FBRU8sMkNBQTJDLGdEQUFpQjtBQUM1RCxxQ0FBcUMscUNBQU8sQ0FBQyx5Q0FBSTtBQUNqRCx3Q0FBd0MsMkNBQWEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vZ2Fwb2ludHMudHM/NzBjMSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBHQSBmcm9tIFwiLi9nYVwiO1xuaW1wb3J0ICogYXMgR0FMaW5lIGZyb20gXCIuL2dhbGluZXNcIjtcbmltcG9ydCB7IGpvaW4gfSBmcm9tIFwiLi9nYVwiO1xuZXhwb3J0IGNvbnN0IGZyb20gPSAoW3gsIHldKSA9PiBbMCwgMCwgMCwgMCwgeSwgeCwgMSwgMF07XG5leHBvcnQgY29uc3QgdG9UdXBsZSA9IHBvaW50ID0+IFtwb2ludFs1XSwgcG9pbnRbNF1dO1xuZXhwb3J0IGNvbnN0IGFicyA9IHBvaW50ID0+IFswLCAwLCAwLCAwLCBNYXRoLmFicyhwb2ludFs0XSksIE1hdGguYWJzKHBvaW50WzVdKSwgMSwgMF07XG5leHBvcnQgY29uc3QgaW50ZXJzZWN0ID0gKGxpbmUxLCBsaW5lMikgPT4gR0Eubm9ybWFsaXplZChHQS5tZWV0KGxpbmUxLCBsaW5lMikpOyAvLyBQcm9qZWN0cyBgcG9pbnRgIG9udG8gdGhlIGBsaW5lYC5cbi8vIFRoZSByZXR1cm5lZCBwb2ludCBpcyB0aGUgY2xvc2VzdCBwb2ludCBvbiB0aGUgYGxpbmVgIHRvIHRoZSBgcG9pbnRgLlxuXG5leHBvcnQgY29uc3QgcHJvamVjdCA9IChwb2ludCwgbGluZSkgPT4gaW50ZXJzZWN0KEdBTGluZS5vcnRob2dvbmFsKGxpbmUsIHBvaW50KSwgbGluZSk7XG5leHBvcnQgY29uc3QgZGlzdGFuY2UgPSAocG9pbnQxLCBwb2ludDIpID0+IEdBLm5vcm0oam9pbihwb2ludDEsIHBvaW50MikpO1xuZXhwb3J0IGNvbnN0IGRpc3RhbmNlVG9MaW5lID0gKHBvaW50LCBsaW5lKSA9PiBHQS5qb2luU2NhbGFyKHBvaW50LCBsaW5lKTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../gapoints.ts\n');
              }
            ),
            /***/
            "../../gatransforms.ts": (
              /*!*****************************!*\
                !*** ../../gatransforms.ts ***!
                \*****************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "apply": () => (/* binding */ apply),\n/* harmony export */   "compose": () => (/* binding */ compose),\n/* harmony export */   "rotation": () => (/* binding */ rotation),\n/* harmony export */   "translation": () => (/* binding */ translation),\n/* harmony export */   "translationAlong": () => (/* binding */ translationAlong),\n/* harmony export */   "translationOrthogonal": () => (/* binding */ translationOrthogonal)\n/* harmony export */ });\n/* harmony import */ var _ga__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ga */ "../../ga.ts");\n/* harmony import */ var _gadirections__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./gadirections */ "../../gadirections.ts");\n\n\n/**\n * TODO: docs\n */\n\nconst rotation = (pivot, angle) => _ga__WEBPACK_IMPORTED_MODULE_0__.add(_ga__WEBPACK_IMPORTED_MODULE_0__.mul(pivot, Math.sin(angle / 2)), Math.cos(angle / 2));\nconst translation = direction => [1, 0, 0, 0, -(0.5 * direction[5]), 0.5 * direction[4], 0, 0];\nconst translationOrthogonal = (direction, distance) => {\n  const scale = 0.5 * distance;\n  return [1, 0, 0, 0, scale * direction[4], scale * direction[5], 0, 0];\n};\nconst translationAlong = (line, distance) => _ga__WEBPACK_IMPORTED_MODULE_0__.add(_ga__WEBPACK_IMPORTED_MODULE_0__.mul(_gadirections__WEBPACK_IMPORTED_MODULE_1__.orthogonalToLine(line), 0.5 * distance), 1);\nconst compose = (motor1, motor2) => _ga__WEBPACK_IMPORTED_MODULE_0__.mul(motor2, motor1);\nconst apply = (motor, nvector) => _ga__WEBPACK_IMPORTED_MODULE_0__.normalized(_ga__WEBPACK_IMPORTED_MODULE_0__.mul(_ga__WEBPACK_IMPORTED_MODULE_0__.mul(motor, nvector), _ga__WEBPACK_IMPORTED_MODULE_0__.reverse(motor)));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ2F0cmFuc2Zvcm1zLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQTJCO0FBQ21CO0FBQzlDO0FBQ0E7QUFDQTs7QUFFTyxtQ0FBbUMsb0NBQU0sQ0FBQyxvQ0FBTTtBQUNoRDtBQUNBO0FBQ1A7QUFDQTtBQUNBO0FBQ08sNkNBQTZDLG9DQUFNLENBQUMsb0NBQU0sQ0FBQywyREFBNEI7QUFDdkYsb0NBQW9DLG9DQUFNO0FBQzFDLGtDQUFrQywyQ0FBYSxDQUFDLG9DQUFNLENBQUMsb0NBQU0sa0JBQWtCLHdDQUFVIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2dhdHJhbnNmb3Jtcy50cz85ODAzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIEdBIGZyb20gXCIuL2dhXCI7XG5pbXBvcnQgKiBhcyBHQURpcmVjdGlvbiBmcm9tIFwiLi9nYWRpcmVjdGlvbnNcIjtcbi8qKlxuICogVE9ETzogZG9jc1xuICovXG5cbmV4cG9ydCBjb25zdCByb3RhdGlvbiA9IChwaXZvdCwgYW5nbGUpID0+IEdBLmFkZChHQS5tdWwocGl2b3QsIE1hdGguc2luKGFuZ2xlIC8gMikpLCBNYXRoLmNvcyhhbmdsZSAvIDIpKTtcbmV4cG9ydCBjb25zdCB0cmFuc2xhdGlvbiA9IGRpcmVjdGlvbiA9PiBbMSwgMCwgMCwgMCwgLSgwLjUgKiBkaXJlY3Rpb25bNV0pLCAwLjUgKiBkaXJlY3Rpb25bNF0sIDAsIDBdO1xuZXhwb3J0IGNvbnN0IHRyYW5zbGF0aW9uT3J0aG9nb25hbCA9IChkaXJlY3Rpb24sIGRpc3RhbmNlKSA9PiB7XG4gIGNvbnN0IHNjYWxlID0gMC41ICogZGlzdGFuY2U7XG4gIHJldHVybiBbMSwgMCwgMCwgMCwgc2NhbGUgKiBkaXJlY3Rpb25bNF0sIHNjYWxlICogZGlyZWN0aW9uWzVdLCAwLCAwXTtcbn07XG5leHBvcnQgY29uc3QgdHJhbnNsYXRpb25BbG9uZyA9IChsaW5lLCBkaXN0YW5jZSkgPT4gR0EuYWRkKEdBLm11bChHQURpcmVjdGlvbi5vcnRob2dvbmFsVG9MaW5lKGxpbmUpLCAwLjUgKiBkaXN0YW5jZSksIDEpO1xuZXhwb3J0IGNvbnN0IGNvbXBvc2UgPSAobW90b3IxLCBtb3RvcjIpID0+IEdBLm11bChtb3RvcjIsIG1vdG9yMSk7XG5leHBvcnQgY29uc3QgYXBwbHkgPSAobW90b3IsIG52ZWN0b3IpID0+IEdBLm5vcm1hbGl6ZWQoR0EubXVsKEdBLm11bChtb3RvciwgbnZlY3RvciksIEdBLnJldmVyc2UobW90b3IpKSk7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../gatransforms.ts\n');
              }
            ),
            /***/
            "../../gesture.ts": (
              /*!************************!*\
                !*** ../../gesture.ts ***!
                \************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "getCenter": () => (/* binding */ getCenter),\n/* harmony export */   "getDistance": () => (/* binding */ getDistance)\n/* harmony export */ });\nconst getCenter = pointers => {\n  const allCoords = Array.from(pointers.values());\n  return {\n    x: sum(allCoords, coords => coords.x) / allCoords.length,\n    y: sum(allCoords, coords => coords.y) / allCoords.length\n  };\n};\nconst getDistance = ([a, b]) => Math.hypot(a.x - b.x, a.y - b.y);\n\nconst sum = (array, mapper) => array.reduce((acc, item) => acc + mapper(item), 0);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZ2VzdHVyZS50cy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087O0FBRVAiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vZ2VzdHVyZS50cz9jYzU0Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBnZXRDZW50ZXIgPSBwb2ludGVycyA9PiB7XG4gIGNvbnN0IGFsbENvb3JkcyA9IEFycmF5LmZyb20ocG9pbnRlcnMudmFsdWVzKCkpO1xuICByZXR1cm4ge1xuICAgIHg6IHN1bShhbGxDb29yZHMsIGNvb3JkcyA9PiBjb29yZHMueCkgLyBhbGxDb29yZHMubGVuZ3RoLFxuICAgIHk6IHN1bShhbGxDb29yZHMsIGNvb3JkcyA9PiBjb29yZHMueSkgLyBhbGxDb29yZHMubGVuZ3RoXG4gIH07XG59O1xuZXhwb3J0IGNvbnN0IGdldERpc3RhbmNlID0gKFthLCBiXSkgPT4gTWF0aC5oeXBvdChhLnggLSBiLngsIGEueSAtIGIueSk7XG5cbmNvbnN0IHN1bSA9IChhcnJheSwgbWFwcGVyKSA9PiBhcnJheS5yZWR1Y2UoKGFjYywgaXRlbSkgPT4gYWNjICsgbWFwcGVyKGl0ZW0pLCAwKTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../gesture.ts\n');
              }
            ),
            /***/
            "../../groups.ts": (
              /*!***********************!*\
                !*** ../../groups.ts ***!
                \***********************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "addToGroup": () => (/* binding */ addToGroup),
/* harmony export */   "editGroupForSelectedElement": () => (/* binding */ editGroupForSelectedElement),
/* harmony export */   "elementsAreInSameGroup": () => (/* binding */ elementsAreInSameGroup),
/* harmony export */   "getElementsInGroup": () => (/* binding */ getElementsInGroup),
/* harmony export */   "getMaximumGroups": () => (/* binding */ getMaximumGroups),
/* harmony export */   "getNewGroupIdsForDuplication": () => (/* binding */ getNewGroupIdsForDuplication),
/* harmony export */   "getSelectedGroupForElement": () => (/* binding */ getSelectedGroupForElement),
/* harmony export */   "getSelectedGroupIdForElement": () => (/* binding */ getSelectedGroupIdForElement),
/* harmony export */   "getSelectedGroupIds": () => (/* binding */ getSelectedGroupIds),
/* harmony export */   "isElementInGroup": () => (/* binding */ isElementInGroup),
/* harmony export */   "isSelectedViaGroup": () => (/* binding */ isSelectedViaGroup),
/* harmony export */   "removeFromSelectedGroups": () => (/* binding */ removeFromSelectedGroups),
/* harmony export */   "selectGroup": () => (/* binding */ selectGroup),
/* harmony export */   "selectGroupsForSelectedElements": () => (/* binding */ selectGroupsForSelectedElements),
/* harmony export */   "selectGroupsFromGivenElements": () => (/* binding */ selectGroupsFromGivenElements)
/* harmony export */ });
/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./scene */ "../../scene/index.ts");
/* harmony import */ var _element_textElement__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./element/textElement */ "../../element/textElement.ts");
/* harmony import */ var _scene_selection__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./scene/selection */ "../../scene/selection.ts");



const selectGroup = (groupId, appState, elements) => {
  const elementsInGroup = elements.reduce((acc, element) => {
    if (element.groupIds.includes(groupId)) {
      acc[element.id] = true;
    }

    return acc;
  }, {});

  if (Object.keys(elementsInGroup).length < 2) {
    if (appState.selectedGroupIds[groupId] || appState.editingGroupId === groupId) {
      return {
        selectedElementIds: appState.selectedElementIds,
        selectedGroupIds: Object.assign(Object.assign({}, appState.selectedGroupIds), {
          [groupId]: false
        }),
        editingGroupId: null
      };
    }

    return appState;
  }

  return {
    editingGroupId: appState.editingGroupId,
    selectedGroupIds: Object.assign(Object.assign({}, appState.selectedGroupIds), {
      [groupId]: true
    }),
    selectedElementIds: Object.assign(Object.assign({}, appState.selectedElementIds), elementsInGroup)
  };
};
const selectGroupsForSelectedElements = function () {
  let lastSelectedElements = null;
  let lastElements = null;
  let lastReturnValue = null;

  const _selectGroups = (selectedElements, elements, appState, prevAppState) => {
    if (lastReturnValue !== undefined && elements === lastElements && selectedElements === lastSelectedElements && appState.editingGroupId === (lastReturnValue === null || lastReturnValue === void 0 ? void 0 : lastReturnValue.editingGroupId)) {
      return lastReturnValue;
    }

    const selectedGroupIds = {}; // Gather all the groups withing selected elements

    for (const selectedElement of selectedElements) {
      let groupIds = selectedElement.groupIds;

      if (appState.editingGroupId) {
        // handle the case where a group is nested within a group
        const indexOfEditingGroup = groupIds.indexOf(appState.editingGroupId);

        if (indexOfEditingGroup > -1) {
          groupIds = groupIds.slice(0, indexOfEditingGroup);
        }
      }

      if (groupIds.length > 0) {
        const lastSelectedGroup = groupIds[groupIds.length - 1];
        selectedGroupIds[lastSelectedGroup] = true;
      }
    } // Gather all the elements within selected groups


    const groupElementsIndex = {};
    const selectedElementIdsInGroups = elements.reduce((acc, element) => {
      const groupId = element.groupIds.find(id => selectedGroupIds[id]);

      if (groupId) {
        acc[element.id] = true; // Populate the index

        if (!Array.isArray(groupElementsIndex[groupId])) {
          groupElementsIndex[groupId] = [element.id];
        } else {
          groupElementsIndex[groupId].push(element.id);
        }
      }

      return acc;
    }, {});

    for (const groupId of Object.keys(groupElementsIndex)) {
      // If there is one element in the group, and the group is selected or it's being edited, it's not a group
      if (groupElementsIndex[groupId].length < 2) {
        if (selectedGroupIds[groupId]) {
          selectedGroupIds[groupId] = false;
        }
      }
    }

    lastElements = elements;
    lastSelectedElements = selectedElements;
    lastReturnValue = {
      editingGroupId: appState.editingGroupId,
      selectedGroupIds,
      selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_2__.makeNextSelectedElementIds)(Object.assign(Object.assign({}, appState.selectedElementIds), selectedElementIdsInGroups), prevAppState)
    };
    return lastReturnValue;
  };
  /**
   * When you select an element, you often want to actually select the whole group it's in, unless
   * you're currently editing that group.
   */


  const selectGroupsForSelectedElements = (appState, elements, prevAppState,
  /**
   * supply null in cases where you don't have access to App instance and
   * you don't care about optimizing selectElements retrieval
   */
  app) => {
    const selectedElements = app ? app.scene.getSelectedElements({
      selectedElementIds: appState.selectedElementIds,
      // supplying elements explicitly in case we're passed non-state elements
      elements
    }) : (0,_scene__WEBPACK_IMPORTED_MODULE_0__.getSelectedElements)(elements, appState);

    if (!selectedElements.length) {
      return {
        selectedGroupIds: {},
        editingGroupId: null,
        selectedElementIds: (0,_scene_selection__WEBPACK_IMPORTED_MODULE_2__.makeNextSelectedElementIds)(appState.selectedElementIds, prevAppState)
      };
    }

    return _selectGroups(selectedElements, elements, appState, prevAppState);
  };

  selectGroupsForSelectedElements.clearCache = () => {
    lastElements = null;
    lastSelectedElements = null;
    lastReturnValue = null;
  };

  return selectGroupsForSelectedElements;
}();
/**
 * If the element's group is selected, don't render an individual
 * selection border around it.
 */

const isSelectedViaGroup = (appState, element) => getSelectedGroupForElement(appState, element) != null;
const getSelectedGroupForElement = (appState, element) => element.groupIds.filter(groupId => groupId !== appState.editingGroupId).find(groupId => appState.selectedGroupIds[groupId]);
const getSelectedGroupIds = appState => Object.entries(appState.selectedGroupIds).filter(([groupId, isSelected]) => isSelected).map(([groupId, isSelected]) => groupId); // given a list of elements, return the the actual group ids that should be selected
// or used to update the elements

const selectGroupsFromGivenElements = (elements, appState) => {
  let nextAppState = Object.assign(Object.assign({}, appState), {
    selectedGroupIds: {}
  });

  for (const element of elements) {
    let groupIds = element.groupIds;

    if (appState.editingGroupId) {
      const indexOfEditingGroup = groupIds.indexOf(appState.editingGroupId);

      if (indexOfEditingGroup > -1) {
        groupIds = groupIds.slice(0, indexOfEditingGroup);
      }
    }

    if (groupIds.length > 0) {
      const groupId = groupIds[groupIds.length - 1];
      nextAppState = Object.assign(Object.assign({}, nextAppState), selectGroup(groupId, nextAppState, elements));
    }
  }

  return nextAppState.selectedGroupIds;
};
const editGroupForSelectedElement = (appState, element) => {
  return Object.assign(Object.assign({}, appState), {
    editingGroupId: element.groupIds.length ? element.groupIds[0] : null,
    selectedGroupIds: {},
    selectedElementIds: {
      [element.id]: true
    }
  });
};
const isElementInGroup = (element, groupId) => element.groupIds.includes(groupId);
const getElementsInGroup = (elements, groupId) => elements.filter(element => isElementInGroup(element, groupId));
const getSelectedGroupIdForElement = (element, selectedGroupIds) => element.groupIds.find(groupId => selectedGroupIds[groupId]);
const getNewGroupIdsForDuplication = (groupIds, editingGroupId, mapper) => {
  const copy = [...groupIds];
  const positionOfEditingGroupId = editingGroupId ? groupIds.indexOf(editingGroupId) : -1;
  const endIndex = positionOfEditingGroupId > -1 ? positionOfEditingGroupId : groupIds.length;

  for (let index = 0; index < endIndex; index++) {
    copy[index] = mapper(copy[index]);
  }

  return copy;
};
const addToGroup = (prevGroupIds, newGroupId, editingGroupId) => {
  // insert before the editingGroupId, or push to the end.
  const groupIds = [...prevGroupIds];
  const positionOfEditingGroupId = editingGroupId ? groupIds.indexOf(editingGroupId) : -1;
  const positionToInsert = positionOfEditingGroupId > -1 ? positionOfEditingGroupId : groupIds.length;
  groupIds.splice(positionToInsert, 0, newGroupId);
  return groupIds;
};
const removeFromSelectedGroups = (groupIds, selectedGroupIds) => groupIds.filter(groupId => !selectedGroupIds[groupId]);
const getMaximumGroups = elements => {
  const groups = new Map();
  elements.forEach(element => {
    const groupId = element.groupIds.length === 0 ? element.id : element.groupIds[element.groupIds.length - 1];
    const currentGroupMembers = groups.get(groupId) || []; // Include bound text if present when grouping

    const boundTextElement = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_1__.getBoundTextElement)(element);

    if (boundTextElement) {
      currentGroupMembers.push(boundTextElement);
    }

    groups.set(groupId, [...currentGroupMembers, element]);
  });
  return Array.from(groups.values());
};
const elementsAreInSameGroup = elements => {
  var _a;

  const allGroups = elements.flatMap(element => element.groupIds);
  const groupCount = new Map();
  let maxGroup = 0;

  for (const group of allGroups) {
    groupCount.set(group, ((_a = groupCount.get(group)) !== null && _a !== void 0 ? _a : 0) + 1);

    if (groupCount.get(group) > maxGroup) {
      maxGroup = groupCount.get(group);
    }
  }

  return maxGroup === elements.length;
};//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 13900 characters]
//# sourceURL=webpack-internal:///../../groups.ts
`);
              }
            ),
            /***/
            "../../history.ts": (
              /*!************************!*\
                !*** ../../history.ts ***!
                \************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./element/typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var _element_newElement__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./element/newElement */ "../../element/newElement.ts");\n\n\n\nconst clearAppStatePropertiesForHistory = appState => {\n  return {\n    selectedElementIds: appState.selectedElementIds,\n    selectedGroupIds: appState.selectedGroupIds,\n    viewBackgroundColor: appState.viewBackgroundColor,\n    editingLinearElement: appState.editingLinearElement,\n    editingGroupId: appState.editingGroupId,\n    name: appState.name\n  };\n};\n\nclass History {\n  constructor() {\n    this.elementCache = new Map();\n    this.recording = true;\n    this.stateHistory = [];\n    this.redoStack = [];\n    this.lastEntry = null;\n\n    this.generateEntry = (appState, elements) => this.dehydrateHistoryEntry({\n      appState: clearAppStatePropertiesForHistory(appState),\n      elements: elements.reduce((elements, element) => {\n        if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isLinearElement)(element) && appState.multiElement && appState.multiElement.id === element.id) {\n          // don\'t store multi-point arrow if still has only one point\n          if (appState.multiElement && appState.multiElement.id === element.id && element.points.length < 2) {\n            return elements;\n          }\n\n          elements.push(Object.assign(Object.assign({}, element), {\n            // don\'t store last point if not committed\n            points: element.lastCommittedPoint !== element.points[element.points.length - 1] ? element.points.slice(0, -1) : element.points\n          }));\n        } else {\n          elements.push(element);\n        }\n\n        return elements;\n      }, [])\n    });\n  }\n\n  hydrateHistoryEntry({\n    appState,\n    elements\n  }) {\n    return {\n      appState: JSON.parse(appState),\n      elements: elements.map(dehydratedExcalidrawElement => {\n        var _a;\n\n        const element = (_a = this.elementCache.get(dehydratedExcalidrawElement.id)) === null || _a === void 0 ? void 0 : _a.get(dehydratedExcalidrawElement.versionNonce);\n\n        if (!element) {\n          throw new Error(`Element not found: ${dehydratedExcalidrawElement.id}:${dehydratedExcalidrawElement.versionNonce}`);\n        }\n\n        return element;\n      })\n    };\n  }\n\n  dehydrateHistoryEntry({\n    appState,\n    elements\n  }) {\n    return {\n      appState: JSON.stringify(appState),\n      elements: elements.map(element => {\n        if (!this.elementCache.has(element.id)) {\n          this.elementCache.set(element.id, new Map());\n        }\n\n        const versions = this.elementCache.get(element.id);\n\n        if (!versions.has(element.versionNonce)) {\n          versions.set(element.versionNonce, (0,_element_newElement__WEBPACK_IMPORTED_MODULE_1__.deepCopyElement)(element));\n        }\n\n        return {\n          id: element.id,\n          versionNonce: element.versionNonce\n        };\n      })\n    };\n  }\n\n  getSnapshotForTest() {\n    return {\n      recording: this.recording,\n      stateHistory: this.stateHistory.map(dehydratedHistoryEntry => this.hydrateHistoryEntry(dehydratedHistoryEntry)),\n      redoStack: this.redoStack.map(dehydratedHistoryEntry => this.hydrateHistoryEntry(dehydratedHistoryEntry))\n    };\n  }\n\n  clear() {\n    this.stateHistory.length = 0;\n    this.redoStack.length = 0;\n    this.lastEntry = null;\n    this.elementCache.clear();\n  }\n\n  shouldCreateEntry(nextEntry) {\n    var _a, _b;\n\n    const {\n      lastEntry\n    } = this;\n\n    if (!lastEntry) {\n      return true;\n    }\n\n    if (nextEntry.elements.length !== lastEntry.elements.length) {\n      return true;\n    } // loop from right to left as changes are likelier to happen on new elements\n\n\n    for (let i = nextEntry.elements.length - 1; i > -1; i--) {\n      const prev = nextEntry.elements[i];\n      const next = lastEntry.elements[i];\n\n      if (!prev || !next || prev.id !== next.id || prev.versionNonce !== next.versionNonce) {\n        return true;\n      }\n    } // note: this is safe because entry\'s appState is guaranteed no excess props\n\n\n    let key;\n\n    for (key in nextEntry.appState) {\n      if (key === "editingLinearElement") {\n        if (((_a = nextEntry.appState[key]) === null || _a === void 0 ? void 0 : _a.elementId) === ((_b = lastEntry.appState[key]) === null || _b === void 0 ? void 0 : _b.elementId)) {\n          continue;\n        }\n      }\n\n      if (key === "selectedElementIds" || key === "selectedGroupIds") {\n        continue;\n      }\n\n      if (nextEntry.appState[key] !== lastEntry.appState[key]) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  pushEntry(appState, elements) {\n    const newEntryDehydrated = this.generateEntry(appState, elements);\n    const newEntry = this.hydrateHistoryEntry(newEntryDehydrated);\n\n    if (newEntry) {\n      if (!this.shouldCreateEntry(newEntry)) {\n        return;\n      }\n\n      this.stateHistory.push(newEntryDehydrated);\n      this.lastEntry = newEntry; // As a new entry was pushed, we invalidate the redo stack\n\n      this.clearRedoStack();\n    }\n  }\n\n  clearRedoStack() {\n    this.redoStack.splice(0, this.redoStack.length);\n  }\n\n  redoOnce() {\n    if (this.redoStack.length === 0) {\n      return null;\n    }\n\n    const entryToRestore = this.redoStack.pop();\n\n    if (entryToRestore !== undefined) {\n      this.stateHistory.push(entryToRestore);\n      return this.hydrateHistoryEntry(entryToRestore);\n    }\n\n    return null;\n  }\n\n  undoOnce() {\n    if (this.stateHistory.length === 1) {\n      return null;\n    }\n\n    const currentEntry = this.stateHistory.pop();\n    const entryToRestore = this.stateHistory[this.stateHistory.length - 1];\n\n    if (currentEntry !== undefined) {\n      this.redoStack.push(currentEntry);\n      return this.hydrateHistoryEntry(entryToRestore);\n    }\n\n    return null;\n  }\n  /**\n   * Updates history\'s `lastEntry` to latest app state. This is necessary\n   *  when doing undo/redo which itself doesn\'t commit to history, but updates\n   *  app state in a way that would break `shouldCreateEntry` which relies on\n   *  `lastEntry` to reflect last comittable history state.\n   * We can\'t update `lastEntry` from within history when calling undo/redo\n   *  because the action potentially mutates appState/elements before storing\n   *  it.\n   */\n\n\n  setCurrentState(appState, elements) {\n    this.lastEntry = this.hydrateHistoryEntry(this.generateEntry(appState, elements));\n  } // Suspicious that this is called so many places. Seems error-prone.\n\n\n  resumeRecording() {\n    this.recording = true;\n  }\n\n  record(state, elements) {\n    if (this.recording) {\n      this.pushEntry(state, elements);\n      this.recording = false;\n    }\n  }\n\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (History);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 10652 characters]\n//# sourceURL=webpack-internal:///../../history.ts\n');
              }
            ),
            /***/
            "../../hooks/useCallbackRefState.ts": (
              /*!******************************************!*\
                !*** ../../hooks/useCallbackRefState.ts ***!
                \******************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "useCallbackRefState": () => (/* binding */ useCallbackRefState)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n\nconst useCallbackRefState = () => {\n  const [refValue, setRefValue] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);\n  const refCallback = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(value => setRefValue(value), []);\n  return [refValue, refCallback];\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vaG9va3MvdXNlQ2FsbGJhY2tSZWZTdGF0ZS50cy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBOEM7QUFDdkM7QUFDUCxrQ0FBa0MsK0NBQVE7QUFDMUMsc0JBQXNCLGtEQUFXO0FBQ2pDO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vaG9va3MvdXNlQ2FsbGJhY2tSZWZTdGF0ZS50cz9iZGM4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuZXhwb3J0IGNvbnN0IHVzZUNhbGxiYWNrUmVmU3RhdGUgPSAoKSA9PiB7XG4gIGNvbnN0IFtyZWZWYWx1ZSwgc2V0UmVmVmFsdWVdID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IHJlZkNhbGxiYWNrID0gdXNlQ2FsbGJhY2sodmFsdWUgPT4gc2V0UmVmVmFsdWUodmFsdWUpLCBbXSk7XG4gIHJldHVybiBbcmVmVmFsdWUsIHJlZkNhbGxiYWNrXTtcbn07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../hooks/useCallbackRefState.ts\n');
              }
            ),
            /***/
            "../../hooks/useCreatePortalContainer.ts": (
              /*!***********************************************!*\
                !*** ../../hooks/useCreatePortalContainer.ts ***!
                \***********************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "useCreatePortalContainer": () => (/* binding */ useCreatePortalContainer)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _components_App__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/App */ "../../components/App.tsx");\n/* harmony import */ var _context_ui_appState__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../context/ui-appState */ "../../context/ui-appState.ts");\n\n\n\nconst useCreatePortalContainer = opts => {\n  const [div, setDiv] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);\n  const device = (0,_components_App__WEBPACK_IMPORTED_MODULE_1__.useDevice)();\n  const {\n    theme\n  } = (0,_context_ui_appState__WEBPACK_IMPORTED_MODULE_2__.useUIAppState)();\n  const {\n    container: excalidrawContainer\n  } = (0,_components_App__WEBPACK_IMPORTED_MODULE_1__.useExcalidrawContainer)();\n  (0,react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect)(() => {\n    var _a;\n\n    if (div) {\n      div.className = "";\n      div.classList.add("excalidraw", ...(((_a = opts === null || opts === void 0 ? void 0 : opts.className) === null || _a === void 0 ? void 0 : _a.split(/\\s+/)) || []));\n      div.classList.toggle("excalidraw--mobile", device.editor.isMobile);\n      div.classList.toggle("theme--dark", theme === "dark");\n    }\n  }, [div, theme, device.editor.isMobile, opts === null || opts === void 0 ? void 0 : opts.className]);\n  (0,react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect)(() => {\n    const container = (opts === null || opts === void 0 ? void 0 : opts.parentSelector) ? excalidrawContainer === null || excalidrawContainer === void 0 ? void 0 : excalidrawContainer.querySelector(opts.parentSelector) : document.body;\n\n    if (!container) {\n      return;\n    }\n\n    const div = document.createElement("div");\n    container.appendChild(div);\n    setDiv(div);\n    return () => {\n      container.removeChild(div);\n    };\n  }, [excalidrawContainer, opts === null || opts === void 0 ? void 0 : opts.parentSelector]);\n  return div;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vaG9va3MvdXNlQ3JlYXRlUG9ydGFsQ29udGFpbmVyLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQWtEO0FBQ29CO0FBQ2Y7QUFDaEQ7QUFDUCx3QkFBd0IsK0NBQVE7QUFDaEMsaUJBQWlCLDBEQUFTO0FBQzFCO0FBQ0E7QUFDQSxJQUFJLEVBQUUsbUVBQWE7QUFDbkI7QUFDQTtBQUNBLElBQUksRUFBRSx1RUFBc0I7QUFDNUIsRUFBRSxzREFBZTtBQUNqQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsRUFBRSxzREFBZTtBQUNqQjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vaG9va3MvdXNlQ3JlYXRlUG9ydGFsQ29udGFpbmVyLnRzP2JhYmMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlU3RhdGUsIHVzZUxheW91dEVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlRGV2aWNlLCB1c2VFeGNhbGlkcmF3Q29udGFpbmVyIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvQXBwXCI7XG5pbXBvcnQgeyB1c2VVSUFwcFN0YXRlIH0gZnJvbSBcIi4uL2NvbnRleHQvdWktYXBwU3RhdGVcIjtcbmV4cG9ydCBjb25zdCB1c2VDcmVhdGVQb3J0YWxDb250YWluZXIgPSBvcHRzID0+IHtcbiAgY29uc3QgW2Rpdiwgc2V0RGl2XSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBkZXZpY2UgPSB1c2VEZXZpY2UoKTtcbiAgY29uc3Qge1xuICAgIHRoZW1lXG4gIH0gPSB1c2VVSUFwcFN0YXRlKCk7XG4gIGNvbnN0IHtcbiAgICBjb250YWluZXI6IGV4Y2FsaWRyYXdDb250YWluZXJcbiAgfSA9IHVzZUV4Y2FsaWRyYXdDb250YWluZXIoKTtcbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICB2YXIgX2E7XG5cbiAgICBpZiAoZGl2KSB7XG4gICAgICBkaXYuY2xhc3NOYW1lID0gXCJcIjtcbiAgICAgIGRpdi5jbGFzc0xpc3QuYWRkKFwiZXhjYWxpZHJhd1wiLCAuLi4oKChfYSA9IG9wdHMgPT09IG51bGwgfHwgb3B0cyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0cy5jbGFzc05hbWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5zcGxpdCgvXFxzKy8pKSB8fCBbXSkpO1xuICAgICAgZGl2LmNsYXNzTGlzdC50b2dnbGUoXCJleGNhbGlkcmF3LS1tb2JpbGVcIiwgZGV2aWNlLmVkaXRvci5pc01vYmlsZSk7XG4gICAgICBkaXYuY2xhc3NMaXN0LnRvZ2dsZShcInRoZW1lLS1kYXJrXCIsIHRoZW1lID09PSBcImRhcmtcIik7XG4gICAgfVxuICB9LCBbZGl2LCB0aGVtZSwgZGV2aWNlLmVkaXRvci5pc01vYmlsZSwgb3B0cyA9PT0gbnVsbCB8fCBvcHRzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRzLmNsYXNzTmFtZV0pO1xuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IChvcHRzID09PSBudWxsIHx8IG9wdHMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdHMucGFyZW50U2VsZWN0b3IpID8gZXhjYWxpZHJhd0NvbnRhaW5lciA9PT0gbnVsbCB8fCBleGNhbGlkcmF3Q29udGFpbmVyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleGNhbGlkcmF3Q29udGFpbmVyLnF1ZXJ5U2VsZWN0b3Iob3B0cy5wYXJlbnRTZWxlY3RvcikgOiBkb2N1bWVudC5ib2R5O1xuXG4gICAgaWYgKCFjb250YWluZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChkaXYpO1xuICAgIHNldERpdihkaXYpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjb250YWluZXIucmVtb3ZlQ2hpbGQoZGl2KTtcbiAgICB9O1xuICB9LCBbZXhjYWxpZHJhd0NvbnRhaW5lciwgb3B0cyA9PT0gbnVsbCB8fCBvcHRzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRzLnBhcmVudFNlbGVjdG9yXSk7XG4gIHJldHVybiBkaXY7XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../hooks/useCreatePortalContainer.ts\n');
              }
            ),
            /***/
            "../../hooks/useLibraryItemSvg.ts": (
              /*!****************************************!*\
                !*** ../../hooks/useLibraryItemSvg.ts ***!
                \****************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "libraryItemSvgsCache": () => (/* binding */ libraryItemSvgsCache),\n/* harmony export */   "useLibraryCache": () => (/* binding */ useLibraryCache),\n/* harmony export */   "useLibraryItemSvg": () => (/* binding */ useLibraryItemSvg)\n/* harmony export */ });\n/* harmony import */ var jotai__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! jotai */ "../../../node_modules/jotai/esm/index.mjs");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _colors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../colors */ "../../colors.ts");\n/* harmony import */ var _jotai__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../jotai */ "../../jotai.ts");\n/* harmony import */ var _packages_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../packages/utils */ "../utils.ts");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator["throw"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n\n\n\nconst libraryItemSvgsCache = (0,jotai__WEBPACK_IMPORTED_MODULE_4__.atom)(new Map());\n\nconst exportLibraryItemToSvg = elements => __awaiter(void 0, void 0, void 0, function* () {\n  return yield (0,_packages_utils__WEBPACK_IMPORTED_MODULE_3__.exportToSvg)({\n    elements,\n    appState: {\n      exportBackground: false,\n      viewBackgroundColor: _colors__WEBPACK_IMPORTED_MODULE_1__.COLOR_PALETTE.white\n    },\n    files: null,\n    renderEmbeddables: false\n  });\n});\n\nconst useLibraryItemSvg = (id, elements, svgCache) => {\n  const [svg, setSvg] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)();\n  (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n    if (elements) {\n      if (id) {\n        // Try to load cached svg\n        const cachedSvg = svgCache.get(id);\n\n        if (cachedSvg) {\n          setSvg(cachedSvg);\n        } else {\n          // When there is no svg in cache export it and save to cache\n          (() => __awaiter(void 0, void 0, void 0, function* () {\n            var _a;\n\n            const exportedSvg = yield exportLibraryItemToSvg(elements);\n            (_a = exportedSvg.querySelector(".style-fonts")) === null || _a === void 0 ? void 0 : _a.remove();\n\n            if (exportedSvg) {\n              svgCache.set(id, exportedSvg);\n              setSvg(exportedSvg);\n            }\n          }))();\n        }\n      } else {\n        // When we have no id (usualy selected items from canvas) just export the svg\n        (() => __awaiter(void 0, void 0, void 0, function* () {\n          const exportedSvg = yield exportLibraryItemToSvg(elements);\n          setSvg(exportedSvg);\n        }))();\n      }\n    }\n  }, [id, elements, svgCache, setSvg]);\n  return svg;\n};\nconst useLibraryCache = () => {\n  const [svgCache] = (0,jotai__WEBPACK_IMPORTED_MODULE_4__.useAtom)(libraryItemSvgsCache, _jotai__WEBPACK_IMPORTED_MODULE_2__.jotaiScope);\n\n  const clearLibraryCache = () => svgCache.clear();\n\n  const deleteItemsFromLibraryCache = items => {\n    items.forEach(item => svgCache.delete(item));\n  };\n\n  return {\n    clearLibraryCache,\n    deleteItemsFromLibraryCache,\n    svgCache\n  };\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5024 characters]\n//# sourceURL=webpack-internal:///../../hooks/useLibraryItemSvg.ts\n');
              }
            ),
            /***/
            "../../hooks/useOutsideClick.ts": (
              /*!**************************************!*\
                !*** ../../hooks/useOutsideClick.ts ***!
                \**************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "useOutsideClick": () => (/* binding */ useOutsideClick)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n\n\nfunction useOutsideClick(ref,\n/** if performance is of concern, memoize the callback */\ncallback,\n/**\n * Optional callback which is called on every click.\n *\n * Should return `true` if click should be considered as inside the container,\n * and `false` if it falls outside and should call the `callback`.\n *\n * Returning `true` overrides the default behavior and `callback` won\'t be\n * called.\n *\n * Returning `undefined` will fallback to the default behavior.\n */\nisInside) {\n  (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n    function onOutsideClick(event) {\n      const _event = event;\n\n      if (!ref.current) {\n        return;\n      }\n\n      const isInsideOverride = isInside === null || isInside === void 0 ? void 0 : isInside(_event, ref.current);\n\n      if (isInsideOverride === true) {\n        return;\n      } else if (isInsideOverride === false) {\n        return callback(_event);\n      } // clicked element is in the descenendant of the target container\n\n\n      if (ref.current.contains(_event.target) || // target is detached from DOM (happens when the element is removed\n      // on a pointerup event fired *before* this handler\'s pointerup is\n      // dispatched)\n      !document.documentElement.contains(_event.target)) {\n        return;\n      }\n\n      const isClickOnRadixPortal = _event.target.closest("[data-radix-portal]") || // when radix popup is in "modal" mode, it disables pointer events on\n      // the `body` element, so the target element is going to be the `html`\n      // (note: this won\'t work if we selectively re-enable pointer events on\n      // specific elements as we do with navbar or excalidraw UI elements)\n      _event.target === document.documentElement && document.body.style.pointerEvents === "none"; // if clicking on radix portal, assume it\'s a popup that\n      // should be considered as part of the UI. Obviously this is a terrible\n      // hack you can end up click on radix popups that outside the tree,\n      // but it works for most cases and the downside is minimal for now\n\n      if (isClickOnRadixPortal) {\n        return;\n      } // clicking on a container that ignores outside clicks\n\n\n      if (_event.target.closest("[data-prevent-outside-click]")) {\n        return;\n      }\n\n      callback(_event);\n    } // note: don\'t use `click` because it often reports incorrect `event.target`\n\n\n    document.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_1__.EVENT.POINTER_DOWN, onOutsideClick);\n    document.addEventListener(_constants__WEBPACK_IMPORTED_MODULE_1__.EVENT.TOUCH_START, onOutsideClick);\n    return () => {\n      document.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_1__.EVENT.POINTER_DOWN, onOutsideClick);\n      document.removeEventListener(_constants__WEBPACK_IMPORTED_MODULE_1__.EVENT.TOUCH_START, onOutsideClick);\n    };\n  }, [ref, callback, isInside]);\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4548 characters]\n//# sourceURL=webpack-internal:///../../hooks/useOutsideClick.ts\n');
              }
            ),
            /***/
            "../../hooks/useScrollPosition.ts": (
              /*!****************************************!*\
                !*** ../../hooks/useScrollPosition.ts ***!
                \****************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "useScrollPosition": () => (/* binding */ useScrollPosition)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var jotai__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! jotai */ "../../../node_modules/jotai/esm/index.mjs");\n/* harmony import */ var lodash_throttle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash.throttle */ "../../../node_modules/lodash.throttle/index.js");\n/* harmony import */ var lodash_throttle__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_throttle__WEBPACK_IMPORTED_MODULE_1__);\n\n\n\nconst scrollPositionAtom = (0,jotai__WEBPACK_IMPORTED_MODULE_2__.atom)(0);\nconst useScrollPosition = elementRef => {\n  const [scrollPosition, setScrollPosition] = (0,jotai__WEBPACK_IMPORTED_MODULE_2__.useAtom)(scrollPositionAtom);\n  (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n    const {\n      current: element\n    } = elementRef;\n\n    if (!element) {\n      return;\n    }\n\n    const handleScroll = lodash_throttle__WEBPACK_IMPORTED_MODULE_1___default()(() => {\n      const {\n        scrollTop\n      } = element;\n      setScrollPosition(scrollTop);\n    }, 200);\n    element.addEventListener("scroll", handleScroll);\n    return () => {\n      handleScroll.cancel();\n      element.removeEventListener("scroll", handleScroll);\n    };\n  }, [elementRef, setScrollPosition]);\n  return scrollPosition;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vaG9va3MvdXNlU2Nyb2xsUG9zaXRpb24udHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQWtDO0FBQ0k7QUFDQztBQUN2QywyQkFBMkIsMkNBQUk7QUFDeEI7QUFDUCw4Q0FBOEMsOENBQU87QUFDckQsRUFBRSxnREFBUztBQUNYO0FBQ0E7QUFDQSxNQUFNOztBQUVOO0FBQ0E7QUFDQTs7QUFFQSx5QkFBeUIsc0RBQVE7QUFDakM7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vaG9va3MvdXNlU2Nyb2xsUG9zaXRpb24udHM/MWMxMyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IGF0b20sIHVzZUF0b20gfSBmcm9tIFwiam90YWlcIjtcbmltcG9ydCB0aHJvdHRsZSBmcm9tIFwibG9kYXNoLnRocm90dGxlXCI7XG5jb25zdCBzY3JvbGxQb3NpdGlvbkF0b20gPSBhdG9tKDApO1xuZXhwb3J0IGNvbnN0IHVzZVNjcm9sbFBvc2l0aW9uID0gZWxlbWVudFJlZiA9PiB7XG4gIGNvbnN0IFtzY3JvbGxQb3NpdGlvbiwgc2V0U2Nyb2xsUG9zaXRpb25dID0gdXNlQXRvbShzY3JvbGxQb3NpdGlvbkF0b20pO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIGN1cnJlbnQ6IGVsZW1lbnRcbiAgICB9ID0gZWxlbWVudFJlZjtcblxuICAgIGlmICghZWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGhhbmRsZVNjcm9sbCA9IHRocm90dGxlKCgpID0+IHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgc2Nyb2xsVG9wXG4gICAgICB9ID0gZWxlbWVudDtcbiAgICAgIHNldFNjcm9sbFBvc2l0aW9uKHNjcm9sbFRvcCk7XG4gICAgfSwgMjAwKTtcbiAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIiwgaGFuZGxlU2Nyb2xsKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaGFuZGxlU2Nyb2xsLmNhbmNlbCgpO1xuICAgICAgZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwic2Nyb2xsXCIsIGhhbmRsZVNjcm9sbCk7XG4gICAgfTtcbiAgfSwgW2VsZW1lbnRSZWYsIHNldFNjcm9sbFBvc2l0aW9uXSk7XG4gIHJldHVybiBzY3JvbGxQb3NpdGlvbjtcbn07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../hooks/useScrollPosition.ts\n');
              }
            ),
            /***/
            "../../hooks/useStable.ts": (
              /*!********************************!*\
                !*** ../../hooks/useStable.ts ***!
                \********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "useStable": () => (/* binding */ useStable)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n\nconst useStable = value => {\n  const ref = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(value);\n  Object.assign(ref.current, value);\n  return ref.current;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vaG9va3MvdXNlU3RhYmxlLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUErQjtBQUN4QjtBQUNQLGNBQWMsNkNBQU07QUFDcEI7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2hvb2tzL3VzZVN0YWJsZS50cz8yNTQwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZVJlZiB9IGZyb20gXCJyZWFjdFwiO1xuZXhwb3J0IGNvbnN0IHVzZVN0YWJsZSA9IHZhbHVlID0+IHtcbiAgY29uc3QgcmVmID0gdXNlUmVmKHZhbHVlKTtcbiAgT2JqZWN0LmFzc2lnbihyZWYuY3VycmVudCwgdmFsdWUpO1xuICByZXR1cm4gcmVmLmN1cnJlbnQ7XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../hooks/useStable.ts\n');
              }
            ),
            /***/
            "../../hooks/useTransition.ts": (
              /*!************************************!*\
                !*** ../../hooks/useTransition.ts ***!
                \************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "useTransition": () => (/* binding */ useTransition)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n\n/** noop polyfill for v17. Subset of API available */\n\nfunction useTransitionPolyfill() {\n  const startTransition = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(callback => callback(), []);\n  return [false, startTransition];\n}\n\nconst useTransition = (react__WEBPACK_IMPORTED_MODULE_0___default().useTransition) || useTransitionPolyfill;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vaG9va3MvdXNlVHJhbnNpdGlvbi50cy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBMkM7QUFDM0M7O0FBRUE7QUFDQSwwQkFBMEIsa0RBQVc7QUFDckM7QUFDQTs7QUFFTyxzQkFBc0IsNERBQW1CIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2hvb2tzL3VzZVRyYW5zaXRpb24udHM/MjdkYSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2sgfSBmcm9tIFwicmVhY3RcIjtcbi8qKiBub29wIHBvbHlmaWxsIGZvciB2MTcuIFN1YnNldCBvZiBBUEkgYXZhaWxhYmxlICovXG5cbmZ1bmN0aW9uIHVzZVRyYW5zaXRpb25Qb2x5ZmlsbCgpIHtcbiAgY29uc3Qgc3RhcnRUcmFuc2l0aW9uID0gdXNlQ2FsbGJhY2soY2FsbGJhY2sgPT4gY2FsbGJhY2soKSwgW10pO1xuICByZXR1cm4gW2ZhbHNlLCBzdGFydFRyYW5zaXRpb25dO1xufVxuXG5leHBvcnQgY29uc3QgdXNlVHJhbnNpdGlvbiA9IFJlYWN0LnVzZVRyYW5zaXRpb24gfHwgdXNlVHJhbnNpdGlvblBvbHlmaWxsOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../hooks/useTransition.ts\n');
              }
            ),
            /***/
            "../../i18n.ts": (
              /*!*********************!*\
                !*** ../../i18n.ts ***!
                \*********************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "defaultLang": () => (/* binding */ defaultLang),\n/* harmony export */   "getLanguage": () => (/* binding */ getLanguage),\n/* harmony export */   "languages": () => (/* binding */ languages),\n/* harmony export */   "setLanguage": () => (/* binding */ setLanguage),\n/* harmony export */   "t": () => (/* binding */ t),\n/* harmony export */   "useI18n": () => (/* binding */ useI18n)\n/* harmony export */ });\n/* harmony import */ var _locales_en_json__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./locales/en.json */ "../../locales/en.json");\n/* harmony import */ var _locales_percentages_json__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./locales/percentages.json */ "../../locales/percentages.json");\n/* harmony import */ var _jotai__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./jotai */ "../../jotai.ts");\n/* harmony import */ var jotai__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! jotai */ "../../../node_modules/jotai/esm/index.mjs");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator["throw"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n\n\nconst COMPLETION_THRESHOLD = 85;\nconst defaultLang = {\n  code: "en",\n  label: "English"\n};\nconst languages = [defaultLang, ...[{\n  code: "ar-SA",\n  label: "\u0627\u0644\u0639\u0631\u0628\u064A\u0629",\n  rtl: true\n}, {\n  code: "bg-BG",\n  label: "\u0411\u044A\u043B\u0433\u0430\u0440\u0441\u043A\u0438"\n}, {\n  code: "ca-ES",\n  label: "Catal\xE0"\n}, {\n  code: "cs-CZ",\n  label: "\u010Cesky"\n}, {\n  code: "de-DE",\n  label: "Deutsch"\n}, {\n  code: "el-GR",\n  label: "\u0395\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03AC"\n}, {\n  code: "es-ES",\n  label: "Espa\xF1ol"\n}, {\n  code: "eu-ES",\n  label: "Euskara"\n}, {\n  code: "fa-IR",\n  label: "\u0641\u0627\u0631\u0633\u06CC",\n  rtl: true\n}, {\n  code: "fi-FI",\n  label: "Suomi"\n}, {\n  code: "fr-FR",\n  label: "Fran\xE7ais"\n}, {\n  code: "gl-ES",\n  label: "Galego"\n}, {\n  code: "he-IL",\n  label: "\u05E2\u05D1\u05E8\u05D9\u05EA",\n  rtl: true\n}, {\n  code: "hi-IN",\n  label: "\u0939\u093F\u0928\u094D\u0926\u0940"\n}, {\n  code: "hu-HU",\n  label: "Magyar"\n}, {\n  code: "id-ID",\n  label: "Bahasa Indonesia"\n}, {\n  code: "it-IT",\n  label: "Italiano"\n}, {\n  code: "ja-JP",\n  label: "\u65E5\u672C\u8A9E"\n}, {\n  code: "kab-KAB",\n  label: "Taqbaylit"\n}, {\n  code: "kk-KZ",\n  label: "\u049A\u0430\u0437\u0430\u049B \u0442\u0456\u043B\u0456"\n}, {\n  code: "ko-KR",\n  label: "\uD55C\uAD6D\uC5B4"\n}, {\n  code: "ku-TR",\n  label: "Kurd\xEE"\n}, {\n  code: "lt-LT",\n  label: "Lietuvi\u0173"\n}, {\n  code: "lv-LV",\n  label: "Latvie\u0161u"\n}, {\n  code: "my-MM",\n  label: "Burmese"\n}, {\n  code: "nb-NO",\n  label: "Norsk bokm\xE5l"\n}, {\n  code: "nl-NL",\n  label: "Nederlands"\n}, {\n  code: "nn-NO",\n  label: "Norsk nynorsk"\n}, {\n  code: "oc-FR",\n  label: "Occitan"\n}, {\n  code: "pa-IN",\n  label: "\u0A2A\u0A70\u0A1C\u0A3E\u0A2C\u0A40"\n}, {\n  code: "pl-PL",\n  label: "Polski"\n}, {\n  code: "pt-BR",\n  label: "Portugu\xEAs Brasileiro"\n}, {\n  code: "pt-PT",\n  label: "Portugu\xEAs"\n}, {\n  code: "ro-RO",\n  label: "Rom\xE2n\u0103"\n}, {\n  code: "ru-RU",\n  label: "\u0420\u0443\u0441\u0441\u043A\u0438\u0439"\n}, {\n  code: "sk-SK",\n  label: "Sloven\u010Dina"\n}, {\n  code: "sv-SE",\n  label: "Svenska"\n}, {\n  code: "sl-SI",\n  label: "Sloven\u0161\u010Dina"\n}, {\n  code: "tr-TR",\n  label: "T\xFCrk\xE7e"\n}, {\n  code: "uk-UA",\n  label: "\u0423\u043A\u0440\u0430\u0457\u043D\u0441\u044C\u043A\u0430"\n}, {\n  code: "zh-CN",\n  label: "\u7B80\u4F53\u4E2D\u6587"\n}, {\n  code: "zh-TW",\n  label: "\u7E41\u9AD4\u4E2D\u6587"\n}, {\n  code: "vi-VN",\n  label: "Ti\u1EBFng Vi\u1EC7t"\n}, {\n  code: "mr-IN",\n  label: "\u092E\u0930\u093E\u0920\u0940"\n}].filter(lang => _locales_percentages_json__WEBPACK_IMPORTED_MODULE_1__[lang.code] >= COMPLETION_THRESHOLD).sort((left, right) => left.label > right.label ? 1 : -1)];\nconst TEST_LANG_CODE = "__test__";\n\nif (true) {\n  languages.unshift({\n    code: TEST_LANG_CODE,\n    label: "test language"\n  }, {\n    code: `${TEST_LANG_CODE}.rtl`,\n    label: "\\u{202a}test language (rtl)\\u{202c}",\n    rtl: true\n  });\n}\n\nlet currentLang = defaultLang;\nlet currentLangData = {};\nconst setLanguage = lang => __awaiter(void 0, void 0, void 0, function* () {\n  currentLang = lang;\n  document.documentElement.dir = currentLang.rtl ? "rtl" : "ltr";\n  document.documentElement.lang = currentLang.code;\n\n  if (lang.code.startsWith(TEST_LANG_CODE)) {\n    currentLangData = {};\n  } else {\n    try {\n      currentLangData = yield __webpack_require__("../../locales lazy recursive ^\\\\.\\\\/.*\\\\.json$")(`./${currentLang.code}.json`);\n    } catch (error) {\n      console.error(`Failed to load language ${lang.code}:`, error.message);\n      currentLangData = _locales_en_json__WEBPACK_IMPORTED_MODULE_0__;\n    }\n  }\n\n  _jotai__WEBPACK_IMPORTED_MODULE_2__.jotaiStore.set(editorLangCodeAtom, lang.code);\n});\nconst getLanguage = () => currentLang;\n\nconst findPartsForData = (data, parts) => {\n  for (let index = 0; index < parts.length; ++index) {\n    const part = parts[index];\n\n    if (data[part] === undefined) {\n      return undefined;\n    }\n\n    data = data[part];\n  }\n\n  if (typeof data !== "string") {\n    return undefined;\n  }\n\n  return data;\n};\n\nconst t = (path, replacement, fallback) => {\n  if (currentLang.code.startsWith(TEST_LANG_CODE)) {\n    const name = replacement ? `${path}(${JSON.stringify(replacement).slice(1, -1)})` : path;\n    return `\\u{202a}[[${name}]]\\u{202c}`;\n  }\n\n  const parts = path.split(".");\n  let translation = findPartsForData(currentLangData, parts) || findPartsForData(_locales_en_json__WEBPACK_IMPORTED_MODULE_0__, parts) || fallback;\n\n  if (translation === undefined) {\n    const errorMessage = `Can\'t find translation for ${path}`; // in production, don\'t blow up the app on a missing translation key\n\n    if (false) {}\n\n    throw new Error(errorMessage);\n  }\n\n  if (replacement) {\n    for (const key in replacement) {\n      translation = translation.replace(`{{${key}}}`, String(replacement[key]));\n    }\n  }\n\n  return translation;\n};\n/** @private atom used solely to rerender components using `useI18n` hook */\n\nconst editorLangCodeAtom = (0,jotai__WEBPACK_IMPORTED_MODULE_3__.atom)(defaultLang.code); // Should be used in components that fall under these cases:\n// - component is rendered as an <Excalidraw> child\n// - component is rendered internally by <Excalidraw>, but the component\n//   is memoized w/o being updated on `langCode`, `AppState`, or `UIAppState`\n\nconst useI18n = () => {\n  const langCode = (0,jotai__WEBPACK_IMPORTED_MODULE_3__.useAtomValue)(editorLangCodeAtom, _jotai__WEBPACK_IMPORTED_MODULE_2__.jotaiScope);\n  return {\n    t,\n    langCode\n  };\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 11360 characters]\n//# sourceURL=webpack-internal:///../../i18n.ts\n');
              }
            ),
            /***/
            "../../jotai.ts": (
              /*!**********************!*\
                !*** ../../jotai.ts ***!
                \**********************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "jotaiScope": () => (/* binding */ jotaiScope),\n/* harmony export */   "jotaiStore": () => (/* binding */ jotaiStore),\n/* harmony export */   "useAtomWithInitialValue": () => (/* binding */ useAtomWithInitialValue)\n/* harmony export */ });\n/* harmony import */ var jotai__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! jotai */ "../../../node_modules/jotai/esm/index.mjs");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n\n\nconst jotaiScope = Symbol();\nconst jotaiStore = (0,jotai__WEBPACK_IMPORTED_MODULE_1__.unstable_createStore)();\nconst useAtomWithInitialValue = (atom, initialValue) => {\n  const [value, setValue] = (0,jotai__WEBPACK_IMPORTED_MODULE_1__.useAtom)(atom);\n  (0,react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect)(() => {\n    if (typeof initialValue === "function") {\n      // @ts-ignore\n      setValue(initialValue());\n    } else {\n      setValue(initialValue);\n    } // eslint-disable-next-line react-hooks/exhaustive-deps\n\n  }, []);\n  return [value, setValue];\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vam90YWkudHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQXNEO0FBQ2Q7QUFDakM7QUFDQSxtQkFBbUIsMkRBQW9CO0FBQ3ZDO0FBQ1AsNEJBQTRCLDhDQUFPO0FBQ25DLEVBQUUsc0RBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0EsTUFBTTs7QUFFTixHQUFHO0FBQ0g7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9qb3RhaS50cz81ODFjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVuc3RhYmxlX2NyZWF0ZVN0b3JlLCB1c2VBdG9tIH0gZnJvbSBcImpvdGFpXCI7XG5pbXBvcnQgeyB1c2VMYXlvdXRFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmV4cG9ydCBjb25zdCBqb3RhaVNjb3BlID0gU3ltYm9sKCk7XG5leHBvcnQgY29uc3Qgam90YWlTdG9yZSA9IHVuc3RhYmxlX2NyZWF0ZVN0b3JlKCk7XG5leHBvcnQgY29uc3QgdXNlQXRvbVdpdGhJbml0aWFsVmFsdWUgPSAoYXRvbSwgaW5pdGlhbFZhbHVlKSA9PiB7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlQXRvbShhdG9tKTtcbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAodHlwZW9mIGluaXRpYWxWYWx1ZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBzZXRWYWx1ZShpbml0aWFsVmFsdWUoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldFZhbHVlKGluaXRpYWxWYWx1ZSk7XG4gICAgfSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG5cbiAgfSwgW10pO1xuICByZXR1cm4gW3ZhbHVlLCBzZXRWYWx1ZV07XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../jotai.ts\n');
              }
            ),
            /***/
            "../../keys.ts": (
              /*!*********************!*\
                !*** ../../keys.ts ***!
                \*********************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "CODES": () => (/* binding */ CODES),\n/* harmony export */   "KEYS": () => (/* binding */ KEYS),\n/* harmony export */   "isArrowKey": () => (/* binding */ isArrowKey),\n/* harmony export */   "shouldMaintainAspectRatio": () => (/* binding */ shouldMaintainAspectRatio),\n/* harmony export */   "shouldResizeFromCenter": () => (/* binding */ shouldResizeFromCenter),\n/* harmony export */   "shouldRotateWithDiscreteAngle": () => (/* binding */ shouldRotateWithDiscreteAngle)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constants */ "../../constants.ts");\n\nconst CODES = {\n  EQUAL: "Equal",\n  MINUS: "Minus",\n  NUM_ADD: "NumpadAdd",\n  NUM_SUBTRACT: "NumpadSubtract",\n  NUM_ZERO: "Numpad0",\n  BRACKET_RIGHT: "BracketRight",\n  BRACKET_LEFT: "BracketLeft",\n  ONE: "Digit1",\n  TWO: "Digit2",\n  THREE: "Digit3",\n  NINE: "Digit9",\n  QUOTE: "Quote",\n  ZERO: "Digit0",\n  SLASH: "Slash",\n  C: "KeyC",\n  D: "KeyD",\n  H: "KeyH",\n  V: "KeyV",\n  Z: "KeyZ",\n  R: "KeyR",\n  S: "KeyS"\n};\nconst KEYS = {\n  ARROW_DOWN: "ArrowDown",\n  ARROW_LEFT: "ArrowLeft",\n  ARROW_RIGHT: "ArrowRight",\n  ARROW_UP: "ArrowUp",\n  PAGE_UP: "PageUp",\n  PAGE_DOWN: "PageDown",\n  BACKSPACE: "Backspace",\n  ALT: "Alt",\n  CTRL_OR_CMD: _constants__WEBPACK_IMPORTED_MODULE_0__.isDarwin ? "metaKey" : "ctrlKey",\n  DELETE: "Delete",\n  ENTER: "Enter",\n  ESCAPE: "Escape",\n  QUESTION_MARK: "?",\n  SPACE: " ",\n  TAB: "Tab",\n  CHEVRON_LEFT: "<",\n  CHEVRON_RIGHT: ">",\n  PERIOD: ".",\n  COMMA: ",",\n  SUBTRACT: "-",\n  A: "a",\n  C: "c",\n  D: "d",\n  E: "e",\n  F: "f",\n  G: "g",\n  H: "h",\n  I: "i",\n  L: "l",\n  O: "o",\n  P: "p",\n  Q: "q",\n  R: "r",\n  S: "s",\n  T: "t",\n  V: "v",\n  X: "x",\n  Y: "y",\n  Z: "z",\n  K: "k",\n  W: "w",\n  0: "0",\n  1: "1",\n  2: "2",\n  3: "3",\n  4: "4",\n  5: "5",\n  6: "6",\n  7: "7",\n  8: "8",\n  9: "9"\n};\nconst isArrowKey = key => key === KEYS.ARROW_LEFT || key === KEYS.ARROW_RIGHT || key === KEYS.ARROW_DOWN || key === KEYS.ARROW_UP;\nconst shouldResizeFromCenter = event => event.altKey;\nconst shouldMaintainAspectRatio = event => event.shiftKey;\nconst shouldRotateWithDiscreteAngle = event => event.shiftKey;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4va2V5cy50cy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQXVDO0FBQ2hDO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLGdEQUFRO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4va2V5cy50cz9mZWVjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzRGFyd2luIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5leHBvcnQgY29uc3QgQ09ERVMgPSB7XG4gIEVRVUFMOiBcIkVxdWFsXCIsXG4gIE1JTlVTOiBcIk1pbnVzXCIsXG4gIE5VTV9BREQ6IFwiTnVtcGFkQWRkXCIsXG4gIE5VTV9TVUJUUkFDVDogXCJOdW1wYWRTdWJ0cmFjdFwiLFxuICBOVU1fWkVSTzogXCJOdW1wYWQwXCIsXG4gIEJSQUNLRVRfUklHSFQ6IFwiQnJhY2tldFJpZ2h0XCIsXG4gIEJSQUNLRVRfTEVGVDogXCJCcmFja2V0TGVmdFwiLFxuICBPTkU6IFwiRGlnaXQxXCIsXG4gIFRXTzogXCJEaWdpdDJcIixcbiAgVEhSRUU6IFwiRGlnaXQzXCIsXG4gIE5JTkU6IFwiRGlnaXQ5XCIsXG4gIFFVT1RFOiBcIlF1b3RlXCIsXG4gIFpFUk86IFwiRGlnaXQwXCIsXG4gIFNMQVNIOiBcIlNsYXNoXCIsXG4gIEM6IFwiS2V5Q1wiLFxuICBEOiBcIktleURcIixcbiAgSDogXCJLZXlIXCIsXG4gIFY6IFwiS2V5VlwiLFxuICBaOiBcIktleVpcIixcbiAgUjogXCJLZXlSXCIsXG4gIFM6IFwiS2V5U1wiXG59O1xuZXhwb3J0IGNvbnN0IEtFWVMgPSB7XG4gIEFSUk9XX0RPV046IFwiQXJyb3dEb3duXCIsXG4gIEFSUk9XX0xFRlQ6IFwiQXJyb3dMZWZ0XCIsXG4gIEFSUk9XX1JJR0hUOiBcIkFycm93UmlnaHRcIixcbiAgQVJST1dfVVA6IFwiQXJyb3dVcFwiLFxuICBQQUdFX1VQOiBcIlBhZ2VVcFwiLFxuICBQQUdFX0RPV046IFwiUGFnZURvd25cIixcbiAgQkFDS1NQQUNFOiBcIkJhY2tzcGFjZVwiLFxuICBBTFQ6IFwiQWx0XCIsXG4gIENUUkxfT1JfQ01EOiBpc0RhcndpbiA/IFwibWV0YUtleVwiIDogXCJjdHJsS2V5XCIsXG4gIERFTEVURTogXCJEZWxldGVcIixcbiAgRU5URVI6IFwiRW50ZXJcIixcbiAgRVNDQVBFOiBcIkVzY2FwZVwiLFxuICBRVUVTVElPTl9NQVJLOiBcIj9cIixcbiAgU1BBQ0U6IFwiIFwiLFxuICBUQUI6IFwiVGFiXCIsXG4gIENIRVZST05fTEVGVDogXCI8XCIsXG4gIENIRVZST05fUklHSFQ6IFwiPlwiLFxuICBQRVJJT0Q6IFwiLlwiLFxuICBDT01NQTogXCIsXCIsXG4gIFNVQlRSQUNUOiBcIi1cIixcbiAgQTogXCJhXCIsXG4gIEM6IFwiY1wiLFxuICBEOiBcImRcIixcbiAgRTogXCJlXCIsXG4gIEY6IFwiZlwiLFxuICBHOiBcImdcIixcbiAgSDogXCJoXCIsXG4gIEk6IFwiaVwiLFxuICBMOiBcImxcIixcbiAgTzogXCJvXCIsXG4gIFA6IFwicFwiLFxuICBROiBcInFcIixcbiAgUjogXCJyXCIsXG4gIFM6IFwic1wiLFxuICBUOiBcInRcIixcbiAgVjogXCJ2XCIsXG4gIFg6IFwieFwiLFxuICBZOiBcInlcIixcbiAgWjogXCJ6XCIsXG4gIEs6IFwia1wiLFxuICBXOiBcIndcIixcbiAgMDogXCIwXCIsXG4gIDE6IFwiMVwiLFxuICAyOiBcIjJcIixcbiAgMzogXCIzXCIsXG4gIDQ6IFwiNFwiLFxuICA1OiBcIjVcIixcbiAgNjogXCI2XCIsXG4gIDc6IFwiN1wiLFxuICA4OiBcIjhcIixcbiAgOTogXCI5XCJcbn07XG5leHBvcnQgY29uc3QgaXNBcnJvd0tleSA9IGtleSA9PiBrZXkgPT09IEtFWVMuQVJST1dfTEVGVCB8fCBrZXkgPT09IEtFWVMuQVJST1dfUklHSFQgfHwga2V5ID09PSBLRVlTLkFSUk9XX0RPV04gfHwga2V5ID09PSBLRVlTLkFSUk9XX1VQO1xuZXhwb3J0IGNvbnN0IHNob3VsZFJlc2l6ZUZyb21DZW50ZXIgPSBldmVudCA9PiBldmVudC5hbHRLZXk7XG5leHBvcnQgY29uc3Qgc2hvdWxkTWFpbnRhaW5Bc3BlY3RSYXRpbyA9IGV2ZW50ID0+IGV2ZW50LnNoaWZ0S2V5O1xuZXhwb3J0IGNvbnN0IHNob3VsZFJvdGF0ZVdpdGhEaXNjcmV0ZUFuZ2xlID0gZXZlbnQgPT4gZXZlbnQuc2hpZnRLZXk7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../keys.ts\n');
              }
            ),
            /***/
            "../../math.ts": (
              /*!*********************!*\
                !*** ../../math.ts ***!
                \*********************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "adjustXYWithRotation": () => (/* binding */ adjustXYWithRotation),\n/* harmony export */   "arePointsEqual": () => (/* binding */ arePointsEqual),\n/* harmony export */   "centerPoint": () => (/* binding */ centerPoint),\n/* harmony export */   "distance2d": () => (/* binding */ distance2d),\n/* harmony export */   "getBezierCurveArcLengths": () => (/* binding */ getBezierCurveArcLengths),\n/* harmony export */   "getBezierCurveLength": () => (/* binding */ getBezierCurveLength),\n/* harmony export */   "getBezierXY": () => (/* binding */ getBezierXY),\n/* harmony export */   "getControlPointsForBezierCurve": () => (/* binding */ getControlPointsForBezierCurve),\n/* harmony export */   "getCornerRadius": () => (/* binding */ getCornerRadius),\n/* harmony export */   "getGridPoint": () => (/* binding */ getGridPoint),\n/* harmony export */   "getPointOnAPath": () => (/* binding */ getPointOnAPath),\n/* harmony export */   "getPointsInBezierCurve": () => (/* binding */ getPointsInBezierCurve),\n/* harmony export */   "isPathALoop": () => (/* binding */ isPathALoop),\n/* harmony export */   "isPointInPolygon": () => (/* binding */ isPointInPolygon),\n/* harmony export */   "isPointWithinBounds": () => (/* binding */ isPointWithinBounds),\n/* harmony export */   "isRightAngle": () => (/* binding */ isRightAngle),\n/* harmony export */   "isValueInRange": () => (/* binding */ isValueInRange),\n/* harmony export */   "mapIntervalToBezierT": () => (/* binding */ mapIntervalToBezierT),\n/* harmony export */   "rangeIntersection": () => (/* binding */ rangeIntersection),\n/* harmony export */   "rangesOverlap": () => (/* binding */ rangesOverlap),\n/* harmony export */   "rotate": () => (/* binding */ rotate),\n/* harmony export */   "rotatePoint": () => (/* binding */ rotatePoint)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constants */ "../../constants.ts");\n/* harmony import */ var _element_bounds__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./element/bounds */ "../../element/bounds.ts");\n/* harmony import */ var _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./scene/ShapeCache */ "../../scene/ShapeCache.ts");\n\n\n\nconst rotate = (x1, y1, x2, y2, angle) => // \u{1D44E}\u2032\u{1D465}=(\u{1D44E}\u{1D465}\u2212\u{1D450}\u{1D465})cos\u{1D703}\u2212(\u{1D44E}\u{1D466}\u2212\u{1D450}\u{1D466})sin\u{1D703}+\u{1D450}\u{1D465}\n// \u{1D44E}\u2032\u{1D466}=(\u{1D44E}\u{1D465}\u2212\u{1D450}\u{1D465})sin\u{1D703}+(\u{1D44E}\u{1D466}\u2212\u{1D450}\u{1D466})cos\u{1D703}+\u{1D450}\u{1D466}.\n// https://math.stackexchange.com/questions/2204520/how-do-i-rotate-a-line-segment-in-a-specific-point-on-the-line\n[(x1 - x2) * Math.cos(angle) - (y1 - y2) * Math.sin(angle) + x2, (x1 - x2) * Math.sin(angle) + (y1 - y2) * Math.cos(angle) + y2];\nconst rotatePoint = (point, center, angle) => rotate(point[0], point[1], center[0], center[1], angle);\nconst adjustXYWithRotation = (sides, x, y, angle, deltaX1, deltaY1, deltaX2, deltaY2) => {\n  const cos = Math.cos(angle);\n  const sin = Math.sin(angle);\n\n  if (sides.e && sides.w) {\n    x += deltaX1 + deltaX2;\n  } else if (sides.e) {\n    x += deltaX1 * (1 + cos);\n    y += deltaX1 * sin;\n    x += deltaX2 * (1 - cos);\n    y += deltaX2 * -sin;\n  } else if (sides.w) {\n    x += deltaX1 * (1 - cos);\n    y += deltaX1 * -sin;\n    x += deltaX2 * (1 + cos);\n    y += deltaX2 * sin;\n  }\n\n  if (sides.n && sides.s) {\n    y += deltaY1 + deltaY2;\n  } else if (sides.n) {\n    x += deltaY1 * sin;\n    y += deltaY1 * (1 - cos);\n    x += deltaY2 * -sin;\n    y += deltaY2 * (1 + cos);\n  } else if (sides.s) {\n    x += deltaY1 * -sin;\n    y += deltaY1 * (1 + cos);\n    x += deltaY2 * sin;\n    y += deltaY2 * (1 - cos);\n  }\n\n  return [x, y];\n};\nconst getPointOnAPath = (point, path) => {\n  const [px, py] = point;\n  const [start, ...other] = path;\n  let [lastX, lastY] = start;\n  let kLine = 0;\n  let idx = 0; // if any item in the array is true, it means that a point is\n  // on some segment of a line based path\n\n  const retVal = other.some(([x2, y2], i) => {\n    // we always take a line when dealing with line segments\n    const x1 = lastX;\n    const y1 = lastY;\n    lastX = x2;\n    lastY = y2; // if a point is not within the domain of the line segment\n    // it is not on the line segment\n\n    if (px < x1 || px > x2) {\n      return false;\n    } // check if all points lie on the same line\n    // y1 = kx1 + b, y2 = kx2 + b\n    // y2 - y1 = k(x2 - x2) -> k = (y2 - y1) / (x2 - x1)\n    // coefficient for the line (p0, p1)\n\n\n    const kL = (y2 - y1) / (x2 - x1); // coefficient for the line segment (p0, point)\n\n    const kP1 = (py - y1) / (px - x1); // coefficient for the line segment (point, p1)\n\n    const kP2 = (py - y2) / (px - x2); // because we are basing both lines from the same starting point\n    // the only option for collinearity is having same coefficients\n    // using it for floating point comparisons\n\n    const epsilon = 0.3; // if coefficient is more than an arbitrary epsilon,\n    // these lines are nor collinear\n\n    if (Math.abs(kP1 - kL) > epsilon && Math.abs(kP2 - kL) > epsilon) {\n      return false;\n    } // store the coefficient because we are goint to need it\n\n\n    kLine = kL;\n    idx = i;\n    return true;\n  }); // Return a coordinate that is always on the line segment\n\n  if (retVal === true) {\n    return {\n      x: point[0],\n      y: kLine * point[0],\n      segment: idx\n    };\n  }\n\n  return null;\n};\nconst distance2d = (x1, y1, x2, y2) => {\n  const xd = x2 - x1;\n  const yd = y2 - y1;\n  return Math.hypot(xd, yd);\n};\nconst centerPoint = (a, b) => {\n  return [(a[0] + b[0]) / 2, (a[1] + b[1]) / 2];\n}; // Checks if the first and last point are close enough\n// to be considered a loop\n\nconst isPathALoop = (points,\n/** supply if you want the loop detection to account for current zoom */\nzoomValue = 1) => {\n  if (points.length >= 3) {\n    const [first, last] = [points[0], points[points.length - 1]];\n    const distance = distance2d(first[0], first[1], last[0], last[1]); // Adjusting LINE_CONFIRM_THRESHOLD to current zoom so that when zoomed in\n    // really close we make the threshold smaller, and vice versa.\n\n    return distance <= _constants__WEBPACK_IMPORTED_MODULE_0__.LINE_CONFIRM_THRESHOLD / zoomValue;\n  }\n\n  return false;\n}; // Draw a line from the point to the right till infiinty\n// Check how many lines of the polygon does this infinite line intersects with\n// If the number of intersections is odd, point is in the polygon\n\nconst isPointInPolygon = (points, x, y) => {\n  const vertices = points.length; // There must be at least 3 vertices in polygon\n\n  if (vertices < 3) {\n    return false;\n  }\n\n  const extreme = [Number.MAX_SAFE_INTEGER, y];\n  const p = [x, y];\n  let count = 0;\n\n  for (let i = 0; i < vertices; i++) {\n    const current = points[i];\n    const next = points[(i + 1) % vertices];\n\n    if (doSegmentsIntersect(current, next, p, extreme)) {\n      if (orderedColinearOrientation(current, p, next) === 0) {\n        return isPointWithinBounds(current, p, next);\n      }\n\n      count++;\n    }\n  } // true if count is off\n\n\n  return count % 2 === 1;\n}; // Returns whether `q` lies inside the segment/rectangle defined by `p` and `r`.\n// This is an approximation to "does `q` lie on a segment `pr`" check.\n\nconst isPointWithinBounds = (p, q, r) => {\n  return q[0] <= Math.max(p[0], r[0]) && q[0] >= Math.min(p[0], r[0]) && q[1] <= Math.max(p[1], r[1]) && q[1] >= Math.min(p[1], r[1]);\n}; // For the ordered points p, q, r, return\n// 0 if p, q, r are colinear\n// 1 if Clockwise\n// 2 if counterclickwise\n\nconst orderedColinearOrientation = (p, q, r) => {\n  const val = (q[1] - p[1]) * (r[0] - q[0]) - (q[0] - p[0]) * (r[1] - q[1]);\n\n  if (val === 0) {\n    return 0;\n  }\n\n  return val > 0 ? 1 : 2;\n}; // Check is p1q1 intersects with p2q2\n\n\nconst doSegmentsIntersect = (p1, q1, p2, q2) => {\n  const o1 = orderedColinearOrientation(p1, q1, p2);\n  const o2 = orderedColinearOrientation(p1, q1, q2);\n  const o3 = orderedColinearOrientation(p2, q2, p1);\n  const o4 = orderedColinearOrientation(p2, q2, q1);\n\n  if (o1 !== o2 && o3 !== o4) {\n    return true;\n  } // p1, q1 and p2 are colinear and p2 lies on segment p1q1\n\n\n  if (o1 === 0 && isPointWithinBounds(p1, p2, q1)) {\n    return true;\n  } // p1, q1 and p2 are colinear and q2 lies on segment p1q1\n\n\n  if (o2 === 0 && isPointWithinBounds(p1, q2, q1)) {\n    return true;\n  } // p2, q2 and p1 are colinear and p1 lies on segment p2q2\n\n\n  if (o3 === 0 && isPointWithinBounds(p2, p1, q2)) {\n    return true;\n  } // p2, q2 and q1 are colinear and q1 lies on segment p2q2\n\n\n  if (o4 === 0 && isPointWithinBounds(p2, q1, q2)) {\n    return true;\n  }\n\n  return false;\n}; // TODO: Rounding this point causes some shake when free drawing\n\n\nconst getGridPoint = (x, y, gridSize) => {\n  if (gridSize) {\n    return [Math.round(x / gridSize) * gridSize, Math.round(y / gridSize) * gridSize];\n  }\n\n  return [x, y];\n};\nconst getCornerRadius = (x, element) => {\n  var _a, _b, _c, _d, _e;\n\n  if (((_a = element.roundness) === null || _a === void 0 ? void 0 : _a.type) === _constants__WEBPACK_IMPORTED_MODULE_0__.ROUNDNESS.PROPORTIONAL_RADIUS || ((_b = element.roundness) === null || _b === void 0 ? void 0 : _b.type) === _constants__WEBPACK_IMPORTED_MODULE_0__.ROUNDNESS.LEGACY) {\n    return x * _constants__WEBPACK_IMPORTED_MODULE_0__.DEFAULT_PROPORTIONAL_RADIUS;\n  }\n\n  if (((_c = element.roundness) === null || _c === void 0 ? void 0 : _c.type) === _constants__WEBPACK_IMPORTED_MODULE_0__.ROUNDNESS.ADAPTIVE_RADIUS) {\n    const fixedRadiusSize = (_e = (_d = element.roundness) === null || _d === void 0 ? void 0 : _d.value) !== null && _e !== void 0 ? _e : _constants__WEBPACK_IMPORTED_MODULE_0__.DEFAULT_ADAPTIVE_RADIUS;\n    const CUTOFF_SIZE = fixedRadiusSize / _constants__WEBPACK_IMPORTED_MODULE_0__.DEFAULT_PROPORTIONAL_RADIUS;\n\n    if (x <= CUTOFF_SIZE) {\n      return x * _constants__WEBPACK_IMPORTED_MODULE_0__.DEFAULT_PROPORTIONAL_RADIUS;\n    }\n\n    return fixedRadiusSize;\n  }\n\n  return 0;\n};\nconst getControlPointsForBezierCurve = (element, endPoint) => {\n  const shape = _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_2__.ShapeCache.generateElementShape(element);\n\n  if (!shape) {\n    return null;\n  }\n\n  const ops = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_1__.getCurvePathOps)(shape[0]);\n  let currentP = [0, 0];\n  let index = 0;\n  let minDistance = Infinity;\n  let controlPoints = null;\n\n  while (index < ops.length) {\n    const {\n      op,\n      data\n    } = ops[index];\n\n    if (op === "move") {\n      currentP = data;\n    }\n\n    if (op === "bcurveTo") {\n      const p0 = currentP;\n      const p1 = [data[0], data[1]];\n      const p2 = [data[2], data[3]];\n      const p3 = [data[4], data[5]];\n      const distance = distance2d(p3[0], p3[1], endPoint[0], endPoint[1]);\n\n      if (distance < minDistance) {\n        minDistance = distance;\n        controlPoints = [p0, p1, p2, p3];\n      }\n\n      currentP = p3;\n    }\n\n    index++;\n  }\n\n  return controlPoints;\n};\nconst getBezierXY = (p0, p1, p2, p3, t) => {\n  const equation = (t, idx) => Math.pow(1 - t, 3) * p3[idx] + 3 * t * Math.pow(1 - t, 2) * p2[idx] + 3 * Math.pow(t, 2) * (1 - t) * p1[idx] + p0[idx] * Math.pow(t, 3);\n\n  const tx = equation(t, 0);\n  const ty = equation(t, 1);\n  return [tx, ty];\n};\nconst getPointsInBezierCurve = (element, endPoint) => {\n  const controlPoints = getControlPointsForBezierCurve(element, endPoint);\n\n  if (!controlPoints) {\n    return [];\n  }\n\n  const pointsOnCurve = [];\n  let t = 1; // Take 20 points on curve for better accuracy\n\n  while (t > 0) {\n    const point = getBezierXY(controlPoints[0], controlPoints[1], controlPoints[2], controlPoints[3], t);\n    pointsOnCurve.push([point[0], point[1]]);\n    t -= 0.05;\n  }\n\n  if (pointsOnCurve.length) {\n    if (arePointsEqual(pointsOnCurve.at(-1), endPoint)) {\n      pointsOnCurve.push([endPoint[0], endPoint[1]]);\n    }\n  }\n\n  return pointsOnCurve;\n};\nconst getBezierCurveArcLengths = (element, endPoint) => {\n  const arcLengths = [];\n  arcLengths[0] = 0;\n  const points = getPointsInBezierCurve(element, endPoint);\n  let index = 0;\n  let distance = 0;\n\n  while (index < points.length - 1) {\n    const segmentDistance = distance2d(points[index][0], points[index][1], points[index + 1][0], points[index + 1][1]);\n    distance += segmentDistance;\n    arcLengths.push(distance);\n    index++;\n  }\n\n  return arcLengths;\n};\nconst getBezierCurveLength = (element, endPoint) => {\n  const arcLengths = getBezierCurveArcLengths(element, endPoint);\n  return arcLengths.at(-1);\n}; // This maps interval to actual interval t on the curve so that when t = 0.5, its actually the point at 50% of the length\n\nconst mapIntervalToBezierT = (element, endPoint, interval) => {\n  const arcLengths = getBezierCurveArcLengths(element, endPoint);\n  const pointsCount = arcLengths.length - 1;\n  const curveLength = arcLengths.at(-1);\n  const targetLength = interval * curveLength;\n  let low = 0;\n  let high = pointsCount;\n  let index = 0; // Doing a binary search to find the largest length that is less than the target length\n\n  while (low < high) {\n    index = Math.floor(low + (high - low) / 2);\n\n    if (arcLengths[index] < targetLength) {\n      low = index + 1;\n    } else {\n      high = index;\n    }\n  }\n\n  if (arcLengths[index] > targetLength) {\n    index--;\n  }\n\n  if (arcLengths[index] === targetLength) {\n    return index / pointsCount;\n  }\n\n  return 1 - (index + (targetLength - arcLengths[index]) / (arcLengths[index + 1] - arcLengths[index])) / pointsCount;\n};\nconst arePointsEqual = (p1, p2) => {\n  return p1[0] === p2[0] && p1[1] === p2[1];\n};\nconst isRightAngle = angle => {\n  // if our angles were mathematically accurate, we could just check\n  //\n  //    angle % (Math.PI / 2) === 0\n  //\n  // but since we\'re in floating point land, we need to round.\n  //\n  // Below, after dividing by Math.PI, a multiple of 0.5 indicates a right\n  // angle, which we can check with modulo after rounding.\n  return Math.round(angle / Math.PI * 10000) % 5000 === 0;\n}; // Given two ranges, return if the two ranges overlap with each other\n// e.g. [1, 3] overlaps with [2, 4] while [1, 3] does not overlap with [4, 5]\n\nconst rangesOverlap = ([a0, a1], [b0, b1]) => {\n  if (a0 <= b0) {\n    return a1 >= b0;\n  }\n\n  if (a0 >= b0) {\n    return b1 >= a0;\n  }\n\n  return false;\n}; // Given two ranges,return ther intersection of the two ranges if any\n// e.g. the intersection of [1, 3] and [2, 4] is [2, 3]\n\nconst rangeIntersection = (rangeA, rangeB) => {\n  const rangeStart = Math.max(rangeA[0], rangeB[0]);\n  const rangeEnd = Math.min(rangeA[1], rangeB[1]);\n\n  if (rangeStart <= rangeEnd) {\n    return [rangeStart, rangeEnd];\n  }\n\n  return null;\n};\nconst isValueInRange = (value, min, max) => {\n  return value >= min && value <= max;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 19948 characters]\n//# sourceURL=webpack-internal:///../../math.ts\n');
              }
            ),
            /***/
            "../bbox.ts": (
              /*!******************!*\
                !*** ../bbox.ts ***!
                \******************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "crossProduct": () => (/* binding */ crossProduct),\n/* harmony export */   "doBBoxesIntersect": () => (/* binding */ doBBoxesIntersect),\n/* harmony export */   "doLineSegmentsIntersect": () => (/* binding */ doLineSegmentsIntersect),\n/* harmony export */   "getBBox": () => (/* binding */ getBBox),\n/* harmony export */   "isLineSegmentTouchingOrCrossingLine": () => (/* binding */ isLineSegmentTouchingOrCrossingLine),\n/* harmony export */   "isPointOnLine": () => (/* binding */ isPointOnLine),\n/* harmony export */   "isPointRightOfLine": () => (/* binding */ isPointRightOfLine),\n/* harmony export */   "translate": () => (/* binding */ translate)\n/* harmony export */ });\nfunction getBBox(line) {\n  return [Math.min(line[0][0], line[1][0]), Math.min(line[0][1], line[1][1]), Math.max(line[0][0], line[1][0]), Math.max(line[0][1], line[1][1])];\n}\nfunction crossProduct(a, b) {\n  return a[0] * b[1] - b[0] * a[1];\n}\nfunction doBBoxesIntersect(a, b) {\n  return a[0] <= b[2] && a[2] >= b[0] && a[1] <= b[3] && a[3] >= b[1];\n}\nfunction translate(a, b) {\n  return [a[0] - b[0], a[1] - b[1]];\n}\nconst EPSILON = 0.000001;\nfunction isPointOnLine(l, p) {\n  const p1 = translate(l[1], l[0]);\n  const p2 = translate(p, l[0]);\n  const r = crossProduct(p1, p2);\n  return Math.abs(r) < EPSILON;\n}\nfunction isPointRightOfLine(l, p) {\n  const p1 = translate(l[1], l[0]);\n  const p2 = translate(p, l[0]);\n  return crossProduct(p1, p2) < 0;\n}\nfunction isLineSegmentTouchingOrCrossingLine(a, b) {\n  return isPointOnLine(a, b[0]) || isPointOnLine(a, b[1]) || (isPointRightOfLine(a, b[0]) ? !isPointRightOfLine(a, b[1]) : isPointRightOfLine(a, b[1]));\n} // https://martin-thoma.com/how-to-check-if-two-line-segments-intersect/\n\nfunction doLineSegmentsIntersect(a, b) {\n  return doBBoxesIntersect(getBBox(a), getBBox(b)) && isLineSegmentTouchingOrCrossingLine(a, b) && isLineSegmentTouchingOrCrossingLine(b, a);\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vYmJveC50cy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFPO0FBQ1A7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQSxFQUFFOztBQUVLO0FBQ1A7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi9iYm94LnRzP2Y4MWYiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGdldEJCb3gobGluZSkge1xuICByZXR1cm4gW01hdGgubWluKGxpbmVbMF1bMF0sIGxpbmVbMV1bMF0pLCBNYXRoLm1pbihsaW5lWzBdWzFdLCBsaW5lWzFdWzFdKSwgTWF0aC5tYXgobGluZVswXVswXSwgbGluZVsxXVswXSksIE1hdGgubWF4KGxpbmVbMF1bMV0sIGxpbmVbMV1bMV0pXTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBjcm9zc1Byb2R1Y3QoYSwgYikge1xuICByZXR1cm4gYVswXSAqIGJbMV0gLSBiWzBdICogYVsxXTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBkb0JCb3hlc0ludGVyc2VjdChhLCBiKSB7XG4gIHJldHVybiBhWzBdIDw9IGJbMl0gJiYgYVsyXSA+PSBiWzBdICYmIGFbMV0gPD0gYlszXSAmJiBhWzNdID49IGJbMV07XG59XG5leHBvcnQgZnVuY3Rpb24gdHJhbnNsYXRlKGEsIGIpIHtcbiAgcmV0dXJuIFthWzBdIC0gYlswXSwgYVsxXSAtIGJbMV1dO1xufVxuY29uc3QgRVBTSUxPTiA9IDAuMDAwMDAxO1xuZXhwb3J0IGZ1bmN0aW9uIGlzUG9pbnRPbkxpbmUobCwgcCkge1xuICBjb25zdCBwMSA9IHRyYW5zbGF0ZShsWzFdLCBsWzBdKTtcbiAgY29uc3QgcDIgPSB0cmFuc2xhdGUocCwgbFswXSk7XG4gIGNvbnN0IHIgPSBjcm9zc1Byb2R1Y3QocDEsIHAyKTtcbiAgcmV0dXJuIE1hdGguYWJzKHIpIDwgRVBTSUxPTjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1BvaW50UmlnaHRPZkxpbmUobCwgcCkge1xuICBjb25zdCBwMSA9IHRyYW5zbGF0ZShsWzFdLCBsWzBdKTtcbiAgY29uc3QgcDIgPSB0cmFuc2xhdGUocCwgbFswXSk7XG4gIHJldHVybiBjcm9zc1Byb2R1Y3QocDEsIHAyKSA8IDA7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNMaW5lU2VnbWVudFRvdWNoaW5nT3JDcm9zc2luZ0xpbmUoYSwgYikge1xuICByZXR1cm4gaXNQb2ludE9uTGluZShhLCBiWzBdKSB8fCBpc1BvaW50T25MaW5lKGEsIGJbMV0pIHx8IChpc1BvaW50UmlnaHRPZkxpbmUoYSwgYlswXSkgPyAhaXNQb2ludFJpZ2h0T2ZMaW5lKGEsIGJbMV0pIDogaXNQb2ludFJpZ2h0T2ZMaW5lKGEsIGJbMV0pKTtcbn0gLy8gaHR0cHM6Ly9tYXJ0aW4tdGhvbWEuY29tL2hvdy10by1jaGVjay1pZi10d28tbGluZS1zZWdtZW50cy1pbnRlcnNlY3QvXG5cbmV4cG9ydCBmdW5jdGlvbiBkb0xpbmVTZWdtZW50c0ludGVyc2VjdChhLCBiKSB7XG4gIHJldHVybiBkb0JCb3hlc0ludGVyc2VjdChnZXRCQm94KGEpLCBnZXRCQm94KGIpKSAmJiBpc0xpbmVTZWdtZW50VG91Y2hpbmdPckNyb3NzaW5nTGluZShhLCBiKSAmJiBpc0xpbmVTZWdtZW50VG91Y2hpbmdPckNyb3NzaW5nTGluZShiLCBhKTtcbn0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../bbox.ts\n');
              }
            ),
            /***/
            "./entry.js": (
              /*!******************!*\
                !*** ./entry.js ***!
                \******************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "Button": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.Button),\n/* harmony export */   "DefaultSidebar": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.DefaultSidebar),\n/* harmony export */   "Excalidraw": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.Excalidraw),\n/* harmony export */   "FONT_FAMILY": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.FONT_FAMILY),\n/* harmony export */   "Footer": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.Footer),\n/* harmony export */   "LiveCollaborationTrigger": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.LiveCollaborationTrigger),\n/* harmony export */   "MIME_TYPES": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.MIME_TYPES),\n/* harmony export */   "MainMenu": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.MainMenu),\n/* harmony export */   "Sidebar": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.Sidebar),\n/* harmony export */   "THEME": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.THEME),\n/* harmony export */   "WelcomeScreen": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.WelcomeScreen),\n/* harmony export */   "bumpVersion": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.bumpVersion),\n/* harmony export */   "convertToExcalidrawElements": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.convertToExcalidrawElements),\n/* harmony export */   "defaultLang": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.defaultLang),\n/* harmony export */   "elementPartiallyOverlapsWithOrContainsBBox": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.elementPartiallyOverlapsWithOrContainsBBox),\n/* harmony export */   "elementsOverlappingBBox": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.elementsOverlappingBBox),\n/* harmony export */   "exportToBlob": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.exportToBlob),\n/* harmony export */   "exportToCanvas": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.exportToCanvas),\n/* harmony export */   "exportToClipboard": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.exportToClipboard),\n/* harmony export */   "exportToSvg": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.exportToSvg),\n/* harmony export */   "getCommonBounds": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.getCommonBounds),\n/* harmony export */   "getFreeDrawSvgPath": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.getFreeDrawSvgPath),\n/* harmony export */   "getNonDeletedElements": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.getNonDeletedElements),\n/* harmony export */   "getSceneVersion": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.getSceneVersion),\n/* harmony export */   "isElementInsideBBox": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.isElementInsideBBox),\n/* harmony export */   "isInvisiblySmallElement": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.isInvisiblySmallElement),\n/* harmony export */   "isLinearElement": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.isLinearElement),\n/* harmony export */   "languages": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.languages),\n/* harmony export */   "loadFromBlob": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.loadFromBlob),\n/* harmony export */   "loadLibraryFromBlob": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.loadLibraryFromBlob),\n/* harmony export */   "loadSceneOrLibraryFromBlob": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.loadSceneOrLibraryFromBlob),\n/* harmony export */   "mergeLibraryItems": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.mergeLibraryItems),\n/* harmony export */   "mutateElement": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.mutateElement),\n/* harmony export */   "newElementWith": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.newElementWith),\n/* harmony export */   "normalizeLink": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.normalizeLink),\n/* harmony export */   "parseLibraryTokensFromUrl": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.parseLibraryTokensFromUrl),\n/* harmony export */   "restore": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.restore),\n/* harmony export */   "restoreAppState": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.restoreAppState),\n/* harmony export */   "restoreElements": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.restoreElements),\n/* harmony export */   "restoreLibraryItems": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.restoreLibraryItems),\n/* harmony export */   "sceneCoordsToViewportCoords": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.sceneCoordsToViewportCoords),\n/* harmony export */   "serializeAsJSON": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.serializeAsJSON),\n/* harmony export */   "serializeLibraryAsJSON": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.serializeLibraryAsJSON),\n/* harmony export */   "useDevice": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.useDevice),\n/* harmony export */   "useHandleLibrary": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.useHandleLibrary),\n/* harmony export */   "useI18n": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.useI18n),\n/* harmony export */   "viewportCoordsToSceneCoords": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_3__.viewportCoordsToSceneCoords)\n/* harmony export */ });\n/* harmony import */ var _publicPath__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./publicPath */ "./publicPath.js");\n/* harmony import */ var _polyfill__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../polyfill */ "../../polyfill.ts");\n/* harmony import */ var _public_fonts_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../public/fonts.css */ "../../../public/fonts.css");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./index */ "./index.tsx");\n\n\n\n(0,_polyfill__WEBPACK_IMPORTED_MODULE_1__["default"])();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9lbnRyeS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBc0I7QUFDZ0I7QUFDSDtBQUNuQyxxREFBUSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL2VudHJ5LmpzP2I4NzgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFwiLi9wdWJsaWNQYXRoXCI7XG5pbXBvcnQgcG9seWZpbGwgZnJvbSBcIi4uLy4uL3BvbHlmaWxsXCI7XG5pbXBvcnQgXCIuLi8uLi8uLi9wdWJsaWMvZm9udHMuY3NzXCI7XG5wb2x5ZmlsbCgpO1xuZXhwb3J0ICogZnJvbSBcIi4vaW5kZXhcIjsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./entry.js\n');
              }
            ),
            /***/
            "./index.tsx": (
              /*!*******************!*\
                !*** ./index.tsx ***!
                \*******************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "Button": () => (/* reexport safe */ _components_Button__WEBPACK_IMPORTED_MODULE_22__.Button),\n/* harmony export */   "DefaultSidebar": () => (/* reexport safe */ _components_DefaultSidebar__WEBPACK_IMPORTED_MODULE_23__.DefaultSidebar),\n/* harmony export */   "Excalidraw": () => (/* binding */ Excalidraw),\n/* harmony export */   "FONT_FAMILY": () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_8__.FONT_FAMILY),\n/* harmony export */   "Footer": () => (/* reexport safe */ _components_footer_FooterCenter__WEBPACK_IMPORTED_MODULE_10__["default"]),\n/* harmony export */   "LiveCollaborationTrigger": () => (/* reexport safe */ _components_live_collaboration_LiveCollaborationTrigger__WEBPACK_IMPORTED_MODULE_13__["default"]),\n/* harmony export */   "MIME_TYPES": () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_8__.MIME_TYPES),\n/* harmony export */   "MainMenu": () => (/* reexport safe */ _components_main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_11__["default"]),\n/* harmony export */   "Sidebar": () => (/* reexport safe */ _components_Sidebar_Sidebar__WEBPACK_IMPORTED_MODULE_21__.Sidebar),\n/* harmony export */   "THEME": () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_8__.THEME),\n/* harmony export */   "WelcomeScreen": () => (/* reexport safe */ _components_welcome_screen_WelcomeScreen__WEBPACK_IMPORTED_MODULE_12__["default"]),\n/* harmony export */   "bumpVersion": () => (/* reexport safe */ _element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.bumpVersion),\n/* harmony export */   "convertToExcalidrawElements": () => (/* reexport safe */ _data_transform__WEBPACK_IMPORTED_MODULE_25__.convertToExcalidrawElements),\n/* harmony export */   "defaultLang": () => (/* reexport safe */ _i18n__WEBPACK_IMPORTED_MODULE_7__.defaultLang),\n/* harmony export */   "elementPartiallyOverlapsWithOrContainsBBox": () => (/* reexport safe */ _withinBounds__WEBPACK_IMPORTED_MODULE_27__.elementPartiallyOverlapsWithOrContainsBBox),\n/* harmony export */   "elementsOverlappingBBox": () => (/* reexport safe */ _withinBounds__WEBPACK_IMPORTED_MODULE_27__.elementsOverlappingBBox),\n/* harmony export */   "exportToBlob": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_17__.exportToBlob),\n/* harmony export */   "exportToCanvas": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_17__.exportToCanvas),\n/* harmony export */   "exportToClipboard": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_17__.exportToClipboard),\n/* harmony export */   "exportToSvg": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_17__.exportToSvg),\n/* harmony export */   "getCommonBounds": () => (/* reexport safe */ _element_bounds__WEBPACK_IMPORTED_MODULE_26__.getCommonBounds),\n/* harmony export */   "getFreeDrawSvgPath": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_17__.getFreeDrawSvgPath),\n/* harmony export */   "getNonDeletedElements": () => (/* reexport safe */ _element__WEBPACK_IMPORTED_MODULE_15__.getNonDeletedElements),\n/* harmony export */   "getSceneVersion": () => (/* reexport safe */ _element__WEBPACK_IMPORTED_MODULE_15__.getSceneVersion),\n/* harmony export */   "isElementInsideBBox": () => (/* reexport safe */ _withinBounds__WEBPACK_IMPORTED_MODULE_27__.isElementInsideBBox),\n/* harmony export */   "isInvisiblySmallElement": () => (/* reexport safe */ _element__WEBPACK_IMPORTED_MODULE_15__.isInvisiblySmallElement),\n/* harmony export */   "isLinearElement": () => (/* reexport safe */ _element_typeChecks__WEBPACK_IMPORTED_MODULE_18__.isLinearElement),\n/* harmony export */   "languages": () => (/* reexport safe */ _i18n__WEBPACK_IMPORTED_MODULE_7__.languages),\n/* harmony export */   "loadFromBlob": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_17__.loadFromBlob),\n/* harmony export */   "loadLibraryFromBlob": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_17__.loadLibraryFromBlob),\n/* harmony export */   "loadSceneOrLibraryFromBlob": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_17__.loadSceneOrLibraryFromBlob),\n/* harmony export */   "mergeLibraryItems": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_17__.mergeLibraryItems),\n/* harmony export */   "mutateElement": () => (/* reexport safe */ _element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.mutateElement),\n/* harmony export */   "newElementWith": () => (/* reexport safe */ _element_mutateElement__WEBPACK_IMPORTED_MODULE_19__.newElementWith),\n/* harmony export */   "normalizeLink": () => (/* reexport safe */ _data_url__WEBPACK_IMPORTED_MODULE_24__.normalizeLink),\n/* harmony export */   "parseLibraryTokensFromUrl": () => (/* reexport safe */ _data_library__WEBPACK_IMPORTED_MODULE_20__.parseLibraryTokensFromUrl),\n/* harmony export */   "restore": () => (/* reexport safe */ _data_restore__WEBPACK_IMPORTED_MODULE_16__.restore),\n/* harmony export */   "restoreAppState": () => (/* reexport safe */ _data_restore__WEBPACK_IMPORTED_MODULE_16__.restoreAppState),\n/* harmony export */   "restoreElements": () => (/* reexport safe */ _data_restore__WEBPACK_IMPORTED_MODULE_16__.restoreElements),\n/* harmony export */   "restoreLibraryItems": () => (/* reexport safe */ _data_restore__WEBPACK_IMPORTED_MODULE_16__.restoreLibraryItems),\n/* harmony export */   "sceneCoordsToViewportCoords": () => (/* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_4__.sceneCoordsToViewportCoords),\n/* harmony export */   "serializeAsJSON": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_17__.serializeAsJSON),\n/* harmony export */   "serializeLibraryAsJSON": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_17__.serializeLibraryAsJSON),\n/* harmony export */   "useDevice": () => (/* reexport safe */ _components_App__WEBPACK_IMPORTED_MODULE_3__.useDevice),\n/* harmony export */   "useHandleLibrary": () => (/* reexport safe */ _data_library__WEBPACK_IMPORTED_MODULE_20__.useHandleLibrary),\n/* harmony export */   "useI18n": () => (/* reexport safe */ _i18n__WEBPACK_IMPORTED_MODULE_7__.useI18n),\n/* harmony export */   "viewportCoordsToSceneCoords": () => (/* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_4__.viewportCoordsToSceneCoords)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ "../../../node_modules/react/jsx-runtime.js");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _components_InitializeApp__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../components/InitializeApp */ "../../components/InitializeApp.tsx");\n/* harmony import */ var _components_App__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../components/App */ "../../components/App.tsx");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils */ "../../utils.ts");\n/* harmony import */ var _css_app_scss__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../css/app.scss */ "../../css/app.scss");\n/* harmony import */ var _css_styles_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../css/styles.scss */ "../../css/styles.scss");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../i18n */ "../../i18n.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../constants */ "../../constants.ts");\n/* harmony import */ var jotai__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! jotai */ "../../../node_modules/jotai/esm/index.mjs");\n/* harmony import */ var _jotai__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../jotai */ "../../jotai.ts");\n/* harmony import */ var _components_footer_FooterCenter__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../components/footer/FooterCenter */ "../../components/footer/FooterCenter.tsx");\n/* harmony import */ var _components_main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../components/main-menu/MainMenu */ "../../components/main-menu/MainMenu.tsx");\n/* harmony import */ var _components_welcome_screen_WelcomeScreen__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../components/welcome-screen/WelcomeScreen */ "../../components/welcome-screen/WelcomeScreen.tsx");\n/* harmony import */ var _components_live_collaboration_LiveCollaborationTrigger__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../components/live-collaboration/LiveCollaborationTrigger */ "../../components/live-collaboration/LiveCollaborationTrigger.tsx");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../element */ "../../element/index.ts");\n/* harmony import */ var _data_restore__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../data/restore */ "../../data/restore.ts");\n/* harmony import */ var _packages_utils__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../packages/utils */ "../utils.ts");\n/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../element/typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var _element_mutateElement__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../element/mutateElement */ "../../element/mutateElement.ts");\n/* harmony import */ var _data_library__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../../data/library */ "../../data/library.ts");\n/* harmony import */ var _components_Sidebar_Sidebar__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../../components/Sidebar/Sidebar */ "../../components/Sidebar/Sidebar.tsx");\n/* harmony import */ var _components_Button__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../../components/Button */ "../../components/Button.tsx");\n/* harmony import */ var _components_DefaultSidebar__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../../components/DefaultSidebar */ "../../components/DefaultSidebar.tsx");\n/* harmony import */ var _data_url__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../../data/url */ "../../data/url.ts");\n/* harmony import */ var _data_transform__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../../data/transform */ "../../data/transform.ts");\n/* harmony import */ var _element_bounds__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ../../element/bounds */ "../../element/bounds.ts");\n/* harmony import */ var _withinBounds__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ../withinBounds */ "../withinBounds.ts");\nvar __rest = undefined && undefined.__rest || function (s, e) {\n  var t = {};\n\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n\n  if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst ExcalidrawBase = props => {\n  var _a, _b, _c, _d, _e, _f;\n\n  const {\n    onChange,\n    initialData,\n    excalidrawAPI,\n    isCollaborating = false,\n    onPointerUpdate,\n    renderTopRightUI,\n    langCode = _i18n__WEBPACK_IMPORTED_MODULE_7__.defaultLang.code,\n    viewModeEnabled,\n    zenModeEnabled,\n    gridModeEnabled,\n    libraryReturnUrl,\n    theme,\n    name,\n    renderCustomStats,\n    onPaste,\n    detectScroll = true,\n    handleKeyboardGlobally = false,\n    onLibraryChange,\n    autoFocus = false,\n    generateIdForFile,\n    onLinkOpen,\n    onPointerDown,\n    onScrollChange,\n    children,\n    validateEmbeddable,\n    renderEmbeddable\n  } = props;\n  const canvasActions = (_a = props.UIOptions) === null || _a === void 0 ? void 0 : _a.canvasActions; // FIXME normalize/set defaults in parent component so that the memo resolver\n  // compares the same values\n\n  const UIOptions = Object.assign(Object.assign({}, props.UIOptions), {\n    canvasActions: Object.assign(Object.assign({}, _constants__WEBPACK_IMPORTED_MODULE_8__.DEFAULT_UI_OPTIONS.canvasActions), canvasActions),\n    tools: {\n      image: (_d = (_c = (_b = props.UIOptions) === null || _b === void 0 ? void 0 : _b.tools) === null || _c === void 0 ? void 0 : _c.image) !== null && _d !== void 0 ? _d : true\n    }\n  });\n\n  if (canvasActions === null || canvasActions === void 0 ? void 0 : canvasActions.export) {\n    UIOptions.canvasActions.export.saveFileToDisk = (_f = (_e = canvasActions.export) === null || _e === void 0 ? void 0 : _e.saveFileToDisk) !== null && _f !== void 0 ? _f : _constants__WEBPACK_IMPORTED_MODULE_8__.DEFAULT_UI_OPTIONS.canvasActions["export"].saveFileToDisk;\n  }\n\n  if (UIOptions.canvasActions.toggleTheme === null && typeof theme === "undefined") {\n    UIOptions.canvasActions.toggleTheme = true;\n  }\n\n  (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {\n    // Block pinch-zooming on iOS outside of the content area\n    const handleTouchMove = event => {\n      // @ts-ignore\n      if (typeof event.scale === "number" && event.scale !== 1) {\n        event.preventDefault();\n      }\n    };\n\n    document.addEventListener("touchmove", handleTouchMove, {\n      passive: false\n    });\n    return () => {\n      document.removeEventListener("touchmove", handleTouchMove);\n    };\n  }, []);\n  return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(jotai__WEBPACK_IMPORTED_MODULE_14__.Provider, Object.assign({\n    unstable_createStore: () => _jotai__WEBPACK_IMPORTED_MODULE_9__.jotaiStore,\n    scope: _jotai__WEBPACK_IMPORTED_MODULE_9__.jotaiScope\n  }, {\n    children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_InitializeApp__WEBPACK_IMPORTED_MODULE_2__.InitializeApp, Object.assign({\n      langCode: langCode,\n      theme: theme\n    }, {\n      children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_App__WEBPACK_IMPORTED_MODULE_3__["default"], Object.assign({\n        onChange: onChange,\n        initialData: initialData,\n        excalidrawAPI: excalidrawAPI,\n        isCollaborating: isCollaborating,\n        onPointerUpdate: onPointerUpdate,\n        renderTopRightUI: renderTopRightUI,\n        langCode: langCode,\n        viewModeEnabled: viewModeEnabled,\n        zenModeEnabled: zenModeEnabled,\n        gridModeEnabled: gridModeEnabled,\n        libraryReturnUrl: libraryReturnUrl,\n        theme: theme,\n        name: name,\n        renderCustomStats: renderCustomStats,\n        UIOptions: UIOptions,\n        onPaste: onPaste,\n        detectScroll: detectScroll,\n        handleKeyboardGlobally: handleKeyboardGlobally,\n        onLibraryChange: onLibraryChange,\n        autoFocus: autoFocus,\n        generateIdForFile: generateIdForFile,\n        onLinkOpen: onLinkOpen,\n        onPointerDown: onPointerDown,\n        onScrollChange: onScrollChange,\n        validateEmbeddable: validateEmbeddable,\n        renderEmbeddable: renderEmbeddable\n      }, {\n        children: children\n      }))\n    }))\n  }));\n};\n\nconst areEqual = (prevProps, nextProps) => {\n  // short-circuit early\n  if (prevProps.children !== nextProps.children) {\n    return false;\n  }\n\n  const {\n    initialData: prevInitialData,\n    UIOptions: prevUIOptions = {}\n  } = prevProps,\n        prev = __rest(prevProps, ["initialData", "UIOptions"]);\n\n  const {\n    initialData: nextInitialData,\n    UIOptions: nextUIOptions = {}\n  } = nextProps,\n        next = __rest(nextProps, ["initialData", "UIOptions"]); // comparing UIOptions\n\n\n  const prevUIOptionsKeys = Object.keys(prevUIOptions);\n  const nextUIOptionsKeys = Object.keys(nextUIOptions);\n\n  if (prevUIOptionsKeys.length !== nextUIOptionsKeys.length) {\n    return false;\n  }\n\n  const isUIOptionsSame = prevUIOptionsKeys.every(key => {\n    if (key === "canvasActions") {\n      const canvasOptionKeys = Object.keys(prevUIOptions.canvasActions);\n      return canvasOptionKeys.every(key => {\n        var _a, _b, _c, _d;\n\n        if (key === "export" && ((_a = prevUIOptions === null || prevUIOptions === void 0 ? void 0 : prevUIOptions.canvasActions) === null || _a === void 0 ? void 0 : _a.export) && ((_b = nextUIOptions === null || nextUIOptions === void 0 ? void 0 : nextUIOptions.canvasActions) === null || _b === void 0 ? void 0 : _b.export)) {\n          return prevUIOptions.canvasActions.export.saveFileToDisk === nextUIOptions.canvasActions.export.saveFileToDisk;\n        }\n\n        return ((_c = prevUIOptions === null || prevUIOptions === void 0 ? void 0 : prevUIOptions.canvasActions) === null || _c === void 0 ? void 0 : _c[key]) === ((_d = nextUIOptions === null || nextUIOptions === void 0 ? void 0 : nextUIOptions.canvasActions) === null || _d === void 0 ? void 0 : _d[key]);\n      });\n    }\n\n    return prevUIOptions[key] === nextUIOptions[key];\n  });\n  return isUIOptionsSame && (0,_utils__WEBPACK_IMPORTED_MODULE_4__.isShallowEqual)(prev, next);\n};\n\nconst Excalidraw = react__WEBPACK_IMPORTED_MODULE_1___default().memo(ExcalidrawBase, areEqual);\nExcalidraw.displayName = "Excalidraw";\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 13164 characters]\n//# sourceURL=webpack-internal:///./index.tsx\n');
              }
            ),
            /***/
            "./publicPath.js": (
              /*!***********************!*\
                !*** ./publicPath.js ***!
                \***********************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../constants */ "../../constants.ts");\n\n\nif ("development" !== _constants__WEBPACK_IMPORTED_MODULE_0__.ENV.TEST) {\n  /* eslint-disable */\n\n  /* global __webpack_public_path__:writable */\n  __webpack_require__.p = window.EXCALIDRAW_ASSET_PATH || `https://unpkg.com/${"@excalidraw/excalidraw"}@${"0.17.6"}/dist/`;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9wdWJsaWNQYXRoLmpzLmpzIiwibWFwcGluZ3MiOiI7O0FBQXNDOztBQUV0QyxJQUFJLGFBQW9CLEtBQUssZ0RBQVE7QUFDckM7O0FBRUE7QUFDQSxFQUFFLHFCQUF1Qix3REFBd0Qsd0JBQXlCLENBQUMsR0FBRyxRQUE0QixDQUFDO0FBQzNJIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vcHVibGljUGF0aC5qcz82N2Y5Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVOViB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBFTlYuVEVTVCkge1xuICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuXG4gIC8qIGdsb2JhbCBfX3dlYnBhY2tfcHVibGljX3BhdGhfXzp3cml0YWJsZSAqL1xuICBfX3dlYnBhY2tfcHVibGljX3BhdGhfXyA9IHdpbmRvdy5FWENBTElEUkFXX0FTU0VUX1BBVEggfHwgYGh0dHBzOi8vdW5wa2cuY29tLyR7cHJvY2Vzcy5lbnYuVklURV9QS0dfTkFNRX1AJHtwcm9jZXNzLmVudi5WSVRFX1BLR19WRVJTSU9OfS9kaXN0L2A7XG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./publicPath.js\n');
              }
            ),
            /***/
            "../utils.ts": (
              /*!*******************!*\
                !*** ../utils.ts ***!
                \*******************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "MIME_TYPES": () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_3__.MIME_TYPES),\n/* harmony export */   "crossProduct": () => (/* reexport safe */ _bbox__WEBPACK_IMPORTED_MODULE_7__.crossProduct),\n/* harmony export */   "doBBoxesIntersect": () => (/* reexport safe */ _bbox__WEBPACK_IMPORTED_MODULE_7__.doBBoxesIntersect),\n/* harmony export */   "doLineSegmentsIntersect": () => (/* reexport safe */ _bbox__WEBPACK_IMPORTED_MODULE_7__.doLineSegmentsIntersect),\n/* harmony export */   "elementPartiallyOverlapsWithOrContainsBBox": () => (/* reexport safe */ _withinBounds__WEBPACK_IMPORTED_MODULE_8__.elementPartiallyOverlapsWithOrContainsBBox),\n/* harmony export */   "elementsOverlappingBBox": () => (/* reexport safe */ _withinBounds__WEBPACK_IMPORTED_MODULE_8__.elementsOverlappingBBox),\n/* harmony export */   "exportToBlob": () => (/* binding */ exportToBlob),\n/* harmony export */   "exportToCanvas": () => (/* binding */ exportToCanvas),\n/* harmony export */   "exportToClipboard": () => (/* binding */ exportToClipboard),\n/* harmony export */   "exportToSvg": () => (/* binding */ exportToSvg),\n/* harmony export */   "getBBox": () => (/* reexport safe */ _bbox__WEBPACK_IMPORTED_MODULE_7__.getBBox),\n/* harmony export */   "getFreeDrawSvgPath": () => (/* reexport safe */ _renderer_renderElement__WEBPACK_IMPORTED_MODULE_10__.getFreeDrawSvgPath),\n/* harmony export */   "isElementInsideBBox": () => (/* reexport safe */ _withinBounds__WEBPACK_IMPORTED_MODULE_8__.isElementInsideBBox),\n/* harmony export */   "isLineSegmentTouchingOrCrossingLine": () => (/* reexport safe */ _bbox__WEBPACK_IMPORTED_MODULE_7__.isLineSegmentTouchingOrCrossingLine),\n/* harmony export */   "isPointOnLine": () => (/* reexport safe */ _bbox__WEBPACK_IMPORTED_MODULE_7__.isPointOnLine),\n/* harmony export */   "isPointRightOfLine": () => (/* reexport safe */ _bbox__WEBPACK_IMPORTED_MODULE_7__.isPointRightOfLine),\n/* harmony export */   "loadFromBlob": () => (/* reexport safe */ _data_blob__WEBPACK_IMPORTED_MODULE_9__.loadFromBlob),\n/* harmony export */   "loadLibraryFromBlob": () => (/* reexport safe */ _data_blob__WEBPACK_IMPORTED_MODULE_9__.loadLibraryFromBlob),\n/* harmony export */   "loadSceneOrLibraryFromBlob": () => (/* reexport safe */ _data_blob__WEBPACK_IMPORTED_MODULE_9__.loadSceneOrLibraryFromBlob),\n/* harmony export */   "mergeLibraryItems": () => (/* reexport safe */ _data_library__WEBPACK_IMPORTED_MODULE_11__.mergeLibraryItems),\n/* harmony export */   "serializeAsJSON": () => (/* reexport safe */ _data_json__WEBPACK_IMPORTED_MODULE_5__.serializeAsJSON),\n/* harmony export */   "serializeLibraryAsJSON": () => (/* reexport safe */ _data_json__WEBPACK_IMPORTED_MODULE_5__.serializeLibraryAsJSON),\n/* harmony export */   "translate": () => (/* reexport safe */ _bbox__WEBPACK_IMPORTED_MODULE_7__.translate)\n/* harmony export */ });\n/* harmony import */ var _scene_export__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../scene/export */ "../../scene/export.ts");\n/* harmony import */ var _appState__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../appState */ "../../appState.ts");\n/* harmony import */ var _data_restore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../data/restore */ "../../data/restore.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _data_image__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../data/image */ "../../data/image.ts");\n/* harmony import */ var _data_json__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../data/json */ "../../data/json.ts");\n/* harmony import */ var _clipboard__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../clipboard */ "../../clipboard.ts");\n/* harmony import */ var _bbox__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./bbox */ "../bbox.ts");\n/* harmony import */ var _withinBounds__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./withinBounds */ "../withinBounds.ts");\n/* harmony import */ var _data_blob__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../data/blob */ "../../data/blob.ts");\n/* harmony import */ var _renderer_renderElement__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../renderer/renderElement */ "../../renderer/renderElement.ts");\n/* harmony import */ var _data_library__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../data/library */ "../../data/library.ts");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator["throw"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n\n\n\n\n\n\nconst exportToCanvas = ({\n  elements,\n  appState,\n  files,\n  maxWidthOrHeight,\n  getDimensions,\n  exportPadding,\n  exportingFrame\n}) => {\n  const {\n    elements: restoredElements,\n    appState: restoredAppState\n  } = (0,_data_restore__WEBPACK_IMPORTED_MODULE_2__.restore)({\n    elements,\n    appState\n  }, null, null);\n  const {\n    exportBackground,\n    viewBackgroundColor\n  } = restoredAppState;\n  return (0,_scene_export__WEBPACK_IMPORTED_MODULE_0__.exportToCanvas)(restoredElements, Object.assign(Object.assign({}, restoredAppState), {\n    offsetTop: 0,\n    offsetLeft: 0,\n    width: 0,\n    height: 0\n  }), files || {}, {\n    exportBackground,\n    exportPadding,\n    viewBackgroundColor,\n    exportingFrame\n  }, (width, height) => {\n    var _a, _b;\n\n    const canvas = document.createElement("canvas");\n\n    if (maxWidthOrHeight) {\n      if (typeof getDimensions === "function") {\n        console.warn("`getDimensions()` is ignored when `maxWidthOrHeight` is supplied.");\n      }\n\n      const max = Math.max(width, height); // if content is less then maxWidthOrHeight, fallback on supplied scale\n\n      const scale = maxWidthOrHeight < max ? maxWidthOrHeight / max : (_a = appState === null || appState === void 0 ? void 0 : appState.exportScale) !== null && _a !== void 0 ? _a : 1;\n      canvas.width = width * scale;\n      canvas.height = height * scale;\n      return {\n        canvas,\n        scale\n      };\n    }\n\n    const ret = (getDimensions === null || getDimensions === void 0 ? void 0 : getDimensions(width, height)) || {\n      width,\n      height\n    };\n    canvas.width = ret.width;\n    canvas.height = ret.height;\n    return {\n      canvas,\n      scale: (_b = ret.scale) !== null && _b !== void 0 ? _b : 1\n    };\n  });\n};\nconst exportToBlob = opts => __awaiter(void 0, void 0, void 0, function* () {\n  var _a;\n\n  let {\n    mimeType = _constants__WEBPACK_IMPORTED_MODULE_3__.MIME_TYPES.png,\n    quality\n  } = opts;\n\n  if (mimeType === _constants__WEBPACK_IMPORTED_MODULE_3__.MIME_TYPES.png && typeof quality === "number") {\n    console.warn(`"quality" will be ignored for "${_constants__WEBPACK_IMPORTED_MODULE_3__.MIME_TYPES.png}" mimeType`);\n  } // typo in MIME type (should be "jpeg")\n\n\n  if (mimeType === "image/jpg") {\n    mimeType = _constants__WEBPACK_IMPORTED_MODULE_3__.MIME_TYPES.jpg;\n  }\n\n  if (mimeType === _constants__WEBPACK_IMPORTED_MODULE_3__.MIME_TYPES.jpg && !((_a = opts.appState) === null || _a === void 0 ? void 0 : _a.exportBackground)) {\n    console.warn(`Defaulting "exportBackground" to "true" for "${_constants__WEBPACK_IMPORTED_MODULE_3__.MIME_TYPES.jpg}" mimeType`);\n    opts = Object.assign(Object.assign({}, opts), {\n      appState: Object.assign(Object.assign({}, opts.appState), {\n        exportBackground: true\n      })\n    });\n  }\n\n  const canvas = yield exportToCanvas(opts);\n  quality = quality ? quality : /image\\/jpe?g/.test(mimeType) ? 0.92 : 0.8;\n  return new Promise((resolve, reject) => {\n    canvas.toBlob(blob => __awaiter(void 0, void 0, void 0, function* () {\n      var _a;\n\n      if (!blob) {\n        return reject(new Error("couldn\'t export to blob"));\n      }\n\n      if (blob && mimeType === _constants__WEBPACK_IMPORTED_MODULE_3__.MIME_TYPES.png && ((_a = opts.appState) === null || _a === void 0 ? void 0 : _a.exportEmbedScene)) {\n        blob = yield (0,_data_image__WEBPACK_IMPORTED_MODULE_4__.encodePngMetadata)({\n          blob,\n          metadata: (0,_data_json__WEBPACK_IMPORTED_MODULE_5__.serializeAsJSON)( // NOTE as long as we\'re using the Scene hack, we need to ensure\n          // we pass the original, uncloned elements when serializing\n          // so that we keep ids stable\n          opts.elements, opts.appState, opts.files || {}, "local")\n        });\n      }\n\n      resolve(blob);\n    }), mimeType, quality);\n  });\n});\nconst exportToSvg = ({\n  elements,\n  appState = (0,_appState__WEBPACK_IMPORTED_MODULE_1__.getDefaultAppState)(),\n  files = {},\n  exportPadding,\n  renderEmbeddables,\n  exportingFrame\n}) => __awaiter(void 0, void 0, void 0, function* () {\n  const {\n    elements: restoredElements,\n    appState: restoredAppState\n  } = (0,_data_restore__WEBPACK_IMPORTED_MODULE_2__.restore)({\n    elements,\n    appState\n  }, null, null);\n  const exportAppState = Object.assign(Object.assign({}, restoredAppState), {\n    exportPadding\n  });\n  return (0,_scene_export__WEBPACK_IMPORTED_MODULE_0__.exportToSvg)(restoredElements, exportAppState, files, {\n    exportingFrame,\n    renderEmbeddables\n  });\n});\nconst exportToClipboard = opts => __awaiter(void 0, void 0, void 0, function* () {\n  if (opts.type === "svg") {\n    const svg = yield exportToSvg(opts);\n    yield (0,_clipboard__WEBPACK_IMPORTED_MODULE_6__.copyTextToSystemClipboard)(svg.outerHTML);\n  } else if (opts.type === "png") {\n    yield (0,_clipboard__WEBPACK_IMPORTED_MODULE_6__.copyBlobToClipboardAsPng)(exportToBlob(opts));\n  } else if (opts.type === "json") {\n    yield (0,_clipboard__WEBPACK_IMPORTED_MODULE_6__.copyToClipboard)(opts.elements, opts.files);\n  } else {\n    throw new Error("Invalid export type");\n  }\n});\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 10412 characters]\n//# sourceURL=webpack-internal:///../utils.ts\n');
              }
            ),
            /***/
            "../withinBounds.ts": (
              /*!**************************!*\
                !*** ../withinBounds.ts ***!
                \**************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "elementPartiallyOverlapsWithOrContainsBBox": () => (/* binding */ elementPartiallyOverlapsWithOrContainsBBox),
/* harmony export */   "elementsOverlappingBBox": () => (/* binding */ elementsOverlappingBBox),
/* harmony export */   "isElementInsideBBox": () => (/* binding */ isElementInsideBBox)
/* harmony export */ });
/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../element/typeChecks */ "../../element/typeChecks.ts");
/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../math */ "../../math.ts");
/* harmony import */ var _element_bounds__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../element/bounds */ "../../element/bounds.ts");



/** @returns vertices relative to element's top-left [0,0] position  */

const getNonLinearElementRelativePoints = element => {
  if (element.type === "diamond") {
    return [[element.width / 2, 0], [element.width, element.height / 2], [element.width / 2, element.height], [0, element.height / 2]];
  }

  return [[0, 0], [0 + element.width, 0], [0 + element.width, element.height], [0, element.height]];
};
/** @returns vertices relative to element's top-left [0,0] position  */


const getElementRelativePoints = element => {
  if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isLinearElement)(element) || (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isFreeDrawElement)(element)) {
    return element.points;
  }

  return getNonLinearElementRelativePoints(element);
};

const getMinMaxPoints = points => {
  const ret = points.reduce((limits, [x, y]) => {
    limits.minY = Math.min(limits.minY, y);
    limits.minX = Math.min(limits.minX, x);
    limits.maxX = Math.max(limits.maxX, x);
    limits.maxY = Math.max(limits.maxY, y);
    return limits;
  }, {
    minX: Infinity,
    minY: Infinity,
    maxX: -Infinity,
    maxY: -Infinity,
    cx: 0,
    cy: 0
  });
  ret.cx = (ret.maxX + ret.minX) / 2;
  ret.cy = (ret.maxY + ret.minY) / 2;
  return ret;
};

const getRotatedBBox = element => {
  const points = getElementRelativePoints(element);
  const {
    cx,
    cy
  } = getMinMaxPoints(points);
  const centerPoint = [cx, cy];
  const rotatedPoints = points.map(point => (0,_math__WEBPACK_IMPORTED_MODULE_1__.rotatePoint)([point[0], point[1]], centerPoint, element.angle));
  const {
    minX,
    minY,
    maxX,
    maxY
  } = getMinMaxPoints(rotatedPoints);
  return [minX + element.x, minY + element.y, maxX + element.x, maxY + element.y];
};

const isElementInsideBBox = (element, bbox, eitherDirection = false) => {
  const elementBBox = getRotatedBBox(element);
  const elementInsideBbox = bbox[0] <= elementBBox[0] && bbox[2] >= elementBBox[2] && bbox[1] <= elementBBox[1] && bbox[3] >= elementBBox[3];

  if (!eitherDirection) {
    return elementInsideBbox;
  }

  if (elementInsideBbox) {
    return true;
  }

  return elementBBox[0] <= bbox[0] && elementBBox[2] >= bbox[2] && elementBBox[1] <= bbox[1] && elementBBox[3] >= bbox[3];
};
const elementPartiallyOverlapsWithOrContainsBBox = (element, bbox) => {
  const elementBBox = getRotatedBBox(element);
  return ((0,_math__WEBPACK_IMPORTED_MODULE_1__.isValueInRange)(elementBBox[0], bbox[0], bbox[2]) || (0,_math__WEBPACK_IMPORTED_MODULE_1__.isValueInRange)(bbox[0], elementBBox[0], elementBBox[2])) && ((0,_math__WEBPACK_IMPORTED_MODULE_1__.isValueInRange)(elementBBox[1], bbox[1], bbox[3]) || (0,_math__WEBPACK_IMPORTED_MODULE_1__.isValueInRange)(bbox[1], elementBBox[1], elementBBox[3]));
};
const elementsOverlappingBBox = ({
  elements,
  bounds,
  type,
  errorMargin = 0
}) => {
  var _a;

  if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isExcalidrawElement)(bounds)) {
    bounds = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_2__.getElementBounds)(bounds);
  }

  const adjustedBBox = [bounds[0] - errorMargin, bounds[1] - errorMargin, bounds[2] + errorMargin, bounds[3] + errorMargin];
  const includedElementSet = new Set();

  for (const element of elements) {
    if (includedElementSet.has(element.id)) {
      continue;
    }

    const isOverlaping = type === "overlap" ? elementPartiallyOverlapsWithOrContainsBBox(element, adjustedBBox) : type === "inside" ? isElementInsideBBox(element, adjustedBBox) : isElementInsideBBox(element, adjustedBBox, true);

    if (isOverlaping) {
      includedElementSet.add(element.id);

      if (element.boundElements) {
        for (const boundElement of element.boundElements) {
          includedElementSet.add(boundElement.id);
        }
      }

      if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isTextElement)(element) && element.containerId) {
        includedElementSet.add(element.containerId);
      }

      if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isArrowElement)(element)) {
        if (element.startBinding) {
          includedElementSet.add(element.startBinding.elementId);
        }

        if (element.endBinding) {
          includedElementSet.add((_a = element.endBinding) === null || _a === void 0 ? void 0 : _a.elementId);
        }
      }
    }
  }

  return elements.filter(element => includedElementSet.has(element.id));
};//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6936 characters]
//# sourceURL=webpack-internal:///../withinBounds.ts
`);
              }
            ),
            /***/
            "../../points.ts": (
              /*!***********************!*\
                !*** ../../points.ts ***!
                \***********************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "getSizeFromPoints": () => (/* binding */ getSizeFromPoints),
/* harmony export */   "rescalePoints": () => (/* binding */ rescalePoints)
/* harmony export */ });
const getSizeFromPoints = points => {
  const xs = points.map(point => point[0]);
  const ys = points.map(point => point[1]);
  return {
    width: Math.max(...xs) - Math.min(...xs),
    height: Math.max(...ys) - Math.min(...ys)
  };
};
/** @arg dimension, 0 for rescaling only x, 1 for y */

const rescalePoints = (dimension, newSize, points, normalize) => {
  const coordinates = points.map(point => point[dimension]);
  const maxCoordinate = Math.max(...coordinates);
  const minCoordinate = Math.min(...coordinates);
  const size = maxCoordinate - minCoordinate;
  const scale = size === 0 ? 1 : newSize / size;
  let nextMinCoordinate = Infinity;
  const scaledPoints = points.map(point => {
    const newCoordinate = point[dimension] * scale;
    const newPoint = [...point];
    newPoint[dimension] = newCoordinate;

    if (newCoordinate < nextMinCoordinate) {
      nextMinCoordinate = newCoordinate;
    }

    return newPoint;
  });

  if (!normalize) {
    return scaledPoints;
  }

  if (scaledPoints.length === 2) {
    // we don't translate two-point lines
    return scaledPoints;
  }

  const translation = minCoordinate - nextMinCoordinate;
  const nextPoints = scaledPoints.map(scaledPoint => scaledPoint.map((value, currentDimension) => {
    return currentDimension === dimension ? value + translation : value;
  }));
  return nextPoints;
};//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vcG9pbnRzLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vcG9pbnRzLnRzPzhmNjIiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IGdldFNpemVGcm9tUG9pbnRzID0gcG9pbnRzID0+IHtcbiAgY29uc3QgeHMgPSBwb2ludHMubWFwKHBvaW50ID0+IHBvaW50WzBdKTtcbiAgY29uc3QgeXMgPSBwb2ludHMubWFwKHBvaW50ID0+IHBvaW50WzFdKTtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogTWF0aC5tYXgoLi4ueHMpIC0gTWF0aC5taW4oLi4ueHMpLFxuICAgIGhlaWdodDogTWF0aC5tYXgoLi4ueXMpIC0gTWF0aC5taW4oLi4ueXMpXG4gIH07XG59O1xuLyoqIEBhcmcgZGltZW5zaW9uLCAwIGZvciByZXNjYWxpbmcgb25seSB4LCAxIGZvciB5ICovXG5cbmV4cG9ydCBjb25zdCByZXNjYWxlUG9pbnRzID0gKGRpbWVuc2lvbiwgbmV3U2l6ZSwgcG9pbnRzLCBub3JtYWxpemUpID0+IHtcbiAgY29uc3QgY29vcmRpbmF0ZXMgPSBwb2ludHMubWFwKHBvaW50ID0+IHBvaW50W2RpbWVuc2lvbl0pO1xuICBjb25zdCBtYXhDb29yZGluYXRlID0gTWF0aC5tYXgoLi4uY29vcmRpbmF0ZXMpO1xuICBjb25zdCBtaW5Db29yZGluYXRlID0gTWF0aC5taW4oLi4uY29vcmRpbmF0ZXMpO1xuICBjb25zdCBzaXplID0gbWF4Q29vcmRpbmF0ZSAtIG1pbkNvb3JkaW5hdGU7XG4gIGNvbnN0IHNjYWxlID0gc2l6ZSA9PT0gMCA/IDEgOiBuZXdTaXplIC8gc2l6ZTtcbiAgbGV0IG5leHRNaW5Db29yZGluYXRlID0gSW5maW5pdHk7XG4gIGNvbnN0IHNjYWxlZFBvaW50cyA9IHBvaW50cy5tYXAocG9pbnQgPT4ge1xuICAgIGNvbnN0IG5ld0Nvb3JkaW5hdGUgPSBwb2ludFtkaW1lbnNpb25dICogc2NhbGU7XG4gICAgY29uc3QgbmV3UG9pbnQgPSBbLi4ucG9pbnRdO1xuICAgIG5ld1BvaW50W2RpbWVuc2lvbl0gPSBuZXdDb29yZGluYXRlO1xuXG4gICAgaWYgKG5ld0Nvb3JkaW5hdGUgPCBuZXh0TWluQ29vcmRpbmF0ZSkge1xuICAgICAgbmV4dE1pbkNvb3JkaW5hdGUgPSBuZXdDb29yZGluYXRlO1xuICAgIH1cblxuICAgIHJldHVybiBuZXdQb2ludDtcbiAgfSk7XG5cbiAgaWYgKCFub3JtYWxpemUpIHtcbiAgICByZXR1cm4gc2NhbGVkUG9pbnRzO1xuICB9XG5cbiAgaWYgKHNjYWxlZFBvaW50cy5sZW5ndGggPT09IDIpIHtcbiAgICAvLyB3ZSBkb24ndCB0cmFuc2xhdGUgdHdvLXBvaW50IGxpbmVzXG4gICAgcmV0dXJuIHNjYWxlZFBvaW50cztcbiAgfVxuXG4gIGNvbnN0IHRyYW5zbGF0aW9uID0gbWluQ29vcmRpbmF0ZSAtIG5leHRNaW5Db29yZGluYXRlO1xuICBjb25zdCBuZXh0UG9pbnRzID0gc2NhbGVkUG9pbnRzLm1hcChzY2FsZWRQb2ludCA9PiBzY2FsZWRQb2ludC5tYXAoKHZhbHVlLCBjdXJyZW50RGltZW5zaW9uKSA9PiB7XG4gICAgcmV0dXJuIGN1cnJlbnREaW1lbnNpb24gPT09IGRpbWVuc2lvbiA/IHZhbHVlICsgdHJhbnNsYXRpb24gOiB2YWx1ZTtcbiAgfSkpO1xuICByZXR1cm4gbmV4dFBvaW50cztcbn07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9
//# sourceURL=webpack-internal:///../../points.ts
`);
              }
            ),
            /***/
            "../../polyfill.ts": (
              /*!*************************!*\
                !*** ../../polyfill.ts ***!
                \*************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nconst polyfill = () => {\n  if (!Array.prototype.at) {\n    // Taken from https://github.com/tc39/proposal-relative-indexing-method#polyfill so that it works in tests\n\n    /* eslint-disable */\n    Object.defineProperty(Array.prototype, "at", {\n      value: function (n) {\n        // ToInteger() abstract op\n        n = Math.trunc(n) || 0; // Allow negative indexing from the end\n\n        if (n < 0) {\n          n += this.length;\n        } // OOB access is guaranteed to return undefined\n\n\n        if (n < 0 || n >= this.length) {\n          return undefined;\n        } // Otherwise, this is just normal property access\n\n\n        return this[n];\n      },\n      writable: true,\n      enumerable: false,\n      configurable: true\n    });\n  }\n\n  if (!Element.prototype.replaceChildren) {\n    Element.prototype.replaceChildren = function (...nodes) {\n      this.innerHTML = "";\n      this.append(...nodes);\n    };\n  }\n};\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (polyfill);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vcG9seWZpbGwudHMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQzs7QUFFaEM7QUFDQTtBQUNBLFVBQVU7OztBQUdWO0FBQ0E7QUFDQSxVQUFVOzs7QUFHVjtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUVBQWUsUUFBUSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9wb2x5ZmlsbC50cz9kYjhiIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHBvbHlmaWxsID0gKCkgPT4ge1xuICBpZiAoIUFycmF5LnByb3RvdHlwZS5hdCkge1xuICAgIC8vIFRha2VuIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtcmVsYXRpdmUtaW5kZXhpbmctbWV0aG9kI3BvbHlmaWxsIHNvIHRoYXQgaXQgd29ya3MgaW4gdGVzdHNcblxuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEFycmF5LnByb3RvdHlwZSwgXCJhdFwiLCB7XG4gICAgICB2YWx1ZTogZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgLy8gVG9JbnRlZ2VyKCkgYWJzdHJhY3Qgb3BcbiAgICAgICAgbiA9IE1hdGgudHJ1bmMobikgfHwgMDsgLy8gQWxsb3cgbmVnYXRpdmUgaW5kZXhpbmcgZnJvbSB0aGUgZW5kXG5cbiAgICAgICAgaWYgKG4gPCAwKSB7XG4gICAgICAgICAgbiArPSB0aGlzLmxlbmd0aDtcbiAgICAgICAgfSAvLyBPT0IgYWNjZXNzIGlzIGd1YXJhbnRlZWQgdG8gcmV0dXJuIHVuZGVmaW5lZFxuXG5cbiAgICAgICAgaWYgKG4gPCAwIHx8IG4gPj0gdGhpcy5sZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9IC8vIE90aGVyd2lzZSwgdGhpcyBpcyBqdXN0IG5vcm1hbCBwcm9wZXJ0eSBhY2Nlc3NcblxuXG4gICAgICAgIHJldHVybiB0aGlzW25dO1xuICAgICAgfSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIGlmICghRWxlbWVudC5wcm90b3R5cGUucmVwbGFjZUNoaWxkcmVuKSB7XG4gICAgRWxlbWVudC5wcm90b3R5cGUucmVwbGFjZUNoaWxkcmVuID0gZnVuY3Rpb24gKC4uLm5vZGVzKSB7XG4gICAgICB0aGlzLmlubmVySFRNTCA9IFwiXCI7XG4gICAgICB0aGlzLmFwcGVuZCguLi5ub2Rlcyk7XG4gICAgfTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgcG9seWZpbGw7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../polyfill.ts\n');
              }
            ),
            /***/
            "../../random.ts": (
              /*!***********************!*\
                !*** ../../random.ts ***!
                \***********************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "randomId": () => (/* binding */ randomId),\n/* harmony export */   "randomInteger": () => (/* binding */ randomInteger),\n/* harmony export */   "reseed": () => (/* binding */ reseed)\n/* harmony export */ });\n/* harmony import */ var roughjs_bin_math__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! roughjs/bin/math */ "../../../node_modules/roughjs/bin/math.js");\n/* harmony import */ var nanoid__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! nanoid */ "../../../node_modules/nanoid/index.browser.js");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils */ "../../utils.ts");\n\n\n\nlet random = new roughjs_bin_math__WEBPACK_IMPORTED_MODULE_0__.Random(Date.now());\nlet testIdBase = 0;\nconst randomInteger = () => Math.floor(random.next() * Math.pow(2, 31));\nconst reseed = seed => {\n  random = new roughjs_bin_math__WEBPACK_IMPORTED_MODULE_0__.Random(seed);\n  testIdBase = 0;\n};\nconst randomId = () => (0,_utils__WEBPACK_IMPORTED_MODULE_1__.isTestEnv)() ? `id${testIdBase++}` : (0,nanoid__WEBPACK_IMPORTED_MODULE_2__.nanoid)();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vcmFuZG9tLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUEwQztBQUNWO0FBQ0k7QUFDcEMsaUJBQWlCLG9EQUFNO0FBQ3ZCO0FBQ087QUFDQTtBQUNQLGVBQWUsb0RBQU07QUFDckI7QUFDQTtBQUNPLHVCQUF1QixpREFBUyxVQUFVLGFBQWEsSUFBSSw4Q0FBTSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9yYW5kb20udHM/ODhiOCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSYW5kb20gfSBmcm9tIFwicm91Z2hqcy9iaW4vbWF0aFwiO1xuaW1wb3J0IHsgbmFub2lkIH0gZnJvbSBcIm5hbm9pZFwiO1xuaW1wb3J0IHsgaXNUZXN0RW52IH0gZnJvbSBcIi4vdXRpbHNcIjtcbmxldCByYW5kb20gPSBuZXcgUmFuZG9tKERhdGUubm93KCkpO1xubGV0IHRlc3RJZEJhc2UgPSAwO1xuZXhwb3J0IGNvbnN0IHJhbmRvbUludGVnZXIgPSAoKSA9PiBNYXRoLmZsb29yKHJhbmRvbS5uZXh0KCkgKiBNYXRoLnBvdygyLCAzMSkpO1xuZXhwb3J0IGNvbnN0IHJlc2VlZCA9IHNlZWQgPT4ge1xuICByYW5kb20gPSBuZXcgUmFuZG9tKHNlZWQpO1xuICB0ZXN0SWRCYXNlID0gMDtcbn07XG5leHBvcnQgY29uc3QgcmFuZG9tSWQgPSAoKSA9PiBpc1Rlc3RFbnYoKSA/IGBpZCR7dGVzdElkQmFzZSsrfWAgOiBuYW5vaWQoKTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../random.ts\n');
              }
            ),
            /***/
            "../../renderer/renderElement.ts": (
              /*!***************************************!*\
                !*** ../../renderer/renderElement.ts ***!
                \***************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "DEFAULT_LINK_SIZE": () => (/* binding */ DEFAULT_LINK_SIZE),\n/* harmony export */   "elementWithCanvasCache": () => (/* binding */ elementWithCanvasCache),\n/* harmony export */   "generateFreeDrawShape": () => (/* binding */ generateFreeDrawShape),\n/* harmony export */   "getFreeDrawPath2D": () => (/* binding */ getFreeDrawPath2D),\n/* harmony export */   "getFreeDrawSvgPath": () => (/* binding */ getFreeDrawSvgPath),\n/* harmony export */   "pathsCache": () => (/* binding */ pathsCache),\n/* harmony export */   "renderElement": () => (/* binding */ renderElement),\n/* harmony export */   "renderElementToSvg": () => (/* binding */ renderElementToSvg),\n/* harmony export */   "renderSelectionElement": () => (/* binding */ renderSelectionElement)\n/* harmony export */ });\n/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../element/typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var _element_bounds__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../element/bounds */ "../../element/bounds.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../math */ "../../math.ts");\n/* harmony import */ var roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! roughjs/bin/rough */ "../../../node_modules/roughjs/bin/rough.js");\n/* harmony import */ var _appState__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../appState */ "../../appState.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var perfect_freehand__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! perfect-freehand */ "../../../node_modules/perfect-freehand/dist/esm/index.js");\n/* harmony import */ var _element_textElement__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../element/textElement */ "../../element/textElement.ts");\n/* harmony import */ var _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../element/linearElementEditor */ "../../element/linearElementEditor.ts");\n/* harmony import */ var _element_embeddable__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../element/embeddable */ "../../element/embeddable.ts");\n/* harmony import */ var _frame__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../frame */ "../../frame.ts");\n/* harmony import */ var _data_url__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../data/url */ "../../data/url.ts");\n/* harmony import */ var _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../scene/ShapeCache */ "../../scene/ShapeCache.ts");\n\n\n\n\n\n\n\n\n\n\n\n\n\n // using a stronger invert (100% vs our regular 93%) and saturate\n// as a temp hack to make images in dark theme look closer to original\n// color scheme (it\'s still not quite there and the colors look slightly\n// desatured, alas...)\n\nconst IMAGE_INVERT_FILTER = "invert(100%) hue-rotate(180deg) saturate(1.25)";\nconst defaultAppState = (0,_appState__WEBPACK_IMPORTED_MODULE_5__.getDefaultAppState)();\n\nconst isPendingImageElement = (element, renderConfig) => (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isInitializedImageElement)(element) && !renderConfig.imageCache.has(element.fileId);\n\nconst shouldResetImageFilter = (element, renderConfig, appState) => {\n  var _a;\n\n  return appState.theme === "dark" && (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isInitializedImageElement)(element) && !isPendingImageElement(element, renderConfig) && ((_a = renderConfig.imageCache.get(element.fileId)) === null || _a === void 0 ? void 0 : _a.mimeType) !== _constants__WEBPACK_IMPORTED_MODULE_6__.MIME_TYPES.svg;\n};\n\nconst getCanvasPadding = element => element.type === "freedraw" ? element.strokeWidth * 12 : 20;\n\nconst cappedElementCanvasSize = (element, zoom) => {\n  // these limits are ballpark, they depend on specific browsers and device.\n  // We\'ve chosen lower limits to be safe. We might want to change these limits\n  // based on browser/device type, if we get reports of low quality rendering\n  // on zoom.\n  //\n  // ~ safari mobile canvas area limit\n  const AREA_LIMIT = 16777216; // ~ safari width/height limit based on developer.mozilla.org.\n\n  const WIDTH_HEIGHT_LIMIT = 32767;\n  const padding = getCanvasPadding(element);\n  const [x1, y1, x2, y2] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_1__.getElementAbsoluteCoords)(element);\n  const elementWidth = (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isLinearElement)(element) || (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isFreeDrawElement)(element) ? (0,_utils__WEBPACK_IMPORTED_MODULE_2__.distance)(x1, x2) : element.width;\n  const elementHeight = (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isLinearElement)(element) || (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isFreeDrawElement)(element) ? (0,_utils__WEBPACK_IMPORTED_MODULE_2__.distance)(y1, y2) : element.height;\n  let width = elementWidth * window.devicePixelRatio + padding * 2;\n  let height = elementHeight * window.devicePixelRatio + padding * 2;\n  let scale = zoom.value; // rescale to ensure width and height is within limits\n\n  if (width * scale > WIDTH_HEIGHT_LIMIT || height * scale > WIDTH_HEIGHT_LIMIT) {\n    scale = Math.min(WIDTH_HEIGHT_LIMIT / width, WIDTH_HEIGHT_LIMIT / height);\n  } // rescale to ensure canvas area is within limits\n\n\n  if (width * height * scale * scale > AREA_LIMIT) {\n    scale = Math.sqrt(AREA_LIMIT / (width * height));\n  }\n\n  width = Math.floor(width * scale);\n  height = Math.floor(height * scale);\n  return {\n    width,\n    height,\n    scale\n  };\n};\n\nconst generateElementCanvas = (element, zoom, renderConfig, appState) => {\n  var _a, _b;\n\n  const canvas = document.createElement("canvas");\n  const context = canvas.getContext("2d");\n  const padding = getCanvasPadding(element);\n  const {\n    width,\n    height,\n    scale\n  } = cappedElementCanvasSize(element, zoom);\n  canvas.width = width;\n  canvas.height = height;\n  let canvasOffsetX = 0;\n  let canvasOffsetY = 0;\n\n  if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isLinearElement)(element) || (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isFreeDrawElement)(element)) {\n    const [x1, y1] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_1__.getElementAbsoluteCoords)(element);\n    canvasOffsetX = element.x > x1 ? (0,_utils__WEBPACK_IMPORTED_MODULE_2__.distance)(element.x, x1) * window.devicePixelRatio * scale : 0;\n    canvasOffsetY = element.y > y1 ? (0,_utils__WEBPACK_IMPORTED_MODULE_2__.distance)(element.y, y1) * window.devicePixelRatio * scale : 0;\n    context.translate(canvasOffsetX, canvasOffsetY);\n  }\n\n  context.save();\n  context.translate(padding * scale, padding * scale);\n  context.scale(window.devicePixelRatio * scale, window.devicePixelRatio * scale);\n  const rc = roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_4__["default"].canvas(canvas); // in dark theme, revert the image color filter\n\n  if (shouldResetImageFilter(element, renderConfig, appState)) {\n    context.filter = IMAGE_INVERT_FILTER;\n  }\n\n  drawElementOnCanvas(element, rc, context, renderConfig, appState);\n  context.restore();\n  return {\n    element,\n    canvas,\n    theme: appState.theme,\n    scale,\n    zoomValue: zoom.value,\n    canvasOffsetX,\n    canvasOffsetY,\n    boundTextElementVersion: ((_a = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_8__.getBoundTextElement)(element)) === null || _a === void 0 ? void 0 : _a.version) || null,\n    containingFrameOpacity: ((_b = (0,_frame__WEBPACK_IMPORTED_MODULE_11__.getContainingFrame)(element)) === null || _b === void 0 ? void 0 : _b.opacity) || 100\n  };\n};\n\nconst DEFAULT_LINK_SIZE = 14;\nconst IMAGE_PLACEHOLDER_IMG = document.createElement("img");\nIMAGE_PLACEHOLDER_IMG.src = `data:${_constants__WEBPACK_IMPORTED_MODULE_6__.MIME_TYPES.svg},${encodeURIComponent(`<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="image" class="svg-inline--fa fa-image fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="#888" d="M464 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM112 120c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56zM64 384h384V272l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L208 320l-55.515-55.515c-4.686-4.686-12.284-4.686-16.971 0L64 336v48z"></path></svg>`)}`;\nconst IMAGE_ERROR_PLACEHOLDER_IMG = document.createElement("img");\nIMAGE_ERROR_PLACEHOLDER_IMG.src = `data:${_constants__WEBPACK_IMPORTED_MODULE_6__.MIME_TYPES.svg},${encodeURIComponent(`<svg viewBox="0 0 668 668" xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2"><path d="M464 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48ZM112 120c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56ZM64 384h384V272l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L208 320l-55.515-55.515c-4.686-4.686-12.284-4.686-16.971 0L64 336v48Z" style="fill:#888;fill-rule:nonzero" transform="matrix(.81709 0 0 .81709 124.825 145.825)"/><path d="M256 8C119.034 8 8 119.033 8 256c0 136.967 111.034 248 248 248s248-111.034 248-248S392.967 8 256 8Zm130.108 117.892c65.448 65.448 70 165.481 20.677 235.637L150.47 105.216c70.204-49.356 170.226-44.735 235.638 20.676ZM125.892 386.108c-65.448-65.448-70-165.481-20.677-235.637L361.53 406.784c-70.203 49.356-170.226 44.736-235.638-20.676Z" style="fill:#888;fill-rule:nonzero" transform="matrix(.30366 0 0 .30366 506.822 60.065)"/></svg>`)}`;\n\nconst drawImagePlaceholder = (element, context, zoomValue) => {\n  context.fillStyle = "#E7E7E7";\n  context.fillRect(0, 0, element.width, element.height);\n  const imageMinWidthOrHeight = Math.min(element.width, element.height);\n  const size = Math.min(imageMinWidthOrHeight, Math.min(imageMinWidthOrHeight * 0.4, 100));\n  context.drawImage(element.status === "error" ? IMAGE_ERROR_PLACEHOLDER_IMG : IMAGE_PLACEHOLDER_IMG, element.width / 2 - size / 2, element.height / 2 - size / 2, size, size);\n};\n\nconst drawElementOnCanvas = (element, rc, context, renderConfig, appState) => {\n  var _a, _b, _c;\n\n  context.globalAlpha = ((_b = (_a = (0,_frame__WEBPACK_IMPORTED_MODULE_11__.getContainingFrame)(element)) === null || _a === void 0 ? void 0 : _a.opacity) !== null && _b !== void 0 ? _b : 100) * element.opacity / 10000;\n\n  switch (element.type) {\n    case "rectangle":\n    case "embeddable":\n    case "diamond":\n    case "ellipse":\n      {\n        context.lineJoin = "round";\n        context.lineCap = "round";\n        rc.draw(_scene_ShapeCache__WEBPACK_IMPORTED_MODULE_13__.ShapeCache.get(element));\n        break;\n      }\n\n    case "arrow":\n    case "line":\n      {\n        context.lineJoin = "round";\n        context.lineCap = "round";\n        _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_13__.ShapeCache.get(element).forEach(shape => {\n          rc.draw(shape);\n        });\n        break;\n      }\n\n    case "freedraw":\n      {\n        // Draw directly to canvas\n        context.save();\n        context.fillStyle = element.strokeColor;\n        const path = getFreeDrawPath2D(element);\n        const fillShape = _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_13__.ShapeCache.get(element);\n\n        if (fillShape) {\n          rc.draw(fillShape);\n        }\n\n        context.fillStyle = element.strokeColor;\n        context.fill(path);\n        context.restore();\n        break;\n      }\n\n    case "image":\n      {\n        const img = (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isInitializedImageElement)(element) ? (_c = renderConfig.imageCache.get(element.fileId)) === null || _c === void 0 ? void 0 : _c.image : undefined;\n\n        if (img != null && !(img instanceof Promise)) {\n          context.drawImage(img, 0\n          /* hardcoded for the selection box*/\n          , 0, element.width, element.height);\n        } else {\n          drawImagePlaceholder(element, context, appState.zoom.value);\n        }\n\n        break;\n      }\n\n    default:\n      {\n        if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isTextElement)(element)) {\n          const rtl = (0,_utils__WEBPACK_IMPORTED_MODULE_2__.isRTL)(element.text);\n          const shouldTemporarilyAttach = rtl && !context.canvas.isConnected;\n\n          if (shouldTemporarilyAttach) {\n            // to correctly render RTL text mixed with LTR, we have to append it\n            // to the DOM\n            document.body.appendChild(context.canvas);\n          }\n\n          context.canvas.setAttribute("dir", rtl ? "rtl" : "ltr");\n          context.save();\n          context.font = (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getFontString)(element);\n          context.fillStyle = element.strokeColor;\n          context.textAlign = element.textAlign; // Canvas does not support multiline text by default\n\n          const lines = element.text.replace(/\\r\\n?/g, "\\n").split("\\n");\n          const horizontalOffset = element.textAlign === "center" ? element.width / 2 : element.textAlign === "right" ? element.width : 0;\n          const lineHeightPx = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_8__.getLineHeightInPx)(element.fontSize, element.lineHeight);\n          const verticalOffset = element.height - element.baseline;\n\n          for (let index = 0; index < lines.length; index++) {\n            context.fillText(lines[index], horizontalOffset, (index + 1) * lineHeightPx - verticalOffset);\n          }\n\n          context.restore();\n\n          if (shouldTemporarilyAttach) {\n            context.canvas.remove();\n          }\n        } else {\n          throw new Error(`Unimplemented type ${element.type}`);\n        }\n      }\n  }\n\n  context.globalAlpha = 1;\n};\n\nconst elementWithCanvasCache = new WeakMap();\n\nconst generateElementWithCanvas = (element, renderConfig, appState) => {\n  var _a, _b;\n\n  const zoom = renderConfig ? appState.zoom : defaultAppState.zoom;\n  const prevElementWithCanvas = elementWithCanvasCache.get(element);\n  const shouldRegenerateBecauseZoom = prevElementWithCanvas && prevElementWithCanvas.zoomValue !== zoom.value && !(appState === null || appState === void 0 ? void 0 : appState.shouldCacheIgnoreZoom);\n  const boundTextElementVersion = ((_a = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_8__.getBoundTextElement)(element)) === null || _a === void 0 ? void 0 : _a.version) || null;\n  const containingFrameOpacity = ((_b = (0,_frame__WEBPACK_IMPORTED_MODULE_11__.getContainingFrame)(element)) === null || _b === void 0 ? void 0 : _b.opacity) || 100;\n\n  if (!prevElementWithCanvas || shouldRegenerateBecauseZoom || prevElementWithCanvas.theme !== appState.theme || prevElementWithCanvas.boundTextElementVersion !== boundTextElementVersion || prevElementWithCanvas.containingFrameOpacity !== containingFrameOpacity) {\n    const elementWithCanvas = generateElementCanvas(element, zoom, renderConfig, appState);\n    elementWithCanvasCache.set(element, elementWithCanvas);\n    return elementWithCanvas;\n  }\n\n  return prevElementWithCanvas;\n};\n\nconst drawElementFromCanvas = (elementWithCanvas, context, renderConfig, appState) => {\n  const element = elementWithCanvas.element;\n  const padding = getCanvasPadding(element);\n  const zoom = elementWithCanvas.scale;\n  let [x1, y1, x2, y2] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_1__.getElementAbsoluteCoords)(element); // Free draw elements will otherwise "shuffle" as the min x and y change\n\n  if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isFreeDrawElement)(element)) {\n    x1 = Math.floor(x1);\n    x2 = Math.ceil(x2);\n    y1 = Math.floor(y1);\n    y2 = Math.ceil(y2);\n  }\n\n  const cx = ((x1 + x2) / 2 + appState.scrollX) * window.devicePixelRatio;\n  const cy = ((y1 + y2) / 2 + appState.scrollY) * window.devicePixelRatio;\n  context.save();\n  context.scale(1 / window.devicePixelRatio, 1 / window.devicePixelRatio);\n  const boundTextElement = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_8__.getBoundTextElement)(element);\n\n  if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isArrowElement)(element) && boundTextElement) {\n    const tempCanvas = document.createElement("canvas");\n    const tempCanvasContext = tempCanvas.getContext("2d"); // Take max dimensions of arrow canvas so that when canvas is rotated\n    // the arrow doesn\'t get clipped\n\n    const maxDim = Math.max((0,_utils__WEBPACK_IMPORTED_MODULE_2__.distance)(x1, x2), (0,_utils__WEBPACK_IMPORTED_MODULE_2__.distance)(y1, y2));\n    tempCanvas.width = maxDim * window.devicePixelRatio * zoom + padding * elementWithCanvas.scale * 10;\n    tempCanvas.height = maxDim * window.devicePixelRatio * zoom + padding * elementWithCanvas.scale * 10;\n    const offsetX = (tempCanvas.width - elementWithCanvas.canvas.width) / 2;\n    const offsetY = (tempCanvas.height - elementWithCanvas.canvas.height) / 2;\n    tempCanvasContext.translate(tempCanvas.width / 2, tempCanvas.height / 2);\n    tempCanvasContext.rotate(element.angle);\n    tempCanvasContext.drawImage(elementWithCanvas.canvas, -elementWithCanvas.canvas.width / 2, -elementWithCanvas.canvas.height / 2, elementWithCanvas.canvas.width, elementWithCanvas.canvas.height);\n    const [,,,, boundTextCx, boundTextCy] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_1__.getElementAbsoluteCoords)(boundTextElement);\n    tempCanvasContext.rotate(-element.angle); // Shift the canvas to the center of the bound text element\n\n    const shiftX = tempCanvas.width / 2 - (boundTextCx - x1) * window.devicePixelRatio * zoom - offsetX - padding * zoom;\n    const shiftY = tempCanvas.height / 2 - (boundTextCy - y1) * window.devicePixelRatio * zoom - offsetY - padding * zoom;\n    tempCanvasContext.translate(-shiftX, -shiftY); // Clear the bound text area\n\n    tempCanvasContext.clearRect(-(boundTextElement.width / 2 + _constants__WEBPACK_IMPORTED_MODULE_6__.BOUND_TEXT_PADDING) * window.devicePixelRatio * zoom, -(boundTextElement.height / 2 + _constants__WEBPACK_IMPORTED_MODULE_6__.BOUND_TEXT_PADDING) * window.devicePixelRatio * zoom, (boundTextElement.width + _constants__WEBPACK_IMPORTED_MODULE_6__.BOUND_TEXT_PADDING * 2) * window.devicePixelRatio * zoom, (boundTextElement.height + _constants__WEBPACK_IMPORTED_MODULE_6__.BOUND_TEXT_PADDING * 2) * window.devicePixelRatio * zoom);\n    context.translate(cx, cy);\n    context.drawImage(tempCanvas, -(x2 - x1) / 2 * window.devicePixelRatio - offsetX / zoom - padding, -(y2 - y1) / 2 * window.devicePixelRatio - offsetY / zoom - padding, tempCanvas.width / zoom, tempCanvas.height / zoom);\n  } else {\n    // we translate context to element center so that rotation and scale\n    // originates from the element center\n    context.translate(cx, cy);\n    context.rotate(element.angle);\n\n    if ("scale" in elementWithCanvas.element && !isPendingImageElement(element, renderConfig)) {\n      context.scale(elementWithCanvas.element.scale[0], elementWithCanvas.element.scale[1]);\n    } // revert afterwards we don\'t have account for it during drawing\n\n\n    context.translate(-cx, -cy);\n    context.drawImage(elementWithCanvas.canvas, (x1 + appState.scrollX) * window.devicePixelRatio - padding * elementWithCanvas.scale / elementWithCanvas.scale, (y1 + appState.scrollY) * window.devicePixelRatio - padding * elementWithCanvas.scale / elementWithCanvas.scale, elementWithCanvas.canvas.width / elementWithCanvas.scale, elementWithCanvas.canvas.height / elementWithCanvas.scale);\n\n    if (false) {}\n  }\n\n  context.restore(); // Clear the nested element we appended to the DOM\n};\n\nconst renderSelectionElement = (element, context, appState) => {\n  context.save();\n  context.translate(element.x + appState.scrollX, element.y + appState.scrollY);\n  context.fillStyle = "rgba(0, 0, 200, 0.04)"; // render from 0.5px offset  to get 1px wide line\n  // https://stackoverflow.com/questions/7530593/html5-canvas-and-line-width/7531540#7531540\n  // TODO can be be improved by offseting to the negative when user selects\n  // from right to left\n\n  const offset = 0.5 / appState.zoom.value;\n  context.fillRect(offset, offset, element.width, element.height);\n  context.lineWidth = 1 / appState.zoom.value;\n  context.strokeStyle = " rgb(105, 101, 219)";\n  context.strokeRect(offset, offset, element.width, element.height);\n  context.restore();\n};\nconst renderElement = (element, rc, context, renderConfig, appState) => {\n  switch (element.type) {\n    case "frame":\n      {\n        if (appState.frameRendering.enabled && appState.frameRendering.outline) {\n          context.save();\n          context.translate(element.x + appState.scrollX, element.y + appState.scrollY);\n          context.fillStyle = "rgba(0, 0, 200, 0.04)";\n          context.lineWidth = _constants__WEBPACK_IMPORTED_MODULE_6__.FRAME_STYLE.strokeWidth / appState.zoom.value;\n          context.strokeStyle = _constants__WEBPACK_IMPORTED_MODULE_6__.FRAME_STYLE.strokeColor;\n\n          if (_constants__WEBPACK_IMPORTED_MODULE_6__.FRAME_STYLE.radius && context.roundRect) {\n            context.beginPath();\n            context.roundRect(0, 0, element.width, element.height, _constants__WEBPACK_IMPORTED_MODULE_6__.FRAME_STYLE.radius / appState.zoom.value);\n            context.stroke();\n            context.closePath();\n          } else {\n            context.strokeRect(0, 0, element.width, element.height);\n          }\n\n          context.restore();\n        }\n\n        break;\n      }\n\n    case "freedraw":\n      {\n        // TODO investigate if we can do this in situ. Right now we need to call\n        // beforehand because math helpers (such as getElementAbsoluteCoords)\n        // rely on existing shapes\n        _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_13__.ShapeCache.generateElementShape(element);\n\n        if (renderConfig.isExporting) {\n          const [x1, y1, x2, y2] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_1__.getElementAbsoluteCoords)(element);\n          const cx = (x1 + x2) / 2 + appState.scrollX;\n          const cy = (y1 + y2) / 2 + appState.scrollY;\n          const shiftX = (x2 - x1) / 2 - (element.x - x1);\n          const shiftY = (y2 - y1) / 2 - (element.y - y1);\n          context.save();\n          context.translate(cx, cy);\n          context.rotate(element.angle);\n          context.translate(-shiftX, -shiftY);\n          drawElementOnCanvas(element, rc, context, renderConfig, appState);\n          context.restore();\n        } else {\n          const elementWithCanvas = generateElementWithCanvas(element, renderConfig, appState);\n          drawElementFromCanvas(elementWithCanvas, context, renderConfig, appState);\n        }\n\n        break;\n      }\n\n    case "rectangle":\n    case "diamond":\n    case "ellipse":\n    case "line":\n    case "arrow":\n    case "image":\n    case "text":\n    case "embeddable":\n      {\n        // TODO investigate if we can do this in situ. Right now we need to call\n        // beforehand because math helpers (such as getElementAbsoluteCoords)\n        // rely on existing shapes\n        _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_13__.ShapeCache.generateElementShape(element, renderConfig.isExporting);\n\n        if (renderConfig.isExporting) {\n          const [x1, y1, x2, y2] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_1__.getElementAbsoluteCoords)(element);\n          const cx = (x1 + x2) / 2 + appState.scrollX;\n          const cy = (y1 + y2) / 2 + appState.scrollY;\n          let shiftX = (x2 - x1) / 2 - (element.x - x1);\n          let shiftY = (y2 - y1) / 2 - (element.y - y1);\n\n          if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isTextElement)(element)) {\n            const container = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_8__.getContainerElement)(element);\n\n            if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isArrowElement)(container)) {\n              const boundTextCoords = _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_9__.LinearElementEditor.getBoundTextElementPosition(container, element);\n              shiftX = (x2 - x1) / 2 - (boundTextCoords.x - x1);\n              shiftY = (y2 - y1) / 2 - (boundTextCoords.y - y1);\n            }\n          }\n\n          context.save();\n          context.translate(cx, cy);\n\n          if (shouldResetImageFilter(element, renderConfig, appState)) {\n            context.filter = "none";\n          }\n\n          const boundTextElement = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_8__.getBoundTextElement)(element);\n\n          if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isArrowElement)(element) && boundTextElement) {\n            const tempCanvas = document.createElement("canvas");\n            const tempCanvasContext = tempCanvas.getContext("2d"); // Take max dimensions of arrow canvas so that when canvas is rotated\n            // the arrow doesn\'t get clipped\n\n            const maxDim = Math.max((0,_utils__WEBPACK_IMPORTED_MODULE_2__.distance)(x1, x2), (0,_utils__WEBPACK_IMPORTED_MODULE_2__.distance)(y1, y2));\n            const padding = getCanvasPadding(element);\n            tempCanvas.width = maxDim * appState.exportScale + padding * 10 * appState.exportScale;\n            tempCanvas.height = maxDim * appState.exportScale + padding * 10 * appState.exportScale;\n            tempCanvasContext.translate(tempCanvas.width / 2, tempCanvas.height / 2);\n            tempCanvasContext.scale(appState.exportScale, appState.exportScale); // Shift the canvas to left most point of the arrow\n\n            shiftX = element.width / 2 - (element.x - x1);\n            shiftY = element.height / 2 - (element.y - y1);\n            tempCanvasContext.rotate(element.angle);\n            const tempRc = roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_4__["default"].canvas(tempCanvas);\n            tempCanvasContext.translate(-shiftX, -shiftY);\n            drawElementOnCanvas(element, tempRc, tempCanvasContext, renderConfig, appState);\n            tempCanvasContext.translate(shiftX, shiftY);\n            tempCanvasContext.rotate(-element.angle); // Shift the canvas to center of bound text\n\n            const [,,,, boundTextCx, boundTextCy] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_1__.getElementAbsoluteCoords)(boundTextElement);\n            const boundTextShiftX = (x1 + x2) / 2 - boundTextCx;\n            const boundTextShiftY = (y1 + y2) / 2 - boundTextCy;\n            tempCanvasContext.translate(-boundTextShiftX, -boundTextShiftY); // Clear the bound text area\n\n            tempCanvasContext.clearRect(-boundTextElement.width / 2, -boundTextElement.height / 2, boundTextElement.width, boundTextElement.height);\n            context.scale(1 / appState.exportScale, 1 / appState.exportScale);\n            context.drawImage(tempCanvas, -tempCanvas.width / 2, -tempCanvas.height / 2, tempCanvas.width, tempCanvas.height);\n          } else {\n            context.rotate(element.angle);\n\n            if (element.type === "image") {\n              // note: scale must be applied *after* rotating\n              context.scale(element.scale[0], element.scale[1]);\n            }\n\n            context.translate(-shiftX, -shiftY);\n            drawElementOnCanvas(element, rc, context, renderConfig, appState);\n          }\n\n          context.restore(); // not exporting \u2192 optimized rendering (cache & render from element\n          // canvases)\n        } else {\n          const elementWithCanvas = generateElementWithCanvas(element, renderConfig, appState);\n          const currentImageSmoothingStatus = context.imageSmoothingEnabled;\n\n          if ( // do not disable smoothing during zoom as blurry shapes look better\n          // on low resolution (while still zooming in) than sharp ones\n          !(appState === null || appState === void 0 ? void 0 : appState.shouldCacheIgnoreZoom) && ( // angle is 0 -> always disable smoothing\n          !element.angle || // or check if angle is a right angle in which case we can still\n          // disable smoothing without adversely affecting the result\n          (0,_math__WEBPACK_IMPORTED_MODULE_3__.isRightAngle)(element.angle))) {\n            // Disabling smoothing makes output much sharper, especially for\n            // text. Unless for non-right angles, where the aliasing is really\n            // terrible on Chromium.\n            //\n            // Note that `context.imageSmoothingQuality="high"` has almost\n            // zero effect.\n            //\n            context.imageSmoothingEnabled = false;\n          }\n\n          drawElementFromCanvas(elementWithCanvas, context, renderConfig, appState); // reset\n\n          context.imageSmoothingEnabled = currentImageSmoothingStatus;\n        }\n\n        break;\n      }\n\n    default:\n      {\n        // @ts-ignore\n        throw new Error(`Unimplemented type ${element.type}`);\n      }\n  }\n};\n\nconst roughSVGDrawWithPrecision = (rsvg, drawable, precision) => {\n  if (typeof precision === "undefined") {\n    return rsvg.draw(drawable);\n  }\n\n  const pshape = {\n    sets: drawable.sets,\n    shape: drawable.shape,\n    options: Object.assign(Object.assign({}, drawable.options), {\n      fixedDecimalPlaceDigits: precision\n    })\n  };\n  return rsvg.draw(pshape);\n};\n\nconst maybeWrapNodesInFrameClipPath = (element, root, nodes, frameRendering) => {\n  if (!frameRendering.enabled || !frameRendering.clip) {\n    return null;\n  }\n\n  const frame = (0,_frame__WEBPACK_IMPORTED_MODULE_11__.getContainingFrame)(element);\n\n  if (frame) {\n    const g = root.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_6__.SVG_NS, "g");\n    g.setAttributeNS(_constants__WEBPACK_IMPORTED_MODULE_6__.SVG_NS, "clip-path", `url(#${frame.id})`);\n    nodes.forEach(node => g.appendChild(node));\n    return g;\n  }\n\n  return null;\n};\n\nconst renderElementToSvg = (element, rsvg, svgRoot, files, offsetX, offsetY, renderConfig) => {\n  var _a, _b, _c;\n\n  const offset = {\n    x: offsetX,\n    y: offsetY\n  };\n  const [x1, y1, x2, y2] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_1__.getElementAbsoluteCoords)(element);\n  let cx = (x2 - x1) / 2 - (element.x - x1);\n  let cy = (y2 - y1) / 2 - (element.y - y1);\n\n  if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isTextElement)(element)) {\n    const container = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_8__.getContainerElement)(element);\n\n    if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isArrowElement)(container)) {\n      const [x1, y1, x2, y2] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_1__.getElementAbsoluteCoords)(container);\n      const boundTextCoords = _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_9__.LinearElementEditor.getBoundTextElementPosition(container, element);\n      cx = (x2 - x1) / 2 - (boundTextCoords.x - x1);\n      cy = (y2 - y1) / 2 - (boundTextCoords.y - y1);\n      offsetX = offsetX + boundTextCoords.x - element.x;\n      offsetY = offsetY + boundTextCoords.y - element.y;\n    }\n  }\n\n  const degree = 180 * element.angle / Math.PI; // element to append node to, most of the time svgRoot\n\n  let root = svgRoot; // if the element has a link, create an anchor tag and make that the new root\n\n  if (element.link) {\n    const anchorTag = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_6__.SVG_NS, "a");\n    anchorTag.setAttribute("href", (0,_data_url__WEBPACK_IMPORTED_MODULE_12__.normalizeLink)(element.link));\n    root.appendChild(anchorTag);\n    root = anchorTag;\n  }\n\n  const addToRoot = (node, element) => {\n    if ((0,_utils__WEBPACK_IMPORTED_MODULE_2__.isTestEnv)()) {\n      node.setAttribute("data-id", element.id);\n    }\n\n    root.appendChild(node);\n  };\n\n  const opacity = ((_b = (_a = (0,_frame__WEBPACK_IMPORTED_MODULE_11__.getContainingFrame)(element)) === null || _a === void 0 ? void 0 : _a.opacity) !== null && _b !== void 0 ? _b : 100) * element.opacity / 10000;\n\n  switch (element.type) {\n    case "selection":\n      {\n        // Since this is used only during editing experience, which is canvas based,\n        // this should not happen\n        throw new Error("Selection rendering is not supported for SVG");\n      }\n\n    case "rectangle":\n    case "diamond":\n    case "ellipse":\n      {\n        const shape = _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_13__.ShapeCache.generateElementShape(element);\n        const node = roughSVGDrawWithPrecision(rsvg, shape, _constants__WEBPACK_IMPORTED_MODULE_6__.MAX_DECIMALS_FOR_SVG_EXPORT);\n\n        if (opacity !== 1) {\n          node.setAttribute("stroke-opacity", `${opacity}`);\n          node.setAttribute("fill-opacity", `${opacity}`);\n        }\n\n        node.setAttribute("stroke-linecap", "round");\n        node.setAttribute("transform", `translate(${offsetX || 0} ${offsetY || 0}) rotate(${degree} ${cx} ${cy})`);\n        const g = maybeWrapNodesInFrameClipPath(element, root, [node], renderConfig.frameRendering);\n        addToRoot(g || node, element);\n        break;\n      }\n\n    case "embeddable":\n      {\n        // render placeholder rectangle\n        const shape = _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_13__.ShapeCache.generateElementShape(element, true);\n        const node = roughSVGDrawWithPrecision(rsvg, shape, _constants__WEBPACK_IMPORTED_MODULE_6__.MAX_DECIMALS_FOR_SVG_EXPORT);\n        const opacity = element.opacity / 100;\n\n        if (opacity !== 1) {\n          node.setAttribute("stroke-opacity", `${opacity}`);\n          node.setAttribute("fill-opacity", `${opacity}`);\n        }\n\n        node.setAttribute("stroke-linecap", "round");\n        node.setAttribute("transform", `translate(${offsetX || 0} ${offsetY || 0}) rotate(${degree} ${cx} ${cy})`);\n        addToRoot(node, element);\n        const label = (0,_element_embeddable__WEBPACK_IMPORTED_MODULE_10__.createPlaceholderEmbeddableLabel)(element);\n        renderElementToSvg(label, rsvg, root, files, label.x + offset.x - element.x, label.y + offset.y - element.y, renderConfig); // render embeddable element + iframe\n\n        const embeddableNode = roughSVGDrawWithPrecision(rsvg, shape, _constants__WEBPACK_IMPORTED_MODULE_6__.MAX_DECIMALS_FOR_SVG_EXPORT);\n        embeddableNode.setAttribute("stroke-linecap", "round");\n        embeddableNode.setAttribute("transform", `translate(${offsetX || 0} ${offsetY || 0}) rotate(${degree} ${cx} ${cy})`);\n\n        while (embeddableNode.firstChild) {\n          embeddableNode.removeChild(embeddableNode.firstChild);\n        }\n\n        const radius = (0,_math__WEBPACK_IMPORTED_MODULE_3__.getCornerRadius)(Math.min(element.width, element.height), element);\n        const embedLink = (0,_element_embeddable__WEBPACK_IMPORTED_MODULE_10__.getEmbedLink)((0,_data_url__WEBPACK_IMPORTED_MODULE_12__.toValidURL)(element.link || "")); // if rendering embeddables explicitly disabled or\n        // embedding documents via srcdoc (which doesn\'t seem to work for SVGs)\n        // replace with a link instead\n\n        if (renderConfig.renderEmbeddables === false || (embedLink === null || embedLink === void 0 ? void 0 : embedLink.type) === "document") {\n          const anchorTag = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_6__.SVG_NS, "a");\n          anchorTag.setAttribute("href", (0,_data_url__WEBPACK_IMPORTED_MODULE_12__.normalizeLink)(element.link || ""));\n          anchorTag.setAttribute("target", "_blank");\n          anchorTag.setAttribute("rel", "noopener noreferrer");\n          anchorTag.style.borderRadius = `${radius}px`;\n          embeddableNode.appendChild(anchorTag);\n        } else {\n          const foreignObject = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_6__.SVG_NS, "foreignObject");\n          foreignObject.style.width = `${element.width}px`;\n          foreignObject.style.height = `${element.height}px`;\n          foreignObject.style.border = "none";\n          const div = foreignObject.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_6__.SVG_NS, "div");\n          div.setAttribute("xmlns", "http://www.w3.org/1999/xhtml");\n          div.style.width = "100%";\n          div.style.height = "100%";\n          const iframe = div.ownerDocument.createElement("iframe");\n          iframe.src = (_c = embedLink === null || embedLink === void 0 ? void 0 : embedLink.link) !== null && _c !== void 0 ? _c : "";\n          iframe.style.width = "100%";\n          iframe.style.height = "100%";\n          iframe.style.border = "none";\n          iframe.style.borderRadius = `${radius}px`;\n          iframe.style.top = "0";\n          iframe.style.left = "0";\n          iframe.allowFullscreen = true;\n          div.appendChild(iframe);\n          foreignObject.appendChild(div);\n          embeddableNode.appendChild(foreignObject);\n        }\n\n        addToRoot(embeddableNode, element);\n        break;\n      }\n\n    case "line":\n    case "arrow":\n      {\n        const boundText = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_8__.getBoundTextElement)(element);\n        const maskPath = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_6__.SVG_NS, "mask");\n\n        if (boundText) {\n          maskPath.setAttribute("id", `mask-${element.id}`);\n          const maskRectVisible = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_6__.SVG_NS, "rect");\n          offsetX = offsetX || 0;\n          offsetY = offsetY || 0;\n          maskRectVisible.setAttribute("x", "0");\n          maskRectVisible.setAttribute("y", "0");\n          maskRectVisible.setAttribute("fill", "#fff");\n          maskRectVisible.setAttribute("width", `${element.width + 100 + offsetX}`);\n          maskRectVisible.setAttribute("height", `${element.height + 100 + offsetY}`);\n          maskPath.appendChild(maskRectVisible);\n          const maskRectInvisible = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_6__.SVG_NS, "rect");\n          const boundTextCoords = _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_9__.LinearElementEditor.getBoundTextElementPosition(element, boundText);\n          const maskX = offsetX + boundTextCoords.x - element.x;\n          const maskY = offsetY + boundTextCoords.y - element.y;\n          maskRectInvisible.setAttribute("x", maskX.toString());\n          maskRectInvisible.setAttribute("y", maskY.toString());\n          maskRectInvisible.setAttribute("fill", "#000");\n          maskRectInvisible.setAttribute("width", `${boundText.width}`);\n          maskRectInvisible.setAttribute("height", `${boundText.height}`);\n          maskRectInvisible.setAttribute("opacity", "1");\n          maskPath.appendChild(maskRectInvisible);\n        }\n\n        const group = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_6__.SVG_NS, "g");\n\n        if (boundText) {\n          group.setAttribute("mask", `url(#mask-${element.id})`);\n        }\n\n        group.setAttribute("stroke-linecap", "round");\n        const shapes = _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_13__.ShapeCache.generateElementShape(element);\n        shapes.forEach(shape => {\n          const node = roughSVGDrawWithPrecision(rsvg, shape, _constants__WEBPACK_IMPORTED_MODULE_6__.MAX_DECIMALS_FOR_SVG_EXPORT);\n\n          if (opacity !== 1) {\n            node.setAttribute("stroke-opacity", `${opacity}`);\n            node.setAttribute("fill-opacity", `${opacity}`);\n          }\n\n          node.setAttribute("transform", `translate(${offsetX || 0} ${offsetY || 0}) rotate(${degree} ${cx} ${cy})`);\n\n          if (element.type === "line" && (0,_math__WEBPACK_IMPORTED_MODULE_3__.isPathALoop)(element.points) && element.backgroundColor !== "transparent") {\n            node.setAttribute("fill-rule", "evenodd");\n          }\n\n          group.appendChild(node);\n        });\n        const g = maybeWrapNodesInFrameClipPath(element, root, [group, maskPath], renderConfig.frameRendering);\n\n        if (g) {\n          addToRoot(g, element);\n          root.appendChild(g);\n        } else {\n          addToRoot(group, element);\n          root.append(maskPath);\n        }\n\n        break;\n      }\n\n    case "freedraw":\n      {\n        const backgroundFillShape = _scene_ShapeCache__WEBPACK_IMPORTED_MODULE_13__.ShapeCache.generateElementShape(element);\n        const node = backgroundFillShape ? roughSVGDrawWithPrecision(rsvg, backgroundFillShape, _constants__WEBPACK_IMPORTED_MODULE_6__.MAX_DECIMALS_FOR_SVG_EXPORT) : svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_6__.SVG_NS, "g");\n\n        if (opacity !== 1) {\n          node.setAttribute("stroke-opacity", `${opacity}`);\n          node.setAttribute("fill-opacity", `${opacity}`);\n        }\n\n        node.setAttribute("transform", `translate(${offsetX || 0} ${offsetY || 0}) rotate(${degree} ${cx} ${cy})`);\n        node.setAttribute("stroke", "none");\n        const path = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_6__.SVG_NS, "path");\n        path.setAttribute("fill", element.strokeColor);\n        path.setAttribute("d", getFreeDrawSvgPath(element));\n        node.appendChild(path);\n        const g = maybeWrapNodesInFrameClipPath(element, root, [node], renderConfig.frameRendering);\n        addToRoot(g || node, element);\n        break;\n      }\n\n    case "image":\n      {\n        const width = Math.round(element.width);\n        const height = Math.round(element.height);\n        const fileData = (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isInitializedImageElement)(element) && files[element.fileId];\n\n        if (fileData) {\n          const symbolId = `image-${fileData.id}`;\n          let symbol = svgRoot.querySelector(`#${symbolId}`);\n\n          if (!symbol) {\n            symbol = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_6__.SVG_NS, "symbol");\n            symbol.id = symbolId;\n            const image = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_6__.SVG_NS, "image");\n            image.setAttribute("width", "100%");\n            image.setAttribute("height", "100%");\n            image.setAttribute("href", fileData.dataURL);\n            symbol.appendChild(image);\n            root.prepend(symbol);\n          }\n\n          const use = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_6__.SVG_NS, "use");\n          use.setAttribute("href", `#${symbolId}`); // in dark theme, revert the image color filter\n\n          if (renderConfig.exportWithDarkMode && fileData.mimeType !== _constants__WEBPACK_IMPORTED_MODULE_6__.MIME_TYPES.svg) {\n            use.setAttribute("filter", IMAGE_INVERT_FILTER);\n          }\n\n          use.setAttribute("width", `${width}`);\n          use.setAttribute("height", `${height}`);\n          use.setAttribute("opacity", `${opacity}`); // We first apply `scale` transforms (horizontal/vertical mirroring)\n          // on the <use> element, then apply translation and rotation\n          // on the <g> element which wraps the <use>.\n          // Doing this separately is a quick hack to to work around compositing\n          // the transformations correctly (the transform-origin was not being\n          // applied correctly).\n\n          if (element.scale[0] !== 1 || element.scale[1] !== 1) {\n            const translateX = element.scale[0] !== 1 ? -width : 0;\n            const translateY = element.scale[1] !== 1 ? -height : 0;\n            use.setAttribute("transform", `scale(${element.scale[0]}, ${element.scale[1]}) translate(${translateX} ${translateY})`);\n          }\n\n          const g = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_6__.SVG_NS, "g");\n          g.appendChild(use);\n          g.setAttribute("transform", `translate(${offsetX || 0} ${offsetY || 0}) rotate(${degree} ${cx} ${cy})`);\n          const clipG = maybeWrapNodesInFrameClipPath(element, root, [g], renderConfig.frameRendering);\n          addToRoot(clipG || g, element);\n        }\n\n        break;\n      }\n    // frames are not rendered and only acts as a container\n\n    case "frame":\n      {\n        if (renderConfig.frameRendering.enabled && renderConfig.frameRendering.outline) {\n          const rect = document.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_6__.SVG_NS, "rect");\n          rect.setAttribute("transform", `translate(${offsetX || 0} ${offsetY || 0}) rotate(${degree} ${cx} ${cy})`);\n          rect.setAttribute("width", `${element.width}px`);\n          rect.setAttribute("height", `${element.height}px`); // Rounded corners\n\n          rect.setAttribute("rx", _constants__WEBPACK_IMPORTED_MODULE_6__.FRAME_STYLE.radius.toString());\n          rect.setAttribute("ry", _constants__WEBPACK_IMPORTED_MODULE_6__.FRAME_STYLE.radius.toString());\n          rect.setAttribute("fill", "none");\n          rect.setAttribute("stroke", _constants__WEBPACK_IMPORTED_MODULE_6__.FRAME_STYLE.strokeColor);\n          rect.setAttribute("stroke-width", _constants__WEBPACK_IMPORTED_MODULE_6__.FRAME_STYLE.strokeWidth.toString());\n          addToRoot(rect, element);\n        }\n\n        break;\n      }\n\n    default:\n      {\n        if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isTextElement)(element)) {\n          const node = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_6__.SVG_NS, "g");\n\n          if (opacity !== 1) {\n            node.setAttribute("stroke-opacity", `${opacity}`);\n            node.setAttribute("fill-opacity", `${opacity}`);\n          }\n\n          node.setAttribute("transform", `translate(${offsetX || 0} ${offsetY || 0}) rotate(${degree} ${cx} ${cy})`);\n          const lines = element.text.replace(/\\r\\n?/g, "\\n").split("\\n");\n          const lineHeightPx = (0,_element_textElement__WEBPACK_IMPORTED_MODULE_8__.getLineHeightInPx)(element.fontSize, element.lineHeight);\n          const horizontalOffset = element.textAlign === "center" ? element.width / 2 : element.textAlign === "right" ? element.width : 0;\n          const direction = (0,_utils__WEBPACK_IMPORTED_MODULE_2__.isRTL)(element.text) ? "rtl" : "ltr";\n          const textAnchor = element.textAlign === "center" ? "middle" : element.textAlign === "right" || direction === "rtl" ? "end" : "start";\n\n          for (let i = 0; i < lines.length; i++) {\n            const text = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_6__.SVG_NS, "text");\n            text.textContent = lines[i];\n            text.setAttribute("x", `${horizontalOffset}`);\n            text.setAttribute("y", `${i * lineHeightPx}`);\n            text.setAttribute("font-family", (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getFontFamilyString)(element));\n            text.setAttribute("font-size", `${element.fontSize}px`);\n            text.setAttribute("fill", element.strokeColor);\n            text.setAttribute("text-anchor", textAnchor);\n            text.setAttribute("style", "white-space: pre;");\n            text.setAttribute("direction", direction);\n            text.setAttribute("dominant-baseline", "text-before-edge");\n            node.appendChild(text);\n          }\n\n          const g = maybeWrapNodesInFrameClipPath(element, root, [node], renderConfig.frameRendering);\n          addToRoot(g || node, element);\n        } else {\n          // @ts-ignore\n          throw new Error(`Unimplemented type ${element.type}`);\n        }\n      }\n  }\n};\nconst pathsCache = new WeakMap([]);\nfunction generateFreeDrawShape(element) {\n  const svgPathData = getFreeDrawSvgPath(element);\n  const path = new Path2D(svgPathData);\n  pathsCache.set(element, path);\n  return path;\n}\nfunction getFreeDrawPath2D(element) {\n  return pathsCache.get(element);\n}\nfunction getFreeDrawSvgPath(element) {\n  // If input points are empty (should they ever be?) return a dot\n  const inputPoints = element.simulatePressure ? element.points : element.points.length ? element.points.map(([x, y], i) => [x, y, element.pressures[i]]) : [[0, 0, 0.5]]; // Consider changing the options for simulated pressure vs real pressure\n\n  const options = {\n    simulatePressure: element.simulatePressure,\n    size: element.strokeWidth * 4.25,\n    thinning: 0.6,\n    smoothing: 0.5,\n    streamline: 0.5,\n    easing: t => Math.sin(t * Math.PI / 2),\n    last: !!element.lastCommittedPoint // LastCommittedPoint is added on pointerup\n\n  };\n  return getSvgPathFromStroke((0,perfect_freehand__WEBPACK_IMPORTED_MODULE_7__.getStroke)(inputPoints, options));\n}\n\nfunction med(A, B) {\n  return [(A[0] + B[0]) / 2, (A[1] + B[1]) / 2];\n} // Trim SVG path data so number are each two decimal points. This\n// improves SVG exports, and prevents rendering errors on points\n// with long decimals.\n\n\nconst TO_FIXED_PRECISION = /(\\s?[A-Z]?,?-?[0-9]*\\.[0-9]{0,2})(([0-9]|e|-)*)/g;\n\nfunction getSvgPathFromStroke(points) {\n  if (!points.length) {\n    return "";\n  }\n\n  const max = points.length - 1;\n  return points.reduce((acc, point, i, arr) => {\n    if (i === max) {\n      acc.push(point, med(point, arr[0]), "L", arr[0], "Z");\n    } else {\n      acc.push(point, med(point, arr[i + 1]));\n    }\n\n    return acc;\n  }, ["M", points[0], "Q"]).join(" ").replace(TO_FIXED_PRECISION, "$1");\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 68124 characters]\n//# sourceURL=webpack-internal:///../../renderer/renderElement.ts\n');
              }
            ),
            /***/
            "../../renderer/renderScene.ts": (
              /*!*************************************!*\
                !*** ../../renderer/renderScene.ts ***!
                \*************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "DEFAULT_SPACING": () => (/* binding */ DEFAULT_SPACING),
/* harmony export */   "cancelRender": () => (/* binding */ cancelRender),
/* harmony export */   "renderInteractiveScene": () => (/* binding */ renderInteractiveScene),
/* harmony export */   "renderSceneToSvg": () => (/* binding */ renderSceneToSvg),
/* harmony export */   "renderStaticScene": () => (/* binding */ renderStaticScene)
/* harmony export */ });
/* harmony import */ var open_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! open-color */ "../../../node_modules/open-color/open-color.json");
/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../element */ "../../element/index.ts");
/* harmony import */ var _roundRect__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./roundRect */ "../../renderer/roundRect.ts");
/* harmony import */ var _scene_scrollbars__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../scene/scrollbars */ "../../scene/scrollbars.ts");
/* harmony import */ var _renderElement__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./renderElement */ "../../renderer/renderElement.ts");
/* harmony import */ var _clients__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../clients */ "../../clients.ts");
/* harmony import */ var _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../element/linearElementEditor */ "../../element/linearElementEditor.ts");
/* harmony import */ var _groups__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../groups */ "../../groups.ts");
/* harmony import */ var _element_collision__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../element/collision */ "../../element/collision.ts");
/* harmony import */ var _element_transformHandles__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../element/transformHandles */ "../../element/transformHandles.ts");
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../utils */ "../../utils.ts");
/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../types */ "../../types.ts");
/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../constants */ "../../constants.ts");
/* harmony import */ var _element_Hyperlink__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../element/Hyperlink */ "../../element/Hyperlink.tsx");
/* harmony import */ var _renderSnaps__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./renderSnaps */ "../../renderer/renderSnaps.ts");
/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../element/typeChecks */ "../../element/typeChecks.ts");
/* harmony import */ var _element_embeddable__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../element/embeddable */ "../../element/embeddable.ts");
/* harmony import */ var _frame__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../frame */ "../../frame.ts");
/* harmony import */ var canvas_roundrect_polyfill__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! canvas-roundrect-polyfill */ "../../../node_modules/canvas-roundrect-polyfill/roundRect.js");
/* harmony import */ var canvas_roundrect_polyfill__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(canvas_roundrect_polyfill__WEBPACK_IMPORTED_MODULE_18__);



















const DEFAULT_SPACING = 2;

const strokeRectWithRotation = (context, x, y, width, height, cx, cy, angle, fill = false,
/** should account for zoom */
radius = 0) => {
  context.save();
  context.translate(cx, cy);
  context.rotate(angle);

  if (fill) {
    context.fillRect(x - cx, y - cy, width, height);
  }

  if (radius && context.roundRect) {
    context.beginPath();
    context.roundRect(x - cx, y - cy, width, height, radius);
    context.stroke();
    context.closePath();
  } else {
    context.strokeRect(x - cx, y - cy, width, height);
  }

  context.restore();
};

const strokeDiamondWithRotation = (context, width, height, cx, cy, angle) => {
  context.save();
  context.translate(cx, cy);
  context.rotate(angle);
  context.beginPath();
  context.moveTo(0, height / 2);
  context.lineTo(width / 2, 0);
  context.lineTo(0, -height / 2);
  context.lineTo(-width / 2, 0);
  context.closePath();
  context.stroke();
  context.restore();
};

const strokeEllipseWithRotation = (context, width, height, cx, cy, angle) => {
  context.beginPath();
  context.ellipse(cx, cy, width / 2, height / 2, angle, 0, Math.PI * 2);
  context.stroke();
};

const fillCircle = (context, cx, cy, radius, stroke = true) => {
  context.beginPath();
  context.arc(cx, cy, radius, 0, Math.PI * 2);
  context.fill();

  if (stroke) {
    context.stroke();
  }
};

const strokeGrid = (context, gridSize, scrollX, scrollY, zoom, width, height) => {
  const BOLD_LINE_FREQUENCY = 5;
  let GridLineColor;

  (function (GridLineColor) {
    GridLineColor["Bold"] = "#cccccc";
    GridLineColor["Regular"] = "#e5e5e5";
  })(GridLineColor || (GridLineColor = {}));

  const offsetX = -Math.round(zoom.value / gridSize) * gridSize + scrollX % gridSize;
  const offsetY = -Math.round(zoom.value / gridSize) * gridSize + scrollY % gridSize;
  const lineWidth = Math.min(1 / zoom.value, 1);
  const spaceWidth = 1 / zoom.value;
  const lineDash = [lineWidth * 3, spaceWidth + (lineWidth + spaceWidth)];
  context.save();
  context.lineWidth = lineWidth;

  for (let x = offsetX; x < offsetX + width + gridSize * 2; x += gridSize) {
    const isBold = Math.round(x - scrollX) % (BOLD_LINE_FREQUENCY * gridSize) === 0;
    context.beginPath();
    context.setLineDash(isBold ? [] : lineDash);
    context.strokeStyle = isBold ? GridLineColor.Bold : GridLineColor.Regular;
    context.moveTo(x, offsetY - gridSize);
    context.lineTo(x, offsetY + height + gridSize * 2);
    context.stroke();
  }

  for (let y = offsetY; y < offsetY + height + gridSize * 2; y += gridSize) {
    const isBold = Math.round(y - scrollY) % (BOLD_LINE_FREQUENCY * gridSize) === 0;
    context.beginPath();
    context.setLineDash(isBold ? [] : lineDash);
    context.strokeStyle = isBold ? GridLineColor.Bold : GridLineColor.Regular;
    context.moveTo(offsetX - gridSize, y);
    context.lineTo(offsetX + width + gridSize * 2, y);
    context.stroke();
  }

  context.restore();
};

const renderSingleLinearPoint = (context, appState, point, radius, isSelected, isPhantomPoint = false) => {
  context.strokeStyle = "#5e5ad8";
  context.setLineDash([]);
  context.fillStyle = "rgba(255, 255, 255, 0.9)";

  if (isSelected) {
    context.fillStyle = "rgba(134, 131, 226, 0.9)";
  } else if (isPhantomPoint) {
    context.fillStyle = "rgba(177, 151, 252, 0.7)";
  }

  fillCircle(context, point[0], point[1], radius / appState.zoom.value, !isPhantomPoint);
};

const renderLinearPointHandles = (context, appState, element) => {
  if (!appState.selectedLinearElement) {
    return;
  }

  context.save();
  context.translate(appState.scrollX, appState.scrollY);
  context.lineWidth = 1 / appState.zoom.value;
  const points = _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_6__.LinearElementEditor.getPointsGlobalCoordinates(element);
  const {
    POINT_HANDLE_SIZE
  } = _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_6__.LinearElementEditor;
  const radius = appState.editingLinearElement ? POINT_HANDLE_SIZE : POINT_HANDLE_SIZE / 2;
  points.forEach((point, idx) => {
    var _a, _b;

    const isSelected = !!((_b = (_a = appState.editingLinearElement) === null || _a === void 0 ? void 0 : _a.selectedPointsIndices) === null || _b === void 0 ? void 0 : _b.includes(idx));
    renderSingleLinearPoint(context, appState, point, radius, isSelected);
  }); //Rendering segment mid points

  const midPoints = _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_6__.LinearElementEditor.getEditorMidPoints(element, appState).filter(midPoint => midPoint !== null);
  midPoints.forEach(segmentMidPoint => {
    var _a;

    if (((_a = appState === null || appState === void 0 ? void 0 : appState.selectedLinearElement) === null || _a === void 0 ? void 0 : _a.segmentMidPointHoveredCoords) && _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_6__.LinearElementEditor.arePointsEqual(segmentMidPoint, appState.selectedLinearElement.segmentMidPointHoveredCoords)) {
      // The order of renderingSingleLinearPoint and highLight points is different
      // inside vs outside editor as hover states are different,
      // in editor when hovered the original point is not visible as hover state fully covers it whereas outside the
      // editor original point is visible and hover state is just an outer circle.
      if (appState.editingLinearElement) {
        renderSingleLinearPoint(context, appState, segmentMidPoint, radius, false);
        highlightPoint(segmentMidPoint, context, appState);
      } else {
        highlightPoint(segmentMidPoint, context, appState);
        renderSingleLinearPoint(context, appState, segmentMidPoint, radius, false);
      }
    } else if (appState.editingLinearElement || points.length === 2) {
      renderSingleLinearPoint(context, appState, segmentMidPoint, POINT_HANDLE_SIZE / 2, false, true);
    }
  });
  context.restore();
};

const highlightPoint = (point, context, appState) => {
  context.fillStyle = "rgba(105, 101, 219, 0.4)";
  fillCircle(context, point[0], point[1], _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_6__.LinearElementEditor.POINT_HANDLE_SIZE / appState.zoom.value, false);
};

const renderLinearElementPointHighlight = (context, appState) => {
  var _a, _b;

  const {
    elementId,
    hoverPointIndex
  } = appState.selectedLinearElement;

  if ((_b = (_a = appState.editingLinearElement) === null || _a === void 0 ? void 0 : _a.selectedPointsIndices) === null || _b === void 0 ? void 0 : _b.includes(hoverPointIndex)) {
    return;
  }

  const element = _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_6__.LinearElementEditor.getElement(elementId);

  if (!element) {
    return;
  }

  const point = _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_6__.LinearElementEditor.getPointAtIndexGlobalCoordinates(element, hoverPointIndex);
  context.save();
  context.translate(appState.scrollX, appState.scrollY);
  highlightPoint(point, context, appState);
  context.restore();
};

const frameClip = (frame, context, renderConfig, appState) => {
  context.translate(frame.x + appState.scrollX, frame.y + appState.scrollY);
  context.beginPath();

  if (context.roundRect) {
    context.roundRect(0, 0, frame.width, frame.height, _constants__WEBPACK_IMPORTED_MODULE_12__.FRAME_STYLE.radius / appState.zoom.value);
  } else {
    context.rect(0, 0, frame.width, frame.height);
  }

  context.clip();
  context.translate(-(frame.x + appState.scrollX), -(frame.y + appState.scrollY));
};

const getNormalizedCanvasDimensions = (canvas, scale) => {
  // When doing calculations based on canvas width we should used normalized one
  return [canvas.width / scale, canvas.height / scale];
};

const bootstrapCanvas = ({
  canvas,
  scale,
  normalizedWidth,
  normalizedHeight,
  theme,
  isExporting,
  viewBackgroundColor
}) => {
  const context = canvas.getContext("2d");
  context.setTransform(1, 0, 0, 1, 0, 0);
  context.scale(scale, scale);

  if (isExporting && theme === "dark") {
    context.filter = _constants__WEBPACK_IMPORTED_MODULE_12__.THEME_FILTER;
  } // Paint background


  if (typeof viewBackgroundColor === "string") {
    const hasTransparence = viewBackgroundColor === "transparent" || viewBackgroundColor.length === 5 || // #RGBA
    viewBackgroundColor.length === 9 || // #RRGGBBA
    /(hsla|rgba)\\(/.test(viewBackgroundColor);

    if (hasTransparence) {
      context.clearRect(0, 0, normalizedWidth, normalizedHeight);
    }

    context.save();
    context.fillStyle = viewBackgroundColor;
    context.fillRect(0, 0, normalizedWidth, normalizedHeight);
    context.restore();
  } else {
    context.clearRect(0, 0, normalizedWidth, normalizedHeight);
  }

  return context;
};

const _renderInteractiveScene = ({
  canvas,
  elements,
  visibleElements,
  selectedElements,
  scale,
  appState,
  renderConfig
}) => {
  var _a, _b;

  if (canvas === null) {
    return {
      atLeastOneVisibleElement: false,
      elements
    };
  }

  const [normalizedWidth, normalizedHeight] = getNormalizedCanvasDimensions(canvas, scale);
  const context = bootstrapCanvas({
    canvas,
    scale,
    normalizedWidth,
    normalizedHeight
  }); // Apply zoom

  context.save();
  context.scale(appState.zoom.value, appState.zoom.value);
  let editingLinearElement = undefined;
  visibleElements.forEach(element => {
    var _a; // Getting the element using LinearElementEditor during collab mismatches version - being one head of visible elements due to
    // ShapeCache returns empty hence making sure that we get the
    // correct element from visible elements


    if (((_a = appState.editingLinearElement) === null || _a === void 0 ? void 0 : _a.elementId) === element.id) {
      if (element) {
        editingLinearElement = element;
      }
    }
  });

  if (editingLinearElement) {
    renderLinearPointHandles(context, appState, editingLinearElement);
  } // Paint selection element


  if (appState.selectionElement) {
    try {
      (0,_renderElement__WEBPACK_IMPORTED_MODULE_4__.renderSelectionElement)(appState.selectionElement, context, appState);
    } catch (error) {
      console.error(error);
    }
  }

  if (appState.isBindingEnabled) {
    appState.suggestedBindings.filter(binding => binding != null).forEach(suggestedBinding => {
      renderBindingHighlight(context, appState, suggestedBinding);
    });
  }

  if (appState.frameToHighlight) {
    renderFrameHighlight(context, appState, appState.frameToHighlight);
  }

  if (appState.elementsToHighlight) {
    renderElementsBoxHighlight(context, appState, appState.elementsToHighlight);
  }

  const isFrameSelected = selectedElements.some(element => (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_15__.isFrameElement)(element)); // Getting the element using LinearElementEditor during collab mismatches version - being one head of visible elements due to
  // ShapeCache returns empty hence making sure that we get the
  // correct element from visible elements

  if (selectedElements.length === 1 && ((_a = appState.editingLinearElement) === null || _a === void 0 ? void 0 : _a.elementId) === selectedElements[0].id) {
    renderLinearPointHandles(context, appState, selectedElements[0]);
  }

  if (appState.selectedLinearElement && appState.selectedLinearElement.hoverPointIndex >= 0) {
    renderLinearElementPointHighlight(context, appState);
  } // Paint selected elements


  if (!appState.multiElement && !appState.editingLinearElement) {
    const showBoundingBox = (0,_element_transformHandles__WEBPACK_IMPORTED_MODULE_9__.shouldShowBoundingBox)(selectedElements, appState);
    const isSingleLinearElementSelected = selectedElements.length === 1 && (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_15__.isLinearElement)(selectedElements[0]); // render selected linear element points

    if (isSingleLinearElementSelected && ((_b = appState.selectedLinearElement) === null || _b === void 0 ? void 0 : _b.elementId) === selectedElements[0].id && !selectedElements[0].locked) {
      renderLinearPointHandles(context, appState, selectedElements[0]);
    }

    const selectionColor = renderConfig.selectionColor || open_color__WEBPACK_IMPORTED_MODULE_0__.black;

    if (showBoundingBox) {
      // Optimisation for finding quickly relevant element ids
      const locallySelectedIds = selectedElements.reduce((acc, element) => {
        acc[element.id] = true;
        return acc;
      }, {});
      const selections = elements.reduce((acc, element) => {
        var _a;

        const selectionColors = []; // local user

        if (locallySelectedIds[element.id] && !(0,_groups__WEBPACK_IMPORTED_MODULE_7__.isSelectedViaGroup)(appState, element)) {
          selectionColors.push(selectionColor);
        } // remote users


        if (renderConfig.remoteSelectedElementIds[element.id]) {
          selectionColors.push(...renderConfig.remoteSelectedElementIds[element.id].map(socketId => {
            const background = (0,_clients__WEBPACK_IMPORTED_MODULE_5__.getClientColor)(socketId);
            return background;
          }));
        }

        if (selectionColors.length) {
          const [elementX1, elementY1, elementX2, elementY2, cx, cy] = (0,_element__WEBPACK_IMPORTED_MODULE_1__.getElementAbsoluteCoords)(element, true);
          acc.push({
            angle: element.angle,
            elementX1,
            elementY1,
            elementX2,
            elementY2,
            selectionColors,
            dashed: !!renderConfig.remoteSelectedElementIds[element.id],
            cx,
            cy,
            activeEmbeddable: ((_a = appState.activeEmbeddable) === null || _a === void 0 ? void 0 : _a.element) === element && appState.activeEmbeddable.state === "active"
          });
        }

        return acc;
      }, []);

      const addSelectionForGroupId = groupId => {
        const groupElements = (0,_groups__WEBPACK_IMPORTED_MODULE_7__.getElementsInGroup)(elements, groupId);
        const [elementX1, elementY1, elementX2, elementY2] = (0,_element__WEBPACK_IMPORTED_MODULE_1__.getCommonBounds)(groupElements);
        selections.push({
          angle: 0,
          elementX1,
          elementX2,
          elementY1,
          elementY2,
          selectionColors: [open_color__WEBPACK_IMPORTED_MODULE_0__.black],
          dashed: true,
          cx: elementX1 + (elementX2 - elementX1) / 2,
          cy: elementY1 + (elementY2 - elementY1) / 2,
          activeEmbeddable: false
        });
      };

      for (const groupId of (0,_groups__WEBPACK_IMPORTED_MODULE_7__.getSelectedGroupIds)(appState)) {
        // TODO: support multiplayer selected group IDs
        addSelectionForGroupId(groupId);
      }

      if (appState.editingGroupId) {
        addSelectionForGroupId(appState.editingGroupId);
      }

      selections.forEach(selection => renderSelectionBorder(context, appState, selection));
    } // Paint resize transformHandles


    context.save();
    context.translate(appState.scrollX, appState.scrollY);

    if (selectedElements.length === 1) {
      context.fillStyle = open_color__WEBPACK_IMPORTED_MODULE_0__.white;
      const transformHandles = (0,_element__WEBPACK_IMPORTED_MODULE_1__.getTransformHandles)(selectedElements[0], appState.zoom, "mouse");

      if (!appState.viewModeEnabled && showBoundingBox) {
        renderTransformHandles(context, renderConfig, appState, transformHandles, selectedElements[0].angle);
      }
    } else if (selectedElements.length > 1 && !appState.isRotating) {
      const dashedLinePadding = DEFAULT_SPACING * 2 / appState.zoom.value;
      context.fillStyle = open_color__WEBPACK_IMPORTED_MODULE_0__.white;
      const [x1, y1, x2, y2] = (0,_element__WEBPACK_IMPORTED_MODULE_1__.getCommonBounds)(selectedElements);
      const initialLineDash = context.getLineDash();
      context.setLineDash([2 / appState.zoom.value]);
      const lineWidth = context.lineWidth;
      context.lineWidth = 1 / appState.zoom.value;
      context.strokeStyle = selectionColor;
      strokeRectWithRotation(context, x1 - dashedLinePadding, y1 - dashedLinePadding, x2 - x1 + dashedLinePadding * 2, y2 - y1 + dashedLinePadding * 2, (x1 + x2) / 2, (y1 + y2) / 2, 0);
      context.lineWidth = lineWidth;
      context.setLineDash(initialLineDash);
      const transformHandles = (0,_element__WEBPACK_IMPORTED_MODULE_1__.getTransformHandlesFromCoords)([x1, y1, x2, y2, (x1 + x2) / 2, (y1 + y2) / 2], 0, appState.zoom, "mouse", isFrameSelected ? _element_transformHandles__WEBPACK_IMPORTED_MODULE_9__.OMIT_SIDES_FOR_FRAME : _element__WEBPACK_IMPORTED_MODULE_1__.OMIT_SIDES_FOR_MULTIPLE_ELEMENTS);

      if (selectedElements.some(element => !element.locked)) {
        renderTransformHandles(context, renderConfig, appState, transformHandles, 0);
      }
    }

    context.restore();
  }

  (0,_renderSnaps__WEBPACK_IMPORTED_MODULE_14__.renderSnaps)(context, appState); // Reset zoom

  context.restore(); // Paint remote pointers

  for (const clientId in renderConfig.remotePointerViewportCoords) {
    let {
      x,
      y
    } = renderConfig.remotePointerViewportCoords[clientId];
    x -= appState.offsetLeft;
    y -= appState.offsetTop;
    const width = 11;
    const height = 14;
    const isOutOfBounds = x < 0 || x > normalizedWidth - width || y < 0 || y > normalizedHeight - height;
    x = Math.max(x, 0);
    x = Math.min(x, normalizedWidth - width);
    y = Math.max(y, 0);
    y = Math.min(y, normalizedHeight - height);
    const background = (0,_clients__WEBPACK_IMPORTED_MODULE_5__.getClientColor)(clientId);
    context.save();
    context.strokeStyle = background;
    context.fillStyle = background;
    const userState = renderConfig.remotePointerUserStates[clientId];
    const isInactive = isOutOfBounds || userState === _types__WEBPACK_IMPORTED_MODULE_11__.UserIdleState.IDLE || userState === _types__WEBPACK_IMPORTED_MODULE_11__.UserIdleState.AWAY;

    if (isInactive) {
      context.globalAlpha = 0.3;
    }

    if (renderConfig.remotePointerButton && renderConfig.remotePointerButton[clientId] === "down") {
      context.beginPath();
      context.arc(x, y, 15, 0, 2 * Math.PI, false);
      context.lineWidth = 3;
      context.strokeStyle = "#ffffff88";
      context.stroke();
      context.closePath();
      context.beginPath();
      context.arc(x, y, 15, 0, 2 * Math.PI, false);
      context.lineWidth = 1;
      context.strokeStyle = background;
      context.stroke();
      context.closePath();
    } // Background (white outline) for arrow


    context.fillStyle = open_color__WEBPACK_IMPORTED_MODULE_0__.white;
    context.strokeStyle = open_color__WEBPACK_IMPORTED_MODULE_0__.white;
    context.lineWidth = 6;
    context.lineJoin = "round";
    context.beginPath();
    context.moveTo(x, y);
    context.lineTo(x + 0, y + 14);
    context.lineTo(x + 4, y + 9);
    context.lineTo(x + 11, y + 8);
    context.closePath();
    context.stroke();
    context.fill(); // Arrow

    context.fillStyle = background;
    context.strokeStyle = background;
    context.lineWidth = 2;
    context.lineJoin = "round";
    context.beginPath();

    if (isInactive) {
      context.moveTo(x - 1, y - 1);
      context.lineTo(x - 1, y + 15);
      context.lineTo(x + 5, y + 10);
      context.lineTo(x + 12, y + 9);
      context.closePath();
      context.fill();
    } else {
      context.moveTo(x, y);
      context.lineTo(x + 0, y + 14);
      context.lineTo(x + 4, y + 9);
      context.lineTo(x + 11, y + 8);
      context.closePath();
      context.fill();
      context.stroke();
    }

    const username = renderConfig.remotePointerUsernames[clientId] || "";

    if (!isOutOfBounds && username) {
      context.font = "600 12px sans-serif"; // font has to be set before context.measureText()

      const offsetX = x + width / 2;
      const offsetY = y + height + 2;
      const paddingHorizontal = 5;
      const paddingVertical = 3;
      const measure = context.measureText(username);
      const measureHeight = measure.actualBoundingBoxDescent + measure.actualBoundingBoxAscent;
      const finalHeight = Math.max(measureHeight, 12);
      const boxX = offsetX - 1;
      const boxY = offsetY - 1;
      const boxWidth = measure.width + 2 + paddingHorizontal * 2 + 2;
      const boxHeight = finalHeight + 2 + paddingVertical * 2 + 2;

      if (context.roundRect) {
        context.beginPath();
        context.roundRect(boxX, boxY, boxWidth, boxHeight, 8);
        context.fillStyle = background;
        context.fill();
        context.strokeStyle = open_color__WEBPACK_IMPORTED_MODULE_0__.white;
        context.stroke();
      } else {
        (0,_roundRect__WEBPACK_IMPORTED_MODULE_2__.roundRect)(context, boxX, boxY, boxWidth, boxHeight, 8, open_color__WEBPACK_IMPORTED_MODULE_0__.white);
      }

      context.fillStyle = open_color__WEBPACK_IMPORTED_MODULE_0__.black;
      context.fillText(username, offsetX + paddingHorizontal + 1, offsetY + paddingVertical + measure.actualBoundingBoxAscent + Math.floor((finalHeight - measureHeight) / 2) + 2);
    }

    context.restore();
    context.closePath();
  } // Paint scrollbars


  let scrollBars;

  if (renderConfig.renderScrollbars) {
    scrollBars = (0,_scene_scrollbars__WEBPACK_IMPORTED_MODULE_3__.getScrollBars)(elements, normalizedWidth, normalizedHeight, appState);
    context.save();
    context.fillStyle = _scene_scrollbars__WEBPACK_IMPORTED_MODULE_3__.SCROLLBAR_COLOR;
    context.strokeStyle = "rgba(255,255,255,0.8)";
    [scrollBars.horizontal, scrollBars.vertical].forEach(scrollBar => {
      if (scrollBar) {
        (0,_roundRect__WEBPACK_IMPORTED_MODULE_2__.roundRect)(context, scrollBar.x, scrollBar.y, scrollBar.width, scrollBar.height, _scene_scrollbars__WEBPACK_IMPORTED_MODULE_3__.SCROLLBAR_WIDTH / 2);
      }
    });
    context.restore();
  }

  return {
    scrollBars,
    atLeastOneVisibleElement: visibleElements.length > 0,
    elements
  };
};

const _renderStaticScene = ({
  canvas,
  rc,
  elements,
  visibleElements,
  scale,
  appState,
  renderConfig
}) => {
  if (canvas === null) {
    return;
  }

  const {
    renderGrid = true,
    isExporting
  } = renderConfig;
  const [normalizedWidth, normalizedHeight] = getNormalizedCanvasDimensions(canvas, scale);
  const context = bootstrapCanvas({
    canvas,
    scale,
    normalizedWidth,
    normalizedHeight,
    theme: appState.theme,
    isExporting,
    viewBackgroundColor: appState.viewBackgroundColor
  }); // Apply zoom

  context.scale(appState.zoom.value, appState.zoom.value); // Grid

  if (renderGrid && appState.gridSize) {
    strokeGrid(context, appState.gridSize, appState.scrollX, appState.scrollY, appState.zoom, normalizedWidth / appState.zoom.value, normalizedHeight / appState.zoom.value);
  }

  const groupsToBeAddedToFrame = new Set();
  visibleElements.forEach(element => {
    if (element.groupIds.length > 0 && appState.frameToHighlight && appState.selectedElementIds[element.id] && ((0,_frame__WEBPACK_IMPORTED_MODULE_17__.elementOverlapsWithFrame)(element, appState.frameToHighlight) || element.groupIds.find(groupId => groupsToBeAddedToFrame.has(groupId)))) {
      element.groupIds.forEach(groupId => groupsToBeAddedToFrame.add(groupId));
    }
  }); // Paint visible elements

  visibleElements.filter(el => !(0,_element_embeddable__WEBPACK_IMPORTED_MODULE_16__.isEmbeddableOrLabel)(el)).forEach(element => {
    var _a;

    try {
      const frameId = element.frameId || ((_a = appState.frameToHighlight) === null || _a === void 0 ? void 0 : _a.id);

      if (frameId && appState.frameRendering.enabled && appState.frameRendering.clip) {
        context.save();
        const frame = (0,_frame__WEBPACK_IMPORTED_MODULE_17__.getTargetFrame)(element, appState); // TODO do we need to check isElementInFrame here?

        if (frame && (0,_frame__WEBPACK_IMPORTED_MODULE_17__.isElementInFrame)(element, elements, appState)) {
          frameClip(frame, context, renderConfig, appState);
        }

        (0,_renderElement__WEBPACK_IMPORTED_MODULE_4__.renderElement)(element, rc, context, renderConfig, appState);
        context.restore();
      } else {
        (0,_renderElement__WEBPACK_IMPORTED_MODULE_4__.renderElement)(element, rc, context, renderConfig, appState);
      }

      if (!isExporting) {
        renderLinkIcon(element, context, appState);
      }
    } catch (error) {
      console.error(error);
    }
  }); // render embeddables on top

  visibleElements.filter(el => (0,_element_embeddable__WEBPACK_IMPORTED_MODULE_16__.isEmbeddableOrLabel)(el)).forEach(element => {
    var _a;

    try {
      const render = () => {
        (0,_renderElement__WEBPACK_IMPORTED_MODULE_4__.renderElement)(element, rc, context, renderConfig, appState);

        if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_15__.isEmbeddableElement)(element) && (isExporting || !element.validated) && element.width && element.height) {
          const label = (0,_element_embeddable__WEBPACK_IMPORTED_MODULE_16__.createPlaceholderEmbeddableLabel)(element);
          (0,_renderElement__WEBPACK_IMPORTED_MODULE_4__.renderElement)(label, rc, context, renderConfig, appState);
        }

        if (!isExporting) {
          renderLinkIcon(element, context, appState);
        }
      }; // - when exporting the whole canvas, we DO NOT apply clipping
      // - when we are exporting a particular frame, apply clipping
      //   if the containing frame is not selected, apply clipping


      const frameId = element.frameId || ((_a = appState.frameToHighlight) === null || _a === void 0 ? void 0 : _a.id);

      if (frameId && appState.frameRendering.enabled && appState.frameRendering.clip) {
        context.save();
        const frame = (0,_frame__WEBPACK_IMPORTED_MODULE_17__.getTargetFrame)(element, appState);

        if (frame && (0,_frame__WEBPACK_IMPORTED_MODULE_17__.isElementInFrame)(element, elements, appState)) {
          frameClip(frame, context, renderConfig, appState);
        }

        render();
        context.restore();
      } else {
        render();
      }
    } catch (error) {
      console.error(error);
    }
  });
};
/** throttled to animation framerate */


const renderInteractiveSceneThrottled = (0,_utils__WEBPACK_IMPORTED_MODULE_10__.throttleRAF)(config => {
  var _a;

  const ret = _renderInteractiveScene(config);

  (_a = config.callback) === null || _a === void 0 ? void 0 : _a.call(config, ret);
}, {
  trailing: true
});
/**
 * Interactive scene is the ui-canvas where we render boundinb boxes, selections
 * and other ui stuff.
 */

const renderInteractiveScene = (renderConfig, throttle) => {
  if (throttle) {
    renderInteractiveSceneThrottled(renderConfig);
    return undefined;
  }

  const ret = _renderInteractiveScene(renderConfig);

  renderConfig.callback(ret);
  return ret;
};
/** throttled to animation framerate */

const renderStaticSceneThrottled = (0,_utils__WEBPACK_IMPORTED_MODULE_10__.throttleRAF)(config => {
  _renderStaticScene(config);
}, {
  trailing: true
});
/**
 * Static scene is the non-ui canvas where we render elements.
 */

const renderStaticScene = (renderConfig, throttle) => {
  if (throttle) {
    renderStaticSceneThrottled(renderConfig);
    return;
  }

  _renderStaticScene(renderConfig);
};
const cancelRender = () => {
  renderInteractiveSceneThrottled.cancel();
  renderStaticSceneThrottled.cancel();
};

const renderTransformHandles = (context, renderConfig, appState, transformHandles, angle) => {
  Object.keys(transformHandles).forEach(key => {
    const transformHandle = transformHandles[key];

    if (transformHandle !== undefined) {
      const [x, y, width, height] = transformHandle;
      context.save();
      context.lineWidth = 1 / appState.zoom.value;

      if (renderConfig.selectionColor) {
        context.strokeStyle = renderConfig.selectionColor;
      }

      if (key === "rotation") {
        fillCircle(context, x + width / 2, y + height / 2, width / 2); // prefer round corners if roundRect API is available
      } else if (context.roundRect) {
        context.beginPath();
        context.roundRect(x, y, width, height, 2 / appState.zoom.value);
        context.fill();
        context.stroke();
      } else {
        strokeRectWithRotation(context, x, y, width, height, x + width / 2, y + height / 2, angle, true);
      }

      context.restore();
    }
  });
};

const renderSelectionBorder = (context, appState, elementProperties, padding = DEFAULT_SPACING * 2) => {
  const {
    angle,
    elementX1,
    elementY1,
    elementX2,
    elementY2,
    selectionColors,
    cx,
    cy,
    dashed,
    activeEmbeddable
  } = elementProperties;
  const elementWidth = elementX2 - elementX1;
  const elementHeight = elementY2 - elementY1;
  const linePadding = padding / appState.zoom.value;
  const lineWidth = 8 / appState.zoom.value;
  const spaceWidth = 4 / appState.zoom.value;
  context.save();
  context.translate(appState.scrollX, appState.scrollY);
  context.lineWidth = (activeEmbeddable ? 4 : 1) / appState.zoom.value;
  const count = selectionColors.length;

  for (let index = 0; index < count; ++index) {
    context.strokeStyle = selectionColors[index];

    if (dashed) {
      context.setLineDash([lineWidth, spaceWidth + (lineWidth + spaceWidth) * (count - 1)]);
    }

    context.lineDashOffset = (lineWidth + spaceWidth) * index;
    strokeRectWithRotation(context, elementX1 - linePadding, elementY1 - linePadding, elementWidth + linePadding * 2, elementHeight + linePadding * 2, cx, cy, angle);
  }

  context.restore();
};

const renderBindingHighlight = (context, appState, suggestedBinding) => {
  const renderHighlight = Array.isArray(suggestedBinding) ? renderBindingHighlightForSuggestedPointBinding : renderBindingHighlightForBindableElement;
  context.save();
  context.translate(appState.scrollX, appState.scrollY);
  renderHighlight(context, suggestedBinding);
  context.restore();
};

const renderBindingHighlightForBindableElement = (context, element) => {
  const [x1, y1, x2, y2] = (0,_element__WEBPACK_IMPORTED_MODULE_1__.getElementAbsoluteCoords)(element);
  const width = x2 - x1;
  const height = y2 - y1;
  const threshold = (0,_element_collision__WEBPACK_IMPORTED_MODULE_8__.maxBindingGap)(element, width, height); // So that we don't overlap the element itself

  const strokeOffset = 4;
  context.strokeStyle = "rgba(0,0,0,.05)";
  context.lineWidth = threshold - strokeOffset;
  const padding = strokeOffset / 2 + threshold / 2;

  switch (element.type) {
    case "rectangle":
    case "text":
    case "image":
    case "embeddable":
    case "frame":
      strokeRectWithRotation(context, x1 - padding, y1 - padding, width + padding * 2, height + padding * 2, x1 + width / 2, y1 + height / 2, element.angle);
      break;

    case "diamond":
      const side = Math.hypot(width, height);
      const wPadding = padding * side / height;
      const hPadding = padding * side / width;
      strokeDiamondWithRotation(context, width + wPadding * 2, height + hPadding * 2, x1 + width / 2, y1 + height / 2, element.angle);
      break;

    case "ellipse":
      strokeEllipseWithRotation(context, width + padding * 2, height + padding * 2, x1 + width / 2, y1 + height / 2, element.angle);
      break;
  }
};

const renderFrameHighlight = (context, appState, frame) => {
  const [x1, y1, x2, y2] = (0,_element__WEBPACK_IMPORTED_MODULE_1__.getElementAbsoluteCoords)(frame);
  const width = x2 - x1;
  const height = y2 - y1;
  context.strokeStyle = "rgb(0,118,255)";
  context.lineWidth = _constants__WEBPACK_IMPORTED_MODULE_12__.FRAME_STYLE.strokeWidth / appState.zoom.value;
  context.save();
  context.translate(appState.scrollX, appState.scrollY);
  strokeRectWithRotation(context, x1, y1, width, height, x1 + width / 2, y1 + height / 2, frame.angle, false, _constants__WEBPACK_IMPORTED_MODULE_12__.FRAME_STYLE.radius / appState.zoom.value);
  context.restore();
};

const renderElementsBoxHighlight = (context, appState, elements) => {
  const individualElements = elements.filter(element => element.groupIds.length === 0);
  const elementsInGroups = elements.filter(element => element.groupIds.length > 0);

  const getSelectionFromElements = elements => {
    const [elementX1, elementY1, elementX2, elementY2] = (0,_element__WEBPACK_IMPORTED_MODULE_1__.getCommonBounds)(elements);
    return {
      angle: 0,
      elementX1,
      elementX2,
      elementY1,
      elementY2,
      selectionColors: ["rgb(0,118,255)"],
      dashed: false,
      cx: elementX1 + (elementX2 - elementX1) / 2,
      cy: elementY1 + (elementY2 - elementY1) / 2,
      activeEmbeddable: false
    };
  };

  const getSelectionForGroupId = groupId => {
    const groupElements = (0,_groups__WEBPACK_IMPORTED_MODULE_7__.getElementsInGroup)(elements, groupId);
    return getSelectionFromElements(groupElements);
  };

  Object.entries((0,_groups__WEBPACK_IMPORTED_MODULE_7__.selectGroupsFromGivenElements)(elementsInGroups, appState)).filter(([id, isSelected]) => isSelected).map(([id, isSelected]) => id).map(groupId => getSelectionForGroupId(groupId)).concat(individualElements.map(element => getSelectionFromElements([element]))).forEach(selection => renderSelectionBorder(context, appState, selection));
};

const renderBindingHighlightForSuggestedPointBinding = (context, suggestedBinding) => {
  const [element, startOrEnd, bindableElement] = suggestedBinding;
  const threshold = (0,_element_collision__WEBPACK_IMPORTED_MODULE_8__.maxBindingGap)(bindableElement, bindableElement.width, bindableElement.height);
  context.strokeStyle = "rgba(0,0,0,0)";
  context.fillStyle = "rgba(0,0,0,.05)";
  const pointIndices = startOrEnd === "both" ? [0, -1] : startOrEnd === "start" ? [0] : [-1];
  pointIndices.forEach(index => {
    const [x, y] = _element_linearElementEditor__WEBPACK_IMPORTED_MODULE_6__.LinearElementEditor.getPointAtIndexGlobalCoordinates(element, index);
    fillCircle(context, x, y, threshold);
  });
};

let linkCanvasCache;

const renderLinkIcon = (element, context, appState) => {
  if (element.link && !appState.selectedElementIds[element.id]) {
    const [x1, y1, x2, y2] = (0,_element__WEBPACK_IMPORTED_MODULE_1__.getElementAbsoluteCoords)(element);
    const [x, y, width, height] = (0,_element_Hyperlink__WEBPACK_IMPORTED_MODULE_13__.getLinkHandleFromCoords)([x1, y1, x2, y2], element.angle, appState);
    const centerX = x + width / 2;
    const centerY = y + height / 2;
    context.save();
    context.translate(appState.scrollX + centerX, appState.scrollY + centerY);
    context.rotate(element.angle);

    if (!linkCanvasCache || linkCanvasCache.zoom !== appState.zoom.value) {
      linkCanvasCache = document.createElement("canvas");
      linkCanvasCache.zoom = appState.zoom.value;
      linkCanvasCache.width = width * window.devicePixelRatio * appState.zoom.value;
      linkCanvasCache.height = height * window.devicePixelRatio * appState.zoom.value;
      const linkCanvasCacheContext = linkCanvasCache.getContext("2d");
      linkCanvasCacheContext.scale(window.devicePixelRatio * appState.zoom.value, window.devicePixelRatio * appState.zoom.value);
      linkCanvasCacheContext.fillStyle = "#fff";
      linkCanvasCacheContext.fillRect(0, 0, width, height);
      linkCanvasCacheContext.drawImage(_element_Hyperlink__WEBPACK_IMPORTED_MODULE_13__.EXTERNAL_LINK_IMG, 0, 0, width, height);
      linkCanvasCacheContext.restore();
      context.drawImage(linkCanvasCache, x - centerX, y - centerY, width, height);
    } else {
      context.drawImage(linkCanvasCache, x - centerX, y - centerY, width, height);
    }

    context.restore();
  }
}; // This should be only called for exporting purposes


const renderSceneToSvg = (elements, rsvg, svgRoot, files, {
  offsetX = 0,
  offsetY = 0,
  exportWithDarkMode,
  renderEmbeddables,
  frameRendering
}) => {
  if (!svgRoot) {
    return;
  }

  const renderConfig = {
    exportWithDarkMode,
    renderEmbeddables,
    frameRendering
  }; // render elements

  elements.filter(el => !(0,_element_embeddable__WEBPACK_IMPORTED_MODULE_16__.isEmbeddableOrLabel)(el)).forEach(element => {
    if (!element.isDeleted) {
      try {
        (0,_renderElement__WEBPACK_IMPORTED_MODULE_4__.renderElementToSvg)(element, rsvg, svgRoot, files, element.x + offsetX, element.y + offsetY, renderConfig);
      } catch (error) {
        console.error(error);
      }
    }
  }); // render embeddables on top

  elements.filter(el => (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_15__.isEmbeddableElement)(el)).forEach(element => {
    if (!element.isDeleted) {
      try {
        (0,_renderElement__WEBPACK_IMPORTED_MODULE_4__.renderElementToSvg)(element, rsvg, svgRoot, files, element.x + offsetX, element.y + offsetY, renderConfig);
      } catch (error) {
        console.error(error);
      }
    }
  });
};//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 55876 characters]
//# sourceURL=webpack-internal:///../../renderer/renderScene.ts
`);
              }
            ),
            /***/
            "../../renderer/renderSnaps.ts": (
              /*!*************************************!*\
                !*** ../../renderer/renderSnaps.ts ***!
                \*************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "renderSnaps": () => (/* binding */ renderSnaps)
/* harmony export */ });
const SNAP_COLOR_LIGHT = "#ff6b6b";
const SNAP_COLOR_DARK = "#ff0000";
const SNAP_WIDTH = 1;
const SNAP_CROSS_SIZE = 2;
const renderSnaps = (context, appState) => {
  if (!appState.snapLines.length) {
    return;
  } // in dark mode, we need to adjust the color to account for color inversion.
  // Don't change if zen mode, because we draw only crosses, we want the
  // colors to be more visible


  const snapColor = appState.theme === "light" || appState.zenModeEnabled ? SNAP_COLOR_LIGHT : SNAP_COLOR_DARK; // in zen mode make the cross more visible since we don't draw the lines

  const snapWidth = (appState.zenModeEnabled ? SNAP_WIDTH * 1.5 : SNAP_WIDTH) / appState.zoom.value;
  context.save();
  context.translate(appState.scrollX, appState.scrollY);

  for (const snapLine of appState.snapLines) {
    if (snapLine.type === "pointer") {
      context.lineWidth = snapWidth;
      context.strokeStyle = snapColor;
      drawPointerSnapLine(snapLine, context, appState);
    } else if (snapLine.type === "gap") {
      context.lineWidth = snapWidth;
      context.strokeStyle = snapColor;
      drawGapLine(snapLine.points[0], snapLine.points[1], snapLine.direction, appState, context);
    } else if (snapLine.type === "points") {
      context.lineWidth = snapWidth;
      context.strokeStyle = snapColor;
      drawPointsSnapLine(snapLine, context, appState);
    }
  }

  context.restore();
};

const drawPointsSnapLine = (pointSnapLine, context, appState) => {
  if (!appState.zenModeEnabled) {
    const firstPoint = pointSnapLine.points[0];
    const lastPoint = pointSnapLine.points[pointSnapLine.points.length - 1];
    drawLine(firstPoint, lastPoint, context);
  }

  for (const point of pointSnapLine.points) {
    drawCross(point, appState, context);
  }
};

const drawPointerSnapLine = (pointerSnapLine, context, appState) => {
  drawCross(pointerSnapLine.points[0], appState, context);

  if (!appState.zenModeEnabled) {
    drawLine(pointerSnapLine.points[0], pointerSnapLine.points[1], context);
  }
};

const drawCross = ([x, y], appState, context) => {
  context.save();
  const size = (appState.zenModeEnabled ? SNAP_CROSS_SIZE * 1.5 : SNAP_CROSS_SIZE) / appState.zoom.value;
  context.beginPath();
  context.moveTo(x - size, y - size);
  context.lineTo(x + size, y + size);
  context.moveTo(x + size, y - size);
  context.lineTo(x - size, y + size);
  context.stroke();
  context.restore();
};

const drawLine = (from, to, context) => {
  context.beginPath();
  context.lineTo(...from);
  context.lineTo(...to);
  context.stroke();
};

const drawGapLine = (from, to, direction, appState, context) => {
  // a horizontal gap snap line
  // |\u2013\u2013\u2013\u2013\u2013\u2013\u2013||\u2013\u2013\u2013\u2013\u2013\u2013\u2013|
  // ^    ^   ^       ^
  // \\    \\   \\       \\
  // (1)  (2) (3)     (4)
  const FULL = 8 / appState.zoom.value;
  const HALF = FULL / 2;
  const QUARTER = FULL / 4;

  if (direction === "horizontal") {
    const halfPoint = [(from[0] + to[0]) / 2, from[1]]; // (1)

    if (!appState.zenModeEnabled) {
      drawLine([from[0], from[1] - FULL], [from[0], from[1] + FULL], context);
    } // (3)


    drawLine([halfPoint[0] - QUARTER, halfPoint[1] - HALF], [halfPoint[0] - QUARTER, halfPoint[1] + HALF], context);
    drawLine([halfPoint[0] + QUARTER, halfPoint[1] - HALF], [halfPoint[0] + QUARTER, halfPoint[1] + HALF], context);

    if (!appState.zenModeEnabled) {
      // (4)
      drawLine([to[0], to[1] - FULL], [to[0], to[1] + FULL], context); // (2)

      drawLine(from, to, context);
    }
  } else {
    const halfPoint = [from[0], (from[1] + to[1]) / 2]; // (1)

    if (!appState.zenModeEnabled) {
      drawLine([from[0] - FULL, from[1]], [from[0] + FULL, from[1]], context);
    } // (3)


    drawLine([halfPoint[0] - HALF, halfPoint[1] - QUARTER], [halfPoint[0] + HALF, halfPoint[1] - QUARTER], context);
    drawLine([halfPoint[0] - HALF, halfPoint[1] + QUARTER], [halfPoint[0] + HALF, halfPoint[1] + QUARTER], context);

    if (!appState.zenModeEnabled) {
      // (4)
      drawLine([to[0] - FULL, to[1]], [to[0] + FULL, to[1]], context); // (2)

      drawLine(from, to, context);
    }
  }
};//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 6732 characters]
//# sourceURL=webpack-internal:///../../renderer/renderSnaps.ts
`);
              }
            ),
            /***/
            "../../renderer/roundRect.ts": (
              /*!***********************************!*\
                !*** ../../renderer/roundRect.ts ***!
                \***********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "roundRect": () => (/* binding */ roundRect)\n/* harmony export */ });\n/**\n * https://stackoverflow.com/a/3368118\n * Draws a rounded rectangle using the current state of the canvas.\n * @param {CanvasRenderingContext2D} context\n * @param {Number} x The top left x coordinate\n * @param {Number} y The top left y coordinate\n * @param {Number} width The width of the rectangle\n * @param {Number} height The height of the rectangle\n * @param {Number} radius The corner radius\n */\nconst roundRect = (context, x, y, width, height, radius, strokeColor) => {\n  context.beginPath();\n  context.moveTo(x + radius, y);\n  context.lineTo(x + width - radius, y);\n  context.quadraticCurveTo(x + width, y, x + width, y + radius);\n  context.lineTo(x + width, y + height - radius);\n  context.quadraticCurveTo(x + width, y + height, x + width - radius, y + height);\n  context.lineTo(x + radius, y + height);\n  context.quadraticCurveTo(x, y + height, x, y + height - radius);\n  context.lineTo(x, y + radius);\n  context.quadraticCurveTo(x, y, x + radius, y);\n  context.closePath();\n  context.fill();\n\n  if (strokeColor) {\n    context.strokeStyle = strokeColor;\n  }\n\n  context.stroke();\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vcmVuZGVyZXIvcm91bmRSZWN0LnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLDBCQUEwQjtBQUNyQyxXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vcmVuZGVyZXIvcm91bmRSZWN0LnRzP2NhZmIiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMzM2ODExOFxuICogRHJhd3MgYSByb3VuZGVkIHJlY3RhbmdsZSB1c2luZyB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgY2FudmFzLlxuICogQHBhcmFtIHtDYW52YXNSZW5kZXJpbmdDb250ZXh0MkR9IGNvbnRleHRcbiAqIEBwYXJhbSB7TnVtYmVyfSB4IFRoZSB0b3AgbGVmdCB4IGNvb3JkaW5hdGVcbiAqIEBwYXJhbSB7TnVtYmVyfSB5IFRoZSB0b3AgbGVmdCB5IGNvb3JkaW5hdGVcbiAqIEBwYXJhbSB7TnVtYmVyfSB3aWR0aCBUaGUgd2lkdGggb2YgdGhlIHJlY3RhbmdsZVxuICogQHBhcmFtIHtOdW1iZXJ9IGhlaWdodCBUaGUgaGVpZ2h0IG9mIHRoZSByZWN0YW5nbGVcbiAqIEBwYXJhbSB7TnVtYmVyfSByYWRpdXMgVGhlIGNvcm5lciByYWRpdXNcbiAqL1xuZXhwb3J0IGNvbnN0IHJvdW5kUmVjdCA9IChjb250ZXh0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCByYWRpdXMsIHN0cm9rZUNvbG9yKSA9PiB7XG4gIGNvbnRleHQuYmVnaW5QYXRoKCk7XG4gIGNvbnRleHQubW92ZVRvKHggKyByYWRpdXMsIHkpO1xuICBjb250ZXh0LmxpbmVUbyh4ICsgd2lkdGggLSByYWRpdXMsIHkpO1xuICBjb250ZXh0LnF1YWRyYXRpY0N1cnZlVG8oeCArIHdpZHRoLCB5LCB4ICsgd2lkdGgsIHkgKyByYWRpdXMpO1xuICBjb250ZXh0LmxpbmVUbyh4ICsgd2lkdGgsIHkgKyBoZWlnaHQgLSByYWRpdXMpO1xuICBjb250ZXh0LnF1YWRyYXRpY0N1cnZlVG8oeCArIHdpZHRoLCB5ICsgaGVpZ2h0LCB4ICsgd2lkdGggLSByYWRpdXMsIHkgKyBoZWlnaHQpO1xuICBjb250ZXh0LmxpbmVUbyh4ICsgcmFkaXVzLCB5ICsgaGVpZ2h0KTtcbiAgY29udGV4dC5xdWFkcmF0aWNDdXJ2ZVRvKHgsIHkgKyBoZWlnaHQsIHgsIHkgKyBoZWlnaHQgLSByYWRpdXMpO1xuICBjb250ZXh0LmxpbmVUbyh4LCB5ICsgcmFkaXVzKTtcbiAgY29udGV4dC5xdWFkcmF0aWNDdXJ2ZVRvKHgsIHksIHggKyByYWRpdXMsIHkpO1xuICBjb250ZXh0LmNsb3NlUGF0aCgpO1xuICBjb250ZXh0LmZpbGwoKTtcblxuICBpZiAoc3Ryb2tlQ29sb3IpIHtcbiAgICBjb250ZXh0LnN0cm9rZVN0eWxlID0gc3Ryb2tlQ29sb3I7XG4gIH1cblxuICBjb250ZXh0LnN0cm9rZSgpO1xufTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../renderer/roundRect.ts\n');
              }
            ),
            /***/
            "../../scene/Fonts.ts": (
              /*!****************************!*\
                !*** ../../scene/Fonts.ts ***!
                \****************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "Fonts": () => (/* binding */ Fonts)\n/* harmony export */ });\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _element_mutateElement__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../element/mutateElement */ "../../element/mutateElement.ts");\n/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../element/typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _ShapeCache__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./ShapeCache */ "../../scene/ShapeCache.ts");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator["throw"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n\n\n\nclass Fonts {\n  constructor({\n    scene,\n    onSceneUpdated\n  }) {\n    /**\n     * if we load a (new) font, it\'s likely that text elements using it have\n     * already been rendered using a fallback font. Thus, we want invalidate\n     * their shapes and rerender. See #637.\n     *\n     * Invalidates text elements and rerenders scene, provided that at least one\n     * of the supplied fontFaces has not already been processed.\n     */\n    this.onFontsLoaded = fontFaces => {\n      if ( // bail if all fonts with have been processed. We\'re checking just a\n      // subset of the font properties (though it should be enough), so it\n      // can technically bail on a false positive.\n      fontFaces.every(fontFace => {\n        const sig = `${fontFace.family}-${fontFace.style}-${fontFace.weight}`;\n\n        if (Fonts.loadedFontFaces.has(sig)) {\n          return true;\n        }\n\n        Fonts.loadedFontFaces.add(sig);\n        return false;\n      })) {\n        return false;\n      }\n\n      let didUpdate = false;\n      this.scene.mapElements(element => {\n        if ((0,_element__WEBPACK_IMPORTED_MODULE_0__.isTextElement)(element) && !(0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_2__.isBoundToContainer)(element)) {\n          _ShapeCache__WEBPACK_IMPORTED_MODULE_4__.ShapeCache["delete"](element);\n          didUpdate = true;\n          return (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_1__.newElementWith)(element, Object.assign({}, (0,_element__WEBPACK_IMPORTED_MODULE_0__.refreshTextDimensions)(element)));\n        }\n\n        return element;\n      });\n\n      if (didUpdate) {\n        this.onSceneUpdated();\n      }\n    };\n\n    this.loadFontsForElements = elements => __awaiter(this, void 0, void 0, function* () {\n      const fontFaces = yield Promise.all([...new Set(elements.filter(element => (0,_element__WEBPACK_IMPORTED_MODULE_0__.isTextElement)(element)).map(element => element.fontFamily))].map(fontFamily => {\n        var _a, _b, _c, _d;\n\n        const fontString = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.getFontString)({\n          fontFamily,\n          fontSize: 16\n        });\n\n        if (!((_b = (_a = document.fonts) === null || _a === void 0 ? void 0 : _a.check) === null || _b === void 0 ? void 0 : _b.call(_a, fontString))) {\n          return (_d = (_c = document.fonts) === null || _c === void 0 ? void 0 : _c.load) === null || _d === void 0 ? void 0 : _d.call(_c, fontString);\n        }\n\n        return undefined;\n      }));\n      this.onFontsLoaded(fontFaces.flat().filter(Boolean));\n    });\n\n    this.scene = scene;\n    this.onSceneUpdated = onSceneUpdated;\n  }\n\n} // it\'s ok to track fonts across multiple instances only once, so let\'s use\n// a static member to reduce memory footprint\n\nFonts.loadedFontFaces = new Set();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5944 characters]\n//# sourceURL=webpack-internal:///../../scene/Fonts.ts\n');
              }
            ),
            /***/
            "../../scene/Renderer.ts": (
              /*!*******************************!*\
                !*** ../../scene/Renderer.ts ***!
                \*******************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "Renderer": () => (/* binding */ Renderer)
/* harmony export */ });
/* harmony import */ var _element_sizeHelpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../element/sizeHelpers */ "../../element/sizeHelpers.ts");
/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../element/typeChecks */ "../../element/typeChecks.ts");
/* harmony import */ var _renderer_renderScene__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../renderer/renderScene */ "../../renderer/renderScene.ts");
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils */ "../../utils.ts");




class Renderer {
  constructor(scene) {
    this.getRenderableElements = (() => {
      const getVisibleCanvasElements = ({
        elements,
        zoom,
        offsetLeft,
        offsetTop,
        scrollX,
        scrollY,
        height,
        width
      }) => {
        return elements.filter(element => (0,_element_sizeHelpers__WEBPACK_IMPORTED_MODULE_0__.isElementInViewport)(element, width, height, {
          zoom,
          offsetLeft,
          offsetTop,
          scrollX,
          scrollY
        }));
      };

      const getCanvasElements = ({
        editingElement,
        elements,
        pendingImageElementId
      }) => {
        return elements.filter(element => {
          if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isImageElement)(element)) {
            if ( // => not placed on canvas yet (but in elements array)
            pendingImageElementId === element.id) {
              return false;
            }
          } // we don't want to render text element that's being currently edited
          // (it's rendered on remote only)


          return !editingElement || editingElement.type !== "text" || element.id !== editingElement.id;
        });
      };

      return (0,_utils__WEBPACK_IMPORTED_MODULE_3__.memoize)(({
        zoom,
        offsetLeft,
        offsetTop,
        scrollX,
        scrollY,
        height,
        width,
        editingElement,
        pendingImageElementId,
        // unused but serves we cache on it to invalidate elements if they
        // get mutated
        versionNonce: _versionNonce
      }) => {
        const elements = this.scene.getNonDeletedElements();
        const canvasElements = getCanvasElements({
          elements,
          editingElement,
          pendingImageElementId
        });
        const visibleElements = getVisibleCanvasElements({
          elements: canvasElements,
          zoom,
          offsetLeft,
          offsetTop,
          scrollX,
          scrollY,
          height,
          width
        });
        return {
          canvasElements,
          visibleElements
        };
      });
    })();

    this.scene = scene;
  } // NOTE Doesn't destroy everything (scene, rc, etc.) because it may not be
  // safe to break TS contract here (for upstream cases)


  destroy() {
    (0,_renderer_renderScene__WEBPACK_IMPORTED_MODULE_2__.cancelRender)();
    this.getRenderableElements.clear();
  }

}//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4360 characters]
//# sourceURL=webpack-internal:///../../scene/Renderer.ts
`);
              }
            ),
            /***/
            "../../scene/Scene.ts": (
              /*!****************************!*\
                !*** ../../scene/Scene.ts ***!
                \****************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../element/typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var _selection__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./selection */ "../../scene/selection.ts");\n/* harmony import */ var _random__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../random */ "../../random.ts");\n\n\n\n\n\nconst hashSelectionOpts = opts => {\n  const keys = ["includeBoundTextElement", "includeElementsInFrames"];\n  let hash = "";\n\n  for (const key of keys) {\n    hash += `${key}:${opts[key] ? "1" : "0"}`;\n  }\n\n  return hash;\n};\n\nconst isIdKey = elementKey => {\n  if (typeof elementKey === "string") {\n    return true;\n  }\n\n  return false;\n};\n\nclass Scene {\n  constructor() {\n    // ---------------------------------------------------------------------------\n    // static methods/props\n    // ---------------------------------------------------------------------------\n    // ---------------------------------------------------------------------------\n    // instance methods/props\n    // ---------------------------------------------------------------------------\n    this.callbacks = new Set();\n    this.nonDeletedElements = [];\n    this.elements = [];\n    this.nonDeletedFrames = [];\n    this.frames = [];\n    this.elementsMap = new Map();\n    this.selectedElementsCache = {\n      selectedElementIds: null,\n      elements: null,\n      cache: new Map()\n    };\n\n    this.addNewElement = element => {\n      if (element.frameId) {\n        this.insertElementAtIndex(element, this.getElementIndex(element.frameId));\n      } else {\n        this.replaceAllElements([...this.elements, element]);\n      }\n    };\n  }\n\n  static mapElementToScene(elementKey, scene,\n  /**\n   * needed because of frame exporting hack.\n   * elementId:Scene mapping will be removed completely, soon.\n   */\n  mapElementIds = true) {\n    if (isIdKey(elementKey)) {\n      if (!mapElementIds) {\n        return;\n      } // for cases where we don\'t have access to the element object\n      // (e.g. restore serialized appState with id references)\n\n\n      this.sceneMapById.set(elementKey, scene);\n    } else {\n      this.sceneMapByElement.set(elementKey, scene);\n\n      if (!mapElementIds) {\n        // if mapping element objects, also cache the id string when later\n        // looking up by id alone\n        this.sceneMapById.set(elementKey.id, scene);\n      }\n    }\n  }\n\n  static getScene(elementKey) {\n    if (isIdKey(elementKey)) {\n      return this.sceneMapById.get(elementKey) || null;\n    }\n\n    return this.sceneMapByElement.get(elementKey) || null;\n  }\n\n  getElementsIncludingDeleted() {\n    return this.elements;\n  }\n\n  getNonDeletedElements() {\n    return this.nonDeletedElements;\n  }\n\n  getFramesIncludingDeleted() {\n    return this.frames;\n  }\n\n  getSelectedElements(opts) {\n    const hash = hashSelectionOpts(opts);\n    const elements = (opts === null || opts === void 0 ? void 0 : opts.elements) || this.nonDeletedElements;\n\n    if (this.selectedElementsCache.elements === elements && this.selectedElementsCache.selectedElementIds === opts.selectedElementIds) {\n      const cached = this.selectedElementsCache.cache.get(hash);\n\n      if (cached) {\n        return cached;\n      }\n    } else if ((opts === null || opts === void 0 ? void 0 : opts.elements) == null) {\n      // if we\'re operating on latest scene elements and the cache is not\n      //  storing the latest elements, clear the cache\n      this.selectedElementsCache.cache.clear();\n    }\n\n    const selectedElements = (0,_selection__WEBPACK_IMPORTED_MODULE_2__.getSelectedElements)(elements, {\n      selectedElementIds: opts.selectedElementIds\n    }, opts); // cache only if we\'re not using custom elements\n\n    if ((opts === null || opts === void 0 ? void 0 : opts.elements) == null) {\n      this.selectedElementsCache.selectedElementIds = opts.selectedElementIds;\n      this.selectedElementsCache.elements = this.nonDeletedElements;\n      this.selectedElementsCache.cache.set(hash, selectedElements);\n    }\n\n    return selectedElements;\n  }\n\n  getNonDeletedFrames() {\n    return this.nonDeletedFrames;\n  }\n\n  getElement(id) {\n    return this.elementsMap.get(id) || null;\n  }\n\n  getVersionNonce() {\n    return this.versionNonce;\n  }\n\n  getNonDeletedElement(id) {\n    const element = this.getElement(id);\n\n    if (element && (0,_element__WEBPACK_IMPORTED_MODULE_0__.isNonDeletedElement)(element)) {\n      return element;\n    }\n\n    return null;\n  }\n  /**\n   * A utility method to help with updating all scene elements, with the added\n   * performance optimization of not renewing the array if no change is made.\n   *\n   * Maps all current excalidraw elements, invoking the callback for each\n   * element. The callback should either return a new mapped element, or the\n   * original element if no changes are made. If no changes are made to any\n   * element, this results in a no-op. Otherwise, the newly mapped elements\n   * are set as the next scene\'s elements.\n   *\n   * @returns whether a change was made\n   */\n\n\n  mapElements(iteratee) {\n    let didChange = false;\n    const newElements = this.elements.map(element => {\n      const nextElement = iteratee(element);\n\n      if (nextElement !== element) {\n        didChange = true;\n      }\n\n      return nextElement;\n    });\n\n    if (didChange) {\n      this.replaceAllElements(newElements);\n    }\n\n    return didChange;\n  }\n\n  replaceAllElements(nextElements, mapElementIds = true) {\n    this.elements = nextElements;\n    const nextFrames = [];\n    this.elementsMap.clear();\n    nextElements.forEach(element => {\n      if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isFrameElement)(element)) {\n        nextFrames.push(element);\n      }\n\n      this.elementsMap.set(element.id, element);\n      Scene.mapElementToScene(element, this);\n    });\n    this.nonDeletedElements = (0,_element__WEBPACK_IMPORTED_MODULE_0__.getNonDeletedElements)(this.elements);\n    this.frames = nextFrames;\n    this.nonDeletedFrames = (0,_element__WEBPACK_IMPORTED_MODULE_0__.getNonDeletedFrames)(this.frames);\n    this.informMutation();\n  }\n\n  informMutation() {\n    this.versionNonce = (0,_random__WEBPACK_IMPORTED_MODULE_3__.randomInteger)();\n\n    for (const callback of Array.from(this.callbacks)) {\n      callback();\n    }\n  }\n\n  addCallback(cb) {\n    if (this.callbacks.has(cb)) {\n      throw new Error();\n    }\n\n    this.callbacks.add(cb);\n    return () => {\n      if (!this.callbacks.has(cb)) {\n        throw new Error();\n      }\n\n      this.callbacks.delete(cb);\n    };\n  }\n\n  destroy() {\n    this.nonDeletedElements = [];\n    this.elements = [];\n    this.nonDeletedFrames = [];\n    this.frames = [];\n    this.elementsMap.clear();\n    this.selectedElementsCache.selectedElementIds = null;\n    this.selectedElementsCache.elements = null;\n    this.selectedElementsCache.cache.clear();\n    Scene.sceneMapById.forEach((scene, elementKey) => {\n      if (scene === this) {\n        Scene.sceneMapById.delete(elementKey);\n      }\n    }); // done not for memory leaks, but to guard against possible late fires\n    // (I guess?)\n\n    this.callbacks.clear();\n  }\n\n  insertElementAtIndex(element, index) {\n    if (!Number.isFinite(index) || index < 0) {\n      throw new Error("insertElementAtIndex can only be called with index >= 0");\n    }\n\n    const nextElements = [...this.elements.slice(0, index), element, ...this.elements.slice(index)];\n    this.replaceAllElements(nextElements);\n  }\n\n  insertElementsAtIndex(elements, index) {\n    if (!Number.isFinite(index) || index < 0) {\n      throw new Error("insertElementAtIndex can only be called with index >= 0");\n    }\n\n    const nextElements = [...this.elements.slice(0, index), ...elements, ...this.elements.slice(index)];\n    this.replaceAllElements(nextElements);\n  }\n\n  getElementIndex(elementId) {\n    return this.elements.findIndex(element => element.id === elementId);\n  }\n\n}\n\nScene.sceneMapByElement = new WeakMap();\nScene.sceneMapById = new Map();\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Scene);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 12464 characters]\n//# sourceURL=webpack-internal:///../../scene/Scene.ts\n');
              }
            ),
            /***/
            "../../scene/Shape.ts": (
              /*!****************************!*\
                !*** ../../scene/Shape.ts ***!
                \****************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "_generateElementShape": () => (/* binding */ _generateElementShape),\n/* harmony export */   "generateRoughOptions": () => (/* binding */ generateRoughOptions)\n/* harmony export */ });\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../math */ "../../math.ts");\n/* harmony import */ var _renderer_renderElement__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../renderer/renderElement */ "../../renderer/renderElement.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var points_on_curve__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! points-on-curve */ "../../../node_modules/points-on-curve/lib/index.js");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../element/typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var _comparisons__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./comparisons */ "../../scene/comparisons.ts");\n\n\n\n\n\n\n\n\n\nconst getDashArrayDashed = strokeWidth => [8, 8 + strokeWidth];\n\nconst getDashArrayDotted = strokeWidth => [1.5, 6 + strokeWidth];\n\nfunction adjustRoughness(element) {\n  const roughness = element.roughness;\n  const maxSize = Math.max(element.width, element.height);\n  const minSize = Math.min(element.width, element.height); // don\'t reduce roughness if\n\n  if ( // both sides relatively big\n  minSize >= 20 && maxSize >= 50 || // is round & both sides above 15px\n  minSize >= 15 && !!element.roundness && (0,_comparisons__WEBPACK_IMPORTED_MODULE_7__.canChangeRoundness)(element.type) || // relatively long linear element\n  (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_6__.isLinearElement)(element) && maxSize >= 50) {\n    return roughness;\n  }\n\n  return Math.min(roughness / (maxSize < 10 ? 3 : 2), 2.5);\n}\n\nconst generateRoughOptions = (element, continuousPath = false) => {\n  const options = {\n    seed: element.seed,\n    strokeLineDash: element.strokeStyle === "dashed" ? getDashArrayDashed(element.strokeWidth) : element.strokeStyle === "dotted" ? getDashArrayDotted(element.strokeWidth) : undefined,\n    // for non-solid strokes, disable multiStroke because it tends to make\n    // dashes/dots overlay each other\n    disableMultiStroke: element.strokeStyle !== "solid",\n    // for non-solid strokes, increase the width a bit to make it visually\n    // similar to solid strokes, because we\'re also disabling multiStroke\n    strokeWidth: element.strokeStyle !== "solid" ? element.strokeWidth + 0.5 : element.strokeWidth,\n    // when increasing strokeWidth, we must explicitly set fillWeight and\n    // hachureGap because if not specified, roughjs uses strokeWidth to\n    // calculate them (and we don\'t want the fills to be modified)\n    fillWeight: element.strokeWidth / 2,\n    hachureGap: element.strokeWidth * 4,\n    roughness: adjustRoughness(element),\n    stroke: element.strokeColor,\n    preserveVertices: continuousPath || element.roughness < _constants__WEBPACK_IMPORTED_MODULE_5__.ROUGHNESS.cartoonist\n  };\n\n  switch (element.type) {\n    case "rectangle":\n    case "embeddable":\n    case "diamond":\n    case "ellipse":\n      {\n        options.fillStyle = element.fillStyle;\n        options.fill = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.isTransparent)(element.backgroundColor) ? undefined : element.backgroundColor;\n\n        if (element.type === "ellipse") {\n          options.curveFitting = 1;\n        }\n\n        return options;\n      }\n\n    case "line":\n    case "freedraw":\n      {\n        if ((0,_math__WEBPACK_IMPORTED_MODULE_1__.isPathALoop)(element.points)) {\n          options.fillStyle = element.fillStyle;\n          options.fill = element.backgroundColor === "transparent" ? undefined : element.backgroundColor;\n        }\n\n        return options;\n      }\n\n    case "arrow":\n      return options;\n\n    default:\n      {\n        throw new Error(`Unimplemented type ${element.type}`);\n      }\n  }\n};\n\nconst modifyEmbeddableForRoughOptions = (element, isExporting) => {\n  if (element.type === "embeddable" && (isExporting || !element.validated) && (0,_utils__WEBPACK_IMPORTED_MODULE_3__.isTransparent)(element.backgroundColor) && (0,_utils__WEBPACK_IMPORTED_MODULE_3__.isTransparent)(element.strokeColor)) {\n    return Object.assign(Object.assign({}, element), {\n      roughness: 0,\n      backgroundColor: "#d3d3d3",\n      fillStyle: "solid"\n    });\n  }\n\n  return element;\n};\n/**\n * Generates the roughjs shape for given element.\n *\n * Low-level. Use `ShapeCache.generateElementShape` instead.\n *\n * @private\n */\n\n\nconst _generateElementShape = (element, generator, isExporting = false) => {\n  switch (element.type) {\n    case "rectangle":\n    case "embeddable":\n      {\n        let shape; // this is for rendering the stroke/bg of the embeddable, especially\n        // when the src url is not set\n\n        if (element.roundness) {\n          const w = element.width;\n          const h = element.height;\n          const r = (0,_math__WEBPACK_IMPORTED_MODULE_1__.getCornerRadius)(Math.min(w, h), element);\n          shape = generator.path(`M ${r} 0 L ${w - r} 0 Q ${w} 0, ${w} ${r} L ${w} ${h - r} Q ${w} ${h}, ${w - r} ${h} L ${r} ${h} Q 0 ${h}, 0 ${h - r} L 0 ${r} Q 0 0, ${r} 0`, generateRoughOptions(modifyEmbeddableForRoughOptions(element, isExporting), true));\n        } else {\n          shape = generator.rectangle(0, 0, element.width, element.height, generateRoughOptions(modifyEmbeddableForRoughOptions(element, isExporting), false));\n        }\n\n        return shape;\n      }\n\n    case "diamond":\n      {\n        let shape;\n        const [topX, topY, rightX, rightY, bottomX, bottomY, leftX, leftY] = (0,_element__WEBPACK_IMPORTED_MODULE_0__.getDiamondPoints)(element);\n\n        if (element.roundness) {\n          const verticalRadius = (0,_math__WEBPACK_IMPORTED_MODULE_1__.getCornerRadius)(Math.abs(topX - leftX), element);\n          const horizontalRadius = (0,_math__WEBPACK_IMPORTED_MODULE_1__.getCornerRadius)(Math.abs(rightY - topY), element);\n          shape = generator.path(`M ${topX + verticalRadius} ${topY + horizontalRadius} L ${rightX - verticalRadius} ${rightY - horizontalRadius}\n            C ${rightX} ${rightY}, ${rightX} ${rightY}, ${rightX - verticalRadius} ${rightY + horizontalRadius}\n            L ${bottomX + verticalRadius} ${bottomY - horizontalRadius}\n            C ${bottomX} ${bottomY}, ${bottomX} ${bottomY}, ${bottomX - verticalRadius} ${bottomY - horizontalRadius}\n            L ${leftX + verticalRadius} ${leftY + horizontalRadius}\n            C ${leftX} ${leftY}, ${leftX} ${leftY}, ${leftX + verticalRadius} ${leftY - horizontalRadius}\n            L ${topX - verticalRadius} ${topY + horizontalRadius}\n            C ${topX} ${topY}, ${topX} ${topY}, ${topX + verticalRadius} ${topY + horizontalRadius}`, generateRoughOptions(element, true));\n        } else {\n          shape = generator.polygon([[topX, topY], [rightX, rightY], [bottomX, bottomY], [leftX, leftY]], generateRoughOptions(element));\n        }\n\n        return shape;\n      }\n\n    case "ellipse":\n      {\n        const shape = generator.ellipse(element.width / 2, element.height / 2, element.width, element.height, generateRoughOptions(element));\n        return shape;\n      }\n\n    case "line":\n    case "arrow":\n      {\n        let shape;\n        const options = generateRoughOptions(element); // points array can be empty in the beginning, so it is important to add\n        // initial position to it\n\n        const points = element.points.length ? element.points : [[0, 0]]; // curve is always the first element\n        // this simplifies finding the curve for an element\n\n        if (!element.roundness) {\n          if (options.fill) {\n            shape = [generator.polygon(points, options)];\n          } else {\n            shape = [generator.linearPath(points, options)];\n          }\n        } else {\n          shape = [generator.curve(points, options)];\n        } // add lines only in arrow\n\n\n        if (element.type === "arrow") {\n          const {\n            startArrowhead = null,\n            endArrowhead = "arrow"\n          } = element;\n\n          const getArrowheadShapes = (element, shape, position, arrowhead) => {\n            const arrowheadPoints = (0,_element__WEBPACK_IMPORTED_MODULE_0__.getArrowheadPoints)(element, shape, position, arrowhead);\n\n            if (arrowheadPoints === null) {\n              return [];\n            } // Other arrowheads here...\n\n\n            if (arrowhead === "dot") {\n              const [x, y, r] = arrowheadPoints;\n              return [generator.circle(x, y, r, Object.assign(Object.assign({}, options), {\n                fill: element.strokeColor,\n                fillStyle: "solid",\n                stroke: "none"\n              }))];\n            }\n\n            if (arrowhead === "triangle") {\n              const [x, y, x2, y2, x3, y3] = arrowheadPoints; // always use solid stroke for triangle arrowhead\n\n              delete options.strokeLineDash;\n              return [generator.polygon([[x, y], [x2, y2], [x3, y3], [x, y]], Object.assign(Object.assign({}, options), {\n                fill: element.strokeColor,\n                fillStyle: "solid"\n              }))];\n            } // Arrow arrowheads\n\n\n            const [x2, y2, x3, y3, x4, y4] = arrowheadPoints;\n\n            if (element.strokeStyle === "dotted") {\n              // for dotted arrows caps, reduce gap to make it more legible\n              const dash = getDashArrayDotted(element.strokeWidth - 1);\n              options.strokeLineDash = [dash[0], dash[1] - 1];\n            } else {\n              // for solid/dashed, keep solid arrow cap\n              delete options.strokeLineDash;\n            }\n\n            return [generator.line(x3, y3, x2, y2, options), generator.line(x4, y4, x2, y2, options)];\n          };\n\n          if (startArrowhead !== null) {\n            const shapes = getArrowheadShapes(element, shape, "start", startArrowhead);\n            shape.push(...shapes);\n          }\n\n          if (endArrowhead !== null) {\n            if (endArrowhead === undefined) {// Hey, we have an old arrow here!\n            }\n\n            const shapes = getArrowheadShapes(element, shape, "end", endArrowhead);\n            shape.push(...shapes);\n          }\n        }\n\n        return shape;\n      }\n\n    case "freedraw":\n      {\n        let shape;\n        (0,_renderer_renderElement__WEBPACK_IMPORTED_MODULE_2__.generateFreeDrawShape)(element);\n\n        if ((0,_math__WEBPACK_IMPORTED_MODULE_1__.isPathALoop)(element.points)) {\n          // generate rough polygon to fill freedraw shape\n          const simplifiedPoints = (0,points_on_curve__WEBPACK_IMPORTED_MODULE_4__.simplify)(element.points, 0.75);\n          shape = generator.curve(simplifiedPoints, Object.assign(Object.assign({}, generateRoughOptions(element)), {\n            stroke: "none"\n          }));\n        } else {\n          shape = null;\n        }\n\n        return shape;\n      }\n\n    case "frame":\n    case "text":\n    case "image":\n      {\n        const shape = null; // we return (and cache) `null` to make sure we don\'t regenerate\n        // `element.canvas` on rerenders\n\n        return shape;\n      }\n\n    default:\n      {\n        (0,_utils__WEBPACK_IMPORTED_MODULE_3__.assertNever)(element, `generateElementShape(): Unimplemented type ${element === null || element === void 0 ? void 0 : element.type}`);\n        return null;\n      }\n  }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 17044 characters]\n//# sourceURL=webpack-internal:///../../scene/Shape.ts\n');
              }
            ),
            /***/
            "../../scene/ShapeCache.ts": (
              /*!*********************************!*\
                !*** ../../scene/ShapeCache.ts ***!
                \*********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "ShapeCache": () => (/* binding */ ShapeCache)\n/* harmony export */ });\n/* harmony import */ var roughjs_bin_generator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! roughjs/bin/generator */ "../../../node_modules/roughjs/bin/generator.js");\n/* harmony import */ var _renderer_renderElement__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../renderer/renderElement */ "../../renderer/renderElement.ts");\n/* harmony import */ var _Shape__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Shape */ "../../scene/Shape.ts");\n\n\n\nclass ShapeCache {}\nShapeCache.rg = new roughjs_bin_generator__WEBPACK_IMPORTED_MODULE_0__.RoughGenerator();\nShapeCache.cache = new WeakMap();\n/**\n * Retrieves shape from cache if available. Use this only if shape\n * is optional and you have a fallback in case it\'s not cached.\n */\n\nShapeCache.get = element => {\n  return ShapeCache.cache.get(element);\n};\n\nShapeCache.set = (element, shape) => ShapeCache.cache.set(element, shape);\n\nShapeCache.delete = element => ShapeCache.cache.delete(element);\n\nShapeCache.destroy = () => {\n  ShapeCache.cache = new WeakMap();\n};\n/**\n * Generates & caches shape for element if not already cached, otherwise\n * returns cached shape.\n */\n\n\nShapeCache.generateElementShape = (element, isExporting = false) => {\n  // when exporting, always regenerated to guarantee the latest shape\n  const cachedShape = isExporting ? undefined : ShapeCache.get(element); // `null` indicates no rc shape applicable for this element type,\n  // but it\'s considered a valid cache value (= do not regenerate)\n\n  if (cachedShape !== undefined) {\n    return cachedShape;\n  }\n\n  _renderer_renderElement__WEBPACK_IMPORTED_MODULE_1__.elementWithCanvasCache["delete"](element);\n\n  const shape = (0,_Shape__WEBPACK_IMPORTED_MODULE_2__._generateElementShape)(element, ShapeCache.rg, isExporting);\n\n  ShapeCache.cache.set(element, shape);\n  return shape;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vc2NlbmUvU2hhcGVDYWNoZS50cy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQXVEO0FBQ1k7QUFDbkI7QUFDekM7QUFDUCxvQkFBb0IsaUVBQWM7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQSx5RUFBeUU7QUFDekU7O0FBRUE7QUFDQTtBQUNBOztBQUVBLEVBQUUscUZBQTZCOztBQUUvQixnQkFBZ0IsNkRBQXFCOztBQUVyQztBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vc2NlbmUvU2hhcGVDYWNoZS50cz9hYWRjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJvdWdoR2VuZXJhdG9yIH0gZnJvbSBcInJvdWdoanMvYmluL2dlbmVyYXRvclwiO1xuaW1wb3J0IHsgZWxlbWVudFdpdGhDYW52YXNDYWNoZSB9IGZyb20gXCIuLi9yZW5kZXJlci9yZW5kZXJFbGVtZW50XCI7XG5pbXBvcnQgeyBfZ2VuZXJhdGVFbGVtZW50U2hhcGUgfSBmcm9tIFwiLi9TaGFwZVwiO1xuZXhwb3J0IGNsYXNzIFNoYXBlQ2FjaGUge31cblNoYXBlQ2FjaGUucmcgPSBuZXcgUm91Z2hHZW5lcmF0b3IoKTtcblNoYXBlQ2FjaGUuY2FjaGUgPSBuZXcgV2Vha01hcCgpO1xuLyoqXG4gKiBSZXRyaWV2ZXMgc2hhcGUgZnJvbSBjYWNoZSBpZiBhdmFpbGFibGUuIFVzZSB0aGlzIG9ubHkgaWYgc2hhcGVcbiAqIGlzIG9wdGlvbmFsIGFuZCB5b3UgaGF2ZSBhIGZhbGxiYWNrIGluIGNhc2UgaXQncyBub3QgY2FjaGVkLlxuICovXG5cblNoYXBlQ2FjaGUuZ2V0ID0gZWxlbWVudCA9PiB7XG4gIHJldHVybiBTaGFwZUNhY2hlLmNhY2hlLmdldChlbGVtZW50KTtcbn07XG5cblNoYXBlQ2FjaGUuc2V0ID0gKGVsZW1lbnQsIHNoYXBlKSA9PiBTaGFwZUNhY2hlLmNhY2hlLnNldChlbGVtZW50LCBzaGFwZSk7XG5cblNoYXBlQ2FjaGUuZGVsZXRlID0gZWxlbWVudCA9PiBTaGFwZUNhY2hlLmNhY2hlLmRlbGV0ZShlbGVtZW50KTtcblxuU2hhcGVDYWNoZS5kZXN0cm95ID0gKCkgPT4ge1xuICBTaGFwZUNhY2hlLmNhY2hlID0gbmV3IFdlYWtNYXAoKTtcbn07XG4vKipcbiAqIEdlbmVyYXRlcyAmIGNhY2hlcyBzaGFwZSBmb3IgZWxlbWVudCBpZiBub3QgYWxyZWFkeSBjYWNoZWQsIG90aGVyd2lzZVxuICogcmV0dXJucyBjYWNoZWQgc2hhcGUuXG4gKi9cblxuXG5TaGFwZUNhY2hlLmdlbmVyYXRlRWxlbWVudFNoYXBlID0gKGVsZW1lbnQsIGlzRXhwb3J0aW5nID0gZmFsc2UpID0+IHtcbiAgLy8gd2hlbiBleHBvcnRpbmcsIGFsd2F5cyByZWdlbmVyYXRlZCB0byBndWFyYW50ZWUgdGhlIGxhdGVzdCBzaGFwZVxuICBjb25zdCBjYWNoZWRTaGFwZSA9IGlzRXhwb3J0aW5nID8gdW5kZWZpbmVkIDogU2hhcGVDYWNoZS5nZXQoZWxlbWVudCk7IC8vIGBudWxsYCBpbmRpY2F0ZXMgbm8gcmMgc2hhcGUgYXBwbGljYWJsZSBmb3IgdGhpcyBlbGVtZW50IHR5cGUsXG4gIC8vIGJ1dCBpdCdzIGNvbnNpZGVyZWQgYSB2YWxpZCBjYWNoZSB2YWx1ZSAoPSBkbyBub3QgcmVnZW5lcmF0ZSlcblxuICBpZiAoY2FjaGVkU2hhcGUgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBjYWNoZWRTaGFwZTtcbiAgfVxuXG4gIGVsZW1lbnRXaXRoQ2FudmFzQ2FjaGUuZGVsZXRlKGVsZW1lbnQpO1xuXG4gIGNvbnN0IHNoYXBlID0gX2dlbmVyYXRlRWxlbWVudFNoYXBlKGVsZW1lbnQsIFNoYXBlQ2FjaGUucmcsIGlzRXhwb3J0aW5nKTtcblxuICBTaGFwZUNhY2hlLmNhY2hlLnNldChlbGVtZW50LCBzaGFwZSk7XG4gIHJldHVybiBzaGFwZTtcbn07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../scene/ShapeCache.ts\n');
              }
            ),
            /***/
            "../../scene/comparisons.ts": (
              /*!**********************************!*\
                !*** ../../scene/comparisons.ts ***!
                \**********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "canChangeRoundness": () => (/* binding */ canChangeRoundness),\n/* harmony export */   "canHaveArrowheads": () => (/* binding */ canHaveArrowheads),\n/* harmony export */   "getElementAtPosition": () => (/* binding */ getElementAtPosition),\n/* harmony export */   "getElementsAtPosition": () => (/* binding */ getElementsAtPosition),\n/* harmony export */   "hasBackground": () => (/* binding */ hasBackground),\n/* harmony export */   "hasStrokeColor": () => (/* binding */ hasStrokeColor),\n/* harmony export */   "hasStrokeStyle": () => (/* binding */ hasStrokeStyle),\n/* harmony export */   "hasStrokeWidth": () => (/* binding */ hasStrokeWidth)\n/* harmony export */ });\n/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../element/typeChecks */ "../../element/typeChecks.ts");\n\nconst hasBackground = type => type === "rectangle" || type === "embeddable" || type === "ellipse" || type === "diamond" || type === "line" || type === "freedraw";\nconst hasStrokeColor = type => type !== "image" && type !== "frame";\nconst hasStrokeWidth = type => type === "rectangle" || type === "embeddable" || type === "ellipse" || type === "diamond" || type === "freedraw" || type === "arrow" || type === "line";\nconst hasStrokeStyle = type => type === "rectangle" || type === "embeddable" || type === "ellipse" || type === "diamond" || type === "arrow" || type === "line";\nconst canChangeRoundness = type => type === "rectangle" || type === "embeddable" || type === "arrow" || type === "line" || type === "diamond";\nconst canHaveArrowheads = type => type === "arrow";\nconst getElementAtPosition = (elements, isAtPositionFn) => {\n  let hitElement = null; // We need to to hit testing from front (end of the array) to back (beginning of the array)\n  // because array is ordered from lower z-index to highest and we want element z-index\n  // with higher z-index\n\n  for (let index = elements.length - 1; index >= 0; --index) {\n    const element = elements[index];\n\n    if (element.isDeleted) {\n      continue;\n    }\n\n    if (isAtPositionFn(element)) {\n      hitElement = element;\n      break;\n    }\n  }\n\n  return hitElement;\n};\nconst getElementsAtPosition = (elements, isAtPositionFn) => {\n  const embeddables = []; // The parameter elements comes ordered from lower z-index to higher.\n  // We want to preserve that order on the returned array.\n  // Exception being embeddables which should be on top of everything else in\n  // terms of hit testing.\n\n  const elsAtPos = elements.filter(element => {\n    const hit = !element.isDeleted && isAtPositionFn(element);\n\n    if (hit) {\n      if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_0__.isEmbeddableElement)(element)) {\n        embeddables.push(element);\n        return false;\n      }\n\n      return true;\n    }\n\n    return false;\n  });\n  return elsAtPos.concat(embeddables);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vc2NlbmUvY29tcGFyaXNvbnMudHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQTREO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ1AseUJBQXlCO0FBQ3pCO0FBQ0E7O0FBRUEsd0NBQXdDLFlBQVk7QUFDcEQ7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNPO0FBQ1AsMEJBQTBCO0FBQzFCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsVUFBVSx3RUFBbUI7QUFDN0I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9zY2VuZS9jb21wYXJpc29ucy50cz82MTA0Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzRW1iZWRkYWJsZUVsZW1lbnQgfSBmcm9tIFwiLi4vZWxlbWVudC90eXBlQ2hlY2tzXCI7XG5leHBvcnQgY29uc3QgaGFzQmFja2dyb3VuZCA9IHR5cGUgPT4gdHlwZSA9PT0gXCJyZWN0YW5nbGVcIiB8fCB0eXBlID09PSBcImVtYmVkZGFibGVcIiB8fCB0eXBlID09PSBcImVsbGlwc2VcIiB8fCB0eXBlID09PSBcImRpYW1vbmRcIiB8fCB0eXBlID09PSBcImxpbmVcIiB8fCB0eXBlID09PSBcImZyZWVkcmF3XCI7XG5leHBvcnQgY29uc3QgaGFzU3Ryb2tlQ29sb3IgPSB0eXBlID0+IHR5cGUgIT09IFwiaW1hZ2VcIiAmJiB0eXBlICE9PSBcImZyYW1lXCI7XG5leHBvcnQgY29uc3QgaGFzU3Ryb2tlV2lkdGggPSB0eXBlID0+IHR5cGUgPT09IFwicmVjdGFuZ2xlXCIgfHwgdHlwZSA9PT0gXCJlbWJlZGRhYmxlXCIgfHwgdHlwZSA9PT0gXCJlbGxpcHNlXCIgfHwgdHlwZSA9PT0gXCJkaWFtb25kXCIgfHwgdHlwZSA9PT0gXCJmcmVlZHJhd1wiIHx8IHR5cGUgPT09IFwiYXJyb3dcIiB8fCB0eXBlID09PSBcImxpbmVcIjtcbmV4cG9ydCBjb25zdCBoYXNTdHJva2VTdHlsZSA9IHR5cGUgPT4gdHlwZSA9PT0gXCJyZWN0YW5nbGVcIiB8fCB0eXBlID09PSBcImVtYmVkZGFibGVcIiB8fCB0eXBlID09PSBcImVsbGlwc2VcIiB8fCB0eXBlID09PSBcImRpYW1vbmRcIiB8fCB0eXBlID09PSBcImFycm93XCIgfHwgdHlwZSA9PT0gXCJsaW5lXCI7XG5leHBvcnQgY29uc3QgY2FuQ2hhbmdlUm91bmRuZXNzID0gdHlwZSA9PiB0eXBlID09PSBcInJlY3RhbmdsZVwiIHx8IHR5cGUgPT09IFwiZW1iZWRkYWJsZVwiIHx8IHR5cGUgPT09IFwiYXJyb3dcIiB8fCB0eXBlID09PSBcImxpbmVcIiB8fCB0eXBlID09PSBcImRpYW1vbmRcIjtcbmV4cG9ydCBjb25zdCBjYW5IYXZlQXJyb3doZWFkcyA9IHR5cGUgPT4gdHlwZSA9PT0gXCJhcnJvd1wiO1xuZXhwb3J0IGNvbnN0IGdldEVsZW1lbnRBdFBvc2l0aW9uID0gKGVsZW1lbnRzLCBpc0F0UG9zaXRpb25GbikgPT4ge1xuICBsZXQgaGl0RWxlbWVudCA9IG51bGw7IC8vIFdlIG5lZWQgdG8gdG8gaGl0IHRlc3RpbmcgZnJvbSBmcm9udCAoZW5kIG9mIHRoZSBhcnJheSkgdG8gYmFjayAoYmVnaW5uaW5nIG9mIHRoZSBhcnJheSlcbiAgLy8gYmVjYXVzZSBhcnJheSBpcyBvcmRlcmVkIGZyb20gbG93ZXIgei1pbmRleCB0byBoaWdoZXN0IGFuZCB3ZSB3YW50IGVsZW1lbnQgei1pbmRleFxuICAvLyB3aXRoIGhpZ2hlciB6LWluZGV4XG5cbiAgZm9yIChsZXQgaW5kZXggPSBlbGVtZW50cy5sZW5ndGggLSAxOyBpbmRleCA+PSAwOyAtLWluZGV4KSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGVsZW1lbnRzW2luZGV4XTtcblxuICAgIGlmIChlbGVtZW50LmlzRGVsZXRlZCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKGlzQXRQb3NpdGlvbkZuKGVsZW1lbnQpKSB7XG4gICAgICBoaXRFbGVtZW50ID0gZWxlbWVudDtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBoaXRFbGVtZW50O1xufTtcbmV4cG9ydCBjb25zdCBnZXRFbGVtZW50c0F0UG9zaXRpb24gPSAoZWxlbWVudHMsIGlzQXRQb3NpdGlvbkZuKSA9PiB7XG4gIGNvbnN0IGVtYmVkZGFibGVzID0gW107IC8vIFRoZSBwYXJhbWV0ZXIgZWxlbWVudHMgY29tZXMgb3JkZXJlZCBmcm9tIGxvd2VyIHotaW5kZXggdG8gaGlnaGVyLlxuICAvLyBXZSB3YW50IHRvIHByZXNlcnZlIHRoYXQgb3JkZXIgb24gdGhlIHJldHVybmVkIGFycmF5LlxuICAvLyBFeGNlcHRpb24gYmVpbmcgZW1iZWRkYWJsZXMgd2hpY2ggc2hvdWxkIGJlIG9uIHRvcCBvZiBldmVyeXRoaW5nIGVsc2UgaW5cbiAgLy8gdGVybXMgb2YgaGl0IHRlc3RpbmcuXG5cbiAgY29uc3QgZWxzQXRQb3MgPSBlbGVtZW50cy5maWx0ZXIoZWxlbWVudCA9PiB7XG4gICAgY29uc3QgaGl0ID0gIWVsZW1lbnQuaXNEZWxldGVkICYmIGlzQXRQb3NpdGlvbkZuKGVsZW1lbnQpO1xuXG4gICAgaWYgKGhpdCkge1xuICAgICAgaWYgKGlzRW1iZWRkYWJsZUVsZW1lbnQoZWxlbWVudCkpIHtcbiAgICAgICAgZW1iZWRkYWJsZXMucHVzaChlbGVtZW50KTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0pO1xuICByZXR1cm4gZWxzQXRQb3MuY29uY2F0KGVtYmVkZGFibGVzKTtcbn07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../scene/comparisons.ts\n');
              }
            ),
            /***/
            "../../scene/export.ts": (
              /*!*****************************!*\
                !*** ../../scene/export.ts ***!
                \*****************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "exportToCanvas": () => (/* binding */ exportToCanvas),\n/* harmony export */   "exportToSvg": () => (/* binding */ exportToSvg),\n/* harmony export */   "getExportSize": () => (/* binding */ getExportSize)\n/* harmony export */ });\n/* harmony import */ var roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! roughjs/bin/rough */ "../../../node_modules/roughjs/bin/rough.js");\n/* harmony import */ var _element_bounds__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../element/bounds */ "../../element/bounds.ts");\n/* harmony import */ var _renderer_renderScene__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../renderer/renderScene */ "../../renderer/renderScene.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n/* harmony import */ var _appState__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../appState */ "../../appState.ts");\n/* harmony import */ var _data_json__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../data/json */ "../../data/json.ts");\n/* harmony import */ var _element_image__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../element/image */ "../../element/image.ts");\n/* harmony import */ var _packages_withinBounds__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../packages/withinBounds */ "../withinBounds.ts");\n/* harmony import */ var _frame__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../frame */ "../../frame.ts");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _element_mutateElement__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../element/mutateElement */ "../../element/mutateElement.ts");\n/* harmony import */ var _Scene__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./Scene */ "../../scene/Scene.ts");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator["throw"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst SVG_EXPORT_TAG = `<!-- svg-source:excalidraw -->`; // getContainerElement and getBoundTextElement and potentially other helpers\n// depend on `Scene` which will not be available when these pure utils are\n// called outside initialized Excalidraw editor instance or even if called\n// from inside Excalidraw if the elements were never cached by Scene (e.g.\n// for library elements).\n//\n// As such, before passing the elements down, we need to initialize a custom\n// Scene instance and assign them to it.\n//\n// FIXME This is a super hacky workaround and we\'ll need to rewrite this soon.\n\nconst __createSceneForElementsHack__ = elements => {\n  const scene = new _Scene__WEBPACK_IMPORTED_MODULE_12__["default"](); // we can\'t duplicate elements to regenerate ids because we need the\n  // orig ids when embedding. So we do another hack of not mapping element\n  // ids to Scene instances so that we don\'t override the editor elements\n  // mapping.\n  // We still need to clone the objects themselves to regen references.\n\n  scene.replaceAllElements((0,_utils__WEBPACK_IMPORTED_MODULE_3__.cloneJSON)(elements), false);\n  return scene;\n};\n\nconst truncateText = (element, maxWidth) => {\n  if (element.width <= maxWidth) {\n    return element;\n  }\n\n  const canvas = document.createElement("canvas");\n  const ctx = canvas.getContext("2d");\n  ctx.font = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.getFontString)({\n    fontFamily: element.fontFamily,\n    fontSize: element.fontSize\n  });\n  let text = element.text;\n  const metrics = ctx.measureText(text);\n\n  if (metrics.width > maxWidth) {\n    // we iterate from the right, removing characters one by one instead\n    // of bulding the string up. This assumes that it\'s more likely\n    // your frame names will overflow by not that many characters\n    // (if ever), so it sohuld be faster this way.\n    for (let i = text.length; i > 0; i--) {\n      const newText = `${text.slice(0, i)}...`;\n\n      if (ctx.measureText(newText).width <= maxWidth) {\n        text = newText;\n        break;\n      }\n    }\n  }\n\n  return (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_11__.newElementWith)(element, {\n    text,\n    width: maxWidth\n  });\n};\n/**\n * When exporting frames, we need to render frame labels which are currently\n * being rendered in DOM when editing. Adding the labels as regular text\n * elements seems like a simple hack. In the future we\'ll want to move to\n * proper canvas rendering, even within editor (instead of DOM).\n */\n\n\nconst addFrameLabelsAsTextElements = (elements, opts) => {\n  const nextElements = [];\n  let frameIdx = 0;\n\n  for (const element of elements) {\n    if ((0,_element__WEBPACK_IMPORTED_MODULE_10__.isFrameElement)(element)) {\n      frameIdx++;\n      let textElement = (0,_element__WEBPACK_IMPORTED_MODULE_10__.newTextElement)({\n        x: element.x,\n        y: element.y - _constants__WEBPACK_IMPORTED_MODULE_4__.FRAME_STYLE.nameOffsetY,\n        fontFamily: _constants__WEBPACK_IMPORTED_MODULE_4__.FONT_FAMILY.Assistant,\n        fontSize: _constants__WEBPACK_IMPORTED_MODULE_4__.FRAME_STYLE.nameFontSize,\n        lineHeight: _constants__WEBPACK_IMPORTED_MODULE_4__.FRAME_STYLE.nameLineHeight,\n        strokeColor: opts.exportWithDarkMode ? _constants__WEBPACK_IMPORTED_MODULE_4__.FRAME_STYLE.nameColorDarkTheme : _constants__WEBPACK_IMPORTED_MODULE_4__.FRAME_STYLE.nameColorLightTheme,\n        text: element.name || `Frame ${frameIdx}`\n      });\n      textElement.y -= textElement.height;\n      textElement = truncateText(textElement, element.width);\n      nextElements.push(textElement);\n    }\n\n    nextElements.push(element);\n  }\n\n  return nextElements;\n};\n\nconst getFrameRenderingConfig = (exportingFrame, frameRendering) => {\n  frameRendering = frameRendering || (0,_appState__WEBPACK_IMPORTED_MODULE_5__.getDefaultAppState)().frameRendering;\n  return {\n    enabled: exportingFrame ? true : frameRendering.enabled,\n    outline: exportingFrame ? false : frameRendering.outline,\n    name: exportingFrame ? false : frameRendering.name,\n    clip: exportingFrame ? true : frameRendering.clip\n  };\n};\n\nconst prepareElementsForRender = ({\n  elements,\n  exportingFrame,\n  frameRendering,\n  exportWithDarkMode\n}) => {\n  let nextElements;\n\n  if (exportingFrame) {\n    nextElements = (0,_packages_withinBounds__WEBPACK_IMPORTED_MODULE_8__.elementsOverlappingBBox)({\n      elements,\n      bounds: exportingFrame,\n      type: "overlap"\n    });\n  } else if (frameRendering.enabled && frameRendering.name) {\n    nextElements = addFrameLabelsAsTextElements(elements, {\n      exportWithDarkMode\n    });\n  } else {\n    nextElements = elements;\n  }\n\n  return nextElements;\n};\n\nconst exportToCanvas = (elements, appState, files, {\n  exportBackground,\n  exportPadding = _constants__WEBPACK_IMPORTED_MODULE_4__.DEFAULT_EXPORT_PADDING,\n  viewBackgroundColor,\n  exportingFrame\n}, createCanvas = (width, height) => {\n  const canvas = document.createElement("canvas");\n  canvas.width = width * appState.exportScale;\n  canvas.height = height * appState.exportScale;\n  return {\n    canvas,\n    scale: appState.exportScale\n  };\n}) => __awaiter(void 0, void 0, void 0, function* () {\n  var _a;\n\n  const tempScene = __createSceneForElementsHack__(elements);\n\n  elements = tempScene.getNonDeletedElements();\n  const frameRendering = getFrameRenderingConfig(exportingFrame !== null && exportingFrame !== void 0 ? exportingFrame : null, (_a = appState.frameRendering) !== null && _a !== void 0 ? _a : null);\n  const elementsForRender = prepareElementsForRender({\n    elements,\n    exportingFrame,\n    exportWithDarkMode: appState.exportWithDarkMode,\n    frameRendering\n  });\n\n  if (exportingFrame) {\n    exportPadding = 0;\n  }\n\n  const [minX, minY, width, height] = getCanvasSize(exportingFrame ? [exportingFrame] : (0,_frame__WEBPACK_IMPORTED_MODULE_9__.getRootElements)(elementsForRender), exportPadding);\n  const {\n    canvas,\n    scale = 1\n  } = createCanvas(width, height);\n  const defaultAppState = (0,_appState__WEBPACK_IMPORTED_MODULE_5__.getDefaultAppState)();\n  const {\n    imageCache\n  } = yield (0,_element_image__WEBPACK_IMPORTED_MODULE_7__.updateImageCache)({\n    imageCache: new Map(),\n    fileIds: (0,_element_image__WEBPACK_IMPORTED_MODULE_7__.getInitializedImageElements)(elementsForRender).map(element => element.fileId),\n    files\n  });\n  (0,_renderer_renderScene__WEBPACK_IMPORTED_MODULE_2__.renderStaticScene)({\n    canvas,\n    rc: roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_0__["default"].canvas(canvas),\n    elements: elementsForRender,\n    visibleElements: elementsForRender,\n    scale,\n    appState: Object.assign(Object.assign({}, appState), {\n      frameRendering,\n      viewBackgroundColor: exportBackground ? viewBackgroundColor : null,\n      scrollX: -minX + exportPadding,\n      scrollY: -minY + exportPadding,\n      zoom: defaultAppState.zoom,\n      shouldCacheIgnoreZoom: false,\n      theme: appState.exportWithDarkMode ? "dark" : "light"\n    }),\n    renderConfig: {\n      imageCache,\n      renderGrid: false,\n      isExporting: true\n    }\n  });\n  tempScene.destroy();\n  return canvas;\n});\nconst exportToSvg = (elements, appState, files, opts) => __awaiter(void 0, void 0, void 0, function* () {\n  var _b, _c, _d;\n\n  const tempScene = __createSceneForElementsHack__(elements);\n\n  elements = tempScene.getNonDeletedElements();\n  const frameRendering = getFrameRenderingConfig((_b = opts === null || opts === void 0 ? void 0 : opts.exportingFrame) !== null && _b !== void 0 ? _b : null, (_c = appState.frameRendering) !== null && _c !== void 0 ? _c : null);\n  let {\n    exportPadding = _constants__WEBPACK_IMPORTED_MODULE_4__.DEFAULT_EXPORT_PADDING,\n    exportWithDarkMode = false,\n    viewBackgroundColor,\n    exportScale = 1,\n    exportEmbedScene\n  } = appState;\n  const {\n    exportingFrame = null\n  } = opts || {};\n  const elementsForRender = prepareElementsForRender({\n    elements,\n    exportingFrame,\n    exportWithDarkMode,\n    frameRendering\n  });\n\n  if (exportingFrame) {\n    exportPadding = 0;\n  }\n\n  let metadata = ""; // we need to serialize the "original" elements before we put them through\n  // the tempScene hack which duplicates and regenerates ids\n\n  if (exportEmbedScene) {\n    try {\n      metadata = yield (yield Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../../src/data/image */ "../../data/image.ts"))).encodeSvgMetadata({\n        // when embedding scene, we want to embed the origionally supplied\n        // elements which don\'t contain the temp frame labels.\n        // But it also requires that the exportToSvg is being supplied with\n        // only the elements that we\'re exporting, and no extra.\n        text: (0,_data_json__WEBPACK_IMPORTED_MODULE_6__.serializeAsJSON)(elements, appState, files || {}, "local")\n      });\n    } catch (error) {\n      console.error(error);\n    }\n  }\n\n  const [minX, minY, width, height] = getCanvasSize(exportingFrame ? [exportingFrame] : (0,_frame__WEBPACK_IMPORTED_MODULE_9__.getRootElements)(elementsForRender), exportPadding); // initialize SVG root\n\n  const svgRoot = document.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_4__.SVG_NS, "svg");\n  svgRoot.setAttribute("version", "1.1");\n  svgRoot.setAttribute("xmlns", _constants__WEBPACK_IMPORTED_MODULE_4__.SVG_NS);\n  svgRoot.setAttribute("viewBox", `0 0 ${width} ${height}`);\n  svgRoot.setAttribute("width", `${width * exportScale}`);\n  svgRoot.setAttribute("height", `${height * exportScale}`);\n\n  if (exportWithDarkMode) {\n    svgRoot.setAttribute("filter", _constants__WEBPACK_IMPORTED_MODULE_4__.THEME_FILTER);\n  }\n\n  let assetPath = "https://excalidraw.com/"; // Asset path needs to be determined only when using package\n\n  if (true) {\n    assetPath = window.EXCALIDRAW_ASSET_PATH || `https://unpkg.com/${"@excalidraw/excalidraw"}@${({"VITE_APP_BACKEND_V2_GET_URL":"https://json-dev.excalidraw.com/api/v2/","VITE_APP_BACKEND_V2_POST_URL":"https://json-dev.excalidraw.com/api/v2/post/","VITE_APP_LIBRARY_URL":"https://libraries.excalidraw.com","VITE_APP_LIBRARY_BACKEND":"https://us-central1-excalidraw-room-persistence.cloudfunctions.net/libraries","VITE_APP_WS_SERVER_URL":"http://localhost:3002","VITE_APP_PORTAL_URL":"","VITE_APP_PLUS_LP":"https://plus.excalidraw.com","VITE_APP_PLUS_APP":"https://app.excalidraw.com","VITE_APP_FIREBASE_CONFIG":"{\\"apiKey\\":\\"AIzaSyCMkxA60XIW8KbqMYL7edC4qT5l4qHX2h8\\",\\"authDomain\\":\\"excalidraw-oss-dev.firebaseapp.com\\",\\"projectId\\":\\"excalidraw-oss-dev\\",\\"storageBucket\\":\\"excalidraw-oss-dev.appspot.com\\",\\"messagingSenderId\\":\\"664559512677\\",\\"appId\\":\\"1:664559512677:web:a385181f2928d328a7aa8c\\"}","VITE_APP_DEV_ENABLE_SW":"","VITE_APP_DEV_DISABLE_LIVE_RELOAD":"","VITE_APP_DISABLE_TRACKING":"true","FAST_REFRESH":"false","VITE_APP_PORT":"3000","VITE_APP_DEBUG_ENABLE_TEXT_CONTAINER_BOUNDING_BOX":"","VITE_APP_COLLAPSE_OVERLAY":"true","VITE_APP_ENABLE_ESLINT":"true","VITE_PKG_NAME":"@excalidraw/excalidraw","VITE_PKG_VERSION":"0.17.6","VITE_IS_EXCALIDRAW_NPM_PACKAGE":true}).PKG_VERSION}`;\n\n    if (assetPath === null || assetPath === void 0 ? void 0 : assetPath.startsWith("/")) {\n      assetPath = assetPath.replace("/", `${window.location.origin}/`);\n    }\n\n    assetPath = `${assetPath}/dist/excalidraw-assets/`;\n  }\n\n  const offsetX = -minX + exportPadding;\n  const offsetY = -minY + exportPadding;\n  const frameElements = (0,_frame__WEBPACK_IMPORTED_MODULE_9__.getFrameElements)(elements);\n  let exportingFrameClipPath = "";\n\n  for (const frame of frameElements) {\n    const [x1, y1, x2, y2] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_1__.getElementAbsoluteCoords)(frame);\n    const cx = (x2 - x1) / 2 - (frame.x - x1);\n    const cy = (y2 - y1) / 2 - (frame.y - y1);\n    exportingFrameClipPath += `<clipPath id=${frame.id}>\n            <rect transform="translate(${frame.x + offsetX} ${frame.y + offsetY}) rotate(${frame.angle} ${cx} ${cy})"\n          width="${frame.width}"\n          height="${frame.height}"\n          >\n          </rect>\n        </clipPath>`;\n  }\n\n  svgRoot.innerHTML = `\n  ${SVG_EXPORT_TAG}\n  ${metadata}\n  <defs>\n    <style class="style-fonts">\n      @font-face {\n        font-family: "Virgil";\n        src: url("${assetPath}Virgil.woff2");\n      }\n      @font-face {\n        font-family: "Cascadia";\n        src: url("${assetPath}Cascadia.woff2");\n      }\n      @font-face {\n        font-family: "Assistant";\n        src: url("${assetPath}Assistant-Regular.woff2");\n      }\n    </style>\n    ${exportingFrameClipPath}\n  </defs>\n  `; // render background rect\n\n  if (appState.exportBackground && viewBackgroundColor) {\n    const rect = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_4__.SVG_NS, "rect");\n    rect.setAttribute("x", "0");\n    rect.setAttribute("y", "0");\n    rect.setAttribute("width", `${width}`);\n    rect.setAttribute("height", `${height}`);\n    rect.setAttribute("fill", viewBackgroundColor);\n    svgRoot.appendChild(rect);\n  }\n\n  const rsvg = roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_0__["default"].svg(svgRoot);\n  (0,_renderer_renderScene__WEBPACK_IMPORTED_MODULE_2__.renderSceneToSvg)(elementsForRender, rsvg, svgRoot, files || {}, {\n    offsetX,\n    offsetY,\n    exportWithDarkMode,\n    renderEmbeddables: (_d = opts === null || opts === void 0 ? void 0 : opts.renderEmbeddables) !== null && _d !== void 0 ? _d : false,\n    frameRendering\n  });\n  tempScene.destroy();\n  return svgRoot;\n}); // calculate smallest area to fit the contents in\n\nconst getCanvasSize = (elements, exportPadding) => {\n  const [minX, minY, maxX, maxY] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_1__.getCommonBounds)(elements);\n  const width = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.distance)(minX, maxX) + exportPadding * 2;\n  const height = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.distance)(minY, maxY) + exportPadding * 2;\n  return [minX, minY, width, height];\n};\n\nconst getExportSize = (elements, exportPadding, scale) => {\n  const [,, width, height] = getCanvasSize(elements, exportPadding).map(dimension => Math.trunc(dimension * scale));\n  return [width, height];\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 21832 characters]\n//# sourceURL=webpack-internal:///../../scene/export.ts\n');
              }
            ),
            /***/
            "../../scene/index.ts": (
              /*!****************************!*\
                !*** ../../scene/index.ts ***!
                \****************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "calculateScrollCenter": () => (/* reexport safe */ _scroll__WEBPACK_IMPORTED_MODULE_2__.calculateScrollCenter),\n/* harmony export */   "canChangeRoundness": () => (/* reexport safe */ _comparisons__WEBPACK_IMPORTED_MODULE_3__.canChangeRoundness),\n/* harmony export */   "canHaveArrowheads": () => (/* reexport safe */ _comparisons__WEBPACK_IMPORTED_MODULE_3__.canHaveArrowheads),\n/* harmony export */   "getCommonAttributeOfSelectedElements": () => (/* reexport safe */ _selection__WEBPACK_IMPORTED_MODULE_1__.getCommonAttributeOfSelectedElements),\n/* harmony export */   "getElementAtPosition": () => (/* reexport safe */ _comparisons__WEBPACK_IMPORTED_MODULE_3__.getElementAtPosition),\n/* harmony export */   "getElementsAtPosition": () => (/* reexport safe */ _comparisons__WEBPACK_IMPORTED_MODULE_3__.getElementsAtPosition),\n/* harmony export */   "getElementsWithinSelection": () => (/* reexport safe */ _selection__WEBPACK_IMPORTED_MODULE_1__.getElementsWithinSelection),\n/* harmony export */   "getNormalizedZoom": () => (/* reexport safe */ _zoom__WEBPACK_IMPORTED_MODULE_4__.getNormalizedZoom),\n/* harmony export */   "getSelectedElements": () => (/* reexport safe */ _selection__WEBPACK_IMPORTED_MODULE_1__.getSelectedElements),\n/* harmony export */   "getTargetElements": () => (/* reexport safe */ _selection__WEBPACK_IMPORTED_MODULE_1__.getTargetElements),\n/* harmony export */   "hasBackground": () => (/* reexport safe */ _comparisons__WEBPACK_IMPORTED_MODULE_3__.hasBackground),\n/* harmony export */   "hasStrokeStyle": () => (/* reexport safe */ _comparisons__WEBPACK_IMPORTED_MODULE_3__.hasStrokeStyle),\n/* harmony export */   "hasStrokeWidth": () => (/* reexport safe */ _comparisons__WEBPACK_IMPORTED_MODULE_3__.hasStrokeWidth),\n/* harmony export */   "isOverScrollBars": () => (/* reexport safe */ _scrollbars__WEBPACK_IMPORTED_MODULE_0__.isOverScrollBars),\n/* harmony export */   "isSomeElementSelected": () => (/* reexport safe */ _selection__WEBPACK_IMPORTED_MODULE_1__.isSomeElementSelected)\n/* harmony export */ });\n/* harmony import */ var _scrollbars__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./scrollbars */ "../../scene/scrollbars.ts");\n/* harmony import */ var _selection__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./selection */ "../../scene/selection.ts");\n/* harmony import */ var _scroll__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./scroll */ "../../scene/scroll.ts");\n/* harmony import */ var _comparisons__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./comparisons */ "../../scene/comparisons.ts");\n/* harmony import */ var _zoom__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./zoom */ "../../scene/zoom.ts");\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vc2NlbmUvaW5kZXgudHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBZ0Q7QUFDOEc7QUFDN0c7QUFDaUgiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vc2NlbmUvaW5kZXgudHM/ODY1NCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBpc092ZXJTY3JvbGxCYXJzIH0gZnJvbSBcIi4vc2Nyb2xsYmFyc1wiO1xuZXhwb3J0IHsgaXNTb21lRWxlbWVudFNlbGVjdGVkLCBnZXRFbGVtZW50c1dpdGhpblNlbGVjdGlvbiwgZ2V0Q29tbW9uQXR0cmlidXRlT2ZTZWxlY3RlZEVsZW1lbnRzLCBnZXRTZWxlY3RlZEVsZW1lbnRzLCBnZXRUYXJnZXRFbGVtZW50cyB9IGZyb20gXCIuL3NlbGVjdGlvblwiO1xuZXhwb3J0IHsgY2FsY3VsYXRlU2Nyb2xsQ2VudGVyIH0gZnJvbSBcIi4vc2Nyb2xsXCI7XG5leHBvcnQgeyBoYXNCYWNrZ3JvdW5kLCBoYXNTdHJva2VXaWR0aCwgaGFzU3Ryb2tlU3R5bGUsIGNhbkhhdmVBcnJvd2hlYWRzLCBjYW5DaGFuZ2VSb3VuZG5lc3MsIGdldEVsZW1lbnRBdFBvc2l0aW9uLCBnZXRFbGVtZW50c0F0UG9zaXRpb24gfSBmcm9tIFwiLi9jb21wYXJpc29uc1wiO1xuZXhwb3J0IHsgZ2V0Tm9ybWFsaXplZFpvb20gfSBmcm9tIFwiLi96b29tXCI7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../scene/index.ts\n');
              }
            ),
            /***/
            "../../scene/scroll.ts": (
              /*!*****************************!*\
                !*** ../../scene/scroll.ts ***!
                \*****************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "calculateScrollCenter": () => (/* binding */ calculateScrollCenter),\n/* harmony export */   "centerScrollOn": () => (/* binding */ centerScrollOn)\n/* harmony export */ });\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n\n\n\nconst isOutsideViewPort = (appState, cords) => {\n  const [x1, y1, x2, y2] = cords;\n  const {\n    x: viewportX1,\n    y: viewportY1\n  } = (0,_utils__WEBPACK_IMPORTED_MODULE_1__.sceneCoordsToViewportCoords)({\n    sceneX: x1,\n    sceneY: y1\n  }, appState);\n  const {\n    x: viewportX2,\n    y: viewportY2\n  } = (0,_utils__WEBPACK_IMPORTED_MODULE_1__.sceneCoordsToViewportCoords)({\n    sceneX: x2,\n    sceneY: y2\n  }, appState);\n  return viewportX2 - viewportX1 > appState.width || viewportY2 - viewportY1 > appState.height;\n};\n\nconst centerScrollOn = ({\n  scenePoint,\n  viewportDimensions,\n  zoom\n}) => {\n  return {\n    scrollX: viewportDimensions.width / 2 / zoom.value - scenePoint.x,\n    scrollY: viewportDimensions.height / 2 / zoom.value - scenePoint.y\n  };\n};\nconst calculateScrollCenter = (elements, appState) => {\n  elements = (0,_element__WEBPACK_IMPORTED_MODULE_0__.getVisibleElements)(elements);\n\n  if (!elements.length) {\n    return {\n      scrollX: 0,\n      scrollY: 0\n    };\n  }\n\n  let [x1, y1, x2, y2] = (0,_element__WEBPACK_IMPORTED_MODULE_0__.getCommonBounds)(elements);\n\n  if (isOutsideViewPort(appState, [x1, y1, x2, y2])) {\n    [x1, y1, x2, y2] = (0,_element__WEBPACK_IMPORTED_MODULE_0__.getClosestElementBounds)(elements, (0,_utils__WEBPACK_IMPORTED_MODULE_1__.viewportCoordsToSceneCoords)({\n      clientX: appState.scrollX,\n      clientY: appState.scrollY\n    }, appState));\n  }\n\n  const centerX = (x1 + x2) / 2;\n  const centerY = (y1 + y2) / 2;\n  return centerScrollOn({\n    scenePoint: {\n      x: centerX,\n      y: centerY\n    },\n    viewportDimensions: {\n      width: appState.width,\n      height: appState.height\n    },\n    zoom: appState.zoom\n  });\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vc2NlbmUvc2Nyb2xsLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBMEY7QUFDTjs7QUFFcEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksRUFBRSxtRUFBMkI7QUFDakM7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxJQUFJLEVBQUUsbUVBQTJCO0FBQ2pDO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUCxhQUFhLDREQUFrQjs7QUFFL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHlCQUF5Qix5REFBZTs7QUFFeEM7QUFDQSx1QkFBdUIsaUVBQXVCLFdBQVcsbUVBQTJCO0FBQ3BGO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEdBQUc7QUFDSCIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9zY2VuZS9zY3JvbGwudHM/YTY4YyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRDb21tb25Cb3VuZHMsIGdldENsb3Nlc3RFbGVtZW50Qm91bmRzLCBnZXRWaXNpYmxlRWxlbWVudHMgfSBmcm9tIFwiLi4vZWxlbWVudFwiO1xuaW1wb3J0IHsgc2NlbmVDb29yZHNUb1ZpZXdwb3J0Q29vcmRzLCB2aWV3cG9ydENvb3Jkc1RvU2NlbmVDb29yZHMgfSBmcm9tIFwiLi4vdXRpbHNcIjtcblxuY29uc3QgaXNPdXRzaWRlVmlld1BvcnQgPSAoYXBwU3RhdGUsIGNvcmRzKSA9PiB7XG4gIGNvbnN0IFt4MSwgeTEsIHgyLCB5Ml0gPSBjb3JkcztcbiAgY29uc3Qge1xuICAgIHg6IHZpZXdwb3J0WDEsXG4gICAgeTogdmlld3BvcnRZMVxuICB9ID0gc2NlbmVDb29yZHNUb1ZpZXdwb3J0Q29vcmRzKHtcbiAgICBzY2VuZVg6IHgxLFxuICAgIHNjZW5lWTogeTFcbiAgfSwgYXBwU3RhdGUpO1xuICBjb25zdCB7XG4gICAgeDogdmlld3BvcnRYMixcbiAgICB5OiB2aWV3cG9ydFkyXG4gIH0gPSBzY2VuZUNvb3Jkc1RvVmlld3BvcnRDb29yZHMoe1xuICAgIHNjZW5lWDogeDIsXG4gICAgc2NlbmVZOiB5MlxuICB9LCBhcHBTdGF0ZSk7XG4gIHJldHVybiB2aWV3cG9ydFgyIC0gdmlld3BvcnRYMSA+IGFwcFN0YXRlLndpZHRoIHx8IHZpZXdwb3J0WTIgLSB2aWV3cG9ydFkxID4gYXBwU3RhdGUuaGVpZ2h0O1xufTtcblxuZXhwb3J0IGNvbnN0IGNlbnRlclNjcm9sbE9uID0gKHtcbiAgc2NlbmVQb2ludCxcbiAgdmlld3BvcnREaW1lbnNpb25zLFxuICB6b29tXG59KSA9PiB7XG4gIHJldHVybiB7XG4gICAgc2Nyb2xsWDogdmlld3BvcnREaW1lbnNpb25zLndpZHRoIC8gMiAvIHpvb20udmFsdWUgLSBzY2VuZVBvaW50LngsXG4gICAgc2Nyb2xsWTogdmlld3BvcnREaW1lbnNpb25zLmhlaWdodCAvIDIgLyB6b29tLnZhbHVlIC0gc2NlbmVQb2ludC55XG4gIH07XG59O1xuZXhwb3J0IGNvbnN0IGNhbGN1bGF0ZVNjcm9sbENlbnRlciA9IChlbGVtZW50cywgYXBwU3RhdGUpID0+IHtcbiAgZWxlbWVudHMgPSBnZXRWaXNpYmxlRWxlbWVudHMoZWxlbWVudHMpO1xuXG4gIGlmICghZWxlbWVudHMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNjcm9sbFg6IDAsXG4gICAgICBzY3JvbGxZOiAwXG4gICAgfTtcbiAgfVxuXG4gIGxldCBbeDEsIHkxLCB4MiwgeTJdID0gZ2V0Q29tbW9uQm91bmRzKGVsZW1lbnRzKTtcblxuICBpZiAoaXNPdXRzaWRlVmlld1BvcnQoYXBwU3RhdGUsIFt4MSwgeTEsIHgyLCB5Ml0pKSB7XG4gICAgW3gxLCB5MSwgeDIsIHkyXSA9IGdldENsb3Nlc3RFbGVtZW50Qm91bmRzKGVsZW1lbnRzLCB2aWV3cG9ydENvb3Jkc1RvU2NlbmVDb29yZHMoe1xuICAgICAgY2xpZW50WDogYXBwU3RhdGUuc2Nyb2xsWCxcbiAgICAgIGNsaWVudFk6IGFwcFN0YXRlLnNjcm9sbFlcbiAgICB9LCBhcHBTdGF0ZSkpO1xuICB9XG5cbiAgY29uc3QgY2VudGVyWCA9ICh4MSArIHgyKSAvIDI7XG4gIGNvbnN0IGNlbnRlclkgPSAoeTEgKyB5MikgLyAyO1xuICByZXR1cm4gY2VudGVyU2Nyb2xsT24oe1xuICAgIHNjZW5lUG9pbnQ6IHtcbiAgICAgIHg6IGNlbnRlclgsXG4gICAgICB5OiBjZW50ZXJZXG4gICAgfSxcbiAgICB2aWV3cG9ydERpbWVuc2lvbnM6IHtcbiAgICAgIHdpZHRoOiBhcHBTdGF0ZS53aWR0aCxcbiAgICAgIGhlaWdodDogYXBwU3RhdGUuaGVpZ2h0XG4gICAgfSxcbiAgICB6b29tOiBhcHBTdGF0ZS56b29tXG4gIH0pO1xufTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../scene/scroll.ts\n');
              }
            ),
            /***/
            "../../scene/scrollbars.ts": (
              /*!*********************************!*\
                !*** ../../scene/scrollbars.ts ***!
                \*********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "SCROLLBAR_COLOR": () => (/* binding */ SCROLLBAR_COLOR),\n/* harmony export */   "SCROLLBAR_MARGIN": () => (/* binding */ SCROLLBAR_MARGIN),\n/* harmony export */   "SCROLLBAR_WIDTH": () => (/* binding */ SCROLLBAR_WIDTH),\n/* harmony export */   "getScrollBars": () => (/* binding */ getScrollBars),\n/* harmony export */   "isOverScrollBars": () => (/* binding */ isOverScrollBars)\n/* harmony export */ });\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../i18n */ "../../i18n.ts");\n\n\n\nconst SCROLLBAR_MARGIN = 4;\nconst SCROLLBAR_WIDTH = 6;\nconst SCROLLBAR_COLOR = "rgba(0,0,0,0.3)";\nconst getScrollBars = (elements, viewportWidth, viewportHeight, appState) => {\n  if (elements.length === 0) {\n    return {\n      horizontal: null,\n      vertical: null\n    };\n  } // This is the bounding box of all the elements\n\n\n  const [elementsMinX, elementsMinY, elementsMaxX, elementsMaxY] = (0,_element__WEBPACK_IMPORTED_MODULE_0__.getCommonBounds)(elements); // Apply zoom\n\n  const viewportWidthWithZoom = viewportWidth / appState.zoom.value;\n  const viewportHeightWithZoom = viewportHeight / appState.zoom.value;\n  const viewportWidthDiff = viewportWidth - viewportWidthWithZoom;\n  const viewportHeightDiff = viewportHeight - viewportHeightWithZoom;\n  const safeArea = {\n    top: parseInt((0,_utils__WEBPACK_IMPORTED_MODULE_1__.getGlobalCSSVariable)("sat")) || 0,\n    bottom: parseInt((0,_utils__WEBPACK_IMPORTED_MODULE_1__.getGlobalCSSVariable)("sab")) || 0,\n    left: parseInt((0,_utils__WEBPACK_IMPORTED_MODULE_1__.getGlobalCSSVariable)("sal")) || 0,\n    right: parseInt((0,_utils__WEBPACK_IMPORTED_MODULE_1__.getGlobalCSSVariable)("sar")) || 0\n  };\n  const isRTL = (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.getLanguage)().rtl; // The viewport is the rectangle currently visible for the user\n\n  const viewportMinX = -appState.scrollX + viewportWidthDiff / 2 + safeArea.left;\n  const viewportMinY = -appState.scrollY + viewportHeightDiff / 2 + safeArea.top;\n  const viewportMaxX = viewportMinX + viewportWidthWithZoom - safeArea.right;\n  const viewportMaxY = viewportMinY + viewportHeightWithZoom - safeArea.bottom; // The scene is the bounding box of both the elements and viewport\n\n  const sceneMinX = Math.min(elementsMinX, viewportMinX);\n  const sceneMinY = Math.min(elementsMinY, viewportMinY);\n  const sceneMaxX = Math.max(elementsMaxX, viewportMaxX);\n  const sceneMaxY = Math.max(elementsMaxY, viewportMaxY); // The scrollbar represents where the viewport is in relationship to the scene\n\n  return {\n    horizontal: viewportMinX === sceneMinX && viewportMaxX === sceneMaxX ? null : {\n      x: Math.max(safeArea.left, SCROLLBAR_MARGIN) + (viewportMinX - sceneMinX) / (sceneMaxX - sceneMinX) * viewportWidth,\n      y: viewportHeight - SCROLLBAR_WIDTH - Math.max(SCROLLBAR_MARGIN, safeArea.bottom),\n      width: (viewportMaxX - viewportMinX) / (sceneMaxX - sceneMinX) * viewportWidth - Math.max(SCROLLBAR_MARGIN * 2, safeArea.left + safeArea.right),\n      height: SCROLLBAR_WIDTH\n    },\n    vertical: viewportMinY === sceneMinY && viewportMaxY === sceneMaxY ? null : {\n      x: isRTL ? Math.max(safeArea.left, SCROLLBAR_MARGIN) : viewportWidth - SCROLLBAR_WIDTH - Math.max(safeArea.right, SCROLLBAR_MARGIN),\n      y: (viewportMinY - sceneMinY) / (sceneMaxY - sceneMinY) * viewportHeight + Math.max(safeArea.top, SCROLLBAR_MARGIN),\n      width: SCROLLBAR_WIDTH,\n      height: (viewportMaxY - viewportMinY) / (sceneMaxY - sceneMinY) * viewportHeight - Math.max(SCROLLBAR_MARGIN * 2, safeArea.top + safeArea.bottom)\n    }\n  };\n};\nconst isOverScrollBars = (scrollBars, x, y) => {\n  const [isOverHorizontal, isOverVertical] = [scrollBars.horizontal, scrollBars.vertical].map(scrollBar => {\n    return scrollBar != null && scrollBar.x <= x && x <= scrollBar.x + scrollBar.width && scrollBar.y <= y && y <= scrollBar.y + scrollBar.height;\n  });\n  const isOverEither = isOverHorizontal || isOverVertical;\n  return {\n    isOverEither,\n    isOverHorizontal,\n    isOverVertical\n  };\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 5468 characters]\n//# sourceURL=webpack-internal:///../../scene/scrollbars.ts\n');
              }
            ),
            /***/
            "../../scene/selection.ts": (
              /*!********************************!*\
                !*** ../../scene/selection.ts ***!
                \********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "excludeElementsInFramesFromSelection": () => (/* binding */ excludeElementsInFramesFromSelection),\n/* harmony export */   "getCommonAttributeOfSelectedElements": () => (/* binding */ getCommonAttributeOfSelectedElements),\n/* harmony export */   "getElementsWithinSelection": () => (/* binding */ getElementsWithinSelection),\n/* harmony export */   "getSelectedElements": () => (/* binding */ getSelectedElements),\n/* harmony export */   "getTargetElements": () => (/* binding */ getTargetElements),\n/* harmony export */   "getVisibleAndNonSelectedElements": () => (/* binding */ getVisibleAndNonSelectedElements),\n/* harmony export */   "isSomeElementSelected": () => (/* binding */ isSomeElementSelected),\n/* harmony export */   "makeNextSelectedElementIds": () => (/* binding */ makeNextSelectedElementIds)\n/* harmony export */ });\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../element */ "../../element/index.ts");\n/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../element/typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var _frame__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../frame */ "../../frame.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils */ "../../utils.ts");\n/* harmony import */ var _element_sizeHelpers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../element/sizeHelpers */ "../../element/sizeHelpers.ts");\n\n\n\n\n\n/**\n * Frames and their containing elements are not to be selected at the same time.\n * Given an array of selected elements, if there are frames and their containing elements\n * we only keep the frames.\n * @param selectedElements\n */\n\nconst excludeElementsInFramesFromSelection = selectedElements => {\n  const framesInSelection = new Set();\n  selectedElements.forEach(element => {\n    if (element.type === "frame") {\n      framesInSelection.add(element.id);\n    }\n  });\n  return selectedElements.filter(element => {\n    if (element.frameId && framesInSelection.has(element.frameId)) {\n      return false;\n    }\n\n    return true;\n  });\n};\nconst getElementsWithinSelection = (elements, selection, excludeElementsInFrames = true) => {\n  const [selectionX1, selectionY1, selectionX2, selectionY2] = (0,_element__WEBPACK_IMPORTED_MODULE_0__.getElementAbsoluteCoords)(selection);\n  let elementsInSelection = elements.filter(element => {\n    let [elementX1, elementY1, elementX2, elementY2] = (0,_element__WEBPACK_IMPORTED_MODULE_0__.getElementBounds)(element);\n    const containingFrame = (0,_frame__WEBPACK_IMPORTED_MODULE_2__.getContainingFrame)(element);\n\n    if (containingFrame) {\n      const [fx1, fy1, fx2, fy2] = (0,_element__WEBPACK_IMPORTED_MODULE_0__.getElementBounds)(containingFrame);\n      elementX1 = Math.max(fx1, elementX1);\n      elementY1 = Math.max(fy1, elementY1);\n      elementX2 = Math.min(fx2, elementX2);\n      elementY2 = Math.min(fy2, elementY2);\n    }\n\n    return element.locked === false && element.type !== "selection" && !(0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isBoundToContainer)(element) && selectionX1 <= elementX1 && selectionY1 <= elementY1 && selectionX2 >= elementX2 && selectionY2 >= elementY2;\n  });\n  elementsInSelection = excludeElementsInFrames ? excludeElementsInFramesFromSelection(elementsInSelection) : elementsInSelection;\n  elementsInSelection = elementsInSelection.filter(element => {\n    const containingFrame = (0,_frame__WEBPACK_IMPORTED_MODULE_2__.getContainingFrame)(element);\n\n    if (containingFrame) {\n      return (0,_frame__WEBPACK_IMPORTED_MODULE_2__.elementOverlapsWithFrame)(element, containingFrame);\n    }\n\n    return true;\n  });\n  return elementsInSelection;\n};\nconst getVisibleAndNonSelectedElements = (elements, selectedElements, appState) => {\n  const selectedElementsSet = new Set(selectedElements.map(element => element.id));\n  return elements.filter(element => {\n    const isVisible = (0,_element_sizeHelpers__WEBPACK_IMPORTED_MODULE_4__.isElementInViewport)(element, appState.width, appState.height, appState);\n    return !selectedElementsSet.has(element.id) && isVisible;\n  });\n}; // FIXME move this into the editor instance to keep utility methods stateless\n\nconst isSomeElementSelected = function () {\n  let lastElements = null;\n  let lastSelectedElementIds = null;\n  let isSelected = null;\n\n  const ret = (elements, appState) => {\n    if (isSelected != null && elements === lastElements && appState.selectedElementIds === lastSelectedElementIds) {\n      return isSelected;\n    }\n\n    isSelected = elements.some(element => appState.selectedElementIds[element.id]);\n    lastElements = elements;\n    lastSelectedElementIds = appState.selectedElementIds;\n    return isSelected;\n  };\n\n  ret.clearCache = () => {\n    lastElements = null;\n    lastSelectedElementIds = null;\n    isSelected = null;\n  };\n\n  return ret;\n}();\n/**\n * Returns common attribute (picked by `getAttribute` callback) of selected\n *  elements. If elements don\'t share the same value, returns `null`.\n */\n\nconst getCommonAttributeOfSelectedElements = (elements, appState, getAttribute) => {\n  const attributes = Array.from(new Set(getSelectedElements(elements, appState).map(element => getAttribute(element))));\n  return attributes.length === 1 ? attributes[0] : null;\n};\nconst getSelectedElements = (elements, appState, opts) => {\n  const selectedElements = elements.filter(element => {\n    if (appState.selectedElementIds[element.id]) {\n      return element;\n    }\n\n    if ((opts === null || opts === void 0 ? void 0 : opts.includeBoundTextElement) && (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isBoundToContainer)(element) && appState.selectedElementIds[element === null || element === void 0 ? void 0 : element.containerId]) {\n      return element;\n    }\n\n    return null;\n  });\n\n  if (opts === null || opts === void 0 ? void 0 : opts.includeElementsInFrames) {\n    const elementsToInclude = [];\n    selectedElements.forEach(element => {\n      if (element.type === "frame") {\n        (0,_frame__WEBPACK_IMPORTED_MODULE_2__.getFrameChildren)(elements, element.id).forEach(e => elementsToInclude.push(e));\n      }\n\n      elementsToInclude.push(element);\n    });\n    return elementsToInclude;\n  }\n\n  return selectedElements;\n};\nconst getTargetElements = (elements, appState) => appState.editingElement ? [appState.editingElement] : getSelectedElements(elements, appState, {\n  includeBoundTextElement: true\n});\n/**\n * returns prevState\'s selectedElementids if no change from previous, so as to\n * retain reference identity for memoization\n */\n\nconst makeNextSelectedElementIds = (nextSelectedElementIds, prevState) => {\n  if ((0,_utils__WEBPACK_IMPORTED_MODULE_3__.isShallowEqual)(prevState.selectedElementIds, nextSelectedElementIds)) {\n    return prevState.selectedElementIds;\n  }\n\n  return nextSelectedElementIds;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 8584 characters]\n//# sourceURL=webpack-internal:///../../scene/selection.ts\n');
              }
            ),
            /***/
            "../../scene/zoom.ts": (
              /*!***************************!*\
                !*** ../../scene/zoom.ts ***!
                \***************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "getNormalizedZoom": () => (/* binding */ getNormalizedZoom),\n/* harmony export */   "getStateForZoom": () => (/* binding */ getStateForZoom)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../constants */ "../../constants.ts");\n\nconst getNormalizedZoom = zoom => {\n  return Math.max(_constants__WEBPACK_IMPORTED_MODULE_0__.MIN_ZOOM, Math.min(zoom, 30));\n};\nconst getStateForZoom = ({\n  viewportX,\n  viewportY,\n  nextZoom\n}, appState) => {\n  const appLayerX = viewportX - appState.offsetLeft;\n  const appLayerY = viewportY - appState.offsetTop;\n  const currentZoom = appState.zoom.value; // get original scroll position without zoom\n\n  const baseScrollX = appState.scrollX + (appLayerX - appLayerX / currentZoom);\n  const baseScrollY = appState.scrollY + (appLayerY - appLayerY / currentZoom); // get scroll offsets for target zoom level\n\n  const zoomOffsetScrollX = -(appLayerX - appLayerX / nextZoom);\n  const zoomOffsetScrollY = -(appLayerY - appLayerY / nextZoom);\n  return {\n    scrollX: baseScrollX + zoomOffsetScrollX,\n    scrollY: baseScrollY + zoomOffsetScrollY,\n    zoom: {\n      value: nextZoom\n    }\n  };\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vc2NlbmUvem9vbS50cy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBd0M7QUFDakM7QUFDUCxrQkFBa0IsZ0RBQVE7QUFDMUI7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0EsMkNBQTJDOztBQUUzQztBQUNBLGdGQUFnRjs7QUFFaEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vc2NlbmUvem9vbS50cz8wNmNjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1JTl9aT09NIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuZXhwb3J0IGNvbnN0IGdldE5vcm1hbGl6ZWRab29tID0gem9vbSA9PiB7XG4gIHJldHVybiBNYXRoLm1heChNSU5fWk9PTSwgTWF0aC5taW4oem9vbSwgMzApKTtcbn07XG5leHBvcnQgY29uc3QgZ2V0U3RhdGVGb3Jab29tID0gKHtcbiAgdmlld3BvcnRYLFxuICB2aWV3cG9ydFksXG4gIG5leHRab29tXG59LCBhcHBTdGF0ZSkgPT4ge1xuICBjb25zdCBhcHBMYXllclggPSB2aWV3cG9ydFggLSBhcHBTdGF0ZS5vZmZzZXRMZWZ0O1xuICBjb25zdCBhcHBMYXllclkgPSB2aWV3cG9ydFkgLSBhcHBTdGF0ZS5vZmZzZXRUb3A7XG4gIGNvbnN0IGN1cnJlbnRab29tID0gYXBwU3RhdGUuem9vbS52YWx1ZTsgLy8gZ2V0IG9yaWdpbmFsIHNjcm9sbCBwb3NpdGlvbiB3aXRob3V0IHpvb21cblxuICBjb25zdCBiYXNlU2Nyb2xsWCA9IGFwcFN0YXRlLnNjcm9sbFggKyAoYXBwTGF5ZXJYIC0gYXBwTGF5ZXJYIC8gY3VycmVudFpvb20pO1xuICBjb25zdCBiYXNlU2Nyb2xsWSA9IGFwcFN0YXRlLnNjcm9sbFkgKyAoYXBwTGF5ZXJZIC0gYXBwTGF5ZXJZIC8gY3VycmVudFpvb20pOyAvLyBnZXQgc2Nyb2xsIG9mZnNldHMgZm9yIHRhcmdldCB6b29tIGxldmVsXG5cbiAgY29uc3Qgem9vbU9mZnNldFNjcm9sbFggPSAtKGFwcExheWVyWCAtIGFwcExheWVyWCAvIG5leHRab29tKTtcbiAgY29uc3Qgem9vbU9mZnNldFNjcm9sbFkgPSAtKGFwcExheWVyWSAtIGFwcExheWVyWSAvIG5leHRab29tKTtcbiAgcmV0dXJuIHtcbiAgICBzY3JvbGxYOiBiYXNlU2Nyb2xsWCArIHpvb21PZmZzZXRTY3JvbGxYLFxuICAgIHNjcm9sbFk6IGJhc2VTY3JvbGxZICsgem9vbU9mZnNldFNjcm9sbFksXG4gICAgem9vbToge1xuICAgICAgdmFsdWU6IG5leHRab29tXG4gICAgfVxuICB9O1xufTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../scene/zoom.ts\n');
              }
            ),
            /***/
            "../../shapes.tsx": (
              /*!************************!*\
                !*** ../../shapes.tsx ***!
                \************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "SHAPES": () => (/* binding */ SHAPES),\n/* harmony export */   "findShapeByKey": () => (/* binding */ findShapeByKey)\n/* harmony export */ });\n/* harmony import */ var _components_icons__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./components/icons */ "../../components/icons.tsx");\n/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./keys */ "../../keys.ts");\n\n\nconst SHAPES = [{\n  icon: _components_icons__WEBPACK_IMPORTED_MODULE_0__.SelectionIcon,\n  value: "selection",\n  key: _keys__WEBPACK_IMPORTED_MODULE_1__.KEYS.V,\n  numericKey: _keys__WEBPACK_IMPORTED_MODULE_1__.KEYS[1],\n  fillable: true\n}, {\n  icon: _components_icons__WEBPACK_IMPORTED_MODULE_0__.RectangleIcon,\n  value: "rectangle",\n  key: _keys__WEBPACK_IMPORTED_MODULE_1__.KEYS.R,\n  numericKey: _keys__WEBPACK_IMPORTED_MODULE_1__.KEYS[2],\n  fillable: true\n}, {\n  icon: _components_icons__WEBPACK_IMPORTED_MODULE_0__.DiamondIcon,\n  value: "diamond",\n  key: _keys__WEBPACK_IMPORTED_MODULE_1__.KEYS.D,\n  numericKey: _keys__WEBPACK_IMPORTED_MODULE_1__.KEYS[3],\n  fillable: true\n}, {\n  icon: _components_icons__WEBPACK_IMPORTED_MODULE_0__.EllipseIcon,\n  value: "ellipse",\n  key: _keys__WEBPACK_IMPORTED_MODULE_1__.KEYS.O,\n  numericKey: _keys__WEBPACK_IMPORTED_MODULE_1__.KEYS[4],\n  fillable: true\n}, {\n  icon: _components_icons__WEBPACK_IMPORTED_MODULE_0__.ArrowIcon,\n  value: "arrow",\n  key: _keys__WEBPACK_IMPORTED_MODULE_1__.KEYS.A,\n  numericKey: _keys__WEBPACK_IMPORTED_MODULE_1__.KEYS[5],\n  fillable: true\n}, {\n  icon: _components_icons__WEBPACK_IMPORTED_MODULE_0__.LineIcon,\n  value: "line",\n  key: _keys__WEBPACK_IMPORTED_MODULE_1__.KEYS.L,\n  numericKey: _keys__WEBPACK_IMPORTED_MODULE_1__.KEYS[6],\n  fillable: true\n}, {\n  icon: _components_icons__WEBPACK_IMPORTED_MODULE_0__.FreedrawIcon,\n  value: "freedraw",\n  key: [_keys__WEBPACK_IMPORTED_MODULE_1__.KEYS.P, _keys__WEBPACK_IMPORTED_MODULE_1__.KEYS.X],\n  numericKey: _keys__WEBPACK_IMPORTED_MODULE_1__.KEYS[7],\n  fillable: false\n}, {\n  icon: _components_icons__WEBPACK_IMPORTED_MODULE_0__.TextIcon,\n  value: "text",\n  key: _keys__WEBPACK_IMPORTED_MODULE_1__.KEYS.T,\n  numericKey: _keys__WEBPACK_IMPORTED_MODULE_1__.KEYS[8],\n  fillable: false\n}, {\n  icon: _components_icons__WEBPACK_IMPORTED_MODULE_0__.ImageIcon,\n  value: "image",\n  key: null,\n  numericKey: _keys__WEBPACK_IMPORTED_MODULE_1__.KEYS[9],\n  fillable: false\n}, {\n  icon: _components_icons__WEBPACK_IMPORTED_MODULE_0__.EraserIcon,\n  value: "eraser",\n  key: _keys__WEBPACK_IMPORTED_MODULE_1__.KEYS.E,\n  numericKey: _keys__WEBPACK_IMPORTED_MODULE_1__.KEYS[0],\n  fillable: false\n} // TODO: frame, create icon and set up numeric key\n// {\n//   icon: RectangleIcon,\n//   value: "frame",\n//   key: KEYS.F,\n//   numericKey: KEYS.SUBTRACT,\n//   fillable: false,\n// },\n];\nconst findShapeByKey = key => {\n  const shape = SHAPES.find((shape, index) => {\n    return shape.numericKey != null && key === shape.numericKey.toString() || shape.key && (typeof shape.key === "string" ? shape.key === key : shape.key.includes(key));\n  });\n  return (shape === null || shape === void 0 ? void 0 : shape.value) || null;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vc2hhcGVzLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQWdLO0FBQ2xJO0FBQ3ZCO0FBQ1AsUUFBUSw0REFBYTtBQUNyQjtBQUNBLE9BQU8seUNBQU07QUFDYixjQUFjLDBDQUFTO0FBQ3ZCO0FBQ0EsQ0FBQztBQUNELFFBQVEsNERBQWE7QUFDckI7QUFDQSxPQUFPLHlDQUFNO0FBQ2IsY0FBYywwQ0FBUztBQUN2QjtBQUNBLENBQUM7QUFDRCxRQUFRLDBEQUFXO0FBQ25CO0FBQ0EsT0FBTyx5Q0FBTTtBQUNiLGNBQWMsMENBQVM7QUFDdkI7QUFDQSxDQUFDO0FBQ0QsUUFBUSwwREFBVztBQUNuQjtBQUNBLE9BQU8seUNBQU07QUFDYixjQUFjLDBDQUFTO0FBQ3ZCO0FBQ0EsQ0FBQztBQUNELFFBQVEsd0RBQVM7QUFDakI7QUFDQSxPQUFPLHlDQUFNO0FBQ2IsY0FBYywwQ0FBUztBQUN2QjtBQUNBLENBQUM7QUFDRCxRQUFRLHVEQUFRO0FBQ2hCO0FBQ0EsT0FBTyx5Q0FBTTtBQUNiLGNBQWMsMENBQVM7QUFDdkI7QUFDQSxDQUFDO0FBQ0QsUUFBUSwyREFBWTtBQUNwQjtBQUNBLFFBQVEseUNBQU0sRUFBRSx5Q0FBTTtBQUN0QixjQUFjLDBDQUFTO0FBQ3ZCO0FBQ0EsQ0FBQztBQUNELFFBQVEsdURBQVE7QUFDaEI7QUFDQSxPQUFPLHlDQUFNO0FBQ2IsY0FBYywwQ0FBUztBQUN2QjtBQUNBLENBQUM7QUFDRCxRQUFRLHdEQUFTO0FBQ2pCO0FBQ0E7QUFDQSxjQUFjLDBDQUFTO0FBQ3ZCO0FBQ0EsQ0FBQztBQUNELFFBQVEseURBQVU7QUFDbEI7QUFDQSxPQUFPLHlDQUFNO0FBQ2IsY0FBYywwQ0FBUztBQUN2QjtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDTztBQUNQO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9zaGFwZXMudHN4PzAxMzQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXJyb3dJY29uLCBEaWFtb25kSWNvbiwgRWxsaXBzZUljb24sIEVyYXNlckljb24sIEZyZWVkcmF3SWNvbiwgSW1hZ2VJY29uLCBMaW5lSWNvbiwgUmVjdGFuZ2xlSWNvbiwgU2VsZWN0aW9uSWNvbiwgVGV4dEljb24gfSBmcm9tIFwiLi9jb21wb25lbnRzL2ljb25zXCI7XG5pbXBvcnQgeyBLRVlTIH0gZnJvbSBcIi4va2V5c1wiO1xuZXhwb3J0IGNvbnN0IFNIQVBFUyA9IFt7XG4gIGljb246IFNlbGVjdGlvbkljb24sXG4gIHZhbHVlOiBcInNlbGVjdGlvblwiLFxuICBrZXk6IEtFWVMuVixcbiAgbnVtZXJpY0tleTogS0VZU1tcIjFcIl0sXG4gIGZpbGxhYmxlOiB0cnVlXG59LCB7XG4gIGljb246IFJlY3RhbmdsZUljb24sXG4gIHZhbHVlOiBcInJlY3RhbmdsZVwiLFxuICBrZXk6IEtFWVMuUixcbiAgbnVtZXJpY0tleTogS0VZU1tcIjJcIl0sXG4gIGZpbGxhYmxlOiB0cnVlXG59LCB7XG4gIGljb246IERpYW1vbmRJY29uLFxuICB2YWx1ZTogXCJkaWFtb25kXCIsXG4gIGtleTogS0VZUy5ELFxuICBudW1lcmljS2V5OiBLRVlTW1wiM1wiXSxcbiAgZmlsbGFibGU6IHRydWVcbn0sIHtcbiAgaWNvbjogRWxsaXBzZUljb24sXG4gIHZhbHVlOiBcImVsbGlwc2VcIixcbiAga2V5OiBLRVlTLk8sXG4gIG51bWVyaWNLZXk6IEtFWVNbXCI0XCJdLFxuICBmaWxsYWJsZTogdHJ1ZVxufSwge1xuICBpY29uOiBBcnJvd0ljb24sXG4gIHZhbHVlOiBcImFycm93XCIsXG4gIGtleTogS0VZUy5BLFxuICBudW1lcmljS2V5OiBLRVlTW1wiNVwiXSxcbiAgZmlsbGFibGU6IHRydWVcbn0sIHtcbiAgaWNvbjogTGluZUljb24sXG4gIHZhbHVlOiBcImxpbmVcIixcbiAga2V5OiBLRVlTLkwsXG4gIG51bWVyaWNLZXk6IEtFWVNbXCI2XCJdLFxuICBmaWxsYWJsZTogdHJ1ZVxufSwge1xuICBpY29uOiBGcmVlZHJhd0ljb24sXG4gIHZhbHVlOiBcImZyZWVkcmF3XCIsXG4gIGtleTogW0tFWVMuUCwgS0VZUy5YXSxcbiAgbnVtZXJpY0tleTogS0VZU1tcIjdcIl0sXG4gIGZpbGxhYmxlOiBmYWxzZVxufSwge1xuICBpY29uOiBUZXh0SWNvbixcbiAgdmFsdWU6IFwidGV4dFwiLFxuICBrZXk6IEtFWVMuVCxcbiAgbnVtZXJpY0tleTogS0VZU1tcIjhcIl0sXG4gIGZpbGxhYmxlOiBmYWxzZVxufSwge1xuICBpY29uOiBJbWFnZUljb24sXG4gIHZhbHVlOiBcImltYWdlXCIsXG4gIGtleTogbnVsbCxcbiAgbnVtZXJpY0tleTogS0VZU1tcIjlcIl0sXG4gIGZpbGxhYmxlOiBmYWxzZVxufSwge1xuICBpY29uOiBFcmFzZXJJY29uLFxuICB2YWx1ZTogXCJlcmFzZXJcIixcbiAga2V5OiBLRVlTLkUsXG4gIG51bWVyaWNLZXk6IEtFWVNbXCIwXCJdLFxuICBmaWxsYWJsZTogZmFsc2Vcbn0gLy8gVE9ETzogZnJhbWUsIGNyZWF0ZSBpY29uIGFuZCBzZXQgdXAgbnVtZXJpYyBrZXlcbi8vIHtcbi8vICAgaWNvbjogUmVjdGFuZ2xlSWNvbixcbi8vICAgdmFsdWU6IFwiZnJhbWVcIixcbi8vICAga2V5OiBLRVlTLkYsXG4vLyAgIG51bWVyaWNLZXk6IEtFWVMuU1VCVFJBQ1QsXG4vLyAgIGZpbGxhYmxlOiBmYWxzZSxcbi8vIH0sXG5dO1xuZXhwb3J0IGNvbnN0IGZpbmRTaGFwZUJ5S2V5ID0ga2V5ID0+IHtcbiAgY29uc3Qgc2hhcGUgPSBTSEFQRVMuZmluZCgoc2hhcGUsIGluZGV4KSA9PiB7XG4gICAgcmV0dXJuIHNoYXBlLm51bWVyaWNLZXkgIT0gbnVsbCAmJiBrZXkgPT09IHNoYXBlLm51bWVyaWNLZXkudG9TdHJpbmcoKSB8fCBzaGFwZS5rZXkgJiYgKHR5cGVvZiBzaGFwZS5rZXkgPT09IFwic3RyaW5nXCIgPyBzaGFwZS5rZXkgPT09IGtleSA6IHNoYXBlLmtleS5pbmNsdWRlcyhrZXkpKTtcbiAgfSk7XG4gIHJldHVybiAoc2hhcGUgPT09IG51bGwgfHwgc2hhcGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNoYXBlLnZhbHVlKSB8fCBudWxsO1xufTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../shapes.tsx\n');
              }
            ),
            /***/
            "../../snapping.ts": (
              /*!*************************!*\
                !*** ../../snapping.ts ***!
                \*************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "SnapCache": () => (/* binding */ SnapCache),
/* harmony export */   "areRoughlyEqual": () => (/* binding */ areRoughlyEqual),
/* harmony export */   "getElementsCorners": () => (/* binding */ getElementsCorners),
/* harmony export */   "getReferenceSnapPoints": () => (/* binding */ getReferenceSnapPoints),
/* harmony export */   "getSnapDistance": () => (/* binding */ getSnapDistance),
/* harmony export */   "getSnapLinesAtPointer": () => (/* binding */ getSnapLinesAtPointer),
/* harmony export */   "getVisibleGaps": () => (/* binding */ getVisibleGaps),
/* harmony export */   "isActiveToolNonLinearSnappable": () => (/* binding */ isActiveToolNonLinearSnappable),
/* harmony export */   "isSnappingEnabled": () => (/* binding */ isSnappingEnabled),
/* harmony export */   "snapDraggedElements": () => (/* binding */ snapDraggedElements),
/* harmony export */   "snapNewElement": () => (/* binding */ snapNewElement),
/* harmony export */   "snapResizingElements": () => (/* binding */ snapResizingElements)
/* harmony export */ });
/* harmony import */ var _element_bounds__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./element/bounds */ "../../element/bounds.ts");
/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./element/typeChecks */ "../../element/typeChecks.ts");
/* harmony import */ var _groups__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./groups */ "../../groups.ts");
/* harmony import */ var _keys__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./keys */ "../../keys.ts");
/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./math */ "../../math.ts");
/* harmony import */ var _scene_selection__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./scene/selection */ "../../scene/selection.ts");






const SNAP_DISTANCE = 8; // do not comput more gaps per axis than this limit
// TODO increase or remove once we optimize

const VISIBLE_GAPS_LIMIT_PER_AXIS = 99999; // snap distance with zoom value taken into consideration

const getSnapDistance = zoomValue => {
  return SNAP_DISTANCE / zoomValue;
}; // -----------------------------------------------------------------------------

class SnapCache {}
SnapCache.referenceSnapPoints = null;
SnapCache.visibleGaps = null;

SnapCache.setReferenceSnapPoints = snapPoints => {
  SnapCache.referenceSnapPoints = snapPoints;
};

SnapCache.getReferenceSnapPoints = () => {
  return SnapCache.referenceSnapPoints;
};

SnapCache.setVisibleGaps = gaps => {
  SnapCache.visibleGaps = gaps;
};

SnapCache.getVisibleGaps = () => {
  return SnapCache.visibleGaps;
};

SnapCache.destroy = () => {
  SnapCache.referenceSnapPoints = null;
  SnapCache.visibleGaps = null;
}; // -----------------------------------------------------------------------------


const isSnappingEnabled = ({
  event,
  appState,
  selectedElements
}) => {
  if (event) {
    return appState.objectsSnapModeEnabled && !event[_keys__WEBPACK_IMPORTED_MODULE_3__.KEYS.CTRL_OR_CMD] || !appState.objectsSnapModeEnabled && event[_keys__WEBPACK_IMPORTED_MODULE_3__.KEYS.CTRL_OR_CMD] && appState.gridSize === null;
  } // do not suggest snaps for an arrow to give way to binding


  if (selectedElements.length === 1 && selectedElements[0].type === "arrow") {
    return false;
  }

  return appState.objectsSnapModeEnabled;
};
const areRoughlyEqual = (a, b, precision = 0.01) => {
  return Math.abs(a - b) <= precision;
};
const getElementsCorners = (elements, {
  omitCenter,
  boundingBoxCorners,
  dragOffset
} = {
  omitCenter: false,
  boundingBoxCorners: false
}) => {
  let result = [];

  if (elements.length === 1) {
    const element = elements[0];
    let [x1, y1, x2, y2, cx, cy] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_0__.getElementAbsoluteCoords)(element);

    if (dragOffset) {
      x1 += dragOffset.x;
      x2 += dragOffset.x;
      cx += dragOffset.x;
      y1 += dragOffset.y;
      y2 += dragOffset.y;
      cy += dragOffset.y;
    }

    const halfWidth = (x2 - x1) / 2;
    const halfHeight = (y2 - y1) / 2;

    if ((element.type === "diamond" || element.type === "ellipse") && !boundingBoxCorners) {
      const leftMid = (0,_math__WEBPACK_IMPORTED_MODULE_4__.rotatePoint)([x1, y1 + halfHeight], [cx, cy], element.angle);
      const topMid = (0,_math__WEBPACK_IMPORTED_MODULE_4__.rotatePoint)([x1 + halfWidth, y1], [cx, cy], element.angle);
      const rightMid = (0,_math__WEBPACK_IMPORTED_MODULE_4__.rotatePoint)([x2, y1 + halfHeight], [cx, cy], element.angle);
      const bottomMid = (0,_math__WEBPACK_IMPORTED_MODULE_4__.rotatePoint)([x1 + halfWidth, y2], [cx, cy], element.angle);
      const center = [cx, cy];
      result = omitCenter ? [leftMid, topMid, rightMid, bottomMid] : [leftMid, topMid, rightMid, bottomMid, center];
    } else {
      const topLeft = (0,_math__WEBPACK_IMPORTED_MODULE_4__.rotatePoint)([x1, y1], [cx, cy], element.angle);
      const topRight = (0,_math__WEBPACK_IMPORTED_MODULE_4__.rotatePoint)([x2, y1], [cx, cy], element.angle);
      const bottomLeft = (0,_math__WEBPACK_IMPORTED_MODULE_4__.rotatePoint)([x1, y2], [cx, cy], element.angle);
      const bottomRight = (0,_math__WEBPACK_IMPORTED_MODULE_4__.rotatePoint)([x2, y2], [cx, cy], element.angle);
      const center = [cx, cy];
      result = omitCenter ? [topLeft, topRight, bottomLeft, bottomRight] : [topLeft, topRight, bottomLeft, bottomRight, center];
    }
  } else if (elements.length > 1) {
    const [minX, minY, maxX, maxY] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_0__.getDraggedElementsBounds)(elements, dragOffset !== null && dragOffset !== void 0 ? dragOffset : {
      x: 0,
      y: 0
    });
    const width = maxX - minX;
    const height = maxY - minY;
    const topLeft = [minX, minY];
    const topRight = [maxX, minY];
    const bottomLeft = [minX, maxY];
    const bottomRight = [maxX, maxY];
    const center = [minX + width / 2, minY + height / 2];
    result = omitCenter ? [topLeft, topRight, bottomLeft, bottomRight] : [topLeft, topRight, bottomLeft, bottomRight, center];
  }

  return result.map(point => [round(point[0]), round(point[1])]);
};

const getReferenceElements = (elements, selectedElements, appState) => {
  const selectedFrames = selectedElements.filter(element => (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isFrameElement)(element)).map(frame => frame.id);
  return (0,_scene_selection__WEBPACK_IMPORTED_MODULE_5__.getVisibleAndNonSelectedElements)(elements, selectedElements, appState).filter(element => !(element.frameId && selectedFrames.includes(element.frameId)));
};

const getVisibleGaps = (elements, selectedElements, appState) => {
  const referenceElements = getReferenceElements(elements, selectedElements, appState);
  const referenceBounds = (0,_groups__WEBPACK_IMPORTED_MODULE_2__.getMaximumGroups)(referenceElements).filter(elementsGroup => !(elementsGroup.length === 1 && (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isBoundToContainer)(elementsGroup[0]))).map(group => (0,_element_bounds__WEBPACK_IMPORTED_MODULE_0__.getCommonBounds)(group).map(bound => round(bound)));
  const horizontallySorted = referenceBounds.sort((a, b) => a[0] - b[0]);
  const horizontalGaps = [];
  let c = 0;

  horizontal: for (let i = 0; i < horizontallySorted.length; i++) {
    const startBounds = horizontallySorted[i];

    for (let j = i + 1; j < horizontallySorted.length; j++) {
      if (++c > VISIBLE_GAPS_LIMIT_PER_AXIS) {
        break horizontal;
      }

      const endBounds = horizontallySorted[j];
      const [, startMinY, startMaxX, startMaxY] = startBounds;
      const [endMinX, endMinY,, endMaxY] = endBounds;

      if (startMaxX < endMinX && (0,_math__WEBPACK_IMPORTED_MODULE_4__.rangesOverlap)([startMinY, startMaxY], [endMinY, endMaxY])) {
        horizontalGaps.push({
          startBounds,
          endBounds,
          startSide: [[startMaxX, startMinY], [startMaxX, startMaxY]],
          endSide: [[endMinX, endMinY], [endMinX, endMaxY]],
          length: endMinX - startMaxX,
          overlap: (0,_math__WEBPACK_IMPORTED_MODULE_4__.rangeIntersection)([startMinY, startMaxY], [endMinY, endMaxY])
        });
      }
    }
  }

  const verticallySorted = referenceBounds.sort((a, b) => a[1] - b[1]);
  const verticalGaps = [];
  c = 0;

  vertical: for (let i = 0; i < verticallySorted.length; i++) {
    const startBounds = verticallySorted[i];

    for (let j = i + 1; j < verticallySorted.length; j++) {
      if (++c > VISIBLE_GAPS_LIMIT_PER_AXIS) {
        break vertical;
      }

      const endBounds = verticallySorted[j];
      const [startMinX,, startMaxX, startMaxY] = startBounds;
      const [endMinX, endMinY, endMaxX] = endBounds;

      if (startMaxY < endMinY && (0,_math__WEBPACK_IMPORTED_MODULE_4__.rangesOverlap)([startMinX, startMaxX], [endMinX, endMaxX])) {
        verticalGaps.push({
          startBounds,
          endBounds,
          startSide: [[startMinX, startMaxY], [startMaxX, startMaxY]],
          endSide: [[endMinX, endMinY], [endMaxX, endMinY]],
          length: endMinY - startMaxY,
          overlap: (0,_math__WEBPACK_IMPORTED_MODULE_4__.rangeIntersection)([startMinX, startMaxX], [endMinX, endMaxX])
        });
      }
    }
  }

  return {
    horizontalGaps,
    verticalGaps
  };
};

const getGapSnaps = (selectedElements, dragOffset, appState, event, nearestSnapsX, nearestSnapsY, minOffset) => {
  if (!isSnappingEnabled({
    appState,
    event,
    selectedElements
  })) {
    return [];
  }

  if (selectedElements.length === 0) {
    return [];
  }

  const visibleGaps = SnapCache.getVisibleGaps();

  if (visibleGaps) {
    const {
      horizontalGaps,
      verticalGaps
    } = visibleGaps;
    const [minX, minY, maxX, maxY] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_0__.getDraggedElementsBounds)(selectedElements, dragOffset).map(bound => round(bound));
    const centerX = (minX + maxX) / 2;
    const centerY = (minY + maxY) / 2;

    for (const gap of horizontalGaps) {
      if (!(0,_math__WEBPACK_IMPORTED_MODULE_4__.rangesOverlap)([minY, maxY], gap.overlap)) {
        continue;
      } // center gap


      const gapMidX = gap.startSide[0][0] + gap.length / 2;
      const centerOffset = round(gapMidX - centerX);
      const gapIsLargerThanSelection = gap.length > maxX - minX;

      if (gapIsLargerThanSelection && Math.abs(centerOffset) <= minOffset.x) {
        if (Math.abs(centerOffset) < minOffset.x) {
          nearestSnapsX.length = 0;
        }

        minOffset.x = Math.abs(centerOffset);
        const snap = {
          type: "gap",
          direction: "center_horizontal",
          gap,
          offset: centerOffset
        };
        nearestSnapsX.push(snap);
        continue;
      } // side gap, from the right


      const [,, endMaxX] = gap.endBounds;
      const distanceToEndElementX = minX - endMaxX;
      const sideOffsetRight = round(gap.length - distanceToEndElementX);

      if (Math.abs(sideOffsetRight) <= minOffset.x) {
        if (Math.abs(sideOffsetRight) < minOffset.x) {
          nearestSnapsX.length = 0;
        }

        minOffset.x = Math.abs(sideOffsetRight);
        const snap = {
          type: "gap",
          direction: "side_right",
          gap,
          offset: sideOffsetRight
        };
        nearestSnapsX.push(snap);
        continue;
      } // side gap, from the left


      const [startMinX,,,] = gap.startBounds;
      const distanceToStartElementX = startMinX - maxX;
      const sideOffsetLeft = round(distanceToStartElementX - gap.length);

      if (Math.abs(sideOffsetLeft) <= minOffset.x) {
        if (Math.abs(sideOffsetLeft) < minOffset.x) {
          nearestSnapsX.length = 0;
        }

        minOffset.x = Math.abs(sideOffsetLeft);
        const snap = {
          type: "gap",
          direction: "side_left",
          gap,
          offset: sideOffsetLeft
        };
        nearestSnapsX.push(snap);
        continue;
      }
    }

    for (const gap of verticalGaps) {
      if (!(0,_math__WEBPACK_IMPORTED_MODULE_4__.rangesOverlap)([minX, maxX], gap.overlap)) {
        continue;
      } // center gap


      const gapMidY = gap.startSide[0][1] + gap.length / 2;
      const centerOffset = round(gapMidY - centerY);
      const gapIsLargerThanSelection = gap.length > maxY - minY;

      if (gapIsLargerThanSelection && Math.abs(centerOffset) <= minOffset.y) {
        if (Math.abs(centerOffset) < minOffset.y) {
          nearestSnapsY.length = 0;
        }

        minOffset.y = Math.abs(centerOffset);
        const snap = {
          type: "gap",
          direction: "center_vertical",
          gap,
          offset: centerOffset
        };
        nearestSnapsY.push(snap);
        continue;
      } // side gap, from the top


      const [, startMinY,,] = gap.startBounds;
      const distanceToStartElementY = startMinY - maxY;
      const sideOffsetTop = round(distanceToStartElementY - gap.length);

      if (Math.abs(sideOffsetTop) <= minOffset.y) {
        if (Math.abs(sideOffsetTop) < minOffset.y) {
          nearestSnapsY.length = 0;
        }

        minOffset.y = Math.abs(sideOffsetTop);
        const snap = {
          type: "gap",
          direction: "side_top",
          gap,
          offset: sideOffsetTop
        };
        nearestSnapsY.push(snap);
        continue;
      } // side gap, from the bottom


      const [,,, endMaxY] = gap.endBounds;
      const distanceToEndElementY = round(minY - endMaxY);
      const sideOffsetBottom = gap.length - distanceToEndElementY;

      if (Math.abs(sideOffsetBottom) <= minOffset.y) {
        if (Math.abs(sideOffsetBottom) < minOffset.y) {
          nearestSnapsY.length = 0;
        }

        minOffset.y = Math.abs(sideOffsetBottom);
        const snap = {
          type: "gap",
          direction: "side_bottom",
          gap,
          offset: sideOffsetBottom
        };
        nearestSnapsY.push(snap);
        continue;
      }
    }
  }
};

const getReferenceSnapPoints = (elements, selectedElements, appState) => {
  const referenceElements = getReferenceElements(elements, selectedElements, appState);
  return (0,_groups__WEBPACK_IMPORTED_MODULE_2__.getMaximumGroups)(referenceElements).filter(elementsGroup => !(elementsGroup.length === 1 && (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isBoundToContainer)(elementsGroup[0]))).flatMap(elementGroup => getElementsCorners(elementGroup));
};

const getPointSnaps = (selectedElements, selectionSnapPoints, appState, event, nearestSnapsX, nearestSnapsY, minOffset) => {
  if (!isSnappingEnabled({
    appState,
    event,
    selectedElements
  }) || selectedElements.length === 0 && selectionSnapPoints.length === 0) {
    return [];
  }

  const referenceSnapPoints = SnapCache.getReferenceSnapPoints();

  if (referenceSnapPoints) {
    for (const thisSnapPoint of selectionSnapPoints) {
      for (const otherSnapPoint of referenceSnapPoints) {
        const offsetX = otherSnapPoint[0] - thisSnapPoint[0];
        const offsetY = otherSnapPoint[1] - thisSnapPoint[1];

        if (Math.abs(offsetX) <= minOffset.x) {
          if (Math.abs(offsetX) < minOffset.x) {
            nearestSnapsX.length = 0;
          }

          nearestSnapsX.push({
            type: "point",
            points: [thisSnapPoint, otherSnapPoint],
            offset: offsetX
          });
          minOffset.x = Math.abs(offsetX);
        }

        if (Math.abs(offsetY) <= minOffset.y) {
          if (Math.abs(offsetY) < minOffset.y) {
            nearestSnapsY.length = 0;
          }

          nearestSnapsY.push({
            type: "point",
            points: [thisSnapPoint, otherSnapPoint],
            offset: offsetY
          });
          minOffset.y = Math.abs(offsetY);
        }
      }
    }
  }
};

const snapDraggedElements = (selectedElements, dragOffset, appState, event) => {
  var _a, _b, _c, _d;

  if (!isSnappingEnabled({
    appState,
    event,
    selectedElements
  }) || selectedElements.length === 0) {
    return {
      snapOffset: {
        x: 0,
        y: 0
      },
      snapLines: []
    };
  }

  dragOffset.x = round(dragOffset.x);
  dragOffset.y = round(dragOffset.y);
  const nearestSnapsX = [];
  const nearestSnapsY = [];
  const snapDistance = getSnapDistance(appState.zoom.value);
  const minOffset = {
    x: snapDistance,
    y: snapDistance
  };
  const selectionPoints = getElementsCorners(selectedElements, {
    dragOffset
  }); // get the nearest horizontal and vertical point and gap snaps

  getPointSnaps(selectedElements, selectionPoints, appState, event, nearestSnapsX, nearestSnapsY, minOffset);
  getGapSnaps(selectedElements, dragOffset, appState, event, nearestSnapsX, nearestSnapsY, minOffset); // using the nearest snaps to figure out how
  // much the elements need to be offset to be snapped
  // to some reference elements

  const snapOffset = {
    x: (_b = (_a = nearestSnapsX[0]) === null || _a === void 0 ? void 0 : _a.offset) !== null && _b !== void 0 ? _b : 0,
    y: (_d = (_c = nearestSnapsY[0]) === null || _c === void 0 ? void 0 : _c.offset) !== null && _d !== void 0 ? _d : 0
  }; // once the elements are snapped
  // and moved to the snapped position
  // we want to use the element's snapped position
  // to update nearest snaps so that we can create
  // point and gap snap lines correctly without any shifting

  minOffset.x = 0;
  minOffset.y = 0;
  nearestSnapsX.length = 0;
  nearestSnapsY.length = 0;
  const newDragOffset = {
    x: round(dragOffset.x + snapOffset.x),
    y: round(dragOffset.y + snapOffset.y)
  };
  getPointSnaps(selectedElements, getElementsCorners(selectedElements, {
    dragOffset: newDragOffset
  }), appState, event, nearestSnapsX, nearestSnapsY, minOffset);
  getGapSnaps(selectedElements, newDragOffset, appState, event, nearestSnapsX, nearestSnapsY, minOffset);
  const pointSnapLines = createPointSnapLines(nearestSnapsX, nearestSnapsY);
  const gapSnapLines = createGapSnapLines(selectedElements, newDragOffset, [...nearestSnapsX, ...nearestSnapsY].filter(snap => snap.type === "gap"));
  return {
    snapOffset,
    snapLines: [...pointSnapLines, ...gapSnapLines]
  };
};

const round = x => {
  const decimalPlaces = 6;
  return Math.round(x * Math.pow(10, decimalPlaces)) / Math.pow(10, decimalPlaces);
};

const dedupePoints = points => {
  const map = new Map();

  for (const point of points) {
    const key = point.join(",");

    if (!map.has(key)) {
      map.set(key, point);
    }
  }

  return Array.from(map.values());
};

const createPointSnapLines = (nearestSnapsX, nearestSnapsY) => {
  const snapsX = {};
  const snapsY = {};

  if (nearestSnapsX.length > 0) {
    for (const snap of nearestSnapsX) {
      if (snap.type === "point") {
        // key = thisPoint.x
        const key = round(snap.points[0][0]);

        if (!snapsX[key]) {
          snapsX[key] = [];
        }

        snapsX[key].push(...snap.points.map(point => [round(point[0]), round(point[1])]));
      }
    }
  }

  if (nearestSnapsY.length > 0) {
    for (const snap of nearestSnapsY) {
      if (snap.type === "point") {
        // key = thisPoint.y
        const key = round(snap.points[0][1]);

        if (!snapsY[key]) {
          snapsY[key] = [];
        }

        snapsY[key].push(...snap.points.map(point => [round(point[0]), round(point[1])]));
      }
    }
  }

  return Object.entries(snapsX).map(([key, points]) => {
    return {
      type: "points",
      points: dedupePoints(points.map(point => {
        return [Number(key), point[1]];
      }).sort((a, b) => a[1] - b[1]))
    };
  }).concat(Object.entries(snapsY).map(([key, points]) => {
    return {
      type: "points",
      points: dedupePoints(points.map(point => {
        return [point[0], Number(key)];
      }).sort((a, b) => a[0] - b[0]))
    };
  }));
};

const dedupeGapSnapLines = gapSnapLines => {
  const map = new Map();

  for (const gapSnapLine of gapSnapLines) {
    const key = gapSnapLine.points.flat().map(point => [round(point)]).join(",");

    if (!map.has(key)) {
      map.set(key, gapSnapLine);
    }
  }

  return Array.from(map.values());
};

const createGapSnapLines = (selectedElements, dragOffset, gapSnaps) => {
  const [minX, minY, maxX, maxY] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_0__.getDraggedElementsBounds)(selectedElements, dragOffset);
  const gapSnapLines = [];

  for (const gapSnap of gapSnaps) {
    const [startMinX, startMinY, startMaxX, startMaxY] = gapSnap.gap.startBounds;
    const [endMinX, endMinY, endMaxX, endMaxY] = gapSnap.gap.endBounds;
    const verticalIntersection = (0,_math__WEBPACK_IMPORTED_MODULE_4__.rangeIntersection)([minY, maxY], gapSnap.gap.overlap);
    const horizontalGapIntersection = (0,_math__WEBPACK_IMPORTED_MODULE_4__.rangeIntersection)([minX, maxX], gapSnap.gap.overlap);

    switch (gapSnap.direction) {
      case "center_horizontal":
        {
          if (verticalIntersection) {
            const gapLineY = (verticalIntersection[0] + verticalIntersection[1]) / 2;
            gapSnapLines.push({
              type: "gap",
              direction: "horizontal",
              points: [[gapSnap.gap.startSide[0][0], gapLineY], [minX, gapLineY]]
            }, {
              type: "gap",
              direction: "horizontal",
              points: [[maxX, gapLineY], [gapSnap.gap.endSide[0][0], gapLineY]]
            });
          }

          break;
        }

      case "center_vertical":
        {
          if (horizontalGapIntersection) {
            const gapLineX = (horizontalGapIntersection[0] + horizontalGapIntersection[1]) / 2;
            gapSnapLines.push({
              type: "gap",
              direction: "vertical",
              points: [[gapLineX, gapSnap.gap.startSide[0][1]], [gapLineX, minY]]
            }, {
              type: "gap",
              direction: "vertical",
              points: [[gapLineX, maxY], [gapLineX, gapSnap.gap.endSide[0][1]]]
            });
          }

          break;
        }

      case "side_right":
        {
          if (verticalIntersection) {
            const gapLineY = (verticalIntersection[0] + verticalIntersection[1]) / 2;
            gapSnapLines.push({
              type: "gap",
              direction: "horizontal",
              points: [[startMaxX, gapLineY], [endMinX, gapLineY]]
            }, {
              type: "gap",
              direction: "horizontal",
              points: [[endMaxX, gapLineY], [minX, gapLineY]]
            });
          }

          break;
        }

      case "side_left":
        {
          if (verticalIntersection) {
            const gapLineY = (verticalIntersection[0] + verticalIntersection[1]) / 2;
            gapSnapLines.push({
              type: "gap",
              direction: "horizontal",
              points: [[maxX, gapLineY], [startMinX, gapLineY]]
            }, {
              type: "gap",
              direction: "horizontal",
              points: [[startMaxX, gapLineY], [endMinX, gapLineY]]
            });
          }

          break;
        }

      case "side_top":
        {
          if (horizontalGapIntersection) {
            const gapLineX = (horizontalGapIntersection[0] + horizontalGapIntersection[1]) / 2;
            gapSnapLines.push({
              type: "gap",
              direction: "vertical",
              points: [[gapLineX, maxY], [gapLineX, startMinY]]
            }, {
              type: "gap",
              direction: "vertical",
              points: [[gapLineX, startMaxY], [gapLineX, endMinY]]
            });
          }

          break;
        }

      case "side_bottom":
        {
          if (horizontalGapIntersection) {
            const gapLineX = (horizontalGapIntersection[0] + horizontalGapIntersection[1]) / 2;
            gapSnapLines.push({
              type: "gap",
              direction: "vertical",
              points: [[gapLineX, startMaxY], [gapLineX, endMinY]]
            }, {
              type: "gap",
              direction: "vertical",
              points: [[gapLineX, endMaxY], [gapLineX, minY]]
            });
          }

          break;
        }
    }
  }

  return dedupeGapSnapLines(gapSnapLines.map(gapSnapLine => {
    return Object.assign(Object.assign({}, gapSnapLine), {
      points: gapSnapLine.points.map(point => [round(point[0]), round(point[1])])
    });
  }));
};

const snapResizingElements = ( // use the latest elements to create snap lines
selectedElements, // while using the original elements to appy dragOffset to calculate snaps
selectedOriginalElements, appState, event, dragOffset, transformHandle) => {
  var _a, _b, _c, _d;

  if (!isSnappingEnabled({
    event,
    selectedElements,
    appState
  }) || selectedElements.length === 0 || selectedElements.length === 1 && !areRoughlyEqual(selectedElements[0].angle, 0)) {
    return {
      snapOffset: {
        x: 0,
        y: 0
      },
      snapLines: []
    };
  }

  let [minX, minY, maxX, maxY] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_0__.getCommonBounds)(selectedOriginalElements);

  if (transformHandle) {
    if (transformHandle.includes("e")) {
      maxX += dragOffset.x;
    } else if (transformHandle.includes("w")) {
      minX += dragOffset.x;
    }

    if (transformHandle.includes("n")) {
      minY += dragOffset.y;
    } else if (transformHandle.includes("s")) {
      maxY += dragOffset.y;
    }
  }

  const selectionSnapPoints = [];

  if (transformHandle) {
    switch (transformHandle) {
      case "e":
        {
          selectionSnapPoints.push([maxX, minY], [maxX, maxY]);
          break;
        }

      case "w":
        {
          selectionSnapPoints.push([minX, minY], [minX, maxY]);
          break;
        }

      case "n":
        {
          selectionSnapPoints.push([minX, minY], [maxX, minY]);
          break;
        }

      case "s":
        {
          selectionSnapPoints.push([minX, maxY], [maxX, maxY]);
          break;
        }

      case "ne":
        {
          selectionSnapPoints.push([maxX, minY]);
          break;
        }

      case "nw":
        {
          selectionSnapPoints.push([minX, minY]);
          break;
        }

      case "se":
        {
          selectionSnapPoints.push([maxX, maxY]);
          break;
        }

      case "sw":
        {
          selectionSnapPoints.push([minX, maxY]);
          break;
        }
    }
  }

  const snapDistance = getSnapDistance(appState.zoom.value);
  const minOffset = {
    x: snapDistance,
    y: snapDistance
  };
  const nearestSnapsX = [];
  const nearestSnapsY = [];
  getPointSnaps(selectedOriginalElements, selectionSnapPoints, appState, event, nearestSnapsX, nearestSnapsY, minOffset);
  const snapOffset = {
    x: (_b = (_a = nearestSnapsX[0]) === null || _a === void 0 ? void 0 : _a.offset) !== null && _b !== void 0 ? _b : 0,
    y: (_d = (_c = nearestSnapsY[0]) === null || _c === void 0 ? void 0 : _c.offset) !== null && _d !== void 0 ? _d : 0
  }; // again, once snap offset is calculated
  // reset to recompute for creating snap lines to be rendered

  minOffset.x = 0;
  minOffset.y = 0;
  nearestSnapsX.length = 0;
  nearestSnapsY.length = 0;
  const [x1, y1, x2, y2] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_0__.getCommonBounds)(selectedElements).map(bound => round(bound));
  const corners = [[x1, y1], [x1, y2], [x2, y1], [x2, y2]];
  getPointSnaps(selectedElements, corners, appState, event, nearestSnapsX, nearestSnapsY, minOffset);
  const pointSnapLines = createPointSnapLines(nearestSnapsX, nearestSnapsY);
  return {
    snapOffset,
    snapLines: pointSnapLines
  };
};
const snapNewElement = (draggingElement, appState, event, origin, dragOffset) => {
  var _a, _b, _c, _d;

  if (!isSnappingEnabled({
    event,
    selectedElements: [draggingElement],
    appState
  })) {
    return {
      snapOffset: {
        x: 0,
        y: 0
      },
      snapLines: []
    };
  }

  const selectionSnapPoints = [[origin.x + dragOffset.x, origin.y + dragOffset.y]];
  const snapDistance = getSnapDistance(appState.zoom.value);
  const minOffset = {
    x: snapDistance,
    y: snapDistance
  };
  const nearestSnapsX = [];
  const nearestSnapsY = [];
  getPointSnaps([draggingElement], selectionSnapPoints, appState, event, nearestSnapsX, nearestSnapsY, minOffset);
  const snapOffset = {
    x: (_b = (_a = nearestSnapsX[0]) === null || _a === void 0 ? void 0 : _a.offset) !== null && _b !== void 0 ? _b : 0,
    y: (_d = (_c = nearestSnapsY[0]) === null || _c === void 0 ? void 0 : _c.offset) !== null && _d !== void 0 ? _d : 0
  };
  minOffset.x = 0;
  minOffset.y = 0;
  nearestSnapsX.length = 0;
  nearestSnapsY.length = 0;
  const corners = getElementsCorners([draggingElement], {
    boundingBoxCorners: true,
    omitCenter: true
  });
  getPointSnaps([draggingElement], corners, appState, event, nearestSnapsX, nearestSnapsY, minOffset);
  const pointSnapLines = createPointSnapLines(nearestSnapsX, nearestSnapsY);
  return {
    snapOffset,
    snapLines: pointSnapLines
  };
};
const getSnapLinesAtPointer = (elements, appState, pointer, event) => {
  if (!isSnappingEnabled({
    event,
    selectedElements: [],
    appState
  })) {
    return {
      originOffset: {
        x: 0,
        y: 0
      },
      snapLines: []
    };
  }

  const referenceElements = (0,_scene_selection__WEBPACK_IMPORTED_MODULE_5__.getVisibleAndNonSelectedElements)(elements, [], appState);
  const snapDistance = getSnapDistance(appState.zoom.value);
  const minOffset = {
    x: snapDistance,
    y: snapDistance
  };
  const horizontalSnapLines = [];
  const verticalSnapLines = [];

  for (const referenceElement of referenceElements) {
    const corners = getElementsCorners([referenceElement]);

    for (const corner of corners) {
      const offsetX = corner[0] - pointer.x;

      if (Math.abs(offsetX) <= Math.abs(minOffset.x)) {
        if (Math.abs(offsetX) < Math.abs(minOffset.x)) {
          verticalSnapLines.length = 0;
        }

        verticalSnapLines.push({
          type: "pointer",
          points: [corner, [corner[0], pointer.y]],
          direction: "vertical"
        });
        minOffset.x = offsetX;
      }

      const offsetY = corner[1] - pointer.y;

      if (Math.abs(offsetY) <= Math.abs(minOffset.y)) {
        if (Math.abs(offsetY) < Math.abs(minOffset.y)) {
          horizontalSnapLines.length = 0;
        }

        horizontalSnapLines.push({
          type: "pointer",
          points: [corner, [pointer.x, corner[1]]],
          direction: "horizontal"
        });
        minOffset.y = offsetY;
      }
    }
  }

  return {
    originOffset: {
      x: verticalSnapLines.length > 0 ? verticalSnapLines[0].points[0][0] - pointer.x : 0,
      y: horizontalSnapLines.length > 0 ? horizontalSnapLines[0].points[0][1] - pointer.y : 0
    },
    snapLines: [...verticalSnapLines, ...horizontalSnapLines]
  };
};
const isActiveToolNonLinearSnappable = activeToolType => {
  return activeToolType === "rectangle" || activeToolType === "ellipse" || activeToolType === "diamond" || activeToolType === "frame" || activeToolType === "image";
};//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 46012 characters]
//# sourceURL=webpack-internal:///../../snapping.ts
`);
              }
            ),
            /***/
            "../../types.ts": (
              /*!**********************!*\
                !*** ../../types.ts ***!
                \**********************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "UserIdleState": () => (/* binding */ UserIdleState)\n/* harmony export */ });\nvar UserIdleState;\n\n(function (UserIdleState) {\n  UserIdleState["ACTIVE"] = "active";\n  UserIdleState["AWAY"] = "away";\n  UserIdleState["IDLE"] = "idle";\n})(UserIdleState || (UserIdleState = {}));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vdHlwZXMudHMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxzQ0FBc0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vdHlwZXMudHM/M2ZkOCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdmFyIFVzZXJJZGxlU3RhdGU7XG5cbihmdW5jdGlvbiAoVXNlcklkbGVTdGF0ZSkge1xuICBVc2VySWRsZVN0YXRlW1wiQUNUSVZFXCJdID0gXCJhY3RpdmVcIjtcbiAgVXNlcklkbGVTdGF0ZVtcIkFXQVlcIl0gPSBcImF3YXlcIjtcbiAgVXNlcklkbGVTdGF0ZVtcIklETEVcIl0gPSBcImlkbGVcIjtcbn0pKFVzZXJJZGxlU3RhdGUgfHwgKFVzZXJJZGxlU3RhdGUgPSB7fSkpOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../types.ts\n');
              }
            ),
            /***/
            "../../utils.ts": (
              /*!**********************!*\
                !*** ../../utils.ts ***!
                \**********************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "allowFullScreen": () => (/* binding */ allowFullScreen),\n/* harmony export */   "arrayToMap": () => (/* binding */ arrayToMap),\n/* harmony export */   "arrayToMapWithIndex": () => (/* binding */ arrayToMapWithIndex),\n/* harmony export */   "assertNever": () => (/* binding */ assertNever),\n/* harmony export */   "bytesToHexString": () => (/* binding */ bytesToHexString),\n/* harmony export */   "capitalizeString": () => (/* binding */ capitalizeString),\n/* harmony export */   "chunk": () => (/* binding */ chunk),\n/* harmony export */   "cloneJSON": () => (/* binding */ cloneJSON),\n/* harmony export */   "composeEventHandlers": () => (/* binding */ composeEventHandlers),\n/* harmony export */   "debounce": () => (/* binding */ debounce),\n/* harmony export */   "distance": () => (/* binding */ distance),\n/* harmony export */   "easeOut": () => (/* binding */ easeOut),\n/* harmony export */   "easeToValuesRAF": () => (/* binding */ easeToValuesRAF),\n/* harmony export */   "exitFullScreen": () => (/* binding */ exitFullScreen),\n/* harmony export */   "findIndex": () => (/* binding */ findIndex),\n/* harmony export */   "findLastIndex": () => (/* binding */ findLastIndex),\n/* harmony export */   "focusNearestParent": () => (/* binding */ focusNearestParent),\n/* harmony export */   "getDateTime": () => (/* binding */ getDateTime),\n/* harmony export */   "getFontFamilyString": () => (/* binding */ getFontFamilyString),\n/* harmony export */   "getFontString": () => (/* binding */ getFontString),\n/* harmony export */   "getFrame": () => (/* binding */ getFrame),\n/* harmony export */   "getGlobalCSSVariable": () => (/* binding */ getGlobalCSSVariable),\n/* harmony export */   "getNearestScrollableContainer": () => (/* binding */ getNearestScrollableContainer),\n/* harmony export */   "getShortcutKey": () => (/* binding */ getShortcutKey),\n/* harmony export */   "getUpdatedTimestamp": () => (/* binding */ getUpdatedTimestamp),\n/* harmony export */   "getVersion": () => (/* binding */ getVersion),\n/* harmony export */   "isFullScreen": () => (/* binding */ isFullScreen),\n/* harmony export */   "isInputLike": () => (/* binding */ isInputLike),\n/* harmony export */   "isInteractive": () => (/* binding */ isInteractive),\n/* harmony export */   "isMemberOf": () => (/* binding */ isMemberOf),\n/* harmony export */   "isOnlyExportingSingleFrame": () => (/* binding */ isOnlyExportingSingleFrame),\n/* harmony export */   "isPrimitive": () => (/* binding */ isPrimitive),\n/* harmony export */   "isPromiseLike": () => (/* binding */ isPromiseLike),\n/* harmony export */   "isRTL": () => (/* binding */ isRTL),\n/* harmony export */   "isRenderThrottlingEnabled": () => (/* binding */ isRenderThrottlingEnabled),\n/* harmony export */   "isRunningInIframe": () => (/* binding */ isRunningInIframe),\n/* harmony export */   "isShallowEqual": () => (/* binding */ isShallowEqual),\n/* harmony export */   "isTestEnv": () => (/* binding */ isTestEnv),\n/* harmony export */   "isToolIcon": () => (/* binding */ isToolIcon),\n/* harmony export */   "isTransparent": () => (/* binding */ isTransparent),\n/* harmony export */   "isWritableElement": () => (/* binding */ isWritableElement),\n/* harmony export */   "memoize": () => (/* binding */ memoize),\n/* harmony export */   "muteFSAbortError": () => (/* binding */ muteFSAbortError),\n/* harmony export */   "nFormatter": () => (/* binding */ nFormatter),\n/* harmony export */   "preventUnload": () => (/* binding */ preventUnload),\n/* harmony export */   "queryFocusableElements": () => (/* binding */ queryFocusableElements),\n/* harmony export */   "removeSelection": () => (/* binding */ removeSelection),\n/* harmony export */   "resolvablePromise": () => (/* binding */ resolvablePromise),\n/* harmony export */   "sceneCoordsToViewportCoords": () => (/* binding */ sceneCoordsToViewportCoords),\n/* harmony export */   "selectNode": () => (/* binding */ selectNode),\n/* harmony export */   "setDateTimeForTests": () => (/* binding */ setDateTimeForTests),\n/* harmony export */   "supportsEmoji": () => (/* binding */ supportsEmoji),\n/* harmony export */   "throttleRAF": () => (/* binding */ throttleRAF),\n/* harmony export */   "tupleToCoors": () => (/* binding */ tupleToCoors),\n/* harmony export */   "updateActiveTool": () => (/* binding */ updateActiveTool),\n/* harmony export */   "updateObject": () => (/* binding */ updateObject),\n/* harmony export */   "viewportCoordsToSceneCoords": () => (/* binding */ viewportCoordsToSceneCoords),\n/* harmony export */   "withBatchedUpdates": () => (/* binding */ withBatchedUpdates),\n/* harmony export */   "withBatchedUpdatesThrottled": () => (/* binding */ withBatchedUpdatesThrottled),\n/* harmony export */   "wrapEvent": () => (/* binding */ wrapEvent)\n/* harmony export */ });\n/* harmony import */ var _colors__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./colors */ "../../colors.ts");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constants */ "../../constants.ts");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-dom */ "react-dom");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_3__);\n\n\n\n\nlet mockDateTime = null;\nconst setDateTimeForTests = dateTime => {\n  mockDateTime = dateTime;\n};\nconst getDateTime = () => {\n  if (mockDateTime) {\n    return mockDateTime;\n  }\n\n  const date = new Date();\n  const year = date.getFullYear();\n  const month = `${date.getMonth() + 1}`.padStart(2, "0");\n  const day = `${date.getDate()}`.padStart(2, "0");\n  const hr = `${date.getHours()}`.padStart(2, "0");\n  const min = `${date.getMinutes()}`.padStart(2, "0");\n  return `${year}-${month}-${day}-${hr}${min}`;\n};\nconst capitalizeString = str => str.charAt(0).toUpperCase() + str.slice(1);\nconst isToolIcon = target => target instanceof HTMLElement && target.className.includes("ToolIcon");\nconst isInputLike = target => target instanceof HTMLElement && target.dataset.type === "wysiwyg" || target instanceof HTMLBRElement || // newline in wysiwyg\ntarget instanceof HTMLInputElement || target instanceof HTMLTextAreaElement || target instanceof HTMLSelectElement;\nconst isInteractive = target => {\n  return isInputLike(target) || target instanceof Element && !!target.closest("label, button");\n};\nconst isWritableElement = target => target instanceof HTMLElement && target.dataset.type === "wysiwyg" || target instanceof HTMLBRElement || // newline in wysiwyg\ntarget instanceof HTMLTextAreaElement || target instanceof HTMLInputElement && (target.type === "text" || target.type === "number");\nconst getFontFamilyString = ({\n  fontFamily\n}) => {\n  for (const [fontFamilyString, id] of Object.entries(_constants__WEBPACK_IMPORTED_MODULE_1__.FONT_FAMILY)) {\n    if (id === fontFamily) {\n      return `${fontFamilyString}, ${_constants__WEBPACK_IMPORTED_MODULE_1__.WINDOWS_EMOJI_FALLBACK_FONT}`;\n    }\n  }\n\n  return _constants__WEBPACK_IMPORTED_MODULE_1__.WINDOWS_EMOJI_FALLBACK_FONT;\n};\n/** returns fontSize+fontFamily string for assignment to DOM elements */\n\nconst getFontString = ({\n  fontSize,\n  fontFamily\n}) => {\n  return `${fontSize}px ${getFontFamilyString({\n    fontFamily\n  })}`;\n};\nconst debounce = (fn, timeout) => {\n  let handle = 0;\n  let lastArgs = null;\n\n  const ret = (...args) => {\n    lastArgs = args;\n    clearTimeout(handle);\n    handle = window.setTimeout(() => {\n      lastArgs = null;\n      fn(...args);\n    }, timeout);\n  };\n\n  ret.flush = () => {\n    clearTimeout(handle);\n\n    if (lastArgs) {\n      const _lastArgs = lastArgs;\n      lastArgs = null;\n      fn(..._lastArgs);\n    }\n  };\n\n  ret.cancel = () => {\n    lastArgs = null;\n    clearTimeout(handle);\n  };\n\n  return ret;\n}; // throttle callback to execute once per animation frame\n\nconst throttleRAF = (fn, opts) => {\n  let timerId = null;\n  let lastArgs = null;\n  let lastArgsTrailing = null;\n\n  const scheduleFunc = args => {\n    timerId = window.requestAnimationFrame(() => {\n      timerId = null;\n      fn(...args);\n      lastArgs = null;\n\n      if (lastArgsTrailing) {\n        lastArgs = lastArgsTrailing;\n        lastArgsTrailing = null;\n        scheduleFunc(lastArgs);\n      }\n    });\n  };\n\n  const ret = (...args) => {\n    if (false) {}\n\n    lastArgs = args;\n\n    if (timerId === null) {\n      scheduleFunc(lastArgs);\n    } else if (opts === null || opts === void 0 ? void 0 : opts.trailing) {\n      lastArgsTrailing = args;\n    }\n  };\n\n  ret.flush = () => {\n    if (timerId !== null) {\n      cancelAnimationFrame(timerId);\n      timerId = null;\n    }\n\n    if (lastArgs) {\n      fn(...(lastArgsTrailing || lastArgs));\n      lastArgs = lastArgsTrailing = null;\n    }\n  };\n\n  ret.cancel = () => {\n    lastArgs = lastArgsTrailing = null;\n\n    if (timerId !== null) {\n      cancelAnimationFrame(timerId);\n      timerId = null;\n    }\n  };\n\n  return ret;\n};\n/**\n * Exponential ease-out method\n *\n * @param {number} k - The value to be tweened.\n * @returns {number} The tweened value.\n */\n\nconst easeOut = k => {\n  return 1 - Math.pow(1 - k, 4);\n};\n\nconst easeOutInterpolate = (from, to, progress) => {\n  return (to - from) * easeOut(progress) + from;\n};\n/**\n * Animates values from `fromValues` to `toValues` using the requestAnimationFrame API.\n * Executes the `onStep` callback on each step with the interpolated values.\n * Returns a function that can be called to cancel the animation.\n *\n * @example\n * // Example usage:\n * const fromValues = { x: 0, y: 0 };\n * const toValues = { x: 100, y: 200 };\n * const onStep = ({x, y}) => {\n *   setState(x, y)\n * };\n * const onCancel = () => {\n *   console.log("Animation canceled");\n * };\n *\n * const cancelAnimation = easeToValuesRAF({\n *   fromValues,\n *   toValues,\n *   onStep,\n *   onCancel,\n * });\n *\n * // To cancel the animation:\n * cancelAnimation();\n */\n\n\nconst easeToValuesRAF = ({\n  fromValues,\n  toValues,\n  onStep,\n  duration = 250,\n  interpolateValue,\n  onStart,\n  onEnd,\n  onCancel\n}) => {\n  let canceled = false;\n  let frameId = 0;\n  let startTime;\n\n  function step(timestamp) {\n    if (canceled) {\n      return;\n    }\n\n    if (startTime === undefined) {\n      startTime = timestamp;\n      onStart === null || onStart === void 0 ? void 0 : onStart();\n    }\n\n    const elapsed = Math.min(timestamp - startTime, duration);\n    const factor = easeOut(elapsed / duration);\n    const newValues = {};\n    Object.keys(fromValues).forEach(key => {\n      const _key = key;\n      const result = (toValues[_key] - fromValues[_key]) * factor + fromValues[_key];\n      newValues[_key] = result;\n    });\n    onStep(newValues);\n\n    if (elapsed < duration) {\n      const progress = elapsed / duration;\n      const newValues = {};\n      Object.keys(fromValues).forEach(key => {\n        const _key = key;\n        const startValue = fromValues[_key];\n        const endValue = toValues[_key];\n        let result;\n        result = interpolateValue ? interpolateValue(startValue, endValue, progress, _key) : easeOutInterpolate(startValue, endValue, progress);\n\n        if (result == null) {\n          result = easeOutInterpolate(startValue, endValue, progress);\n        }\n\n        newValues[_key] = result;\n      });\n      onStep(newValues);\n      frameId = window.requestAnimationFrame(step);\n    } else {\n      onStep(toValues);\n      onEnd === null || onEnd === void 0 ? void 0 : onEnd();\n    }\n  }\n\n  frameId = window.requestAnimationFrame(step);\n  return () => {\n    onCancel === null || onCancel === void 0 ? void 0 : onCancel();\n    canceled = true;\n    window.cancelAnimationFrame(frameId);\n  };\n}; // https://github.com/lodash/lodash/blob/es/chunk.js\n\nconst chunk = (array, size) => {\n  if (!array.length || size < 1) {\n    return [];\n  }\n\n  let index = 0;\n  let resIndex = 0;\n  const result = Array(Math.ceil(array.length / size));\n\n  while (index < array.length) {\n    result[resIndex++] = array.slice(index, index += size);\n  }\n\n  return result;\n};\nconst selectNode = node => {\n  const selection = window.getSelection();\n\n  if (selection) {\n    const range = document.createRange();\n    range.selectNodeContents(node);\n    selection.removeAllRanges();\n    selection.addRange(range);\n  }\n};\nconst removeSelection = () => {\n  const selection = window.getSelection();\n\n  if (selection) {\n    selection.removeAllRanges();\n  }\n};\nconst distance = (x, y) => Math.abs(x - y);\nconst updateActiveTool = (appState, data) => {\n  var _a, _b;\n\n  if (data.type === "custom") {\n    return Object.assign(Object.assign({}, appState.activeTool), {\n      type: "custom",\n      customType: data.customType,\n      locked: (_a = data.locked) !== null && _a !== void 0 ? _a : appState.activeTool.locked\n    });\n  }\n\n  return Object.assign(Object.assign({}, appState.activeTool), {\n    lastActiveTool: data.lastActiveToolBeforeEraser === undefined ? appState.activeTool.lastActiveTool : data.lastActiveToolBeforeEraser,\n    type: data.type,\n    customType: null,\n    locked: (_b = data.locked) !== null && _b !== void 0 ? _b : appState.activeTool.locked\n  });\n};\nconst isFullScreen = () => {\n  var _a;\n\n  return ((_a = document.fullscreenElement) === null || _a === void 0 ? void 0 : _a.nodeName) === "HTML";\n};\nconst allowFullScreen = () => document.documentElement.requestFullscreen();\nconst exitFullScreen = () => document.exitFullscreen();\nconst getShortcutKey = shortcut => {\n  shortcut = shortcut.replace(/\\bAlt\\b/i, "Alt").replace(/\\bShift\\b/i, "Shift").replace(/\\b(Enter|Return)\\b/i, "Enter");\n\n  if (_constants__WEBPACK_IMPORTED_MODULE_1__.isDarwin) {\n    return shortcut.replace(/\\bCtrlOrCmd\\b/gi, "Cmd").replace(/\\bAlt\\b/i, "Option");\n  }\n\n  return shortcut.replace(/\\bCtrlOrCmd\\b/gi, "Ctrl");\n};\nconst viewportCoordsToSceneCoords = ({\n  clientX,\n  clientY\n}, {\n  zoom,\n  offsetLeft,\n  offsetTop,\n  scrollX,\n  scrollY\n}) => {\n  const x = (clientX - offsetLeft) / zoom.value - scrollX;\n  const y = (clientY - offsetTop) / zoom.value - scrollY;\n  return {\n    x,\n    y\n  };\n};\nconst sceneCoordsToViewportCoords = ({\n  sceneX,\n  sceneY\n}, {\n  zoom,\n  offsetLeft,\n  offsetTop,\n  scrollX,\n  scrollY\n}) => {\n  const x = (sceneX + scrollX) * zoom.value + offsetLeft;\n  const y = (sceneY + scrollY) * zoom.value + offsetTop;\n  return {\n    x,\n    y\n  };\n};\nconst getGlobalCSSVariable = name => getComputedStyle(document.documentElement).getPropertyValue(`--${name}`);\nconst RS_LTR_CHARS = "A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02B8\\u0300-\\u0590\\u0800-\\u1FFF" + "\\u2C00-\\uFB1C\\uFDFE-\\uFE6F\\uFEFD-\\uFFFF";\nconst RS_RTL_CHARS = "\\u0591-\\u07FF\\uFB1D-\\uFDFD\\uFE70-\\uFEFC";\nconst RE_RTL_CHECK = new RegExp(`^[^${RS_LTR_CHARS}]*[${RS_RTL_CHARS}]`);\n/**\n * Checks whether first directional character is RTL. Meaning whether it starts\n *  with RTL characters, or indeterminate (numbers etc.) characters followed by\n *  RTL.\n * See https://github.com/excalidraw/excalidraw/pull/1722#discussion_r436340171\n */\n\nconst isRTL = text => RE_RTL_CHECK.test(text);\nconst tupleToCoors = xyTuple => {\n  const [x, y] = xyTuple;\n  return {\n    x,\n    y\n  };\n};\n/** use as a rejectionHandler to mute filesystem Abort errors */\n\nconst muteFSAbortError = error => {\n  if ((error === null || error === void 0 ? void 0 : error.name) === "AbortError") {\n    console.warn(error);\n    return;\n  }\n\n  throw error;\n};\nconst findIndex = (array, cb, fromIndex = 0) => {\n  if (fromIndex < 0) {\n    fromIndex = array.length + fromIndex;\n  }\n\n  fromIndex = Math.min(array.length, Math.max(fromIndex, 0));\n  let index = fromIndex - 1;\n\n  while (++index < array.length) {\n    if (cb(array[index], index, array)) {\n      return index;\n    }\n  }\n\n  return -1;\n};\nconst findLastIndex = (array, cb, fromIndex = array.length - 1) => {\n  if (fromIndex < 0) {\n    fromIndex = array.length + fromIndex;\n  }\n\n  fromIndex = Math.min(array.length - 1, Math.max(fromIndex, 0));\n  let index = fromIndex + 1;\n\n  while (--index > -1) {\n    if (cb(array[index], index, array)) {\n      return index;\n    }\n  }\n\n  return -1;\n};\nconst isTransparent = color => {\n  const isRGBTransparent = color.length === 5 && color.substr(4, 1) === "0";\n  const isRRGGBBTransparent = color.length === 9 && color.substr(7, 2) === "00";\n  return isRGBTransparent || isRRGGBBTransparent || color === _colors__WEBPACK_IMPORTED_MODULE_0__.COLOR_PALETTE.transparent;\n};\nconst resolvablePromise = () => {\n  let resolve;\n  let reject;\n  const promise = new Promise((_resolve, _reject) => {\n    resolve = _resolve;\n    reject = _reject;\n  });\n  promise.resolve = resolve;\n  promise.reject = reject;\n  return promise;\n};\n/**\n * @param func handler taking at most single parameter (event).\n */\n\nconst withBatchedUpdates = func => event => {\n  (0,react_dom__WEBPACK_IMPORTED_MODULE_2__.unstable_batchedUpdates)(func, event);\n};\n/**\n * barches React state updates and throttles the calls to a single call per\n * animation frame\n */\n\nconst withBatchedUpdatesThrottled = func => {\n  // @ts-ignore\n  return throttleRAF(event => {\n    (0,react_dom__WEBPACK_IMPORTED_MODULE_2__.unstable_batchedUpdates)(func, event);\n  });\n}; //https://stackoverflow.com/a/9462382/8418\n\nconst nFormatter = (num, digits) => {\n  const si = [{\n    value: 1,\n    symbol: "b"\n  }, {\n    value: 1e3,\n    symbol: "k"\n  }, {\n    value: 1e6,\n    symbol: "M"\n  }, {\n    value: 1e9,\n    symbol: "G"\n  }];\n  const rx = /\\.0+$|(\\.[0-9]*[1-9])0+$/;\n  let index;\n\n  for (index = si.length - 1; index > 0; index--) {\n    if (num >= si[index].value) {\n      break;\n    }\n  }\n\n  return (num / si[index].value).toFixed(digits).replace(rx, "$1") + si[index].symbol;\n};\nconst getVersion = () => {\n  var _a;\n\n  return ((_a = document.querySelector(\'meta[name="version"]\')) === null || _a === void 0 ? void 0 : _a.content) || _constants__WEBPACK_IMPORTED_MODULE_1__.DEFAULT_VERSION;\n}; // Adapted from https://github.com/Modernizr/Modernizr/blob/master/feature-detects/emoji.js\n\nconst supportsEmoji = () => {\n  const canvas = document.createElement("canvas");\n  const ctx = canvas.getContext("2d");\n\n  if (!ctx) {\n    return false;\n  }\n\n  const offset = 12;\n  ctx.fillStyle = "#f00";\n  ctx.textBaseline = "top";\n  ctx.font = "32px Arial"; // Modernizr used \u{1F428}, but it is sort of supported on Windows 7.\n  // Luckily \u{1F600} isn\'t supported.\n\n  ctx.fillText("\u{1F600}", 0, 0);\n  return ctx.getImageData(offset, offset, 1, 1).data[0] !== 0;\n};\nconst getNearestScrollableContainer = element => {\n  let parent = element.parentElement;\n\n  while (parent) {\n    if (parent === document.body) {\n      return document;\n    }\n\n    const {\n      overflowY\n    } = window.getComputedStyle(parent);\n    const hasScrollableContent = parent.scrollHeight > parent.clientHeight;\n\n    if (hasScrollableContent && (overflowY === "auto" || overflowY === "scroll" || overflowY === "overlay")) {\n      return parent;\n    }\n\n    parent = parent.parentElement;\n  }\n\n  return document;\n};\nconst focusNearestParent = element => {\n  let parent = element.parentElement;\n\n  while (parent) {\n    if (parent.tabIndex > -1) {\n      parent.focus();\n      return;\n    }\n\n    parent = parent.parentElement;\n  }\n};\nconst preventUnload = event => {\n  event.preventDefault(); // NOTE: modern browsers no longer allow showing a custom message here\n\n  event.returnValue = "";\n};\nconst bytesToHexString = bytes => {\n  return Array.from(bytes).map(byte => `0${byte.toString(16)}`.slice(-2)).join("");\n};\nconst getUpdatedTimestamp = () => isTestEnv() ? 1 : Date.now();\n/**\n * Transforms array of objects containing `id` attribute,\n * or array of ids (strings), into a Map, keyd by `id`.\n */\n\nconst arrayToMap = items => {\n  return items.reduce((acc, element) => {\n    acc.set(typeof element === "string" ? element : element.id, element);\n    return acc;\n  }, new Map());\n};\nconst arrayToMapWithIndex = elements => elements.reduce((acc, element, idx) => {\n  acc.set(element.id, [element, idx]);\n  return acc;\n}, new Map());\nconst isTestEnv = () => "development" === "test";\nconst wrapEvent = (name, nativeEvent) => {\n  return new CustomEvent(name, {\n    detail: {\n      nativeEvent\n    },\n    cancelable: true\n  });\n};\nconst updateObject = (obj, updates) => {\n  let didChange = false;\n\n  for (const key in updates) {\n    const value = updates[key];\n\n    if (typeof value !== "undefined") {\n      if (obj[key] === value && ( // if object, always update because its attrs could have changed\n      typeof value !== "object" || value === null)) {\n        continue;\n      }\n\n      didChange = true;\n    }\n  }\n\n  if (!didChange) {\n    return obj;\n  }\n\n  return Object.assign(Object.assign({}, obj), updates);\n};\nconst isPrimitive = val => {\n  const type = typeof val;\n  return val == null || type !== "object" && type !== "function";\n};\nconst getFrame = () => {\n  try {\n    return window.self === window.top ? "top" : "iframe";\n  } catch (error) {\n    return "iframe";\n  }\n};\nconst isRunningInIframe = () => getFrame() === "iframe";\nconst isPromiseLike = value => {\n  return !!value && typeof value === "object" && "then" in value && "catch" in value && "finally" in value;\n};\nconst queryFocusableElements = container => {\n  const focusableElements = container === null || container === void 0 ? void 0 : container.querySelectorAll("button, a, input, select, textarea, div[tabindex], label[tabindex]");\n  return focusableElements ? Array.from(focusableElements).filter(element => element.tabIndex > -1 && !element.disabled) : [];\n};\nconst isShallowEqual = (objA, objB, comparators, debug = false) => {\n  const aKeys = Object.keys(objA);\n  const bKeys = Object.keys(objB);\n\n  if (aKeys.length !== bKeys.length) {\n    return false;\n  }\n\n  return aKeys.every(key => {\n    const comparator = comparators === null || comparators === void 0 ? void 0 : comparators[key];\n    const ret = comparator ? comparator(objA[key], objB[key]) : objA[key] === objB[key];\n\n    if (!ret && debug) {\n      console.info(`%cisShallowEqual: ${key} not equal ->`, "color: #8B4000", objA[key], objB[key]);\n    }\n\n    return ret;\n  });\n}; // taken from Radix UI\n// https://github.com/radix-ui/primitives/blob/main/packages/core/primitive/src/primitive.tsx\n\nconst composeEventHandlers = (originalEventHandler, ourEventHandler, {\n  checkForDefaultPrevented = true\n} = {}) => {\n  return function handleEvent(event) {\n    originalEventHandler === null || originalEventHandler === void 0 ? void 0 : originalEventHandler(event);\n\n    if (!checkForDefaultPrevented || !event.defaultPrevented) {\n      return ourEventHandler === null || ourEventHandler === void 0 ? void 0 : ourEventHandler(event);\n    }\n  };\n};\nconst isOnlyExportingSingleFrame = elements => {\n  const frames = elements.filter(element => element.type === "frame");\n  return frames.length === 1 && elements.every(element => element.type === "frame" || element.frameId === frames[0].id);\n};\n/**\n * supply `null` as message if non-never value is valid, you just need to\n * typecheck against it\n */\n\nconst assertNever = (value, message, softAssert) => {\n  if (!message) {\n    return value;\n  }\n\n  if (softAssert) {\n    console.error(message);\n    return value;\n  }\n\n  throw new Error(message);\n};\n/**\n * Memoizes on values of `opts` object (strict equality).\n */\n\nconst memoize = func => {\n  let lastArgs;\n  let lastResult;\n\n  const ret = function (opts) {\n    const currentArgs = Object.entries(opts);\n\n    if (lastArgs) {\n      let argsAreEqual = true;\n\n      for (const [key, value] of currentArgs) {\n        if (lastArgs.get(key) !== value) {\n          argsAreEqual = false;\n          break;\n        }\n      }\n\n      if (argsAreEqual) {\n        return lastResult;\n      }\n    }\n\n    const result = func(opts);\n    lastArgs = new Map(currentArgs);\n    lastResult = result;\n    return result;\n  };\n\n  ret.clear = () => {\n    lastArgs = undefined;\n    lastResult = undefined;\n  };\n\n  return ret;\n};\nconst isRenderThrottlingEnabled = (() => {\n  // we don\'t want to throttle in react < 18 because of #5439 and it was\n  // getting more complex to maintain the fix\n  let IS_REACT_18_AND_UP;\n\n  try {\n    const version = react__WEBPACK_IMPORTED_MODULE_3___default().version.split(".");\n    IS_REACT_18_AND_UP = Number(version[0]) > 17;\n  } catch (_a) {\n    IS_REACT_18_AND_UP = false;\n  }\n\n  let hasWarned = false;\n  return () => {\n    if (window.EXCALIDRAW_THROTTLE_RENDER === true) {\n      if (!IS_REACT_18_AND_UP) {\n        if (!hasWarned) {\n          hasWarned = true;\n          console.warn("Excalidraw: render throttling is disabled on React versions < 18.");\n        }\n\n        return false;\n      }\n\n      return true;\n    }\n\n    return false;\n  };\n})();\n/** Checks if value is inside given collection. Useful for type-safety. */\n\nconst isMemberOf = (\n/** Set/Map/Array/Object */\ncollection,\n/** value to look for */\nvalue) => {\n  return collection instanceof Set || collection instanceof Map ? collection.has(value) : "includes" in collection ? collection.includes(value) : collection.hasOwnProperty(value);\n};\nconst cloneJSON = obj => JSON.parse(JSON.stringify(obj));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 33376 characters]\n//# sourceURL=webpack-internal:///../../utils.ts\n');
              }
            ),
            /***/
            "../../zindex.ts": (
              /*!***********************!*\
                !*** ../../zindex.ts ***!
                \***********************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "moveAllLeft": () => (/* binding */ moveAllLeft),\n/* harmony export */   "moveAllRight": () => (/* binding */ moveAllRight),\n/* harmony export */   "moveOneLeft": () => (/* binding */ moveOneLeft),\n/* harmony export */   "moveOneRight": () => (/* binding */ moveOneRight)\n/* harmony export */ });\n/* harmony import */ var _element_mutateElement__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./element/mutateElement */ "../../element/mutateElement.ts");\n/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./element/typeChecks */ "../../element/typeChecks.ts");\n/* harmony import */ var _groups__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./groups */ "../../groups.ts");\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./scene */ "../../scene/index.ts");\n/* harmony import */ var _scene_Scene__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./scene/Scene */ "../../scene/Scene.ts");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./utils */ "../../utils.ts");\n\n\n\n\n\n\n\nconst isOfTargetFrame = (element, frameId) => {\n  return element.frameId === frameId || element.id === frameId;\n};\n/**\n * Returns indices of elements to move based on selected elements.\n * Includes contiguous deleted elements that are between two selected elements,\n *  e.g.: [0 (selected), 1 (deleted), 2 (deleted), 3 (selected)]\n *\n * Specified elements (elementsToBeMoved) take precedence over\n * appState.selectedElementsIds\n */\n\n\nconst getIndicesToMove = (elements, appState, elementsToBeMoved) => {\n  let selectedIndices = [];\n  let deletedIndices = [];\n  let includeDeletedIndex = null;\n  let index = -1;\n  const selectedElementIds = (0,_utils__WEBPACK_IMPORTED_MODULE_5__.arrayToMap)(elementsToBeMoved ? elementsToBeMoved : (0,_scene__WEBPACK_IMPORTED_MODULE_3__.getSelectedElements)(elements, appState, {\n    includeBoundTextElement: true,\n    includeElementsInFrames: true\n  }));\n\n  while (++index < elements.length) {\n    const element = elements[index];\n\n    if (selectedElementIds.get(element.id)) {\n      if (deletedIndices.length) {\n        selectedIndices = selectedIndices.concat(deletedIndices);\n        deletedIndices = [];\n      }\n\n      selectedIndices.push(index);\n      includeDeletedIndex = index + 1;\n    } else if (element.isDeleted && includeDeletedIndex === index) {\n      includeDeletedIndex = index + 1;\n      deletedIndices.push(index);\n    } else {\n      deletedIndices = [];\n    }\n  }\n\n  return selectedIndices;\n};\n\nconst toContiguousGroups = array => {\n  let cursor = 0;\n  return array.reduce((acc, value, index) => {\n    if (index > 0 && array[index - 1] !== value - 1) {\n      cursor = ++cursor;\n    }\n\n    (acc[cursor] || (acc[cursor] = [])).push(value);\n    return acc;\n  }, []);\n};\n/**\n * @returns index of target element, consindering tightly-bound elements\n * (currently non-linear elements bound to a container) as a one unit.\n * If no binding present, returns `undefined`.\n */\n\n\nconst getTargetIndexAccountingForBinding = (nextElement, elements, direction) => {\n  var _a, _b;\n\n  if ("containerId" in nextElement && nextElement.containerId) {\n    if (direction === "left") {\n      const containerElement = _scene_Scene__WEBPACK_IMPORTED_MODULE_4__["default"].getScene(nextElement).getElement(nextElement.containerId);\n\n      if (containerElement) {\n        return elements.indexOf(containerElement);\n      }\n    } else {\n      return elements.indexOf(nextElement);\n    }\n  } else {\n    const boundElementId = (_b = (_a = nextElement.boundElements) === null || _a === void 0 ? void 0 : _a.find(binding => binding.type !== "arrow")) === null || _b === void 0 ? void 0 : _b.id;\n\n    if (boundElementId) {\n      if (direction === "left") {\n        return elements.indexOf(nextElement);\n      }\n\n      const boundTextElement = _scene_Scene__WEBPACK_IMPORTED_MODULE_4__["default"].getScene(nextElement).getElement(boundElementId);\n\n      if (boundTextElement) {\n        return elements.indexOf(boundTextElement);\n      }\n    }\n  }\n};\n\nconst getContiguousFrameRangeElements = (allElements, frameId) => {\n  let rangeStart = -1;\n  let rangeEnd = -1;\n  allElements.forEach((element, index) => {\n    if (isOfTargetFrame(element, frameId)) {\n      if (rangeStart === -1) {\n        rangeStart = index;\n      }\n\n      rangeEnd = index;\n    }\n  });\n\n  if (rangeStart === -1) {\n    return [];\n  }\n\n  return allElements.slice(rangeStart, rangeEnd + 1);\n};\n/**\n * Returns next candidate index that\'s available to be moved to. Currently that\n *  is a non-deleted element, and not inside a group (unless we\'re editing it).\n */\n\n\nconst getTargetIndex = (appState, elements, boundaryIndex, direction,\n/**\n * Frame id if moving frame children.\n * If whole frame (including all children) is being moved, supply `null`.\n */\ncontainingFrame) => {\n  var _a, _b;\n\n  const sourceElement = elements[boundaryIndex];\n\n  const indexFilter = element => {\n    if (element.isDeleted) {\n      return false;\n    }\n\n    if (containingFrame) {\n      return element.frameId === containingFrame;\n    } // if we\'re editing group, find closest sibling irrespective of whether\n    // there\'s a different-group element between them (for legacy reasons)\n\n\n    if (appState.editingGroupId) {\n      return element.groupIds.includes(appState.editingGroupId);\n    }\n\n    return true;\n  };\n\n  const candidateIndex = direction === "left" ? (0,_utils__WEBPACK_IMPORTED_MODULE_5__.findLastIndex)(elements, el => indexFilter(el), Math.max(0, boundaryIndex - 1)) : (0,_utils__WEBPACK_IMPORTED_MODULE_5__.findIndex)(elements, el => indexFilter(el), boundaryIndex + 1);\n  const nextElement = elements[candidateIndex];\n\n  if (!nextElement) {\n    return -1;\n  }\n\n  if (appState.editingGroupId) {\n    if ( // candidate element is a sibling in current editing group \u2192 return\n    (sourceElement === null || sourceElement === void 0 ? void 0 : sourceElement.groupIds.join("")) === (nextElement === null || nextElement === void 0 ? void 0 : nextElement.groupIds.join(""))) {\n      return (_a = getTargetIndexAccountingForBinding(nextElement, elements, direction)) !== null && _a !== void 0 ? _a : candidateIndex;\n    } else if (!(nextElement === null || nextElement === void 0 ? void 0 : nextElement.groupIds.includes(appState.editingGroupId))) {\n      // candidate element is outside current editing group \u2192 prevent\n      return -1;\n    }\n  }\n\n  if (!containingFrame && (nextElement.frameId || nextElement.type === "frame")) {\n    const frameElements = getContiguousFrameRangeElements(elements, nextElement.frameId || nextElement.id);\n    return direction === "left" ? elements.indexOf(frameElements[0]) : elements.indexOf(frameElements[frameElements.length - 1]);\n  }\n\n  if (!nextElement.groupIds.length) {\n    return (_b = getTargetIndexAccountingForBinding(nextElement, elements, direction)) !== null && _b !== void 0 ? _b : candidateIndex;\n  }\n\n  const siblingGroupId = appState.editingGroupId ? nextElement.groupIds[nextElement.groupIds.indexOf(appState.editingGroupId) - 1] : nextElement.groupIds[nextElement.groupIds.length - 1];\n  const elementsInSiblingGroup = (0,_groups__WEBPACK_IMPORTED_MODULE_2__.getElementsInGroup)(elements, siblingGroupId);\n\n  if (elementsInSiblingGroup.length) {\n    // assumes getElementsInGroup() returned elements are sorted\n    // by zIndex (ascending)\n    return direction === "left" ? elements.indexOf(elementsInSiblingGroup[0]) : elements.indexOf(elementsInSiblingGroup[elementsInSiblingGroup.length - 1]);\n  }\n\n  return candidateIndex;\n};\n\nconst getTargetElementsMap = (elements, indices) => {\n  return indices.reduce((acc, index) => {\n    const element = elements[index];\n    acc[element.id] = element;\n    return acc;\n  }, {});\n};\n\nconst shiftElementsByOne = (elements, appState, direction) => {\n  const indicesToMove = getIndicesToMove(elements, appState);\n  const targetElementsMap = getTargetElementsMap(elements, indicesToMove);\n  let groupedIndices = toContiguousGroups(indicesToMove);\n\n  if (direction === "right") {\n    groupedIndices = groupedIndices.reverse();\n  }\n\n  const selectedFrames = new Set(indicesToMove.filter(idx => elements[idx].type === "frame").map(idx => elements[idx].id));\n  groupedIndices.forEach((indices, i) => {\n    var _a;\n\n    const leadingIndex = indices[0];\n    const trailingIndex = indices[indices.length - 1];\n    const boundaryIndex = direction === "left" ? leadingIndex : trailingIndex;\n    const containingFrame = indices.some(idx => {\n      const el = elements[idx];\n      return el.frameId && selectedFrames.has(el.frameId);\n    }) ? null : (_a = elements[boundaryIndex]) === null || _a === void 0 ? void 0 : _a.frameId;\n    const targetIndex = getTargetIndex(appState, elements, boundaryIndex, direction, containingFrame);\n\n    if (targetIndex === -1 || boundaryIndex === targetIndex) {\n      return;\n    }\n\n    const leadingElements = direction === "left" ? elements.slice(0, targetIndex) : elements.slice(0, leadingIndex);\n    const targetElements = elements.slice(leadingIndex, trailingIndex + 1);\n    const displacedElements = direction === "left" ? elements.slice(targetIndex, leadingIndex) : elements.slice(trailingIndex + 1, targetIndex + 1);\n    const trailingElements = direction === "left" ? elements.slice(trailingIndex + 1) : elements.slice(targetIndex + 1);\n    elements = direction === "left" ? [...leadingElements, ...targetElements, ...displacedElements, ...trailingElements] : [...leadingElements, ...displacedElements, ...targetElements, ...trailingElements];\n  });\n  return elements.map(element => {\n    if (targetElementsMap[element.id]) {\n      return (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_0__.bumpVersion)(element);\n    }\n\n    return element;\n  });\n};\n\nconst shiftElementsToEnd = (elements, appState, direction, containingFrame, elementsToBeMoved) => {\n  const indicesToMove = getIndicesToMove(elements, appState, elementsToBeMoved);\n  const targetElementsMap = getTargetElementsMap(elements, indicesToMove);\n  const displacedElements = [];\n  let leadingIndex;\n  let trailingIndex;\n\n  if (direction === "left") {\n    if (containingFrame) {\n      leadingIndex = (0,_utils__WEBPACK_IMPORTED_MODULE_5__.findIndex)(elements, el => isOfTargetFrame(el, containingFrame));\n    } else if (appState.editingGroupId) {\n      const groupElements = (0,_groups__WEBPACK_IMPORTED_MODULE_2__.getElementsInGroup)(elements, appState.editingGroupId);\n\n      if (!groupElements.length) {\n        return elements;\n      }\n\n      leadingIndex = elements.indexOf(groupElements[0]);\n    } else {\n      leadingIndex = 0;\n    }\n\n    trailingIndex = indicesToMove[indicesToMove.length - 1];\n  } else {\n    if (containingFrame) {\n      trailingIndex = (0,_utils__WEBPACK_IMPORTED_MODULE_5__.findLastIndex)(elements, el => isOfTargetFrame(el, containingFrame));\n    } else if (appState.editingGroupId) {\n      const groupElements = (0,_groups__WEBPACK_IMPORTED_MODULE_2__.getElementsInGroup)(elements, appState.editingGroupId);\n\n      if (!groupElements.length) {\n        return elements;\n      }\n\n      trailingIndex = elements.indexOf(groupElements[groupElements.length - 1]);\n    } else {\n      trailingIndex = elements.length - 1;\n    }\n\n    leadingIndex = indicesToMove[0];\n  }\n\n  if (leadingIndex === -1) {\n    leadingIndex = 0;\n  }\n\n  for (let index = leadingIndex; index < trailingIndex + 1; index++) {\n    if (!indicesToMove.includes(index)) {\n      displacedElements.push(elements[index]);\n    }\n  }\n\n  const targetElements = Object.values(targetElementsMap).map(element => {\n    return (0,_element_mutateElement__WEBPACK_IMPORTED_MODULE_0__.bumpVersion)(element);\n  });\n  const leadingElements = elements.slice(0, leadingIndex);\n  const trailingElements = elements.slice(trailingIndex + 1);\n  return direction === "left" ? [...leadingElements, ...targetElements, ...displacedElements, ...trailingElements] : [...leadingElements, ...displacedElements, ...targetElements, ...trailingElements];\n};\n\nfunction shiftElementsAccountingForFrames(allElements, appState, direction, shiftFunction) {\n  const elementsToMove = (0,_utils__WEBPACK_IMPORTED_MODULE_5__.arrayToMap)((0,_scene__WEBPACK_IMPORTED_MODULE_3__.getSelectedElements)(allElements, appState, {\n    includeBoundTextElement: true,\n    includeElementsInFrames: true\n  }));\n  const frameAwareContiguousElementsToMove = {\n    regularElements: [],\n    frameChildren: new Map()\n  };\n  const fullySelectedFrames = new Set();\n\n  for (const element of allElements) {\n    if (elementsToMove.has(element.id) && (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isFrameElement)(element)) {\n      fullySelectedFrames.add(element.id);\n    }\n  }\n\n  for (const element of allElements) {\n    if (elementsToMove.has(element.id)) {\n      if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isFrameElement)(element) || element.frameId && fullySelectedFrames.has(element.frameId)) {\n        frameAwareContiguousElementsToMove.regularElements.push(element);\n      } else if (!element.frameId) {\n        frameAwareContiguousElementsToMove.regularElements.push(element);\n      } else {\n        const frameChildren = frameAwareContiguousElementsToMove.frameChildren.get(element.frameId) || [];\n        frameChildren.push(element);\n        frameAwareContiguousElementsToMove.frameChildren.set(element.frameId, frameChildren);\n      }\n    }\n  }\n\n  let nextElements = allElements;\n  const frameChildrenSets = Array.from(frameAwareContiguousElementsToMove.frameChildren.entries());\n\n  for (const [frameId, children] of frameChildrenSets) {\n    nextElements = shiftFunction(allElements, appState, direction, frameId, children);\n  }\n\n  return shiftFunction(nextElements, appState, direction, null, frameAwareContiguousElementsToMove.regularElements);\n} // public API\n// -----------------------------------------------------------------------------\n\n\nconst moveOneLeft = (allElements, appState) => {\n  return shiftElementsByOne(allElements, appState, "left");\n};\nconst moveOneRight = (allElements, appState) => {\n  return shiftElementsByOne(allElements, appState, "right");\n};\nconst moveAllLeft = (allElements, appState) => {\n  return shiftElementsAccountingForFrames(allElements, appState, "left", shiftElementsToEnd);\n};\nconst moveAllRight = (allElements, appState) => {\n  return shiftElementsAccountingForFrames(allElements, appState, "right", shiftElementsToEnd);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 20432 characters]\n//# sourceURL=webpack-internal:///../../zindex.ts\n');
              }
            ),
            /***/
            "../../../public/fonts.css": (
              /*!*********************************!*\
                !*** ../../../public/fonts.css ***!
                \*********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _src_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../src/packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _src_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_src_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _src_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../src/packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _src_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_src_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _src_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../src/packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _src_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_src_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _src_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../src/packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _src_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_src_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _src_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../src/packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _src_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_src_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _src_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../src/packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _src_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_src_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _src_packages_excalidraw_node_modules_css_loader_dist_cjs_js_src_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_src_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_fonts_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../src/packages/excalidraw/node_modules/css-loader/dist/cjs.js!../src/packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../src/packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./fonts.css */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../../public/fonts.css");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_src_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_src_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _src_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_src_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_src_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _src_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_src_packages_excalidraw_node_modules_css_loader_dist_cjs_js_src_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_src_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_fonts_css__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_src_packages_excalidraw_node_modules_css_loader_dist_cjs_js_src_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_src_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_fonts_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _src_packages_excalidraw_node_modules_css_loader_dist_cjs_js_src_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_src_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_fonts_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _src_packages_excalidraw_node_modules_css_loader_dist_cjs_js_src_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_src_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_fonts_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vcHVibGljL2ZvbnRzLmNzcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxNQUF1SDtBQUN2SCxNQUE2RztBQUM3RyxNQUFvSDtBQUNwSCxNQUF1STtBQUN2SSxNQUFnSTtBQUNoSSxNQUFnSTtBQUNoSSxNQUEwUjtBQUMxUjtBQUNBOztBQUVBOztBQUVBLDRCQUE0Qiw2SEFBbUI7QUFDL0Msd0JBQXdCLDBJQUFhOztBQUVyQyx1QkFBdUIsK0hBQWE7QUFDcEM7QUFDQSxpQkFBaUIsdUhBQU07QUFDdkIsNkJBQTZCLDhIQUFrQjs7QUFFL0MsYUFBYSxrSUFBRyxDQUFDLG1RQUFPOzs7O0FBSW9PO0FBQzVQLE9BQU8saUVBQWUsbVFBQU8sSUFBSSwwUUFBYyxHQUFHLDBRQUFjLFlBQVksRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9wdWJsaWMvZm9udHMuY3NzP2UyMjAiXSwic291cmNlc0NvbnRlbnQiOlsiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vc3JjL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vc3JjL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uL3NyYy9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vc3JjL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vc3JjL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uL3NyYy9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi9zcmMvcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9zcmMvcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uL3NyYy9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL2ZvbnRzLmNzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xuXG4gICAgICBvcHRpb25zLmluc2VydCA9IGluc2VydEZuLmJpbmQobnVsbCwgXCJoZWFkXCIpO1xuICAgIFxub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uL3NyYy9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uL3NyYy9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vc3JjL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vZm9udHMuY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../public/fonts.css\n');
              }
            ),
            /***/
            "../../components/Actions.scss": (
              /*!*************************************!*\
                !*** ../../components/Actions.scss ***!
                \*************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Actions_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./Actions.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Actions.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Actions_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Actions_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Actions_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Actions_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9BY3Rpb25zLnNjc3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsTUFBbUg7QUFDbkgsTUFBeUc7QUFDekcsTUFBZ0g7QUFDaEgsTUFBbUk7QUFDbkksTUFBNEg7QUFDNUgsTUFBNEg7QUFDNUgsTUFBaVI7QUFDalI7QUFDQTs7QUFFQTs7QUFFQSw0QkFBNEIseUhBQW1CO0FBQy9DLHdCQUF3QixzSUFBYTs7QUFFckMsdUJBQXVCLDJIQUFhO0FBQ3BDO0FBQ0EsaUJBQWlCLG1IQUFNO0FBQ3ZCLDZCQUE2QiwwSEFBa0I7O0FBRS9DLGFBQWEsOEhBQUcsQ0FBQywwUEFBTzs7OztBQUkyTjtBQUNuUCxPQUFPLGlFQUFlLDBQQUFPLElBQUksaVFBQWMsR0FBRyxpUUFBYyxZQUFZLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9BY3Rpb25zLnNjc3M/N2Y1ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vQWN0aW9ucy5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9BY3Rpb25zLnNjc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/Actions.scss\n');
              }
            ),
            /***/
            "../../components/Avatar.scss": (
              /*!************************************!*\
                !*** ../../components/Avatar.scss ***!
                \************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Avatar_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./Avatar.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Avatar.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Avatar_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Avatar_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Avatar_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Avatar_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9BdmF0YXIuc2Nzcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxNQUFtSDtBQUNuSCxNQUF5RztBQUN6RyxNQUFnSDtBQUNoSCxNQUFtSTtBQUNuSSxNQUE0SDtBQUM1SCxNQUE0SDtBQUM1SCxNQUFnUjtBQUNoUjtBQUNBOztBQUVBOztBQUVBLDRCQUE0Qix5SEFBbUI7QUFDL0Msd0JBQXdCLHNJQUFhOztBQUVyQyx1QkFBdUIsMkhBQWE7QUFDcEM7QUFDQSxpQkFBaUIsbUhBQU07QUFDdkIsNkJBQTZCLDBIQUFrQjs7QUFFL0MsYUFBYSw4SEFBRyxDQUFDLHlQQUFPOzs7O0FBSTBOO0FBQ2xQLE9BQU8saUVBQWUseVBBQU8sSUFBSSxnUUFBYyxHQUFHLGdRQUFjLFlBQVksRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL0F2YXRhci5zY3NzP2IyYzEiXSwic291cmNlc0NvbnRlbnQiOlsiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0Rm4gZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzBdLnVzZVsyXSEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL0F2YXRhci5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9BdmF0YXIuc2Nzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/Avatar.scss\n');
              }
            ),
            /***/
            "../../components/Button.scss": (
              /*!************************************!*\
                !*** ../../components/Button.scss ***!
                \************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Button_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./Button.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Button.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Button_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Button_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Button_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Button_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9CdXR0b24uc2Nzcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxNQUFtSDtBQUNuSCxNQUF5RztBQUN6RyxNQUFnSDtBQUNoSCxNQUFtSTtBQUNuSSxNQUE0SDtBQUM1SCxNQUE0SDtBQUM1SCxNQUFnUjtBQUNoUjtBQUNBOztBQUVBOztBQUVBLDRCQUE0Qix5SEFBbUI7QUFDL0Msd0JBQXdCLHNJQUFhOztBQUVyQyx1QkFBdUIsMkhBQWE7QUFDcEM7QUFDQSxpQkFBaUIsbUhBQU07QUFDdkIsNkJBQTZCLDBIQUFrQjs7QUFFL0MsYUFBYSw4SEFBRyxDQUFDLHlQQUFPOzs7O0FBSTBOO0FBQ2xQLE9BQU8saUVBQWUseVBBQU8sSUFBSSxnUUFBYyxHQUFHLGdRQUFjLFlBQVksRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL0J1dHRvbi5zY3NzP2I5ODAiXSwic291cmNlc0NvbnRlbnQiOlsiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0Rm4gZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzBdLnVzZVsyXSEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL0J1dHRvbi5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9CdXR0b24uc2Nzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/Button.scss\n');
              }
            ),
            /***/
            "../../components/Card.scss": (
              /*!**********************************!*\
                !*** ../../components/Card.scss ***!
                \**********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Card_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./Card.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Card.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Card_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Card_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Card_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Card_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9DYXJkLnNjc3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsTUFBbUg7QUFDbkgsTUFBeUc7QUFDekcsTUFBZ0g7QUFDaEgsTUFBbUk7QUFDbkksTUFBNEg7QUFDNUgsTUFBNEg7QUFDNUgsTUFBOFE7QUFDOVE7QUFDQTs7QUFFQTs7QUFFQSw0QkFBNEIseUhBQW1CO0FBQy9DLHdCQUF3QixzSUFBYTs7QUFFckMsdUJBQXVCLDJIQUFhO0FBQ3BDO0FBQ0EsaUJBQWlCLG1IQUFNO0FBQ3ZCLDZCQUE2QiwwSEFBa0I7O0FBRS9DLGFBQWEsOEhBQUcsQ0FBQyx1UEFBTzs7OztBQUl3TjtBQUNoUCxPQUFPLGlFQUFlLHVQQUFPLElBQUksOFBBQWMsR0FBRyw4UEFBYyxZQUFZLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9DYXJkLnNjc3M/MzJhOSJdLCJzb3VyY2VzQ29udGVudCI6WyJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vQ2FyZC5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9DYXJkLnNjc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/Card.scss\n');
              }
            ),
            /***/
            "../../components/CheckboxItem.scss": (
              /*!******************************************!*\
                !*** ../../components/CheckboxItem.scss ***!
                \******************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_CheckboxItem_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./CheckboxItem.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/CheckboxItem.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_CheckboxItem_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_CheckboxItem_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_CheckboxItem_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_CheckboxItem_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9DaGVja2JveEl0ZW0uc2Nzcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxNQUFtSDtBQUNuSCxNQUF5RztBQUN6RyxNQUFnSDtBQUNoSCxNQUFtSTtBQUNuSSxNQUE0SDtBQUM1SCxNQUE0SDtBQUM1SCxNQUFzUjtBQUN0UjtBQUNBOztBQUVBOztBQUVBLDRCQUE0Qix5SEFBbUI7QUFDL0Msd0JBQXdCLHNJQUFhOztBQUVyQyx1QkFBdUIsMkhBQWE7QUFDcEM7QUFDQSxpQkFBaUIsbUhBQU07QUFDdkIsNkJBQTZCLDBIQUFrQjs7QUFFL0MsYUFBYSw4SEFBRyxDQUFDLCtQQUFPOzs7O0FBSWdPO0FBQ3hQLE9BQU8saUVBQWUsK1BBQU8sSUFBSSxzUUFBYyxHQUFHLHNRQUFjLFlBQVksRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL0NoZWNrYm94SXRlbS5zY3NzP2U1OWEiXSwic291cmNlc0NvbnRlbnQiOlsiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0Rm4gZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzBdLnVzZVsyXSEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL0NoZWNrYm94SXRlbS5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9DaGVja2JveEl0ZW0uc2Nzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/CheckboxItem.scss\n');
              }
            ),
            /***/
            "../../components/ColorPicker/ColorPicker.scss": (
              /*!*****************************************************!*\
                !*** ../../components/ColorPicker/ColorPicker.scss ***!
                \*****************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ColorPicker_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./ColorPicker.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ColorPicker/ColorPicker.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ColorPicker_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ColorPicker_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ColorPicker_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ColorPicker_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9Db2xvclBpY2tlci9Db2xvclBpY2tlci5zY3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLE1BQXNIO0FBQ3RILE1BQTRHO0FBQzVHLE1BQW1IO0FBQ25ILE1BQXNJO0FBQ3RJLE1BQStIO0FBQy9ILE1BQStIO0FBQy9ILE1BQThSO0FBQzlSO0FBQ0E7O0FBRUE7O0FBRUEsNEJBQTRCLHlIQUFtQjtBQUMvQyx3QkFBd0Isc0lBQWE7O0FBRXJDLHVCQUF1QiwySEFBYTtBQUNwQztBQUNBLGlCQUFpQixtSEFBTTtBQUN2Qiw2QkFBNkIsMEhBQWtCOztBQUUvQyxhQUFhLDhIQUFHLENBQUMsOFBBQU87Ozs7QUFJd087QUFDaFEsT0FBTyxpRUFBZSw4UEFBTyxJQUFJLHFRQUFjLEdBQUcscVFBQWMsWUFBWSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvQ29sb3JQaWNrZXIvQ29sb3JQaWNrZXIuc2Nzcz84YzZkIl0sInNvdXJjZXNDb250ZW50IjpbIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9Db2xvclBpY2tlci5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9Db2xvclBpY2tlci5zY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/ColorPicker/ColorPicker.scss\n');
              }
            ),
            /***/
            "../../components/ConfirmDialog.scss": (
              /*!*******************************************!*\
                !*** ../../components/ConfirmDialog.scss ***!
                \*******************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ConfirmDialog_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./ConfirmDialog.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ConfirmDialog.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ConfirmDialog_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ConfirmDialog_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ConfirmDialog_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ConfirmDialog_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9Db25maXJtRGlhbG9nLnNjc3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsTUFBbUg7QUFDbkgsTUFBeUc7QUFDekcsTUFBZ0g7QUFDaEgsTUFBbUk7QUFDbkksTUFBNEg7QUFDNUgsTUFBNEg7QUFDNUgsTUFBdVI7QUFDdlI7QUFDQTs7QUFFQTs7QUFFQSw0QkFBNEIseUhBQW1CO0FBQy9DLHdCQUF3QixzSUFBYTs7QUFFckMsdUJBQXVCLDJIQUFhO0FBQ3BDO0FBQ0EsaUJBQWlCLG1IQUFNO0FBQ3ZCLDZCQUE2QiwwSEFBa0I7O0FBRS9DLGFBQWEsOEhBQUcsQ0FBQyxnUUFBTzs7OztBQUlpTztBQUN6UCxPQUFPLGlFQUFlLGdRQUFPLElBQUksdVFBQWMsR0FBRyx1UUFBYyxZQUFZLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9Db25maXJtRGlhbG9nLnNjc3M/MTU3YSJdLCJzb3VyY2VzQ29udGVudCI6WyJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vQ29uZmlybURpYWxvZy5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9Db25maXJtRGlhbG9nLnNjc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/ConfirmDialog.scss\n');
              }
            ),
            /***/
            "../../components/ContextMenu.scss": (
              /*!*****************************************!*\
                !*** ../../components/ContextMenu.scss ***!
                \*****************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ContextMenu_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./ContextMenu.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ContextMenu.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ContextMenu_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ContextMenu_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ContextMenu_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ContextMenu_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9Db250ZXh0TWVudS5zY3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLE1BQW1IO0FBQ25ILE1BQXlHO0FBQ3pHLE1BQWdIO0FBQ2hILE1BQW1JO0FBQ25JLE1BQTRIO0FBQzVILE1BQTRIO0FBQzVILE1BQXFSO0FBQ3JSO0FBQ0E7O0FBRUE7O0FBRUEsNEJBQTRCLHlIQUFtQjtBQUMvQyx3QkFBd0Isc0lBQWE7O0FBRXJDLHVCQUF1QiwySEFBYTtBQUNwQztBQUNBLGlCQUFpQixtSEFBTTtBQUN2Qiw2QkFBNkIsMEhBQWtCOztBQUUvQyxhQUFhLDhIQUFHLENBQUMsOFBBQU87Ozs7QUFJK047QUFDdlAsT0FBTyxpRUFBZSw4UEFBTyxJQUFJLHFRQUFjLEdBQUcscVFBQWMsWUFBWSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvQ29udGV4dE1lbnUuc2Nzcz8yZmMzIl0sInNvdXJjZXNDb250ZW50IjpbIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9Db250ZXh0TWVudS5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9Db250ZXh0TWVudS5zY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/ContextMenu.scss\n');
              }
            ),
            /***/
            "../../components/Dialog.scss": (
              /*!************************************!*\
                !*** ../../components/Dialog.scss ***!
                \************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Dialog_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./Dialog.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Dialog.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Dialog_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Dialog_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Dialog_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Dialog_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9EaWFsb2cuc2Nzcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxNQUFtSDtBQUNuSCxNQUF5RztBQUN6RyxNQUFnSDtBQUNoSCxNQUFtSTtBQUNuSSxNQUE0SDtBQUM1SCxNQUE0SDtBQUM1SCxNQUFnUjtBQUNoUjtBQUNBOztBQUVBOztBQUVBLDRCQUE0Qix5SEFBbUI7QUFDL0Msd0JBQXdCLHNJQUFhOztBQUVyQyx1QkFBdUIsMkhBQWE7QUFDcEM7QUFDQSxpQkFBaUIsbUhBQU07QUFDdkIsNkJBQTZCLDBIQUFrQjs7QUFFL0MsYUFBYSw4SEFBRyxDQUFDLHlQQUFPOzs7O0FBSTBOO0FBQ2xQLE9BQU8saUVBQWUseVBBQU8sSUFBSSxnUUFBYyxHQUFHLGdRQUFjLFlBQVksRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL0RpYWxvZy5zY3NzPzJlNTEiXSwic291cmNlc0NvbnRlbnQiOlsiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0Rm4gZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzBdLnVzZVsyXSEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL0RpYWxvZy5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9EaWFsb2cuc2Nzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/Dialog.scss\n');
              }
            ),
            /***/
            "../../components/DialogActionButton.scss": (
              /*!************************************************!*\
                !*** ../../components/DialogActionButton.scss ***!
                \************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_DialogActionButton_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./DialogActionButton.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/DialogActionButton.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_DialogActionButton_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_DialogActionButton_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_DialogActionButton_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_DialogActionButton_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9EaWFsb2dBY3Rpb25CdXR0b24uc2Nzcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxNQUFtSDtBQUNuSCxNQUF5RztBQUN6RyxNQUFnSDtBQUNoSCxNQUFtSTtBQUNuSSxNQUE0SDtBQUM1SCxNQUE0SDtBQUM1SCxNQUE0UjtBQUM1UjtBQUNBOztBQUVBOztBQUVBLDRCQUE0Qix5SEFBbUI7QUFDL0Msd0JBQXdCLHNJQUFhOztBQUVyQyx1QkFBdUIsMkhBQWE7QUFDcEM7QUFDQSxpQkFBaUIsbUhBQU07QUFDdkIsNkJBQTZCLDBIQUFrQjs7QUFFL0MsYUFBYSw4SEFBRyxDQUFDLHFRQUFPOzs7O0FBSXNPO0FBQzlQLE9BQU8saUVBQWUscVFBQU8sSUFBSSw0UUFBYyxHQUFHLDRRQUFjLFlBQVksRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL0RpYWxvZ0FjdGlvbkJ1dHRvbi5zY3NzPzEzOWUiXSwic291cmNlc0NvbnRlbnQiOlsiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0Rm4gZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzBdLnVzZVsyXSEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL0RpYWxvZ0FjdGlvbkJ1dHRvbi5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9EaWFsb2dBY3Rpb25CdXR0b24uc2Nzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/DialogActionButton.scss\n');
              }
            ),
            /***/
            "../../components/ExcalidrawLogo.scss": (
              /*!********************************************!*\
                !*** ../../components/ExcalidrawLogo.scss ***!
                \********************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ExcalidrawLogo_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./ExcalidrawLogo.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ExcalidrawLogo.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ExcalidrawLogo_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ExcalidrawLogo_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ExcalidrawLogo_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ExcalidrawLogo_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9FeGNhbGlkcmF3TG9nby5zY3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLE1BQW1IO0FBQ25ILE1BQXlHO0FBQ3pHLE1BQWdIO0FBQ2hILE1BQW1JO0FBQ25JLE1BQTRIO0FBQzVILE1BQTRIO0FBQzVILE1BQXdSO0FBQ3hSO0FBQ0E7O0FBRUE7O0FBRUEsNEJBQTRCLHlIQUFtQjtBQUMvQyx3QkFBd0Isc0lBQWE7O0FBRXJDLHVCQUF1QiwySEFBYTtBQUNwQztBQUNBLGlCQUFpQixtSEFBTTtBQUN2Qiw2QkFBNkIsMEhBQWtCOztBQUUvQyxhQUFhLDhIQUFHLENBQUMsaVFBQU87Ozs7QUFJa087QUFDMVAsT0FBTyxpRUFBZSxpUUFBTyxJQUFJLHdRQUFjLEdBQUcsd1FBQWMsWUFBWSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvRXhjYWxpZHJhd0xvZ28uc2Nzcz81ZTAzIl0sInNvdXJjZXNDb250ZW50IjpbIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9FeGNhbGlkcmF3TG9nby5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9FeGNhbGlkcmF3TG9nby5zY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/ExcalidrawLogo.scss\n');
              }
            ),
            /***/
            "../../components/ExportDialog.scss": (
              /*!******************************************!*\
                !*** ../../components/ExportDialog.scss ***!
                \******************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ExportDialog_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./ExportDialog.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ExportDialog.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ExportDialog_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ExportDialog_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ExportDialog_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ExportDialog_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9FeHBvcnREaWFsb2cuc2Nzcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxNQUFtSDtBQUNuSCxNQUF5RztBQUN6RyxNQUFnSDtBQUNoSCxNQUFtSTtBQUNuSSxNQUE0SDtBQUM1SCxNQUE0SDtBQUM1SCxNQUFzUjtBQUN0UjtBQUNBOztBQUVBOztBQUVBLDRCQUE0Qix5SEFBbUI7QUFDL0Msd0JBQXdCLHNJQUFhOztBQUVyQyx1QkFBdUIsMkhBQWE7QUFDcEM7QUFDQSxpQkFBaUIsbUhBQU07QUFDdkIsNkJBQTZCLDBIQUFrQjs7QUFFL0MsYUFBYSw4SEFBRyxDQUFDLCtQQUFPOzs7O0FBSWdPO0FBQ3hQLE9BQU8saUVBQWUsK1BBQU8sSUFBSSxzUUFBYyxHQUFHLHNRQUFjLFlBQVksRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL0V4cG9ydERpYWxvZy5zY3NzP2Q3OWIiXSwic291cmNlc0NvbnRlbnQiOlsiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0Rm4gZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzBdLnVzZVsyXSEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL0V4cG9ydERpYWxvZy5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9FeHBvcnREaWFsb2cuc2Nzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/ExportDialog.scss\n');
              }
            ),
            /***/
            "../../components/EyeDropper.scss": (
              /*!****************************************!*\
                !*** ../../components/EyeDropper.scss ***!
                \****************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_EyeDropper_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./EyeDropper.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/EyeDropper.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_EyeDropper_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_EyeDropper_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_EyeDropper_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_EyeDropper_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9FeWVEcm9wcGVyLnNjc3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsTUFBbUg7QUFDbkgsTUFBeUc7QUFDekcsTUFBZ0g7QUFDaEgsTUFBbUk7QUFDbkksTUFBNEg7QUFDNUgsTUFBNEg7QUFDNUgsTUFBb1I7QUFDcFI7QUFDQTs7QUFFQTs7QUFFQSw0QkFBNEIseUhBQW1CO0FBQy9DLHdCQUF3QixzSUFBYTs7QUFFckMsdUJBQXVCLDJIQUFhO0FBQ3BDO0FBQ0EsaUJBQWlCLG1IQUFNO0FBQ3ZCLDZCQUE2QiwwSEFBa0I7O0FBRS9DLGFBQWEsOEhBQUcsQ0FBQyw2UEFBTzs7OztBQUk4TjtBQUN0UCxPQUFPLGlFQUFlLDZQQUFPLElBQUksb1FBQWMsR0FBRyxvUUFBYyxZQUFZLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9FeWVEcm9wcGVyLnNjc3M/YjdjMiJdLCJzb3VyY2VzQ29udGVudCI6WyJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vRXllRHJvcHBlci5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9FeWVEcm9wcGVyLnNjc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/EyeDropper.scss\n');
              }
            ),
            /***/
            "../../components/FilledButton.scss": (
              /*!******************************************!*\
                !*** ../../components/FilledButton.scss ***!
                \******************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_FilledButton_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./FilledButton.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/FilledButton.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_FilledButton_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_FilledButton_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_FilledButton_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_FilledButton_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9GaWxsZWRCdXR0b24uc2Nzcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxNQUFtSDtBQUNuSCxNQUF5RztBQUN6RyxNQUFnSDtBQUNoSCxNQUFtSTtBQUNuSSxNQUE0SDtBQUM1SCxNQUE0SDtBQUM1SCxNQUFzUjtBQUN0UjtBQUNBOztBQUVBOztBQUVBLDRCQUE0Qix5SEFBbUI7QUFDL0Msd0JBQXdCLHNJQUFhOztBQUVyQyx1QkFBdUIsMkhBQWE7QUFDcEM7QUFDQSxpQkFBaUIsbUhBQU07QUFDdkIsNkJBQTZCLDBIQUFrQjs7QUFFL0MsYUFBYSw4SEFBRyxDQUFDLCtQQUFPOzs7O0FBSWdPO0FBQ3hQLE9BQU8saUVBQWUsK1BBQU8sSUFBSSxzUUFBYyxHQUFHLHNRQUFjLFlBQVksRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL0ZpbGxlZEJ1dHRvbi5zY3NzP2E0YjEiXSwic291cmNlc0NvbnRlbnQiOlsiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0Rm4gZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzBdLnVzZVsyXSEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL0ZpbGxlZEJ1dHRvbi5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9GaWxsZWRCdXR0b24uc2Nzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/FilledButton.scss\n');
              }
            ),
            /***/
            "../../components/FixedSideContainer.scss": (
              /*!************************************************!*\
                !*** ../../components/FixedSideContainer.scss ***!
                \************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_FixedSideContainer_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./FixedSideContainer.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/FixedSideContainer.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_FixedSideContainer_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_FixedSideContainer_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_FixedSideContainer_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_FixedSideContainer_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9GaXhlZFNpZGVDb250YWluZXIuc2Nzcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxNQUFtSDtBQUNuSCxNQUF5RztBQUN6RyxNQUFnSDtBQUNoSCxNQUFtSTtBQUNuSSxNQUE0SDtBQUM1SCxNQUE0SDtBQUM1SCxNQUE0UjtBQUM1UjtBQUNBOztBQUVBOztBQUVBLDRCQUE0Qix5SEFBbUI7QUFDL0Msd0JBQXdCLHNJQUFhOztBQUVyQyx1QkFBdUIsMkhBQWE7QUFDcEM7QUFDQSxpQkFBaUIsbUhBQU07QUFDdkIsNkJBQTZCLDBIQUFrQjs7QUFFL0MsYUFBYSw4SEFBRyxDQUFDLHFRQUFPOzs7O0FBSXNPO0FBQzlQLE9BQU8saUVBQWUscVFBQU8sSUFBSSw0UUFBYyxHQUFHLDRRQUFjLFlBQVksRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL0ZpeGVkU2lkZUNvbnRhaW5lci5zY3NzPzE4ZDQiXSwic291cmNlc0NvbnRlbnQiOlsiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0Rm4gZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzBdLnVzZVsyXSEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL0ZpeGVkU2lkZUNvbnRhaW5lci5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9GaXhlZFNpZGVDb250YWluZXIuc2Nzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/FixedSideContainer.scss\n');
              }
            ),
            /***/
            "../../components/HelpDialog.scss": (
              /*!****************************************!*\
                !*** ../../components/HelpDialog.scss ***!
                \****************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_HelpDialog_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./HelpDialog.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/HelpDialog.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_HelpDialog_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_HelpDialog_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_HelpDialog_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_HelpDialog_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9IZWxwRGlhbG9nLnNjc3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsTUFBbUg7QUFDbkgsTUFBeUc7QUFDekcsTUFBZ0g7QUFDaEgsTUFBbUk7QUFDbkksTUFBNEg7QUFDNUgsTUFBNEg7QUFDNUgsTUFBb1I7QUFDcFI7QUFDQTs7QUFFQTs7QUFFQSw0QkFBNEIseUhBQW1CO0FBQy9DLHdCQUF3QixzSUFBYTs7QUFFckMsdUJBQXVCLDJIQUFhO0FBQ3BDO0FBQ0EsaUJBQWlCLG1IQUFNO0FBQ3ZCLDZCQUE2QiwwSEFBa0I7O0FBRS9DLGFBQWEsOEhBQUcsQ0FBQyw2UEFBTzs7OztBQUk4TjtBQUN0UCxPQUFPLGlFQUFlLDZQQUFPLElBQUksb1FBQWMsR0FBRyxvUUFBYyxZQUFZLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9IZWxwRGlhbG9nLnNjc3M/MThjYyJdLCJzb3VyY2VzQ29udGVudCI6WyJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vSGVscERpYWxvZy5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9IZWxwRGlhbG9nLnNjc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/HelpDialog.scss\n');
              }
            ),
            /***/
            "../../components/HintViewer.scss": (
              /*!****************************************!*\
                !*** ../../components/HintViewer.scss ***!
                \****************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_HintViewer_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./HintViewer.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/HintViewer.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_HintViewer_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_HintViewer_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_HintViewer_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_HintViewer_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9IaW50Vmlld2VyLnNjc3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsTUFBbUg7QUFDbkgsTUFBeUc7QUFDekcsTUFBZ0g7QUFDaEgsTUFBbUk7QUFDbkksTUFBNEg7QUFDNUgsTUFBNEg7QUFDNUgsTUFBb1I7QUFDcFI7QUFDQTs7QUFFQTs7QUFFQSw0QkFBNEIseUhBQW1CO0FBQy9DLHdCQUF3QixzSUFBYTs7QUFFckMsdUJBQXVCLDJIQUFhO0FBQ3BDO0FBQ0EsaUJBQWlCLG1IQUFNO0FBQ3ZCLDZCQUE2QiwwSEFBa0I7O0FBRS9DLGFBQWEsOEhBQUcsQ0FBQyw2UEFBTzs7OztBQUk4TjtBQUN0UCxPQUFPLGlFQUFlLDZQQUFPLElBQUksb1FBQWMsR0FBRyxvUUFBYyxZQUFZLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9IaW50Vmlld2VyLnNjc3M/ZmE2NiJdLCJzb3VyY2VzQ29udGVudCI6WyJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vSGludFZpZXdlci5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9IaW50Vmlld2VyLnNjc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/HintViewer.scss\n');
              }
            ),
            /***/
            "../../components/IconPicker.scss": (
              /*!****************************************!*\
                !*** ../../components/IconPicker.scss ***!
                \****************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_IconPicker_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./IconPicker.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/IconPicker.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_IconPicker_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_IconPicker_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_IconPicker_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_IconPicker_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9JY29uUGlja2VyLnNjc3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsTUFBbUg7QUFDbkgsTUFBeUc7QUFDekcsTUFBZ0g7QUFDaEgsTUFBbUk7QUFDbkksTUFBNEg7QUFDNUgsTUFBNEg7QUFDNUgsTUFBb1I7QUFDcFI7QUFDQTs7QUFFQTs7QUFFQSw0QkFBNEIseUhBQW1CO0FBQy9DLHdCQUF3QixzSUFBYTs7QUFFckMsdUJBQXVCLDJIQUFhO0FBQ3BDO0FBQ0EsaUJBQWlCLG1IQUFNO0FBQ3ZCLDZCQUE2QiwwSEFBa0I7O0FBRS9DLGFBQWEsOEhBQUcsQ0FBQyw2UEFBTzs7OztBQUk4TjtBQUN0UCxPQUFPLGlFQUFlLDZQQUFPLElBQUksb1FBQWMsR0FBRyxvUUFBYyxZQUFZLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9JY29uUGlja2VyLnNjc3M/ZThkOCJdLCJzb3VyY2VzQ29udGVudCI6WyJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vSWNvblBpY2tlci5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9JY29uUGlja2VyLnNjc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/IconPicker.scss\n');
              }
            ),
            /***/
            "../../components/ImageExportDialog.scss": (
              /*!***********************************************!*\
                !*** ../../components/ImageExportDialog.scss ***!
                \***********************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ImageExportDialog_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./ImageExportDialog.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ImageExportDialog.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ImageExportDialog_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ImageExportDialog_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ImageExportDialog_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ImageExportDialog_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9JbWFnZUV4cG9ydERpYWxvZy5zY3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLE1BQW1IO0FBQ25ILE1BQXlHO0FBQ3pHLE1BQWdIO0FBQ2hILE1BQW1JO0FBQ25JLE1BQTRIO0FBQzVILE1BQTRIO0FBQzVILE1BQTJSO0FBQzNSO0FBQ0E7O0FBRUE7O0FBRUEsNEJBQTRCLHlIQUFtQjtBQUMvQyx3QkFBd0Isc0lBQWE7O0FBRXJDLHVCQUF1QiwySEFBYTtBQUNwQztBQUNBLGlCQUFpQixtSEFBTTtBQUN2Qiw2QkFBNkIsMEhBQWtCOztBQUUvQyxhQUFhLDhIQUFHLENBQUMsb1FBQU87Ozs7QUFJcU87QUFDN1AsT0FBTyxpRUFBZSxvUUFBTyxJQUFJLDJRQUFjLEdBQUcsMlFBQWMsWUFBWSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvSW1hZ2VFeHBvcnREaWFsb2cuc2Nzcz8wOGZmIl0sInNvdXJjZXNDb250ZW50IjpbIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9JbWFnZUV4cG9ydERpYWxvZy5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9JbWFnZUV4cG9ydERpYWxvZy5zY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/ImageExportDialog.scss\n');
              }
            ),
            /***/
            "../../components/Island.scss": (
              /*!************************************!*\
                !*** ../../components/Island.scss ***!
                \************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Island_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./Island.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Island.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Island_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Island_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Island_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Island_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9Jc2xhbmQuc2Nzcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxNQUFtSDtBQUNuSCxNQUF5RztBQUN6RyxNQUFnSDtBQUNoSCxNQUFtSTtBQUNuSSxNQUE0SDtBQUM1SCxNQUE0SDtBQUM1SCxNQUFnUjtBQUNoUjtBQUNBOztBQUVBOztBQUVBLDRCQUE0Qix5SEFBbUI7QUFDL0Msd0JBQXdCLHNJQUFhOztBQUVyQyx1QkFBdUIsMkhBQWE7QUFDcEM7QUFDQSxpQkFBaUIsbUhBQU07QUFDdkIsNkJBQTZCLDBIQUFrQjs7QUFFL0MsYUFBYSw4SEFBRyxDQUFDLHlQQUFPOzs7O0FBSTBOO0FBQ2xQLE9BQU8saUVBQWUseVBBQU8sSUFBSSxnUUFBYyxHQUFHLGdRQUFjLFlBQVksRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL0lzbGFuZC5zY3NzPzAyMzIiXSwic291cmNlc0NvbnRlbnQiOlsiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0Rm4gZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzBdLnVzZVsyXSEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL0lzbGFuZC5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9Jc2xhbmQuc2Nzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/Island.scss\n');
              }
            ),
            /***/
            "../../components/LaserTool/LaserToolOverlay.scss": (
              /*!********************************************************!*\
                !*** ../../components/LaserTool/LaserToolOverlay.scss ***!
                \********************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LaserToolOverlay_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./LaserToolOverlay.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/LaserTool/LaserToolOverlay.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LaserToolOverlay_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LaserToolOverlay_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LaserToolOverlay_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LaserToolOverlay_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9MYXNlclRvb2wvTGFzZXJUb29sT3ZlcmxheS5zY3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLE1BQXNIO0FBQ3RILE1BQTRHO0FBQzVHLE1BQW1IO0FBQ25ILE1BQXNJO0FBQ3RJLE1BQStIO0FBQy9ILE1BQStIO0FBQy9ILE1BQW1TO0FBQ25TO0FBQ0E7O0FBRUE7O0FBRUEsNEJBQTRCLHlIQUFtQjtBQUMvQyx3QkFBd0Isc0lBQWE7O0FBRXJDLHVCQUF1QiwySEFBYTtBQUNwQztBQUNBLGlCQUFpQixtSEFBTTtBQUN2Qiw2QkFBNkIsMEhBQWtCOztBQUUvQyxhQUFhLDhIQUFHLENBQUMsbVFBQU87Ozs7QUFJNk87QUFDclEsT0FBTyxpRUFBZSxtUUFBTyxJQUFJLDBRQUFjLEdBQUcsMFFBQWMsWUFBWSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvTGFzZXJUb29sL0xhc2VyVG9vbE92ZXJsYXkuc2Nzcz83MWFlIl0sInNvdXJjZXNDb250ZW50IjpbIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9MYXNlclRvb2xPdmVybGF5LnNjc3NcIjtcbiAgICAgIFxuICAgICAgXG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0gPSBzdHlsZVRhZ1RyYW5zZm9ybUZuO1xub3B0aW9ucy5zZXRBdHRyaWJ1dGVzID0gc2V0QXR0cmlidXRlcztcblxuICAgICAgb3B0aW9ucy5pbnNlcnQgPSBpbnNlcnRGbi5iaW5kKG51bGwsIFwiaGVhZFwiKTtcbiAgICBcbm9wdGlvbnMuZG9tQVBJID0gZG9tQVBJO1xub3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7XG5cbnZhciB1cGRhdGUgPSBBUEkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgKiBmcm9tIFwiISEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzBdLnVzZVsyXSEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL0xhc2VyVG9vbE92ZXJsYXkuc2Nzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/LaserTool/LaserToolOverlay.scss\n');
              }
            ),
            /***/
            "../../components/LayerUI.scss": (
              /*!*************************************!*\
                !*** ../../components/LayerUI.scss ***!
                \*************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LayerUI_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./LayerUI.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/LayerUI.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LayerUI_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LayerUI_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LayerUI_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LayerUI_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9MYXllclVJLnNjc3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsTUFBbUg7QUFDbkgsTUFBeUc7QUFDekcsTUFBZ0g7QUFDaEgsTUFBbUk7QUFDbkksTUFBNEg7QUFDNUgsTUFBNEg7QUFDNUgsTUFBaVI7QUFDalI7QUFDQTs7QUFFQTs7QUFFQSw0QkFBNEIseUhBQW1CO0FBQy9DLHdCQUF3QixzSUFBYTs7QUFFckMsdUJBQXVCLDJIQUFhO0FBQ3BDO0FBQ0EsaUJBQWlCLG1IQUFNO0FBQ3ZCLDZCQUE2QiwwSEFBa0I7O0FBRS9DLGFBQWEsOEhBQUcsQ0FBQywwUEFBTzs7OztBQUkyTjtBQUNuUCxPQUFPLGlFQUFlLDBQQUFPLElBQUksaVFBQWMsR0FBRyxpUUFBYyxZQUFZLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9MYXllclVJLnNjc3M/ZmQzNCJdLCJzb3VyY2VzQ29udGVudCI6WyJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vTGF5ZXJVSS5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9MYXllclVJLnNjc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/LayerUI.scss\n');
              }
            ),
            /***/
            "../../components/LibraryMenu.scss": (
              /*!*****************************************!*\
                !*** ../../components/LibraryMenu.scss ***!
                \*****************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LibraryMenu_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./LibraryMenu.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/LibraryMenu.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LibraryMenu_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LibraryMenu_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LibraryMenu_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LibraryMenu_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9MaWJyYXJ5TWVudS5zY3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLE1BQW1IO0FBQ25ILE1BQXlHO0FBQ3pHLE1BQWdIO0FBQ2hILE1BQW1JO0FBQ25JLE1BQTRIO0FBQzVILE1BQTRIO0FBQzVILE1BQXFSO0FBQ3JSO0FBQ0E7O0FBRUE7O0FBRUEsNEJBQTRCLHlIQUFtQjtBQUMvQyx3QkFBd0Isc0lBQWE7O0FBRXJDLHVCQUF1QiwySEFBYTtBQUNwQztBQUNBLGlCQUFpQixtSEFBTTtBQUN2Qiw2QkFBNkIsMEhBQWtCOztBQUUvQyxhQUFhLDhIQUFHLENBQUMsOFBBQU87Ozs7QUFJK047QUFDdlAsT0FBTyxpRUFBZSw4UEFBTyxJQUFJLHFRQUFjLEdBQUcscVFBQWMsWUFBWSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvTGlicmFyeU1lbnUuc2Nzcz8yODMzIl0sInNvdXJjZXNDb250ZW50IjpbIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9MaWJyYXJ5TWVudS5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9MaWJyYXJ5TWVudS5zY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/LibraryMenu.scss\n');
              }
            ),
            /***/
            "../../components/LibraryMenuItems.scss": (
              /*!**********************************************!*\
                !*** ../../components/LibraryMenuItems.scss ***!
                \**********************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LibraryMenuItems_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./LibraryMenuItems.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/LibraryMenuItems.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LibraryMenuItems_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LibraryMenuItems_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LibraryMenuItems_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LibraryMenuItems_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9MaWJyYXJ5TWVudUl0ZW1zLnNjc3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsTUFBbUg7QUFDbkgsTUFBeUc7QUFDekcsTUFBZ0g7QUFDaEgsTUFBbUk7QUFDbkksTUFBNEg7QUFDNUgsTUFBNEg7QUFDNUgsTUFBMFI7QUFDMVI7QUFDQTs7QUFFQTs7QUFFQSw0QkFBNEIseUhBQW1CO0FBQy9DLHdCQUF3QixzSUFBYTs7QUFFckMsdUJBQXVCLDJIQUFhO0FBQ3BDO0FBQ0EsaUJBQWlCLG1IQUFNO0FBQ3ZCLDZCQUE2QiwwSEFBa0I7O0FBRS9DLGFBQWEsOEhBQUcsQ0FBQyxtUUFBTzs7OztBQUlvTztBQUM1UCxPQUFPLGlFQUFlLG1RQUFPLElBQUksMFFBQWMsR0FBRywwUUFBYyxZQUFZLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9MaWJyYXJ5TWVudUl0ZW1zLnNjc3M/YjNkYSJdLCJzb3VyY2VzQ29udGVudCI6WyJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vTGlicmFyeU1lbnVJdGVtcy5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9MaWJyYXJ5TWVudUl0ZW1zLnNjc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/LibraryMenuItems.scss\n');
              }
            ),
            /***/
            "../../components/LibraryUnit.scss": (
              /*!*****************************************!*\
                !*** ../../components/LibraryUnit.scss ***!
                \*****************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LibraryUnit_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./LibraryUnit.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/LibraryUnit.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LibraryUnit_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LibraryUnit_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LibraryUnit_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LibraryUnit_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9MaWJyYXJ5VW5pdC5zY3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLE1BQW1IO0FBQ25ILE1BQXlHO0FBQ3pHLE1BQWdIO0FBQ2hILE1BQW1JO0FBQ25JLE1BQTRIO0FBQzVILE1BQTRIO0FBQzVILE1BQXFSO0FBQ3JSO0FBQ0E7O0FBRUE7O0FBRUEsNEJBQTRCLHlIQUFtQjtBQUMvQyx3QkFBd0Isc0lBQWE7O0FBRXJDLHVCQUF1QiwySEFBYTtBQUNwQztBQUNBLGlCQUFpQixtSEFBTTtBQUN2Qiw2QkFBNkIsMEhBQWtCOztBQUUvQyxhQUFhLDhIQUFHLENBQUMsOFBBQU87Ozs7QUFJK047QUFDdlAsT0FBTyxpRUFBZSw4UEFBTyxJQUFJLHFRQUFjLEdBQUcscVFBQWMsWUFBWSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvTGlicmFyeVVuaXQuc2Nzcz80YTBjIl0sInNvdXJjZXNDb250ZW50IjpbIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9MaWJyYXJ5VW5pdC5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9MaWJyYXJ5VW5pdC5zY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/LibraryUnit.scss\n');
              }
            ),
            /***/
            "../../components/MermaidToExcalidraw.scss": (
              /*!*************************************************!*\
                !*** ../../components/MermaidToExcalidraw.scss ***!
                \*************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_MermaidToExcalidraw_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./MermaidToExcalidraw.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/MermaidToExcalidraw.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_MermaidToExcalidraw_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_MermaidToExcalidraw_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_MermaidToExcalidraw_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_MermaidToExcalidraw_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9NZXJtYWlkVG9FeGNhbGlkcmF3LnNjc3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsTUFBbUg7QUFDbkgsTUFBeUc7QUFDekcsTUFBZ0g7QUFDaEgsTUFBbUk7QUFDbkksTUFBNEg7QUFDNUgsTUFBNEg7QUFDNUgsTUFBNlI7QUFDN1I7QUFDQTs7QUFFQTs7QUFFQSw0QkFBNEIseUhBQW1CO0FBQy9DLHdCQUF3QixzSUFBYTs7QUFFckMsdUJBQXVCLDJIQUFhO0FBQ3BDO0FBQ0EsaUJBQWlCLG1IQUFNO0FBQ3ZCLDZCQUE2QiwwSEFBa0I7O0FBRS9DLGFBQWEsOEhBQUcsQ0FBQyxzUUFBTzs7OztBQUl1TztBQUMvUCxPQUFPLGlFQUFlLHNRQUFPLElBQUksNlFBQWMsR0FBRyw2UUFBYyxZQUFZLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9NZXJtYWlkVG9FeGNhbGlkcmF3LnNjc3M/Y2RkNiJdLCJzb3VyY2VzQ29udGVudCI6WyJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vTWVybWFpZFRvRXhjYWxpZHJhdy5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9NZXJtYWlkVG9FeGNhbGlkcmF3LnNjc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/MermaidToExcalidraw.scss\n');
              }
            ),
            /***/
            "../../components/Modal.scss": (
              /*!***********************************!*\
                !*** ../../components/Modal.scss ***!
                \***********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Modal_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./Modal.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Modal.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Modal_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Modal_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Modal_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Modal_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9Nb2RhbC5zY3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLE1BQW1IO0FBQ25ILE1BQXlHO0FBQ3pHLE1BQWdIO0FBQ2hILE1BQW1JO0FBQ25JLE1BQTRIO0FBQzVILE1BQTRIO0FBQzVILE1BQStRO0FBQy9RO0FBQ0E7O0FBRUE7O0FBRUEsNEJBQTRCLHlIQUFtQjtBQUMvQyx3QkFBd0Isc0lBQWE7O0FBRXJDLHVCQUF1QiwySEFBYTtBQUNwQztBQUNBLGlCQUFpQixtSEFBTTtBQUN2Qiw2QkFBNkIsMEhBQWtCOztBQUUvQyxhQUFhLDhIQUFHLENBQUMsd1BBQU87Ozs7QUFJeU47QUFDalAsT0FBTyxpRUFBZSx3UEFBTyxJQUFJLCtQQUFjLEdBQUcsK1BBQWMsWUFBWSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvTW9kYWwuc2Nzcz83MDdkIl0sInNvdXJjZXNDb250ZW50IjpbIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9Nb2RhbC5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9Nb2RhbC5zY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/Modal.scss\n');
              }
            ),
            /***/
            "../../components/OverwriteConfirm/OverwriteConfirm.scss": (
              /*!***************************************************************!*\
                !*** ../../components/OverwriteConfirm/OverwriteConfirm.scss ***!
                \***************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_OverwriteConfirm_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./OverwriteConfirm.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/OverwriteConfirm/OverwriteConfirm.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_OverwriteConfirm_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_OverwriteConfirm_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_OverwriteConfirm_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_OverwriteConfirm_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9PdmVyd3JpdGVDb25maXJtL092ZXJ3cml0ZUNvbmZpcm0uc2Nzcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxNQUFzSDtBQUN0SCxNQUE0RztBQUM1RyxNQUFtSDtBQUNuSCxNQUFzSTtBQUN0SSxNQUErSDtBQUMvSCxNQUErSDtBQUMvSCxNQUFtUztBQUNuUztBQUNBOztBQUVBOztBQUVBLDRCQUE0Qix5SEFBbUI7QUFDL0Msd0JBQXdCLHNJQUFhOztBQUVyQyx1QkFBdUIsMkhBQWE7QUFDcEM7QUFDQSxpQkFBaUIsbUhBQU07QUFDdkIsNkJBQTZCLDBIQUFrQjs7QUFFL0MsYUFBYSw4SEFBRyxDQUFDLG1RQUFPOzs7O0FBSTZPO0FBQ3JRLE9BQU8saUVBQWUsbVFBQU8sSUFBSSwwUUFBYyxHQUFHLDBRQUFjLFlBQVksRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL092ZXJ3cml0ZUNvbmZpcm0vT3ZlcndyaXRlQ29uZmlybS5zY3NzPzE3NGIiXSwic291cmNlc0NvbnRlbnQiOlsiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0Rm4gZnJvbSBcIiEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzBdLnVzZVsyXSEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL092ZXJ3cml0ZUNvbmZpcm0uc2Nzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xuXG4gICAgICBvcHRpb25zLmluc2VydCA9IGluc2VydEZuLmJpbmQobnVsbCwgXCJoZWFkXCIpO1xuICAgIFxub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vT3ZlcndyaXRlQ29uZmlybS5zY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/OverwriteConfirm/OverwriteConfirm.scss\n');
              }
            ),
            /***/
            "../../components/PasteChartDialog.scss": (
              /*!**********************************************!*\
                !*** ../../components/PasteChartDialog.scss ***!
                \**********************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_PasteChartDialog_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./PasteChartDialog.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/PasteChartDialog.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_PasteChartDialog_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_PasteChartDialog_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_PasteChartDialog_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_PasteChartDialog_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9QYXN0ZUNoYXJ0RGlhbG9nLnNjc3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsTUFBbUg7QUFDbkgsTUFBeUc7QUFDekcsTUFBZ0g7QUFDaEgsTUFBbUk7QUFDbkksTUFBNEg7QUFDNUgsTUFBNEg7QUFDNUgsTUFBMFI7QUFDMVI7QUFDQTs7QUFFQTs7QUFFQSw0QkFBNEIseUhBQW1CO0FBQy9DLHdCQUF3QixzSUFBYTs7QUFFckMsdUJBQXVCLDJIQUFhO0FBQ3BDO0FBQ0EsaUJBQWlCLG1IQUFNO0FBQ3ZCLDZCQUE2QiwwSEFBa0I7O0FBRS9DLGFBQWEsOEhBQUcsQ0FBQyxtUUFBTzs7OztBQUlvTztBQUM1UCxPQUFPLGlFQUFlLG1RQUFPLElBQUksMFFBQWMsR0FBRywwUUFBYyxZQUFZLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9QYXN0ZUNoYXJ0RGlhbG9nLnNjc3M/ZTIzZCJdLCJzb3VyY2VzQ29udGVudCI6WyJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vUGFzdGVDaGFydERpYWxvZy5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9QYXN0ZUNoYXJ0RGlhbG9nLnNjc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/PasteChartDialog.scss\n');
              }
            ),
            /***/
            "../../components/Popover.scss": (
              /*!*************************************!*\
                !*** ../../components/Popover.scss ***!
                \*************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Popover_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./Popover.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Popover.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Popover_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Popover_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Popover_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Popover_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9Qb3BvdmVyLnNjc3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsTUFBbUg7QUFDbkgsTUFBeUc7QUFDekcsTUFBZ0g7QUFDaEgsTUFBbUk7QUFDbkksTUFBNEg7QUFDNUgsTUFBNEg7QUFDNUgsTUFBaVI7QUFDalI7QUFDQTs7QUFFQTs7QUFFQSw0QkFBNEIseUhBQW1CO0FBQy9DLHdCQUF3QixzSUFBYTs7QUFFckMsdUJBQXVCLDJIQUFhO0FBQ3BDO0FBQ0EsaUJBQWlCLG1IQUFNO0FBQ3ZCLDZCQUE2QiwwSEFBa0I7O0FBRS9DLGFBQWEsOEhBQUcsQ0FBQywwUEFBTzs7OztBQUkyTjtBQUNuUCxPQUFPLGlFQUFlLDBQQUFPLElBQUksaVFBQWMsR0FBRyxpUUFBYyxZQUFZLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9Qb3BvdmVyLnNjc3M/ZmY1MSJdLCJzb3VyY2VzQ29udGVudCI6WyJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vUG9wb3Zlci5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9Qb3BvdmVyLnNjc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/Popover.scss\n');
              }
            ),
            /***/
            "../../components/ProjectName.scss": (
              /*!*****************************************!*\
                !*** ../../components/ProjectName.scss ***!
                \*****************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ProjectName_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./ProjectName.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ProjectName.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ProjectName_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ProjectName_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ProjectName_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ProjectName_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9Qcm9qZWN0TmFtZS5zY3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLE1BQW1IO0FBQ25ILE1BQXlHO0FBQ3pHLE1BQWdIO0FBQ2hILE1BQW1JO0FBQ25JLE1BQTRIO0FBQzVILE1BQTRIO0FBQzVILE1BQXFSO0FBQ3JSO0FBQ0E7O0FBRUE7O0FBRUEsNEJBQTRCLHlIQUFtQjtBQUMvQyx3QkFBd0Isc0lBQWE7O0FBRXJDLHVCQUF1QiwySEFBYTtBQUNwQztBQUNBLGlCQUFpQixtSEFBTTtBQUN2Qiw2QkFBNkIsMEhBQWtCOztBQUUvQyxhQUFhLDhIQUFHLENBQUMsOFBBQU87Ozs7QUFJK047QUFDdlAsT0FBTyxpRUFBZSw4UEFBTyxJQUFJLHFRQUFjLEdBQUcscVFBQWMsWUFBWSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvUHJvamVjdE5hbWUuc2Nzcz84ZGZiIl0sInNvdXJjZXNDb250ZW50IjpbIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9Qcm9qZWN0TmFtZS5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9Qcm9qZWN0TmFtZS5zY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/ProjectName.scss\n');
              }
            ),
            /***/
            "../../components/PublishLibrary.scss": (
              /*!********************************************!*\
                !*** ../../components/PublishLibrary.scss ***!
                \********************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_PublishLibrary_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./PublishLibrary.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/PublishLibrary.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_PublishLibrary_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_PublishLibrary_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_PublishLibrary_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_PublishLibrary_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9QdWJsaXNoTGlicmFyeS5zY3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLE1BQW1IO0FBQ25ILE1BQXlHO0FBQ3pHLE1BQWdIO0FBQ2hILE1BQW1JO0FBQ25JLE1BQTRIO0FBQzVILE1BQTRIO0FBQzVILE1BQXdSO0FBQ3hSO0FBQ0E7O0FBRUE7O0FBRUEsNEJBQTRCLHlIQUFtQjtBQUMvQyx3QkFBd0Isc0lBQWE7O0FBRXJDLHVCQUF1QiwySEFBYTtBQUNwQztBQUNBLGlCQUFpQixtSEFBTTtBQUN2Qiw2QkFBNkIsMEhBQWtCOztBQUUvQyxhQUFhLDhIQUFHLENBQUMsaVFBQU87Ozs7QUFJa087QUFDMVAsT0FBTyxpRUFBZSxpUUFBTyxJQUFJLHdRQUFjLEdBQUcsd1FBQWMsWUFBWSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvUHVibGlzaExpYnJhcnkuc2Nzcz81Y2JlIl0sInNvdXJjZXNDb250ZW50IjpbIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9QdWJsaXNoTGlicmFyeS5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9QdWJsaXNoTGlicmFyeS5zY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/PublishLibrary.scss\n');
              }
            ),
            /***/
            "../../components/RadioGroup.scss": (
              /*!****************************************!*\
                !*** ../../components/RadioGroup.scss ***!
                \****************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_RadioGroup_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./RadioGroup.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/RadioGroup.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_RadioGroup_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_RadioGroup_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_RadioGroup_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_RadioGroup_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9SYWRpb0dyb3VwLnNjc3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsTUFBbUg7QUFDbkgsTUFBeUc7QUFDekcsTUFBZ0g7QUFDaEgsTUFBbUk7QUFDbkksTUFBNEg7QUFDNUgsTUFBNEg7QUFDNUgsTUFBb1I7QUFDcFI7QUFDQTs7QUFFQTs7QUFFQSw0QkFBNEIseUhBQW1CO0FBQy9DLHdCQUF3QixzSUFBYTs7QUFFckMsdUJBQXVCLDJIQUFhO0FBQ3BDO0FBQ0EsaUJBQWlCLG1IQUFNO0FBQ3ZCLDZCQUE2QiwwSEFBa0I7O0FBRS9DLGFBQWEsOEhBQUcsQ0FBQyw2UEFBTzs7OztBQUk4TjtBQUN0UCxPQUFPLGlFQUFlLDZQQUFPLElBQUksb1FBQWMsR0FBRyxvUUFBYyxZQUFZLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9SYWRpb0dyb3VwLnNjc3M/YTNkOCJdLCJzb3VyY2VzQ29udGVudCI6WyJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vUmFkaW9Hcm91cC5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9SYWRpb0dyb3VwLnNjc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/RadioGroup.scss\n');
              }
            ),
            /***/
            "../../components/Sidebar/Sidebar.scss": (
              /*!*********************************************!*\
                !*** ../../components/Sidebar/Sidebar.scss ***!
                \*********************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Sidebar_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./Sidebar.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Sidebar/Sidebar.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Sidebar_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Sidebar_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Sidebar_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Sidebar_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9TaWRlYmFyL1NpZGViYXIuc2Nzcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxNQUFzSDtBQUN0SCxNQUE0RztBQUM1RyxNQUFtSDtBQUNuSCxNQUFzSTtBQUN0SSxNQUErSDtBQUMvSCxNQUErSDtBQUMvSCxNQUEwUjtBQUMxUjtBQUNBOztBQUVBOztBQUVBLDRCQUE0Qix5SEFBbUI7QUFDL0Msd0JBQXdCLHNJQUFhOztBQUVyQyx1QkFBdUIsMkhBQWE7QUFDcEM7QUFDQSxpQkFBaUIsbUhBQU07QUFDdkIsNkJBQTZCLDBIQUFrQjs7QUFFL0MsYUFBYSw4SEFBRyxDQUFDLDBQQUFPOzs7O0FBSW9PO0FBQzVQLE9BQU8saUVBQWUsMFBBQU8sSUFBSSxpUUFBYyxHQUFHLGlRQUFjLFlBQVksRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL1NpZGViYXIvU2lkZWJhci5zY3NzP2I1YmIiXSwic291cmNlc0NvbnRlbnQiOlsiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0Rm4gZnJvbSBcIiEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzBdLnVzZVsyXSEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL1NpZGViYXIuc2Nzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xuXG4gICAgICBvcHRpb25zLmluc2VydCA9IGluc2VydEZuLmJpbmQobnVsbCwgXCJoZWFkXCIpO1xuICAgIFxub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vU2lkZWJhci5zY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/Sidebar/Sidebar.scss\n');
              }
            ),
            /***/
            "../../components/Sidebar/SidebarTrigger.scss": (
              /*!****************************************************!*\
                !*** ../../components/Sidebar/SidebarTrigger.scss ***!
                \****************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_SidebarTrigger_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./SidebarTrigger.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Sidebar/SidebarTrigger.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_SidebarTrigger_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_SidebarTrigger_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_SidebarTrigger_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_SidebarTrigger_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9TaWRlYmFyL1NpZGViYXJUcmlnZ2VyLnNjc3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsTUFBc0g7QUFDdEgsTUFBNEc7QUFDNUcsTUFBbUg7QUFDbkgsTUFBc0k7QUFDdEksTUFBK0g7QUFDL0gsTUFBK0g7QUFDL0gsTUFBaVM7QUFDalM7QUFDQTs7QUFFQTs7QUFFQSw0QkFBNEIseUhBQW1CO0FBQy9DLHdCQUF3QixzSUFBYTs7QUFFckMsdUJBQXVCLDJIQUFhO0FBQ3BDO0FBQ0EsaUJBQWlCLG1IQUFNO0FBQ3ZCLDZCQUE2QiwwSEFBa0I7O0FBRS9DLGFBQWEsOEhBQUcsQ0FBQyxpUUFBTzs7OztBQUkyTztBQUNuUSxPQUFPLGlFQUFlLGlRQUFPLElBQUksd1FBQWMsR0FBRyx3UUFBYyxZQUFZLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9TaWRlYmFyL1NpZGViYXJUcmlnZ2VyLnNjc3M/NDgyZiJdLCJzb3VyY2VzQ29udGVudCI6WyJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vU2lkZWJhclRyaWdnZXIuc2Nzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xuXG4gICAgICBvcHRpb25zLmluc2VydCA9IGluc2VydEZuLmJpbmQobnVsbCwgXCJoZWFkXCIpO1xuICAgIFxub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vU2lkZWJhclRyaWdnZXIuc2Nzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/Sidebar/SidebarTrigger.scss\n');
              }
            ),
            /***/
            "../../components/Spinner.scss": (
              /*!*************************************!*\
                !*** ../../components/Spinner.scss ***!
                \*************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Spinner_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./Spinner.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Spinner.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Spinner_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Spinner_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Spinner_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Spinner_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9TcGlubmVyLnNjc3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsTUFBbUg7QUFDbkgsTUFBeUc7QUFDekcsTUFBZ0g7QUFDaEgsTUFBbUk7QUFDbkksTUFBNEg7QUFDNUgsTUFBNEg7QUFDNUgsTUFBaVI7QUFDalI7QUFDQTs7QUFFQTs7QUFFQSw0QkFBNEIseUhBQW1CO0FBQy9DLHdCQUF3QixzSUFBYTs7QUFFckMsdUJBQXVCLDJIQUFhO0FBQ3BDO0FBQ0EsaUJBQWlCLG1IQUFNO0FBQ3ZCLDZCQUE2QiwwSEFBa0I7O0FBRS9DLGFBQWEsOEhBQUcsQ0FBQywwUEFBTzs7OztBQUkyTjtBQUNuUCxPQUFPLGlFQUFlLDBQQUFPLElBQUksaVFBQWMsR0FBRyxpUUFBYyxZQUFZLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9TcGlubmVyLnNjc3M/YWFjMyJdLCJzb3VyY2VzQ29udGVudCI6WyJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vU3Bpbm5lci5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9TcGlubmVyLnNjc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/Spinner.scss\n');
              }
            ),
            /***/
            "../../components/Stack.scss": (
              /*!***********************************!*\
                !*** ../../components/Stack.scss ***!
                \***********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Stack_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./Stack.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Stack.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Stack_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Stack_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Stack_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Stack_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9TdGFjay5zY3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLE1BQW1IO0FBQ25ILE1BQXlHO0FBQ3pHLE1BQWdIO0FBQ2hILE1BQW1JO0FBQ25JLE1BQTRIO0FBQzVILE1BQTRIO0FBQzVILE1BQStRO0FBQy9RO0FBQ0E7O0FBRUE7O0FBRUEsNEJBQTRCLHlIQUFtQjtBQUMvQyx3QkFBd0Isc0lBQWE7O0FBRXJDLHVCQUF1QiwySEFBYTtBQUNwQztBQUNBLGlCQUFpQixtSEFBTTtBQUN2Qiw2QkFBNkIsMEhBQWtCOztBQUUvQyxhQUFhLDhIQUFHLENBQUMsd1BBQU87Ozs7QUFJeU47QUFDalAsT0FBTyxpRUFBZSx3UEFBTyxJQUFJLCtQQUFjLEdBQUcsK1BBQWMsWUFBWSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvU3RhY2suc2Nzcz84NDkyIl0sInNvdXJjZXNDb250ZW50IjpbIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9TdGFjay5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9TdGFjay5zY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/Stack.scss\n');
              }
            ),
            /***/
            "../../components/Stats.scss": (
              /*!***********************************!*\
                !*** ../../components/Stats.scss ***!
                \***********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Stats_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./Stats.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Stats.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Stats_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Stats_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Stats_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Stats_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9TdGF0cy5zY3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLE1BQW1IO0FBQ25ILE1BQXlHO0FBQ3pHLE1BQWdIO0FBQ2hILE1BQW1JO0FBQ25JLE1BQTRIO0FBQzVILE1BQTRIO0FBQzVILE1BQStRO0FBQy9RO0FBQ0E7O0FBRUE7O0FBRUEsNEJBQTRCLHlIQUFtQjtBQUMvQyx3QkFBd0Isc0lBQWE7O0FBRXJDLHVCQUF1QiwySEFBYTtBQUNwQztBQUNBLGlCQUFpQixtSEFBTTtBQUN2Qiw2QkFBNkIsMEhBQWtCOztBQUUvQyxhQUFhLDhIQUFHLENBQUMsd1BBQU87Ozs7QUFJeU47QUFDalAsT0FBTyxpRUFBZSx3UEFBTyxJQUFJLCtQQUFjLEdBQUcsK1BBQWMsWUFBWSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvU3RhdHMuc2Nzcz9jNjJkIl0sInNvdXJjZXNDb250ZW50IjpbIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9TdGF0cy5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9TdGF0cy5zY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/Stats.scss\n');
              }
            ),
            /***/
            "../../components/Switch.scss": (
              /*!************************************!*\
                !*** ../../components/Switch.scss ***!
                \************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Switch_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./Switch.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Switch.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Switch_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Switch_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Switch_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Switch_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9Td2l0Y2guc2Nzcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxNQUFtSDtBQUNuSCxNQUF5RztBQUN6RyxNQUFnSDtBQUNoSCxNQUFtSTtBQUNuSSxNQUE0SDtBQUM1SCxNQUE0SDtBQUM1SCxNQUFnUjtBQUNoUjtBQUNBOztBQUVBOztBQUVBLDRCQUE0Qix5SEFBbUI7QUFDL0Msd0JBQXdCLHNJQUFhOztBQUVyQyx1QkFBdUIsMkhBQWE7QUFDcEM7QUFDQSxpQkFBaUIsbUhBQU07QUFDdkIsNkJBQTZCLDBIQUFrQjs7QUFFL0MsYUFBYSw4SEFBRyxDQUFDLHlQQUFPOzs7O0FBSTBOO0FBQ2xQLE9BQU8saUVBQWUseVBBQU8sSUFBSSxnUUFBYyxHQUFHLGdRQUFjLFlBQVksRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL1N3aXRjaC5zY3NzP2ZmMmQiXSwic291cmNlc0NvbnRlbnQiOlsiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0Rm4gZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzBdLnVzZVsyXSEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL1N3aXRjaC5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9Td2l0Y2guc2Nzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/Switch.scss\n');
              }
            ),
            /***/
            "../../components/TextInput.scss": (
              /*!***************************************!*\
                !*** ../../components/TextInput.scss ***!
                \***************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_TextInput_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./TextInput.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/TextInput.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_TextInput_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_TextInput_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_TextInput_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_TextInput_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9UZXh0SW5wdXQuc2Nzcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxNQUFtSDtBQUNuSCxNQUF5RztBQUN6RyxNQUFnSDtBQUNoSCxNQUFtSTtBQUNuSSxNQUE0SDtBQUM1SCxNQUE0SDtBQUM1SCxNQUFtUjtBQUNuUjtBQUNBOztBQUVBOztBQUVBLDRCQUE0Qix5SEFBbUI7QUFDL0Msd0JBQXdCLHNJQUFhOztBQUVyQyx1QkFBdUIsMkhBQWE7QUFDcEM7QUFDQSxpQkFBaUIsbUhBQU07QUFDdkIsNkJBQTZCLDBIQUFrQjs7QUFFL0MsYUFBYSw4SEFBRyxDQUFDLDRQQUFPOzs7O0FBSTZOO0FBQ3JQLE9BQU8saUVBQWUsNFBBQU8sSUFBSSxtUUFBYyxHQUFHLG1RQUFjLFlBQVksRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL1RleHRJbnB1dC5zY3NzP2VmYzQiXSwic291cmNlc0NvbnRlbnQiOlsiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0Rm4gZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzBdLnVzZVsyXSEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL1RleHRJbnB1dC5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9UZXh0SW5wdXQuc2Nzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/TextInput.scss\n');
              }
            ),
            /***/
            "../../components/Toast.scss": (
              /*!***********************************!*\
                !*** ../../components/Toast.scss ***!
                \***********************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Toast_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./Toast.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Toast.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Toast_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Toast_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Toast_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Toast_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9Ub2FzdC5zY3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLE1BQW1IO0FBQ25ILE1BQXlHO0FBQ3pHLE1BQWdIO0FBQ2hILE1BQW1JO0FBQ25JLE1BQTRIO0FBQzVILE1BQTRIO0FBQzVILE1BQStRO0FBQy9RO0FBQ0E7O0FBRUE7O0FBRUEsNEJBQTRCLHlIQUFtQjtBQUMvQyx3QkFBd0Isc0lBQWE7O0FBRXJDLHVCQUF1QiwySEFBYTtBQUNwQztBQUNBLGlCQUFpQixtSEFBTTtBQUN2Qiw2QkFBNkIsMEhBQWtCOztBQUUvQyxhQUFhLDhIQUFHLENBQUMsd1BBQU87Ozs7QUFJeU47QUFDalAsT0FBTyxpRUFBZSx3UEFBTyxJQUFJLCtQQUFjLEdBQUcsK1BBQWMsWUFBWSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvVG9hc3Quc2Nzcz9jYzBhIl0sInNvdXJjZXNDb250ZW50IjpbIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9Ub2FzdC5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9Ub2FzdC5zY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/Toast.scss\n');
              }
            ),
            /***/
            "../../components/ToolIcon.scss": (
              /*!**************************************!*\
                !*** ../../components/ToolIcon.scss ***!
                \**************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ToolIcon_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./ToolIcon.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/ToolIcon.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ToolIcon_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ToolIcon_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ToolIcon_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_ToolIcon_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9Ub29sSWNvbi5zY3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLE1BQW1IO0FBQ25ILE1BQXlHO0FBQ3pHLE1BQWdIO0FBQ2hILE1BQW1JO0FBQ25JLE1BQTRIO0FBQzVILE1BQTRIO0FBQzVILE1BQWtSO0FBQ2xSO0FBQ0E7O0FBRUE7O0FBRUEsNEJBQTRCLHlIQUFtQjtBQUMvQyx3QkFBd0Isc0lBQWE7O0FBRXJDLHVCQUF1QiwySEFBYTtBQUNwQztBQUNBLGlCQUFpQixtSEFBTTtBQUN2Qiw2QkFBNkIsMEhBQWtCOztBQUUvQyxhQUFhLDhIQUFHLENBQUMsMlBBQU87Ozs7QUFJNE47QUFDcFAsT0FBTyxpRUFBZSwyUEFBTyxJQUFJLGtRQUFjLEdBQUcsa1FBQWMsWUFBWSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvVG9vbEljb24uc2Nzcz8zZDRhIl0sInNvdXJjZXNDb250ZW50IjpbIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9Ub29sSWNvbi5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9Ub29sSWNvbi5zY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/ToolIcon.scss\n');
              }
            ),
            /***/
            "../../components/Toolbar.scss": (
              /*!*************************************!*\
                !*** ../../components/Toolbar.scss ***!
                \*************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Toolbar_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./Toolbar.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Toolbar.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Toolbar_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Toolbar_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Toolbar_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Toolbar_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9Ub29sYmFyLnNjc3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsTUFBbUg7QUFDbkgsTUFBeUc7QUFDekcsTUFBZ0g7QUFDaEgsTUFBbUk7QUFDbkksTUFBNEg7QUFDNUgsTUFBNEg7QUFDNUgsTUFBaVI7QUFDalI7QUFDQTs7QUFFQTs7QUFFQSw0QkFBNEIseUhBQW1CO0FBQy9DLHdCQUF3QixzSUFBYTs7QUFFckMsdUJBQXVCLDJIQUFhO0FBQ3BDO0FBQ0EsaUJBQWlCLG1IQUFNO0FBQ3ZCLDZCQUE2QiwwSEFBa0I7O0FBRS9DLGFBQWEsOEhBQUcsQ0FBQywwUEFBTzs7OztBQUkyTjtBQUNuUCxPQUFPLGlFQUFlLDBQQUFPLElBQUksaVFBQWMsR0FBRyxpUUFBYyxZQUFZLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9Ub29sYmFyLnNjc3M/N2M4OSJdLCJzb3VyY2VzQ29udGVudCI6WyJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vVG9vbGJhci5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9Ub29sYmFyLnNjc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/Toolbar.scss\n');
              }
            ),
            /***/
            "../../components/Tooltip.scss": (
              /*!*************************************!*\
                !*** ../../components/Tooltip.scss ***!
                \*************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Tooltip_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./Tooltip.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/Tooltip.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Tooltip_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Tooltip_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Tooltip_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Tooltip_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9Ub29sdGlwLnNjc3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsTUFBbUg7QUFDbkgsTUFBeUc7QUFDekcsTUFBZ0g7QUFDaEgsTUFBbUk7QUFDbkksTUFBNEg7QUFDNUgsTUFBNEg7QUFDNUgsTUFBaVI7QUFDalI7QUFDQTs7QUFFQTs7QUFFQSw0QkFBNEIseUhBQW1CO0FBQy9DLHdCQUF3QixzSUFBYTs7QUFFckMsdUJBQXVCLDJIQUFhO0FBQ3BDO0FBQ0EsaUJBQWlCLG1IQUFNO0FBQ3ZCLDZCQUE2QiwwSEFBa0I7O0FBRS9DLGFBQWEsOEhBQUcsQ0FBQywwUEFBTzs7OztBQUkyTjtBQUNuUCxPQUFPLGlFQUFlLDBQQUFPLElBQUksaVFBQWMsR0FBRyxpUUFBYyxZQUFZLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9Ub29sdGlwLnNjc3M/MTJlZSJdLCJzb3VyY2VzQ29udGVudCI6WyJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vVG9vbHRpcC5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9Ub29sdGlwLnNjc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/Tooltip.scss\n');
              }
            ),
            /***/
            "../../components/UserList.scss": (
              /*!**************************************!*\
                !*** ../../components/UserList.scss ***!
                \**************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_UserList_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./UserList.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/UserList.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_UserList_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_UserList_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_UserList_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_UserList_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9Vc2VyTGlzdC5zY3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLE1BQW1IO0FBQ25ILE1BQXlHO0FBQ3pHLE1BQWdIO0FBQ2hILE1BQW1JO0FBQ25JLE1BQTRIO0FBQzVILE1BQTRIO0FBQzVILE1BQWtSO0FBQ2xSO0FBQ0E7O0FBRUE7O0FBRUEsNEJBQTRCLHlIQUFtQjtBQUMvQyx3QkFBd0Isc0lBQWE7O0FBRXJDLHVCQUF1QiwySEFBYTtBQUNwQztBQUNBLGlCQUFpQixtSEFBTTtBQUN2Qiw2QkFBNkIsMEhBQWtCOztBQUUvQyxhQUFhLDhIQUFHLENBQUMsMlBBQU87Ozs7QUFJNE47QUFDcFAsT0FBTyxpRUFBZSwyUEFBTyxJQUFJLGtRQUFjLEdBQUcsa1FBQWMsWUFBWSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvVXNlckxpc3Quc2Nzcz83ZWZlIl0sInNvdXJjZXNDb250ZW50IjpbIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9Vc2VyTGlzdC5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9Vc2VyTGlzdC5zY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/UserList.scss\n');
              }
            ),
            /***/
            "../../components/dropdownMenu/DropdownMenu.scss": (
              /*!*******************************************************!*\
                !*** ../../components/dropdownMenu/DropdownMenu.scss ***!
                \*******************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_DropdownMenu_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./DropdownMenu.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/dropdownMenu/DropdownMenu.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_DropdownMenu_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_DropdownMenu_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_DropdownMenu_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_DropdownMenu_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9kcm9wZG93bk1lbnUvRHJvcGRvd25NZW51LnNjc3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsTUFBc0g7QUFDdEgsTUFBNEc7QUFDNUcsTUFBbUg7QUFDbkgsTUFBc0k7QUFDdEksTUFBK0g7QUFDL0gsTUFBK0g7QUFDL0gsTUFBK1I7QUFDL1I7QUFDQTs7QUFFQTs7QUFFQSw0QkFBNEIseUhBQW1CO0FBQy9DLHdCQUF3QixzSUFBYTs7QUFFckMsdUJBQXVCLDJIQUFhO0FBQ3BDO0FBQ0EsaUJBQWlCLG1IQUFNO0FBQ3ZCLDZCQUE2QiwwSEFBa0I7O0FBRS9DLGFBQWEsOEhBQUcsQ0FBQywrUEFBTzs7OztBQUl5TztBQUNqUSxPQUFPLGlFQUFlLCtQQUFPLElBQUksc1FBQWMsR0FBRyxzUUFBYyxZQUFZLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9kcm9wZG93bk1lbnUvRHJvcGRvd25NZW51LnNjc3M/NDc3NSJdLCJzb3VyY2VzQ29udGVudCI6WyJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vRHJvcGRvd25NZW51LnNjc3NcIjtcbiAgICAgIFxuICAgICAgXG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0gPSBzdHlsZVRhZ1RyYW5zZm9ybUZuO1xub3B0aW9ucy5zZXRBdHRyaWJ1dGVzID0gc2V0QXR0cmlidXRlcztcblxuICAgICAgb3B0aW9ucy5pbnNlcnQgPSBpbnNlcnRGbi5iaW5kKG51bGwsIFwiaGVhZFwiKTtcbiAgICBcbm9wdGlvbnMuZG9tQVBJID0gZG9tQVBJO1xub3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7XG5cbnZhciB1cGRhdGUgPSBBUEkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgKiBmcm9tIFwiISEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzBdLnVzZVsyXSEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL0Ryb3Bkb3duTWVudS5zY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/dropdownMenu/DropdownMenu.scss\n');
              }
            ),
            /***/
            "../../components/footer/FooterCenter.scss": (
              /*!*************************************************!*\
                !*** ../../components/footer/FooterCenter.scss ***!
                \*************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_FooterCenter_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./FooterCenter.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/footer/FooterCenter.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_FooterCenter_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_FooterCenter_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_FooterCenter_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_FooterCenter_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9mb290ZXIvRm9vdGVyQ2VudGVyLnNjc3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsTUFBc0g7QUFDdEgsTUFBNEc7QUFDNUcsTUFBbUg7QUFDbkgsTUFBc0k7QUFDdEksTUFBK0g7QUFDL0gsTUFBK0g7QUFDL0gsTUFBK1I7QUFDL1I7QUFDQTs7QUFFQTs7QUFFQSw0QkFBNEIseUhBQW1CO0FBQy9DLHdCQUF3QixzSUFBYTs7QUFFckMsdUJBQXVCLDJIQUFhO0FBQ3BDO0FBQ0EsaUJBQWlCLG1IQUFNO0FBQ3ZCLDZCQUE2QiwwSEFBa0I7O0FBRS9DLGFBQWEsOEhBQUcsQ0FBQywrUEFBTzs7OztBQUl5TztBQUNqUSxPQUFPLGlFQUFlLCtQQUFPLElBQUksc1FBQWMsR0FBRyxzUUFBYyxZQUFZLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9mb290ZXIvRm9vdGVyQ2VudGVyLnNjc3M/MzQ0MyJdLCJzb3VyY2VzQ29udGVudCI6WyJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vRm9vdGVyQ2VudGVyLnNjc3NcIjtcbiAgICAgIFxuICAgICAgXG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0gPSBzdHlsZVRhZ1RyYW5zZm9ybUZuO1xub3B0aW9ucy5zZXRBdHRyaWJ1dGVzID0gc2V0QXR0cmlidXRlcztcblxuICAgICAgb3B0aW9ucy5pbnNlcnQgPSBpbnNlcnRGbi5iaW5kKG51bGwsIFwiaGVhZFwiKTtcbiAgICBcbm9wdGlvbnMuZG9tQVBJID0gZG9tQVBJO1xub3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7XG5cbnZhciB1cGRhdGUgPSBBUEkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgKiBmcm9tIFwiISEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzBdLnVzZVsyXSEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL0Zvb3RlckNlbnRlci5zY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/footer/FooterCenter.scss\n');
              }
            ),
            /***/
            "../../components/live-collaboration/LiveCollaborationTrigger.scss": (
              /*!*************************************************************************!*\
                !*** ../../components/live-collaboration/LiveCollaborationTrigger.scss ***!
                \*************************************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LiveCollaborationTrigger_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./LiveCollaborationTrigger.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/live-collaboration/LiveCollaborationTrigger.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LiveCollaborationTrigger_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LiveCollaborationTrigger_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LiveCollaborationTrigger_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_LiveCollaborationTrigger_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9saXZlLWNvbGxhYm9yYXRpb24vTGl2ZUNvbGxhYm9yYXRpb25UcmlnZ2VyLnNjc3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsTUFBc0g7QUFDdEgsTUFBNEc7QUFDNUcsTUFBbUg7QUFDbkgsTUFBc0k7QUFDdEksTUFBK0g7QUFDL0gsTUFBK0g7QUFDL0gsTUFBMlM7QUFDM1M7QUFDQTs7QUFFQTs7QUFFQSw0QkFBNEIseUhBQW1CO0FBQy9DLHdCQUF3QixzSUFBYTs7QUFFckMsdUJBQXVCLDJIQUFhO0FBQ3BDO0FBQ0EsaUJBQWlCLG1IQUFNO0FBQ3ZCLDZCQUE2QiwwSEFBa0I7O0FBRS9DLGFBQWEsOEhBQUcsQ0FBQywyUUFBTzs7OztBQUlxUDtBQUM3USxPQUFPLGlFQUFlLDJRQUFPLElBQUksa1JBQWMsR0FBRyxrUkFBYyxZQUFZLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9saXZlLWNvbGxhYm9yYXRpb24vTGl2ZUNvbGxhYm9yYXRpb25UcmlnZ2VyLnNjc3M/NzM2OSJdLCJzb3VyY2VzQ29udGVudCI6WyJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vTGl2ZUNvbGxhYm9yYXRpb25UcmlnZ2VyLnNjc3NcIjtcbiAgICAgIFxuICAgICAgXG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0gPSBzdHlsZVRhZ1RyYW5zZm9ybUZuO1xub3B0aW9ucy5zZXRBdHRyaWJ1dGVzID0gc2V0QXR0cmlidXRlcztcblxuICAgICAgb3B0aW9ucy5pbnNlcnQgPSBpbnNlcnRGbi5iaW5kKG51bGwsIFwiaGVhZFwiKTtcbiAgICBcbm9wdGlvbnMuZG9tQVBJID0gZG9tQVBJO1xub3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7XG5cbnZhciB1cGRhdGUgPSBBUEkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgKiBmcm9tIFwiISEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzBdLnVzZVsyXSEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL0xpdmVDb2xsYWJvcmF0aW9uVHJpZ2dlci5zY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/live-collaboration/LiveCollaborationTrigger.scss\n');
              }
            ),
            /***/
            "../../components/main-menu/DefaultItems.scss": (
              /*!****************************************************!*\
                !*** ../../components/main-menu/DefaultItems.scss ***!
                \****************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_DefaultItems_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./DefaultItems.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/main-menu/DefaultItems.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_DefaultItems_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_DefaultItems_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_DefaultItems_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_DefaultItems_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9tYWluLW1lbnUvRGVmYXVsdEl0ZW1zLnNjc3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsTUFBc0g7QUFDdEgsTUFBNEc7QUFDNUcsTUFBbUg7QUFDbkgsTUFBc0k7QUFDdEksTUFBK0g7QUFDL0gsTUFBK0g7QUFDL0gsTUFBK1I7QUFDL1I7QUFDQTs7QUFFQTs7QUFFQSw0QkFBNEIseUhBQW1CO0FBQy9DLHdCQUF3QixzSUFBYTs7QUFFckMsdUJBQXVCLDJIQUFhO0FBQ3BDO0FBQ0EsaUJBQWlCLG1IQUFNO0FBQ3ZCLDZCQUE2QiwwSEFBa0I7O0FBRS9DLGFBQWEsOEhBQUcsQ0FBQywrUEFBTzs7OztBQUl5TztBQUNqUSxPQUFPLGlFQUFlLCtQQUFPLElBQUksc1FBQWMsR0FBRyxzUUFBYyxZQUFZLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9tYWluLW1lbnUvRGVmYXVsdEl0ZW1zLnNjc3M/ZmZmNCJdLCJzb3VyY2VzQ29udGVudCI6WyJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vRGVmYXVsdEl0ZW1zLnNjc3NcIjtcbiAgICAgIFxuICAgICAgXG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0gPSBzdHlsZVRhZ1RyYW5zZm9ybUZuO1xub3B0aW9ucy5zZXRBdHRyaWJ1dGVzID0gc2V0QXR0cmlidXRlcztcblxuICAgICAgb3B0aW9ucy5pbnNlcnQgPSBpbnNlcnRGbi5iaW5kKG51bGwsIFwiaGVhZFwiKTtcbiAgICBcbm9wdGlvbnMuZG9tQVBJID0gZG9tQVBJO1xub3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7XG5cbnZhciB1cGRhdGUgPSBBUEkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgKiBmcm9tIFwiISEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzBdLnVzZVsyXSEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL0RlZmF1bHRJdGVtcy5zY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/main-menu/DefaultItems.scss\n');
              }
            ),
            /***/
            "../../components/welcome-screen/WelcomeScreen.scss": (
              /*!**********************************************************!*\
                !*** ../../components/welcome-screen/WelcomeScreen.scss ***!
                \**********************************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_WelcomeScreen_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./WelcomeScreen.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/welcome-screen/WelcomeScreen.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_WelcomeScreen_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_WelcomeScreen_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_WelcomeScreen_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_WelcomeScreen_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy93ZWxjb21lLXNjcmVlbi9XZWxjb21lU2NyZWVuLnNjc3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsTUFBc0g7QUFDdEgsTUFBNEc7QUFDNUcsTUFBbUg7QUFDbkgsTUFBc0k7QUFDdEksTUFBK0g7QUFDL0gsTUFBK0g7QUFDL0gsTUFBZ1M7QUFDaFM7QUFDQTs7QUFFQTs7QUFFQSw0QkFBNEIseUhBQW1CO0FBQy9DLHdCQUF3QixzSUFBYTs7QUFFckMsdUJBQXVCLDJIQUFhO0FBQ3BDO0FBQ0EsaUJBQWlCLG1IQUFNO0FBQ3ZCLDZCQUE2QiwwSEFBa0I7O0FBRS9DLGFBQWEsOEhBQUcsQ0FBQyxnUUFBTzs7OztBQUkwTztBQUNsUSxPQUFPLGlFQUFlLGdRQUFPLElBQUksdVFBQWMsR0FBRyx1UUFBYyxZQUFZLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy93ZWxjb21lLXNjcmVlbi9XZWxjb21lU2NyZWVuLnNjc3M/NjI2NCJdLCJzb3VyY2VzQ29udGVudCI6WyJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uLy4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vV2VsY29tZVNjcmVlbi5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9XZWxjb21lU2NyZWVuLnNjc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/welcome-screen/WelcomeScreen.scss\n');
              }
            ),
            /***/
            "../../css/app.scss": (
              /*!**************************!*\
                !*** ../../css/app.scss ***!
                \**************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_app_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./app.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../css/app.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_app_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_app_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_app_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_app_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY3NzL2FwcC5zY3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLE1BQW1IO0FBQ25ILE1BQXlHO0FBQ3pHLE1BQWdIO0FBQ2hILE1BQW1JO0FBQ25JLE1BQTRIO0FBQzVILE1BQTRIO0FBQzVILE1BQTZRO0FBQzdRO0FBQ0E7O0FBRUE7O0FBRUEsNEJBQTRCLHlIQUFtQjtBQUMvQyx3QkFBd0Isc0lBQWE7O0FBRXJDLHVCQUF1QiwySEFBYTtBQUNwQztBQUNBLGlCQUFpQixtSEFBTTtBQUN2Qiw2QkFBNkIsMEhBQWtCOztBQUUvQyxhQUFhLDhIQUFHLENBQUMsc1BBQU87Ozs7QUFJdU47QUFDL08sT0FBTyxpRUFBZSxzUEFBTyxJQUFJLDZQQUFjLEdBQUcsNlBBQWMsWUFBWSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2Nzcy9hcHAuc2Nzcz9jZTI3Il0sInNvdXJjZXNDb250ZW50IjpbIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9hcHAuc2Nzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xuXG4gICAgICBvcHRpb25zLmluc2VydCA9IGluc2VydEZuLmJpbmQobnVsbCwgXCJoZWFkXCIpO1xuICAgIFxub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vYXBwLnNjc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../css/app.scss\n');
              }
            ),
            /***/
            "../../css/styles.scss": (
              /*!*****************************!*\
                !*** ../../css/styles.scss ***!
                \*****************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_styles_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./styles.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../css/styles.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_styles_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_styles_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_styles_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_styles_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY3NzL3N0eWxlcy5zY3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLE1BQW1IO0FBQ25ILE1BQXlHO0FBQ3pHLE1BQWdIO0FBQ2hILE1BQW1JO0FBQ25JLE1BQTRIO0FBQzVILE1BQTRIO0FBQzVILE1BQWdSO0FBQ2hSO0FBQ0E7O0FBRUE7O0FBRUEsNEJBQTRCLHlIQUFtQjtBQUMvQyx3QkFBd0Isc0lBQWE7O0FBRXJDLHVCQUF1QiwySEFBYTtBQUNwQztBQUNBLGlCQUFpQixtSEFBTTtBQUN2Qiw2QkFBNkIsMEhBQWtCOztBQUUvQyxhQUFhLDhIQUFHLENBQUMseVBBQU87Ozs7QUFJME47QUFDbFAsT0FBTyxpRUFBZSx5UEFBTyxJQUFJLGdRQUFjLEdBQUcsZ1FBQWMsWUFBWSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2Nzcy9zdHlsZXMuc2Nzcz9kYmEyIl0sInNvdXJjZXNDb250ZW50IjpbIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zdHlsZXMuc2Nzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xuXG4gICAgICBvcHRpb25zLmluc2VydCA9IGluc2VydEZuLmJpbmQobnVsbCwgXCJoZWFkXCIpO1xuICAgIFxub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vc3R5bGVzLnNjc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../css/styles.scss\n');
              }
            ),
            /***/
            "../../css/variables.module.scss": (
              /*!***************************************!*\
                !*** ../../css/variables.module.scss ***!
                \***************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_variables_module_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./variables.module.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../css/variables.module.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_variables_module_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_variables_module_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_variables_module_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_variables_module_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY3NzL3ZhcmlhYmxlcy5tb2R1bGUuc2Nzcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxNQUFtSDtBQUNuSCxNQUF5RztBQUN6RyxNQUFnSDtBQUNoSCxNQUFtSTtBQUNuSSxNQUE0SDtBQUM1SCxNQUE0SDtBQUM1SCxNQUEwUjtBQUMxUjtBQUNBOztBQUVBOztBQUVBLDRCQUE0Qix5SEFBbUI7QUFDL0Msd0JBQXdCLHNJQUFhOztBQUVyQyx1QkFBdUIsMkhBQWE7QUFDcEM7QUFDQSxpQkFBaUIsbUhBQU07QUFDdkIsNkJBQTZCLDBIQUFrQjs7QUFFL0MsYUFBYSw4SEFBRyxDQUFDLG1RQUFPOzs7O0FBSW9PO0FBQzVQLE9BQU8saUVBQWUsbVFBQU8sSUFBSSwwUUFBYyxHQUFHLDBRQUFjLFlBQVksRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jc3MvdmFyaWFibGVzLm1vZHVsZS5zY3NzP2Y5YmIiXSwic291cmNlc0NvbnRlbnQiOlsiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0Rm4gZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzBdLnVzZVsyXSEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL3ZhcmlhYmxlcy5tb2R1bGUuc2Nzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xuXG4gICAgICBvcHRpb25zLmluc2VydCA9IGluc2VydEZuLmJpbmQobnVsbCwgXCJoZWFkXCIpO1xuICAgIFxub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvcG9zdGNzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMF0udXNlWzJdIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vdmFyaWFibGVzLm1vZHVsZS5zY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../css/variables.module.scss\n');
              }
            ),
            /***/
            "../../element/Hyperlink.scss": (
              /*!************************************!*\
                !*** ../../element/Hyperlink.scss ***!
                \************************************/
              /***/
              (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../packages/excalidraw/node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");\n/* harmony import */ var _packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Hyperlink_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../packages/excalidraw/node_modules/css-loader/dist/cjs.js!../packages/excalidraw/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!../packages/excalidraw/node_modules/sass-loader/dist/cjs.js!./Hyperlink.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../element/Hyperlink.scss");\n\n      \n      \n      \n      \n      \n      \n      \n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_packages_excalidraw_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n      options.insert = _packages_excalidraw_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");\n    \noptions.domAPI = (_packages_excalidraw_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_packages_excalidraw_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _packages_excalidraw_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Hyperlink_scss__WEBPACK_IMPORTED_MODULE_6__["default"], options);\n\n\n\n\n       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Hyperlink_scss__WEBPACK_IMPORTED_MODULE_6__["default"] && _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Hyperlink_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _packages_excalidraw_node_modules_css_loader_dist_cjs_js_packages_excalidraw_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_0_use_2_packages_excalidraw_node_modules_sass_loader_dist_cjs_js_Hyperlink_scss__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZWxlbWVudC9IeXBlcmxpbmsuc2Nzcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxNQUFtSDtBQUNuSCxNQUF5RztBQUN6RyxNQUFnSDtBQUNoSCxNQUFtSTtBQUNuSSxNQUE0SDtBQUM1SCxNQUE0SDtBQUM1SCxNQUFtUjtBQUNuUjtBQUNBOztBQUVBOztBQUVBLDRCQUE0Qix5SEFBbUI7QUFDL0Msd0JBQXdCLHNJQUFhOztBQUVyQyx1QkFBdUIsMkhBQWE7QUFDcEM7QUFDQSxpQkFBaUIsbUhBQU07QUFDdkIsNkJBQTZCLDBIQUFrQjs7QUFFL0MsYUFBYSw4SEFBRyxDQUFDLDRQQUFPOzs7O0FBSTZOO0FBQ3JQLE9BQU8saUVBQWUsNFBBQU8sSUFBSSxtUUFBYyxHQUFHLG1RQUFjLFlBQVksRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9lbGVtZW50L0h5cGVybGluay5zY3NzPzE5YTEiXSwic291cmNlc0NvbnRlbnQiOlsiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0Rm4gZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzBdLnVzZVsyXSEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL0h5cGVybGluay5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi4vcGFja2FnZXMvZXhjYWxpZHJhdy9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9IeXBlcmxpbmsuc2Nzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../element/Hyperlink.scss\n');
              }
            ),
            /***/
            "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js": (
              /*!****************************************************************************!*\
                !*** ./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js ***!
                \****************************************************************************/
              /***/
              (module) => {
                "use strict";
                eval('\n\nvar stylesInDOM = [];\nfunction getIndexByIdentifier(identifier) {\n  var result = -1;\n  for (var i = 0; i < stylesInDOM.length; i++) {\n    if (stylesInDOM[i].identifier === identifier) {\n      result = i;\n      break;\n    }\n  }\n  return result;\n}\nfunction modulesToDom(list, options) {\n  var idCountMap = {};\n  var identifiers = [];\n  for (var i = 0; i < list.length; i++) {\n    var item = list[i];\n    var id = options.base ? item[0] + options.base : item[0];\n    var count = idCountMap[id] || 0;\n    var identifier = "".concat(id, " ").concat(count);\n    idCountMap[id] = count + 1;\n    var indexByIdentifier = getIndexByIdentifier(identifier);\n    var obj = {\n      css: item[1],\n      media: item[2],\n      sourceMap: item[3],\n      supports: item[4],\n      layer: item[5]\n    };\n    if (indexByIdentifier !== -1) {\n      stylesInDOM[indexByIdentifier].references++;\n      stylesInDOM[indexByIdentifier].updater(obj);\n    } else {\n      var updater = addElementStyle(obj, options);\n      options.byIndex = i;\n      stylesInDOM.splice(i, 0, {\n        identifier: identifier,\n        updater: updater,\n        references: 1\n      });\n    }\n    identifiers.push(identifier);\n  }\n  return identifiers;\n}\nfunction addElementStyle(obj, options) {\n  var api = options.domAPI(options);\n  api.update(obj);\n  var updater = function updater(newObj) {\n    if (newObj) {\n      if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {\n        return;\n      }\n      api.update(obj = newObj);\n    } else {\n      api.remove();\n    }\n  };\n  return updater;\n}\nmodule.exports = function (list, options) {\n  options = options || {};\n  list = list || [];\n  var lastIdentifiers = modulesToDom(list, options);\n  return function update(newList) {\n    newList = newList || [];\n    for (var i = 0; i < lastIdentifiers.length; i++) {\n      var identifier = lastIdentifiers[i];\n      var index = getIndexByIdentifier(identifier);\n      stylesInDOM[index].references--;\n    }\n    var newLastIdentifiers = modulesToDom(newList, options);\n    for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n      var _identifier = lastIdentifiers[_i];\n      var _index = getIndexByIdentifier(_identifier);\n      if (stylesInDOM[_index].references === 0) {\n        stylesInDOM[_index].updater();\n        stylesInDOM.splice(_index, 1);\n      }\n    }\n    lastIdentifiers = newLastIdentifiers;\n  };\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 4420 characters]\n//# sourceURL=webpack-internal:///./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\n');
              }
            ),
            /***/
            "./node_modules/style-loader/dist/runtime/insertBySelector.js": (
              /*!********************************************************************!*\
                !*** ./node_modules/style-loader/dist/runtime/insertBySelector.js ***!
                \********************************************************************/
              /***/
              (module) => {
                "use strict";
                eval(`

var memo = {};

/* istanbul ignore next  */
function getTarget(target) {
  if (typeof memo[target] === "undefined") {
    var styleTarget = document.querySelector(target);

    // Special case to return head of iframe instead of iframe itself
    if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {
      try {
        // This will throw an exception if access to iframe is blocked
        // due to cross-origin restrictions
        styleTarget = styleTarget.contentDocument.head;
      } catch (e) {
        // istanbul ignore next
        styleTarget = null;
      }
    }
    memo[target] = styleTarget;
  }
  return memo[target];
}

/* istanbul ignore next  */
function insertBySelector(insert, style) {
  var target = getTarget(insert);
  if (!target) {
    throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");
  }
  target.appendChild(style);
}
module.exports = insertBySelector;//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzLmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanM/YjIxNCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxudmFyIG1lbW8gPSB7fTtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBnZXRUYXJnZXQodGFyZ2V0KSB7XG4gIGlmICh0eXBlb2YgbWVtb1t0YXJnZXRdID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgdmFyIHN0eWxlVGFyZ2V0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0YXJnZXQpO1xuXG4gICAgLy8gU3BlY2lhbCBjYXNlIHRvIHJldHVybiBoZWFkIG9mIGlmcmFtZSBpbnN0ZWFkIG9mIGlmcmFtZSBpdHNlbGZcbiAgICBpZiAod2luZG93LkhUTUxJRnJhbWVFbGVtZW50ICYmIHN0eWxlVGFyZ2V0IGluc3RhbmNlb2Ygd2luZG93LkhUTUxJRnJhbWVFbGVtZW50KSB7XG4gICAgICB0cnkge1xuICAgICAgICAvLyBUaGlzIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uIGlmIGFjY2VzcyB0byBpZnJhbWUgaXMgYmxvY2tlZFxuICAgICAgICAvLyBkdWUgdG8gY3Jvc3Mtb3JpZ2luIHJlc3RyaWN0aW9uc1xuICAgICAgICBzdHlsZVRhcmdldCA9IHN0eWxlVGFyZ2V0LmNvbnRlbnREb2N1bWVudC5oZWFkO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgICAgICBzdHlsZVRhcmdldCA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICAgIG1lbW9bdGFyZ2V0XSA9IHN0eWxlVGFyZ2V0O1xuICB9XG4gIHJldHVybiBtZW1vW3RhcmdldF07XG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gaW5zZXJ0QnlTZWxlY3RvcihpbnNlcnQsIHN0eWxlKSB7XG4gIHZhciB0YXJnZXQgPSBnZXRUYXJnZXQoaW5zZXJ0KTtcbiAgaWYgKCF0YXJnZXQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZG4ndCBmaW5kIGEgc3R5bGUgdGFyZ2V0LiBUaGlzIHByb2JhYmx5IG1lYW5zIHRoYXQgdGhlIHZhbHVlIGZvciB0aGUgJ2luc2VydCcgcGFyYW1ldGVyIGlzIGludmFsaWQuXCIpO1xuICB9XG4gIHRhcmdldC5hcHBlbmRDaGlsZChzdHlsZSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGluc2VydEJ5U2VsZWN0b3I7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9
//# sourceURL=webpack-internal:///./node_modules/style-loader/dist/runtime/insertBySelector.js
`);
              }
            ),
            /***/
            "./node_modules/style-loader/dist/runtime/insertStyleElement.js": (
              /*!**********************************************************************!*\
                !*** ./node_modules/style-loader/dist/runtime/insertStyleElement.js ***!
                \**********************************************************************/
              /***/
              (module) => {
                "use strict";
                eval('\n\n/* istanbul ignore next  */\nfunction insertStyleElement(options) {\n  var element = document.createElement("style");\n  options.setAttributes(element, options.attributes);\n  options.insert(element, options.options);\n  return element;\n}\nmodule.exports = insertStyleElement;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qcz9kZTZjIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIGluc2VydFN0eWxlRWxlbWVudChvcHRpb25zKSB7XG4gIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO1xuICBvcHRpb25zLnNldEF0dHJpYnV0ZXMoZWxlbWVudCwgb3B0aW9ucy5hdHRyaWJ1dGVzKTtcbiAgb3B0aW9ucy5pbnNlcnQoZWxlbWVudCwgb3B0aW9ucy5vcHRpb25zKTtcbiAgcmV0dXJuIGVsZW1lbnQ7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGluc2VydFN0eWxlRWxlbWVudDsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/style-loader/dist/runtime/insertStyleElement.js\n');
              }
            ),
            /***/
            "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js": (
              /*!**********************************************************************************!*\
                !*** ./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js ***!
                \**********************************************************************************/
              /***/
              (module, __unused_webpack_exports, __webpack_require__) => {
                "use strict";
                eval('\n\n/* istanbul ignore next  */\nfunction setAttributesWithoutAttributes(styleElement) {\n  var nonce =  true ? __webpack_require__.nc : 0;\n  if (nonce) {\n    styleElement.setAttribute("nonce", nonce);\n  }\n}\nmodule.exports = setAttributesWithoutAttributes;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBLGNBQWMsS0FBd0MsR0FBRyxzQkFBaUIsR0FBRyxDQUFJO0FBQ2pGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanM/ZGRjZSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBzZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMoc3R5bGVFbGVtZW50KSB7XG4gIHZhciBub25jZSA9IHR5cGVvZiBfX3dlYnBhY2tfbm9uY2VfXyAhPT0gXCJ1bmRlZmluZWRcIiA/IF9fd2VicGFja19ub25jZV9fIDogbnVsbDtcbiAgaWYgKG5vbmNlKSB7XG4gICAgc3R5bGVFbGVtZW50LnNldEF0dHJpYnV0ZShcIm5vbmNlXCIsIG5vbmNlKTtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBzZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXM7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\n');
              }
            ),
            /***/
            "./node_modules/style-loader/dist/runtime/styleDomAPI.js": (
              /*!***************************************************************!*\
                !*** ./node_modules/style-loader/dist/runtime/styleDomAPI.js ***!
                \***************************************************************/
              /***/
              (module) => {
                "use strict";
                eval('\n\n/* istanbul ignore next  */\nfunction apply(styleElement, options, obj) {\n  var css = "";\n  if (obj.supports) {\n    css += "@supports (".concat(obj.supports, ") {");\n  }\n  if (obj.media) {\n    css += "@media ".concat(obj.media, " {");\n  }\n  var needLayer = typeof obj.layer !== "undefined";\n  if (needLayer) {\n    css += "@layer".concat(obj.layer.length > 0 ? " ".concat(obj.layer) : "", " {");\n  }\n  css += obj.css;\n  if (needLayer) {\n    css += "}";\n  }\n  if (obj.media) {\n    css += "}";\n  }\n  if (obj.supports) {\n    css += "}";\n  }\n  var sourceMap = obj.sourceMap;\n  if (sourceMap && typeof btoa !== "undefined") {\n    css += "\\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), " */");\n  }\n\n  // For old IE\n  /* istanbul ignore if  */\n  options.styleTagTransform(css, styleElement, options.options);\n}\nfunction removeStyleElement(styleElement) {\n  // istanbul ignore if\n  if (styleElement.parentNode === null) {\n    return false;\n  }\n  styleElement.parentNode.removeChild(styleElement);\n}\n\n/* istanbul ignore next  */\nfunction domAPI(options) {\n  if (typeof document === "undefined") {\n    return {\n      update: function update() {},\n      remove: function remove() {}\n    };\n  }\n  var styleElement = options.insertStyleElement(options);\n  return {\n    update: function update(obj) {\n      apply(styleElement, options, obj);\n    },\n    remove: function remove() {\n      removeStyleElement(styleElement);\n    }\n  };\n}\nmodule.exports = domAPI;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtEQUFrRDtBQUNsRDtBQUNBO0FBQ0EsMENBQTBDO0FBQzFDO0FBQ0E7QUFDQTtBQUNBLGlGQUFpRjtBQUNqRjtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLHlEQUF5RDtBQUN6RDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzP2U0NzkiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gYXBwbHkoc3R5bGVFbGVtZW50LCBvcHRpb25zLCBvYmopIHtcbiAgdmFyIGNzcyA9IFwiXCI7XG4gIGlmIChvYmouc3VwcG9ydHMpIHtcbiAgICBjc3MgKz0gXCJAc3VwcG9ydHMgKFwiLmNvbmNhdChvYmouc3VwcG9ydHMsIFwiKSB7XCIpO1xuICB9XG4gIGlmIChvYmoubWVkaWEpIHtcbiAgICBjc3MgKz0gXCJAbWVkaWEgXCIuY29uY2F0KG9iai5tZWRpYSwgXCIge1wiKTtcbiAgfVxuICB2YXIgbmVlZExheWVyID0gdHlwZW9mIG9iai5sYXllciAhPT0gXCJ1bmRlZmluZWRcIjtcbiAgaWYgKG5lZWRMYXllcikge1xuICAgIGNzcyArPSBcIkBsYXllclwiLmNvbmNhdChvYmoubGF5ZXIubGVuZ3RoID4gMCA/IFwiIFwiLmNvbmNhdChvYmoubGF5ZXIpIDogXCJcIiwgXCIge1wiKTtcbiAgfVxuICBjc3MgKz0gb2JqLmNzcztcbiAgaWYgKG5lZWRMYXllcikge1xuICAgIGNzcyArPSBcIn1cIjtcbiAgfVxuICBpZiAob2JqLm1lZGlhKSB7XG4gICAgY3NzICs9IFwifVwiO1xuICB9XG4gIGlmIChvYmouc3VwcG9ydHMpIHtcbiAgICBjc3MgKz0gXCJ9XCI7XG4gIH1cbiAgdmFyIHNvdXJjZU1hcCA9IG9iai5zb3VyY2VNYXA7XG4gIGlmIChzb3VyY2VNYXAgJiYgdHlwZW9mIGJ0b2EgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICBjc3MgKz0gXCJcXG4vKiMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LFwiLmNvbmNhdChidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShzb3VyY2VNYXApKSkpLCBcIiAqL1wiKTtcbiAgfVxuXG4gIC8vIEZvciBvbGQgSUVcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICAqL1xuICBvcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtKGNzcywgc3R5bGVFbGVtZW50LCBvcHRpb25zLm9wdGlvbnMpO1xufVxuZnVuY3Rpb24gcmVtb3ZlU3R5bGVFbGVtZW50KHN0eWxlRWxlbWVudCkge1xuICAvLyBpc3RhbmJ1bCBpZ25vcmUgaWZcbiAgaWYgKHN0eWxlRWxlbWVudC5wYXJlbnROb2RlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHN0eWxlRWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHN0eWxlRWxlbWVudCk7XG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gZG9tQVBJKG9wdGlvbnMpIHtcbiAgaWYgKHR5cGVvZiBkb2N1bWVudCA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgIHJldHVybiB7XG4gICAgICB1cGRhdGU6IGZ1bmN0aW9uIHVwZGF0ZSgpIHt9LFxuICAgICAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUoKSB7fVxuICAgIH07XG4gIH1cbiAgdmFyIHN0eWxlRWxlbWVudCA9IG9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpO1xuICByZXR1cm4ge1xuICAgIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKG9iaikge1xuICAgICAgYXBwbHkoc3R5bGVFbGVtZW50LCBvcHRpb25zLCBvYmopO1xuICAgIH0sXG4gICAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUoKSB7XG4gICAgICByZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGVFbGVtZW50KTtcbiAgICB9XG4gIH07XG59XG5tb2R1bGUuZXhwb3J0cyA9IGRvbUFQSTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/style-loader/dist/runtime/styleDomAPI.js\n');
              }
            ),
            /***/
            "./node_modules/style-loader/dist/runtime/styleTagTransform.js": (
              /*!*********************************************************************!*\
                !*** ./node_modules/style-loader/dist/runtime/styleTagTransform.js ***!
                \*********************************************************************/
              /***/
              (module) => {
                "use strict";
                eval("\n\n/* istanbul ignore next  */\nfunction styleTagTransform(css, styleElement) {\n  if (styleElement.styleSheet) {\n    styleElement.styleSheet.cssText = css;\n  } else {\n    while (styleElement.firstChild) {\n      styleElement.removeChild(styleElement.firstChild);\n    }\n    styleElement.appendChild(document.createTextNode(css));\n  }\n}\nmodule.exports = styleTagTransform;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFFYjtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzPzFkZGUiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gc3R5bGVUYWdUcmFuc2Zvcm0oY3NzLCBzdHlsZUVsZW1lbnQpIHtcbiAgaWYgKHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0KSB7XG4gICAgc3R5bGVFbGVtZW50LnN0eWxlU2hlZXQuY3NzVGV4dCA9IGNzcztcbiAgfSBlbHNlIHtcbiAgICB3aGlsZSAoc3R5bGVFbGVtZW50LmZpcnN0Q2hpbGQpIHtcbiAgICAgIHN0eWxlRWxlbWVudC5yZW1vdmVDaGlsZChzdHlsZUVsZW1lbnQuZmlyc3RDaGlsZCk7XG4gICAgfVxuICAgIHN0eWxlRWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpKTtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBzdHlsZVRhZ1RyYW5zZm9ybTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/style-loader/dist/runtime/styleTagTransform.js\n");
              }
            ),
            /***/
            "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMUlEQVQ4T2NkYGAQYcAP3uCTZhw1gGGYhAGBZIA/nYDCgBDAm9BGDWAAJyRCgLaBCAAgXwixzAS0pgAAAABJRU5ErkJggg==": (
              /*!******************************************************************************************************************************************************************************!*\
                !*** data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMUlEQVQ4T2NkYGAQYcAP3uCTZhw1gGGYhAGBZIA/nYDCgBDAm9BGDWAAJyRCgLaBCAAgXwixzAS0pgAAAABJRU5ErkJggg== ***!
                \******************************************************************************************************************************************************************************/
              /***/
              (module2) => {
                "use strict";
                module2.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMUlEQVQ4T2NkYGAQYcAP3uCTZhw1gGGYhAGBZIA/nYDCgBDAm9BGDWAAJyRCgLaBCAAgXwixzAS0pgAAAABJRU5ErkJggg==";
              }
            ),
            /***/
            'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="292.4" height="292.4" viewBox="0 0 292 292"><path d="M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z"/></svg>': (
              /*!*************************************************************************************************************************************************************************************************************************************************************!*\
                !*** data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="292.4" height="292.4" viewBox="0 0 292 292"><path d="M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z"/></svg> ***!
                \*************************************************************************************************************************************************************************************************************************************************************/
              /***/
              (module2) => {
                "use strict";
                module2.exports = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="292.4" height="292.4" viewBox="0 0 292 292"><path d="M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z"/></svg>';
              }
            ),
            /***/
            'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="292.4" height="292.4" viewBox="0 0 292 292"><path fill="%23ced4da" d="M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z"/></svg>': (
              /*!******************************************************************************************************************************************************************************************************************************************************************************!*\
                !*** data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="292.4" height="292.4" viewBox="0 0 292 292"><path fill="%23ced4da" d="M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z"/></svg> ***!
                \******************************************************************************************************************************************************************************************************************************************************************************/
              /***/
              (module2) => {
                "use strict";
                module2.exports = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="292.4" height="292.4" viewBox="0 0 292 292"><path fill="%23ced4da" d="M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z"/></svg>';
              }
            ),
            /***/
            "../../../public/Assistant-Bold.woff2": (
              /*!********************************************!*\
                !*** ../../../public/Assistant-Bold.woff2 ***!
                \********************************************/
              /***/
              (module2, __unused_webpack_exports2, __webpack_require__2) => {
                "use strict";
                module2.exports = __webpack_require__2.p + "excalidraw-assets-dev/Assistant-Bold.woff2";
              }
            ),
            /***/
            "../../../public/Assistant-Medium.woff2": (
              /*!**********************************************!*\
                !*** ../../../public/Assistant-Medium.woff2 ***!
                \**********************************************/
              /***/
              (module2, __unused_webpack_exports2, __webpack_require__2) => {
                "use strict";
                module2.exports = __webpack_require__2.p + "excalidraw-assets-dev/Assistant-Medium.woff2";
              }
            ),
            /***/
            "../../../public/Assistant-Regular.woff2": (
              /*!***********************************************!*\
                !*** ../../../public/Assistant-Regular.woff2 ***!
                \***********************************************/
              /***/
              (module2, __unused_webpack_exports2, __webpack_require__2) => {
                "use strict";
                module2.exports = __webpack_require__2.p + "excalidraw-assets-dev/Assistant-Regular.woff2";
              }
            ),
            /***/
            "../../../public/Assistant-SemiBold.woff2": (
              /*!************************************************!*\
                !*** ../../../public/Assistant-SemiBold.woff2 ***!
                \************************************************/
              /***/
              (module2, __unused_webpack_exports2, __webpack_require__2) => {
                "use strict";
                module2.exports = __webpack_require__2.p + "excalidraw-assets-dev/Assistant-SemiBold.woff2";
              }
            ),
            /***/
            "../../../public/Cascadia.woff2": (
              /*!**************************************!*\
                !*** ../../../public/Cascadia.woff2 ***!
                \**************************************/
              /***/
              (module2, __unused_webpack_exports2, __webpack_require__2) => {
                "use strict";
                module2.exports = __webpack_require__2.p + "excalidraw-assets-dev/Cascadia.woff2";
              }
            ),
            /***/
            "../../../public/Virgil.woff2": (
              /*!************************************!*\
                !*** ../../../public/Virgil.woff2 ***!
                \************************************/
              /***/
              (module2, __unused_webpack_exports2, __webpack_require__2) => {
                "use strict";
                module2.exports = __webpack_require__2.p + "excalidraw-assets-dev/Virgil.woff2";
              }
            ),
            /***/
            "react": (
              /*!**************************************************************************************!*\
                !*** external {"root":"React","commonjs2":"react","commonjs":"react","amd":"react"} ***!
                \**************************************************************************************/
              /***/
              (module2) => {
                "use strict";
                module2.exports = __WEBPACK_EXTERNAL_MODULE_react__;
              }
            ),
            /***/
            "react-dom": (
              /*!*****************************************************************************************************!*\
                !*** external {"root":"ReactDOM","commonjs2":"react-dom","commonjs":"react-dom","amd":"react-dom"} ***!
                \*****************************************************************************************************/
              /***/
              (module2) => {
                "use strict";
                module2.exports = __WEBPACK_EXTERNAL_MODULE_react_dom__;
              }
            ),
            /***/
            "../../../node_modules/@babel/runtime/helpers/esm/extends.js": (
              /*!*******************************************************************!*\
                !*** ../../../node_modules/@babel/runtime/helpers/esm/extends.js ***!
                \*******************************************************************/
              /***/
              (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "default": () => (/* binding */ _extends)\n/* harmony export */ });\nfunction _extends() {\n  _extends = Object.assign ? Object.assign.bind() : function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHMuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFlO0FBQ2Y7QUFDQSxvQkFBb0Isc0JBQXNCO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHMuanM/MDYyYiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfZXh0ZW5kcygpIHtcbiAgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbi5iaW5kKCkgOiBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07XG4gICAgICBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7XG4gICAgICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9O1xuICByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/@babel/runtime/helpers/esm/extends.js\n');
              }
            ),
            /***/
            "../../../node_modules/@floating-ui/core/dist/floating-ui.core.browser.mjs": (
              /*!*********************************************************************************!*\
                !*** ../../../node_modules/@floating-ui/core/dist/floating-ui.core.browser.mjs ***!
                \*********************************************************************************/
              /***/
              (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"arrow\": () => (/* binding */ arrow),\n/* harmony export */   \"autoPlacement\": () => (/* binding */ autoPlacement),\n/* harmony export */   \"computePosition\": () => (/* binding */ computePosition),\n/* harmony export */   \"detectOverflow\": () => (/* binding */ detectOverflow),\n/* harmony export */   \"flip\": () => (/* binding */ flip),\n/* harmony export */   \"hide\": () => (/* binding */ hide),\n/* harmony export */   \"inline\": () => (/* binding */ inline),\n/* harmony export */   \"limitShift\": () => (/* binding */ limitShift),\n/* harmony export */   \"offset\": () => (/* binding */ offset),\n/* harmony export */   \"rectToClientRect\": () => (/* binding */ rectToClientRect),\n/* harmony export */   \"shift\": () => (/* binding */ shift),\n/* harmony export */   \"size\": () => (/* binding */ size)\n/* harmony export */ });\nfunction getSide(placement) {\n  return placement.split('-')[0];\n}\n\nfunction getAlignment(placement) {\n  return placement.split('-')[1];\n}\n\nfunction getMainAxisFromPlacement(placement) {\n  return ['top', 'bottom'].includes(getSide(placement)) ? 'x' : 'y';\n}\n\nfunction getLengthFromAxis(axis) {\n  return axis === 'y' ? 'height' : 'width';\n}\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n  let {\n    reference,\n    floating\n  } = _ref;\n  const commonX = reference.x + reference.width / 2 - floating.width / 2;\n  const commonY = reference.y + reference.height / 2 - floating.height / 2;\n  const mainAxis = getMainAxisFromPlacement(placement);\n  const length = getLengthFromAxis(mainAxis);\n  const commonAlign = reference[length] / 2 - floating[length] / 2;\n  const side = getSide(placement);\n  const isVertical = mainAxis === 'x';\n  let coords;\n\n  switch (side) {\n    case 'top':\n      coords = {\n        x: commonX,\n        y: reference.y - floating.height\n      };\n      break;\n\n    case 'bottom':\n      coords = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n\n    case 'right':\n      coords = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n\n    case 'left':\n      coords = {\n        x: reference.x - floating.width,\n        y: commonY\n      };\n      break;\n\n    default:\n      coords = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n\n  switch (getAlignment(placement)) {\n    case 'start':\n      coords[mainAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n\n    case 'end':\n      coords[mainAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n  }\n\n  return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a reference element when it is given a certain positioning strategy.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\n\nconst computePosition = async (reference, floating, config) => {\n  const {\n    placement = 'bottom',\n    strategy = 'absolute',\n    middleware = [],\n    platform\n  } = config;\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n\n  {\n    if (platform == null) {\n      console.error(['Floating UI: `platform` property was not passed to config. If you', 'want to use Floating UI on the web, install @floating-ui/dom', 'instead of the /core package. Otherwise, you can create your own', '`platform`: https://floating-ui.com/docs/platform'].join(' '));\n    }\n\n    if (middleware.filter(_ref => {\n      let {\n        name\n      } = _ref;\n      return name === 'autoPlacement' || name === 'flip';\n    }).length > 1) {\n      throw new Error(['Floating UI: duplicate `flip` and/or `autoPlacement`', 'middleware detected. This will lead to an infinite loop. Ensure only', 'one of either has been passed to the `middleware` array.'].join(' '));\n    }\n  }\n\n  let rects = await platform.getElementRects({\n    reference,\n    floating,\n    strategy\n  });\n  let {\n    x,\n    y\n  } = computeCoordsFromPlacement(rects, placement, rtl);\n  let statefulPlacement = placement;\n  let middlewareData = {};\n  let resetCount = 0;\n\n  for (let i = 0; i < middleware.length; i++) {\n    const {\n      name,\n      fn\n    } = middleware[i];\n    const {\n      x: nextX,\n      y: nextY,\n      data,\n      reset\n    } = await fn({\n      x,\n      y,\n      initialPlacement: placement,\n      placement: statefulPlacement,\n      strategy,\n      middlewareData,\n      rects,\n      platform,\n      elements: {\n        reference,\n        floating\n      }\n    });\n    x = nextX != null ? nextX : x;\n    y = nextY != null ? nextY : y;\n    middlewareData = { ...middlewareData,\n      [name]: { ...middlewareData[name],\n        ...data\n      }\n    };\n\n    {\n      if (resetCount > 50) {\n        console.warn(['Floating UI: The middleware lifecycle appears to be running in an', 'infinite loop. This is usually caused by a `reset` continually', 'being returned without a break condition.'].join(' '));\n      }\n    }\n\n    if (reset && resetCount <= 50) {\n      resetCount++;\n\n      if (typeof reset === 'object') {\n        if (reset.placement) {\n          statefulPlacement = reset.placement;\n        }\n\n        if (reset.rects) {\n          rects = reset.rects === true ? await platform.getElementRects({\n            reference,\n            floating,\n            strategy\n          }) : reset.rects;\n        }\n\n        ({\n          x,\n          y\n        } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n      }\n\n      i = -1;\n      continue;\n    }\n  }\n\n  return {\n    x,\n    y,\n    placement: statefulPlacement,\n    strategy,\n    middlewareData\n  };\n};\n\nfunction expandPaddingObject(padding) {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0,\n    ...padding\n  };\n}\n\nfunction getSideObjectFromPadding(padding) {\n  return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n    top: padding,\n    right: padding,\n    bottom: padding,\n    left: padding\n  };\n}\n\nfunction rectToClientRect(rect) {\n  return { ...rect,\n    top: rect.y,\n    left: rect.x,\n    right: rect.x + rect.width,\n    bottom: rect.y + rect.height\n  };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(middlewareArguments, options) {\n  var _await$platform$isEle;\n\n  if (options === void 0) {\n    options = {};\n  }\n\n  const {\n    x,\n    y,\n    platform,\n    rects,\n    elements,\n    strategy\n  } = middlewareArguments;\n  const {\n    boundary = 'clippingAncestors',\n    rootBoundary = 'viewport',\n    elementContext = 'floating',\n    altBoundary = false,\n    padding = 0\n  } = options;\n  const paddingObject = getSideObjectFromPadding(padding);\n  const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n  const element = elements[altBoundary ? altContext : elementContext];\n  const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n    element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n    boundary,\n    rootBoundary,\n    strategy\n  }));\n  const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n    rect: elementContext === 'floating' ? { ...rects.floating,\n      x,\n      y\n    } : rects.reference,\n    offsetParent: await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating)),\n    strategy\n  }) : rects[elementContext]);\n  return {\n    top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n    bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n    left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n    right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n  };\n}\n\nconst min = Math.min;\nconst max = Math.max;\n\nfunction within(min$1, value, max$1) {\n  return max(min$1, min(value, max$1));\n}\n\n/**\n * Positions an inner element of the floating element such that it is centered\n * to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n  name: 'arrow',\n  options,\n\n  async fn(middlewareArguments) {\n    // Since `element` is required, we don't Partial<> the type\n    const {\n      element,\n      padding = 0\n    } = options != null ? options : {};\n    const {\n      x,\n      y,\n      placement,\n      rects,\n      platform\n    } = middlewareArguments;\n\n    if (element == null) {\n      {\n        console.warn('Floating UI: No `element` was passed to the `arrow` middleware.');\n      }\n\n      return {};\n    }\n\n    const paddingObject = getSideObjectFromPadding(padding);\n    const coords = {\n      x,\n      y\n    };\n    const axis = getMainAxisFromPlacement(placement);\n    const alignment = getAlignment(placement);\n    const length = getLengthFromAxis(axis);\n    const arrowDimensions = await platform.getDimensions(element);\n    const minProp = axis === 'y' ? 'top' : 'left';\n    const maxProp = axis === 'y' ? 'bottom' : 'right';\n    const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n    const startDiff = coords[axis] - rects.reference[axis];\n    const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n    let clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n\n    if (clientSize === 0) {\n      clientSize = rects.floating[length];\n    }\n\n    const centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the floating element if the center\n    // point is outside the floating element's bounds\n\n    const min = paddingObject[minProp];\n    const max = clientSize - arrowDimensions[length] - paddingObject[maxProp];\n    const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n    const offset = within(min, center, max); // Make sure that arrow points at the reference\n\n    const alignmentPadding = alignment === 'start' ? paddingObject[minProp] : paddingObject[maxProp];\n    const shouldAddOffset = alignmentPadding > 0 && center !== offset && rects.reference[length] <= rects.floating[length];\n    const alignmentOffset = shouldAddOffset ? center < min ? min - center : max - center : 0;\n    return {\n      [axis]: coords[axis] - alignmentOffset,\n      data: {\n        [axis]: offset,\n        centerOffset: center - offset\n      }\n    };\n  }\n\n});\n\nconst hash$1 = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nfunction getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, matched => hash$1[matched]);\n}\n\nfunction getAlignmentSides(placement, rects, rtl) {\n  if (rtl === void 0) {\n    rtl = false;\n  }\n\n  const alignment = getAlignment(placement);\n  const mainAxis = getMainAxisFromPlacement(placement);\n  const length = getLengthFromAxis(mainAxis);\n  let mainAlignmentSide = mainAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n\n  if (rects.reference[length] > rects.floating[length]) {\n    mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n  }\n\n  return {\n    main: mainAlignmentSide,\n    cross: getOppositePlacement(mainAlignmentSide)\n  };\n}\n\nconst hash = {\n  start: 'end',\n  end: 'start'\n};\nfunction getOppositeAlignmentPlacement(placement) {\n  return placement.replace(/start|end/g, matched => hash[matched]);\n}\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst allPlacements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-start\", side + \"-end\"), []);\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n  const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n  return allowedPlacementsSortedByAlignment.filter(placement => {\n    if (alignment) {\n      return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n    }\n\n    return true;\n  });\n}\n\n/**\n * Automatically chooses the `placement` which has the most space available.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  return {\n    name: 'autoPlacement',\n    options,\n\n    async fn(middlewareArguments) {\n      var _middlewareData$autoP, _middlewareData$autoP2, _middlewareData$autoP3, _middlewareData$autoP4, _placementsSortedByLe;\n\n      const {\n        x,\n        y,\n        rects,\n        middlewareData,\n        placement,\n        platform,\n        elements\n      } = middlewareArguments;\n      const {\n        alignment = null,\n        allowedPlacements = allPlacements,\n        autoAlignment = true,\n        ...detectOverflowOptions\n      } = options;\n      const placements = getPlacementList(alignment, autoAlignment, allowedPlacements);\n      const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);\n      const currentIndex = (_middlewareData$autoP = (_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.index) != null ? _middlewareData$autoP : 0;\n      const currentPlacement = placements[currentIndex];\n\n      if (currentPlacement == null) {\n        return {};\n      }\n\n      const {\n        main,\n        cross\n      } = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))); // Make `computeCoords` start from the right place\n\n      if (placement !== currentPlacement) {\n        return {\n          x,\n          y,\n          reset: {\n            placement: placements[0]\n          }\n        };\n      }\n\n      const currentOverflows = [overflow[getSide(currentPlacement)], overflow[main], overflow[cross]];\n      const allOverflows = [...((_middlewareData$autoP3 = (_middlewareData$autoP4 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP4.overflows) != null ? _middlewareData$autoP3 : []), {\n        placement: currentPlacement,\n        overflows: currentOverflows\n      }];\n      const nextPlacement = placements[currentIndex + 1]; // There are more placements to check\n\n      if (nextPlacement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: nextPlacement\n          }\n        };\n      }\n\n      const placementsSortedByLeastOverflow = allOverflows.slice().sort((a, b) => a.overflows[0] - b.overflows[0]);\n      const placementThatFitsOnAllSides = (_placementsSortedByLe = placementsSortedByLeastOverflow.find(_ref => {\n        let {\n          overflows\n        } = _ref;\n        return overflows.every(overflow => overflow <= 0);\n      })) == null ? void 0 : _placementsSortedByLe.placement;\n      const resetPlacement = placementThatFitsOnAllSides != null ? placementThatFitsOnAllSides : placementsSortedByLeastOverflow[0].placement;\n\n      if (resetPlacement !== placement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: resetPlacement\n          }\n        };\n      }\n\n      return {};\n    }\n\n  };\n};\n\nfunction getExpandedPlacements(placement) {\n  const oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\n\n/**\n * Changes the placement of the floating element to one that will fit if the\n * initially specified `placement` does not.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  return {\n    name: 'flip',\n    options,\n\n    async fn(middlewareArguments) {\n      var _middlewareData$flip;\n\n      const {\n        placement,\n        middlewareData,\n        rects,\n        initialPlacement,\n        platform,\n        elements\n      } = middlewareArguments;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true,\n        fallbackPlacements: specifiedFallbackPlacements,\n        fallbackStrategy = 'bestFit',\n        flipAlignment = true,\n        ...detectOverflowOptions\n      } = options;\n      const side = getSide(placement);\n      const isBasePlacement = side === initialPlacement;\n      const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n      const placements = [initialPlacement, ...fallbackPlacements];\n      const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);\n      const overflows = [];\n      let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n\n      if (checkMainAxis) {\n        overflows.push(overflow[side]);\n      }\n\n      if (checkCrossAxis) {\n        const {\n          main,\n          cross\n        } = getAlignmentSides(placement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n        overflows.push(overflow[main], overflow[cross]);\n      }\n\n      overflowsData = [...overflowsData, {\n        placement,\n        overflows\n      }]; // One or more sides is overflowing\n\n      if (!overflows.every(side => side <= 0)) {\n        var _middlewareData$flip$, _middlewareData$flip2;\n\n        const nextIndex = ((_middlewareData$flip$ = (_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) != null ? _middlewareData$flip$ : 0) + 1;\n        const nextPlacement = placements[nextIndex];\n\n        if (nextPlacement) {\n          // Try next placement and re-run the lifecycle\n          return {\n            data: {\n              index: nextIndex,\n              overflows: overflowsData\n            },\n            reset: {\n              placement: nextPlacement\n            }\n          };\n        }\n\n        let resetPlacement = 'bottom';\n\n        switch (fallbackStrategy) {\n          case 'bestFit':\n            {\n              var _overflowsData$map$so;\n\n              const placement = (_overflowsData$map$so = overflowsData.map(d => [d, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$map$so[0].placement;\n\n              if (placement) {\n                resetPlacement = placement;\n              }\n\n              break;\n            }\n\n          case 'initialPlacement':\n            resetPlacement = initialPlacement;\n            break;\n        }\n\n        if (placement !== resetPlacement) {\n          return {\n            reset: {\n              placement: resetPlacement\n            }\n          };\n        }\n      }\n\n      return {};\n    }\n\n  };\n};\n\nfunction getSideOffsets(overflow, rect) {\n  return {\n    top: overflow.top - rect.height,\n    right: overflow.right - rect.width,\n    bottom: overflow.bottom - rect.height,\n    left: overflow.left - rect.width\n  };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n  return sides.some(side => overflow[side] >= 0);\n}\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (_temp) {\n  let {\n    strategy = 'referenceHidden',\n    ...detectOverflowOptions\n  } = _temp === void 0 ? {} : _temp;\n  return {\n    name: 'hide',\n\n    async fn(middlewareArguments) {\n      const {\n        rects\n      } = middlewareArguments;\n\n      switch (strategy) {\n        case 'referenceHidden':\n          {\n            const overflow = await detectOverflow(middlewareArguments, { ...detectOverflowOptions,\n              elementContext: 'reference'\n            });\n            const offsets = getSideOffsets(overflow, rects.reference);\n            return {\n              data: {\n                referenceHiddenOffsets: offsets,\n                referenceHidden: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n\n        case 'escaped':\n          {\n            const overflow = await detectOverflow(middlewareArguments, { ...detectOverflowOptions,\n              altBoundary: true\n            });\n            const offsets = getSideOffsets(overflow, rects.floating);\n            return {\n              data: {\n                escapedOffsets: offsets,\n                escaped: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n\n        default:\n          {\n            return {};\n          }\n      }\n    }\n\n  };\n};\n\nasync function convertValueToCoords(middlewareArguments, value) {\n  const {\n    placement,\n    platform,\n    elements\n  } = middlewareArguments;\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n  const side = getSide(placement);\n  const alignment = getAlignment(placement);\n  const isVertical = getMainAxisFromPlacement(placement) === 'x';\n  const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n  const crossAxisMulti = rtl && isVertical ? -1 : 1;\n  const rawValue = typeof value === 'function' ? value(middlewareArguments) : value; // eslint-disable-next-line prefer-const\n\n  let {\n    mainAxis,\n    crossAxis,\n    alignmentAxis\n  } = typeof rawValue === 'number' ? {\n    mainAxis: rawValue,\n    crossAxis: 0,\n    alignmentAxis: null\n  } : {\n    mainAxis: 0,\n    crossAxis: 0,\n    alignmentAxis: null,\n    ...rawValue\n  };\n\n  if (alignment && typeof alignmentAxis === 'number') {\n    crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n  }\n\n  return isVertical ? {\n    x: crossAxis * crossAxisMulti,\n    y: mainAxis * mainAxisMulti\n  } : {\n    x: mainAxis * mainAxisMulti,\n    y: crossAxis * crossAxisMulti\n  };\n}\n/**\n * Displaces the floating element from its reference element.\n * @see https://floating-ui.com/docs/offset\n */\n\nconst offset = function (value) {\n  if (value === void 0) {\n    value = 0;\n  }\n\n  return {\n    name: 'offset',\n    options: value,\n\n    async fn(middlewareArguments) {\n      const {\n        x,\n        y\n      } = middlewareArguments;\n      const diffCoords = await convertValueToCoords(middlewareArguments, value);\n      return {\n        x: x + diffCoords.x,\n        y: y + diffCoords.y,\n        data: diffCoords\n      };\n    }\n\n  };\n};\n\nfunction getCrossAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}\n\n/**\n * Shifts the floating element in order to keep it in view when it will overflow\n * a clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  return {\n    name: 'shift',\n    options,\n\n    async fn(middlewareArguments) {\n      const {\n        x,\n        y,\n        placement\n      } = middlewareArguments;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = false,\n        limiter = {\n          fn: _ref => {\n            let {\n              x,\n              y\n            } = _ref;\n            return {\n              x,\n              y\n            };\n          }\n        },\n        ...detectOverflowOptions\n      } = options;\n      const coords = {\n        x,\n        y\n      };\n      const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);\n      const mainAxis = getMainAxisFromPlacement(getSide(placement));\n      const crossAxis = getCrossAxis(mainAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n\n      if (checkMainAxis) {\n        const minSide = mainAxis === 'y' ? 'top' : 'left';\n        const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n        const min = mainAxisCoord + overflow[minSide];\n        const max = mainAxisCoord - overflow[maxSide];\n        mainAxisCoord = within(min, mainAxisCoord, max);\n      }\n\n      if (checkCrossAxis) {\n        const minSide = crossAxis === 'y' ? 'top' : 'left';\n        const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n        const min = crossAxisCoord + overflow[minSide];\n        const max = crossAxisCoord - overflow[maxSide];\n        crossAxisCoord = within(min, crossAxisCoord, max);\n      }\n\n      const limitedCoords = limiter.fn({ ...middlewareArguments,\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      });\n      return { ...limitedCoords,\n        data: {\n          x: limitedCoords.x - x,\n          y: limitedCoords.y - y\n        }\n      };\n    }\n\n  };\n};\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  return {\n    options,\n\n    fn(middlewareArguments) {\n      const {\n        x,\n        y,\n        placement,\n        rects,\n        middlewareData\n      } = middlewareArguments;\n      const {\n        offset = 0,\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true\n      } = options;\n      const coords = {\n        x,\n        y\n      };\n      const mainAxis = getMainAxisFromPlacement(placement);\n      const crossAxis = getCrossAxis(mainAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      const rawOffset = typeof offset === 'function' ? offset({ ...rects,\n        placement\n      }) : offset;\n      const computedOffset = typeof rawOffset === 'number' ? {\n        mainAxis: rawOffset,\n        crossAxis: 0\n      } : {\n        mainAxis: 0,\n        crossAxis: 0,\n        ...rawOffset\n      };\n\n      if (checkMainAxis) {\n        const len = mainAxis === 'y' ? 'height' : 'width';\n        const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n        const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n\n        if (mainAxisCoord < limitMin) {\n          mainAxisCoord = limitMin;\n        } else if (mainAxisCoord > limitMax) {\n          mainAxisCoord = limitMax;\n        }\n      }\n\n      if (checkCrossAxis) {\n        var _middlewareData$offse, _middlewareData$offse2, _middlewareData$offse3, _middlewareData$offse4;\n\n        const len = mainAxis === 'y' ? 'width' : 'height';\n        const isOriginSide = ['top', 'left'].includes(getSide(placement));\n        const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? (_middlewareData$offse = (_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) != null ? _middlewareData$offse : 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n        const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : (_middlewareData$offse3 = (_middlewareData$offse4 = middlewareData.offset) == null ? void 0 : _middlewareData$offse4[crossAxis]) != null ? _middlewareData$offse3 : 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n\n        if (crossAxisCoord < limitMin) {\n          crossAxisCoord = limitMin;\n        } else if (crossAxisCoord > limitMax) {\n          crossAxisCoord = limitMax;\n        }\n      }\n\n      return {\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      };\n    }\n\n  };\n};\n\n/**\n * Provides data to change the size of the floating element. For instance,\n * prevent it from overflowing its clipping boundary or match the width of the\n * reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  return {\n    name: 'size',\n    options,\n\n    async fn(middlewareArguments) {\n      const {\n        placement,\n        rects,\n        platform,\n        elements\n      } = middlewareArguments;\n      const {\n        apply,\n        ...detectOverflowOptions\n      } = options;\n      const overflow = await detectOverflow(middlewareArguments, detectOverflowOptions);\n      const side = getSide(placement);\n      const alignment = getAlignment(placement);\n      let heightSide;\n      let widthSide;\n\n      if (side === 'top' || side === 'bottom') {\n        heightSide = side;\n        widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n      } else {\n        widthSide = side;\n        heightSide = alignment === 'end' ? 'top' : 'bottom';\n      }\n\n      const xMin = max(overflow.left, 0);\n      const xMax = max(overflow.right, 0);\n      const yMin = max(overflow.top, 0);\n      const yMax = max(overflow.bottom, 0);\n      const dimensions = {\n        availableHeight: rects.floating.height - (['left', 'right'].includes(placement) ? 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom)) : overflow[heightSide]),\n        availableWidth: rects.floating.width - (['top', 'bottom'].includes(placement) ? 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right)) : overflow[widthSide])\n      };\n      const prevDimensions = await platform.getDimensions(elements.floating);\n      apply == null ? void 0 : apply({ ...middlewareArguments,\n        ...dimensions\n      });\n      const nextDimensions = await platform.getDimensions(elements.floating);\n\n      if (prevDimensions.width !== nextDimensions.width || prevDimensions.height !== nextDimensions.height) {\n        return {\n          reset: {\n            rects: true\n          }\n        };\n      }\n\n      return {};\n    }\n\n  };\n};\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  return {\n    name: 'inline',\n    options,\n\n    async fn(middlewareArguments) {\n      var _await$platform$getCl;\n\n      const {\n        placement,\n        elements,\n        rects,\n        platform,\n        strategy\n      } = middlewareArguments; // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n      // ClientRect's bounds, despite the event listener being triggered. A\n      // padding of 2 seems to handle this issue.\n\n      const {\n        padding = 2,\n        x,\n        y\n      } = options;\n      const fallback = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n        rect: rects.reference,\n        offsetParent: await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating)),\n        strategy\n      }) : rects.reference);\n      const clientRects = (_await$platform$getCl = await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) != null ? _await$platform$getCl : [];\n      const paddingObject = getSideObjectFromPadding(padding);\n\n      function getBoundingClientRect() {\n        // There are two rects and they are disjoined\n        if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n          var _clientRects$find;\n\n          // Find the first rect in which the point is fully inside\n          return (_clientRects$find = clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom)) != null ? _clientRects$find : fallback;\n        } // There are 2 or more connected rects\n\n\n        if (clientRects.length >= 2) {\n          if (getMainAxisFromPlacement(placement) === 'x') {\n            const firstRect = clientRects[0];\n            const lastRect = clientRects[clientRects.length - 1];\n            const isTop = getSide(placement) === 'top';\n            const top = firstRect.top;\n            const bottom = lastRect.bottom;\n            const left = isTop ? firstRect.left : lastRect.left;\n            const right = isTop ? firstRect.right : lastRect.right;\n            const width = right - left;\n            const height = bottom - top;\n            return {\n              top,\n              bottom,\n              left,\n              right,\n              width,\n              height,\n              x: left,\n              y: top\n            };\n          }\n\n          const isLeftSide = getSide(placement) === 'left';\n          const maxRight = max(...clientRects.map(rect => rect.right));\n          const minLeft = min(...clientRects.map(rect => rect.left));\n          const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n          const top = measureRects[0].top;\n          const bottom = measureRects[measureRects.length - 1].bottom;\n          const left = minLeft;\n          const right = maxRight;\n          const width = right - left;\n          const height = bottom - top;\n          return {\n            top,\n            bottom,\n            left,\n            right,\n            width,\n            height,\n            x: left,\n            y: top\n          };\n        }\n\n        return fallback;\n      }\n\n      const resetRects = await platform.getElementRects({\n        reference: {\n          getBoundingClientRect\n        },\n        floating: elements.floating,\n        strategy\n      });\n\n      if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n        return {\n          reset: {\n            rects: resetRects\n          }\n        };\n      }\n\n      return {};\n    }\n\n  };\n};\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 54172 characters]\n//# sourceURL=webpack-internal:///../../../node_modules/@floating-ui/core/dist/floating-ui.core.browser.mjs\n");
              }
            ),
            /***/
            "../../../node_modules/@floating-ui/dom/dist/floating-ui.dom.browser.mjs": (
              /*!*******************************************************************************!*\
                !*** ../../../node_modules/@floating-ui/dom/dist/floating-ui.dom.browser.mjs ***!
                \*******************************************************************************/
              /***/
              (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "arrow": () => (/* reexport safe */ _floating_ui_core__WEBPACK_IMPORTED_MODULE_0__.arrow),
/* harmony export */   "autoPlacement": () => (/* reexport safe */ _floating_ui_core__WEBPACK_IMPORTED_MODULE_0__.autoPlacement),
/* harmony export */   "autoUpdate": () => (/* binding */ autoUpdate),
/* harmony export */   "computePosition": () => (/* binding */ computePosition),
/* harmony export */   "detectOverflow": () => (/* reexport safe */ _floating_ui_core__WEBPACK_IMPORTED_MODULE_0__.detectOverflow),
/* harmony export */   "flip": () => (/* reexport safe */ _floating_ui_core__WEBPACK_IMPORTED_MODULE_0__.flip),
/* harmony export */   "getOverflowAncestors": () => (/* binding */ getOverflowAncestors),
/* harmony export */   "hide": () => (/* reexport safe */ _floating_ui_core__WEBPACK_IMPORTED_MODULE_0__.hide),
/* harmony export */   "inline": () => (/* reexport safe */ _floating_ui_core__WEBPACK_IMPORTED_MODULE_0__.inline),
/* harmony export */   "limitShift": () => (/* reexport safe */ _floating_ui_core__WEBPACK_IMPORTED_MODULE_0__.limitShift),
/* harmony export */   "offset": () => (/* reexport safe */ _floating_ui_core__WEBPACK_IMPORTED_MODULE_0__.offset),
/* harmony export */   "shift": () => (/* reexport safe */ _floating_ui_core__WEBPACK_IMPORTED_MODULE_0__.shift),
/* harmony export */   "size": () => (/* reexport safe */ _floating_ui_core__WEBPACK_IMPORTED_MODULE_0__.size)
/* harmony export */ });
/* harmony import */ var _floating_ui_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @floating-ui/core */ "../../../node_modules/@floating-ui/core/dist/floating-ui.core.browser.mjs");



function isWindow(value) {
  return value && value.document && value.location && value.alert && value.setInterval;
}
function getWindow(node) {
  if (node == null) {
    return window;
  }

  if (!isWindow(node)) {
    const ownerDocument = node.ownerDocument;
    return ownerDocument ? ownerDocument.defaultView || window : window;
  }

  return node;
}

function getComputedStyle$1(element) {
  return getWindow(element).getComputedStyle(element);
}

function getNodeName(node) {
  return isWindow(node) ? '' : node ? (node.nodeName || '').toLowerCase() : '';
}

function getUAString() {
  const uaData = navigator.userAgentData;

  if (uaData != null && uaData.brands) {
    return uaData.brands.map(item => item.brand + "/" + item.version).join(' ');
  }

  return navigator.userAgent;
}

function isHTMLElement(value) {
  return value instanceof getWindow(value).HTMLElement;
}
function isElement(value) {
  return value instanceof getWindow(value).Element;
}
function isNode(value) {
  return value instanceof getWindow(value).Node;
}
function isShadowRoot(node) {
  // Browsers without \`ShadowRoot\` support
  if (typeof ShadowRoot === 'undefined') {
    return false;
  }

  const OwnElement = getWindow(node).ShadowRoot;
  return node instanceof OwnElement || node instanceof ShadowRoot;
}
function isOverflowElement(element) {
  // Firefox wants us to check \`-x\` and \`-y\` variations as well
  const {
    overflow,
    overflowX,
    overflowY
  } = getComputedStyle$1(element);
  return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);
}
function isTableElement(element) {
  return ['table', 'td', 'th'].includes(getNodeName(element));
}
function isContainingBlock(element) {
  // TODO: Try and use feature detection here instead
  const isFirefox = /firefox/i.test(getUAString());
  const css = getComputedStyle$1(element); // This is non-exhaustive but covers the most common CSS properties that
  // create a containing block.
  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block

  return css.transform !== 'none' || css.perspective !== 'none' || // @ts-ignore (TS 4.1 compat)
  css.contain === 'paint' || ['transform', 'perspective'].includes(css.willChange) || isFirefox && css.willChange === 'filter' || isFirefox && (css.filter ? css.filter !== 'none' : false);
}
function isLayoutViewport() {
  // Not Safari
  return !/^((?!chrome|android).)*safari/i.test(getUAString()); // Feature detection for this fails in various ways
  // \u2022 Always-visible scrollbar or not
  // \u2022 Width of <html>, etc.
  // const vV = win.visualViewport;
  // return vV ? Math.abs(win.innerWidth / vV.scale - vV.width) < 0.5 : true;
}

const min = Math.min;
const max = Math.max;
const round = Math.round;

function getBoundingClientRect(element, includeScale, isFixedStrategy) {
  var _win$visualViewport$o, _win$visualViewport, _win$visualViewport$o2, _win$visualViewport2;

  if (includeScale === void 0) {
    includeScale = false;
  }

  if (isFixedStrategy === void 0) {
    isFixedStrategy = false;
  }

  const clientRect = element.getBoundingClientRect();
  let scaleX = 1;
  let scaleY = 1;

  if (includeScale && isHTMLElement(element)) {
    scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;
    scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;
  }

  const win = isElement(element) ? getWindow(element) : window;
  const addVisualOffsets = !isLayoutViewport() && isFixedStrategy;
  const x = (clientRect.left + (addVisualOffsets ? (_win$visualViewport$o = (_win$visualViewport = win.visualViewport) == null ? void 0 : _win$visualViewport.offsetLeft) != null ? _win$visualViewport$o : 0 : 0)) / scaleX;
  const y = (clientRect.top + (addVisualOffsets ? (_win$visualViewport$o2 = (_win$visualViewport2 = win.visualViewport) == null ? void 0 : _win$visualViewport2.offsetTop) != null ? _win$visualViewport$o2 : 0 : 0)) / scaleY;
  const width = clientRect.width / scaleX;
  const height = clientRect.height / scaleY;
  return {
    width,
    height,
    top: y,
    right: x + width,
    bottom: y + height,
    left: x,
    x,
    y
  };
}

function getDocumentElement(node) {
  return ((isNode(node) ? node.ownerDocument : node.document) || window.document).documentElement;
}

function getNodeScroll(element) {
  if (isElement(element)) {
    return {
      scrollLeft: element.scrollLeft,
      scrollTop: element.scrollTop
    };
  }

  return {
    scrollLeft: element.pageXOffset,
    scrollTop: element.pageYOffset
  };
}

function getWindowScrollBarX(element) {
  // If <html> has a CSS width greater than the viewport, then this will be
  // incorrect for RTL.
  return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft;
}

function isScaled(element) {
  const rect = getBoundingClientRect(element);
  return round(rect.width) !== element.offsetWidth || round(rect.height) !== element.offsetHeight;
}

function getRectRelativeToOffsetParent(element, offsetParent, strategy) {
  const isOffsetParentAnElement = isHTMLElement(offsetParent);
  const documentElement = getDocumentElement(offsetParent);
  const rect = getBoundingClientRect(element, // @ts-ignore - checked above (TS 4.1 compat)
  isOffsetParentAnElement && isScaled(offsetParent), strategy === 'fixed');
  let scroll = {
    scrollLeft: 0,
    scrollTop: 0
  };
  const offsets = {
    x: 0,
    y: 0
  };

  if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== 'fixed') {
    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {
      scroll = getNodeScroll(offsetParent);
    }

    if (isHTMLElement(offsetParent)) {
      const offsetRect = getBoundingClientRect(offsetParent, true);
      offsets.x = offsetRect.x + offsetParent.clientLeft;
      offsets.y = offsetRect.y + offsetParent.clientTop;
    } else if (documentElement) {
      offsets.x = getWindowScrollBarX(documentElement);
    }
  }

  return {
    x: rect.left + scroll.scrollLeft - offsets.x,
    y: rect.top + scroll.scrollTop - offsets.y,
    width: rect.width,
    height: rect.height
  };
}

function getParentNode(node) {
  if (getNodeName(node) === 'html') {
    return node;
  }

  return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle
    // @ts-ignore
    node.assignedSlot || // step into the shadow DOM of the parent of a slotted node
    node.parentNode || ( // DOM Element detected
    isShadowRoot(node) ? node.host : null) || // ShadowRoot detected
    getDocumentElement(node) // fallback

  );
}

function getTrueOffsetParent(element) {
  if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {
    return null;
  }

  return element.offsetParent;
}

function getContainingBlock(element) {
  let currentNode = getParentNode(element);

  if (isShadowRoot(currentNode)) {
    currentNode = currentNode.host;
  }

  while (isHTMLElement(currentNode) && !['html', 'body'].includes(getNodeName(currentNode))) {
    if (isContainingBlock(currentNode)) {
      return currentNode;
    } else {
      currentNode = currentNode.parentNode;
    }
  }

  return null;
} // Gets the closest ancestor positioned element. Handles some edge cases,
// such as table ancestors and cross browser bugs.


function getOffsetParent(element) {
  const window = getWindow(element);
  let offsetParent = getTrueOffsetParent(element);

  while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {
    offsetParent = getTrueOffsetParent(offsetParent);
  }

  if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static' && !isContainingBlock(offsetParent))) {
    return window;
  }

  return offsetParent || getContainingBlock(element) || window;
}

function getDimensions(element) {
  if (isHTMLElement(element)) {
    return {
      width: element.offsetWidth,
      height: element.offsetHeight
    };
  }

  const rect = getBoundingClientRect(element);
  return {
    width: rect.width,
    height: rect.height
  };
}

function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {
  let {
    rect,
    offsetParent,
    strategy
  } = _ref;
  const isOffsetParentAnElement = isHTMLElement(offsetParent);
  const documentElement = getDocumentElement(offsetParent);

  if (offsetParent === documentElement) {
    return rect;
  }

  let scroll = {
    scrollLeft: 0,
    scrollTop: 0
  };
  const offsets = {
    x: 0,
    y: 0
  };

  if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== 'fixed') {
    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {
      scroll = getNodeScroll(offsetParent);
    }

    if (isHTMLElement(offsetParent)) {
      const offsetRect = getBoundingClientRect(offsetParent, true);
      offsets.x = offsetRect.x + offsetParent.clientLeft;
      offsets.y = offsetRect.y + offsetParent.clientTop;
    } // This doesn't appear to be need to be negated.
    // else if (documentElement) {
    //   offsets.x = getWindowScrollBarX(documentElement);
    // }

  }

  return { ...rect,
    x: rect.x - scroll.scrollLeft + offsets.x,
    y: rect.y - scroll.scrollTop + offsets.y
  };
}

function getViewportRect(element, strategy) {
  const win = getWindow(element);
  const html = getDocumentElement(element);
  const visualViewport = win.visualViewport;
  let width = html.clientWidth;
  let height = html.clientHeight;
  let x = 0;
  let y = 0;

  if (visualViewport) {
    width = visualViewport.width;
    height = visualViewport.height;
    const layoutViewport = isLayoutViewport();

    if (layoutViewport || !layoutViewport && strategy === 'fixed') {
      x = visualViewport.offsetLeft;
      y = visualViewport.offsetTop;
    }
  }

  return {
    width,
    height,
    x,
    y
  };
}

// of the \`<html>\` and \`<body>\` rect bounds if horizontally scrollable

function getDocumentRect(element) {
  var _element$ownerDocumen;

  const html = getDocumentElement(element);
  const scroll = getNodeScroll(element);
  const body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;
  const width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);
  const height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);
  let x = -scroll.scrollLeft + getWindowScrollBarX(element);
  const y = -scroll.scrollTop;

  if (getComputedStyle$1(body || html).direction === 'rtl') {
    x += max(html.clientWidth, body ? body.clientWidth : 0) - width;
  }

  return {
    width,
    height,
    x,
    y
  };
}

function getNearestOverflowAncestor(node) {
  const parentNode = getParentNode(node);

  if (['html', 'body', '#document'].includes(getNodeName(parentNode))) {
    // @ts-ignore assume body is always available
    return node.ownerDocument.body;
  }

  if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {
    return parentNode;
  }

  return getNearestOverflowAncestor(parentNode);
}

function getOverflowAncestors(node, list) {
  var _node$ownerDocument;

  if (list === void 0) {
    list = [];
  }

  const scrollableAncestor = getNearestOverflowAncestor(node);
  const isBody = scrollableAncestor === ((_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.body);
  const win = getWindow(scrollableAncestor);
  const target = isBody ? [win].concat(win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : []) : scrollableAncestor;
  const updatedList = list.concat(target);
  return isBody ? updatedList : // @ts-ignore: isBody tells us target will be an HTMLElement here
  updatedList.concat(getOverflowAncestors(target));
}

function contains(parent, child) {
  const rootNode = child.getRootNode == null ? void 0 : child.getRootNode(); // First, attempt with faster native method

  if (parent.contains(child)) {
    return true;
  } // then fallback to custom implementation with Shadow DOM support
  else if (rootNode && isShadowRoot(rootNode)) {
    let next = child;

    do {
      // use \`===\` replace node.isSameNode()
      if (next && parent === next) {
        return true;
      } // @ts-ignore: need a better way to handle this...


      next = next.parentNode || next.host;
    } while (next);
  }

  return false;
}

function getInnerBoundingClientRect(element, strategy) {
  const clientRect = getBoundingClientRect(element, false, strategy === 'fixed');
  const top = clientRect.top + element.clientTop;
  const left = clientRect.left + element.clientLeft;
  return {
    top,
    left,
    x: left,
    y: top,
    right: left + element.clientWidth,
    bottom: top + element.clientHeight,
    width: element.clientWidth,
    height: element.clientHeight
  };
}

function getClientRectFromClippingAncestor(element, clippingParent, strategy) {
  if (clippingParent === 'viewport') {
    return (0,_floating_ui_core__WEBPACK_IMPORTED_MODULE_0__.rectToClientRect)(getViewportRect(element, strategy));
  }

  if (isElement(clippingParent)) {
    return getInnerBoundingClientRect(clippingParent, strategy);
  }

  return (0,_floating_ui_core__WEBPACK_IMPORTED_MODULE_0__.rectToClientRect)(getDocumentRect(getDocumentElement(element)));
} // A "clipping ancestor" is an overflowable container with the characteristic of
// clipping (or hiding) overflowing elements with a position different from
// \`initial\`


function getClippingAncestors(element) {
  const clippingAncestors = getOverflowAncestors(element);
  const canEscapeClipping = ['absolute', 'fixed'].includes(getComputedStyle$1(element).position);
  const clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;

  if (!isElement(clipperElement)) {
    return [];
  } // @ts-ignore isElement check ensures we return Array<Element>


  return clippingAncestors.filter(clippingAncestors => isElement(clippingAncestors) && contains(clippingAncestors, clipperElement) && getNodeName(clippingAncestors) !== 'body');
} // Gets the maximum area that the element is visible in due to any number of
// clipping ancestors


function getClippingRect(_ref) {
  let {
    element,
    boundary,
    rootBoundary,
    strategy
  } = _ref;
  const mainClippingAncestors = boundary === 'clippingAncestors' ? getClippingAncestors(element) : [].concat(boundary);
  const clippingAncestors = [...mainClippingAncestors, rootBoundary];
  const firstClippingAncestor = clippingAncestors[0];
  const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {
    const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);
    accRect.top = max(rect.top, accRect.top);
    accRect.right = min(rect.right, accRect.right);
    accRect.bottom = min(rect.bottom, accRect.bottom);
    accRect.left = max(rect.left, accRect.left);
    return accRect;
  }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));
  return {
    width: clippingRect.right - clippingRect.left,
    height: clippingRect.bottom - clippingRect.top,
    x: clippingRect.left,
    y: clippingRect.top
  };
}

const platform = {
  getClippingRect,
  convertOffsetParentRelativeRectToViewportRelativeRect,
  isElement,
  getDimensions,
  getOffsetParent,
  getDocumentElement,
  getElementRects: _ref => {
    let {
      reference,
      floating,
      strategy
    } = _ref;
    return {
      reference: getRectRelativeToOffsetParent(reference, getOffsetParent(floating), strategy),
      floating: { ...getDimensions(floating),
        x: 0,
        y: 0
      }
    };
  },
  getClientRects: element => Array.from(element.getClientRects()),
  isRTL: element => getComputedStyle$1(element).direction === 'rtl'
};

/**
 * Automatically updates the position of the floating element when necessary.
 * @see https://floating-ui.com/docs/autoUpdate
 */
function autoUpdate(reference, floating, update, options) {
  if (options === void 0) {
    options = {};
  }

  const {
    ancestorScroll: _ancestorScroll = true,
    ancestorResize: _ancestorResize = true,
    elementResize = true,
    animationFrame = false
  } = options;
  const ancestorScroll = _ancestorScroll && !animationFrame;
  const ancestorResize = _ancestorResize && !animationFrame;
  const ancestors = ancestorScroll || ancestorResize ? [...(isElement(reference) ? getOverflowAncestors(reference) : []), ...getOverflowAncestors(floating)] : [];
  ancestors.forEach(ancestor => {
    ancestorScroll && ancestor.addEventListener('scroll', update, {
      passive: true
    });
    ancestorResize && ancestor.addEventListener('resize', update);
  });
  let observer = null;

  if (elementResize) {
    let initialUpdate = true;
    observer = new ResizeObserver(() => {
      if (!initialUpdate) {
        update();
      }

      initialUpdate = false;
    });
    isElement(reference) && !animationFrame && observer.observe(reference);
    observer.observe(floating);
  }

  let frameId;
  let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;

  if (animationFrame) {
    frameLoop();
  }

  function frameLoop() {
    const nextRefRect = getBoundingClientRect(reference);

    if (prevRefRect && (nextRefRect.x !== prevRefRect.x || nextRefRect.y !== prevRefRect.y || nextRefRect.width !== prevRefRect.width || nextRefRect.height !== prevRefRect.height)) {
      update();
    }

    prevRefRect = nextRefRect;
    frameId = requestAnimationFrame(frameLoop);
  }

  update();
  return () => {
    var _observer;

    ancestors.forEach(ancestor => {
      ancestorScroll && ancestor.removeEventListener('scroll', update);
      ancestorResize && ancestor.removeEventListener('resize', update);
    });
    (_observer = observer) == null ? void 0 : _observer.disconnect();
    observer = null;

    if (animationFrame) {
      cancelAnimationFrame(frameId);
    }
  };
}

/**
 * Computes the \`x\` and \`y\` coordinates that will place the floating element
 * next to a reference element when it is given a certain CSS positioning
 * strategy.
 */

const computePosition = (reference, floating, options) => (0,_floating_ui_core__WEBPACK_IMPORTED_MODULE_0__.computePosition)(reference, floating, {
  platform,
  ...options
});


//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 29688 characters]
//# sourceURL=webpack-internal:///../../../node_modules/@floating-ui/dom/dist/floating-ui.dom.browser.mjs
`);
              }
            ),
            /***/
            "../../../node_modules/hachure-fill/bin/hachure.js": (
              /*!*********************************************************!*\
                !*** ../../../node_modules/hachure-fill/bin/hachure.js ***!
                \*********************************************************/
              /***/
              (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "hachureLines": () => (/* binding */ hachureLines)
/* harmony export */ });
function rotatePoints(points, center, degrees) {
    if (points && points.length) {
        const [cx, cy] = center;
        const angle = (Math.PI / 180) * degrees;
        const cos = Math.cos(angle);
        const sin = Math.sin(angle);
        for (const p of points) {
            const [x, y] = p;
            p[0] = ((x - cx) * cos) - ((y - cy) * sin) + cx;
            p[1] = ((x - cx) * sin) + ((y - cy) * cos) + cy;
        }
    }
}
function rotateLines(lines, center, degrees) {
    const points = [];
    lines.forEach((line) => points.push(...line));
    rotatePoints(points, center, degrees);
}
function areSamePoints(p1, p2) {
    return p1[0] === p2[0] && p1[1] === p2[1];
}
function hachureLines(polygons, hachureGap, hachureAngle, hachureStepOffset = 1) {
    const angle = hachureAngle;
    const gap = Math.max(hachureGap, 0.1);
    const polygonList = (polygons[0] && polygons[0][0] && (typeof polygons[0][0] === 'number')) ? [polygons] : polygons;
    const rotationCenter = [0, 0];
    if (angle) {
        for (const polygon of polygonList) {
            rotatePoints(polygon, rotationCenter, angle);
        }
    }
    const lines = straightHachureLines(polygonList, gap, hachureStepOffset);
    if (angle) {
        for (const polygon of polygonList) {
            rotatePoints(polygon, rotationCenter, -angle);
        }
        rotateLines(lines, rotationCenter, -angle);
    }
    return lines;
}
function straightHachureLines(polygons, gap, hachureStepOffset) {
    const vertexArray = [];
    for (const polygon of polygons) {
        const vertices = [...polygon];
        if (!areSamePoints(vertices[0], vertices[vertices.length - 1])) {
            vertices.push([vertices[0][0], vertices[0][1]]);
        }
        if (vertices.length > 2) {
            vertexArray.push(vertices);
        }
    }
    const lines = [];
    gap = Math.max(gap, 0.1);
    // Create sorted edges table
    const edges = [];
    for (const vertices of vertexArray) {
        for (let i = 0; i < vertices.length - 1; i++) {
            const p1 = vertices[i];
            const p2 = vertices[i + 1];
            if (p1[1] !== p2[1]) {
                const ymin = Math.min(p1[1], p2[1]);
                edges.push({
                    ymin,
                    ymax: Math.max(p1[1], p2[1]),
                    x: ymin === p1[1] ? p1[0] : p2[0],
                    islope: (p2[0] - p1[0]) / (p2[1] - p1[1]),
                });
            }
        }
    }
    edges.sort((e1, e2) => {
        if (e1.ymin < e2.ymin) {
            return -1;
        }
        if (e1.ymin > e2.ymin) {
            return 1;
        }
        if (e1.x < e2.x) {
            return -1;
        }
        if (e1.x > e2.x) {
            return 1;
        }
        if (e1.ymax === e2.ymax) {
            return 0;
        }
        return (e1.ymax - e2.ymax) / Math.abs((e1.ymax - e2.ymax));
    });
    if (!edges.length) {
        return lines;
    }
    // Start scanning
    let activeEdges = [];
    let y = edges[0].ymin;
    let iteration = 0;
    while (activeEdges.length || edges.length) {
        if (edges.length) {
            let ix = -1;
            for (let i = 0; i < edges.length; i++) {
                if (edges[i].ymin > y) {
                    break;
                }
                ix = i;
            }
            const removed = edges.splice(0, ix + 1);
            removed.forEach((edge) => {
                activeEdges.push({ s: y, edge });
            });
        }
        activeEdges = activeEdges.filter((ae) => {
            if (ae.edge.ymax <= y) {
                return false;
            }
            return true;
        });
        activeEdges.sort((ae1, ae2) => {
            if (ae1.edge.x === ae2.edge.x) {
                return 0;
            }
            return (ae1.edge.x - ae2.edge.x) / Math.abs((ae1.edge.x - ae2.edge.x));
        });
        // fill between the edges
        if ((hachureStepOffset !== 1) || (iteration % gap === 0)) {
            if (activeEdges.length > 1) {
                for (let i = 0; i < activeEdges.length; i = i + 2) {
                    const nexti = i + 1;
                    if (nexti >= activeEdges.length) {
                        break;
                    }
                    const ce = activeEdges[i].edge;
                    const ne = activeEdges[nexti].edge;
                    lines.push([
                        [Math.round(ce.x), y],
                        [Math.round(ne.x), y],
                    ]);
                }
            }
        }
        y += hachureStepOffset;
        activeEdges.forEach((ae) => {
            ae.edge.x = ae.edge.x + (hachureStepOffset * ae.edge.islope);
        });
        iteration++;
    }
    return lines;
}
//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 7936 characters]
//# sourceURL=webpack-internal:///../../../node_modules/hachure-fill/bin/hachure.js
`);
              }
            ),
            /***/
            "../../../node_modules/jotai/esm/index.mjs": (
              /*!*************************************************!*\
                !*** ../../../node_modules/jotai/esm/index.mjs ***!
                \*************************************************/
              /***/
              (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "Provider": () => (/* binding */ Provider),\n/* harmony export */   "SECRET_INTERNAL_getScopeContext": () => (/* binding */ getScopeContext),\n/* harmony export */   "SECRET_INTERNAL_registerPromiseAbort": () => (/* binding */ registerPromiseAbort),\n/* harmony export */   "atom": () => (/* binding */ atom),\n/* harmony export */   "unstable_createStore": () => (/* binding */ createStoreForExport),\n/* harmony export */   "useAtom": () => (/* binding */ useAtom),\n/* harmony export */   "useAtomValue": () => (/* binding */ useAtomValue),\n/* harmony export */   "useSetAtom": () => (/* binding */ useSetAtom)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var jotai_vanilla__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! jotai/vanilla */ "../../../node_modules/jotai/esm/vanilla.mjs");\n\n\n\nconst SUSPENSE_PROMISE = Symbol();\nconst isSuspensePromise = (promise) => !!promise[SUSPENSE_PROMISE];\nconst isSuspensePromiseAlreadyCancelled = (suspensePromise) => !suspensePromise[SUSPENSE_PROMISE].c;\nconst cancelSuspensePromise = (suspensePromise) => {\n  var _a;\n  const { b: basePromise, c: cancelPromise } = suspensePromise[SUSPENSE_PROMISE];\n  if (cancelPromise) {\n    cancelPromise();\n    (_a = promiseAbortMap.get(basePromise)) == null ? void 0 : _a();\n  }\n};\nconst isEqualSuspensePromise = (oldSuspensePromise, newSuspensePromise) => {\n  const oldOriginalPromise = oldSuspensePromise[SUSPENSE_PROMISE].o;\n  const newOriginalPromise = newSuspensePromise[SUSPENSE_PROMISE].o;\n  return oldOriginalPromise === newOriginalPromise || oldSuspensePromise === newOriginalPromise || isSuspensePromise(oldOriginalPromise) && isEqualSuspensePromise(oldOriginalPromise, newSuspensePromise);\n};\nconst createSuspensePromise = (basePromise, promise) => {\n  const suspensePromiseExtra = {\n    b: basePromise,\n    o: promise,\n    c: null\n  };\n  const suspensePromise = new Promise((resolve) => {\n    suspensePromiseExtra.c = () => {\n      suspensePromiseExtra.c = null;\n      resolve();\n    };\n    promise.finally(suspensePromiseExtra.c);\n  });\n  suspensePromise[SUSPENSE_PROMISE] = suspensePromiseExtra;\n  return suspensePromise;\n};\nconst copySuspensePromise = (suspensePromise) => createSuspensePromise(\n  suspensePromise[SUSPENSE_PROMISE].b,\n  suspensePromise[SUSPENSE_PROMISE].o\n);\nconst promiseAbortMap = /* @__PURE__ */ new WeakMap();\nconst registerPromiseAbort = (basePromise, abort) => {\n  promiseAbortMap.set(basePromise, abort);\n};\n\nconst hasInitialValue = (atom) => "init" in atom;\nconst READ_ATOM = "r";\nconst WRITE_ATOM = "w";\nconst COMMIT_ATOM = "c";\nconst SUBSCRIBE_ATOM = "s";\nconst RESTORE_ATOMS = "h";\nconst DEV_SUBSCRIBE_STATE = "n";\nconst DEV_GET_MOUNTED_ATOMS = "l";\nconst DEV_GET_ATOM_STATE = "a";\nconst DEV_GET_MOUNTED = "m";\nconst createStore = (initialValues) => {\n  const committedAtomStateMap = /* @__PURE__ */ new WeakMap();\n  const mountedMap = /* @__PURE__ */ new WeakMap();\n  const pendingMap = /* @__PURE__ */ new Map();\n  let stateListeners;\n  let mountedAtoms;\n  if (true) {\n    stateListeners = /* @__PURE__ */ new Set();\n    mountedAtoms = /* @__PURE__ */ new Set();\n  }\n  if (initialValues) {\n    for (const [atom, value] of initialValues) {\n      const atomState = {\n        v: value,\n        r: 0,\n        y: true,\n        // not invalidated\n        d: /* @__PURE__ */ new Map()\n      };\n      if (true) {\n        Object.freeze(atomState);\n        if (!hasInitialValue(atom)) {\n          console.warn(\n            "Found initial value for derived atom which can cause unexpected behavior",\n            atom\n          );\n        }\n      }\n      committedAtomStateMap.set(atom, atomState);\n    }\n  }\n  const suspensePromiseCacheMap = /* @__PURE__ */ new WeakMap();\n  const addSuspensePromiseToCache = (version, atom, suspensePromise) => {\n    let cache = suspensePromiseCacheMap.get(atom);\n    if (!cache) {\n      cache = /* @__PURE__ */ new Map();\n      suspensePromiseCacheMap.set(atom, cache);\n    }\n    suspensePromise.then(() => {\n      if (cache.get(version) === suspensePromise) {\n        cache.delete(version);\n        if (!cache.size) {\n          suspensePromiseCacheMap.delete(atom);\n        }\n      }\n    });\n    cache.set(version, suspensePromise);\n  };\n  const cancelAllSuspensePromiseInCache = (atom) => {\n    const versionSet = /* @__PURE__ */ new Set();\n    const cache = suspensePromiseCacheMap.get(atom);\n    if (cache) {\n      suspensePromiseCacheMap.delete(atom);\n      cache.forEach((suspensePromise, version) => {\n        cancelSuspensePromise(suspensePromise);\n        versionSet.add(version);\n      });\n    }\n    return versionSet;\n  };\n  const versionedAtomStateMapMap = /* @__PURE__ */ new WeakMap();\n  const getVersionedAtomStateMap = (version) => {\n    let versionedAtomStateMap = versionedAtomStateMapMap.get(version);\n    if (!versionedAtomStateMap) {\n      versionedAtomStateMap = /* @__PURE__ */ new Map();\n      versionedAtomStateMapMap.set(version, versionedAtomStateMap);\n    }\n    return versionedAtomStateMap;\n  };\n  const getAtomState = (version, atom) => {\n    if (version) {\n      const versionedAtomStateMap = getVersionedAtomStateMap(version);\n      let atomState = versionedAtomStateMap.get(atom);\n      if (!atomState) {\n        atomState = getAtomState(version.p, atom);\n        if (atomState && "p" in atomState && isSuspensePromiseAlreadyCancelled(atomState.p)) {\n          atomState = void 0;\n        }\n        if (atomState) {\n          versionedAtomStateMap.set(atom, atomState);\n        }\n      }\n      return atomState;\n    }\n    return committedAtomStateMap.get(atom);\n  };\n  const setAtomState = (version, atom, atomState) => {\n    if (true) {\n      Object.freeze(atomState);\n    }\n    if (version) {\n      const versionedAtomStateMap = getVersionedAtomStateMap(version);\n      versionedAtomStateMap.set(atom, atomState);\n    } else {\n      const prevAtomState = committedAtomStateMap.get(atom);\n      committedAtomStateMap.set(atom, atomState);\n      if (!pendingMap.has(atom)) {\n        pendingMap.set(atom, prevAtomState);\n      }\n    }\n  };\n  const createReadDependencies = (version, prevReadDependencies = /* @__PURE__ */ new Map(), dependencies) => {\n    if (!dependencies) {\n      return prevReadDependencies;\n    }\n    const readDependencies = /* @__PURE__ */ new Map();\n    let changed = false;\n    dependencies.forEach((atom) => {\n      var _a;\n      const revision = ((_a = getAtomState(version, atom)) == null ? void 0 : _a.r) || 0;\n      readDependencies.set(atom, revision);\n      if (prevReadDependencies.get(atom) !== revision) {\n        changed = true;\n      }\n    });\n    if (prevReadDependencies.size === readDependencies.size && !changed) {\n      return prevReadDependencies;\n    }\n    return readDependencies;\n  };\n  const setAtomValue = (version, atom, value, dependencies, suspensePromise) => {\n    const atomState = getAtomState(version, atom);\n    if (atomState) {\n      if (suspensePromise && (!("p" in atomState) || !isEqualSuspensePromise(atomState.p, suspensePromise))) {\n        return atomState;\n      }\n      if ("p" in atomState) {\n        cancelSuspensePromise(atomState.p);\n      }\n    }\n    const nextAtomState = {\n      v: value,\n      r: (atomState == null ? void 0 : atomState.r) || 0,\n      y: true,\n      // not invalidated\n      d: createReadDependencies(version, atomState == null ? void 0 : atomState.d, dependencies)\n    };\n    let changed = !(atomState == null ? void 0 : atomState.y);\n    if (!atomState || !("v" in atomState) || // new value, or\n    !Object.is(atomState.v, value)) {\n      changed = true;\n      ++nextAtomState.r;\n      if (nextAtomState.d.has(atom)) {\n        nextAtomState.d = new Map(nextAtomState.d).set(atom, nextAtomState.r);\n      }\n    } else if (nextAtomState.d !== atomState.d && (nextAtomState.d.size !== atomState.d.size || !Array.from(nextAtomState.d.keys()).every((a) => atomState.d.has(a)))) {\n      changed = true;\n      Promise.resolve().then(() => {\n        flushPending(version);\n      });\n    }\n    if (atomState && !changed) {\n      return atomState;\n    }\n    setAtomState(version, atom, nextAtomState);\n    return nextAtomState;\n  };\n  const setAtomReadError = (version, atom, error, dependencies, suspensePromise) => {\n    const atomState = getAtomState(version, atom);\n    if (atomState) {\n      if (suspensePromise && (!("p" in atomState) || !isEqualSuspensePromise(atomState.p, suspensePromise))) {\n        return atomState;\n      }\n      if ("p" in atomState) {\n        cancelSuspensePromise(atomState.p);\n      }\n    }\n    const nextAtomState = {\n      e: error,\n      // set read error\n      r: ((atomState == null ? void 0 : atomState.r) || 0) + 1,\n      y: true,\n      // not invalidated\n      d: createReadDependencies(version, atomState == null ? void 0 : atomState.d, dependencies)\n    };\n    setAtomState(version, atom, nextAtomState);\n    return nextAtomState;\n  };\n  const setAtomSuspensePromise = (version, atom, suspensePromise, dependencies) => {\n    const atomState = getAtomState(version, atom);\n    if (atomState && "p" in atomState) {\n      if (isEqualSuspensePromise(atomState.p, suspensePromise) && !isSuspensePromiseAlreadyCancelled(atomState.p)) {\n        if (!atomState.y) {\n          return { ...atomState, y: true };\n        }\n        return atomState;\n      }\n      cancelSuspensePromise(atomState.p);\n    }\n    addSuspensePromiseToCache(version, atom, suspensePromise);\n    const nextAtomState = {\n      p: suspensePromise,\n      r: ((atomState == null ? void 0 : atomState.r) || 0) + 1,\n      y: true,\n      // not invalidated\n      d: createReadDependencies(version, atomState == null ? void 0 : atomState.d, dependencies)\n    };\n    setAtomState(version, atom, nextAtomState);\n    return nextAtomState;\n  };\n  const setAtomPromiseOrValue = (version, atom, promiseOrValue, dependencies) => {\n    if (promiseOrValue instanceof Promise) {\n      const suspensePromise = createSuspensePromise(\n        promiseOrValue,\n        promiseOrValue.then((value) => {\n          setAtomValue(version, atom, value, dependencies, suspensePromise);\n        }).catch((e) => {\n          if (e instanceof Promise) {\n            if (isSuspensePromise(e)) {\n              return e.then(() => {\n                readAtomState(version, atom, true);\n              });\n            }\n            return e;\n          }\n          setAtomReadError(version, atom, e, dependencies, suspensePromise);\n        })\n      );\n      return setAtomSuspensePromise(\n        version,\n        atom,\n        suspensePromise,\n        dependencies\n      );\n    }\n    return setAtomValue(\n      version,\n      atom,\n      promiseOrValue,\n      dependencies\n    );\n  };\n  const setAtomInvalidated = (version, atom) => {\n    const atomState = getAtomState(version, atom);\n    if (atomState) {\n      const nextAtomState = {\n        ...atomState,\n        // copy everything\n        y: false\n        // invalidated\n      };\n      setAtomState(version, atom, nextAtomState);\n    } else if (true) {\n      console.warn("[Bug] could not invalidate non existing atom", atom);\n    }\n  };\n  const readAtomState = (version, atom, force) => {\n    if (!force) {\n      const atomState = getAtomState(version, atom);\n      if (atomState) {\n        if (atomState.y && // not invalidated\n        "p" in atomState && !isSuspensePromiseAlreadyCancelled(atomState.p)) {\n          return atomState;\n        }\n        atomState.d.forEach((_, a) => {\n          if (a !== atom) {\n            if (!mountedMap.has(a)) {\n              readAtomState(version, a);\n            } else {\n              const aState = getAtomState(version, a);\n              if (aState && !aState.y) {\n                readAtomState(version, a);\n              }\n            }\n          }\n        });\n        if (Array.from(atomState.d).every(([a, r]) => {\n          const aState = getAtomState(version, a);\n          return aState && !("p" in aState) && // has no suspense promise\n          aState.r === r;\n        })) {\n          if (!atomState.y) {\n            return { ...atomState, y: true };\n          }\n          return atomState;\n        }\n      }\n    }\n    const dependencies = /* @__PURE__ */ new Set();\n    try {\n      const promiseOrValue = atom.read((a) => {\n        dependencies.add(a);\n        const aState = a === atom ? getAtomState(version, a) : readAtomState(version, a);\n        if (aState) {\n          if ("e" in aState) {\n            throw aState.e;\n          }\n          if ("p" in aState) {\n            throw aState.p;\n          }\n          return aState.v;\n        }\n        if (hasInitialValue(a)) {\n          return a.init;\n        }\n        throw new Error("no atom init");\n      });\n      return setAtomPromiseOrValue(version, atom, promiseOrValue, dependencies);\n    } catch (errorOrPromise) {\n      if (errorOrPromise instanceof Promise) {\n        const suspensePromise = isSuspensePromise(errorOrPromise) && isSuspensePromiseAlreadyCancelled(errorOrPromise) ? copySuspensePromise(errorOrPromise) : createSuspensePromise(errorOrPromise, errorOrPromise);\n        return setAtomSuspensePromise(\n          version,\n          atom,\n          suspensePromise,\n          dependencies\n        );\n      }\n      return setAtomReadError(version, atom, errorOrPromise, dependencies);\n    }\n  };\n  const readAtom = (readingAtom, version) => {\n    const atomState = readAtomState(version, readingAtom);\n    return atomState;\n  };\n  const addAtom = (version, addingAtom) => {\n    let mounted = mountedMap.get(addingAtom);\n    if (!mounted) {\n      mounted = mountAtom(version, addingAtom);\n    }\n    return mounted;\n  };\n  const canUnmountAtom = (atom, mounted) => !mounted.l.size && (!mounted.t.size || mounted.t.size === 1 && mounted.t.has(atom));\n  const delAtom = (version, deletingAtom) => {\n    const mounted = mountedMap.get(deletingAtom);\n    if (mounted && canUnmountAtom(deletingAtom, mounted)) {\n      unmountAtom(version, deletingAtom);\n    }\n  };\n  const invalidateDependents = (version, atom) => {\n    const mounted = mountedMap.get(atom);\n    mounted == null ? void 0 : mounted.t.forEach((dependent) => {\n      if (dependent !== atom) {\n        setAtomInvalidated(version, dependent);\n        invalidateDependents(version, dependent);\n      }\n    });\n  };\n  const writeAtomState = (version, atom, update) => {\n    let isSync = true;\n    const writeGetter = (a, options) => {\n      const aState = readAtomState(version, a);\n      if ("e" in aState) {\n        throw aState.e;\n      }\n      if ("p" in aState) {\n        if (options == null ? void 0 : options.unstable_promise) {\n          return aState.p.then(() => {\n            const s = getAtomState(version, a);\n            if (s && "p" in s && s.p === aState.p) {\n              return new Promise((resolve) => setTimeout(resolve)).then(\n                () => writeGetter(a, options)\n              );\n            }\n            return writeGetter(a, options);\n          });\n        }\n        if (true) {\n          console.info(\n            "Reading pending atom state in write operation. We throw a promise for now.",\n            a\n          );\n        }\n        throw aState.p;\n      }\n      if ("v" in aState) {\n        return aState.v;\n      }\n      if (true) {\n        console.warn(\n          "[Bug] no value found while reading atom in write operation. This is probably a bug.",\n          a\n        );\n      }\n      throw new Error("no value found");\n    };\n    const setter = (a, v) => {\n      let promiseOrVoid2;\n      if (a === atom) {\n        if (!hasInitialValue(a)) {\n          throw new Error("atom not writable");\n        }\n        const versionSet = cancelAllSuspensePromiseInCache(a);\n        versionSet.forEach((cancelledVersion) => {\n          if (cancelledVersion !== version) {\n            setAtomPromiseOrValue(cancelledVersion, a, v);\n          }\n        });\n        const prevAtomState = getAtomState(version, a);\n        const nextAtomState = setAtomPromiseOrValue(version, a, v);\n        if (prevAtomState !== nextAtomState) {\n          invalidateDependents(version, a);\n        }\n      } else {\n        promiseOrVoid2 = writeAtomState(version, a, v);\n      }\n      if (!isSync) {\n        flushPending(version);\n      }\n      return promiseOrVoid2;\n    };\n    const promiseOrVoid = atom.write(writeGetter, setter, update);\n    isSync = false;\n    return promiseOrVoid;\n  };\n  const writeAtom = (writingAtom, update, version) => {\n    const promiseOrVoid = writeAtomState(version, writingAtom, update);\n    flushPending(version);\n    return promiseOrVoid;\n  };\n  const isActuallyWritableAtom = (atom) => !!atom.write;\n  const mountAtom = (version, atom, initialDependent) => {\n    const mounted = {\n      t: new Set(initialDependent && [initialDependent]),\n      l: /* @__PURE__ */ new Set()\n    };\n    mountedMap.set(atom, mounted);\n    if (true) {\n      mountedAtoms.add(atom);\n    }\n    const atomState = readAtomState(void 0, atom);\n    atomState.d.forEach((_, a) => {\n      const aMounted = mountedMap.get(a);\n      if (aMounted) {\n        aMounted.t.add(atom);\n      } else {\n        if (a !== atom) {\n          mountAtom(version, a, atom);\n        }\n      }\n    });\n    if (isActuallyWritableAtom(atom) && atom.onMount) {\n      const setAtom = (update) => writeAtom(atom, update, version);\n      const onUnmount = atom.onMount(setAtom);\n      version = void 0;\n      if (onUnmount) {\n        mounted.u = onUnmount;\n      }\n    }\n    return mounted;\n  };\n  const unmountAtom = (version, atom) => {\n    var _a;\n    const onUnmount = (_a = mountedMap.get(atom)) == null ? void 0 : _a.u;\n    if (onUnmount) {\n      onUnmount();\n    }\n    mountedMap.delete(atom);\n    if (true) {\n      mountedAtoms.delete(atom);\n    }\n    const atomState = getAtomState(version, atom);\n    if (atomState) {\n      if ("p" in atomState) {\n        cancelSuspensePromise(atomState.p);\n      }\n      atomState.d.forEach((_, a) => {\n        if (a !== atom) {\n          const mounted = mountedMap.get(a);\n          if (mounted) {\n            mounted.t.delete(atom);\n            if (canUnmountAtom(a, mounted)) {\n              unmountAtom(version, a);\n            }\n          }\n        }\n      });\n    } else if (true) {\n      console.warn("[Bug] could not find atom state to unmount", atom);\n    }\n  };\n  const mountDependencies = (version, atom, atomState, prevReadDependencies) => {\n    const dependencies = new Set(atomState.d.keys());\n    prevReadDependencies == null ? void 0 : prevReadDependencies.forEach((_, a) => {\n      if (dependencies.has(a)) {\n        dependencies.delete(a);\n        return;\n      }\n      const mounted = mountedMap.get(a);\n      if (mounted) {\n        mounted.t.delete(atom);\n        if (canUnmountAtom(a, mounted)) {\n          unmountAtom(version, a);\n        }\n      }\n    });\n    dependencies.forEach((a) => {\n      const mounted = mountedMap.get(a);\n      if (mounted) {\n        mounted.t.add(atom);\n      } else if (mountedMap.has(atom)) {\n        mountAtom(version, a, atom);\n      }\n    });\n  };\n  const flushPending = (version) => {\n    if (version) {\n      const versionedAtomStateMap = getVersionedAtomStateMap(version);\n      versionedAtomStateMap.forEach((atomState, atom) => {\n        const committedAtomState = committedAtomStateMap.get(atom);\n        if (atomState !== committedAtomState) {\n          const mounted = mountedMap.get(atom);\n          mounted == null ? void 0 : mounted.l.forEach((listener) => listener(version));\n        }\n      });\n      return;\n    }\n    while (pendingMap.size) {\n      const pending = Array.from(pendingMap);\n      pendingMap.clear();\n      pending.forEach(([atom, prevAtomState]) => {\n        const atomState = getAtomState(void 0, atom);\n        if (atomState && atomState.d !== (prevAtomState == null ? void 0 : prevAtomState.d)) {\n          mountDependencies(void 0, atom, atomState, prevAtomState == null ? void 0 : prevAtomState.d);\n        }\n        if (prevAtomState && !prevAtomState.y && // invalidated\n        (atomState == null ? void 0 : atomState.y)) {\n          return;\n        }\n        const mounted = mountedMap.get(atom);\n        mounted == null ? void 0 : mounted.l.forEach((listener) => listener());\n      });\n    }\n    if (true) {\n      stateListeners.forEach((l) => l());\n    }\n  };\n  const commitVersionedAtomStateMap = (version) => {\n    const versionedAtomStateMap = getVersionedAtomStateMap(version);\n    versionedAtomStateMap.forEach((atomState, atom) => {\n      const prevAtomState = committedAtomStateMap.get(atom);\n      if (!prevAtomState || atomState.r > prevAtomState.r || atomState.y !== prevAtomState.y || atomState.r === prevAtomState.r && atomState.d !== prevAtomState.d) {\n        committedAtomStateMap.set(atom, atomState);\n        if (atomState.d !== (prevAtomState == null ? void 0 : prevAtomState.d)) {\n          mountDependencies(version, atom, atomState, prevAtomState == null ? void 0 : prevAtomState.d);\n        }\n      }\n    });\n  };\n  const commitAtom = (_atom, version) => {\n    if (version) {\n      commitVersionedAtomStateMap(version);\n    }\n    flushPending(void 0);\n  };\n  const subscribeAtom = (atom, callback, version) => {\n    const mounted = addAtom(version, atom);\n    const listeners = mounted.l;\n    listeners.add(callback);\n    return () => {\n      listeners.delete(callback);\n      delAtom(version, atom);\n    };\n  };\n  const restoreAtoms = (values, version) => {\n    for (const [atom, value] of values) {\n      if (hasInitialValue(atom)) {\n        setAtomPromiseOrValue(version, atom, value);\n        invalidateDependents(version, atom);\n      }\n    }\n    flushPending(version);\n  };\n  if (true) {\n    return {\n      [READ_ATOM]: readAtom,\n      [WRITE_ATOM]: writeAtom,\n      [COMMIT_ATOM]: commitAtom,\n      [SUBSCRIBE_ATOM]: subscribeAtom,\n      [RESTORE_ATOMS]: restoreAtoms,\n      [DEV_SUBSCRIBE_STATE]: (l) => {\n        stateListeners.add(l);\n        return () => {\n          stateListeners.delete(l);\n        };\n      },\n      [DEV_GET_MOUNTED_ATOMS]: () => mountedAtoms.values(),\n      [DEV_GET_ATOM_STATE]: (a) => committedAtomStateMap.get(a),\n      [DEV_GET_MOUNTED]: (a) => mountedMap.get(a)\n    };\n  }\n  return {\n    [READ_ATOM]: readAtom,\n    [WRITE_ATOM]: writeAtom,\n    [COMMIT_ATOM]: commitAtom,\n    [SUBSCRIBE_ATOM]: subscribeAtom,\n    [RESTORE_ATOMS]: restoreAtoms\n  };\n};\nconst createStoreForExport = (initialValues) => {\n  const store = createStore(initialValues);\n  const get = (atom) => {\n    const atomState = store[READ_ATOM](atom);\n    if ("e" in atomState) {\n      throw atomState.e;\n    }\n    if ("p" in atomState) {\n      return void 0;\n    }\n    return atomState.v;\n  };\n  const asyncGet = (atom) => new Promise((resolve, reject) => {\n    const atomState = store[READ_ATOM](atom);\n    if ("e" in atomState) {\n      reject(atomState.e);\n    } else if ("p" in atomState) {\n      resolve(atomState.p.then(() => asyncGet(atom)));\n    } else {\n      resolve(atomState.v);\n    }\n  });\n  const set = (atom, update) => store[WRITE_ATOM](atom, update);\n  const sub = (atom, callback) => store[SUBSCRIBE_ATOM](atom, callback);\n  return {\n    get,\n    asyncGet,\n    set,\n    sub,\n    SECRET_INTERNAL_store: store\n  };\n};\n\nconst createScopeContainer = (initialValues, unstable_createStore) => {\n  const store = unstable_createStore ? unstable_createStore(initialValues).SECRET_INTERNAL_store : createStore(initialValues);\n  return { s: store };\n};\nconst ScopeContextMap = /* @__PURE__ */ new Map();\nconst getScopeContext = (scope) => {\n  if (!ScopeContextMap.has(scope)) {\n    ScopeContextMap.set(scope, (0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(createScopeContainer()));\n  }\n  return ScopeContextMap.get(scope);\n};\n\nconst Provider = ({\n  children,\n  initialValues,\n  scope,\n  unstable_createStore,\n  unstable_enableVersionedWrite\n}) => {\n  const [version, setVersion] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({});\n  (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n    const scopeContainer = scopeContainerRef.current;\n    if (scopeContainer.w) {\n      scopeContainer.s[COMMIT_ATOM](null, version);\n      delete version.p;\n      scopeContainer.v = version;\n    }\n  }, [version]);\n  const scopeContainerRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)();\n  if (!scopeContainerRef.current) {\n    const scopeContainer = createScopeContainer(\n      initialValues,\n      unstable_createStore\n    );\n    if (unstable_enableVersionedWrite) {\n      let retrying = 0;\n      scopeContainer.w = (write) => {\n        setVersion((parentVersion) => {\n          const nextVersion = retrying ? parentVersion : { p: parentVersion };\n          write(nextVersion);\n          return nextVersion;\n        });\n      };\n      scopeContainer.v = version;\n      scopeContainer.r = (fn) => {\n        ++retrying;\n        fn();\n        --retrying;\n      };\n    }\n    scopeContainerRef.current = scopeContainer;\n  }\n  const ScopeContainerContext = getScopeContext(scope);\n  return (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(\n    ScopeContainerContext.Provider,\n    {\n      value: scopeContainerRef.current\n    },\n    children\n  );\n};\n\nfunction atom(read, write) {\n  return (0,jotai_vanilla__WEBPACK_IMPORTED_MODULE_1__.atom)(read, write);\n}\n\nfunction useAtomValue(atom, scope) {\n  const ScopeContext = getScopeContext(scope);\n  const scopeContainer = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(ScopeContext);\n  const { s: store, v: versionFromProvider } = scopeContainer;\n  const getAtomValue = (version2) => {\n    const atomState = store[READ_ATOM](atom, version2);\n    if ( true && !atomState.y) {\n      throw new Error("should not be invalidated");\n    }\n    if ("e" in atomState) {\n      throw atomState.e;\n    }\n    if ("p" in atomState) {\n      throw atomState.p;\n    }\n    if ("v" in atomState) {\n      return atomState.v;\n    }\n    throw new Error("no atom value");\n  };\n  const [[version, valueFromReducer, atomFromReducer], rerenderIfChanged] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useReducer)(\n    (prev, nextVersion) => {\n      const nextValue = getAtomValue(nextVersion);\n      if (Object.is(prev[1], nextValue) && prev[2] === atom) {\n        return prev;\n      }\n      return [nextVersion, nextValue, atom];\n    },\n    versionFromProvider,\n    (initialVersion) => {\n      const initialValue = getAtomValue(initialVersion);\n      return [initialVersion, initialValue, atom];\n    }\n  );\n  let value = valueFromReducer;\n  if (atomFromReducer !== atom) {\n    rerenderIfChanged(version);\n    value = getAtomValue(version);\n  }\n  (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n    const { v: versionFromProvider2 } = scopeContainer;\n    if (versionFromProvider2) {\n      store[COMMIT_ATOM](atom, versionFromProvider2);\n    }\n    const unsubscribe = store[SUBSCRIBE_ATOM](\n      atom,\n      rerenderIfChanged,\n      versionFromProvider2\n    );\n    rerenderIfChanged(versionFromProvider2);\n    return unsubscribe;\n  }, [store, atom, scopeContainer]);\n  (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n    store[COMMIT_ATOM](atom, version);\n  });\n  (0,react__WEBPACK_IMPORTED_MODULE_0__.useDebugValue)(value);\n  return value;\n}\n\nfunction useSetAtom(atom, scope) {\n  const ScopeContext = getScopeContext(scope);\n  const { s: store, w: versionedWrite } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(ScopeContext);\n  const setAtom = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(\n    (update) => {\n      if ( true && !("write" in atom)) {\n        throw new Error("not writable atom");\n      }\n      const write = (version) => store[WRITE_ATOM](atom, update, version);\n      return versionedWrite ? versionedWrite(write) : write();\n    },\n    [store, versionedWrite, atom]\n  );\n  return setAtom;\n}\n\nfunction useAtom(atom, scope) {\n  if ("scope" in atom) {\n    console.warn(\n      "atom.scope is deprecated. Please do useAtom(atom, scope) instead."\n    );\n    scope = atom.scope;\n  }\n  return [\n    useAtomValue(atom, scope),\n    // We do wrong type assertion here, which results in throwing an error.\n    useSetAtom(atom, scope)\n  ];\n}\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 44852 characters]\n//# sourceURL=webpack-internal:///../../../node_modules/jotai/esm/index.mjs\n');
              }
            ),
            /***/
            "../../../node_modules/jotai/esm/vanilla.mjs": (
              /*!***************************************************!*\
                !*** ../../../node_modules/jotai/esm/vanilla.mjs ***!
                \***************************************************/
              /***/
              (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "atom": () => (/* binding */ atom),\n/* harmony export */   "createStore": () => (/* binding */ createStore),\n/* harmony export */   "getDefaultStore": () => (/* binding */ getDefaultStore)\n/* harmony export */ });\nlet keyCount = 0;\nfunction atom(read, write) {\n  const key = `atom${++keyCount}`;\n  const config = {\n    toString: () => key\n  };\n  if (typeof read === "function") {\n    config.read = read;\n  } else {\n    config.init = read;\n    config.read = (get) => get(config);\n    config.write = (get, set, arg) => set(\n      config,\n      typeof arg === "function" ? arg(get(config)) : arg\n    );\n  }\n  if (write) {\n    config.write = write;\n  }\n  return config;\n}\n\nconst hasInitialValue = (atom) => "init" in atom;\nconst isActuallyWritableAtom = (atom) => !!atom.write;\nconst cancelPromiseMap = /* @__PURE__ */ new WeakMap();\nconst registerCancelPromise = (promise, cancel) => {\n  cancelPromiseMap.set(promise, cancel);\n  promise.catch(() => {\n  }).finally(() => cancelPromiseMap.delete(promise));\n};\nconst cancelPromise = (promise, next) => {\n  const cancel = cancelPromiseMap.get(promise);\n  if (cancel) {\n    cancelPromiseMap.delete(promise);\n    cancel(next);\n  }\n};\nconst resolvePromise = (promise, value) => {\n  promise.status = "fulfilled";\n  promise.value = value;\n};\nconst rejectPromise = (promise, e) => {\n  promise.status = "rejected";\n  promise.reason = e;\n};\nconst isEqualAtomValue = (a, b) => "v" in a && "v" in b && Object.is(a.v, b.v);\nconst isEqualAtomError = (a, b) => "e" in a && "e" in b && Object.is(a.e, b.e);\nconst hasPromiseAtomValue = (a) => "v" in a && a.v instanceof Promise;\nconst returnAtomValue = (atomState) => {\n  if ("e" in atomState) {\n    throw atomState.e;\n  }\n  return atomState.v;\n};\nconst createStore = () => {\n  const atomStateMap = /* @__PURE__ */ new WeakMap();\n  const mountedMap = /* @__PURE__ */ new WeakMap();\n  const pendingMap = /* @__PURE__ */ new Map();\n  let stateListeners;\n  let mountedAtoms;\n  if (true) {\n    stateListeners = /* @__PURE__ */ new Set();\n    mountedAtoms = /* @__PURE__ */ new Set();\n  }\n  const getAtomState = (atom) => atomStateMap.get(atom);\n  const setAtomState = (atom, atomState) => {\n    if (true) {\n      Object.freeze(atomState);\n    }\n    const prevAtomState = atomStateMap.get(atom);\n    atomStateMap.set(atom, atomState);\n    if (!pendingMap.has(atom)) {\n      pendingMap.set(atom, prevAtomState);\n    }\n    if (prevAtomState && hasPromiseAtomValue(prevAtomState)) {\n      const next = "v" in atomState ? atomState.v instanceof Promise ? atomState.v : Promise.resolve(atomState.v) : Promise.reject(atomState.e);\n      cancelPromise(prevAtomState.v, next);\n    }\n  };\n  const updateDependencies = (atom, nextAtomState, depSet) => {\n    const dependencies = /* @__PURE__ */ new Map();\n    let changed = false;\n    depSet.forEach((a) => {\n      const aState = a === atom ? nextAtomState : getAtomState(a);\n      if (aState) {\n        dependencies.set(a, aState);\n        if (nextAtomState.d.get(a) !== aState) {\n          changed = true;\n        }\n      } else if (true) {\n        console.warn("[Bug] atom state not found");\n      }\n    });\n    if (changed || nextAtomState.d.size !== dependencies.size) {\n      nextAtomState.d = dependencies;\n    }\n  };\n  const setAtomValue = (atom, value, depSet) => {\n    const prevAtomState = getAtomState(atom);\n    const nextAtomState = {\n      d: (prevAtomState == null ? void 0 : prevAtomState.d) || /* @__PURE__ */ new Map(),\n      v: value\n    };\n    if (depSet) {\n      updateDependencies(atom, nextAtomState, depSet);\n    }\n    if (prevAtomState && isEqualAtomValue(prevAtomState, nextAtomState) && prevAtomState.d === nextAtomState.d) {\n      return prevAtomState;\n    }\n    setAtomState(atom, nextAtomState);\n    return nextAtomState;\n  };\n  const setAtomError = (atom, error, depSet) => {\n    const prevAtomState = getAtomState(atom);\n    const nextAtomState = {\n      d: (prevAtomState == null ? void 0 : prevAtomState.d) || /* @__PURE__ */ new Map(),\n      e: error\n    };\n    if (depSet) {\n      updateDependencies(atom, nextAtomState, depSet);\n    }\n    if (prevAtomState && isEqualAtomError(prevAtomState, nextAtomState) && prevAtomState.d === nextAtomState.d) {\n      return prevAtomState;\n    }\n    setAtomState(atom, nextAtomState);\n    return nextAtomState;\n  };\n  const readAtomState = (atom) => {\n    const atomState = getAtomState(atom);\n    if (atomState) {\n      atomState.d.forEach((_, a) => {\n        if (a !== atom && !mountedMap.has(a)) {\n          readAtomState(a);\n        }\n      });\n      if (Array.from(atomState.d).every(\n        ([a, s]) => a === atom || getAtomState(a) === s\n      )) {\n        return atomState;\n      }\n    }\n    const depSet = /* @__PURE__ */ new Set();\n    let isSync = true;\n    const getter = (a) => {\n      depSet.add(a);\n      if (a === atom) {\n        const aState2 = getAtomState(a);\n        if (aState2) {\n          return returnAtomValue(aState2);\n        }\n        if (hasInitialValue(a)) {\n          return a.init;\n        }\n        throw new Error("no atom init");\n      }\n      const aState = readAtomState(a);\n      return returnAtomValue(aState);\n    };\n    let controller;\n    let setSelf;\n    const options = {\n      get signal() {\n        if (!controller) {\n          controller = new AbortController();\n        }\n        return controller.signal;\n      },\n      get setSelf() {\n        if ( true && !isActuallyWritableAtom(atom)) {\n          console.warn("setSelf function cannot be used with read-only atom");\n        }\n        if (!setSelf && isActuallyWritableAtom(atom)) {\n          setSelf = (...args) => {\n            if ( true && isSync) {\n              console.warn("setSelf function cannot be called in sync");\n            }\n            if (!isSync) {\n              return writeAtom(atom, ...args);\n            }\n          };\n        }\n        return setSelf;\n      }\n    };\n    try {\n      const value = atom.read(getter, options);\n      if (value instanceof Promise) {\n        let continuePromise;\n        const promise = new Promise((resolve, reject) => {\n          let settled = false;\n          value.then(\n            (v) => {\n              if (!settled) {\n                resolvePromise(promise, v);\n                resolve(v);\n              }\n            },\n            (e) => {\n              if (!settled) {\n                rejectPromise(promise, e);\n                reject(e);\n              }\n            }\n          ).finally(() => {\n            if (!settled) {\n              settled = true;\n              setAtomValue(atom, promise, depSet);\n            }\n          });\n          continuePromise = (next) => {\n            if (!settled) {\n              settled = true;\n              next.then(\n                (v) => resolvePromise(promise, v),\n                (e) => rejectPromise(promise, e)\n              );\n              resolve(next);\n            }\n          };\n        });\n        promise.status = "pending";\n        registerCancelPromise(promise, (next) => {\n          if (next) {\n            continuePromise(next);\n          }\n          controller == null ? void 0 : controller.abort();\n        });\n        return setAtomValue(atom, promise, depSet);\n      }\n      return setAtomValue(atom, value, depSet);\n    } catch (error) {\n      return setAtomError(atom, error, depSet);\n    } finally {\n      isSync = false;\n    }\n  };\n  const readAtom = (atom) => returnAtomValue(readAtomState(atom));\n  const addAtom = (atom) => {\n    let mounted = mountedMap.get(atom);\n    if (!mounted) {\n      mounted = mountAtom(atom);\n    }\n    return mounted;\n  };\n  const canUnmountAtom = (atom, mounted) => !mounted.l.size && (!mounted.t.size || mounted.t.size === 1 && mounted.t.has(atom));\n  const delAtom = (atom) => {\n    const mounted = mountedMap.get(atom);\n    if (mounted && canUnmountAtom(atom, mounted)) {\n      unmountAtom(atom);\n    }\n  };\n  const recomputeDependents = (atom) => {\n    const mounted = mountedMap.get(atom);\n    mounted == null ? void 0 : mounted.t.forEach((dependent) => {\n      if (dependent !== atom) {\n        const prevAtomState = getAtomState(dependent);\n        const nextAtomState = readAtomState(dependent);\n        if (!prevAtomState || !isEqualAtomValue(prevAtomState, nextAtomState)) {\n          recomputeDependents(dependent);\n        }\n      }\n    });\n  };\n  const writeAtomState = (atom, ...args) => {\n    let isSync = true;\n    const getter = (a) => returnAtomValue(readAtomState(a));\n    const setter = (a, ...args2) => {\n      let r;\n      if (a === atom) {\n        if (!hasInitialValue(a)) {\n          throw new Error("atom not writable");\n        }\n        const prevAtomState = getAtomState(a);\n        const nextAtomState = setAtomValue(a, args2[0]);\n        if (!prevAtomState || !isEqualAtomValue(prevAtomState, nextAtomState)) {\n          recomputeDependents(a);\n        }\n      } else {\n        r = writeAtomState(a, ...args2);\n      }\n      if (!isSync) {\n        flushPending();\n      }\n      return r;\n    };\n    const result = atom.write(getter, setter, ...args);\n    isSync = false;\n    return result;\n  };\n  const writeAtom = (atom, ...args) => {\n    const result = writeAtomState(atom, ...args);\n    flushPending();\n    return result;\n  };\n  const mountAtom = (atom, initialDependent) => {\n    const mounted = {\n      t: new Set(initialDependent && [initialDependent]),\n      l: /* @__PURE__ */ new Set()\n    };\n    mountedMap.set(atom, mounted);\n    if (true) {\n      mountedAtoms.add(atom);\n    }\n    readAtomState(atom).d.forEach((_, a) => {\n      const aMounted = mountedMap.get(a);\n      if (aMounted) {\n        aMounted.t.add(atom);\n      } else {\n        if (a !== atom) {\n          mountAtom(a, atom);\n        }\n      }\n    });\n    readAtomState(atom);\n    if (isActuallyWritableAtom(atom) && atom.onMount) {\n      const onUnmount = atom.onMount((...args) => writeAtom(atom, ...args));\n      if (onUnmount) {\n        mounted.u = onUnmount;\n      }\n    }\n    return mounted;\n  };\n  const unmountAtom = (atom) => {\n    var _a;\n    const onUnmount = (_a = mountedMap.get(atom)) == null ? void 0 : _a.u;\n    if (onUnmount) {\n      onUnmount();\n    }\n    mountedMap.delete(atom);\n    if (true) {\n      mountedAtoms.delete(atom);\n    }\n    const atomState = getAtomState(atom);\n    if (atomState) {\n      if (hasPromiseAtomValue(atomState)) {\n        cancelPromise(atomState.v);\n      }\n      atomState.d.forEach((_, a) => {\n        if (a !== atom) {\n          const mounted = mountedMap.get(a);\n          if (mounted) {\n            mounted.t.delete(atom);\n            if (canUnmountAtom(a, mounted)) {\n              unmountAtom(a);\n            }\n          }\n        }\n      });\n    } else if (true) {\n      console.warn("[Bug] could not find atom state to unmount", atom);\n    }\n  };\n  const mountDependencies = (atom, atomState, prevDependencies) => {\n    const depSet = new Set(atomState.d.keys());\n    prevDependencies == null ? void 0 : prevDependencies.forEach((_, a) => {\n      if (depSet.has(a)) {\n        depSet.delete(a);\n        return;\n      }\n      const mounted = mountedMap.get(a);\n      if (mounted) {\n        mounted.t.delete(atom);\n        if (canUnmountAtom(a, mounted)) {\n          unmountAtom(a);\n        }\n      }\n    });\n    depSet.forEach((a) => {\n      const mounted = mountedMap.get(a);\n      if (mounted) {\n        mounted.t.add(atom);\n      } else if (mountedMap.has(atom)) {\n        mountAtom(a, atom);\n      }\n    });\n  };\n  const flushPending = () => {\n    while (pendingMap.size) {\n      const pending = Array.from(pendingMap);\n      pendingMap.clear();\n      pending.forEach(([atom, prevAtomState]) => {\n        const atomState = getAtomState(atom);\n        if (atomState) {\n          if (atomState.d !== (prevAtomState == null ? void 0 : prevAtomState.d)) {\n            mountDependencies(atom, atomState, prevAtomState == null ? void 0 : prevAtomState.d);\n          }\n          const mounted = mountedMap.get(atom);\n          if (mounted && !// TODO This seems pretty hacky. Hope to fix it.\n          // Maybe we could `mountDependencies` in `setAtomState`?\n          (prevAtomState && !hasPromiseAtomValue(prevAtomState) && (isEqualAtomValue(prevAtomState, atomState) || isEqualAtomError(prevAtomState, atomState)))) {\n            mounted.l.forEach((listener) => listener());\n          }\n        } else if (true) {\n          console.warn("[Bug] no atom state to flush");\n        }\n      });\n    }\n    if (true) {\n      stateListeners.forEach((l) => l());\n    }\n  };\n  const subscribeAtom = (atom, listener) => {\n    const mounted = addAtom(atom);\n    flushPending();\n    const listeners = mounted.l;\n    listeners.add(listener);\n    return () => {\n      listeners.delete(listener);\n      delAtom(atom);\n    };\n  };\n  if (true) {\n    return {\n      get: readAtom,\n      set: writeAtom,\n      sub: subscribeAtom,\n      // store dev methods (these are tentative and subject to change)\n      dev_subscribe_state: (l) => {\n        stateListeners.add(l);\n        return () => {\n          stateListeners.delete(l);\n        };\n      },\n      dev_get_mounted_atoms: () => mountedAtoms.values(),\n      dev_get_atom_state: (a) => atomStateMap.get(a),\n      dev_get_mounted: (a) => mountedMap.get(a),\n      dev_restore_atoms: (values) => {\n        for (const [atom, value] of values) {\n          if (hasInitialValue(atom)) {\n            setAtomValue(atom, value);\n            recomputeDependents(atom);\n          }\n        }\n        flushPending();\n      }\n    };\n  }\n  return {\n    get: readAtom,\n    set: writeAtom,\n    sub: subscribeAtom\n  };\n};\nlet defaultStore;\nconst getDefaultStore = () => {\n  if (!defaultStore) {\n    defaultStore = createStore();\n  }\n  return defaultStore;\n};\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,[encoded data, 23136 characters]\n//# sourceURL=webpack-internal:///../../../node_modules/jotai/esm/vanilla.mjs\n');
              }
            ),
            /***/
            "../../../node_modules/nanoid/index.browser.js": (
              /*!*****************************************************!*\
                !*** ../../../node_modules/nanoid/index.browser.js ***!
                \*****************************************************/
              /***/
              (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "customAlphabet": () => (/* binding */ customAlphabet),
/* harmony export */   "customRandom": () => (/* binding */ customRandom),
/* harmony export */   "nanoid": () => (/* binding */ nanoid),
/* harmony export */   "random": () => (/* binding */ random),
/* harmony export */   "urlAlphabet": () => (/* reexport safe */ _url_alphabet_index_js__WEBPACK_IMPORTED_MODULE_0__.urlAlphabet)
/* harmony export */ });
/* harmony import */ var _url_alphabet_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./url-alphabet/index.js */ "../../../node_modules/nanoid/url-alphabet/index.js");

let random = bytes => crypto.getRandomValues(new Uint8Array(bytes))
let customRandom = (alphabet, defaultSize, getRandom) => {
  let mask = (2 << (Math.log(alphabet.length - 1) / Math.LN2)) - 1
  let step = -~((1.6 * mask * defaultSize) / alphabet.length)
  return (size = defaultSize) => {
    let id = ''
    while (true) {
      let bytes = getRandom(step)
      let j = step
      while (j--) {
        id += alphabet[bytes[j] & mask] || ''
        if (id.length === size) return id
      }
    }
  }
}
let customAlphabet = (alphabet, size = 21) =>
  customRandom(alphabet, size, random)
let nanoid = (size = 21) =>
  crypto.getRandomValues(new Uint8Array(size)).reduce((id, byte) => {
    byte &= 63
    if (byte < 36) {
      id += byte.toString(36)
    } else if (byte < 62) {
      id += (byte - 26).toString(36).toUpperCase()
    } else if (byte > 62) {
      id += '-'
    } else {
      id += '_'
    }
    return id
  }, '')

//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL25hbm9pZC9pbmRleC5icm93c2VyLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFxRDtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0EsTUFBTTtBQUNOO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDaUUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL25hbm9pZC9pbmRleC5icm93c2VyLmpzPzc0NWMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXJsQWxwaGFiZXQgfSBmcm9tICcuL3VybC1hbHBoYWJldC9pbmRleC5qcydcbmxldCByYW5kb20gPSBieXRlcyA9PiBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50OEFycmF5KGJ5dGVzKSlcbmxldCBjdXN0b21SYW5kb20gPSAoYWxwaGFiZXQsIGRlZmF1bHRTaXplLCBnZXRSYW5kb20pID0+IHtcbiAgbGV0IG1hc2sgPSAoMiA8PCAoTWF0aC5sb2coYWxwaGFiZXQubGVuZ3RoIC0gMSkgLyBNYXRoLkxOMikpIC0gMVxuICBsZXQgc3RlcCA9IC1+KCgxLjYgKiBtYXNrICogZGVmYXVsdFNpemUpIC8gYWxwaGFiZXQubGVuZ3RoKVxuICByZXR1cm4gKHNpemUgPSBkZWZhdWx0U2l6ZSkgPT4ge1xuICAgIGxldCBpZCA9ICcnXG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIGxldCBieXRlcyA9IGdldFJhbmRvbShzdGVwKVxuICAgICAgbGV0IGogPSBzdGVwXG4gICAgICB3aGlsZSAoai0tKSB7XG4gICAgICAgIGlkICs9IGFscGhhYmV0W2J5dGVzW2pdICYgbWFza10gfHwgJydcbiAgICAgICAgaWYgKGlkLmxlbmd0aCA9PT0gc2l6ZSkgcmV0dXJuIGlkXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5sZXQgY3VzdG9tQWxwaGFiZXQgPSAoYWxwaGFiZXQsIHNpemUgPSAyMSkgPT5cbiAgY3VzdG9tUmFuZG9tKGFscGhhYmV0LCBzaXplLCByYW5kb20pXG5sZXQgbmFub2lkID0gKHNpemUgPSAyMSkgPT5cbiAgY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgVWludDhBcnJheShzaXplKSkucmVkdWNlKChpZCwgYnl0ZSkgPT4ge1xuICAgIGJ5dGUgJj0gNjNcbiAgICBpZiAoYnl0ZSA8IDM2KSB7XG4gICAgICBpZCArPSBieXRlLnRvU3RyaW5nKDM2KVxuICAgIH0gZWxzZSBpZiAoYnl0ZSA8IDYyKSB7XG4gICAgICBpZCArPSAoYnl0ZSAtIDI2KS50b1N0cmluZygzNikudG9VcHBlckNhc2UoKVxuICAgIH0gZWxzZSBpZiAoYnl0ZSA+IDYyKSB7XG4gICAgICBpZCArPSAnLSdcbiAgICB9IGVsc2Uge1xuICAgICAgaWQgKz0gJ18nXG4gICAgfVxuICAgIHJldHVybiBpZFxuICB9LCAnJylcbmV4cG9ydCB7IG5hbm9pZCwgY3VzdG9tQWxwaGFiZXQsIGN1c3RvbVJhbmRvbSwgdXJsQWxwaGFiZXQsIHJhbmRvbSB9XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=
//# sourceURL=webpack-internal:///../../../node_modules/nanoid/index.browser.js
`);
              }
            ),
            /***/
            "../../../node_modules/nanoid/url-alphabet/index.js": (
              /*!**********************************************************!*\
                !*** ../../../node_modules/nanoid/url-alphabet/index.js ***!
                \**********************************************************/
              /***/
              (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval(`__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "urlAlphabet": () => (/* binding */ urlAlphabet)
/* harmony export */ });
let urlAlphabet =
  'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'

//# sourceURL=[module]
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL25hbm9pZC91cmwtYWxwaGFiZXQvaW5kZXguanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDc0IiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL25hbm9pZC91cmwtYWxwaGFiZXQvaW5kZXguanM/ODRkMCJdLCJzb3VyY2VzQ29udGVudCI6WyJsZXQgdXJsQWxwaGFiZXQgPVxuICAndXNlYW5kb20tMjZUMTk4MzQwUFg3NXB4SkFDS1ZFUllNSU5EQlVTSFdPTEZfR1FaYmZnaGprbHF2d3l6cmljdCdcbmV4cG9ydCB7IHVybEFscGhhYmV0IH1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==
//# sourceURL=webpack-internal:///../../../node_modules/nanoid/url-alphabet/index.js
`);
              }
            ),
            /***/
            "../../../node_modules/zustand/esm/index.mjs": (
              /*!***************************************************!*\
                !*** ../../../node_modules/zustand/esm/index.mjs ***!
                \***************************************************/
              /***/
              (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "create": () => (/* binding */ create),\n/* harmony export */   "createStore": () => (/* reexport safe */ zustand_vanilla__WEBPACK_IMPORTED_MODULE_0__.createStore),\n/* harmony export */   "default": () => (/* binding */ react),\n/* harmony export */   "useStore": () => (/* binding */ useStore)\n/* harmony export */ });\n/* harmony import */ var zustand_vanilla__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! zustand/vanilla */ "../../../node_modules/zustand/esm/vanilla.mjs");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");\n/* harmony import */ var use_sync_external_store_shim_with_selector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! use-sync-external-store/shim/with-selector.js */ "../../../node_modules/use-sync-external-store/shim/with-selector.js");\n\n\n\n\n\nconst { useSyncExternalStoreWithSelector } = use_sync_external_store_shim_with_selector_js__WEBPACK_IMPORTED_MODULE_2__;\nfunction useStore(api, selector = api.getState, equalityFn) {\n  const slice = useSyncExternalStoreWithSelector(\n    api.subscribe,\n    api.getState,\n    api.getServerState || api.getState,\n    selector,\n    equalityFn\n  );\n  (0,react__WEBPACK_IMPORTED_MODULE_1__.useDebugValue)(slice);\n  return slice;\n}\nconst createImpl = (createState) => {\n  if ( true && typeof createState !== "function") {\n    console.warn(\n      "[DEPRECATED] Passing a vanilla store will be unsupported in a future version. Instead use `import { useStore } from \'zustand\'`."\n    );\n  }\n  const api = typeof createState === "function" ? (0,zustand_vanilla__WEBPACK_IMPORTED_MODULE_0__.createStore)(createState) : createState;\n  const useBoundStore = (selector, equalityFn) => useStore(api, selector, equalityFn);\n  Object.assign(useBoundStore, api);\n  return useBoundStore;\n};\nconst create = (createState) => createState ? createImpl(createState) : createImpl;\nvar react = (createState) => {\n  if (true) {\n    console.warn(\n      "[DEPRECATED] Default export is deprecated. Instead use `import { create } from \'zustand\'`."\n    );\n  }\n  return create(createState);\n};\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3p1c3RhbmQvZXNtL2luZGV4Lm1qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQThDO0FBQ2Q7QUFDTTtBQUNrRDs7QUFFeEYsUUFBUSxtQ0FBbUMsRUFBRSwwRUFBMkI7QUFDeEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsb0RBQWE7QUFDZjtBQUNBO0FBQ0E7QUFDQSxNQUFNLEtBQTBEO0FBQ2hFO0FBQ0EsMkdBQTJHLFdBQVc7QUFDdEg7QUFDQTtBQUNBLGtEQUFrRCw0REFBVztBQUM3RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLElBQTBEO0FBQ2hFO0FBQ0Esd0VBQXdFLFNBQVM7QUFDakY7QUFDQTtBQUNBO0FBQ0E7O0FBRThDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy96dXN0YW5kL2VzbS9pbmRleC5tanM/ZWI3MiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVTdG9yZSB9IGZyb20gJ3p1c3RhbmQvdmFuaWxsYSc7XG5leHBvcnQgKiBmcm9tICd6dXN0YW5kL3ZhbmlsbGEnO1xuaW1wb3J0IHsgdXNlRGVidWdWYWx1ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VTeW5jRXh0ZXJuYWxTdG9yZUV4cG9ydHMgZnJvbSAndXNlLXN5bmMtZXh0ZXJuYWwtc3RvcmUvc2hpbS93aXRoLXNlbGVjdG9yLmpzJztcblxuY29uc3QgeyB1c2VTeW5jRXh0ZXJuYWxTdG9yZVdpdGhTZWxlY3RvciB9ID0gdXNlU3luY0V4dGVybmFsU3RvcmVFeHBvcnRzO1xuZnVuY3Rpb24gdXNlU3RvcmUoYXBpLCBzZWxlY3RvciA9IGFwaS5nZXRTdGF0ZSwgZXF1YWxpdHlGbikge1xuICBjb25zdCBzbGljZSA9IHVzZVN5bmNFeHRlcm5hbFN0b3JlV2l0aFNlbGVjdG9yKFxuICAgIGFwaS5zdWJzY3JpYmUsXG4gICAgYXBpLmdldFN0YXRlLFxuICAgIGFwaS5nZXRTZXJ2ZXJTdGF0ZSB8fCBhcGkuZ2V0U3RhdGUsXG4gICAgc2VsZWN0b3IsXG4gICAgZXF1YWxpdHlGblxuICApO1xuICB1c2VEZWJ1Z1ZhbHVlKHNsaWNlKTtcbiAgcmV0dXJuIHNsaWNlO1xufVxuY29uc3QgY3JlYXRlSW1wbCA9IChjcmVhdGVTdGF0ZSkgPT4ge1xuICBpZiAoKGltcG9ydC5tZXRhLmVudiAmJiBpbXBvcnQubWV0YS5lbnYuTU9ERSkgIT09IFwicHJvZHVjdGlvblwiICYmIHR5cGVvZiBjcmVhdGVTdGF0ZSAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgY29uc29sZS53YXJuKFxuICAgICAgXCJbREVQUkVDQVRFRF0gUGFzc2luZyBhIHZhbmlsbGEgc3RvcmUgd2lsbCBiZSB1bnN1cHBvcnRlZCBpbiBhIGZ1dHVyZSB2ZXJzaW9uLiBJbnN0ZWFkIHVzZSBgaW1wb3J0IHsgdXNlU3RvcmUgfSBmcm9tICd6dXN0YW5kJ2AuXCJcbiAgICApO1xuICB9XG4gIGNvbnN0IGFwaSA9IHR5cGVvZiBjcmVhdGVTdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gY3JlYXRlU3RvcmUoY3JlYXRlU3RhdGUpIDogY3JlYXRlU3RhdGU7XG4gIGNvbnN0IHVzZUJvdW5kU3RvcmUgPSAoc2VsZWN0b3IsIGVxdWFsaXR5Rm4pID0+IHVzZVN0b3JlKGFwaSwgc2VsZWN0b3IsIGVxdWFsaXR5Rm4pO1xuICBPYmplY3QuYXNzaWduKHVzZUJvdW5kU3RvcmUsIGFwaSk7XG4gIHJldHVybiB1c2VCb3VuZFN0b3JlO1xufTtcbmNvbnN0IGNyZWF0ZSA9IChjcmVhdGVTdGF0ZSkgPT4gY3JlYXRlU3RhdGUgPyBjcmVhdGVJbXBsKGNyZWF0ZVN0YXRlKSA6IGNyZWF0ZUltcGw7XG52YXIgcmVhY3QgPSAoY3JlYXRlU3RhdGUpID0+IHtcbiAgaWYgKChpbXBvcnQubWV0YS5lbnYgJiYgaW1wb3J0Lm1ldGEuZW52Lk1PREUpICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgIGNvbnNvbGUud2FybihcbiAgICAgIFwiW0RFUFJFQ0FURURdIERlZmF1bHQgZXhwb3J0IGlzIGRlcHJlY2F0ZWQuIEluc3RlYWQgdXNlIGBpbXBvcnQgeyBjcmVhdGUgfSBmcm9tICd6dXN0YW5kJ2AuXCJcbiAgICApO1xuICB9XG4gIHJldHVybiBjcmVhdGUoY3JlYXRlU3RhdGUpO1xufTtcblxuZXhwb3J0IHsgY3JlYXRlLCByZWFjdCBhcyBkZWZhdWx0LCB1c2VTdG9yZSB9O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/zustand/esm/index.mjs\n');
              }
            ),
            /***/
            "../../../node_modules/zustand/esm/vanilla.mjs": (
              /*!*****************************************************!*\
                !*** ../../../node_modules/zustand/esm/vanilla.mjs ***!
                \*****************************************************/
              /***/
              (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "createStore": () => (/* binding */ createStore),\n/* harmony export */   "default": () => (/* binding */ vanilla)\n/* harmony export */ });\nconst createStoreImpl = (createState) => {\n  let state;\n  const listeners = /* @__PURE__ */ new Set();\n  const setState = (partial, replace) => {\n    const nextState = typeof partial === "function" ? partial(state) : partial;\n    if (!Object.is(nextState, state)) {\n      const previousState = state;\n      state = (replace != null ? replace : typeof nextState !== "object") ? nextState : Object.assign({}, state, nextState);\n      listeners.forEach((listener) => listener(state, previousState));\n    }\n  };\n  const getState = () => state;\n  const subscribe = (listener) => {\n    listeners.add(listener);\n    return () => listeners.delete(listener);\n  };\n  const destroy = () => {\n    if (true) {\n      console.warn(\n        "[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected."\n      );\n    }\n    listeners.clear();\n  };\n  const api = { setState, getState, subscribe, destroy };\n  state = createState(setState, getState, api);\n  return api;\n};\nconst createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl;\nvar vanilla = (createState) => {\n  if (true) {\n    console.warn(\n      "[DEPRECATED] Default export is deprecated. Instead use import { createStore } from \'zustand/vanilla\'."\n    );\n  }\n  return createStore(createState);\n};\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3p1c3RhbmQvZXNtL3ZhbmlsbGEubWpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3R0FBd0c7QUFDeEc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxJQUEwRDtBQUNsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sSUFBMEQ7QUFDaEU7QUFDQSx1RUFBdUUsY0FBYztBQUNyRjtBQUNBO0FBQ0E7QUFDQTs7QUFFMkMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3p1c3RhbmQvZXNtL3ZhbmlsbGEubWpzP2M1NGYiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgY3JlYXRlU3RvcmVJbXBsID0gKGNyZWF0ZVN0YXRlKSA9PiB7XG4gIGxldCBzdGF0ZTtcbiAgY29uc3QgbGlzdGVuZXJzID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKTtcbiAgY29uc3Qgc2V0U3RhdGUgPSAocGFydGlhbCwgcmVwbGFjZSkgPT4ge1xuICAgIGNvbnN0IG5leHRTdGF0ZSA9IHR5cGVvZiBwYXJ0aWFsID09PSBcImZ1bmN0aW9uXCIgPyBwYXJ0aWFsKHN0YXRlKSA6IHBhcnRpYWw7XG4gICAgaWYgKCFPYmplY3QuaXMobmV4dFN0YXRlLCBzdGF0ZSkpIHtcbiAgICAgIGNvbnN0IHByZXZpb3VzU3RhdGUgPSBzdGF0ZTtcbiAgICAgIHN0YXRlID0gKHJlcGxhY2UgIT0gbnVsbCA/IHJlcGxhY2UgOiB0eXBlb2YgbmV4dFN0YXRlICE9PSBcIm9iamVjdFwiKSA/IG5leHRTdGF0ZSA6IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLCBuZXh0U3RhdGUpO1xuICAgICAgbGlzdGVuZXJzLmZvckVhY2goKGxpc3RlbmVyKSA9PiBsaXN0ZW5lcihzdGF0ZSwgcHJldmlvdXNTdGF0ZSkpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgZ2V0U3RhdGUgPSAoKSA9PiBzdGF0ZTtcbiAgY29uc3Qgc3Vic2NyaWJlID0gKGxpc3RlbmVyKSA9PiB7XG4gICAgbGlzdGVuZXJzLmFkZChsaXN0ZW5lcik7XG4gICAgcmV0dXJuICgpID0+IGxpc3RlbmVycy5kZWxldGUobGlzdGVuZXIpO1xuICB9O1xuICBjb25zdCBkZXN0cm95ID0gKCkgPT4ge1xuICAgIGlmICgoaW1wb3J0Lm1ldGEuZW52ICYmIGltcG9ydC5tZXRhLmVudi5NT0RFKSAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgXCJbREVQUkVDQVRFRF0gVGhlIGBkZXN0cm95YCBtZXRob2Qgd2lsbCBiZSB1bnN1cHBvcnRlZCBpbiBhIGZ1dHVyZSB2ZXJzaW9uLiBJbnN0ZWFkIHVzZSB1bnN1YnNjcmliZSBmdW5jdGlvbiByZXR1cm5lZCBieSBzdWJzY3JpYmUuIEV2ZXJ5dGhpbmcgd2lsbCBiZSBnYXJiYWdlLWNvbGxlY3RlZCBpZiBzdG9yZSBpcyBnYXJiYWdlLWNvbGxlY3RlZC5cIlxuICAgICAgKTtcbiAgICB9XG4gICAgbGlzdGVuZXJzLmNsZWFyKCk7XG4gIH07XG4gIGNvbnN0IGFwaSA9IHsgc2V0U3RhdGUsIGdldFN0YXRlLCBzdWJzY3JpYmUsIGRlc3Ryb3kgfTtcbiAgc3RhdGUgPSBjcmVhdGVTdGF0ZShzZXRTdGF0ZSwgZ2V0U3RhdGUsIGFwaSk7XG4gIHJldHVybiBhcGk7XG59O1xuY29uc3QgY3JlYXRlU3RvcmUgPSAoY3JlYXRlU3RhdGUpID0+IGNyZWF0ZVN0YXRlID8gY3JlYXRlU3RvcmVJbXBsKGNyZWF0ZVN0YXRlKSA6IGNyZWF0ZVN0b3JlSW1wbDtcbnZhciB2YW5pbGxhID0gKGNyZWF0ZVN0YXRlKSA9PiB7XG4gIGlmICgoaW1wb3J0Lm1ldGEuZW52ICYmIGltcG9ydC5tZXRhLmVudi5NT0RFKSAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICBjb25zb2xlLndhcm4oXG4gICAgICBcIltERVBSRUNBVEVEXSBEZWZhdWx0IGV4cG9ydCBpcyBkZXByZWNhdGVkLiBJbnN0ZWFkIHVzZSBpbXBvcnQgeyBjcmVhdGVTdG9yZSB9IGZyb20gJ3p1c3RhbmQvdmFuaWxsYScuXCJcbiAgICApO1xuICB9XG4gIHJldHVybiBjcmVhdGVTdG9yZShjcmVhdGVTdGF0ZSk7XG59O1xuXG5leHBvcnQgeyBjcmVhdGVTdG9yZSwgdmFuaWxsYSBhcyBkZWZhdWx0IH07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/zustand/esm/vanilla.mjs\n');
              }
            ),
            /***/
            "../../../node_modules/browser-fs-access/dist/index.mjs": (
              /*!**************************************************************!*\
                !*** ../../../node_modules/browser-fs-access/dist/index.mjs ***!
                \**************************************************************/
              /***/
              (__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
                "use strict";
                eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   "directoryOpen": () => (/* binding */ r),\n/* harmony export */   "fileOpen": () => (/* binding */ n),\n/* harmony export */   "fileSave": () => (/* binding */ s),\n/* harmony export */   "supported": () => (/* binding */ e)\n/* harmony export */ });\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator["throw"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\nconst e = (() => {\n  if ("undefined" == typeof self) return !1;\n  if ("top" in self && self !== top) try {\n    top;\n  } catch (e) {\n    return !1;\n  } else if ("showOpenFilePicker" in self) return "showOpenFilePicker";\n  return !1;\n})(),\n      t = e ? __webpack_require__.e(/*! import() */ "vendor").then(__webpack_require__.bind(__webpack_require__, /*! ./file-open-002ab408.js */ "../../../node_modules/browser-fs-access/dist/file-open-002ab408.js")) : __webpack_require__.e(/*! import() */ "vendor").then(__webpack_require__.bind(__webpack_require__, /*! ./file-open-7c801643.js */ "../../../node_modules/browser-fs-access/dist/file-open-7c801643.js"));\n\nfunction n(...e) {\n  return __awaiter(this, void 0, void 0, function* () {\n    return (yield t).default(...e);\n  });\n}\n\nconst i = e ? __webpack_require__.e(/*! import() */ "vendor").then(__webpack_require__.bind(__webpack_require__, /*! ./directory-open-4ed118d0.js */ "../../../node_modules/browser-fs-access/dist/directory-open-4ed118d0.js")) : __webpack_require__.e(/*! import() */ "vendor").then(__webpack_require__.bind(__webpack_require__, /*! ./directory-open-01563666.js */ "../../../node_modules/browser-fs-access/dist/directory-open-01563666.js"));\n\nfunction r(...e) {\n  return __awaiter(this, void 0, void 0, function* () {\n    return (yield i).default(...e);\n  });\n}\n\nconst o = e ? __webpack_require__.e(/*! import() */ "vendor").then(__webpack_require__.bind(__webpack_require__, /*! ./file-save-745eba88.js */ "../../../node_modules/browser-fs-access/dist/file-save-745eba88.js")) : __webpack_require__.e(/*! import() */ "vendor").then(__webpack_require__.bind(__webpack_require__, /*! ./file-save-3189631c.js */ "../../../node_modules/browser-fs-access/dist/file-save-3189631c.js"));\n\nfunction s(...e) {\n  return __awaiter(this, void 0, void 0, function* () {\n    return (yield o).default(...e);\n  });\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Jyb3dzZXItZnMtYWNjZXNzL2Rpc3QvaW5kZXgubWpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxnQkFBZ0IsU0FBSSxJQUFJLFNBQUk7QUFDNUI7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBLElBQUk7QUFDSjtBQUNBLENBQUM7QUFDRCxjQUFjLHdNQUFpQyxHQUFHLHdNQUFpQzs7QUFFbkY7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBLGNBQWMsa05BQXNDLEdBQUcsa05BQXNDOztBQUU3RjtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUEsY0FBYyx3TUFBaUMsR0FBRyx3TUFBaUM7O0FBRW5GO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYnJvd3Nlci1mcy1hY2Nlc3MvZGlzdC9pbmRleC5tanM/ZDJiYSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19hd2FpdGVyID0gdGhpcyAmJiB0aGlzLl9fYXdhaXRlciB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAgIHJlc29sdmUodmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7XG4gICAgICB0cnkge1xuICAgICAgICBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJlamVjdChlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZWplY3QoZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHtcbiAgICAgIHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpO1xuICAgIH1cblxuICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgfSk7XG59O1xuXG5jb25zdCBlID0gKCgpID0+IHtcbiAgaWYgKFwidW5kZWZpbmVkXCIgPT0gdHlwZW9mIHNlbGYpIHJldHVybiAhMTtcbiAgaWYgKFwidG9wXCIgaW4gc2VsZiAmJiBzZWxmICE9PSB0b3ApIHRyeSB7XG4gICAgdG9wO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuICExO1xuICB9IGVsc2UgaWYgKFwic2hvd09wZW5GaWxlUGlja2VyXCIgaW4gc2VsZikgcmV0dXJuIFwic2hvd09wZW5GaWxlUGlja2VyXCI7XG4gIHJldHVybiAhMTtcbn0pKCksXG4gICAgICB0ID0gZSA/IGltcG9ydChcIi4vZmlsZS1vcGVuLTAwMmFiNDA4LmpzXCIpIDogaW1wb3J0KFwiLi9maWxlLW9wZW4tN2M4MDE2NDMuanNcIik7XG5cbmZ1bmN0aW9uIG4oLi4uZSkge1xuICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgIHJldHVybiAoeWllbGQgdCkuZGVmYXVsdCguLi5lKTtcbiAgfSk7XG59XG5cbmNvbnN0IGkgPSBlID8gaW1wb3J0KFwiLi9kaXJlY3Rvcnktb3Blbi00ZWQxMThkMC5qc1wiKSA6IGltcG9ydChcIi4vZGlyZWN0b3J5LW9wZW4tMDE1NjM2NjYuanNcIik7XG5cbmZ1bmN0aW9uIHIoLi4uZSkge1xuICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgIHJldHVybiAoeWllbGQgaSkuZGVmYXVsdCguLi5lKTtcbiAgfSk7XG59XG5cbmNvbnN0IG8gPSBlID8gaW1wb3J0KFwiLi9maWxlLXNhdmUtNzQ1ZWJhODguanNcIikgOiBpbXBvcnQoXCIuL2ZpbGUtc2F2ZS0zMTg5NjMxYy5qc1wiKTtcblxuZnVuY3Rpb24gcyguLi5lKSB7XG4gIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgcmV0dXJuICh5aWVsZCBvKS5kZWZhdWx0KC4uLmUpO1xuICB9KTtcbn1cblxuZXhwb3J0IHsgciBhcyBkaXJlY3RvcnlPcGVuLCBuIGFzIGZpbGVPcGVuLCBzIGFzIGZpbGVTYXZlLCBlIGFzIHN1cHBvcnRlZCB9OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/browser-fs-access/dist/index.mjs\n');
              }
            ),
            /***/
            "../../../node_modules/open-color/open-color.json": (
              /*!********************************************************!*\
                !*** ../../../node_modules/open-color/open-color.json ***!
                \********************************************************/
              /***/
              (module2) => {
                "use strict";
                module2.exports = JSON.parse('{"white":"#ffffff","black":"#000000","gray":["#f8f9fa","#f1f3f5","#e9ecef","#dee2e6","#ced4da","#adb5bd","#868e96","#495057","#343a40","#212529"],"red":["#fff5f5","#ffe3e3","#ffc9c9","#ffa8a8","#ff8787","#ff6b6b","#fa5252","#f03e3e","#e03131","#c92a2a"],"pink":["#fff0f6","#ffdeeb","#fcc2d7","#faa2c1","#f783ac","#f06595","#e64980","#d6336c","#c2255c","#a61e4d"],"grape":["#f8f0fc","#f3d9fa","#eebefa","#e599f7","#da77f2","#cc5de8","#be4bdb","#ae3ec9","#9c36b5","#862e9c"],"violet":["#f3f0ff","#e5dbff","#d0bfff","#b197fc","#9775fa","#845ef7","#7950f2","#7048e8","#6741d9","#5f3dc4"],"indigo":["#edf2ff","#dbe4ff","#bac8ff","#91a7ff","#748ffc","#5c7cfa","#4c6ef5","#4263eb","#3b5bdb","#364fc7"],"blue":["#e7f5ff","#d0ebff","#a5d8ff","#74c0fc","#4dabf7","#339af0","#228be6","#1c7ed6","#1971c2","#1864ab"],"cyan":["#e3fafc","#c5f6fa","#99e9f2","#66d9e8","#3bc9db","#22b8cf","#15aabf","#1098ad","#0c8599","#0b7285"],"teal":["#e6fcf5","#c3fae8","#96f2d7","#63e6be","#38d9a9","#20c997","#12b886","#0ca678","#099268","#087f5b"],"green":["#ebfbee","#d3f9d8","#b2f2bb","#8ce99a","#69db7c","#51cf66","#40c057","#37b24d","#2f9e44","#2b8a3e"],"lime":["#f4fce3","#e9fac8","#d8f5a2","#c0eb75","#a9e34b","#94d82d","#82c91e","#74b816","#66a80f","#5c940d"],"yellow":["#fff9db","#fff3bf","#ffec99","#ffe066","#ffd43b","#fcc419","#fab005","#f59f00","#f08c00","#e67700"],"orange":["#fff4e6","#ffe8cc","#ffd8a8","#ffc078","#ffa94d","#ff922b","#fd7e14","#f76707","#e8590c","#d9480f"]}');
              }
            ),
            /***/
            "../../locales/en.json": (
              /*!*****************************!*\
                !*** ../../locales/en.json ***!
                \*****************************/
              /***/
              (module2) => {
                "use strict";
                module2.exports = JSON.parse(`{"labels":{"paste":"Paste","pasteAsPlaintext":"Paste as plaintext","pasteCharts":"Paste charts","selectAll":"Select all","multiSelect":"Add element to selection","moveCanvas":"Move canvas","cut":"Cut","copy":"Copy","copyAsPng":"Copy to clipboard as PNG","copyAsSvg":"Copy to clipboard as SVG","copyText":"Copy to clipboard as text","bringForward":"Bring forward","sendToBack":"Send to back","bringToFront":"Bring to front","sendBackward":"Send backward","delete":"Delete","copyStyles":"Copy styles","pasteStyles":"Paste styles","stroke":"Stroke","background":"Background","fill":"Fill","strokeWidth":"Stroke width","strokeStyle":"Stroke style","strokeStyle_solid":"Solid","strokeStyle_dashed":"Dashed","strokeStyle_dotted":"Dotted","sloppiness":"Sloppiness","opacity":"Opacity","textAlign":"Text align","edges":"Edges","sharp":"Sharp","round":"Round","arrowheads":"Arrowheads","arrowhead_none":"None","arrowhead_arrow":"Arrow","arrowhead_bar":"Bar","arrowhead_dot":"Dot","arrowhead_triangle":"Triangle","fontSize":"Font size","fontFamily":"Font family","addWatermark":"Add \\"Made with Excalidraw\\"","handDrawn":"Hand-drawn","normal":"Normal","code":"Code","small":"Small","medium":"Medium","large":"Large","veryLarge":"Very large","solid":"Solid","hachure":"Hachure","zigzag":"Zigzag","crossHatch":"Cross-hatch","thin":"Thin","bold":"Bold","left":"Left","center":"Center","right":"Right","extraBold":"Extra bold","architect":"Architect","artist":"Artist","cartoonist":"Cartoonist","fileTitle":"File name","colorPicker":"Color picker","canvasColors":"Used on canvas","canvasBackground":"Canvas background","drawingCanvas":"Drawing canvas","layers":"Layers","actions":"Actions","language":"Language","liveCollaboration":"Live collaboration...","duplicateSelection":"Duplicate","untitled":"Untitled","name":"Name","yourName":"Your name","madeWithExcalidraw":"Made with Excalidraw","group":"Group selection","ungroup":"Ungroup selection","collaborators":"Collaborators","showGrid":"Show grid","addToLibrary":"Add to library","removeFromLibrary":"Remove from library","libraryLoadingMessage":"Loading library\u2026","libraries":"Browse libraries","loadingScene":"Loading scene\u2026","align":"Align","alignTop":"Align top","alignBottom":"Align bottom","alignLeft":"Align left","alignRight":"Align right","centerVertically":"Center vertically","centerHorizontally":"Center horizontally","distributeHorizontally":"Distribute horizontally","distributeVertically":"Distribute vertically","flipHorizontal":"Flip horizontal","flipVertical":"Flip vertical","viewMode":"View mode","share":"Share","showStroke":"Show stroke color picker","showBackground":"Show background color picker","toggleTheme":"Toggle theme","personalLib":"Personal Library","excalidrawLib":"Excalidraw Library","decreaseFontSize":"Decrease font size","increaseFontSize":"Increase font size","unbindText":"Unbind text","bindText":"Bind text to the container","createContainerFromText":"Wrap text in a container","link":{"edit":"Edit link","editEmbed":"Edit link & embed","create":"Create link","createEmbed":"Create link & embed","label":"Link","labelEmbed":"Link & embed","empty":"No link is set"},"lineEditor":{"edit":"Edit line","exit":"Exit line editor"},"elementLock":{"lock":"Lock","unlock":"Unlock","lockAll":"Lock all","unlockAll":"Unlock all"},"statusPublished":"Published","sidebarLock":"Keep sidebar open","selectAllElementsInFrame":"Select all elements in frame","removeAllElementsFromFrame":"Remove all elements from frame","eyeDropper":"Pick color from canvas"},"library":{"noItems":"No items added yet...","hint_emptyLibrary":"Select an item on canvas to add it here, or install a library from the public repository, below.","hint_emptyPrivateLibrary":"Select an item on canvas to add it here."},"buttons":{"clearReset":"Reset the canvas","exportJSON":"Export to file","exportImage":"Export image...","export":"Save to...","copyToClipboard":"Copy to clipboard","save":"Save to current file","saveAs":"Save as","load":"Open","getShareableLink":"Get shareable link","close":"Close","selectLanguage":"Select language","scrollBackToContent":"Scroll back to content","zoomIn":"Zoom in","zoomOut":"Zoom out","resetZoom":"Reset zoom","menu":"Menu","done":"Done","edit":"Edit","undo":"Undo","redo":"Redo","resetLibrary":"Reset library","createNewRoom":"Create new room","fullScreen":"Full screen","darkMode":"Dark mode","lightMode":"Light mode","zenMode":"Zen mode","objectsSnapMode":"Snap to objects","exitZenMode":"Exit zen mode","cancel":"Cancel","clear":"Clear","remove":"Remove","embed":"Toggle embedding","publishLibrary":"Publish","submit":"Submit","confirm":"Confirm","embeddableInteractionButton":"Click to interact"},"alerts":{"clearReset":"This will clear the whole canvas. Are you sure?","couldNotCreateShareableLink":"Couldn't create shareable link.","couldNotCreateShareableLinkTooBig":"Couldn't create shareable link: the scene is too big","couldNotLoadInvalidFile":"Couldn't load invalid file","importBackendFailed":"Importing from backend failed.","cannotExportEmptyCanvas":"Cannot export empty canvas.","couldNotCopyToClipboard":"Couldn't copy to clipboard.","decryptFailed":"Couldn't decrypt data.","uploadedSecurly":"The upload has been secured with end-to-end encryption, which means that Excalidraw server and third parties can't read the content.","loadSceneOverridePrompt":"Loading external drawing will replace your existing content. Do you wish to continue?","collabStopOverridePrompt":"Stopping the session will overwrite your previous, locally stored drawing. Are you sure?\\n\\n(If you want to keep your local drawing, simply close the browser tab instead.)","errorAddingToLibrary":"Couldn't add item to the library","errorRemovingFromLibrary":"Couldn't remove item from the library","confirmAddLibrary":"This will add {{numShapes}} shape(s) to your library. Are you sure?","imageDoesNotContainScene":"This image does not seem to contain any scene data. Have you enabled scene embedding during export?","cannotRestoreFromImage":"Scene couldn't be restored from this image file","invalidSceneUrl":"Couldn't import scene from the supplied URL. It's either malformed, or doesn't contain valid Excalidraw JSON data.","resetLibrary":"This will clear your library. Are you sure?","removeItemsFromsLibrary":"Delete {{count}} item(s) from library?","invalidEncryptionKey":"Encryption key must be of 22 characters. Live collaboration is disabled.","collabOfflineWarning":"No internet connection available.\\nYour changes will not be saved!"},"errors":{"unsupportedFileType":"Unsupported file type.","imageInsertError":"Couldn't insert image. Try again later...","fileTooBig":"File is too big. Maximum allowed size is {{maxSize}}.","svgImageInsertError":"Couldn't insert SVG image. The SVG markup looks invalid.","failedToFetchImage":"Failed to fetch image.","invalidSVGString":"Invalid SVG.","cannotResolveCollabServer":"Couldn't connect to the collab server. Please reload the page and try again.","importLibraryError":"Couldn't load library","collabSaveFailed":"Couldn't save to the backend database. If problems persist, you should save your file locally to ensure you don't lose your work.","collabSaveFailed_sizeExceeded":"Couldn't save to the backend database, the canvas seems to be too big. You should save the file locally to ensure you don't lose your work.","imageToolNotSupported":"Images are disabled.","brave_measure_text_error":{"line1":"Looks like you are using Brave browser with the <bold>Aggressively Block Fingerprinting</bold> setting enabled.","line2":"This could result in breaking the <bold>Text Elements</bold> in your drawings.","line3":"We strongly recommend disabling this setting. You can follow <link>these steps</link> on how to do so.","line4":"If disabling this setting doesn't fix the display of text elements, please open an <issueLink>issue</issueLink> on our GitHub, or write us on <discordLink>Discord</discordLink>"},"libraryElementTypeError":{"embeddable":"Embeddable elements cannot be added to the library.","image":"Support for adding images to the library coming soon!"},"asyncPasteFailedOnRead":"Couldn't paste (couldn't read from system clipboard).","asyncPasteFailedOnParse":"Couldn't paste.","copyToSystemClipboardFailed":"Couldn't copy to clipboard."},"toolBar":{"selection":"Selection","image":"Insert image","rectangle":"Rectangle","diamond":"Diamond","ellipse":"Ellipse","arrow":"Arrow","line":"Line","freedraw":"Draw","text":"Text","library":"Library","lock":"Keep selected tool active after drawing","penMode":"Pen mode - prevent touch","link":"Add/ Update link for a selected shape","eraser":"Eraser","frame":"Frame tool","embeddable":"Web Embed","laser":"Laser pointer","hand":"Hand (panning tool)","extraTools":"More tools","mermaidToExcalidraw":"Mermaid to Excalidraw"},"headings":{"canvasActions":"Canvas actions","selectedShapeActions":"Selected shape actions","shapes":"Shapes"},"hints":{"canvasPanning":"To move canvas, hold mouse wheel or spacebar while dragging, or use the hand tool","linearElement":"Click to start multiple points, drag for single line","freeDraw":"Click and drag, release when you're finished","text":"Tip: you can also add text by double-clicking anywhere with the selection tool","embeddable":"Click-drag to create a website embed","text_selected":"Double-click or press ENTER to edit text","text_editing":"Press Escape or CtrlOrCmd+ENTER to finish editing","linearElementMulti":"Click on last point or press Escape or Enter to finish","lockAngle":"You can constrain angle by holding SHIFT","resize":"You can constrain proportions by holding SHIFT while resizing,\\nhold ALT to resize from the center","resizeImage":"You can resize freely by holding SHIFT,\\nhold ALT to resize from the center","rotate":"You can constrain angles by holding SHIFT while rotating","lineEditor_info":"Hold CtrlOrCmd and Double-click or press CtrlOrCmd + Enter to edit points","lineEditor_pointSelected":"Press Delete to remove point(s),\\nCtrlOrCmd+D to duplicate, or drag to move","lineEditor_nothingSelected":"Select a point to edit (hold SHIFT to select multiple),\\nor hold Alt and click to add new points","placeImage":"Click to place the image, or click and drag to set its size manually","publishLibrary":"Publish your own library","bindTextToElement":"Press enter to add text","deepBoxSelect":"Hold CtrlOrCmd to deep select, and to prevent dragging","eraserRevert":"Hold Alt to revert the elements marked for deletion","firefox_clipboard_write":"This feature can likely be enabled by setting the \\"dom.events.asyncClipboard.clipboardItem\\" flag to \\"true\\". To change the browser flags in Firefox, visit the \\"about:config\\" page.","disableSnapping":"Hold CtrlOrCmd to disable snapping"},"canvasError":{"cannotShowPreview":"Cannot show preview","canvasTooBig":"The canvas may be too big.","canvasTooBigTip":"Tip: try moving the farthest elements a bit closer together."},"errorSplash":{"headingMain":"Encountered an error. Try <button>reloading the page</button>.","clearCanvasMessage":"If reloading doesn't work, try <button>clearing the canvas</button>.","clearCanvasCaveat":" This will result in loss of work ","trackedToSentry":"The error with identifier {{eventId}} was tracked on our system.","openIssueMessage":"We were very cautious not to include your scene information on the error. If your scene is not private, please consider following up on our <button>bug tracker</button>. Please include information below by copying and pasting into the GitHub issue.","sceneContent":"Scene content:"},"roomDialog":{"desc_intro":"You can invite people to your current scene to collaborate with you.","desc_privacy":"Don't worry, the session uses end-to-end encryption, so whatever you draw will stay private. Not even our server will be able to see what you come up with.","button_startSession":"Start session","button_stopSession":"Stop session","desc_inProgressIntro":"Live-collaboration session is now in progress.","desc_shareLink":"Share this link with anyone you want to collaborate with:","desc_exitSession":"Stopping the session will disconnect you from the room, but you'll be able to continue working with the scene, locally. Note that this won't affect other people, and they'll still be able to collaborate on their version.","shareTitle":"Join a live collaboration session on Excalidraw"},"errorDialog":{"title":"Error"},"exportDialog":{"disk_title":"Save to disk","disk_details":"Export the scene data to a file from which you can import later.","disk_button":"Save to file","link_title":"Shareable link","link_details":"Export as a read-only link.","link_button":"Export to Link","excalidrawplus_description":"Save the scene to your Excalidraw+ workspace.","excalidrawplus_button":"Export","excalidrawplus_exportError":"Couldn't export to Excalidraw+ at this moment..."},"helpDialog":{"blog":"Read our blog","click":"click","deepSelect":"Deep select","deepBoxSelect":"Deep select within box, and prevent dragging","curvedArrow":"Curved arrow","curvedLine":"Curved line","documentation":"Documentation","doubleClick":"double-click","drag":"drag","editor":"Editor","editLineArrowPoints":"Edit line/arrow points","editText":"Edit text / add label","github":"Found an issue? Submit","howto":"Follow our guides","or":"or","preventBinding":"Prevent arrow binding","tools":"Tools","shortcuts":"Keyboard shortcuts","textFinish":"Finish editing (text editor)","textNewLine":"Add new line (text editor)","title":"Help","view":"View","zoomToFit":"Zoom to fit all elements","zoomToSelection":"Zoom to selection","toggleElementLock":"Lock/unlock selection","movePageUpDown":"Move page up/down","movePageLeftRight":"Move page left/right"},"clearCanvasDialog":{"title":"Clear canvas"},"publishDialog":{"title":"Publish library","itemName":"Item name","authorName":"Author name","githubUsername":"GitHub username","twitterUsername":"Twitter username","libraryName":"Library name","libraryDesc":"Library description","website":"Website","placeholder":{"authorName":"Your name or username","libraryName":"Name of your library","libraryDesc":"Description of your library to help people understand its usage","githubHandle":"GitHub handle (optional), so you can edit the library once submitted for review","twitterHandle":"Twitter username (optional), so we know who to credit when promoting over Twitter","website":"Link to your personal website or elsewhere (optional)"},"errors":{"required":"Required","website":"Enter a valid URL"},"noteDescription":"Submit your library to be included in the <link>public library repository</link> for other people to use in their drawings.","noteGuidelines":"The library needs to be manually approved first. Please read the <link>guidelines</link> before submitting. You will need a GitHub account to communicate and make changes if requested, but it is not strictly required.","noteLicense":"By submitting, you agree the library will be published under the <link>MIT License</link>, which in short means anyone can use them without restrictions.","noteItems":"Each library item must have its own name so it's filterable. The following library items will be included:","atleastOneLibItem":"Please select at least one library item to get started","republishWarning":"Note: some of the selected items are marked as already published/submitted. You should only resubmit items when updating an existing library or submission."},"publishSuccessDialog":{"title":"Library submitted","content":"Thank you {{authorName}}. Your library has been submitted for review. You can track the status <link>here</link>"},"confirmDialog":{"resetLibrary":"Reset library","removeItemsFromLib":"Remove selected items from library"},"imageExportDialog":{"header":"Export image","label":{"withBackground":"Background","onlySelected":"Only selected","darkMode":"Dark mode","embedScene":"Embed scene","scale":"Scale","padding":"Padding"},"tooltip":{"embedScene":"Scene data will be saved into the exported PNG/SVG file so that the scene can be restored from it.\\nWill increase exported file size."},"title":{"exportToPng":"Export to PNG","exportToSvg":"Export to SVG","copyPngToClipboard":"Copy PNG to clipboard"},"button":{"exportToPng":"PNG","exportToSvg":"SVG","copyPngToClipboard":"Copy to clipboard"}},"encrypted":{"tooltip":"Your drawings are end-to-end encrypted so Excalidraw's servers will never see them.","link":"Blog post on end-to-end encryption in Excalidraw"},"stats":{"angle":"Angle","element":"Element","elements":"Elements","height":"Height","scene":"Scene","selected":"Selected","storage":"Storage","title":"Stats for nerds","total":"Total","version":"Version","versionCopy":"Click to copy","versionNotAvailable":"Version not available","width":"Width"},"toast":{"addedToLibrary":"Added to library","copyStyles":"Copied styles.","copyToClipboard":"Copied to clipboard.","copyToClipboardAsPng":"Copied {{exportSelection}} to clipboard as PNG\\n({{exportColorScheme}})","fileSaved":"File saved.","fileSavedToFilename":"Saved to {filename}","canvas":"canvas","selection":"selection","pasteAsSingleElement":"Use {{shortcut}} to paste as a single element,\\nor paste into an existing text editor","unableToEmbed":"Embedding this url is currently not allowed. Raise an issue on GitHub to request the url whitelisted","unrecognizedLinkFormat":"The link you embedded does not match the expected format. Please try to paste the 'embed' string provided by the source site"},"colors":{"transparent":"Transparent","black":"Black","white":"White","red":"Red","pink":"Pink","grape":"Grape","violet":"Violet","gray":"Gray","blue":"Blue","cyan":"Cyan","teal":"Teal","green":"Green","yellow":"Yellow","orange":"Orange","bronze":"Bronze"},"welcomeScreen":{"app":{"center_heading":"All your data is saved locally in your browser.","center_heading_plus":"Did you want to go to the Excalidraw+ instead?","menuHint":"Export, preferences, languages, ..."},"defaults":{"menuHint":"Export, preferences, and more...","center_heading":"Diagrams. Made. Simple.","toolbarHint":"Pick a tool & Start drawing!","helpHint":"Shortcuts & help"}},"colorPicker":{"mostUsedCustomColors":"Most used custom colors","colors":"Colors","shades":"Shades","hexCode":"Hex code","noShades":"No shades available for this color"},"overwriteConfirm":{"action":{"exportToImage":{"title":"Export as image","button":"Export as image","description":"Export the scene data as an image from which you can import later."},"saveToDisk":{"title":"Save to disk","button":"Save to disk","description":"Export the scene data to a file from which you can import later."},"excalidrawPlus":{"title":"Excalidraw+","button":"Export to Excalidraw+","description":"Save the scene to your Excalidraw+ workspace."}},"modal":{"loadFromFile":{"title":"Load from file","button":"Load from file","description":"Loading from a file will <bold>replace your existing content</bold>.<br></br>You can back up your drawing first using one of the options below."},"shareableLink":{"title":"Load from link","button":"Replace my content","description":"Loading external drawing will <bold>replace your existing content</bold>.<br></br>You can back up your drawing first by using one of the options below."}}},"mermaid":{"title":"Mermaid to Excalidraw","button":"Insert","description":"Currently only <flowchartLink>Flowcharts</flowchartLink> and <sequenceLink>Sequence Diagrams</sequenceLink> are supported. The other types will be rendered as image in Excalidraw.","syntax":"Mermaid Syntax","preview":"Preview"}}`);
              }
            ),
            /***/
            "../../locales/percentages.json": (
              /*!**************************************!*\
                !*** ../../locales/percentages.json ***!
                \**************************************/
              /***/
              (module2) => {
                "use strict";
                module2.exports = JSON.parse('{"ar-SA":99,"az-AZ":18,"bg-BG":75,"bn-BD":55,"ca-ES":81,"cs-CZ":91,"da-DK":31,"de-DE":100,"el-GR":85,"en":100,"es-ES":96,"eu-ES":99,"fa-IR":87,"fi-FI":81,"fr-FR":98,"gl-ES":90,"he-IL":81,"hi-IN":75,"hu-HU":70,"id-ID":96,"it-IT":99,"ja-JP":95,"kaa":34,"kab-KAB":80,"kk-KZ":20,"km-KH":87,"ko-KR":100,"ku-TR":92,"lt-LT":51,"lv-LV":82,"mr-IN":92,"my-MM":37,"nb-NO":99,"nl-NL":79,"nn-NO":71,"oc-FR":79,"pa-IN":82,"pl-PL":100,"pt-BR":96,"pt-PT":88,"ro-RO":98,"ru-RU":94,"si-LK":8,"sk-SK":99,"sl-SI":100,"sv-SE":100,"ta-IN":85,"th-TH":46,"tr-TR":91,"uk-UA":99,"vi-VN":51,"zh-CN":99,"zh-HK":24,"zh-TW":100}');
              }
            )
            /******/
          };
          var __webpack_module_cache__ = {};
          function __webpack_require__(moduleId) {
            var cachedModule = __webpack_module_cache__[moduleId];
            if (cachedModule !== void 0) {
              return cachedModule.exports;
            }
            var module2 = __webpack_module_cache__[moduleId] = {
              /******/
              id: moduleId,
              /******/
              // no module.loaded needed
              /******/
              exports: {}
              /******/
            };
            __webpack_modules__[moduleId].call(module2.exports, module2, module2.exports, __webpack_require__);
            return module2.exports;
          }
          __webpack_require__.m = __webpack_modules__;
          (() => {
            __webpack_require__.n = (module2) => {
              var getter = module2 && module2.__esModule ? (
                /******/
                () => module2["default"]
              ) : (
                /******/
                () => module2
              );
              __webpack_require__.d(getter, { a: getter });
              return getter;
            };
          })();
          (() => {
            var getProto = Object.getPrototypeOf ? (obj) => Object.getPrototypeOf(obj) : (obj) => obj.__proto__;
            var leafPrototypes;
            __webpack_require__.t = function(value, mode) {
              if (mode & 1) value = this(value);
              if (mode & 8) return value;
              if (typeof value === "object" && value) {
                if (mode & 4 && value.__esModule) return value;
                if (mode & 16 && typeof value.then === "function") return value;
              }
              var ns = /* @__PURE__ */ Object.create(null);
              __webpack_require__.r(ns);
              var def = {};
              leafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];
              for (var current = mode & 2 && value; typeof current == "object" && !~leafPrototypes.indexOf(current); current = getProto(current)) {
                Object.getOwnPropertyNames(current).forEach((key) => def[key] = () => value[key]);
              }
              def["default"] = () => value;
              __webpack_require__.d(ns, def);
              return ns;
            };
          })();
          (() => {
            __webpack_require__.d = (exports2, definition) => {
              for (var key in definition) {
                if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports2, key)) {
                  Object.defineProperty(exports2, key, { enumerable: true, get: definition[key] });
                }
              }
            };
          })();
          (() => {
            __webpack_require__.f = {};
            __webpack_require__.e = (chunkId) => {
              return Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {
                __webpack_require__.f[key](chunkId, promises);
                return promises;
              }, []));
            };
          })();
          (() => {
            __webpack_require__.u = (chunkId) => {
              return "excalidraw-assets-dev/" + chunkId + "-" + { "locales/ar-SA-json": "f35c4f87e6e2dcf7c20a", "locales/az-AZ-json": "5d70eb8bf3f20abc3bac", "locales/bg-BG-json": "88cced5fd8a6d8298501", "locales/bn-BD-json": "a06588c61947851c8579", "locales/ca-ES-json": "9b25933a25836cc0be23", "locales/cs-CZ-json": "1d6c97ea271d017058c9", "locales/da-DK-json": "34a60c9843cecd71376f", "locales/de-DE-json": "d13450595b795867412b", "locales/el-GR-json": "c854b199f3ac07d40294", "locales/es-ES-json": "6a667bfbf4ff3d0181a7", "locales/eu-ES-json": "3ec11367a80491b09056", "locales/fa-IR-json": "e459964936177074abe7", "locales/fi-FI-json": "f7839bb6f5ad0a3c7e0d", "locales/fr-FR-json": "20e8535e2675a6736c81", "locales/gl-ES-json": "861f534b46c0db1fa8db", "locales/he-IL-json": "504d78736487793ffccd", "locales/hi-IN-json": "82d988431011c330242a", "locales/hu-HU-json": "d4150250980011726fd9", "locales/id-ID-json": "82e300d4fe1e87adba9b", "locales/it-IT-json": "6ecc9aec005faab90f41", "locales/ja-JP-json": "3c6a065f0f1303b297fa", "locales/kaa-json": "983a9ccc652aa01980f3", "locales/kab-KAB-json": "cac3cf66f1db5c1a6e19", "locales/kk-KZ-json": "e9dd81c22419efd44478", "locales/km-KH-json": "be77acee611d96d88dda", "locales/ko-KR-json": "ad8e9d31d52b26f3fbc2", "locales/ku-TR-json": "ed67af91ae1920f114a8", "locales/lt-LT-json": "2c3d35d6fb5dbf95a27e", "locales/lv-LV-json": "fa8973c231afb2ddafe9", "locales/mr-IN-json": "2949146743072eb11b40", "locales/my-MM-json": "4c04ffe415641f69ed75", "locales/nb-NO-json": "b8d7a5b70562dacdad45", "locales/nl-NL-json": "a65f82a25fe038c45d35", "locales/nn-NO-json": "858fbccbc5be386977db", "locales/oc-FR-json": "a68ea08272c8da3c0e3f", "locales/pa-IN-json": "90a2b3775bd7d8983def", "locales/pl-PL-json": "9bb55330d5aaf336646e", "locales/pt-BR-json": "3635e753c1b6e5b681fa", "locales/pt-PT-json": "0d3694a92e0134549086", "locales/ro-RO-json": "e83fda16c860c6d0b383", "locales/ru-RU-json": "ddc13261ce5d864d36a9", "locales/si-LK-json": "16eb66dbfc6c55fc85b1", "locales/sk-SK-json": "782ead8707f2ad0e8e4e", "locales/sl-SI-json": "82e55cf7cdbdc7d7f959", "locales/sv-SE-json": "2f362899d3ac4089534f", "locales/ta-IN-json": "07623a485202da63a84b", "locales/th-TH-json": "4e4b97f5f6e905191383", "locales/tr-TR-json": "003be1cf6ebf0b787dec", "locales/uk-UA-json": "ca6ea1156db2649d3e27", "locales/vi-VN-json": "9a5e5fab41a1a120a916", "locales/zh-CN-json": "670c28a6ae1e3ddecaa4", "locales/zh-HK-json": "93b9b676d4f4b5702797", "locales/zh-TW-json": "805d10b0eed9ca51b318", "vendor": "39727f4653a274cf18f6" }[chunkId] + ".js";
            };
          })();
          (() => {
            __webpack_require__.g = function() {
              if (typeof globalThis === "object") return globalThis;
              try {
                return this || new Function("return this")();
              } catch (e) {
                if (typeof window === "object") return window;
              }
            }();
          })();
          (() => {
            __webpack_require__.o = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);
          })();
          (() => {
            var inProgress = {};
            var dataWebpackPrefix = "ExcalidrawLib:";
            __webpack_require__.l = (url, done, key, chunkId) => {
              if (inProgress[url]) {
                inProgress[url].push(done);
                return;
              }
              var script, needAttach;
              if (key !== void 0) {
                var scripts = document.getElementsByTagName("script");
                for (var i = 0; i < scripts.length; i++) {
                  var s = scripts[i];
                  if (s.getAttribute("src") == url || s.getAttribute("data-webpack") == dataWebpackPrefix + key) {
                    script = s;
                    break;
                  }
                }
              }
              if (!script) {
                needAttach = true;
                script = document.createElement("script");
                script.charset = "utf-8";
                script.timeout = 120;
                if (__webpack_require__.nc) {
                  script.setAttribute("nonce", __webpack_require__.nc);
                }
                script.setAttribute("data-webpack", dataWebpackPrefix + key);
                script.src = url;
              }
              inProgress[url] = [done];
              var onScriptComplete = (prev, event) => {
                script.onerror = script.onload = null;
                clearTimeout(timeout);
                var doneFns = inProgress[url];
                delete inProgress[url];
                script.parentNode && script.parentNode.removeChild(script);
                doneFns && doneFns.forEach((fn) => fn(event));
                if (prev) return prev(event);
              };
              var timeout = setTimeout(onScriptComplete.bind(null, void 0, { type: "timeout", target: script }), 12e4);
              script.onerror = onScriptComplete.bind(null, script.onerror);
              script.onload = onScriptComplete.bind(null, script.onload);
              needAttach && document.head.appendChild(script);
            };
          })();
          (() => {
            __webpack_require__.r = (exports2) => {
              if (typeof Symbol !== "undefined" && Symbol.toStringTag) {
                Object.defineProperty(exports2, Symbol.toStringTag, { value: "Module" });
              }
              Object.defineProperty(exports2, "__esModule", { value: true });
            };
          })();
          (() => {
            __webpack_require__.p = "";
          })();
          (() => {
            __webpack_require__.b = document.baseURI || self.location.href;
            var installedChunks = {
              /******/
              "excalidraw.development": 0
              /******/
            };
            __webpack_require__.f.j = (chunkId, promises) => {
              var installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : void 0;
              if (installedChunkData !== 0) {
                if (installedChunkData) {
                  promises.push(installedChunkData[2]);
                } else {
                  if (true) {
                    var promise = new Promise((resolve, reject) => installedChunkData = installedChunks[chunkId] = [resolve, reject]);
                    promises.push(installedChunkData[2] = promise);
                    var url = __webpack_require__.p + __webpack_require__.u(chunkId);
                    var error = new Error();
                    var loadingEnded = (event) => {
                      if (__webpack_require__.o(installedChunks, chunkId)) {
                        installedChunkData = installedChunks[chunkId];
                        if (installedChunkData !== 0) installedChunks[chunkId] = void 0;
                        if (installedChunkData) {
                          var errorType = event && (event.type === "load" ? "missing" : event.type);
                          var realSrc = event && event.target && event.target.src;
                          error.message = "Loading chunk " + chunkId + " failed.\n(" + errorType + ": " + realSrc + ")";
                          error.name = "ChunkLoadError";
                          error.type = errorType;
                          error.request = realSrc;
                          installedChunkData[1](error);
                        }
                      }
                    };
                    __webpack_require__.l(url, loadingEnded, "chunk-" + chunkId, chunkId);
                  } else installedChunks[chunkId] = 0;
                }
              }
            };
            var webpackJsonpCallback = (parentChunkLoadingFunction, data) => {
              var [chunkIds, moreModules, runtime] = data;
              var moduleId, chunkId, i = 0;
              if (chunkIds.some((id) => installedChunks[id] !== 0)) {
                for (moduleId in moreModules) {
                  if (__webpack_require__.o(moreModules, moduleId)) {
                    __webpack_require__.m[moduleId] = moreModules[moduleId];
                  }
                }
                if (runtime) var result = runtime(__webpack_require__);
              }
              if (parentChunkLoadingFunction) parentChunkLoadingFunction(data);
              for (; i < chunkIds.length; i++) {
                chunkId = chunkIds[i];
                if (__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {
                  installedChunks[chunkId][0]();
                }
                installedChunks[chunkId] = 0;
              }
            };
            var chunkLoadingGlobal = globalThis["webpackChunkExcalidrawLib"] = globalThis["webpackChunkExcalidrawLib"] || [];
            chunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));
            chunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));
          })();
          (() => {
            __webpack_require__.nc = void 0;
          })();
          var __webpack_exports__ = __webpack_require__("./entry.js");
          return __webpack_exports__;
        })()
      );
    });
  }
});

// node_modules/@excalidraw/excalidraw/main.js
var require_main = __commonJS({
  "node_modules/@excalidraw/excalidraw/main.js"(exports2, module2) {
    if (process.env.IS_PREACT === "true") {
      if (false) {
        module2.exports = null;
      } else {
        module2.exports = require_excalidraw_with_preact_development();
      }
    } else if (false) {
      module2.exports = null;
    } else {
      module2.exports = require_excalidraw_development();
    }
  }
});

// node_modules/react-dom/client.js
var require_client = __commonJS({
  "node_modules/react-dom/client.js"(exports2) {
    "use strict";
    var m = require_react_dom();
    if (false) {
      exports2.createRoot = m.createRoot;
      exports2.hydrateRoot = m.hydrateRoot;
    } else {
      i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
      exports2.createRoot = function(c, o) {
        i.usingClientEntryPoint = true;
        try {
          return m.createRoot(c, o);
        } finally {
          i.usingClientEntryPoint = false;
        }
      };
      exports2.hydrateRoot = function(c, h, o) {
        i.usingClientEntryPoint = true;
        try {
          return m.hydrateRoot(c, h, o);
        } finally {
          i.usingClientEntryPoint = false;
        }
      };
    }
    var i;
  }
});

// excalidraw_canvas.ts
var import_excalidraw = __toESM(require_main());
var React = __toESM(require_react());
var ReactDOM = __toESM(require_client());
function attach_to_canvas() {
  const App = () => {
    return React.createElement(
      React.Fragment,
      null,
      React.createElement(
        "div",
        {
          style: { height: "500px" }
        },
        React.createElement(import_excalidraw.Excalidraw)
      )
    );
  };
  const excalidrawWrapper = document.getElementById("excalidraw_canvas");
  const root = ReactDOM.createRoot(excalidrawWrapper);
}
var ExcalidrawController = class {
  // app: Application
  // // -- FastWave-specific --
  // var_signal_rows: Array<VarSignalRow> = [];
  // var_signal_rows_container = new Container();
  // // @TODO reset `timeline_*` on file unload?
  // timeline_zoom: number;
  // timeline_viewport_width: number; 
  // timeline_viewport_x: number;
  // row_height: number;
  // row_gap: number;
  // timeline_getter: TimelineGetter;
  constructor() {
    this.hello();
  }
  async init(parent_element) {
  }
  async resize(width, _height) {
  }
  destroy() {
  }
  hello() {
    console.log("Hello from excalidraw_canvas TS");
  }
};
export {
  ExcalidrawController,
  attach_to_canvas
};
/*! Bundled license information:

react/cjs/react.development.js:
  (**
   * @license React
   * react.development.js
   *
   * Copyright (c) Facebook, Inc. and its affiliates.
   *
   * This source code is licensed under the MIT license found in the
   * LICENSE file in the root directory of this source tree.
   *)

react/cjs/react-jsx-runtime.development.js:
  (**
   * @license React
   * react-jsx-runtime.development.js
   *
   * Copyright (c) Facebook, Inc. and its affiliates.
   *
   * This source code is licensed under the MIT license found in the
   * LICENSE file in the root directory of this source tree.
   *)

scheduler/cjs/scheduler.development.js:
  (**
   * @license React
   * scheduler.development.js
   *
   * Copyright (c) Facebook, Inc. and its affiliates.
   *
   * This source code is licensed under the MIT license found in the
   * LICENSE file in the root directory of this source tree.
   *)

react-dom/cjs/react-dom.development.js:
  (**
   * @license React
   * react-dom.development.js
   *
   * Copyright (c) Facebook, Inc. and its affiliates.
   *
   * This source code is licensed under the MIT license found in the
   * LICENSE file in the root directory of this source tree.
   *)
  (**
   * Checks if an event is supported in the current execution environment.
   *
   * NOTE: This will not work correctly for non-generic events such as `change`,
   * `reset`, `load`, `error`, and `select`.
   *
   * Borrows from Modernizr.
   *
   * @param {string} eventNameSuffix Event name, e.g. "click".
   * @return {boolean} True if the event is supported.
   * @internal
   * @license Modernizr 3.0.0pre (Custom Build) | MIT
   *)
*/
